412 Commits

Author SHA1 Message Date
1bb869b43e capillary heater: heater is now a writable
The value should show the actual heater power, but
we do not know yet the address. Currently the value
is just equal to the maxheater parameter.
2025-11-27 17:55:52 +01:00
3ede9eb9f4 frappy_psi.logo: revised version after merging capillary heater
- check that dil5 still works!

Change-Id: Ibe98e64088f2f886888af170a1f38d699927eb58
2025-11-27 09:32:37 +01:00
f57400feb9 frappy_psi.picontrol: stop when switching to manual mode
Change-Id: I3ffb9a109fb3b04fbca06f5a72acbfbd19525aae
2025-11-27 07:49:29 +01:00
38dd5b8ebb frappy_psi.ips_classic: small fixes
Change-Id: I6dcfc48d247a5581e969717b57675cf5d4cc34f7
2025-11-25 09:59:15 +01:00
3cc9cadeb9 frappy_psi.ips_classic: add skeleton code
Change-Id: I99d5c66e1b995559f3a8d876a91d904bf88904aa
2025-11-25 09:56:53 +01:00
dfb8037a65 frappy_psi.ahcapbridge: fix loss unit mechanism
Change-Id: Iba4ca4988146a71a01dcc6dbe911be5588bfe292
2025-11-21 07:58:24 +01:00
e8e5d2743a frappy_psi.ahcapbridge: fix behaviour when serial echo is on 2025-11-20 17:21:33 +01:00
77bda6a72f add frappy haake driver cfg
move haake sea configs to cfg/obsolete_sea_cfg
2025-11-20 11:33:51 +01:00
42ebe05d5b added an example config 2025-11-20 11:33:51 +01:00
765218eed2 frappy_psi.ahcapbridge: simplify
- remove the auto detect from replies
- improve readability
- add not implemented attributes in AHBase to avoid pylint
  complaints

Change-Id: I20aabe6c5cfaad94845cdfff22b889fb7ff7e257
2025-11-18 12:03:00 +01:00
f00d37b7a6 frappy.client.interactive: cosmetic fixes 2025-11-17 16:33:24 +01:00
3575921ac0 frappy_demo.test: add simple writable 2025-11-17 16:07:44 +01:00
f832e40898 add shortcut for acquisition modules
acq(<goal>) sets goal, starts and waits for completion
2025-11-17 16:06:07 +01:00
495ad01ff6 changes for leiden dil
- fixes on frappy_psiahcapbridge
- fixes on cfg files
- add cp1000 sea cfg files
2025-11-17 16:01:51 +01:00
e786c5ec77 frappy_psi.dilhtr: add Ctrlby wrapper
+ minor fix in tcs.py
2025-11-17 15:57:41 +01:00
a7b3f23bef frappy_psi.bridge: minor fixes
TODO: rename the file
2025-11-17 15:52:28 +01:00
151627b4f4 frappy.io: add readline method
For devices sending messages asynchronously, a simple
readline method is added. Waiting for characters is not
blocking writeline - only the actual reading is using
a lock.
This needs also some rework of frappy.lib.asynconn.
2025-11-17 15:48:45 +01:00
ee26c72ed4 add missing property check
check also values of properties with mandatory=False

Change-Id: I346691a7260a4d85b89c9620c097180da4e9d657
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37777
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2025-11-13 17:30:08 +01:00
9fe040e9d3 improve error handling during polls
improve the mechanism which avoids duplicated error messages
in the log file:

- extend to errors in doPoll
- trigger error messages every day, so that they appear in every
  logfile

+ add missing space in some error message

Change-Id: Icfaa06b43ee53f477483bab1f84def832fd0b977
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37432
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2025-11-13 17:29:58 +01:00
943995b1d7 improve error handling on startup
- configuration errors on startup are no longer collected in the
  'errors' attribute, but logged immediately and counted in a new
  'logError' method.
- generalConfig may be configured to raise the errors immediately
  instead
- Raise immediately on unhandled errors. Some of them were catched
  before which may lead to strange follow up errors.
- do not start poller thread, when the error count is non-zero
- as before, simple connection failures are not preventing startup,
  but now more severe errors (bad uri) will stop the server

Change-Id: I4f84ee8e86cf2925108c0fe92eaab796bb731091
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37776
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-11-13 17:29:41 +01:00
8291976c5d frappy.modulebase: remove unneeded while loop
Change-Id: I76cf2d5323187972a1c8849f6b8dc98f99f21f90
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37699
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: Georg Brandl <g.brandl@fz-juelich.de>
2025-11-13 15:38:33 +01:00
Georg Brandl
2ec2954159 datatypes: make length checks more consistent
Change-Id: If5a5422675571506085c73ff2051ba06f4fb37b2
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37844
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>
2025-11-13 15:35:39 +01:00
Georg Brandl
7769a5daa6 do not put entire blob value into error message, it might be megabytes
Change-Id: Ib94701022ea864b4d77d2ac632a8b6d74e8b2e16
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37842
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2025-11-13 15:30:35 +01:00
Georg Brandl
a31e5a5009 remove passive aggressiveness from error messages
Change-Id: I6a25703c65c11c1b57e2cad409b0da0bba724b5e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37841
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-11-13 15:30:17 +01:00
Georg Brandl
cf220382b9 datatypes: do not arbitrarily restrict maxlen of arrays/blobs to 2**16
Change-Id: Ic03ff05240c7caa22ae5adf555f871d09612eecd
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37837
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2025-11-13 15:30:17 +01:00
Georg Brandl
66f0e64b2e client: increase read buffer size
Receiving large replies with 8kb buffer size is painfully slow.

Change-Id: Ife4a439d01153c60e8fd96d2c7f2874918fb4012
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37838
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>
2025-11-13 15:30:17 +01:00
6e10382d98 io: add reconnect command
sometimes reconnecting helps to heal a broken connection

Change-Id: I368ecb549ca346d7db3484f6a8be0a3a9a86aff1
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37433
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-11-13 15:29:17 +01:00
Alexander Zaft
6600ec63fd module: apply datatype first
if the default value is given before the datatype, the module cannot be
created. Also fixes the remaining errors in issue 4913.

Fixes: 4913
Change-Id: I613576388bc3b9e7a5cdc7aa4d5ea73e549ae167
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37182
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-11-13 15:29:11 +01:00
Alexander Zaft
a62d85dc47 demo: add docstring to stop method of sampletemp
Change-Id: Ic575189eaf828d082a7ac382ad38141458c31522
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37183
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2025-11-13 15:29:05 +01:00
ef9b257a54 add config file to test function evaluator 2025-11-12 17:25:17 +01:00
af28f33018 frappy_psi.softcal: add function evaluator 2025-11-12 17:24:47 +01:00
a8b8fa1cc4 frappy_demo.test: add simple writable 2025-11-12 17:23:59 +01:00
17511b8bf2 frappy/lib: add math parser to evaluate a string function 2025-11-12 17:22:38 +01:00
308283412e frappy_psi.nanov: minor fixes
Change-Id: I0c6f1f09358155f49d4dedfe0c254dbe6b514b36
2025-11-05 16:37:42 +01:00
ebfb8a005d simplify errors on startup
Change-Id: I2b12abf15487000992e019e12002303036766d52
2025-11-05 16:23:46 +01:00
03c2f6eb98 frappy_psi.nanov: 'initial' version
- nneds some minor rework
2025-11-05 16:20:03 +01:00
e68ee356df frappy_psi.tcs: minor fixes 2025-11-05 15:53:45 +01:00
21c20c966c frappy_psi: add hcp 2025-11-05 15:53:45 +01:00
l_samenv
183f6dcec2 frappy_psi.muwaba: add meaning and units to cfg 2025-11-04 14:18:47 +01:00
71629c1d3a improvements when testing leiden
- triple current source
- software loop
2025-10-30 13:45:29 +01:00
b45635e4f8 make controlled_by configuration work properly
- secnode.py: initialize all modules before creating description
- fixes in ctrlby.py
2025-10-30 13:43:20 +01:00
2a4a37ed2f fixes for sea versions of ah2550 and ah2700 2025-10-30 13:43:20 +01:00
03ae83dbbc frappy_psi.ah2700: fixes 2025-10-30 13:43:20 +01:00
Alexander Zaft
07377c8bf5 core: Add Acquisition Interface
+ Adds first implementation for the Acquisition interface, split into
  Controller and Channel Modules
+ frappy_demo: adds an example simulation
+ new property AttachedDict for a collection of attached modules
+ move Attach and AttachDict to a new file frappy/attached.py
+ interface_classes creation changed. includes now also Acquisition

Change-Id: I198a96065a65bb28f73e468ce0465fca2d8734d7
2025-10-30 10:21:19 +01:00
84ee2dd508 specify interface_classes property explicitly on SECoP base classes
The mechanism to calculate the interface_classes automatically
gets more complicated whith the introduction if acquisition
classes. Instead of making the mechanism more complex its simpler
to give them explictly on the classes which correspond to the
predefined SECoP interface classes.

Change-Id: I9be7d9e54e3603b979ca2a823ec47b2075937ece
2025-10-30 10:21:05 +01:00
174da915d2 allow to remove a property defined in a base class
the same mechanism works already for parameters

Change-Id: I19da668ded9697b0f51069af9ddd752091abd0fc
2025-10-30 10:20:21 +01:00
24153d2584 datatypes: split base classes for internal and SECoP datatypes
Simple datatypes used only in properties like ValueType of NoneOr
do not need a couple of methods. Splitting the base class avoids
warnings about unimlemented abstract methods.

Change-Id: Ie7d5754c44a5fb5c3ed8569df544495450347082
2025-10-30 10:19:49 +01:00
8575a2f785 improve error messages when attached modules fail on startup
fix to align local frappy branch wip with gerrit repo

Change-Id: Iafbd8c5e4b67209046c252f2cafa69dcb6e2bbcb
2025-10-30 08:01:26 +01:00
51725d6d0d fix bug introduced in commit 7adb4d6f
Change-Id: I00f0101a437ec070a8a3f07b3c0766acde23cad4
2025-10-29 16:58:58 +01:00
08f9416de5 add dilhtr 2025-10-29 16:44:46 +01:00
7adb4d6f04 improve error messages when attached modules fail on startup
Change-Id: Ic1d2d77de2574043749ddbc00def48a6fe77b2bd
2025-10-27 13:14:26 +01:00
ea5fc16a51 frappy_psi.ls370res: add TemperatureChannel
Change-Id: I5a0fd6a1352f08583393862718f59ee5fb6eee32
2025-10-27 13:10:31 +01:00
542079c876 fs: fix renamed relais - must be relay
Change-Id: I13140ea094f58335cb34f4431810ae642b74e87a
2025-10-27 13:09:39 +01:00
160c3bfaf9 frappy_psi.furnace: small improvments
- got not ail when _interlock is None

Change-Id: Ic56bf7b7beeabc39bb8ced3388c7d0f14845463a
2025-10-27 11:59:42 +01:00
576723c650 frappy_psi.picontrol: add PIctrl
Change-Id: If212712b691ecabec1ff70d7040eb4e23924c01e
2025-10-27 11:59:00 +01:00
65e27e0913 add muwaba multiple water bath 2025-10-23 10:49:26 +02:00
82663a142e frapp_psi.iomopinmax: digital output and SimpleVoltageInput
- read back value in DigitalOutput.write_target
- correct scale factor in SimpleVoltageInput
2025-10-23 10:49:26 +02:00
Anik Stark
cda6e08d6c frappy_psi: added channels 2025-10-21 16:27:55 +02:00
Anik Stark
fed7ce2197 frappy_psi: fix write_on in tcs 2025-10-21 16:24:16 +02:00
Anik Stark
cb142c580d frappy_psi: add triple current source (leiden) 2025-10-21 15:41:40 +02:00
53497df207 ma11: fix bug in cfg/sea/ma11.config.json 2025-09-24 10:22:25 +02:00
866cb7569c add mspare stick 2025-08-29 11:26:39 +02:00
e327bb0974 frappy_psi.thermofisher: fix bug reading limits
+ add proper description into cfg file
2025-08-26 11:16:34 +02:00
08244e17e0 frappy_psi.thermofisher: add limits
also switch off control when T is outside limits by more than
security_margin

