Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  <20042005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  <20042005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017 
<== Date ==> <== Thread ==>

Subject: Re: list of *all* EPICS records -- summary (long)
From: Tim Mooney <>
To: "''" <>
Date: Mon, 18 Oct 2004 16:59:41 -0500
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]

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_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.

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.

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.

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)

?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

[ANL]           Argonne National Lab.; APS Accelerator Controls

[ANL/ECT]       Argonne National Lab.; Electronics and Computing Technologies
                (Division no longer exists)

[synApps]       APS Beamline Controls

[SLAC]          Stanford Linear Accelerator

[OSL]           Observatory Scoences, Ltd.

[JLAB]          Jefferson Lab.

[Keck]          Keck Observatory

[LANL]          Los Alamos National Lab.

[JACH]          Joint Astronomy Centre

[Bates]         MIT Bates Linear Accelerator Center

[KEK] KEK, National Laboratory for High Energy Physics, Japan

[CFHT]          Canada-France-Hawaii Telescope

[IPNS]          Argonne National Lab.; Intense Pulsed Neutron Source

[SLS]           Swiss Light Source at the Paul Scherrer Institute

[SPEAR]         Spear at SLAC

[ORNL]          Oak Ridge National Lab.; Spallation Neutron Source

[BESSY]         BESSY (Berlin synchrotron facility)

[Duke]          Duke Free Electron Laser

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

	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
	sub, mosub, genSub, tsub, bigGenSub, ornlSub, sSub
	permissive, busy, runcontrol
	mbbi, mbbo
Records implementing notions from digital electronics

	fanout, dfanout, sel, status, wfselector, seq, sseq, calc, calcout,
	sCalcout, transform
	permissive, busy, runcontrol
	flip-flop, logic gate, ALU, etc.
	calc, calcout, transform, sCalcout, wait, swait
	programmable logic

Records to connect with a named port, device, or service

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 (; 630-252-5417)
Advanced Photon Source
APS Operations Division
Beamline Controls & Data Acquisition Group

Re: list of *all* EPICS records -- summary (long) Noboru Yamamoto
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  <20042005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017 
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  <20042005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·