MXCuBE control of FLEX-HCD sample changer
11th MXCuBE meeting, 12-13 June 2017, SOLEIL Synchrotron, Saint Aubin, France
presented by Matias Guijarro, Beamline Control Unit, Software Group, ESRF
What is FLEX-HCD ?
- Joint EMBL-ESRF development
- Staubli 6-axis robot arm + sample grippers + High Capacity Dewar
- 8 cells of 3 containers each - container can be for SPINE or Unipuck samples
What is FLEX-HCD ?
FLEX-HCD movie
Now installed in all ESRF MX beamlines :)
- ID30B: EMBL beamline, first installation
- ID23-1
- ID29
- ID30A-3
- ID23-2
(ID30A-1 has the ESRF Robodiff, almost the same hardware but robot arm is the goniometer head)
Now installed in all ESRF MX beamlines :)
ID30B
ID23-1
ID29
ID30A-3
ID23-2
Python, Linux
Software control architecture
(for ESRF beamlines) - part 1
CS8 hardware controller
VAL-3 server (EMBL)
BLISS client (esrf)
Linux 4U industrial PC
1-wire RS232
(gripper detection)
uEye camera LIMA GigE client
(sample detection)
procedures written in VAL-3 language (ESRF)
ICEPAP client
(dewar operation)
Wago MODBUS (switches, I/O, voltage readings)
Software control architecture
(for ESRF beamlines) - part 2
BLISS client (esrf)
Linux 4U industrial PC
1-wire RS232
(gripper detection)
uEye camera LIMA GigE client
(sample detection)
ICEPAP client
(dewar operation)
Wago MODBUS (switches, I/O, voltage readings)
BLISS generic
Tango server
MXCuBE Hardware Object
inherits Generic Sample Changer
BLISS configuration for FLEX-HCD control
class: flex
name: flex
ip: 10.0.1.2
ueye: 254
ow_port: 4304
ip_hor: 10.0.0.10
ip_vert: 10.0.0.11
proxisense_address: /dev/ttyS0
calibration_file: /users/blissadm/local/configuration/calibration.cfg
log_file: /users/blissadm/log/StaubCom.log
exception_file: /users/blissadm/log/exception.log
flex_log_file: /users/blissadm/log/pyFlex.log
flex.yml file
FlexHCD session
class: Session
name: flexhcd
default: True
setup-file: ./flex_setup.py
FlexHCD session setup
from bliss.setup_globals import *
import time
flex.connect()
flex.abort()
flex.move_dewar(1)
BLISS shell for FLEX-HCD control
(bliss) lid293flex:~ % bliss -s flexhcd
Initializing 'flex`
Initializing 'flexhcd`
[2017/06/12 12:34:03.760004] 51b39700 *Camera*Ueye::Camera::Camera (UeyeCamera.cpp:61)-Always: Manufacturer : IDS GmbH
[2017/06/12 12:34:03.760504] 51b39700 *Camera*Ueye::Camera::Camera (UeyeCamera.cpp:70)-Always: Sensor name : UI524xCP-M
[2017/06/12 12:34:03.760566] 51b39700 *Camera*Ueye::Camera::Camera (UeyeCamera.cpp:123)-Always: Monochrome camera
[2017/06/12 12:34:03.780916] 51b39700 *Camera*Ueye::Camera::Camera (UeyeCamera.cpp:142)-Always: auto gain: 0
[2017/06/12 12:34:03.781075] 51b39700 *Camera*Ueye::Camera::Camera (UeyeCamera.cpp:151)-Always: auto framerate: 0
[2017/06/12 12:34:03.781180] 51b39700 *Camera*Ueye::Camera::Camera (UeyeCamera.cpp:159)-Always: m_sensor_info.nMaxWidth=1280, m_sensor_info.nMaxHeight=1024, m_sensor_info.bGlobShutter=1, m_sensor_info.wPixelSize=530
[2017/06/12 12:34:03.781315] 51b39700 *Camera*Ueye::Camera::Camera (UeyeCamera.cpp:164)-Always: m_sensor_info.bMasterGain=1, m_sensor_info.bRGain=0, m_sensor_info.bGGain=0, m_sensor_info.bBGain=0
Done.
> flexhcd.get_gripper_type()
0
> flexhcd.move_dewar(1)
> flexhcd.get_loaded_sample()
(1, 2, 1)
>
For testing, maintenance, development
Conclusion
Mastery of how the FLEX-HCD operates
- low-level control written by D. Nurizzo (ESRF)
- higher-level control in Python (BLISS, MXCuBE hardware object, D. Nurizzo + M. Guijarro)
Generic sample changer makes it easy to integrate any sample changer within MXCuBE
Robust architecture, easy to debug in case of problem thanks to BLISS shell
Daily operation ; 15-20 samples per hour
Acknowledgements
ESRF Structural Biology
- D. Nurizzo
- G. Leonard
- F. Dobias
- H. Caserotto
- M. Lentini
- J. Surr
- T. Giraud
ESRF Beamline Control Unit
- M. Guijarro
- A. Beteva
ESRF Mechanical Engineering
- P. Theveneau
- C. Clavel
EMBL Grenoble
- Andrew McCarthy
- Florent Cipriani
- Gergely Papp
- Marcos Lopez-Marrero
- Christopher Rossi
- Clement Sorez
- Robert Janocha
Flexhcd control
By Matias Guijarro
Flexhcd control
- 1,163