Compare commits

...

468 Commits
develop ... wip

Author SHA1 Message Date
421eb67b93 Merge branch 'glab_merge_request' into 'wip'
frappy_psi.sensirion: fix a typo

See merge request samenv/frappy!1
2025-03-28 16:47:39 +01:00
3048b8cb7d frappy_psi.sensirion: fix a typo
Change-Id: I259151b7a1b908c8289ecb88d2d3d4e6d9e45c12
2025-03-28 16:30:10 +01:00
0ef484e082 frappy_psi/adq_mr (ultrasound): exit on reboot error message
otherwise the error message is confusing
+ remove CR from line endings in adq_mr.py

Change-Id: Ia465a26803a92677383969ff620ef35e58f1a5ec
2025-03-28 14:27:06 +01:00
8560384529 ls370res: do not raise in read_rdgrng error when channel is disabled
Change-Id: I565e5cd74cf7f12bfd5eea9e8867117154461017
2025-03-28 14:27:06 +01:00
l_samenv
16d419c0f3 ah2700: make loss its own module 2025-03-28 13:15:24 +01:00
Ultrasound PC
8c548da2e0 bin/us-plot: fix usage message 2025-03-26 17:02:35 +01:00
Ultrasound PC
d9f340dce6 ultrasound: change control roi0 to a Readable (2)
+ remove cfg/PEUS.py
+ fix equipment_id of PEUS
+ add header to frappy_psi.iqplot
2025-03-26 16:45:53 +01:00
Ultrasound PC
1325c8924d ultrasound: change control roi0 to a Readable
+ remove cfg/PEUS.py
+ fix equipment_id of PEUS
2025-03-26 16:37:15 +01:00
Ultrasound PC
f8e3bd9ad2 improve ultrasound plot clients
- make plot window not to raise to the front on replot
- chmod +x
2025-03-26 16:18:54 +01:00
6f547f0781 ultrasound: reworked after tests
- new classes in frappy_psi/ultrasound.py and frappy_psi/adq.mr.py
- add signal plottter
- move clients to bin/ directory

Change-Id: I8db8e5ebc082c346278f09e0e54504e070655f14
2025-03-26 15:31:46 +01:00
l_samenv
322cd39e0a gas10k / mercury.HeaterUpdate: switch off loop on startup
the class frappy_psi.mercury.HeaterUpdate is used for the output
of a soft pid loop. set target to 0 to switch off the loop
on startup.
2025-03-26 10:51:16 +01:00
l_samenv
41b51b35fd further work on needle valve, pump and lakeshore 2025-03-19 16:38:21 +01:00
19571ab83d change again how to exit logdif.py
Change-Id: I442ca8c2ee7ca25ff98a0e84df2688a55a0dcec9
2025-03-19 16:34:59 +01:00
b35c97f311 stop poller threads on shutdown: cosmetics
cosmetics after gerrit

Change-Id: I4d982f83e3fe5a8c8c821ac718e51b9a58de2a62
2025-03-19 15:33:25 +01:00
5d175b89ca frappy_psi.ultrasound: add input_delay and other improvments
Change-Id: I6cb5690d82d96d6775fcb649fc633c4039932463
2025-03-19 15:29:17 +01:00
f8c52af3ac frappy_psi.ultrasound: after rework (still wip)
Change-Id: I200cbeca2dd0f030a01a78ba4d38c342c3c8c8e3
2025-03-17 09:37:13 +01:00
bf9c946b1d frappy-scan: resolve ip numbers to names
Change-Id: I07bf7c274aeb52f2aaa58e8aa2f3bcb2788556ee
2025-03-17 09:36:50 +01:00
09e596f847 stop poller threads on shutdown
make sure module methods are not called after shutdownModule

+ fix: when mod.enablePoll is False, pollInfo is None
  therefore we have to check before access

Change-Id: I83b28607b25996376939175be8abf0c5b27bcac1
2025-03-17 09:35:57 +01:00
l_samenv
7e2ccd214e frappy_psi.drums: changes after test
when trying with Marcel, we needed these fixes
2025-03-14 09:05:09 +01:00
907a52ccdb config: Mod() should return config dict
this helps for coded configuration

Change-Id: I07bdf72f77082f31ee86192faec63df706dcbf56
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35803
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-03-07 10:19:46 +01:00
51dba895a5 config: validate value and default of parameters
The Parameter Properties 'value', 'default' and 'constant'
have ValueType, so they are not checked in the setProperty call.
We have to do this explicitly in Module._add_accessible.

Change-Id: I1e35adf2fe539411b4aebacd813adb07497de95b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35797
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-03-07 10:19:01 +01:00
Georg Brandl
d86718b81e remove wrong <weight> from fonts on Qt6
Change-Id: Ib94b2ed74598b9f54c2361e61bfa940e60bd7c62
2025-03-07 10:18:51 +01:00
Georg Brandl
42a6bfb5d2 debian: update compat
Change-Id: I172dff4e0239ce90fe7b1c19fc800ba98f116270
2025-03-07 10:18:42 +01:00
895f66f713 core: simplify test for methods names
The test for method names 'read_<param>' and 'write_<param>'
without a defined parameter is simplified. We do not check
anymore method names from base classes. Base classes
inheriting from HasAccessible are checked anyway at the
place they are defined.

+ add a test for it
+ move some tests to a new file test_all_modules.py, as
  test_modules.py is getting too long
+ fix missing doc string (frappy.simulation.SimDrivable.stop)

Change-Id: Id8a9afe5c977ae3b1371bd40c6da52be2fc79eb9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35503
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-03-07 10:18:35 +01:00
3663c62b46 core: alternative approach for optional accessibles
This is meant to replace change 33375.
Optional commands and parameters may be declared with the argument
optional=True. In principle, optional commands are not really needed
to be declared, but doing so is nice for documentation reasons
and for inherited accessible properties.

Optional parameters and commands can not be used and are not
exported als long as they are not overridden in subclasses.

- add a test for this
+ fix an issue with checking for methods like read_<param> without
  <param> being a parameter

Change-Id: Ide5021127a02778e7f2f7162555ec8826f1471cb
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35495
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2025-03-07 10:18:27 +01:00
l_samenv
8c2588a5ed merged changes for lakeshore and ccu4 2025-03-07 07:37:11 +01:00
l_samenv
95dc8b186e improve error handling 2025-03-06 17:22:21 +01:00
l_samenv
265dbb1a57 gui: add org- and app-name to QtApplication
for a better path name of stored configuration
2025-03-06 16:57:55 +01:00
73e9c8915b logdif.py: leave on every input except bare return
Change-Id: I3d53c7b45fb9ef09a61be5af13a2cdc4d32d5c7d
2025-02-13 09:40:27 +01:00
2e99e45aea WIP new version of ultrasound
Change-Id: Iadb83396a64e277f6f0a37f7a96d92105648c4fe
2025-01-28 09:40:36 +01:00
b7bc81710d frappy_demo.test: add parameter for testing error messages
Change-Id: Ifbf9d6829be373417d3bf1ff398d2aee283d8c9a
2025-01-17 15:01:11 +01:00
eee63ee3df config: do not override equipment_id with name
In the previous code, the equipment_id was overridden by the
server name when the interface argument was given over
the commandline. This was leftover from the previous config
file format, where the config files not neccessarly needed
an equipment_id.

Change-Id: I2fc248372a7d2f61cc0690804268d6d066a0a9fa
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35391
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-01-17 15:00:20 +01:00
fd43687465 equipment_id for merged configs and routed nodes
Add a new custom module property 'original_id' indicating
the equipment_id the modules originally belongs to.
This property is only given, when distinct from the equipment_id
of the SEC node.
It happens when multiple config files are given, for all modules
but the ones given in the first file, and for routed modules,
when  multiple nodes are routed or own modules are given.

+ fix an issue in router: additional modules were ignore in case
of a single node.

+ small cosmetic changes in config.py reducing IDE complains

Change-Id: If846c47a06158629cef807d22b91f69e4f416563
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35396
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-01-17 15:00:20 +01:00
a25a368491 take over changes from ultrasound PC
Change-Id: I1eae717a5963e618d87ddf52db991d428a046d24
2025-01-09 11:23:12 +01:00
4397d8db1a WIP: old oxford devices (ILM, IPS, IGH...)
Change-Id: I4ca0dc6149d257818d300db4d886a1e33e8210be
2025-01-09 10:09:33 +01:00
e60ac5e655 move start_ramp_to_target to SimpleMagfiield
Change-Id: Iab3fe8738c560bf5ac2f11a4a34428a8ffd6a7c2
2024-12-20 15:49:33 +01:00
0b5b40cfba frappy_psi.ccu4: some smaller updates
Change-Id: I128ac57aad951fd8ad3bdf663c69c85644063645
2024-12-18 15:40:05 +01:00
2a617fbaf0 make UPD listener work when 'tcp://' is omitted on interface
'tcp://' may be omitted on interfaces
add missing 'tcp://' earlier in code, so we do not need to check
for missing 'tcp://' again.

Change-Id: Ie9b4dbd168aebdb6edfe71dbd2cfc25e9229fe67
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35321
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-12-18 09:29:58 +01:00
72d09ea73a fix bug in change 35001 (better error message)
fix bug in error message

Change-Id: I8151d20f840818fc26d42348f73e740cdb20e03d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35287
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-12-10 16:30:19 +01:00
1ae19d03b3 frappy_psi.sea: fix case when bool is implemented as text
introduce SeaBool for this

Change-Id: I9c6b6ee7d33f11b173d612efc044fce8a563f626
2024-12-10 16:29:07 +01:00
41cb107f50 an error on a write must not send an error update
Change-Id: I07a991bcf26e87121160a2e604f8842eba23ebaf
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35281
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-12-10 10:28:25 +01:00
8b0c4c78a9 pylint: increase max number of positional arguments
Change-Id: Id88270b3c3c1efb56f47def733c1e9c745f1ab18
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35282
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-12-10 10:28:25 +01:00
7ac10d2260 better message when a parameter is overridden by an invalid value
happens e.g. then writing status = StatusType(...) instead of
status = Parameter(datatype=StatusType(...)) on the class level

+ improve doc strings

Change-Id: I05a0b0b0da4438a40b525da40018bb5b09fd5303
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35001
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-12-10 10:28:25 +01:00
6cbb3a094b frappy_psi.pulse: fix fatal errors
even when a module is work in progress, it should not raise
an error on import

Change-Id: I2f91301ba2b0c574ea344c36a74da0f893aa326d
2024-12-06 11:58:45 +01:00
l_samenv
405d316568 adapt temperature and temperature_regulation importance
- temperature_regulation on VTI should have higher importance (27)
  than temperature on sample stick, when Drivable (25)
2024-12-03 15:32:57 +01:00
l_samenv
ac92a6ca3d sea cfg: set visibility of calibration points to expert 2024-12-03 15:23:01 +01:00
l_samenv
a9e3489325 ma7: use new config type with sea_path and frappy.sea.LscDrivable 2024-12-03 15:19:45 +01:00
654a472a7e frappy_psi.sea: more improvements
- add sea_path property
- add LscDrivable (config of these modules is easier to understand)

Change-Id: I616dc94de6e784f6d8cfcf080d9a8408cbf73d93
2024-12-03 15:12:02 +01:00
l_samenv
ddc72d0ea7 sea: fix parameter name mapping
- rel_path = ['tm', '.', 'set'] should mean:

'tm': tm parameters first, with /<obj?/tm as main value
'.': then all parameters directly at top level, except 'set'
'set': all parameters  below 'set'
driving happens at object level

- better name mangling (the 1st appearance of the same shortname
  is kept short)
2024-11-28 18:06:14 +01:00
ede07e266c add ori2 2024-11-28 18:05:02 +01:00
dmc
4b543d02a0 varioxb: fix config, om not yet available 2024-11-28 18:05:02 +01:00
a4d5d8d3b7 frappy.server: remove comment about opts in SecNode/Dispatcher
The options given in the node configuration may be used
for both SecNode (equipment_id) and Dispatcher (when the
frappy.protocol.router.Router is used as dispatcher).
It is correct that both remove the options known to them.

Change-Id: I2a34073e4e5490dcf8db577d9cb74788c0cb657b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34989
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-27 17:38:14 +01:00
b37e625df3 frappy.server: use server name for SecNode name
no need to configure the name of SecNode and Dispatcher

Change-Id: I5199bbd77c74e4fe56b527a5a565a8285b0d831e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34988
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-27 17:38:14 +01:00
1dbd7c145a frappy.server bug fix: server name must not be a list
followup error from change 34893
this bug appears in HasComlog, only when comlog is switched on

Change-Id: Ic0db5ae0b0af9981b0c91ebacf2eb6cd704aaa58
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34987
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-27 17:38:14 +01:00
2aa27f1ea5 updated sync_branches for sinq branch
Change-Id: Ic3330c4049b527dc98704fbbd94180dcd4930cb1
2024-11-27 17:38:14 +01:00
b28cdefe8a follow up change for 'better order of accessibles' (34904)
slight change to make it compatible with py 3.6/3.7, where
reversed(<dict>) was not allowed.

Change-Id: Id440870b5523a866b3afb470ba5db9cd6a9bb0ec
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35002
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-27 16:30:06 +01:00
e0e442814f fix description of ts in ma11stick 2024-11-26 13:48:37 +01:00
66895f4f82 improve lakeshore demo
use super call for read_status

TODO: update tutorial!
Change-Id: I2dd5631908dc370c6e6286587099e25a0e5ee867
2024-11-26 13:40:13 +01:00
49bf0d21a9 frappy_psi.bkpower: improve doc
Change-Id: I0736d1d8a40b0140bfdbf5aca189b8ddc5b22973
2024-11-26 13:39:34 +01:00
e8cd193d0d fix bug when overriding a property with bare value
the bare value must be converted to a updated property.
add also a test for this

Change-Id: I261daaaa8e12d7f739d8b2e8389c1b871b26c5b3
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34985
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-19 14:03:35 +01:00
142add9109 add sim-server again based on socketserver
- fix ls370test config file
+ fix issues with frappy_psi.ls370res
+ add frappy_psi.ls370sim

Change-Id: Ie61e3ea01c4b9c7c1286426504e50acf9413a8ba
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34957
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-19 14:03:28 +01:00
Jenkins system
c2673952f4 [deb] Release v0.20.4 2024-11-19 14:01:20 +01:00
Jens Krüger
9fc2aa65d5 Lib/config: Create a list of pathes only for confdir
Under some condition (no general config file) it's possible that the
piddir and logdir as well are lists of pathes which creates some errors
during the server start

This problems occurs at least in NICOS test suite where no general
config file is defined.

Change-Id: I94c5db927923834c1546dbc34e2490b07b0bf111
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34952
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Jens Krueger <jens.krueger@tum.de>
2024-11-19 14:01:20 +01:00
09fbaedb16 frappy.client: catch all errors in handleError callback
put try/execpt around handleError callback

Change-Id: I3d97f085556665189da848e52a7148248f55eb0e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34955
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-15 10:39:47 +01:00
Jens Krüger
5deaf4cfd9 PSI: Fix import error on ThermoFisher module
Change-Id: I691d8f5057fdb19ba14c109399417a7ee9962637
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34954
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-15 10:39:47 +01:00
81f7426739 frappy.lib.multievent: avoid deadlock
use RLock instead of Lock, as queued actions might call
the set/clear methods recursively

Change-Id: Id43aa8669955e6be9f61379d039a4f65eb7b2dc4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34950
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
Georg Brandl
c69e516873 remove unused file
Change-Id: I969bfb22f2196227abe8c5ecef628a15e6eb75f1
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34939
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
Jenkins system
64732eb0c8 [deb] Release v0.20.3 2024-11-15 10:39:47 +01:00
Alexander Zaft
1535448090 add generalConfig to etc
Change-Id: I768b136c803d5e197e3653d1b84e147b62a97676
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34924
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-11-15 10:39:47 +01:00
Georg Brandl
554996ffd3 fixup test for cfg_editor utils to run from non-checkout, and fix names, and remove example code
Change-Id: I6224244392e2a2d0928065ba24abcbe822096084
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34934
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-11-15 10:39:47 +01:00
Jenkins system
2d824978a9 [deb] Release v0.20.2 2024-11-15 10:39:47 +01:00
Alexander Zaft
35dd166fee fix frappy-server cfgfiles command
frappy-server <name> errors after 34893

Change-Id: Ifba758fbabc3aef32e20b683f1c1edbfea711a75
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34913
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-11-15 10:39:47 +01:00
Georg Brandl
aee99df2d0 server: better handling of cfgfile argument
No reason to keep stringly-typed data on that level

Change-Id: Iba8d88301bf36ef6051031d1916d1bac84ede546
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34893
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-11-15 10:39:47 +01:00
8e05090795 generalConfig: fix the case when confdir is a list of paths
convert all env variable values containing ':' into a list of paths
+ fix one case where an env variable is not converted to a Path
+ remove unused _gcfg_help

Change-Id: Ibc51ab4606ca51e0e87d0fedfac1aca4952f3270
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34872
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-15 10:39:47 +01:00
Alexander Zaft
eac58982d9 server: service discovery over UDP.
implement RFC-005
- server broadcasts once on startup and answers to broadcasts
- small tool for listening on the port and sending broadcasts

Change-Id: I02d1184d6be62bef6f964eb9d238220aef062e94
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34851
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-11-15 10:39:47 +01:00
Georg Brandl
0f34418435 systemd: enable indication of reloading/stopping
Change-Id: I6dd1b3a50234fb0304fb1a5318f2f22d35d464ec
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34896
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-11-15 10:39:47 +01:00
Alexander Zaft
1423800ff4 server: fix windows ctrl-c
thread.join() blocks indefinetely, not allowing python to handle the
interrupt. Same is true for sleep on windows, but when we only sleep a
second, this is fine. Instead of joining the threads, keep track of them
manually.

Change-Id: I559fe06d9ce005a15388c881e4f076d996aea9dc
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34894
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
Alexander Zaft
e333763105 generalconfig: streamlined config discovery
determine generalconfig file location in order:
  - command line argument
  - environment variable
  - git location (../cfg)
  - local location (cwd)
  - global location (/etc/frappy)

Change-Id: Ie34bcbd5188837075ee7bb7d5029d676ae72378e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34839
Reviewed-by: Bjoern Pedersen <bjoern.pedersen@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
Alexander Zaft
c09e02a01e Revert "config: allow using Prop(...)"
This reverts commit ba59bd549860797f5bdf15cadfea539754d833cd.

Reason for revert: unnecessary

Change-Id: I4bf46a1de2e699049572f376e84fa39db5dae76c
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34888
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
Alexander Zaft
337be1b2bc config: fix typo
Change-Id: Ie90993d9b2d387780fa3faa28fd8d4523f7fc866
2024-11-15 10:39:47 +01:00
Alexander Zaft
752942483f config: allow using Prop(...)
Still maps to the same logic, but it might be a bit confusing to
configure properties with prop = Param(...)

Change-Id: I6bde6a0b015095a8b765d98cb2780f0d42de7e6e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34886
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-11-15 10:39:47 +01:00
0204bdfe2f fix playground
- fix initialization
- add description

Change-Id: Ic210c26edfec709bafa902e32eae04350d571acd
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34874
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
facaca94eb better order of accessibles: 'value' 'status' and 'target' first
- predefined parameters/commands appear first, in the order
  defined in frappy.params.PREDEFINED_ACCESSIBLES
- other (custom) parameters by inheritance order
- remove paramOrder attribute (not used currently)

Change-Id: If4c43189e4837dba057dc0a430ac6c3d1ae10829
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34904
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
0f0a177254 frappy_psi.sea: bugfix: revert change of updateEvent to udpateItem
revert some of change 34813
SeaClient is based on ProxyClient, not SecopClient
-> updateItem is not defined there

Change-Id: Ib3049038481917ec7a11b9fb2d285cedff5febbb
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34873
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
l_samenv
ada696e72b add peltier cfg 2024-11-14 16:09:31 +01:00
l_samenv
1d70a90270 add addon ah2500sea 2024-11-14 16:04:55 +01:00
l_samenv
20da7592da add PE stick
example of how to do a software calibration on a mercury channel
with hardcoded wrong calib curve
2024-11-14 15:40:46 +01:00
l_samenv
e750e69045 ma11stick/ovenstick: fix double meaning entry 2024-11-14 15:39:43 +01:00
l_samenv
11a65b485b fix ah2700 / ah2550 settings 2024-11-14 15:39:43 +01:00
dmc
edf5a5568b frappy_psi.sea: fix buf, revert change of updateEvent to udpateItem
this is not possible in ProxyClient
2024-10-24 13:29:26 +02:00
dmc
f382a01d86 fix case where confdir is a list of paths 2024-10-24 11:46:23 +02:00
Alexander Zaft
3c69dcb170 core: fix Dispatcher and SECNode opts handling
both tried to consume everything before, also making the check for
unknown options afterwards pointless

Change-Id: I7e44c088163e0b99ac509a2c0f757270807d97ab
Fixes: #4912
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34837
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:27:35 +02:00
Alexander Zaft
b889a86461 server: show interfaces as custom property
Change-Id: I129be1228b8a04386db5fe370ebdc2ec6ce8050a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34838
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-23 09:27:35 +02:00
Alexander Zaft
c7143a6dc7 server: fix positional argument lint
Change-Id: Ib718826e7bbce2c6fcc9b39879c30baec1ecaa5a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34845
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-23 09:27:35 +02:00
Alexander Zaft
c2a3821000 sim: make amagnet sim cfg startable again
Change-Id: I1e7b7dd6e4069c616f49edbe4e223f501a000398
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34844
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-10-23 09:27:35 +02:00
Alexander Zaft
1cebf3998f simulation: fix extra_params default, ccidu1 cfg
Change-Id: I80672f1c070054871708961bc6641457f8e409ec
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34843
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:26:48 +02:00
Alexander Zaft
bea994aaa2 test_server: basic description checks
Change-Id: I732ac2349f7e7ab2579f67cc6e51989703531087
2024-10-23 09:26:48 +02:00
Georg Brandl
bc0925fca7 pylint: do not try to infer too much
Change-Id: I1aabf4c59fc47e888e8cd096a8228842f35ff769
2024-10-23 09:26:48 +02:00
Jenkins system
09235cb145 [deb] Release v0.20.1 2024-10-23 09:26:48 +02:00
Georg Brandl
824d3e7b7a lib: there might be no confdir in "cfg"
Change-Id: I0832de4564a2c1ff439c486ae6cbaa776ebf1e59
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34833
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:26:48 +02:00
Georg Brandl
dab963f1bb remove sim-server
asyncore is deprecated for a long time and now removed in 3.12

Change-Id: I32eb18797dd13663de08ebedc38ce3de4b5ede93
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34830
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:26:44 +02:00
Georg Brandl
b93254b553 remove old unused parse module
Change-Id: Ie94217504a65c21a7a8aa7221f9028a689476ffd
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34831
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-10-23 09:25:39 +02:00
Georg Brandl
ec667c8151 remove unused test class
Change-Id: I887a66befa834a72bc684dc5edbcb5862a0d0b71
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34832
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:25:39 +02:00
Georg Brandl
56c7bbc831 gui: do not add a console logger when there is no sys.stdout
Change-Id: Icfd39bd508b5d482c902e6e781cbc557085b0c2e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34829
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:25:39 +02:00
Jenkins system
c3a87e43be [deb] Release v0.20.0 2024-10-23 09:25:39 +02:00
Georg Brandl
1fcd8d13fc setup: fill long_description and url
Change-Id: Ib5db4d9c33f205d181ed78c65265601caf23a53d
2024-10-23 09:25:39 +02:00
Georg Brandl
f697b9ad57 setup: fix classifiers
Change-Id: I473785df9c1157a77d02c3e1114bb6633d01149f
2024-10-23 09:25:39 +02:00
Georg Brandl
e4a14bc27f update declared version to 1.0 final
Change-Id: Iec2564a5c95baf95de5f7e63ed1890334477c70f
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34793
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-23 09:25:39 +02:00
dmc
03867c1f43 ma6stick: fix for ts (heater not working?) 2024-10-22 10:58:02 +02:00
16abfdc65e fix ma7_samplehead_cfg and thermalcond_cfg 2024-10-22 10:52:23 +02:00
601ad9d301 eurotherm_cfg: fix meaning 2024-10-22 09:28:39 +02:00
4892c2fd8f frappy_psi/parmod: fix Driv
registering updates should be done in initModules
2024-10-22 09:28:39 +02:00
25986d67aa add more datatype tests
check from_string and to_string are counterparts
redesign standard value checks for this

Change-Id: I825cdba5955596096fd11ab52de571f05845d7ae
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34737
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-10-17 08:08:17 +02:00
f8d8cbd76d add Datatype.to_string as counterpart of .from_string
This allows simple UIs using stringified versions in
text input.

- add frappy.client.SecopClient.setParameterFromString
- fix datatype tests
+ add updateItem to CallbackObject (for doc)

Change-Id: Ic7792bdc51ba0884637b2d4acc0e9433c669314d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34736
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-10-17 08:08:17 +02:00
f9f713811e do not fail when generalConfig.init() is called twice
Change-Id: I7132b71f906fc8a77b6fedcdcc2c7d4a3e48830a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34818
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-10-17 08:08:16 +02:00
Enrico Faulhaber
72eb00fb27 add test for importing custom modules
related: #4882

Change-Id: I605de7fd43be146c84f4324d2a8eebe0aa11da79
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34814
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Tested-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-10-17 08:08:16 +02:00
Georg Brandl
7111d73226 install libgl1 for pyqt6
Change-Id: I873f97fb497364d9c647797a899cf348c430214b
2024-10-17 08:08:16 +02:00
Georg Brandl
19d5756eb0 install pytango for testing
Change-Id: I04e0dbc6d59b388dbcf6657b8815642fcdc25094
2024-10-17 08:07:11 +02:00
Georg Brandl
d6b31222b6 new setuptools needs new importlib_metadata
Change-Id: Ie4220f7ec2c11b3dcf64c65b3ed97a3d9129af5c
2024-10-17 08:07:11 +02:00
Georg Brandl
b3a2f33151 ci/Dockerfile: do no use pytango from upstream
Change-Id: Ie002aff67e0fb4d6daf6f621c58be8c5ab71af9d
2024-10-17 08:07:11 +02:00
Georg Brandl
380c8108eb remove old "buffer" message
Change-Id: I010f535ec746ef15ccfc2929a2e62ccb83894c33
2024-10-17 08:07:11 +02:00
Enrico Faulhaber
cde09694a5 ci: also install gui requirements for additional tests
Change-Id: Idc40699d470fb6449366a1cd75a3207cabcdd4a4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34815
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-17 08:07:11 +02:00
73a54dfc44 frappy_psi.sea: avoid error on import
the previous code raised an error when generalConfig.init() was
not called before importing. defer evaluation of seaconfdir to
the time it is used

+ use updateItem instead of updateEvent to avoid pylint complaint

Change-Id: I0da0891a8d4091102d2a149705f5546e2f6fd187
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34813
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-10-17 08:07:11 +02:00
Georg Brandl
025eb5fff5 fix descriptive data
- remove unspecified "version" and "interface" properties
- add frappy version to "firmware" property
- keep custom node props with underscores

Change-Id: Ib047e4765a90f2833f9e41af69a665554dd20737
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34792
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-10-17 08:07:11 +02:00
Alexander Zaft
f36af47b98 psi: change open calls in sea
Change-Id: I4fe235027df4ea935d84e29895eb280f620afbdf
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34665
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-17 08:07:11 +02:00
Alexander Zaft
13db0d6bc6 generalConfig, config: use pathlib
- switch to pathlib
- represent multiple confdirs as list of Paths internally, not string
  with pathsep

Change-Id: I1418e561641e27cd904af0762be056cd66ee1919
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34464
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-10-17 08:07:11 +02:00
Alexander Zaft
fe0aa3d7d5 all: start using pathlib
Change-Id: I2b0d6ff8f534382913414fa9b35150d6f697acb4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34463
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-17 08:07:11 +02:00
6c2b1ea355 fix meanings and SEA vti mapping
- tt:value (VTI temperatures from SEA) should not be sample T
- VTI meaning must be ['temperature_regulation',20]
- stick ts meaning must be ['temperature', 30]

