Table of Contents Previous Chapter Chapter 29: scan

Chapter 29: scan

Advanced Photon Source
Argonne National Laboratory

1. Introduction

The basic function of a scan record is to move "positioners" through a series of steps and record "detector" data at each of the positions (the whole sequence is referred to as a "scan"). Once the scan parameters are properly initialized, the scan record coordinates the entire scan and notifies any interested "clients" when the scan is complete. The data is stored in arrays within the record rather than collected point by point by an external application program. This allows for much faster scans than those coordinated from an external application program on a point to point basis.

A single scan record supports a one dimensional scan. It is also possible to link scan records together to define multi-dimensional scans in a quite complex configuration.

Each scan record can control up to four "positioners" and acquire data from up to four process variables (typically detector data or measured positions of devices) during a scan. Two additional output variables can be defined to trigger other process variables (usually "detectors") between the positioning phase and the data acquisition phase. These outputs will be referred to as "detector triggers".

Although the typical use of a scan record is to move "positioners" and record "detector" data at each position, it can also be used for other applications. Any controllable device can be scanned through incremental values while recording data from any other process variables. For example, one of the "positioner" PVs could be used to vary the gain of a detector or the speed of a motor during a scan. Another example would be to use the scan record to vary several power supplies and record the beam position at each value of the supplies. In this context, the scan record becomes a general purpose "Vary w, x, y, z and record a, b, c, d" record. Therefore, throughout this document the word "positioner" and "controller" will be used synonymously. When referring to the data being recorded at each point, the word "detector" will be used.

All of the process variable names used to identify controllers, detectors, and detector triggers are specified using "reassignable links". This allows a scan to be configured on the fly. Scan parameters, including the names of controllers and detectors, can be saved and restored using the BURT.

NOTE: In this version, the PVs used in the "reassignable links" fields must reside in the same IOC.

A Simple Single Dimensional Scan

The simplest database configuration for using a scan record is shown in Figure 1. A thorough understanding of the operation of this configuration will allow more complex scans to be developed easily.

In Figure 1, when the scan is initiated, the scan record commands several positioners (transform record and motor record) to move to their starting positions. The WAIT_1 record detects when all movement is complete and forces the SCAN record to process again. The SCAN record realizes that the positioning is complete and thus triggers the Detectors. The WAIT_2 record detects when data is valid and forces the SCAN record to process yet again. The SCAN record will then read the Detector Data and command the positioners to their next step. This will continue until the SCAN record has completed the appropriate number of steps. At the end of the scan, the SCAN record contains data arrays for each of the "detectors", as well as arrays that contain the positions to which each controller was commanded at each point. A simple x-y plot using this data will provide the detector data vs. position results.

Figure 1: Typical Database Support for a SCAN

Figure 2: A Two Dimensional Scan Implementation

Two Dimensional Scanning

Figure 2 illustrates using two scan records to accomplish a two dimensional scan. The SCAN_X record controls the positioners for the X axis, the SCAN_Y record controls the Y positioner.

To initiate a scan, the SCAN_Y record is commanded to begin. It commands its "positioners" to the specified starting point. The WAIT_1 record detects when all motors are stopped and forces the SCAN_Y record to process again. The SCAN_Y record will now write to its "Detector Trigger", which in this case begins a scan of the SCAN_X record. The SCAN_X record will now go through its entire programmed scan, acquiring data from the detectors at each point.

When the SCAN_X record is complete, the WAIT_4 record will force the processing of SCAN_Y, which will increment the position of the y-controller and initiate the x scan once again.

This approach to configuring a two dimensional scan is very flexible. Note that to "test" the x scan, one could write to the "BeginScan" field of SCAN_X which would perform an entire x scan. Although the SCAN_Y record would get processed after the x scan was complete (via the WAIT_4 record), nothing would happen because it was not in the middle of a scan. In addition, any of the motors can be moved individually when a scan is not in process without any unexpected behavior (detectors would not be triggered unless the operator did it deliberately). One could even build a three dimensional scan by adding an additional scan record that initiates the y-scan after positioning a z-controller.

