Files
cristallina/measurement_scripts/Untitled.ipynb

1173 lines
59 KiB
Plaintext
Executable File

{
"cells": [
{
"cell_type": "code",
"execution_count": 6,
"id": "305e206d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SEC-Node replied with legacy identify reply: SINE2020&ISSE,SECoP,V2019-08-20,v1.0 RC2\n",
"dilsc ready\n"
]
}
],
"source": [
"import sys\n",
"sys.path.append('/sf/cristallina/applications/frappy')\n",
"from frappy.client import SecopClient\n",
"from frappy.core import BUSY, IDLE, ERROR, Parameter, Command, Done\n",
"\n",
"# Connect to the dilsc\n",
"dilsc = SecopClient('dilsc:5000')\n",
"dilsc.connect()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "d108c981",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'modules': {'triton': {'accessibles': {'communicate': {'description': 'send a command and receive a reply\\n\\nusing end_of_line, encoding and self._lock\\nfor commands without reply, the command must be joined with a query command,\\nwait_before is respected for end_of_lines within a command.',\n",
" 'datainfo': {'type': 'command',\n",
" 'argument': {'type': 'string'},\n",
" 'result': {'type': 'string'}}},\n",
" '_timeout': {'description': 'timeout',\n",
" 'datainfo': {'min': 0.0, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_wait_before': {'description': 'wait time before sending',\n",
" 'datainfo': {'type': 'double'},\n",
" 'readonly': True},\n",
" '_is_connected': {'description': 'connection state',\n",
" 'datainfo': {'type': 'bool'},\n",
" 'readonly': False},\n",
" 'pollinterval': {'description': 'reconnect interval',\n",
" 'datainfo': {'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_multicomm': {'description': 'communicate multiple request/replies in one row',\n",
" 'datainfo': {'type': 'command',\n",
" 'argument': {'type': 'array',\n",
" 'minlen': 0,\n",
" 'maxlen': 100,\n",
" 'members': {'type': 'string'}},\n",
" 'result': {'type': 'array',\n",
" 'minlen': 0,\n",
" 'maxlen': 100,\n",
" 'members': {'type': 'string'}}}}},\n",
" 'description': 'connection to triton software',\n",
" 'implementation': 'secop_psi.mercury.IO',\n",
" 'interface_classes': ['Module'],\n",
" 'features': []},\n",
" 'T_mix': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'K', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_raw': {'description': 'raw value',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_filter_time': {'description': 'filter time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_dwell_time': {'description': 'dwell time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_pause_time': {'description': 'pause time',\n",
" 'datainfo': {'unit': 'sec', 'min': 3.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'mix. chamber temperature',\n",
" 'implementation': 'secop_psi.triton.TemperatureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'T_pt2head': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'K', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_raw': {'description': 'raw value',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_filter_time': {'description': 'filter time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_dwell_time': {'description': 'dwell time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_pause_time': {'description': 'pause time',\n",
" 'datainfo': {'unit': 'sec', 'min': 3.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'PTR2 head temperature',\n",
" 'implementation': 'secop_psi.triton.TemperatureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'T_pt2plate': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'K', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_raw': {'description': 'raw value',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_filter_time': {'description': 'filter time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_dwell_time': {'description': 'dwell time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_pause_time': {'description': 'pause time',\n",
" 'datainfo': {'unit': 'sec', 'min': 3.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'PTR2 plate temperature',\n",
" 'implementation': 'secop_psi.triton.TemperatureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'T_still': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'K', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_raw': {'description': 'raw value',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_filter_time': {'description': 'filter time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_dwell_time': {'description': 'dwell time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_pause_time': {'description': 'pause time',\n",
" 'datainfo': {'unit': 'sec', 'min': 3.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'still temperature',\n",
" 'implementation': 'secop_psi.triton.TemperatureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'htr_still': {'accessibles': {'value': {'description': 'heater output',\n",
" 'datainfo': {'unit': 'W', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'heater output',\n",
" 'datainfo': {'unit': 'W', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_controlled_by': {'description': 'source of target value',\n",
" 'datainfo': {'type': 'enum', 'members': {'self': 0}},\n",
" 'readonly': True},\n",
" '_resistivity': {'description': 'heater resistivity',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True}},\n",
" 'description': 'still heater',\n",
" 'implementation': 'secop_psi.triton.HeaterOutput',\n",
" 'interface_classes': ['Writable'],\n",
" 'features': []},\n",
" 'T_coldpl': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'K', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_raw': {'description': 'raw value',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_filter_time': {'description': 'filter time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_dwell_time': {'description': 'dwell time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_pause_time': {'description': 'pause time',\n",
" 'datainfo': {'unit': 'sec', 'min': 3.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'cold plate temperature',\n",
" 'implementation': 'secop_psi.triton.TemperatureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'T_mixcx': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'K', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_raw': {'description': 'raw value',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_filter_time': {'description': 'filter time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_dwell_time': {'description': 'dwell time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_pause_time': {'description': 'pause time',\n",
" 'datainfo': {'unit': 'sec', 'min': 3.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'mix. chamber cernox',\n",
" 'implementation': 'secop_psi.triton.TemperatureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'T_pt1head': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'K', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_raw': {'description': 'raw value',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_filter_time': {'description': 'filter time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_dwell_time': {'description': 'dwell time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_pause_time': {'description': 'pause time',\n",
" 'datainfo': {'unit': 'sec', 'min': 3.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'PTR1 head temperature',\n",
" 'implementation': 'secop_psi.triton.TemperatureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'T_pt1plate': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'K', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_raw': {'description': 'raw value',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_filter_time': {'description': 'filter time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_dwell_time': {'description': 'dwell time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_pause_time': {'description': 'pause time',\n",
" 'datainfo': {'unit': 'sec', 'min': 3.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'PTR1 plate temperature',\n",
" 'implementation': 'secop_psi.triton.TemperatureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'T_pucksensor': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'K', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'status determined from convergence checks',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'BUSY': 300,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'target value of the module',\n",
" 'datainfo': {'unit': 'K', 'type': 'double'},\n",
" 'readonly': False},\n",
" 'stop': {'description': 'cease driving, go to IDLE state',\n",
" 'datainfo': {'type': 'command'}},\n",
" '_tolerance': {'description': 'absolute tolerance',\n",
" 'datainfo': {'unit': 'K', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_settling_time': {'description': 'settling time\\n\\ntotal amount of time the value has to be within tolerance before switching to idle.',\n",
" 'datainfo': {'unit': 'sec', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_timeout': {'description': \"timeout\\n\\ntimeout = 0: disabled, else:\\nA timeout event happens, when the difference abs(<target> - <value>) drags behind\\nthe expected difference for longer than <timeout>. The expected difference is determined\\nby parameters 'workingramp' or 'ramp'. If ramp is not available, an exponential decay of\\nthe difference with <tolerance> as time constant is expected.\\nAs soon as the value is the first time within tolerance, the timeout criterium is changed:\\nthen the timeout event happens after this time + <settling_time> + <timeout>.\",\n",
" 'datainfo': {'unit': 'sec', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_control_active': {'description': 'control mode',\n",
" 'datainfo': {'type': 'bool'},\n",
" 'readonly': True},\n",
" '_ctrlpars': {'description': 'pid (proportional band, integral time, differential time',\n",
" 'datainfo': {'type': 'struct',\n",
" 'members': {'p': {'unit': 'K', 'min': 0.0, 'type': 'double'},\n",
" 'i': {'unit': 'min', 'min': 0.0, 'type': 'double'},\n",
" 'd': {'unit': 'min', 'min': 0.0, 'type': 'double'}}},\n",
" 'readonly': False},\n",
" '_raw': {'description': 'raw value',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'ramp': {'description': 'ramp rate',\n",
" 'datainfo': {'unit': 'K/min', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_enable_ramp': {'description': 'enable ramp rate',\n",
" 'datainfo': {'type': 'bool'},\n",
" 'readonly': False},\n",
" 'setpoint': {'description': 'working setpoint (differs from target when ramping)',\n",
" 'datainfo': {'unit': 'K', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_filter_time': {'description': 'filter time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_dwell_time': {'description': 'dwell time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_pause_time': {'description': 'pause time',\n",
" 'datainfo': {'unit': 'sec', 'min': 3.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'puck sensor temperature',\n",
" 'implementation': 'secop_psi.triton.TemperatureLoop',\n",
" 'interface_classes': ['Drivable'],\n",
" 'features': []},\n",
" 'htr_pucksensor': {'accessibles': {'value': {'description': 'heater output',\n",
" 'datainfo': {'unit': 'W', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'heater output',\n",
" 'datainfo': {'unit': 'W', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_controlled_by': {'description': 'source of target value',\n",
" 'datainfo': {'type': 'enum', 'members': {'self': 0, 'T_pucksensor': 1}},\n",
" 'readonly': True},\n",
" '_resistivity': {'description': 'heater resistivity',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_limit': {'description': 'max. heater power',\n",
" 'datainfo': {'unit': 'W', 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'mix. chamber heater',\n",
" 'implementation': 'secop_psi.triton.HeaterOutputWithRange',\n",
" 'interface_classes': ['Writable'],\n",
" 'features': []},\n",
" 'T_magnet': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'K', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_raw': {'description': 'raw value',\n",
" 'datainfo': {'unit': 'Ohm', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_filter_time': {'description': 'filter time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_dwell_time': {'description': 'dwell time',\n",
" 'datainfo': {'unit': 'sec', 'min': 1.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_pause_time': {'description': 'pause time',\n",
" 'datainfo': {'unit': 'sec', 'min': 3.0, 'max': 200.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'magnet temperature',\n",
" 'implementation': 'secop_psi.triton.TemperatureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'action': {'accessibles': {'value': {'description': 'running action',\n",
" 'datainfo': {'type': 'enum',\n",
" 'members': {'none': 0, 'condense': 1, 'circulate': 2, 'collect': 3}},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'action to do',\n",
" 'datainfo': {'type': 'enum',\n",
" 'members': {'none': 0, 'condense': 1, 'collect': 3}},\n",
" 'readonly': False}},\n",
" 'description': 'higher level scripts',\n",
" 'implementation': 'secop_psi.triton.Action',\n",
" 'interface_classes': ['Writable'],\n",
" 'features': []},\n",
" 'p_dump': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'mbar', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'dump pressure',\n",
" 'implementation': 'secop_psi.mercury.PressureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'p_cond': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'mbar', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'condenser pressure',\n",
" 'implementation': 'secop_psi.mercury.PressureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'p_still': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'mbar', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'still pressure',\n",
" 'implementation': 'secop_psi.mercury.PressureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'p_fore': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'mbar', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'pressure on the pump side',\n",
" 'implementation': 'secop_psi.mercury.PressureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'p_back': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'mbar', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'pressure on the back side of the pump',\n",
" 'implementation': 'secop_psi.mercury.PressureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'p_ovc': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'unit': 'mbar', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False}},\n",
" 'description': 'outer vacuum pressure',\n",
" 'implementation': 'secop_psi.mercury.PressureSensor',\n",
" 'interface_classes': ['Readable'],\n",
" 'features': []},\n",
" 'V1': {'accessibles': {'value': {'description': 'valve state',\n",
" 'datainfo': {'type': 'enum', 'members': {'closed': 0, 'opened': 1}},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'BUSY': 300,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'valve target',\n",
" 'datainfo': {'type': 'enum', 'members': {'close': 0, 'open': 1}},\n",
" 'readonly': False},\n",
" 'stop': {'description': 'cease driving, go to IDLE state',\n",
" 'datainfo': {'type': 'command'}}},\n",
" 'description': 'valve V1',\n",
" 'implementation': 'secop_psi.triton.Valve',\n",
" 'interface_classes': ['Drivable'],\n",
" 'features': []},\n",
" 'V2': {'accessibles': {'value': {'description': 'valve state',\n",
" 'datainfo': {'type': 'enum', 'members': {'closed': 0, 'opened': 1}},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'BUSY': 300,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'valve target',\n",
" 'datainfo': {'type': 'enum', 'members': {'close': 0, 'open': 1}},\n",
" 'readonly': False},\n",
" 'stop': {'description': 'cease driving, go to IDLE state',\n",
" 'datainfo': {'type': 'command'}}},\n",
" 'description': 'valve V2',\n",
" 'implementation': 'secop_psi.triton.Valve',\n",
" 'interface_classes': ['Drivable'],\n",
" 'features': []},\n",
" 'V4': {'accessibles': {'value': {'description': 'valve state',\n",
" 'datainfo': {'type': 'enum', 'members': {'closed': 0, 'opened': 1}},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'BUSY': 300,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'valve target',\n",
" 'datainfo': {'type': 'enum', 'members': {'close': 0, 'open': 1}},\n",
" 'readonly': False},\n",
" 'stop': {'description': 'cease driving, go to IDLE state',\n",
" 'datainfo': {'type': 'command'}}},\n",
" 'description': 'valve V4',\n",
" 'implementation': 'secop_psi.triton.Valve',\n",
" 'interface_classes': ['Drivable'],\n",
" 'features': []},\n",
" 'V5': {'accessibles': {'value': {'description': 'valve state',\n",
" 'datainfo': {'type': 'enum', 'members': {'closed': 0, 'opened': 1}},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'BUSY': 300,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'valve target',\n",
" 'datainfo': {'type': 'enum', 'members': {'close': 0, 'open': 1}},\n",
" 'readonly': False},\n",
" 'stop': {'description': 'cease driving, go to IDLE state',\n",
" 'datainfo': {'type': 'command'}}},\n",
" 'description': 'valve V5',\n",
" 'implementation': 'secop_psi.triton.Valve',\n",
" 'interface_classes': ['Drivable'],\n",
" 'features': []},\n",
" 'V9': {'accessibles': {'value': {'description': 'valve state',\n",
" 'datainfo': {'type': 'enum', 'members': {'closed': 0, 'opened': 1}},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'BUSY': 300,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'valve target',\n",
" 'datainfo': {'type': 'enum', 'members': {'close': 0, 'open': 1}},\n",
" 'readonly': False},\n",
" 'stop': {'description': 'cease driving, go to IDLE state',\n",
" 'datainfo': {'type': 'command'}}},\n",
" 'description': 'valve V9',\n",
" 'implementation': 'secop_psi.triton.Valve',\n",
" 'interface_classes': ['Drivable'],\n",
" 'features': []},\n",
" 'ips': {'accessibles': {'communicate': {'description': 'send a command and receive a reply\\n\\nusing end_of_line, encoding and self._lock\\nfor commands without reply, the command must be joined with a query command,\\nwait_before is respected for end_of_lines within a command.',\n",
" 'datainfo': {'type': 'command',\n",
" 'argument': {'type': 'string'},\n",
" 'result': {'type': 'string'}}},\n",
" '_timeout': {'description': 'timeout',\n",
" 'datainfo': {'min': 0.0, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_wait_before': {'description': 'wait time before sending',\n",
" 'datainfo': {'type': 'double'},\n",
" 'readonly': True},\n",
" '_is_connected': {'description': 'connection state',\n",
" 'datainfo': {'type': 'bool'},\n",
" 'readonly': False},\n",
" 'pollinterval': {'description': 'reconnect interval',\n",
" 'datainfo': {'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_multicomm': {'description': 'communicate multiple request/replies in one row',\n",
" 'datainfo': {'type': 'command',\n",
" 'argument': {'type': 'array',\n",
" 'minlen': 0,\n",
" 'maxlen': 100,\n",
" 'members': {'type': 'string'}},\n",
" 'result': {'type': 'array',\n",
" 'minlen': 0,\n",
" 'maxlen': 100,\n",
" 'members': {'type': 'string'}}}}},\n",
" 'description': 'IPS for magnet',\n",
" 'implementation': 'secop_psi.mercury.IO',\n",
" 'interface_classes': ['Module'],\n",
" 'features': []},\n",
" 'mf': {'accessibles': {'value': {'description': 'current value of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'unit': 'T', 'type': 'double'},\n",
" {'unit': 'T', 'type': 'double'},\n",
" {'unit': 'T', 'type': 'double'}]},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'PREPARED': 150,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'BUSY': 300,\n",
" 'PREPARING': 340,\n",
" 'RAMPING': 370,\n",
" 'STABILIZING': 380,\n",
" 'FINALIZING': 390,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'target value of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'unit': 'T', 'min': -0.6, 'max': 0.6, 'type': 'double'},\n",
" {'unit': 'T', 'min': -0.6, 'max': 0.6, 'type': 'double'},\n",
" {'unit': 'T', 'min': -5.2, 'max': 5.2, 'type': 'double'}]},\n",
" 'readonly': False},\n",
" 'stop': {'description': 'cease driving, go to IDLE state',\n",
" 'datainfo': {'type': 'command'}},\n",
" '_sphere_radius': {'description': 'max. sphere',\n",
" 'datainfo': {'unit': 'T', 'min': 0.0, 'max': 0.7, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_cylinders': {'description': 'allowed cylinders (list of radius and height)',\n",
" 'datainfo': {'type': 'array',\n",
" 'minlen': 1,\n",
" 'maxlen': 9,\n",
" 'members': {'type': 'tuple',\n",
" 'members': [{'unit': 'T', 'min': 0.0, 'max': 0.6, 'type': 'double'},\n",
" {'unit': 'T', 'min': 0.0, 'max': 5.2, 'type': 'double'}]}},\n",
" 'readonly': True}},\n",
" 'description': 'vector field',\n",
" 'implementation': 'secop_psi.dilsc.VectorField',\n",
" 'interface_classes': ['Drivable'],\n",
" 'features': []},\n",
" 'mfx': {'accessibles': {'value': {'description': 'magnetic field',\n",
" 'datainfo': {'unit': 'T', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'BUSY': 300,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'target value of the module',\n",
" 'datainfo': {'unit': 'T', 'min': -0.6, 'max': 0.6, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'stop': {'description': 'cease driving, go to IDLE state',\n",
" 'datainfo': {'type': 'command'}},\n",
" '_limits': {'description': 'user limits',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'unit': 'T', 'type': 'double'},\n",
" {'unit': 'T', 'type': 'double'}]},\n",
" 'readonly': False},\n",
" 'ramp': {'description': 'ramp rate for field',\n",
" 'datainfo': {'unit': 'T/min', 'type': 'double'},\n",
" 'readonly': False},\n",
" '_tolerance': {'description': 'tolerance',\n",
" 'datainfo': {'unit': 'T', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_trained': {'description': 'trained field (positive)',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'unit': 'T', 'min': -99.0, 'max': 0.0, 'type': 'double'},\n",
" {'unit': 'T', 'min': 0.0, 'type': 'double'}]},\n",
" 'readonly': False},\n",
" '_wait_stable_field': {'description': 'wait time to ensure field is stable',\n",
" 'datainfo': {'unit': 's', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_action': {'description': 'action',\n",
" 'datainfo': {'type': 'enum',\n",
" 'members': {'hold': 0, 'run_to_set': 1, 'run_to_zero': 2, 'clamped': 3}},\n",
" 'readonly': False},\n",
" 'setpoint': {'description': 'field setpoint',\n",
" 'datainfo': {'unit': 'T', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_voltage': {'description': 'leads voltage',\n",
" 'datainfo': {'unit': 'V', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_atob': {'description': 'field to amp',\n",
" 'datainfo': {'unit': 'A/T', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_working_ramp': {'description': 'effective ramp',\n",
" 'datainfo': {'unit': 'T/min', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_I1': {'description': 'slave 1 current',\n",
" 'datainfo': {'unit': 'A', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_V1': {'description': 'slave 1 voltage',\n",
" 'datainfo': {'unit': 'V', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_I2': {'description': 'slave 2 current',\n",
" 'datainfo': {'unit': 'A', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_V2': {'description': 'slave 2 voltage',\n",
" 'datainfo': {'unit': 'V', 'type': 'double'},\n",
" 'readonly': True}},\n",
" 'description': 'magnetic field, x-axis',\n",
" 'implementation': 'secop_psi.ips_mercury.SimpleField2',\n",
" 'interface_classes': ['Drivable'],\n",
" 'features': ['HasLimits'],\n",
" 'abslimits': [-0.6, 0.6]},\n",
" 'mfy': {'accessibles': {'value': {'description': 'magnetic field',\n",
" 'datainfo': {'unit': 'T', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'BUSY': 300,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'target value of the module',\n",
" 'datainfo': {'unit': 'T', 'min': -0.6, 'max': 0.6, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'stop': {'description': 'cease driving, go to IDLE state',\n",
" 'datainfo': {'type': 'command'}},\n",
" '_limits': {'description': 'user limits',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'unit': 'T', 'type': 'double'},\n",
" {'unit': 'T', 'type': 'double'}]},\n",
" 'readonly': False},\n",
" 'ramp': {'description': 'ramp rate for field',\n",
" 'datainfo': {'unit': 'T/min', 'type': 'double'},\n",
" 'readonly': False},\n",
" '_tolerance': {'description': 'tolerance',\n",
" 'datainfo': {'unit': 'T', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_trained': {'description': 'trained field (positive)',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'unit': 'T', 'min': -99.0, 'max': 0.0, 'type': 'double'},\n",
" {'unit': 'T', 'min': 0.0, 'type': 'double'}]},\n",
" 'readonly': False},\n",
" '_wait_stable_field': {'description': 'wait time to ensure field is stable',\n",
" 'datainfo': {'unit': 's', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_action': {'description': 'action',\n",
" 'datainfo': {'type': 'enum',\n",
" 'members': {'hold': 0, 'run_to_set': 1, 'run_to_zero': 2, 'clamped': 3}},\n",
" 'readonly': False},\n",
" 'setpoint': {'description': 'field setpoint',\n",
" 'datainfo': {'unit': 'T', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_voltage': {'description': 'leads voltage',\n",
" 'datainfo': {'unit': 'V', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_atob': {'description': 'field to amp',\n",
" 'datainfo': {'unit': 'A/T', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_working_ramp': {'description': 'effective ramp',\n",
" 'datainfo': {'unit': 'T/min', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_I1': {'description': 'slave 1 current',\n",
" 'datainfo': {'unit': 'A', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_V1': {'description': 'slave 1 voltage',\n",
" 'datainfo': {'unit': 'V', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_I2': {'description': 'slave 2 current',\n",
" 'datainfo': {'unit': 'A', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_V2': {'description': 'slave 2 voltage',\n",
" 'datainfo': {'unit': 'V', 'type': 'double'},\n",
" 'readonly': True}},\n",
" 'description': 'magnetic field, y axis',\n",
" 'implementation': 'secop_psi.ips_mercury.SimpleField2',\n",
" 'interface_classes': ['Drivable'],\n",
" 'features': ['HasLimits'],\n",
" 'abslimits': [-0.6, 0.6]},\n",
" 'mfz': {'accessibles': {'value': {'description': 'magnetic field',\n",
" 'datainfo': {'unit': 'T', 'type': 'double'},\n",
" 'readonly': True},\n",
" 'status': {'description': 'current status of the module',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'type': 'enum',\n",
" 'members': {'DISABLED': 0,\n",
" 'IDLE': 100,\n",
" 'PREPARED': 150,\n",
" 'WARN': 200,\n",
" 'UNSTABLE': 270,\n",
" 'BUSY': 300,\n",
" 'PREPARING': 340,\n",
" 'RAMPING': 370,\n",
" 'STABILIZING': 380,\n",
" 'FINALIZING': 390,\n",
" 'ERROR': 400,\n",
" 'UNKNOWN': 401}},\n",
" {'type': 'string'}]},\n",
" 'readonly': True},\n",
" 'pollinterval': {'description': 'default poll interval',\n",
" 'datainfo': {'min': 0.1, 'max': 120.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'target': {'description': 'target value of the module',\n",
" 'datainfo': {'unit': 'T', 'min': -5.2, 'max': 5.2, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'stop': {'description': 'cease driving, go to IDLE state',\n",
" 'datainfo': {'type': 'command'}},\n",
" '_limits': {'description': 'user limits',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'unit': 'T', 'type': 'double'},\n",
" {'unit': 'T', 'type': 'double'}]},\n",
" 'readonly': False},\n",
" 'ramp': {'description': 'ramp rate for field',\n",
" 'datainfo': {'unit': 'T/min', 'type': 'double'},\n",
" 'readonly': False},\n",
" '_tolerance': {'description': 'tolerance',\n",
" 'datainfo': {'unit': 'T', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_trained': {'description': 'trained field (positive)',\n",
" 'datainfo': {'type': 'tuple',\n",
" 'members': [{'unit': 'T', 'min': -99.0, 'max': 0.0, 'type': 'double'},\n",
" {'unit': 'T', 'min': 0.0, 'type': 'double'}]},\n",
" 'readonly': False},\n",
" '_wait_stable_field': {'description': 'wait time to ensure field is stable',\n",
" 'datainfo': {'unit': 's', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" 'mode': {'description': 'persistent mode',\n",
" 'datainfo': {'type': 'enum',\n",
" 'members': {'DISABLED': 0, 'PERSISTENT': 30, 'DRIVEN': 50}},\n",
" 'readonly': False},\n",
" '_switch_heater': {'description': 'switch heater',\n",
" 'datainfo': {'type': 'enum', 'members': {'off': 0, 'on': 1}},\n",
" 'readonly': False},\n",
" '_persistent_field': {'description': 'persistent field',\n",
" 'datainfo': {'unit': 'T', 'type': 'double'},\n",
" 'readonly': False},\n",
" '_current': {'description': 'leads current (in units of field)',\n",
" 'datainfo': {'unit': 'T', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_wait_switch_on': {'description': 'wait time to ensure switch is on',\n",
" 'datainfo': {'unit': 's', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_wait_switch_off': {'description': 'wait time to ensure switch is off',\n",
" 'datainfo': {'unit': 's', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_wait_stable_leads': {'description': 'wait time to ensure current is stable',\n",
" 'datainfo': {'unit': 's', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_persistent_limit': {'description': 'above this limit, lead currents are not driven to 0',\n",
" 'datainfo': {'unit': 'T', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': False},\n",
" '_action': {'description': 'action',\n",
" 'datainfo': {'type': 'enum',\n",
" 'members': {'hold': 0, 'run_to_set': 1, 'run_to_zero': 2, 'clamped': 3}},\n",
" 'readonly': False},\n",
" 'setpoint': {'description': 'field setpoint',\n",
" 'datainfo': {'unit': 'T', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_voltage': {'description': 'leads voltage',\n",
" 'datainfo': {'unit': 'V', 'type': 'double'},\n",
" 'readonly': True},\n",
" '_atob': {'description': 'field to amp',\n",
" 'datainfo': {'unit': 'A/T', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_working_ramp': {'description': 'effective ramp',\n",
" 'datainfo': {'unit': 'T/min', 'min': 0.0, 'type': 'double'},\n",
" 'readonly': True},\n",
" '_forced_persistent_field': {'description': 'manual indication that persistent field is bad',\n",
" 'datainfo': {'type': 'bool'},\n",
" 'readonly': False}},\n",
" 'description': 'magnetic field, z-axis',\n",
" 'implementation': 'secop_psi.ips_mercury.Field0',\n",
" 'interface_classes': ['Drivable'],\n",
" 'features': ['HasLimits'],\n",
" 'abslimits': [-5.2, 5.2]}},\n",
" 'equipment_id': 'dilsc',\n",
" 'firmware': 'FRAPPY - The Python Framework for SECoP',\n",
" 'version': '2021.02',\n",
" 'description': 'triton test'}"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dilsc.descriptive_data"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "db15ead8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((<status.PREPARED (150)>, 'driven'), 1680192078.4629738, None)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dilsc.getParameter('mfz','status')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e6102c9b",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.20"
}
},
"nbformat": 4,
"nbformat_minor": 5
}