The model structure used in the MPC controller appears in the following illustration. This section explains how the models connect for prediction and state estimation.
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
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
one of the following occurs:
If the model is continuous time, the
converts it to a discrete-time LTI object using the controller sample
If the model is discrete time, the
resamples it to generate a discrete-time LTI object using the controller
Delay removal. If the discrete-time model includes
any input, output, or internal delays, the
replaces them with the appropriate number of poles at z =
0, increasing the total number of discrete states.
InternalDelay properties of the resulting state
space model are all zero.
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 use.
The input disturbance model is a key factor that influences the following controller performance attributes:
Dynamic response to apparent disturbances. That is, 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 (
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 unity 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
ss), transfer function (
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
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 model.
Note: 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.