How to add disturbances into the model predictive control as an input?

20 views (last 30 days)
hello everyone,
so I have a Model Predictive Control, and I have a plant model with a state space representation (figure 1), and I also have a disturbance acting on the plant model and I want to add it as an input TO MPC, but the problem is I want also to add a matrice that quantifies the effect of disturbances on the states. So how can I do that without adding the disturbance as an input to the plant model, only as in input to MPC.
  4 Comments
Sam Chak
Sam Chak on 8 Apr 2023
I'm thinking, if the disturbance is measurable such that it can be compensated by the feedforward technique later, then in theory, should it be true that the disturbance effect can be nullified when the MPC algorithm is run.
I'm wondering if the following is applicable to your case. Correct me if I'm wrong.
Let , where . Thus,
If the disturbance is perfectly compensated, then
.
If you don't want to add the disturbance as an input to the plant model, and the disturbance can be compensated by the feedforward loop, then the MPC should be able to take care of the disturbance-free plant.
jana nassereddine
jana nassereddine on 8 Apr 2023
hey sam,
I want the controller to anticipate the effect of the disturbances on the output. but i didn't really get your last 2 phrases, or the equation, why do you have 2 letter B? it should be different right?

Sign in to comment.

Answers (1)

Sam Chak
Sam Chak on 10 Apr 2023
The matrix expression is equivalent to
where is the input vector.
If you want to anticipate the measured disturbance (md), then you can add the disturbance as shown below:
  1 Comment
kawsar
kawsar on 11 Apr 2023
that's great, thanks sam,
but the problem is now, I found a way to add the disturbances into the state space representation but I don't know how create a block for that, because it's giving me an error for it,
so I have created a matlab function with the code: for the same state representaion(above)
function [SOC,LOH] = statespace(PH2,Pgrid,d)
A = [1 1;1 1];
B = [0.0936 0.0936;-0.339 0];
C = [1 1;1 1];
D = 0;
K = [0.0936;0];
[SOC,LOH] = idss(A,B,C,D,K);
end
and the figure:
now i think the error is:

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!