Defining a Scan

Several options are available to control the execution of a scan. All parameters must be properly configured prior to initiating the scan. This section describes the options that are available while the next section itemizes all the parameters required.

Positioners

Each scan record may control up to four "positioners" that are commanded to a new "desired position" prior to collecting data at each point. The positioners are defined by typing in an ASCII string that represents the process variable name of the controller.

There are three modes for determining the desired value for the positioner. If a positioner is specified as "linear", its desired value is determined by using parameters such as start_position, step_increment, number_of_steps, and end_position. This mode will be discussed in more detail in the next paragraph. If a positioner is specified as "lookup", its next position is found in an array that has been loaded into the record prior to initiating a scan. If the positioner is specified as "on-the-fly", it is commanded to the end_position after the first data point is collected and not changed again for the duration of the scan.

A linear scan involving a single positioner is fully defined by three parameters, e.g., the start position, the step size, and the number of data points. A scan involving N controllers is defined by merely 2N+1 parameters, since the number of data points must be the same for all controllers. For the convenience of interactive users, and to support channel-access clients that define scans differently, the scan record provides for six redundant scan-definition parameters (for the first controller only): START, END, CENTER, WIDTH, STEP, and NPTS. The record calculates values for unspecified parameters so that the set is always self consistent, and it imposes an upper limit (MAXPTS) on NPTS. WIDTH may be negative.

There is no unique prescription for removing inconsistencies among redundant parameters, and no hardcoded set of preferences among parameters is likely to please everyone. Therefore, the scan record allows the user to "freeze" parameters, so that they will not be changed in the record's internal attempts to ensure self-consistency of the parameter set. Frozen parameters can be changed by the user and by any other client. It is the user's responsibility to ensure that frozen parameters do not prevent freely specifying unfrozen parameters. For example, if both STEP and NPTS are frozen, changes to WIDTH will be rejected. Similarly, if both START and CENTER are frozen, changes to END and WIDTH will have no effect. By default, START, STEP, and NPTS are frozen. When the record cannot adjust the parameters to be consistent, a flag is raised (ALRT) and a message reported (SMSG).

Although this approach may seem to present the user with an overwhelming number of choices, it should be noted that "by default" the user only has to enter START, STEP, and NPTS to fully define the scan of a controller. The "user interface" (usually medm or another CA client) need only present the user with these fields. However, by changing the "freeze flags" from the default and presenting the user with different fields to fill in, the scan can be defined in a completely flexible way. The result is that a simple scan can be defined easily, but advanced users are not limited in flexibility.

For those controllers defined as "linear", each desired position is placed in the "desired position" array that is used for lookup mode. Therefore, after the scan is complete, this array will always contain the sequence of desired positions to which the controller was commanded. These values will have been provided by the user for "lookup" mode and calculated by the scan record for "linear" mode. This array will contain no useful data if "on-the-fly" mode was used.

Position Verification Readback Process Variable and Delta

For each positioner, the user may specify a process variable that corresponds to the actual (or measured) position of the motor. If this readback field is configured, the scan record will confirm after each movement that the actual position is within a specified delta to the desired position. If the delta is exceeded, the scan will abort and the record will go into an alarm state. A text field within the record (SMSG) will inform the operator of the error condition.

Detector Trigger Process Variables and Desired Command

If valid process variable names are entered into the "Detector Trigger" fields, the scan record will write the specified "Desired Command" (a floating point number) to that process variable between the positioning phase and the data acquisition phase.

If neither Detector Trigger contains a valid PV, the scan record will skip this step and acquire the data immediately. Note that specifying a "Detector Trigger" requires the scan record to be processed an additional time each point.

Data to be Acquired

Each scan record can acquire data from four process variables at each point in the scan. This data will most commonly be from a detector or from a position readback (which would record the actual motor positions at each point and could then be compared to the desired position array).

Reading SCAN Results