Change-Id: Ib6d662bb27d898958c62c02878d9551161cbc8c2
2024-09-27 15:19:29 +02:00
7ee219ce7a cfg: fix 'tt' for all SEA cryos: tt:value is now vti temperature
before tt:value was the sample temperature

Change-Id: I2070441d3acc93d9ed18bb1ea650bca156443619
2024-09-27 14:57:18 +02:00
ba2b5ac786 frappy.client.interactive: improve order of callbacks
the user would expect that updates are shown in the order
they appeared in the SECoP connection.
For this register_callback needs an additional parameter
to suppress initial callback.

Change-Id: Id1d7605d739b02ec799b3768ae2399558969c381
2024-09-23 15:07:03 +02:00
abfb8afdc5 frappy_psi.motorvalve: move doc string to class
- this will allow to add other classes if needed

Change-Id: I452c2be19456829796d899891719f5659fac2ba9
2024-09-23 15:05:54 +02:00
7fdb2e7e2f frappy_psi.trinamic: improve
- try several times in case of no success (configurable)
- write default values to the controller
- add limits

Change-Id: I7974d7056bbad48091653378366943ccf3e6f945
2024-09-23 15:04:44 +02:00
dd0cb2e1dc GUI: allow enums to be plotted
numpy.finite() does not accept enums -> convert to float first

Change-Id: Ib740800a7410ada38fb48711d4da676af8b64b17
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34608
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-09-13 09:03:18 +02:00
227f67a4c7 GUI: avoid space needed for closed groups
the empty QLabel in widgets for readonly parameters was not hidden
with the group.

Change-Id: I0e5ad49c3b693483a3cabf849e7962925cfcc434
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34607
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:02:04 +02:00
Alexander Zaft
c92d6471eb bin: remove make_doc
relic from markdown documentation

Change-Id: I8cb1913e6b6d1b8efe77d4d7f982f95e75166707
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34465
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-09-13 09:02:04 +02:00
Jenkins system
991f4781c4 [deb] Release v0.19.10 2024-09-13 09:02:04 +02:00
Georg Brandl
5083db8d92 remove walrus
So far, frappy is still supposed to be 3.6 compatible

Change-Id: Ieb56c6500d58cdc1fe2f34b1448b05ba74b0fa6e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34326
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-09-13 09:02:04 +02:00
Alexander Zaft
7c54ac735d debian: let frappy-core replace frappy-demo
Fixes: #4888
Change-Id: I32781773cbce9e29381df482b8bd9ba992dcb9e4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34323
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:02:04 +02:00
Jenkins system
d6b28075d5 [deb] Release v0.19.9 2024-09-13 09:02:04 +02:00
Georg Brandl
d555a58781 debian: fix missing install dir
Change-Id: Id865c58b66af71dbb6631e5856f1f8563946fa40
2024-09-13 09:02:04 +02:00
Jenkins system
e6639fbc08 [deb] Release v0.19.8 2024-09-13 09:02:04 +02:00
Georg Brandl
d9f2fb291a debian: move demo into core
Change-Id: I545850163f0fd6e560dcf62a008cb9f1aa544af9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34309
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-09-13 09:02:04 +02:00
Jenkins system
27be8c11fd [deb] Release v0.19.7 2024-09-13 09:02:04 +02:00
Alexander Zaft
bd84a69537 lib: GeneralConfig fix missing keys logic
Change-Id: I814511fff6fbf7c94e30a052bff0712fad9805b5
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34306
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:02:04 +02:00
Jenkins system
a1dd8e2168 [deb] Release v0.19.6 2024-09-13 09:02:04 +02:00
Alexander Zaft
f0f12d6d96 lib: Fix GeneralConfig defaults handling
overwriting defaults before init() had no effect, as the values were
replaced there.
Now, only unset defaults are updated, keeping the overrides.
Also fix unconditionally taking the values from environment variables.

Change-Id: Idf1c5e2338403e061d20c11ed9c4803d535eb188
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34304
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-09-13 09:02:04 +02:00
Georg Brandl
96a388eae9 gui: save/restore window geometry
Change-Id: I98008fc12479206018416d57ef248a9942b73490
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34297
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:02:04 +02:00
Georg Brandl
c272a8d619 GUI: allow starting in detailed view by cmdline flag
Change-Id: I4248bfee47d807833e02a35ce8dd85fa6b297e77
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34296
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-09-13 09:02:04 +02:00
Jens Krüger
f2940d3f23 SINQ/SEA: Fix import error due to None value
If the environment variable isn't set a None value is returned. Now an
empty string will be returned

Fixes: #4882

Change-Id: I3e319daebf10e2d8ea3ee00f6094e6896e54f51b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34234
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Jens Krueger <jens.krueger@tum.de>
2024-09-13 09:01:01 +02:00
Jenkins system
925df6f4fa [deb] Release v0.19.5 2024-09-13 09:00:42 +02:00
Alexander Zaft
ff772e578e pass logger parameter only for mlzlogger
The mlzlogger has an extra argument we want to keep using.
To keep compatibility, check if we got the mlzlogger or something else.

Change-Id: I1a4f4e7651370dd71124ab7c3608c6573a585dd9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34292
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-09-13 09:00:42 +02:00
Alexander Zaft
6f465be567 add RemoteLogHandler independent of MainLogger
installing a custom logger was not possible, since the RemoteLogHandler
was not installed.
Additionally, search for the RemoteLogHandler recursively upwards, since
not all loggers copy their Hanlders to their children.

Change-Id: If3e19966d9289cacd926648582e9718b7eab279c
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34288
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:00:42 +02:00
Alexander Zaft
1f5bba5575 add missing requirements to setup.py
Change-Id: Ie0d3eae3a7aeb1f28983476b00fe012c916051d7
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34287
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-09-13 09:00:42 +02:00
Alexander Zaft
a7fc1e4342 client: fix how to raise error on wrong ident
leftover error_map from long ago, turned into direct raising of
HardwareError

Change-Id: I8772e20133502bb0a997d5317a74e2bd16b780c6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34279
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:00:42 +02:00
Jenkins system
6e1cd30678 [deb] Release v0.19.4 2024-09-13 09:00:41 +02:00
Georg Brandl
acf9a03aa4 actually exclude cfg-editor
Change-Id: I1a31fd96eb8962cff92cda349201ebff4a0dddbc
2024-09-13 09:00:41 +02:00
Jenkins system
79827baf2a [deb] Release v0.19.3 2024-09-13 09:00:41 +02:00
Enrico Faulhaber
12d7b5dae9 remove cfg_editor for now
as it was not functional...

fixes: #4881
related: #4882

Change-Id: Ic8c5ee06fcdd48b8b0562b5b1275296d2b155f06
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34226
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Jens Krueger <jens.krueger@tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-09-13 09:00:41 +02:00
Jens Krüger
318b3ad412 Update copyright year
Change-Id: I7fe65e46639c2d8948fa93303ee9b14393e8bfca
2024-09-13 08:59:40 +02:00
Alexander Zaft
4305d84ef8 mlz seop: add pylint
Change-Id: I096dff796c88bf1b23778aa57c73f9aa77712372
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34127
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 08:59:26 +02:00
Alexander Zaft
177f49ca3f mlz: fix delayed import of he3cell
Change-Id: Ia15693a11f9d1526b4a50be4adbad19640eafe93
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34126
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 08:59:26 +02:00
fb5e468048 frappy_psi.sea: use raise from
this was complained by Jenkins after merging (1)

Change-Id: I9e4eb57004d218021978d6e9e06e1cbd42ec5e9c
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34024
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 08:58:53 +02:00
Oksana Shliakhtun
6c01a1e48a Draft for the Keythley Pulse System driver
Change-Id: Idd6f86acbaac178ab8031625b36ded1351de6a34
2024-08-27 15:16:27 +02:00
Oksana Shliakhtun
96412cb480 Comments
Change-Id: Ie7fe10f704aec62c19cae0bab16d43d55d911a36
2024-08-27 15:16:27 +02:00
Oksana Shliakhtun
807afba53b Changed temperature range
Change-Id: Ib2a0bc59b191d33e65420375385d8807754193a9
2024-08-27 15:16:11 +02:00
Oksana Shliakhtun
97032193bf Changed temperatures
Change-Id: I1411e425bd911b73cfcb459de50e7eea2cd15c51
2024-08-27 15:15:48 +02:00
Oksana Shliakhtun
a3c1399854 Driver with comments
Change-Id: Ic2d35960de6b33e4d61ad1920d2416e2d5ed1ded
2024-08-27 15:15:39 +02:00
Oksana Shliakhtun
f0eb7d95f1 Added documentation
Change-Id: Id6e26a4c28fe080a55099cd54d0fa85c15946657
2024-08-27 15:15:01 +02:00
Oksana Shliakhtun
c1403763f4 .
Change-Id: If177029157edbd6123e9f41883dbb6c639a68852
2024-08-27 15:14:52 +02:00
Oksana Shliakhtun
d38b672a9a Status and autorange implemented for AC resistane bridge
Change-Id: I8c94660c3b76cc78886e9e074b4ce8114fbb7f9e
2024-08-27 15:12:37 +02:00
Oksana Shliakhtun
7c96b83aff Communication with the modules for the ac resistance bridge.
Change-Id: I1c144bf0bfc7c8c3090aa7cf3f32f1d4d046dca7
2024-08-27 15:12:37 +02:00
Oksana Shliakhtun
3ee6e32a46 Communication with modules for a resistance bridge
Change-Id: Ia8622cd3620dff68566768411a05f9cf3618771a
2024-08-27 15:12:37 +02:00
Oksana Shliakhtun
c20801c8fe Driver and cfg file for ac resistance bridge
Change-Id: I77b2294b57315fcf7d94996a2a68fcac72866710
2024-08-27 15:12:17 +02:00
Oksana Shliakhtun
a5e698163b Frappy driver for a HP multimeter
Change-Id: I2e9dc5131ea9a7317d69c42dd49388216e77f72f
2024-08-27 15:12:11 +02:00
Oksana Shliakhtun
5376490a7e New driver for AC Resistance Bridge (with SIM921 modules)
Change-Id: I2c2da421453af0f41703805092423f9b02d1f9b4
2024-08-27 15:11:59 +02:00
Oksana Shliakhtun
9d50412a38 Haake driver
Change-Id: Ib6aec31ada835ebfb2f8a06b119e3b8189f9f51e
2024-08-27 15:11:48 +02:00
Oksana Shliakhtun
39dbe1149c Driver for HP multimeter
Change-Id: I45f70758331680fb7b044d28bf0dc50781d912d3
2024-08-27 15:11:35 +02:00
a281583cd2 dil5: fix config file after change of frappy_psi/picontrol
+ fixes in frappy_psi/picontrol.py
2024-08-21 16:08:44 +02:00
ad15ef3cdb fix camea be filter 2024-08-20 11:42:06 +02:00
7536454e96 frappy_psi/sea: yet another fix: BUSY after write target
it seems update_is_running runs in parallel to write_target
and read_status can not run before write_target has finished
due to locks -> call read_status within write_target
2024-08-20 11:39:04 +02:00
bfbb8172e0 improve picontrol
after suggestions from Marek (WIP)

- keep Mareks version created during Markus absence for now
- add a class with input_module (which is not a mixin)
- not 100 % tested: HasConvergence now inherits from Drivable

Change-Id: I6b3896e7c0fdaa4379d1cbc5603d43bd7a0b3a48
2024-08-09 10:56:31 +02:00
l_samenv
258ec60b4c frappy_psi.sea: fix issue with missing BUSY after change target
The command 'maw' in NICOS sometimes does complete immediately
instead of waiting for reaching the target. It seems this affects
only SEA drivables. The more important fix for this has to be
done in SEA. The fix here is just to improve behaviour in case
SEA would not do as expected.
2024-08-08 16:35:28 +02:00
l_samenv
2f396e5897 frappy_psi.sea: fix mechanism to avoid ambiguous parameter names
previous intended behaviour: when an ambiguous name appears
it is prepended by its parent node name in sea separated with
underscore (recursively). however, this was not implemented
properly and did not work.

new behaviour: when the short name of a parameter is ambigous
it is using the full path, joined by underscore
2024-08-08 15:52:48 +02:00
2c102ad38b config file for keithley 2601b source created
fixed bug with limits in driver
2024-07-24 17:39:14 +02:00
b3519c7317 created config file in the new format
fixed a bug in the vlimit
2024-07-24 14:56:35 +02:00
9caa3f3e08 change razorbill port to 3000, as it can not be connected in subnet 2024-07-11 16:54:35 +02:00
dmc
bb11f7cc20 add ori7_stick 2024-07-11 16:53:02 +02:00
ffe6f3cce0 fix bug with status (assign string to tuple) 2024-07-11 16:48:42 +02:00
91a91d6483 ma7_stick: disable drivable ts because of bug 2024-07-11 16:47:51 +02:00
dmc
7131536770 fix sea/ori7.config.json for use sith std stick 2024-07-08 16:08:49 +02:00
dmc
82c1081b69 fix issue with seadesc
frappy run main seadesc did no longer work.
fix this
2024-07-08 16:08:49 +02:00
l_samenv
ff2fcf7651 rename razorbill forwarder addon 2024-07-05 14:18:50 +02:00
21dae2d9ce ACM1219: add checkHWIdent
waiting 0.5 sec before the first communication helps to start
properly

+ added usb dev names for box
2024-07-05 10:50:47 +02:00
Paul Neves
476d2087f6 ACM1219: remove wait_before 2024-07-05 10:50:47 +02:00
Paul Neves
bb6cf9caa1 Updated the ACM1219 driver 2024-07-05 10:50:44 +02:00
Paul Neves
c3b1ce4b8c added GNU license 2024-07-05 10:50:19 +02:00
Paul Neves
e4eb5989c3 made displacement and force calibrations writable and updated capacitance channel descriptions 2024-07-05 10:49:34 +02:00
Paul Neves
48393b2332 added RP100, ACM1219, and dummy classes, and razorbillUC220T config file 2024-07-05 10:49:30 +02:00
l_samenv
9eb8f2efc8 add T forwarder for razorbill 2024-07-05 10:39:44 +02:00
46f815af38 [WIP] work on CCU4
- nv control

Change-Id: I34e634d1e167f0a60d55b014c7117c9274d83c50
2024-07-02 11:11:40 +02:00
09f4f1d192 frappy_psi.sea: use ReadFailedError
change error class on reading parameters in SEA from HardwareError
to ReadFailed. This is in most cases more appropriate.

TODO: find errors in SEA that should be should be HardwareErrors
and a mechanism to indicate this

+ for errors related to disabled modules use the DISABLED status

Change-Id: I0342a34185a66dcf874c6ca034b7cefc98bf9c8a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34022
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-24 13:43:06 +02:00
15fc9ca16c add sim for ls372
+ fix bin/sim-server

Change-Id: I6cad963d9e37faea172ca51a327474406ecafa4a
2024-06-19 17:19:19 +02:00
c6056ad1de [WIP] frappy_psi:ccu4: add HeLevel, N2
Change-Id: Ib31ec440ecc51b01035d783065cb805b942b61b1
2024-06-19 17:19:19 +02:00
4da6aa95d7 frappy_psi/ls372: add changing pid
Change-Id: I8768b1e6609a42553b8e98866540fe33d1b5cd89
2024-06-19 17:19:19 +02:00
fa37b43be2 better behaviour on startup in case of errors
- fix a bug then TcpServer can not start dye to address in use
- report errors when restarting interfaces
- increase timeout. the timeout for waiting all interfaces
  starting up must be higher than a potential successful
  startup of TcpServer, which is currently ~ 10 sec
  (might be reduced, but at both places)

Change-Id: I88b967c4baff79fdf94f4c849dd713d2cba6fabc
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33985
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-06-19 17:19:19 +02:00
986065e1f6 frappy_psi.extparams.StructParam: fix doc + simplify
- the doc string contained wrong, obsolete information
+ simplify: remove customizeable mapping member name -> param name

Change-Id: I0ffdcb336f45001d45f68238b56e1e257d98dd3d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33993
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-19 17:19:19 +02:00
Jenkins system
455f15d975 [deb] Release v0.19.2 2024-06-19 17:19:19 +02:00
Enrico Faulhaber
cefd0fe8b5 frappy_mlz/entangle: fix missing status enum
finally!

Change-Id: I5be4ded7c8ee87a09be44ba474e26cd023c917c6
2024-06-19 17:19:19 +02:00
9cd38375c0 frappy_psi.sea: various improvments
- always open asynio and syncio connections (conenctions for
  update and command)
- better synchronization when reconnecting using threading.Event
- nicer error messages

Change-Id: Ia435c3ccfa2732be4aa9f24a3b6e8484fab715a3
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33909
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-19 17:19:19 +02:00
86b888b43a fix ovenstick cfg
fix attached modules:
- 'read' instead of 'value_param'
- 'write' instead of 'target_param'

+ remove comment in cfg/stick/thermalcond_cfg.py
2024-06-19 15:29:29 +02:00
9eb83df7de fix stick cfg of ma7 and ma11
fix attached modules:
- 'read' instead of 'value_param'
- 'write' instead of 'target_param'
2024-06-19 14:57:37 +02:00
20596744f9 frappy_psi.triton: fix heater output issue
when output_module is not HeaterOutputWith range, the heater limit
can not be changed

Change-Id: If25a609e9f9667dc111cb220024388a51df993ec
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33913
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-17 15:20:21 +02:00
0a98776e27 frappy_psi.triton: bug fixes
- fix channel numbers
- make sure some channels are selected

Change-Id: I11c553805ed5ee6235e54ce56a5ea68160d1d212
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33911
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-06-17 15:20:21 +02:00
f5667a9267 frappy_psi.picontrol: software control loop
example usage: use a temperature controller without changing
the calibration setting:
reading the raw sensor, calibrate by software and use 'manual'
heater output

Change-Id: I3dbcf37e7726b48a0516d7aa30758be52b80fe58
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33910
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-17 15:20:21 +02:00
8b27e4012c frappy_psi.ah2700: auto create loss module with Pinata
the loss angle is a separate quantity, which is preferred to
be an extra module. create this automatically.

Change-Id: I97f6be48f3411d8143f2ff85c2c61711fc71e8d6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33908
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-17 15:20:21 +02:00
Alexander Zaft
6837b82791 add option for delayed imports
will make setup checking easier, although it does not work for all cases
(from imports for example)

Change-Id: I2e5cf9b427a6f8e6f603d9662cdb9700d5f9ad9a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33893
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-06-17 15:20:21 +02:00
e093bdae96 bug fix in frappy_psi.convergence
+ various doc improvements

Change-Id: I8ce2a1f006a5e4870285ce1f6015510e21d01a13
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33906
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-17 15:20:21 +02:00
a4ee261744 cti7: add cold finger temperature 2024-06-17 10:40:20 +02:00
e09ed9ebe3 move magnet from flamedil bananapi to flamemag raspberry 2024-06-12 11:25:49 +02:00
8bc0671f73 fs furnace: move PI with relais to frappy_psi/furnace.py
Change-Id: Ia8bec296035b3ae23a698f041fe8be39d925d996
2024-06-12 11:25:22 +02:00
26f9c177f7 HasControlledBy: update target without switching to self control
when a HeaterOutput module is used e.g. from a software loop,
a method is needed to update the output without switching to
self-controlled

Change-Id: I9c83b4e172e14812a405e836757491622ff5f949
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33903
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-06-12 11:25:22 +02:00
4c6bc2ba68 frappy.lib.asynconn: handle ConnectionResetError nicely
Change-Id: Icba24ffb82369aa78e431d12260f4f3cc795e511
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33902
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-06-12 11:25:22 +02:00
l_samenv
ce7de98dc7 fix missing update after error on parameter
the main error was a suppressed update when the value does not
change, but the readerror gets None

this error was the reason for strange behaviour in frappy.proxy
while finding the cause, other improvements were done:

- nodeStateChange: add 'activating' to the possible online states
- improve status handling in proxy

Change-Id: I2a1873065ab051bdba2200f50e6ad09ae55e168e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33901
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-12 11:25:22 +02:00
Jenkins system
1c229c33bd [deb] Release v0.19.1 2024-06-12 11:25:22 +02:00
Alexander Zaft
2d08f25993 mlz: derive Digitaloutput from Drivable
as the underlying entangle *DigitalOutput may be BUSY and frappy.Writable
disallows this.

Change-Id: I6e4861c6d014f59ad4cc2355a438130173bf6569
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33849
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Bjoern Pedersen <bjoern.pedersen@frm2.tum.de>
2024-06-12 11:25:22 +02:00
Alexander Zaft
89df37462c datatypes: add more detail to error messages
the error messages for tuple and array swallow all details useful for
debugging. add the original exception for some context

Change-Id: I8e1036bfab10c09d5f9c8af05ac3306af89f54c4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33850
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-06-12 11:25:22 +02:00
69938f7ce8 frappy_psi.ah2700: create loss module automatically
using the Pinata mechanism

Change-Id: I07b06b2563241600fbe454366089717a59d55bdc
2024-06-12 11:25:22 +02:00
dmc
913b40ac92 varioxbstick: add meaning to T_sample 2024-06-12 09:26:01 +02:00
070e78f626 cfg/sea, hepump: add neodry to enum 2024-06-11 13:21:15 +02:00
l_samenv
a44f3fae50 frappy.modulebase: fix missing update after error on parameter 2024-06-11 08:36:36 +02:00
dmc
5a54503fe7 varioxB: add std stick 2024-06-10 15:48:37 +02:00
l_samenv
f702854066 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2024-06-10 10:11:52 +02:00
l_samenv
67fa50a9e0 [WIP] fixes for gas10ka / varioxB
treat proxy for io correctly
2024-06-10 10:11:03 +02:00
dmc
5e5f262472 remove dinp/dout from sea json temperature
dinp and dout is not available on ls336 and not really
needed on ls340
2024-06-06 15:28:21 +02:00
9995ac8165 fix ori4 config (align to other cryos) 2024-06-06 08:59:32 +02:00
b1f9c74269 frappy.client.readParameter: handle connection errors correctly
update cache in case of connection errors, as they are not handled
in the rx thread

Change-Id: Icf3377020ec314fcef2982a4e6dc64356f787273
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33744
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-28 17:29:55 +02:00
63210c9924 SecopClient.online must be True while activating
as callbacks trigger by updates while activating may check for
online state

+ remove unused imports

Change-Id: I37df839abf6b7225389b803347234a3d0bc8d799
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33745
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-05-28 17:29:55 +02:00
Jenkins system
47c5e297d4 [deb] Release v0.19.0 2024-05-28 17:29:55 +02:00
Georg Brandl
6cd83eabcc fix LimitsType to be actually used and validated
Change-Id: Id0f67e91f4ff57d4c29c33960e736c8c3ae77209
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33683
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-05-28 17:29:37 +02:00
Jens Krüger
caaefec6db Fix abslimits reading from entangle device
Fixes: #4864
Related: #4866

Change-Id: I393a35784766c0e09367a90debfc8b59b290626e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33672
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-05-28 17:29:37 +02:00
Georg Brandl
6dfb3bcee8 add config for the Entangle simulation server
Change-Id: I9e7564707fc98d3b5dc3182d7837b222aefef582
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33692
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-05-28 17:29:37 +02:00
l_samenv
d492f7326f frappy_psi.parmod: make async 2024-05-07 10:25:02 +02:00
l_samenv
7929c37027 frappy_psi.sea: better timeout behaviour
timeout parameter not only for requests but also for connects
this might avoid blocking situations
2024-05-07 10:23:21 +02:00
76349e38f9 add cfg files from zebra: Ma10heat, ma10high_t, ma6_sampleheat 2024-05-03 08:25:50 +02:00
647d87f70f frappy.client: avoid shutdown callback sent twice
in case th rx thread crashes, the shutdown callback is called twice
-> improve cleanup code in __rxthread

Change-Id: I0d20aa4304d94b17565b018ad8528d61bbbcbc83
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33614
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-03 08:14:10 +02:00
798c268eb4 hvolt_long_cfg.py 2024-05-02 16:36:43 +02:00
9467f5233c increase mercury timeout
+ set try_cnt for IPS to 0 (do no longer know why)
2024-05-02 14:54:52 +02:00
a7ff73a34d set comlog automatically on 2024-05-02 14:54:52 +02:00
dmc
bf018e74ba add backlash to MA10 motor 2024-05-02 14:47:36 +02:00
dmc
801f80af7f add cfg files for gas stick 2024-05-02 14:47:36 +02:00
26fa5371e9 add piezo/thermalc from sans 2024-05-02 13:06:40 +02:00
2bad1ffee5 update haake/ma7/ma11/ovenstick from sans 2024-05-02 11:47:33 +02:00
b2b77c70ea SecopClient.__del__ must not call callbacks
otherwise a nasty deadlock might happen in NICOS

Change-Id: Ie1a333979b77683ce35683aede042ce86159fe65
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33583
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-02 08:40:32 +02:00
192cde605e frappy.client.SecopClient: add the option to use no logging at all
using a dummy NullLogger

Change-Id: I1f12c7307d3d8e37243488b8a11c6abcf087af86
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33582
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-02 08:40:32 +02:00
c7d23e40e9 frappy.client.interactive: improve logging and error handling
- redesign logging, using python logging
- stop watching when an erro happens during update

Change-Id: Ibe96569ecc45df429b571232374c451de3f82f1f
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33431
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-02 08:38:49 +02:00
2561e82086 frappy.client: improve error handling more
- implement a 'handleError' callback
- SecopClient.handleError is registered as a callback and by default
  logs errors up to a limited number of times
- the cache is customized to return an item indicating an undefined value,
  helping to avoid follow up errors.
+ frappy.errors: cosmetic fix
+ frappy.client: cosmetic changes

Change-Id: I4614e1d27c7aea3a1a722176c6be55f8563597cd
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33429
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-02 08:38:49 +02:00
55c96ffe4f add FW cfg 2024-04-30 09:24:07 +02:00
17a44ef42a fixed dilsc, fist try before tests
Change-Id: Iaac5f07c27879c7c17be2e25defde19e9ddd1566
2024-04-29 12:18:12 +02:00
Alexander Zaft
fcdee8e3ec gui: sort qt imports
Change-Id: Id8dfdd7b07bff6e337eb71a436dd51762f9b5fa7
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33389
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:01:20 +02:00
dddf74df9e frappy.client: catch errors on callbacks
buggy updates or errors in callbacks are now converted into
error updates, buggy error updates are skipped.

-> the receive thread should no longer crash

Change-Id: I97e3999db73e64f73dfbc380fac3d7685b6ca31c
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33386
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-04-08 17:01:03 +02:00
Alexander Zaft
ac251ea515 test: add uri attach test
Change-Id: I8a021c53c9987ed03ce31c8481f73573b943d1f3
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33417
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:01:03 +02:00
Alexander Zaft
9e4f9b7b95 gui: more specialized input widgets
Change-Id: I8b768b2069ae28a58d540165bd95f31ad7e984e0
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33390
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:01:03 +02:00
4f65ae7e46 frappy.client: cleanup properly after a reply timeout
when a reply to a request is not received within 10 s a timeout
error is raised, but any further requests with the same identifier
will be blocked - fix this

Change-Id: Id2fbc8bb6e6ecfd54bba1fa57b62e626e49b54c8
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33385
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-04-08 17:01:03 +02:00
Alexander Zaft
a73b7e7d88 gui: catch invalid inputs
Change-Id: Ie0525e4ef9a94085da811e7eaa2e0b7430bade95
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33388
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:01:03 +02:00
Alexander Zaft
76a78871b4 core: cover errors in handler setup()
Change-Id: I0bb2f07e26717205c013dfedec6e1beca2947d17
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33239
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:00:24 +02:00
Alexander Zaft
118e22ee44 core: introduce common handler class
- make RequestHanlder based on socketserver.BaserequestHandler
- split handle() into subfunctions
- rework TCPRequestHandler

Change-Id: I62452e21c03b9cb9937673ce9c8663765798f863
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32984
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:00:24 +02:00
Georg Brandl
c63f98f3cb dispatcher: consistent handling of missing timestamps
Like in `read` replies (line 193), `update` now omits the timestamp
instead of returning {"t": 0}.

