モデル操作点を使用したシミュレーション ワークフローの高速化
システムを効果的に設計するために、モデルを繰り返しシミュレートして、さまざまな入力、境界条件、動作条件に基づいてシステムを解析できます。多くのアプリケーションでは、複数のシミュレーションを実行する場合、重要な動的動作を伴う始動フェーズは共通です。たとえば、ガス タービン エンジンのコールド スタートは、飛行機の操縦前に発生します。複数のシミュレーションを実行する際の理想的な方法は次のとおりです。
始動フェーズを 1 回シミュレートします。
始動フェーズの終了時にシステムの操作点を表すスナップショットを保存します。
そのスナップショットを一連の各シミュレーションでそれぞれの状況や操縦の初期状態として使用します。
シミュレーションの特定の時点におけるモデルのスナップショットを保存するには、操作点を使用して最終状態を保存します。スナップショットは Simulink.op.ModelOperatingPoint
オブジェクトとして保存されます。これを以降のシミュレーションで初期状態として指定して、その操作点からシミュレーションを開始できます。
モデル操作点には次の情報が格納されます。
ログが作成された状態
ソルバーおよび実行エンジンの状態
ゼロクロッシングを登録するブロックのゼロクロッシング信号
モデル内の一部のブロックの出力値
Simulink® では、状態情報として出力値が効果的に使用されているかどうかを判定するためにブロックの接続などの情報を解析します。
モデル操作点には以下のブロックのログに記録されない状態も含まれます。
Transport Delay
Variable Transport Delay
From Workspace
For Each Subsystem
条件付き実行サブシステム
Stateflow
MATLAB System
Simscape™ Multibody™ Second Generation
モデル操作点にはシミュレーションのその時点のシステムの状態に関する完全な情報が含まれるため、初期操作点から開始したシミュレーションと最初から実行したシミュレーションの結果が同じになります。
操作点を使用する利点
モデル操作点を保存すると、モデルのログが作成された状態以外の情報のレコードも作成されます。シミュレーションを中断なしで実行した場合と同じ結果を得るには、それらのすべての情報を復元します。たとえば、ソルバー情報が影響するシミュレーションの場合、操作点を使用せずに初期状態を指定すると異なる結果になることがあります。
操作点はシミュレーション中に複数保存し、それらの任意の操作点からシミュレーションを再開できます。
モデル操作点を使用すると、Transport Delay ブロックなど、通常は特定の状態に戻すことが難しいブロックの状態を復元できます。Transport Delay ブロックの状態は、[最終状態] コンフィギュレーション パラメーターを使用してデータのログを作成した場合、構造体形式または配列形式で保存されません。データセット ログ形式では、
ModelOperatingPoint
から返される結果は状態ログ (操作点以外の保存) で返される結果と常に一致します。アクセラレータ モードのモデル参照の中に含まれるブロックのログに記録された状態は、表示および編集が可能です。Simscape、モデル参照アクセラレータ、可変伝達遅延など、カスタムの操作点機能をもつ多くのブロックのログに記録された状態は編集が可能です。
シミュレーション状態は、操作点を使用せずに最終状態を保存しても保存できます。ただし、このオプションで保存されるのはブロックの連続状態と離散状態だけです。これらの状態はモデルの完全なシミュレーション状態の一部にすぎません。ソルバー、実行エンジン、ブロックのログに記録されない状態に関する情報は含まれません。ブロックを適切に実行するには、それらの情報も必要になります。
操作点の保存
操作点は、最終ステップの始めに次のいずれかの方法で保存できます。
最後の [終了時間]。
[一時停止] または [停止] ボタンでシミュレーションを中断したとき。
get_param('modelName','CurrentOperatingPoint')
を使用してシミュレーションを一時停止したときにも操作点を保存できます。set_param
またはブロック (Stop ブロックなど) を使用してシミュレーションを停止したとき。
対話形式による保存
[コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインで、[最終状態] チェック ボックスをオンにします。[最終の操作点を保存] チェック ボックスが選択可能になります。
[最終の操作点を保存] チェック ボックスをオンにします。
[最終状態] テキスト ボックスに
ModelOperatingPoint
オブジェクトの変数名を入力します。モデルをシミュレートします。
操作点の復元
モデルを変更した後、ModelOperatingPoint
オブジェクトを使用してシミュレーション スナップショットを復元します。[開始時間] の値は、操作点を生成したシミュレーションの値と同じになります。元のシミュレーションと現在のシミュレーションの両方において、この値がすべての時間と時間依存変数の基準値になります。たとえば、ブロックは、シミュレーションが開始されてから発生したサンプル時間のヒット数を ModelOperatingPoint
オブジェクトとして保存し復元できます。
0 ~ 100 秒の範囲で実行したモデルを 100 ~ 200 秒の範囲で実行するとします。[開始時間] は、元のシミュレーションでも現在のシミュレーションでも 0 秒です。現在のシミュレーションの初期時間は 100 秒です。また、元のシミュレーション中にブロックで 10 のサンプル時間のヒットがあった場合、Simulink は、次のサンプル時間のヒットは 100 秒ではなく 0 秒を基準として、11 番目のヒットであると認識します。
メモ
ModelOperatingPoint
を復元する前に [開始時間] を変更した場合、Simulink によって、[開始時間] の値が ModelOperatingPoint
に保存されている値に置き換えられます。
対話形式による復元
[コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインで、[ワークスペースから読み込み] にある [初期状態] チェック ボックスをオンにします。テキスト ボックスが入力可能になります。
テキスト ボックスに
ModelOperatingPoint
が格納された変数の名前を入力します。[終了時間] の値を操作点を保存した時間よりも後の時間に設定します。
別のバージョンの Simulink からの復元
R2010a 以降のリリースで保存された ModelOperatingPoint
オブジェクトを使用してモデルの ModelOperatingPoint
を復元することができます。ただし、この方法で復元できるのは、モデルのログが作成された状態だけです。ModelOperatingPoint
の保存に使用された Simulink のバージョンは、ModelOperatingPoint
オブジェクトの [バージョン] パラメーターで確認できます。
Simulink では、初期状態として指定された ModelOperatingPoint
オブジェクトが現在のリリースで保存されたものかどうかを確認します。Simulink の既定の設定では、ModelOperatingPoint
が現在のリリースで保存されたものでなければエラー メッセージが表示されます。Simulink で警告としてメッセージを表示できるように診断を設定することによって、可能な限り多くの値の復元を試みることができます。ここで最善の結果が得られるように復元を有効にするには、[コンフィギュレーション パラメーター] ダイアログ ボックスで、[Operating Point object from earlier release] のメッセージを [警告]
に設定します。19a では、以前の SimState
という名前のオブジェクトが ModelOperatingPoint
オブジェクトとして読み込まれます。