Main Content

高速リスタートのご利用の前に

目的の応答が得られるようにパラメーターを調整したり、テストを自動化したりするためにモデルのシミュレーションを繰り返し実行する必要がある場合は、そのたびにコンパイルしなくても済むように高速リスタートを使用します。高速リスタートでは、1 回ごとにモデルをコンパイルしたりシミュレーションを終了したりせずに、シミュレーションを繰り返し実行することができます。高速リスタートを使用する汎用ワークフローでは、次の手順を行います。

  1. Simulink® のツールストリップにある [高速リスタート] ボタンを使用して、高速リスタートを有効にします。

  2. モデルのシミュレーションを実行します。

    最初のシミュレーションの実行時にモデルをコンパイルして初期化し、モデルの操作点のスナップショットをキャプチャする必要があります。シミュレーションが完了しても、終了処理は行われません。代わりに、モデルが高速リスタートで再度初期化されます。

  3. 必要に応じて次の処理を行います。

    • 調整可能なパラメーターの変更。

    • 可変ステップ ソルバーの切り替え。

    • ルートレベルの入力の調整。

    • 調整可能なパラメーターで参照されるベース ワークスペースまたはモデル ワークスペースの変数、およびデータ ディクショナリのエントリの変更。

    • From File ブロックや From Workspace ブロックへの入力の変更。

    • 次のシミュレーションの [初期状態] パラメーターの変更。

    • Signal Editor ブロックを使用した、データの変更、信号やシナリオの名前の変更、新しいシナリオの追加の実行。

    • 関数 set_paramDataLoggingOverride パラメーターを使用することで、モデルの信号ログ オーバーライド値をプログラムによって変更。プログラムによる信号ログ設定のオーバーライドを参照してください。

    高速リスタートでモデルを初期化した後に次の処理を行うことはできません。

    • 信号または変数の次元、型、実数/複素数の変更。

    • 調整不可能なパラメーター (サンプル時間など) の変更。

    • ブロックや接続の追加または削除などの構造的な変更。

    これらの変更を行うには、モデルを再度コンパイルしなければなりません。このような変更を加える場合は、高速リスタートを無効にして変更を行ってから、この手順をもう一度実行します。

  4. モデルのシミュレーションを実行します。指定したパラメーターや入力の新しい値がモデルで使用されますが、コンパイルは実行されません。

  5. 目的の応答が得られたら、高速リスタートを無効にします。

    メモ

    高速リスタートを無効にすると、モデルのコンパイル情報は保持されません。モデルのシミュレーションを次に実行したときにモデルが再度コンパイルされます。

高速リスタートを使用するためのモデルの準備

高速リスタートでモデルのシミュレーションを行う前に、モデルが次の要件を満たしていることを確認してください。

  • モデルでコールバックを有効にしている場合は、モデルの再初期化時に構造が変更されないことを確認します。たとえば、マスク初期化コマンドなどのコールバックは各シミュレーションの開始時に呼び出されます。そのため、モデルの構造を変更するマスク初期化コマンドは使用しないようにしてください。

  • モデル内のすべてのブロックで ModelOperatingPoint オブジェクトがサポートされていなければなりません。

  • シミュレーション モードはノーマル モードまたはアクセラレータ モードのどちらかです。

メモ

高速リスタートが有効になっている場合、コンパイル後にモデルに対する変更を保存することはできません。変更を保存するには、ソフトウェアでコンパイル状態に関する情報を破棄する必要があります。モデルに対する変更を保存するには、高速リスタートを無効にします。

高速リスタートの有効化

次のいずれかの方法を使用して高速リスタートを有効にします。

  • Simulink エディターのツール バーにある [高速リスタート] ボタン をクリックします。

  • MATLAB® コマンド ウィンドウで、関数 set_param を使用して高速リスタートを有効にします。

    set_param(model,"FastRestart","on")

高速リスタートを使用したモデルのシミュレーション

