simulink上で連続時間で表される制御対象と制御器のサンプル時間(計算時間)をそれぞれ違うものにしたい
8 views (last 30 days)
Show older comments
雄介 牧本
on 2 Dec 2020
Commented: Toshinobu Shintai
on 3 Dec 2020
simulinkにて連続時間で制御対象と制御器を設計しています.ソルバは可変ステップのode23sを用いており制御器のみ1[ms]の一定の周期で計算させたいと考えています.私が考えた方法はAtomic subsystemで制御器をまとめブロックパラメータのサンプル時間を1[ms]に設定すれば解決できるのではないかと考えました.しかし,添付した画像のようなエラーが発生し実行できません.修正を押しても積分器には'sampleTime'のパラメータはないとあります.
Atomic subsystemでサンプル時間を指定した場合サブシステム内で連続時間ブロックや積分器は使用できないでしょうか.
また,タイトルに示したように「連続時間で表される制御対象と制御器のサンプル時間(計算時間)をそれぞれ違うものにしたい」場合はどのように実装したらできるでしょうか.
よろしくお願いいたします.
0 Comments
Accepted Answer
Toshinobu Shintai
on 2 Dec 2020
添付ファイルに、「連続時間で表される制御対象と離散時間で動作する制御器」の理想的な作り方を示しました。
離散時間で動作する制御器サブシステムの中では、離散時間の積分や微分のブロックを用いなければなりません。少し手間ですが、置き換えを行っていただく必要があります。
離散時間から連続時間、もしくは異なる離散時間の間同士を接続する際には、添付モデルにありますように、Rate Transitionブロックを用いてください。サンプル時間の異なるブロックにデータを渡すための細かい設定を、このブロックで行うことができます。
2 Comments
Toshinobu Shintai
on 3 Dec 2020
添付画像の積分器ブロックを離散時間に変更した際に、積分器から出力される信号は、1サンプリングステップ前の値となります。状態空間モデルの表現としては、必ずしも問題になる変更ではないと思います。ちなみに「Discrete-Time Integrator」ブロックの積分手法を「後退オイラー」にすると、現サンプリングステップの値を用いることができますが、添付画像のモデルでは代数ループが発生します。
離散時間のブロック同士の接続には、サンプリングのむだ時間や計算の順序関係を意識したモデリングが必要になります。
ちなみに、可変ステップソルバーで解いた結果と完全に一致させるように固定ステップのブロックを調整することはできません。多少の誤差は許容していただく必要があります。
More Answers (0)
See Also
Categories
Find more on シミュレーション条件の構成 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!