The scan results will most frequently be read as arrays of positions and arrays of detector data where each detector data element corresponds to the position element.

For single dimension scans, the scan is complete when the ExecuteScan flag is set back to zero by the record processing routine. The application program can then read the position arrays and the data arrays (or have a monitor set on them so the record will "post_monitors" when complete).

For two dimension scans similar to Figure 2, the application program should read the arrays from the SCAN_X record after the completion of each x scan and correlate it to the current y controller information. This will allow the application program to display data after each x scan. The scan record will buffer the data for only one x scan, so the application must read the arrays before the next x scan is completed. If the scan is fast enough that this may prevent a problem, the application program can contribute to the wait record algorithm such that the y -controllers are not moved until the application program has completely read the previous SCAN_X data.

On slow scans, the application program may want to see the scan is process on a point by point basis. Therefore, the scan record will "post_monitors" on fields that it updates each point, but it will not post monitors faster than 20 times per second. If a scan is proceeding at a rate less than 20 points per second, every point will be posted. If a scan is proceeding at 100 steps per second, scalar values will be posted every 5th point (approx). In either case, the array data will contain every point at the completion of the scan. It is not recommended that the application program use the point to point data except for keeping the operator aware of the progress of the scan.

Checking Scan Parameters Against Limits

Prior to beginning an actual scan, the record can be commanded to check the scan parameters to ensure that all positioner requests are within reasonable limits. The record will do a "dry run" by calculating every positioner value (or looking it up in the table) and comparing it with the "drive limits" associated with that positioner's Process Variable (drive limits are an attribute of most process variables). If any step would exceed the drive limits, the operator is notified via the SMSG field.

2. Configurable Parameters

A brief summary of the configurable parameters within a scan record is presented below. For a more detailed explanation, see Field Description section.

3. Field Summary

---------------------------------------------------------------
Field  Type         DCT  Initial  Access  Modify  Rec Proc   PP  
                                                  Monitor        
