Process Analog Output (PAO)

This information applies to the CompactLogix 5380P and ControlLogix 5580P controllers.
The Process Analog Output (PAO) instruction drives an analog output and checks for alarm conditions. Use the PAO instruction for a channel of an analog output module. Use the PAO instruction with any analog (REAL) signal.
The PAO instruction:
  • Monitors one analog output channel for I/O fault input and raises alarm on an I/O fault.
  • Operates in Hand, Out of Service, Maintenance, Override, Program, and Operator modes.
  • Provides Operator and Program commands to set an Analog Control Variable (CV, or output) to a specific value. The entered CV is scaled from engineering units to raw (output module) units.
  • Monitors bypassable and non-bypassable Interlocks that force the analog output to a specific configured (safe) value or to maintain the current value (configurable).
    TIP:
    An alarm initiates when an interlock causes the Analog Output CV to change. The PAO instruction enables bypassing interlocks.
  • Allows overriding CV in Override mode.
  • Allows analog output ramping with configurable rate of change limits.
  • Reads Tieback input (REAL) and a Hand mode request input (BOOL). When Hand mode is asserted, the CV is forced to follow the Tieback value.
  • Provides an Available status, when in Program mode and operating normally, for use by higher-level automation logic to determine
  • if the logic is able to manipulate the analog output.
Available Languages
Ladder Diagram
PAO_avail_ladder
Function Block Diagram
PAO_avail_FBD
Structured Text
PAO(PAO tag, BusObj);
Operands
IMPORTANT:
Unexpected operation may occur if:
  • Output tag operands are overwritten.
  • Members of a structure operand are overwritten.
  • Except when specified, structure operands are shared by multiple instructions.
