presented by the BLISS team
Beamline Control Unit, Software Group
ESRF, Grenoble, France
ISDD Seminar
16-10-2017
A. Homs
E. Papillon
J. Bodera
C. Guilloud
J. Bodera
M. Guijarro
T. Coutinho
S. Petitdemange
V. Michel
BeamLine Instrumentation Support Software
Limitations
Workarounds
Maintenance cost
Python library + tools
Technical choices
Beacon: services for BLISS
Configuration example
Scanning & data acquisition
Online data publishing and visualisation
Embed into any Python program
>>> from bliss.common.axis import Axis
>>> from bliss.controllers.motors import IcePAP
>>> iceid2322 = IcePAP.IcePAP("iceid2322",
{"host": "iceid2322"},
[("mbv4mot", Axis, { "address": 1,
"steps_per_unit": 80,
"velocity": 125,
"acceleration": 500
}
)], [])
>>> iceid2322.initialize()
>>> m = iceid2322.get_axis("mbv4mot")
>>> m.velocity()
125.0
>>> m.acceleration()
500.0
>>> m.position()
252.23750000000001
>>>
Command Line Interface based on ptpython
matias@kashyyyk:~ % bliss -s test_session
test_session: Executing setup...
Initializing 'heater`
...
Initializing 's1hg`
Done.
>>> ascan(m1, 0, 10, 30, 0.1, diode, save=False)
Total 30 points, 3.0 seconds
Scan 4 Mon Sep 11 11:58:03 2017 <no file> test_session user = guijarro
ascan m1 0 10 30 0.1
# timestamp m1 diode
0 1.50512e+09 0 499.112
1 1.50512e+09 0.345 500.799
...
28 1.50512e+09 9.655 505.622
29 1.50512e+09 10 499.883
Configuration web application
Graphical interface for users: interactive web shell
All I/O based on gevent
cooperative multi-tasking
Direct hardware control
Distributed control ownership & shared state
Persistent settings
cache
Transient data store
Scan acquisition chain, represented as a tree
online data analysis
data visualisation
data archiving
(presented by T. Coutinho)
Web interface for configuration editing
Beacon server
.yml
Devices & sequences configuration in YAML format
Sessions to group
objects
Python setup file
User scripts
Can replace TANGO DB
Conversion script provided
Beacon server,
services built on top of
Transient data store
Persistent settings cache
Message broker
(presented by
S. Petitdemange)
Mirroring of the Acquisition Chain tree
each device in the chain has a name
each device define 1 or more 'AcquisitionChannel' objects
Acquisition channels
must have a name, a type and a shape
Metadata
scan_info dictionary ({ key: value, ... }) associated with scans
While a scan is running, data is published to the redis database provided by Beacon
scalar values are stored directly
bigger data (images, spectra) is just referenced
configurable time to live (TTL)