Block: PID



PIC




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:

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:

                    1                z - 1
G (z) = Kp +  KiTs------+ Kd2 πfc ------2πfcTs-
                  z - 1           z - e

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