Lim PID
P, PI, PD, and PID controller with limited output, anti-windup compensation and setpoint weighting
Description
Equations
Connections
Parameters
The Lim PID component models a proportional-integral-derivative (PID) controller. It differs from the PID Controller in that the proportional gain is coupled with the integral and the derivative gain. This type of setup is more common in an industrial controller.
Anti-windup compensation is incorporated to drive the integrator to 0 if the output is near the saturation points, and the high-frequency derivative gain is limited to avoid excessive amplification of measurement noise.
Setpoint weighting is present, allowing you to specify the setpoint weight in the proportional and the derivative parts independently from the measurement. The controller responds to load disturbances and measurement noise independently of this setting (wp and wd), however, setpoint changes depend on this setting. For example, for the derivative part, it is useful to specify the setpoint weight, wd to 0 if steps occur in the setpoint signal.
The Signal Size parameter allows the block to operate on a vector of signals rather than a single signal.
Initialization
Based on the setting of the Initial Values parameter, the integrator (I) and derivative (D) components in the PID controller are initialized according to the following table.
Setting
Integrator initType
Derivative initType
none
NoInit
steady states
SteadyState
initial states
InitialState
initial outputs
integrator states
In many cases, the most useful initial condition is steady states because initial transients are no longer present. If initType=InitPID⋅SteadyState, then in some cases difficulties might occur. The reason is the equation of the integrator, y.=k⁢u. The steady state equation, x.=0 leads to the condition that the input to the integrator is 0. If the input u is already (directly or indirectly) defined by another initial condition, the initialization problem is singular (that is, has none or infinitely many solutions). This situation occurs often in mechanical systems, where, for example, u=desiredSpeed−measuredSpeed. Because speed is both a state and a derivative, it is natural to initialize it with 0. As sketched, this is not possible. The solution is to not initialize um or the variable that is used to compute um by an algebraic equation.
y={yminy*≤yminy*ymin<y*<ymaxymaxymax≤y*
y*=k⁢ep+eiTi⁢s+ed⁢Td⁢s
ep=wp⁢us−um
ed=wd⁢us−um
ei=us−um+1k⁢Ni⁢y−y*
Name
Modelica ID
us
Setpoint input signal
u_s
um
Measurement input signal
u_m
y
Actuator output signal
Default
Units
Signal Size
1
Dimension of input and output signals
signalSize
Controller Type
PID
Type of controller: P, PI, PD, or PID
controllerType
k
Gain of controller
Ti
0.5
s
Time constant of Integrator block
Td
0.1
Time constant of Derivative block
ymax
Upper limit of output
yMax
ymin
−ymax
Lower limit of output
yMin
wp
Set-point weight for Proportional block (0..1)
wd
0
Set-point weight for Derivative block (0..1)
Ni
0.9
Ni⁢Ti is time constant of anti-windup compensation
Nd
10
The greater Nd, the more ideal the derivative block
Initial Values
Type of initialization (see Initialization section)
initType
xi0
Initial or guess value value for integrator output (= integrator state)
xi_start
xd0
Initial or guess value for state of derivative block
xd_start
y0
Initial value of output
y_start
strict
false
True means use strict limits with noEvent(..)
See Also
PID Controller
Signal Blocks
Download Help Document