Table of Contents Previous Chapter Chapter 7: bo - Binary Output

Chapter 7: bo - Binary Output

1. Introduction

The normal use for this record type is to store a binary (0 or 1) value to be sent to a Digital Output module. It can also be used to write binary values into other records via database or channel access links.

2. Field Summary

--------------------------------------------------------------
Field  Type       DCT  Initial  Access  Modify  Rec Proc   PP   
                                                Monitor         
--------------------------------------------------------------
VAL    ENUM       No   0        Yes     Yes     Yes        Yes  
OMSL   GBLCHOICE  Yes  0        Yes     Yes     No         No   
OUT    OUTLINK    Yes  0        No      No      N/A        No   
DOL    INLINK     Yes  0        No      No      N/A        No   
HIGH   FLOAT      Yes  0        Yes     Yes     No         No   
ZNAM   STRING     Yes  Null     Yes     Yes     No         Yes  
ONAM   STRING     Yes  Null     Yes     Yes     No         Yes  
RVAL   ULONG      No   0        Yes     Yes     Yes        Yes  
ORAW   ULONG      No   0        Yes     No      No         No   
MASK   ULONG      No   compute  Yes     No      No         No   
RPVT   NOACCESS   No   0        No      No                 No   
WDPT   NOACCESS   No   0        No      No                 No   
ZSV    GBLCHOICE  Yes  0        Yes     Yes     No         Yes  
OSV    GBLCHOICE  Yes  0        Yes     Yes     No         Yes  
COSV   GBLCHOICE  Yes  0        Yes     Yes     No         Yes  
RBV    ULONG      No   0        Yes     No      Yes        No   
ORBV   ULONG      No   0        Yes     No      No         No   
MLST   USHORT     No   0        Yes     No      No         No   
LALM   USHORT     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   USHORT     Yes  0        Yes     Yes     No         No   
--------------------------------------------------------------

3. Field Descriptions

----------------------------------------------------------------------------------------
Name  Summary             Description                                                     
----------------------------------------------------------------------------------------
VAL   Value Field         This is the value to be sent to OUT. It is either obtained      
                          from DOL or else given a value via dbPuts.                      
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.                   
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.                         
      Link)                                                                               
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.                    
HIGH  Seconds to Hold     If this value is greater than zero, then whenever VAL is set    
      High                equal to 1, it is reset to zero after HIGH seconds.             
ZNAM  Zero Name           ASCII string defining state zero.                               
ONAM  One Name            ASCII string defining state one.                                
RVAL  Raw Data Value      RVAL is the value written by the device support routine. If     
                          MASK is set by the device support routine, RVAL is              
                          computed by record support.                                     
ORAW  Old Raw Data        ORAW is used to decide if monitors should be triggered for      
      Value               RVAL at the same time monitors are triggered for changes        
                          in VAL.                                                         
MASK  Hardware Mask       This value can be set by the device support routine. It is      
                          the value sent to the hardware when VAL is not zero.            
RPVT  Record Private                                                                      
WDPT  Watchdog Pointer    Private field for honoring second to hold HIGH.                 
ZSV   Zero Severity       Alarm Severity for state zero.                                  
OSV   One Severity        Alarm Severity for state one.                                   
COSV  Change of State     Alarm Severity for change of state.                             
      Severity                                                                            
RBV   Read Back Value     This is the actual read back value obtained from the            
                          hardware itself or from the associated device driver.  It is    
                          the responsibility of the device support routine to give this   
                          field a value.                                                  
ORBV  Old Read Back       ORBV is used to decide if monitors should be triggered for      
      Value               RBV at the same time monitors are triggered for changes         
                          in VAL.                                                         
MLST  Monitor Last        Value when last monitor for value changes was triggered         
LALM  Last Alarmed        Value when last change of state alarm was issued.               
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 1 if its value is nonzero or initialized to 0 if DOL is zero, and UDF is set to FALSE.

If device support includes init_record, it is called. VAL is set using RVAL, and UDF is set to FALSE.

process

See next section.

get_value

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

get_enum_str

Retrieves ASCII string corresponding to VAL.

get_enum_strs

Retrieves ASCII strings for ZNAM and ONAM.

put_enum_str

Checks if string matches ZNAM or ONAM, and if it does, sets VAL.

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
  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.
  4. Check severity and write the new value. See 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 WAIT. If VAL is 1 and WAIT is greater than 0, process again with a VAL=0 after WAIT seconds.
  7. Check to see if monitors should be invoked.
  8. Scan forward link if necessary, set PACT FALSE, and return.

6. Device Support

Fields Of Interest To Device Support

Each binary output record must have an associated set of device support routines. The primary responsibility of the device support routines is to write a new value whenever write_bo 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                                                                     
VAL   Value Field         This field is only of interest to device support routines that   
                          do not use MASK and RVAL.                                        
OUT   Output Link         This field is used by the device support routines to locate      
                          its output.                                                      
RVAL  Raw Data Value      If MASK is defined then record support sets                      
                          RVAL=(0,MASK) if VAL is (0, not zero).                           
MASK  Hardware mask.      The device support module must set this field. Not that if       
                          VAL is 1, then record processing sets RVAL = MASK.               
RBV   Read Back Value     This is the actual read back value obtained from the             
                          hardware itself or from the associated device driver.  It is     
                          the responsibility of the device support routine to give this    
                          field a value.                                                   
-----------------------------------------------------------------------------------------

Device Support routines

Device support consists of the following routines:

report

  report(FILE fp, paddr)
Not currently used.

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. It should determine MASK if it is needed.

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_bo

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

7. Device Support For Soft Records

Two soft device support modules Soft Channel and Raw Soft Channel are provided for output records not related to actual hardware devices. The OUT link type must be either a CONSTANT, DB_LINK, or CA_LINK.

Soft Channel

This module writes the current value of VAL.

If the OUT link type is PV_LINK, then dbCaAddInlink is called by init_record. init_record always returns a value of 2, which means that no conversion will ever be attempted.

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

Raw Soft Channel

This module is like the previous except that it writes the current value of RVAL.

 
Table of Contents Next Chapter