How to Add Measured Output Disturbance to my State Space Model for MPC Controller?
30 views (last 30 days)
Show older comments
Hello Respectable Community,
I am looking for attention of experts from following background state space modeling and model predictive controller.
Subject: I want to add affect of "Zd" step disturbance to my current plant state space equation which will be use as measured disturbance in mpc controller block.
I am designing an MPC controller, which should be robust to disturbance rejection and I have a known Measured Disturbance which I want to add to "md", but I am getting some errors.
I have following state space equation of my plant, which I found using system identification technique.
%Transfer Function By System identification
num = [-1.324 6.6e05 -6.914e09 5.128e13 -1.054e19]
den = [1 1.99e04 1.371e09 1.145e13 4.037e17]
%Conversion to SS
plant = tf([num],[den], 'OutputDelay',1)
% Simplify the model to remove insignificant poles and zeros
SSpzt = ss(plant) %This gives continuous time linear state space model of TFpzt
Ac = SSpzt.A;
Bc = SSpzt.B;
Cc = SSpzt.C;
Dc = SSpzt.D;
Ts = 3.1309e-05 %Sampling time actual = 3.1309e-05
Td = 0.009; %time Delay baed on frequency data
%Contineous Model to discrete Statespace Matrices
SSpzt_dis = c2dm(Ac,Bc,Cc,Dc,Ts)
[Ad,Bd,Cd,Dd] = c2dm(Ac, Bc, Cc, Dc, Ts)
Dd = 0
sysdis = ss(Ad,Bd,Cd,Dd,Ts)
sysdis shows my plant discrete statespace model which i used to design mpc controller. but when I add md as step, it gives me following error and I know this is because I think I need to add some rows and coloum to my matrix B or C for measured disturbance, but I am not sure how to add them. So, I am asking here for help.
But when I use MPC Controller without md it works fine, but it is not robust to disturbance rejection, and my main concern is to eliminate the disturbance effectively. Even it doesn't respond to disturbance. I am looking for help in this regards. Attached is the files of my design. First run PZTModel1.m file then load PID_Controller22_December, and DisRejection_27December files and open MPC_simulink1.
0 Comments
Answers (1)
Sam Chak
on 29 Dec 2023
Hi @Muhammad
You must have previously created the model predictive controller object 'mpcobj = mpc(model)' based on the specified model set, which includes the plant. However, you may have overlooked the input disturbance. Without considering the input disturbance, you can run the MPC Controller block without the measured disturbance (md) input port.
You can specify the input disturbance model as an LTI state-space (ss), transfer function (tf), or zero-pole-gain (zpk) object using setindist().
See Also
Categories
Find more on Refinement in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!