このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
モデル コールバック
モデルのコールバックは、モデルを読み込んだ後や保存した後など、指定したアクション ポイントで実行されます。
モデルのコールバックを使用して、Automatically Initialize Variables and Load Dataのような一般的なタスクを実行できます。
モデルのコールバックのほとんどは、ライブラリおよびサブシステム参照でサポートされます。ただし、それらのコンポーネントに設定できるのは、ライブラリまたはサブシステム参照に対して実行できるコールバックだけです。たとえば、ライブラリはシミュレートできないため、シミュレーションの一部として呼び出される InitFcn
コールバックはライブラリに対しては設定できません。これと同じ動作がサブシステム参照にも適用されます。
モデルのコールバックの作成
Simulink® ツールストリップの [モデル化] タブの [設計] ギャラリーで、[プロパティ インスペクター] をクリックします。
モデルまたは参照モデルの最上位階層で何も選択せずに、[プロパティ] タブの [コールバック] セクションに設定するコールバックを選択します。
メモ
ブロックのコールバックは、モデルのコールバックとは異なります。参照モデルのモデル コールバックを設定するのに Model ブロックを選択してはなりません。
ボックス内に、コールバックで実行する関数を入力します。
プログラムによりモデルのコールバックを作成するには、関数 set_param
を使用して、MATLAB® コードをモデル コールバック パラメーターに割り当てます。
モデルのコールバック パラメーター
モデルのコールバック パラメーター | いつ実行されるか |
---|---|
| モデルを読み込む前。 パラメーターは、モデルを読み込んだ後に読み込まれるため、 このパラメーターに対するコールバック コードの定義は、モデルで使用される変数を読み込む際に役立ちます。 モデルを開かずに、MATLAB ファイルからモデルを呼び出す場合、 例については、Automatically Initialize Variables and Load Dataを参照してください。 次のような制限があります。 |
| モデルを読み込んだ後。 このパラメーターに対するコールバック コードの定義は、読み込まれたモデルを必要とするインターフェイスを生成する際に役立ちます。 次のような制限があります。
Simulink エディターはこのコールバックの実行後に開くため、 |
| ブロック パラメーターが評価される前の更新フェーズ中。このコールバックは、モデルの更新中およびシミュレーション中に呼び出されます。 モデルの構造を編集するような 参照モデルの内容を編集するような
例については、MATLAB Function ブロックでの MATLAB 関数ファイルの呼び出しを参照してください。 |
| シミュレーション フェーズの前。このコールバックは、モデルの更新中には呼び出されません。 このコールバックは、高速リスタートでシミュレーションを実行するたびに呼び出されます。 |
| シミュレーションの一時停止時。 |
| シミュレーションを継続する前。 |
| シミュレーションの終了時。 出力は、 シミュレーション出力は、コマンド ライン シミュレーションの このコールバックは、高速リスタートでシミュレーションを実行するたびに呼び出されます。 |
| モデルを保存する前。 |
| モデルを保存した後。
|
| ブロック線図を閉じる前。 モデルのブロックに設定されている |
参照モデルのコールバック
モデルの階層構造では、コールバックの実行は、最上位モデルとその参照モデルでそれぞれのコールバックが実行される順序が反映されます。たとえば、以下を仮定します。
モデル A:
アクセラレータ モードでモデル B を参照する。
MATLAB ワークスペース内に変数を作成する
PostLoadFcn
コールバックが設定されている。[リビルド] コンフィギュレーション パラメーターが
[常に行う]
、[変更が検出された場合]
、または[既知の依存関係で変更が検出された場合]
に設定されている。
モデル B:
MATLAB ワークスペースをクリアする
CloseFcn
コールバックが設定されている。ビルドされていない、または期限が切れている。
モデル A のシミュレーションによって、参照モデル B のリビルドがトリガーされます。Simulink がモデル B をリビルドするときに、モデル B を開閉して、モデル B の CloseFcn
コールバックを呼び出します。モデル A OpenFcn
コールバックによって作成された変数を含む、MATLAB ワークスペースを CloseFcn
がクリアします。
モデル B の CloseFcn
コールバックを使用する代わりに、モデル A の StopFcn
コールバックを使用して、モデルによって使用される変数を MATLAB ワークスペースからクリアすることも可能です。または、データのデータ ディクショナリを使用して、ベース ワークスペース内に変数を含める必要性をなくすことができます。
Model ブロックのシミュレーション モードは、参照モデルのモデル コールバックが実行されるタイミングに影響を与えます。
Model ブロックのシミュレーション モード | 動作 |
---|---|
ノーマル | モデルのコンパイル中、Simulink は、ノーマル モードでシミュレーションするように設定されている、まだ読み込まれていない各参照モデルを読み込みます。 ほとんどの場合、Simulink は、その参照モデルを参照する Model ブロックの数にかかわらず、各ノーマルモード参照モデルを 1 回コンパイルします。
モデルのコンパイル後、参照モデルは読み込まれたままになります。 |
アクセラレータ | モデルのコンパイル中、Simulink は、その参照モデルの [リビルド] 設定とシミュレーション ターゲットに基づいて、アクセラレータ モードでシミュレーションするように設定された参照モデルを開いたり閉じたりすることがあります。モデルのコンパイル前に開いていたモデルは開いたままになります。 Simulink は一部のコールバックを実行しません。
|
モデル参照のシミュレーション モードの詳細については、モデルの階層構造内のシミュレーション モードの選択を参照してください。