Derivative ブロックを使用して正しくない結果が得られるのはなぜですか?
13 views (last 30 days)
Show older comments
Simulink の Derivative ブロックを使用して PID コントローラを作成しましたが、閉ループシステムの出力が期待する結果(閉ループの伝達関数から得られた出力結果)と一致しません。一致しない理由を教えて下さい。
Accepted Answer
MathWorks Support Team
on 8 Oct 2010
Derivative ブロックは、S 領域の理想的な微分 's' と等価ではありません。純粋な微分は、現在の値を知るために未来の入力が必要となりますが、Derivativeブロックは、下記のように現在の値と過去の値から微分値を計算します。
(u[t]-u[t-dt])/dt
ここで、dt は ODE ソルバでの最後のステップ幅を表します。可変ステップソルバを使用している場合、h(s)=s の結果に近づきますが、理想的な微分演算とは異なるため閉ループ伝達関数の出力と一致しません。
この問題を回避するには、下記のような近似微分を使用します。
G(s)=s/(1+a*s)
ここで a はプラントの時定数と比べて小さい値を指定します。近似微分を使用する結果、時間領域の矛盾を解消します。
なお、近似微分を使った PID ブロックが、Simulink Extras ライブラリ の Additional Linear に用意されています。
0 Comments
More Answers (0)
See Also
Categories
Find more on Continuous 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!