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:
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
As with the QP cost function, output prediction using the state observer makes these constraints a function of the QP decision variables.
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
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:
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, .