| Inports
| |
| In | Control error input |
| Init | Initial value of output Out when enabled |
| max | Maximum output value |
| min | Minimum output value |
| Enable | Enable == 0: Deactivation of block; Out set to 0 Enable 0->1: Preload of integral part Enable == 1: Activation of block |
| Outports
| |
| Out | Control value |
| Mask Parameters | ||
|
Name | ID | Description |
| Kp | 1 | Proportional Factor |
| Ki | 2 | Integral Factor |
| Kd | 3 | Derivative Factor |
| fc | 4 | Cutoff frequency of realization low pass |
| initHandling | 5 | Determines what the signal provided on Init input is used for |
| ts_fact | 6 | Multiplication factor of base sampling time (in integer format) |
PID Controller with Output Limitation and anti wind-up method clamping:
G(s) = Kp + Ki/s + Kd*s/(s/(2*pi*fc) + 1)
Preloading Integral
A rising edge at the Enable inport enables the controller and preloads the integral.
One may choose from two options how to preload the integral value:
Preload the integral from the Init inport.
Preload the integral such that the first output of the controller matches the
current value at the Init inport.
This option allows controller switching without disturbing the control.
Note: Each fixed point implementation uses the next higher integer data type for the integral value storage variable.
Transfer function (zero-order hold discretization method):
When the block is enabled, the PID controller realizes the following transfer function:

Anti Wind-Up
The implemented anti wind-up method is clamping. If the output signal out exceeds the
upper or lower limit value, which is given by the inport max and the inport min, the
integrator is
clamped if the controller input would increase the saturation even further.
FiP8 bug: When using the TI compiler the step response of the derivative part doesn’t return to zero, but generates an overflow at zero crossing if the derivative parameter value is too high.
Developer note: The fixed point implementation source code of this block is used for block PID.
| FiP8 | 8 Bit Fixed Point Implementation |
| FiP16 | 16 Bit Fixed Point Implementation |
| FiP32 | 32 Bit Fixed Point Implementation |
| Float32 | 32 Bit Floating Point Implementation |
| Float64 | 64 Bit Floating Point Implementation |
8 Bit Fixed Point Implementation
| Inports Data Type
| |
| In | int8 |
| Init | int8 |
| max | int8 |
| min | int8 |
| Enable | bool |
| Outports Data Type
| |
| Out | int8 |
16 Bit Fixed Point Implementation
| Inports Data Type
| |
| In | int16 |
| Init | int16 |
| max | int16 |
| min | int16 |
| Enable | bool |
| Outports Data Type
| |
| Out | int16 |
32 Bit Fixed Point Implementation
| Inports Data Type
| |
| In | int32 |
| Init | int32 |
| max | int32 |
| min | int32 |
| Enable | bool |
| Outports Data Type
| |
| Out | int32 |
32 Bit Floating Point Implementation
| Inports Data Type
| |
| In | float32 |
| Init | float32 |
| max | float32 |
| min | float32 |
| Enable | bool |
| Outports Data Type
| |
| Out | float32 |
64 Bit Floating Point Implementation
| Inports Data Type
| |
| In | float64 |
| Init | float64 |
| max | float64 |
| min | float64 |
| Enable | bool |
| Outports Data Type
| |
| Out | float64 |