Experimental Physics and Industrial Control System
Dear folks,
Here's a summary of replies to my recent request for EPICS-record
information, with my thanks to all who've contributed so far.
One purpose of this exercise is to construct a sort of cross-reference
between EPICS records and the notions new EPICS developers might bring with
them from previous experience. As many of you know, it takes quite a
long time, and quite a lot of effort, to discover some of the hidden
capabilities of EPICS records -- who would guess from the name, for example,
that the 'seq' record can function as a data multiplexer, a data demultiplexer,
a lookup table, a programmable pulse generator, and a fanout? And how would
a new developer guess that they should use an mbbo record to put a custom menu
on a display screen?
So, appended to the list is my first shot at that cross reference of records
and capabilities. I'd be grateful for any corrections, additions, or other
improvements to the list or to the web references.
===========================================================================
EPICS records with brief descriptions and names of the organization that
developed or uses/used the record (or [BASE], if the record is/was in EPICS
base). Some guesswork was involved in compiling this list. Not all of these
records are currently maintained.
aai array analog input [BASE]
aao array analog output [BASE]
ai analog input [BASE]
ao analog output [BASE]
bi binary input [BASE]
bo binary output [BASE]
calc calculation [BASE]
calcout calculation and conditional output [BASE]
compress compress [BASE]
dfanout data fanout [BASE]
eg event-generator (custom hardware) [BASE]
egevent event-generator (custom hardware) event [BASE]
er event-receiver (custom hardware) [BASE]
erevent event-receiver (custom hardware) event [BASE]
event event [BASE]
fanout sequence of forward links [BASE]
histogram bin a series of PV values into an array [BASE]
longin integer input [BASE]
longout integer output [BASE]
mbbiDirect multi-bit binary input variant [BASE]
mbbi multi-bit binary input [BASE]
mbboDirect multi-bit binary output variant [BASE]
mbbo multi-bit binary output [BASE]
permissive for communicating state information [i.e., for handshaking]
between a server and a channel-access client [BASE]
sel select a value based on criteria [BASE]
seq sequence of reads/delays/writes [BASE]
state place for a state program [SNL program] to write a string that
a channel-access client can read [BASE]
stringin string input [BASE]
stringout string output [BASE]
subArray get part of an array [BASE]
sub subroutine [BASE]
waveform array [BASE]
--------------------------------------------------------------------------------
asyn Generic interface to asyn port [ANL]
scaler Control a bank of counters [synApps]
sseq string sequence (cf. seq record) - Execute a sequence of EPICS
writes to a set of EPICS PVs; optionally, wait for completion
after write. [synApps]
epid Enhanced PID record [synApps]
timestamp Timestamp record, exports its timestamp as a string [SLAC]
genSub Multi-I/O subroutine, handles arrays [OSL]
transform Like 'calcout', but supports 16 sets of (inlink, expression,
value, outlink), named *A -- *P, executed in order.
Expressions can use the results of any previously evaluated
expression in the record. [synApps]
swait mostly superceded by calcout record Evaluate a numeric
expression; write the result to an EPICS PV; optionally wait
for completion. [synApps]
sCalcout string-calc-output (cf. calcout record) [synApps]
busy database interface to putNotify() - make a complex device
useable by ca_put_callback() [synApps]
scanparm scan parameters for sscan record [synApps]
sscan Programmatically set conditions and acquire data (cf. scan
record) [synApps]
table Control a six-degree-of-freedom optical table [synApps]
mca Supports multichannel analyzers [synApps]
gpib Probes GPIB [synApps]
motor Replacement for steppermotor record - also supports servo
motors; different device and driver support; user/dial
coordinates; backlash takeout; encoders [synApps]
dxp XIA dxp custom [synApps]
vme Probes VMEbus [synApps]
camac Probes CAMAC [synApps]
abDcm Allen Bradley [ANL]
ab1771IX Allen Bradley [ANL]
ab1771IFE Allen Bradley [ANL]
ab1771N Allen Bradley [ANL]
ab1791 Allen Bradley [ANL]
cad Implements Gemini Command/Action Layer between IOC's [OSL]
car
sir
apply
hiv Access LeCroy or CAEN HV mainframes [JLAB]
interp General-purpose interpolation [KECK]
pal Emulates PAL-type IC [LANL]
serial Probes Serial [synApps]
pulseCounter Control hardware that counts pulses [ANL]
pulseDelay Control hardware that generates a triggered pulse [ANL]
pulseTrain generate a pulse train, or control hardware that does this [ANL]
timer Configure timing outputs of a pulse generator [ANL]
spectrum spectrum-analyzer - Calculate the one-dimensional FFT of a
waveform. [ANL/LANL]
waveAnl waveform analysis - Compute simple statistics on a region of
interest. [ANL/LANL]
digitel For Digitel 500/1500 and new MPC vacuum controllers [ANL]
gp307 Vacuum gauge from Granville Philips [ANL]
vacScan Spectra VacScan RGA (MKS - pretty much obsolete) [ANL]
satRga Spectra Satallite RGA (now MKS) - Superset of vacScan. [ANL]
archive store the values of a PV for use by an EPICS archiving client
[?]
wait early version of calcout [ANL]
cpid CEBAF PID record [JLAB]
lseq long seq (16 outputs instead of 10) [JACH]
ps For Bates integrated BitBus power supply controller. 1 DAC, 3
ADCs, DC control, interlock status/reset, ramping, cycling,
many alarms. Set/read in Amps, kG, MeV for calibrated magnets
[Bates]
bates_bpm High-level control and processing for BPMs using Bates
flash-ADC board. Supports multiple sampling modes, trigger
delay, sample window width, two layers of sample averaging, RMS
and standard deviation, alarms, reference and delta values.
Heavily integrated with driver/device support. [Bates]
beamLife calculates storage ring beam lifetime [KEK]
strInMon just like a stringin, but produce a monitor every time a new
string is received, EVEN IF IT IS THE SAME as the previous
string. Greatly simplifies monitor driven control of string
input systems. There's no need to write NULL's back into
records so you will receive the next input (which create
monitors themselves, that you have to handle!) [CFHT]
bigGenSub based on gensub with the following differences:
47 inputs
26 outputs
the user definable subroutines for initialization of data
size for each input and output have been eliminated [CFHT]
aiTrip Standard records with two additional fields: TLNK and TREN.
biTrip TLNK is a link that gets processed if a MAJOR severity condition
mbbiTrip is reached. TREN is an enable/disable field for this link.
(etc.) Used at IPNS for software level trips to shut the beam off.
[IPNS]
joinArray the opposite of a subArrayRecord. [SLS]
? support for the ECDR-814 digital receiver board [SPEAR]
ornlAo AO for custom knob box: contains a percent field; knob gain
field; saved value field; two fields to manage assignment to a
knob; two scan rate fields - when assigned, SCAN is set to the
fast rate; when deassigned, SCAN is set to the slow rate [ORNL]
ornlAi* AI for assignment to meters: percent field; two assignment
fields; two scan rate fields [ORNL]
mbbi32Direct 32-bit version of mbbiDirect [ORNL]
mbbo32Direct 32-bit version of mbboDirect [ORNL]
ornlSub A modified sub record that adds a void pointer that may hold a
structure allocated at init. The subroutine uses this to keep
track of state info. [ORNL]
rt ramptable. Used to generate the ramps for the booster ramped
power supplies. Works in conjunction with custom hardware.
[ANL]
runcontrol a process that runs somewhere can register itself through this
record, and for instance you could use it to avoid starting the
same process twice in different machines. [ANL]
beamh beam history Module Control [ANL]
beamhchan beam history Module channel [ANL]
bpm BPM with averaging, position calculations, and some user-
interface controls [ANL]
cm originally written to support the (custom) AT5 Diagnostic
module, now a soft record - combination of calc with
current-monitor trigger controls [ANL]
datalog for logging data arrays [ANL]
ddlypulse digital-delay pulse generator control [ANL]
ddlypulsevme digital-delay pulse generator control [ANL]
fbuffer buffer record for floats [ANL]
image Intended to transfer a digitized image [i.e., 2D array of 1- or
2-byte integers] over channel access. [ANL]
iq ai variant with hardware specific fields [ANL]
memscan Memory Scanner Module Control [ANL]
msbpm monitored BPM with averaging [ANL]
msbpmX monitored BPM with averaging [ANL]
rf ai variant with hardware specific fields [ANL]
sddsLaunch ControlLaw Launch Record - used to start sdds epics tasks in the
ioc [ANL]
tsub transform subroutine - a 'subroutine' record with lots of
inputs and outputs [ANL/ECT]
status like 'longin' with forward links for each bit [ANL/ECT]
swf scaled waveform record - same as waveform but with raw offset
and vertical scale factor and offset. Used in reading scopes.
[BESSY]
wftime waveform with both time and Y, assumes both are double, for
input waveforms only. PREC, EGU, HOPR, LOPR provided for both
time and Y. ESLO and EOFF provided for Y. NORD monitor goes
off when changed (unlike waveform which I think is a bug). Used
in reading time/value arrays from Keithley DVMs. [SLAC/SPEAR]
sSub special subroutine, same as sub except with 26 inputs (A to Z)
[SLAC/SPEAR]
?monsterVXI? One custom record per six custom RF VXI modules which are
loaded with features and have very large address maps plus DSP
interfaces - each record can be thought of as a combination of
many ai/ao/bi/bo/sub/seq/waveform records where the bulk of the
processing is done in device support. These records are
monsters but I think new people assigned to maintain them come
up to speed more quickly - it's easier to match the hardware
documentation and address maps with the software. [SLAC/SPEAR]
mosub multiple-output sub (precursor to genSub) [OSL]
watchDog [KEK]
vxSymbol based on vmeReocrd. Can be replaced by symb lib. [KEK]
bpmKek based on BPM record from JLAB [KEK]
aConcat Join the several waveform into one. [KEK]
aRaw pick up every N element from waveform. [KEK]
findPeak find a peak in waveform, based on a compress record. [KEK]
BeamLife calculate a decay life time. [KEK]
LongMbbiDirect Multi-bit binary reocrd for LONG(32bits) data. [KEK]
waveout output waveform to a device. [KEK]
wfselector [KEK]
?encoder? custom encoder [Keck]
?servo? servo [Keck]
?trajectory? trajectory control [Keck]
?command? command shaper [Keck]
bpt Breakpoint table lookup record (like what is used in ai, but
uses double rather then int for raw value). [Duke]
nmr Hardware specific record for interface to NMR probes used for
measuring magnet field. [Duke]
-------------------------------------------------------------------------------
Links to entities named above:
[BASE] EPICS base
http://www.aps.anl.gov/epics
[ANL] Argonne National Lab.; APS Accelerator Controls
http://www.aps.anl.gov/epics
[ANL/ECT] Argonne National Lab.; Electronics and Computing Technologies
(Division no longer exists)
[synApps] APS Beamline Controls
http://www.aps.anl.gov/aod/bcda/synApps
[SLAC] Stanford Linear Accelerator
http://www.slac.stanford.edu/comp/unix/package/epics
[OSL] Observatory Scoences, Ltd.
http://www.observatorysciences.co.uk/epics.htm
[JLAB] Jefferson Lab.
http://www.jlab.org/accel/controls/controls.html
[Keck] Keck Observatory
http://www2.keck.hawaii.edu:3636/realpublic/epics/
[LANL] Los Alamos National Lab.
http://lansce.lanl.gov/lansce8/Epics/epics.htm
[JACH] Joint Astronomy Centre
http://www.jach.hawaii.edu/JACpublic/UKIRT/software/epics/
[Bates] MIT Bates Linear Accelerator Center
http://mitbates.mit.edu/
[KEK] KEK, National Laboratory for High Energy Physics, Japan
http://www-acc.kek.jp/WWW-ACC-exp/KEKB/control/KEKB-Control-home.html
[CFHT] Canada-France-Hawaii Telescope
http://cfht.hawaii.edu/
[IPNS] Argonne National Lab.; Intense Pulsed Neutron Source
http://www.pns.anl.gov/computing/
[SLS] Swiss Light Source at the Paul Scherrer Institute
http://www.sls.psi.ch/controls/
[SPEAR] Spear at SLAC
http://www.slac.stanford.edu/~spear/epics/
[ORNL] Oak Ridge National Lab.; Spallation Neutron Source
http://ics-web1.sns.ornl.gov/
[BESSY] BESSY (Berlin synchrotron facility)
http://www-csr.bessy.de/control
[Duke] Duke Free Electron Laser
http://www.fel.duke.edu/epics/
-------------------------------------------------------------------------------
CROSS REFERENCE: record capabilities and common notions from software
and electronic engineering.
Records implementing notions from existing programming languages
================================================================
scalar data type or simple structure
------------------------------------
ai, ao, bi, bo, longin, longout, timestamp, vxSymbol,
ornlAi, ornlAo, aiTrip, biTrip
bit map
-------
mbbi, mbbiDirect, mbbi32Direct, LongMbbiDirect, mbbo, mbbo32Direct,
status, mbbiTrip, seq, sseq, lseq
array data type
---------------
aai, aao, histogram, state, stringin, stringout, strInMon, subArray,
waveform, mca, joinArray, fbuffer, image, wtfime, aConcat, waveout,
swf, wftime, datalog
array index
-----------
sel, seq, lseq, sCalcout, transform
event - software interrupt, exception
-------------------------------------
eg, egevent, er, erevent, event, aiTrip, biTrip, mbbiTrip, watchDog,
wait, swait, strInMon
algebraic/logical expression
----------------------------
calc, calcout, transform, sCalcout, wait, swait
string expression
-----------------
sCalcout
control structure (e.g., loop, if-then)
---------------------------------------
fanout, dfanout, seq, sseq, transform, lseq, scan, sscan, calcout, swait
fixed algorithm
---------------
ai, ao, compress, histogram, pid, epid, cpid, table, interp, spectrum,
waveAnl, aRaw, findPeak, beamLife, ai, ao , bpt
subroutine
----------
sub, mosub, genSub, tsub, bigGenSub, ornlSub, sSub
semaphore
---------
permissive, busy, runcontrol
menu
----
mbbi, mbbo
Records implementing notions from digital electronics
=====================================================
multiplexer/demultiplexer
-------------------------
fanout, dfanout, sel, status, wfselector, seq, sseq, calc, calcout,
sCalcout, transform
handshake
---------
permissive, busy, runcontrol
flip-flop, logic gate, ALU, etc.
--------------------------------
calc, calcout, transform, sCalcout, wait, swait
programmable logic
------------------
pal
Records to connect with a named port, device, or service
========================================================
asyn
Records specific to a hardware bus
==================================
gpib, serial, vme, camac
Records specific to a hardware class
====================================
scaler, table, mca, motor, hiv, pulseCounter, pulseDelay, pulseTrain,
timer, steppermotor, ddlypulse, swf, wftime, servo, trajectory
Records specific to a particular piece or collection of hardware
================================================================
er, erevent, eg, egevent, dxp, ab*, digitel, gp307, vacScan, satRGA,
ps, bates_bpm, rt, beamh, beamhchan, bpm, cm, ddlypulsevme, iq,
memscan, msbpm, rf, monsterVXI, bpmKek, nmr
--
Tim Mooney ([email protected]; 630-252-5417)
Advanced Photon Source
APS Operations Division
Beamline Controls & Data Acquisition Group
- Replies:
- Re: list of *all* EPICS records -- summary (long) Noboru Yamamoto
- References:
- RE: list of *all* EPICS records Allison, Stephanie
- Navigate by Date:
- Prev:
RE: list of *all* EPICS records Andy Foster
- Next:
Re: list of *all* EPICS records -- summary (long) Noboru Yamamoto
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
<2004>
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: list of *all* EPICS records Till Straumann
- Next:
Re: list of *all* EPICS records -- summary (long) Noboru Yamamoto
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
<2004>
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024