Change-Id: Iaee0fccae81040cdd6075b0e4a8600c032aec03d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33382
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:00:09 +02:00
Alexander Zaft
6514a1b2ee core: add websocket interface
Change-Id: Ic62abeef6fb73f4a1b3d29f9225ba164de9e3e93
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33240
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:00:09 +02:00
aeec940659 follow up fix: handler export=True correctly
this seems to be broken in change 33266

Change-Id: I4da78f297976daeac0a0709b9c86e6e28fc122bf
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33268
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-04-08 17:00:09 +02:00
4571af8534 follow up fix for change 33168
triggerPoll must be set on attached io

Change-Id: If3fa1016efa6047371380790f60db246d87b3628
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33269
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-04-08 16:59:19 +02:00
l_samenv
adfb561308 add cetoni pump for flowsas project 2024-04-03 11:31:38 +02:00
70a31b5cae attocube: remove seperate pyanc350 python module
- implement positioner as an io class
- proper shut down behaviour

Change-Id: If04176f779809fd5b08f586556cac668cf188479
2024-03-28 10:12:18 +01:00
l_samenv
8ee97ade63 adjust cfg foe attocube to current example 2024-03-27 17:13:58 +01:00
1715f95dd4 frappy_psi.attocube: add lock protection to hw access
in order to avoid sporadic timeout problems

Change-Id: I36f67ae72b65e9c1f3179cae942b0a7d94584e55
2024-03-27 17:08:24 +01:00
db29776dd5 reworked attocube
- step_mode: soft closed loop, stepwise, reading encoder after a delay
- calib_steps command to determine step size

Change-Id: I27bdffb4d564ac9c55a6473704ac2de6ad92bac8
2024-03-25 16:47:13 +01:00
a2905d9fbc improve attocube driver
- driving in an extra thread, hoping not to miss end of travel
  status bits (does not work always)
- maxtry parameter for trying several times

TODO: move by step (in an other thread)
Change-Id: I89b51d1f6926f2fd26ec22d43aede377b5231583
2024-03-22 14:38:23 +01:00
16b826394f fixes for attocube
Change-Id: Id5eeb749ba010fec59d1c2f8a3258ee34a47e246
2024-03-20 16:59:04 +01:00
l_samenv
ea8570d422 wip: fix attocube 2024-03-20 16:12:03 +01:00
1169e0cd09 improve sea interface
Change-Id: I58fb4b10ef9466f90e4cd58b6c67bcfb11c493e3
2024-03-08 15:59:16 +01:00
7d02498b3d improve async behaviour of parmod.Driv
Change-Id: I3889614a0deaba4ef13b86c6600b6f96bc502a39
2024-03-08 15:58:17 +01:00
694b121c01 fix more stop doc strings
Change-Id: Id7ea0a6d0c959e980beee8fbea73932c701977d7
2024-03-08 15:38:34 +01:00
0f50de9a7f fix command doc string handling and change default stop doc string
- fix inheritance of command description
- when no stop method is given, then the description should indicate
  that stop is a no-op -> add missing doc strings to stop methods
- add test to make sure stop command doc strings are given
  when implemented

Change-Id: If891359350e8dcdec39a706841d61d4f8ec8926f
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33266
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-03-08 15:34:08 +01:00
b454f47a12 fix docstring in frappy.error.OutOfRangeError
Change-Id: I006c061a5d88ac7c97808efd56faece927916e78
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33183
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-03-08 15:34:02 +01:00
6e7be6b4c7 simplify callbacks
on Module, use one single callback list 'paramsCallback' instead of
'valueCallbacks', 'errorCallbacks'. Redesign the mechanism to
avoid most of the closures.

Change-Id: Ie7f68f6bf97ab3f3cd961faa20b0e77730e5b37d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33118
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-03-08 15:33:52 +01:00
af28511403 fixes for proxy modules
- for the case when the remote module name does not match,
  'read', 'change' and 'do' does not work
- a proxy to an IO class has enablePoll == False, but it needs
  a triggerPoll for modules relying on it to work
- a proxy on a communicator module has a status even when the
  remote does not - this needs 2 fixes

Change-Id: Icd44da4c2984f27ce7147dec633739f9176012ec
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33168
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-03-08 15:33:45 +01:00
9d9d31693b bugfix in automatic creation if attached io
srv.modules does no longer exist

Change-Id: Ibc52fe35f27ad110e60947702d97ee40f359b7c5
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33167
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-03-08 15:33:39 +01:00
3a7fff713d move StructParam to frappy/extparams.py
+ typos and fixes in doc strings

Change-Id: Ib3e9add84ce2a6fb5c33770cae7f2da3f5655506
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33033
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-02-26 13:43:10 +01:00
2acab33faa add FloatEnumParam
for the use case where a parameter is a selection of discrete
float parameters

declaring a parameter as FloatEnumParam will create effectively
two parameters, one with datatype FloatRange and another with
datatype Enum, influencing each other automatically.

in a later change StructParam should be moved from
frappy/structparam.py to frappy/extparams.py

Change-Id: Ica3fd8dcaf6e9439e8178390f220dec15e52cc86
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32975
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-02-26 13:43:10 +01:00
8c589cc138 simulation: extra_params might be a list
- still accept comma separated string
- remove legacy naming '.extra_params'

Change-Id: I497cf7722d0b39dd31c516383449a4cc4e7dcb7d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32968
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-02-26 13:43:10 +01:00
l_samenv
2b42e3fa0a flamesample: improve comments to parmod.SwitchDriv 2024-02-23 10:13:31 +01:00
l_samenv
5b0da3ba98 fixes on 2023-11-27
- ls372 autorange: wait one sec. more for switching
- keep only one channel, even after target is reached
- intermediate target only when T is raise, but not when lowered
2024-02-23 10:13:05 +01:00
l_samenv
c80b4ac5fb fixes for flamesample
- fixes in SwitchDrive
- increase range when reading is zero in autorange
- add debugging log msgs
2024-02-23 10:10:38 +01:00
l_samenv
8cb9154bb5 flamesample: use odd fraction for limits
workaround for problems when driving exactly to the limit
2024-02-23 10:10:29 +01:00
l_samenv
813d1b76ef remove 1K plate heater configuration
this heater does not exist
2024-02-19 12:47:52 +01:00
Alexander Zaft
183709b7ce frappy_mlz seop: add count to ampl and phase cmds
Change-Id: Id7faca31269bb481ec4010f1e0aec2591f0299d6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32030
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-02-02 14:25:27 +01:00
2cdf1fc58e fix import order in entangle.py
import order

Change-Id: I54450bb64cb5cbea3d29072b6095b8b9e3962aa6
2024-02-02 14:21:44 +01:00
ffaa9c83bd introduce FrozenParam
For the case when the readback of a parameter does not reflect the
change immediately.

May also be used on Writable.target or Drivable.target with a short
BUSY period.

+ bug fix in an error message in frappy.datatypes.IntRange

Change-Id: I5e1c871629f9e3940ae80f35cb6307f404202b4a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31981
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-02-02 14:11:25 +01:00
f9a0fdf7e4 add frappy_psi/calcurve.py and calibtest.py
Change-Id: I5b9aae0ac3bcd76d846c08717201e6c32df4b675
2024-01-31 17:09:17 +01:00
7dfb2ff4e3 logdif.py: only one commit needs to be new enough
+ fixe intendation

Change-Id: I4b0c393767925532e1f105e80a215839a02214af
2024-01-29 15:48:43 +01:00
84c0017c03 synced most of wip to mlz
Change-Id: Ifc5eb0d8ccf693535ab474553759f5622b3a3c8f
2024-01-29 14:31:13 +01:00
2126956160 adopt missing changes while cherry-picking from mlz
Change-Id: Icda4d581e8f0ebd22fc22f2661965bf98a821a34
2024-01-29 14:29:23 +01:00
4cdd3b0709 remove more coding cookies
mainly from frappy_psi

Change-Id: I192811459aebe97f3076888cd31a308a51e6aa49
2024-01-29 14:14:09 +01:00
Alexander Zaft
15d38d7cc1 all: remove coding cookies
Change-Id: I53a4d79c3ebc50b8aed43a5ef1fa6538f8059a47
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32251
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 14:06:06 +01:00
Jenkins system
9904d31f0b [deb] Release v0.18.1 2024-01-29 13:51:25 +01:00
Alexander Zaft
b07d2ae8a3 mlz: entangle fix limit check
Change-Id: Ib430262057026054ac71053d25dfda340b48227a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32921
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-01-29 13:51:20 +01:00
Alexander Zaft
7d7cb02f17 mlz: Zapf fix unit handling and small errors
Change-Id: Iaa5ed175582d8399cc0c69ba72c3ab8e6e51ecf6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32920
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Tested-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-01-29 13:51:15 +01:00
Jenkins system
1017925ca0 [deb] Release v0.18.0 2024-01-29 13:51:10 +01:00
bb14d02884 bug fix in frappy.io.BytesIO.checkHWIdent
missing f for f string

Change-Id: Ie67384e5b7e514728041a72bd08c850abb31639e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32786
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:51:04 +01:00
4c499cf048 remove py35 compatibility code
as f-strings are heavily used now, compatibility to py35
can be removed

Change-Id: I1ae4912ad4cbde8419b74845217943bd061053f3
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32754
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:50:50 +01:00
e403396941 fix playground after change 32249
as modules are now stored on secnode instead of dispatcher

Change-Id: Iccda3d97269693a893c06a4e094a9c1dbcf7df0b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32746
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:50:00 +01:00
5b42df4a5e frappy.secnode: fix strange error message
when get_module_instance is called a second time after
it failed, the 'cls' element in opts is missing:

move opts dict copy from create_modules to get_module_instance

Change-Id: Ie046f133a8fdbbb1c39643ca16dc5447a9d2d065
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32745
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:49:55 +01:00
841ef224f6 modify arguments of Dispatcher.announce_update
- 'pname' argument is not needed
- change 'modulename' argument to 'moduleobj'
  (needed for further change)

Change-Id: Ib21f8ad06d9b2be4005ff3513088a85e29785c94
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32744
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:49:39 +01:00
8142ba746d fix missing import in change message
Transported values in a change must be converted first.
As this is only relevant for the exotic "scaled" and "blob"
datatypes, this was not detected yet.

- add tests
- suppress warning PytestUnhandledThreadExceptionWarning in tests
+ change import_value methods to raise no other exceptions than
  WrongTypeError and RangeError
+ simplify Command.do: as import_value already raises the
  appropriate error, no more try/except is needed

Change-Id: I299e511468dc0fcecff4c20cf8a917da38b70786
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32743
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:49:30 +01:00
Alexander Zaft
5358412b7a core: better error on export of internal type
more descriptive error when trying to export OrType, NoneOr, ValueType
and DataTypeType

Change-Id: If13815e9d2b177042b24a1bb62b1ad1d1d88b502
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32737
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:49:21 +01:00
010f0747e1 frappy_psi.sea: workaround for bug in sea
hdb path should not contain duble slash. replace double slash
by single slash

Change-Id: Ia2ce3be9a75d68fcc7efe3eb3dbd19a7907a73ff
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32705
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:49:08 +01:00
Alexander Zaft
047c52b5a5 core: better command handling
* check argument of do
* automatically set optional struct members from function signature

Change-Id: I95684f1826c1318ea92fad2bd4c9681d85ea72f5
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32501
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:48:37 +01:00
Alexander Zaft
f846c5cb31 datatypes: fix optional struct export
Change-Id: Ia2758dfba75f36a91bf1676e8ead555cec3ead53
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32500
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:47:18 +01:00
Alexander Zaft
0e4a427bc3 mlz: handle unconfigured abslimits
- if there are no abslimits configured, get them from the hardware.
- check if the ranges are compatible

Change-Id: If72e31a56c299cb628ed8ff66d4340a87d4bd1d4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32625
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:47:09 +01:00
Alexander Zaft
2d8b609a3c core: formatting and update server docstring
Change-Id: Ic0dd4c5239f27679c89f6b3742b9c5f8b71f33f6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32514
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:47:00 +01:00
Alexander Zaft
6e3865b345 core: allow multiple interfaces
Change-Id: Ib8c0baef85a6dd69cddafe1c4973e42136d1588b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32489
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-01-29 13:46:47 +01:00
0004dc7620 implement pfeiffer TPG vacuum reading
this is an example where StringIO.communicate has to be extended

Change-Id: Iff6bb426ee7960904993574531de84793152e21d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32385
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:36:18 +01:00
158477792f add StringIO.writeline, improve StringIO.multicomm
- StringIO.writeline sends a command and does not expect a reply
- StringIO.multicomm and BytesIO.multicomm is improved in order
  to insert individual delays in between lines and individual
  noreply flags

+ fix a bug in tutorial_t_control
+ improve readability of frappy.lib.classdoc.indent_description

Change-Id: I9dea113e19147684ec41aca5267a79816bbf202c
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32267
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:34:45 +01:00
fd0e762d18 doc: drop latex support, add pdf support
latexpdf fails with error message "Too deply nested".
We want to avoid reducing the nesting level of doc strings
in frappy.lib.classdoc (less nice output) or a level of
nesting in method doc strings.

- latex removed from Jenkinsfile
- added support for rst2pdf

Change-Id: Ieb3355ef506e636e7e43a726c68327e3b1154469
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32406
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:34:39 +01:00
Alexander Zaft
a16ec6cc91 mlz/demo: move old examples to Attached
change very early version of module attachments in GarfieldMagnet and
MagnetigField to use Attached

Change-Id: I616ad17bc72cd93d86e1b3e3609543cfe90edcd8
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32250
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-01-29 13:34:29 +01:00
Alexander Zaft
777a2cb6a9 core: move module handling out of dispatcher
Split module handling code from the dispatcher.
The new class for managing Modules is called SecNode.

* change logging to no longer need a reference to modobj
* modules get a reference to the secnode obj instead of the
  dispatcher
* intermediate usage fixes for frappy_psi/sea

Change-Id: Ifee4bb47aa7a4508bb4a47c9a5873b7e2d5faf67
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32249
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-01-29 13:33:47 +01:00
cb3e98f86d added logdif.py
a tool the compare commits in branches

Change-Id: I503941b76bb567ea4c3d33b986406a910154fda6
2024-01-29 12:58:45 +01:00
a8bafde64e add test cfg for lockin 7270
Change-Id: Ic6d66b625feb44e8130266901f1296adcb11f532
2024-01-29 10:58:21 +01:00
36c512d50b frappy_psi/SR.py: got changes from develop branch
+ move soft auto range from read_value to doPoll

Change-Id: I0bf8ac15f8515e55cd9131be33615908ffc99c12
2024-01-29 10:29:33 +01:00
Oksana Shliakhtun
17b7a01ce1 Driver for ThermoHaake Phoenix P1 Circulator
Change-Id: I0573eeac2e40b4715072661c819701186733bf94
2024-01-29 10:29:33 +01:00
be66faa591 frappy_psi/thermofisher: version through gerrit
Change-Id: I6999e84d1c5efd0625c6df89e97dad46e5a8cd59
2024-01-29 10:29:33 +01:00
e27b4f72b5 newset version of oksanas drivers
Change-Id: Ia6d8b727e48e96a14b75feeef5d3e6c002cb82a0
2024-01-29 10:29:33 +01:00
l_samenv
bc7922f5c8 iono pi max demo (drums)
+ fix spacing in ionopimax.py
2024-01-25 09:40:10 +01:00
l_samenv
99a58933ec ionopimax: Add LogVoltageInput 2024-01-18 08:40:33 +01:00
9e000528d2 add vacuum furnace cfg file 2024-01-11 16:33:06 +01:00
4a2ce62dd8 added drivers for small furnace 2024-01-11 16:28:06 +01:00
9e6699dd1e more robust calculation for heater resistivity
and check is is in the allowed range 10 .. 100 Ohm

Change-Id: If485480c0974d953165c37f7354dc2818f68b30b
2023-12-15 16:00:26 +01:00
Oksana Shliakhtun
416cdd5a88 Autogain function for SR830 lock-in driver
Change-Id: If07ec9182e5153e1237b9818ce555162f54e0ae5
2023-12-11 08:31:43 +01:00
Oksana Shliakhtun
1bd188e326 For the lockin830 get_par/set_par are implemented.
Change-Id: I5b6707a07d936d24528173a2edae49a148081ff9
2023-12-11 08:31:36 +01:00
Oksana Shliakhtun
f7b29ee959 SR830: moved dicts out of class
Change-Id: If056b1bf4e81c3b609ded087dff2b40c7119903f
2023-12-11 08:31:29 +01:00
Oksana Shliakhtun
f6a0ccb38b Changed write_range, write_tc methods
Change-Id: I335f97bd54deaccf0552b27deb3a7dfe73074e4c
2023-12-11 08:31:17 +01:00
Oksana Shliakhtun
b93a0cd87b New driver for lock-in amplifier SR830
Change-Id: I45c5a06460f4b84cade0eae53188b058510c4473
2023-12-11 08:31:11 +01:00
be6ba73c89 workaround for bug in sea
fix double slash in hdb path

Change-Id: I68ab79c5240abb9fcccbbe5f817f740df2bb5ea6
2023-12-05 14:10:03 +01:00
c075738584 ips_mercury: add NOT_FOUND action 2023-12-04 15:47:18 +01:00
0fa2e8332d do not complain when no output module is configured 2023-12-04 15:46:50 +01:00
afb49199a1 fixes in mb11/dil5 cfg files
- add flowpars
- increase om range to -360
- add sea config
2023-12-04 15:45:00 +01:00
416fe6ddc0 frappy.client: fix the case then timestamp is missing
the previous version failed when timestamp was missing

Change-Id: I77e1fb81b19fb4ee2749d731bafacbac46132f8e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32404
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-11-30 09:17:11 +01:00
e3cb5d2e60 frappy.io: change default to retry_first_idn=True
Looked at this code again, and wondered why the default is not True.
It is far more probable that the programmer just forgets to set
this property to True than it would harm to do so.

Change-Id: I439aedbdfc9c2b12737e3ce1694e90550ddf0e78
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32270
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-11-30 09:16:57 +01:00
l_samenv
998367a727 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2023-11-23 15:57:17 +01:00
l_samenv
ab918a33ae cc: replace bool by enum in cc.hav and cc.nav 2023-11-23 15:56:23 +01:00
l_samenv
397ec2efbd add pdld laser driver
2 modules: a switch (on/off) and the power (set: target, readback:value)
2023-11-14 09:17:11 +01:00
67032ff59b ma6: set backlash 2023-10-27 15:11:19 +02:00
03c356590b frappy_psi.phytron: implement limit switches 2023-10-02 16:58:09 +02:00
06bec41ed3 ma6: make ts drivable 2023-10-02 16:56:23 +02:00
4cd6929d4b fix ma15 sea config 2023-10-02 16:55:42 +02:00
a89f7a3c44 configs for sample heat stick 2023-10-02 16:54:52 +02:00
a4330081b7 proxy: fix command wrapper
bugfix: return only value of execCommand result, not qualifiers
Change-Id: Iff14779050daa9886e9f7d0396317c5a41695cd1
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32235
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-10-02 13:49:08 +02:00
3b997d7d86 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-09-22 13:29:23 +02:00
612295d360 add ill2 2023-09-22 13:29:04 +02:00
9e39a43193 fix fs config 2023-09-22 13:27:54 +02:00
6adfafaa27 more consistent ori1 stick json file 2023-09-22 13:27:10 +02:00
f6c4090b96 fix simulation
+ some fixed in sim_uniax

Change-Id: Ia8703ed988aa904bb2694339f0d3175b28fcb33e
2023-09-19 16:05:52 +02:00
ecef2b8974 more cfg file fixes
Change-Id: I0ba86cd17bb07f480cac6f20994ee854c6e811ae
2023-09-19 15:04:02 +02:00
l_samenv
96a7e2109b cleanup cfg files 2023-09-19 14:43:48 +02:00
l_samenv
2f3c68a5c5 improvements for flame
- frappy_psi.channelswitcher: use isBusy instead of checking value and target
- frappy_psi.ls372: remove underflow mechanism
- frappy_psi.parmod.SwitchDriv: switch the controlled module also when not buys
2023-09-19 14:17:08 +02:00
l_samenv
e9a195d61e flamedil as of 2023-07-04 2023-09-19 14:17:08 +02:00
l_samenv
6ac3938b78 flamedil as of 2023-07-03 2023-09-19 14:17:08 +02:00
l_samenv
b4cfdcfc1a flame sample combined T 2023-09-19 14:16:21 +02:00
l_samenv
d32fb647a6 frappy_psi.ls372: add TemperatureSensor and TemperatureLoop 2023-09-19 14:14:12 +02:00
l_samenv
abf7859fd6 frappy_psi.cryoltd: fixes after frappy upgrade 2023-09-19 14:14:12 +02:00
l_samenv
55ea2b8cc4 frappy_psi.triton: try to fix channel selection before condense action 2023-09-19 14:14:12 +02:00
27600e3ddf fix bad cfg files
Change-Id: Iacba12a2679777dd4ea2892751d82a63221b1361
2023-09-19 14:07:20 +02:00
l_samenv
6b4244f071 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2023-09-19 11:01:06 +02:00
1d81fc6fcd frappy_psi.sea: small fixes
- changes in return value of frappy_config command in sea
- do not store sea manager

Change-Id: I5bc1d9a281ad2285b90d3649b4c702a3501d451d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32166
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-19 10:58:07 +02:00
dfce0bdfbc phytron.py: improve status
better analysis of hardware status code

Change-Id: I667b443649db43ff3e572e0a50685aabc9ba2ca2
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32165
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-19 10:57:59 +02:00
c39aef10aa Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-09-14 11:10:12 +02:00
45dd87060b improve client shutdown time
in SecopClient.disconnect joinng the reconnect thread may take
up to 10 s, because of the time.sleep(10) call in the reconnect
thread.

change the _shutdown attribute from bool to an Event, and
use Event.wait instead of time.sleep

Change-Id: Icea6a14ad73df0b3d26ef45806f4c05e6bf18492
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32137
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:10:39 +02:00
8019b359c4 change FloatRange arguments minval/maxval to min/max
in the previous version FloatRange(max=100) was neither working
properly nor complaining, because the maxval=None default was
overriding the value for max.

possible fixes:
  - raise an error when min/max used as argument (confusing for
    the programmer, as it is a property)
  - allow both versions minval/maxval and min/max (more code)
  - use min/max and a pylint directive here (the only thing to
    take care is not to use the min/max builtin in __init__)

this change uses the last option for the fix

Change-Id: Iff0e0c4d0d7b165003bdeffa67a93a1cd7f29eea
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31982
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:09:25 +02:00
4c5109e5a3 fix frappy_demo.lakeshore
reading back the target does not work properly, because
  a) the readback value might be delayed
  b) there is no command to read back the target, SETP?1
     is returning the working setpoint, which might be distinct
     in case of a ramp

Change-Id: I0da2dbfc1a8ddbecbae6d0456ff64e008bc56336
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31983
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:09:09 +02:00
bf4b3e5683 psi: improve sea interface
- get return value from teh frappy-config script in order
  to detect failures
- call config_check not more than once within 1 sec

Change-Id: Ibe42e846521206463f2761d452aea7e558a36854
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32139
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:09:00 +02:00
af34fef1e1 fix missing .poll attribute in simulation
using super() in SimBase.__new__ fixes the problem

Change-Id: I18d0ba6ac476c2edb0d973090bcb09508a983d6a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32136
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:08:50 +02:00
5e1c22ba28 further fixes after change 31470
- get_module is to be called when io is autocreated
- register_module is missing in playground

Change-Id: I28884575b71320667107c494473b0fc5d4363a50
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32123
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:08:36 +02:00
0bc4a63aa7 add parmod.Par
the reasonly class frappy_psi.parmod.Par represents a parameter
or a component of a tuple parameter

Change-Id: I47208c9d7a6fc377cd56b82cc6a9e8cdb433fe8e
2023-09-14 09:05:00 +02:00
cb2c10655c improve shutdown time
on shutdown, time.sleep(10) is blocking the reconnect thread.
change the _shutdown attribute from bool to an Event, and
use Event.wait instead of time.sleep

Change-Id: Icea6a14ad73df0b3d26ef45806f4c05e6bf18492
2023-09-13 17:22:58 +02:00
6c49abea74 fix frappy/playground.py after change 31470
assumptions about dispatcher in playground.py are no longer
valid.

- let Dispatcher class in playground inherit from real dispatcher
+ improve log messages

Change-Id: I2a9a9d532dabadc590543660c445c021dd2f2891
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31967
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-11 14:12:14 +02:00
dee8f8929e Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-09-08 10:46:13 +02:00
2e143963df stickmotor addon: add backlash -1 2023-09-08 10:45:18 +02:00
4bc82c2896 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-09-06 08:39:22 +02:00
833a68db51 ma10: improve sea cfg 2023-09-06 08:38:49 +02:00
b9f046a665 hvolt_short stick: make hcp writable 2023-09-06 08:38:06 +02:00
9d9b5b2694 frappy_psi.phytron: further improvements
unfortunaely, sometimes communication errors happen.
workaround: try several times reading the status

Change-Id: I2788c6c9b4145246cdd51c31b246abffee60f93b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32032
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-28 14:17:26 +02:00
255adbf8d9 frappy_psi.phytron: further improvements
unfortunaely, sometimes communication errors happen.
workaround: try several times reading the status

Change-Id: I2788c6c9b4145246cdd51c31b246abffee60f93b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32032
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-25 08:21:16 +02:00
Alexander Zaft
bc0133f55a add zapf to requirements-dev
Change-Id: I6dddd8d4c590253f1039b89edae561fa90b40811
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31725
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
09e59b93d8 Revert "add zapf to requirements-dev.txt"
This reverts commit e67a46cd015c0a1a32d5a4f114b963dd17a7c266.

Reason for revert: required version available from pypi

Change-Id: Ib4f8b0cf62da58e84545511c7521ea93b7ff1342
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31724
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
2474dc5e72 interactive client: improve keyboard interrupt
- when driving a module with <module>(<target>),
  keyboard interrupt should send stop()

- make sure keyboard interrupt does not only stop
  the current driving, but also skips other code
  on the same command line

Change-Id: Ib4d2c4111dc0f23bf07385065766fb9b4a611454
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31926
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-18 16:32:16 +02:00
Alexander Zaft
9dab41441f frappy_mlz: Add Zapf PLC
adds a zapf-based PLC connection scanner.

Change-Id: Icc0ded7e7a8cc5a83d7527d9b26b37c49e9b8674
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31471
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
4af46a0ea2 add zapf to requirements-dev.txt
Change-Id: Ia4de696051cee1e00676e777b7dd2c0a90a0c504
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31719
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
b844b83352 core: do not call register_module on error
Dispatcher.get_module_instance returns None on failure.
If that is the case, the dispatcher should not try to register the
None value as a module.

Change-Id: Ie33b8debc2a829d480d56cafc1eb0ab610181d67
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31713
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
3b63e32395 frappy_mlz: fix one-off error in barcode reader
cut of one byte too much in barcode decode

Change-Id: I5f1f8475f197b13af836d685dc6da5a9ee824dc2
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31728
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
5168e0133d dispatcher: change logging calls to debug
Some logging calls should not have landed as log.info in the dynamic
modules patch. This fixes that.

Change-Id: I666fc7c9b5c65ddbed1c26ea456becce7870e744
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31707
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
9ea6082ed8 frappy_mlz: Zebra fixes after basic test
Some fixes after the device was tested with socat ptys and NICOS.

Change-Id: I3e9dba2be2547d493c435d1da9844c932a2df4e6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31662
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
f205cf76aa mlz: Add Zebra Barcode Reader
Adds a Barcode reader device (for now, only for ANTARES). Not yet
tested with real hardware.

Change-Id: I25f097466be89d152f47b9d05ece8f562e4b34d6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31412
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
db9ce02028 Revert "revert commits done before MZ holidays"
This reverts commit d2885bdd72331b60b5a6f26e0c52683d110406b5.
2023-08-18 16:32:16 +02:00
dmc
c4a39306e4 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-08-17 14:10:29 +02:00
dmc
024de0bd32 insert pressure reading into ccrpe_cfg 2023-08-17 14:07:44 +02:00
d2d63c47e1 frappy_psi.phytron: stop motor before restart
restarting the phytron motor without prior stop leads
to funny behaviour.

