Derivative ブロックを使用して正​しくない結果が得られ​るのはなぜですか?

13 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2010 年 10 月 8 日
Simulink の Derivative ブロックを使用して PID コントローラを作成しましたが、閉ループシステムの出力が期待する結果(閉ループの伝達関数から得られた出力結果)と一致しません。一致しない理由を教えて下さい。

採用された回答

MathWorks Support Team
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 件)

カテゴリ

Help Center および File ExchangeContinuous についてさらに検索

Community Treasure Hunt

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

Start Hunting!