Simulinkモデルを MATLAB ファイルやコマンドラ​インから起動し、ハー​ドウェアのIOを使っ​て実行する方法を教え​てください。

11 views (last 30 days)
Popurakun
Popurakun on 7 Apr 2022
Commented: Popurakun on 8 Apr 2022
現在、ArduinoをSimulinkから制御を行っています。
Matlabファイルで設定値を入れて、Simulinkモデルを呼んで、結果をworkspaceに入れて、計算したいと考えています。
Matlabファイル上で、sim('model')でSimlinkモデルを実行させた場合、ハードウェア上で実行される出力、データの取り込みが実行されません。
Simulink モデルを MATLAB ファイルやコマンドラインから起動し、"ハードウェアのIO"を使ってSimulinkを実行する方法を教えてください。

Accepted Answer

Toshinobu Shintai
Toshinobu Shintai on 7 Apr 2022
詳しくはこちらのリンク先ドキュメントをご確認ください。
例えば、Simulinkモデルをエクスターナルモードで実行するには、以下のようにコマンドを実行します。
set_param('model_arduino', 'SimulationMode', 'external')
set_param('model_arduino', 'SimulationCommand', 'start')
'model_arduino'は、エクスターナルモードで実行したいSimulinkモデルの名前です。

More Answers (1)

Popurakun
Popurakun on 7 Apr 2022
シンタニ様
ありがとうございました。大変助かりました。実行できました。
関連して、もう一点質問があります。
Simulinkモデルをエクスターナルモードで実行することはできたのですが、
実行結果の参照エラーが起きてしまいます。
どうやらビルドして、ハードウェア上で実行完了する間に、次の計算行を実行してしまっているようです。pauseで回避していますが、Simulinkで計算実行中は、一時停止する方法はありますでしょうか?
  2 Comments
Toshinobu Shintai
Toshinobu Shintai on 8 Apr 2022
set_paramで実行した場合は、仰る通り終わるまでpauseで待つ必要があります。終わったかどうかは、以下のコマンドで 'stopped' が返ってくれば終わったことになりますので、それによって判別できます。
get_param('model_arduino','SimulationStatus')
Popurakun
Popurakun on 8 Apr 2022
シンタニ様
ご回答頂きありがとうございました。
get_param('model_arduino','SimulationStatus')が”Stopped"となるまで、while loopでwaitいたします。
続けて質問で申し訳ございません。
SimulinkをMatlabファイルから呼び出し、
set_param('model_arduino', 'SimulationMode', 'external')
を実行しているのですが、ビルド、ターゲットへのダウンロードを何度も行って、毎度時間がかかってしまいます。Simulinkのモデル内容自体は、何も変えていないのですが、set_param('model_arduino', 'SimulationMode', 'external')の実施時間を短縮できませんでしょうか?

Sign in to comment.

Categories

Find more on ループと条件付きステートメント in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!