このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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');