---------------------------------------------------------------
VERS   FLOAT        No   1.0      Yes     No      No         No  
VAL    DOUBLE       No   0        Yes     Yes     No         No  
SMSG   STRING       No   Null     Yes     Yes     Yes        No  
CMND   ENUM         No   0        Yes     Yes     Yes        No  
ALRT   UCHAR        No   0        Yes     No      Yes        No  
RPVT   NOACCESS     No   Null     No      No      No         No  
MPTS   SHORT        Yes  100      Yes     No      No         No  
EXSC   SHORT        No   0        Yes     Yes     Yes        No  
PXSC   UCHAR        No   0        Yes     No      No         No  
NPTS   SHORT        Yes  100      Yes     Yes     Yes        No  
FPTS   RECCHOICE    Yes  1        Yes     Yes     No         No  
CPT    SHORT        No   0        Yes     No      Yes*       No  
PCPT   SHORT        No   0        Yes     No      No         No  
TOLP   ULONG        No   0        Yes     No      No         No  
P1PV   STRING       Yes  Null     Yes     Yes     No         No  
P2PV   STRING       Yes  Null     Yes     Yes     No         No  
P3PV   STRING       Yes  Null     Yes     Yes     No         No  
P4PV   STRING       Yes  Null     Yes     Yes     No         No  
R1PV   STRING       Yes  Null     Yes     Yes     No         No  
R2PV   STRING       Yes  Null     Yes     Yes     No         No  
R3PV   STRING       Yes  Null     Yes     Yes     No         No  
R4PV   STRING       Yes  Null     Yes     Yes     No         No  
T1PV   STRING       Yes  Null     Yes     Yes     No         No  
T2PV   STRING       Yes  Null     Yes     Yes     No         No  
D1PV   STRING       Yes  Null     Yes     Yes     No         No  
D2PV   STRING       Yes  Null     Yes     Yes     No         No  
D3PV   STRING       Yes  Null     Yes     Yes     No         No  
D4PV   STRING       Yes  Null     Yes     Yes     No         No  
P1DB   NOACCESS     No   Null     No      No      No         No  
P2DB   NOACCESS     No   Null     No      No      No         No  
P3DB   NOACCESS     No   Null     No      No      No         No  
P4DB   NOACCESS     No   Null     No      No      No         No  
R1DB   NOACCESS     No   Null     No      No      No         No  
R2DB   NOACCESS     No   Null     No      No      No         No  
R3DB   NOACCESS     No   Null     No      No      No         No  
R4DB   NOACCESS     No   Null     No      No      No         No  
T1DB   NOACCESS     No   Null     No      No      No         No  
T2DB   NOACCESS     No   Null     No      No      No         No  
D1DB   NOACCESS     No   Null     No      No      No         No  
D2DB   NOACCESS     No   Null     No      No      No         No  
D3DB   NOACCESS     No   Null     No      No      No         No  
D4DB   NOACCESS     No   Null     No      No      No         No  
P1NV   LONG         No   0        Yes     Yes     Yes        No  
P2NV   LONG         No   0        Yes     Yes     Yes        No  
P3NV   LONG         No   0        Yes     Yes     Yes        No  
P4NV   LONG         No   0        Yes     Yes     Yes        No  
R1NV   LONG         No   0        Yes     Yes     Yes        No  
R2NV   LONG         No   0        Yes     Yes     Yes        No  
R3NV   LONG         No   0        Yes     Yes     Yes        No  
R4NV   LONG         No   0        Yes     Yes     Yes        No  
T1NV   LONG         No   0        Yes     Yes     Yes        No  
T2NV   LONG         No   0        Yes     Yes     Yes        No  
D1NV   LONG         No   0        Yes     Yes     Yes        No  
D2NV   LONG         No   0        Yes     Yes     Yes        No  
D3NV   LONG         No   0        Yes     Yes     Yes        No  
D4NV   LONG         No   0        Yes     Yes     Yes        No  
P1SM   RECCHOICE    Yes  0        Yes     Yes     No         No  
P1SP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P1FS   RECCHOICE    Yes  0        Yes     Yes     No         No  
P1SI   FLOAT        Yes  0        Yes     Yes     Yes        No  
P1FI   RECCHOICE    Yes  0        Yes     Yes     No         No  
P1CP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P1FC   RECCHOICE    Yes  0        Yes     Yes     No         No  
P1EP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P1FE   RECCHOICE    Yes  0        Yes     Yes     No         No  
P1WD   FLOAT        Yes  0        Yes     Yes     Yes        No  
P1FW   RECCHOICE    Yes  0        Yes     Yes     No         No  
P1DV   FLOAT        No   0        Yes     No      Yes*       No  
P1LV   FLOAT        No   0        Yes     No      No         No  
R1CV   FLOAT        No   0        Yes     No      Yes*       No  
R1LV   FLOAT        No   0        Yes     No      No         No  
R1DL   FLOAT        Yes  0        Yes     Yes     No         No  
P1EU   STRING       Yes  16       Yes     Yes     No         No  
P1HR   FLOAT        Yes  0        Yes     Yes     No         No  
P1LR   FLOAT        Yes  0        Yes     Yes     No         No  
P1PR   SHORT        Yes  0        Yes     Yes     No         No  
P1PA   FLOAT ARRAY  No   Null     Yes     Yes     Yes        No  
P2SM   RECCHOICE    Yes  0        Yes     Yes     No         No  
P2SP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P2FS   RECCHOICE    Yes  0        Yes     Yes     No         No  
P2SI   FLOAT        Yes  0        Yes     Yes     Yes        No  
P2FI   RECCHOICE    Yes  0        Yes     Yes     No         No  
P2CP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P2FC   RECCHOICE    Yes  0        Yes     Yes     No         No  
P2EP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P2FE   RECCHOICE    Yes  0        Yes     Yes     No         No  
P2WD   FLOAT        Yes  0        Yes     Yes     Yes        No  
P2FW   RECCHOICE    Yes  0        Yes     Yes     No         No  
P2DV   FLOAT        No   0        Yes     No      Yes*       No  
P2LV   FLOAT        No   0        Yes     No      No         No  
R2CV   FLOAT        No   0        Yes     No      Yes*       No  
R2LV   FLOAT        No   0        Yes     No      No         No  
R2DL   FLOAT        Yes  0        Yes     Yes     No         No  
P2EU   STRING       Yes  16       Yes     Yes     No         No  
P2HR   FLOAT        Yes  0        Yes     Yes     No         No  
P2LR   FLOAT        Yes  0        Yes     Yes     No         No  
P2PR   SHORT        Yes  0        Yes     Yes     No         No  
P2PA   FLOAT ARRAY  No   Null     Yes     Yes     Yes        No  
P3SM   RECCHOICE    Yes  0        Yes     Yes     No         No  
P3SP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P3FS   RECCHOICE    Yes  0        Yes     Yes     No         No  
P3SI   FLOAT        Yes  0        Yes     Yes     Yes        No  
P3FI   RECCHOICE    Yes  0        Yes     Yes     No         No  
P3CP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P3FC   RECCHOICE    Yes  0        Yes     Yes     No         No  
P3EP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P3FE   RECCHOICE    Yes  0        Yes     Yes     No         No  
P3WD   FLOAT        Yes  0        Yes     Yes     Yes        No  
P3FW   RECCHOICE    Yes  0        Yes     Yes     No         No  
P3DV   FLOAT        No   0        Yes     No      Yes*       No  
P3LV   FLOAT        No   0        Yes     No      No         No  
R3CV   FLOAT        No   0        Yes     No      Yes*       No  
R3LV   FLOAT        No   0        Yes     No      No         No  
R3DL   FLOAT        Yes  0        Yes     Yes     No         No  
P3EU   STRING       Yes  16       Yes     Yes     No         No  
P3HR   FLOAT        Yes  0        Yes     Yes     No         No  
P3LR   FLOAT        Yes  0        Yes     Yes     No         No  
P3PR   SHORT        Yes  0        Yes     Yes     No         No  
P3PA   FLOAT ARRAY  No   Null     Yes     Yes     Yes        No  
P4SM   RECCHOICE    Yes  0        Yes     Yes     No         No  
P4SP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P4FS   RECCHOICE    Yes  0        Yes     Yes     No         No  
P4SI   FLOAT        Yes  0        Yes     Yes     Yes        No  
P4FI   RECCHOICE    Yes  0        Yes     Yes     No         No  
P4CP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P4FC   RECCHOICE    Yes  0        Yes     Yes     No         No  
P4EP   FLOAT        Yes  0        Yes     Yes     Yes        No  
P4FE   RECCHOICE    Yes  0        Yes     Yes     No         No  
P4WD   FLOAT        Yes  0        Yes     Yes     Yes        No  
P4FW   RECCHOICE    Yes  0        Yes     Yes     No         No  
P4DV   FLOAT        No   0        Yes     No      Yes*       No  
P4LV   FLOAT        No   0        Yes     No      No         No  
R4CV   FLOAT        No   0        Yes     No      Yes*       No  
R4LV   FLOAT        No   0        Yes     No      No         No  
R4DL   FLOAT        Yes  0        Yes     Yes     No         No  
P4EU   STRING       Yes  16       Yes     Yes     No         No  
P4HR   FLOAT        Yes  0        Yes     Yes     No         No  
P4LR   FLOAT        Yes  0        Yes     Yes     No         No  
P4PR   SHORT        Yes  0        Yes     Yes     No         No  
P4PA   FLOAT ARRAY  No   Null     Yes     Yes     Yes        No  
D1CV   FLOAT        No   0        Yes     No      Yes*       No  
D1LV   FLOAT        No   0        Yes     No      No         No  
D1EU   STRING       Yes  16       Yes     Yes     No         No  
D1HR   FLOAT        Yes  0        Yes     Yes     No         No  
D1LR   FLOAT        Yes  0        Yes     Yes     No         No  
D1PR   SHORT        Yes  0        Yes     Yes     No         No  
D1DA   FLOAT ARRAY  No   Null     Yes     No      Yes        No  
D2CV   FLOAT        No   0        Yes     No      Yes*       No  
D2LV   FLOAT        No   0        Yes     No      No         No  
D2EU   STRING       Yes  16       Yes     Yes     No         No  
D2HR   FLOAT        Yes  0        Yes     Yes     No         No  
D2LR   FLOAT        Yes  0        Yes     Yes     No         No  
D2PR   SHORT        Yes  0        Yes     Yes     No         No  
D2DA   FLOAT ARRAY  No   Null     Yes     No      Yes        No  
D3CV   FLOAT        No   0        Yes     No      Yes*       No  
D3LV   FLOAT        No   0        Yes     No      No         No  
D3EU   STRING       Yes  16       Yes     Yes     No         No  
D3HR   FLOAT        Yes  0        Yes     Yes     No         No  
D3LR   FLOAT        Yes  0        Yes     Yes     No         No  
D3PR   SHORT        Yes  0        Yes     Yes     No         No  
D3DA   FLOAT ARRAY  No   Null     Yes     No      Yes        No  
D4CV   FLOAT        No   0        Yes     No      Yes*       No  
D4LV   FLOAT        No   0        Yes     No      No         No  
D4EU   STRING       Yes  16       Yes     Yes     No         No  
D4HR   FLOAT        Yes  0        Yes     Yes     No         No  
D4LR   FLOAT        Yes  0        Yes     Yes     No         No  
D4PR   SHORT        Yes  0        Yes     Yes     No         No  
D4DA   FLOAT ARRAY  No   Null     Yes     No      Yes        No  
T1CD   FLOAT        Yes  0        Yes     Yes     No         No  
T2CD   FLOAT        Yes  0        Yes     Yes     No         No  
---------------------------------------------------------------
* Monitors on these fields are not posted any faster than 20 Hz. Some changes may not be posted! Do not rely on these fields for step-to-step info.

