Process Discrete Input (PDI)
This information applies to the CompactLogix 5380P and ControlLogix 5580P controllers.
The Process Discrete Input (PDI) instruction monitors a discrete (true or false) input, and checks for alarm conditions. Use the PDI instruction to process a signal from a channel of a discrete input module. Use the PDI instruction with any discrete (BOOL) signal.
The PDI instruction provides these capabilities:
- De-bounce of the discrete input signal to filter out fast status changes by specifying a minimum time status must maintain state.
- Display of the input state; the 0-state and 1-state names are configurable. The input state is also displayed independently, even when the input is substituted.
- Target Disagree status based on comparing the input state against a target, or normal, state. The Target Disagree status is enabled by a gating input signal with a configurable gate delay. The Target Disagree status on and off delays are configurable. The Target Disagree status has an associated tag-based alarm.
- Handle a process variable (PV) fault input by displaying the fault to the operator. The PV fault has an associated tag-based alarm.
- The operator can select and manually enter a substitute PV. This manual override is made clearly visible to the operator. Optionally, the user can configure the substitute PV signal to track the Target input so that no Target Disagree status or alarm is generated.
- Support for a virtual PV for use in instruction testing, demonstration, or operator training.
Available Languages
Ladder Diagram
Function Block Diagram
Structured Text
PDI(PDI 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 |
---|---|---|---|
PDI | P_DISCRETE_INPUT | tag | Data structure required for proper operation of instruction. |
BusObj | BUS_OBJ | tag | Bus component. May be null. |
P_DISCRETE_INPUT 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_PVData | BOOL | Input signal (process variable) from device. When EnableIn is false the instruction executes and uses the inverse of the Inp_PVData signal for processing. Default is true. |
Inp_ModFault | BOOL | 1 = I/O module failure or module communication status bad, 0 = OK. Default is false. |
Inp_ChanFault | BOOL | 1 = I/O channel fault or failure, 0 = OK. Default is false. |
Inp_PVUncertain | BOOL | Indicates the channel data accuracy is undetermined. 1 = The channel data is uncertain. This input sets Sts_PVUncertain if not in Virtual. Default is false. |
Inp_PVNotify | SINT | Related PV object alarm priority and acknowledgement status. 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. Default = 0. |
Inp_Target | BOOL | Target state of input. Input Inp_PVData is compared with the target state using Gate function. If not in target state, the Target Disagree status (Sts_TgtDisagree) is set to 1 and Target Disagree tag-based alarm is raised (if enabled). Default is true. |
Inp_Gate | BOOL | The gate input used for status detection. 1 = Target Disagree monitoring is enabled. 0 = Target Disagree detection is disabled and the Target Disagree status output is forced off. Default is true. |
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_NoSubstPV | BOOL | Disables the maintenance substitution feature. 0 = The Substitute PV Maintenance function is enabled, 1 = The Substitute PV Maintenance function is disabled. When Cfg_NoSubstPV is 0, the commands MCmd_SubstPV and MCmd_InpPV are used to select the input PV or the substitute PV. Sts_SubstPV is set to 1 when the substitute PV is selected. Default is false. |
Cfg_SubstTracksTarget | BOOL | 1 = The substitute PV tracks Inp_Target, 0 = The substitute PV is set by MSet_SubstPV. Default is false. |
Cfg_NormTextVis | BOOL | 1 = The state text is displayed in Normal state, 0 = The state text is hidden in Normal state. Default is true. |
Cfg_HasMoreObj | BOOL | 1 = Tells HMI an object with more info is available. Default is false. |
Cfg_Debounce | REAL | Minimum time status must maintain state (seconds). Debounces the input PV, ensuring that the status stays in each state a minimum time. Valid = 0.0 to 2147483.0 seconds. Default = 0.0. |
Cfg_GateDly | REAL | Target Disagree Gate delay (seconds). Time Inp_Gate must be 1 before Target Disagree condition is checked. Valid = 0.0 to 2147483.0 seconds. Default = 0.0. |
Cfg_TgtDisagreeOffDly | REAL | Minimum time for input to agree with target to clear status (seconds). Valid = 0.0 to 2147483.0 seconds. Default is 0.0. |
Cfg_TgtDisagreeOnDly | REAL | Minimum time for input to disagree with target to raise status (seconds). Valid = 0.0 to 2147483.0 seconds. Default is 0.0. |
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. |
Set_VirtualPV | BOOL | PV used in Virtual (Sts_Virtual is 1). If the instruction is not in Virtual (Inp_Virtual is 0), the Set_VirtualPV input tracks the input PV (Inp_PVData) for bumpless transfer into Virtual. Default is false. |
PCmd_Virtual | BOOL | Program command to select Virtual (simulated) device operation. 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_Reset | BOOL | Program command to reset all alarms and latched shed conditions requiring reset. 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 | BOOL | Discrete input status (including de-bounce and manual override, if used). 0 = The discrete input is Off, 1 = The discrete input is On. |
Out_InpPV | BOOL | Echo of Inp_PVData (actual raw or virtual input). |
Out_Reset | BOOL | 1 = Reset command has been received and accepted. |
Sts_Initialized | BOOL | 1 = Instruction is initialized. Use Inp_InitializeReq to reinitialize. |
Sts_PVUncertain | BOOL | Indicates the channel data accuracy is undetermined. 1 = The channel data is uncertain. This output is set by Inp_PVUncertain (if not in Virtual). |
Sts_SubstPV | BOOL | 1 = Using substitute PV (Override). |
Sts_InpPV | BOOL | 1 = Using input PV (Normal). |
Sts_Virtual | BOOL | 1 = Using virtual PV instead of the input from the device (Inp_PVData) to calculate output. 0 = The instruction uses input operand Inp_PVData to calculate output. |
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_eSts | SINT | Device confirmed status values: 0 = PV Good, 1 = PV uncertain, 2 = PV bad, 3 = PV substituted. |
Sts_eFault | SINT | Device fault status values: 0 = None, 1 = Target disagree, 2 = Configuration error. |
Sts_eNotify | SINT | All 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 | All 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_eNotifyTgtDisagree | SINT | TgtDisagree 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_MaintByp | BOOL | 1 = The device has a Maintenance Bypass function active. |
Sts_Err | BOOL | 1 = Error in configuration: See detail bits (Sts_Errxxx) for reason. |
Sts_ErrGateDly | BOOL | 1 = Error in configuration: Cfg_GateDly value is invalid. |
Sts_ErrTgtDisagreeOffDly | BOOL | 1 = Error in configuration: Cfg_TgtDisagreeOffDly value is invalid. |
Sts_ErrTgtDisagreeOnDly | BOOL | 1 = Error in configuration: Cfg_TgtDisagreeOnDly value is invalid. |
Sts_ErrDebounce | BOOL | 1 = Error in configuration: Cfg_Debounce value is invalid. |
Sts_ErrAlm | BOOL | 1 = Error in tag-based alarm settings. |
Sts_Alm | BOOL | 1 = An alarm is active. |
Sts_AlmInh | BOOL | 1 = An alarm is shelved or disabled. |
Sts_IOFault | BOOL | IO Fault Status (0 = OK, 1 = Bad). 1 = Channel data is inaccurate. This output is set by Inp_IOFault if not in Virtual. 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: PDITag.@Alarms.Alm_IOFault.AlarmElement |
Sts_TgtDisagreeCmp | BOOL | Input versus Target comparison result before gating. 1 = The input does not match its target. |
Sts_TgtDisagreeGate | BOOL | Target Disagree Gate Delay Status. 1 = The target disagree gate is open. |
Sts_TgtDisagree | BOOL | Gated input versus target comparison result. 1 = Input is not in target state. 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: PDITag.@Alarms.Alm_TgtDisagree.AlarmElement |
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_Reset | BOOL | 1 = Ready for XCmd_Reset, enable HMI button. |
XRdy_ResetAckAll | BOOL | 1 = Ready for XCmd_ResetAckAll, enable HMI button. |
Private Input Members | Data Type | Description |
---|---|---|
MSet_SubstPV | BOOL | Maintenance-entered substitute PV that overrides input PV when Sts_SubstPV is 1. If not using the substitute (Sts_SubstPV is false), the MSet_SubstPV setting tracks the Out value for bumpless transfer from input PV to substitute PV. Default is false. |
MCmd_SubstPV | BOOL | Maintenance command to use Substitute PV (Override input). The instruction clears this operand automatically. Default is false. |
MCmd_InpPV | BOOL | Maintenance command to use Input PV (Normal). The instruction clears this operand automatically. Default is false. |
MCmd_Physical | BOOL | Maintenance command to select Physical device operation (not simulated). The instruction clears this operand automatically. Default is false. |
MCmd_Virtual | BOOL | Maintenance command to select Virtual (simulated) device operation. 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. |
Private Output Members | Data Type | Description |
---|---|---|
HMI_BusObjIndex | DINT | This object's index in the bus array, for use by HMI display. Default is 0. |
MRdy_SubstPV | BOOL | 1 = The instruction is ready for SubstPV command. |
MRdy_InpPV | BOOL | 1 = The instruction is ready for InpPV command. |
MRdy_Physical | BOOL | 1 = Ready for MCmd_Physical, enable HMI button. |
MRdy_Virtual | BOOL | 1 = Ready for MCmd_Virtual, enable HMI button. |
ORdy_Reset | BOOL | 1 = A latched alarm or shed condition is ready to be reset. |
ORdy_ResetAckAll | BOOL | 1 = A latched alarm or shed condition is ready to be reset or acknowledged. |
Public InOut Members | Data Type | Description |
---|---|---|
BusObj | BUS_OBJ | Bus component |
BUS_OBJ Structure
The BUS_OBJ structure links the discrete input 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 tag-based alarms are defined for these members.
Member | Alarm Name | Description |
---|---|---|
Sts_TgtDisagree | Alm_TgtDisagree | Target Disagree status. |
Sts_IOFault | Alm_IOFault | I/O Fault status (not generated when PV Substitution is active). |
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:
PDITag.@Alarms.AlarmName.AlarmElement
There are Program, Operator, and External commands that enable the Reset and Reset & Acknowledge of all alarms of the instruction (Alarm Set) at the same time. This diagram shows how the commands interact with the instruction.
Operation
The Gate function provides the ability to raise an abnormal condition (alarm condition) when another condition is true. For example, a high vibration switch should only generate an alarm when the associated motor is running long enough to stabilize. The Inp_Gate input must be set to 1 (its default value) and the tag-based alarm for Sts_TgtDisagree enabled for alarm to occur. The alarm will not occur until the Inp_Gate input has been set for the Gate Delay (Cfg_GateDly) time.
The alarm is generated when the Inp_PVData (process variable) input is different from the Inp_Target (target) input. The Target indicates the normal condition. For example, a flow switch should indicate flow when a pump is running and should not indicate flow when a pump is stopped. The pump run status is used as the Target input, and when the switch does not match the target (within the allotted time), the Alarm (Flow Loss / Switch Failure) is generated.
TIP:
In Ladder Diagram if the rung-condition-in is false, the instruction uses the inverse of the Inp_PVData signal for processing. This allows the input to be a condition on the rung with PDI rather than mapped into Inp_PVData. To use the rung-condition-in mapping method, set Inp_PVData to 1, its default value.
This instruction includes a substitute PV capability for a manually-entered state. This is useful when a sensor is out of order or for simulation and testing.
The Discrete Input instruction and its input, target and gate signals handle alarm conditions described by these use cases:
- Raises an alarm when the input is in a given alarm state for a configurable amount of time, such as a low level alarm from a float level switch.
- Raises an alarm when the input does not follow another given signal within a configurable amount of time, such as a flow switch which should indicate flow when an associated pump has been running for a period of time and which should indicate NO flow when the associated pump has been stopped for a period of time.
- Raises an alarm when the input is in a given alarm state for a configurable amount of time after enabled by a gating signal, such as a vibration switch on a motor, which should only alarm when the motor has been running long enough for startup vibration to have settled out.
This diagram illustrates the functionality of the PDI instruction:
Debouncing
A bounce is a reversal of state that occurs immediately after a deliberate transition. When filtering bounces you should acknowledge the very first transition as early as possible and ignore subsequent changes until the end of a hold-off period. Use Cfg_Debouncing to specify the hold-off period in seconds.
For example, as soon as the Input PV changes state from 0 to 1, the output changes to 1 and will not then follow the Input PV back to 0 until the Cfg_Debounce time has expired. If Cfg_Debounce is set to 1 second, the output remains at 1 for at least 1 second. After 1 second, if the Input PV was then 0, the output would change to 0 and would remain at 0 for at least 1 second.
This illustration shows the Debounce operation.
Virtualization
Virtualization in PDI provides a virtual 0-state or 1-state input (Set_VirtualPV) that processes like an input. Use virtualization for instruction testing and operator training. Use PCmd_Virtual or MCmd_Virtual to enable virtualization. After finishing virtualization, use PCmd_Physical or MCmd_Physical to return to normal (physical device) operation.
Initialization
The instruction is normally initialized in the instruction first run. Re-initialization can be requested any time by setting Inp_InitializeReq = 1. For proper initialization, when adding the instruction while performing an online edit of the code, make sure that Inp_InitializeReq = 1, the default value.
Configuration of Strings for HMI
Configure strings for HMI faceplates, as seen in
FactoryTalk View
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
- State name strings for 0-state and 1-state
- Label for graphic symbol
- Display Library for HMI Faceplate call-up
- Instruction name
- Area name
- URL link
- More Information
Implementation
This illustration shows normal implementation with the input condition mapped to Inp_PVData on a separate branch.
This illustration shows the implementation with the input condition mapped to the PDI instruction using the rung-condition-in.
Monitor the PDI 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. The state of using raw input or maintenance substitute PV is not modified and persists through a controller powerup or PROG-to-RUN transition. The state of the physical/virtual selection persists through a control power or PROG-to-Run transition. |
Instruction first run | All commands that are automatically cleared each execution are cleared and ignored. The instruction executes normally. |
Rung-condition-in is false | Rung-condition-out is cleared to false. The instruction executes normally, except it uses the inverse of the Inp_PVData signal for processing. |
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 | EnableOut is cleared to false. The state of using raw input or maintenance substitute PV is not modified and persists through a controller powerup or PROG-to-RUN transition. The state of the physical/virtual selection persists through a control power or PROG-to-Run transition. |
Instruction first run | All commands that are automatically cleared on each execution are cleared and ignored. The instruction executes normally. |
Instruction first scan | See Instruction first run in the Function Block Diagram table. |
EnableIn is false | EnableOut is cleared to false. The instruction executes normally, except it uses the inverse of the Inp_PVData signal for processing. |
EnableIn is true | EnableOut is set to true. The instruction executes. |
Postscan | EnableIn and EnableOut bits are cleared to false. |
Structured Text
In Structured Text, EnableIn is always true during normal scan. The instruction executes when it is in the control path activated by the logic.
Condition/State | Action Taken |
---|---|
Prescan | See Prescan in the Function Block Diagram table. |
Instruction first run | See Instruction first run in the Function Block Diagram table. |
EnableIn is true | See EnableIn is true in the Function Block Diagram table. |
Postscan | See Postscan in the Function Block Diagram table. |
Example
In this example, tag I_VSH_P50 is the digital process value monitored by the PDI instruction. This tag provides a Boolean indication of High Vibration. The bad quality indication for the value of the process variable (Inp_ChanFault) comes from the connection status indication on the input module.
Inp_Target is defaulted to 1 indicating that the normal condition for I_VSH_P50 is also 1, and tag comments confirm that 1=OK for this process value. Inp_Gate is connected to the Motor Running status tag (P50_Running) that comes from the Sts_Running output of the P_Motor instruction instance for this motor (P50_Motor). The gate delay is configured to give the motor sufficient time after starting to settle into full normal speed run before enabling the high vibration indication (Sts_TgtDisagree) and alarm. The tag-based alarm for Target Disagree status (Sts_TgtDisagree) applies On Delay timing so the alarm will not raise until after delay time has expired.
Finally, P50_HighVibr is the output tag that indicates the status of I_VSH_P50 with appropriate gate delays based on whether the motor is running.
Ladder Diagram
Function Block Diagram
Structured Text
VAH_50.Inp_PV_Data := I_VSH_P50;
VAH_50.Inp_ChanFault := CAF_117[5];
VAH_50.Inp_Gate := P50_Running;
PDI(VAH_50);
P50_HighVibr := VAH_P50.Sts_TgtDisagree;
Provide Feedback