Difference between revisions of "EPICS for Dummies"
Jump to navigation
Jump to search
Line 35: | Line 35: | ||
* A controllable or informative property of a record | * A controllable or informative property of a record | ||
* Noteworthy fields: | * Noteworthy fields: | ||
**'''VAL''' - the default field (used if no field is specified | **'''VAL''' - the default field (used if no field is specified in the vast majority of cases) | ||
**'''SCAN''' - determines when a record processes | **'''SCAN''' - determines when a record processes | ||
**'''NAME''' - the record name (helpful if records are aliased) | **'''NAME''' - the record name (helpful if records are aliased) | ||
Line 41: | Line 41: | ||
**'''RTYP''' - the record type | **'''RTYP''' - the record type | ||
**'''DTYP''' - the device support type (not meaningful for all record types) | **'''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) | **'''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 | **'''DISV/DISA/SDIS''' - disable record processing internally | ||
***Record processing is disabled when '''DISA''' equals '''DISV''' | ***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 | ***'''DISA''' is set to the value of the PV in the '''SDIS''' field, if it isn't empty | ||
**'''TPRO''' - trace processing | **'''TPRO''' - trace processing: used only for troubleshooting to print out all the records that get processed after the record is processed when '''TPRO''' is set to 1 | ||
== More about records == | == More about records == |
Revision as of 16:59, 10 February 2023
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 Variables) 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: used only for troubleshooting to print out all the records that get processed after the record is processed when TPRO is set to 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.