4. Field Descriptions

This section describes the fields that will be of interest to a typical application developer. All array field names end with the character "A". It is hoped that this convention will make it easier to remember field name abbreviations.

---------------------------------------------------------------------------------------------
Name  Summary                Description                                                       
---------------------------------------------------------------------------------------------
VERS  Code Version           Reflects the version of scan record processing routines.          
VAL   Value Field            Not Used.                                                         
SMSG  State Message          This field contains a message from the record alerting the        
                             operator to any error conditions. It can be cleared by            
                             writing a `0' to the CMND field.                                  
CMND  Command Field          This field is used to send commands to the record. The            
                             following commands are currently defined:                         
                             0 - Clear the State Message Field                                 
                             1 - Execute a "dry run" scan and check the desired                
                             positions against the control limits of the positioner(s).        
ALRT  Alert Field            This field is set to one when an alert condition exists in the    
                             record (e.g Scan parameters too constrained, defined scan         
                             exceeds limits, scan aborted, etc). The cause of the alert        
                             will be indicated in the State Message Field (SMSG).              
RPVT  Record Private         Pointer to a structure that maintains information about the       
                             scan record.                                                      
MPTS  Maximum Number         This field is used to specify the maximum number of               
      of Points              points that will be used for any scan defined for this            
                             record. This value is used to allocate memory for all the         
                             array oriented fields, so the value will significantly affect     
                             memory usage.                                                     
EXSC  Execute Scan           Writing a `1' to this field will initiate a scan. Writing a `0'   
                             will abort the scan. The record will reset this field to `0'      
                             when the scan is finished.                                        
PXSC  Previous Execute       Status of the EXSC flag the last time the record was              
      Scan                   processed.                                                        
NPTS  Number of Points       This entry defines the number of points for the scan. If the      
                             freeze flag is set, the record will not change this value in      
                             its attempt to keep the scan definition parameters                
                             consistent. This value is constrained to be less than or          
                             equal to MPTS.                                                    
FPTS  Freeze Flag                                                                              
CPT   Current Point          This field contains the current point of an active scan. The      
                             posting of events on this field is throttled to 20 Hz, so for     
                             fast scans not every new value will be posted.                    
PCPT  Previous Current       This field contains the value of CPT that was last posted         
      Point                  (not every change is posted, see CPT desctiption).                
TOLP  Time of Last           Tick count of last time monitors were posted on the               
      Posting                "throttled" fields (e.g. CPT)                                     
PnPV  Positioner n Process   (n=1-4): These fields contain the Process Variable names          
      Variable               of the controllers that will be commanded during the scan.        
PnNV  Positioner n Name      (n=1-4): These flags indicate if the ASCII string entered         
      Valid                  in PnPV was found to be an existing Process Variable.             
PnDV  Positioner n           (n=1-4): These fields contain the desired value for each          
      Desired Value          postioner for the current point in the scan. The posting of       
                             events on these fields is throttled to 20 Hz, so for fast         
                             scans not every "desired value" will be posted.                   
PnLV  Positioner n Last      (n=1-4): Last value `posted' for PnDv.                            
      Value                                                                                    
