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

조회 수: 43 (최근 30일)
直樹 田中
直樹 田中 2020년 9월 8일
댓글: 直樹 田中 2020년 12월 24일
Embedded CoderでのCコード生成を視野に入れた、simulink上でのブロックチャート作成の際に、
#include、#define、#if等の表現はどのように行えばいいでしょうか?

답변 (1개)

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

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 配布에 대해 자세히 알아보기

제품


릴리스

R2019b

Community Treasure Hunt

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

Start Hunting!