EmbeddedCo​derでプリプロセッ​サとしてコード生成す​るための表現

4 views (last 30 days)
直樹 田中
直樹 田中 on 8 Sep 2020
Commented: 直樹 田中 on 24 Dec 2020
Embedded CoderでのCコード生成を視野に入れた、simulink上でのブロックチャート作成の際に、
#include、#define、#if等の表現はどのように行えばいいでしょうか?

Answers (1)

Toshinobu Shintai
Toshinobu Shintai on 9 Sep 2020
添付ファイルに、R2019bでサンプルモデルを作成してみました。「my_controller.slx」を開き、Ctrl + Bでコード生成を行ってください。
[#includeについて]
Simulinkモデルにおいて#includeを使う場面は、外部のCコードをインポートする場合だと思われます。モデルのように「C Caller」というブロックでC言語の関数を呼ぶことができます。#includeの設定は、コンフィギュレーションパラメータのシミュレーションターゲットで設定できます。
[#defineについて]
#defineの用途としては、定数の定義と#ifの条件式の定義、の二つの用途があるかと思います。
定数の定義として活用しい場合は、Simulink.Parameterに対してストレージクラスをDefineに指定すると、その変数はコード生成後に#defineで定義されるようになります。
#ifの条件式の定義については、次を参照してください。
[#ifについて]
C言語の#ifによる条件分岐は、Simulinkではバリアントモデルに相当します。バリアントモデルの設定で、以下のように「ブロック線図の更新中にすべての選択肢を解析し、プリプロセッサの条件を生成する」にチェックを入れます。
これにより、バリアントモデルの切替条件の式がコード生成後はプリプロセッサで作られます。
  3 Comments
直樹 田中
直樹 田中 on 24 Dec 2020
>ディレクトリにMATLABのパスが通っていればよい
 パスを通しましたが、モデルと同一ディレクトリにincludeするファイルを置かなければ(元場所から異動しなければ)エラーが発生してしまっています。
 なにか設定が間違っているのでしょうか?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!