モデルを読み込んで高速リスタートを有効にしてから、モデルのシミュレーションを実行します。

  1. sim を呼び出すか、Simulink のツールストリップにある [実行] ボタン をクリックしてモデルのシミュレーションを実行します。高速リスタートでの最初のシミュレーションの実行時にモデルをコンパイルし、モデルの操作点のスナップショットをキャプチャする必要があります。

    シミュレーションが完了すると、モデルが高速リスタートでコンパイルされたことがステータス バーに示されます。

    高速リスタートの進行中は、シミュレーションの状態が Restarting になり、モデルのコンパイル中や初期化中のように Simulink エディターがフリーズした状態になります。

    The status bar shows the Restarting status message

  2. モデルの調整可能なパラメーター (Gain ブロックのゲイン値など) やルートレベルの入力の値を調整します。ベース ワークスペース変数を変更することもできます。サンプル時間などの調整不可能なパラメーターは、モデルの再コンパイルが必要になるため調整できません。

  3. モデルを再度シミュレートします。今回はモデルのコンパイルは行われません。[再生] ボタンをクリックするかステップを進めると、新しい値をもつブロックおよびワークスペース変数を参照するブロックが Simulink で更新されます。

  4. 意図した結果が得られたら、[高速リスタート] ボタンをクリックしてオフにすることで高速リスタートを無効にします。

  5. 変更内容を保存する場合はモデルを保存します。

メモ

高速リスタートでモデルが初期化された後にモデルに構造的な変更を加えようとすると、警告が表示されます。それらの変更を行う場合は、高速リスタートを無効にします。

シミュレーションの停止

高速リスタートでシミュレーションを実行しているときに [停止] をクリックすると、次の状態になります。

  • シミュレーションは終了しません。

  • モデルは初期化された状態になります。

  • モデルの調整可能なパラメーターを変更できます。

  • 高速リスタートを無効にすることで、シミュレーションを終了し、高速リスタートを終了できます。

高速リスタートの終了

高速リスタートを終了できるのは、モデルが初期化された状態のときだけです。シミュレーションの実行後、[高速リスタート] ボタンをクリックします。プログラムでこれを行うには、関数 set_param を使用します。

set_param(model,"FastRestart","off")

  • シミュレーションが終了します。

  • モデルのコンパイル情報が破棄されます。

  • シミュレーションの次回実行時にモデルを再度コンパイルしなければなりません。

高速リスタートの方法論

シミュレーション間のパラメーターの調整

  • 高速リスタートでモデルが初期化された後、ブロックの値とベース ワークスペースの変数に加え、[コンフィギュレーション パラメーター] ダイアログ ボックス ([シミュレーション] タブの [準備] で、[モデル設定] をクリック) の [データのインポート/エクスポート] および [ソルバー] ペインでパラメーターを調整できます。

  • シミュレーション間の調整を高速リスタートでモデルが初期化された状態でしか行えないパラメーターがあります。次のようなものがあります。

    • IC ブロックの [初期値] パラメーター

    • Merge ブロックの [初期出力] パラメーター

    • From Workspace ブロックの [データ] パラメーター

    • Signal Editor ブロックの [アクティブなシナリオ] パラメーター。信号エディター ツールを開いて、信号データの編集、シナリオや信号の作成と削除などを行うこともできます。[アクティブな信号] を変更して信号プロパティを表示することはできますが、高速リスタートで Signal Editor の信号プロパティを編集することはできません。

シミュレーションごとのソルバーの切り替え

高速リスタートが有効になっている場合、シミュレーションごとにソルバーを切り替えることができます。[コンフィギュレーション パラメーター] ダイアログ ボックスの [ソルバー] リストには、切り替えることができる有効なソルバーのみがリストされます。set_param コマンドを使用してシミュレーションごとにソルバーを切り替える場合に無効なソルバーに設定すると、警告が表示され、無効なソルバーは無視されます。

高速リスタートでのモデルのメソッドとコールバック

