EPICS at APS Beamlines
Tim Mooney
Advanced Photon Source
Argonne National Laboratory
EPICS applications for synchrotron beamlines
(synApps)
• Standard EPICS base & extensions• Standard EPICS modules (e.g., MPF)• synApps modules (std, motor, MCA)• synApps-compatible clients (e.g., scan-data
display)
synApps overview
synApps
• Custom EPICS records
• Custom EPICS device-support modules
• Other custom infrastructure (e.g., autosave, recDynLink, saveData)
• Custom EPICS databases, MEDM displays
• Custom clients (e.g., scanSee)
• Matched to a version of EPICS base
synApps overview
Just to clarify…
• We didn’t write everything in synApps• One function of synApps is to bundle
compatible versions of selected EPICS software – wherever developed – into a single tar file that can easily be built and configured to run ~80% of a beamline
• Second function is to provide generic tools that have proven themselves useful in the development of custom support
synApps overview
Basic record/device support
• Motor• Scaler• Multichannel analyzer• Multichannel scaler• Serial (RS-232)• GPIB• ADC’s• DAC’s
• Encoders• Optical table• String calc, sequence• Complex expressions• Enhanced PID• Scan• Scan parameter• Generic VME
synApps overview
Layered devices, techniques(databases, SNL programs, …)
• Optical tables• Slits• Mirrors• Monochromators• Piezo controller• Digital Multimeter• Current preamplifier• Interpolation
• N-step measurement• Serial I/O block• GPIB I/O block• Autocollimator• Temperature controller• X-ray microscope• Insertion device• Filter/shutter
synApps overview
Other support
• Autosave (save parameters through reboot)
• saveData (store scan data to disk)
• Clients to display scan/MCA data
• Programs to handle MDA, NeXus data files
• recDynLink (adds notify-when-done link)– used by sscan, swait records
synApps overview
Motors
• Stepper, servo• Oregon Microsystems• Newport• Intelligent Motion
Systems• McClennan• Soft support
synApps overview
Scalers
• Multiple preset scalers• Background count
interrupted by data-acquisition count
• User-programmable end calculations
• Joerger, Struck hardware
synApps overview
Multichannel analyzer
• Canberra AIM• XIA DXP• 32 regions of interest• Halt acquisition on ROI
preset• Background subtraction
for ROI sums• Also supports sampling
ADC (Acromag IP-330)
synApps overview
Serial O/I Block
• Combination of – string calc to construct
output message– serial record to send
and/or receive– string calc to parse
reply
• Intended for run-time programming
• Similar GPIB support
synApps overview
Optical table
• 5/6-motor optical table• User specifies point
about which table rotates• Exact virtual-to-motor
and motor-to-virtual• Specific geometries
(adding a new geometry is hard)
synApps overview
Monochromators
• Nondispersive (standard)• Dispersive (high resolution)
– Nested, in-line
• Spherical grating (low energy)
synApps overview
Miscellaneous
• Slit• Sample Wheel• 4-step measurement
synApps overview
String Expressions
• Extends CALC record to combine string and numeric expressions
• Useful for run-time programming of serial devices
• EPICS links are programmable at run time
synApps overview
Scans
• Multidimensional• 4 positioners, 4 detector
triggers, 70 signals• saveData client writes to
NFS disk• Can acquire arrays (e.g.,
MCA spectra)• ~300 Hz on MV162• Start/end, table, on-the-fly• Also for 1-dimensional
automated alignment
synApps overview
Clients
• MCA display (IDL program)
• scanSee (IDL program for 1D, 2D, 3D data)
• Plot.py (Python demonstration)
• PVMail (send email when PV value violates boundary)
• Misc. experiment-specific user interfaces in tcl/tk, python/tk, Igor, IDL, java
• Channel Archiver• BackUp/Restore Tool• StripTool (strip chart)• …
synApps overview
Autosave/restore
• Saves PV values (e.g., motor positions, scan config) through reboot
• Defends against crash during save operation
• Typically 80 values saved every 5 s, 3000 values every 30 s
• Include files• Macro substitution• Dated backups• Choose save/restore
directories• Request-file path
– Can put request files in same directory as database files
synApps overview
CCD support
• CA server on CCD’s native platform
• Calls vendor-supplied software
• Stores images to local disk (HDF format)
• Some simple image analysis
• Hosts EPICS PV’s for control
String calculations• Operators >? and <? (max, min)
– Example: A<?B
• Variable # of args for MAX, MIN functions– Example: MAX(A,B,C,MIN(D,E))
• Much faster that previous versions– Numeric op’s are 1-4 s (~10%) slower than
calcPerform (on MV162)– (compare to ~4 s added for isnan/isinf check)
• No memory fragmentation
Recent progress
Save_restore request-file path
• Can put standard request files with databases– Database developer writes default request file
– Easy version control
• Can override a standard request file with a local copy (at any include level)
Recent progress
Conversion to 3.14
• In progress, collaborators:– Mark Rivers (CARS-CAT)– Jens Eden (BESSY)– Kate Feng (NSLS)– Till Straumann (SLAC)
• Most of synApps compiles at least, some has been tested, some is even OSI
Recent progress
Python tools• We use caPython
– Geoff Savage (FNAL)
• mcaDisplay.py mcaPeakFit.py– Mark Rivers (CARS)
• plot.py
Recent progress
For more information:
www.aps.anl.gov/xfd/bcda
cars.uchicago.edu/gsecars/index.html