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

4 visualizaciones (últimos 30 días)
直樹 田中
直樹 田中 el 8 de Sept. de 2020
Comentada: 直樹 田中 el 24 de Dic. de 2020
Embedded CoderでのCコード生成を視野に入れた、simulink上でのブロックチャート作成の際に、
#include、#define、#if等の表現はどのように行えばいいでしょうか?

Respuestas (1)

Toshinobu Shintai
Toshinobu Shintai el 9 de Sept. de 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 comentarios
Toshinobu Shintai
Toshinobu Shintai el 22 de Dic. de 2020
取り込むヘッダファイルにさらにincludeファイルがある(型定義等)場合、コンフィギュレーションパラメータに特に追加で記述する必要はありません。
xxx.hが別ディレクトリにある場合、そのディレクトリにMATLABのパスが通っていればよいです。通っていなければエラーとなります。
直樹 田中
直樹 田中 el 24 de Dic. de 2020
>ディレクトリにMATLABのパスが通っていればよい
 パスを通しましたが、モデルと同一ディレクトリにincludeするファイルを置かなければ(元場所から異動しなければ)エラーが発生してしまっています。
 なにか設定が間違っているのでしょうか?

Iniciar sesión para comentar.

Categorías

Más información sobre 配布 en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!