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
PPERM_avail_LD
Function Block Diagram
PPERM_avail_FBD
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:
PPERM operation diagram
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
PPERM_example_LD1
PPERM_example_LD2
Function Block Diagram
PPERM_example_FBD
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
Have questions or feedback about this documentation? Please submit your feedback here.