simulink Corderで作ったーコードの中身を都度変えたい

SimulinkCoderでcコード化して以下のHPの流れでexe化にしました。
exeも正常に動いたのですが、simulinkモデルではFrom WorkspaceでMATLAB変数からデータを読み取っています。
cコード化するとその時の変数内容が表記されてしまいます。
任意で毎回値を変えたい時はどのようにすればよいのでしょうか。
・モデルの入力は変数によって毎回変わる。
・cコードにすると(exe化)コード化にした時の変数の値が入り値を変えられない。
宜しくお願いします。

 Akzeptierte Antwort

Toshinobu Shintai
Toshinobu Shintai am 25 Sep. 2019

0 Stimmen

Inportブロックを用いることで外部からの入力が行えるようになります。
サンプルモデルを添付しましたのでご確認ください。
今回の場合は、シミュレーション確認用のモデル「simulation_model」と、コード生成対象のモデル「controller_model」に分けています。「simulation_model」からモデル参照で「controller_model」を呼んでいます。
From workspaceは「simulation_model」の方で使っています。
生成されたコードでは、「controller_model_U.signal」に入力したい値を代入すればよいです。

8 Kommentare

qrqr
qrqr am 25 Sep. 2019
Bearbeitet: qrqr am 25 Sep. 2019
ありがとうございます。
controller_model_U.signalに入力したい値を代入とのことですが、
毎回コードを変更したら(値の代入)、exeにする作業をするということでしょうか?
Toshinobu Shintai
Toshinobu Shintai am 25 Sep. 2019
はい。例えばcコードの「controller_model.c」の中の38行目に書かれている構造体のことです。
controller_model_Y.command = sqrt(fabs(controller_model_U.signal));
qrqr
qrqr am 25 Sep. 2019
exeファイルがMATLAB変数を読み取ることは、やはりできないのでしょうか?
Toshinobu Shintai
Toshinobu Shintai am 25 Sep. 2019
質問で返して申し訳ありませんが、MATLAB変数を読み取りたいのはなぜでしょうか。
コード生成する理由は、基本的にはMATLABの外部環境に機能を渡したいからです。例えばその渡す先がVisual Studioであれば、Visual Studioで入力変数を用意し、今回紹介したcontroller_model_U.signalに入力することになります。
Cコード生成したものをまだMATLABで使いたいと考えるユースケースとしては、生成したコードのSIL(Software-in-the-loop)検証をしたいという場合が考えられますが、このためでしょうか。
qrqr
qrqr am 25 Sep. 2019
やりたいこととしてはまず、
From Workspace→計算→To Workspace
この流れをsmulinkでやっています。
しかし、simulinkのライセンスの問題で毎回simulinkを使える環境ではありません(会社でライセンス数に限りがあるため)
そこで、simulinkモデルをcコード→exe化することでライセンス不足を解消できるのではないかと考え今に至ります。
Toshinobu Shintai
Toshinobu Shintai am 25 Sep. 2019
分かりました。
基本的には、Simulinkの無い環境でモデルを実行させるにはコード生成で外部環境に出すしかありません。
例えば上記のVisual Studioで実行環境を構築し、そこにSimulinkモデルの生成コードを持ってくれば、qrqr様のやりたいことは実現可能と思われます。
これを行うのに向いているユースケースとしては、以下の例が挙げられます。
  • 配布数がそれなりに見込めて省コストに貢献する
  • 配布先(取引先/関連会社等)にMATLAB/Simulinkをインストールできない
  • MATLAB/Simulink未対応のOSやデバイス上でモデルロジックを動かしたい
  • エンドユーザはモデルの中身を知る必要は無い
  • モデル構造は変更せず、パラメータのみを変更して複数回実行
  • 開発者にライブラリ呼び出しやVBA等のプログラミング知識がある
qrqr
qrqr am 25 Sep. 2019
ありがとうございます。
例えば、
mファイルでexeを実行させて都度MATLAB変数を読みにいくことは可能ですか?
simulinkモデルをMATLABだけで実行するイメージです。
Toshinobu Shintai
Toshinobu Shintai am 25 Sep. 2019
その点につきまして、前のコメントにて出来ないという意味の回答を致しました。分かりづらくて申し訳ありませんでした。
MathWorksスタッフとしましては、なるべくライセンス購入を検討していただきたく思っております。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Version

R2015b

Community Treasure Hunt

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

Start Hunting!