ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

シミュレーションの操作点の保存と復元

メモ

R2019a では、SimState オブジェクトの名前が ModelOperatingPoint に変更されました。

システムを効果的に設計するために、モデルを繰り返しシミュレートして、さまざまな入力、境界条件、動作条件に基づいてシステムを解析できます。多くのアプリケーションでは、複数のシミュレーションを実行する場合、重要な動的動作を伴う始動フェーズは共通です。たとえば、ガス タービン エンジンのコールド スタートは、飛行機の操縦前に発生します。複数のシミュレーションを実行する際の理想的な方法は次のとおりです。

  1. 始動フェーズを 1 回シミュレートします。

  2. 始動フェーズの終了時にシミュレーション スナップショットを保存します。

  3. そのスナップショットをそれぞれの状況や操縦の初期状態として使用します。

シミュレーションのスナップショットの保存には ModelOperatingPoint オブジェクトを使用します。スナップショットを保存した後、以降のシミュレーションでは、ModelOperatingPoint オブジェクトを復元して初期条件の設定に使用します。

ModelOperatingPoint オブジェクトには次の情報が格納されます。

  • ログが作成された状態

  • ソルバーおよび実行エンジンの状態

  • ゼロクロッシングを登録するブロックのゼロクロッシング信号

  • モデル内の一部のブロックの出力値

    Simulink® では、状態情報として出力値が効果的に使用されているかどうかを判定するためにブロックの接続などの情報を解析します。

ModelOperatingPoint オブジェクトには以下のブロックのログに記録されない状態も格納されます。

  • Transport Delay

  • Variable Transport Delay

  • From Workspace

  • For Each Subsystem

  • 条件付き実行サブシステム

  • Stateflow

  • MATLAB System

  • Simscape™ Multibody™ Second Generation

ModelOperatingPoint オブジェクトでは、これらの情報が格納されるため、操作点から開始したシミュレーションと最初から実行したシミュレーションの結果が同じになります。

操作点を使用する利点

  • ModelOperatingPoint オブジェクトでシミュレーションのスナップショットを保存すると、モデルのログが作成された状態以外の情報も保存されます。シミュレーションを中断なしで実行した場合と同じ結果を得るには、それらのすべての情報を復元します。たとえば、ソルバー情報が影響するシミュレーションの場合、ModelOperatingPoint を使用せずにブロックの状態を変更すると異なる結果になることがあります。

  • 操作点はシミュレーション中に複数保存し、それらの任意の操作点からシミュレーションを再開できます。

  • ModelOperatingPoint オブジェクトでは、Transport Delay ブロックなど、通常は特定の状態に戻すことが難しいブロックの状態も復元されます。Transport Delay ブロックの状態は、[最終状態] コンフィギュレーション パラメーターを使用してデータのログを作成した場合、構造体形式または配列形式で保存されません。

シミュレーション状態は、[コンフィギュレーション パラメーター] の [データのインポート/エクスポート] ペインにある [最終状態] オプションを使用して保存することもできます。ただし、このオプションで保存されるのは "ログが作成された" 状態 (ブロックの連続状態と離散状態) だけです。これらの状態はモデルの完全なシミュレーション状態の一部にすぎません。ブロックのログに記録されない状態に関する情報は含まれません。ブロックを適切に実行するには、それらの情報も必要になります。

操作点の保存

操作点は、最終ステップの始めに次のいずれかの方法で保存できます。

  • 最後の [終了時間]

  • [一時停止] または [停止] ボタンでシミュレーションを中断したとき。get_param('modelName','CurrentOperatingPoint') を使用してシミュレーションを一時停止したときにも操作点を保存できます。

  • set_param またはブロック (Stop ブロックなど) を使用してシミュレーションを停止したとき。

対話形式による保存

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインで、[最終状態] チェック ボックスをオンにします。[最終の操作点を保存] チェック ボックスが選択可能になります。

  2. [最終の操作点を保存] チェック ボックスをオンにします。

  3. [最終状態] テキスト ボックスに ModelOperatingPoint オブジェクトの変数名を入力します。

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

プログラムによる保存

set_paramsim コマンドを使用します。SaveOperatingPoint パラメーターを 'on' に設定します。

fuelsys
set_param('fuelsys','SaveFinalState','on','FinalStateName',...
'myOperPoint','SaveOperatingPoint','on');
simOut = sim('fuelsys','StopTime','10')
myoperPoint = simOut.myOperPoint

ヒント

操作点を保存する前に、[コンフィギュレーション設定][シミュレーション ターゲット][詳細設定パラメーター][ブロック削減] パラメーターを無効にします。

操作点の復元

モデルを変更した後、ModelOperatingPoint オブジェクトを使用してシミュレーション スナップショットを復元します。[開始時間] の値は、操作点を生成したシミュレーションの値と同じになります。元のシミュレーションと現在のシミュレーションの両方において、この値がすべての時間と時間依存変数の基準値になります。たとえば、ブロックは、シミュレーションが開始されてから発生したサンプル時間のヒット数を ModelOperatingPoint オブジェクトとして保存し復元できます。

0 ~ 100 秒の範囲で実行したモデルを 100 ~ 200 秒の範囲で実行するとします。[開始時間] は、元のシミュレーションでも現在のシミュレーションでも 0 秒です。現在のシミュレーションの初期時間は 100 秒です。また、元のシミュレーション中にブロックで 10 のサンプル時間のヒットがあった場合、Simulink は、次のサンプル時間のヒットは 100 秒ではなく 0 秒を基準として、11 番目のヒットであると認識します。

メモ

ModelOperatingPoint を復元する前に [開始時間] を変更した場合、Simulink によって、[開始時間] の値が ModelOperatingPoint に保存されている値に置き換えられます。

対話形式による復元

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインで、[ワークスペースから読み込み] にある [初期状態] チェック ボックスをオンにします。テキスト ボックスが入力可能になります。

  2. テキスト ボックスに ModelOperatingPoint が格納された変数の名前を入力します。

  3. [終了時間] の値を操作点を保存した時間よりも後の時間に設定します。

プログラムによる復元

上記の例で保存した操作点を復元するようにシミュレーションを設定するには次のようにします。

set_param('fuelsys','LoadInitialState','on','InitialState',...
'myOperPoint');
myOperPoint = simOut.myOperPoint

モデルをシミュレートするときに ModelOperatingPoint オブジェクトが復元されます。

別のバージョンの Simulink からの復元

R2010a 以降のリリースで保存された ModelOperatingPoint オブジェクトを使用してモデルの ModelOperatingPoint を復元することができます。ただし、この方法で復元できるのは、モデルのログが作成された状態だけです。ModelOperatingPoint の保存に使用された Simulink のバージョンは、ModelOperatingPoint オブジェクトの [バージョン] パラメーターで確認できます。

Simulink では、初期状態として指定された ModelOperatingPoint オブジェクトが現在のリリースで保存されたものかどうかを確認します。Simulink の既定の設定では、ModelOperatingPoint が現在のリリースで保存されたものでなければエラー メッセージが表示されます。Simulink で警告としてメッセージを表示できるように診断を設定することによって、可能な限り多くの値の復元を試みることができます。ここで最善の結果が得られるように復元を有効にするには、[コンフィギュレーション パラメーター] ダイアログ ボックスで、[Operating Point object from earlier release] のメッセージを [警告] に設定します。19a では、以前の SimState という名前のオブジェクトが ModelOperatingPoint オブジェクトとして読み込まれます。

関連するトピック