You can constrain linear combinations of plant input and output variables. For example, you can constrain a particular manipulated variable (MV) to be greater than a linear combination of two other MVs.
The general form of such constraints is:
Here:
is the QP slack variable used for constraint softening. For more information, see Constraint Softening.
are the
manipulated variable values, in engineering units.
are the
predicted plant outputs, in engineering units.
are the
measured plant disturbance inputs, in engineering units.
,
,
,
, and
are constant matrices and vectors. For more information, see
setconstraint
.
As with the QP cost function, output prediction using the state observer makes these constraints a function of the QP decision variables.
To set the mixed input/output constraints of an MPC controller, use the setconstraint
function. To obtain the existing constraints from a controller, use getconstraint
.
When using mixed input/output constraints, consider the following:
Mixed input/output constraints are dimensional by default.
Run-time updating of mixed input/output constraints is supported at the command line and in Simulink®. For more information, see Update Constraints at Run Time.
Using mixed input/output constraints is not supported in MPC Designer.
As an example, consider an MPC controller for a double-integrator plant with mixed input/output constraints.
The basic setup of the MPC controller includes:
A double integrator as the prediction model
Prediction horizon of 20
Control horizon of 20
Input constraints:
plant = tf(1,[1 0 0]); Ts = 0.1; p = 20; m = 20; mpcobj = mpc(plant,Ts,p,m); mpcobj.MV = struct('Min',-1,'Max',1);
-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000. -->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000. -->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.
Constrain the sum of the input u(t)
and output y(t)
must be nonnegative and smaller than 1.2:
To impose this combined (mixed) I/O constraint, formulate it as a set of inequality constraints involving and
.
To define these constraints using the setconstraint
function, set the constraint constants as follows:
setconstraint(mpcobj,[1;-1],[1;-1],[1.2;0]);
Simulate closed-loop control of the linear plant model in Simulink. The controller mpcobj
is specified in the MPC Controller block.
mdl = 'mpc_mixedconstraints';
open_system(mdl)
sim(mdl)
-->Converting the "Model.Plant" property of "mpc" object to state-space. -->Converting model to discrete time. Assuming no disturbance added to measured output channel #1. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
The MPC controller keeps the sum between 0 and 1.2 while tracking the reference signal,
.
bdclose(mdl)