You are on page 1of 7

PIDE - ENHANCED PID FUNCTION BLOCK

The PIDE function block provides advanced capabilities over the standard PID ladder language instruction. In addition, it uses the velocity form of the PID algorithm. The gain terms are applied to the change in the value of the error or PV, not the value of error or PV.

When looking at this instruction, we see that it has a large number of different inputs and outputs. It is important that we select and apply the correct inputs to make the function block function in the mode that is desired. The intent of this document is to break these down into different sections to make the choice easier for all of us.

Operational States

PROGRAM CONTROL

The users application program controls all modes.

OPERATOR CONTROL

The users HMI system controls the normal operation of the PIDE function.

Table 1. Operational States

A boolean output labeled “ProgOper” is provided to indicate the operational condition of

the PIDE function block. It provides data on the control state of the function block for

both modes. If it is set to a logical “1”, the PIDE block is in the Program control state and if set to a logical “0”, it is in the Operator control state.

PIDE - ENHANCED PID FUNCTION BLOCK The PIDE function block provides advanced capabilities over the standard

Figure 2 PIDE Function Block with Operator Control State Inputs and Outputs.

1

 

“OperOperReq” Input

“OperProgReq” Input

“ProgOperReq” Input

“ProgProgReq” Input

 

“ProgOper” Output

Program Mode

Operator Mode

Request “Operator” Mode

X

       

0

 

X

 

X

 

X

   

0

  • X X

   
     

X

   

0

  • X X

   
 

X

 

X

   

0

 

X

   

X

     

0

  • X X

   

Request “Program” Mode

         

1

  • X X

   
   

X

     

1

X

 
 

X

       

1

  • X X

   
                 

Table 3 Operator/Program Mode Selection.

Table 3 shows the logical state of the various inputs required to place the PIDE function block into either the Operator or Program mode state.

Operator Mode Faceplate

Included on the RSLogix50000 install CD are a number of faceplates that can be used with different function blocks. A faceplate is provided for the PIDE function block. This faceplate makes it very easy to use the PIDE with a HMI control package like RSView.

This faceplate is described on pages C-17 through C-19 of the Process Control and Drives Instruction Manual, 1756-RM006A-EN-P.

Modes of Operation

CASCADE/RATIO

The instruction computes the change in the CV. The instruction regulates the CV to maintain the PV at either the SPCascade value for Cascade control or the SPCascade value multiplied by the Ratio value.

AUTO

The instruction computes the change in the CV. Instruction regulates the CV to maintain the PV at the SP

MANUAL

Instruction does not compute the change in the CV. CV = CVProg or CVOper

OVERRIDE

depending upon the operational condition. In this mode, the instruction does not compute the change in SP. This mode is typically used to set a “safe state CV value” for the loop. CV = CVOverride regardless of the control mode.

HAND

Instruction does not compute the change in CV. CV = HandFB, regardless of the control mode. Typically used when an external Hand/Auto station takes control of the loop.

Table 4. Modes of Operation

The Cascade/Ratio, Auto, and Manual modes can be controlled by the user’s program

when in Program control or by an operator faceplate or other interface when in Operator

2

control. Note that the Override and Hand modes have mode request boolean inputs which are only controlled by the user’s program. These inputs operate in both Program and Operator control.

In looking at the function block icon we see that inputs are shown on the left hand side of the block icon and outputs are shown on the right side. The boolean inputs are used to control the state of the PIDE function block while the boolean outputs are used as status or feedback indicators. The programmer, using the setup box inside the function block icon can select which inputs and outputs he wants to display in his program. For purposes of this discussion, analog variables are shown as all caps and boolean variables are shown in lower case letters and have a dot inside their connection boxes.

While the different illustrations and the Figure 7 chart show boolean inputs whose tags

start with the word “Prog”, there are another duplicate set of inputs that start with the

word “Oper” that are used when the function block is in the Operator state. These inputs

are shown with an asterisk in front of their name.

control. Note that the Override and Hand modes have mode request boolean inputs which are only

Figure 5. PIDE with Auto, Manual, Hand and Override Control Functions for the Program Control State Input and Outputs shown.

control. Note that the Override and Hand modes have mode request boolean inputs which are only

3

Figure 6. Additional Inputs and Outputs for Cascade and Ratio Control.

While the illustrations and the Table 7 chart show boolean inputs whose tags start with

the word “Prog”, there are another duplicate set of inputs that start with the word “Oper”

that are used when the function block is in the Operator state. These inputs are shown

with an asterisk in front of their name.

The chart in Table 7 shows how the different control modes for the PIDE function block

are achieved with different input combinations right hand columns.

..

Status indicator states are shown in the

 

ProgHandReq

* ProgManualReg

* ProgAutoReq

ProgOverrideReq

* ProgCasRatReq

AllowCasRat

UseRatio

 

Auto

Manual

Override

Hand

CasRat

Enable “Hand” mode

X

                   

X

 

Enable “Override” mode

     

X

           

X

   

Enable “Manual” mode

 

X

             

X

     