Change-Id: I3df513c7bc36ca23bf249c61fdfadb39870db3a5
2025-08-25 09:30:29 +02:00
431f4d1198 fi furnace: version for first tests
Change-Id: I841bc9dab210bfc907d2ae56c42198c30df9a3a4
2025-08-07 15:57:12 +02:00
bea6ea38ae interactive client: change command history location
- place file in ~/.local/state/
- create the directory if needed
- use pathlib

Change-Id: I9381c65fd63cea44013f2cfd16e14b8dc26c465c
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/37111
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-08-07 14:01:33 +02:00
Georg Brandl
8ba9f91f8a demo sample temp: allow stopping
Change-Id: I74ddb8d8c7919e0123431de3833d7f7a4a3c22bd
2025-08-07 13:38:57 +02:00
Jenkins system
52def86ac8 [deb] Release v0.20.7 2025-08-07 13:38:57 +02:00
Georg Brandl
c54ab5b9dd fix debian install
Change-Id: Ibb5e76f84b990a431769c9bfce9d9892009a323a
2025-08-07 13:38:57 +02:00
Jenkins system
30e7e52524 [deb] Release v0.20.6 2025-08-07 13:38:57 +02:00
Georg Brandl
cbf387ed87 install systemd units to /usr/lib
Change-Id: I3c7cbeda67f84008a29ae9f77f4086aaf3143090
2025-08-07 13:38:57 +02:00
96ef11ef84 haake: add a native frappy addon haake_add
+ add units to haake2
2025-07-11 14:52:45 +02:00
1128b5aba4 in dilution dump_targetpressure default changed to 50 2025-07-11 08:53:43 +02:00
l_samenv
cd3fdb6b62 ionopimax: add SimpleVoltageInput for iono pi
+ add thermofischer cfg (better name needed)
2025-07-10 11:20:22 +02:00
cdc2748818 dil5: reorder modules in cfg 2025-07-10 10:15:40 +02:00
eab846d28e frappy_psi.ls372: add 0 to the filter enum 2025-07-10 10:15:09 +02:00
db0ea2cc34 eurotherm_cfg: remove duplicate meaning
Change-Id: I9836b369ca7e268cc5aeb53a85a5690705c197d8
2025-07-08 11:33:27 +02:00
49c4edaa88 cfg: remove ori7test and fix sim_mlz_ccr12_v2
Change-Id: Iab40fe35b3a035c6957be6e45624b33c8f572311
2025-07-08 11:33:27 +02:00
337b91b799 bin/frappy-scan: add path for in-place usage 2025-07-08 09:07:42 +02:00
7814d054b9 mb11_cfg: remove sea_cfg from 2025-07-07 16:28:10 +02:00
8dc2677158 MA7 Stick heater loop fixed 2025-07-07 16:26:39 +02:00
cf151dd324 fs (and other furnaces): fixes on interlock
- try to make interlock right
- merge status where ever possbile
2025-07-07 16:05:27 +02:00
1e73440149 AnalogInput: write mode only when needed
- this does probably influence the input channel for some short time
+ issue a warning when read value is -1. this may indicate an error!
2025-07-07 16:03:45 +02:00
03dfb6aeb0 Merge branch 'wip' of https://gitea.psi.ch/linse/frappy into wip 2025-07-04 14:33:03 +02:00
73c620797c frappy.ctrlby: improvements
Change-Id: I7ea2d0398fa3b32002dbaa066e3923fef72535fa
2025-07-02 15:41:41 +02:00
abf5f21e16 SEA ah2700.addon: fix name 'bufperiod' 2025-07-02 11:27:55 +02:00
c7496fa21f SEA dil*.stick: add off=0 to the list of heater ranges 2025-07-02 11:27:25 +02:00
926dcd09e2 frappy_psi.sea: use secnode.name to determine the service
this fix is only needed in case uri is not given
2025-07-02 11:25:12 +02:00
83f40f0c33 fs: make 'sensor broken' message active
- for this use frappy_psi.PRtransmitter instead
  of ionopimax.CurrentInput
- add disabled_checks parameter
2025-06-30 18:09:07 +02:00
57b245c5ac fs: make 'sensor broken' message active
- for this use frappy_psi.PRtransmitter instead
  of ionopimax.CurrentInput
- add disabled_checks parameter
2025-06-30 18:01:55 +02:00
a5a4212691 DIL5: changed interface on ITC and LS372 2025-06-27 16:10:33 +02:00
a3d0549199 fs: improve and fix implementation
+ introduce WrapControlledBy and fix HasControlledBy

this in a new module before mercury/triton have been fixed
2025-06-27 14:48:02 +02:00
8385461163 softcal: change name of param 'calib' to 'calcurve'
make it more consistent

Change-Id: I8d8f62190c07179de25c893bfcdf11300010cd78
2025-06-24 10:50:29 +02:00
1a70099974 sea: fix problem with LscDrivable.read_value 2025-06-17 10:23:43 +02:00
c2b97a8dac SEA: change all sea min config to LscDrivable
Change-Id: If9828186377c78d8534d798cc59ce3a676f66222
2025-06-10 17:01:12 +02:00
27778e80f5 SEA: let tt.value be the sample temperature when dblctrl is on
for this tt has to be a frappy_psi.sea.LscDrivable

Change-Id: Ic452b39237d31a7765bc8b2f22a12c2f454fe7da
2025-06-10 16:50:49 +02:00
6c74c957a8 MB11: fix sample stick cfg
- remove mb11std
2025-06-10 12:31:35 +02:00
eecbe9ca6b MA6: fix bad sea config 2025-06-06 12:17:05 +02:00
385480a8cc SEA: again fixing paramFilter 2025-06-06 12:15:48 +02:00
c92cb22d97 dil5: updated cfg to match class 2025-06-05 17:49:02 +02:00
d85d80ba36 dil5: working alfa version
Change-Id: Ib6bf2234633cc760fc771a3f5c0beb4cb63a0f6d
2025-06-05 17:48:15 +02:00
2b7ee0a72c addressed parameters
- generic method to access parameters with just an address
  changed to avoid boilerplate code
- it would really be nice to include the generic methods
  into Module

Change-Id: I898e5eeb282f03d3177a324fa88813976fb15f3c
2025-06-05 17:48:15 +02:00
97140aa3b4 SEA: do not override write_target method
else it will not wait for is_running

+ fix in playground
2025-06-05 11:52:50 +02:00
1ad699fb66 jtccr cfg: missing tolerance and settle (need '.' in rel_paths) 2025-06-05 11:52:50 +02:00
52f90fe5be frappy_psi.manual_valves: make persistent and clean up
Change-Id: Ifbdc886f556064745a7aaffbfdc1bad2ad74632e
2025-06-05 10:22:36 +02:00
404b38d91a frappy.params: fix typo
Change-Id: I724615de8d8d6b44bc5aceded85bf40d2a5e96f7
2025-06-05 10:22:07 +02:00
3203c6c9b3 [WIP] clean dil5 configuration 2025-06-05 10:20:54 +02:00
472ae3f04d [WIP] dil5 improvements
Change-Id: I2b439bf5898601e10448511479bc67afa3edb4d3
2025-06-05 10:16:47 +02:00
04f7f6ece5 bin/frappy-cli: fix hosts variable 2025-06-05 10:16:42 +02:00
54c9fb9db9 SEA: again a fix - commits before damaged 'mf' of MA10 2025-06-03 11:43:43 +02:00
c0f6569f1b frappy-cli: connect to servers on localhost by default
--scan option: specify where to scan if not on localhost

Change-Id: I51a694eb3cb045e7d18c19a332db8e6ba063009b
2025-06-02 15:24:04 +02:00
745e15c709 SEA: another fix: make sure the value parameter comes first 2025-06-02 11:01:12 +02:00
62adec4874 jtccr: the main subpath in sea is names 'main', not 'tt' 2025-06-02 09:17:48 +02:00
9131bdab51 SEA: fix lost parameter on top level 2025-06-02 09:01:13 +02:00
a0629db53d SEA: fix missing parameters at top level 2025-05-30 10:45:56 +02:00
415acb42cf frappy.client.SecopClient: fix setParameterFromString
add missing datatype.export_value

Change-Id: I824d922fdda1ab548e4625982e1485ec4b758cb9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36172
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>
2025-05-27 15:54:27 +02:00
ee67a135e9 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>
2025-05-27 15:54:27 +02:00
ef826297fd 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>
2025-05-27 15:54:27 +02:00
50118e4ead haake: fix haake2 and add pumprunning 2025-05-27 15:51:54 +02:00
f9880f1473 frappy-psi.logo: fix IO.communicate reply 2025-05-27 15:41:33 +02:00
0dd13d7ef9 dil5/logo: fix valve addresses 2025-05-23 14:54:54 +02:00
6aec38d03e frappy_psi.logo: add comLog
+ fix bug in frappy_psi/dilution_statemachine.py
2025-05-23 10:31:51 +02:00
2238c20a37 DIL5: improve states in the state machine 2025-05-22 15:11:21 +02:00
018ed920b9 use longer, unique uris for USB serial connections 2025-05-22 15:10:38 +02:00
14f61b01db frappy_psi.pfeiffer_new: calculate crc in PfeifferProtocol 2025-05-22 15:08:41 +02:00
6fed5a3651 increase omit_unchanged_within to 60 s
+ fix a bug reading this from general config file
2025-05-22 08:38:51 +02:00
f3c7cdc7c4 frappy.client.SecopClient: fix setParameterFromString
add missing datatype.export_value

Change-Id: I824d922fdda1ab548e4625982e1485ec4b758cb9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36172
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>
2025-05-22 08:38:51 +02:00
4f3ebf0aaf 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>
2025-05-22 08:38:51 +02:00
85f14ace40 add units to jtccr 2025-05-22 08:38:51 +02:00
bc1ba4abb9 haake: make 2 versions depending on extra T sensor 2025-05-22 08:38:51 +02:00
cf50a372b3 varioxb: uncomment motor setup with triple quote 2025-05-22 08:38:51 +02:00
67ea5340ee ori4: revert removing '.' from rel_path
not sure if this is correct
2025-05-22 08:38:51 +02:00
7d6ac4d742 dil2/3/4: make He3 pump visible 2025-05-22 08:38:51 +02:00
a76e529a82 frappy_psi.phytron: improve clear_errors message 2025-05-22 08:38:51 +02:00
7dfe2925aa 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>
2025-05-22 08:38:51 +02:00
a6c86a5fe7 [WIP] further work on CCU4
Change-Id: Icdd6e253f276a5ade44fb4103306160fc348556b
2025-05-16 16:20:59 +02:00
d3280474c3 frappy.client.interactive: no pathlib needed here
allow the argument of the run function to be a simple string

Change-Id: I1d5de3802b6adc22a01a262d4cb017bf7dd084c5
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36343
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2025-05-16 15:43:00 +02:00
7cf32c4e7c config: add 'include' and 'override'
including a config file and overriding some properties is
helpful when we do not want to modify the original config
but run it with sligthly different properties.

