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.
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.
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.
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.
-------------------------------------------------------------- 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 --------------------------------------------------------------
--------------------------------------------------------------------------------------------- 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 ---------------------------------------------------------------------------------------------
Table of Contents Next Chapter