Derivative ブロックを使用して正しくない結果が得られるのはなぜですか?
13 ビュー (過去 30 日間)
古いコメントを表示
Simulink の Derivative ブロックを使用して PID コントローラを作成しましたが、閉ループシステムの出力が期待する結果(閉ループの伝達関数から得られた出力結果)と一致しません。一致しない理由を教えて下さい。
採用された回答
MathWorks Support Team
2010 年 10 月 8 日
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 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Continuous についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!