this involves some redesign a.o.:
- modules are collected in a dict instead of a list in
  order for 'override' to find the related module
- checking for duplicates happens in the Collector

Do not warn when included file does not end with '_cfg.py',
as this may be intentional, in case a file is only used
via 'include' and not as cfg file alone.

+ remove unused method Collector.append
+ complain with specific error message when Node is not given

Change-Id: Id568f04d6d84622ef2547412eb6f288fcebf986f
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36357
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-05-16 15:43:00 +02:00
Jenkins system
48b79af96a [deb] Release v0.20.5 2025-05-16 15:43:00 +02:00
b1c920819e frappy.client.interactive: improve updates while driving
- instead to show first current 'value' and 'status', and then
  the changes, show changes only - this way updates appear
  in the expected order
- for this SecopClient.register_callback needs a 'callimmediately'
  argument

Change-Id: I3e91c2c15bca7fee2eba3b1bf1dd27313da3ae29
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36291
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2025-05-12 10:48:14 +02:00
8f2973c39d client: add SecopClient.execCommandFromString
analogous to setParameterFromString
to be used in simple clients where values of structured datatypes
are just python literals

Change-Id: I4936a3c5c0cac45bd7e875c938ce2700b4f4a979
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36262
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2025-05-12 10:46:39 +02:00
6343edc3cb frappy_psi/ls370res: various bug fixes
- avoid some error messages on disabled channels
- update value of channel switcher properly
- fix bug in set_param method

Change-Id: I16f5cf2d7abce0c0fae17266f0c8e949e8416b7a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36263
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2025-05-12 10:45:04 +02:00
bd00758460 frappy.client.SecopClient: fix setParameterFromString
add missing datatype.export_value

Change-Id: I824d922fdda1ab548e4625982e1485ec4b758cb9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36172
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>
2025-05-12 10:44:47 +02:00
Konstantin Kholostov
d2cce8f21c installer: add recipe to build macOS app bundle
Change-Id: Ief4401626db293fecc37f1d1ec72cf295b55fccf
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36060
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2025-05-12 10:41:59 +02:00
f6a5ef8f4d Add DIL5 Statemachine and LOGO 2025-05-09 10:35:11 +02:00
dad9536eb5 [WIP] fi furnace improvements
- still under development

Change-Id: I5fc22f041fb136b549016f510f06ea703122bee5
2025-05-08 08:29:45 +02:00
ccc66468d4 change prot for dummy to 5000
Change-Id: If35bbe6783fe133c0c6c87f402ba70aec00fa964
2025-05-01 11:43:49 +02:00
52215f9ec1 dummy_cfg.py: add test case with big enum
+ fix undefined value in frappy_psi.ls370res.Switcher

Change-Id: I59f2814b945533c487999f9af638e0fb2040e862
2025-05-01 08:52:30 +02:00
58549065fb more demo test cases
- added them to cfg/dummy_cfg.py
+ treat enum correctly in SecopClient.setParameterFromString

Change-Id: Ia5b2d8d3a21c3215cb93d90975086eb9995b1543
2025-04-25 15:38:16 +02:00
0230641b1d logdif.py: use single key to stop or continue
Change-Id: I53b3254074eda7491dd16bbc39168960b0980e39
2025-04-24 11:24:46 +02:00
b264455ad3 follow-up change to 35931: make Proxy a Module
Proxy must be a class, because of the new check for configured
'cls' inheriting from Module. Use Proxy.__new__ to implement
this.

Change-Id: I4bb036afc2ce92187a9049dff0a6f22b20c3a260
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36104
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>
2025-04-24 11:14:35 +02:00
07c5b32c5f revert 'change to new visibility spec'
nicos is not yet ready for this

Change-Id: Ibfbb7e32e06a6e0616ded8342bc5844fd531944f
2025-04-24 11:09:26 +02:00
PREVENT_DEFAULT
80cb3f08d7 add sr830 addons cfg 2025-04-24 10:50:09 +02:00
fb4755502b frappy_psi.parmod: extract a tuple element as own moudle
Change-Id: I8d904ed21f8a5c16ae71daf30c9a1ea42876b451
2025-04-24 10:48:35 +02:00
3580cb9dc0 frappy_psi.ionopimax.AnalogInput: set value range on datainfo
Change-Id: I1e3da956e829f69a0af416b7beadb81bd6bc0cb1
2025-04-23 08:37:55 +02:00
d681507f94 frappy_psi.furnace: special classes PTXgauge and PRtransmitter
move some initialization from cfg file to source code
+ make 'out of calibrated range' and 'sensor break' more generic

Change-Id: I3e92100fdb9c983f82665de9d8e063609cd7af5a
2025-04-23 08:28:08 +02:00
e0bd84cc3b change to new visibility spec
+ visibiliy is no longer an EnumType, as this would break
  the specs

Change-Id: I1197c82f31c33c210fdcda0b49a0c38027880d77
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36088
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>
2025-04-23 08:20:54 +02:00
9545cb4188 make sure unexported modules are initialized
take the opportunity for a small redesign:

- create a new method build_descriptive_data which
  calls secnode.get_modules also on unexported modules.

+ cache descriptive data

Change-Id: I4a0b8ac96108463dc0c800bb11a404206c26b092
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/36089
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>
2025-04-23 08:20:54 +02:00
1fead8b2c6 better dummy server for seaweb tests
- new config file dummy
- frappy_demo.test.Temp now creates WARN and ERROR status
  and may be disabled

Change-Id: Ibc7bb565f18c2c12cdc2a77bea1ee1bf1cc8bd41
2025-04-22 18:06:23 +02:00
809eda314b ionopimax: bug fixes 2025-04-15 10:57:02 +02:00
ca6fd1dd5e frappy_psi.ionopimax redesign
Change-Id: I46b62522c24ad9f0352ba7a784d39ffd1cb79ef3
2025-04-15 09:00:30 +02:00
d0c063c60b [WIP] further fixes for linse-fi 2025-04-14 17:26:26 +02:00
7a59cf4956 frappy-play: fix import order 2025-04-14 17:20:12 +02:00
7254d7f95c [WIP] fixes for linse-fi
Change-Id: Iac28e9654a764331cd903896879834cd6127a919
2025-04-14 11:46:02 +02:00
c368292873 fixes on picontrol and tdkpower
Change-Id: Ia891e7df23d8408b857dac795ed0ad9973ccf993
2025-04-08 17:15:17 +02:00
6a2aece383 fixes on small furnace 2025-04-08 17:12:44 +02:00
ad76a5d752 add fi_cfg.py (ILL furnace)
Change-Id: I8720dbeb3f29b07eaeae59558c58b2fa87096dc9
2025-04-08 15:22:35 +02:00
42e40db14b WIP frappy_psi/tdkpower
Change-Id: I80d1beb0fae2a1cdd2aa5fabc5d31c651c2cb3e7
2025-04-08 08:32:26 +02:00
343ce90321 peus-plot: optionally give x-range as 2nd argument
Change-Id: I445ef00487fc34343f5a0333643f61753a1c4948
2025-04-02 14:56:47 +02:00
75783b211a ultrasound.ControlRoi: fix control mechanism
Change-Id: I9d01de260d3bdc63eb1004ba4f714d38d1c0508c
2025-04-02 14:56:47 +02:00
l_samenv
36f2919ec2 cfg/ls370test update 2025-04-01 09:56:39 +02:00
7cca3192df improve error messages on module creation
- add name when target and value datatype are incompatible
- check that module class inherits from Module

Change-Id: I4edbdff1c250b64b74b1adf7287f9659dff69b26
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35931
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2025-04-01 09:55:44 +02:00
a632c53405 fix overriding Parameter with value
a property declared in a base class may be overriden
with a parameter in a subclass. this is already allowed.
if then, in the subsubclass it is overridden by a bare value,
it fails.

Patchset 1: add a test for this
Patchset 4: add the fix

Change-Id: Ia5a26076a9ee98439932643a03878342d56f8396
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35932
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2025-04-01 09:55:44 +02:00
a76425cb2e ultrasound.PE: fix control loop
Change-Id: I2b2bdf4ad48887ae256a68119f53e6a38048ce1e
2025-04-01 09:54:18 +02:00
d231e9ce06 [WIP] ccracks / ccu4: split ccu() into nv(), he() and flow()
Change-Id: I346330a5f350bf03eefe86c8e890b59afaaaa231
2025-03-31 17:30:29 +02:00
44750572d9 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2025-03-31 17:26:02 +02:00
e0ef6047e2 ultrasound.PulseEcho: fix issue with roi intervals
now it should be time +- 0.5 * size
2025-03-31 17:25:53 +02:00
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 ba59bd5498.

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
350 changed files with 16565 additions and 4134 deletions

View File

@@ -40,6 +40,7 @@ disable=missing-docstring
,locally-disabled
,fixme
,no-member
,not-callable
,wrong-import-position
,ungrouped-imports
,import-self
@@ -203,6 +204,9 @@ max-statements=150
# Maximum number of parents for a class (see R0901).
max-parents=20
# Maximum number of positional arguments
max-positional-arguments=10
# Maximum number of attributes for a class (see R0902).
max-attributes=50

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env python
# pylint: disable=invalid-name
# *****************************************************************************
# Copyright (c) 2015-2024 by the authors, see LICENSE
#
# 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

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# *****************************************************************************
# 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
# the terms of the GNU General Public License as published by the Free Software
@@ -24,19 +24,24 @@
import sys
import argparse
from os import path
import socket
from pathlib import Path
# 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.protocol.discovery import scan
def parseArgv(argv):
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--include',
help='file to execute after connecting to the clients', metavar='file',
type=str, action='append', default=[])
type=Path, action='append', default=[])
parser.add_argument('-s', '--scan',
help='hosts to scan for (-s subnet for all nodes in subnet)',
action='append', default=[])
parser.add_argument('-o', '--only-execute',
help='Do not go into interactive mode after executing files. \
Has no effect without --include.', action='store_true')
@@ -46,9 +51,38 @@ def parseArgv(argv):
return parser.parse_args(argv)
def own_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(0)
try:
# doesn't even have to be reachable
s.connect(('10.254.254.254', 1))
return s.getsockname()[0]
except Exception:
return '127.0.0.1'
finally:
s.close()
args = parseArgv(sys.argv[1:])
success = init(*args.node)
nodes = args.node
hosts = args.scan
if not nodes and not hosts:
hosts = ['localhost']
if hosts:
answers = []
for host in hosts:
ans = scan()
if host == 'subnet': # all in subnet
answers.extend(ans)
else: # filter by ip
ip = socket.gethostbyname(host)
if ip == '127.0.0.1':
ip = own_ip()
answers.extend(a for a in ans if a.address == ip)
nodes.extend(f'{h.hostname}:{h.port}' for h in answers)
success = init(*nodes)
run_error = ''
file_success = False

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# pylint: disable=invalid-name
# *****************************************************************************
# 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
# the terms of the GNU General Public License as published by the Free Software
@@ -26,10 +26,10 @@ from __future__ import print_function
import sys
import argparse
from os import path
from pathlib import Path
# 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
from mlzlog import ColoredConsoleHandler
@@ -46,8 +46,11 @@ def parseArgv(argv):
loggroup.add_argument('-q', '--quiet',
help='Supress everything but errors',
action='store_true', default=False)
parser.add_argument('-D', '--detailed',
help='Start in detailed mode',
action='store_true', default=False)
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=[])
return parser.parse_args(argv)
@@ -61,13 +64,14 @@ def main(argv=None):
loglevel = logging.DEBUG if args.debug else (logging.ERROR if args.quiet else logging.INFO)
logger = logging.getLogger('gui')
logger.setLevel(logging.DEBUG)
console = ColoredConsoleHandler()
console.setLevel(loglevel)
logger.addHandler(console)
if sys.stdout is not None:
console = ColoredConsoleHandler()
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)
win.show()

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# *****************************************************************************
# 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
# the terms of the GNU General Public License as published by the Free Software
@@ -22,14 +22,18 @@
# *****************************************************************************
import sys
from os import path
from pathlib import Path
# 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.logging import logger
from frappy.client.interactive import Console
from frappy.playground import play, USAGE
generalConfig.init()
logger.init()
if len(sys.argv) > 1:
play(sys.argv[1])
else:

