ControlPI

ControlPI (FB)

FUNCTION_BLOCK ControlPI

Short description

Proportional-integral acting controller (PI controller) The direction of action (inverted / direct) can also be set. Typical application: control loops with actuators that do not have a storage character.

Representation

Interfaces

Inputs

Name
Data type
Value range
Initial value
Function

rX

REAL

Analog actual value

rW

REAL

Analog setpoint

xEn

BOOL

Enable of the controller

Outputs

Name
Data type
Value range
Initial value
Function

rY

REAL

0.0

Controller output signal

rDiff

REAL

Control deviation

rPartP

REAL

Proportional part of the output signal

rPartI

REAL

Integral part of the output signal

xLimitActive

BOOL

Status - limit exceedance

Setpoints / parameters

Name
Data type
Value range
Initial value
Function

rMax

REAL

100.0

Upper absolute limit of the output signal

rMin

REAL

0.0

Lower absolute limit of the output signal

rTn

REAL

0.0 …

200.0

Reset time in seconds

rKp

REAL

0.0 …

2.0

Gain factor

rOffset

REAL

0.0

Offset

rInitValue

REAL

0.0

Initialization value for the output signal

rYDisabled

REAL

0.0

Disable value

eAction

eControlMode

eControlMode.Inverted

Direction of action of the controller (Inverted, Direct)

eManModeN

eManNum

eManNum.Auto

Operating mode for the controller output signal

rManValue

REAL

Output signal in manual operation

Function description

General

This function block contains a proportional-integral acting controller (PI controller). The controller's output signal rY is calculated when the controller is enabled ( xEn = TRUE ) and in the controller's automatic operating mode ( eManModeN = eManNum.Auto ) as follows: Output signal: rY = Proportional part + Integral part Proportional part: Proportional part = rKp * control deviation Control deviation: Control deviation = rW - ( rx + rOffset ) [ Direction of action - Inverted: eAction = eControlMode.Inverted ] Control deviation = rX - ( rW + rOffset ) [ Direction of action - Direct: eAction = eControlMode.Direct ] Integral part: Integral part = ( Proportional part * ( sampling time / reset time )) + Integral part ( t-sampling time ) Legend: t-sampling time … time point that was one sampling time before the current time t Sampling time … time interval between two calls of the function block t … current time\

Control / properties - reset time rTn

It may only take values > 0. rTn >>> Sampling time: The integral part remains constant Control deviation = 0: The integral part remains constant Depending on the direction of action of the controller eAction the actual and set values are determined as follows:

| **eAction** | Control deviation | Function | |-------------------------|-------------------------------|-----------------------| | eControlMode.Inverted | *rW* - ( *rx* + **rOffset** ) | Direction of action - Inverted | | eControlMode.Direct | *rX* - ( *rW* + **rOffset** ) | Direction of action - Direct |

Integral part

The integral part is limited both upwards and downwards by the following absolute limits: Upper limit = rMax - Proportional part Lower limit = rMin - Proportional part\

Enable input xEn

If the enable input is not active ( xEn = FALSE ) the disable value rYDisabled is transferred to the output rY ( prerequisite: eManModeN = eManNum.Auto ) and limited by the absolute limits. The integral part is set to 0.0. If the enable input is active ( xEn = TRUE ) the output signal is calculated according to the formula above and transferred to the output rY ( prerequisite: eManModeN = eManNum.Auto ) and limited by the absolute limits. On every rising edge of the enable input xEn the control process is restarted. \

Restart of the controller

On every rising edge of the enable input xEn the control process is restarted. ( Preconditions: eManModeN = eManNum.Auto and xEn = TRUE ) The integral part is set to the difference between rInitValue and the proportional part. \

Control deviation rDiff

The control deviation corresponds to the value of the control deviation from the formula given above. \

Proportional part of the output signal rPartP

At this output the proportional part of the output signal is always available, see description above. \

Integral part of the output signal rPartI

At this output the integral part of the output signal is always available, see description above. \

Absolute limits rMin and rMax

The controller's output signal rY is limited downwards by the absolute limits rMin and upwards by rMax . The absolute limit rMin is set to the current value of rMax - 0.1 if it is >= the current value of rMax . The only exception is manual operation for the controller output signal (eManModeN = eManNum.Man ).\

Status - limit exceedance xLimitActive

The status of the limit exceedance is activated ( xLimitActive = TRUE ) if a limit exceedance upwards or downwards exists ( xEn = TRUE ). The status of the limit exceedance is not activated ( xLimitActive = FALSE ) if no limit exceedance exists or the enable signal is deactivated ( xEn = FALSE ). A limit exceedance exists if the controller's output signal rY reaches / exceeds the upper limit rMax or reaches / falls below the lower limit rMin . \

Operating mode for the controller output signal eManModeN

The parameter eManModeN allows switching the output signal rY from automatic to manual operation and vice versa. In manual mode the output signal rY takes the output signal in manual operation rManValue. The integral part is set to the difference between rInitValue and the proportional part. \

eManModeN

rY

Function

eManNum.Auto

signal according to formula / disable value

Automatic mode - output signal

eManNum.Man

rManValue

Manual mode - output signal

Visualization

\

Codesys

InOut:

Scope
Name
Type
Initial

Input

rX

REAL

Input

rW

REAL

Input

xEn

BOOL

Input Const

rYMax

REAL

100

Input Const

rYMin

REAL

0

Input Const

rTn

REAL

200

Input Const

rKp

REAL

2

Input Const

rOffset

REAL

0

Input Const

rInitValue

REAL

0

Input Const

rYDisabled

REAL

0

Input Const

eAction

eControlMode

eControlMode.Inverted

Input Const

eManModeN

eManNum

eManNum.Auto

Input Const

rManValue

REAL

Output

rY

REAL

0

Output

rDiff

REAL

Output

rPartP

REAL

Output

rPartI

REAL

Output

xLimitAktiv

BOOL

Last updated