There are data conversion rules for mixing numeric data types within an instruction. See
Data Conversions
.
Configuration Operands
Operand
Type
Format
Description
PlantPAx Control
P_ANALOG_OUTPUT
tag
Data structure required for proper operation of instruction.
BusObj
BUS_OBJ
tag
Bus component
P_ANALOG_OUTPUT Structure
Public members are standard, visible tag members that are programmatically accessible. Private, or hidden, members are used in HMI faceplates and are not programmatically accessible. Private members are listed in separate tables after public members.
Public Input Members
Data Type
Description
EnableIn
BOOL
Enable input. Ladder Diagram: Corresponds to the rung condition.
Default is true.
Inp_InitializeReq
BOOL
1 = Request to initialize the instruction. The instruction is normally initialized in instruction first run. Use this request to re-initialize. The instruction clears this operand automatically.
Default is true.
Inp_OwnerCmd
DINT
Owner device command.
0 = None,
Inp_OwnerCmd.10 = Operator Lock,
Inp_OwnerCmd.11 = Operator Unlock,
Inp_OwnerCmd.12 = Program Lock, Inp_OwnerCmd.13 = Program Unlock,
Inp_OwnerCmd.14 = Acquire Maintenance,
Inp_OwnerCmd.15 = Release Maintenance,
Inp_OwnerCmd.16 = Acquire External,
Inp_OwnerCmd.17 = Release External.
Default is 0.
Inp_OpenedFdbkData
BOOL
Feedback from opened limit switch of the device. 1 = Device confirmed opened.
Default is false.
Inp_ClosedFdbkData
BOOL
Feedback from closed limit switch of the device. 1 = Device confirmed closed.
Default is false.
Inp_PosFdbk
REAL
Feedback from actual device position PV (CV engineering units). Valid any float.
Default is 0.0.
Inp_HandFdbk
REAL
CV feedback used in Hand source (CV engineering units). Valid any float.
Default is 0.0.
Inp_IntlkOK
BOOL
1 = Bypassable and non-bypassable interlocks OK, analog output can be set.
Default is true.
Inp_NBIntlkOK
BOOL
1 = Non-bypassable interlocks OK, analog output can be set if bypassable interlocks are bypassed.
Default is true.
Inp_IntlkAvailable
BOOL
1 = Interlock availability OK.
Default is false.
Inp_IntlkTripInh
BOOL
1 = Inhibit interlock trip status.
Default is false.
Inp_SmartDvcSts
DINT
Current code provided by SMART device on Inp_PosFdbk. The code is copied to Out_SmartDvcSts allowing a user to monitor the device status on HMI for diagnostic lookup purposes. Valid = 0 to maximum positive number.
Default is 0.
Inp_SmartDvcDiagAvailable
BOOL
1 = SMART Device diagnostics is available. Typically used to indicate device requires action to keep operating as expected.
Default is false.
Inp_IOFault
BOOL
Indicates the IO data is inaccurate.
0 = The IO data is good,
1 = The IO data is bad, causing fault.
This input sets Sts_IOFault, if the device is not virtual, which raises IOFault Alarm.
Default is false.
Inp_DeviceFault
BOOL
Indicates the device fault (overload, etc.).
0 = The device is good,
1 = The device is bad, causing fault.
This input sets Sts_DeviceFault (if the device is not virtual) which raises Device alarm (if the device is not virtual).
Default is false.
Inp_Hand
BOOL
1 = Acquire Hand (typically permanently set to local),
0 = Release Hand.
Default is false.
Inp_Ovrd
BOOL
1 = Acquire Override (higher priority program logic),
0 = Release Override.
Default is false.
Inp_OvrdCV
REAL
CV target in Override (engineering units). Valid any float.
Default is 0.0.
Inp_ExtInh
BOOL
1 = Inhibit External acquisition,
0 = Allow External acquisition.
Default is false.
Inp_RdyReset
BOOL
1 = Related object, reset by this object, is ready to be reset.
Default is false.
Inp_Reset
BOOL
1 = Reset shed latches and cleared alarms.
Default is false.
Cfg_AllowDisable
BOOL
1 = Allow Maintenance to disable alarms.
Default is true.
Cfg_AllowShelve
BOOL
1 = Allow Operator to shelve alarms.
Default is true.
Cfg_StuckTime
REAL
Time with no change in input position while neither feedback from limit switch Closed nor Opened is on to raise stuck status (second). Valid = 0.0 to 2147483.0 seconds.
Default is 60.0.
Cfg_HasSmartDvc
BOOL
1 = Enable a button on the HMI that could be used to call up a SMART Device faceplate (Diagnostics).
Default is false.
Cfg_SetTrack
BOOL
1 = When the owner is Program the operator settings track the program settings. When the owner is Operator the program settings track the operator settings; and the virtual inputs match the output values (transitions are bumpless),
0 = No tracking.
Default is true.
Cfg_ShedHold
BOOL
1 = Hold output on interlock.
0 = Go to Cfg_CVIntlk on interlock.
Default is false.
Cfg_SkipRoCLim
BOOL
1 = Skip rate of change limiting in Maintenance or Override and on interlock.
Default is false.
Cfg_SetTrackOvrdHand
BOOL
1 = Program/Operator settings track Override/Hand CV.
Default is false.
Cfg_FdbkFail
BOOL
1 = Feedback from limit switches is invalid if both feedback inputs are set.
0 = Feedback from limit switches is invalid if both feedback inputs are cleared.
Default is true.
Cfg_HasOpenedFdbk
BOOL
1 = Device provides opened feedback signal.
Default is false.
Cfg_HasClosedFdbk
BOOL
1 = Device provides closed feedback signal.
Default is false.
Cfg_HasPosFdbk
BOOL
1 = Device provides position PV feedback signal.
Default is true.
Cfg_UseOpenedFdbk
BOOL
1 = Use device opened feedback for failure checking.
Default is false.
Cfg_UseClosedFdbk
BOOL
1 = Use device closed feedback for failure checking.
Default is false.
Cfg_UsePosFdbk
BOOL
1 = Use device position PV feedback signal.
Default is true.
Cfg_HasCombinedFdbk
BOOL
1 = Device provides opened, closed and position feedback signals to be used.
Default is false.
Cfg_UseCombinedFdbk
BOOL
1 = Use device opened, closed and position feedback signals to determine the opened and closed status. The combined signals will be used for the position status.
Default is false.
Cfg_HasPulseOut
BOOL
1 = Device provides pulse output (Open, Close).
Default is false.
Cfg_HasOutNav
BOOL
1 = Tells HMI to enable navigation to a connected output object.
Default is false.
Cfg_OvrdIntlk
BOOL
1 = Override bypasses (ignores) bypassable interlocks.
0 = Override abides by all interlock conditions.
Default is false.
Cfg_ShedOnDeviceFault
BOOL
1 = Set output to interlock CV and alarm on Device fault. 0 = Alarm only on Device fault.
Default is true.
Cfg_ShedOnIOFault
BOOL
1 = Set output to interlock CV and alarm on I/O fault.
0 = Alarm only on I/O fault.
Default is true.
Cfg_CVLoLim
REAL
Minimum CV for limiting (engineering units). Valid any float less than or equal to Cfg_CVHiLim.
Default is 0.0.
Cfg_CVHiLim
REAL
Maximum CV for limiting (engineering units). Valid any float greater than or equal to Cfg_CVLoLim.
Default is 100.0.
Cfg_CVRoCIncrLim
REAL
Maximum allowed CV rate of change increasing value (CVEU/second). The CV rate of change is unlimited when increasing if Cfg_CVRoCIncrLim = 0.0. Valid = 0.0 to maximum positive float.
Default is 100.0.
Cfg_CVRoCDecrLim
REAL
Maximum allowed CV rate of change decreasing value (engineering units/second). The CV rate of change is unlimited when decreasing if Cfg_CVRoCDecrLim = 0.0. Valid = 0.0 to maximum positive float.
Default is 100.0.
Cfg_CVIntlk
REAL
CV target when interlocked, if not Cfg_ShedHold (engineering units). Valid any float.
Default is 0.0.
Cfg_CVEUMin
REAL
CV minimum for scaling (engineering units). Valid any float not equal to Cfg_CVEUMax.
Default is 0.0.
Cfg_CVEUMax
REAL
CV maximum for scaling (engineering units). Valid any float not equal to Cfg_CVEUMin.
Default is 100.0.
Cfg_CVRawMin
REAL
CV minimum for scaling (I/O raw units). Valid any float not equal to Cfg_CVRawMax.
Default is 0.0.
Cfg_CVRawMax
REAL
CV maximum for scaling (I/O raw units). Valid any float not equal to Cfg_CVRawMin.
Default is 20.0.
Cfg_MaxInactiveCV
REAL
When Val_CVOut is greater than this value (CV engineering units) set Sts_Active (for HMI). Valid any float.
Default is 0.0.
Cfg_HiDevLim
REAL
High deviation (actual position minus target position) status threshold (engineering units). Valid = 0.0 to maximum positive float.
Default is 1.50E+38.
Cfg_LoDevLim
REAL
Low deviation (actual position minus target position) status threshold (engineering units). Valid = -(maximum float) to 0.0.
Default is -1.50E+38.
Cfg_DevDly
REAL
The minimum time (seconds) the deviation must remain above the upper (Cfg_HiDevLim) or below the lower (Cfg_LoDevLim) limit for the status Sts_Dev to be set. On-delay time is used to avoid unnecessary alarm when the deviation only briefly overshoots Cfg_HiDevLim or undershoots Cfg_LoDevLim. Valid = 0.0 to 2147483.0 seconds.
Default is 0.0.
Cfg_CycleTime
REAL
Open and Close pulse output overall period (seconds). Valid = 0.0 to 2147483.0 seconds.
Default is 10.0.
Cfg_OpenRate
REAL
Rate at which device moves when opening (engineering units/second). Valid = 0.0 to maximum positive float.
Default is 1.0.
Cfg_CloseRate
REAL
Rate at which device moves when closing (engineering units/second). Valid = 0.0 to maximum positive float.
Default is 1.0.
Cfg_MaxOnTime
REAL
Open and Close pulse output maximum On time (seconds). Valid = 0.0 to 2147483.0 seconds.
Default is 5.0.
Cfg_MinOnTime
REAL
Open and Close pulse output minimum On time (seconds). Valid = 0.0 to 2147483.0 seconds.
Default is 1.0.
Cfg_BumpTime
REAL
Time to bump device open or close (used when device position (PV) feedback is not available) (seconds). Valid = 0.0 to 2147483.0 seconds.
Default is 0.0.
Cfg_DeadTime
REAL
Additional time on first pulse after stop or direction change. Additional pulse time in seconds to overcome friction in the device. Deadtime is added to the open time or close time when the device changes direction or is stopped. Valid = 0.0 to Cfg_MaxOnTime seconds.
Default is 0.0.
Cfg_MaxClosedPos
REAL
Position (PV value) above which device (valve) is assumed open if feedback from Opened limit switch is not used. Valid any float greater than Cfg_CVEUMin and less than Cfg_CVEUMax.
Default is 0.0.
Cfg_HasIntlkObj
BOOL
1 = Tells HMI an interlock object (for example, P_Intlk) is used for Inp_IntlkOK and navigation to the interlock objects faceplate is enabled.
Important:
The name of the interlock object in the controller must be this PAO object's name with the suffix _Intlk. For example, if the PAO instruction has the name PAOut123, then its interlock object must be named PAOut123_Intlk.
Default is false.
Cfg_HasOper
BOOL
1 = Operator (unlocked) exists, can be selected.
Default is true.
Cfg_HasOperLocked
BOOL
1 = Operator Locked exists, can be selected.
Default is true.
Cfg_HasProg
BOOL
1 = Program (unlocked) exists, can be selected.
Default is true.
Cfg_HasProgLocked
BOOL
1 = Program Locked exists, can be selected.
Default is true.
Cfg_HasExt
BOOL
1 = External exists, can be selected.
Default is false.
Cfg_HasMaint
BOOL
1 = Maintenance exists, can be selected.
Default is true.
Cfg_HasMaintOoS
BOOL
1 = Maintenance Out of Service exists, can be selected.
Default is true.
Cfg_OvrdOverLock
BOOL
1 = Override supersedes Program/Operator Lock,
0 = Do not override Lock.
Default is true.
Cfg_ExtOverLock
BOOL
1 = External supersedes Program/Operator Lock,
0 = Do not override Lock.
Default is false.
Cfg_ProgPwrUp
BOOL
1 = Power up to Program,
0 = Power up to Operator.
Default is false.
Cfg_ProgNormal
BOOL
Normal Source:
1 = Program if no requests;
0 = Operator if no requests.
Default is false.
Cfg_PCmdPriority
BOOL
Command priority.
1 = Program commands win,
0 = Operator commands win.
Default is false.
Cfg_PCmdProgAsLevel
BOOL
1 = PCmd_Prog used as a Level.
Default is false.
Cfg_PCmdLockAsLevel
BOOL
1 = PCmd_Lock used as a Level
(1 = Lock, 0 = Unlock).
Default is false.
Cfg_ExtAcqAsLevel
BOOL
1 = XCmd_Acq used as Level
(1 = Acquire, 0 = Release).
Default is false.
Cfg_CVDecPlcs
SINT
Number of decimal places for control variable display. Valid = 0 to 6.
Default is 2.
Cfg_CnfrmReqd
SINT
Operator command confirmation required. Represents the type of command confirmation required.
0 = None,
1 = Command confirmation required,
2 = Performer e-signature required, 3 = Performer and approver e-signature required.
Default is 0.
Cfg_CVPwrUpSel
SINT
Selection of power up CV.
0 = Use Cfg_CVPwrUp,
1 = No change (from last power down),
2 = Use Inp_PosFdbk if available (Cfg_CVPwrUp otherwise).
Default is 0.
Cfg_CVPwrUp
REAL
CV initial value used on power up (engineering units). Valid any float.
Default is 0.0.
Cfg_HasMoreObj
BOOL
1 = Tells HMI an object with more info is available.
Default is false.
Cfg_HasPosFdbkNav
BOOL
1 = Tells HMI to enable navigation to a connected positive feedback object.
Default is false.
Cfg_HasHistTrend
SINT
Has historical trend. This enables navigation to the device historical trend faceplate from the HMI.
0 = No external historical trend,
1 = Datalog historical trend,
2 = Historian historical trend.
Default is 0.
PSet_CV
REAL
Program setting of controlled variable, output (engineering units). Valid any float.
Default is 0.0.
PSet_Owner
DINT
Program owner request ID (non-zero) or release (zero).
Default is 0.
PCmd_Oper
BOOL
Program command to select Operator (Program to Operator). The instruction clears this operand automatically.
Default is false.
PCmd_Prog
BOOL
Program command to select Program (Operator to Program). The instruction clears this operand automatically.
Default is false.
PCmd_Lock
BOOL
Program command to lock Program (disallow Operator). The instruction clears this operand automatically if Cfg_PCmdLockAsLevel = 0.
Default is false.
PCmd_Unlock
BOOL
Program command to unlock Program (allow Operator to acquire). The instruction clears this operand automatically.
Default is false.
PCmd_Normal
BOOL
Program command to select Normal command source (Operator or Program). The instruction clears this operand automatically.
Default is false.
PCmd_Reset
BOOL
Program command to reset all alarms and latched shed conditions requiring reset. The instruction clears this operand automatically.
Default is false.
PCmd_Physical
BOOL
Program command to select Physical device operation (not simulated). The instruction clears this operand automatically.
Default is false.
PCmd_Virtual
BOOL
Program command to select Virtual (simulated) device operation. The instruction clears this operand automatically.
Default is false.
XSet_CV
REAL
External setting of controlled variable, output (engineering units).
Default is 0.0.
XCmd_Acq
BOOL
External command to acquire ownership (Operator/Program/Override/Maintenance to External). The instruction clears this operand automatically if Cfg_ExtAcqAsLevel = 0.
Default is false.
XCmd_BumpClose
BOOL
External command to bump device closed (used when device position feedback is not available).
Default is false.
XCmd_BumpOpen
BOOL
External command to bump device open (used when device position feedback is not available).
Default is false.
XCmd_Rel
BOOL
External command to release ownership if Cfg_ExtAcqAsLevel = 0 (External to Operator/Program/Override/Maintenance). The instruction clears this operand automatically.
Default is false.
XCmd_Reset
BOOL
External command to reset all alarms and latched shed conditions. The instruction clears this operand automatically.
Default is false.
XCmd_ResetAckAll
BOOL
External command to acknowledge and reset all alarms and latched shed conditions. The instruction clears this operand automatically.
Default is false.
Public Output Members
Data Type
Description
EnableOut
BOOL
Enable Output. This output state always reflects EnableIn input state.
Out_CVData
REAL
CV output in raw (I/O Card) units.
Extended properties of this member:
Engineering Unit - Raw units (text) used for the analog output.
Out_CVOpenData
BOOL
1 = Pulse output to drive device open.
Out_CVCloseData
BOOL
1 = Pulse output to drive device closed.
Val_Dev
REAL
Calculated deviation value (actual position minus target position) (engineering units).
Val_Pos
REAL
Device actual position (PV) from feedback (in engineering units).
Val_CVSet
REAL
Value of selected CV setting before rate limiting, in engineering units.
Val_CVOut
REAL
Value of CV Output after optional rate limiting, in engineering units.
Extended Properties of this member:
Engineering Unit - Engineering units (text) used for the analog output.
Val_CVEUMin
REAL
Minimum of scaled range in engineering units = MIN (Cfg_CVEUMin, Cfg_CVEUMax).
Val_CVEUMax
REAL
Maximum of scaled range in engineering units = MAX (Cfg_CVEUMin, Cfg_CVEUMax).
Out_SmartDvcSts
DINT
Status code of a SMART Device provided by Inp_SmartDvcSts. Out_SmartDevSts is a copy of Inp_SmartDvcSts.
Out_OwnerSts
DINT
Status of command source, owner command handshake and ready status.
0 = None,
Out_OwnerSts.10 = Operator Lock,
Out_OwnerSts.11 = Operator Unlock,
Out_OwnerSts.12 = Program Lock,
Out_OwnerSts.13 = Program Unlock,
Out_OwnerSts.14 = Acquire Maintenance,
Out_OwnerSts.15 = Release Maintenance,
Out_OwnerSts.16 = Acquire External,
Out_OwnerSts.17 = Release External,
Out_OwnerSts.18 = Has Maintenance,
Out_OwnerSts.19 = External Override Lock,
Out_OwnerSts.20 = Has External,
Out_OwnerSts.21 = Has Operator,
Out_OwnerSts.22 = Has Program,
Out_OwnerSts.30 = Not Ready.
Sts_Initialized
BOOL
1 = Instruction is initialized.
Use Inp_InitializeReq to reinitialize.
Sts_SmartDvcDiagAvailable
BOOL
1 = Diagnostics of a SMART Device is currently available. Typically used to indicate device requires action to keep operating as expected. Sts_SmartDvcDiagAvailable is a copy of Inp_SmartDvcDiagAvailable.
Sts_CVInfNaN
BOOL
1 = Selected CV is infinite or not a number (1.$, 1.#NaN).
Sts_PosInfNaN
BOOL
1 = Inp_PosFdbk is infinite or not a number (1.$, 1.#NaN).
Sts_BumpOpen
BOOL
1 = Bump Open requested or active.
Sts_BumpClose
BOOL
1 = Bump Close requested or active.
Sts_PosStuck
BOOL
1 = Position is stuck (unchanging) while neither feedback from limit switch Closed nor Opened is on.
Sts_Ramping
BOOL
1 = CV is ramping to target.
Sts_Clamped
BOOL
1 = CV set being clamped at Low or High Limit.
Sts_WindupHi
BOOL
1 = Analog output winding up High, to Inp_WindupHi of the master controller.
Sts_WindupLo
BOOL
1 = Analog output winding up Low, to Inp_WindupLo of the master controller.
Sts_SkipRoCLim
BOOL
1 = Rate of change limiting was skipped this scan (Maintenance, Override, Interlock, Hand).
Sts_Active
BOOL
1 = CV is greater than Cfg_MaxInactiveCV, show graphic symbol as Active.
Sts_FdbkFail
BOOL
1 = Feedbacks are in an invalid state.
Sts_Virtual
BOOL
1 = The instruction treats the device as virtual. The instruction acts as normal but the output is kept de-energized (Out_CVData=0).
0 = The instruction operates the device normally.
Sts_Virtual is a copy of Inp_Virtual.
SrcQ_IO
SINT
Source and quality of primary input or output (enumerated):
0 = Good, live, confirmed good,
1 = Good, live, assumed good,
2 = Good, no feedback, assumed good,
8 = Test, virtualized,
9 = Test, loopback,
10 = Test, manually entered,
16 = Uncertain, live, off-spec,
17 = Uncertain, substituted at device or bus,
18 = Uncertain, substituted at instruction,
19 = Uncertain, using last known good,
20 = Uncertain, using replacement value,
32 = Bad, signal failure,
33 = Bad, channel fault,
34 = Bad, module or communication fault,
35 = Bad, invalid configuration.
SrcQ
SINT
Source and quality of primary value or status (enumerated):
0 = Good, live, confirmed good,
1 = Good, live, assumed good,
2 = Good, no feedback, assumed good,
8 = Test, virtualized,
9 = Test, loopback,
10 = Test, manually entered,
16 = Uncertain, live, off-spec,
17 = Uncertain, substituted at device or bus,
18 = Uncertain, substituted at instruction,
19 = Uncertain, using last known good,
20 = Uncertain, using replacement value,
32 = Bad, signal failure,
33 = Bad, channel fault,
34 = Bad, module or communication fault,
35 = Bad, invalid configuration.
Sts_bFdbk
SINT
Device feedback:
0 = None,
Sts_bFdbk.0: Moving,
Sts_bFdbk.1: Closed,
Sts_bFdbk.2: Opened,
Sts_bFdbk.3: Failure,
Sts_bFdbk.4: Stuck.
Sts_bSts
SINT
Device status:
0 = At target,
Sts_bSts.0: Ramping down,
Sts_bSts.1: Ramping up,
Sts_bSts.2: Clamped at minimum,
Sts_bSts.3: Clamped at maximum,
Sts_bSts.4: Out of Service,
Sts_bSts.5: Bump open,
Sts_bSts.6: Bump close.
Sts_bFault
SINT
Device fault status:
0 = None,
Sts_bFault.0: Feedback fault,
Sts_bFault.1: IO fault,
Sts_bFault.2: Device fault,
Sts_bFault.3: Configuration error.
Sts_eNotify
SINT
Alarm status enumerated values:
0 = Not in alarm, acknowledged,
1 = Not in alarm, unacknowledged or reset required,
2 = Low severity alarm, acknowledged,
3 = Low severity alarm, unacknowledged,
4 = Medium severity alarm, acknowledged,
5 = Medium severity alarm, unacknowledged,
6 = High severity alarm, acknowledged,
7 = High severity alarm, unacknowledged,
8 = Urgent severity alarm, acknowledged,
9 = Urgent severity alarm, unacknowledged.
Sts_eNotifyAll
SINT
Alarm status enumerated values including related objects:
0 = Not in alarm, acknowledged,
1 = Not in alarm, unacknowledged or reset required,
2 = Low severity alarm, acknowledged,
3 = Low severity alarm, unacknowledged,
4 = Medium severity alarm, acknowledged,
5 = Medium severity alarm, unacknowledged,
6 = High severity alarm, acknowledged,
7 = High severity alarm, unacknowledged,
8 = Urgent severity alarm, acknowledged,
9 = Urgent severity alarm, unacknowledged.
Sts_eNotifyIOFault
SINT
IOFault alarm status enumerated values:
0 = Not in alarm, acknowledged,
1 = Not in alarm, unacknowledged or reset required,
2 = Low severity alarm, acknowledged,
3 = Low severity alarm, unacknowledged,
4 = Medium severity alarm, acknowledged,
5 = Medium severity alarm, unacknowledged,
6 = High severity alarm, acknowledged,
7 = High severity alarm, unacknowledged,
8 = Urgent severity alarm, acknowledged,
9 = Urgent severity alarm, unacknowledged.
Sts_eNotifyDeviceFault
SINT
DeviceFault alarm status enumerated values:
0 = Not in alarm, acknowledged,
1 = Not in alarm, unacknowledged or reset required,
2 = Low severity alarm, acknowledged,
3 = Low severity alarm, unacknowledged,
4 = Medium severity alarm, acknowledged,
5 = Medium severity alarm, unacknowledged,
6 = High severity alarm, acknowledged,
7 = High severity alarm, unacknowledged,
8 = Urgent severity alarm, acknowledged,
9 = Urgent severity alarm, unacknowledged.
Sts_eNotifyDev
SINT
Deviation alarm status enumerated values:
0 = Not in alarm, acknowledged,
1 = Not in alarm, unacknowledged or reset required,
2 = Low severity alarm, acknowledged,
3 = Low severity alarm, unacknowledged,
4 = Medium severity alarm, acknowledged,
5 = Medium severity alarm, unacknowledged,
6 = High severity alarm, acknowledged,
7 = High severity alarm, unacknowledged,
8 = Urgent severity alarm, acknowledged,
9 = Urgent severity alarm, unacknowledged.
Sts_eNotifyIntlkTrip
SINT
IntlkTrip alarm status enumerated values:
0 = Not in alarm, acknowledged,
1 = Not in alarm, unacknowledged or reset required,
2 = Low severity alarm, acknowledged,
3 = Low severity alarm, unacknowledged,
4 = Medium severity alarm, acknowledged,
5 = Medium severity alarm, unacknowledged,
6 = High severity alarm, acknowledged,
7 = High severity alarm, unacknowledged,
8 = Urgent severity alarm, acknowledged,
9 = Urgent severity alarm, unacknowledged.
Sts_UnackAlmCount
DINT
Count of unacknowledged alarms.
Sts_eSrc
INT
The current command source enumerated values:
0 = Logic not in use,
4 = Hand,
8 = Maintenance,
16 = Override,
32 = Program,
33 = Program locked,
34 = Program by default (Normal),
64 = Operator,
65 = Operator locked,
66 = Operator by default (Normal),
128 = Maintenance Out of Service,
129 = Programmed Out of Service (rung false),
256 = External.
Sts_bSrc
INT
Active selection bitmap for HMI totem pole with command source request selection:
Sts_bSrc.0: Hand,
Sts_bSrc.1: Programmed Out of Service (rung false),
Sts_bSrc.2: Maintenance Out of Service,
Sts_bSrc.3: Maintenance,
Sts_bSrc.4: Override,
Sts_bSrc.5: External,
Sts_bSrc.6: Program locked,
Sts_bSrc.7: Program,
Sts_bSrc.8: Operator locked,
Sts_bSrc.9: Operator.
Sts_Available
BOOL
1 = Analog output available for control by automation (Program).
Sts_Bypass
BOOL
1 = Bypassable interlocks are bypassed.
Sts_BypActive
BOOL
1 = Interlock bypassing active (bypassed or maintenance).
Sts_MaintByp
BOOL
1 = Device has a maintenance bypass function active.
Sts_NotRdy
BOOL
1 = Device is not ready, see detail bits (Sts_Nrdyxxx) for reason.
Sts_NrdyOoS
BOOL
1 = Device is not ready: Device disabled by Maintenance.
Sts_NrdyCfgErr
BOOL
1 = Device is not ready: Configuration Error.
Sts_NrdyIntlk
BOOL
1 = Device is not ready: Interlock Not OK.
Sts_NrdyIOFault
BOOL
1 = Device is not ready: IO Fault (Shed requires Reset).
Sts_Err
BOOL
1 = Error in configuration: see detail bits (Sts_Errxxx) for reason.
Sts_ErrCVRaw
BOOL
1 = Error in configuration: Raw output scaling Min = Max.
Sts_ErrCVEU
BOOL
1 = Error in configuration: Cfg_CVEUMax <= Cfg_CVEUMin.
Sts_ErrCVRoCDecrLim
BOOL
1 = Error in configuration: Invalid decreasing rate of change.
Sts_ErrCVRoCIncrLim
BOOL
1 = Error in configuration: Invalid increasing rate of change.
Sts_ErrLimit
BOOL
1 = Error in configuration: CV High Limit < CV Low Limit.
Sts_ErrHiDevLim
BOOL
1 = Error in configuration: Cfg_HiDevLim.
Sts_ErrLoDevLim
BOOL
1 = Error in configuration: Cfg_LoDevLim.
Sts_ErrDevDly
BOOL
1 = Invalid timer preset (use 0.0 to 2147483.0).
Sts_ErrCycleTime
BOOL
1 = Invalid timer preset (use 0.0 to 2147483.0).
Sts_ErrOpenRate
BOOL
1 = Invalid timer preset (use 0.0 to 2147483.0).
Sts_ErrCloseRate
BOOL
1 = Invalid timer preset (use 0.0 to 2147483.0).
Sts_ErrStuckTime
BOOL
1 = Invalid timer preset (use 0.0 to 2147483.0).
Sts_ErrMaxOnTime
BOOL
1 = Invalid timer preset (use 0.0 to 2147483.0).
Sts_ErrMinOnTime
BOOL
1 = Invalid timer preset (use 0.0 to 2147483.0).
Sts_ErrBumpTime
BOOL
1 = Invalid timer preset (use 0.0 to 2147483.0).
Sts_ErrDeadTime
BOOL
1 = Invalid timer preset (use 0.0 to 2147483.0).
Sts_ErrCmdCnfrmTimeOutTime
BOOL
1 = Error in configuration: Command confirmation timer preset (use 0.0 to 2147483.0).
Sts_ErrAlm
BOOL
1 = Error in Logix Tag-based alarm settings.
Sts_Hand
BOOL
1 = Hand is selected (supersedes OoS, Maintenance, Override, External, Program, Operator).
Sts_OoS
BOOL
1 = Out of Service is selected (supersedes Maintenance, Override, External, Program, Operator).
Sts_Maint
BOOL
1 = Maintenance is selected (supersedes Override, External, Program, Operator).
Sts_Ovrd
BOOL
1 = Override is selected (supersedes External, Program, Operator).
Sts_Ext
BOOL
1 = External is selected (supersedes Program, Operator).
Sts_Prog
BOOL
1 = Program is selected.
Sts_ProgLocked
BOOL
1 = Program is selected and locked.
Sts_Oper
BOOL
1 = Operator is selected.
Sts_OperLocked
BOOL
1 = Operator is selected and locked.
Sts_ProgOperSel
BOOL
Program/Operator selection (latch) state: 1 = Program, 0 = Operator.
Sts_ProgOperLock
BOOL
Program/Operator lock (latch) state, 1 = Locked, 0 = Unlocked.
Sts_Normal
BOOL
1 = Selection equals the Normal (Program or Operator).
Sts_ExtReqInh
BOOL
1 = External request inhibited, cannot get to External from current state.
Sts_ProgReqInh
BOOL
1 = Program request inhibited, cannot get to Program from current state.
Sts_MAcqRcvd
BOOL
1 = Maintenance acquire command received this scan.
Sts_Alm
BOOL
1 = An alarm is active.
Sts_AlmInh
BOOL
1 = An alarm is shelved or disabled.
Sts_IOFault
BOOL
1 = IO Fault Status Bad.
0 = OK.
There is a predefined default discrete Logix tag-based alarm for the status. Set standard configuration members of the discrete Logix tag-based alarm. Access alarm elements using this format:
PAOTag.@Alarms.Alm_IOFault.AlarmElement
Sts_DeviceFault
BOOL
Device Fault status:
1 = Bad,
0 = OK.
There is a predefined default discrete Logix tag-based alarm for the status. Set standard configuration members of the discrete Logix tag-based alarm. Access alarm elements using this format:
PAOTag.@Alarms.Alm_DeviceFault.AlarmElement
Sts_Dev
BOOL
1 = Deviation (actual position minus target) outside limits,
0 = Deviation within limits.
There is a predefined default discrete tag-based alarm for the status. Set standard configuration members of the discrete tag-based alarm. Access alarm elements using this format:
PAOTag.@Alarms.Alm_Dev.AlarmElement
Sts_IntlkTrip
BOOL
1 = Status: CV held or forced by interlock NOT OK.
There is a predefined default discrete Logix Tag based alarm for the status. Set standard configuration members of the discrete Logix Tag based alarm. Access alarm elements using this format:
PAOTag.@Alarms.Alm_IntlkTrip.AlarmElement
Sts_CnfrmOperCmdReq
BOOL
1 = Operator command request is awaiting confirmation.
Sts_CnfrmOperSPReq
BOOL
1 = Operator set point request is awaiting confirmation.
Sts_RdyAck
BOOL
1 = An alarm is ready to be acknowledged.
Sts_RdyReset
BOOL
1 = A latched alarm or shed condition is ready to be reset.
XRdy_Acq
BOOL
1 = Ready for XCmd_Acq, enable HMI button.
XRdy_Rel
BOOL
1 = Ready for XCmd_Rel, enable HMI button.
XRdy_Reset
BOOL
1 = Ready for XCmd_Reset, enable HMI button.
XRdy_ResetAckAll
BOOL
1 = Ready for XCmd_ResetAckAll, enable HMI button.
Val_Owner
DINT
Current Object Owner ID (0 = not owned).
Private Input Members
Data Type
Description
CmdSrc
P_COMMAND_SOURCE
Control / Command Source Selection
OSet_CV
REAL
Operator setting of controlled variable (output) in engineering units.
Default = 0.
MCmd_Bypass
BOOL
Maintenance command to bypass all bypassable interlocks. The instruction clears this operand automatically.
Default is false.
MCmd_Check
BOOL
Maintenance command to check (not bypass) all interlocks. The instruction clears this operand automatically.
Default is false.
MCmd_OoS
BOOL
Maintenance command to select Out of Service. The instruction clears this operand automatically.
Default is false.
MCmd_IS
BOOL
Maintenance command to select In Service. The instruction clears this operand automatically.
Default is false.
MCmd_Acq
BOOL
Maintenance command to acquire ownership (Operator/Program/External/Override to Maintenance). The instruction clears this operand automatically.
Default is false.
MCmd_Rel
BOOL
Maintenance command to release ownership (Maintenance to Operator/Program/External/Override). The instruction clears this operand automatically.
Default is false.
OCmd_BumpClose
BOOL
Operator Command to bump device closed (used when device position feedback is not available).
OCmd_BumpOpen
BOOL
Operator Command to bump device open (used when device position feedback is not available).
OCmd_Oper
BOOL
Operator command to select Operator (Program to Operator). The instruction clears this operand automatically.
Default is false.
OCmd_Prog
BOOL
Operator command to select Program (Operator to Program). The instruction clears this operand automatically.
Default is false.
OCmd_Lock
BOOL
Operator command to lock Operator (disallow Program). The instruction clears this operand automatically.
Default is false.
OCmd_Unlock
BOOL
Operator command to unlock or release (allow Program to acquire) ownership. The instruction clears this operand automatically.
Default is false.
OCmd_Normal
BOOL
Operator command to select Normal (Operator or Program). The instruction clears this operand automatically.
Default is false.
OCmd_Reset
BOOL
Operator command to reset all alarms and latched shed conditions. The instruction clears this operand automatically.
Default is false.
OCmd_ResetAckAll
BOOL
Operator command to acknowledge and reset all alarms and latched shed conditions. The use of OCmd_ResetAckAll is restricted to HMI. The instruction clears this operand automatically.
Default is false.
OCmd_CmdCncl
BOOL
Operator command to cancel command request. The instruction clears this operand automatically.
Default is false.
OCmd_CmdCnfrm
BOOL
Operator command to confirm command request. The instruction clears this operand automatically.
Default is false.
Private Output Members
Data Type
Description
HMI_BusObjIndex
DINT
HMI bus object index.
MRdy_Bypass
BOOL
1 = Ready to receive MCmd_Bypass, enable data entry field.
MRdy_Check
BOOL
1 = Ready to receive MCmd_Check, enable data entry field.
MRdy_OoS
BOOL
1 = Ready for MCmd_OoS, enable HMI button.
MRdy_IS
BOOL
1 = Ready for MCmd_IS, enable HMI button.
MRdy_Acq
BOOL
1 = Ready for MCmd_Acq, enable HMI button.
MRdy_Rel
BOOL
1 = Ready for MCmd_Rel, enable HMI button.
ORdy_Oper
BOOL
1 = Ready for OCmd_Oper, enable HMI button.
ORdy_Prog
BOOL
1 = Ready for OCmd_Prog, enable HMI button.
ORdy_Lock
BOOL
1 = Ready for OCmd_Lock, enable HMI button.
ORdy_Unlock
BOOL
1 = Ready for OCmd_Unlock, enable HMI button.
ORdy_Normal
BOOL
1 = Ready for OCmd_Normal, enable HMI button.
ORdy_BumpClose
BOOL
1 = Ready for OCmd_BumpClose, enable HMI button.
ORdy_BumpOpen
BOOL
1 = Ready for OCmd_BumpOpen, enable HMI button.
ORdy_CV
BOOL
1 = Ready to receive OSet_CV (enables data entry field).
ORdy_Reset
BOOL
1 = At least one alarm or shed condition requires reset.
ORdy_ResetAckAll
BOOL
1 = At least one alarm or latched shed condition requires reset or acknowledgement.
Public InOut Members
Data Type
Usage
Description
BusObj
BUS_OBJ
InOut
Bus component.
BUS_OBJ Structure
The BUS_OBJ structure links the analog output instruction to other devices and instructions in a complex control strategy, typically into a hierarchy. A Bus Object rolls up status and alarm information from lower-level devices to higher-level control and fans out commands from higher-level control to lower-level devices. Items link to the bus by referencing a single member of the BUS_OBJ array associated with the bus.
This parameter links the instruction to an external tag that contains necessary data for the instruction to operate. The external tag must be of the data type shown, or may be NULL. If NULL, the Bus functions of this instruction are not available.
Members
Data Type
Description
Inp_Cmd
DINT
Input to assert commands
Out_Cmd
DINT
Resultant commands
Inp_CmdLLH
DINT
Input for level normally high commands
Out_CmdLLH
DINT
Resultant line level high commands
Inp_Sts
DINT
Input to assert status
Out_Sts
DINT
Resultant status
Inp_CmdAck
DINT
Input to assert a command acknowledgement
Out_CmdAck
DINT
Resultant command acknowledgements
Inp_SeverityMax
DINT
Input: maximum alarm severity
Out_SeverityMax
DINT
Resultant of maximum alarm severity
Cfg_CmdMask
DINT
Propagation mask for commands
Cfg_CmdLLHMask
DINT
Propagation mask for line level high commands
Cfg_StsMask
DINT
Propagation mask for status
Ref_Index
DINT
Bus array index
Alarms
Discrete Logix Tag based alarms are defined for the following members.
Member
Alarm Name
Description
Sts_IOFault
Alm_IOFault
IO Failure.
Raised when the Inp_IOFault input is true. Use this input to indicate to the instruction that a connection with the module is in fault. This input also indicates if a module reports field power loss/no load/short circuit is occurring for its I/O. If the I/O Fault is configured as a shed fault, the device is commanded Off and cannot be commanded to another state until reset. The alarm condition is not raised when in Virtual.
Sts_DeviceFault
Alm_DeviceFault
Device Confirmed Failure.
Raised when the Inp_DeviceFault input is true. The Device fault alarm condition is not raised when in Virtual.
Sts_Dev
Alm_Dev
Deviation alarm.
Raised when the difference between desired device position and actual device position is greater than High limit or lower than Low limit., i.e. if the following is true:
((Val_CVOut-Val_Pos) > Cfg_HiDevLim) OR ((Val_CVOut-Val_Pos) < Cfg_LoDevLim)
Sts_IntlkTrip
Alm_IntlkTrip
Interlock Trip alarm.
Raised when an interlock not-OK condition causes the device to transition from the On state or a pulsing state to the Off state.
If interlocks are not bypassed, a bypassable interlock or a non-bypassable interlock not-OK condition initiates an interlock trip. If interlocks are bypassed, only a non-bypassable interlock not-OK condition initiates an interlock trip.
Mark the alarm as used or unused and set standard configuration members of the discrete Logix Tag based alarm. Access alarm elements using this format:
PAOTag.@Alarms.AlarmName.AlarmElement
The Program commands for each alarm enable users to Acknowledge, Suppress, Unsupress and Unshelve the Alarm. These commands are propagated to corresponding commands (ProgAck, ProgSuppress, ProgUnsupress, ProgUnshelve) of the tag-based alarm.
There are also Program commands that enable users to Acknowledge, Reset, Suppress and Unsuppress all alarms of the instruction or an alarm set at the same time.
PAO_ProgramAlarmCommands
Operation
The following diagram illustrates the functionality of the PAO instruction:
PAO_OperationDiagram1_v34
The following diagram explains logic for Interlock trip status:
PAO_interlocktripstatus_v34
The following diagram illustrates the functionality of the PAO instruction for a pulsed device:
PAO_OperationDiagram2
Virtualization
When Virtualization is active, the output of the analog output holds at zero and I/O faults are ignored. Manipulate the instruction to operate as if a working analog output is present. Do this for instruction testing and operator training. Set the Inp_Virtual operand to 1 to enable virtualization. After finishing virtualization, set the Inp_Virtual operand to 0 to return to normal operation.
Configuration of Strings for HMI
Configure strings for HMI faceplates, as seen in
FactoryTalk View
, and for the
Logix Designer
configuration dialog box. The strings are set to extended properties of tag items. Configure the strings in the
Logix Designer
application only.
  • Description
  • Label for graphic symbol
  • Tag name
  • Display Library for HMI Faceplate call-up
  • Instruction name
  • Area name
  • URL link
  • CV raw units – EngineeringUnit information from Out_CVData tag
  • CV engineering units – EngineeringUnit information from Val_CVOut tag
  • Path to an object with more information – Navigation information from Cfg_HasMoreObj member of P_ANALOG_INPUT structure, Cfg_HasMoreObj.@Navigation
  • Path to an object with output CV information – Navigation information from Val_CVOut member of P_ANALOG_INPUT structure, Val_CVOut.@Navigation
  • Path to an object with output data information - Navigation information from Inp_PosFdbk member of P_ANALOG_INPUT structure, Inp_PosFdbk.@Navigation
Command Source
The instruction uses the following command sources. The command sources are prioritized in order from highest to lowest in this table.
Command Source
Description
Hand
Logic outside the instruction owns control of the device. The instruction tracks the state of the device for bumpless transfer back to one of the other command sources.
(Highest Priority command source)
Out-of-Service
The instruction is disabled and has no owner.
Maintenance
Maintenance owns control of the device and supersedes Operator, Program, and Override control. Operator commands and settings from the HMI are accepted. Bypassable interlocks and permissives are bypassed, and device timeout checks are not processed.
Override
Priority logic owns control of the device and supersedes Operator and Program control. Override Input (Inp_OvrdCmd) is accepted. If so configured, bypassable interlocks and permissives are bypassed.
Program locked
Program logic owns control of the device. Program commands (PCmd_) are accepted. Operator cannot take control from the Program. Override cannot take control from the Program unless Cfg_OvrdOverLock = 1.
Program
Program logic owns control of the device. Program commands (PCmd_) are accepted.
Operator locked
The Operator owns control of the device. Operator commands (OCmd_) from the HMI are accepted. Program cannot take control from Operator. Override cannot take control from Operator unless Cfg_OvrdOverLock = 1.
Operator
The Operator owns control of the device. Operator commands (OCmd_) from the HMI are accepted.
(Lowest Priority command source)
The instruction is able to enable/disable the following operations:
  • Maintenance Out-of-Service exists
  • Maintenance exists
  • External exists
  • Program (unlocked) exists
  • Program locked exists
  • Operator (unlocked) exists
  • Operator locked exists
  • PCmd_Lock used as a Level (1 = Lock, 0 = Unlock)
The instruction checks for invalid configurations on control forcing the nearest valid configuration.
The core control model deals specifically with the arbitration of the source of the commands and parameters currently being accepted by the receiving function. More specifically, whether the source is:
  • A programmatic entity, one which resides entirely within the processing environment, or
  • An external interface entity, one which issues commands and parameters external and asynchronously to the processing environment.
These sources are known as Prog (Program) and Oper (Operator) control, respectively.
The optional ability to lock into one control source or the other is required to ensure that the other control source cannot acquire privilege when the designer wants to prevent it.
Core Command Source Model
The core control model consists of the following control sources: Oper, OperLocked, Prog, ProgLocked. The control model defaults to this configuration. Other control sources may be present in the model but act as overriding control sources acting independent of the base Operator/Program state machine.
Enabling control sources as Configuration
The individual control sources may be enabled or disabled by the user. The default configuration utilizes the entire base model. The differentiation being that upon power-up of the processing environment the control source will be the designated default. Some combinations of enabled control sources are disallowed as they are either unnecessary or could create unintended changes.
Prog Power Up
Configuration allows the user to specify whether Operator or Program will be the power-up default.
Prog Priority
Configuration allows the user to specify whether Operator or Program commands will win when simultaneously asserted.
Automatic reset of commands
All commands are treated as ‘one-shot-latched.’ This means that all commands are automatically cleared when the instruction executes and processes them.
Change Destination States
Under certain configurations the destination command source for some commands may change. This is in keeping with the intent of the command. Example: If the Prog is disabled, the destination of the OCmd_Prog command is directed to the ProgLocked state instead of the Prog state. This is done to maintain the intent of the OCmd_Prog command: the operator entity wishes to place the function in control of the program. If the command was eliminated then there would be no way to accomplish this. This is only done in configurations where it would cause no conflict or race condition. But serves to preserve as much user functionality as is practical.
Higher Priority Command Sources
Higher priority command sources which operate independently within the model: Override, Maintenance, Out-of-Service, In-Service and Hand.
Monitoring the PAO Instruction
Use the operator faceplate from the PlantPAx library of Process objects for monitoring.
Affects Math Status Flags
No.
Major/Minor Faults
None specific to this instruction. See
Index Through Arrays
for array-indexing faults.
Execution
Ladder Diagram
Condition/State
Action Taken
Prescan
Rung-condition-out is cleared to false.
Sts_eSrc is set to 0. Sts_bSrc is set to 1 (never scanned).
Instruction first run
All commands that are automatically cleared each execution are cleared and ignored.
The Program/Operator selection is set based on the configuration (Cfg_ProgPwrUp).
The Program or Operator lock selection is set to unlocked.
The Maintenance acquired/released state is not modified and persists through a controller powerup or PROG-to-RUN transition.
PSet_Owner and Sts_Owner are set to 0.
Rung-condition-in is false
The instruction is put Out of Service if Inp_Hand=0. The output is de-energized. All alarms are cleared.
Command source selection processing proceeds as normal except that all ownership status bits (Sts_Maint, Sts_Ovrd, Sts_Prog and Sts_Oper) are cleared to 0. Commands are still received for Maintenance, Operator, and Program and are processed behind the scenes, just as they are in Hand mode.
Rung-condition-in is true
Set rung-condition-out to rung-condition-in.
The instruction executes.
Postscan
Rung-condition-out is cleared to false.
Function Block Diagram
Condition/State
Action Taken
Prescan
See Prescan in the Ladder Diagram table.
Instruction first run
See Instruction first run in the Ladder Diagram table.
Instruction first scan
See Instruction first run in the Ladder Diagram table.
EnableIn is false
See Rung-condition-in is false in the Ladder Diagram table.
EnableIn is true
See Rung-condition-in is true in the Ladder Diagram table.
Postscan
EnableIn and EnableOut bits are cleared to false.
Structured Text
In Structured Text, EnableIn is always true during normal scan. Therefore, if the instruction is in the control path activated by the logic it will execute.
Condition/State
Action Taken
Prescan
See Prescan in the Ladder Diagram table.
Instruction first run
See Instruction first run in the Ladder Diagram table.
EnableIn is true
See Rung-condition-in is true in the Ladder Diagram table.
Postscan
EnableIn and EnableOut bits are cleared to false.
Example 1: Analog valve
The following example provides a demonstration of using a PAO instruction to control a valve. During normal operation, the operator sets the valve position using PAO through the HMI faceplate. This example also includes interlock conditions low-low level and high-high temperature provided by outputs of PAI instructions. The interlock conditions are used as inputs by PAO to set the valve (Local:0:O.Ch0Data = Out_CVData) to an interlock position (for example, closed). This is done by setting the PAO configuration parameter Cfg_Intlk to 0.
Ladder Diagram
PAO_example_ladder
Function Block Diagram
PAO_example_FBD
Structured Text
FCV_103.Inp_NBIntlkOK := NOT(TT_103.Sts_HiHi OR LT_103.Sts_LoLo);
FCV_103.Inp_IOFault := Local:0:I.Ch0Fault;
PAO(FCV_103, 0);
Local:1:O.Ch0Data := FCV_103.Out_CVData;
Example 2: Manual loading station
This example uses the PAO instruction to implement a manual loading station for a pressure control valve that is used to regulate gas supply to a process. The control valve in our example has opened and closed limit switches and a position feedback. The desired valve position is provided by the operator through the HMI faceplate.
The field inputs for position feedback, opened limit switch, and closed limit switch are connected to the instruction inputs Inp_PosFdbk, Inp_OpenedFdbkData, and Inp_ClosedFdbkData. The Out_CVData is connected to the field output going to the valve.
The parameters Cfg_HasOpenedFdbk and Cfg_HasClosedFdbk are both set to 1 so the instruction knows the field is providing opened and closed limit switches. The parameters Cfg_UseOpenedFdbk and Cfg_UseClosedFdbk are set to 1 so that these limit switches are used to determine device status.
The analog output card is expecting an output in units of 4…20 mA; however, the faceplate shows the value in terms of 0…100% open. Therefore, the scaling parameters are set as follows. Cfg_CVEUMin=0, Cfg_CVEUMax=100, Cfg_CVRawMin=4, Cfg_CVRawMax=20.
The valve position feedback is provided in CV engineering units, percent in our particular case, via PAI instruction.
Ladder Diagram
PAO_example2_ladder
Function Block Diagram
PAO_example2_FBD
Structured Text
PCV_110812.Inp_OpenedFdbkData := I_PSO110812;
PCV_110812.Inp_ClosedFdbkData := I_PSC110812;
PCV_110812.Inp_PosFdbk := I_PZV110812.Val;
PAO(PCV_110812, 0);
O_PV110812 := PCV_103.Out_CVData;
Example 3: Ratchet valve
This example uses the PAO instruction to automate a ratcheting valve that is driven open or closed by using two discrete outputs to control flow. The flow valve in our example has a position feedback. The desired valve position is provided by an output of a control algorithm that is elsewhere in logic.
In this example, the field inputs for position feedback are wired (or connected) to the instruction input Inp_PosFdbk. Out_CVOpenData and Out_CVCloseData are connected to the field outputs going to the valve. The input to the instruction to set valve position is wired to PSet_CV. Cfg_ProgNormal is set to 1 so the instruction defaults to Program mode.
The analog output is not used; however, the faceplate shows the value of Val_CVOut in terms of 0…100% open, CV in engineering units. Therefore, the scaling parameters are set as follows. Cfg_CVEUMin=0, Cfg_CVEUMax=100, Cfg_CVRawMin=0 (default), Cfg_CVRawMax=100 (default)
The feedback signal is provided in CV engineering units via PAI instruction which scales the signal from feedback raw units to CV engineering units.
In this example, the ratcheting control valve is to be adjusted by cycling the open or close valve command for a period of time proportional to the amount the valve is to be moved. Cfg_CycleTime is set to 10, to define the overall period of the cycle to cycle on and off the open or close output. Cfg_OpenRate and Cfg_CloseRate are both set to 1, which means the required valve output is energized 1 second for every 1% difference between the target position and the actual position provided by feedback.
Cfg_MaxOnTime is set to 5 so that the output is energized for no more than 5 seconds of the 10-second cycle time to allow for the valve to move, and the feedback to be verified before the next cycle. Cfg_MinOnTime is set to 1 so that the output does not pulse if the calculated pulse time is less than 1 second.
Ladder Diagram
PAO_example3_ladder
Function Block Diagram
PAO_example3_FBD
Structured Text
FCV_110813.PSet_CV := FIC_110813_Out;
FCV_110813.Inp_PosFdbk := I_FVZ110813;
PAO(FCV_110813, 0);
O_FYO110813 := FCV_110813.Out_CVOpenData;
O_FYC110813 := FCV_110813.Out_CVCloseData;
Provide Feedback
Have questions or feedback about this documentation? Please submit your feedback here.