Main Content

初期化関数

初期化関数 (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 コールバックを使用する場合、そのブロックでは、ブロック パラメーターの欠落している変数の編集時チェックが無効になります。

関連するトピック