Difference between revisions of "EPICS for Dummies"
Line 77: | Line 77: | ||
| mca || mca || vme || vme | | mca || mca || vme || vme | ||
|- | |- | ||
| allenBradley || ab1771IFE, ab1771N, ab1771IX,...|| allenBradley || ...,ab1791, abDcm | | allenBradley || ab1771IFE, ab1771N, ab1771IX, ...|| allenBradley || ..., ab1791, abDcm | ||
|} | |} | ||
Line 96: | Line 96: | ||
https://github.com/epics-modules | https://github.com/epics-modules | ||
/APSshare/epics/synApps_X_Y/support | /APSshare/epics/synApps_X_Y/support | ||
== More about records == | == More about records == |
Revision as of 17:41, 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 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; see https://epics.anl.gov/)
How to learn more about record fields?
To find documentation for a specific field you need to know/find answers to the following questions:
- Is the field common to all or input/output record types?
- If not, does the record come from EPICS base or a different EPICS module (synApps)?
Many of the records that are used at beamlines come from synApps modules:
Module | Records | Module | Records |
---|---|---|---|
alive | alive | motor | motor |
asyn | asyn | optics | table |
busy | busy | scaler | scaler |
calc | acalcout, scalcout, sseq, swait, transform | sscan | sscan |
camac | camac | std | epid, timestamp, throttle |
lua | luascript | vac | digitel, vs |
mca | mca | vme | vme |
allenBradley | ab1771IFE, ab1771N, ab1771IX, ... | allenBradley | ..., ab1791, abDcm |
If record isn't listed here, it probably comes from EPICS base.
synApps is just a collection of EPICS modules that are commonly used at the APS.
The advantage to using synApps over a collection of modules one assembles on their own is that some amount of BCDA testing has been done.
The EPICS base record reference documentation is the best place to find information about record types that come from EPICS base; Field documentation appears in multiple locations
- Fields common to all record types
- Fields common to input record types
- Fields common to output record types
- Record-specific documentation
synApps record reference documentation In each module's documentation directory https://github.com/epics-modules /APSshare/epics/synApps_X_Y/support
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.