Process Permissives (PPERM)
This information applies to the CompactLogix 5380P and ControlLogix 5580P controllers.
The Process Permissives (PPERM) instruction collects, or sums up, the permissive conditions that allow a piece of equipment to energize. In most cases, permissive conditions must be true to energize equipment. Once the equipment is energized, permissives are ignored.
The PPERM instruction provides:
- Permissive input OK Check. Evaluates the inputs. If all inputs are in the configured OK state, the instruction sets the All Permissives OK status to true.
- Permissive bypass. Evaluates the inputs that are configured as permissives that cannot be bypassed or can be bypassed (Cfg_Bypassable.x = 1) and are set to be bypassed (MSet_Bypass.x = 1). If those conditions are in their configured OK state, the instruction sets the 'All Non-Bypassable Permissives OK' status to true.
- Summary status. Summarizes its 32 permissive input conditions into two primary status bits:
- Sts_PermOK. Indicates that all permissive conditions are clear regardless of bypass state (ready to run regardless of bypassed state).
- Sts_NBPermOK. Indicates that all permissive conditions that cannot be bypassed are clear and all permissive conditions that are able to be bypassed are either clear or bypassed (ready to run if permissives are bypassed).
Available Languages
Ladder Diagram
Function Block Diagram
Structured Text
PPERM (PPERM tag);
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_PERMISSIVE | tag | Data structure required for proper operation of instruction. |
P_PERMISSIVE Structure
Public members are standard, visible tag members that are programmatically accessible. Private, 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 - System Defined Parameter Default is true. |
Inp_InitializeReq | BOOL | 1 = Request to initialize the instruction. The instruction is normally initialized in instruction first run. Use this request when reinitializing. The instruction clears this operand automatically. Default is true. |
Inp_Perm00 | BOOL | Permissive condition 00, OK to energize if in configured OK state. Default is true. |
Inp_Perm01 | BOOL | Permissive condition 01, OK to energize if in configured OK state. Default is true. |
Inp_Perm02 | BOOL | Permissive condition 02, OK to energize if in configured OK state. Default is true. |
Inp_Perm03 | BOOL | Permissive condition 03, OK to energize if in configured OK state. Default is true. |
Inp_Perm04 | BOOL | Permissive condition 04, OK to energize if in configured OK state. Default is true. |
Inp_Perm05 | BOOL | Permissive condition 05, OK to energize if in configured OK state. Default is true. |
Inp_Perm06 | BOOL | Permissive condition 06, OK to energize if in configured OK state. Default is true. |
Inp_Perm07 | BOOL | Permissive condition 07, OK to energize if in configured OK state. Default is true. |
Inp_Perm08 | BOOL | Permissive condition 08, OK to energize if in configured OK state. Default is true. |
Inp_Perm09 | BOOL | Permissive condition 09, OK to energize if in configured OK state. Default is true. |
Inp_Perm10 | BOOL | Permissive condition 10, OK to energize if in configured OK state. Default is true. |
Inp_Perm11 | BOOL | Permissive condition 11, OK to energize if in configured OK state. Default is true. |
Inp_Perm12 | BOOL | Permissive condition 12, OK to energize if in configured OK state. Default is true. |
Inp_Perm13 | BOOL | Permissive condition 13, OK to energize if in configured OK state. Default is true. |
Inp_Perm14 | BOOL | Permissive condition 14, OK to energize if in configured OK state. Default is true. |
Inp_Perm15 | BOOL | Permissive condition 15, OK to energize if in configured OK state. Default is true. |
Inp_Perm16 | BOOL | Permissive condition 16, OK to energize if in configured OK state. Default is true. |
Inp_Perm17 | BOOL | Permissive condition 17, OK to energize if in configured OK state. Default is true. |
Inp_Perm18 | BOOL | Permissive condition 18, OK to energize if in configured OK state. Default is true. |
Inp_Perm19 | BOOL | Permissive condition 19, OK to energize if in configured OK state. Default is true. |
Inp_Perm20 | BOOL | Permissive condition 20, OK to energize if in configured OK state. Default is true. |
Inp_Perm21 | BOOL | Permissive condition 21, OK to energize if in configured OK state. Default is true. |
Inp_Perm22 | BOOL | Permissive condition 22, OK to energize if in configured OK state. Default is true. |
Inp_Perm23 | BOOL | Permissive condition 23, OK to energize if in configured OK state. Default is true. |
Inp_Perm24 | BOOL | Permissive condition 24, OK to energize if in configured OK state. Default is true. |
Inp_Perm25 | BOOL | Permissive condition 25, OK to energize if in configured OK state. Default is true. |
Inp_Perm26 | BOOL | Permissive condition 26, OK to energize if in configured OK state. Default is true. |
Inp_Perm27 | BOOL | Permissive condition 27, OK to energize if in configured OK state. Default is true. |
Inp_Perm28 | BOOL | Permissive condition 28, OK to energize if in configured OK state. Default is true. |
Inp_Perm29 | BOOL | Permissive condition 29, OK to energize if in configured OK state. Default is true. |
Inp_Perm30 | BOOL | Permissive condition 30, OK to energize if in configured OK state. Default is true. |
Inp_Perm31 | BOOL | Permissive condition 31, OK to energize if in configured OK state. Default is true. |
Inp_BypassActive | BOOL | 1 = Permissive bypassing is currently active. Default is false. |
Cfg_OKState | DINT | Bits indicate which state (0 or 1) of each input is OK to energize. Default is 2#1111_1111_1111_1111_1111_1111_1111_1111. |
Cfg_Bypassable | DINT | Set bits indicate which conditions can be bypassed. Default is 2#0000_0000_0000_0000_0000_0000_0000_0000. |
Cfg_HasMoreObj | BOOL | 1 = Tells HMI an object with more information is available. Default is false. |
Cfg_HasNav | DINT | Set bits indicate which navigation buttons are enabled. Default is 2#0000_0000_0000_0000_0000_0000_0000_0000. |
Public Output Members | Data Type | Description |
---|---|---|
EnableOut | BOOL | Enable Output - System Defined Parameter |
Sts_Initialized | BOOL | 1 = Instruction is initialized. Use Inp_InitializeReq to reinitialize. |
Sts_PermOK | BOOL | Overall permissive status (1 = OK to energize). |
Sts_NBPermOK | BOOL | Non-Bypassable permissive status (1 = all non-bypassable permissives OK to energize). |
Sts_BypActive | BOOL | 1 = Permissive bypassing is active (ignore bypassable permissives). |
Sts_Perm | DINT | Individual permissive status (1 = OK, 0 = don't energize). |
Private Input Members | Data Type | Description |
---|---|---|
MSet_Bypass | DINT | Individual condition maintenance bypass toggles. Default is 2#0000_0000_0000_0000_0000_0000_0000_0000. |
Private Output Members | Data Type | Description |
---|---|---|
N/A | N/A | N/A |
Operation
This diagram illustrates the functionality of the PPERM instruction:
Configuration of Strings for HMI
Configure strings for HMI faceplates (FT View) and for the Logix Designer configuration dialog box. The strings are set to extended properties of tag items. Configure the strings in Logix Designer only.
- Description
- Label for graphic symbol
- Display Library for HMI Faceplate call-up
- Instruction name
- Area name
- URL link
- Input Conditional Text
- Navigation Path
- More Information
Monitor the PPERM 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. |
Instruction first run | The instruction executes normally. |
Rung-condition-in is false | Rung-condition-out is cleared to false. If this instruction is off-scan, then set the summary Permissive OK status bits to false. Only set individual permissive bypasses for conditions that are configured for bypassing. All the MSets for inputs that are NOT bypassable will be cleared. |
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. |
Instruction first run | 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. If this instruction is off-scan, then set the summary Permissive OK status bits to false. Only set individual permissive bypasses for conditions that are configured for bypassing. All the MSets for inputs that are NOT bypassable will be cleared. |
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
Ladder Diagram
Function Block Diagram
Structured Text
P182_Motor_1Perm.Inp_BypActive := P182_Motor.Sts_BypActive;
PPERM(P182_Motor_1Perm);
P182_Motor.Inp_1PermOK := P182_Motor_1Perm.Sts_PermOK;
P182_Motor.Inp_1NBPermOK := P182_Motor_1Perm.Sts_NBPermOK;
P182_Motor.Inp_Hand := E300_P182:I.OperatorStationLocalLEDReadback;
P182_Motor.XCmd_Start1 := E300_P182:I.Pt03Data;
P182_Motor.XCmd_Start2 := E300_P182:I.Pt04Data;
P182_Motor.XCmd_Stop := NOT(E300_P182:I.Pt05Data);
P182_Motor.XCmd_Acq := E300_P182:I.Pt02Data;
PMTR_ci(P182_Motor,P182_CtrlSet,P182_CtrlCmd,P182_CtrlSts);
Provide Feedback