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,073