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

16 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.

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!