Lim PID - MapleSim Help

Online Help

All Products    Maple    MapleSim


Lim PID

P, PI, PD, and PID controller with limited output, anti-windup compensation and setpoint weighting

 

Description

Equations

Connections

Parameters

Description

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

NoInit

steady states

SteadyState

SteadyState

initial states

InitialState

InitialState

initial outputs

NoInit

SteadyState

integrator states

InitialState

NoInit

In many cases, the most useful initial condition is steady states because initial transients are no longer present. If initType=InitPIDSteadyState, then in some cases difficulties might occur. The reason is the equation of the integrator, y.=ku. 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=desiredSpeedmeasuredSpeed. 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. If the parameter Limits At Initial is false, the limits at the output of this component are removed from the initialization problem, which leads to a much simpler equation system. After initialization has been performed, it is checked with an assert whether the output is in the defined limits.

Equations

y&equals;{yminy&ast;yminy&ast;ymin<y&ast;<ymaxymaxymaxy&ast;

y&ast;&equals;kep&plus;eiTis&plus;edTds

ep&equals;wpusum

ed&equals;wdusum

ei&equals;usum&plus;1kNiyy&ast;

Connections

Name

Description

Modelica ID

us

Setpoint input signal

u_s

um

Measurement input signal

u_m

y

Actuator output signal

y

Parameters

Name

Default

Units

Description

Modelica ID

Signal Size

1

 

Dimension of input and output signals

signalSize

Controller Type

PID

 

Type of controller: P, PI, PD, or PID

controllerType

k

1

1

Gain of controller

k

Ti

0.5

s

Time constant of Integrator block

Ti

Td

0.1

s

Time constant of Derivative block

Td

ymax

1

 

Upper limit of output

yMax

ymin

ymax

 

Lower limit of output

yMin

wp

1

 

Set-point weight for Proportional block (0..1)

wp

wd

0

 

Set-point weight for Derivative block (0..1)

wd

Ni

0.9

 

NiTi is time constant of anti-windup compensation

Ni

Nd

10

 

The greater Nd, the more ideal the derivative block

Nd

Initial Values

NoInit

 

Type of initialization (see Initialization section)

initType

Limits At Initial

true

 

False means limits are ignored during initialization

limitsAtInit

xi0

0

 

Initial or guess value value for integrator output (= integrator state)

xi_start

xd0

0

 

Initial or guess value for state of derivative block

xd_start

y0

0

 

Initial value of output

y_start

strict

false

 

True means use strict limits with noEvent(..)

strict

See Also

PID Controller

Signal Blocks