enableサブシステムをつかったマルチサンプリングレートでの連続系伝達関数について
2 views (last 30 days)
Show older comments
現在、簡単な車両挙動のプラントモデルと、それを10msで動かすコントローラを設計しています。
具体的には車両挙動を固定ステップのソルバー(例:0.001s)で解き、enableサブシステムを使って10回に1回(例:0.01s)動く
コントローラのマルチサンプリングレート風のプログラムを作っています。
しかし、enableサブシステム内に連続系の伝達関数のブロックを置くと、伝達関数の時定数が10分の1になってしまいます。
この場合、伝達関数を目的のサンプリングレートでの離散系に変換すれば正しくはなりそうなのですが、
連続系の伝達関数自体はそのままで、simulinkの設定等で修正する手段はありますか?
またはもっと良いマルチサンプリングレートのモデルを作る方法はありますか?
0 Comments
Answers (1)
Toshinobu Shintai
on 19 Mar 2020
EnableサブシステムではなくRate Transitionを使ってください。
おっしゃっているようなシミュレーションを行う場合の典型的なモデリング方法を示しましたので、添付ファイルをご確認ください。
コンフィギュレーションパラメーターでは固定ステップ0.001sに指定しています。このモデルではControllerサブシステムでPID Controller、PlantサブシステムでTransfer fcnを使っていまして、それぞれ連続のブロックです。
ControllerはRate Transitionのサンプル時間を継承するため、0.01sで動作します。
2 Comments
Toshinobu Shintai
on 23 Mar 2020
申し訳ありません。先日の回答は間違えていました。
固定ソルバーにすると、連続ブロックはコンフィギュレーションパラメーターで指定した固定サンプル時間で動作します。したがって今回の添付モデルでは0.001sの刻みで動作します。
「Controller」サブシステムを別のモデルファイルで作成し、そのモデルを固定ソルバー0.01sに指定、その後、元のモデルで参照モデルとしてControllerモデルを呼ぶことで、Controllerモデル内のブロックは0.01sで動作します。
ちなみにこれは私個人の意見ですが、コントローラに実装することを意識して離散モデルを作ろうとされているのであれば、最初から離散ブロックを用いて設計するべきだと思います。
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!