Skip to content
Adrian Potter edited this page May 6, 2016 · 10 revisions

Run control is implemented purely in EPICS.�� A DB file support/RunControl/runcontrol.db can be loaded into any IOC and given the name of each PV that needs this feature. It defines a few PVs for this:

$(PV):RC:LOW
$(PV):RC:HIGH
$(PV):RC:ENABLE
$(PV):RC:INRANGE

When a values is out of range, it will push this information into variables managed by INSTETC which will ultimately pause/resume data collection. Feedback can be obtained via:

$(P):CS:RC:OUT:CNT      number of items out of range
$(P):CS:RC:OUT:LIST     names of PVs out of range (space separated in char waveform)

CA monitors can be posted on either CNT or LIST, CNT is guaranteed to see all transitions, LIST will be up to date but may not see all transitions

(LIST is actually a ��set�� which can be added to/removed from via PV�s;�� it is called generically via aSub records so provides a general mechanism for keeping a more readable list of things if we need it).

Run testRunControl from iocBoot for an example.� You need to start INSTETC first if you wish to use the above CS variables.

To do run control on SECI blocks a separate IOC ioc/RUNCTRL will be used. This will need to be restarted by the blockserver as appropriate and the blockserver will also need to (re)write a startup file for it containing lines like:

dbLoadRecords("$(RUNCONTROL)/db/runcontrol.db","P=$(MYPVPREFIX),PV=$(MYPVPREFIX)TEST2")
Clone this wiki locally