Table of Contents Previous Chapter Chapter 39: Wait

Chapter 39: Wait

Advanced Photon Source
Argonne National Laboratory

1. Introduction

This chapterdescribes the capabilities and use of the wait record. The wait record is derived fom the standard calc record with the following additional features: "Reassignable" PV links, an Output Link, a Desired Output input link, an output event number to post, and several options as to when it will execute the output link and event posting. The wait record also has the capability to "process" as a result of an input changing (via CA monitors).

The wait record is a powerful record type that can be used to do "conditional" processing within the database. Its name is derived from the original requirement that initiated its development, i.e. "I want to wait until all the motors have stopped and then trigger the detector". The sections below describe the capabilities of the record.

"Reassignable" PV Links

Like the calc record, the wait record has 12 input links for fetching variables used in the calculation. Unlike the calc record, these input links can be modified during run time. The record contains ASCII fields in which a new Process_Variable.Field name may be written. The record will use the new link the next time the record is processed.

A consequence of reassignable links is that one cannot force the processing of an input record prior to retrieving the data (i.e. there is no .PP flag). This should be considered when designing a database using the wait record.

In this initial version, the "reassignable" PV links do not support channel access connections external to the IOC. Until this feature is added, the specified Process Variables must reside on the same IOC.

Output Links and Output Events

The wait record has two kinds of "outputs". The first is an output link to which data will be written when appropriate (see next section). The data to be written can be the result of the calculation (use VAL), fetched from another link (use DOL and specify a "Desired Output Location Name" - DOLN) or a user entered constant ( use DOL, leave DOLN blank, enter constant in DOLD).

As a result of the "reassignable links", there is no application specific control over whether the record specified as the output link will be processed when the data is "put" (i.e. there is no .PP flag associated with the link.) The processing of the destination record will depend on its scan mechanism and ASCII record definition file Process Passive values.

The other "output" of a wait record is an event. If a non-zero value is entered into the OEVT (Output Event) field, the record will "post an event" (using the entered number as the event number) whenever the output link is executed. This is a way of initiating several other records to process as a result of a calculation.

Output Link Execution Options

The outputs of the wait record are not necessarily executed every time the record processes. This allows "downstream" processing of records to be done conditionally. The "output execution" options are decsribed below.

Process Record on Input Change

In addition to the standard scan mechanisms avaliable to all records (periodic, passive, event, etc), the wait record can be specified to process as a result of one of i's input values changing (using channel access monitors). This offers immediate response to an input change (rather than waiting for the next periodic scan) while minimizing record processing that is not required. The scan mechanism choice of I/O Intr will enable this feature.

For this release, an additional module, caMonitor.o, must be compiled and loaded with the wait record support to provide this feature.

A word of caution is in order. Because of the event driven nature of this feature, it is quite easy to configure a database that results in an infinite loop that uses all available CPU time. If the wait record is set to process as a result of a channel changing and the processing of the wait record causes the channel to change again, an infinite loop will result. The symptom will be a loss of all channel access connections (lower priority tasks) even though the shell responds normally. Using the vxWorks utility "spy" will confirm the predicament by showing 0% free CPU time.

2. Field Summary

--------------------------------------------------------------
Field  Type       DCT  Initial  Access  Modify  Rec Proc   PP   
                                                Monitor         
