EPICS and Motion Controls
The lower level of GM/CA control system is constituted by
EPICS. EPICS is an
abbreviation for "Experimental Physics and Industrial Control System",
a distributed hardware control system widely deployed at the APS and other
synchrotron radiation facilities. In EPICS each hardware component is
interfaced via a database server called input-output controller (IOC).
GM/CA runs multiple IOC for each beamline:
- Two VME-type IOC based on VxWorks real-time operating system providing
interface to PMAC2 VME intelligent motion controllers by Delta Tau, SIS3801
Multichannel scaler, Joerger VS64 latching scaler, Systran DAC128 digital
to analog converter, Acromag IP330 analog to digital converter, AVME9440
Digital I/O, XY542 combined DAC/ADC
- Embedded IOC for bimorph mirrors power supplies (for X-ray beam focusing),
- Linux IOC providing frame acquisition with area detectors (Eiger-16,
Pilatus3-6m or Rayonix-300 depending on beamline),
- Linux IOC for JBluIce communication, Sample Environment Server, Point
and Click Server, CryoJet control, Keithley-428 Current Amplifiers,
XIA Falcon DXP, and Canberra NIM modules (556 AIM, 9635 ADC, 2016 AMP/TCA)
for fluorescent detector,
- Linux IOC for Mono Stabilizer (beamline intensity feedback),
- Linux IOC for beamline Equipment Protection system (EPS),
- Linux IOC for monitoring consistency of 4 monochromator encoders.
EPICS allows multiple client programs to access the IOC
and control hardware in parallel. While our main user interface software
is JBluIce, manual and semi-automated
procedures, for example interfacing beamline intensity feedback, can be
performed with other EPICS tools such as MEDM and
CaQtDMscreens, StripTool (time plots)
and various automation scripts. Most of relevant EPICS
tools are available via the Beamline Controls Toolbar,
which can be accessed either from the JBluIce Tools menu,
or by opening a terminal window and typing 23i, 23o, or 23b for the 23ID-D,
23ID-B or 23BM beamline respectively, or by pressing the
icon on the computer desktop (the color may vary per beamline).
Our main EPICS development platform is Redhat Enterprise
Linux and the VME IOC are operational under VxWorks.
The core of the whole control system are Turbo PMAC2
motion controllers that we made
available in EPICS. The advantages of these controllers are (see
the picture below):

- Distributed controls allowing to place parts of the controller
called Macro Stations close to motors (only two fiber links have
to be laid instead of dozens of cables running from the control
rack into endstation).
- Support for virtually any type of motor -- stepper, servo,
brushless servo, piezo, and so on. We only need one type of
motion controller for all three beamlines.
- Support for many types of encoders, so that all motors including
steppers can be encoded thus enhancing controls reliability.
- Support for coordinated motions: controller can synchronize
motion of several motors on the fly.
- Option for 24-channel digital I/O that allows to synchronize
motion with other beamline events
- Programming capability allowing to write custom motion trajectories and
custom servo cycles.
Using these controllers we implemented on-the-fly scans for beamline
alignment. The scans are partially based on an open-source FastScans
project formerly carried by Elena Kondrashkina and Sergey Stepanov
while they were employed at BioCAT.
The package consists of a number of programs written in C language with
user-friendly GUI frontend developed in Java.

As illustrated by the scan plot, the actual motion time of the
shutter is about 12.5 ms and the beam blocking occurs within 2.5
ms.
> JBluIce - EPICS source distribution