Model predictive controllers use plant, disturbance, and noise models for prediction and state estimation. The model structure used in an MPC controller appears in the following illustration.
You can specify the plant model in one of the following linear-time-invariant (LTI) formats:
The MPC controller performs all estimation and optimization calculations using a discrete-time, delay-free, state-space system with dimensionless input and output variables. Therefore, when you specify a plant model in the MPC controller, the software performs the following, if needed:
Conversion to state space — The
ss command converts the
supplied model to an LTI state-space model.
Discretization or resampling — If the model sample time differs from the MPC
controller sample time (defined in the
Ts property), one of the
If the model is continuous time, the
c2d command converts
it to a discrete-time LTI object using the controller sample time.
If the model is discrete time, the
d2d command resamples it
to generate a discrete-time LTI object using the controller sample time.
Delay removal — If the discrete-time model includes any input, output, or internal
absorbDelay command replaces them with the appropriate
number of poles at z = 0, increasing the total number of discrete states. The
InternalDelay properties of the resulting state space model are all
Conversion to dimensionless input and output variables — The MPC controller enables
you to specify a scale factor for each plant input and output variable. If you do not
specify scale factors, they default to
1. The software converts the
plant input and output variables to dimensionless form as follows:
where Ap, B, C, and D are the constant state-space matrices determined in step 3, and:
Si is a diagonal matrix of input scale factors in engineering units.
So is a diagonal matrix of output scale factors in engineering units.
xp is the state vector from step 3 in engineering units. No scaling is performed on state variables.
up is a vector of dimensionless plant input variables.
yp is a vector of dimensionless plant output variables.
The resulting plant model has the following equivalent form:
Here, , Bpu, Bpv, and Bpd are the corresponding columns of BSi. Also, Dpu, Dpv, and Dpd are the corresponding columns of . Finally, u(k), v(k), and d(k) are the dimensionless manipulated variables, measured disturbances, and unmeasured input disturbances, respectively.
The MPC controller enforces the restriction of Dpu = 0, which means that the controller does not allow direct feedthrough from any manipulated variable to any plant output.
If your plant model includes unmeasured input disturbances, d(k), the input disturbance model specifies the signal type and characteristics of d(k). See Controller State Estimation for more information about the model.
getindist command provides access to the model in
The input disturbance model is a key factor that influences the following controller performance attributes:
Dynamic response to apparent disturbances — The character of the controller response when the measured plant output deviates from its predicted trajectory, due to an unknown disturbance or modeling error.
Asymptotic rejection of sustained disturbances — If the disturbance model predicts a sustained disturbance, controller adjustments continue until the plant output returns to its desired trajectory, emulating a classical integral feedback controller.
You can provide the input disturbance model as an LTI state-space
ss), transfer function (
tf), or zero-pole-gain
zpk) object using
setindist. The MPC controller converts the input disturbance model to a
discrete-time, delay-free, LTI state-space system using the same steps used to convert the
plant model. The result is:
where Aid, Bid, Cid, and Did are constant state-space matrices, and:
xid(k) is a vector of nxid ≥ 0 input disturbance model states.
dk(k) is a vector of nd dimensionless unmeasured input disturbances.
wid(k) is a vector of nid ≥ 1 dimensionless white noise inputs, assumed to have zero mean and unit variance.
If you do not provide an input disturbance model, then the controller uses a default model, which has integrators with dimensionless unity gain added to its outputs. An integrator is added for each unmeasured input disturbance, unless doing so would cause a violation of state observability. In this case, a static system with dimensionless unity gain is used instead.
The output disturbance model is a special case of the more general input disturbance model. Its output, yod(k), is directly added to the plant output rather than affecting the plant states. The output disturbance model specifies the signal type and characteristics of yod(k), and it is often used in practice. See Controller State Estimation for more details about the model.
getoutdist command provides access to the output
disturbance model in use.
You can specify a custom output disturbance model as an LTI state-space
ss), transfer function (
tf), or zero-pole-gain
zpk) object using
setoutdist. Using the same steps as for the plant model,
the MPC controller converts the specified output disturbance model to a discrete-time,
delay-free, LTI state-space system. The result is:
where Aod, Bod, Cod, and Dod are constant state-space matrices, and:
xod(k) is a vector of nxod ≥ 1 output disturbance model states.
yod(k) is a vector of ny dimensionless output disturbances to be added to the dimensionless plant outputs.
wod(k) is a vector of nod dimensionless white noise inputs, assumed to have zero mean and unit variance.
If you do not specify an output disturbance model, then the controller uses a default model, which has integrators with dimensionless unity gain added to some or all of its outputs. These integrators are added according to the following rules:
No disturbances are estimated, that is no integrators are added, for unmeasured plant outputs.
An integrator is added for each measured output in order of decreasing output weight.
For time-varying weights, the sum of the absolute values over time is considered for each output channel.
For equal output weights, the order within the output vector is followed.
For each measured output, an integrator is not added if doing so would cause a violation of state observability. Instead, a gain with a value of zero is used instead.
If there is an input disturbance model, then the controller adds any default integrators to that model before constructing the default output disturbance model.
One controller design objective is to distinguish disturbances, which require a response, from measurement noise, which should be ignored. The measurement noise model specifies the expected noise type and characteristics. See Controller State Estimation for more details about the model.
Using the same steps as for the plant model, the MPC controller converts the measurement noise model to a discrete-time, delay-free, LTI state-space system. The result is:
Here, An, Bn, Cn, and Dn are constant state space matrices, and:
xn(k) is a vector of nxn ≥ 0 noise model states.
yn(k) is a vector of nym dimensionless noise signals to be added to the dimensionless measured plant outputs.
wn(k) is a vector of nn ≥ 1 dimensionless white noise inputs, assumed to have zero mean and unit variance.
If you do not supply a noise model, the default is a unity static gain: nxn = 0, Dn is an nym-by-nym identity matrix, and An, Bn, and Cn are empty.
mpc controller object,
MPCobj.Model.Noise provides access to the measurement noise
If the minimum eigenvalue of is less than 1x10–8, the MPC controller adds 1x10–4 to each diagonal element of Dn. This adjustment makes a successful default Kalman gain calculation more likely.