Main Content

C Caller ブロックを使用した C 関数の呼び出し

この例では、C Caller ブロックを使用して Simulink® で手書きの C 関数を呼び出す方法を示します。

この例では、5 つのカスタム C 関数が my_func.h に定義されており、my_func.c に実装されています。

カスタム コードで使用される C 構造体と列挙型のインポート

C Caller ブロックは C 構造体と列挙型をサポートします。コマンド Simulink.importExternalCTypes を使用して、これらの型を Simulink に一致する Simulink.Bus オブジェクトまたは Simulink.IntEnumType クラスとしてインポートします。これにより、バス型 LIMITBUS および COUNTERBUS と列挙型 TrafficLightColor がインポートされます。これらの型は MATLAB ワークスペースに表示されます。

Simulink.importExternalCTypes('my_func.h', 'EnumClass', 'dynamic');

モデルを開きます。

model = 'slexCCallerExample';
open_system(model);

[シミュレーション ターゲット] コンフィギュレーションへのヘッダー ファイルの追加

[モデル コンフィギュレーション パラメーター] の [シミュレーション ターゲット] ペインでカスタム ヘッダー ファイルとカスタム ソース ファイルを指定します。モデルのディレクトリまたは現在の MATLAB ディレクトリの絶対パスまたは相対パスを指定します。

[インクルード ヘッダー] ペインで C プリプロセッサ構文を使用して、カスタム ヘッダー ファイルを含めます。たとえば、my_func.h ヘッダーを含めるには、次の行を入力します。

#include "my_func.h"
configset.highlightParameter(model, "SimCustomHeaderCode");

[シミュレーション ターゲット] コンフィギュレーションへのソース ファイルの追加

[シミュレーション ターゲット] コンフィギュレーションの [ソース ファイル] ペインでソース ファイルのスペース区切りリストを使用します。ファイル名にスペースが含まれている場合は、これを二重引用符で囲みます (例: "my c file.c")。

configset.highlightParameter(model, "SimUserSources");

モデルのシミュレーションを実行します。

モデルのシミュレーションを実行すると、Simulink は各タイムステップでカスタム C 関数を呼び出します。

sim(model);

参考

関連するトピック