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
Function Block Diagram
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.
Operation
The following diagram illustrates the functionality of the PAO instruction:
The following diagram explains logic for Interlock trip status:
The following diagram illustrates the functionality of the PAO instruction for a pulsed device:
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
Function Block Diagram
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
Function Block Diagram
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
Function Block Diagram
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