EPICS for Dummies

From Beam Line Controls
Revision as of 17:19, 10 February 2023 by Rodolakis (talk | contribs)
Jump to navigation Jump to search



What is EPICS?

EPICS (Experimental Physics and Industrial Control System) is a distributed control system, which means that the IOC (software) can run on a different computer as the user interfaces.

What is an IOC?

IOC (Input/Output Controller) is a piece of software running on a computer:

  • serves something called process variables (PVs) that you can read and write to
  • used to run on VMEs, but nowadays it runs on anything.
  • usually talks to hardware, but that isn’t a requirement.


What is a PV?

PV (Process Variable) is a the field from a record:

PV = record_name + . + field_name

Most of the interactive parts of user displays have PVs associated with them.

What is a record?

Records are the building blocks of EPICS

  • There is a lot of different types of record, and each type is designed to perform a specific function
  • Records are customizable via fields that allow users to configure how they behave and monitor their state.
  • Records vary significantly in complexity (see #More about records)


What is a record field?

  • A controllable or informative property of a record
  • Noteworthy fields:
    • VAL - the default field (used if no field is specified in the vast majority of cases)
    • SCAN - determines when a record processes
    • NAME - the record name (helpful if records are aliased)
    • DESC - record description
    • RTYP - the record type
    • DTYP - the device support type (not meaningful for all record types)
    • DISP - disable puts (ca = channel access & pva = pv access) from outside the IOC (when non-zero); e.g. disable a motor from the motorx_all screen
    • DISV/DISA/SDIS - disable record processing internally
      • Record processing is disabled when DISA equals DISV (e.g. uses SDIS field to read in a value/mode, which will disable some control if a certain mode is active)
      • DISA is set to the value of the PV in the SDIS field, if it isn't empty
    • TPRO - trace processing: when set to 1 prints out all the records that get processed after the record is processed; used only for troubleshooting
  • Note: some of the fields of a record are actually record attributes (they return the same value for all instances of the record type [1])



More about records

  • Records vary significantly in complexity; one way to classify them would be (*):
    • Simple records are associated with individual data types
    bi, bo, mbbi, mbbo, longin, longout, ai, ao, stringin, stringout, waveform
    • Intermediate records often perform calculations or link multiple records
    calcout, scalcout, acalcout, swait, transform, fanout, dfanout
    • Complex records are associated with devices or higher-level functionality
    motor, scaler, mca, sscan, table, digitel, vs
    • Flexible records allow custom functionality to be implemented
    sub, aSub, luascript

(*) this is not an official classification, nor an exhaustive list of records.

Note that:

  • It is rare for new records to be created, now that asyn device support exists. add link to asyn?
  • areaDetector databases are composed of mostly simple record.



External links

  • Help formatting: [2]