PID Controller
This function block represents a PID controller containing the following elements:
- proportional term
- integral term
- differential term
- integral wind-up avoidance logic
- setup of controller output; with auto/manual selection
The controller implements the following continuous transfer function:
Internally, a velocity algorithm is used. The internally generated differential term is added at the last stage; This allows a smooth auto/manual transition and a transient-free parameter setting.
By connecting the D-Term to the X input, the controller will only react to changes in the controlled variable, but not to changes in the setpoint value.
Operating modes in "Manual" mode:
a) The controller works with a manual differential signal input.
b) The manual signal input Yh is interpreted as an absolute value and is channeled directly to the controller output Y as well as to the internal integral sum.
Operations
Overall controller implementation:
![]()
P-term:
![]()
I-term (trapezoid rule):

When the controller output is being limited, the I-term is switched off until the limit condition is over, this condition is recognized as a sign-reversal in the error signal.
D-term:

Signals
| Name | I/O | Type(s) | Function |
|---|---|---|---|
| X | I | FLOAT | Controlled variable (sensor input) |
| d | I | FLOAT | Control deviation |
| Kr | I | FLOAT | Proportional gain input |
| Tn | I | FLOAT | Reset time in [s] |
| Tv | I | FLOAT | Derivative time in [s] |
| Yh | I | FLOAT | Manual set input/manual differential input |
| HA | I | BYTE | Manual mode parameter |
| Yo | I | FLOAT | Upper limit input |
| Yu | I | FLOAT | Lower limit input |
| St | O | BYTE | Status byte |
| Y | O | FLOAT | Controller output |
Parameters
| Tn | =0 | I-term is off |
| Tv | =0 | D-term is off |
| HA[0] | =1 | Manual operation |
| HA[1] | =1 | Y+ adds the manual input Yh to Yi (manual mode a) |
| HA[2] | =1 | Y- subtracts the manual input Yh from Yi (manual mode a) |
| HA[3] | =1 | Mode select input: Yh is channeled directly to Y (manual mode b) |
Status byte
| St [0] | =1 | Limit Yu reached |
| St [1] | =1 | Limit Yo reached |
Visualisierung
The symbol indicates, whether the controller runs in manual or in automatic mode.