RnPV  Readback n             (n=1-4): If specified, the scan record will read this             
      Process Variable       "actual position" of the controller to confirm it has             
                             reached its "desired position". If this value is within a         
                             specified deadband of the desired position, the scan will         
                             continue.                                                         
RnNV  Readback n Name        (n=1-4): These flags indicate if the ASCII string entered         
      Valid                  in RnPV was found to be an existing Process Variable.             
RnCV  Readback n             (n=1-4) : These fields contain the current value for each         
      Current Value          postioner readback for the current point in the scan. The         
                             posting of events on these fields is throttled to 20 Hz, so       
                             for fast scans not every new value will be posted.                
RnLV  Readback n Last        (n=1-4): Last value `posted' for RnCV.                            
      Value                                                                                    
RnDL  Readback n Delta       (n=1-4) : If RnPV is specified, the scan record will              
                             confirm that the Read Back value is within this dead band,        
                             or the scan will be halted.                                       
PnSM  Positioner n Step      (n=1-4) : Indicates if the desired positions for a controller     
      Mode                   are to be calculated in a linear fashion (incremented by          
                             step size), found in a "desired position array", or given a       
                             final position command at the beginning of the scan (on-          
                             the-fly).                                                         
PnPA  Positioner n            (n=1-4): This array contains the step positions for a            
      Position Array         controller if it uses the "lookup" mode (see PnSM). This          
                             array is filled in by the record during a scan if the             
                             controller was in "linear" mode. If the number of steps           
                             was less than MPTS, the remainder of the array is filled          
                             with the data from the last step.                                 
PnSP  Positioner n Start     (n=1-4): For controllers in the "linear" or "on-the-              
      Position               fly" mode, this field specifies the start position for the        
                             controller. If the freeze flag is set, the record will not        
                             change this value in its attempt to keep the scan definition      
                             parameters consistent.                                            
PnFS  Positioner n Freeze                                                                      
      Flag                                                                                     
PnSI  Positioner n Step      (n=1-4): For controllers in the "linear" mode, this field         
      Increment              specifies the step increment. If the freeze flag is set, the      
                             record will not change this value in its attempt to keep the      
                             scan definition parameters consistent.                            
PnFI  Positioner n Freeze                                                                      
      Flag                                                                                     
PnEP  End Position           (n=1-4): For controllers in the "linear" mode, this field         
                             contains the last position to which the controller will be        
                             commanded. If the freeze flag is set, the record will not         
                             change this value in its attempt to keep the scan definition      
                             parameters consistent.                                            
PnFE  Positioner n Freeze                                                                      
      Flag                                                                                     
PnCP  Positioner n Center    (n=1-4): For controllers in the "linear" mode, this field         
      Position               may be used to define the center position of a scan. If the       
                             freeze flag is set, the record will not change this value in      
                             its attempt to keep the scan definition parameters                
                             consistent.                                                       
PnFC  Positioner n Freeze                                                                      
      Flag                                                                                     
PnWD  Positioner n Width     (n=1-4): For controllers in the "linear" mode, this field         
                             may be used to define the width of the scan (the distance         
                             from the start position to the finish position). If the freeze    
                             flag is set, the record will not change this value in its         
                             attempt to keep the scan definition parameters consistent.        
PnFW  Positioner n Freeze                                                                      
      Flag                                                                                     
PnLR  Positioner n Low       (n=1-4): These are user configurable fields to describe low       
      Range                  and high ranges for the positioner data (used by some             
                             channel access clients).                                          
PnHR  Positioner n High                                                                        
      Range                                                                                    
PnPR  Positioner n           (n=1-4) : This is a user configurable fields to describe the      
      Precision              display precision for the positioner data (used by some           
                             channel access clients).                                          
PnEU  Positioner n           (n=1-4) : This is a user configurable fields to describe the      
      Engineering Units      units for the positioner data (used by some channel access        
                             clients).                                                         
TnPV  Detector Trigger n     (n=1-2): These fields contain the Process Variable names          
      Process Variable       of the "Detector Triggers" that are written to between the        
                             positioning phase and the data acquisition phase of the           
                             record.                                                           
TnNV  Trigger n Name         (n=1-2): These flags indicate if the ASCII string entered         
      Valid                  in TnPV was found to be an existing Process Variable.             
TnCD  Trigger n Command      (n=1-2): This is the data that is written to the Detector         
                             Trigger PV's.                                                     
DnPV  Data n Process         (n=1-4): These fields contain the Process Variable names          
      Variable               of the data that will be recorded at each point within the        
                             scan.                                                             
DnNV  Data n Name Valid      (n=1-4): These flags indicate if the ascii string entered in      
                             DnPV was found to be an existing Process Variable.                
DnCV  Detector n Current     (n=1-4): These fields contain the current value for each          
      Value                  detector for the current point in the scan. The posting of        
                             events on these fields is throttled to 20 Hz, so for fast         
                             scans not every new value will be posted.                         
DnLV  Detector n Last        (n-1-4): Last value `posted' for DnCV.                            
      Value                                                                                    