Enable “Auto” mode

   

X

         

X

       

“Manual” from “Auto”

 

X

X

           

X

     

“Auto” from “Manual”

   

X

         

X

       

Enable “Cascade” mode

       

X

         
  • X X

   

Enable “Ratio” mode

       

X

 

X

     
  • X X

   

Back to “Auto” mode

   

X

         

X

       

“Hand” from “Manual”

X

X

                 

X

 

“Hand” from “Auto”

X

 

X

               

X

 

“Hand” from “Override” mode

X

   

X

             

X

 

“Override” mode

   

X

X

           

X

   

“Hand” mode

X

 

X

X

             

X

 

Table 7. Control Modes Selection and Feedback Indicators.

Status Words 1 and 2

Two status words are included in the PIDE control structure. They are named “Status 1” and “Status 2”. Both of these status words are DINT’s and in normal operation, should

have a value of zero. Each bit in the status word has a different meaning and provides lots of help in trouble shooting problems in the instruction setup. The error data is expressed in HEX in the PIDE control structure. Tables 8 and 9

Status 1 provides information on the status of the instruction. Everything is fine when it has a a value of 0. It uses bits 00 through 29. Each bit has a different meaning with bit 00 indicating that a fault has been detected when its value equals 1. A breakdown of what each error individual bit means and information regarding what happens to the value impacted is shown in Table 8.

4

Status 2 provides information on the timing status of the instruction. It uses bits 27 through 31 to indicate invalid timing states. Table 9 gives the information on the meaning of the individual bits for this status word.

Status

Parameter

Explanation

Notes

Word

Bit

Address

 
  • 1.00 InstructFault

An instruction fault has been detected.

 
 
  • 1.01 PVFaulted

Process variable (PV) bad

18

 
  • 1.02 CVFaulted

Control variable (CV) bad

18

 
  • 1.03 HandFBFaulted

Hand FB value bad

19

 
  • 1.04 PVSpanInv

PVEUMax <= PVEUMin

 
 
  • 1.05 SPProgInv

SPProg < SPLLimit or SPProg > SPHLimit

1

 
  • 1.06 SPOperInv

SPOper < SPLLimit or SPOper > SPHLimit

1

 
  • 1.07 SPCascadeInv

SPCascade < SPLLimit or SPCascade > SPHLimit

1

 
  • 1.08 SPLimitsInv

SPLLimit < PVEUMin, SPHLimit > PVEUMax, or SPHLimit < SPLLimit.

2

 
  • 1.09 RatioProgInv

RatioProg < RatioLLimit or RatioProg > RatioHLimit

3

 
  • 1.10 RatioOperInv

RatioOper < RatioLLimit or RatioOper > RatioHLimit

3

 
  • 1.11 RatioLimitsInv

Low limit < 0 or High limit < low limit.

 
 
  • 1.12 CVProgInv

CVProg < 0 or CVProg > 100, or CVProg < CVLLimit or CVProg > CVHLimit when CVManLimiting is set.

4

 
  • 1.13 CVOperInv

CVOper < 0 or CVOper > 100, or CVOper < CVLLimit or CVOper > CVHLimit when CVManLimiting is set

4

 
  • 1.14 CVOverrideInv

CVOverride < 0 or CVOverride > 100.

4

 
  • 1.15 CVPreviousInv

CVPrevious < 0 or CVPrevious > 100 or > CVHLimit when in Auto or Cascade/Ratio mode.

5

 
  • 1.16 CVEUSpanInv

Invalid CVEU span.

6

 
  • 1.17 CVLimitsInv

CVLLimit < 0, CVHLimit > 100, or CVHLimit < CVLLimit.

7

 
  • 1.18 CVROCLimitInv

CVROCLimit < 0.

8

  • 1.19 FFInv

 

FF < -100 or FF > 100.

9

 
  • 1.20 FFPreviousInv

FFPrevious < -100 or FFPrevious > 100.

10

 
  • 1.21 HandFBInv

HandFB < 0 or HandFB > 100.

11

 
  • 1.22 PgainInv

Pgain < 0.

12

 
  • 1.23 IGainInv

Igain < 0.

13

 
  • 1.24 DGainInv

Dgain < 0.

14

 
  • 1.25 ZCDeadbandInv

ZCDeadband < 0

15

 
  • 1.26 PVDeadbandInv

PVDeadband < 0

 
 
  • 1.27 PVROCLimitsInv

PVROCPostLimit < 0, PVROCNegLimit < 0, or PVROCPeriod < 0.

 
 
  • 1.28 DevLLimitsInv

Low low limit < 0, Low limit < 0, High limit < 0 or High high limit < 0.

16

 
  • 1.29 DevDeadbandInv

Deviation deadband < 0.

17

Table 8. Status 1 Instruction Faults

Many of the faults are derived from limit settings for the different variables that the PIDE uses. It is very important to make sure that when limits are used, they are set properly.

Notes:

  • 1. The instruction uses the limited value for SP.

  • 2. The instruction limits the value using SPLLimit.

  • 3. The instruction limits the value for Ratio.

  • 4. The instruction limits the value for CV.