- send stop before restart
- stop motor when moving but status not busy
- restart when motor drives the wrong way

+ better status text when stopping

Change-Id: I82cd59297b3c79a354a4eeb5ba03fc65bedf755f
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31929
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-14 14:32:01 +02:00
565e8e6fd3 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-08-10 14:35:03 +02:00
89bc7f6dfe add ori7 2023-08-10 14:34:51 +02:00
c69fe1571a add hvolt_short 2023-08-09 17:39:19 +02:00
c40033a816 update old cfg files
- change secop_psi to frappy_psi
- remove interface and name in Node

Change-Id: I69242de250c9ecf52e001fce6396347dbf3fedcb
2023-08-09 17:36:02 +02:00
da37175cbb frappy/protocol/interface/tcp.py: use SECoP_DEFAULT_PORT
import SECoP_DEFAULT_PORT instead of defining DEF_PORT

Change-Id: I02ee420d200f90b61f8c79e1cb5ee3e0913955e9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31913
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-07 16:15:30 +02:00
2020928289 improve error message on client when host/port is bad
for host name without port, None was used for the port
leading to a confusing error message

- do not call parse_host_port with None as defaultport argument
- improve error message when connection fails

+ fix an error in last line of parse_ipv6_host_and_port
+ fix some issues breaking PEP 8 rules

Change-Id: I437360be96449c164f0080e3c60f1685825d4780
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31911
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-07 16:15:30 +02:00
9df6794678 fix haake_cfg 2023-08-07 16:10:55 +02:00
41f3b7526e fix ma7.config.json 2023-08-07 16:10:30 +02:00
l_samenv
f80624b48d MA7: add unit=T to mf 2023-07-11 15:36:14 +02:00
l_samenv
9e2e6074c8 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2023-07-11 13:27:57 +02:00
5a13888498 sMA6 encoder mode to CHECK
after Oksana experienced that it works
2023-07-11 11:27:20 +02:00
5a8a6b88ff frappy.client.interactive: bug fixes
- correct behaviour with the following untypical message sequence:
  - send change target
  - receive status idle
  - receive status busy
  - receive changed target

- add 'exception' to Logger

Change-Id: I614b2a2c2e09ef1b43544838ccb2fa43357dd50d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31632
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-07-11 10:59:42 +02:00
b84b7964e3 frappy_psi.sea: further bug fixes
- in SEA, it is not guaranteed that the is_running state is set
  before the run command returns. as a consequence, we have to
  wait in SeaDrivable.write_target for is_running being set
- syncio has always to be reconnected after asynio

Change-Id: Ia46cff11de86868ce0627faaf6f776282bd7a8f4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31631
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-07-11 10:59:42 +02:00
l_samenv
6c5dddc449 ma7: sea confg: make ta/tb visible 2023-07-10 10:55:43 +02:00
78fa49ef74 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-07-07 15:46:05 +02:00
d92b154292 frappy_psi.sea: avoid multiple connections
the _connect was sometimes started in parallel from
startModules and the first call to doPoll.
remove the first one, and protect the second one
with a lock

Change-Id: I079439e150efd5d005130cef475f6326f933ecbd
2023-07-07 15:40:20 +02:00
073fe1a08b frappy.io: make error reporting consistent
- fix mechanism to avoid multiple error messages in log files

Change-Id: I688071f9b06da1a81eb12d63adb549042171c7c8
2023-07-07 15:40:20 +02:00
f80c793cd9 consmetic changes to ma6_sample_heat_cfg.py 2023-07-06 14:49:06 +02:00
519e9e2ed7 MA6: set om.encoder_mode to 'NO' 2023-07-06 14:48:09 +02:00
14036160f7 add special configurations m6/ma7 sampleheat 2023-07-06 13:06:06 +02:00
131dc60807 MA7/MA11: make ts drivable 2023-07-06 13:04:36 +02:00
49722a858f update haake + eurotherm cfg 2023-07-06 13:04:11 +02:00
c61b674382 disable encoder for MA11 stick rotation 2023-07-06 12:57:07 +02:00
091543be56 add FW (old power rack, via SEA) 2023-07-06 12:53:19 +02:00
d2885bdd72 revert commits done before MZ holidays
they are all not neccessary for SINQ SE operation

Change-Id: Ic9adcccf685752ab90bb6b86005ac8e04b302855
2023-07-06 08:03:15 +02:00
975593dd6b update to gerrit version
Change-Id: Ifdaa28dd961a529cd9197c4c3639744f108b0a6a
2023-07-05 17:33:05 +02:00
Alexander Zaft
4fe28363d3 server: add option to dynamically create devices
add module which scans a connection and registers new devices depending
on the answer.
* change module initialization to demand-based
* move code from server to dispatcher
- remove intermediate step in Attached __get__

TODO:
  factor out dispatcher (regards to playground)
  discuss factoring out of module creation code from server AND
  dispatcher

Change-Id: I7af959b99a84c291c526aac067a4e2bf3cd741d4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31470
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-07-05 17:16:41 +02:00
28b19dbf57 frappy_psi.thermofisher: add version through gerrit
Change-Id: I4b89d6ec803ad64c41720bc62493d2e4027df50e
2023-07-05 17:14:07 +02:00
05189d094a add StructParam
adds a generic solution for creating parameters with struct datatype
with their members linked to individual parameters.

main use case: ctrlpars

read_*/write_* methods are either created for the main (structed)
parameter based on the corresponding methods of the individual
parameters or the methods for the individual parameters are created
based on the methods of the main parameter

+ disable pylint use-dict-literal

Change-Id: I7f1d9fb3d3b2226b548c2999bbfebe2ba5ac285e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31405
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-07-05 17:12:12 +02:00
47da14eef9 pylint: disable use-dict-literal
sometimes it is nicer to use dict(...) instead of {}
an objections against removing this check from pylint?

Change-Id: Ib08d3016b7ec3512111021a82685253cdcd42916
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31505
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-07-05 17:11:40 +02:00
Alexander Zaft
7904f243cb server: add option to dynamically create devices
add module which scans a connection and registers new devices depending
on the answer.
* change module initialization to demand-based
* move code from server to dispatcher
- remove intermediate step in Attached __get__

TODO:
  factor out dispatcher (regards to playground)
  discuss factoring out of module creation code from server AND
  dispatcher

Change-Id: I7af959b99a84c291c526aac067a4e2bf3cd741d4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31470
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-07-05 17:10:56 +02:00
a2fed8df03 pylint: disable use-dict-literal
sometimes it is nicer to use dict(...) instead of {}
an objections against removing this check from pylint?

Change-Id: Ib08d3016b7ec3512111021a82685253cdcd42916
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31505
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-07-05 17:08:48 +02:00
19f965bced Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-07-03 17:51:43 +02:00
3e4ea2515e add ma15 cfg 2023-07-03 17:51:28 +02:00
714c820115 fixes in ori3 and dil5 config 2023-07-03 17:49:06 +02:00
a8e1d0e1e8 frappy_psi.sea: try to reconnect on failure
both .asynio and .syncio connection should be tried to reopen.
(fix from mlz gerrit)

Change-Id: I0da5bd9927865a1c55afb93a7a5b76c44fc8750e
2023-06-29 11:28:04 +02:00
l_samenv
d7a1604bd5 frappy_psi.sea: auto connect
on both .ssynio and /syncio try to reconnect after failure
2023-06-26 14:45:53 +02:00
b92095974b camea filter addon
Change-Id: I1d80aa3bfc4e441ad8a69930b81d6cc25cee9511
2023-06-20 11:05:15 +02:00
Alexander Zaft
8dc9c57e9d entangle: fix tango guards for pytango 9.3
Change-Id: I666969f9c798971d5cd8a0c2f6564067ac3cde72
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31327
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2023-06-20 09:00:42 +02:00
Alexander Zaft
7c95f1f8ee config: fix merge_modules
Change-Id: I31d05afe300443e08fb08f9e6645401f52cfae39
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31323
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-06-20 08:05:55 +02:00
3786d2f209 frappy_psi.triton: fix HeaterOutput.limit
+ fix handling of control_active

Change-Id: Ic11933f6c1c4d9df07aa9d06ae4dca40b755e4ed
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31377
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
138b84e84c add a hook for reads to be done initially
inital reads from HW should be done in the thread started by
startModule, not in startModule itself.

- add a hook method 'initialReads' for this
+ add doc for init methods
+ fix some errors in doc

Change-Id: I914e3b7ee05050eea1ee8aff3461030adf08a461
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31374
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
997e8e26e9 frappy_psi.mercury: proper handling of control_active
Change-Id: I31e846fa6fdf6d642184e3736a66ffd53033bccf
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31376
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
644d005dad frappy.mixins.HasOutputModule
add 'set_control_active' method for overriding by subclasses

Change-Id: Ib344319862a4a0bf29efef16a63db09d1f314a82
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31375
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
36dfe968e8 frappy_psi.phytron: rename reset_error to clear_errors
use the command 'clear_errors' to return from an error state

+ make sure target is valid after clear_errors

Change-Id: I3c180500a05836d52bbb9a8ecbdb397adea03d0d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31337
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
0932228596 frappy_psi.mercury/triton: add control_off command
frappy_psi.triton.TemperatureLoop has not output module to
deactivate control -> add control_off also to loops in
frappy_psi.mercury

Change-Id: I4dc4333134da34a8d3ae0f3c037a1e5b108c95a1
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31341
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
Alexander Zaft
dff0c819de io: followup fix for retry-first-ident
followup fix: no error was raised ever for the first identification
message.

Change-Id: I80f0f431add6dfd7b37d750b9fc661174aa8f217
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31318
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-06-20 08:02:13 +02:00
Alexander Zaft
fd917724d8 io: add option to retry first ident request
Change-Id: I524c15387eaf2461e3dfe690250a55f058467b0b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31291
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Bjoern Pedersen <bjoern.pedersen@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-06-20 08:02:02 +02:00
bf43858031 GUI bugfix: use isChecked instead of checkState in BoolInput
Change-Id: I4896df13c117c6eeaaaaba80ca3da4b1982c3d9b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31346
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-16 11:09:27 +02:00
f354b19cf0 frappy_psi.sea: fix extra_module_set
Change-Id: If5669fdd60c8505a47414f17cfcd8534cdc2abee
2023-06-06 16:50:48 +02:00
f304ac019e fix cfg files (extra_modules/single_module)
Change-Id: I1821e1e0dc960d48a3e343c53195808798b7f969
2023-06-06 16:49:54 +02:00
9a9a22588f Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-06-06 16:46:31 +02:00
3e26dd49d0 jtccr: fix cfg for extra_modules / single_module 2023-06-06 16:45:31 +02:00
5a456a82b0 fix enum when SEA type is text
Change-Id: I873045a2dac8771b844431ccda70ce1b8ff1aee5
2023-06-05 13:56:00 +02:00
f6868da3b9 fix systemd bug
Change-Id: I8a3f1eddba9525589757d4612a5060267ea0c5db
2023-06-05 13:56:00 +02:00
ee31f8fb45 fix merge_status in HasConvergence 2023-06-05 13:03:38 +02:00
a6a3f80e30 remove sign=-1 from cfg files 2023-06-05 13:02:40 +02:00
ad36ab1067 frappy_psi.thermofisher improvements
- merge Loop with Sensor
- make convergence work

Change-Id: Iba0cafc524ada6d490b7a5c30f4127e77fd163f3
2023-06-05 09:50:35 +02:00
f2d795cfba frappy_psi.convergence: improvments
- merge_status
- empty string instead of 'approaching'
- dif <= tol

Change-Id: I6f10875f7ef5d2109c13d7448ede114b8e30d86e
2023-06-05 09:47:08 +02:00
c04337c3a4 frappy.client: missing exception method in dummy logger
Change-Id: Ie3a574c3060f2ac6833ff44e8074a19db6ea2f0b
2023-06-05 09:45:04 +02:00
57d5298c92 remove secop-server.spec
Change-Id: I8097a2918bc4e786bd270aeb436efebe9a3bd88f
2023-05-31 14:32:04 +02:00
9a6421a54f up to date with develop/mlz
Change-Id: I5ea71bc99a2f0dffc3dbe37e1119eb188ef8a3f0
2023-05-31 14:27:36 +02:00
c5d429346d update 2023-05-30 from gitmlz
Change-Id: I0b1eb2941692fde5c9d98f107fc38315625dcfdb
2023-05-31 14:16:12 +02:00
404 changed files with 25138 additions and 6268 deletions

View File

@ -9,7 +9,7 @@
# Add <file or directory> to the black list. It should be a base name, not a # Add <file or directory> to the black list. It should be a base name, not a
# path. You may set this option multiple times. # path. You may set this option multiple times.
ignore = .git ignore = .git,resources_qt5.py,resources_qt6.py
# Pickle collected data for later comparisons. # Pickle collected data for later comparisons.
persistent=yes persistent=yes
@ -38,26 +38,23 @@ confidence=
# multiple time. # multiple time.
disable=missing-docstring disable=missing-docstring
,locally-disabled ,locally-disabled
,locally-enabled
,fixme ,fixme
,no-member ,no-member
,bad-whitespace ,not-callable
,wrong-import-position ,wrong-import-position
,ungrouped-imports ,ungrouped-imports
,import-self ,import-self
,bad-continuation
,protected-access ,protected-access
,unused-argument ,unused-argument
,duplicate-code ,duplicate-code
,attribute-defined-outside-init ,attribute-defined-outside-init
,access-member-before-definition ,access-member-before-definition
,no-self-use
,broad-except ,broad-except
,unneeded-not ,unneeded-not
,unidiomatic-typecheck ,unidiomatic-typecheck
,undefined-loop-variable ,undefined-loop-variable
,redefined-variable-type ,consider-using-f-string
,deprecated-lambda ,use-dict-literal
[REPORTS] [REPORTS]
@ -67,10 +64,6 @@ disable=missing-docstring
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg} msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
# Put messages in a separate file for each module / package specified on the
# command line instead of printing them on stdout. Reports (if any) will be
# written in a file name "pylint_global.[txt|html]".
files-output=no
# Tells whether to display a full report or only the messages # Tells whether to display a full report or only the messages
reports=no reports=no
@ -93,14 +86,11 @@ dummy-variables-rgx=_|dummy
# List of additional names supposed to be defined in builtins. Remember that # List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible. # you should avoid to define new builtins when possible.
additional-builtins= additional-builtins=Node,Mod,Param,Command,Group
[BASIC] [BASIC]
# List of builtins function names that should not be used, separated by a comma
#bad-functions=map,filter,apply,input
bad-functions=apply,input
# Regular expression which should only match correct module names # Regular expression which should only match correct module names
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9_]+))$ module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9_]+))$
@ -155,12 +145,6 @@ notes=FIXME,XXX,TODO
# Maximum number of characters on a single line. # Maximum number of characters on a single line.
max-line-length=132 max-line-length=132
# List of optional constructs for which whitespace checking is disabled. `dict-
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
# `empty-line` allows space-only lines.
no-space-check=trailing-comma,dict-separator
# Maximum number of lines in a module # Maximum number of lines in a module
max-module-lines=1000 max-module-lines=1000
@ -220,6 +204,9 @@ max-statements=150
# Maximum number of parents for a class (see R0901). # Maximum number of parents for a class (see R0901).
max-parents=20 max-parents=20
# Maximum number of positional arguments
max-positional-arguments=10
# Maximum number of attributes for a class (see R0902). # Maximum number of attributes for a class (see R0902).
max-attributes=50 max-attributes=50

View File

@ -60,4 +60,3 @@ changes are done, eventually a sync step should happen:
cp -r secop /Volumes/PPMSData/zolliker/frappy/secop cp -r secop /Volumes/PPMSData/zolliker/frappy/secop
it may be that additional folder have to copied ... it may be that additional folder have to copied ...

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
# pylint: disable=invalid-name # pylint: disable=invalid-name
# -*- coding: utf-8 -*-
# ***************************************************************************** # *****************************************************************************
# Copyright (c) 2015-2024 by the authors, see LICENSE
# #
# This program is free software; you can redistribute it and/or modify it under # This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software # the terms of the GNU General Public License as published by the Free Software

View File

@ -1,7 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
# ***************************************************************************** # *****************************************************************************
# Copyright (c) 2015-2016 by the authors, see LICENSE # Copyright (c) 2015-2024 by the authors, see LICENSE
# #
# This program is free software; you can redistribute it and/or modify it under # This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software # the terms of the GNU General Public License as published by the Free Software
@ -25,10 +24,10 @@
import sys import sys
import argparse import argparse
from os import path from pathlib import Path
# Add import path for inplace usage # Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..'))) sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.client.interactive import init, run, clientenv, interact from frappy.client.interactive import init, run, clientenv, interact
@ -37,7 +36,7 @@ def parseArgv(argv):
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('-i', '--include', parser.add_argument('-i', '--include',
help='file to execute after connecting to the clients', metavar='file', help='file to execute after connecting to the clients', metavar='file',
type=str, action='append', default=[]) type=Path, action='append', default=[])
parser.add_argument('-o', '--only-execute', parser.add_argument('-o', '--only-execute',
help='Do not go into interactive mode after executing files. \ help='Do not go into interactive mode after executing files. \
Has no effect without --include.', action='store_true') Has no effect without --include.', action='store_true')

View File

@ -1,8 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# pylint: disable=invalid-name # pylint: disable=invalid-name
# -*- coding: utf-8 -*-
# ***************************************************************************** # *****************************************************************************
# Copyright (c) 2015-2016 by the authors, see LICENSE # Copyright (c) 2015-2024 by the authors, see LICENSE
# #
# This program is free software; you can redistribute it and/or modify it under # This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software # the terms of the GNU General Public License as published by the Free Software
@ -27,10 +26,10 @@ from __future__ import print_function
import sys import sys
import argparse import argparse
from os import path from pathlib import Path
# Add import path for inplace usage # Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..'))) sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
import logging import logging
from mlzlog import ColoredConsoleHandler from mlzlog import ColoredConsoleHandler
@ -47,8 +46,11 @@ def parseArgv(argv):
loggroup.add_argument('-q', '--quiet', loggroup.add_argument('-q', '--quiet',
help='Supress everything but errors', help='Supress everything but errors',
action='store_true', default=False) action='store_true', default=False)
parser.add_argument('-D', '--detailed',
help='Start in detailed mode',
action='store_true', default=False)
parser.add_argument('node', parser.add_argument('node',
help='Nodes the Gui should connect to.\n', metavar='host[:port]', help='Nodes the GUI should connect to.\n', metavar='host[:port]',
nargs='*', type=str, default=[]) nargs='*', type=str, default=[])
return parser.parse_args(argv) return parser.parse_args(argv)
@ -62,13 +64,14 @@ def main(argv=None):
loglevel = logging.DEBUG if args.debug else (logging.ERROR if args.quiet else logging.INFO) loglevel = logging.DEBUG if args.debug else (logging.ERROR if args.quiet else logging.INFO)
logger = logging.getLogger('gui') logger = logging.getLogger('gui')
logger.setLevel(logging.DEBUG) logger.setLevel(logging.DEBUG)
console = ColoredConsoleHandler() if sys.stdout is not None:
console.setLevel(loglevel) console = ColoredConsoleHandler()
logger.addHandler(console) console.setLevel(loglevel)
logger.addHandler(console)
app = QApplication(argv) app = QApplication(argv, organizationName='frappy', applicationName='frappy_gui')
win = MainWindow(args.node, logger) win = MainWindow(args, logger)
app.aboutToQuit.connect(win._onQuit) app.aboutToQuit.connect(win._onQuit)
win.show() win.show()

View File

@ -1,7 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
# ***************************************************************************** # *****************************************************************************
# Copyright (c) 2015-2016 by the authors, see LICENSE # Copyright (c) 2015-2024 by the authors, see LICENSE
# #
# This program is free software; you can redistribute it and/or modify it under # This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software # the terms of the GNU General Public License as published by the Free Software
@ -23,14 +22,18 @@
# ***************************************************************************** # *****************************************************************************
import sys import sys
from os import path from pathlib import Path
from frappy.lib import generalConfig
from frappy.logging import logger
# Add import path for inplace usage # Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..'))) sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.client.interactive import Console from frappy.client.interactive import Console
from frappy.playground import play, USAGE from frappy.playground import play, USAGE
generalConfig.init()
logger.init()
if len(sys.argv) > 1: if len(sys.argv) > 1:
play(sys.argv[1]) play(sys.argv[1])
else: else:

139
bin/frappy-scan Executable file
View File

@ -0,0 +1,139 @@
#!/usr/bin/env python3
# *****************************************************************************
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Alexander Zaft <a.zaft@fz-juelich.de>
#
# *****************************************************************************
"""SEC node autodiscovery tool."""
import argparse
import json
import os
import select
import socket
import sys
from collections import namedtuple
from time import time as currenttime
UDP_PORT = 10767
Answer = namedtuple('Answer',
'address, port, equipment_id, firmware, description')
def decode(msg, addr):
msg = msg.decode('utf-8')
try:
data = json.loads(msg)
except Exception:
return None
if not isinstance(data, dict):
return None
if data.get('SECoP') != 'node':
return None
try:
eq_id = data['equipment_id']
fw = data['firmware']
desc = data['description']
port = data['port']
except KeyError:
return None
addr, _scanport = addr
return Answer(addr, port, eq_id, fw, desc)
def print_answer(answer, *, short=False):
try:
hostname = socket.gethostbyaddr(answer.address)[0]
address = hostname
numeric = f' ({answer.address})'
except Exception:
address = answer.address
numeric = ''
if short:
# NOTE: keep this easily parseable!
print(f'{answer.equipment_id} {address}:{answer.port}')
return
print(f'Found {answer.equipment_id} at {address}{numeric}:')
print(f' Port: {answer.port}')
print(f' Firmware: {answer.firmware}')
desc = answer.description.replace('\n', '\n ')
print(f' Node description: {desc}')
print('-' * 80)
def scan(max_wait=1.0):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
# send a general broadcast
try:
s.sendto(json.dumps(dict(SECoP='discover')).encode('utf-8'),
('255.255.255.255', UDP_PORT))
except OSError as e:
print('could not send the broadcast:', e)
# we still keep listening for self-announcements
start = currenttime()
seen = set()
while currenttime() < start + max_wait:
res = select.select([s], [], [], 0.1)
if res[0]:
try:
msg, addr = s.recvfrom(1024)
except socket.error: # pragma: no cover
continue
answer = decode(msg, addr)
if answer is None:
continue
if (answer.address, answer.equipment_id, answer.port) in seen:
continue
seen.add((answer.address, answer.equipment_id, answer.port))
yield answer
def listen(*, short=False):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
if os.name == 'nt':
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
else:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
s.bind(('0.0.0.0', UDP_PORT))
while True:
try:
msg, addr = s.recvfrom(1024)
except KeyboardInterrupt:
break
answer = decode(msg, addr)
if answer:
print_answer(answer, short=short)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-l', '--listen', action='store_true',
help='Keep listening after the broadcast.')
parser.add_argument('-s', '--short', action='store_true',
help='Print short info (always on when listen).')
args = parser.parse_args(sys.argv[1:])
short = args.listen or args.short
if not short:
print('-' * 80)
for answer in scan():
print_answer(answer, short=short)
if args.listen:
listen(short=short)

View File