DnDA  Detector n Data        (n=1-4): This array (length = MPTS) contains the detector         
      Array                  data for each point in the scan. If the number of steps was       
                             less than MPTS, the remainder of the array is filled with         
                             the data from the last step.                                      
DnLR  Detector n Low         (n=1-4): These are user configurable fields to describe low       
      Range                  and high ranges for the detector data (used by some               
                             channel access clients).                                          
DnHR  Detector n High                                                                          
      Range                                                                                    
DnPR  Detector n             (n=1-4): This is a user configurable fields to describe the       
      Precision              display precision for the detector data (used by some             
                             channel access clients).                                          
DnEU  Detector n             (n=1-4): This is a user configurable fields to describe the       
      Engineering Units      units for the detector data (used by some channel access          
                             clients).                                                         
PnDB  Positioner n dbAddr    (n=1-4): Pointer to the dbAddr structure of the PV                
                             entered in PnPv. If PV is not found, the value is NULL.           
RnDB  Readback n dbAddr      (n=1-4): Pointer to the dbAddr structure of the PV                
                             entered in RnPv. If PV is not found, the value is NULL.           
TnDB  Trigger n dbAddr       (n=1-2): Pointer to the dbAddr structure of the PV                
                             entered in TnPv. If PV is not found, the value is NULL.           
DnDB  Detector n dbAddr      (n=1-4): Pointer to the dbAddr structure of the PV                
                             entered in DnPv. If PV is not found, the value is NULL.           
---------------------------------------------------------------------------------------------

5. Record Support Routines

6. Record Processing

7. Device Support

8. Device Support For Soft Records

 
Table of Contents Next Chapter