MATLAB Answers

MPCの状態空間モデルに関して

7 views (last 30 days)
史晃 出口
史晃 出口 on 26 Apr 2021
Answered: Toshinobu Shintai on 26 Apr 2021
現在、伝達関数から状態空間モデルを作成し、MPCのプラントモデルに設定して解析を行っております。
作成した状態空間モデルをssdataで取得したモデルの各行列[A,B,C,D]と、MPCのプラントモデルをgetEstimatorで取得したモデルの各行列[A_,Cm,Bu,Bv,Dvm]の違いがよく分かりません。
下記のコードで実行した場合、例えばssdataでの行列Aは8×8ですが、getEstimatorでの行列A_は9×9となっています。
この関係性や、mpcのプラントモデルとして設定した際にどのようにモデルが変換されているのか詳しく教えていただけませんか?
Ts = 3600;
p = 24;
m = 12;
U = tf(-0.607735,[86440 1],'inputdelay',11840);
V1 = tf(0.000520059,[114410 1]);
V2 = tf(0.002600792,[60160 1]);
V3 = tf(0.000801016,[113840 1]);
Ys = [U V1 V2 V3];
sys = ss(Ys);
sysd = c2d(sys,Ts);
sysnd = absorbDelay(sysd);
plantd = sysnd;
plant = setmpcsignals(plantd,'MV',1,'MD',[2 3 4]);
mpcobj = mpc(plant,Ts,p,m);
[A,B,C,D] = ssdata(plantd)
[L,M,A_,Cm,Bu,Bv,Dvm] = getEstimator(mpcobj)

Answers (1)

Toshinobu Shintai
Toshinobu Shintai on 26 Apr 2021
以下のリンク先にて、MathWorksのMPCの状態推定について説明しています。プラントのダイナミクスを予測する内部モデルよりもgetEstimatorで得られるモデルの方が次元が大きいのは、外乱やノイズなどの変数が加わっているため、と考えられます。

Community Treasure Hunt

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

Start Hunting!