メインコンテンツ

初期化関数

初期化関数 (InitFcn) は、モデルのコンパイル開始時に実行または評価されるコールバックの一種です。InitFcn コールバックはモデルまたはブロックのコールバックとして指定できます。

メモ

バリアント制御は、モデル InitFcn コールバック内でのみ定義できます。

InitFcn モデル コールバック

InitFcn モデル コールバックは、次のようなモデルに固有のパラメーターおよび環境設定を初期化するために使用します。

  • モデル パラメーターで使用される変数

  • 必要なソフトウェアのライセンス チェック

Simulink® ツールストリップの [モデル化] タブで [モデル設定] 矢印をクリックし、[モデル プロパティ] をクリックします。InitFcn モデル コールバックは、[モデル プロパティ] ダイアログ ボックスの [コールバック] タブにあります。

InitFcn in Model Properties dialog box

InitFcn モデル コールバックは以下には使用しないでください。

  • シミュレーション ステータスを取得する。slbuild 関数を使用してモデルをシミュレートする場合、またはソフトウェアインザループ (SIL) かラピッド アクセラレータ モードを使用する場合、InitFcn モデル コールバック ステータスは 'stopped' のように表示される場合があります。

  • シミュレーション コマンドを実行する。たとえば、set_param(ModelName,'SimulationCommand','start')set_param(ModelName,'SimulationCommand','update') などのコマンドはモデル InitFcn コールバックで使用しないでください。

  • 他のモデルを変更する。同様に、Model ブロックの InitFcn ブロック コールバックは、参照モデルのパラメーターまたは構造を変更してはなりません。

  • 参照モデルで使用されている変数を上書きする。たとえば、最上位モデルと参照モデルが変数 k を使用する場合、最上位モデルの InitFcn モデル コールバックは、参照モデルの k を変更してはなりません。このようなモデル化パターンでは、異なる変数名またはデータ ディクショナリを使用してください。

  • モデルの構造を編集する (バリアント制御の定義は除く)。たとえば、add_linedelete_line などの関数は InitFcn モデル コールバックで使用しないでください。

モデルで InitFcn コールバックを使用する場合、ブロック パラメーターの欠損している変数の編集時チェックがモデル全体で無効になります。

バリアントをもつ InitFcn モデル コールバックの例については、sldemo_variant_initFcn モデルを開いてください。次に、緑色のブロックをダブルクリックして、推奨ワークフローを使用するモデルを開きます。開いたモデルには Variant Subsystem ブロックと Variant Source ブロックが含まれています。

Model with Variant Subsystem and Variant Source blocks

このモデルでは、InitFcn モデル コールバックを使用して、モデルのパラメーターを初期化します。

InitFcn that defines V, W, W.Value, and W.DataType

PreLoadFcn モデル コールバックまたは PostLoadFcn モデル コールバックでこれらのパラメーターを定義できますが、これらのコールバックはモデルが読み込まれる前または読み込まれた後に実行されます。パラメーターを MATLAB® ワークスペースからクリアし、モデルをシミュレートするとします。PreLoadFcn モデル コールバックと PostLoadFcn モデル コールバックはパラメーターを再作成しません。InitFcn モデル コールバックでパラメーターを定義した場合は、モデルの更新とシミュレーションによってパラメーターが再作成されます。

InitFcn ブロック コールバック

InitFcn ブロック コールバックは、ブロックのパラメーターおよび設定を初期化するために使用します。

ブロックを右クリックします。次に、[プロパティ] をクリックします。InitFcn ブロック コールバックは、[ブロック プロパティ] ダイアログ ボックスの [コールバック] タブにあります。

InitFcn in Block Properties dialog box

InitFcn ブロック コールバックは以下には使用しないでください。

  • 他のブロックのパラメーター (または変数) を変更する。ただし、Subsystem ブロックの InitFcn コールバックを使用して直接の子ブロックのパラメーターを変更する場合は除きます。

  • 構造を変更する。たとえば、add_blockdelete_block などの関数は InitFcn ブロック コールバックで使用しないでください。

  • 別のブロックで使用されるモデル ワークスペース内のグローバル変数または変数を変更する。

  • Model ブロックが参照しているモデルのパラメーター、構造、または設定を変更する。

ブロックで InitFcn コールバックを使用する場合、そのブロックでは、ブロック パラメーターの欠落している変数の編集時チェックが無効になります。

参考

トピック