when the unit of parameter 'value' is taken from tango, the
'$' units of other parameters are already replaced by the configured
value and are not updated. this change fixes this.
not yet tested on entangle, but a test with similar code works
Change-Id: I87ad112b0965b39bb204d6c3d1fc1de6d4e14f60
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/29357
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>
attached io in HasIO must not be mandatory - either uri or io
has to be given
Change-Id: Id39e40f98020d4051c1ad8105f6af6018aafaea8
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/29349
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>
for easier configuration of multiple servers on the same machine,
FRAPPY_* env. variables are overriding the values from the
general config file
+ apply expanduser where approporiate
Change-Id: Icb73543402f5fb1b8a248a8b8d7fb470971492f4
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/29351
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>
when the status of the rawsensor is not changed, the
status of the calibrated module was not initialized
properly.
Change-Id: I2c23e245226ffb7643060e486c9dfde250a79ce9
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/29356
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>
- SECoP modules are accessible as objects in the main python module
- parameters are accessed as attributes of these objects
- __repr__ is used for listing all parameters
- __call__ is used for 'change target and wait until no more busy'
typically used from a python interpreter or in a jupyter notebook
Change-Id: Idb55684eeff6d1262e5d1517a3ff934f1c1bf208
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28980
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
When the io of one SECoP module fails, it takes ages to startup
because each parameter poll takes the time to wait for a timeout.
After the first communication error on an io, no more startup polls
are tried on the modules using this io.
Change-Id: I0d250953dfe91a7d68d2d2b108395cc25d471afe
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28588
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>
as all code using IO handlers has been changed to use
secop.rwhandler, IO handlers can be removed
Change-Id: Id57fbc4ce2744dbe73bb8792fd45449373f76bb5
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28526
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>
accept all sequences instead of just tuple / list
+ change Module.announceUpdate to convert value before
comparing with previous one (comparing will not work with numpy arrays)
Change-Id: I5eceef4297607107e2dde688af2833d3651a8775
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28525
Tested-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
implement features including two proposed features
HasOffset and HasLimits
Change-Id: I7949f12dc8abe28fb2ee040e64e7db19d1b23b9a
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28485
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>
- add a general channel switcher module
- change ls370res code from IOHandler to rwhandlers
+ fix an issue with the poller when io module is placed below
using modules in cfg file
after this, IOHandler stuff may be removed from Frappy
Change-Id: I787101fc1e365ae3e0453bfe59291e2011a1fe53
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28512
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>
when a full path is given as single argument to secop-server,
the server name has to be sanitized
Change-Id: I1d11f076157548e90877f380f0cab3a6a3f96784
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28232
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
- temperature (incl. heater)
- pressure (incl. control via valve motor)
- LHe and LN2 levels
not yet included: magnet power supply
Change-Id: Id4ee8f9b7ebfa6284e519ba485217f9a19d70d59
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28028
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
- repeated errors on poller are only once logged (per poll
function / read_* method)
- during exception handling, silent=True on a SECoP error indicates
that the error is already logged
+ fix the name of HardwareError
+ add test for consistency of SECoPErrors
+ catch socket.timeout in AsynTcp
Change-Id: I9df6c775cc19553b22a4d6e39591092adf7ff9a1
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28139
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>
in secop.proxy the callers modules method announceUpdate is
called from an other thread while the accessLock is locked,
creating a deadlock. solve this by creating an other lock
'updateLock' for the update.
+ add status parameter even to non-Readable proxy modules,
in order to indicate a failed connection
+ fix an error in secop_psi/softcal.py
Change-Id: Iae7c6d5a74001150a47aa9dc99209c15d972cd5e
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28130
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>
Implement LogfileHandler.getChild. This is needed to inherit
the configured level from the parent handler.
+ remove redundant assignmet of logfile_handler.max_days
Change-Id: I7277c28221bbb6108d75f2437634e9db9bf6761e
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28140
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>
- safe_current: current limit for unlimited move
- move_limit: max. angle to move with high current > safe_current
- direct axis parameter access is not exported by default
- support for home switch
- allow use without encoder
- automatic reset for motors in a configuration, where the motor
current is deliberatly low for a limited torque
- improved error message on driving failures
Change-Id: I25f8516905a2c4c3cda09d091d5a43004ec6dc6f
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28029
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>
This valve needs 8 turns to open. As the encoder forgets
the number if turns on power cycle, a home switch is
mounte, which engages during the last turn when closing.
The final close position is determined by closing the valve
with a defined motor current/torque.
+ fix an issue in StateMachine.start: the first cycle
must be called after the new state is assigned
Change-Id: I34cd05d10d97b043f9e3126310943b74ee727382
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28030
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>