simulink上で​連続時間で表される制​御対象と制御器のサン​プル時間(計算時間)​をそれぞれ違うものに​したい

15 views (last 30 days)
雄介 牧本
雄介 牧本 on 2 Dec 2020
simulinkにて連続時間で制御対象と制御器を設計しています.ソルバは可変ステップのode23sを用いており制御器のみ1[ms]の一定の周期で計算させたいと考えています.私が考えた方法はAtomic subsystemで制御器をまとめブロックパラメータのサンプル時間を1[ms]に設定すれば解決できるのではないかと考えました.しかし,添付した画像のようなエラーが発生し実行できません.修正を押しても積分器には'sampleTime'のパラメータはないとあります.
Atomic subsystemでサンプル時間を指定した場合サブシステム内で連続時間ブロックや積分器は使用できないでしょうか.
また,タイトルに示したように「連続時間で表される制御対象と制御器のサンプル時間(計算時間)をそれぞれ違うものにしたい」場合はどのように実装したらできるでしょうか.
よろしくお願いいたします.

Accepted Answer

Toshinobu Shintai
Toshinobu Shintai on 2 Dec 2020
添付ファイルに、「連続時間で表される制御対象と離散時間で動作する制御器」の理想的な作り方を示しました。
離散時間で動作する制御器サブシステムの中では、離散時間の積分や微分のブロックを用いなければなりません。少し手間ですが、置き換えを行っていただく必要があります。
離散時間から連続時間、もしくは異なる離散時間の間同士を接続する際には、添付モデルにありますように、Rate Transitionブロックを用いてください。サンプル時間の異なるブロックにデータを渡すための細かい設定を、このブロックで行うことができます。
  2 Comments
雄介 牧本
雄介 牧本 on 3 Dec 2020
ご回答ありがとうございます.
知識不足による質問で申し訳ないのですが,連続時間の積分器「1/.s」と離散時間の積分の関係についてお聞きしたいです.制御器のサブシステム内で状態方程式を解き,それの出力と状態量を制御器の設計で使用しています.また,その状態方程式の係数行列をほかの部分で使用しており,状態量と係数行列の関係は保たれる必要があります.現在添付ファイルのように実装している部分の連続時間積分器1/sをそのまま離散時間の積分器に変更することで代替可能でしょうか.その際に誤差等の不具合はございますでしょうか.
Toshinobu Shintai
Toshinobu Shintai on 3 Dec 2020
添付画像の積分器ブロックを離散時間に変更した際に、積分器から出力される信号は、1サンプリングステップ前の値となります。状態空間モデルの表現としては、必ずしも問題になる変更ではないと思います。ちなみに「Discrete-Time Integrator」ブロックの積分手法を「後退オイラー」にすると、現サンプリングステップの値を用いることができますが、添付画像のモデルでは代数ループが発生します。
離散時間のブロック同士の接続には、サンプリングのむだ時間や計算の順序関係を意識したモデリングが必要になります。
ちなみに、可変ステップソルバーで解いた結果と完全に一致させるように固定ステップのブロックを調整することはできません。多少の誤差は許容していただく必要があります。

Sign in to comment.

More Answers (0)

Categories

Find more on 一般分野への適用 in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!