Scan PVs¶
When using the DAQ, it is convenient to keep track of the state of the scan
in EPICS to set up nice run tables. This is implemented as the ScanVars
class.
In this document I will use “scan vars” and “scan pvs” interchangably.
Usage¶
Once instantiated, you can use ScanVars.enable and
ScanVars.disable to control whether or not we will update the PVs
during a scan.
The class is instantiated as
scan_vars = ScanVars('XPP:SCAN', name='scan_vars', RE=RE),
replacing XPP with the correct hutch.
PVs¶
PV Suffix |
Function |
ISTEP |
Current scan step, 0-indexed by default |
ISSCAN |
1 if we are doing a scan, 0 otherwise |
SCANVAR0{0,1,2} |
The name of our {1st, 2nd, 3rd} positioner |
MAX0{0,1,2} |
The max scan position of each positioner |
MIN0{0,1,2} |
The min scan position of each positioner |
NSTEPS |
The total number of steps in the scan |
NSHOTS |
Number of events per point in the DAQ |
API¶
The ScanVars class is an ophyd Device with special RunEngine
subscription mechanisms for updating the scan PVs. It reads plan metadata
and daq configuration to update the PVs.
-
class
pcdsdaq.scan_vars.ScanVars(prefix, *, name, RE, i_start=0, **kwargs)¶ Collection of PVs to keep track of the scan state.
Use
enableto set up automatic updating of these PVs during aRunEnginescan. This relies on proper metadata like the metadata in the built inscanandcountplans to populate the PVS.Use
disableto remove this from theRunEngine.- Parameters
prefix (
str) – The PV prefix, e.g.XPP:SCANname (
str, required keyword) – A name to refer to this object byRE (
RunEngine, required keyword) – TheRunEngineinstance associated with the session.i_start (
int, optional) – The starting count for the i_step tracker. This defaults to zero, which is offset by one from the one-indexed bluesky counter.
-
enable()¶ Enable automatic updating of PVs during a scan.
-
disable()¶ Disable automatic updating of PVs during a scan.
-
start(doc)¶ Initialize the scan variables at the start of a run.
This inspects the metadata dictionary and will set reasonable values if this metadata dictionary is well-formed as in
blueskybuilt-ins likescan. It also inspects the daq object.
-
event(doc)¶ Update the step counter at each scan step.
This actually sets the step counter for the next scan step, because this runs immediately after a scan step and recieves an event doc from the step that just ran.
-
stop(doc)¶ Set all fields to their default values at the end of a run.
These are all 0 for the numeric fields and empty strings for the string fields.