3rdof December, 2021
BeamLine Instrumentation Support Software
Presentation for ACU
Project history and milestones
at the heart of ESRF data acquisition
TUPV043
baked with love by the ESRF Instrumentation Services & Development Division Software Group
Beamline Control Unit: A. Beteva, G. Berruyer, L. Claustre, S. Debionne, S. Fisher, M. Guijarro, P. Guillou, C. Guilloud, A. Homs, M.C. Lagier, D. Mammeri, A. Mauro, J. Meyer, C. Muzelle, M. Oscarsson, E. Papillon, S. Petitdemange, V. Valls, H. Witsch / Data Analysis Unit: W. De Nolf
Beacon : web application to configure a whole beamline
Flint : data visualisation
based on the ESRF silx toolkit
Modular architecture, Abstraction layers and adapters
Data publishing and archiving enables online data analysis
Services built on top of
BLISS integrated environment covers a wide range of beamline control needs
BLISS shell integrates with Daiquiri UI the ESRF web-based framework for user interfaces
Daiquiri UI
see: THAR02
+
BLISS stands for BeamLine Instrumentation Support Software,
it is a new synchrotron experiments control system written in Python
BLISS controls today 24 beamlines (out of 48), full deployment is aimed in 2023
TUPV043
BLISS Key Principles
Direct hardware control
Persistent
settings cache
Data publishing,
Transient storage
Scan acquisition chain represented as a tree
All-in-one solution
BLISS Beacon server
Web interface for configuration editing
Beacon server
Devices & sequences configuration in YAML format
User sessions to group beamline devices for an experiment + Python setup file
configuration management
&
services
Transient data store
Settings cache
Centralized logging and log viewer web application
class: elmo
udp:
url: 160.103.51.174
axes:
- name: nth
acceleration: 36
steps_per_unit: 30577
velocity: 180.0
home_velocity: 15
velocity_low_limit: .inf
velocity_high_limit: 360.0
low_limit: -.inf
high_limit: .inf
sign: 1
backlash: 0.0
- class: aerotech
tcp:
url: id31aerotech-1
axes:
- name: nth_aero
acceleration: 5
steps_per_unit: 1
database implementation
TUPV043
BLISS Modular Architecture
Beacon server
data
streams
Mini frameworks within BLISS, to ease integration of same kind of hardware
Adaptation layer, to make hardware controllers behaving properly in scans, depending on the scan
TUPV043
BLISS data publishing and archiving
Daiquiri web GUI
see: THAR02
Redis
1
What is Redis ?
1
producer
producer
producer
producer
consumer
consumer
consumer
XADD
XREAD
Redis streams
1
individual string values
we arbitrary limit streams to 2000 string values max
1 string value can correspond to multiple data events
BLISS client API: knows scans structure, read data
Note: Redis data is only transient !
Consumers need to continuously read from it, to get complete data
(Like Nexus Writer for example)
1
References
References
2
BLISS development tools
Issues list, sprints reviews, discussions and tasks to do on ESRF-hosted gitlab
Continuous Integration:
gitlab-ci
Deployment:
Documentation:
MkDocs
Code formatting
BLISS development methodology
Prioritized
todo
Analysis phase
Coding
Integration tests
Ready to merge
new features
bug fixes
backlog
(tasks)
Kanban