Simulink では高速リスタートが有効な場合、モデルおよびブロックのメソッドとコールバックを次のように呼び出します。

  1. モデルの InitFcn コールバックを呼び出します。

  2. モデルの SetupRuntimeResources メソッドを呼び出します。

    1. mdlSetupRuntimeResources S-Function メソッドを呼び出します。

  3. モデルの Start メソッドを呼び出します。

    1. mdlStart S-Function メソッドを呼び出します。

  4. モデルの Initialize メソッドを呼び出します。

    1. mdlInitializeConditions S-Function メソッドを呼び出します。

      メモ

      ssIsFirstInitCondフラグを使用して、シミュレーションの初期化フェーズ (高速リスタートでの最初と後続の初期化を含む) でのみ実行する必要のあるコードをガードします。

  5. モデルとブロックの StartFcn コールバックを呼び出します。

    メモ

    ステップ 1 ~ 5 は、高速リスタートを使用するかどうかに関係なく Simulink のすべてのシミュレーションに適用されます。

  6. 高速リスタートの最初のシミュレーション用にシミュレーション スナップショットをキャプチャします。シミュレーション スナップショットには、シミュレーション状態 (ModelOperatingPoint) と、ログ データおよび可視化ブロックに関連する情報が含まれます。スナップショットをキャプチャする処理の一環として ModelOperatingPoint S-Function メソッドを呼び出します。

  7. これは高速リスタートを使用するかどうかに関係なくどのシミュレーションでも実行される標準の実行フェーズです。

    • モデルの Outputs を呼び出します。

    • モデルの Update を呼び出します。

    • モデルの Derivatives を呼び出します。

    • これらのステップを停止時間になるか停止が要求されるまでループで繰り返します。

  8. モデルの Terminate メソッドを呼び出します。

    1. mdlTerminate S-Function メソッドを呼び出します。

  9. シミュレーションの終了後、モデルとブロックの StopFcn コールバックを呼び出します。これは高速リスタートを使用するかどうかに関係なくどのシミュレーションでも実行される標準のフェーズです。

  10. 高速リスタート用に取得したシミュレーション スナップショットを復元します。復元する処理の一環として set S-Function メソッドを呼び出します。

  11. 次のいずれかの処理が行われるまで、再初期化された状態で待機します。

    • 別のシミュレーションを (プログラムまたは Simulink エディターを使用して) 高速リスタートで実行するには、ステップ 3 に戻ります。

    • 高速リスタート モードを終了し、モデルのコンパイルを解除するには、次を行います。

      1. モデルのメソッド CleanupRuntimeResourcesmdlCleanupRuntimeResources S-Function メソッドを呼び出します。

      2. ここでは StopFcn コールバックは呼び出しません。

場合によっては、Start メソッドと Terminate メソッドは 1 度のみ呼び出され、連続する各高速リスタートでのシミュレーションでは呼び出されません。この場合、これらのメソッドの呼び出しは SetupRuntimeResources および CleanupRuntimeResources に対する呼び出しとそれぞれ結合されます。これは、以下のような場合です。

  • S-Function にカスタムの ModelOperatingPoint の保存メソッドと復元メソッドが含まれている場合。

  • S-Function がフラグ SS_OPTION_CALL_TERMINATE_ON_EXIT を設定する場合。

  • S-Function が参照モデルのアクセラレータ モード内に配置された場合。

モデルのコールバックについての詳細は、コールバックを使用したモデル動作のカスタマイズを参照してください。

操作点と初期状態の値

高速リスタートの各シミュレーションで ModelOperatingPoint を含む初期状態の値を変更できます。

初期状態の ModelOperatingPoint オブジェクトを高速リスタートで使用した場合、新しいシミュレーションを開始するたびに、それぞれの ModelOperatingPoint オブジェクトのスナップショット時間ではなく、モデルの開始時間にリセットされます。その後、最初のステップ実行で、ModelOperatingPoint が指定されているかどうかが Simulink でチェックされます。指定されている場合は、次のステップに進む前に Simulink で復元されます。これにより、最初のシミュレーション ステップから指定された ModelOperatingPoint オブジェクトのスナップショット時間まですばやく効率的に処理が進められます。

シミュレーション データ インスペクターを使用したデータの解析

高速リスタートでは、シミュレーション データ インスペクターを使用したデータのログ作成がサポートされます。高速リスタートでシミュレーションを実行するたびに、<modelname> fast restart run <number> という名前で SDI オブジェクトが作成されます。number の値はシミュレーションごとに 1 ずつ増加します。

初期化関数のカスタム コード

[モデル コンフィギュレーション パラメーター] ダイアログ ボックスの [コンフィギュレーション パラメーター][シミュレーション ターゲット][カスタム コード][初期化関数] ペインに配置したカスタム コードは、高速リスタートの最初のシミュレーションでのみ呼び出されます。

関連するトピック