Model Predictive Control Toolboxにおけ​る1ステップ当たりの​計算時間について

6 ビュー (過去 30 日間)
Soichiro Kato
Soichiro Kato 2020 年 9 月 2 日
回答済み: Toshinobu Shintai 2020 年 9 月 2 日
Model Predictive Control ToolboxをMATLAB/Simulink上で実行した際に1ステップ当たりの計算時間を知る方法はありますか。
MPC Controller の時間計測について
こちらの質問と解答を先に見てみたのですが,1)マイコン等に実装した場合の計算時間ではなく、MATLAB/Simulink上で実行した場合の2)全体の計算時間ではなく、1ステップ毎の(平均の)計算時間を知りたく、質問しました。
要はMPC Controllerを設計する際に、プラントと共に設定したサンプリングタイムで最適化計算が間に合っているのかを明示的に知りたいのですが、良い方法はあるのでしょうか。
  2 件のコメント
Toshinobu Shintai
Toshinobu Shintai 2020 年 9 月 2 日
確認ですが、1)の「マイコンではなくMATLAB/Simulink上で実行した場合」の計算時間を知りたい理由は、実機実験の際にMATLABがインストールされたPCを用いて制御を実行したいから、ということでよろしいでしょうか。
「プラントと共に設定したサンプリングタイムで最適化計算が間に合っているのか」というのは、最適化計算が実時間での制御実行間隔に間に合うように計算できているか、ということでしょうか。
Soichiro Kato
Soichiro Kato 2020 年 9 月 2 日
前者については、仰る通りです。実験はマイコンによる制御ではなく、Simulinkの.slxファイルをビルドして行う予定です。Simulink上の(MPC controllerも含めた)ブロック線図をビルドして実験します。
後者についても、仰る通りです。
最適化計算がシミュレーションや実験で設定した制御周期に対して間に合っているのかが知りたいです。
mpcobj = mpc(plant,ts)
のコマンドで設計したtsと実時間での制御間隔(これはtsと同一に設定するつもりです。)が「最適化計算が間に合わないほど小さくない」ことを示したいということです。

サインインしてコメントする。

回答 (1 件)

Toshinobu Shintai
Toshinobu Shintai 2020 年 9 月 2 日
Simulinkモデルの1ステップにかかった実時間を計測する、ライブラリブロックはありませんが、自作することは可能です。
以下のリンク先の、シミュレーションモデルの実行をリアルタイム化する自作ライブラリをご参照ください。
「msfun_realtime_pacer.m」の87, 88行目あたりで、モデルの実行が実時間になるような「待ち時間」を計算しています。ここを改造すると、1ステップの実行にかかった時間を求めることができますので、それをブロックから出力させるポートを用意し、出力させればよいです。
上記ライブラリ、または「MPC Controller の時間計測について」の回答にも一部書かれていますが、一般的にWindows, Mac, Linuxなどの汎用PCは、10ミリ秒以下のオーダーの時間計測が厳密ではなく、また確定的に実行することも難しいです。リアルタイムの制御の用途で用いる際は、100ミリ秒オーダー以上のタイムステップが採用できる場合にのみ用いることを推奨します。

カテゴリ

Help Center および File ExchangeLinear Plant Specification についてさらに検索

Community Treasure Hunt

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

Start Hunting!