メインコンテンツ

S-Function コールバック メソッド

コールバック メソッドの概要

すべての S-Function では、"コールバック メソッド" と呼ばれる一連のメソッドを実装する必要があります。これらのメソッドは、S-Function を含むモデルのシミュレーションを実行するときに Simulink® エンジンで呼び出されます。

S-Function コールバック メソッドは、シミュレーションの各段階で必要なタスクを実行します。モデルのシミュレーション時、シミュレーションの各段階において、Simulink エンジンはモデル内の各 S-Function ブロックに対する適切なメソッドを呼び出します。

S-Function コールバック メソッドで実行されるタスクには次が含まれます。

  • 初期化 — 最初のシミュレーション ループの前に、エンジンは以下を含む S-Function の初期化を行います。

    • S-Function に関する情報を含むシミュレーション構造体である SimStruct を初期化する

    • 入力端子と出力端子の数および次元を設定する

    • ブロックのサンプル時間を設定する

    • ストレージ領域を割り当てる

  • 隣のサンプル ヒットの時間の計算 — 可変サンプル時間ブロックを作成したら、この段階では隣のサンプル ヒットの時間、つまり次のステップ サイズを計算します。

  • メジャー タイム ステップでの出力の計算 — この呼び出しが完了すると、ブロックのすべての出力端子が現在のタイム ステップに対して有効になります。

  • メジャー タイム ステップでの離散状態の更新 — この呼び出しで、ブロックはタイム ステップごとに 1 回実行される離散状態の更新などのアクティビティを実行します。

  • 積分 — これは、連続状態やサンプリングされていないゼロクロッシングがあるモデルに適用されます。S-Function に連続状態がある場合、エンジンは S-Function の出力と微分の部分をマイナー タイム ステップで呼び出します。これは、S-Function の状態をソルバーで計算できるようにするためです。S-Function にサンプリングされていないゼロクロッシングがある場合も、エンジンはゼロクロッシングを特定できるように S-Function の出力とゼロクロッシングの部分をマイナー タイム ステップで呼び出します。

    メモ

    メジャー タイム ステップとマイナー タイム ステップの説明については、動的システムのシミュレーションの段階を参照してください。

コールバック メソッドにはオプションのものもあります。オプションのコールバックは、S-Function でコールバックが定義されている場合にのみエンジンで呼び出されます。

C MEX S-Function のコールバック メソッド

必須のコールバック メソッド

C MEX S-Function は次のコールバック メソッドを実装する必要があります。

  • mdlInitializeSizes – ブロックの出力端子の数など、SimStruct 内のさまざまなパラメーターのサイズを指定します。

  • mdlInitializeSampleTimes – ブロックのサンプル時間を指定します。

  • mdlOutputs – ブロックの出力を計算します。

  • mdlTerminate – シミュレーションの終了時に必須のアクションを実行します。アクションが不要な場合、この関数はスタブとして実装できます。

オプションのコールバック メソッド

次のコールバック メソッドはオプションです。オプションのコールバックは、S-Function でコールバックが定義されている場合にのみエンジンで呼び出されます。

Level-2 MATLAB S-Function のコールバック メソッド

必須のコールバック メソッド

Level-2 MATLAB® S-Function は次のコールバック メソッドを実装する必要があります。

  • setup – ブロックの出力端子の数など、SimStruct 内のさまざまなパラメーターのサイズを指定します。

  • Outputs – ブロックの出力を計算します。

  • Terminate – シミュレーションの終了時に必須のアクションを実行します。アクションが不要な場合、この関数はスタブとして実装できます。

コールバック メソッドの記述については、Write Level-2 MATLAB S-Functionsを参照してください。

オプションのコールバック メソッド

次のコールバック メソッドはオプションです。オプションのコールバックは、S-Function でコールバックが定義されている場合にのみエンジンで呼び出されます。

参考

| | |

トピック