Experimental Physics and
| |||||||||||||||
|
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]
[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
| ||||||||||||||
ANJ, 10 Aug 2010 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |