In general, the controller states are unmeasured and must be estimated. By
default, the controller uses a steady-state Kalman filter that derives from the
state observer. For more information, see Controller State Estimation.

At the beginning of the *k*th control interval, the controller state is estimated with the following steps:

Obtain the following data:

*x*_{c}(*k*|*k*–1) — Controller state estimate from previous control interval, *k*–1

*u*^{act}(*k*–1) — Manipulated variable (MV) actually used in the plant from *k*–1 to *k* (assumed constant)

*u*^{opt}(*k*–1) — Optimal MV recommended by MPC and assumed to be used in the plant from *k*–1 to *k*

*v*(*k*) — Current measured disturbances

*y*_{m}(_{k}) — Current measured plant outputs

*B*_{u}, *B*_{v} — Columns of observer parameter *B* corresponding to *u*(*k*) and *v*(*k*) inputs

*C*_{m} — Rows of observer parameter C corresponding to measured plant outputs

*D*_{mv} — Rows and columns of observer parameter *D* corresponding to measured plant outputs and measured disturbance inputs

*L*, *M* — Constant Kalman gain matrices

Plant input and output signals are scaled to be dimensionless prior to use in calculations.

Revise
*x*_{c}(*k*|*k*–1)
when *u*^{act}(*k*–1) and
*u*^{opt}(*k*–1)
are different.

Compute the innovation.

Update the controller state estimate to account for the latest measurements.

Then, the software uses the current state estimate *x*_{c}(*k*|*k*) to solve the quadratic program at interval *k*. The solution is *u*^{opt}(*k*), the MPC-recommended manipulated-variable value to be used between control intervals *k* and *k*+1.

Finally, the software prepares for the next control interval assuming that the unknown inputs, *w*_{id}(*k*), *w*_{od}(*k*), and *w*_{n}(*k*) assume their mean value (zero) between times *k* and *k*+1. The software predicts the impact of the known inputs and the innovation as follows: