### Block: PIDLimit

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)

##### Description:

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.

##### Implementations:

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

#### Implementation: FiP8

8 Bit Fixed Point Implementation

Inports Data Type
In | int8
Init | int8
max | int8
min | int8
Enable | bool

Outports Data Type
Out | int8

#### Implementation: FiP16

16 Bit Fixed Point Implementation

Inports Data Type
In | int16
Init | int16
max | int16
min | int16
Enable | bool

Outports Data Type
Out | int16

#### Implementation: FiP32

32 Bit Fixed Point Implementation

Inports Data Type
In | int32
Init | int32
max | int32
min | int32
Enable | bool

Outports Data Type
Out | int32

#### Implementation: Float32

32 Bit Floating Point Implementation

Inports Data Type
In | float32
Init | float32
max | float32
min | float32
Enable | bool

Outports Data Type
Out | float32

#### Implementation: Float64

64 Bit Floating Point Implementation

Inports Data Type
In | float64
Init | float64
max | float64
min | float64
Enable | bool

Outports Data Type
Out | float64