--------------------------------------------------------------
HOPR   FLOAT      Yes  0        Yes     Yes     No         No   
LOPR   FLOAT      Yes  0        Yes     Yes     No         No   
INIT   SHORT      No   0        Yes     No      No         No   
CBST   NOACCESS   No   Null     No      No      No         No   
INAN   STRING     Yes  Null     Yes     Yes     No         No   
INBN   STRING     Yes  Null     Yes     Yes     No         No   
INCN   STRING     Yes  Null     Yes     Yes     No         No   
INDN   STRING     Yes  Null     Yes     Yes     No         No   
INEN   STRING     Yes  Null     Yes     Yes     No         No   
INFN   STRING     Yes  Null     Yes     Yes     No         No   
INGN   STRING     Yes  Null     Yes     Yes     No         No   
INHN   STRING     Yes  Null     Yes     Yes     No         No   
ININ   STRING     Yes  Null     Yes     Yes     No         No   
INJN   STRING     Yes  Null     Yes     Yes     No         No   
INKN   STRING     Yes  Null     Yes     Yes     No         No   
INLN   STRING     Yes  Null     Yes     Yes     No         No   
INAA   NOACCESS   No   Null     No      No      No         No   
INBA   NOACCESS   No   Null     No      No      No         No   
INCA   NOACCESS   No   Null     No      No      No         No   
INDA   NOACCESS   No   Null     No      No      No         No   
INEA   NOACCESS   No   Null     No      No      No         No   
INFA   NOACCESS   No   Null     No      No      No         No   
INGA   NOACCESS   No   Null     No      No      No         No   
INHA   NOACCESS   No   Null     No      No      No         No   
INIA   NOACCESS   No   Null     No      No      No         No   
INJA   NOACCESS   No   Null     No      No      No         No   
INKA   NOACCESS   No   Null     No      No      No         No   
INLA   NOACCESS   No   Null     No      No      No         No   
INAV   LONG       No   0        Yes     Yes     Yes        No   
INBV   LONG       No   0        Yes     Yes     Yes        No   
INCV   LONG       No   0        Yes     Yes     Yes        No   
INDV   LONG       No   0        Yes     Yes     Yes        No   
INEV   LONG       No   0        Yes     Yes     Yes        No   
INFV   LONG       No   0        Yes     Yes     Yes        No   
INGV   LONG       No   0        Yes     Yes     Yes        No   
INHV   LONG       No   0        Yes     Yes     Yes        No   
INIV   LONG       No   0        Yes     Yes     Yes        No   
INJV   LONG       No   0        Yes     Yes     Yes        No   
INKV   LONG       No   0        Yes     Yes     Yes        No   
INLV   LONG       No   0        Yes     Yes     Yes        No   
A      DOUBLE     No   0        Yes     Yes     Yes        Yes  
B      DOUBLE     No   0        Yes     Yes     Yes        Yes  
C      DOUBLE     No   0        Yes     Yes     Yes        Yes  
D      DOUBLE     No   0        Yes     Yes     Yes        Yes  
E      DOUBLE     No   0        Yes     Yes     Yes        Yes  
F      DOUBLE     No   0        Yes     Yes     Yes        Yes  
G      DOUBLE     No   0        Yes     Yes     Yes        Yes  
H      DOUBLE     No   0        Yes     Yes     Yes        Yes  
I      DOUBLE     No   0        Yes     Yes     Yes        Yes  
J      DOUBLE     No   0        Yes     Yes     Yes        Yes  
K      DOUBLE     No   0        Yes     Yes     Yes        Yes  
L      DOUBLE     No   0        Yes     Yes     Yes        Yes  
LA     DOUBLE     No   0        Yes     Yes     No         No   
LB     DOUBLE     No   0        Yes     Yes     No         No   
LC     DOUBLE     No   0        Yes     Yes     No         No   
LD     DOUBLE     No   0        Yes     Yes     No         No   
LE     DOUBLE     No   0        Yes     Yes     No         No   
LF     DOUBLE     No   0        Yes     Yes     No         No   
LG     DOUBLE     No   0        Yes     Yes     No         No   
LH     DOUBLE     No   0        Yes     Yes     No         No   
LI     DOUBLE     No   0        Yes     Yes     No         No   
LJ     DOUBLE     No   0        Yes     Yes     No         No   
LK     DOUBLE     No   0        Yes     Yes     No         No   
LL     DOUBLE     No   0        Yes     Yes     No         No   
CALC   STRING     Yes  36       Yes     Yes     No         No   
RPCL   NOACCESS   No   184      No      No      No         No   
CLCV   LONG       No   0        Yes     Yes     Yes        No   
VAL    DOUBLE     No   0        Yes     Yes     Yes        No   
OVAL   DOUBLE     No   0        Yes     Yes     No         No   
PREC   SHORT      Yes  0        Yes     Yes     No         No   
OOPT   RECCHOICE  Yes  0        Yes     Yes     No         No   
OUTN   STRING     Yes  Null     Yes     Yes     No         No   
OUTA   NOACCESS   No   Null     No      No      No         No   
OUTV   LONG       No   0        Yes     Yes     Yes        No   
DOPT   RECCHOICE  Yes  0        Yes     Yes     No         No   
DOLN   STRING     Yes  Null     Yes     Yes     No         No   
DOLA   NOACCESS   No   Null     No      No      No         No   
DOLV   LONG       No   0        Yes     Yes     Yes        No   
DOLD   DOUBLE     Yes  0        Yes     Yes     Yes        No   
OEVT   USHORT     Yes  0        Yes     Yes     No         No   
ADEL   DOUBLE     Yes  0        Yes     Yes     No         No   
MDEL   DOUBLE     Yes  0        Yes     Yes     No         No   
ALST   DOUBLE     No   0        Yes     No      No         No   
MLST   DOUBLE     No   0        Yes     No      No         No   
SIOL   INLINK     No   Null     Yes     No      No         No   
SVAL   DOUBLE     No   0        Yes     Yes     No         No   
SIML   INLINK     No   Null     Yes     No      No         No   
SIMM   GBLCHOICE  No   0        Yes     Yes     No         No   
SIMS   GBLCHOICE  Yes  0        Yes     Yes     No         No   
--------------------------------------------------------------