61
bin/frappy-scan Executable file
View File

@@ -0,0 +1,61 @@
#!/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 sys
from pathlib import Path
# Add import path for inplace usage
sys.path.append(str(Path(__file__).absolute().parents[1]))
from frappy.protocol.discovery import scan, listen
def print_answer(answer, *, short=False):
if short:
# NOTE: keep this easily parseable!
print(f'{answer.equipment_id} {answer.hostname}:{answer.port}')
return
numeric = f' ({answer.address})' if answer.address == answer.hostname else ''
print(f'Found {answer.equipment_id} at {answer.hostname}{numeric}:')
print(f' Port: {answer.port}')
print(f' Firmware: {answer.firmware}')
desc = answer.description.replace('\n', '\n ')
print(f' Node description: {desc}')
print('-' * 80)
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:
for answer in listen():
print_answer(short=short)

View File

@@ -24,10 +24,10 @@
import argparse
import sys
from os import path
from pathlib import Path
# 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.logging import logger
@@ -35,7 +35,15 @@ from frappy.server import Server
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.add_argument("-v", "--verbose",
help="Output lots of diagnostic information",
@@ -60,9 +68,9 @@ def parseArgv(argv):
action='store',
help="comma separated list of cfg files,\n"
"defaults to <name_of_the_instance>.\n"
"cfgfiles given without '.cfg' extension are searched"
" in the configuration directory,"
" else they are treated as path names",
"If a config file contains a slash, it is treated as a"
"path, otherwise the file is searched for in the "
"configuration directory.",
default=None)
parser.add_argument('-g',
'--gencfg',
@@ -96,7 +104,9 @@ def main(argv=None):
generalConfig.init(args.gencfg)
logger.init(loglevel)
srv = Server(args.name, logger.log, cfgfiles=args.cfgfiles,
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:

View File

@@ -1,63 +0,0 @@
#!/usr/bin/env python
# *****************************************************************************
#
# 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")

53
bin/peus-plot Executable file
View File

@@ -0,0 +1,53 @@
#!/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')
maxx = None
if len(sys.argv) > 1:
maxy = float(sys.argv[1])
if len(sys.argv) > 2:
maxx = float(sys.argv[2])
else:
maxy = 0.02
iqplot = Plot(maxy, maxx)
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

@@ -22,114 +22,42 @@
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.
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
> 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 argparse
from os import path
import asyncore
from pathlib import Path
import socket
import time
import os
from ast import literal_eval
from socketserver import BaseRequestHandler, ThreadingTCPServer
# 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
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:
def debug(self, *args):
pass
@@ -143,43 +71,126 @@ class Logger:
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):
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",
help="output full communication",
action='store_true', default=False)
parser.add_argument("cls",
type=str,
help="simulator class.\n",)
help="communicator class.\n",)
parser.add_argument('-p',
'--port',
action='store',
help='server port or uri',
default=2089)
parser.add_argument('-o',
'--options',
action='store',
nargs='*',
help='options in the form key=value',
default=None)
return parser.parse_args(argv)
def poller(pollfunc):
while True:
time.sleep(1.0)
pollfunc()
def main(argv=None):
if argv is None:
argv = sys.argv
args = parse_argv(argv[1:])
opts = {'description': 'simulator'}
handler_args = {'verbose': args.verbose}
srv = Server(int(args.port), Handler, handler_args)
module = get_class(args.cls)(args.cls, Logger(), opts, srv)
handler_args['module'] = module
module.earlyInit()
mkthread(poller, module.doPoll)
srv.loop()
options = {'description': ''}
for item in args.options or ():
key, eq, value = item.partition('=')
if not eq:
raise ValueError(f"missing '=' in {item}")
try:
value = literal_eval(value)
except Exception:
pass
options[key] = value
srv = Server(int(args.port), args.cls, options, args.verbose)
srv.serve_forever()
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)

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',
'frappy_psi.qnw.QnwIO',
'connection for Quantum northwest',
uri='tcp://ldmcc01-ts:3004',
uri='tcp://ldm-fi-ts:3001',
)
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',
'frappy_psi.thermofisher.ThermFishIO',
'connection for ThermoFisher A10',
uri='tcp://ldmse-d910-ts:3001',
uri='tcp://ldm-fi-ts:3002',
)
Mod('T',

40
cfg/acquisition_cfg.py Normal file
View File

@@ -0,0 +1,40 @@
Node('measure.frappy.demo',
'''Measureable demo''',
'tcp://10770',
)
Mod('control',
'frappy_demo.acquisition.Controller',
'simple demo controller',
channels = {'first': 'chan1', 'second': 'chan2', 'third': 'chan3'},
pollinterval = 1,
)
Mod('chan1',
'frappy_demo.acquisition.Channel',
'simple channel demo',
goal = 50,
goal_enable = True,
pollinterval = 1,
)
Mod('chan2',
'frappy_demo.acquisition.Channel',
'simple channel demo',
pollinterval = 1,
)
Mod('chan3',
'frappy_demo.acquisition.Channel',
'simple channel demo',
pollinterval = 1,
)
Mod('single',
'frappy_demo.acquisition.SimpleAcquisition',
'Acquisition demo',
pollinterval = 1,
goal = 20,
goal_enable=True,
acquisition_key='single',
)
Mod('ng',
'frappy_demo.acquisition.NoGoalAcquisition',
'Acquisition demo',
pollinterval = 5,
)

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',
)

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

