MATLABでプラントPと制御器Kが構成するフィードバック系のシミュレーションをするとき,
システムの割り算はMATLABでは逆システムの計算と直列接続で計算されるので,この場合P*Kと1+P*Kが共通の極を持っているにも関わらず,これらが相殺されないことによって問題が起こる.
ちなみにseriesとparallelを*と+で書くのは,少なくともSISOの場合には問題ない(中でやってる処理は同じ).MIMOの場合は未確認.
MATLABに限らないけど,強力なツールを使うのは楽なようで難しい・・・
ソースを全部追うのは大変だし・・・
>> s=tf('s');とかやるのはNG.正しくは
>> P=1/s;
>> K=1/(1+s);
>> step(P*K/(1+P*K))
>> step(feedback(P*K,1))とする.一見結果は同じなのだけど
>> P*K/(1+P*K)という違いがあり,高次のシステムを使うときになって初めて問題が顕在化したりしてよろしくない.
Transfer function:
s^2 + s
-----------------------
s^4 + 2 s^3 + 2 s^2 + s
>> feedback(P*K,1)
Transfer function:
1
-----------
s^2 + s + 1
>>
システムの割り算はMATLABでは逆システムの計算と直列接続で計算されるので,この場合P*Kと1+P*Kが共通の極を持っているにも関わらず,これらが相殺されないことによって問題が起こる.
ちなみにseriesとparallelを*と+で書くのは,少なくともSISOの場合には問題ない(中でやってる処理は同じ).MIMOの場合は未確認.
MATLABに限らないけど,強力なツールを使うのは楽なようで難しい・・・
ソースを全部追うのは大変だし・・・
0 件のコメント:
コメントを投稿