3. Field Descriptions

This section describes the fields that will be of interest to a typical application developer.

---------------------------------------------------------------------------------------------
Name       Summary               Description                                                   
---------------------------------------------------------------------------------------------
HOPR       High Operating        These fields determine the upper and lower display limits     
           Range                 for graphics displays and the upper and lower control         
                                 limits for control displays. The fields are used by record    
                                 support to honor calls to get_graphic_double or               
                                 get_control_double.                                           
LOPR       Low Operating                                                                       
           Range                                                                               
CBST       Callback Structure    Pointer to a record private structure.                        
INnN       Input n Process       (n=A thru L): These fields contain the Process Variable       
           Variable Name         names of the inputs that will be used for the calculation.    
INnV       Input n Valid         (n=A thru L): These flags indicate if the ASCII string        
                                 entered in INnN was found to be a valid (existing) Process    
                                 Variable.                                                     
A,...,L    Input Values          If the corresponding INP field is a constant, this field is   
                                 initialized with the constant value but can be changed via    
                                 dbPuts.                                                       
LA,...,LL  Previous Input        These fields are used to decide when to trigger monitors      
           Values                on A,...,L.                                                   
CALC       Calculation String    Expression to be calculated when the record is processed.     
                                 Identical to the CALC field in the calc record.               
RPCL       Reverse Polish Calc   String used for interpreting CALC string.                     
           String                                                                              
CLCV       Calculation String    This flag is set when the CALC string is valid.               
           Valid                                                                               
VAL        Value Field           This field is calculated, via the CALC expression, each       
                                 time the record is processed.                                 
OVAL       Old Value                                                                           
PREC       Display Precision     Precision with which to display VAL.  This field is used by   
                                 record support to supply a value when get_precision           
                                 is called.                                                    
OOPT       Output Option         This menu specifies when to execute the output link and       
                                 post the output event. Choices are "Every Time", "On          
                                 Change", "When Zero", "When Non-zero", "Transition            
                                 To Zero", "Transition To Non-zero"                            
OUTN       Output Link           This field contains the Process Variable name of the          
           Process Variable      output link.                                                  
           Name                                                                                
OUTA       Output Address        Pointer to the dbAddr structure of the PV in OUTN.            
OUTV       Output Link Valid     This flag indicates if the ASCII string entered in OUTN       
                                 was found to be a valid (existing) Process Variable.          
DOLN       Desired Output        This field contains the name of the Process Variable from     
           Location Process      which the desired output data will be retrieved (if DOPT so   
           Variable Name         indicates).                                                   
DOLA       Desired Output        Pointer to the dbAddr Structure of the PV in DOLN.            
           Location Address                                                                    
DOLV       Desired Output        This flag indicates if the ASCII string entered in DOLN       
           Location Valid        was found to be a valid (existing) Process Variable.          
DOLD       Desired Output        This field contains the data fetched from the PV specified    
           Location Data         in DOLN (if valid) or a user entered value (if DOLN is not    
                                 valid).                                                       
DOPT       Data Option           This menu specifies whether to use the DOLD field or the      
                                 VAL field as output data.                                     
OEVT       Output Event          If non-zero, the specified event number will be "posted"      
                                 when the output link is executed.                             
ADEL       Archive Deadband      These parameters specify hysteresis factors for triggering    
                                 monitor callbacks, i.e. monitors specified by calls to        
                                 caAddEvent or dbAddEvent. A monitor will not be               
                                 triggered until VAL changes by more than the specified        
                                 amount.                                                       
MDEL       Monitor, i.e. value                                                                 
           change, Deadband                                                                    
ALST       Archive Last  Value   These fields are used to implement the hysteresis factors     
                                 for monitors.                                                 
MLST       Monitor Last  Value                                                                 
SIMM       Simulation Mode       Simulation mode process variables.  Refer to Chapter 3,       
                                 Section "Simulation Mode" on page 11 for more                 
                                 information.                                                  
SIML       Simulation Mode                                                                     
           Location                                                                            
SVAL       Simulation Value                                                                    
SIOL       Simulation Value                                                                    
           Location                                                                            
SIMS       Simulation Mode                                                                     
           Alarm Severity                                                                      
---------------------------------------------------------------------------------------------

4. Record Support Routines

5. Record Processing

6. Device Support

7. Device Support For Soft Records

 
Table of Contents Next Chapter