How can I have 'measured states' in a MPC controller object in Simulink?

10 views (last 30 days)
I'm trying to model a MPC controller that tries to hold one measured state of a plant constant. Therefore I am using this measureable state as my 'observed output'. To control the plant I have three 'manipulated variables'.
The model of the plant I want to control is based on a Simulink model that I linearized. I am using this linearized state space model as the basis for my MPC object. To design my MPC I am using the 'basic' MPC Controller block from the 'Model Predictive Control' toolbox.
Now my question is: How can I add measured states to the MPC Controller, additional to the one plant output I want to control. I actually can measure multiple of the states of my plant, so I want to provide them to the MPC instead of having them estimated by the Kalmann filter. One way seems to be to use a custom state estimation, is that correct? The deficit would be that I than have to build a state estimator for the unmeasured states.

Accepted Answer

Emmanouil Tzorakoleftherakis
Edited: Emmanouil Tzorakoleftherakis on 25 Jan 2023
Model Predictive Control Toolbox includes built-in Kalman filters for the linear MPC API and blocks. So you really don't need to do anything other than feed the measured outputs to the MPC block. The built-in Kalman filter will take care of the rest
  3 Comments
Emmanouil Tzorakoleftherakis
What I am saying is basically this: if you can measure all the states in your system reliably, you don't need a filter. If you can only measure some of your states, you need to estimate the rest because MPC needs all the states for the internal prediction model. You cannot estimate the "missing states" without an estimator, and to do that, you need to pass the measured states to that filter. This is the notion of obserbability

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!