Table of Contents Previous Chapter Chapter 19: longout - Long Output

Chapter 19: longout - Long Output

1. Introduction

The normal use for the longout record type is to store integer values of up to 31 bits. It can also be used to write values to other records via database or channel access links. The OUT field determines how the record is used. The record supports alarm limits and graphics and control limits.

2. Field Summary

--------------------------------------------------------------
Field  Type       DCT  Initial  Access  Modify  Rec Proc   PP   
                                                Monitor         
--------------------------------------------------------------
VAL    LONG       No   0        Yes     Yes     Yes        Yes  
OUT    OUTLINK    Yes  0        No      No      N/A        No   
DOL    INLINK     Yes  0        No      No      N/A        No   
OMSL   GBLCHOICE  Yes  0        Yes     Yes     No         No   
EGU    STRING     Yes  Null     Yes     Yes     No         No   
HOPR   LONG       Yes  0        Yes     Yes     No         No   
LOPR   LONG       Yes  0        Yes     Yes     No         No   
HIHI   LONG       Yes  0        Yes     Yes     No         Yes  
LOLO   LONG       Yes  0        Yes     Yes     No         Yes  
HIGH   LONG       Yes  0        Yes     Yes     No         Yes  
LOW    LONG       Yes  0        Yes     Yes     No         Yes  
HHSV   GBLCHOICE  Yes  0        Yes     Yes     No         Yes  
LLSV   GBLCHOICE  Yes  0        Yes     Yes     No         Yes  
HSV    GBLCHOICE  Yes  0        Yes     Yes     No         Yes  
LSV    GBLCHOICE  Yes  0        Yes     Yes     No         Yes  
HYST   LONG       Yes  0        Yes     Yes     No         No   
ADEL   LONG       Yes  0        Yes     Yes     No         No   
MDEL   LONG       Yes  0        Yes     Yes     No         No   
LALM   LONG       No   0        Yes     No      No         No   
ALST   LONG       No   0        Yes     No      No         No   
MLST   LONG       No   0        Yes     No      No         No   
SIOL   OUTLINK    Yes  0        No      No      N/A        No   
SIML   INLINK     Yes  0        No      No      N/A        No   
SIMM   GBLCHOICE  No   0        Yes     Yes     No         No   
SIMS   GBLCHOICE  Yes  0        Yes     Yes     No         No   
IVOA   GBLCHOICE  Yes  0        Yes     Yes     No         No   
IVOV   LONG       Yes  0        Yes     Yes     No         No   
--------------------------------------------------------------

3. Field Descriptions

----------------------------------------------------------------------------------------
Name  Summary               Description                                                   
----------------------------------------------------------------------------------------
VAL   Value                 This is the desired output value, in engineering units. If    
                            DRVH and DRVL are defined, VAL is forced to be within         
                            the drive limits. VAL is either obtained from DOL or set      
                            via dbPuts.                                                   
OUT   Output Link           This field is used by the device support routines to decide   
                            where to send output. For soft records, it can be a           
                            constant, a database link, or a channel access link. If the   
                            link is a constant, the result is no output.                  
DOL   Desired Output        If DOL is a database or channel access link and OMSL is       
      Location (input       CLOSED_LOOP, then VAL is read from DOL. After the             
      link)                 check for drive limits VAL will be set to the value           
                            determined by DOL.                                            
OMSL  Output Mode Select    This field has either the value SUPERVISORY or                
                            CLOSED_LOOP.  DOL is used to determine VAL only if            
                            OMSL has the value CLOSED_LOOP.  By setting this field        
                            the record can be switched between supervisory and            
                            closed loop mode of operation. While in closed loop           
                            mode, the VAL field cannot be set via dbPuts.                 
EGU   Engineering Units     ASCII string describing Engineering units.  This field is     
                            used by record support to supply a units description string   
                            when get_units is called.                                     
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.  If these values are defined,             
                            they must be in the range                                     
                             DRVL<=LOPR<=HOPR<=DRVH.                             
LOPR  Low Operating                                                                       
      Range                                                                               
HIHI  Hihi Alarm Limit      These fields specify the alarm limits and severities.         
HIGH  High Alarm Limit                                                                    
LOW   Low Alarm Limit                                                                     
LOLO  Lolo Alarm Limit                                                                    
HHSV  Hihi Alarm                                                                          
      Severity                                                                            
HSV   High Alarm                                                                          
      Severity                                                                            
LSV   Low Alarm                                                                           
      Severity                                                                            
LLSV  Lolo Alarm                                                                          
      Severity                                                                            
HYST  Alarm Deadband        These parameters specify hysteresis factors for triggering    
                            monitor callbacks, i.e. callbacks specified by calls to       
                            caAddEvent or dbAddEvent. A monitor will not be               
                            triggered until VAL changes by more than the specified        
                            amount.                                                       
ADEL  Archive Deadband                                                                    
MDEL  Monitor, i.e. value                                                                 
      change, Deadband                                                                    
LALM  Last Alarmed          Value when last monitors for alarm/archiver/value change      
      Value                 were triggered.  These fields are used to implement the       
                            hysteresis factors for monitors.                              
ALST  Archive Last  Value                                                                 
MLST  Monitor Last  Value                                                                 
SIMM  Simulation Mode       Simulation mode process variables.  Refer to Chapter 3        
                            Section "Simulation Mode" on page 13 for more                 
                            information.                                                  
SIML  Simulation Mode                                                                     
      Location                                                                            
SIOL  Simulation Value                                                                    
      Location                                                                            
SIMS  Simulation Mode                                                                     
      Alarm Severity                                                                      
IVOA  Invalid Alarm         Whenever the record is put into INVALID alarm severity        
      Output Action         IVOA specifies an action.  See Chapter 3 Section "Invalid     
                            Alarm Output Action" on page 14 for more information.         
IVOV  Invalid Alarm                                                                       
      Output Value                                                                        
----------------------------------------------------------------------------------------

4. Record Support Routines

init_record

This routine initializes SIMM if SIML is a constant or creates a channel access link if SIML is PV_LINK. If SIOL is PV_LINK a channel access link is created.

This routine next checks to see that device support is available. The routine next checks to see if the device support write routine is defined. If either device support or the device support write routine does not exist, an error message is issued and processing is terminated.

If DOL is a constant, then VAL is initialized to its value and UDF is set to FALSE. If DOL type is a PV_LINK then dbCaAddInlink is called to create a channel access link.

If device support includes init_record, it is called.

process

See next section.

get_value

Fills in the values of struct valueDes so that they refer to VAL.

get_units

Retrieves EGU.

get_graphic_double

Sets the upper display and lower display limits for a field. If the field is VAL, HIHI, HIGH, LOW, or LOLO, the limits are set to HOPR and LOPR, else if the field has upper and lower limits defined they will be used, else the upper and lower maximum values for the field type will be used.

get_control_double

Sets the upper control and the lower control limits for a field. If the field is VAL, HIHI, HIGH, LOW, or LOLO, the limits are set to HOPR and LOPR, else if the field has upper and lower limits defined they will be used, else the upper and lower maximum values for the field type will be used.

get_alarm_double

Sets the following values:

  upper_alarm_limit = HIHI
  upper_warning_limit = HIGH
  lower_warning_limit = LOW
  lower_alarm_limit = LOLO

5. Record Processing

Routine process implements the following algorithm:

  1. Check to see that the appropriate device support module exists. If it doesn't, an error message is issued and processing is terminated with the PACT field still set to TRUE. This ensures that processes will no longer be called for this record. Thus error storms will not occur.
  2. If PACT is FALSE and OMSL is CLOSED_LOOP recGblGetLinkValue is called to read the current value of VAL. See Chapter 3 Section "Soft Input" on page 10 for details. If the return status of recGblGetLinkValue is zero then UDF is set to FALSE.
  3. Check alarms. This routine checks to see if the new VAL causes the alarm status and severity to change. If so, NSEV, NSTA and LALM are set. It also honors the alarm hysteresis factor (HYST). Thus the value must change by more than HYST before the alarm status and severity is lowered.
  4. Check severity and write the new value. See Chapter 3 Section "Simulation Mode" on page 13 and Chapter 3 Section "Invalid Alarm Output Action" on page 14 for details.
  5. If PACT has been changed to TRUE, the device support write output routine has started but has not completed writing the new value. In this case, the processing routine merely returns, leaving PACT TRUE.
  6. Check to see if monitors should be invoked.
  7. Scan forward link if necessary, set PACT FALSE, and return.

6. Device Support

Fields Of Interest To Device Support

Each long output record must have an associated set of device support routines. The primary responsibility of the device support routines is to output a new value whenever write_longout is called. The device support routines are primarily interested in the following fields:

--------------------------------------------------------------------------------------
Name  Summary             Description                                                   
--------------------------------------------------------------------------------------
PACT  Processing Active   See Chapter 2 Section "Database Common: Field                 
                          Descriptions" on page 4 for descriptions.                     
DPVT  Device Private                                                                    
NSEV  New Alarm Severity                                                                
NSTA  New Alarm Status                                                                  
OUT   Output Link         This field is used by the device support routines to locate   
                          its output.                                                   
--------------------------------------------------------------------------------------

Device Support Routines

Device support consists of the following routines:

init

  init()
This routine is called once during IOC initialization.

init_record

  init_record(precord)
This routine is optional. If provided, it is called by the record support init_record routine.

get_ioint_info

  get_ioint_info(int cmd,struct dbCommon *precord,IOSCANPVT *ppvt)
This routine is called by the ioEventScan system each time the record is added or deleted from an I/O event scan list. cmd has the value (0,1) if the record is being (added to, deleted from) an I/O event list. It must be provided for any device type that can use the ioEvent scanner.

write_longout

  write_longout(precord)
This routine must output a new value. It returns the following values:

7. Device Support For Soft Records

This module writes the current value of VAL.

If the OUT link type is PV_LINK, then dbCaAddInlink is called by init_record.

write_longout calls recGblPutLinkValue to write the current value of VAL. See Chapter 3 Section "Soft Output" on page 13 for details.

 
Table of Contents Next Chapter