Block: PIDLimit



PIC




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:

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 ------------
                  z - 1           z - e-2πfcTs

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