@ -1,6 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# pylint: disable=invalid-name # pylint: disable=invalid-name
# -*- coding: utf-8 -*-
# ***************************************************************************** # *****************************************************************************
# #
# This program is free software; you can redistribute it and/or modify it under # This program is free software; you can redistribute it and/or modify it under
@ -23,12 +22,12 @@
# #
# ***************************************************************************** # *****************************************************************************
import sys
import argparse import argparse
from os import path import sys
from pathlib import Path
# Add import path for inplace usage # Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..'))) sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.lib import generalConfig from frappy.lib import generalConfig
from frappy.logging import logger from frappy.logging import logger
@ -36,7 +35,15 @@ from frappy.server import Server
def parseArgv(argv): def parseArgv(argv):
parser = argparse.ArgumentParser(description="Manage a SECoP server") parser = argparse.ArgumentParser(
description="Manage a SECoP server",
epilog="""The server needs some configuration, by default from the
generalConfig.cfg file. the keys confdir, logdir and piddir have to
be set.
Alternatively, one can set the environment variables FRAPPY_CONFDIR
FRAPPY_LOGDIR and FRAPPY_PIDDIR to set the required values.
"""
)
loggroup = parser.add_mutually_exclusive_group() loggroup = parser.add_mutually_exclusive_group()
loggroup.add_argument("-v", "--verbose", loggroup.add_argument("-v", "--verbose",
help="Output lots of diagnostic information", help="Output lots of diagnostic information",
@ -61,8 +68,9 @@ def parseArgv(argv):
action='store', action='store',
help="comma separated list of cfg files,\n" help="comma separated list of cfg files,\n"
"defaults to <name_of_the_instance>.\n" "defaults to <name_of_the_instance>.\n"
"cfgfiles given without '.cfg' extension are searched in the configuration directory, " "If a config file contains a slash, it is treated as a"
"else they are treated as path names", "path, otherwise the file is searched for in the "
"configuration directory.",
default=None) default=None)
parser.add_argument('-g', parser.add_argument('-g',
'--gencfg', '--gencfg',
@ -96,15 +104,15 @@ def main(argv=None):
generalConfig.init(args.gencfg) generalConfig.init(args.gencfg)
logger.init(loglevel) logger.init(loglevel)
srv = Server(args.name, logger.log, cfgfiles=args.cfgfiles, interface=args.port, testonly=args.test) cfgfiles = [s.strip() for s in args.cfgfiles.split(',')] if args.cfgfiles else None
srv = Server(args.name, logger.log, cfgfiles=cfgfiles,
interface=args.port, testonly=args.test)
if args.daemonize: if args.daemonize:
srv.start() srv.start()
else: else:
try: srv.run()
srv.run()
except KeyboardInterrupt:
pass
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -1,64 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# *****************************************************************************
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
#
# *****************************************************************************
import os
from os import path
import markdown
BASE_PATH = path.abspath(path.join(path.dirname(__file__), '..'))
DOC_SRC = path.join(BASE_PATH, 'doc')
DOC_DST = path.join(BASE_PATH, 'html')
conv = markdown.Markdown()
for dirpath, dirnames, filenames in os.walk(DOC_SRC):
# re-create the dir-structure of DOC_SRC into DOC_DST
dst_path = path.join(DOC_DST, path.relpath(dirpath, DOC_SRC))
try:
os.mkdir(dst_path)
except OSError:
pass
for fn in filenames:
full_name = path.join(dirpath, fn)
sub_name = path.relpath(full_name, DOC_SRC)
final_name = path.join(DOC_DST, sub_name)
if not fn.endswith('md'):
# just copy everything else
with open(full_name, 'rb') as fi:
with open(final_name, 'wb') as fo:
# WARNING: possible Memory hog!
fo.write(fi.read())
continue
# treat .md files special
final_sub_name = path.splitext(sub_name)[0] + '.html'
final_name = path.join(DOC_DST, final_sub_name)
print("Converting %s to %s" %(sub_name, final_sub_name))
# transform one file
conv.reset()
conv.convertFile(input=full_name,
output=final_name,
encoding="utf-8")

50
bin/peus-plot Executable file
View File

@ -0,0 +1,50 @@
#!/usr/bin/env python3
import sys
from pathlib import Path
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.client.interactive import Client
from frappy_psi.iqplot import Plot
import numpy as np
import matplotlib.pyplot as plt
if len(sys.argv) < 2:
print('Usage: peus-plot <maxY>')
def get_modules(name):
return list(filter(None, (globals().get(name % i) for i in range(10))))
secnode = Client('pc13252:5000')
time_size = {'time', 'size'}
int_mods = [u] + get_modules('roi%d')
t_rois = get_modules('roi%d')
i_rois = get_modules('roi%di')
q_rois = get_modules('roi%dq')
if len(sys.argv) > 1:
maxy = float(sys.argv[1])
else:
maxy = 0.02
iqplot = Plot(maxy)
for i in range(99):
pass
try:
while True:
curves = np.array(u.get_curves())
iqplot.plot(curves,
rois=[(r.time - r.size * 0.5, r.time + r.size * 0.5) for r in int_mods],
average=([r.time for r in t_rois],
[r.value for r in i_rois],
[r.value for r in q_rois]))
if not iqplot.pause(0.5):
break
except KeyboardInterrupt:
iqplot.close()

View File

@ -1,6 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# pylint: disable=invalid-name # pylint: disable=invalid-name
# -*- coding: utf-8 -*-
# ***************************************************************************** # *****************************************************************************
# This program is free software; you can redistribute it and/or modify it under # This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software # the terms of the GNU General Public License as published by the Free Software
@ -23,114 +22,42 @@
Usage: Usage:
bin/stringio-server <communciator> <server port> bin/sim-server <communicator class> -p <server port> [-o <option1>=<value> <option2>=<value>]
open a server on <server port> to communicate with the string based <communicator> over TCP/IP. open a server on <server port> to communicate with the string based <communicator> over TCP/IP.
Use cases, mainly for test purposes: Use cases, mainly for test purposes:
- as a T, if the hardware allows only one connection, and more than one is needed
- relay to a communicator not using TCP/IP, if Frappy should run on an other host
- relay to a hardware simulation written as a communicator - relay to a hardware simulation written as a communicator
> bin/sim-server frappy_psi.ls370sim.Ls370Sim
- relay to a communicator not using TCP/IP, if Frappy should run on an other host
> bin/sim-server frappy.io.StringIO -o uri=serial:///dev/tty...
- as a T, if the hardware allows only one connection, and more than one is needed:
> bin/sim-server frappy.io.StringIO -o uri=tcp://<host>:<port>
typically using communicator class frappy.io.StringIO
""" """
import sys import sys
import argparse import argparse
from os import path from pathlib import Path
import asyncore
import socket import socket
import time import time
import os
from ast import literal_eval
from socketserver import BaseRequestHandler, ThreadingTCPServer
# Add import path for inplace usage # Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..'))) sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.lib import get_class, formatException, mkthread from frappy.lib import get_class, formatException, mkthread
class LineHandler(asyncore.dispatcher_with_send):
def __init__(self, sock):
self.buffer = b""
asyncore.dispatcher_with_send.__init__(self, sock)
self.crlf = 0
def handle_line(self, line):
raise NotImplementedError
def handle_read(self):
data = self.recv(8192)
if data:
parts = data.split(b"\n")
if len(parts) == 1:
self.buffer += data
else:
self.handle_line((self.buffer + parts[0]).decode('latin_1'))
for part in parts[1:-1]:
if part[-1] == b"\r":
self.crlf = True
part = part[:-1]
else:
self.crlf = False
self.handle_line(part.decode('latin_1'))
self.buffer = parts[-1]
def send_line(self, line):
self.send((line + ("\r\n" if self.crlf else "\n")).encode('latin_1'))
class LineServer(asyncore.dispatcher):
def __init__(self, port, line_handler_cls, handler_args):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind(('0.0.0.0', port))
self.listen(5)
print('accept connections at port', port)
self.line_handler_cls = line_handler_cls
self.handler_args = handler_args
def handle_accept(self):
pair = self.accept()
if pair is not None:
sock, addr = pair
print("Incoming connection from %s" % repr(addr))
self.line_handler_cls(sock, self.handler_args)
def loop(self):
asyncore.loop()
class Server(LineServer):
class Dispatcher:
def announce_update(self, *_):
pass
def announce_update_error(self, *_):
pass
def __init__(self, *args, **kwds):
super().__init__(*args, **kwds)
self.dispatcher = self.Dispatcher()
class Handler(LineHandler):
def __init__(self, sock, handler_args):
super().__init__(sock)
self.module = handler_args['module']
self.verbose = handler_args['verbose']
def handle_line(self, line):
try:
reply = self.module.communicate(line.strip())
if self.verbose:
print('%-40s | %s' % (line, reply))
except Exception:
print(formatException(verbose=True))
return
self.send_line(reply)
class Logger: class Logger:
def debug(self, *args): def debug(self, *args):
pass pass
@ -144,43 +71,126 @@ class Logger:
exception = error = warn = info exception = error = warn = info
class TcpRequestHandler(BaseRequestHandler):
def setup(self):
print(f'connection opened from {self.client_address}')
self.running = True
self.request.settimeout(1)
self.data = b''
def finish(self):
"""called when handle() terminates, i.e. the socket closed"""
# close socket
try:
self.request.shutdown(socket.SHUT_RDWR)
except Exception:
pass
finally:
print(f'connection closed from {self.client_address}')
self.request.close()
def poller(self):
while True:
time.sleep(1.0)
self.module.doPoll()
def handle(self):
"""handle a new connection"""
# do a copy of the options, as they are consumed
self.module = self.server.modulecls(
'mod', Logger(), dict(self.server.options), self.server)
self.module.earlyInit()
mkthread(self.poller)
while self.running:
try:
newdata = self.request.recv(1024)
if not newdata:
return
except socket.timeout:
# no new data during read, continue
continue
self.data += newdata
while self.running:
message, sep, self.data = self.data.partition(b'\n')
if not sep:
break
cmd = message.decode('latin-1')
try:
reply = self.module.communicate(cmd.strip())
if self.server.verbose:
print('%-40s | %s' % (cmd, reply))
except Exception:
print(formatException(verbose=True))
return
outdata = reply.encode('latin-1') + b'\n'
try:
self.request.sendall(outdata)
except Exception as e:
print(repr(e))
self.running = False
class Server(ThreadingTCPServer):
allow_reuse_address = os.name != 'nt' # False on Windows systems
class Dispatcher:
def announce_update(self, *_):
pass
def announce_update_error(self, *_):
pass
def __init__(self, port, modulecls, options, verbose=False):
super().__init__(('', port), TcpRequestHandler,
bind_and_activate=True)
self.secnode = None
self.dispatcher = self.Dispatcher()
self.verbose = verbose
self.modulecls = get_class(modulecls)
self.options = options
print(f'started sim-server listening on port {port}')
def parse_argv(argv): def parse_argv(argv):
parser = argparse.ArgumentParser(description="Simulate HW with a serial interface") parser = argparse.ArgumentParser(description="Relay to a communicator (simulated HW or other)")
parser.add_argument("-v", "--verbose", parser.add_argument("-v", "--verbose",
help="output full communication", help="output full communication",
action='store_true', default=False) action='store_true', default=False)
parser.add_argument("cls", parser.add_argument("cls",
type=str, type=str,
help="simulator class.\n",) help="communicator class.\n",)
parser.add_argument('-p', parser.add_argument('-p',
'--port', '--port',
action='store', action='store',
help='server port or uri', help='server port or uri',
default=2089) default=2089)
parser.add_argument('-o',
'--options',
action='store',
nargs='*',
help='options in the form key=value',
default=None)
return parser.parse_args(argv) return parser.parse_args(argv)
def poller(pollfunc):
while True:
time.sleep(1.0)
pollfunc()
def main(argv=None): def main(argv=None):
if argv is None: if argv is None:
argv = sys.argv argv = sys.argv
args = parse_argv(argv[1:]) args = parse_argv(argv[1:])
options = {'description': ''}
opts = {'description': 'simulator'} for item in args.options or ():
key, eq, value = item.partition('=')
handler_args = {'verbose': args.verbose} if not eq:
srv = Server(int(args.port), Handler, handler_args) raise ValueError(f"missing '=' in {item}")
module = get_class(args.cls)(args.cls, Logger(), opts, srv) try:
handler_args['module'] = module value = literal_eval(value)
module.earlyInit() except Exception:
mkthread(poller, module.doPoll) pass
srv.loop() options[key] = value
srv = Server(int(args.port), args.cls, options, args.verbose)
srv.serve_forever()
if __name__ == '__main__': if __name__ == '__main__':

65
bin/us-plot Executable file
View File

@ -0,0 +1,65 @@
#!/usr/bin/env python3
import sys
from pathlib import Path
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.client.interactive import Client
import numpy as np
import matplotlib.pyplot as plt
from frappy_psi.iqplot import Pause
if len(sys.argv) < 2:
print("""
Usage:
us-plot <end> [<start> [<npoints>]]
end: end of window [ns]
start: start of window [n2], default: 0
npoints: number fo points (default 1000)
""")
sys.exit(0)
Client('pc13252:5000')
def plot(array, ax, style, xs):
xaxis = np.arange(len(array)) * xs
return ax.plot(xaxis, array, style)[0]
def update(array, line, xs):
xaxis = np.arange(len(array)) * xs
line.set_data(np.array([xaxis, array]))
def on_close(event):
sys.exit(0)
start = 0
end = float(sys.argv[1])
npoints = 1000
if len(sys.argv) > 2:
start = float(sys.argv[2])
if len(sys.argv) > 3:
npoints = float(sys.argv[3])
fig, ax = plt.subplots(figsize=(15,3))
pause = Pause(fig)
try:
get_signal = iq.get_signal
print('plotting RUS signal')
except NameError:
get_signal = u.get_signal
print('plotting PE signal')
xs, signal = get_signal(start, end, npoints)
lines = [plot(s, ax, '-', xs) for s in signal]
while pause(0.5):
plt.draw()
xs, signal = get_signal(start, end, npoints)
for line, sig in zip(lines, signal):
update(sig, line, xs)

22
calibtest.py Normal file
View File

@ -0,0 +1,22 @@
import sys
import os
from glob import glob
from frappy_psi.calcurve import CalCurve
os.chdir('/Users/zolliker/gitpsi/calcurves')
if len(sys.argv) > 1:
calib = sys.argv[1]
c = CalCurve(calib)
else:
for file in sorted(glob('*.*')):
if file.endswith('.md') or file.endswith('.std'):
continue
try:
c = CalCurve(file)
xy = c.export()
print('%9.4g %12.7g %9.4g %9.4g %s' % (tuple(c.extx) + tuple(c.exty) + (file,)))
except Exception as e:
print(file, e)
calib = file

87
cfg/PEUS_cfg.py Normal file
View File

@ -0,0 +1,87 @@
Node('PEUS.psi.ch',
'ultrasound, pulse_echo configuration',
interface='5000',
)
Mod('u',
'frappy_psi.ultrasound.PulseEcho',
'ultrasound acquisition loop',
freq='f',
# pollinterval=0.1,
time=900.0,
size=5000.0,
nr=500,
sr=32768,
bw=1e7,
)
Mod('fio',
'frappy_psi.ultrasound.FreqStringIO', '',
uri='serial:///dev/ttyS1?baudrate=57600',
)
Mod('f',
'frappy_psi.ultrasound.Frequency',
'writable for frequency',
output='R', # L for LF (bnc), R for RF (type N)
io='fio',
amp=0.5, # VPP
)
Mod('fdif',
'frappy_psi.ultrasound.FrequencyDif',
'writable for frequency minus base frequency',
freq='f',
base=41490200.0,
)
# Mod('curves',
# 'frappy_psi.ultrasound.Curves',
# 't, I, Q and pulse arrays for plot',
# )
def roi(name, time, size, components='iqpa', enable=True, control=False, freq=None, **kwds):
description = 'I/Q of region {name}'
if freq:
kwds.update(cls='frappy_psi.ultrasound.ControlRoi',
description=f'{description} as control loop',
freq=freq, **kwds)
else:
kwds.update(cls='frappy_psi.ultrasound.Roi',
description=description, **kwds)
kwds.update({c: name + c for c in components})
Mod(name,
main='u',
time=time,
size=size,
enable=enable,
**kwds,
)
for c in components:
Mod(name + c,
'frappy.modules.Readable',
f'{name}{c} component',
)
# control loop
roi('roi0', 2450, 300, freq='f', maxstep=100000, minstep=4000)
# other rois
roi('roi1', 5950, 300)
roi('roi2', 9475, 300)
roi('roi3', 12900, 300)
#roi('roi4', 400, 30, False)
#roi('roi5', 400, 30, False)
#roi('roi6', 400, 30, False)
#roi('roi7', 400, 30, False)
#roi('roi8', 400, 30, False)
#roi('roi9', 400, 30, False)
Mod('delay',
'frappy_psi.dg645.Delay',
'delay line with 2 channels',
uri='serial:///dev/ttyS2',
on1=1e-09,
on2=1e-09,
off1=4e-07,
off2=6e-07,
)

View File

@ -6,7 +6,7 @@ Node('QnwTC1test.psi.ch',
Mod('io', Mod('io',
'frappy_psi.qnw.QnwIO', 'frappy_psi.qnw.QnwIO',
'connection for Quantum northwest', 'connection for Quantum northwest',
uri='tcp://ldmcc01-ts:3004', uri='tcp://ldm-fi-ts:3001',
) )
Mod('T', Mod('T',

39
cfg/RUS_cfg.py Normal file
View File

@ -0,0 +1,39 @@
Node(equipment_id = 'r_ultrasound.psi.ch',
description = 'resonant ultra sound setup',
interface = 'tcp://5000',
)
Mod('iq',
cls = 'frappy_psi.ultrasound.RUS',
description = 'ultrasound iq mesurement',
imod = 'i',
qmod = 'q',
freq='f',
input_range=10, # VPP
input_delay = 0,
periods = 163,
)
Mod('freqio',
'frappy_psi.ultrasound.FreqStringIO',
' ',
uri = 'serial:///dev/ttyS1?baudrate=57600',
)
Mod('f',
cls = 'frappy_psi.ultrasound.Frequency',
description = 'ultrasound frequency',
io='freqio',
output='L', # L for LF (bnc), R for RF (type N)
target=10000,
)
Mod('i',
cls='frappy.modules.Readable',
description='I component',
)
Mod('q',
cls='frappy.modules.Readable',
description='Q component',
)

View File

@ -6,7 +6,7 @@ Node('TFA10.psi.ch',
Mod('io', Mod('io',
'frappy_psi.thermofisher.ThermFishIO', 'frappy_psi.thermofisher.ThermFishIO',
'connection for ThermoFisher A10', 'connection for ThermoFisher A10',
uri='tcp://ldmse-d910-ts:3001', uri='tcp://ldm-fi-ts:3002',
) )
Mod('T', Mod('T',
@ -14,10 +14,6 @@ Mod('T',
'holder temperature', 'holder temperature',
io='io', io='io',
target=Param(max=100), target=Param(max=100),
) tolerance=0.5,
settling_time=20,
Mod('Th',
'frappy_psi.thermofisher.SensorA10',
'heat exch. temperature',
io='io',
) )

View File

@ -0,0 +1,37 @@
Node('ah2550.addon.sea.psi.ch',
'Andeen Hagerlin 2550 Capacitance Bridge using SEA',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'SEA connection to mbe_ah2550',
config='ah2550.addon',
export=False,
service='addons',
)
Mod('ah',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
sea_object='cap',
extra_modules = ['cap', 'loss']
)
Mod('cap',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='ah.cap',
value=Param(fmtstr='%.12g'),
)
Mod('loss',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='ah.loss',
)
Mod('capslope',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
sea_object='capslope',
)

15
cfg/addons/ah2700_cfg.py Normal file → Executable file
View File

@ -2,8 +2,21 @@ Node('ah2700.frappy.psi.ch',
'Andeen Hagerlin 2700 Capacitance Bridge', 'Andeen Hagerlin 2700 Capacitance Bridge',
) )
Mod('cap_io',
'frappy_psi.ah2700.Ah2700IO',
'',
uri='linse-976d-ts:3006',
)
Mod('cap', Mod('cap',
'frappy_psi.ah2700.Capacitance', 'frappy_psi.ah2700.Capacitance',
'capacitance', 'capacitance',
uri='lollypop-ts:3002', io = 'cap_io',
)
Mod('loss',
'frappy_psi.parmod.Par',
'loss parameter',
read='cap.loss',
unit='deg',
) )

View File

@ -2,6 +2,8 @@ Node('ah2700.addon.sea.psi.ch',
'Andeen Hagerlin 2700 Capacitance Bridge using SEA', 'Andeen Hagerlin 2700 Capacitance Bridge using SEA',
) )
sea_cfg='ah2700.addon'
Mod('sea_addons', Mod('sea_addons',
'frappy_psi.sea.SeaClient', 'frappy_psi.sea.SeaClient',
'SEA connection to mbe_ah2700', 'SEA connection to mbe_ah2700',
@ -10,10 +12,24 @@ Mod('sea_addons',
service='addons', service='addons',
) )
Mod('cap', Mod('ah',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_addons', io='sea_addons',
sea_object='cap', sea_object='cap',
extra_modules = ['cap', 'loss']
)
Mod('cap',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='ah.cap',
value=Param(fmtstr='%.12g'),
)
Mod('loss',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='ah.loss',
) )
Mod('capslope', Mod('capslope',

View File

@ -0,0 +1,49 @@
Node('cfg/sea/camea-be-filter.cfg',
'Camea Be-Filter',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'addons sea connection for camea-be-filter.addon',
config='camea-be-filter.addon',
service='addons',
)
Mod('t_be_filter',
'frappy_psi.sea.SeaReadable',
'Be filter T',
io='sea_addons',
sea_object='t_be_filter',
extra_modules=['a', 'b', 'c', 'd', 'det'],
)
Mod('t_be_fil_top_m',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='t_be_filter.a',
)
Mod('t_be_fil_top_r',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='t_be_filter.b',
)
Mod('t_be_fil_bot_l',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='t_be_filter.c',
)
Mod('t_be_fil_bot_r',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='t_be_filter.d',
)
Mod('t_detector',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='t_be_filter.det',
)

View File

@ -0,0 +1,56 @@
Node('flamesample.psi.ch',
'flame sample thermometers and heater',
interface = 'tcp://5000',
)
Mod('lscio',
'frappy_psi.ls372.StringIO',
'sample channels LS372 io',
uri = 'flamedil-ls.psi.ch:7777',
)
Mod('lsc_channel',
'frappy_psi.ls372.Switcher',
'channel switcher sample ls372',
io='lscio',
value = 3,
)
Mod('ts_low',
'frappy_psi.ls372.TemperatureLoop',
'sample RuOX',
channel = 3,
switcher = 'lsc_channel',
minrange=13,
range=22,
tolerance = 0.1,
vexc = 3,
htrrng=4,
)
Mod('ts_high',
'frappy_psi.ls372.TemperatureLoop',
'sample Cernox',
channel = 1,
switcher = 'lsc_channel',
minrange=11,
vexc = 5,
range=22,
tolerance = 0.1,
htrrng=5,
minheater=5e-4,
)
Mod('ts',
'frappy_psi.parmod.SwitchDriv',
'automatically switching between ts_low and ts_high',
meaning=['temperature', 40],
value=Param(unit='K'),
low='ts_low',
high='ts_high',
#min_high=0.6035,
#max_low=1.6965,
min_high=0.6,
max_low=1.7,
tolerance=0.1,
)

View File

@ -0,0 +1,34 @@
Node('cfg/addons/razorbill.cfg',
'razorbill forwarder',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'SEA stick connection',
config='razorbill.addon',
service='addons',
)
Mod('ts',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
sea_object='tt',
json_file='ori6.config.json',
rel_paths=['ts'],
)
Mod('T_remote',
'frappy.proxy.Proxy',
'dummy (remote) T',
remote_class = 'frappy_psi.dummy.Temp',
uri='razorbill:3000',
module='T',
# export=False,
)
Mod('forwarder',
'frappy_psi.dummy.Forwarder',
'forwarder',
src='ts',
dst='T_remote')

View File

@ -13,4 +13,5 @@ Mod('stickrot',
'stick rotation, typically not used as omega', 'stick rotation, typically not used as omega',
io='stick_io', io='stick_io',
encoder_mode='CHECK', encoder_mode='CHECK',
backlash=-1,
) )

44
cfg/addons/vsource_cfg.py Normal file
View File

@ -0,0 +1,44 @@
Node('k2601b.psi.ch',
'source meter keithley 2601b',
interface='tcp://5000',
)
Mod('vsource_io',
'frappy_psi.k2601b.K2601bIO',
'source meter',
# uri = '129.129.156.90:5025',
uri = "sans-sample-ts:3011"
)
Mod('source',
'frappy_psi.k2601b.SourceMeter'
'',
description = "keithley sourcemeter",
mode = 1,
vlimit = 6.0,
ilimit = 2.,
io = 'vsource_io',
)
Mod('volt',
'frappy_psi.k2601b.Voltage'
'',
description = "Voltage Source",
active = True,
limit = 5.0,
target = 0.0,
sourcemeter = 'source',
io = 'vsource_io',
)
Mod('cur',
'frappy_psi.k2601b.Current'
'',
description = "Current Source",
active = False,
limit = 0.10,
target = 0.0,
sourcemeter = 'source',
io = 'vsource_io',
)

View File

@ -74,10 +74,10 @@ Mod('currentsource',
Mod('mf', Mod('mf',
'frappy_mlz.amagnet.GarfieldMagnet', 'frappy_mlz.amagnet.GarfieldMagnet',
'magnetic field module, handling polarity switching and stuff', 'magnetic field module, handling polarity switching and stuff',
subdev_currentsource = 'currentsource', currentsource = 'currentsource',
subdev_enable = 'enable', enable = 'enable',
subdev_polswitch = 'polarity', polswitch = 'polarity',
subdev_symmetry = 'symmetry', symmetry = 'symmetry',
target = Param(unit='T'), target = Param(unit='T'),
value = Param(unit='T'), value = Param(unit='T'),
userlimits = (-0.35, 0.35), userlimits = (-0.35, 0.35),

19
cfg/attocube_cfg.py Normal file
View File

@ -0,0 +1,19 @@
Node('attocube_test.psi.ch',
'a single attocube axis',
interface='tcp://5000',
)
Mod('r',
'frappy_psi.attocube.Axis',
'ANRv220-F3-02882',
axis = 1,
value = Param(unit='deg'),
tolerance = 0.1,
target_min = 0,
target_max = 360,
steps_fwd = 45,
steps_bwd = 85,
step_mode = True,
# gear = 1.2,
)

View File

@ -41,6 +41,6 @@ Mod('label',
'frappy_demo.modules.Label', 'frappy_demo.modules.Label',
'some label indicating the state of the magnet `mf`.', 'some label indicating the state of the magnet `mf`.',
system = 'Cryomagnet MX15', system = 'Cryomagnet MX15',
subdev_mf = 'mf', mf = 'mf',
subdev_ts = 'ts', ts = 'ts',
) )

231
cfg/dilsc_cfg.py Normal file
View File

@ -0,0 +1,231 @@
Node('cfg/dilsc1.cfg',
'triton test',
interface='5000',
name='dilsc1',
)
Mod('triton',
'frappy_psi.mercury.IO',
'connection to triton software',
uri='tcp://192.168.2.33:33576',
)
Mod('T_mix',
'frappy_psi.triton.TemperatureSensor',
'mix. chamber temperature',
slot='T8',
io='triton',
)
Mod('T_pt2head',
'frappy_psi.triton.TemperatureSensor',
'PTR2 head temperature',
slot='T1',
io='triton',
)
Mod('T_pt2plate',
'frappy_psi.triton.TemperatureSensor',
'PTR2 plate temperature',
slot='T2',
io='triton',
)
Mod('T_still',
'frappy_psi.triton.TemperatureSensor',
'still temperature',
slot='T3',
io='triton',
)
Mod('htr_still',
'frappy_psi.triton.HeaterOutput',
'still heater',
slot='H2',
io='triton',
)
Mod('T_coldpl',
'frappy_psi.triton.TemperatureSensor',
'cold plate temperature',
slot='T4',
io='triton',
)
Mod('T_mixcx',
'frappy_psi.triton.TemperatureSensor',
'mix. chamber cernox',
slot='T5',
io='triton',
)
Mod('T_pt1head',
'frappy_psi.triton.TemperatureSensor',
'PTR1 head temperature',
slot='T6',
io='triton',
)
Mod('T_pt1plate',
'frappy_psi.triton.TemperatureSensor',
'PTR1 plate temperature',
slot='T7',
io='triton',
)
Mod('T_pucksensor',
'frappy_psi.triton.TemperatureLoop',
'puck sensor temperature',
output_module='htr_pucksensor',
slot='TA',
io='triton',
)
Mod('htr_pucksensor',
'frappy_psi.triton.HeaterOutputWithRange',
'mix. chamber heater',
slot='H1,TA',
io='triton',
)
Mod('T_magnet',
'frappy_psi.triton.TemperatureSensor',
'magnet temperature',
slot='T13',
io='triton',
)
Mod('action',
'frappy_psi.triton.Action',
'higher level scripts',
io='triton',
slot='DR',
)
Mod('p_dump',
'frappy_psi.mercury.PressureSensor',
'dump pressure',
slot='P1',
io='triton',
)
Mod('p_cond',
'frappy_psi.mercury.PressureSensor',
'condenser pressure',
slot='P2',
io='triton',
)
Mod('p_still',
'frappy_psi.mercury.PressureSensor',
'still pressure',
slot='P3',
io='triton',
)
Mod('p_fore',
'frappy_psi.mercury.PressureSensor',
'pressure on the pump side',
slot='P5',
io='triton',
)
Mod('p_back',
'frappy_psi.mercury.PressureSensor',
'pressure on the back side of the pump',
slot='P4',
io='triton',
)
Mod('p_ovc',
'frappy_psi.mercury.PressureSensor',
'outer vacuum pressure',
slot='P6',
io='triton',
)
Mod('V1',
'frappy_psi.triton.Valve',
'valve V1',
slot='V1',
io='triton',
)
Mod('V2',
'frappy_psi.triton.Valve',
'valve V2',
slot='V2',
io='triton',
)
Mod('V4',
'frappy_psi.triton.Valve',
'valve V4',
slot='V4',
io='triton',
)
Mod('V5',
'frappy_psi.triton.Valve',
'valve V5',
slot='V5',
io='triton',
)
Mod('V9',
'frappy_psi.triton.Valve',
'valve V9',
slot='V9',
io='triton',
)
Mod('ips',
'frappy_psi.mercury.IO',
'IPS for magnet',
uri='192.168.127.254:3001',
)
Mod('mf',
'frappy_psi.dilsc.VectorField',
'vector field',
x='mfx',
y='mfy',
z='mfz',
sphere_radius=0.6,
cylinders=((0.23, 5.2), (0.45, 0.8)),
)
Mod('mfx',
'frappy_psi.ips_mercury.SimpleField',
'magnetic field, x-axis',
slot='GRPX',
io='ips',
tolerance=0.0001,
wait_stable_field=0.0,
nunits=2,
target=Param(max=0.6),
ramp=0.225,
)
Mod('mfy',
'frappy_psi.ips_mercury.SimpleField',
'magnetic field, y axis',
slot='GRPY',
io='ips',
tolerance=0.0001,
wait_stable_field=0.0,
nunits=2,
target=Param(max=0.6),
ramp=0.225,
)
Mod('mfz',
'frappy_psi.ips_mercury.Field',
'magnetic field, z-axis',
slot='GRPZ',
io='ips',
tolerance=0.0001,
target=Param(max=5.2),
mode='DRIVEN',
ramp=0.52,
)

27
cfg/drums_cfg.py Normal file
View File

@ -0,0 +1,27 @@
Node('relais.psi.ch',
'relais test',
'tcp://5000',
)
Mod('rl',
'frappy_psi.ionopimax.DigitalOutput',
'left relais',
addr = 'o1',
value = 0, # start with relais off
)
Mod('rr',
'frappy_psi.ionopimax.DigitalOutput',
'right relais',
addr = 'o2',
value = 0, # start with relais off
)
Mod('drummer',
'frappy_psi.drums.Drums',
'drummer',
target = 150,
pattern='l2L2rl1R1L2',
left='rl',
right='rr',
)

52
cfg/flowsas_cfg.py Normal file
View File

@ -0,0 +1,52 @@
Node('flowsas.psi.ch',
'flowsas test motors',
'tcp://5000',
)
#Mod('mot_io',
# 'frappy_psi.phytron.PhytronIO',
# 'io for motor control',
# uri = 'serial:///dev/ttyUSB0',
# )
#Mod('hmot',
# 'frappy_psi.phytron.Motor',
# 'horizontal axis',
# axis = 'X',
# io = 'mot_io',
# encoder_mode= 'NO',
# )
#Mod('vmot',
# 'frappy_psi.phytron.Motor',
# 'vertical axis',
# axis = 'Y',
# io = 'mot_io',
# encoder_mode= 'NO',
# )
Mod('syr_io',
'frappy_psi.cetoni_pump.LabCannBus',
'Module for bus',
deviceconfig = "/home/l_samenv/frappy/cetoniSDK/CETONI_SDK_Raspi_64bit_v20220627/config/dual_pumps",
)
Mod('syr1',
'frappy_psi.cetoni_pump.SyringePump',
'First syringe pump',
io='syr_io',
pump_name = "Nemesys_S_1_Pump",
valve_name = "Nemesys_S_1_Valve",
inner_diameter_set = 10,
piston_stroke_set = 60,
)
Mod('syr2',
'frappy_psi.cetoni_pump.SyringePump',
'Second syringe pump',
io='syr_io',
pump_name = "Nemesys_S_2_Pump",
valve_name = "Nemesys_S_2_Valve",
inner_diameter_set = 1,
piston_stroke_set = 60,
)

View File

@ -3,3 +3,5 @@
logdir = ./log logdir = ./log
piddir = ./pid piddir = ./pid
confdir = ./cfg confdir = ./cfg
comlog = True

16
cfg/lockin70_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('lockin70test.psi.ch',
'lockin70 test',
'tcp://5000',
)
Mod('io',
'frappy_psi.SR.SR_IO',
'lockin communication',
uri='10105266.psi.ch:50000',
)
Mod('XY',
'frappy_psi.SR.XY70',
'XY channels',
io='io',
)

16
cfg/lockin830_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('lockin830test.psi.ch',
'lockin830 test',
'tcp://5000',
)
Mod('io',
'frappy_psi.SR830.SR830_IO',
'lockin communication',
uri='tcp://linse-976d-ts:3002',
)
Mod('XY',
'frappy_psi.SR830.XY',
'XY channels',
io='io',
)

View File

@ -4,7 +4,13 @@ Node('lockintest.psi.ch',
) )
Mod('io', Mod('io',
'frappy_psi.SR_7270.SR7270', 'frappy_psi.SR.SR_IO',
'lockin communication', 'lockin communication',
uri='10105266.psi.ch:50000', uri='10105266.psi.ch:50000',
) )
Mod('XY',
'frappy_psi.SR.XY',
'XY channels',
io='io',
)

View File

@ -4,33 +4,22 @@ Node('ls340test.psi.ch',
) )
Mod('io', Mod('io',
'frappy_psi.lakeshore.Ls340IO', 'frappy_psi.lakeshore.IO340',
'communication to ls340', 'communication to ls340',
uri='tcp://ldmprep56-ts:3002' uri='tcp://localhost:7777'
) )
Mod('dev',
'frappy_psi.lakeshore.Device340',
'device for calcurve',
io='io',
curve_handling=True,
)
Mod('T', Mod('T',
'frappy_psi.lakeshore.TemperatureLoop340',
'sample temperature',
output_module='Heater',
target=Param(max=470),
io='io',
channel='B'
)
Mod('T_cold_finger',
'frappy_psi.lakeshore.Sensor340', 'frappy_psi.lakeshore.Sensor340',
'cold finger temperature', 'sample temperature',
io='io', # output_module='Heater',
channel='A' device='dev',
) channel='A',
calcurve='x29746',
Mod('Heater',
'frappy_psi.lakeshore.HeaterOutput',
'heater output',
channel='B',
io='io',
resistance=25,
max_power=50,
current=1
) )

View File

@ -11,6 +11,7 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
meaning=['temperature', 20],
io='sea_main', io='sea_main',
sea_object='tt', sea_object='tt',
) )

View File

@ -12,6 +12,7 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature', 20],
sea_object='tt', sea_object='tt',
) )

View File

@ -12,5 +12,6 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature', 20],
sea_object='tt', sea_object='tt',
) )

View File

@ -1,39 +1,40 @@
Node('cfg/main/ccrpe.cfg', Node('ccrpe.config.sea.psi.ch',
'4 K closed cycle cryostat (PE cell)', '''4 K closed cycle cryostat (PE cell)''',
interface='5000',
name='ccrpe',
) )
Mod('sea_main', Mod('sea_main',
'secop_psi.sea.SeaClient', 'frappy_psi.sea.SeaClient',
'main sea connection for ccrpe.config', 'main sea connection for ccrpe.config',
config='ccrpe.config', config = 'ccrpe.config',
service='main', service = 'main',
) )
Mod('tt',
'secop_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='tt',
rel_paths=['.', 'tm'],
)
Mod('ts', Mod('ts',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
rel_paths=['ts', 'set'],
)
Mod('tm',
'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='tt', sea_object='tt',
rel_paths=['ts'], rel_paths=['ts'],
) )
Mod('te', Mod('te',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='tt', sea_object='tt',
rel_paths=['te'], rel_paths=['te'],
) )
Mod('warmup', Mod('warmup',
'secop_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io = 'sea_main',
sea_object='warmup', sea_object = 'warmup',
)
Mod('p',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'p',
) )

View File

@ -1,39 +1,38 @@
Node('cfg/main/ccrpe_lowT.cfg', Node('cfg/main/ccrpe_lowT.cfg',
'4 K closed cycle cryostat (PE cell)', '4 K closed cycle cryostat (PE cell)',
interface='5000',
name='ccrpe_lowT',
) )
Mod('sea_main', Mod('sea_main',
'secop_psi.sea.SeaClient', 'frappy_psi.sea.SeaClient',
'main sea connection for ccrpe_lowT.config', 'main sea connection for ccrpe_lowT.config',
config='ccrpe_lowT.config', config='ccrpe_lowT.config',
service='main', service='main',
) )
Mod('tt', Mod('ts',
'secop_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature', 20],
sea_object='tt', sea_object='tt',
rel_paths=['.', 'tm'], rel_paths=['ts', 'set'],
) )
Mod('ts', Mod('tm',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='tt', sea_object='tt',
rel_paths=['ts'], rel_paths=['tm'],
) )
Mod('te', Mod('te',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='tt', sea_object='tt',
rel_paths=['te'], rel_paths=['te'],
) )
Mod('warmup', Mod('warmup',
'secop_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
sea_object='warmup', sea_object='warmup',
) )