5

5.

The instruction uses the limited value for CV n-1 .

  • 6. The instruction uses a value of CVEUMax = CVEUMin.

  • 7. If CVHLimit < CVLLimit, the instruction limits CV using CVLLimit.

  • 8. The instruction disables ROC limiting.

  • 9. The instruction uses the limited value for FF.

    • 10. The instruction uses the limited value for FF n-1.

    • 11. The instruction uses the limited value for CV.

    • 12. The instruction uses a value of Pgain = 0.

    • 13. The instruction uses a value of Igain = 0.

    • 14. The instruction uses a value of Dgain = 0.

    • 15. The instruction disables zero crossing deadband.

    • 16. The instruction uses 0 for the invalid limit.

    • 17. The instruction uses a value of DevDeadband = 0.

    • 18. Fault bit is set by the fault indicator of the analog input or output module.

    • 19. Fault bit is set by the fault indicator of the analog input module which reads the HAND signal from an External Auto-Manual station.

Status

Parameter

Explanation

Word

Bit

Address

 
  • 27 TimingModeInv

Invalid TimingMode value

 
  • 28 RTSMissed

Only used in real time sampling mode. Set when ABS[ DeltaT RTSTime}> 1 (.oo1 second).

 
  • 29 RTSTimeInv

Invalid RTSTime value.

 
  • 30 RTSTimeStampInv

Invalid RTSTimeStamp value

 
  • 31 DeltaTInv

Invalid DeltaT value

Table 9. Status 2 - Timing Status Errors

Indicators

The PIDE function block has a number of boolean outputs which are used for status or alarm indicators. These may be selected or deselected by checking or unchecking the appropriate box in the function blocks for the desired indicator. Some of these indicators have been reviewed earlier in this presentation. When unselected, they will not show up on the function block pictoral.

These indicators and their triggers are explained below in Table 10.

Description

Explanation

CVInitializing

Initialization mode indicator. CVInitializing is set when CVInitReq is set, during instruction first scan, and on a set to cleared transition of CVHealth (bad to good). CVInitializing is cleared after the instruction has been initialized and CVInitReq is cleared.

CVHAlarm

  • CV high alarm indicator

..

Set when calculated value of CV > 100 or CVHLimit.

CVLAlarm

  • CV low alarm indicator

..

Set when calculated value of CV < 0 or CVLLimit.

CVROCAlarm

  • CV rate of change alarm indicator. Set when the rate of change for the CV exceeds

the CVROCLimit.

SPHAlarm

Set point high alarm indicator. Set when SP > SPHLimit.

SPLAlarm

Set point low alarm indicator. Set when SP < SPLLimit.

WindupHOut

Windup high indicator. Set when either a SP high, CV high, or CV low

6

 

limit(depending on the control action) has been reached. This signal is typically used by the WindupHIn input of the primary loop contoller to prevent its output from winding up.

WindupLOut

Windup low indicator. Set when either a SP high, CV high, or CV low limit(depending on the control action) has been reached. This signal is typically used by the WindupLIn input of the primary loop contoller to prevent its output from winding up.

RatioHAlarm

Ratio high alarm indicator. Set when Ratio > RatioHLimit.

RatioLAlarm

Ratio low alarm indicator. Set when Ratio < RatioLLimit.

ZCDeadbandOn

Zero crossing deadband indicator.

When set, the value of CV does not change. If

ZCOff is set, then ZCDeadbandOn is set when the ERROR is within the ZCDeadband range. If ZCOff is cleared, then ZCDeadbandOn is set when ERROR crosses zero and remains within the ZCDeadband range. ZCDeadbandOn is cleared when ERROR exceeds the deadband range or when ZCDeadband = 0.

PVHAlarm

PV high alarm indicator. Set when PV => PVHLimit. Cleared when PV < (PVHLimit PVDeadband).

PVLAlarm

PV low alarm indicator. Set when PV =< PVLLimit. Cleared when PV > (PVLLimit + PVDeadband).

PVROCPosAlarm

PV positive rate-of-change alarm indicator. Set when calculated PV rate-of-change => PVROCPosLimit.

PVROCNegAlarm

PV negative rate-of-change alarm indicator. Set when calculated PV rate-of-change =< (PVROCNegLimit x 1).

DevHHAlarm

Deviation high-high alarm indicator. Set when PV => (SP+DevHHLimit). Cleared when PV > (SP+DevHHLimit DevDeadband.

DevHAlarm

Deviation high alarm indicator. Set when PV => (SP+DevHLimit). Cleared when PV > (SP+DevHLimit DevDeadband.

DevLAlarm

Deviation low alarm indicator. Set when PV =< (SP-DevLLimit). Cleared when PV > (SP-DevHLimit + DevDeadband).

DevLLAlarm

Deviation low-low alarm indicator. Set when PV =< (SP-DevLLLimit). Cleared when PV > (SP-DevHLimit + DevDeadband).

   

Table 10 Alarm Indicators

7