Machine info
BLISS offers some mechanisms to deal with information obtained from the ESRF accelerator.
MachInfo
class provides:
- properties to get some machine available information
- counters to access to accelerator information
- helper functions to implement refill pretection in a sequence
Configuration¶
Configuration example:
- class: MachInfo
plugin: bliss
uri: //acs.esrf.fr:10000/fe/master/id42
name: mama
machinfo properties¶
sr_mode
: operation mode in: [USM
;MDT
;Shutdown
;SafetyTest
;IdTest
]automatic_mode
: activation of automatic FE mode:True
orFalse
tango_uri
: address of the Front-End Tango device servercounters
:current
: Ring current of the machinelifetime
: Remaining Lifetime of the beamsbcurr
: Ring current of the machine in Single Bunch moderefill
: Countdown to the Refill
Counters usage in a scan:
DEMO [8]: ct(0.1, mama)
Sun Mar 08 13:54:39 2020
current = 8.830000000000009 ( 88.30000000000008/s)
lifetime = 222633.0 ( 2226330.0/s)
refill = 7523.0 ( 75230.0/s)
sbcurr = 0.0
Out [8]: Scan(number=2, name=ct, path=)
Reading of a particular counter:
DEMO [9]: mama.counters.current
Out [9]: 'current` Tango attribute counter info:
device server = //acs.esrf.fr:10000/fe/master/id42
Tango attribute = SR_Current
Tango format = "%6.2f"
Tango unit = "mA"
scalar
value: 8.82
DEMO [10]: mama.counters.current.value
Out [10]: 194.43
__info__
¶
MachInfo
object shell info provides:
- url of the tango device used
- AutoMode timing
- Operator Message
DEMO [5]: mama
Out [5]: MACHINE INFORMATION ( //acs.esrf.fr:10000/fe/master/id42 )
----------------- ---------------------------------------------
SR Mode: USM
Current: 8.79 mA
Lifetime: 245231s = 2days 20h 7mn 11s
Refill CountDown: 6519s = 1h 48mn 39s
Filling Mode: 7/8 multibunch
AutoMode: True (remaining: 498183s = 5days 18h 23mn 3s)
----------------- ---------------------------------------------
Operator Message: Jun 3 12:00 Back to USM
all_information¶
all_information
property returns most of all the machine information as a
dictionary:
DEMO [9]: pprint.pprint(mama.all_information)
{'Auto_Mode_Time': 502822,
'Automatic_Mode': True,
'EXP_Itlk_State': tango._tango.DevState.ON,
'FE_Itlk_State': tango._tango.DevState.ON,
'FE_State': 'FE open',
'HQPS_Itlk_State': tango._tango.DevState.ON,
'PSS_Itlk_State': tango._tango.DevState.ON,
'SR_Current': 195.93514894706684,
'SR_Filling_Mode': '7/8 multibunch',
'SR_Lifetime': 66281.93637072828,
'SR_Mode': 'USM',
'SR_Operator_Mesg': 'Jun 3 12:00 Back to USM',
'SR_Refill_Countdown': 2034.0,
'SR_Single_Bunch_Current': -0.04008001020600001,
'UHV_Valve_State': tango._tango.DevState.ON}
iter_wait_for_refill¶
iter_wait_for_refill(<checktime>, <waittime>=0., <polling_time>=1.)
Helper for waiting the machine refill. It will yield two states “WAIT_INJECTION” and “WAITING_AFTER_BEAM_IS_BACK” until the machine refill is finished.
simple usage will be:
for status in iter_wait_for_refill(my_check_time,waittime=1.,polling_time=1.):
if status == "WAIT_INJECTION":
print("Scan is paused, waiting injection",end='\r')
else:
print("Scan will restart in 1 second...",end='\r')
check_for_refill¶
check_for_refill(checktime)
: check that checktime
(in seconds) is smaller than refill
(the refill countdown).
Example:
DEMO [4]: from bliss.controllers.machinfo import MachInfo
DEMO [5]: mama.counters.refill
Out [5]: 'refill` Tango attribute counter info:
device server = //acs.esrf.fr:10000/fe/master/id42
Tango attribute = SR_Refill_Countdown
...
value: 6411.0
DEMO [6]: MachInfo.check_for_refill(mama, 6300)
Out [6]: True
DEMO [7]: MachInfo.check_for_refill(mama, 6500)
Out [7]: False
WaitForRefillPreset¶
This preset will pause a scan:
- during the refill
- or if the
checktime
is greater than the time to refill.
If checktime
is set to None
, count_time
is used if found on the top
master of the chain.
Insertion of WaitForRefillPreset
preset is done via .check
setting:
- Set it to
True
to activate refill check. - Set it to
False
to de-activate refill check.
Example:
DEMO [6]: mama.check
Out [6]: False
DEMO [7]: mama.check=True