@@ -2,8 +2,17 @@ Node('ah2700.frappy.psi.ch',
'Andeen Hagerlin 2700 Capacitance Bridge',
)
Mod('cap',
'frappy_psi.ah2700.Capacitance',
'capacitance',
uri='lollypop-ts:3002',
Mod('cap_io',
'frappy_psi.ahcapbridge.IO', '',
uri='linse-leiden-ts:3002'
)
Mod('cap',
'frappy_psi.ahcapbridge.AH2700',
'capacitance',
io='cap_io',
loss_module = 'loss',
freq_module = 'freq',
)

View File

@@ -0,0 +1,20 @@
Node('ah2700.frappy.psi.ch',
'Andeen Hagerlin 2700 Capacitance Bridge',
)
Mod('cap_io',
'frappy_psi.ah2700.Ah2700IO',
'',
uri='linse-leiden-ts:3002',
timeout=60,
)
# this creates also cap_freq and cap_loss
Mod('cap',
'frappy_psi.ah2700.Capacitance',
'capacitance',
io = 'cap_io',
loss_name='loss',
freq_name='freq',
)

View File

@@ -2,6 +2,8 @@ Node('ah2700.addon.sea.psi.ch',
'Andeen Hagerlin 2700 Capacitance Bridge using SEA',
)
sea_cfg='ah2700.addon'
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'SEA connection to mbe_ah2700',
@@ -10,10 +12,30 @@ Mod('sea_addons',
service='addons',
)
Mod('cap',
Mod('ah',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
sea_object='cap',
extra_modules = ['cap', 'loss', 'freq']
)
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('freq',
'frappy_psi.sea.SeaWritable', '',
io='sea_addons',
single_module='ah.freq',
)
Mod('capslope',

31
cfg/addons/ahtwo_cfg.py Normal file
View File

@@ -0,0 +1,31 @@
Node('ahtwo.frappy.psi.ch',
'Andeen Hagerlin 2700 and 2550 Capacitance Bridges',
)
# TODO: adapt names (cap, cap2) to your experiment
Mod('cap_io',
'frappy_psi.ahcapbridge.IO', '',
uri='linse-leiden-ts:3002'
)
Mod('cap',
'frappy_psi.ahcapbridge.AH2700',
'capacitance',
io='cap_io',
loss_module = 'loss',
freq_module = 'freq',
)
Mod('cap2_io',
'frappy_psi.ahcapbridge.IO', '',
uri='linse-leiden-ts:3001'
)
Mod('cap2',
'frappy_psi.ahcapbridge.AH2550',
'capacitance',
io='cap2_io',
loss_module = 'loss2',
)

View File

@@ -14,4 +14,36 @@ Mod('t_be_filter',
'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

@@ -44,6 +44,7 @@ Mod('ts_high',
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',

View File

@@ -0,0 +1,15 @@
Node('haake.frappy.psi.ch',
'additional haake waterbath',
)
Mod('haake_io',
'frappy_psi.haake.HaakeIO',
'',
uri='sans-sample-ts:3006',
)
Mod('T2',
'frappy_psi.haake.TemperatureLoop',
'second haake',
io = 'haake_io',
)

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')

28
cfg/addons/sr830_cfg.py Normal file
View File

@@ -0,0 +1,28 @@
Node('srs830.ppms.psi.ch',
'',
interface='tcp://5000',
)
Mod('b',
'frappy_psi.SR830.XY',
'signal from Stanford Rasearch lockin',
uri='linse-976d-ts:3002',
)
Mod('bx',
'frappy_psi.parmod.Comp',
'x-comp',
read='b.value[0]',
unit='V',
)
Mod('by',
'frappy_psi.parmod.Comp',
'y-comp',
read='b.value[1]',
unit='V',
)
Mod('bf',
'frappy_psi.parmod.Par',
'lockin frequency',
read='b.freq',
unit='Hz',
)

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

@@ -3,8 +3,15 @@ Node('AH2700Test.psi.ch',
'tcp://5000',
)
Mod('cap',
'frappy_psi.ah2700.Capacitance',
'capacitance',
uri='ldmse3-ts:3015',
Mod('io',
'frappy_psi.ahcapbridge.IO', '',
uri='linse-leiden-ts:3002'
)
Mod('cap',
'frappy_psi.ahcapbridge.AH2700',
'capacitance',
io='io',
loss_module = 'loss',
freq_module = 'freq',
)

340
cfg/dil5_cfg.py Normal file
View File

@@ -0,0 +1,340 @@
# by id (independent of plug location, but may not neccessarly be unique)
# to verify just do:
# ls /dev/serial/by-id
turbo_uri = '/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A601PCGF-if00-port0'
press_uri = '/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AH07445U-if00-port0'
itc_uri = '/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_D-if00-port0'
lsc_uri = '192.168.1.2:7777'
logo_ip = '192.168.0.3'
# by plug location would also be possible (/dev/serial/by-path)
Node('dil5.psi.ch',
'dil5 on linse-dil5',
interface='tcp://5000',
secondary = ['ws://8010']
)
Mod('logo',
'frappy_psi.logo.IO',
'',
ip_address = logo_ip,
tcap_client = 0x3000,
tsap_server = 0x2000
)
Mod('V1',
'frappy_psi.logo.DigitalActuator',
'Valves',
io = 'logo',
feedback_addr ="V1025.0",
output_addr ="V1064.3"
)
Mod('V2',
'frappy_psi.logo.DigitalActuator',
'dil bypass',
io = 'logo',
feedback_addr ="V1024.2",
output_addr ="V1064.0",
)
Mod('V4',
'frappy_psi.logo.DigitalActuator',
'compressor to dump',
io = 'logo',
# feedback seems not to work
output_addr ="V1064.7",
target_addr ="V404.1",
)
Mod('V5',
'frappy_psi.logo.DigitalActuator',
'compressor input',
io = 'logo',
feedback_addr ="V1024.4",
output_addr ="V1064.2",
)
Mod('V9',
'frappy_psi.logo.DelayedActuator',
'dump output',
io = 'logo',
delay_addr = 'VW24',
feedback_addr ="V1024.3",
output_addr ="V1064.5",
target_addr ="V404.3",
)
Mod('forepump',
'frappy_psi.logo.DigitalActuator',
'forepump',
io = 'logo',
output_addr ="V1064.6",
target_addr ="V404.4",
)
Mod('compressor',
'frappy_psi.logo.DigitalActuator',
'',
io = 'logo',
output_addr ="V1064.4",
target_addr ="V404.2",
)
Mod('p2',
'frappy_psi.logo.Pressure',
'pressure after compressor',
io = 'logo',
addr ="VW0",
pollinterval=0.5,
)
Mod('p1',
'frappy_psi.logo.Pressure',
'dump pressure',
io = 'logo',
addr ="VW28",
pollinterval=0.5,
)
Mod('p5',
'frappy_psi.logo.Pressure',
'pressure after forepump',
io = 'logo',
addr ="VW4",
pollinterval = 0.5,
)
Mod('airpressure',
'frappy_psi.logo.Comparator',
'Airpressure state',
io = 'logo',
addr ="V1024.7",
threshold = 500,
pollinterval = 0.5,
)
Mod('io_pfeiffer',
'frappy_psi.pfeiffer_new.PfeifferProtocol',
'',
uri=f'serial://{press_uri}?baudrate=9600+parity=none+bytesize=8+stopbits=1',
)
Mod('io_turbo',
'frappy_psi.pfeiffer_new.PfeifferProtocol',
'',
uri=f'serial://{turbo_uri}?baudrate=9600+parity=none+bytesize=8+stopbits=1',
)
Mod('p3',
'frappy_psi.pfeiffer_new.RPT200',
'Pressure in HPa',
io = 'io_pfeiffer',
address= 2,
)
Mod('p4',
'frappy_psi.pfeiffer_new.RPT200',
'Pressure in HPa',
io = 'io_pfeiffer',
address= 4
)
Mod('turbopump',
'frappy_psi.pfeiffer_new.TCP400',
'Pfeiffer Turbopump',
io = 'io_turbo',
address= 1
)
Mod('MV10',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV10'
)
Mod('MV13',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV13'
)
Mod('MV8',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV8'
)
Mod('MVB',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MVB'
)
Mod('MV2',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV2'
)
Mod('MV1',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV1'
)
Mod('MV3a',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV3a'
)
Mod('MV3b',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV3b'
)
Mod('GV1',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve GV1'
)
Mod('GV2',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve GV2'
)
Mod('MV14',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV14'
)
Mod('MV12',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV12'
)
Mod('MV11',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV11'
)
Mod('MV9',
'frappy_psi.manual_valves.ManualValve',
'Manual Valve MV9'
)
Mod('itc',
'frappy_psi.mercury.IO',
'connection to MercuryiTC',
uri=f'serial://{itc_uri}?baudrate=115200+parity=none+bytesize=8+stopbits=1',
)
Mod('T_still_wup',
'frappy_psi.mercury.TemperatureLoop',
'still warmup temperature',
slot='MB1.T1',
io='itc',
)
Mod('T_one_K',
'frappy_psi.mercury.TemperatureLoop',
'1 K plate warmup temperature',
slot='DB5.T1',
io='itc',
)
Mod('T_mix_wup',
'frappy_psi.mercury.TemperatureLoop',
'mix. chamber warmup temperature',
slot='DB6.T1',
io='itc',
)
Mod('T_ivc_wup',
'frappy_psi.mercury.TemperatureLoop',
'IVC warmup temperature',
slot='DB7.T1',
io='itc',
)
Mod('T_cond',
'frappy_psi.mercury.TemperatureLoop',
'condenser temperature',
slot='DB8.T1',
io='itc',
)
Mod('safety',
'frappy_psi.dilution.Interlock',
'interlock mechanism',
io='logo',
dil='dil',
)
Mod('dil',
'frappy_psi.dilution.DIL5',
'dilution state machine and parameters',
condenseline_pressure = "p2",
condense_valve = "V9",
dump_valve = "V4",
forepump = "forepump",
compressor = "compressor",
turbopump = "turbopump",
condenseline_valve = "V1",
circuitshort_valve = "V2",
still_pressure = "p4",
still_pressure_turbo = "p3",
#ls372 = "res1",
dump_pressure = "p1",
condensing_p_low = 1200,
condensing_p_high = 1500,
)
## Dilution lakeshore Temperature controller
Mod('io_ls273',
'frappy_psi.ls372.StringIO',
'io for Ls372',
uri=lsc_uri,
)
Mod('sw',
'frappy_psi.ls372.Switcher',
'channel switcher',
io = 'io_ls273',
)
Mod('T_ivc',
'frappy_psi.ls372.TemperatureChannel',
'mix temperature chan 2',
channel = 2,
switcher = 'sw',
)
Mod('T_still',
'frappy_psi.ls372.TemperatureChannel',
'mix temperature chan 3',
channel = 3,
switcher = 'sw',
)
Mod('T_sorb',
'frappy_psi.ls372.TemperatureChannel',
'mix temperature chan 1',
channel = 1,
switcher = 'sw',
)
Mod('T_cp',
'frappy_psi.ls372.TemperatureChannel',
'mix temperature chan 4',
channel = 4,
switcher = 'sw',
)
Mod('T_mix',
'frappy_psi.ls372.TemperatureLoop',
'mix temperature chan 5',
channel = 5,
htrrng = '1mA',
switcher = 'sw',
)

16
cfg/dilhtr_cfg.py Normal file
View File

@@ -0,0 +1,16 @@
Node('dilhtrtest.psi.ch',
'dilhtr test',
'tcp://5000',
)
Mod('io',
'frappy_psi.dilhtr.IO',
'dilhtr communication',
uri='serial:///dev/tty.usbserial-21440?baudrate=9600',
)
Mod('heater',
'frappy_psi.dilhtr.Heater',
'dilhtr box',
io='io',
)

136
cfg/dummy_cfg.py Normal file
View File

@@ -0,0 +1,136 @@
Node('test.config.frappy.demo',
'''short description of the testing sec-node
This description for the node can be as long as you need if you use a multiline string.
Very long!
The needed fields are Equipment id (1st argument), description (this)
and the main interface of the node (3rd arg)
''',
'tcp://5000',
)
Mod('attachtest',
'frappy_demo.test.WithAtt',
'test attached',
att = 'LN2',
)
Mod('pinata',
'frappy_demo.test.Pin',
'scan test',
)
Mod('recursive',
'frappy_demo.test.RecPin',
'scan test',
)
Mod('LN2',
'frappy_demo.test.LN2',
'random value between 0..100%',
value = Param(default = 0, unit = '%'),
)
Mod('heater',
'frappy_demo.test.Heater',
'some heater',
maxheaterpower = 10,
)
Mod('T1',
'frappy_demo.test.Temp',
'some temperature',
sensor = 'X34598T7',
)
Mod('T2',
'frappy_demo.test.Temp',
'some temperature',
sensor = 'X34598T8',
)
Mod('T3',
'frappy_demo.test.Temp',
'some temperature',
sensor = 'X34598T9',
)
Mod('Lower',
'frappy_demo.test.Lower',
'something else',
)
Mod('Decision',
'frappy_demo.test.Mapped',
'Random value from configured property choices. Config accepts anything ' \
'that can be converted to a list',
choices = ['Yes', 'Maybe', 'No'],
)
Mod('c',
'frappy_demo.test.Commands',
'a command test',
)
Mod('cryo',
'frappy_demo.cryo.Cryostat',
'A simulated cc cryostat with heat-load, specific heat for the sample and a '
'temperature dependent heat-link between sample and regulation.',
group='very important/stuff',
jitter=0.1,
T_start=10.0,
target=10.0,
looptime=1,
ramp=6,
maxpower=20.0,
heater=4.1,
mode='pid',
tolerance=0.1,
window=30,
timeout=900,
p = Param(40, unit='%/K'), # in case 'default' is the first arg, we can omit 'default='
i = 10,
d = 2,
pid = Group('p', 'i', 'd'),
pollinterval = Param(export=False),
value = Param(unit = 'K', test = 'customized value'),
)
Mod('heatswitch',
'frappy_demo.modules.Switch',
'Heatswitch for `mf` device',
switch_on_time = 5,
switch_off_time = 10,
)
Mod('bool',
'frappy_demo.modules.BoolWritable',
'boolean writable test',
)
Mod('lscom',
'frappy_psi.ls370sim.Ls370Sim',
'simulated serial communicator to a LS 370',
visibility = 3
)
Mod('sw',
'frappy_psi.ls370res.Switcher',
'channel switcher for Lsc controller',
io = 'lscom',
)
Mod('a',
'frappy_psi.ls370res.ResChannel',
'resistivity',
channel = 1,
switcher = 'sw',
)
Mod('b',
'frappy_psi.ls370res.ResChannel',
'resistivity',
channel = 3,
switcher = 'sw',
)

100
cfg/fi2_cfg.py Normal file
View File

@@ -0,0 +1,100 @@
Node('fi2.psi.ch',
'vacuum furnace ILL Type',
'tcp://5000',
)
Mod('htr_io',
'frappy_psi.tdkpower.IO',
'powersupply communicator',
uri = 'serial:///dev/ttyUSB0',
)
Mod('htr',
'frappy_psi.tdkpower.Power',
'heater power',
io= 'htr_io',
)
Mod('out',
'frappy_psi.tdkpower.Output',
'heater output',
io = 'htr_io',
maxvolt = 5,
maxcurrent = 25,
)
Mod('relais',
'frappy_psi.ionopimax.DigitalOutput',
'relais for power output',
addr = 'o2',
)
Mod('T_main',
'frappy_psi.ionopimax.CurrentInput',
'sample temperature',
addr = 'ai4',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_extra',
'frappy_psi.ionopimax.CurrentInput',
'extra temperature',
addr = 'ai3',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_htr',
'frappy_psi.ionopimax.CurrentInput',
'heater temperature',
addr = 'ai2',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_wall',
'frappy_psi.ionopimax.VoltageInput',
'furnace wall temperature',
addr = 'av2',
rawrange = (0, 1.5),
valuerange = (0, 150),
value = Param(unit='degC'),
)
Mod('T',
'frappy_psi.picontrol.PI',
'controlled Temperature',
input = 'T_htr',
output = 'out',
relais = 'relais',
p = 2,
i = 0.01,
)
Mod('interlocks',
'frappy_psi.furnace.Interlocks',
'interlock parameters',
input = 'T_htr',
wall_T = 'T_wall',
vacuum = 'p',
relais = 'relais',
control = 'T',
wall_limit = 50,
vacuum_limit = 0.1,
)
Mod('p_io',
'frappy_psi.pfeiffer.IO',
'pressure io',
uri='serial:///dev/ttyUSBlower',
)
Mod('p',
'frappy_psi.pfeiffer.Pressure',
'pressure reading',
io = 'p_io',
)

116
cfg/fi_cfg.py Normal file
View File

@@ -0,0 +1,116 @@
Node('fi.psi.ch',
'ILL furnace',
'tcp://5000',
)
Mod('T_main',
'frappy_psi.furnace.PRtransmitter',
'sample temperature',
addr='ai2',
valuerange=(0, 2300),
value=Param(unit='degC'),
)
Mod('T_extra',
'frappy_psi.furnace.PRtransmitter',
'extra temperature',
addr='ai1',
valuerange=(0, 2300),
value=Param(unit='degC'),
)
Mod('T_wall',
'frappy_psi.ionopimax.VoltageInput',
'furnace wall temperature',
addr='av2',
rawrange=(0, 1.5),
valuerange=(0, 150),
value=Param(unit='degC'),
)
Mod('T3',
'frappy_psi.furnace.PRtransmitter',
'extra temperature',
addr='ai3',
valuerange=(0, 1372),
value=Param(unit='degC'),
)
Mod('T4',
'frappy_psi.furnace.PRtransmitter',
'extra temperature',
addr='ai4',
valuerange=(0, 1372),
value=Param(unit='degC'),
)
Mod('T',
'frappy_psi.furnace.PIctrl',
'controlled temperature ',
value = Param(unit='degC'),
input_module = 'T_htr',
output_module = 't_out',
output_min = 0,
output_max = 100,
p = 1,
i = 0.01,
)
Mod('htr_io',
'frappy_psi.tdkpower.IO',
'powersupply communicator',
uri='serial:///dev/ttyUSB0?baudrate=9600',
)
Mod('htr_power',
'frappy_psi.tdkpower.Power',
'heater power',
io='htr_io',
)
Mod('htr',
'frappy_psi.furnace.TdkOutput',
'heater output',
io='htr_io',
maxvolt=8,
maxcurrent=200,
)
Mod('flowswitch',
'frappy_psi.ionopimax.DigitalInput',
'flow switch',
addr='dt2',
true_level='low',
)
Mod('interlock',
'frappy_psi.furnace.Interlocks',
'interlock parameters',
main_T='T_main',
extra_T='T_extra',
wall_T='T_wall',
vacuum='p',
control='T',
htr='htr',
flowswitch='flowswitch',
wall_limit=50,
main_T_limit = 1400,
extra_T_limit = 1400,
vacuum_limit=0.001,
)
Mod('p',
'frappy_psi.furnace.PKRgauge',
'pressure reading',
addr = 'av1',
rawrange = (1.82, 8.6),
valuerange = (5e-9, 1000),
value = Param(unit='mbar'),
)
Mod('vso',
'frappy_psi.ionopimax.VoltagePower',
'voltage power output',
target = 24,
export = False,
)

132
cfg/fs_cfg.py Normal file
View File

@@ -0,0 +1,132 @@
Node('fs.psi.ch',
'small vacuum furnace',
'tcp://5000',
)
Mod('T',
'frappy_psi.furnace.PI2',
'controlled Temperature on sample (2nd loop)',
value = Param(unit='degC'),
meaning = ['temperature', 30],
input_module = 'T_sam',
output_module = 'T_reg',
p = 1.2,
i = 0.005,
)
Mod('T_reg',
'frappy_psi.furnace.PIctrl',
'controlled Temperature on heater',
value = Param(unit='degC'),
input_module = 'T_htr',
output_module = 't_out',
output_min = 0,
output_max = 100,
p = 1,
i = 0.003,
)
#Mod('p_reg',
# 'frappy_psi.furnace.PI',
# 'controlled pressure',
# input_module = 'p',
# output_module = 't_out',
# p = 1,
# i = 0.005,
# )
Mod('T_htr',
'frappy_psi.furnace.PRtransmitter',
'heater temperature',
addr = 'ai4',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_sam',
'frappy_psi.furnace.PRtransmitter',
'sample temperature',
addr = 'ai2',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_extra',
'frappy_psi.furnace.PRtransmitter',
'extra temperature',
addr = 'ai3',
valuerange = (0, 1372),
value = Param(unit='degC'),
)
Mod('T_wall',
'frappy_psi.ionopimax.VoltageInput',
'furnace wall temperature',
addr = 'av2',
rawrange = (0, 1.5),
valuerange = (0, 150),
value = Param(unit='degC'),
)
Mod('htr_io',
'frappy_psi.bkpower.IO',
'powersupply communicator',
uri = 'serial:///dev/ttyUSBupper',
)
Mod('htr',
'frappy_psi.bkpower.Power',
'heater power',
io= 'htr_io',
)
Mod('t_out',
'frappy_psi.bkpower.Output',
'heater output',
# p_value = 'p_out',
io = 'htr_io',
maxvolt = 50,
maxcurrent = 2,
)
Mod('relay',
'frappy_psi.ionopimax.DigitalOutput',
'relais for power output',
addr = 'o2',
)
Mod('interlock',
'frappy_psi.furnace.Interlocks',
'interlock parameters',
input = 'T_htr',
wall_T = 'T_wall',
htr_T = 'T_htr',
main_T = 'T_sam',
reg_T = 'T_reg',
extra_T = 'T_extra',
htr = 't_out',
vacuum = 'p',
relay = 'relay',
control = 'T',
wall_limit = 60,
vacuum_limit = 0.001,
disabled_checks = 'T_extra',
)
Mod('p',
'frappy_psi.furnace.PKRgauge',
'pressure reading',
addr = 'av1',
rawrange = (1.82, 8.6),
valuerange = (5e-9, 1000),
value = Param(unit='mbar'),
)
Mod('vso',
'frappy_psi.ionopimax.VoltagePower',
'voltage power output',
target = 24,
export = False,
)

94
cfg/gas10ka_cfg.py Normal file
View File

@@ -0,0 +1,94 @@
Node('gas10ka.psi.ch',
'10kBar Gas pressure stick',
interface='tcp://5010',
)
Mod('io',
'frappy_psi.logo.IO',
'',
ip_address = "192.168.1.1",
tcap_client = 0x3000,
tsap_server = 0x2000
)
Mod('R_pt10k',
'frappy_psi.logo.Resistor',
'raw sensor value of T_p10k',
io = 'io',
addr = "VW0",
)
Mod('T_pt10k',
'frappy_psi.softcal.Sensor',
'temperature close to sample',
value=Param(unit='K'),
rawsensor='R_pt10k',
calcurve='pt10000e',
)
Mod('R_top',
'frappy_psi.logo.Resistor',
'raw sensor value of T_top',
io = 'io',
addr = "VW2",
)
Mod('T_top',
'frappy_psi.softcal.Sensor',
'capillary temperature at highest position',
value=Param(unit='K'),
rawsensor='R_top',
calcurve='pt1000e',
)
Mod('R_mid',
'frappy_psi.logo.Resistor',
'raw sensor value of T_mid',
io = 'io',
addr = "VW6",
)
Mod('T_mid',
'frappy_psi.softcal.Sensor',
'capillary temperature at mid position',
value=Param(unit='K'),
rawsensor='R_mid',
calcurve='pt1000e',
)
Mod('R_bot',
'frappy_psi.logo.Resistor',
'raw sensor value of T_bot',
io = 'io',
addr = "VW4",
)
Mod('T_bot',
'frappy_psi.softcal.Sensor',
'capillary temperature at lower position',
value=Param(unit='K'),
rawsensor='R_bot',
calcurve='pt1000e',
)
Mod('R_sam_cx',
'frappy_psi.logo.Resistor',
'sensor',
io = 'io',
addr = "VW16",
)
Mod('T_sam_cx',
'frappy_psi.softcal.Sensor',
'?',
value=Param(unit='K'),
rawsensor='R_sam_cx',
calcurve='X174785',
)
Mod('heater',
'frappy_psi.capillary_heater.Heater',
'the capillary heater',
io = 'io',
)

View File

@@ -4,4 +4,4 @@ logdir = ./log
piddir = ./pid
confdir = ./cfg
comlog = True
omit_unchanged_within = 60

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,33 +4,22 @@ Node('ls340test.psi.ch',
)
Mod('io',
'frappy_psi.lakeshore.Ls340IO',
'frappy_psi.lakeshore.IO340',
'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',
'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',
'cold finger temperature',
io='io',
channel='A'
)
Mod('Heater',
'frappy_psi.lakeshore.HeaterOutput',
'heater output',
channel='B',
io='io',
resistance=25,
max_power=50,
current=1
'sample temperature',
# output_module='Heater',
device='dev',
channel='A',
calcurve='x29746',
)

View File

@@ -6,7 +6,8 @@ Node('LscSIM.psi.ch',
Mod('io',
'frappy_psi.ls370res.StringIO',
'io for Ls370',
uri = 'localhost:2089',
# uri = 'localhost:2089',
uri = 'linse-976d-ts:3007',
)
Mod('sw',
'frappy_psi.ls370res.Switcher',
@@ -17,7 +18,7 @@ Mod('res1',
'frappy_psi.ls370res.ResChannel',
'resistivity chan 1',
vexc = '2mV',
channel = 1,
channel = 2,
switcher = 'sw',
)
Mod('res2',

View File

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

View File

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

View File

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

View File

@@ -7,13 +7,14 @@ Mod('sea_main',
config = 'ccrpe.config',
service = 'main',
)
Mod('tt',
Mod('ts',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
rel_paths=['.', 'tm'],
rel_paths=['ts', 'set'],
)
Mod('ts',
Mod('tm',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',

View File

@@ -9,18 +9,19 @@ Mod('sea_main',
service='main',
)
Mod('tt',
Mod('ts',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
rel_paths=['.', 'tm'],
rel_paths=['ts', 'set'],
)
Mod('ts',
Mod('tm',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['ts'],
rel_paths=['tm'],
)
Mod('te',

View File

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

View File

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

View File

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

View File

@@ -6,10 +6,10 @@ Mod('sea_main',
'main sea connection for haakeuro.config',
config = 'eurotherm.config',
service = 'main',
meaning=('temperature', 11),
)
Mod('te',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'te',
meaning=('temperature', 11),
)

View File

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

View File

@@ -1,12 +1,14 @@
Node('flamemag.psi.ch',
'flame magnet',
interface='tcp://5000'
interface='tcp://5000',
)
sea_cfg = 'flamemag.config'
Mod('cio',
'frappy_psi.cryoltd.IO',
'IO to cryo ltd software',
uri='tcp://flamedil:3128',
uri='tcp://flamemag:3128',
)
Mod('main',

View File

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

View File

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

View File

@@ -1,21 +1,15 @@
Node('haakeuro.config.sea.psi.ch',
'Haake thermostat + Eurotherm controller',
Node('haake.frappy.psi.ch',
'additional haake waterbath',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for haakeuro.config',
config = 'haake.config',
service = 'main',
Mod('haake_io',
'frappy_psi.haake.HaakeIO',
'',
uri='sans-sample-ts:3006',
)
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',
Mod('T2',
'frappy_psi.haake.TemperatureLoop',
'second haake',
io = 'haake_io',
)

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('pauto',

View File

@@ -12,8 +12,10 @@ Mod('sea_main',
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['.', 'tt'],
rel_paths=['main', '.', 'set'],
value=Param(unit='K'),
)
Mod('T_ccr',
@@ -21,6 +23,7 @@ Mod('T_ccr',
io='sea_main',
sea_object='tt',
rel_paths=['ccr'],
value=Param(unit='K'),
)
Mod('jtccr',
@@ -100,30 +103,35 @@ Mod('p1',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p1',
value=Param(unit='mbar'),
)
Mod('p2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p2',
value=Param(unit='mbar'),
)
Mod('p3',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p3',
value=Param(unit='mbar'),
)
Mod('p4',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p4',
value=Param(unit='mbar'),
)
Mod('pressreg',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='pressreg',
value=Param(unit='mbar'),
)
Mod('epc',

224
cfg/main/leiden_cfg.py Normal file
View File

@@ -0,0 +1,224 @@
Node('leiden.psi.ch',
'''Leiden Dilution''',
)
ah2700_uri = 'linse-leiden-ts:3002' # used in cfg/addons/ahtwo_cfg.pt
ls370_uri = 'linse-leiden-ts:3004' # used in ~/sea/tcl/leiden.config
tcs_uri = 'linse-leiden-ts:3005'
#nanov_uri = 'linse-leiden-ts:3006' # used in ~/sea/tcl/leiden.config
k2601b_uri = 'linse-leiden-ts:3006' # used for HC experiment as heater
dilhtr_uri = 'linse-leiden-ts:3007'
srbridge_uri = 'linse-leiden-ts:3008'
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for leiden.config',
config = 'leiden.config',
service = 'main',
)
for name in ['T3K', 'Tstill', 'T50mK', 'Tmxlow', 'Tmxhigh', 'Tmxcx', 'Tblueo',
'Tpt50', 'Tpt3high', 'Tpt3low', 'Twhite', 'Tgreen']:
mname = name.replace('T','T_')
Mod(mname,
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=[name],
value=Param(unit='K'),
extra_modules = ['raw'],
)
Mod(name.replace('T', 'R_'),
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
value=Param(unit='Ohm'),
single_module=f'{mname}.raw'
)
#Mod('cmn',
# 'frappy_psi.sea.SeaReadable', '',
# io = 'sea_main',
# sea_object = 'cmn',
# extra_modules = ['u1', 'u2', 'temp'],
#)
#Mod('T_cmn',
# 'frappy_psi.sea.SeaReadable', '',
# io='sea_main',
# value=Param(unit='K'),
# single_module='cmn.temp',
#)
#Mod('V_fixp',
# 'frappy_psi.sea.SeaReadable', '',
# io='sea_main',
# value=Param(unit='V'),
# single_module='cmn.u2',
#)
#Mod('V_cmn',
# 'frappy_psi.sea.SeaReadable', '',
# io='sea_main',
# value=Param(unit='V'),
# single_module='cmn.u1',
#)
Mod('tcs_io',
'frappy_psi.tcs.IO',
'tcs communication',
uri=tcs_uri,
)
Mod('still_htr',
'frappy_psi.tcs.Heater',
'still heater',
io='tcs_io',
channel=2,
)
Mod('mix_io',
'frappy_psi.dilhtr.IO',
'dilhtr communication',
uri=dilhtr_uri,
)
Mod('mix_htr',
'frappy_psi.dilhtr.WrappedHeater',
'mixing chamber heater',
io='mix_io',
)
Mod('drive_mix',
'frappy_psi.picontrol.PIctrl',
'controlled mix ch. temperature',
input_module = 'T_mxlow',
output_module = 'mix_htr',
output_min = 0,
output_max = 0.02,
p = 5,
itime = 60,
)
#Mod('drive_cmn',
# 'frappy_psi.picontrol.PIctrl',
# 'controlled cmn temperature',
# input_module = 'T_cmn',
# output_module = 'mix_htr',
# output_min = 0,
# output_max = 3e-2,
# p = 2,
# itime = 120,
# )
#Mod('drive_fixp',
# 'frappy_psi.picontrol.PI',
# 'controlled fixpoint voltage',
# value=Param(unit='V'),
# input_module = 'V_fixp',
# output_module = 'drive_mix',
# output_min = 0.0,
# output_max = 0.01,
# p = 1,
# itime = 120,
# )
Mod('simio',
'frappy_psi.bridge.BridgeIO',
'communication to sim900',
uri=srbridge_uri,
)
Mod('res1',
'frappy_psi.bridge.Resistance',
'please add description',
io='simio',
port=1,
)
Mod('res2',
'frappy_psi.bridge.Resistance',
'please add description',
io='simio',
port=3,
)
Mod('phase1',
'frappy_psi.bridge.Phase',
'please add description',
resistance='res1',
)
Mod('phase2',
'frappy_psi.bridge.Phase',
'please add description',
resistance='res2',
)
Mod('dev1',
'frappy_psi.bridge.Deviation',
'please add description',
resistance='res1',
)
Mod('dev2',
'frappy_psi.bridge.Deviation',
'please add description',
resistance='res2',
)
Mod('vsource_io',
'frappy_psi.k2601b.K2601bIO',
'source meter',
# uri = '129.129.156.90:5025',
uri = k2601b_uri,
)
Mod('source',
'frappy_psi.k2601b.SourceMeter'
'',
description = "keithley sourcemeter",
mode = 2,
vlimit = 0.5,
ilimit = .0005,
io = 'vsource_io',
)
Mod('hvolt',
'frappy_psi.k2601b.Voltage'
'',
description = "Heater Voltage",
active = False,
limit = 1.0,
target = 0.0,
sourcemeter = 'source',
io = 'vsource_io',
)
Mod('hcur',
'frappy_psi.k2601b.Current'
'',
description = "Heater Current Source",
active = True,
limit = 0.0001,
target = 0.0,
sourcemeter = 'source',
io = 'vsource_io',
)
Mod('hres',
'frappy_psi.k2601b.Resistivity'
'',
description = "Heater Resistance",
io = 'vsource_io',
)
Mod('hpow',
'frappy_psi.k2601b.Power'
'',
description = "Heater Power",
io = 'vsource_io',
)

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

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

View File

@@ -13,6 +13,7 @@ Mod('th',
'frappy_psi.sea.SeaReadable',
'sample heater temperature',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['ts', 'setsamp']
)
@@ -21,7 +22,7 @@ Mod('tm',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='tt',
rel_paths=['tm', 'set']
rel_paths=['tm', '.', 'set']
)
Mod('ts',

View File

@@ -10,10 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['.', 'tm'],
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -8,10 +8,12 @@ Mod('sea_main',
service = 'main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'tt',
rel_paths = ['.', 'tm']
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',

View File

@@ -10,10 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['.', 'tm'],
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -10,13 +10,14 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', 'set'],
sensor_path='tm',
set_path='set',
)
Mod('th',
'frappy_psi.sea.SeaReadable',
'sample heater temperature',

View File

@@ -10,10 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', 'set', 'dblctrl'],
sensor_path='tm',
set_path='set',
)
Mod('cc',
@@ -68,15 +70,13 @@ Mod('lev',
Mod('tcoil1',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tcoil',
rel_paths=['ta'],
sea_path='tcoil/ta',
)
Mod('tcoil2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tcoil',
rel_paths=['tb'],
sea_path='tcoil/tb',
)
Mod('table',

View File

@@ -1,4 +1,4 @@
Node('ma7.config.sea.psi.ch',
Node('ma7_piezo.config.sea.psi.ch',
'6.8 Tesla horizontal cryomagnet',
)
@@ -12,8 +12,9 @@ Mod('sea_main',
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', 'set', 'dblctrl', 'voltage'],
rel_paths=['tm', '.', 'set', 'dblctrl', 'voltage'],
extra_modules=['manualpower'],
)

View File

@@ -4,16 +4,18 @@ Node('ma7.config.sea.psi.ch',
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma7.config',
'main sea connection for ma7_sampleheat.config',
config='ma7_sampleheat.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', 'set'],
sensor_path='tm',
set_path='set',
)
Mod('th',
@@ -24,6 +26,7 @@ Mod('th',
rel_paths=['ts_2', 'setsamp']
)
Mod('ts0',
'frappy_psi.sea.SeaReadable',
'sample stick exch. temperature',
@@ -36,13 +39,21 @@ Mod('ts',
'frappy_psi.parmod.Converging',
'test for parmod',
unit='K',
value_param='th.value',
target_param='th.setsamp',
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',

View File

@@ -15,10 +15,12 @@ Mod('sea_main',
#)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', 'set'],
sensor_path='tm',
set_path='set',
)
Mod('th',

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -2,8 +2,6 @@ Node('mb11.psi.ch',
'MB11 11 Tesla - 100 mm cryomagnet',
)
sea_cfg = 'mb11.config'
Mod('itc1',
'frappy_psi.mercury.IO',
'ITC for heat exchanger and pressures',
@@ -25,6 +23,7 @@ Mod('ips',
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',

View File

@@ -1,226 +0,0 @@
Node('mb11.psi.ch',
'MB11 11 Tesla - 100 mm cryomagnet',
)
Mod('itc1',
'frappy_psi.mercury.IO',
'ITC for heat exchanger and pressures',
uri='mb11-ts:3001',
)
Mod('itc2',
'frappy_psi.mercury.IO',
'ITC for neck and nv heaters',
uri='mb11-ts:3002',
)
Mod('ips',
'frappy_psi.mercury.IO',
'IPS for magnet and levels',
uri='mb11-ts:3003',
)
Mod('T_stat',
'frappy_psi.mercury.TemperatureAutoFlow',
'static heat exchanger temperature',
output_module='htr_stat',
needle_valve='p_stat',
slot='DB6.T1',
io='itc1',
tolerance=0.1,
flowpars=((1,5), (2, 20)),
)
Mod('htr_stat',
'frappy_psi.mercury.HeaterOutput',
'static heat exchanger heater',
slot='DB1.H1',
io='itc1',
)
Mod('ts',
'frappy_psi.mercury.TemperatureLoop',
'sample temperature',
output_module='htr_sample',
slot='MB1.T1',
io='itc1',
tolerance=1.0,
)
Mod('htr_sample',
'frappy_psi.mercury.HeaterOutput',
'sample stick heater power',
slot='MB0.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('mf',
'frappy_psi.ips_mercury.Field',
'magnetic field',
slot='GRPZ',
io='ips',
tolerance=0.001,
wait_stable_field=60.0,
target=Param(
max=11.0,
),
persistent_limit=11.1,
)
Mod('lev',
'frappy_psi.mercury.HeLevel',
'LHe level',
slot='DB1.L1',
io='ips',
)
Mod('n2lev',
'frappy_psi.mercury.N2Level',
'LN2 level',
slot='DB1.L1',
io='ips',
)
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',
)
Mod('T_coil',
'frappy_psi.mercury.TemperatureSensor',
'coil temperature',
slot='MB1.T1',
io='ips',
)
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=-360,
target_max=360,
encoder_mode='NO',
target=Param(min=-360, max=360),
)

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

@@ -0,0 +1,74 @@
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.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
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

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -9,17 +9,13 @@ Mod('sea_main',
service='main',
)
Mod('t',
'frappy_psi.sea.SeaDrivable', '',
Mod('tt',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
)
Mod('tm',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='tt',
rel_paths=['tm'],
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'tt',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

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

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

20
cfg/main/tfa_cfg.py Normal file
View File

@@ -0,0 +1,20 @@
Node('TFA10.psi.ch',
'thermofisher water bath',
'tcp://5000',
)
Mod('io',
'frappy_psi.thermofisher.ThermFishIO',
'connection for ThermoFisher A10',
uri='tcp://ldm-fi-ts:3002',
)
Mod('T',
'frappy_psi.thermofisher.TemperatureLoopA10',
'holder temperature',
io='io',
meaning=['temperature', 20],
target=Param(max=100),
tolerance=0.5,
settling_time=20,
)

View File

@@ -10,9 +10,12 @@ Mod('sea_main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
'frappy_psi.sea.LscDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
sensor_path='tm',
set_path='set',
)
Mod('cc',

View File

@@ -1,22 +1,24 @@
Node('varioxb.psi.ch',
'VarioxB - 100 mm cryostat (not tested!)',
'VarioxB - 100 mm cryostat',
interface='tcp://5000',
)
Mod('itc1',
'frappy_psi.mercury.IO',
'ITC for heat exchanger and pressures',
uri='mb11-ts:3001',
uri='linvb-ts:3001',
)
Mod('itc2',
'frappy_psi.mercury.IO',
'ITC for neck and nv heaters',
uri='mb11-ts:3002',
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',
@@ -91,15 +93,15 @@ Mod('pos_dyn',
Mod('lev',
'frappy_psi.mercury.HeLevel',
'LHe level',
slot='DB1.L1',
io='ips',
slot='DB4.L1',
io='itc2',
)
Mod('n2lev',
'frappy_psi.mercury.N2Level',
'LN2 level',
slot='DB1.L1',
io='ips',
slot='DB4.L1',
io='itc2',
)
Mod('T_neck1',
@@ -166,6 +168,9 @@ Mod('htr_nvd',
io='itc2',
)
# Motor controller is not yet available!
#
'''
Mod('om_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
@@ -181,3 +186,4 @@ Mod('om',
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',
)

100
cfg/muwaba_cfg.py Normal file
View File

@@ -0,0 +1,100 @@
Node('muwaba.psi.ch',
'multi waterbath',
'tcp://5000',
)
Mod('wio_1',
'frappy_psi.thermofisher.ThermFishIO',
'connection for water bath',
uri='serial:///dev/ttyUSB0?baudrate=19200', # 3001 = Port 1, 3002 = Port 2 ...
)
Mod('wio_2',
'frappy_psi.thermofisher.ThermFishIO',
'connection for water bath',
uri='serial:///dev/ttyUSB1?baudrate=19200', # 3001 = Port 1, 3002 = Port 2 ...
)
Mod('wio_3',
'frappy_psi.thermofisher.ThermFishIO',
'connection for water bath',
uri='serial:///dev/ttyUSB2?baudrate=19200', # 3001 = Port 1, 3002 = Port 2 ...
)
Mod('Tbath_1',
'frappy_psi.thermofisher.TemperatureLoopA10',
'water_bath_1',
io='wio_1',
control_active=0,
target=25,
tolerance=0.1,
settling_time=20,
)
Mod('Tbath_2',
'frappy_psi.thermofisher.TemperatureLoopA10',
'water_bath_2',
io='wio_2',
control_active=0,
target=25,
tolerance=0.1,
settling_time=20,
)
Mod('Tbath_3',
'frappy_psi.thermofisher.TemperatureLoopA10',
'water_bath_3',
io='wio_3',
control_active=0,
target=25,
tolerance=0.1,
settling_time=20,
)
Mod('valve_1',
'frappy_psi.ionopimax.DigitalOutput',
'valve_for_fast_water_temperature_changing',
addr = 'o1',
target = 0,
)
Mod('valve_2',
'frappy_psi.ionopimax.DigitalOutput',
'valve_for_fast_water_temperature_changing',
addr = 'o2',
target = 0,
)
Mod('valve_3',
'frappy_psi.ionopimax.DigitalOutput',
'valve_for_fast_water_temperature_changing',
addr = 'o3',
target = 0,
)
Mod('temp_sensor_tc',
'frappy_psi.ionopimax.SimpleVoltageInput',
'temperatur_sensor_sample',
rawrange = (0.0, 10.0),
valuerange = (5.0, 90.0),
addr = 'ai1_mv',
meaning = ['temperature', 20],
value = Param(unit='degC'),
)
Mod('temp_sensor_pt1000',
'frappy_psi.ionopimax.SimpleVoltageInput',
'temperatur_sensor_sample',
rawrange = (0.0, 10.0),
valuerange = (5.0, 90.0),
value = Param(unit='degC'),
addr = 'ai2_mv',
)
Mod('switcher',
'frappy_psi.muwaba.Switcher',
'waterbath switcher',
valve1 = 'valve_1',
valve2 = 'valve_2',
valve3 = 'valve_3',
)

View File

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

View File

@@ -0,0 +1,17 @@
Node('haake.config.sea.psi.ch',
'Haake thermostat',
)
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'],
value=Param(unit='degC'),
)

View File

@@ -3,14 +3,13 @@
Node('UC220T.psi.ch',
'A Razorbill UC220T controlled by a RP100 high voltage powersupply and a ACM1219 (AD7746) capacitance meter',
interface='tcp://3000')
interface='tcp://5123')
Mod('io1',
'frappy_psi.RP100.RP100IO',
'communication',
uri='serial:///dev/ttyACM1?baudrate=9600+bytesize=8+parity=none+stopbits=1',
visibility=2)
Mod('Tension',
uri='serial:///dev/ttyACM0?baudrate=9600+bytesize=8+parity=none+stopbits=1')
Mod('V1',
'frappy_psi.RP100.VoltageChannel',
'Voltage Channel 1',
temp='T',
@@ -18,9 +17,9 @@ Mod('Tension',
target=Param(min=-200, max=200),
max_target=120,
min_target=-20,
slew_rate=5,
slew_rate=100,
channel=1)
Mod('Compression',
Mod('V2',
'frappy_psi.RP100.VoltageChannel',
'Voltage Channel 2',
temp='T',
@@ -28,112 +27,58 @@ Mod('Compression',
target=Param(min=-200, max=200),
max_target=120,
min_target=-20,
slew_rate=5,
slew_rate=100,
channel=2)
Mod('io2',
'frappy_psi.ACM1219.ACM1219IO',
'communication',
uri='serial:///dev/ttyUSB1?baudrate=9600+bytesize=8+parity=none+stopbits=1',
visibility=2)
Mod('C1',
'frappy_psi.ACM1219.OneChannel',
'channel 1',
channel_enabled=True,
channel=1,
io='io2',
group='cap')
Mod('io3',
'frappy_psi.ACM1219.ACM1219IO',
'communication',
uri='serial:///dev/ttyUSB2?baudrate=9600+bytesize=8+parity=none+stopbits=1',
visibility=2)
Mod('C2',
'frappy_psi.ACM1219.OneChannel',
'channel 1',
channel_enabled=True,
channel=1,
io='io3',
group='cap')
# Mod('C1',
# 'frappy_psi.ACM1219.Channel',
# 'channel 1',
# group='cap')
# Mod('C2',
# 'frappy_psi.ACM1219.Channel',
# 'channel 2',
# group='cap')
# Mod('C1C2',
# 'frappy_psi.ACM1219.BothChannels',
# 'Capacitance channels 1 and 2',
# chan1='C1',
# chan2='C2',
# channels_enabled=True,
# io='io2',
# group='cap')
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.razorbill.Displacement',
'frappy_psi.ACM1219.Displacement',
'razorbill displacement from capacitance',
cap='C1',
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('strain',
'frappy_psi.razorbill.Strain',
'Sample strain from force',
displacement='d',
L=3,
)
Mod('F',
'frappy_psi.razorbill.Force',
'frappy_psi.ACM1219.Force',
'razorbill force from capacitance',
cap='C2',
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.razorbill.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.razorbill.YoungsModulus',
'frappy_psi.ACM1219.YoungsModulus',
'Sample youngs modulus from stress and strain',
stress='stress',
strain='strain',
)
Mod('T',
'frappy_psi.razorbill.Temp',
'frappy_psi.dummy.Temp',
'dummy T written from client',
target=Param(value=300, min=1, max=325),
target=Param(min=1, max=325),
)
Mod('io4',
'frappy_psi.ls372.StringIO',
'the communication device',
uri='tcp://192.168.3.3:7777',
visibility=2
)
Mod('lsswitcher',
'frappy_psi.ls372.Switcher',
'Switcher control of Lsc controller',
uri='tcp://192.168.3.3:7777',
io='io4',
)
Mod('res',
'frappy_psi.ls372.ResChannel',
'resistivity',
iexc='100uA',
range='63.2mOhm',
channel=1,
switcher='lsswitcher',
)

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

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

View File

@@ -1,4 +1,5 @@
{"cap": {"base": "/cap", "params": [{"path": "", "type": "none", "kids": 8},
{"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"},
@@ -6,10 +7,16 @@
{"path": "period", "type": "float", "readonly": false, "cmd": "cap period"},
{"path": "freq", "type": "float", "readonly": false, "cmd": "cap freq"},
{"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": "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"}]}}
{"path": "bufperiod", "type": "float", "readonly": false, "cmd": "capslope bufperiod"}]},
"addonlock_ah2700": {"base": "/addonlock_ah2700", "params": [
{"path": "", "type": "text", "readonly": false, "cmd": "addonlock_ah2700 = "}]}}

View File

@@ -1,41 +1,13 @@
{"t_be_filter": {"base": "/t_be_filter", "params": [
{"path": "", "type": "none", "kids": 11},
{"path": "send", "type": "text", "readonly": false, "cmd": "t_be_filter send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "a", "type": "float", "kids": 4},
{"path": "a/curve", "type": "text", "readonly": false, "cmd": "t_be_filter a/curve", "kids": 1},
{"path": "a/curve/points", "type": "floatvarar", "readonly": false, "cmd": "t_be_filter a/curve/points", "visibility": 3},
{"path": "a/alarm", "type": "float", "readonly": false, "cmd": "t_be_filter a/alarm"},
{"path": "a/stddev", "type": "float"},
{"path": "a/raw", "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 = "}]}}
{"t_be_filter":
{
"base": "/t_be_filter",
"params": [
{"path": "", "type": "none", "kids": 11},
{"path": "a", "type": "float"},
{"path": "b", "type": "float"},
{"path": "c", "type": "float"},
{"path": "d", "type": "float"},
{"path": "det", "type": "float"}
]
}
}

View File

@@ -54,8 +54,6 @@
{"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": "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": "send", "type": "text", "readonly": false, "cmd": "cc send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},

View File

@@ -60,8 +60,6 @@
{"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": "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": "send", "type": "text", "readonly": false, "cmd": "cc send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},

View File

@@ -56,8 +56,6 @@
{"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": "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": [

29
cfg/sea/cp1000.addon.json Normal file
View File

@@ -0,0 +1,29 @@
{"cp2800": {"base": "/cp2800", "params": [
{"path": "", "type": "bool", "readonly": false, "cmd": "cp2800", "kids": 27},
{"path": "send", "type": "text", "readonly": false, "cmd": "cp2800 send", "visibility": 3},
{"path": "status", "type": "text", "visibility": 3},
{"path": "comp_running_hrs", "type": "float"},
{"path": "cpu_t", "type": "float"},
{"path": "motor_current_a", "type": "float"},
{"path": "inp_water_t", "type": "float"},
{"path": "inp_water_t_min", "type": "float"},
{"path": "inp_water_t_max", "type": "float"},
{"path": "out_water_t", "type": "float"},
{"path": "out_water_t_min", "type": "float"},
{"path": "out_water_t_max", "type": "float"},
{"path": "helium_t", "type": "float"},
{"path": "helium_t_min", "type": "float"},
{"path": "helium_t_max", "type": "float"},
{"path": "oil_t", "type": "float"},
{"path": "oil_t_min", "type": "float"},
{"path": "oil_t_max", "type": "float"},
{"path": "high_side_p", "type": "float"},
{"path": "high_side_p_min", "type": "float"},
{"path": "high_side_p_max", "type": "float"},
{"path": "high_side_p_avg", "type": "float"},
{"path": "low_side_p", "type": "float"},
{"path": "low_side_p_min", "type": "float"},
{"path": "low_side_p_max", "type": "float"},
{"path": "low_side_p_avg", "type": "float"},
{"path": "high_side_delta_p_avg", "type": "float"},
{"path": "high_side_bounce", "type": "float"}]}}

14
cfg/sea/cp1000_cfg.py Normal file
View File

@@ -0,0 +1,14 @@
Node('cp1000.addon.sea.psi.ch',
'''dry system''',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'addons sea connection for cp1000.addon',
config = 'cp1000.addon',
service = 'addons',
)
Mod('cp2800',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_addons',
sea_object = 'cp2800',
)

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