### Block: PID

Inports
In | Control error input
Init | Initial value of output Out when enabled
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:

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:

FiP8 bug: When using the TI compiler the step response of the derivative part does not return to zero, but generates an overflow at zero crossing if the derivative parameter value is too high.

Developer note: For the fixed point implementations the source code of block PIDLimit is used.

##### 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
Enable | bool

Outports Data Type
Out | int8

#### Implementation: FiP16

16 Bit Fixed Point Implementation

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

Outports Data Type
Out | int16

#### Implementation: FiP32

32 Bit Fixed Point Implementation

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

Outports Data Type
Out | int32

#### Implementation: Float32

32 Bit Floating Point Implementation

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

Outports Data Type
Out | float32

#### Implementation: Float64

64 Bit Floating Point Implementation

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

Outports Data Type
Out | float64