View File

@ -1,6 +1,5 @@
Node('cyrosim.psi.ch', Node('cyrosim.psi.ch',
'cryo simulation (similar ppms simulation)', 'cryo simulation (similar ppms simulation)',
interface='tcp://5000',
) )
Mod('tt', Mod('tt',

View File

@ -12,5 +12,6 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature', 20],
sea_object='tt', sea_object='tt',
) )

View File

@ -12,5 +12,6 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature', 20],
sea_object='tt', sea_object='tt',
) )

View File

@ -11,6 +11,14 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
meaning=['temperature', 20],
io='sea_main', io='sea_main',
sea_object='tt', sea_object='tt',
) )
Mod('th',
'frappy_psi.sea.SeaReadable', 'CTI cold finger temperature',
io='sea_main',
sea_object='tt',
rel_paths = ['te'],
)

16
cfg/main/eurotherm_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('eurotherm.config.sea.psi.ch',
'Eurotherm controller',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for haakeuro.config',
config = 'eurotherm.config',
service = 'main',
)
Mod('te',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
meaning=['temperature', 20],
sea_object = 'te',
meaning=('temperature', 11),
)

View File

@ -12,6 +12,7 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature', 20],
sea_object='tt', sea_object='tt',
) )
@ -25,7 +26,7 @@ Mod('p',
Mod('gasflow', Mod('gasflow',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['p.gasflow'], single_module='p.gasflow',
) )
Mod('vacuumpump', Mod('vacuumpump',
@ -36,7 +37,7 @@ Mod('vacuumpump',
) )
Mod('table', Mod('table',
'frappy_psi.sea.SeaModule', 'frappy_psi.sea.SeaModule', '',
io='sea_main', io='sea_main',
sea_object='table', sea_object='table',
) )

View File

@ -1,7 +1,14 @@
Node('flamemag.psi.ch',
'flame magnet',
interface='tcp://5000',
)
sea_cfg = 'flamemag.config'
Mod('cio', Mod('cio',
'frappy_psi.cryoltd.IO', 'frappy_psi.cryoltd.IO',
'IO to cryo ltd software', 'IO to cryo ltd software',
uri='tcp://flamedil:3128', uri='tcp://flamemag:3128',
) )
Mod('main', Mod('main',
@ -14,6 +21,7 @@ Mod('B',
'frappy_psi.cryoltd.MainField', 'frappy_psi.cryoltd.MainField',
'magnetic field', 'magnetic field',
channel='Main', channel='Main',
main='main',
constraint=80000.0, constraint=80000.0,
target=Param( target=Param(
max=35000.0, max=35000.0,
@ -27,6 +35,8 @@ Mod('B',
overshoot={'o': 1.0, 't': 180.0}, overshoot={'o': 1.0, 't': 180.0},
degauss={'s': 500.0, 'd': 30.0, 'f': 5.0, 't': 120.0}, degauss={'s': 500.0, 'd': 30.0, 'f': 5.0, 't': 120.0},
tolerance=5.0, tolerance=5.0,
wait_switch_on = 30,
wait_switch_off = 30,
wait_stable_field=180.0, wait_stable_field=180.0,
) )
@ -34,6 +44,7 @@ Mod('Bx',
'frappy_psi.cryoltd.ComponentField', 'frappy_psi.cryoltd.ComponentField',
'magnetic field x component', 'magnetic field x component',
channel='VMX', channel='VMX',
main='main',
check_against='B', check_against='B',
target=Param( target=Param(
max=200.0, max=200.0,
@ -50,6 +61,7 @@ Mod('By',
'frappy_psi.cryoltd.ComponentField', 'frappy_psi.cryoltd.ComponentField',
'magnetic field y component', 'magnetic field y component',
channel='VMY', channel='VMY',
main='main',
check_against='B', check_against='B',
target=Param( target=Param(
max=100.0, max=100.0,
@ -66,6 +78,7 @@ Mod('Bz',
'frappy_psi.cryoltd.ComponentField', 'frappy_psi.cryoltd.ComponentField',
'magnetic field z component', 'magnetic field z component',
channel='VMZ', channel='VMZ',
main='main',
check_against='B', check_against='B',
target=Param( target=Param(
max=100.0, max=100.0,
@ -82,130 +95,132 @@ Mod('compressorA',
'frappy_psi.cryoltd.Compressor', 'frappy_psi.cryoltd.Compressor',
'compressor A', 'compressor A',
channel='A', channel='A',
main='main',
) )
Mod('compressorB', Mod('compressorB',
'frappy_psi.cryoltd.Compressor', 'frappy_psi.cryoltd.Compressor',
'compressor B', 'compressor B',
channel='B', channel='B',
main='main',
) )
Mod('T_stage1_A', Mod('T_stage1_A',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='1st Stage A', channel='1st Stage A',
main='main', main='main',
) )
Mod('T_stage2_A', Mod('T_stage2_A',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='2nd Stage A', channel='2nd Stage A',
main='main', main='main',
) )
Mod('T_stage1_B', Mod('T_stage1_B',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='1st Stage B', channel='1st Stage B',
main='main', main='main',
) )
Mod('T_stage2_B', Mod('T_stage2_B',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='2nd Stage B', channel='2nd Stage B',
main='main', main='main',
) )
Mod('T_top_A', Mod('T_top_A',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Inner Magnet A (Top)', channel='Inner Magnet A (Top)',
main='main', main='main',
) )
Mod('T_bottom_A', Mod('T_bottom_A',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Inner Magnet A (Bottom)', channel='Inner Magnet A (Bottom)',
main='main', main='main',
) )
Mod('T_top_B', Mod('T_top_B',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Inner Magnet B (Top)', channel='Inner Magnet B (Top)',
main='main', main='main',
) )
Mod('T_bottom_B', Mod('T_bottom_B',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Inner Magnet B (Bottom)', channel='Inner Magnet B (Bottom)',
main='main', main='main',
) )
Mod('T_Z_shim', Mod('T_Z_shim',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Z Shim Former', channel='Z Shim Former',
main='main', main='main',
) )
Mod('T_XY_shim', Mod('T_XY_shim',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='XY Shim Former', channel='XY Shim Former',
main='main', main='main',
) )
Mod('T_XY_vector', Mod('T_XY_vector',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='XY Vector Former', channel='XY Vector Former',
main='main', main='main',
) )
Mod('T_radiation_shield', Mod('T_radiation_shield',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Radiation Shield', channel='Radiation Shield',
main='main', main='main',
) )
Mod('T_persistent_joints', Mod('T_persistent_joints',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Persistent Joints', channel='Persistent Joints',
main='main', main='main',
) )
Mod('T_outer_A', Mod('T_outer_A',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Outer Magnet A', channel='Outer Magnet A',
main='main', main='main',
) )
Mod('T_outer_B', Mod('T_outer_B',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Outer Magnet B', channel='Outer Magnet B',
main='main', main='main',
) )
Mod('T_shim_B', Mod('T_shim_B',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Z Shim Former B', channel='Z Shim Former B',
main='main', main='main',
) )
Mod('T_bore_shield', Mod('T_bore_shield',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Bore Radiation Shield', channel='Bore Radiation Shield',
main='main', main='main',
) )
Mod('T_XYZ_shim', Mod('T_XYZ_shim',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='XYZ Shim Plate', channel='XYZ Shim Plate',
main='main', main='main',
) )
Mod('T_Z_shim_switch', Mod('T_Z_shim_switch',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Z Shim Switch', channel='Z Shim Switch',
main='main', main='main',
) )
Mod('T_main_switch', Mod('T_main_switch',
'frappy_psi.cryoltd.Temperature', 'frappy_psi.cryoltd.Temperature', '',
channel='Main Coil Switch', channel='Main Coil Switch',
main='main', main='main',
) )

View File

@ -33,25 +33,25 @@ Mod('current',
Mod('i1', Mod('i1',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
single_module=['current.i1'], single_module='current.i1',
) )
Mod('i2', Mod('i2',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
single_module=['current.i2'], single_module='current.i2',
) )
Mod('i3', Mod('i3',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
single_module=['current.i3'], single_module='current.i3',
) )
Mod('i4', Mod('i4',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
single_module=['current.i4'], single_module='current.i4',
) )
Mod('pv', Mod('pv',

View File

@ -13,7 +13,7 @@ Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
sea_object='tt', sea_object='tt',
rel_paths=['.', 'tm'], rel_paths=['tm'],
) )
Mod('ts', Mod('ts',

View File

@ -13,7 +13,8 @@ Mod('ts',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
sea_object='tt', sea_object='tt',
rel_paths=['.', 'ts'], meaning=['temperature', 20],
rel_paths=['ts', 'set'],
) )
Mod('t2', Mod('t2',

25
cfg/main/fw_cfg.py Normal file
View File

@ -0,0 +1,25 @@
Node('ft.config.sea.psi.ch',
'FW ILL furnace with W5 thermnocouple (1800 K), old power rack',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for fw.config',
config='fw.config',
service='main',
)
Mod('ts',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
rel_paths=['ts', 'set'],
)
Mod('t2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['t2'],
)

21
cfg/main/haake_cfg.py Normal file
View File

@ -0,0 +1,21 @@
Node('haakeuro.config.sea.psi.ch',
'Haake thermostat + Eurotherm controller',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for haakeuro.config',
config = 'haake.config',
service = 'main',
)
Mod('th',
'frappy_psi.sea.SeaDrivable', '',
meaning = ('temperature', 10),
io = 'sea_main',
sea_object = 'th',
extra_modules=['t2'],
)
Mod('ts',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='th.t2',
)

View File

@ -1,6 +1,5 @@
Node( Node('haakeuro.config.sea.psi.ch',
description = '''Haake thermostat + Eurotherm controller''', 'Haake thermostat + Eurotherm controller',
id = haakeuro.config.sea.psi.ch,
) )
Mod('sea_main', Mod('sea_main',
'frappy_psi.sea.SeaClient', 'frappy_psi.sea.SeaClient',

View File

@ -12,7 +12,9 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',
@ -26,7 +28,7 @@ Mod('cc',
Mod('lev', Mod('lev',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
single_module=['cc.h'], single_module='cc.h',
) )
Mod('nv', Mod('nv',

68
cfg/main/ill2_cfg.py Normal file
View File

@ -0,0 +1,68 @@
Node('ill2.config.sea.psi.ch',
'orange cryostat with 70 mm sample space',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ill2.config',
config='ill2.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)

View File

@ -1,24 +1,24 @@
Node('cfg/main/ill3.cfg', Node('cfg/main/ill3.cfg',
'orange cryofurnace with 70 mm sample space (low T)', 'orange cryofurnace with 70 mm sample space (low T)',
interface='5000',
name='ill3',
) )
Mod('sea_main', Mod('sea_main',
'secop_psi.sea.SeaClient', 'frappy_psi.sea.SeaClient',
'main sea connection for ill3.config', 'main sea connection for ill3.config',
config='ill3.config', config='ill3.config',
service='main', service='main',
) )
Mod('tt', Mod('tt',
'secop_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='cc', sea_object='cc',
extra_modules=['h'], extra_modules=['h'],
@ -26,49 +26,49 @@ Mod('cc',
) )
Mod('lev', Mod('lev',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
single_module=['cc.h'], single_module='cc.h',
) )
Mod('nv', Mod('nv',
'secop_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
sea_object='nv', sea_object='nv',
) )
Mod('ln2fill', Mod('ln2fill',
'secop_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
sea_object='ln2fill', sea_object='ln2fill',
) )
Mod('hefill', Mod('hefill',
'secop_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
sea_object='hefill', sea_object='hefill',
) )
Mod('hepump', Mod('hepump',
'secop_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
sea_object='hepump', sea_object='hepump',
) )
Mod('hemot', Mod('hemot',
'secop_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
sea_object='hemot', sea_object='hemot',
) )
Mod('nvflow', Mod('nvflow',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='nvflow', sea_object='nvflow',
) )
Mod('table', Mod('table',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='table', sea_object='table',
) )

View File

@ -12,7 +12,9 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',
@ -26,7 +28,7 @@ Mod('cc',
Mod('lev', Mod('lev',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
single_module=['cc.h'], single_module='cc.h',
) )
Mod('nv', Mod('nv',

View File

@ -12,7 +12,9 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',
@ -26,7 +28,7 @@ Mod('cc',
Mod('lev', Mod('lev',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
single_module=['cc.h'], single_module='cc.h',
) )
Mod('nv', Mod('nv',

View File

@ -12,7 +12,9 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('pauto', Mod('pauto',
@ -38,7 +40,7 @@ Mod('cc',
Mod('lev', Mod('lev',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
single_module=['cc.h'], single_module='cc.h',
) )
Mod('nv', Mod('nv',

View File

@ -12,8 +12,9 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['.', 'tt'], rel_paths=['tt', 'set'],
) )
Mod('T_ccr', Mod('T_ccr',
@ -27,73 +28,73 @@ Mod('jtccr',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
sea_object='jtccr', sea_object='jtccr',
extra_modules=['v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,vm'], extra_modules=['v1','v2','v3','v4','v5','v6','v7','v8','v9','v10','vm'],
) )
Mod('v1', Mod('v1',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['jtccr.v1'], single_module='jtccr.v1',
) )
Mod('v2', Mod('v2',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['jtccr.v2'], single_module='jtccr.v2',
) )
Mod('v3', Mod('v3',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['jtccr.v3'], single_module='jtccr.v3',
) )
Mod('v4', Mod('v4',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['jtccr.v4'], single_module='jtccr.v4',
) )
Mod('v5', Mod('v5',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['jtccr.v5'], single_module='jtccr.v5',
) )
Mod('v6', Mod('v6',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['jtccr.v6'], single_module='jtccr.v6',
) )
Mod('v7', Mod('v7',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['jtccr.v7'], single_module='jtccr.v7',
) )
Mod('v8', Mod('v8',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['jtccr.v8'], single_module='jtccr.v8',
) )
Mod('v9', Mod('v9',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['jtccr.v9'], single_module='jtccr.v9',
) )
Mod('v10', Mod('v10',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['jtccr.v10'], single_module='jtccr.v10',
) )
Mod('vm', Mod('vm',
'frappy_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
single_module=['jtccr.vm'], single_module='jtccr.vm',
) )
Mod('p1', Mod('p1',

View File

@ -12,7 +12,9 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',

View File

@ -12,7 +12,9 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',
@ -43,6 +45,7 @@ Mod('mf',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
sea_object='mf', sea_object='mf',
rel_paths=['.', 'gen', 'ips'],
) )
Mod('lev', Mod('lev',
@ -79,6 +82,8 @@ Mod('om',
'frappy_psi.phytron.Motor', 'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega', 'stick rotation, typically used for omega',
io='om_io', io='om_io',
sign=-1, target_min = -180,
target_max = 360,
encoder_mode='READ', encoder_mode='READ',
backlash=-1,
) )

102
cfg/main/ma10heat_cfg.py Normal file
View File

@ -0,0 +1,102 @@
Node('ma10.config.sea.psi.ch',
'10 Tesla vertical cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma10.config',
config='ma10heat.config',
service='main',
)
Mod('ts',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['ts', 'set']
)
Mod('tm',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['tm', 'setvti']
)
Mod('ts2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['ts_2']
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='lev',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)
Mod('om_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma10-ts.psi.ch:3004',
)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega',
io='om_io',
sign=-1,
target_min = -180,
target_max = 360,
encoder_mode='READ',
)

109
cfg/main/ma10high_t_cfg.py Normal file
View File

@ -0,0 +1,109 @@
Node('ma10.config.sea.psi.ch',
'10 Tesla vertical cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma10.config',
config='ma10high_t.config',
service='main',
)
Mod('th',
'frappy_psi.sea.SeaReadable',
'sample heater temperature',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['ts', 'setsamp']
)
Mod('tm',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='tt',
rel_paths=['tm', '.', 'set']
)
Mod('ts',
'frappy_psi.parmod.Converging',
'test for parmod',
unit='K',
read='th.value',
write='th.setsamp',
meaning=['temperature', 20],
settling_time=20,
tolerance=1,
)
Mod('ts2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['ts_2']
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='lev',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('om_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma10-ts.psi.ch:3004',
)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega',
io='om_io',
sign=-1,
target_min = -180,
target_max = 360,
encoder_mode='READ',
)

View File

@ -12,8 +12,9 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['.', 'tm'], rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',
@ -110,5 +111,5 @@ Mod('stickrot',
'frappy_psi.phytron.Motor', 'frappy_psi.phytron.Motor',
'stick rotation, typically not used as omega', 'stick rotation, typically not used as omega',
io='stick_io', io='stick_io',
encoder_mode='CHECK', encoder_mode='NO',
) )

98
cfg/main/ma15_cfg.py Normal file
View File

@ -0,0 +1,98 @@
Node('ma15.config.sea.psi.ch',
'''14.9 Tesla superconducting cryomagnet''',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma15.config',
config = 'ma15.config',
service = 'main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
meaning=['temperature_regulation', 27],
sea_object = 'tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'nv',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'hemot',
)
Mod('nvflow',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'nvflow',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'lev',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'ln2fill',
)
Mod('tcoil',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'tcoil',
)
Mod('ccu2',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'ccu2',
)
Mod('lnv',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'lnv',
)
Mod('lpr',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'lpr',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'table',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'om motor IO',
uri='ma15-ts.psi.ch:3005',
)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used as omega',
io='stick_io',
encoder_mode='CHECK',
)

View File

@ -12,8 +12,9 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['.', 'tm'], rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',
@ -74,5 +75,8 @@ Mod('om',
'frappy_psi.phytron.Motor', 'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega', 'stick rotation, typically used for omega',
io='om_io', io='om_io',
encoder_mode='NO', encoder_mode='CHECK',
target_min=-180,
target_max=360,
backlash=-1,
) )

View File

@ -0,0 +1,109 @@
Node('ma6_sampleheat.config.sea.psi.ch',
'compact 6 Tesla vertical cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma6_sampleheat.config',
config='ma6_sampleheat.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('th',
'frappy_psi.sea.SeaReadable',
'sample heater temperature',
io='sea_main',
sea_object='tt',
rel_paths=['ts', 'setsamp']
)
Mod('ts0',
'frappy_psi.sea.SeaReadable',
'sample stick exch. temperature',
io='sea_main',
sea_object='tt',
rel_paths=['ts_2']
)
Mod('ts',
'frappy_psi.parmod.Converging',
'test for parmod',
unit='K',
read='th.value',
write='th.setsamp',
meaning=['temperature', 20],
settling_time=20,
tolerance=1,
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='lev',
)
Mod('om_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma6-ts.psi.ch:3003',
)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega',
io='om_io',
encoder_mode='CHECK',
target_min=-180,
target_max=360,
)

View File

@ -10,10 +10,12 @@ Mod('sea_main',
) )
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.LscDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['.', 'tm'], sensor_path='tm',
set_path='set',
) )
Mod('cc', Mod('cc',
@ -56,6 +58,7 @@ Mod('mf',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
sea_object='mf', sea_object='mf',
value=Param(unit='T'),
) )
Mod('lev', Mod('lev',
@ -67,15 +70,13 @@ Mod('lev',
Mod('tcoil1', Mod('tcoil1',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='tcoil', sea_path='tcoil/ta',
rel_paths=['ta'],
) )
Mod('tcoil2', Mod('tcoil2',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='tcoil', sea_path='tcoil/tb',
rel_paths=['tb'],
) )
Mod('table', Mod('table',

108
cfg/main/ma7_piezo_cfg.py Normal file
View File

@ -0,0 +1,108 @@
Node('ma7_piezo.config.sea.psi.ch',
'6.8 Tesla horizontal cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma7.config',
config='ma7_piezo.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl', 'voltage'],
extra_modules=['manualpower'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='mf',
value=Param(unit='T'),
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='lev',
)
Mod('tcoil1',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tcoil',
rel_paths=['ta'],
)
Mod('tcoil2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tcoil',
rel_paths=['tb'],
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma7-ts.psi.ch:3007',
)
Mod('stickrot',
'frappy_psi.phytron.Motor',
'stick rotation, typically not used as omega',
io='stick_io',
encoder_mode='CHECK',
)
Mod('V',
'frappy_psi.sea.SeaWritable',
'voltage',
io='sea_main',
single_module='tt.manualpower',
)

View File

@ -0,0 +1,135 @@
Node('ma7.config.sea.psi.ch',
'6.8 Tesla horizontal cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma7_sampleheat.config',
config='ma7_sampleheat.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('th',
'frappy_psi.sea.SeaReadable',
'sample heater temperature',
io='sea_main',
sea_object='tt',
rel_paths=['ts_2', 'setsamp']
)
Mod('ts0',
'frappy_psi.sea.SeaReadable',
'sample stick exch. temperature',
io='sea_main',
sea_object='tt',
rel_paths=['ts']
)
Mod('ts',
'frappy_psi.parmod.Converging',
'test for parmod',
unit='K',
read='th.value',
write='th.setsamp',
meaning=['temperature', 20],
settling_time=20,
tolerance=1,
)
#Mod('sampheat',
# 'frappy_psi.sea.SeaWritable', '',
# io='sea_main',
# sea_object='tt',
# rel_paths=['ts_2', 'setsamp', 'manualpower']
#)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='lev',
)
Mod('tcoil1',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tcoil',
rel_paths=['ta'],
)
Mod('tcoil2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tcoil',
rel_paths=['tb'],
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma7-ts.psi.ch:3007',
)
Mod('stickrot',
'frappy_psi.phytron.Motor',
'stick rotation, typically not used as omega',
io='stick_io',
encoder_mode='CHECK',
)

View File

@ -0,0 +1,129 @@
Node('ma7_thermalc.config.sea.psi.ch',
'''6.8 Tesla horizontal cryomagnet for thrermalcond''',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma7_thermalc.config',
config = 'ma7_thermalc.config',
service = 'main',
)
#Mod('tt',
# 'frappy_psi.sea.SeaDrivable', '',
# io='sea_main',
# sea_object='tt',
# rel_paths=['.', 'tm'],
#)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
meaning=['temperature_regulation', 27],
io='sea_main',
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('th',
'frappy_psi.sea.SeaReadable',
'sample heater temperature',
io='sea_main',
sea_object='tt',
rel_paths=['ts', 'setsamp']
)
Mod('ts',
'frappy_psi.parmod.Converging',
'test for parmod',
unit='K',
value_param='th.value',
target_param='th.setsamp',
meaning=['temperature', 20],
settling_time=20,
tolerance=1,
)
Mod('samph',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='tt',
rel_paths=['setsamp','power'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'nv',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'hemot',
)
Mod('nvflow',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'nvflow',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'ln2fill',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'lev',
)
Mod('tcoil1',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tcoil',
rel_paths=['ta'],
)
Mod('tcoil2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tcoil',
rel_paths=['tb'],
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'table',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma7-ts.psi.ch:3007',
)
Mod('stickrot',
'frappy_psi.phytron.Motor',
'stick rotation, typically not used as omega',
io='stick_io',
encoder_mode='CHECK',
)

View File

@ -1,104 +1,104 @@
Node('cfg/main/ma7two.cfg', Node('cfg/main/ma7two.cfg',
'6.8 Tesla horizontal cryomagnet with two heater loops', '6.8 Tesla horizontal cryomagnet with two heater loops',
interface='5000',
name='ma7two',
) )
Mod('sea_main', Mod('sea_main',
'secop_psi.sea.SeaClient', 'frappy_psi.sea.SeaClient',
'main sea connection for ma7two.config', 'main sea connection for ma7two.config',
config='ma7two.config', config='ma7two.config',
service='main', service='main',
) )
Mod('tt', Mod('tt',
'secop_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='cc', sea_object='cc',
) )
Mod('nv', Mod('nv',
'secop_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
sea_object='nv', sea_object='nv',
) )
Mod('hefill', Mod('hefill',
'secop_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
sea_object='hefill', sea_object='hefill',
) )
Mod('hepump', Mod('hepump',
'secop_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
sea_object='hepump', sea_object='hepump',
) )
Mod('hemot', Mod('hemot',
'secop_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
sea_object='hemot', sea_object='hemot',
) )
Mod('nvflow', Mod('nvflow',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='nvflow', sea_object='nvflow',
) )
Mod('ln2fill', Mod('ln2fill',
'secop_psi.sea.SeaWritable', '', 'frappy_psi.sea.SeaWritable', '',
io='sea_main', io='sea_main',
sea_object='ln2fill', sea_object='ln2fill',
) )
Mod('mf', Mod('mf',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='mf', sea_object='mf',
) )
Mod('lev', Mod('lev',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='lev', sea_object='lev',
) )
Mod('tcoil1', Mod('tcoil1',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='tcoil', sea_object='tcoil',
rel_paths=['ta'], rel_paths=['ta'],
) )
Mod('tcoil2', Mod('tcoil2',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='tcoil', sea_object='tcoil',
rel_paths=['tb'], rel_paths=['tb'],
) )
Mod('table', Mod('table',
'secop_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='table', sea_object='table',
) )
Mod('om_io', Mod('om_io',
'secop_psi.phytron.PhytronIO', 'frappy_psi.phytron.PhytronIO',
'dom motor IO', 'dom motor IO',
uri='ma7-ts.psi.ch:3007', uri='ma7-ts.psi.ch:3007',
) )
Mod('om', Mod('om',
'secop_psi.phytron.Motor', 'frappy_psi.phytron.Motor',
'stick rotation', 'stick rotation',
io='om_io', io='om_io',
encoder_mode='CHECK', encoder_mode='CHECK',

View File

@ -1,6 +1,5 @@
Node('magsim.psi.ch', Node('magsim.psi.ch',
'cryo magnet simulation (similar to ppms simulation)', 'cryo magnet simulation (similar to ppms simulation)',
interface='tcp://5000',
) )
Mod('tt', Mod('tt',

View File

@ -1,8 +1,9 @@
Node('mb11.psi.ch', Node('mb11.psi.ch',
'MB11 11 Tesla - 100 mm cryomagnet', 'MB11 11 Tesla - 100 mm cryomagnet',
interface='tcp://5000',
) )
sea_cfg = 'mb11.config'
Mod('itc1', Mod('itc1',
'frappy_psi.mercury.IO', 'frappy_psi.mercury.IO',
'ITC for heat exchanger and pressures', 'ITC for heat exchanger and pressures',
@ -24,11 +25,13 @@ Mod('ips',
Mod('T_stat', Mod('T_stat',
'frappy_psi.mercury.TemperatureAutoFlow', 'frappy_psi.mercury.TemperatureAutoFlow',
'static heat exchanger temperature', 'static heat exchanger temperature',
meaning=['temperature_regulation', 27],
output_module='htr_stat', output_module='htr_stat',
needle_valve='p_stat', needle_valve='p_stat',
slot='DB6.T1', slot='DB6.T1',
io='itc1', io='itc1',
tolerance=0.1, tolerance=0.1,
flowpars=((1,5), (2, 20)),
) )
Mod('htr_stat', Mod('htr_stat',
@ -203,7 +206,8 @@ Mod('om',
'frappy_psi.phytron.Motor', 'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega', 'stick rotation, typically used for omega',
io='om_io', io='om_io',
sign=-1, target_min=-360,
target_max=360,
encoder_mode='NO', encoder_mode='NO',
target=Param(min=-180, max=360) target=Param(min=-360, max=360),
) )

View File

@ -1,6 +1,5 @@
Node('mb11.psi.ch', Node('mb11.psi.ch',
'MB11 11 Tesla - 100 mm cryomagnet', 'MB11 11 Tesla - 100 mm cryomagnet',
interface='tcp://5000',
) )
Mod('itc1', Mod('itc1',
@ -24,11 +23,13 @@ Mod('ips',
Mod('T_stat', Mod('T_stat',
'frappy_psi.mercury.TemperatureAutoFlow', 'frappy_psi.mercury.TemperatureAutoFlow',
'static heat exchanger temperature', 'static heat exchanger temperature',
meaning=['temperature_regulation', 27],
output_module='htr_stat', output_module='htr_stat',
needle_valve='p_stat', needle_valve='p_stat',
slot='DB6.T1', slot='DB6.T1',
io='itc1', io='itc1',
tolerance=0.1, tolerance=0.1,
flowpars=((1,5), (2, 20)),
) )
Mod('htr_stat', Mod('htr_stat',
@ -45,6 +46,7 @@ Mod('ts',
slot='MB1.T1', slot='MB1.T1',
io='itc1', io='itc1',
tolerance=1.0, tolerance=1.0,
visibility='expert',
) )
Mod('htr_sample', Mod('htr_sample',
@ -59,7 +61,7 @@ Mod('p_stat',
'static needle valve pressure', 'static needle valve pressure',
output_module='pos_stat', output_module='pos_stat',
settling_time=60.0, settling_time=60.0,
slot='DB5.P1,DB3.G1', slot='DB5.P1',
io='itc1', io='itc1',
tolerance=1.0, tolerance=1.0,
value=Param( value=Param(
@ -96,7 +98,7 @@ Mod('p_dyn',
'dynamic needle valve pressure', 'dynamic needle valve pressure',
output_module='pos_dyn', output_module='pos_dyn',
settling_time=60.0, settling_time=60.0,
slot='DB8.P1,DB4.G1', slot='DB8.P1',
io='itc1', io='itc1',
tolerance=1.0, tolerance=1.0,
value=Param( value=Param(
@ -133,7 +135,7 @@ Mod('lev',
Mod('n2lev', Mod('n2lev',
'frappy_psi.mercury.N2Level', 'frappy_psi.mercury.N2Level',
'LHe level', 'LN2 level',
slot='DB1.L1', slot='DB1.L1',
io='ips', io='ips',
) )
@ -219,6 +221,8 @@ Mod('om',
'frappy_psi.phytron.Motor', 'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega', 'stick rotation, typically used for omega',
io='om_io', io='om_io',
sign=-1, target_min=-360,
target_max=360,
encoder_mode='NO', encoder_mode='NO',
target=Param(min=-360, max=360),
) )

73
cfg/main/ori2_cfg.py Normal file
View File

@ -0,0 +1,73 @@
Node('ori3.config.sea.psi.ch',
'orange cryostat with 50 mm sample space',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ori2.config',
config='ori2.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('nvflow',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='nvflow',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)

View File

@ -12,13 +12,22 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='cc', sea_object='cc',
extra_modules=['h'],
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
) )
Mod('nv', Mod('nv',
@ -51,6 +60,12 @@ Mod('hemot',
sea_object='hemot', sea_object='hemot',
) )
Mod('nvflow',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='nvflow',
)
Mod('table', Mod('table',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',

View File

@ -9,23 +9,26 @@ Mod('sea_main',
service='main', service='main',
) )
Mod('t', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
) rel_paths=['tm', '.', 'set', 'dblctrl'],
Mod('tm',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='tt',
rel_paths=['tm'],
) )
Mod('cc', Mod('cc',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='cc', sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
) )
Mod('nv', Mod('nv',

View File

@ -12,13 +12,23 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',
'frappy_psi.sea.SeaReadable', '', 'frappy_psi.sea.SeaReadable', '',
io='sea_main', io='sea_main',
sea_object='cc', sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
) )
Mod('nv', Mod('nv',

70
cfg/main/ori7_cfg.py Normal file
View File

@ -0,0 +1,70 @@
Node('ori7.config.sea.psi.ch',
'''orange cryostat with 50 mm sample space for ULT''',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ori7.config',
config = 'ori7.config',
service = 'main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
meaning=['temperature_regulation', 27],
sea_object = 'tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'hemot',
)
Mod('nvflow',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'nvflow',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'table',
)

17
cfg/main/ori7test_cfg.py Normal file
View File

@ -0,0 +1,17 @@
from frappy_psi.ccracks import Rack
Node('ori7test.psi.ch',
'ORI7 test',
'tcp://5000'
)
rack = Rack(Mod)
rack.lakeshore()
rack.sensor('Ts', channel='C', calcurve='x186350')
rack.loop('T', channel='B', calcurve='x174786', output_module='htr', target=10)
rack.heater('htr', 1, '100W', 25)
rack.ccu(he=True, n2=True)
rack.hepump()

58
cfg/main/peltier_cfg.py Normal file
View File

@ -0,0 +1,58 @@
Node('peltier.psi.ch',
'peltier test',
'tcp://5000',
)
Mod('tio',
'frappy_psi.qnw.QnwIO',
'connection for Quantum northwest',
uri='tcp://ldm-fi-ts:3001',
)
Mod('T',
'frappy_psi.qnw.TemperatureLoopTC1',
'holder temperature',
channel='CT',
io='tio',
)
Mod('Th',
'frappy_psi.qnw.SensorTC1',
'heat exch. temperature',
channel='HT',
io='tio',
)
Mod('wio',
'frappy_psi.thermofisher.ThermFishIO',
'connection for water bath',
uri='tcp://ldm-fi-ts:3002',
)
Mod('Tbath',
'frappy_psi.thermofisher.TemperatureLoopA10',
'water bath',
io='wio',
target=Param(max=100),
tolerance=0.5,
settling_time=20,
)
Mod('lio', # the name of the module
'frappy_demo.lakeshore.LakeshoreIO', # the class used for communication
'communication to main controller', # a description
uri="tcp://ldmcc02-ls:7777", # the serial connection
)
Mod('Ta',
'frappy_demo.lakeshore.TemperatureSensor',
'Sample Temperature',
io='lio',
channel='A', # the channel on the LakeShore for this module
)
Mod('Tb',
'frappy_demo.lakeshore.TemperatureSensor',
'Sample Temperature',
io='lio',
channel='B', # the channel on the LakeShore for this module
)

View File

@ -1,18 +1,17 @@
Node('cfg/main/rt.cfg', Node('cfg/main/rt.cfg',
'room temperature HRPT (pt1000)', 'room temperature HRPT (pt1000)',
interface='5000',
name='rt',
) )
Mod('sea_main', Mod('sea_main',
'secop_psi.sea.SeaClient', 'frappy_psi.sea.SeaClient',
'main sea connection for rt.config', 'main sea connection for rt.config',
config='rt.config', config='rt.config',
service='main', service='main',
) )
Mod('tt', Mod('tt',
'secop_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
meaning=['temperature', 20],
sea_object='tt', sea_object='tt',
io='sea_main', io='sea_main',
) )

View File

@ -12,7 +12,9 @@ Mod('sea_main',
Mod('tt', Mod('tt',
'frappy_psi.sea.SeaDrivable', '', 'frappy_psi.sea.SeaDrivable', '',
io='sea_main', io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt', sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
) )
Mod('cc', Mod('cc',

187
cfg/main/varioxb_cfg.py Normal file
View File

@ -0,0 +1,187 @@
Node('varioxb.psi.ch',
'VarioxB - 100 mm cryostat',
interface='tcp://5000',
)
Mod('itc1',
'frappy_psi.mercury.IO',
'ITC for heat exchanger and pressures',
uri='linvb-ts:3001',
)
Mod('itc2',
'frappy_psi.mercury.IO',
'ITC for neck and nv heaters',
uri='linvb-ts:3002',
)
Mod('T_stat',
'frappy_psi.mercury.TemperatureAutoFlow',
'static heat exchanger temperature',
meaning=['temperature_regulation', 27],
output_module='htr_stat',
needle_valve='p_stat',
slot='DB6.T1',
io='itc1',
tolerance=0.1,
)
Mod('htr_stat',
'frappy_psi.mercury.HeaterOutput',
'static heat exchanger heater',
slot='DB1.H1',
io='itc1',
)
Mod('p_stat',
'frappy_psi.mercury.PressureLoop',
'static needle valve pressure',
output_module='pos_stat',
settling_time=60.0,
slot='DB5.P1',
io='itc1',
tolerance=1.0,
value=Param(
unit='mbar_flow',
),
)
Mod('pos_stat',
'frappy_psi.mercury.ValvePos',
'static needle valve position',
slot='DB5.P1,DB3.G1',
io='itc1',
)
Mod('T_dyn',
'frappy_psi.mercury.TemperatureAutoFlow',
'dynamic heat exchanger temperature',
output_module='htr_dyn',
needle_valve='p_dyn',
slot='DB7.T1',
io='itc1',
tolerance=0.1,
)
Mod('htr_dyn',
'frappy_psi.mercury.HeaterOutput',
'dynamic heat exchanger heater',
slot='DB2.H1',
io='itc1',
)
Mod('p_dyn',
'frappy_psi.mercury.PressureLoop',
'dynamic needle valve pressure',
output_module='pos_dyn',
settling_time=60.0,
slot='DB8.P1',
io='itc1',
tolerance=1.0,
value=Param(
unit='mbar_flow',
),
)
Mod('pos_dyn',
'frappy_psi.mercury.ValvePos',
'dynamic needle valve position',
slot='DB8.P1,DB4.G1',
io='itc1',
)
Mod('lev',
'frappy_psi.mercury.HeLevel',
'LHe level',
slot='DB4.L1',
io='itc2',
)
Mod('n2lev',
'frappy_psi.mercury.N2Level',
'LN2 level',
slot='DB4.L1',
io='itc2',
)
Mod('T_neck1',
'frappy_psi.mercury.TemperatureLoop',
'neck heater 1 temperature',
output_module='htr_neck1',
slot='MB1.T1',
io='itc2',
tolerance=1.0,
)
Mod('htr_neck1',
'frappy_psi.mercury.HeaterOutput',
'neck heater 1 power',
slot='MB0.H1',
io='itc2',
)
Mod('T_neck2',
'frappy_psi.mercury.TemperatureLoop',
'neck heater 2 temperature',
output_module='htr_neck2',
slot='DB6.T1',
io='itc2',
tolerance=1.0,
)
Mod('htr_neck2',
'frappy_psi.mercury.HeaterOutput',
'neck heater 2 power',
slot='DB1.H1',
io='itc2',
)
Mod('T_nvs',
'frappy_psi.mercury.TemperatureLoop',
'static needle valve temperature',
output_module='htr_nvs',
slot='DB7.T1',
io='itc2',
tolerance=0.1,
)
Mod('htr_nvs',
'frappy_psi.mercury.HeaterOutput',
'static needle valve heater power',
slot='DB2.H1',
io='itc2',
)
Mod('T_nvd',
'frappy_psi.mercury.TemperatureLoop',
'dynamic needle valve heater temperature',
output_module='htr_nvd',
slot='DB8.T1',
io='itc2',
tolerance=0.1,
)
Mod('htr_nvd',
'frappy_psi.mercury.HeaterOutput',
'dynamic needle valve heater power',
slot='DB3.H1',
io='itc2',
)
# Motor controller is not yet available!
#
#Mod('om_io',
# 'frappy_psi.phytron.PhytronIO',
# 'dom motor IO',
# uri='mb11-ts.psi.ch:3004',
#)
#Mod('om',
# 'frappy_psi.phytron.Motor',
# 'stick rotation, typically used for omega',
# io='om_io',
# target_min=-180,
# target_max=360,
# encoder_mode='NO',
# target=Param(min=-180, max=360)
#)

34
cfg/multimeter_cfg.py Normal file
View File

@ -0,0 +1,34 @@
Node('multimetertest.psi.ch',
'multimeter test',
'tcp://5000',
)
Mod('io',
'frappy_psi.HP.HP_IO',
'multimeter communication',
uri='/dev/cu.usbserial-21410',
)
Mod('Voltage',
'frappy_psi.HP.Voltage',
'voltage',
io='io',
)
Mod('Current',
'frappy_psi.HP.Current',
'current',
io='io',
)
Mod('Resistance',
'frappy_psi.HP.Resistance',
'resistivity',
io='io',
)
Mod('Frequency',
'frappy_psi.HP.Frequency',
'resistivity',
io='io',
)

16
cfg/phoenix_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('phoenixtest.psi.ch',
'phoenix test',
'tcp://5000',
)
Mod('io',
'frappy_psi.haake.HaakeIO',
'connection for Thermo Haake',
uri='tcp://ldmprep7-ts:3005',
)
Mod('T',
'frappy_psi.haake.TemperatureLoop',
'holder temperature',
io='io',
)

View File

@ -1,25 +0,0 @@
# error creating tt
# error creating nv
Node('ori1.psi.ch',
'ori1 over SEA',
interface='tcp://10767',
)
Mod('seaconn',
'frappy_psi.sea.SeaClient',
'a SEA connection',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='seaconn',
json_descr='tt.ori1.config',
remote_paths='.',
)
Mod('nv',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='nv.ori1.config',
remote_paths='.',
)

View File

@ -1,153 +0,0 @@
# error creating tt
# error creating nv
# error creating ln2fill
# error creating hefill
# error creating tcoil
# error creating table
# error creating lnv
# error creating lpr
# error creating lambdawatch
# error creating ts
# error creating treg
# error creating tmon
# error creating sorb
# error creating ultrasound
# error creating fn
# error creating mirror
# error creating f
# error creating pars
Node('ma11_dil4_ultrasound_sr.psi.ch',
'ma11_dil4_ultrasound_sr over SEA',
interface='tcp://10767',
)
Mod('seaconn',
'frappy_psi.sea.SeaClient',
'a SEA connection',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='seaconn',
json_descr='tt.ma11.config',
remote_paths='.',
)
Mod('nv',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='nv.ma11.config',
remote_paths='.',
)
Mod('ln2fill',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='ln2fill.ma11.config',
remote_paths='.',
)
Mod('hefill',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='hefill.ma11.config',
remote_paths='.',
)
Mod('tcoil',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='tcoil.ma11.config',
remote_paths='.',
)
Mod('table',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='table.ma11.config',
remote_paths='.',
)
Mod('lnv',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='lnv.ma11.config',
remote_paths='.',
)
Mod('lpr',
'frappy_psi.sea.SeaDrivable',
io='seaconn',
json_descr='lpr.ma11.config',
remote_paths='.',
)
Mod('lambdawatch',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='lambdawatch.ma11.config',
remote_paths='.',
)
Mod('ts',
'frappy_psi.sea.SeaDrivable',
io='seaconn',
json_descr='ts.dil4.stick',
remote_paths='.',
)
Mod('treg',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='treg.dil4.stick',
remote_paths='.',
)
Mod('tmon',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='tmon.dil4.stick',
remote_paths='.',
)
Mod('sorb',
'frappy_psi.sea.SeaDrivable',
io='seaconn',
json_descr='sorb.dil4.stick',
remote_paths='.',
)
Mod('ultrasound',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='ultrasound.ultrasound.addon',
remote_paths='.',
)
Mod('fn',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='fn.ultrasound.addon',
remote_paths='.',
)
Mod('mirror',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='mirror.ultrasound.addon',
remote_paths='.',
)
Mod('f',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='f.ultrasound.addon',
remote_paths='.',
)
Mod('pars',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='pars.ultrasound.addon',
remote_paths='.',
)

View File

@ -1,81 +0,0 @@
# error creating tvs
# error creating tvd
# error creating pstat
# error creating pdyn
# error creating tneck1
# error creating tneck2
# error creating tnvs
# error creating tnvd
# error creating ts
Node('varioxB_vb.psi.ch',
'varioxB_vb over SEA',
interface='tcp://10767',
)
Mod('seaconn',
'frappy_psi.sea.SeaClient',
'a SEA connection',
)
Mod('tvs',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='tvs.varioxB.config',
remote_paths='.',
)
Mod('tvd',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='tvd.varioxB.config',
remote_paths='.',
)
Mod('pstat',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='pstat.varioxB.config',
remote_paths='.',
)
Mod('pdyn',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='pdyn.varioxB.config',
remote_paths='.',
)
Mod('tneck1',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='tneck1.varioxB.config',
remote_paths='.',
)
Mod('tneck2',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='tneck2.varioxB.config',
remote_paths='.',
)
Mod('tnvs',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='tnvs.varioxB.config',
remote_paths='.',
)
Mod('tnvd',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='tnvd.varioxB.config',
remote_paths='.',
)
Mod('ts',
'frappy_psi.sea.SeaReadable',
io='seaconn',
json_descr='ts.vb.stick',
remote_paths='.',
)

View File

@ -0,0 +1,84 @@
# call $ bin/frappy-server razorbillUC220T
# in frappy directory, with python with frappy libraries installed.
Node('UC220T.psi.ch',
'A Razorbill UC220T controlled by a RP100 high voltage powersupply and a ACM1219 (AD7746) capacitance meter',
interface='tcp://5123')
Mod('io1',
'frappy_psi.RP100.RP100IO',
'communication',
uri='serial:///dev/ttyACM0?baudrate=9600+bytesize=8+parity=none+stopbits=1')
Mod('V1',
'frappy_psi.RP100.VoltageChannel',
'Voltage Channel 1',
temp='T',
io='io1',
target=Param(min=-200, max=200),
max_target=120,
min_target=-20,
slew_rate=100,
channel=1)
Mod('V2',
'frappy_psi.RP100.VoltageChannel',
'Voltage Channel 2',
temp='T',
io='io1',
target=Param(min=-200, max=200),
max_target=120,
min_target=-20,
slew_rate=100,
channel=2)
Mod('io2',
'frappy_psi.ACM1219.ACM1219IO',
'communication',
uri='serial:///dev/ttyUSB0?baudrate=9600+bytesize=8+parity=none+stopbits=1')
Mod('C1C2',
'frappy_psi.ACM1219.BothChannels',
'Capacitance channels 1 and 2',
io='io2')
Mod('d',
'frappy_psi.ACM1219.Displacement',
'razorbill displacement from capacitance',
cap='C1C2',
channel=1,
alpha290K=56.710,
d0=95.443,
Cp=0.01883,
d0_curve={'a':4.21,'b':-0.00157,'c':-3.38e-5,'d':5.28e-8,'e':-6.93e-11},
temp='T')
Mod('F',
'frappy_psi.ACM1219.Force',
'razorbill force from capacitance',
cap='C1C2',
channel=2,
alpha290K=374.23,
f0=315.63,
Cp=0.0755,
f0_curve={'a':38.9,'b':-0.0147,'c':-0.000346,'d':8.96e-7,'e':-1.58e-9},
temp='T')
Mod('stress',
'frappy_psi.ACM1219.Stress',
'Sample stress from force',
force='F',
area=0.1,
)
Mod('strain',
'frappy_psi.ACM1219.Strain',
'Sample strain from force',
displacement='d',
L=3,
)
Mod('YM',
'frappy_psi.ACM1219.YoungsModulus',
'Sample youngs modulus from stress and strain',
stress='stress',
strain='strain',
)
Mod('T',
'frappy_psi.dummy.Temp',
'dummy T written from client',
target=Param(min=1, max=325),
)

14
cfg/sea/ah2550.addon.json Normal file
View File

@ -0,0 +1,14 @@
{"cap": {"base": "/cap", "params": [{"path": "", "type": "none", "kids": 8},
{"path": "send", "type": "text", "readonly": false, "cmd": "cap send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "cap", "type": "float"},
{"path": "loss", "type": "float"},
{"path": "period", "type": "float", "readonly": false, "cmd": "cap period"},
{"path": "V", "type": "float", "readonly": false, "cmd": "cap V"},
{"path": "average", "type": "int", "readonly": false, "cmd": "cap average"}]}, "capslope": {"base": "/capslope", "params": [{"path": "", "type": "float", "kids": 6},
{"path": "send", "type": "text", "readonly": false, "cmd": "capslope send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "node", "type": "text", "readonly": false, "cmd": "capslope node"},
{"path": "unit", "type": "float", "readonly": false, "cmd": "capslope unit", "description": "unit=60: mainunits/minutes, unit=1: mainunits/sec"},
{"path": "ref", "type": "float", "readonly": false, "cmd": "capslope ref"},
{"path": "buffersize", "type": "float", "readonly": false, "cmd": "capslope buffersize"}]}}

View File

@ -1,41 +1,13 @@
{"t_be_filter": {"base": "/t_be_filter", "params": [ {"t_be_filter":
{"path": "", "type": "none", "kids": 11}, {
{"path": "send", "type": "text", "readonly": false, "cmd": "t_be_filter send", "visibility": 3}, "base": "/t_be_filter",
{"path": "status", "type": "text", "visibility": 3}, "params": [
{"path": "a", "type": "float", "kids": 4}, {"path": "", "type": "none", "kids": 11},
{"path": "a/curve", "type": "text", "readonly": false, "cmd": "t_be_filter a/curve", "kids": 1}, {"path": "a", "type": "float"},
{"path": "a/curve/points", "type": "floatvarar", "readonly": false, "cmd": "t_be_filter a/curve/points", "visibility": 3}, {"path": "b", "type": "float"},
{"path": "a/alarm", "type": "float", "readonly": false, "cmd": "t_be_filter a/alarm"}, {"path": "c", "type": "float"},
{"path": "a/stddev", "type": "float"}, {"path": "d", "type": "float"},
{"path": "a/raw", "type": "float"}, {"path": "det", "type": "float"}
{"path": "b", "type": "float", "kids": 4}, ]
{"path": "b/curve", "type": "text", "readonly": false, "cmd": "t_be_filter b/curve", "kids": 1}, }
{"path": "b/curve/points", "type": "floatvarar", "readonly": false, "cmd": "t_be_filter b/curve/points", "visibility": 3}, }
{"path": "b/alarm", "type": "float", "readonly": false, "cmd": "t_be_filter b/alarm"},
{"path": "b/stddev", "type": "float"},
{"path": "b/raw", "type": "float"},
{"path": "c", "type": "float", "kids": 4},
{"path": "c/curve", "type": "text", "readonly": false, "cmd": "t_be_filter c/curve", "kids": 1},
{"path": "c/curve/points", "type": "floatvarar", "readonly": false, "cmd": "t_be_filter c/curve/points", "visibility": 3},
{"path": "c/alarm", "type": "float", "readonly": false, "cmd": "t_be_filter c/alarm"},
{"path": "c/stddev", "type": "float"},
{"path": "c/raw", "type": "float"},
{"path": "d", "type": "float", "kids": 4},
{"path": "d/curve", "type": "text", "readonly": false, "cmd": "t_be_filter d/curve", "kids": 1},
{"path": "d/curve/points", "type": "floatvarar", "readonly": false, "cmd": "t_be_filter d/curve/points", "visibility": 3},
{"path": "d/alarm", "type": "float", "readonly": false, "cmd": "t_be_filter d/alarm"},
{"path": "d/stddev", "type": "float"},
{"path": "d/raw", "type": "float"},
{"path": "det", "type": "float", "kids": 4},
{"path": "det/curve", "type": "text", "readonly": false, "cmd": "t_be_filter det/curve", "kids": 1},
{"path": "det/curve/points", "type": "floatvarar", "readonly": false, "cmd": "t_be_filter det/curve/points", "visibility": 3},
{"path": "det/alarm", "type": "float", "readonly": false, "cmd": "t_be_filter det/alarm"},
{"path": "det/stddev", "type": "float"},
{"path": "det/raw", "type": "float"},
{"path": "display", "type": "text", "readonly": false, "cmd": "t_be_filter display"},
{"path": "relay1", "type": "text", "readonly": false, "cmd": "t_be_filter relay1", "description": "may be 0,1,A,B,C,D for on,off or alarm channel"},
{"path": "relay2", "type": "text", "readonly": false, "cmd": "t_be_filter relay2", "description": "may be 0,1,A,B,C,D for on,off or alarm channel"},
{"path": "remote", "type": "bool"}]},
"addonlock_camea-be-filter": {"base": "/addonlock_camea-be-filter", "params": [
{"path": "", "type": "text", "readonly": false, "cmd": "addonlock_camea-be-filter = "}]}}

View File

@ -1,24 +0,0 @@
Node('cfg/sea/camea-be-filter.cfg',
'Camea Be-Filter',
interface='5000',
name='camea-be-filter',
)
Mod('sea_addons',
'secop_psi.sea.SeaClient',
'addons sea connection for camea-be-filter.addon',
config='camea-be-filter.addon',
service='addons',
)
Mod('t_be_filter',
'secop_psi.sea.SeaReadable',
io='sea_addons',
sea_object='t_be_filter',
)
Mod('addonlock_camea-be-filter',
'secop_psi.sea.SeaWritable',
io='sea_addons',
sea_object='addonlock_camea-be-filter',
)

View File

@ -54,8 +54,6 @@
{"path": "set/integ", "type": "float", "readonly": false, "cmd": "tt set/integ", "description": "bigger means faster"}, {"path": "set/integ", "type": "float", "readonly": false, "cmd": "tt set/integ", "description": "bigger means faster"},
{"path": "set/deriv", "type": "float", "readonly": false, "cmd": "tt set/deriv"}, {"path": "set/deriv", "type": "float", "readonly": false, "cmd": "tt set/deriv"},
{"path": "display", "type": "text", "readonly": false, "cmd": "tt display"}, {"path": "display", "type": "text", "readonly": false, "cmd": "tt display"},
{"path": "dout", "type": "int", "readonly": false, "cmd": "tt dout"},
{"path": "dinp", "type": "int"},
{"path": "remote", "type": "bool"}]}, "cc": {"base": "/cc", "params": [{"path": "", "type": "bool", "kids": 96}, {"path": "remote", "type": "bool"}]}, "cc": {"base": "/cc", "params": [{"path": "", "type": "bool", "kids": 96},
{"path": "send", "type": "text", "readonly": false, "cmd": "cc send", "visibility": 3}, {"path": "send", "type": "text", "readonly": false, "cmd": "cc send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3}, {"path": "status", "type": "text", "visibility": 3},
@ -80,7 +78,7 @@
{"path": "mcr", "type": "float"}, {"path": "mcr", "type": "float"},
{"path": "mot", "type": "float"}, {"path": "mot", "type": "float"},
{"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open"}, {"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open"},
{"path": "hav", "type": "bool", "readonly": false, "cmd": "cc hav"}, {"path": "hav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc hav"},
{"path": "h", "type": "float"}, {"path": "h", "type": "float"},
{"path": "hr", "type": "float"}, {"path": "hr", "type": "float"},
{"path": "hc", "type": "float"}, {"path": "hc", "type": "float"},
@ -123,7 +121,7 @@
{"path": "h5", "type": "float"}, {"path": "h5", "type": "float"},
{"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}}, {"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "hfb", "type": "float"}, {"path": "hfb", "type": "float"},
{"path": "nav", "type": "bool", "readonly": false, "cmd": "cc nav"}, {"path": "nav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc nav"},
{"path": "nu", "type": "float"}, {"path": "nu", "type": "float"},
{"path": "nl", "type": "float"}, {"path": "nl", "type": "float"},
{"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth"}, {"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth"},

View File

@ -60,8 +60,6 @@
{"path": "set/integ", "type": "float", "readonly": false, "cmd": "tt set/integ", "description": "bigger means faster"}, {"path": "set/integ", "type": "float", "readonly": false, "cmd": "tt set/integ", "description": "bigger means faster"},
{"path": "set/deriv", "type": "float", "readonly": false, "cmd": "tt set/deriv"}, {"path": "set/deriv", "type": "float", "readonly": false, "cmd": "tt set/deriv"},
{"path": "display", "type": "text", "readonly": false, "cmd": "tt display"}, {"path": "display", "type": "text", "readonly": false, "cmd": "tt display"},
{"path": "dout", "type": "int", "readonly": false, "cmd": "tt dout"},
{"path": "dinp", "type": "int"},
{"path": "remote", "type": "bool"}]}, "cc": {"base": "/cc", "params": [{"path": "", "type": "bool", "kids": 96}, {"path": "remote", "type": "bool"}]}, "cc": {"base": "/cc", "params": [{"path": "", "type": "bool", "kids": 96},
{"path": "send", "type": "text", "readonly": false, "cmd": "cc send", "visibility": 3}, {"path": "send", "type": "text", "readonly": false, "cmd": "cc send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3}, {"path": "status", "type": "text", "visibility": 3},
@ -86,7 +84,7 @@
{"path": "mcr", "type": "float"}, {"path": "mcr", "type": "float"},
{"path": "mot", "type": "float"}, {"path": "mot", "type": "float"},
{"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open"}, {"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open"},
{"path": "hav", "type": "bool", "readonly": false, "cmd": "cc hav"}, {"path": "hav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc hav"},
{"path": "h", "type": "float"}, {"path": "h", "type": "float"},
{"path": "hr", "type": "float"}, {"path": "hr", "type": "float"},
{"path": "hc", "type": "float"}, {"path": "hc", "type": "float"},
@ -129,7 +127,7 @@
{"path": "h5", "type": "float"}, {"path": "h5", "type": "float"},
{"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}}, {"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "hfb", "type": "float"}, {"path": "hfb", "type": "float"},
{"path": "nav", "type": "bool", "readonly": false, "cmd": "cc nav"}, {"path": "nav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc nav"},
{"path": "nu", "type": "float"}, {"path": "nu", "type": "float"},
{"path": "nl", "type": "float"}, {"path": "nl", "type": "float"},
{"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth"}, {"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth"},

View File

@ -56,8 +56,6 @@
{"path": "set/integ", "type": "float", "readonly": false, "cmd": "tt set/integ", "description": "bigger means faster"}, {"path": "set/integ", "type": "float", "readonly": false, "cmd": "tt set/integ", "description": "bigger means faster"},
{"path": "set/deriv", "type": "float", "readonly": false, "cmd": "tt set/deriv"}, {"path": "set/deriv", "type": "float", "readonly": false, "cmd": "tt set/deriv"},
{"path": "display", "type": "text", "readonly": false, "cmd": "tt display"}, {"path": "display", "type": "text", "readonly": false, "cmd": "tt display"},
{"path": "dout", "type": "int", "readonly": false, "cmd": "tt dout"},
{"path": "dinp", "type": "int"},
{"path": "remote", "type": "bool"}]}, {"path": "remote", "type": "bool"}]},
"cc": {"base": "/cc", "params": [ "cc": {"base": "/cc", "params": [
@ -85,7 +83,7 @@
{"path": "mcr", "type": "float"}, {"path": "mcr", "type": "float"},
{"path": "mot", "type": "float"}, {"path": "mot", "type": "float"},
{"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open"}, {"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open"},
{"path": "hav", "type": "bool", "readonly": false, "cmd": "cc hav"}, {"path": "hav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc hav"},
{"path": "h", "type": "float"}, {"path": "h", "type": "float"},
{"path": "hr", "type": "float"}, {"path": "hr", "type": "float"},
{"path": "hc", "type": "float"}, {"path": "hc", "type": "float"},
@ -128,7 +126,7 @@
{"path": "h5", "type": "float"}, {"path": "h5", "type": "float"},
{"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}}, {"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "hfb", "type": "float"}, {"path": "hfb", "type": "float"},
{"path": "nav", "type": "bool", "readonly": false, "cmd": "cc nav"}, {"path": "nav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc nav"},
{"path": "nu", "type": "float"}, {"path": "nu", "type": "float"},
{"path": "nl", "type": "float"}, {"path": "nl", "type": "float"},
{"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth"}, {"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth"},

View File

@ -89,26 +89,26 @@
{"path": "status", "type": "text", "visibility": 3}, {"path": "status", "type": "text", "visibility": 3},
{"path": "autodevice", "type": "bool", "readonly": false, "cmd": "cc autodevice"}, {"path": "autodevice", "type": "bool", "readonly": false, "cmd": "cc autodevice"},
{"path": "fav", "type": "bool", "readonly": false, "cmd": "cc fav"}, {"path": "fav", "type": "bool", "readonly": false, "cmd": "cc fav"},
{"path": "f", "type": "float", "visibility": 3}, {"path": "f", "type": "float"},
{"path": "fs", "type": "enum", "enum": {"ok": 0, "no_sens": 1}, "readonly": false, "cmd": "cc fs", "visibility": 3}, {"path": "fs", "type": "enum", "enum": {"ok": 0, "no_sens": 1}, "readonly": false, "cmd": "cc fs"},
{"path": "mav", "type": "bool", "readonly": false, "cmd": "cc mav"}, {"path": "mav", "type": "bool", "readonly": false, "cmd": "cc mav"},
{"path": "fm", "type": "enum", "enum": {"idle": 0, "opening": 1, "closing": 2, "opened": 3, "closed": 4, "no_motor": 5}, "visibility": 3}, {"path": "fm", "type": "enum", "enum": {"idle": 0, "opening": 1, "closing": 2, "opened": 3, "closed": 4, "no_motor": 5}},
{"path": "fa", "type": "enum", "enum": {"fixed": 0, "controlled": 1, "automatic": 2, "offline": 3}, "readonly": false, "cmd": "cc fa", "visibility": 3}, {"path": "fa", "type": "enum", "enum": {"fixed": 0, "controlled": 1, "automatic": 2, "offline": 3}, "readonly": false, "cmd": "cc fa"},
{"path": "mp", "type": "float", "readonly": false, "cmd": "cc mp", "visibility": 3}, {"path": "mp", "type": "float", "readonly": false, "cmd": "cc mp"},
{"path": "msp", "type": "float", "visibility": 3}, {"path": "msp", "type": "float"},
{"path": "mmp", "type": "float", "visibility": 3}, {"path": "mmp", "type": "float"},
{"path": "mc", "type": "float", "readonly": false, "cmd": "cc mc", "visibility": 3}, {"path": "mc", "type": "float", "readonly": false, "cmd": "cc mc"},
{"path": "mfc", "type": "float", "readonly": false, "cmd": "cc mfc", "visibility": 3}, {"path": "mfc", "type": "float", "readonly": false, "cmd": "cc mfc"},
{"path": "moc", "type": "float", "readonly": false, "cmd": "cc moc", "visibility": 3}, {"path": "moc", "type": "float", "readonly": false, "cmd": "cc moc"},
{"path": "mtc", "type": "float", "readonly": false, "cmd": "cc mtc", "visibility": 3}, {"path": "mtc", "type": "float", "readonly": false, "cmd": "cc mtc"},
{"path": "mtl", "type": "float", "visibility": 3}, {"path": "mtl", "type": "float"},
{"path": "mft", "type": "float", "readonly": false, "cmd": "cc mft", "visibility": 3}, {"path": "mft", "type": "float", "readonly": false, "cmd": "cc mft"},
{"path": "mt", "type": "float", "visibility": 3}, {"path": "mt", "type": "float"},
{"path": "mo", "type": "float", "visibility": 3}, {"path": "mo", "type": "float"},
{"path": "mcr", "type": "float", "visibility": 3}, {"path": "mcr", "type": "float"},
{"path": "mot", "type": "float", "visibility": 3}, {"path": "mot", "type": "float"},
{"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open", "visibility": 3}, {"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open"},
{"path": "hav", "type": "bool", "readonly": false, "cmd": "cc hav"}, {"path": "hav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc hav"},
{"path": "h", "type": "float", "visibility": 3}, {"path": "h", "type": "float", "visibility": 3},
{"path": "hr", "type": "float", "visibility": 3}, {"path": "hr", "type": "float", "visibility": 3},
{"path": "hc", "type": "float", "visibility": 3}, {"path": "hc", "type": "float", "visibility": 3},
@ -132,26 +132,26 @@
{"path": "hms", "type": "float", "visibility": 3}, {"path": "hms", "type": "float", "visibility": 3},
{"path": "hit", "type": "float", "readonly": false, "cmd": "cc hit", "visibility": 3}, {"path": "hit", "type": "float", "readonly": false, "cmd": "cc hit", "visibility": 3},
{"path": "hft", "type": "int", "readonly": false, "cmd": "cc hft", "visibility": 3}, {"path": "hft", "type": "int", "readonly": false, "cmd": "cc hft", "visibility": 3},
{"path": "hea", "type": "enum", "enum": {"0": 0, "1": 1, "6": 2}, "readonly": false, "cmd": "cc hea"}, {"path": "hea", "type": "enum", "enum": {"0": 0, "1": 1, "6": 6}, "readonly": false, "cmd": "cc hea"},
{"path": "hch", "type": "int", "readonly": false, "cmd": "cc hch", "visibility": 3}, {"path": "hch", "type": "int", "readonly": false, "cmd": "cc hch"},
{"path": "hwr0", "type": "float", "readonly": false, "cmd": "cc hwr0", "visibility": 3}, {"path": "hwr0", "type": "float", "readonly": false, "cmd": "cc hwr0"},
{"path": "hem0", "type": "float", "readonly": false, "cmd": "cc hem0", "description": "sensor length in mm from top to empty pos.", "visibility": 3}, {"path": "hem0", "type": "float", "readonly": false, "cmd": "cc hem0", "description": "sensor length in mm from top to empty pos."},
{"path": "hfu0", "type": "float", "readonly": false, "cmd": "cc hfu0", "description": "sensor length in mm from top to full pos.", "visibility": 3}, {"path": "hfu0", "type": "float", "readonly": false, "cmd": "cc hfu0", "description": "sensor length in mm from top to full pos."},
{"path": "hd0", "type": "float", "readonly": false, "cmd": "cc hd0", "description": "external sensor drive current (mA)", "visibility": 3}, {"path": "hd0", "type": "float", "readonly": false, "cmd": "cc hd0", "description": "external sensor drive current (mA)"},
{"path": "h0", "type": "float", "visibility": 3}, {"path": "h0", "type": "float"},
{"path": "hs0", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3}, {"path": "hs0", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "h1", "type": "float", "visibility": 3}, {"path": "h1", "type": "float"},
{"path": "hs1", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3}, {"path": "hs1", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "h2", "type": "float", "visibility": 3}, {"path": "h2", "type": "float"},
{"path": "hs2", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3}, {"path": "hs2", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "h3", "type": "float", "visibility": 3}, {"path": "h3", "type": "float"},
{"path": "hs3", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3}, {"path": "hs3", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "h4", "type": "float", "visibility": 3}, {"path": "h4", "type": "float"},
{"path": "hs4", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3}, {"path": "hs4", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "h5", "type": "float", "visibility": 3}, {"path": "h5", "type": "float"},
{"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}, "visibility": 3}, {"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
{"path": "hfb", "type": "float", "visibility": 3}, {"path": "hfb", "type": "float", "visibility": 3},
{"path": "nav", "type": "bool", "readonly": false, "cmd": "cc nav"}, {"path": "nav", "type": "enum", "type": "enum", "enum": {"none": 0, "int": 1, "ext": 2}, "readonly": false, "cmd": "cc nav"},
{"path": "nu", "type": "float", "visibility": 3}, {"path": "nu", "type": "float", "visibility": 3},
{"path": "nl", "type": "float", "visibility": 3}, {"path": "nl", "type": "float", "visibility": 3},
{"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth", "visibility": 3}, {"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth", "visibility": 3},
@ -182,6 +182,114 @@
{"path": "tq", "type": "float", "visibility": 3}, {"path": "tq", "type": "float", "visibility": 3},
{"path": "bdl", "type": "float", "readonly": false, "cmd": "cc bdl"}]}, {"path": "bdl", "type": "float", "readonly": false, "cmd": "cc bdl"}]},
"nv": {"base": "/nv", "params": [
{"path": "", "type": "enum", "enum": {"fixed": 0, "controlled": 1, "automatic": 2, "close": 3, "open": 4}, "readonly": false, "cmd": "nv", "kids": 11},
{"path": "send", "type": "text", "readonly": false, "cmd": "nv send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "motstat", "type": "enum", "enum": {"idle": 0, "opening": 1, "closing": 2, "opened": 3, "closed": 4, "no_motor": 5}},
{"path": "flow", "type": "float"},
{"path": "set", "type": "float", "readonly": false, "cmd": "nv set"},
{"path": "flowmax", "type": "float", "readonly": false, "cmd": "nv flowmax"},
{"path": "flowp", "type": "float"},
{"path": "span", "type": "float"},
{"path": "ctrl", "type": "none", "kids": 13},
{"path": "ctrl/regtext", "type": "text"},
{"path": "ctrl/prop_o", "type": "float", "readonly": false, "cmd": "nv ctrl/prop_o", "description": "prop [sec/mbar] when opening. above 4 mbar a 10 times lower value is used"},
{"path": "ctrl/prop_c", "type": "float", "readonly": false, "cmd": "nv ctrl/prop_c", "description": "prop [sec/mbar] when closing. above 4 mbar a 10 times lower value is used"},
{"path": "ctrl/deriv_o", "type": "float", "readonly": false, "cmd": "nv ctrl/deriv_o", "description": "convergence target time [sec] when opening"},
{"path": "ctrl/deriv_c", "type": "float", "readonly": false, "cmd": "nv ctrl/deriv_c", "description": "convergence target time [sec] when closing"},
{"path": "ctrl/minpulse_o", "type": "float", "readonly": false, "cmd": "nv ctrl/minpulse_o", "description": "minimum close pulse [sec]"},
{"path": "ctrl/minpulse_c", "type": "float", "readonly": false, "cmd": "nv ctrl/minpulse_c", "description": "standard close pulse [sec]"},
{"path": "ctrl/hystpulse_o", "type": "float", "readonly": false, "cmd": "nv ctrl/hystpulse_o", "description": "motor pulse to overcome hysteresis when opening"},
{"path": "ctrl/hystpulse_c", "type": "float", "readonly": false, "cmd": "nv ctrl/hystpulse_c", "description": "motor pulse to overcome hysteresis when closing"},
{"path": "ctrl/tol", "type": "float", "readonly": false, "cmd": "nv ctrl/tol", "description": "valid below 3 mbar"},
{"path": "ctrl/tolhigh", "type": "float", "readonly": false, "cmd": "nv ctrl/tolhigh", "description": "valid above 4 mbar"},
{"path": "ctrl/openpulse", "type": "float", "readonly": false, "cmd": "nv ctrl/openpulse", "description": "time to open from completely closed to a significant opening"},
{"path": "ctrl/adjust_minpulse", "type": "bool", "readonly": false, "cmd": "nv ctrl/adjust_minpulse", "description": "adjust minpulse automatically"},
{"path": "autoflow", "type": "none", "kids": 24},
{"path": "autoflow/suspended", "type": "bool", "readonly": false, "cmd": "nv autoflow/suspended"},
{"path": "autoflow/prop", "type": "float", "readonly": false, "cmd": "nv autoflow/prop"},
{"path": "autoflow/flowstd", "type": "float", "readonly": false, "cmd": "nv autoflow/flowstd"},
{"path": "autoflow/flowlim", "type": "float", "readonly": false, "cmd": "nv autoflow/flowlim"},
{"path": "autoflow/smooth", "type": "float", "readonly": false, "cmd": "nv autoflow/smooth"},
{"path": "autoflow/difSize", "type": "float", "readonly": false, "cmd": "nv autoflow/difSize"},
{"path": "autoflow/difRange", "type": "float", "readonly": false, "cmd": "nv autoflow/difRange"},
{"path": "autoflow/flowSize", "type": "float", "readonly": false, "cmd": "nv autoflow/flowSize"},
{"path": "autoflow/convTime", "type": "float", "readonly": false, "cmd": "nv autoflow/convTime"},
{"path": "autoflow/Tmin", "type": "float", "readonly": false, "cmd": "nv autoflow/Tmin"},
{"path": "autoflow/script", "type": "text", "readonly": false, "cmd": "nv autoflow/script"},
{"path": "autoflow/getTemp", "type": "text", "readonly": false, "cmd": "nv autoflow/getTemp"},
{"path": "autoflow/getTset", "type": "text", "readonly": false, "cmd": "nv autoflow/getTset"},
{"path": "autoflow/getFlow", "type": "text", "readonly": false, "cmd": "nv autoflow/getFlow"},
{"path": "autoflow/difBuf", "type": "text"},
{"path": "autoflow/flowBuf", "type": "text"},
{"path": "autoflow/flowset", "type": "float"},
{"path": "autoflow/flowmin", "type": "float"},
{"path": "autoflow/flowmax", "type": "float"},
{"path": "autoflow/difmin", "type": "float"},
{"path": "autoflow/difmax", "type": "float"},
{"path": "autoflow/setmin", "type": "float"},
{"path": "autoflow/setmax", "type": "float"},
{"path": "autoflow/flowtarget", "type": "float"},
{"path": "calib", "type": "none", "kids": 2},
{"path": "calib/ln_per_min_per_mbar", "type": "float", "readonly": false, "cmd": "nv calib/ln_per_min_per_mbar"},
{"path": "calib/mbar_offset", "type": "float", "readonly": false, "cmd": "nv calib/mbar_offset"}]},
"hepump": {"base": "/hepump", "params": [
{"path": "", "type": "enum", "enum": {"neodry": 8, "xds35_auto": 0, "xds35_manual": 1, "sv65": 2, "other": 3, "no": -1}, "readonly": false, "cmd": "hepump", "description": "xds35: scroll pump, sv65: leybold", "kids": 10},
{"path": "send", "type": "text", "readonly": false, "cmd": "hepump send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "running", "type": "bool", "readonly": false, "cmd": "hepump running"},
{"path": "eco", "type": "bool", "readonly": false, "cmd": "hepump eco"},
{"path": "auto", "type": "bool", "readonly": false, "cmd": "hepump auto"},
{"path": "valve", "type": "enum", "enum": {"closed": 0, "closing": 1, "opening": 2, "opened": 3, "undefined": 4}, "readonly": false, "cmd": "hepump valve"},
{"path": "eco_t_lim", "type": "float", "readonly": false, "cmd": "hepump eco_t_lim", "description": "switch off eco mode when T_set < eco_t_lim and T < eco_t_lim * 2"},
{"path": "calib", "type": "float", "readonly": false, "cmd": "hepump calib", "visibility": 3},
{"path": "health", "type": "float"}]},
"hemot": {"base": "/hepump/hemot", "params": [
{"path": "", "type": "float", "readonly": false, "cmd": "run hemot", "kids": 30},
{"path": "send", "type": "text", "readonly": false, "cmd": "hemot send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "is_running", "type": "int", "readonly": false, "cmd": "hemot is_running", "visibility": 3},
{"path": "pos", "type": "float"},
{"path": "encoder", "type": "float"},
{"path": "zero", "type": "float", "readonly": false, "cmd": "hemot zero"},
{"path": "lowerlimit", "type": "float", "readonly": false, "cmd": "hemot lowerlimit"},
{"path": "upperlimit", "type": "float", "readonly": false, "cmd": "hemot upperlimit"},
{"path": "disablelimits", "type": "bool", "readonly": false, "cmd": "hemot disablelimits"},
{"path": "verbose", "type": "bool", "readonly": false, "cmd": "hemot verbose"},
{"path": "target", "type": "float"},
{"path": "runstate", "type": "enum", "enum": {"idle": 0, "running": 1, "finished": 2, "error": 3}},
{"path": "precision", "type": "float", "readonly": false, "cmd": "hemot precision"},
{"path": "maxencdif", "type": "float", "readonly": false, "cmd": "hemot maxencdif"},
{"path": "id", "type": "float", "readonly": false, "cmd": "hemot id"},
{"path": "pump_number", "type": "float", "readonly": false, "cmd": "hemot pump_number"},
{"path": "init", "type": "float", "readonly": false, "cmd": "hemot init"},
{"path": "maxspeed", "type": "float", "readonly": false, "cmd": "hemot maxspeed"},
{"path": "acceleration", "type": "float", "readonly": false, "cmd": "hemot acceleration"},
{"path": "maxcurrent", "type": "float", "readonly": false, "cmd": "hemot maxcurrent"},
{"path": "standbycurrent", "type": "float", "readonly": false, "cmd": "hemot standbycurrent"},
{"path": "freewheeling", "type": "bool", "readonly": false, "cmd": "hemot freewheeling"},
{"path": "output0", "type": "bool", "readonly": false, "cmd": "hemot output0"},
{"path": "output1", "type": "bool", "readonly": false, "cmd": "hemot output1"},
{"path": "input3", "type": "bool"},
{"path": "pullup", "type": "float", "readonly": false, "cmd": "hemot pullup"},
{"path": "nopumpfeedback", "type": "bool", "readonly": false, "cmd": "hemot nopumpfeedback"},
{"path": "eeprom", "type": "enum", "enum": {"ok": 0, "dirty": 1, "save": 2, "load": 3}, "readonly": false, "cmd": "hemot eeprom"},
{"path": "customadr", "type": "text", "readonly": false, "cmd": "hemot customadr"},
{"path": "custompar", "type": "float", "readonly": false, "cmd": "hemot custompar"}]},
"nvflow": {"base": "/nvflow", "params": [
{"path": "", "type": "float", "kids": 7},
{"path": "send", "type": "text", "readonly": false, "cmd": "nvflow send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "stddev", "type": "float"},
{"path": "nsamples", "type": "int", "readonly": false, "cmd": "nvflow nsamples"},
{"path": "offset", "type": "float", "readonly": false, "cmd": "nvflow offset"},
{"path": "scale", "type": "float", "readonly": false, "cmd": "nvflow scale"},
{"path": "save", "type": "bool", "readonly": false, "cmd": "nvflow save", "description": "unchecked: current calib is not saved. set checked: save calib"}]},
"warmup": {"base": "/warmup", "params": [ "warmup": {"base": "/warmup", "params": [
{"path": "", "type": "float", "readonly": false, "cmd": "run warmup", "description": "warmup", "kids": 28}, {"path": "", "type": "float", "readonly": false, "cmd": "run warmup", "description": "warmup", "kids": 28},
{"path": "send", "type": "text", "readonly": false, "cmd": "warmup send", "visibility": 3}, {"path": "send", "type": "text", "readonly": false, "cmd": "warmup send", "visibility": 3},
@ -211,4 +319,10 @@
{"path": "running", "type": "int"}, {"path": "running", "type": "int"},
{"path": "tolerance", "type": "float", "readonly": false, "cmd": "warmup tolerance"}, {"path": "tolerance", "type": "float", "readonly": false, "cmd": "warmup tolerance"},
{"path": "maxwait", "type": "float", "readonly": false, "cmd": "warmup maxwait"}, {"path": "maxwait", "type": "float", "readonly": false, "cmd": "warmup maxwait"},
{"path": "settle", "type": "float", "readonly": false, "cmd": "warmup settle"}]}} {"path": "settle", "type": "float", "readonly": false, "cmd": "warmup settle"}]},
"p": {"base": "/p", "params": [
{"path": "", "type": "float", "kids": 3},
{"path": "send", "type": "text", "readonly": false, "cmd": "p send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "raw", "type": "float"}]}}

Some files were not shown because too many files have changed in this diff Show More