Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

C Function ブロック内の開始アクションと終了アクション

この例では、C Function ブロックを使用して、開始アクションと終了アクションをもつレガシ C 関数を統合する方法を示します。

この例では、レガシ C 関数が fault.h に定義されており、fault.c に実装されています。

C Function ブロックからの C 関数の呼び出しを有効にするため、モデルの [コンフィギュレーション パラメーター][シミュレーション ターゲット] ペインにヘッダー ファイルとソース ファイルを指定します。このモデルは、ログ ファイルを開き、そこにデータを書き込んだ後、ログ ファイルを閉じます。C Function ブロックの [開始コード] セクションで関数 openLogFile が呼び出され、[終了コード] セクションで関数 closeLogFile が呼び出されます。[出力コード] セクションで、関数 incAndLogFaultCounter が呼び出されます。レガシ関数のプロトタイプは以下のとおりです。

  • void* openLogFile()

  • closeLogFile(void* fid)

  • incAndLogFaultCounter(void *fid, unsigned int counter, double time)

ここで、void *fid はファイル ポインターで、unsigned int counter はフォルト カウンターで、double time は時間を示します。

この例では、C Function ブロックの端子は次のように設定されます。

  • 関数 openLogFile で返されるファイル ポインターと、フォルト カウンターは、C Function ブロックの永続シンボルです。

  • C Function ブロックの入力は時間にマッピングされます。

model = 'slexCFunctionStartTerm';
open_system(model);
sim(model);
slcc('clearCustomCodeModules');