diff --git a/config/config.properties b/config/config.properties
index 9b48db8..c2691f2 100644
--- a/config/config.properties
+++ b/config/config.properties
@@ -1,37 +1,37 @@
-#Fri Aug 14 09:27:15 CEST 2020
-hostName=null
-userManagement=false
-instanceName=X06SA
-autoSaveScanData=true
-simulation=false
-dataServerPort=-1
-hideServerMessages=true
-serverPort=8080
-versionTrackingEnabled=true
-dataPath={data}/{year}_{month}/{date}/{date}_{time}_{name}
-serverEnabled=true
-commandExecutionEvents=false
-logDaysToLive=30
-dataScanReleaseRecords=false
-depthDimension=0
-dataScanPreserveTypes=false
-logLevel=Fine
-dataScanSaveOutput=false
-dataScanFlushRecords=true
-logPath={logs}/{date}_{time}
-dataLayout=table
-terminalEnabled=false
-notificationLevel=null
-userAuthenticator=
-logLevelConsole=Off
-terminalPort=3579
-scanStreamerPort=-1
-dataScanSaveScript=false
-dataScanSaveSetpoints=false
-parallelInitialization=false
-createSessionFiles=true
-versionTrackingLogin={context}/svcusr-hlapp_robot
-versionTrackingManual=true
-versionTrackingRemote=git@git.psi.ch\:tell/X06SA.git
-dataProvider=txt
-saveCommandStatistics=true
+#Fri Aug 14 09:27:15 CEST 2020
+hostName=null
+userManagement=false
+instanceName=X06SA
+autoSaveScanData=true
+simulation=false
+dataServerPort=-1
+hideServerMessages=true
+serverPort=8080
+versionTrackingEnabled=true
+dataPath={data}/{year}_{month}/{date}/{date}_{time}_{name}
+serverEnabled=true
+commandExecutionEvents=false
+logDaysToLive=30
+dataScanReleaseRecords=false
+depthDimension=0
+dataScanPreserveTypes=false
+logLevel=Fine
+dataScanSaveOutput=false
+dataScanFlushRecords=true
+logPath={logs}/{date}_{time}
+dataLayout=table
+terminalEnabled=false
+notificationLevel=null
+userAuthenticator=
+logLevelConsole=Off
+terminalPort=3579
+scanStreamerPort=-1
+dataScanSaveScript=false
+dataScanSaveSetpoints=false
+parallelInitialization=false
+createSessionFiles=true
+versionTrackingLogin={context}/svcusr-hlapp_robot
+versionTrackingManual=true
+versionTrackingRemote=git@git.psi.ch\:tell/X06SA.git
+dataProvider=txt
+saveCommandStatistics=true
diff --git a/config/devices - Copy.properties b/config/devices - Copy.properties
index cc3672f..94d25ce 100644
--- a/config/devices - Copy.properties
+++ b/config/devices - Copy.properties
@@ -1,67 +1,67 @@
-img=ch.psi.pshell.prosilica.Prosilica|25001 "PacketSize=1522;PixelFormat=Mono8;BinningX=1;BinningY=1;RegionX=300;RegionY=200;Width=1000;Height=1000"|||false
-gripper_cam=ch.psi.pshell.imaging.MjpegSource|http://129.129.110.114/axis-cgi/mjpg/video.cgi||-1000|
-microscan=ch.psi.pshell.serial.TcpDevice|129.129.100.200:2001|||
-microscan_cmd=ch.psi.pshell.serial.TcpDevice|129.129.100.200:2003|||
-ue=LaserUE|COM4|||false
-#robot=RobotTcp|127.0.0.1:1000|||
-#onewire=ch.psi.pshell.serial.TcpDevice|129.129.126.83:5000|||
-puck_detection=ch.psi.mxsc.PuckDetection|tell-raspberrypi:5556|||
-#robot_modbus=ch.psi.pshell.modbus.ModbusTCP|129.129.126.100:502|||
-#jf1=ch.psi.pshell.modbus.AnalogInput|robot_modbus 0||100|
-#jf2=ch.psi.pshell.modbus.AnalogInput|robot_modbus 1||100|
-#jf3=ch.psi.pshell.modbus.AnalogInput|robot_modbus 2||100|
-#jf4=ch.psi.pshell.modbus.AnalogInput|robot_modbus 3||100|
-#jf5=ch.psi.pshell.modbus.AnalogInput|robot_modbus 4||100|
-#jf6=ch.psi.pshell.modbus.AnalogInput|robot_modbus 5||100|
-#robot_sts=ch.psi.pshell.modbus.AnalogInputArray|robot_modbus 6 6||100|
-#robot_cmd=ch.psi.pshell.modbus.AnalogOutput|robot_modbus 12|||
-#robot_args=ch.psi.pshell.modbus.AnalogOutputArray|robot_modbus 47 12|||
-#robot_req=ch.psi.pshell.modbus.AnalogOutput|robot_modbus 13|||
-#robot_ack=ch.psi.pshell.modbus.AnalogInput|robot_modbus 14|||
-#robot_ret=ch.psi.pshell.modbus.AnalogInputArray|robot_modbus 15 12|||
-#wago_back=ch.psi.pshell.modbus.ModbusTCP|SF-TEST-WAGO1:502|||
-wago=ch.psi.pshell.modbus.ModbusTCP|wago-mxsc-1:502|||
-led_ok_1=ch.psi.pshell.modbus.DigitalInput|wago 0||1000|
-led_ok_2=ch.psi.pshell.modbus.DigitalInput|wago 1||1000|
-led_ok_3=ch.psi.pshell.modbus.DigitalInput|wago 2||1000|
-feedback_local_safety=ch.psi.pshell.modbus.DigitalInput|wago 3||1000|
-feedback_psys_safety=ch.psi.pshell.modbus.DigitalInput|wago 4||1000|
-filling_phase_separator=ch.psi.pshell.modbus.DigitalInput|wago 5||1000|
-filling_dewar=ch.psi.pshell.modbus.DigitalInput|wago 6||1000|
-dewar_level_high_alarm=ch.psi.pshell.modbus.DigitalInput|wago 7||1000|
-guiding_tool_park=ch.psi.pshell.modbus.DigitalInput|wago 8||1000|
-air_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 9||1000|false
-n2_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 10||1000|
-he_chamber_valve_1=ch.psi.pshell.modbus.DigitalInput|wago 15||1000|
-he_chamber_valve_2=ch.psi.pshell.modbus.DigitalInput|wago 16||1000|
-relays=ch.psi.pshell.modbus.DigitalOutputArray|wago 0 16||1000|
-release_local_safety=ch.psi.pshell.modbus.DigitalOutput|wago 0|||
-release_psys_safety=ch.psi.pshell.modbus.DigitalOutput|wago 1|||
-ln2_main_power=ch.psi.pshell.modbus.DigitalOutput|wago 2|||
-rim_heater=ch.psi.pshell.modbus.DigitalOutput|wago 3|||
-phase_separator_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 4|||
-dewar_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 5|||false
-valve_he_chamber=ch.psi.pshell.modbus.DigitalOutput|wago 6|||
-gripper_dryer=ch.psi.pshell.modbus.DigitalOutput|wago 7|||
-valve_1=ch.psi.pshell.modbus.DigitalOutput|wago 8|||
-valve_2=ch.psi.pshell.modbus.DigitalOutput|wago 9|||
-valve_3=ch.psi.pshell.modbus.DigitalOutput|wago 10|||
-valve_4=ch.psi.pshell.modbus.DigitalOutput|wago 11|||
-#spare_do_1=ch.psi.pshell.modbus.DigitalOutput|wago 12|||
-#spare_do_2=ch.psi.pshell.modbus.DigitalOutput|wago 13|||
-#spare_do_3=ch.psi.pshell.modbus.DigitalOutput|wago 14|||
-#spare_do_4=ch.psi.pshell.modbus.DigitalOutput|wago 15|||
-phase_separator_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 0||10000|
-dewar_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 1||10000|
-rim_heater_temp=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 2||10000|
-air_pressure=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 3||10000|
-n2_pressure=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 4||10000|
-#spare_ai_1=ch.psi.pshell.modbus.AnalogInput|wago 5|||
-#spare_ai_2=ch.psi.pshell.modbus.AnalogInput|wago 6|||
-#spare_ai_3=ch.psi.pshell.modbus.AnalogInput|wago 7|||
-led_ctrl_1=ch.psi.pshell.modbus.ProcessVariable|wago 0|||
-led_ctrl_2=ch.psi.pshell.modbus.ProcessVariable|wago 1|||
-led_ctrl_3=ch.psi.pshell.modbus.ProcessVariable|wago 2|||
-#spare_ao_3=ch.psi.pshell.modbus.AnalogOutput|wago 3|||
-#cam=ch.psi.pshell.epics.AreaDetector|MX-SAMCAM|||
-#img_back=ch.psi.pshell.imaging.CameraSource|cam||-100|
+img=ch.psi.pshell.prosilica.Prosilica|25001 "PacketSize=1522;PixelFormat=Mono8;BinningX=1;BinningY=1;RegionX=300;RegionY=200;Width=1000;Height=1000"|||false
+gripper_cam=ch.psi.pshell.imaging.MjpegSource|http://129.129.110.114/axis-cgi/mjpg/video.cgi||-1000|
+microscan=ch.psi.pshell.serial.TcpDevice|129.129.100.200:2001|||
+microscan_cmd=ch.psi.pshell.serial.TcpDevice|129.129.100.200:2003|||
+ue=LaserUE|COM4|||false
+#robot=RobotTcp|127.0.0.1:1000|||
+#onewire=ch.psi.pshell.serial.TcpDevice|129.129.126.83:5000|||
+puck_detection=ch.psi.mxsc.PuckDetection|tell-raspberrypi:5556|||
+#robot_modbus=ch.psi.pshell.modbus.ModbusTCP|129.129.126.100:502|||
+#jf1=ch.psi.pshell.modbus.AnalogInput|robot_modbus 0||100|
+#jf2=ch.psi.pshell.modbus.AnalogInput|robot_modbus 1||100|
+#jf3=ch.psi.pshell.modbus.AnalogInput|robot_modbus 2||100|
+#jf4=ch.psi.pshell.modbus.AnalogInput|robot_modbus 3||100|
+#jf5=ch.psi.pshell.modbus.AnalogInput|robot_modbus 4||100|
+#jf6=ch.psi.pshell.modbus.AnalogInput|robot_modbus 5||100|
+#robot_sts=ch.psi.pshell.modbus.AnalogInputArray|robot_modbus 6 6||100|
+#robot_cmd=ch.psi.pshell.modbus.AnalogOutput|robot_modbus 12|||
+#robot_args=ch.psi.pshell.modbus.AnalogOutputArray|robot_modbus 47 12|||
+#robot_req=ch.psi.pshell.modbus.AnalogOutput|robot_modbus 13|||
+#robot_ack=ch.psi.pshell.modbus.AnalogInput|robot_modbus 14|||
+#robot_ret=ch.psi.pshell.modbus.AnalogInputArray|robot_modbus 15 12|||
+#wago_back=ch.psi.pshell.modbus.ModbusTCP|SF-TEST-WAGO1:502|||
+wago=ch.psi.pshell.modbus.ModbusTCP|wago-mxsc-1:502|||
+led_ok_1=ch.psi.pshell.modbus.DigitalInput|wago 0||1000|
+led_ok_2=ch.psi.pshell.modbus.DigitalInput|wago 1||1000|
+led_ok_3=ch.psi.pshell.modbus.DigitalInput|wago 2||1000|
+feedback_local_safety=ch.psi.pshell.modbus.DigitalInput|wago 3||1000|
+feedback_psys_safety=ch.psi.pshell.modbus.DigitalInput|wago 4||1000|
+filling_phase_separator=ch.psi.pshell.modbus.DigitalInput|wago 5||1000|
+filling_dewar=ch.psi.pshell.modbus.DigitalInput|wago 6||1000|
+dewar_level_high_alarm=ch.psi.pshell.modbus.DigitalInput|wago 7||1000|
+guiding_tool_park=ch.psi.pshell.modbus.DigitalInput|wago 8||1000|
+air_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 9||1000|false
+n2_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 10||1000|
+he_chamber_valve_1=ch.psi.pshell.modbus.DigitalInput|wago 15||1000|
+he_chamber_valve_2=ch.psi.pshell.modbus.DigitalInput|wago 16||1000|
+relays=ch.psi.pshell.modbus.DigitalOutputArray|wago 0 16||1000|
+release_local_safety=ch.psi.pshell.modbus.DigitalOutput|wago 0|||
+release_psys_safety=ch.psi.pshell.modbus.DigitalOutput|wago 1|||
+ln2_main_power=ch.psi.pshell.modbus.DigitalOutput|wago 2|||
+rim_heater=ch.psi.pshell.modbus.DigitalOutput|wago 3|||
+phase_separator_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 4|||
+dewar_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 5|||false
+valve_he_chamber=ch.psi.pshell.modbus.DigitalOutput|wago 6|||
+gripper_dryer=ch.psi.pshell.modbus.DigitalOutput|wago 7|||
+valve_1=ch.psi.pshell.modbus.DigitalOutput|wago 8|||
+valve_2=ch.psi.pshell.modbus.DigitalOutput|wago 9|||
+valve_3=ch.psi.pshell.modbus.DigitalOutput|wago 10|||
+valve_4=ch.psi.pshell.modbus.DigitalOutput|wago 11|||
+#spare_do_1=ch.psi.pshell.modbus.DigitalOutput|wago 12|||
+#spare_do_2=ch.psi.pshell.modbus.DigitalOutput|wago 13|||
+#spare_do_3=ch.psi.pshell.modbus.DigitalOutput|wago 14|||
+#spare_do_4=ch.psi.pshell.modbus.DigitalOutput|wago 15|||
+phase_separator_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 0||10000|
+dewar_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 1||10000|
+rim_heater_temp=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 2||10000|
+air_pressure=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 3||10000|
+n2_pressure=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 4||10000|
+#spare_ai_1=ch.psi.pshell.modbus.AnalogInput|wago 5|||
+#spare_ai_2=ch.psi.pshell.modbus.AnalogInput|wago 6|||
+#spare_ai_3=ch.psi.pshell.modbus.AnalogInput|wago 7|||
+led_ctrl_1=ch.psi.pshell.modbus.ProcessVariable|wago 0|||
+led_ctrl_2=ch.psi.pshell.modbus.ProcessVariable|wago 1|||
+led_ctrl_3=ch.psi.pshell.modbus.ProcessVariable|wago 2|||
+#spare_ao_3=ch.psi.pshell.modbus.AnalogOutput|wago 3|||
+#cam=ch.psi.pshell.epics.AreaDetector|MX-SAMCAM|||
+#img_back=ch.psi.pshell.imaging.CameraSource|cam||-100|
diff --git a/config/devices.properties b/config/devices.properties
index 8193ed4..3543c69 100644
--- a/config/devices.properties
+++ b/config/devices.properties
@@ -1,59 +1,60 @@
-cryopos=ch.psi.pshell.epics.Motor|X06SA-ES-CJ:TRY1|||true
-eh_door_lock=ch.psi.pshell.epics.ChannelString|X06SA-EH1-LAC:02_05|Read||true
-img=ch.psi.pshell.prosilica.Prosilica|204464 "PacketSize=1504;PixelFormat=Mono8;BinningX=1;BinningY=1;RegionX=290;RegionY=130;Width=1000;Height=1000;MulticastEnable=Off"||-200|false
-gripper_cam=ch.psi.pshell.imaging.MjpegSource|http://axis-accc8ea5e463.psi.ch/axis-cgi/mjpg/video.cgi?camera=1 reopen||-200|false
-monitoring_cam=ch.psi.pshell.imaging.MjpegSource|http://axis-accc8ea5e463.psi.ch/axis-cgi/mjpg/video.cgi?camera=2 reopen||-200|
-#top_cam=ch.psi.pshell.imaging.MjpegSource|http://axis-accc8ea5e463.psi.ch/axis-cgi/mjpg/video.cgi?camera=3 true||-200|
-#cam=ch.psi.pshell.epics.AreaDetector|MX-SAMCAM|||
-mscan_pin=ch.psi.pshell.serial.TcpDevice|mscan-tell6s-pin:2001|||
-mscan_pin_cmd=ch.psi.pshell.serial.TcpDevice|mscan-tell6s-pin:2003|||
-mscan_puck=ch.psi.pshell.serial.TcpDevice|mscan-tell6s-puck:2001|||
-mscan_puck_cmd=ch.psi.pshell.serial.TcpDevice|mscan-tell6s-puck:2003|||
-ue=LaserUE|COM3 50 35|||true
-puck_detection=ch.psi.mxsc.PuckDetection|tell6s-raspberrypi:5556|||
-#th2e=ch.psi.pshell.modbus.ModbusTCP|129.129.109.200:502|||
-#temperature=ch.psi.pshell.modbus.ReadonlyProcessVariable|th2e 1||10000|
-#humidity=ch.psi.pshell.modbus.ReadonlyProcessVariable|th2e 5||10000|
-#dew_point=ch.psi.pshell.modbus.ReadonlyProcessVariable|th2e 9||10000|
-wago=ch.psi.pshell.modbus.ModbusTCP|tell6s-wago:502|||
-led_ok_1=ch.psi.pshell.modbus.DigitalInput|wago 0||1000|
-led_ok_2=ch.psi.pshell.modbus.DigitalInput|wago 1||1000|
-led_ok_3=ch.psi.pshell.modbus.DigitalInput|wago 2||1000|
-feedback_local_safety=ch.psi.pshell.modbus.DigitalInput|wago 3||1000|
-feedback_psys_safety=ch.psi.pshell.modbus.DigitalInput|wago 4||1000|
-filling_dewar=ch.psi.pshell.modbus.DigitalInput|wago 5||1000|
-dewar_level_high_alarm=ch.psi.pshell.modbus.DigitalInput|wago 6||1000|
-guiding_tool_park=ch.psi.pshell.modbus.DigitalInput|wago 7||1000|
-air_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 8||1000|false
-n2_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 9||1000|
-smc_magnet_status=ch.psi.pshell.modbus.DigitalInput|wago 10||1000|
-smc_mounted_1=ch.psi.pshell.modbus.DigitalInput|wago 11||1000|
-smc_mounted_2=ch.psi.pshell.modbus.DigitalInput|wago 12||1000|
-#spare_di_1=ch.psi.pshell.modbus.DigitalInput|wago 13|||
-#spare_di_2=ch.psi.pshell.modbus.DigitalInput|wago 14|||
-#spare_di_3=ch.psi.pshell.modbus.DigitalInput|wago 15|||
-#spare_di_4=ch.psi.pshell.modbus.DigitalInput|wago 16|||
-relays=ch.psi.pshell.modbus.DigitalOutputArray|wago 0 16||1000|
-release_local_safety=ch.psi.pshell.modbus.DigitalOutput|wago 0|||
-release_psys_safety=ch.psi.pshell.modbus.DigitalOutput|wago 1|||
-#spare_do_1=ch.psi.pshell.modbus.DigitalOutput|wago 2|||
-#spare_do_2=ch.psi.pshell.modbus.DigitalOutput|wago 3|||
-#spare_do_3=ch.psi.pshell.modbus.DigitalOutput|wago 4|||
-gripper_dryer=ch.psi.pshell.modbus.DigitalOutput|wago 5|||
-smc_sup_det=ch.psi.pshell.modbus.DigitalOutput|wago 6|||
-valve_1=ch.psi.pshell.modbus.DigitalOutput|wago 7|||
-valve_2=ch.psi.pshell.modbus.DigitalOutput|wago 8|||
-valve_3=ch.psi.pshell.modbus.DigitalOutput|wago 9|||
-valve_4=ch.psi.pshell.modbus.DigitalOutput|wago 10|||
-dewar_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 0||10000|
-rim_heater_temp=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 1||10000|
-#spare_ai_1=ch.psi.pshell.modbus.AnalogInput|wago 2|||false
-#spare_ai_2=ch.psi.pshell.modbus.AnalogInput|wago 3|||
-smc_current_rb=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 4||1000|
-#spare_ai_3=ch.psi.pshell.modbus.AnalogInput|wago 5|||
-#spare_ai_4=ch.psi.pshell.modbus.AnalogInput|wago 6|||
-#spare_ai_5=ch.psi.pshell.modbus.AnalogInput|wago 7|||
-led_ctrl_1=ch.psi.pshell.modbus.ProcessVariable|wago 0|||
-led_ctrl_2=ch.psi.pshell.modbus.ProcessVariable|wago 1|||
-led_ctrl_3=ch.psi.pshell.modbus.ProcessVariable|wago 2|||
-smc_current=ch.psi.pshell.modbus.ProcessVariable|wago 3|||
+cryopos=ch.psi.pshell.epics.Motor|X06SA-ES-CJ:TRY1|||true
+eh_door_lock=ch.psi.pshell.epics.ChannelString|X06SA-EH1-LAC:02_05|Read||true
+img=ch.psi.pshell.prosilica.Prosilica|204464 "PacketSize=1504;PixelFormat=Mono8;BinningX=1;BinningY=1;RegionX=290;RegionY=130;Width=1000;Height=1000;MulticastEnable=Off"||-200|false
+gripper_cam=ch.psi.pshell.imaging.MjpegSource|http://axis-accc8ea5e463.psi.ch/axis-cgi/mjpg/video.cgi?camera=1 reopen||-200|false
+monitoring_cam=ch.psi.pshell.imaging.MjpegSource|http://axis-accc8ea5e463.psi.ch/axis-cgi/mjpg/video.cgi?camera=2 reopen||-200|
+#top_cam=ch.psi.pshell.imaging.MjpegSource|http://axis-accc8ea5e463.psi.ch/axis-cgi/mjpg/video.cgi?camera=3 true||-200|
+#cam=ch.psi.pshell.epics.AreaDetector|MX-SAMCAM|||
+mscan_pin=ch.psi.pshell.serial.TcpDevice|mscan-tell6s-pin:2001|||
+mscan_pin_cmd=ch.psi.pshell.serial.TcpDevice|mscan-tell6s-pin:2003|||
+mscan_puck=ch.psi.pshell.serial.TcpDevice|mscan-tell6s-puck:2001|||
+mscan_puck_cmd=ch.psi.pshell.serial.TcpDevice|mscan-tell6s-puck:2003|||
+ue=LaserUE|COM3 50 35|||true
+puck_detection=ch.psi.mxsc.PuckDetection|tell6s-raspberrypi:5556|||
+#th2e=ch.psi.pshell.modbus.ModbusTCP|129.129.109.200:502|||
+#temperature=ch.psi.pshell.modbus.ReadonlyProcessVariable|th2e 1||10000|
+#humidity=ch.psi.pshell.modbus.ReadonlyProcessVariable|th2e 5||10000|
+#dew_point=ch.psi.pshell.modbus.ReadonlyProcessVariable|th2e 9||10000|
+wago=ch.psi.pshell.modbus.ModbusTCP|tell6s-wago:502|||
+led_ok_1=ch.psi.pshell.modbus.DigitalInput|wago 0||1000|
+led_ok_2=ch.psi.pshell.modbus.DigitalInput|wago 1||1000|
+led_ok_3=ch.psi.pshell.modbus.DigitalInput|wago 2||1000|
+feedback_local_safety=ch.psi.pshell.modbus.DigitalInput|wago 3||1000|
+feedback_psys_safety=ch.psi.pshell.modbus.DigitalInput|wago 4||1000|
+filling_dewar=ch.psi.pshell.modbus.DigitalInput|wago 5||1000|
+dewar_level_high_alarm=ch.psi.pshell.modbus.DigitalInput|wago 6||1000|
+guiding_tool_park=ch.psi.pshell.modbus.DigitalInput|wago 7||1000|
+air_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 8||1000|false
+n2_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 9||1000|
+smc_magnet_status=ch.psi.pshell.modbus.DigitalInput|wago 10||1000|
+smc_mounted_1=ch.psi.pshell.modbus.DigitalInput|wago 11||1000|
+smc_mounted_2=ch.psi.pshell.modbus.DigitalInput|wago 12||1000|
+guiding_tool_park_2=ch.psi.pshell.modbus.DigitalInput|wago 13||1000|
+#spare_di_2=ch.psi.pshell.modbus.DigitalInput|wago 14||1000|
+#spare_di_3=ch.psi.pshell.modbus.DigitalInput|wago 15||1000|
+#spare_di_4=ch.psi.pshell.modbus.DigitalInput|wago 16||1000|
+relays=ch.psi.pshell.modbus.DigitalOutputArray|wago 0 16||1000|
+#inputs=ch.psi.pshell.modbus.DigitalInputArray|wago 0 32||1000|
+release_local_safety=ch.psi.pshell.modbus.DigitalOutput|wago 0|||
+release_psys_safety=ch.psi.pshell.modbus.DigitalOutput|wago 1|||
+#spare_do_1=ch.psi.pshell.modbus.DigitalOutput|wago 2|||
+#spare_do_2=ch.psi.pshell.modbus.DigitalOutput|wago 3|||
+#spare_do_3=ch.psi.pshell.modbus.DigitalOutput|wago 4|||
+gripper_dryer=ch.psi.pshell.modbus.DigitalOutput|wago 5|||
+smc_sup_det=ch.psi.pshell.modbus.DigitalOutput|wago 6|||
+valve_1=ch.psi.pshell.modbus.DigitalOutput|wago 7|||
+valve_2=ch.psi.pshell.modbus.DigitalOutput|wago 8|||
+valve_3=ch.psi.pshell.modbus.DigitalOutput|wago 9|||
+valve_4=ch.psi.pshell.modbus.DigitalOutput|wago 10|||
+dewar_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 0||10000|
+rim_heater_temp=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 1||10000|
+#spare_ai_1=ch.psi.pshell.modbus.AnalogInput|wago 2|||false
+#spare_ai_2=ch.psi.pshell.modbus.AnalogInput|wago 3|||
+smc_current_rb=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 4||1000|
+#spare_ai_3=ch.psi.pshell.modbus.AnalogInput|wago 5|||
+#spare_ai_4=ch.psi.pshell.modbus.AnalogInput|wago 6|||
+#spare_ai_5=ch.psi.pshell.modbus.AnalogInput|wago 7|||
+led_ctrl_1=ch.psi.pshell.modbus.ProcessVariable|wago 0|||
+led_ctrl_2=ch.psi.pshell.modbus.ProcessVariable|wago 1|||
+led_ctrl_3=ch.psi.pshell.modbus.ProcessVariable|wago 2|||
+smc_current=ch.psi.pshell.modbus.ProcessVariable|wago 3|||
diff --git a/config/jcae.properties b/config/jcae.properties
index 2bb0691..7f9e889 100644
--- a/config/jcae.properties
+++ b/config/jcae.properties
@@ -1,11 +1,11 @@
-#Tue Sep 06 15:10:24 CEST 2016
-ch.psi.jcae.ContextFactory.addressList=
-ch.psi.jcae.ContextFactory.serverPort=
-ch.psi.jcae.ContextFactory.maxArrayBytes=20000000
-ch.psi.jcae.ChannelFactory.retries=1
-ch.psi.jcae.ChannelFactory.timeout=500
-ch.psi.jcae.impl.DefaultChannelService.retries=2
-ch.psi.jcae.impl.DefaultChannelService.timeout=1000
-ch.psi.jcae.ContextFactory.autoAddressList=true
-ch.psi.jcae.ContextFactory.useShellVariables=false
-ch.psi.jcae.ContextFactory.addLocalBroadcastInterfaces=false
+#Tue Sep 06 15:10:24 CEST 2016
+ch.psi.jcae.ContextFactory.addressList=
+ch.psi.jcae.ContextFactory.serverPort=
+ch.psi.jcae.ContextFactory.maxArrayBytes=20000000
+ch.psi.jcae.ChannelFactory.retries=1
+ch.psi.jcae.ChannelFactory.timeout=500
+ch.psi.jcae.impl.DefaultChannelService.retries=2
+ch.psi.jcae.impl.DefaultChannelService.timeout=1000
+ch.psi.jcae.ContextFactory.autoAddressList=true
+ch.psi.jcae.ContextFactory.useShellVariables=false
+ch.psi.jcae.ContextFactory.addLocalBroadcastInterfaces=false
diff --git a/config/mail.properties b/config/mail.properties
index e04b672..0657827 100644
--- a/config/mail.properties
+++ b/config/mail.properties
@@ -1,9 +1,9 @@
-#Mon Oct 23 10:53:54 CEST 2017
-auth=None
-from=
-host=
-port=0
-pwd=
-smsSuffix=@sms.switch.ch
-to=
-usr=
+#Mon Oct 23 10:53:54 CEST 2017
+auth=None
+from=
+host=
+port=0
+pwd=
+smsSuffix=@sms.switch.ch
+to=
+usr=
diff --git a/config/plugins.properties b/config/plugins.properties
index 1522a96..ac378ef 100644
--- a/config/plugins.properties
+++ b/config/plugins.properties
@@ -1,21 +1,21 @@
-MXSC-1.10.0\ -\ Back.jar=disabled
-Commands.java=disabled
-Recovery.java=disabled
-MXSC-1.10.0.jar=disabled
-WagoPanel.java=enabled
-LaserUEPanel.java=enabled
-BarcodeReaderPanel.java=enabled
-PuckDetectionPanel.java=enabled
-HexiposiPanel.java=enabled
-MjpegSource2.java=enabled
-LN2.java=disabled
-Hexiposi.java=disabled
-RobotPanel.java=enabled
-SmartMagnetConfig.java=disabled
-SmartMagnetPanel.java=enabled
-LaserUE.java=enabled
-TestZMQ.java=disabled
-RobotModbus.java=disabled
-RobotTcp.java=disabled
-Beeper.java=disabled
-gui.java=disabled
+MXSC-1.10.0\ -\ Back.jar=disabled
+Commands.java=disabled
+Recovery.java=disabled
+MXSC-1.10.0.jar=disabled
+WagoPanel.java=enabled
+LaserUEPanel.java=enabled
+BarcodeReaderPanel.java=enabled
+PuckDetectionPanel.java=enabled
+HexiposiPanel.java=enabled
+MjpegSource2.java=enabled
+LN2.java=disabled
+Hexiposi.java=disabled
+RobotPanel.java=enabled
+SmartMagnetConfig.java=disabled
+SmartMagnetPanel.java=enabled
+LaserUE.java=enabled
+TestZMQ.java=disabled
+RobotModbus.java=disabled
+RobotTcp.java=disabled
+Beeper.java=disabled
+gui.java=disabled
diff --git a/config/settings.properties b/config/settings.properties
index 4597ded..cb4f64a 100644
--- a/config/settings.properties
+++ b/config/settings.properties
@@ -1,21 +1,21 @@
-#Fri Jul 30 10:49:16 CEST 2021
-dry_mount_counter=0
-room_temperature_enabled=false
-pin_offset=-0.0
-cryopos_in=5.0
-puck_types=true
-imaging_enabled=false
-dry_timestamp=1.626443745088E9
-roi_h=1000
-led_level=0.0
-beamline_status_enabled=false
-force_dry_mount_count=15
-cryopos_out=15.0
-roi_y=123
-barcode_reader_scan_pucks=false
-cryopos_mid=12.0
-cold_position_timeout=3600
-force_dry_timeout=0
-roi_w=1000
-roi_x=289
-valve_control=false
+#Tue Aug 03 15:17:55 CEST 2021
+dry_mount_counter=4
+room_temperature_enabled=false
+pin_offset=-0.0
+cryopos_in=5.0
+puck_types=true
+imaging_enabled=false
+dry_timestamp=1.626443745088E9
+roi_h=1000
+led_level=0.0
+beamline_status_enabled=false
+force_dry_mount_count=15
+cryopos_out=15.0
+roi_y=123
+barcode_reader_scan_pucks=false
+cryopos_mid=12.0
+cold_position_timeout=3600
+force_dry_timeout=0
+roi_w=1000
+roi_x=289
+valve_control=false
diff --git a/config/setup-modbus.properties b/config/setup-modbus.properties
index eb292c1..893fe12 100644
--- a/config/setup-modbus.properties
+++ b/config/setup-modbus.properties
@@ -1,18 +1,18 @@
-#Wed Sep 14 15:16:45 CEST 2016
-configFile={config}/config.properties
-configFileDevices={config}/devices-modbus.properties
-configFilePlugins={config}/plugins.properties
-configFileTasks={config}/tasks.properties
-configPath={home}/config
-contextPath={outp}/context
-dataPath={outp}/data
-devicesPath={home}/devices
-extensionsPath={home}/extensions
-imagesPath={outp}/images
-libraryPath={script}; {script}/Lib
-logPath={outp}/log
-pluginsPath={home}/plugins
-scriptPath={home}/script
-scriptType=py
-sessionsPath={outp}/sessions
-wwwPath={home}/www
+#Wed Sep 14 15:16:45 CEST 2016
+configFile={config}/config.properties
+configFileDevices={config}/devices-modbus.properties
+configFilePlugins={config}/plugins.properties
+configFileTasks={config}/tasks.properties
+configPath={home}/config
+contextPath={outp}/context
+dataPath={outp}/data
+devicesPath={home}/devices
+extensionsPath={home}/extensions
+imagesPath={outp}/images
+libraryPath={script}; {script}/Lib
+logPath={outp}/log
+pluginsPath={home}/plugins
+scriptPath={home}/script
+scriptType=py
+sessionsPath={outp}/sessions
+wwwPath={home}/www
diff --git a/config/setup.properties b/config/setup.properties
index 7ad15eb..87a13e8 100644
--- a/config/setup.properties
+++ b/config/setup.properties
@@ -1,20 +1,20 @@
-#Tue Sep 17 15:06:05 CEST 2019
-configFile={config}/config.properties
-configFileDevices={config}/devices.properties
-configFilePlugins={config}/plugins.properties
-configFileSettings={config}/settings.properties
-configFileTasks={config}/tasks.properties
-configFileVariables={config}/variables.properties
-configPath={home}/config
-contextPath={outp}/context
-dataPath={outp}/data
-devicesPath={home}/devices
-extensionsPath={home}/extensions
-imagesPath={outp}/images
-libraryPath={script}; {script}/Lib
-logPath={outp}/log
-pluginsPath={home}/plugins
-scriptPath={home}/script
-scriptType=py
-sessionsPath={outp}/sessions
-wwwPath={home}/www
+#Tue Sep 17 15:06:05 CEST 2019
+configFile={config}/config.properties
+configFileDevices={config}/devices.properties
+configFilePlugins={config}/plugins.properties
+configFileSettings={config}/settings.properties
+configFileTasks={config}/tasks.properties
+configFileVariables={config}/variables.properties
+configPath={home}/config
+contextPath={outp}/context
+dataPath={outp}/data
+devicesPath={home}/devices
+extensionsPath={home}/extensions
+imagesPath={outp}/images
+libraryPath={script}; {script}/Lib
+logPath={outp}/log
+pluginsPath={home}/plugins
+scriptPath={home}/script
+scriptType=py
+sessionsPath={outp}/sessions
+wwwPath={home}/www
diff --git a/config/tasks.properties b/config/tasks.properties
index 92f138b..15051e4 100644
--- a/config/tasks.properties
+++ b/config/tasks.properties
@@ -1,2 +1,2 @@
-tasks/LedMonitoring=120
-tasks/ColdPositionTimeout=300
+tasks/LedMonitoring=120
+tasks/ColdPositionTimeout=300
diff --git a/config/variables.properties b/config/variables.properties
index 15f8089..9155ff5 100644
--- a/config/variables.properties
+++ b/config/variables.properties
@@ -1,2 +1,2 @@
-#Fri Jul 30 10:03:08 CEST 2021
-FileSequentialNumber=295
+#Fri Jul 30 10:03:08 CEST 2021
+FileSequentialNumber=295
diff --git a/devices/20161117_163816.png.properties b/devices/20161117_163816.png.properties
index be1fd91..002c936 100644
--- a/devices/20161117_163816.png.properties
+++ b/devices/20161117_163816.png.properties
@@ -1,20 +1,20 @@
-#Mon Oct 23 15:10:20 CEST 2017
-flipHorizontally=false
-flipVertically=false
-grayscale=false
-invert=false
-rescaleFactor=1.0
-rescaleOffset=0.0
-roiHeight=-1
-roiWidth=-1
-roiX=0
-roiY=0
-rotation=0.0
-rotationCrop=false
-scale=1.0
-spatialCalOffsetX=NaN
-spatialCalOffsetY=NaN
-spatialCalScaleX=NaN
-spatialCalScaleY=NaN
-spatialCalUnits=mm
-transpose=false
+#Mon Oct 23 15:10:20 CEST 2017
+flipHorizontally=false
+flipVertically=false
+grayscale=false
+invert=false
+rescaleFactor=1.0
+rescaleOffset=0.0
+roiHeight=-1
+roiWidth=-1
+roiX=0
+roiY=0
+rotation=0.0
+rotationCrop=false
+scale=1.0
+spatialCalOffsetX=NaN
+spatialCalOffsetY=NaN
+spatialCalScaleX=NaN
+spatialCalScaleY=NaN
+spatialCalUnits=mm
+transpose=false
diff --git a/devices/A1.properties b/devices/A1.properties
index ec0c6df..5654dbb 100644
--- a/devices/A1.properties
+++ b/devices/A1.properties
@@ -1,3 +1,3 @@
-#Thu Nov 12 09:42:25 CET 2020
-detection=Mechanical
-disabled=false
+#Thu Nov 12 09:42:25 CET 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/A2.properties b/devices/A2.properties
index 8cdeb3f..d865944 100644
--- a/devices/A2.properties
+++ b/devices/A2.properties
@@ -1,3 +1,3 @@
-#Thu Nov 12 09:42:29 CET 2020
-detection=Mechanical
-disabled=false
+#Thu Nov 12 09:42:29 CET 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/A3.properties b/devices/A3.properties
index 75d14c7..5950398 100644
--- a/devices/A3.properties
+++ b/devices/A3.properties
@@ -1,3 +1,3 @@
-#Tue Mar 10 08:15:12 CET 2020
-detection=Mechanical
-disabled=false
+#Tue Mar 10 08:15:12 CET 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/A4.properties b/devices/A4.properties
index 502a5d0..7dad517 100644
--- a/devices/A4.properties
+++ b/devices/A4.properties
@@ -1,3 +1,3 @@
-#Thu Jun 06 15:40:34 CEST 2019
-detection=Mechanical
-disabled=false
+#Thu Jun 06 15:40:34 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/A5.properties b/devices/A5.properties
index adcc5f3..f886a5f 100644
--- a/devices/A5.properties
+++ b/devices/A5.properties
@@ -1,3 +1,3 @@
-#Tue Jan 21 09:46:49 CET 2020
-detection=Mechanical
-disabled=false
+#Tue Jan 21 09:46:49 CET 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/B1.properties b/devices/B1.properties
index bdd9436..d0db30a 100644
--- a/devices/B1.properties
+++ b/devices/B1.properties
@@ -1,3 +1,3 @@
-#Wed Sep 16 08:50:16 CEST 2020
-detection=Mechanical
-disabled=false
+#Wed Sep 16 08:50:16 CEST 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/B2.properties b/devices/B2.properties
index eb9acda..f9b121a 100644
--- a/devices/B2.properties
+++ b/devices/B2.properties
@@ -1,3 +1,3 @@
-#Thu Nov 12 09:42:34 CET 2020
-detection=Mechanical
-disabled=false
+#Thu Nov 12 09:42:34 CET 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/B3.properties b/devices/B3.properties
index e2eed82..4889b46 100644
--- a/devices/B3.properties
+++ b/devices/B3.properties
@@ -1,3 +1,3 @@
-#Tue Nov 19 11:00:48 CET 2019
-detection=Mechanical
-disabled=false
+#Tue Nov 19 11:00:48 CET 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/B4.properties b/devices/B4.properties
index 074e71d..a8453b9 100644
--- a/devices/B4.properties
+++ b/devices/B4.properties
@@ -1,3 +1,3 @@
-#Sat Dec 14 17:27:09 CET 2019
-detection=Mechanical
-disabled=false
+#Sat Dec 14 17:27:09 CET 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/B5.properties b/devices/B5.properties
index f768e0f..2047b5e 100644
--- a/devices/B5.properties
+++ b/devices/B5.properties
@@ -1,3 +1,3 @@
-#Wed Dec 11 08:55:08 CET 2019
-detection=Mechanical
-disabled=false
+#Wed Dec 11 08:55:08 CET 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/BasePlate.properties b/devices/BasePlate.properties
index 1e25f83..aebdfa4 100644
--- a/devices/BasePlate.properties
+++ b/devices/BasePlate.properties
@@ -1 +1 @@
-#Fri Feb 10 14:35:38 CET 2017
+#Fri Feb 10 14:35:38 CET 2017
diff --git a/devices/C1.properties b/devices/C1.properties
index 42e8813..28ed6d7 100644
--- a/devices/C1.properties
+++ b/devices/C1.properties
@@ -1,3 +1,3 @@
-#Thu Sep 19 08:23:31 CEST 2019
-detection=Mechanical
-disabled=false
+#Thu Sep 19 08:23:31 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/C2.properties b/devices/C2.properties
index 3602507..2081656 100644
--- a/devices/C2.properties
+++ b/devices/C2.properties
@@ -1,3 +1,3 @@
-#Thu Nov 12 10:06:30 CET 2020
-detection=Mechanical
-disabled=false
+#Thu Nov 12 10:06:30 CET 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/C3.properties b/devices/C3.properties
index 5210a65..7842070 100644
--- a/devices/C3.properties
+++ b/devices/C3.properties
@@ -1,3 +1,3 @@
-#Thu Sep 19 08:23:37 CEST 2019
-detection=Mechanical
-disabled=false
+#Thu Sep 19 08:23:37 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/C4.properties b/devices/C4.properties
index 61fba0c..dab1360 100644
--- a/devices/C4.properties
+++ b/devices/C4.properties
@@ -1,3 +1,3 @@
-#Wed Dec 11 08:56:26 CET 2019
-detection=Mechanical
-disabled=false
+#Wed Dec 11 08:56:26 CET 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/C5.properties b/devices/C5.properties
index 354cfeb..bc9351c 100644
--- a/devices/C5.properties
+++ b/devices/C5.properties
@@ -1,3 +1,3 @@
-#Thu Sep 19 08:23:43 CEST 2019
-detection=Mechanical
-disabled=false
+#Thu Sep 19 08:23:43 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/D1.properties b/devices/D1.properties
index d83b456..be32157 100644
--- a/devices/D1.properties
+++ b/devices/D1.properties
@@ -1,3 +1,3 @@
-#Thu Sep 19 08:23:48 CEST 2019
-detection=Mechanical
-disabled=false
+#Thu Sep 19 08:23:48 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/D2.properties b/devices/D2.properties
index 65e40d6..b7fe215 100644
--- a/devices/D2.properties
+++ b/devices/D2.properties
@@ -1,3 +1,3 @@
-#Thu Sep 19 08:23:51 CEST 2019
-detection=Mechanical
-disabled=false
+#Thu Sep 19 08:23:51 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/D3.properties b/devices/D3.properties
index 5490caf..4ad23f8 100644
--- a/devices/D3.properties
+++ b/devices/D3.properties
@@ -1,3 +1,3 @@
-#Thu Sep 19 08:23:53 CEST 2019
-detection=Mechanical
-disabled=false
+#Thu Sep 19 08:23:53 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/D4.properties b/devices/D4.properties
index 18e4fc5..88abb03 100644
--- a/devices/D4.properties
+++ b/devices/D4.properties
@@ -1,3 +1,3 @@
-#Wed Oct 14 16:15:14 CEST 2020
-detection=Mechanical
-disabled=false
+#Wed Oct 14 16:15:14 CEST 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/D5.properties b/devices/D5.properties
index c0a9c00..23581f3 100644
--- a/devices/D5.properties
+++ b/devices/D5.properties
@@ -1,3 +1,3 @@
-#Fri Dec 04 15:49:00 CET 2020
-detection=Mechanical
-disabled=false
+#Fri Dec 04 15:49:00 CET 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/E1.properties b/devices/E1.properties
index 5698230..1898ba8 100644
--- a/devices/E1.properties
+++ b/devices/E1.properties
@@ -1,3 +1,3 @@
-#Tue Aug 18 13:57:40 CEST 2020
-detection=Mechanical
-disabled=false
+#Tue Aug 18 13:57:40 CEST 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/E2.properties b/devices/E2.properties
index 2a01b20..e443147 100644
--- a/devices/E2.properties
+++ b/devices/E2.properties
@@ -1,3 +1,3 @@
-#Tue Aug 18 13:57:56 CEST 2020
-detection=Mechanical
-disabled=false
+#Tue Aug 18 13:57:56 CEST 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/E3.properties b/devices/E3.properties
index 8969310..cfea778 100644
--- a/devices/E3.properties
+++ b/devices/E3.properties
@@ -1,3 +1,3 @@
-#Tue Aug 27 11:23:43 CEST 2019
-detection=Mechanical
-disabled=false
+#Tue Aug 27 11:23:43 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/E4.properties b/devices/E4.properties
index c44f3ec..8ffd9ee 100644
--- a/devices/E4.properties
+++ b/devices/E4.properties
@@ -1,3 +1,3 @@
-#Tue Aug 27 11:23:47 CEST 2019
-detection=Mechanical
-disabled=false
+#Tue Aug 27 11:23:47 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/E5.properties b/devices/E5.properties
index 9b88e92..e86784b 100644
--- a/devices/E5.properties
+++ b/devices/E5.properties
@@ -1,3 +1,3 @@
-#Tue Aug 27 11:23:51 CEST 2019
-detection=Mechanical
-disabled=false
+#Tue Aug 27 11:23:51 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/F1.properties b/devices/F1.properties
index a234b64..e9cab7d 100644
--- a/devices/F1.properties
+++ b/devices/F1.properties
@@ -1,3 +1,3 @@
-#Tue Aug 18 13:58:36 CEST 2020
-detection=Mechanical
-disabled=false
+#Tue Aug 18 13:58:36 CEST 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/F2.properties b/devices/F2.properties
index dce85b2..6e9df7a 100644
--- a/devices/F2.properties
+++ b/devices/F2.properties
@@ -1,3 +1,3 @@
-#Tue Sep 10 08:18:28 CEST 2019
-detection=Mechanical
-disabled=false
+#Tue Sep 10 08:18:28 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/F3.properties b/devices/F3.properties
index e7aeabe..16463c5 100644
--- a/devices/F3.properties
+++ b/devices/F3.properties
@@ -1,3 +1,3 @@
-#Thu Jun 06 15:47:23 CEST 2019
-detection=Mechanical
-disabled=false
+#Thu Jun 06 15:47:23 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/F4.properties b/devices/F4.properties
index 547817a..7159dee 100644
--- a/devices/F4.properties
+++ b/devices/F4.properties
@@ -1,3 +1,3 @@
-#Tue Sep 10 08:18:31 CEST 2019
-detection=Mechanical
-disabled=false
+#Tue Sep 10 08:18:31 CEST 2019
+detection=Mechanical
+disabled=false
diff --git a/devices/F5.properties b/devices/F5.properties
index c511c00..4b72df5 100644
--- a/devices/F5.properties
+++ b/devices/F5.properties
@@ -1,3 +1,3 @@
-#Tue Mar 10 08:15:52 CET 2020
-detection=Mechanical
-disabled=false
+#Tue Mar 10 08:15:52 CET 2020
+detection=Mechanical
+disabled=false
diff --git a/devices/R1.properties b/devices/R1.properties
index fa91122..c954e1b 100644
--- a/devices/R1.properties
+++ b/devices/R1.properties
@@ -1,3 +1,3 @@
-#Tue Feb 19 12:07:25 CET 2019
-detection=Both
-disabled=false
+#Tue Feb 19 12:07:25 CET 2019
+detection=Both
+disabled=false
diff --git a/devices/R2.properties b/devices/R2.properties
index fa91122..c954e1b 100644
--- a/devices/R2.properties
+++ b/devices/R2.properties
@@ -1,3 +1,3 @@
-#Tue Feb 19 12:07:25 CET 2019
-detection=Both
-disabled=false
+#Tue Feb 19 12:07:25 CET 2019
+detection=Both
+disabled=false
diff --git a/devices/R3.properties b/devices/R3.properties
index fa91122..c954e1b 100644
--- a/devices/R3.properties
+++ b/devices/R3.properties
@@ -1,3 +1,3 @@
-#Tue Feb 19 12:07:25 CET 2019
-detection=Both
-disabled=false
+#Tue Feb 19 12:07:25 CET 2019
+detection=Both
+disabled=false
diff --git a/devices/R4.properties b/devices/R4.properties
index fa91122..c954e1b 100644
--- a/devices/R4.properties
+++ b/devices/R4.properties
@@ -1,3 +1,3 @@
-#Tue Feb 19 12:07:25 CET 2019
-detection=Both
-disabled=false
+#Tue Feb 19 12:07:25 CET 2019
+detection=Both
+disabled=false
diff --git a/devices/R5.properties b/devices/R5.properties
index fa91122..c954e1b 100644
--- a/devices/R5.properties
+++ b/devices/R5.properties
@@ -1,3 +1,3 @@
-#Tue Feb 19 12:07:25 CET 2019
-detection=Both
-disabled=false
+#Tue Feb 19 12:07:25 CET 2019
+detection=Both
+disabled=false
diff --git a/devices/RoomTemperatureBasePlate.properties b/devices/RoomTemperatureBasePlate.properties
index a8e063a..3018a1d 100644
--- a/devices/RoomTemperatureBasePlate.properties
+++ b/devices/RoomTemperatureBasePlate.properties
@@ -1 +1 @@
-#Tue Feb 19 12:07:25 CET 2019
+#Tue Feb 19 12:07:25 CET 2019
diff --git a/devices/Time.properties b/devices/Time.properties
index 33011f0..d29613b 100644
--- a/devices/Time.properties
+++ b/devices/Time.properties
@@ -1,10 +1,10 @@
-#Wed Jun 27 10:48:14 CEST 2018
-maxValue=NaN
-minValue=NaN
-offset=0.0
-precision=-1
-resolution=NaN
-rotation=false
-scale=1.0
-sign_bit=0
-unit=null
+#Wed Jun 27 10:48:14 CEST 2018
+maxValue=NaN
+minValue=NaN
+offset=0.0
+precision=-1
+resolution=NaN
+rotation=false
+scale=1.0
+sign_bit=0
+unit=null
diff --git a/devices/air_pressure.properties b/devices/air_pressure.properties
index e476b09..8679b28 100644
--- a/devices/air_pressure.properties
+++ b/devices/air_pressure.properties
@@ -1,5 +1,5 @@
-#Thu Mar 01 11:13:34 CET 2018
-offset=0.0
-precision=-1
-scale=1.0
-unit=null
+#Thu Mar 01 11:13:34 CET 2018
+offset=0.0
+precision=-1
+scale=1.0
+unit=null
diff --git a/devices/cx.properties b/devices/cx.properties
index 1720045..f35f8f1 100644
--- a/devices/cx.properties
+++ b/devices/cx.properties
@@ -1,17 +1,17 @@
-#Fri Aug 10 15:47:53 CEST 2018
-defaultSpeed=2.0
-estbilizationDelay=0
-hasEnable=false
-homingType=None
-maxSpeed=NaN
-maxValue=0.0
-minSpeed=NaN
-minValue=0.0
-offset=0.0
-precision=3
-resolution=0.001
-rotation=false
-scale=1.0
-sign_bit=0
-startRetries=1
-unit=mm
+#Fri Aug 10 15:47:53 CEST 2018
+defaultSpeed=2.0
+estbilizationDelay=0
+hasEnable=false
+homingType=None
+maxSpeed=NaN
+maxValue=0.0
+minSpeed=NaN
+minValue=0.0
+offset=0.0
+precision=3
+resolution=0.001
+rotation=false
+scale=1.0
+sign_bit=0
+startRetries=1
+unit=mm
diff --git a/devices/cz.properties b/devices/cz.properties
index b8877dd..892238d 100644
--- a/devices/cz.properties
+++ b/devices/cz.properties
@@ -1,17 +1,17 @@
-#Fri Aug 10 15:47:15 CEST 2018
-defaultSpeed=2.0
-estbilizationDelay=0
-hasEnable=false
-homingType=None
-maxSpeed=NaN
-maxValue=0.0
-minSpeed=NaN
-minValue=0.0
-offset=0.0
-precision=3
-resolution=0.001
-rotation=false
-scale=1.0
-sign_bit=0
-startRetries=1
-unit=mm
+#Fri Aug 10 15:47:15 CEST 2018
+defaultSpeed=2.0
+estbilizationDelay=0
+hasEnable=false
+homingType=None
+maxSpeed=NaN
+maxValue=0.0
+minSpeed=NaN
+minValue=0.0
+offset=0.0
+precision=3
+resolution=0.001
+rotation=false
+scale=1.0
+sign_bit=0
+startRetries=1
+unit=mm
diff --git a/devices/dew_point.properties b/devices/dew_point.properties
index 8a07c27..b875033 100644
--- a/devices/dew_point.properties
+++ b/devices/dew_point.properties
@@ -1,6 +1,6 @@
-#Thu Feb 27 14:31:37 CET 2020
-unit=null
-offset=0.0
-precision=1
-sign_bit=0
-scale=0.1
+#Thu Feb 27 14:31:37 CET 2020
+unit=null
+offset=0.0
+precision=1
+sign_bit=0
+scale=0.1
diff --git a/devices/dewar_level.properties b/devices/dewar_level.properties
index ac55365..c5ae4b2 100644
--- a/devices/dewar_level.properties
+++ b/devices/dewar_level.properties
@@ -1,6 +1,6 @@
-#Tue Jan 22 10:58:09 CET 2019
-offset=0.0
-precision=2
-scale=0.0032
-sign_bit=0
-unit=%
+#Tue Jan 22 10:58:09 CET 2019
+offset=0.0
+precision=2
+scale=0.0032
+sign_bit=0
+unit=%
diff --git a/devices/dispatcher.properties b/devices/dispatcher.properties
index 5a3e672..4a2df40 100644
--- a/devices/dispatcher.properties
+++ b/devices/dispatcher.properties
@@ -1,11 +1,11 @@
-#Thu May 03 11:54:38 CEST 2018
-disableCompression=false
-keepListeningOnStop=false
-mappingIncomplete=null
-parallelHandlerProcessing=true
-sendAwaitFirstMessage=false
-sendBuildChannelConfig=null
-sendStrategy=null
-sendSyncTimeout=0
-socketType=DEFAULT
-validationInconsistency=null
+#Thu May 03 11:54:38 CEST 2018
+disableCompression=false
+keepListeningOnStop=false
+mappingIncomplete=null
+parallelHandlerProcessing=true
+sendAwaitFirstMessage=false
+sendBuildChannelConfig=null
+sendStrategy=null
+sendSyncTimeout=0
+socketType=DEFAULT
+validationInconsistency=null
diff --git a/devices/dp1.properties b/devices/dp1.properties
index c853c11..89ea939 100644
--- a/devices/dp1.properties
+++ b/devices/dp1.properties
@@ -1,11 +1,11 @@
-#Fri Jul 08 10:53:26 CEST 2016
-motor1=0.0|4.0|8.0|0.0
-motor2=0.0|5.0|3.0|NaN
-motor3=null
-motor4=null
-motor5=null
-motor6=null
-motor7=null
-motor8=null
-positions=Park|Ready|Out|Clear
-precision=-1
+#Fri Jul 08 10:53:26 CEST 2016
+motor1=0.0|4.0|8.0|0.0
+motor2=0.0|5.0|3.0|NaN
+motor3=null
+motor4=null
+motor5=null
+motor6=null
+motor7=null
+motor8=null
+positions=Park|Ready|Out|Clear
+precision=-1
diff --git a/devices/fx.properties b/devices/fx.properties
index 44a1a35..e0186a5 100644
--- a/devices/fx.properties
+++ b/devices/fx.properties
@@ -1,17 +1,17 @@
-#Fri Aug 10 15:47:14 CEST 2018
-defaultSpeed=2.0
-estbilizationDelay=0
-hasEnable=false
-homingType=None
-maxSpeed=NaN
-maxValue=0.0
-minSpeed=NaN
-minValue=0.0
-offset=0.0
-precision=3
-resolution=0.001
-rotation=false
-scale=1.0
-sign_bit=0
-startRetries=1
-unit=mm
+#Fri Aug 10 15:47:14 CEST 2018
+defaultSpeed=2.0
+estbilizationDelay=0
+hasEnable=false
+homingType=None
+maxSpeed=NaN
+maxValue=0.0
+minSpeed=NaN
+minValue=0.0
+offset=0.0
+precision=3
+resolution=0.001
+rotation=false
+scale=1.0
+sign_bit=0
+startRetries=1
+unit=mm
diff --git a/devices/fy.properties b/devices/fy.properties
index 44a1a35..e0186a5 100644
--- a/devices/fy.properties
+++ b/devices/fy.properties
@@ -1,17 +1,17 @@
-#Fri Aug 10 15:47:14 CEST 2018
-defaultSpeed=2.0
-estbilizationDelay=0
-hasEnable=false
-homingType=None
-maxSpeed=NaN
-maxValue=0.0
-minSpeed=NaN
-minValue=0.0
-offset=0.0
-precision=3
-resolution=0.001
-rotation=false
-scale=1.0
-sign_bit=0
-startRetries=1
-unit=mm
+#Fri Aug 10 15:47:14 CEST 2018
+defaultSpeed=2.0
+estbilizationDelay=0
+hasEnable=false
+homingType=None
+maxSpeed=NaN
+maxValue=0.0
+minSpeed=NaN
+minValue=0.0
+offset=0.0
+precision=3
+resolution=0.001
+rotation=false
+scale=1.0
+sign_bit=0
+startRetries=1
+unit=mm
diff --git a/devices/gripper_cam.properties b/devices/gripper_cam.properties
index 6fc903f..ecf3314 100644
--- a/devices/gripper_cam.properties
+++ b/devices/gripper_cam.properties
@@ -1,20 +1,20 @@
-#Thu Jun 28 17:46:46 CEST 2018
-flipHorizontally=false
-flipVertically=false
-grayscale=false
-invert=false
-rescaleFactor=1.0
-rescaleOffset=0.0
-roiHeight=-1
-roiWidth=-1
-roiX=0
-roiY=0
-rotation=0.0
-rotationCrop=false
-scale=1.0
-spatialCalOffsetX=NaN
-spatialCalOffsetY=NaN
-spatialCalScaleX=NaN
-spatialCalScaleY=NaN
-spatialCalUnits=mm
-transpose=false
+#Thu Jun 28 17:46:46 CEST 2018
+flipHorizontally=false
+flipVertically=false
+grayscale=false
+invert=false
+rescaleFactor=1.0
+rescaleOffset=0.0
+roiHeight=-1
+roiWidth=-1
+roiX=0
+roiY=0
+rotation=0.0
+rotationCrop=false
+scale=1.0
+spatialCalOffsetX=NaN
+spatialCalOffsetY=NaN
+spatialCalScaleX=NaN
+spatialCalScaleY=NaN
+spatialCalUnits=mm
+transpose=false
diff --git a/devices/humidity.properties b/devices/humidity.properties
index e9702bc..39d17b7 100644
--- a/devices/humidity.properties
+++ b/devices/humidity.properties
@@ -1,6 +1,6 @@
-#Thu Feb 27 14:31:28 CET 2020
-unit=null
-offset=0.0
-precision=1
-sign_bit=0
-scale=0.1
+#Thu Feb 27 14:31:28 CET 2020
+unit=null
+offset=0.0
+precision=1
+sign_bit=0
+scale=0.1
diff --git a/devices/img.properties b/devices/img.properties
index a775c72..4e73bfb 100644
--- a/devices/img.properties
+++ b/devices/img.properties
@@ -1,24 +1,24 @@
-#Fri Feb 21 13:38:32 CET 2020
-spatialCalOffsetY=NaN
-invert=false
-colormapMin=6.4
-spatialCalOffsetX=NaN
-rotation=0.0
-rotationCrop=true
-scale=1.0
-rescaleFactor=1.0
-grayscale=false
-spatialCalUnits=mm
-flipVertically=false
-roiHeight=-1
-spatialCalScaleX=NaN
-spatialCalScaleY=NaN
-flipHorizontally=false
-colormapAutomatic=false
-colormapMax=18.133
-roiY=0
-roiX=0
-rescaleOffset=0.0
-roiWidth=-1
-transpose=false
-colormap=Grayscale
+#Fri Feb 21 13:38:32 CET 2020
+spatialCalOffsetY=NaN
+invert=false
+colormapMin=6.4
+spatialCalOffsetX=NaN
+rotation=0.0
+rotationCrop=true
+scale=1.0
+rescaleFactor=1.0
+grayscale=false
+spatialCalUnits=mm
+flipVertically=false
+roiHeight=-1
+spatialCalScaleX=NaN
+spatialCalScaleY=NaN
+flipHorizontally=false
+colormapAutomatic=false
+colormapMax=18.133
+roiY=0
+roiX=0
+rescaleOffset=0.0
+roiWidth=-1
+transpose=false
+colormap=Grayscale
diff --git a/devices/led_ctrl.properties b/devices/led_ctrl.properties
index 00dcc48..74f5046 100644
--- a/devices/led_ctrl.properties
+++ b/devices/led_ctrl.properties
@@ -1,8 +1,8 @@
-#Tue Jun 20 15:07:30 CEST 2017
-maxValue=0.4
-minValue=0.0
-offset=0.0
-precision=2
-resolution=NaN
-scale=3.0E-4
-unit=V
+#Tue Jun 20 15:07:30 CEST 2017
+maxValue=0.4
+minValue=0.0
+offset=0.0
+precision=2
+resolution=NaN
+scale=3.0E-4
+unit=V
diff --git a/devices/led_ctrl_1.properties b/devices/led_ctrl_1.properties
index 26842ec..6a046cc 100644
--- a/devices/led_ctrl_1.properties
+++ b/devices/led_ctrl_1.properties
@@ -1,9 +1,9 @@
-#Wed May 19 08:00:41 CEST 2021
-minValue=0.0
-unit=V
-offset=0.0
-maxValue=0.4
-precision=2
-sign_bit=0
-scale=3.0E-4
-resolution=NaN
+#Wed May 19 08:00:41 CEST 2021
+minValue=0.0
+unit=V
+offset=0.0
+maxValue=0.4
+precision=2
+sign_bit=0
+scale=3.0E-4
+resolution=NaN
diff --git a/devices/led_ctrl_2.properties b/devices/led_ctrl_2.properties
index 26842ec..6a046cc 100644
--- a/devices/led_ctrl_2.properties
+++ b/devices/led_ctrl_2.properties
@@ -1,9 +1,9 @@
-#Wed May 19 08:00:41 CEST 2021
-minValue=0.0
-unit=V
-offset=0.0
-maxValue=0.4
-precision=2
-sign_bit=0
-scale=3.0E-4
-resolution=NaN
+#Wed May 19 08:00:41 CEST 2021
+minValue=0.0
+unit=V
+offset=0.0
+maxValue=0.4
+precision=2
+sign_bit=0
+scale=3.0E-4
+resolution=NaN
diff --git a/devices/led_ctrl_3.properties b/devices/led_ctrl_3.properties
index 26842ec..6a046cc 100644
--- a/devices/led_ctrl_3.properties
+++ b/devices/led_ctrl_3.properties
@@ -1,9 +1,9 @@
-#Wed May 19 08:00:41 CEST 2021
-minValue=0.0
-unit=V
-offset=0.0
-maxValue=0.4
-precision=2
-sign_bit=0
-scale=3.0E-4
-resolution=NaN
+#Wed May 19 08:00:41 CEST 2021
+minValue=0.0
+unit=V
+offset=0.0
+maxValue=0.4
+precision=2
+sign_bit=0
+scale=3.0E-4
+resolution=NaN
diff --git a/devices/led_level.properties b/devices/led_level.properties
index 52dee03..1881da2 100644
--- a/devices/led_level.properties
+++ b/devices/led_level.properties
@@ -1,9 +1,9 @@
-#Tue Jun 19 16:41:24 CEST 2018
-maxValue=NaN
-minValue=NaN
-offset=0.0
-precision=-1
-resolution=NaN
-scale=1.0
-sign_bit=0
-unit=null
+#Tue Jun 19 16:41:24 CEST 2018
+maxValue=NaN
+minValue=NaN
+offset=0.0
+precision=-1
+resolution=NaN
+scale=1.0
+sign_bit=0
+unit=null
diff --git a/devices/m1.properties b/devices/m1.properties
index 38467c2..2ff6ee7 100644
--- a/devices/m1.properties
+++ b/devices/m1.properties
@@ -1,16 +1,16 @@
-#Tue Aug 11 09:44:03 CEST 2020
-offset=0.0
-maxValue=10.0
-precision=2
-rotation=false
-scale=1.0
-estbilizationDelay=0
-maxSpeed=10.0
-resolution=NaN
-startRetries=1
-minValue=-10.0
-unit=mm
-defaultSpeed=1.0
-sign_bit=0
-monitorByPosition=false
-minSpeed=0.1
+#Tue Aug 11 09:44:03 CEST 2020
+offset=0.0
+maxValue=10.0
+precision=2
+rotation=false
+scale=1.0
+estbilizationDelay=0
+maxSpeed=10.0
+resolution=NaN
+startRetries=1
+minValue=-10.0
+unit=mm
+defaultSpeed=1.0
+sign_bit=0
+monitorByPosition=false
+minSpeed=0.1
diff --git a/devices/m2.properties b/devices/m2.properties
index 38467c2..2ff6ee7 100644
--- a/devices/m2.properties
+++ b/devices/m2.properties
@@ -1,16 +1,16 @@
-#Tue Aug 11 09:44:03 CEST 2020
-offset=0.0
-maxValue=10.0
-precision=2
-rotation=false
-scale=1.0
-estbilizationDelay=0
-maxSpeed=10.0
-resolution=NaN
-startRetries=1
-minValue=-10.0
-unit=mm
-defaultSpeed=1.0
-sign_bit=0
-monitorByPosition=false
-minSpeed=0.1
+#Tue Aug 11 09:44:03 CEST 2020
+offset=0.0
+maxValue=10.0
+precision=2
+rotation=false
+scale=1.0
+estbilizationDelay=0
+maxSpeed=10.0
+resolution=NaN
+startRetries=1
+minValue=-10.0
+unit=mm
+defaultSpeed=1.0
+sign_bit=0
+monitorByPosition=false
+minSpeed=0.1
diff --git a/devices/monitoring_cam.properties b/devices/monitoring_cam.properties
index fa56b35..70e120f 100644
--- a/devices/monitoring_cam.properties
+++ b/devices/monitoring_cam.properties
@@ -1,20 +1,20 @@
-#Thu Aug 09 11:01:09 CEST 2018
-flipHorizontally=false
-flipVertically=false
-grayscale=false
-invert=false
-rescaleFactor=1.0
-rescaleOffset=0.0
-roiHeight=-1
-roiWidth=-1
-roiX=0
-roiY=0
-rotation=0.0
-rotationCrop=false
-scale=1.0
-spatialCalOffsetX=NaN
-spatialCalOffsetY=NaN
-spatialCalScaleX=NaN
-spatialCalScaleY=NaN
-spatialCalUnits=mm
-transpose=false
+#Thu Aug 09 11:01:09 CEST 2018
+flipHorizontally=false
+flipVertically=false
+grayscale=false
+invert=false
+rescaleFactor=1.0
+rescaleOffset=0.0
+roiHeight=-1
+roiWidth=-1
+roiX=0
+roiY=0
+rotation=0.0
+rotationCrop=false
+scale=1.0
+spatialCalOffsetX=NaN
+spatialCalOffsetY=NaN
+spatialCalScaleX=NaN
+spatialCalScaleY=NaN
+spatialCalUnits=mm
+transpose=false
diff --git a/devices/n2_pressure.properties b/devices/n2_pressure.properties
index e476b09..8679b28 100644
--- a/devices/n2_pressure.properties
+++ b/devices/n2_pressure.properties
@@ -1,5 +1,5 @@
-#Thu Mar 01 11:13:34 CET 2018
-offset=0.0
-precision=-1
-scale=1.0
-unit=null
+#Thu Mar 01 11:13:34 CET 2018
+offset=0.0
+precision=-1
+scale=1.0
+unit=null
diff --git a/devices/p1.properties b/devices/p1.properties
index 1b82551..f34c93b 100644
--- a/devices/p1.properties
+++ b/devices/p1.properties
@@ -1,10 +1,10 @@
-#Tue Aug 11 09:44:03 CEST 2020
-minValue=0.0
-unit=mm
-offset=0.0
-maxValue=1000.0
-precision=-1
-rotation=false
-sign_bit=0
-scale=1.0
-resolution=NaN
+#Tue Aug 11 09:44:03 CEST 2020
+minValue=0.0
+unit=mm
+offset=0.0
+maxValue=1000.0
+precision=-1
+rotation=false
+sign_bit=0
+scale=1.0
+resolution=NaN
diff --git a/devices/phase_separator.properties b/devices/phase_separator.properties
index 122f8e9..354a4c3 100644
--- a/devices/phase_separator.properties
+++ b/devices/phase_separator.properties
@@ -1,8 +1,8 @@
-#Wed Feb 28 17:35:59 CET 2018
-maxValue=30000.0
-minValue=0.0
-offset=0.0
-precision=-1
-resolution=NaN
-scale=0.1
-unit=%
+#Wed Feb 28 17:35:59 CET 2018
+maxValue=30000.0
+minValue=0.0
+offset=0.0
+precision=-1
+resolution=NaN
+scale=0.1
+unit=%
diff --git a/devices/phase_separator_level.properties b/devices/phase_separator_level.properties
index 92a5279..f0015d4 100644
--- a/devices/phase_separator_level.properties
+++ b/devices/phase_separator_level.properties
@@ -1,6 +1,6 @@
-#Tue Jun 19 16:41:20 CEST 2018
-offset=-25.81632
-precision=2
-scale=0.003888
-sign_bit=0
-unit=%
+#Tue Jun 19 16:41:20 CEST 2018
+offset=-25.81632
+precision=2
+scale=0.003888
+sign_bit=0
+unit=%
diff --git a/devices/rim_heater_temp.properties b/devices/rim_heater_temp.properties
index e1c3b95..ea3398b 100644
--- a/devices/rim_heater_temp.properties
+++ b/devices/rim_heater_temp.properties
@@ -1,6 +1,6 @@
-#Tue Jun 19 16:41:20 CEST 2018
-offset=-25.81632
-precision=2
-scale=0.003888
-sign_bit=0
-unit=C
+#Tue Jun 19 16:41:20 CEST 2018
+offset=-25.81632
+precision=2
+scale=0.003888
+sign_bit=0
+unit=C
diff --git a/devices/robot x.properties b/devices/robot x.properties
index 02ffbf3..9563e54 100644
--- a/devices/robot x.properties
+++ b/devices/robot x.properties
@@ -1,9 +1,9 @@
-#Tue Sep 12 15:00:38 CEST 2017
-maxValue=NaN
-minValue=NaN
-offset=0.0
-precision=-1
-resolution=NaN
-rotation=false
-scale=1.0
-unit=null
+#Tue Sep 12 15:00:38 CEST 2017
+maxValue=NaN
+minValue=NaN
+offset=0.0
+precision=-1
+resolution=NaN
+rotation=false
+scale=1.0
+unit=null
diff --git a/devices/robot.properties b/devices/robot.properties
index 97f6ad6..8614b40 100644
--- a/devices/robot.properties
+++ b/devices/robot.properties
@@ -1,8 +1,8 @@
-#Thu Jul 21 08:35:47 CEST 2016
-offsetReadAnalogInput=0
-offsetReadAnalogOutput=0
-offsetReadDigitalInput=0
-offsetReadDigitalOutput=0
-offsetWriteAnalogOutput=0
-offsetWriteDigitalOutput=0
-timeout=1000
+#Thu Jul 21 08:35:47 CEST 2016
+offsetReadAnalogInput=0
+offsetReadAnalogOutput=0
+offsetReadDigitalInput=0
+offsetReadDigitalOutput=0
+offsetWriteAnalogOutput=0
+offsetWriteDigitalOutput=0
+timeout=1000
diff --git a/devices/robot_j1.properties b/devices/robot_j1.properties
index bc3a381..effc910 100644
--- a/devices/robot_j1.properties
+++ b/devices/robot_j1.properties
@@ -1,10 +1,10 @@
-#Tue Jun 19 16:41:28 CEST 2018
-maxValue=180.0
-minValue=-180.0
-offset=0.0
-precision=2
-resolution=0.1
-rotation=false
-scale=1.0
-sign_bit=0
-unit=deg
+#Tue Jun 19 16:41:28 CEST 2018
+maxValue=180.0
+minValue=-180.0
+offset=0.0
+precision=2
+resolution=0.1
+rotation=false
+scale=1.0
+sign_bit=0
+unit=deg
diff --git a/devices/robot_j2.properties b/devices/robot_j2.properties
index 6a892bc..483dbce 100644
--- a/devices/robot_j2.properties
+++ b/devices/robot_j2.properties
@@ -1,10 +1,10 @@
-#Tue Jun 19 16:41:28 CEST 2018
-maxValue=127.5
-minValue=-127.5
-offset=0.0
-precision=2
-resolution=0.1
-rotation=false
-scale=1.0
-sign_bit=0
-unit=deg
+#Tue Jun 19 16:41:28 CEST 2018
+maxValue=127.5
+minValue=-127.5
+offset=0.0
+precision=2
+resolution=0.1
+rotation=false
+scale=1.0
+sign_bit=0
+unit=deg
diff --git a/devices/robot_j3.properties b/devices/robot_j3.properties
index 07bff75..57ef9b6 100644
--- a/devices/robot_j3.properties
+++ b/devices/robot_j3.properties
@@ -1,10 +1,10 @@
-#Tue Jun 19 16:41:28 CEST 2018
-maxValue=152.5
-minValue=-152.5
-offset=0.0
-precision=2
-resolution=0.1
-rotation=false
-scale=1.0
-sign_bit=0
-unit=deg
+#Tue Jun 19 16:41:28 CEST 2018
+maxValue=152.5
+minValue=-152.5
+offset=0.0
+precision=2
+resolution=0.1
+rotation=false
+scale=1.0
+sign_bit=0
+unit=deg
diff --git a/devices/robot_j4.properties b/devices/robot_j4.properties
index 41d8586..813162f 100644
--- a/devices/robot_j4.properties
+++ b/devices/robot_j4.properties
@@ -1,10 +1,10 @@
-#Tue Jun 19 16:41:28 CEST 2018
-maxValue=270.0
-minValue=-270.0
-offset=0.0
-precision=2
-resolution=0.1
-rotation=false
-scale=1.0
-sign_bit=0
-unit=deg
+#Tue Jun 19 16:41:28 CEST 2018
+maxValue=270.0
+minValue=-270.0
+offset=0.0
+precision=2
+resolution=0.1
+rotation=false
+scale=1.0
+sign_bit=0
+unit=deg
diff --git a/devices/robot_j5.properties b/devices/robot_j5.properties
index dab429f..e15853d 100644
--- a/devices/robot_j5.properties
+++ b/devices/robot_j5.properties
@@ -1,10 +1,10 @@
-#Tue Jun 19 16:41:28 CEST 2018
-maxValue=132.5
-minValue=-122.5
-offset=0.0
-precision=2
-resolution=0.1
-rotation=false
-scale=1.0
-sign_bit=0
-unit=deg
+#Tue Jun 19 16:41:28 CEST 2018
+maxValue=132.5
+minValue=-122.5
+offset=0.0
+precision=2
+resolution=0.1
+rotation=false
+scale=1.0
+sign_bit=0
+unit=deg
diff --git a/devices/robot_j6.properties b/devices/robot_j6.properties
index d688634..86f954a 100644
--- a/devices/robot_j6.properties
+++ b/devices/robot_j6.properties
@@ -1,10 +1,10 @@
-#Fri Aug 24 14:56:42 CEST 2018
-maxValue=400.0
-minValue=-400.0
-offset=0.0
-precision=2
-resolution=0.1
-rotation=false
-scale=1.0
-sign_bit=0
-unit=deg
+#Fri Aug 24 14:56:42 CEST 2018
+maxValue=400.0
+minValue=-400.0
+offset=0.0
+precision=2
+resolution=0.1
+rotation=false
+scale=1.0
+sign_bit=0
+unit=deg
diff --git a/devices/robot_modbus.properties b/devices/robot_modbus.properties
index 31a13be..5f51544 100644
--- a/devices/robot_modbus.properties
+++ b/devices/robot_modbus.properties
@@ -1,8 +1,8 @@
-#Thu Jul 21 12:02:04 CEST 2016
-offsetReadAnalogInput=0
-offsetReadAnalogOutput=0
-offsetReadDigitalInput=0
-offsetReadDigitalOutput=0
-offsetWriteAnalogOutput=0
-offsetWriteDigitalOutput=0
-timeout=1000
+#Thu Jul 21 12:02:04 CEST 2016
+offsetReadAnalogInput=0
+offsetReadAnalogOutput=0
+offsetReadDigitalInput=0
+offsetReadDigitalOutput=0
+offsetWriteAnalogOutput=0
+offsetWriteDigitalOutput=0
+timeout=1000
diff --git a/devices/robot_rx.properties b/devices/robot_rx.properties
index df63f03..bc44a7f 100644
--- a/devices/robot_rx.properties
+++ b/devices/robot_rx.properties
@@ -1,10 +1,10 @@
-#Tue Jun 19 16:41:28 CEST 2018
-maxValue=180.0
-minValue=-180.0
-offset=0.0
-precision=2
-resolution=0.05
-rotation=true
-scale=1.0
-sign_bit=0
-unit=deg
+#Tue Jun 19 16:41:28 CEST 2018
+maxValue=180.0
+minValue=-180.0
+offset=0.0
+precision=2
+resolution=0.05
+rotation=true
+scale=1.0
+sign_bit=0
+unit=deg
diff --git a/devices/robot_ry.properties b/devices/robot_ry.properties
index a789ebf..da7bc27 100644
--- a/devices/robot_ry.properties
+++ b/devices/robot_ry.properties
@@ -1,10 +1,10 @@
-#Tue Jun 19 16:41:28 CEST 2018
-maxValue=180.0
-minValue=-180.0
-offset=0.0
-precision=-2
-resolution=0.05
-rotation=true
-scale=1.0
-sign_bit=0
-unit=deg
+#Tue Jun 19 16:41:28 CEST 2018
+maxValue=180.0
+minValue=-180.0
+offset=0.0
+precision=-2
+resolution=0.05
+rotation=true
+scale=1.0
+sign_bit=0
+unit=deg
diff --git a/devices/robot_rz.properties b/devices/robot_rz.properties
index 2b88035..852eba0 100644
--- a/devices/robot_rz.properties
+++ b/devices/robot_rz.properties
@@ -1,10 +1,10 @@
-#Tue Jun 19 16:41:28 CEST 2018
-maxValue=360.0
-minValue=-360.0
-offset=0.0
-precision=2
-resolution=0.1
-rotation=true
-scale=1.0
-sign_bit=0
-unit=deg
+#Tue Jun 19 16:41:28 CEST 2018
+maxValue=360.0
+minValue=-360.0
+offset=0.0
+precision=2
+resolution=0.1
+rotation=true
+scale=1.0
+sign_bit=0
+unit=deg
diff --git a/devices/robot_x.properties b/devices/robot_x.properties
index 5cdadcc..5c10107 100644
--- a/devices/robot_x.properties
+++ b/devices/robot_x.properties
@@ -1,10 +1,10 @@
-#Tue Jun 19 16:41:28 CEST 2018
-maxValue=1000.0
-minValue=-1000.0
-offset=0.0
-precision=2
-resolution=0.05
-rotation=false
-scale=1.0
-sign_bit=0
-unit=mm
+#Tue Jun 19 16:41:28 CEST 2018
+maxValue=1000.0
+minValue=-1000.0
+offset=0.0
+precision=2
+resolution=0.05
+rotation=false
+scale=1.0
+sign_bit=0
+unit=mm
diff --git a/devices/robot_y.properties b/devices/robot_y.properties
index eb8022e..ac371ea 100644
--- a/devices/robot_y.properties
+++ b/devices/robot_y.properties
@@ -1,10 +1,10 @@
-#Tue Jun 19 16:41:28 CEST 2018
-maxValue=1000.0
-minValue=-1000.0
-offset=0.0
-precision=2
-resolution=0.05
-rotation=false
-scale=1.0
-sign_bit=0
-unit=null
+#Tue Jun 19 16:41:28 CEST 2018
+maxValue=1000.0
+minValue=-1000.0
+offset=0.0
+precision=2
+resolution=0.05
+rotation=false
+scale=1.0
+sign_bit=0
+unit=null
diff --git a/devices/robot_z.properties b/devices/robot_z.properties
index eb8022e..ac371ea 100644
--- a/devices/robot_z.properties
+++ b/devices/robot_z.properties
@@ -1,10 +1,10 @@
-#Tue Jun 19 16:41:28 CEST 2018
-maxValue=1000.0
-minValue=-1000.0
-offset=0.0
-precision=2
-resolution=0.05
-rotation=false
-scale=1.0
-sign_bit=0
-unit=null
+#Tue Jun 19 16:41:28 CEST 2018
+maxValue=1000.0
+minValue=-1000.0
+offset=0.0
+precision=2
+resolution=0.05
+rotation=false
+scale=1.0
+sign_bit=0
+unit=null
diff --git a/devices/ry.properties b/devices/ry.properties
index f43c3d2..6a849f6 100644
--- a/devices/ry.properties
+++ b/devices/ry.properties
@@ -1,17 +1,17 @@
-#Fri Aug 10 15:47:14 CEST 2018
-defaultSpeed=50.0
-estbilizationDelay=0
-hasEnable=false
-homingType=None
-maxSpeed=NaN
-maxValue=0.0
-minSpeed=NaN
-minValue=0.0
-offset=0.0
-precision=3
-resolution=0.001
-rotation=false
-scale=1.0
-sign_bit=0
-startRetries=1
-unit=deg
+#Fri Aug 10 15:47:14 CEST 2018
+defaultSpeed=50.0
+estbilizationDelay=0
+hasEnable=false
+homingType=None
+maxSpeed=NaN
+maxValue=0.0
+minSpeed=NaN
+minValue=0.0
+offset=0.0
+precision=3
+resolution=0.001
+rotation=false
+scale=1.0
+sign_bit=0
+startRetries=1
+unit=deg
diff --git a/devices/smart_magnet.properties b/devices/smart_magnet.properties
index 259bb59..35f69ae 100644
--- a/devices/smart_magnet.properties
+++ b/devices/smart_magnet.properties
@@ -1,8 +1,8 @@
-#Thu Sep 24 14:17:37 CEST 2020
-reverseTime=0.2
-unmountCurrent=20.0
-holdingCurrent=50.0
-restingCurrent=30.0
-reverseCurrent=-10.0
-remanenceCurrent=-10.0
-mountCurrent=30.0
+#Thu Sep 24 14:17:37 CEST 2020
+reverseTime=0.2
+unmountCurrent=20.0
+holdingCurrent=50.0
+restingCurrent=30.0
+reverseCurrent=-10.0
+remanenceCurrent=-10.0
+mountCurrent=30.0
diff --git a/devices/smc_current.properties b/devices/smc_current.properties
index 6cd5133..857a5cd 100644
--- a/devices/smc_current.properties
+++ b/devices/smc_current.properties
@@ -1,9 +1,9 @@
-#Tue Sep 15 15:20:57 CEST 2020
-offset=0.0
-maxValue=90.0
-precision=2
-scale=0.003
-resolution=NaN
-minValue=-50.0
-unit=mA
-sign_bit=0
+#Tue Sep 15 15:20:57 CEST 2020
+offset=0.0
+maxValue=90.0
+precision=2
+scale=0.003
+resolution=NaN
+minValue=-50.0
+unit=mA
+sign_bit=0
diff --git a/devices/smc_current_rb.properties b/devices/smc_current_rb.properties
index 7709ada..994983b 100644
--- a/devices/smc_current_rb.properties
+++ b/devices/smc_current_rb.properties
@@ -1,6 +1,6 @@
-#Tue Jun 19 16:45:06 CEST 2018
-offset=0.0
-precision=2
-scale=0.003
-sign_bit=15
-unit=mA
+#Tue Jun 19 16:45:06 CEST 2018
+offset=0.0
+precision=2
+scale=0.003
+sign_bit=15
+unit=mA
diff --git a/devices/src1.properties b/devices/src1.properties
index d6ac1f5..00e2429 100644
--- a/devices/src1.properties
+++ b/devices/src1.properties
@@ -1,25 +1,25 @@
-#Tue Aug 11 09:44:03 CEST 2020
-spatialCalOffsetY=NaN
-spatialCalOffsetX=NaN
-colormapLogarithmic=false
-scale=1.0
-grayscale=false
-spatialCalScaleX=NaN
-spatialCalScaleY=NaN
-colormapMax=255.0
-rescaleOffset=0.0
-roiWidth=-1
-colormap=Temperature
-invert=false
-colormapMin=0.0
-rotation=0.0
-rotationCrop=false
-rescaleFactor=1.0
-spatialCalUnits=mm
-flipVertically=false
-roiHeight=-1
-flipHorizontally=false
-colormapAutomatic=true
-roiY=0
-roiX=0
-transpose=false
+#Tue Aug 11 09:44:03 CEST 2020
+spatialCalOffsetY=NaN
+spatialCalOffsetX=NaN
+colormapLogarithmic=false
+scale=1.0
+grayscale=false
+spatialCalScaleX=NaN
+spatialCalScaleY=NaN
+colormapMax=255.0
+rescaleOffset=0.0
+roiWidth=-1
+colormap=Temperature
+invert=false
+colormapMin=0.0
+rotation=0.0
+rotationCrop=false
+rescaleFactor=1.0
+spatialCalUnits=mm
+flipVertically=false
+roiHeight=-1
+flipHorizontally=false
+colormapAutomatic=true
+roiY=0
+roiX=0
+transpose=false
diff --git a/devices/src2.properties b/devices/src2.properties
index c9ad00a..4f21658 100644
--- a/devices/src2.properties
+++ b/devices/src2.properties
@@ -1,25 +1,25 @@
-#Tue Aug 11 09:44:03 CEST 2020
-spatialCalOffsetY=NaN
-spatialCalOffsetX=NaN
-colormapLogarithmic=false
-scale=1.0
-grayscale=false
-spatialCalScaleX=NaN
-spatialCalScaleY=NaN
-colormapMax=255.0
-rescaleOffset=0.0
-roiWidth=-1
-colormap=Grayscale
-invert=false
-colormapMin=0.0
-rotation=0.0
-rotationCrop=false
-rescaleFactor=1.0
-spatialCalUnits=mm
-flipVertically=false
-roiHeight=-1
-flipHorizontally=false
-colormapAutomatic=true
-roiY=0
-roiX=0
-transpose=false
+#Tue Aug 11 09:44:03 CEST 2020
+spatialCalOffsetY=NaN
+spatialCalOffsetX=NaN
+colormapLogarithmic=false
+scale=1.0
+grayscale=false
+spatialCalScaleX=NaN
+spatialCalScaleY=NaN
+colormapMax=255.0
+rescaleOffset=0.0
+roiWidth=-1
+colormap=Grayscale
+invert=false
+colormapMin=0.0
+rotation=0.0
+rotationCrop=false
+rescaleFactor=1.0
+spatialCalUnits=mm
+flipVertically=false
+roiHeight=-1
+flipHorizontally=false
+colormapAutomatic=true
+roiY=0
+roiX=0
+transpose=false
diff --git a/devices/temp.properties b/devices/temp.properties
index 4614b41..a180684 100644
--- a/devices/temp.properties
+++ b/devices/temp.properties
@@ -1,6 +1,6 @@
-#Thu Feb 27 14:29:59 CET 2020
-unit=null
-offset=0.0
-precision=1
-sign_bit=0
-scale=0.1
+#Thu Feb 27 14:29:59 CET 2020
+unit=null
+offset=0.0
+precision=1
+sign_bit=0
+scale=0.1
diff --git a/devices/temperature.properties b/devices/temperature.properties
index e0a67e5..86bcfec 100644
--- a/devices/temperature.properties
+++ b/devices/temperature.properties
@@ -1,6 +1,6 @@
-#Thu Feb 27 14:44:24 CET 2020
-unit=null
-offset=0.0
-precision=1
-sign_bit=0
-scale=0.1
+#Thu Feb 27 14:44:24 CET 2020
+unit=null
+offset=0.0
+precision=1
+sign_bit=0
+scale=0.1
diff --git a/devices/th2e.properties b/devices/th2e.properties
index e608221..3bfe5c9 100644
--- a/devices/th2e.properties
+++ b/devices/th2e.properties
@@ -1,8 +1,8 @@
-#Thu Feb 27 14:04:38 CET 2020
-offsetWriteAnalogOutput=0
-offsetWriteDigitalOutput=0
-offsetReadAnalogOutput=0
-offsetReadDigitalInput=0
-offsetReadAnalogInput=0
-offsetReadDigitalOutput=0
-timeout=1000
+#Thu Feb 27 14:04:38 CET 2020
+offsetWriteAnalogOutput=0
+offsetWriteDigitalOutput=0
+offsetReadAnalogOutput=0
+offsetReadDigitalInput=0
+offsetReadAnalogInput=0
+offsetReadDigitalOutput=0
+timeout=1000
diff --git a/devices/top_cam.properties b/devices/top_cam.properties
index 827552b..1f826cd 100644
--- a/devices/top_cam.properties
+++ b/devices/top_cam.properties
@@ -1,20 +1,20 @@
-#Thu Aug 09 11:46:12 CEST 2018
-flipHorizontally=false
-flipVertically=false
-grayscale=false
-invert=false
-rescaleFactor=1.0
-rescaleOffset=0.0
-roiHeight=-1
-roiWidth=-1
-roiX=0
-roiY=0
-rotation=0.0
-rotationCrop=false
-scale=1.0
-spatialCalOffsetX=NaN
-spatialCalOffsetY=NaN
-spatialCalScaleX=NaN
-spatialCalScaleY=NaN
-spatialCalUnits=mm
-transpose=false
+#Thu Aug 09 11:46:12 CEST 2018
+flipHorizontally=false
+flipVertically=false
+grayscale=false
+invert=false
+rescaleFactor=1.0
+rescaleOffset=0.0
+roiHeight=-1
+roiWidth=-1
+roiX=0
+roiY=0
+rotation=0.0
+rotationCrop=false
+scale=1.0
+spatialCalOffsetX=NaN
+spatialCalOffsetY=NaN
+spatialCalScaleX=NaN
+spatialCalScaleY=NaN
+spatialCalUnits=mm
+transpose=false
diff --git a/devices/ue.properties b/devices/ue.properties
index f241f62..ca0968a 100644
--- a/devices/ue.properties
+++ b/devices/ue.properties
@@ -1,6 +1,6 @@
-#Thu Aug 31 16:41:09 CEST 2017
-baudRate=9600
-dataBits=DB_8
-parity=None
-port=null
-stopBits=SB_1
+#Thu Aug 31 16:41:09 CEST 2017
+baudRate=9600
+dataBits=DB_8
+parity=None
+port=null
+stopBits=SB_1
diff --git a/devices/wago.properties b/devices/wago.properties
index f2650ea..170e99d 100644
--- a/devices/wago.properties
+++ b/devices/wago.properties
@@ -1,8 +1,8 @@
-#Wed Feb 28 16:27:51 CET 2018
-offsetReadAnalogInput=0
-offsetReadAnalogOutput=0x200
-offsetReadDigitalInput=0
-offsetReadDigitalOutput=0x200
-offsetWriteAnalogOutput=0
-offsetWriteDigitalOutput=0
-timeout=1000
+#Wed Feb 28 16:27:51 CET 2018
+offsetReadAnalogInput=0
+offsetReadAnalogOutput=0x200
+offsetReadDigitalInput=0
+offsetReadDigitalOutput=0x200
+offsetWriteAnalogOutput=0
+offsetWriteDigitalOutput=0
+timeout=1000
diff --git a/plugins/LaserUE.java b/plugins/LaserUE.java
index cb79550..579d317 100644
--- a/plugins/LaserUE.java
+++ b/plugins/LaserUE.java
@@ -1,90 +1,90 @@
-import ch.psi.pshell.device.Readable;
-import ch.psi.pshell.serial.SerialPortDevice;
-import ch.psi.pshell.serial.SerialPortDeviceConfig;
-import static ch.psi.utils.BitMask.*;
-import ch.psi.utils.Convert;
-import ch.psi.utils.State;
-import java.io.IOException;
-
-/*
- *
- */
-public class LaserUE extends SerialPortDevice {
-
- final Readable readable;
- final double range;
- final double offset;
-
- public LaserUE(String name, String port, double range, double offset) {
- super(name, port, 921600, SerialPortDeviceConfig.DataBits.DB_8, SerialPortDeviceConfig.StopBits.SB_1, SerialPortDeviceConfig.Parity.None);
- this.range = range;
- this.offset = offset;
- this.setMode(Mode.FullDuplex);
- readable = new Readable() {
- @Override
- public Object read() throws IOException, InterruptedException {
- return take();
- }
-
- @Override
- public String getName() {
- return LaserUE.this.getName() + "_readout";
- }
- };
- }
-
- @Override
- protected void doInitialize() throws IOException, InterruptedException {
- super.doInitialize();
- //TODO: Start DAQ in ILD1320: http://www.micro-epsilon.com/download/manuals/man--optoNCDT-1320--en.pdf
- setState(State.Ready);
- write("OUTPUT RS422\n\r");
- }
-
- public Readable getReadable() {
- return readable;
- }
-
- int value = 0;
- int count = 0;
-
- @Override
- protected void onByte(int rx) {
- int index = ((rx & BIT7) > 0) ? 2 : (((rx & BIT6) > 0) ? 1 : 0);
- if (count == index) {
- if (index == 0) {
- value = rx & 0x3F;
- count = 1;
- } else if (index == 1) {
- value = ((rx & 0x3F) << 6) + value;
- count = 2;
- } else if (index == 2) {
- value = ((rx & 0x0F) << 12) + value;
- //double val = ((double)value)/1000;
- double val = (0.01) * (102.0 * value / 65520.0 - 1) * range;
- if ((val <= 0.0) || (val > range)) {
- val = Double.NaN;
- } else {
- val+=offset;
- val = Convert.roundDouble(val, 3);
- }
- setCache(val);
- count = 0;
- } else {
- count = 0;
- }
- } else {
- count = 0;
- }
- }
-
- public static void main(String[] args) throws Exception {
- LaserUE l = new LaserUE("UE", "COM3", 50.0, 35.0);
- l.setMonitored(true);
- l.initialize();
-
- Thread.sleep(10000);
- l.close();
- }
-}
-
+import ch.psi.pshell.device.Readable;
+import ch.psi.pshell.serial.SerialPortDevice;
+import ch.psi.pshell.serial.SerialPortDeviceConfig;
+import static ch.psi.utils.BitMask.*;
+import ch.psi.utils.Convert;
+import ch.psi.utils.State;
+import java.io.IOException;
+
+/*
+ *
+ */
+public class LaserUE extends SerialPortDevice {
+
+ final Readable readable;
+ final double range;
+ final double offset;
+
+ public LaserUE(String name, String port, double range, double offset) {
+ super(name, port, 921600, SerialPortDeviceConfig.DataBits.DB_8, SerialPortDeviceConfig.StopBits.SB_1, SerialPortDeviceConfig.Parity.None);
+ this.range = range;
+ this.offset = offset;
+ this.setMode(Mode.FullDuplex);
+ readable = new Readable() {
+ @Override
+ public Object read() throws IOException, InterruptedException {
+ return take();
+ }
+
+ @Override
+ public String getName() {
+ return LaserUE.this.getName() + "_readout";
+ }
+ };
+ }
+
+ @Override
+ protected void doInitialize() throws IOException, InterruptedException {
+ super.doInitialize();
+ //TODO: Start DAQ in ILD1320: http://www.micro-epsilon.com/download/manuals/man--optoNCDT-1320--en.pdf
+ setState(State.Ready);
+ write("OUTPUT RS422\n\r");
+ }
+
+ public Readable getReadable() {
+ return readable;
+ }
+
+ int value = 0;
+ int count = 0;
+
+ @Override
+ protected void onByte(int rx) {
+ int index = ((rx & BIT7) > 0) ? 2 : (((rx & BIT6) > 0) ? 1 : 0);
+ if (count == index) {
+ if (index == 0) {
+ value = rx & 0x3F;
+ count = 1;
+ } else if (index == 1) {
+ value = ((rx & 0x3F) << 6) + value;
+ count = 2;
+ } else if (index == 2) {
+ value = ((rx & 0x0F) << 12) + value;
+ //double val = ((double)value)/1000;
+ double val = (0.01) * (102.0 * value / 65520.0 - 1) * range;
+ if ((val <= 0.0) || (val > range)) {
+ val = Double.NaN;
+ } else {
+ val+=offset;
+ val = Convert.roundDouble(val, 3);
+ }
+ setCache(val);
+ count = 0;
+ } else {
+ count = 0;
+ }
+ } else {
+ count = 0;
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ LaserUE l = new LaserUE("UE", "COM3", 50.0, 35.0);
+ l.setMonitored(true);
+ l.initialize();
+
+ Thread.sleep(10000);
+ l.close();
+ }
+}
+
diff --git a/plugins/MjpegSource2.java b/plugins/MjpegSource2.java
index 89ab9ef..a92ce88 100644
--- a/plugins/MjpegSource2.java
+++ b/plugins/MjpegSource2.java
@@ -1,149 +1,149 @@
-
-import ch.psi.pshell.imaging.SourceBase;
-import ch.psi.pshell.imaging.SourceConfig;
-import ch.psi.pshell.imaging.Utils;
-import java.awt.image.BufferedImage;
-import java.io.BufferedInputStream;
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.logging.Level;
-
-/**
- * Image source receive frames from a mjpeg server.
- */
-public class MjpegSource2 extends SourceBase {
-
- final String url;
- final boolean flushOnUpdate;
-
- public MjpegSource2(String name, String url) {
- this(name, url, false);
- }
-
- public MjpegSource2(String name, String url, boolean flushOnUpdate) {
- super(name, new SourceConfig());
- this.url = url;
- this.flushOnUpdate = flushOnUpdate;
- }
-
- InputStream stream;
-
- @Override
- protected void doInitialize() throws IOException, InterruptedException {
- super.doInitialize();
- URL aux = new URL(url);
- stream = aux.openStream();
- if (!stream.markSupported()) {
- stream = new BufferedInputStream(stream);
- }
- }
-
- Thread monitoredThread;
-
- @Override
- protected void doSetMonitored(boolean value) {
- if (value && (monitoredThread == null)) {
- monitoredThread = new Thread(() -> {
- try {
- while (true) {
- try {
- doUpdate();
- Thread.sleep(1);
- } catch (IOException ex) {
- getLogger().log(Level.FINE, null, ex);
- }
- }
- } catch (InterruptedException ex) {
- return;
- }
- });
- monitoredThread.setDaemon(true);
- monitoredThread.start();
- } else if (!value && (monitoredThread != null)) {
- monitoredThread.interrupt();
- monitoredThread = null;
- }
- }
-
- final byte[] START_OF_FRAME = {(byte) 0xFF, (byte) 0xD8};
- final byte[] END_OF_FRAME = {(byte) 0xFF, (byte) 0xD9};
- final int MAX_FRAME_SIZE = 512 * 1024;
-
- @Override
- protected void doUpdate() throws IOException, InterruptedException {
- byte[] data = null;
- if (stream != null) {
- if (flushOnUpdate) {
- flush();
- }
- try {
- data = readData();
- } catch (EOFException ex) {
- //Try to reopen stream
- doInitialize();
- data = readData();
- }
- }
- if (data == null) {
- pushImage(null);
- } else {
- BufferedImage img = Utils.newImage(data);
- pushImage(img);
- }
- }
- byte[] readData() throws IOException {
- if (stream != null) {
- stream.mark(MAX_FRAME_SIZE);
- int startOfFrame = waitBytes(START_OF_FRAME) - START_OF_FRAME.length;
- if (startOfFrame >= 0) {
- int endOfFrame = waitBytes(END_OF_FRAME);
- if (endOfFrame >= 0) {
- stream.reset();
- stream.skip(startOfFrame);
- int length = endOfFrame ;//- END_OF_FRAME.length ;
- byte[] data = new byte[length];
- stream.read(data, 0, length);
- return data;
- }
- }
- }
- return null;
- }
-
- int waitBytes(byte[] data) throws IOException {
- int index = 0;
- int dataPos = 0;
- while (true) {
- int ret = stream.read();
- if (ret < 0) {
- throw new EOFException();
- }
- byte value = (byte) ret;
- if (value == data[dataPos]) {
- dataPos++;
- if (dataPos == data.length) {
- return (index + 1);
- }
- } else {
- dataPos = 0;
- }
- index++;
- if (index >= MAX_FRAME_SIZE) {
- return -1;
- }
- }
- }
-
- public void flush() throws IOException {
- //stream.skip(stream.available());
- //TODO: Skipping won't make the current image to be displayed
- stream.close();
- stream = new URL(url).openStream();
- if (!stream.markSupported()) {
- stream = new BufferedInputStream(stream);
- }
- }
-
-}
+
+import ch.psi.pshell.imaging.SourceBase;
+import ch.psi.pshell.imaging.SourceConfig;
+import ch.psi.pshell.imaging.Utils;
+import java.awt.image.BufferedImage;
+import java.io.BufferedInputStream;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.logging.Level;
+
+/**
+ * Image source receive frames from a mjpeg server.
+ */
+public class MjpegSource2 extends SourceBase {
+
+ final String url;
+ final boolean flushOnUpdate;
+
+ public MjpegSource2(String name, String url) {
+ this(name, url, false);
+ }
+
+ public MjpegSource2(String name, String url, boolean flushOnUpdate) {
+ super(name, new SourceConfig());
+ this.url = url;
+ this.flushOnUpdate = flushOnUpdate;
+ }
+
+ InputStream stream;
+
+ @Override
+ protected void doInitialize() throws IOException, InterruptedException {
+ super.doInitialize();
+ URL aux = new URL(url);
+ stream = aux.openStream();
+ if (!stream.markSupported()) {
+ stream = new BufferedInputStream(stream);
+ }
+ }
+
+ Thread monitoredThread;
+
+ @Override
+ protected void doSetMonitored(boolean value) {
+ if (value && (monitoredThread == null)) {
+ monitoredThread = new Thread(() -> {
+ try {
+ while (true) {
+ try {
+ doUpdate();
+ Thread.sleep(1);
+ } catch (IOException ex) {
+ getLogger().log(Level.FINE, null, ex);
+ }
+ }
+ } catch (InterruptedException ex) {
+ return;
+ }
+ });
+ monitoredThread.setDaemon(true);
+ monitoredThread.start();
+ } else if (!value && (monitoredThread != null)) {
+ monitoredThread.interrupt();
+ monitoredThread = null;
+ }
+ }
+
+ final byte[] START_OF_FRAME = {(byte) 0xFF, (byte) 0xD8};
+ final byte[] END_OF_FRAME = {(byte) 0xFF, (byte) 0xD9};
+ final int MAX_FRAME_SIZE = 512 * 1024;
+
+ @Override
+ protected void doUpdate() throws IOException, InterruptedException {
+ byte[] data = null;
+ if (stream != null) {
+ if (flushOnUpdate) {
+ flush();
+ }
+ try {
+ data = readData();
+ } catch (EOFException ex) {
+ //Try to reopen stream
+ doInitialize();
+ data = readData();
+ }
+ }
+ if (data == null) {
+ pushImage(null);
+ } else {
+ BufferedImage img = Utils.newImage(data);
+ pushImage(img);
+ }
+ }
+ byte[] readData() throws IOException {
+ if (stream != null) {
+ stream.mark(MAX_FRAME_SIZE);
+ int startOfFrame = waitBytes(START_OF_FRAME) - START_OF_FRAME.length;
+ if (startOfFrame >= 0) {
+ int endOfFrame = waitBytes(END_OF_FRAME);
+ if (endOfFrame >= 0) {
+ stream.reset();
+ stream.skip(startOfFrame);
+ int length = endOfFrame ;//- END_OF_FRAME.length ;
+ byte[] data = new byte[length];
+ stream.read(data, 0, length);
+ return data;
+ }
+ }
+ }
+ return null;
+ }
+
+ int waitBytes(byte[] data) throws IOException {
+ int index = 0;
+ int dataPos = 0;
+ while (true) {
+ int ret = stream.read();
+ if (ret < 0) {
+ throw new EOFException();
+ }
+ byte value = (byte) ret;
+ if (value == data[dataPos]) {
+ dataPos++;
+ if (dataPos == data.length) {
+ return (index + 1);
+ }
+ } else {
+ dataPos = 0;
+ }
+ index++;
+ if (index >= MAX_FRAME_SIZE) {
+ return -1;
+ }
+ }
+ }
+
+ public void flush() throws IOException {
+ //stream.skip(stream.available());
+ //TODO: Skipping won't make the current image to be displayed
+ stream.close();
+ stream = new URL(url).openStream();
+ if (!stream.markSupported()) {
+ stream = new BufferedInputStream(stream);
+ }
+ }
+
+}
diff --git a/plugins/SmartMagnetConfig.java b/plugins/SmartMagnetConfig.java
index 2c6213c..7351ab4 100644
--- a/plugins/SmartMagnetConfig.java
+++ b/plugins/SmartMagnetConfig.java
@@ -1,14 +1,14 @@
-
-import ch.psi.pshell.device.DeviceConfig;
-
-/**
- *
- */
-public class SmartMagnetConfig extends DeviceConfig{
- public double holdingCurrent;
- public double restingCurrent;
- public double mountCurrent;
- public double unmountCurrent;
- public double remanenceCurrent;
-
-}
+
+import ch.psi.pshell.device.DeviceConfig;
+
+/**
+ *
+ */
+public class SmartMagnetConfig extends DeviceConfig{
+ public double holdingCurrent;
+ public double restingCurrent;
+ public double mountCurrent;
+ public double unmountCurrent;
+ public double remanenceCurrent;
+
+}
diff --git a/plugins/TestZMQ.java b/plugins/TestZMQ.java
index cec2c40..ae4cbac 100644
--- a/plugins/TestZMQ.java
+++ b/plugins/TestZMQ.java
@@ -1,26 +1,26 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-
-/**
- *
- * @author gac-S_Changer
- */
-public class TestZMQ {
- public static void main(String[] args) {
- String server = "raspberrypi:5556";
- org.zeromq.ZMQ.Context context = org.zeromq.ZMQ.context(1);
- org.zeromq.ZMQ.Socket subscriber = context.socket(org.zeromq.ZMQ.SUB);
- subscriber.connect("tcp://" + server);
- subscriber.subscribe("Status".getBytes());
- while (!Thread.currentThread().isInterrupted()) {
- String type = subscriber.recvStr();
- String contents = subscriber.recvStr();
- System.out.println(type + " : " + contents);
- }
- subscriber.close();
- context.term();
- }
-}
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/**
+ *
+ * @author gac-S_Changer
+ */
+public class TestZMQ {
+ public static void main(String[] args) {
+ String server = "raspberrypi:5556";
+ org.zeromq.ZMQ.Context context = org.zeromq.ZMQ.context(1);
+ org.zeromq.ZMQ.Socket subscriber = context.socket(org.zeromq.ZMQ.SUB);
+ subscriber.connect("tcp://" + server);
+ subscriber.subscribe("Status".getBytes());
+ while (!Thread.currentThread().isInterrupted()) {
+ String type = subscriber.recvStr();
+ String contents = subscriber.recvStr();
+ System.out.println(type + " : " + contents);
+ }
+ subscriber.close();
+ context.term();
+ }
+}
diff --git a/plugins/gui.java b/plugins/gui.java
index abeb59b..fe17ab2 100644
--- a/plugins/gui.java
+++ b/plugins/gui.java
@@ -1,96 +1,96 @@
-/*
- * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved.
- */
-
-import ch.psi.pshell.ui.Panel;
-import ch.psi.utils.State;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- *
- */
-public class gui extends Panel {
-
- public gui() {
- initComponents();
- }
-
- //Overridable callbacks
- @Override
- public void onInitialize(int runCount) {
-
- }
-
- @Override
- public void onStateChange(State state, State former) {
-
- }
-
- @Override
- public void onExecutedFile(String fileName, Object result) {
- }
-
-
- //Callback to perform update - in event thread
- @Override
- protected void doUpdate() {
- }
-
- @SuppressWarnings("unchecked")
- // //GEN-BEGIN:initComponents
- private void initComponents() {
-
- jButton1 = new javax.swing.JButton();
- renderer1 = new ch.psi.pshell.imaging.Renderer();
- linePlotJFree1 = new ch.psi.pshell.plot.LinePlotJFree();
-
- jButton1.setText("Abort");
- jButton1.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jButton1ActionPerformed(evt);
- }
- });
-
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
- this.setLayout(layout);
- layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(renderer1, javax.swing.GroupLayout.PREFERRED_SIZE, 154, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(82, 82, 82))
- .addGroup(layout.createSequentialGroup()
- .addGap(51, 51, 51)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jButton1)
- .addComponent(linePlotJFree1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addContainerGap(250, Short.MAX_VALUE))
- );
- layout.setVerticalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addGap(24, 24, 24)
- .addComponent(jButton1)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(renderer1, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 20, Short.MAX_VALUE)
- .addComponent(linePlotJFree1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap())
- );
- }// //GEN-END:initComponents
-
- private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
- try {
- abort();
- } catch (InterruptedException ex) {
- Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
- }
- }//GEN-LAST:event_jButton1ActionPerformed
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JButton jButton1;
- private ch.psi.pshell.plot.LinePlotJFree linePlotJFree1;
- private ch.psi.pshell.imaging.Renderer renderer1;
- // End of variables declaration//GEN-END:variables
-}
+/*
+ * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved.
+ */
+
+import ch.psi.pshell.ui.Panel;
+import ch.psi.utils.State;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ */
+public class gui extends Panel {
+
+ public gui() {
+ initComponents();
+ }
+
+ //Overridable callbacks
+ @Override
+ public void onInitialize(int runCount) {
+
+ }
+
+ @Override
+ public void onStateChange(State state, State former) {
+
+ }
+
+ @Override
+ public void onExecutedFile(String fileName, Object result) {
+ }
+
+
+ //Callback to perform update - in event thread
+ @Override
+ protected void doUpdate() {
+ }
+
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jButton1 = new javax.swing.JButton();
+ renderer1 = new ch.psi.pshell.imaging.Renderer();
+ linePlotJFree1 = new ch.psi.pshell.plot.LinePlotJFree();
+
+ jButton1.setText("Abort");
+ jButton1.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButton1ActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(renderer1, javax.swing.GroupLayout.PREFERRED_SIZE, 154, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(82, 82, 82))
+ .addGroup(layout.createSequentialGroup()
+ .addGap(51, 51, 51)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jButton1)
+ .addComponent(linePlotJFree1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addContainerGap(250, Short.MAX_VALUE))
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGap(24, 24, 24)
+ .addComponent(jButton1)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(renderer1, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 20, Short.MAX_VALUE)
+ .addComponent(linePlotJFree1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())
+ );
+ }// //GEN-END:initComponents
+
+ private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+ try {
+ abort();
+ } catch (InterruptedException ex) {
+ Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }//GEN-LAST:event_jButton1ActionPerformed
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton jButton1;
+ private ch.psi.pshell.plot.LinePlotJFree linePlotJFree1;
+ private ch.psi.pshell.imaging.Renderer renderer1;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/robot/MXLAB/Controller1/Controller1.controller b/robot/MXLAB/Controller1/Controller1.controller
index 478f6d6..abb0b1e 100644
--- a/robot/MXLAB/Controller1/Controller1.controller
+++ b/robot/MXLAB/Controller1/Controller1.controller
@@ -1,16 +1,16 @@
-
-
- s7.9.1
-
-
- TX60L-HB-L-WS
-
-
-
-
-
-
-
-
-
+
+
+ s7.9.1
+
+
+ TX60L-HB-L-WS
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/applicom/Modbus/modbus.xml b/robot/MXLAB/Controller1/usr/applicom/Modbus/modbus.xml
index 607856a..3d2b900 100644
--- a/robot/MXLAB/Controller1/usr/applicom/Modbus/modbus.xml
+++ b/robot/MXLAB/Controller1/usr/applicom/Modbus/modbus.xml
@@ -1,10 +1,10 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/robot/MXLAB/Controller1/usr/configs/arm.cfx b/robot/MXLAB/Controller1/usr/configs/arm.cfx
index 9742c85..e64b1e9 100644
--- a/robot/MXLAB/Controller1/usr/configs/arm.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/arm.cfx
@@ -1,22 +1,22 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/configs/bio.cfx b/robot/MXLAB/Controller1/usr/configs/bio.cfx
index ac01acb..4c74761 100644
--- a/robot/MXLAB/Controller1/usr/configs/bio.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/bio.cfx
@@ -1,35 +1,35 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/configs/bio2.cfx b/robot/MXLAB/Controller1/usr/configs/bio2.cfx
index 867f8f4..6ad3c91 100644
--- a/robot/MXLAB/Controller1/usr/configs/bio2.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/bio2.cfx
@@ -1,35 +1,35 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/configs/cell.cfx b/robot/MXLAB/Controller1/usr/configs/cell.cfx
index 5d1786d..4059679 100644
--- a/robot/MXLAB/Controller1/usr/configs/cell.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/cell.cfx
@@ -1,68 +1,68 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/configs/cio.cfx b/robot/MXLAB/Controller1/usr/configs/cio.cfx
index 68c8816..57da145 100644
--- a/robot/MXLAB/Controller1/usr/configs/cio.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/cio.cfx
@@ -1,27 +1,27 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/configs/controller.cfx b/robot/MXLAB/Controller1/usr/configs/controller.cfx
index 19e8f5b..3f011f5 100644
--- a/robot/MXLAB/Controller1/usr/configs/controller.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/controller.cfx
@@ -1,37 +1,37 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/configs/encoder.cfx b/robot/MXLAB/Controller1/usr/configs/encoder.cfx
index ccb512d..1442e35 100644
--- a/robot/MXLAB/Controller1/usr/configs/encoder.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/encoder.cfx
@@ -1,45 +1,45 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/configs/mio.cfx b/robot/MXLAB/Controller1/usr/configs/mio.cfx
index f57cf92..435f904 100644
--- a/robot/MXLAB/Controller1/usr/configs/mio.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/mio.cfx
@@ -1,67 +1,67 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/configs/network.cfx b/robot/MXLAB/Controller1/usr/configs/network.cfx
index e784a07..3a6839b 100644
--- a/robot/MXLAB/Controller1/usr/configs/network.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/network.cfx
@@ -1,29 +1,29 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/configs/profiles/default.cfx b/robot/MXLAB/Controller1/usr/configs/profiles/default.cfx
index a173ef0..14ca359 100644
--- a/robot/MXLAB/Controller1/usr/configs/profiles/default.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/profiles/default.cfx
@@ -1,21 +1,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/robot/MXLAB/Controller1/usr/configs/profiles/maintenance.cfx b/robot/MXLAB/Controller1/usr/configs/profiles/maintenance.cfx
index e5fa2ea..d5d1fd9 100644
--- a/robot/MXLAB/Controller1/usr/configs/profiles/maintenance.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/profiles/maintenance.cfx
@@ -1,21 +1,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/configs/sio.cfx b/robot/MXLAB/Controller1/usr/configs/sio.cfx
index b330109..c7d3137 100644
--- a/robot/MXLAB/Controller1/usr/configs/sio.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/sio.cfx
@@ -1,11 +1,11 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/configs/systemios.cfx b/robot/MXLAB/Controller1/usr/configs/systemios.cfx
index 74107f3..e796e96 100644
--- a/robot/MXLAB/Controller1/usr/configs/systemios.cfx
+++ b/robot/MXLAB/Controller1/usr/configs/systemios.cfx
@@ -1,304 +1,304 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/robot/MXLAB/Controller1/usr/configs/val3version.xml b/robot/MXLAB/Controller1/usr/configs/val3version.xml
index 7824503..56b8de2 100644
--- a/robot/MXLAB/Controller1/usr/configs/val3version.xml
+++ b/robot/MXLAB/Controller1/usr/configs/val3version.xml
@@ -1,4 +1,4 @@
-
-
- s7.9.1
+
+
+ s7.9.1
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/ForceDetection.dtx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/ForceDetection.dtx
index cf8e3dc..d7b0bfb 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/ForceDetection.dtx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/ForceDetection.dtx
@@ -1,130 +1,130 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/ForceDetection.pjx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/ForceDetection.pjx
index f9a6756..99597b4 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/ForceDetection.pjx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/ForceDetection.pjx
@@ -1,26 +1,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/comModbus.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/comModbus.pgx
index 5c36ae4..ad6d524 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/comModbus.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/comModbus.pgx
@@ -1,61 +1,61 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/comTcp.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/comTcp.pgx
index 805a4bd..1e4eeda 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/comTcp.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/comTcp.pgx
@@ -1,238 +1,238 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- if rec_val>31
- rx=rx+chr(rec_val)
- elseIf rec_val==10
- if len(rx)<4
- rx = ""
- else
- msg_id = left(rx, 4)
- msg = right(rx, len(rx)-4)
- rx=""
- //If same id, repeat last answer
- if msg_id != last_id
- for index=0 to 9
- args[index]=""
- endFor
- index = find(msg, " ")
- if index < 0
- cmd = msg
- else
- cmd = left(msg, index)
- msg = right(msg, len(msg) - index -1)
- arg=0
- while (len(msg) > 0 and (arg < 10))
- index = find(msg, array_separator)
- if index<0
- args[arg] = msg
- msg =""
- else
- args[arg] = left(msg, index)
- msg = right(msg, len(msg) - index -1)
- endIf
- arg = arg+1
- endWhile
- endIf
- tx = ""
- ex = ""
- //General commands
- switch(cmd)
- case "eval"
- tx=$exec(args[0])
- break
-
- case "get_status"
- aux = workingMode(count)
- tx = toString("", aux ) + array_separator
- tx = tx + toString("", count ) + array_separator
- if isPowered()
- tx = tx + "1" + array_separator
- else
- tx = tx + "0" + array_separator
- endIf
- aux = getMonitorSpeed()
- tx = tx + toString("", aux ) + array_separator
- if isEmpty()
- tx = tx + "1" + array_separator
- else
- tx = tx + "0" + array_separator
- endIf
- if isSettled()
- tx = tx + "1" + array_separator
- else
- tx = tx + "0" + array_separator
- endIf
- //Task status
- if len(args[0])>0
- tx=tx+toString("",taskStatus(args[0]))
- else
- tx=tx+"0"+array_separator
- endIf
-
- if tcp_events[0] != ""
- tx = tx + tcp_events[0]
- for index=0 to 8
- tcp_events[index]= tcp_events[index+1]
- endFor
- tcp_events[9] = ""
- endIf
- break
-
- case "get_var","get_bool"
- if cmd == "get_var"
- ret = getData(args[0], aux)
- else
- ret = getData(args[0], auxb)
- endIf
- switch(ret)
- case -1
- ex = "The variable does not exists"
- break
- case -2
- ex = "The variable library does not exist"
- break
- case -3
- ex = "The index is out of range"
- break
- case -4
- ex = "The data's type does not match the variable's type"
- break
- default
- if cmd == "get_var"
- tx = toString(".4", aux)
- else
- if auxb
- tx = "1"
- else
- tx = "0"
- endIf
- endIf
- break
- endSwitch
- break
-
- case "get_arr"
- toNum(args[1], count, ok)
- for index = 0 to count
- ret = getData(args[0] + "[" + toString("", index )+ "]", aux)
- switch(ret)
- case -1
- ex = "The variable does not exists"
- return
- break
- case -2
- ex = "The variable library does not exist"
- return
- break
- case -3
- ex = "The index is out of range"
- return
- break
- case -4
- ex = "The data's type does not match the variable's type"
- return
- break
- default
- tx = tx + toString(".4", aux) + "|"
- break
- endSwitch
- endFor
- break
-
- //case "get_str"
- // //$exec("tcp_s = " + args[0]) TODO: MAKES THE CONTROLLER TO CRASH!
- // //tx = s
- //break
-
- case "get_pnt"
- $exec("tcp_p = " + args[0])
- tx = tx + toString(".4", tcp_p.trsf.x) + "|"
- tx = tx + toString(".4", tcp_p.trsf.y) + "|"
- tx = tx + toString(".4", tcp_p.trsf.z) + "|"
- tx = tx + toString(".4", tcp_p.trsf.rx) + "|"
- tx = tx + toString(".4", tcp_p.trsf.ry) + "|"
- tx = tx + toString(".4", tcp_p.trsf.rz) + "|"
- break
-
- case "get_jnt"
- $exec("tcp_j = " + args[0])
- tx = tx + toString(".4", tcp_j.j1) + "|"
- tx = tx + toString(".4", tcp_j.j2) + "|"
- tx = tx + toString(".4", tcp_j.j3) + "|"
- tx = tx + toString(".4", tcp_j.j4) + "|"
- tx = tx + toString(".4", tcp_j.j5) + "|"
- tx = tx + toString(".4", tcp_j.j6) + "|"
- break
-
- case "get_trf"
- $exec("tcp_t = " + args[0])
- tx = tx + toString(".4", tcp_t.x) + "|"
- tx = tx + toString(".4", tcp_t.y) + "|"
- tx = tx + toString(".4", tcp_t.z) + "|"
- tx = tx + toString(".4", tcp_t.rx) + "|"
- tx = tx + toString(".4", tcp_t.ry) + "|"
- tx = tx + toString(".4", tcp_t.rz) + "|"
- break
-
- case "get_help"
- toNum(args[0], aux, ok)
- if ok == true
- tx = help(aux)
- else
- ex = "Invalid code: " + args[0]
- endIf
- break
-
- default
- //App specific
- call onCommandTcp(cmd,args, tx, ex)
- if ((len(tx) == 0) and (len(ex) == 0))
- ex = "Invalid command: " + cmd
- endIf
- break
- endSwitch
- last_id = msg_id
- endIf
- if len(ex) == 0
- sSio = msg_id + tx
- else
- msg_id = replace (msg_id,"*",1,3)
- sSio = msg_id + ex
- endIf
- endIf
- endIf
- endWhile
- delay(0)
- endWhile
-end]]>
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ if rec_val>31
+ rx=rx+chr(rec_val)
+ elseIf rec_val==10
+ if len(rx)<4
+ rx = ""
+ else
+ msg_id = left(rx, 4)
+ msg = right(rx, len(rx)-4)
+ rx=""
+ //If same id, repeat last answer
+ if msg_id != last_id
+ for index=0 to 9
+ args[index]=""
+ endFor
+ index = find(msg, " ")
+ if index < 0
+ cmd = msg
+ else
+ cmd = left(msg, index)
+ msg = right(msg, len(msg) - index -1)
+ arg=0
+ while (len(msg) > 0 and (arg < 10))
+ index = find(msg, array_separator)
+ if index<0
+ args[arg] = msg
+ msg =""
+ else
+ args[arg] = left(msg, index)
+ msg = right(msg, len(msg) - index -1)
+ endIf
+ arg = arg+1
+ endWhile
+ endIf
+ tx = ""
+ ex = ""
+ //General commands
+ switch(cmd)
+ case "eval"
+ tx=$exec(args[0])
+ break
+
+ case "get_status"
+ aux = workingMode(count)
+ tx = toString("", aux ) + array_separator
+ tx = tx + toString("", count ) + array_separator
+ if isPowered()
+ tx = tx + "1" + array_separator
+ else
+ tx = tx + "0" + array_separator
+ endIf
+ aux = getMonitorSpeed()
+ tx = tx + toString("", aux ) + array_separator
+ if isEmpty()
+ tx = tx + "1" + array_separator
+ else
+ tx = tx + "0" + array_separator
+ endIf
+ if isSettled()
+ tx = tx + "1" + array_separator
+ else
+ tx = tx + "0" + array_separator
+ endIf
+ //Task status
+ if len(args[0])>0
+ tx=tx+toString("",taskStatus(args[0]))
+ else
+ tx=tx+"0"+array_separator
+ endIf
+
+ if tcp_events[0] != ""
+ tx = tx + tcp_events[0]
+ for index=0 to 8
+ tcp_events[index]= tcp_events[index+1]
+ endFor
+ tcp_events[9] = ""
+ endIf
+ break
+
+ case "get_var","get_bool"
+ if cmd == "get_var"
+ ret = getData(args[0], aux)
+ else
+ ret = getData(args[0], auxb)
+ endIf
+ switch(ret)
+ case -1
+ ex = "The variable does not exists"
+ break
+ case -2
+ ex = "The variable library does not exist"
+ break
+ case -3
+ ex = "The index is out of range"
+ break
+ case -4
+ ex = "The data's type does not match the variable's type"
+ break
+ default
+ if cmd == "get_var"
+ tx = toString(".4", aux)
+ else
+ if auxb
+ tx = "1"
+ else
+ tx = "0"
+ endIf
+ endIf
+ break
+ endSwitch
+ break
+
+ case "get_arr"
+ toNum(args[1], count, ok)
+ for index = 0 to count
+ ret = getData(args[0] + "[" + toString("", index )+ "]", aux)
+ switch(ret)
+ case -1
+ ex = "The variable does not exists"
+ return
+ break
+ case -2
+ ex = "The variable library does not exist"
+ return
+ break
+ case -3
+ ex = "The index is out of range"
+ return
+ break
+ case -4
+ ex = "The data's type does not match the variable's type"
+ return
+ break
+ default
+ tx = tx + toString(".4", aux) + "|"
+ break
+ endSwitch
+ endFor
+ break
+
+ //case "get_str"
+ // //$exec("tcp_s = " + args[0]) TODO: MAKES THE CONTROLLER TO CRASH!
+ // //tx = s
+ //break
+
+ case "get_pnt"
+ $exec("tcp_p = " + args[0])
+ tx = tx + toString(".4", tcp_p.trsf.x) + "|"
+ tx = tx + toString(".4", tcp_p.trsf.y) + "|"
+ tx = tx + toString(".4", tcp_p.trsf.z) + "|"
+ tx = tx + toString(".4", tcp_p.trsf.rx) + "|"
+ tx = tx + toString(".4", tcp_p.trsf.ry) + "|"
+ tx = tx + toString(".4", tcp_p.trsf.rz) + "|"
+ break
+
+ case "get_jnt"
+ $exec("tcp_j = " + args[0])
+ tx = tx + toString(".4", tcp_j.j1) + "|"
+ tx = tx + toString(".4", tcp_j.j2) + "|"
+ tx = tx + toString(".4", tcp_j.j3) + "|"
+ tx = tx + toString(".4", tcp_j.j4) + "|"
+ tx = tx + toString(".4", tcp_j.j5) + "|"
+ tx = tx + toString(".4", tcp_j.j6) + "|"
+ break
+
+ case "get_trf"
+ $exec("tcp_t = " + args[0])
+ tx = tx + toString(".4", tcp_t.x) + "|"
+ tx = tx + toString(".4", tcp_t.y) + "|"
+ tx = tx + toString(".4", tcp_t.z) + "|"
+ tx = tx + toString(".4", tcp_t.rx) + "|"
+ tx = tx + toString(".4", tcp_t.ry) + "|"
+ tx = tx + toString(".4", tcp_t.rz) + "|"
+ break
+
+ case "get_help"
+ toNum(args[0], aux, ok)
+ if ok == true
+ tx = help(aux)
+ else
+ ex = "Invalid code: " + args[0]
+ endIf
+ break
+
+ default
+ //App specific
+ call onCommandTcp(cmd,args, tx, ex)
+ if ((len(tx) == 0) and (len(ex) == 0))
+ ex = "Invalid command: " + cmd
+ endIf
+ break
+ endSwitch
+ last_id = msg_id
+ endIf
+ if len(ex) == 0
+ sSio = msg_id + tx
+ else
+ msg_id = replace (msg_id,"*",1,3)
+ sSio = msg_id + ex
+ endIf
+ endIf
+ endIf
+ endWhile
+ delay(0)
+ endWhile
+end]]>
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/detect.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/detect.pgx
index 32bafce..062eb01 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/detect.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/detect.pgx
@@ -1,78 +1,78 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- l_nPerc = abs(nJntForce[l_nIndex]/nJntMaxForce[l_nIndex] *100)
- if l_nPerc>nJntMaxMeasured[l_nIndex]
- nJntMaxMeasured[l_nIndex]=l_nPerc
- endIf
- l_bCondition=abs(nJntForce[l_nIndex]) > x_nThreshold
-
- gotoxy(0,8+l_nIndex)
- put(toString(".2",nJntMaxForce[l_nIndex]))
- gotoxy(8,8+l_nIndex)
- put(toString(".2",x_nThreshold))
- gotoxy(16,8+l_nIndex)
- put(toString(".2",abs(nJntForce[l_nIndex])))
- gotoxy(24,8+l_nIndex)
- put(toString(".2",l_nPerc))
- gotoxy(32,8+l_nIndex)
- put(toString(".2",nJntMaxMeasured[l_nIndex]))
-
- if l_bCondition
- stopMove()
- resetMotion()
- bContact=true
- l_sDisplay="Contact: force on joint "+toString("",l_nIndex+1)+" = "+toString("",abs(nJntForce[l_nIndex]))
- logMsg(l_sDisplay)
- endIf
- endIf
- endFor
- delay(0)
- endWhile
-end]]>
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ l_nPerc = abs(nJntForce[l_nIndex]/nJntMaxForce[l_nIndex] *100)
+ if l_nPerc>nJntMaxMeasured[l_nIndex]
+ nJntMaxMeasured[l_nIndex]=l_nPerc
+ endIf
+ l_bCondition=abs(nJntForce[l_nIndex]) > x_nThreshold
+
+ gotoxy(0,8+l_nIndex)
+ put(toString(".2",nJntMaxForce[l_nIndex]))
+ gotoxy(8,8+l_nIndex)
+ put(toString(".2",x_nThreshold))
+ gotoxy(16,8+l_nIndex)
+ put(toString(".2",abs(nJntForce[l_nIndex])))
+ gotoxy(24,8+l_nIndex)
+ put(toString(".2",l_nPerc))
+ gotoxy(32,8+l_nIndex)
+ put(toString(".2",nJntMaxMeasured[l_nIndex]))
+
+ if l_bCondition
+ stopMove()
+ resetMotion()
+ bContact=true
+ l_sDisplay="Contact: force on joint "+toString("",l_nIndex+1)+" = "+toString("",abs(nJntForce[l_nIndex]))
+ logMsg(l_sDisplay)
+ endIf
+ endIf
+ endFor
+ delay(0)
+ endWhile
+end]]>
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/getContact.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/getContact.pgx
index 59c8c37..a3d758c 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/getContact.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/getContact.pgx
@@ -1,25 +1,25 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/onCommandModbus.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/onCommandModbus.pgx
index 09fe785..2bfd52d 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/onCommandModbus.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/onCommandModbus.pgx
@@ -1,27 +1,27 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/onCommandTcp.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/onCommandTcp.pgx
index ae75db5..2f87816 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/onCommandTcp.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/onCommandTcp.pgx
@@ -1,28 +1,28 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/resetData.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/resetData.pgx
index f9ecb24..049986d 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/resetData.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/resetData.pgx
@@ -1,29 +1,29 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/sendEventTcp.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/sendEventTcp.pgx
index 0c6a14b..da16f9f 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/sendEventTcp.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/sendEventTcp.pgx
@@ -1,23 +1,23 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/setInZone.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/setInZone.pgx
index 537bd33..47e7353 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/setInZone.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/setInZone.pgx
@@ -1,21 +1,21 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/setOutZone.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/setOutZone.pgx
index 44c16b4..2ca97a8 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/setOutZone.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/setOutZone.pgx
@@ -1,22 +1,22 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/simulateEvents.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/simulateEvents.pgx
index bcbc273..c064f93 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/simulateEvents.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/simulateEvents.pgx
@@ -1,22 +1,22 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/start.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/start.pgx
index c0e4066..9c33a31 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/start.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/start.pgx
@@ -1,65 +1,65 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/startDetection.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/startDetection.pgx
index 2905e91..77853c0 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/startDetection.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/startDetection.pgx
@@ -1,36 +1,36 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/startTraining.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/startTraining.pgx
index 8b89127..9809543 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/startTraining.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/startTraining.pgx
@@ -1,31 +1,31 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/train.pgx b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/train.pgx
index 4ab99bc..bcf910d 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/train.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/ForceDetection/train.pgx
@@ -1,28 +1,28 @@
-
-
-
-
-
-
- nJntMaxForce[l_nIndex]
- nJntMaxForce[l_nIndex]=abs(nJntForce[l_nIndex])
- endIf
- endFor
- delay(0)
- endWhile
-end]]>
-
+
+
+
+
+
+
+ nJntMaxForce[l_nIndex]
+ nJntMaxForce[l_nIndex]=abs(nJntForce[l_nIndex])
+ endIf
+ endFor
+ delay(0)
+ endWhile
+end]]>
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/goGonio.pgx b/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/goGonio.pgx
index 6255828..7fa2396 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/goGonio.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/goGonio.pgx
@@ -1,44 +1,44 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/movePark.pgx b/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/movePark.pgx
index c314d69..07ac746 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/movePark.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/movePark.pgx
@@ -1,62 +1,62 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/moveScanner.pgx b/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/moveScanner.pgx
index c90136c..5fefc84 100644
--- a/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/moveScanner.pgx
+++ b/robot/MXLAB/Controller1/usr/usrapp/SC_TELL/moveScanner.pgx
@@ -1,50 +1,50 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/robot/MXLAB/MXLAB.cell b/robot/MXLAB/MXLAB.cell
index b18506b..458e2a5 100644
--- a/robot/MXLAB/MXLAB.cell
+++ b/robot/MXLAB/MXLAB.cell
@@ -1,5 +1,5 @@
-
-
-
-
+
+|
+
+
|
\ No newline at end of file
diff --git a/script/local.groovy b/script/local.groovy
index 6cd1527..eef7106 100644
--- a/script/local.groovy
+++ b/script/local.groovy
@@ -1,3 +1,3 @@
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Deployment specific global definitions - executed after startup.groovy
-///////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Deployment specific global definitions - executed after startup.groovy
+///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/script/local.js b/script/local.js
index 17db863..e2eeaad 100644
--- a/script/local.js
+++ b/script/local.js
@@ -1,4 +1,4 @@
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Deployment specific global definitions - executed after startup.js
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Deployment specific global definitions - executed after startup.js
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
diff --git a/script/local.py b/script/local.py
index 30a8bb8..7b076ca 100644
--- a/script/local.py
+++ b/script/local.py
@@ -1,431 +1,434 @@
-###################################################################################################
-# Deployment specific global definitions - executed after startup.py
-###################################################################################################
-import traceback
-from ch.psi.pshell.serial import TcpDevice
-from ch.psi.pshell.modbus import ModbusTCP
-import ch.psi.mxsc.Controller as Controller
-import ch.psi.pshell.core.Nameable as Nameable
-import ch.psi.utils.Chrono as Chrono
-import ch.psi.mxsc.Controller as Controller
-
-
-
-run("setup/Layout")
+###################################################################################################
+# Deployment specific global definitions - executed after startup.py
+###################################################################################################
+import traceback
+from ch.psi.pshell.serial import TcpDevice
+from ch.psi.pshell.modbus import ModbusTCP
+import ch.psi.mxsc.Controller as Controller
+import ch.psi.pshell.core.Nameable as Nameable
+import ch.psi.utils.Chrono as Chrono
+import ch.psi.mxsc.Controller as Controller
+
+
+
+run("setup/Layout")
run("data/reports")
-
-
-
-###################################################################################################
-# Configuration
-###################################################################################################
-
-IMAGING_ENABLED_PREFERENCE = "imaging_enabled"
-PUCK_TYPES_PREFERENCE = "puck_types"
-BARCODE_READER_SCAN_PUCKS = "barcode_reader_scan_pucks"
-ROOM_TEMPERATURE_ENABLED_PREFERENCE = "room_temperature_enabled"
-BEAMLINE_STATUS_ENABLED_PREFERENCE = "beamline_status_enabled"
-VALVE_CONTROL_ENABLED_PREFERENCE = "valve_control"
-
-def is_imaging_enabled():
- setting = get_setting(IMAGING_ENABLED_PREFERENCE)
- return not (str(setting).lower() == 'false')
-
-def set_imaging_enabled(value):
- set_setting(IMAGING_ENABLED_PREFERENCE, (True if value else False) )
-
-def assert_imaging_enabled():
- if is_imaging_enabled() == False:
- raise Exception ("Imaging is disabled")
-
-#"unipuck", "minispine" or "mixed"
-def set_puck_types(value):
- set_setting(PUCK_TYPES_PREFERENCE, True if value else False )
-
-def get_puck_types():
- setting = get_setting(PUCK_TYPES_PREFERENCE)
- if setting == "unipuck" or setting == "minispine":
- return setting
- return "mixed"
-
-
-def is_barcode_reader_scan_pucks():
- setting = get_setting(BARCODE_READER_SCAN_PUCKS)
- return False if setting is None else setting.lower() == "true"
-
-def set_barcode_reader_scan_pucks(value):
- set_setting(BARCODE_READER_SCAN_PUCKS, True if value else False )
-
-def is_valve_controlled():
- setting = get_setting(VALVE_CONTROL_ENABLED_PREFERENCE)
- return False if setting is None else setting.lower() == "true"
-
-def set_valve_controlled(value):
- set_setting(VALVE_CONTROL_ENABLED_PREFERENCE, True if value else False )
-
-def reset_mounted_sample_position():
- set_setting("mounted_sample_position", None)
-
-
-def get_puck_barcode_reader():
- if is_barcode_reader_scan_pucks():
- return barcode_reader
- else:
- return barcode_reader_puck
-
-#In order to apply current config
-set_imaging_enabled(is_imaging_enabled())
-set_puck_types(get_puck_types())
-set_barcode_reader_scan_pucks(is_barcode_reader_scan_pucks())
-set_valve_controlled(is_valve_controlled())
-
-
-force_dry_mount_count = get_setting("force_dry_mount_count")
-if force_dry_mount_count is None:
- set_setting("force_dry_mount_count", 0)
-
-force_dry_timeout = get_setting("force_dry_timeout")
-if force_dry_timeout is None:
- set_setting("force_dry_timeout", 0)
-
+
+
+
+###################################################################################################
+# Configuration
+###################################################################################################
+
+IMAGING_ENABLED_PREFERENCE = "imaging_enabled"
+PUCK_TYPES_PREFERENCE = "puck_types"
+BARCODE_READER_SCAN_PUCKS = "barcode_reader_scan_pucks"
+ROOM_TEMPERATURE_ENABLED_PREFERENCE = "room_temperature_enabled"
+BEAMLINE_STATUS_ENABLED_PREFERENCE = "beamline_status_enabled"
+VALVE_CONTROL_ENABLED_PREFERENCE = "valve_control"
+
+def is_imaging_enabled():
+ setting = get_setting(IMAGING_ENABLED_PREFERENCE)
+ return not (str(setting).lower() == 'false')
+
+def set_imaging_enabled(value):
+ set_setting(IMAGING_ENABLED_PREFERENCE, (True if value else False) )
+
+def assert_imaging_enabled():
+ if is_imaging_enabled() == False:
+ raise Exception ("Imaging is disabled")
+
+#"unipuck", "minispine" or "mixed"
+def set_puck_types(value):
+ set_setting(PUCK_TYPES_PREFERENCE, True if value else False )
+
+def get_puck_types():
+ setting = get_setting(PUCK_TYPES_PREFERENCE)
+ if setting == "unipuck" or setting == "minispine":
+ return setting
+ return "mixed"
+
+
+def is_barcode_reader_scan_pucks():
+ setting = get_setting(BARCODE_READER_SCAN_PUCKS)
+ return False if setting is None else setting.lower() == "true"
+
+def set_barcode_reader_scan_pucks(value):
+ set_setting(BARCODE_READER_SCAN_PUCKS, True if value else False )
+
+def is_valve_controlled():
+ setting = get_setting(VALVE_CONTROL_ENABLED_PREFERENCE)
+ return False if setting is None else setting.lower() == "true"
+
+def set_valve_controlled(value):
+ set_setting(VALVE_CONTROL_ENABLED_PREFERENCE, True if value else False )
+
+def reset_mounted_sample_position():
+ set_setting("mounted_sample_position", None)
+
+
+def get_puck_barcode_reader():
+ if is_barcode_reader_scan_pucks():
+ return barcode_reader
+ else:
+ return barcode_reader_puck
+
+#In order to apply current config
+set_imaging_enabled(is_imaging_enabled())
+set_puck_types(get_puck_types())
+set_barcode_reader_scan_pucks(is_barcode_reader_scan_pucks())
+set_valve_controlled(is_valve_controlled())
+
+
+force_dry_mount_count = get_setting("force_dry_mount_count")
+if force_dry_mount_count is None:
+ set_setting("force_dry_mount_count", 0)
+
+force_dry_timeout = get_setting("force_dry_timeout")
+if force_dry_timeout is None:
+ set_setting("force_dry_timeout", 0)
+
cold_position_timeout = get_setting("cold_position_timeout")
if cold_position_timeout is None:
set_setting("cold_position_timeout", 0)
-
-
-def is_room_temperature_enabled():
- setting = get_setting(ROOM_TEMPERATURE_ENABLED_PREFERENCE)
- return str(setting).lower() == 'true'
-
-set_setting(ROOM_TEMPERATURE_ENABLED_PREFERENCE, is_room_temperature_enabled())
-
-
-def is_beamline_status_enabled():
- setting = get_setting(BEAMLINE_STATUS_ENABLED_PREFERENCE)
- return str(setting).lower() == 'true'
-
-set_setting(BEAMLINE_STATUS_ENABLED_PREFERENCE, is_beamline_status_enabled())
-
-###################################################################################################
-# Scripted devices and pseudo-devices
-###################################################################################################
-
-for script in ["devices/RobotSC", "devices/Wago", "devices/BarcodeReader", "devices/LaserDistance", \
- "devices/LedCtrl", "devices/SmartMagnet", "devices/HexiPosi", "devices/Gonio"]:
- try:
- run(script)
- except:
- print >> sys.stderr, traceback.format_exc()
-
-#if is_imaging_enabled():
-if get_device("img") is not None:
- add_device(img.getContrast(), force = True)
- add_device(img.getCamera(), force = True)
-
-
-###################################################################################################
-# Utility modules
-###################################################################################################
-
-run("data/samples")
-run("data/pucks")
-run("motion/tools")
-run("motion/mount")
-run("motion/unmount")
-run("motion/get_dewar")
-run("motion/put_dewar")
-run("motion/get_gonio")
-run("motion/put_gonio")
-run("motion/move_dewar")
-run("motion/move_gonio")
-run("motion/move_heater")
-run("motion/move_home")
-run("motion/move_park")
-run("motion/move_cold")
-run("motion/move_scanner")
-run("motion/move_aux")
-run("motion/get_aux")
-run("motion/put_aux")
-run("motion/dry")
-run("motion/trash")
-run("motion/homing_hexiposi")
-run("motion/calibrate_tool")
-run("motion/scan_pin")
-run("motion/robot_recover")
-run("motion/recover")
-run("tools/Math")
-if is_imaging_enabled():
- run("imgproc/Utils")
-
-def system_check(robot_move=True):
- if not air_pressure_ok.read():
- raise Exception("Air pressure is not ok")
- if not n2_pressure_ok.read():
- raise Exception("N2 pressure is not ok")
- hexiposi.assert_in_known_position()
-
- if robot_move:
- if not feedback_local_safety.read():
- raise Exception("Local safety not released")
- auto = not is_manual_mode()
- if auto:
- if not feedback_psys_safety.read():
- raise Exception("Psys safety not released")
- if not guiding_tool_park.read():
- raise Exception("Guiding tool not parked")
-
-def system_check_msg():
- try:
- system_check(True)
- return "Ok"
- except:
- return sys.exc_info()[1]
-
-def get_puck_dev(segment, puck):
- if type(segment) is int:
- segment = chr( ord('A') + (segment-1))
-
- return Controller.getInstance().getPuck(str(segment).upper() + str(puck))
-
-def get_puck_elect_detection(segment, puck):
- return str(get_puck_dev(segment, puck).detection)
-
-def get_puck_img_detection(segment, puck):
- return str(Controller.getInstance().getPuck(str(segment).upper() + str(puck)).imageDetection)
-
-def assert_puck_detected(segment, puck):
- if (segment == AUX_SEGMENT) and (puck == 1):
- return
- if get_puck_elect_detection(segment, puck) != "Present":
- raise Exception ("Puck " + str(segment).upper() + str(puck) + " not present")
-
-
-def start_puck_detection():
- run("tools/RestartPuckDetection")
-
-def check_puck_detection():
- return run("tools/CheckPuckDetection")
-
-def stop_puck_detection():
- run("tools/StopPuckDetection")
-
-
-
-def get_detected_pucks():
- ret = []
- for i in range(30):
- p = BasePlate.getPucks()[i]
- if (str(p.getDetection()) == "Present"):
- ret.append(str(p.getName()))
- return ret
-
-def get_pucks_info():
- ret = []
- for i in range(30):
- p = BasePlate.getPucks()[i]
- name = p.getName()
- det = str(p.getDetection())
- barcode = "" if p.getId() is None else p.getId()
-
- ret.append({"puckAddress": name, "puckState": det, "puckBarcode":barcode})
- return json.dumps(ret)
-
-
-###################################################################################################
-# Device initialization
-###################################################################################################
-
-try:
- set_heater(False)
- set_air_stream(False)
-except:
- print >> sys.stderr, traceback.format_exc()
-
-
-try:
- release_local_safety.write(False)
- release_psys_safety.write(False)
-except:
- print >> sys.stderr, traceback.format_exc()
-
-try:
- hexiposi.polling=500
-except:
- print >> sys.stderr, traceback.format_exc()
-
-try:
- robot.setPolling(DEFAULT_ROBOT_POLLING)
- robot.set_tool(TOOL_DEFAULT)
- robot.set_frame(FRAME_DEFAULT)
- robot.set_motors_enabled(True)
- robot.set_joint_motors_enabled(True)
-except:
- print >> sys.stderr, traceback.format_exc()
-
-if is_imaging_enabled():
- try:
- import ch.psi.pshell.device.Camera as Camera
- #img.camera.setColorMode(Camera.ColorMode.Mono)
- #img.camera.setDataType(Camera.DataType.UInt8)
- img.camera.setGrabMode(Camera.GrabMode.Continuous)
- img.camera.setTriggerMode(Camera.TriggerMode.Fixed_Rate)
- img.camera.setExposure(25.00)
- img.camera.setAcquirePeriod(200.00)
- img.camera.setGain(0.0)
- #img.camera.setROI(200, 0,1200,1200)
- """
- img.camera.setROI(300, 200,1000,1000)
- img.config.rotation=17
- img.config.rotationCrop=True
- img.config.roiX,img.config.roiY, img.config.roiWidth,img.config.roiHeight = 50,50,900,900
- """
- img.camera.setROI(int(get_setting("roi_x")), int(get_setting("roi_y")), int(get_setting("roi_w")), int(get_setting("roi_h")))
-
- img.camera.stop()
- img.camera.start()
- except:
- print >> sys.stderr, traceback.format_exc()
-
-#TODO: The Smart Magnet keeps moving sample if detecting is enabled
-# Detection keeps disabled unless during moount/unmount
-try:
- smart_magnet.set_supress(True)
-except:
- print >> sys.stderr, traceback.format_exc()
-
-#gripper_cam.paused = True
-###################################################################################################
-# Device monitoring
-###################################################################################################
-
-DEWAR_LEVEL_RT = 5.0
-is_room_temperature = False
-
-def is_room_temp():
- return is_room_temperature
-
-
-class DewarLevelListener (DeviceListener):
- def onValueChanged(self, device, value, former):
- global is_room_temperature
- if value is not None:
- is_room_temperature = value <= DEWAR_LEVEL_RT
-dewar_level_listener = DewarLevelListener()
-
-for l in dewar_level.listeners:
- #if isinstance(l, DewarLevelListener): #Class changes...
- if Nameable.getShortClassName(l.getClass()) == "DewarLevelListener":
- dewar_level.removeListener(l)
-
-dewar_level.addListener(dewar_level_listener)
-dewar_level_listener.onValueChanged(dewar_level, dewar_level.take(), None)
-
-
-
-
-class HexiposiListener (DeviceListener):
- def onValueChanging(self, device, value, former):
- robot.assert_cleared()
-
-hexiposi_listener = HexiposiListener()
-hexiposi.addListener(hexiposi_listener)
-
-###################################################################################################
-# Global variables & application state
-###################################################################################################
-
-
-context = get_context()
-
-cover_detection_debug = False
-
-in_mount_position = False
-
-
-def assert_mount_position():
- print "Source: ", get_exec_pars().source
- if not in_mount_position and get_exec_pars().source == CommandSource.server :
- raise Exception("Not in mount position")
-
-
-def is_puck_loading():
- return robot.state == State.Ready and robot.take()["pos"] == 'pPark' and \
- feedback_psys_safety.take() == False and \
- not guiding_tool_park.read()
-
-def set_pin_offset(val):
- if abs(val) >5:
- raise Exception("Invalid pin offset: " + str(val))
- try:
- set_setting("pin_offset",float(val))
- except:
- log("Error setting pin offset: " + str(sys.exc_info()[1]), False)
-
-def get_pin_offset():
- try:
- ret = float(get_setting("pin_offset"))
- if abs(ret) >5:
- raise Exception("Invalid configured pin offset: " + str(ret))
- return ret
- except:
- log("Error getting pin offset: " + str(sys.exc_info()[1]), False)
- return 0.0
-
-
-def set_pin_angle_offset(val):
- if (abs(val) > 180.0) or (abs(val) < -180.0):
- raise Exception("Invalid pin angle offset: " + str(val))
- try:
- set_setting("pin_angle_offset",float(val))
- except:
- log("Error setting pin angle offset: " + str(sys.exc_info()[1]), False)
-
-def get_pin_angle_offset():
- try:
- ret = float(get_setting("pin_angle_offset"))
- if (abs(ret) > 180.0) or (abs(ret) < -180.0):
- raise Exception("Invalid configured pin angle offset: " + str(ret))
- return ret
- except:
- log("Error getting pin angle offset: " + str(sys.exc_info()[1]), False)
- return 0.0
-
-def is_force_dry():
- try:
- dry_mount_counter = int(get_setting("dry_mount_counter"))
- except:
- dry_mount_counter = 0
-
- try:
- dry_timespan = time.time() - float( get_setting("dry_timestamp"))
- except:
- dry_timespan = 3600
-
- try:
- force_dry_mount_count = int(get_setting("force_dry_mount_count"))
- if force_dry_mount_count>0 and dry_mount_counter>=force_dry_mount_count:
- return True
- except:
- pass
-
- try:
- force_dry_timeout = float(get_setting("force_dry_timeout"))
- if force_dry_timeout>0 and dry_timespan>=force_dry_timeout:
- return True
- except:
- pass
- return False
+
+
+def is_room_temperature_enabled():
+ setting = get_setting(ROOM_TEMPERATURE_ENABLED_PREFERENCE)
+ return str(setting).lower() == 'true'
+
+set_setting(ROOM_TEMPERATURE_ENABLED_PREFERENCE, is_room_temperature_enabled())
+
+
+def is_beamline_status_enabled():
+ setting = get_setting(BEAMLINE_STATUS_ENABLED_PREFERENCE)
+ return str(setting).lower() == 'true'
+
+set_setting(BEAMLINE_STATUS_ENABLED_PREFERENCE, is_beamline_status_enabled())
+
+###################################################################################################
+# Scripted devices and pseudo-devices
+###################################################################################################
+
+for script in ["devices/RobotSC", "devices/Wago", "devices/BarcodeReader", "devices/LaserDistance", \
+ "devices/LedCtrl", "devices/SmartMagnet", "devices/HexiPosi", "devices/Gonio"]:
+ try:
+ run(script)
+ except:
+ print >> sys.stderr, traceback.format_exc()
+
+#if is_imaging_enabled():
+if get_device("img") is not None:
+ add_device(img.getContrast(), force = True)
+ add_device(img.getCamera(), force = True)
+
+
+###################################################################################################
+# Utility modules
+###################################################################################################
+
+run("data/samples")
+run("data/pucks")
+run("motion/tools")
+run("motion/mount")
+run("motion/unmount")
+run("motion/get_dewar")
+run("motion/put_dewar")
+run("motion/get_gonio")
+run("motion/put_gonio")
+run("motion/move_dewar")
+run("motion/move_gonio")
+run("motion/move_heater")
+run("motion/move_home")
+run("motion/move_park")
+run("motion/move_cold")
+run("motion/move_scanner")
+run("motion/move_aux")
+run("motion/get_aux")
+run("motion/put_aux")
+run("motion/dry")
+run("motion/trash")
+run("motion/homing_hexiposi")
+run("motion/calibrate_tool")
+run("motion/scan_pin")
+run("motion/robot_recover")
+run("motion/recover")
+run("tools/Math")
+if is_imaging_enabled():
+ run("imgproc/Utils")
+
+def system_check(robot_move=True):
+ if not air_pressure_ok.read():
+ raise Exception("Air pressure is not ok")
+ if not n2_pressure_ok.read():
+ raise Exception("N2 pressure is not ok")
+ hexiposi.assert_in_known_position()
+
+ if robot_move:
+ if not feedback_local_safety.read():
+ raise Exception("Local safety not released")
+ auto = not is_manual_mode()
+ if auto:
+ if not feedback_psys_safety.read():
+ raise Exception("Psys safety not released")
+ if not guiding_tool_park.read():
+ raise Exception("Guiding tool 1 not parked")
+ if not guiding_tool_park_2.read():
+ raise Exception("Guiding tool 2 not parked")
+
+def system_check_msg():
+ try:
+ system_check(True)
+ return "Ok"
+ except:
+ return sys.exc_info()[1]
+
+def get_puck_dev(segment, puck):
+ if type(segment) is int:
+ segment = chr( ord('A') + (segment-1))
+
+ return Controller.getInstance().getPuck(str(segment).upper() + str(puck))
+
+def get_puck_elect_detection(segment, puck):
+ return str(get_puck_dev(segment, puck).detection)
+
+def get_puck_img_detection(segment, puck):
+ return str(Controller.getInstance().getPuck(str(segment).upper() + str(puck)).imageDetection)
+
+def assert_puck_detected(segment, puck):
+ if (segment == AUX_SEGMENT) and (puck == 1):
+ return
+ if get_puck_elect_detection(segment, puck) != "Present":
+ raise Exception ("Puck " + str(segment).upper() + str(puck) + " not present")
+
+
+def start_puck_detection():
+ run("tools/RestartPuckDetection")
+
+def check_puck_detection():
+ return run("tools/CheckPuckDetection")
+
+def stop_puck_detection():
+ run("tools/StopPuckDetection")
+
+
+
+def get_detected_pucks():
+ ret = []
+ for i in range(30):
+ p = BasePlate.getPucks()[i]
+ if (str(p.getDetection()) == "Present"):
+ ret.append(str(p.getName()))
+ return ret
+
+def get_pucks_info():
+ ret = []
+ for i in range(30):
+ p = BasePlate.getPucks()[i]
+ name = p.getName()
+ det = str(p.getDetection())
+ barcode = "" if p.getId() is None else p.getId()
+
+ ret.append({"puckAddress": name, "puckState": det, "puckBarcode":barcode})
+ return json.dumps(ret)
+
+
+###################################################################################################
+# Device initialization
+###################################################################################################
+
+try:
+ set_heater(False)
+ set_air_stream(False)
+except:
+ print >> sys.stderr, traceback.format_exc()
+
+
+try:
+ release_local_safety.write(False)
+ release_psys_safety.write(False)
+except:
+ print >> sys.stderr, traceback.format_exc()
+
+try:
+ hexiposi.polling=500
+except:
+ print >> sys.stderr, traceback.format_exc()
+
+try:
+ robot.setPolling(DEFAULT_ROBOT_POLLING)
+ robot.set_tool(TOOL_DEFAULT)
+ robot.set_frame(FRAME_DEFAULT)
+ robot.set_motors_enabled(True)
+ robot.set_joint_motors_enabled(True)
+except:
+ print >> sys.stderr, traceback.format_exc()
+
+if is_imaging_enabled():
+ try:
+ import ch.psi.pshell.device.Camera as Camera
+ #img.camera.setColorMode(Camera.ColorMode.Mono)
+ #img.camera.setDataType(Camera.DataType.UInt8)
+ img.camera.setGrabMode(Camera.GrabMode.Continuous)
+ img.camera.setTriggerMode(Camera.TriggerMode.Fixed_Rate)
+ img.camera.setExposure(25.00)
+ img.camera.setAcquirePeriod(200.00)
+ img.camera.setGain(0.0)
+ #img.camera.setROI(200, 0,1200,1200)
+ """
+ img.camera.setROI(300, 200,1000,1000)
+ img.config.rotation=17
+ img.config.rotationCrop=True
+ img.config.roiX,img.config.roiY, img.config.roiWidth,img.config.roiHeight = 50,50,900,900
+ """
+ img.camera.setROI(int(get_setting("roi_x")), int(get_setting("roi_y")), int(get_setting("roi_w")), int(get_setting("roi_h")))
+
+ img.camera.stop()
+ img.camera.start()
+ except:
+ print >> sys.stderr, traceback.format_exc()
+
+#TODO: The Smart Magnet keeps moving sample if detecting is enabled
+# Detection keeps disabled unless during moount/unmount
+try:
+ smart_magnet.set_supress(True)
+except:
+ print >> sys.stderr, traceback.format_exc()
+
+#gripper_cam.paused = True
+###################################################################################################
+# Device monitoring
+###################################################################################################
+
+DEWAR_LEVEL_RT = 5.0
+is_room_temperature = False
+
+def is_room_temp():
+ return is_room_temperature
+
+
+class DewarLevelListener (DeviceListener):
+ def onValueChanged(self, device, value, former):
+ global is_room_temperature
+ if value is not None:
+ is_room_temperature = value <= DEWAR_LEVEL_RT
+dewar_level_listener = DewarLevelListener()
+
+for l in dewar_level.listeners:
+ #if isinstance(l, DewarLevelListener): #Class changes...
+ if Nameable.getShortClassName(l.getClass()) == "DewarLevelListener":
+ dewar_level.removeListener(l)
+
+dewar_level.addListener(dewar_level_listener)
+dewar_level_listener.onValueChanged(dewar_level, dewar_level.take(), None)
+
+
+
+
+class HexiposiListener (DeviceListener):
+ def onValueChanging(self, device, value, former):
+ robot.assert_cleared()
+
+hexiposi_listener = HexiposiListener()
+hexiposi.addListener(hexiposi_listener)
+
+###################################################################################################
+# Global variables & application state
+###################################################################################################
+
+
+context = get_context()
+
+cover_detection_debug = False
+
+in_mount_position = False
+
+
+def assert_mount_position():
+ print "Source: ", get_exec_pars().source
+ if not in_mount_position and get_exec_pars().source == CommandSource.server :
+ raise Exception("Not in mount position")
+
+
+def is_puck_loading():
+ guiding_tools_parked = guiding_tool_park.read() and guiding_tool_park_2.read()
+ return robot.state == State.Ready and robot.take()["pos"] == 'pPark' and \
+ feedback_psys_safety.take() == False and \
+ not guiding_tools_parked
+
+def set_pin_offset(val):
+ if abs(val) >5:
+ raise Exception("Invalid pin offset: " + str(val))
+ try:
+ set_setting("pin_offset",float(val))
+ except:
+ log("Error setting pin offset: " + str(sys.exc_info()[1]), False)
+
+def get_pin_offset():
+ try:
+ ret = float(get_setting("pin_offset"))
+ if abs(ret) >5:
+ raise Exception("Invalid configured pin offset: " + str(ret))
+ return ret
+ except:
+ log("Error getting pin offset: " + str(sys.exc_info()[1]), False)
+ return 0.0
+
+
+def set_pin_angle_offset(val):
+ if (abs(val) > 180.0) or (abs(val) < -180.0):
+ raise Exception("Invalid pin angle offset: " + str(val))
+ try:
+ set_setting("pin_angle_offset",float(val))
+ except:
+ log("Error setting pin angle offset: " + str(sys.exc_info()[1]), False)
+
+def get_pin_angle_offset():
+ try:
+ ret = float(get_setting("pin_angle_offset"))
+ if (abs(ret) > 180.0) or (abs(ret) < -180.0):
+ raise Exception("Invalid configured pin angle offset: " + str(ret))
+ return ret
+ except:
+ log("Error getting pin angle offset: " + str(sys.exc_info()[1]), False)
+ return 0.0
+
+def is_force_dry():
+ try:
+ dry_mount_counter = int(get_setting("dry_mount_counter"))
+ except:
+ dry_mount_counter = 0
+
+ try:
+ dry_timespan = time.time() - float( get_setting("dry_timestamp"))
+ except:
+ dry_timespan = 3600
+
+ try:
+ force_dry_mount_count = int(get_setting("force_dry_mount_count"))
+ if force_dry_mount_count>0 and dry_mount_counter>=force_dry_mount_count:
+ return True
+ except:
+ pass
+
+ try:
+ force_dry_timeout = float(get_setting("force_dry_timeout"))
+ if force_dry_timeout>0 and dry_timespan>=force_dry_timeout:
+ return True
+ except:
+ pass
+ return False
def onPuckLoadingChange(puck_loading):
set_led_state(puck_loading)
- #pass
-
-update()
-add_device(Controller.getInstance().basePlate, True)
-restore_samples_info()
-
-
-print "Initialization complete"
+ #pass
+
+update()
+add_device(Controller.getInstance().basePlate, True)
+restore_samples_info()
+
+
+print "Initialization complete"
\ No newline at end of file
diff --git a/script/motion/mount.py b/script/motion/mount.py
index 6a81d22..43384d3 100644
--- a/script/motion/mount.py
+++ b/script/motion/mount.py
@@ -62,21 +62,11 @@ def mount(segment, puck, sample, force=False, read_dm=False, auto_unmount=False)
assert_mount_position()
do_unmount = False
print "%4.1f s asserted " % (tg() - t1,)
-
- # detect sample before moving to cold
- if smart_magnet.get_supress() == True:
- smart_magnet.set_supress(False)
- time.sleep(0.2)
- sample_det = smart_magnet.check_mounted(idle_time=0.25, timeout = 1.0)
- Controller.getInstance().logEvent("Sample Detection", str(sample_det))
-
- print "%4.1f s SMC checked" % (tg() - t1,)
-
-
+
mounting_in_same_segment = False
-
+
try:
- if sample_det == True:
+ if previous_mounted is not None:
if was_warm and previous_segment in COLD_SEGMENTS:
print " was warm previous %s %s %s" % (previous_segment, COLD_SEGMENTS, previous_mounted)
robot.move_cold()
@@ -91,9 +81,6 @@ def mount(segment, puck, sample, force=False, read_dm=False, auto_unmount=False)
print "%4.1f s ....done" % (tg() - t1,)
do_unmount = True
- if sample_det == True:
- raise Exception("Pin detected on gonio")
-
if is_normal and not robot.is_cold():
print "mount():83 needs_chilling"
@@ -130,7 +117,7 @@ def mount(segment, puck, sample, force=False, read_dm=False, auto_unmount=False)
if (not robot.is_dewar()) and (not mounting_in_same_segment):
robot.move_dewar()
print "%4.1f s get_dewar" % (tg() - t1,)
- robot.get_dewar(segment, puck, sample, mounting_in_same_segment=mounting_in_same_segment)
+ robot.get_dewar(segment, puck, sample)
if read_dm:
@@ -192,22 +179,14 @@ def mount(segment, puck, sample, force=False, read_dm=False, auto_unmount=False)
else:
robot.move_cold()
- mount_sample_detected = smart_magnet.check_mounted(idle_time=0.25, timeout = 1.0)
- Controller.getInstance().logEvent("Sample Detection", str(mount_sample_detected))
- update_samples_info_sample_mount(get_puck_name(segment, puck), sample, mount_sample_detected, mount_sample_id)
- if mount_sample_detected == False:
- raise Exception("No pin detected on gonio")
+ update_samples_info_sample_mount(get_puck_name(segment, puck), sample, True, mount_sample_id)
-
if is_force_dry():
- smart_magnet.set_default_current()
print "%4.1f Auto dry async" % (tg() - t1,)
log("Starting auto dry", False)
set_exec_pars(then = "dry()")
set_setting("mounted_sample_position", get_sample_name(segment, puck, sample))
- return [mount_sample_detected, mount_sample_id]
+ return [True, mount_sample_id]
finally:
- print "%4.1f s magnet suppress/default current" % (tg() - t1,)
- smart_magnet.set_default_current()
- smart_magnet.set_supress(True)
+ pass
\ No newline at end of file
diff --git a/script/motion/unmount.py b/script/motion/unmount.py
index 8ae593a..22f4043 100644
--- a/script/motion/unmount.py
+++ b/script/motion/unmount.py
@@ -55,20 +55,6 @@ def unmount(segment = None, puck = None, sample = None, force=False, auto_unmoun
Controller.getInstance().logEvent("Unmount Sample", str(segment) + str(puck) + str(sample))
try:
- if smart_magnet.get_supress() == True:
- smart_magnet.set_supress(False)
- time.sleep(0.2)
-
- #smart_magnet.apply_reverse()
- #smart_magnet.apply_resting()
-
- if not force:
- sample_det = smart_magnet.check_mounted(idle_time=0.5, timeout = 3.0)
- Controller.getInstance().logEvent("Sample Detection", str(sample_det))
- if sample_det == False:
- raise Exception("No pin detected on gonio")
-
- #Enabling
enable_motion()
if is_normal:
@@ -87,8 +73,6 @@ def unmount(segment = None, puck = None, sample = None, force=False, auto_unmoun
if not robot.is_gonio():
robot.move_gonio()
-
- #smart_magnet.set_unmount_current()
curpos = cryopos.getPosition()
speed = cryopos.getSpeed() / 1000.
@@ -98,11 +82,6 @@ def unmount(segment = None, puck = None, sample = None, force=False, auto_unmoun
robot.get_gonio()
- smart_magnet.apply_reverse()
- smart_magnet.apply_resting()
- mount_sample_detected = smart_magnet.check_mounted(idle_time=0.25, timeout = 1.0)
- Controller.getInstance().logEvent("Sample Detection", str(mount_sample_detected))
-
if is_aux:
robot.move_aux()
robot.put_aux(sample)
@@ -115,8 +94,6 @@ def unmount(segment = None, puck = None, sample = None, force=False, auto_unmoun
robot.put_dewar(segment, puck, sample)
set_setting("mounted_sample_position", None)
- return mount_sample_detected
+ return False
finally:
- if not auto_unmount:
- smart_magnet.set_default_current()
- smart_magnet.set_supress(True)
+ pass
\ No newline at end of file
| |