操作点の動作
モデルの操作点を使用してブロック、S-Function、モデルの変更を行います。
操作点内でのブロックの状態の変更
ブロックの状態を取得または設定するには、
Simulink.op.ModelOperatingPoint
オブジェクトのloggedStates
プロパティを使用します。xout
が Simulink® からワークスペースにエクスポートされた状態ログである場合、loggedStates
フィールドの構造はxout.signals
と同じになります。データセット ログを使用してモデルの操作点を保存すると、操作点なしで最終状態を保存する場合と同じように、ログに記録された現在の状態のスナップショットが取得され、それが
ModelOperatingPoint
オブジェクトに格納されます。ログに記録されたこの状態をクエリすると、保存されたデータセットのコピーが返されます。データセット ログ形式では、
ModelOperatingPoint
から返される結果は状態ログ (操作点以外の保存) で返される結果と常に一致します。アクセラレータ モードのモデル参照の中に含まれるブロックのログに記録された状態は、表示および編集が可能です。Simscape、モデル参照アクセラレータ、可変伝達遅延など、カスタムの操作点機能をもつ多くのブロックのログに記録された状態は編集が可能です。ログに記録されていない状態は変更できません。これらの状態を変更するとシミュレーションと一致しなくなる可能性があるため、Simulink ではこの変更は許可されていません。
S-Function
C-MEX およびレベル 2 の MATLAB® S-Function の API を使用して、S-Function でモデルの操作点を利用できます。この機能を S-Function で実装する方法の詳細については、S-Function Compliance with the ModelOperatingPointを参照してください。
操作点のコンプライアンス レベルが宣言されていないか unknown または disallowed と宣言された、PWork ベクトルでデータ構造体へのポインターを格納している S-Function では、操作点はサポートされません。詳細については、S-Function Compliance with the ModelOperatingPointを参照してください。
モデルの変更と操作点の復元
モデルの操作点を保存した後、モデルを変更し、それらの変更を反映して操作点を復元できます。
操作点を保存してから復元するまでの間に、モデルの名前を変更できます。
操作点のインターフェイスのチェックサムは、主にモデルのコンフィギュレーション設定とモデルで使用されるサンプル時間に基づいています。操作点を保存してから復元するまでの間に、非構造的な変更であれば、モデルに変更を加えることができます。そのような変更を追跡するには、[コンフィギュレーション パラメーター] ダイアログ ボックスの [診断] ペインにある [Operating point interface checksum mismatch] 診断を使用します。これを使用して、復元された操作点のインターフェイスのチェックサムが現在のインターフェイスのチェックサムと一致するかどうかを確認できます。操作点復元インターフェイスのチェックサムの不一致を参照してください。
以前に保存した操作点の復元可能性を損なうことなく、モデルに以下の非構造的な変更を行えます。
モデル コンフィギュレーション パラメーター: Data Import/Exportでのモデル レベルの信号ログ設定の変更。
特定の信号のログ。
Scope、Floating Scope and Scope Viewer、To Workspace、To File、Display ブロックの追加と削除。
シミュレーション表示デバイスとして構成されており、操作点コンプライアンスの設定が Custom または Disallowed ではないレベル 2 の MATLAB または C S-Function の追加と削除。詳細については、S-Function Compliance with the ModelOperatingPointを参照してください。
メモ
これらの変更により、モデルのサンプル時間数が変わることがあります。それにより、モデルのインターフェイス チェックサムが操作点保存および復元チェックサムと一致しなくなることがあります。[Operating point interface checksum mismatch] 診断を
[警告]
(既定の設定)、[エラー]
、または[なし]
に設定して、チェックサムを比較しないようにします。操作点を保存してから操作点を使用してシミュレーションを復元するまでの間に、モデルに構造的な変更を加えることはできません。例としては、操作点保存後のブロックの追加や削除、モデルのサンプル時間の変更、ソルバー タイプの可変ステップから固定ステップへの変更などがあります。
不一致が生じる可能性があるのは、保存されている操作点を生成したときと異なるソルバーを使用してシミュレーションを実行しようとした場合です。Simulink では、このようなソルバーの変更が可能です。たとえば、
ode15s
ソルバーを使用してシミュレーションの最初のスティッフな部分を解き、最終的な操作点を保存することができます。その後、ode45
を使用して、復元された操作点でシミュレーションを継続できます。つまり、この診断はソルバーの変更を確認するためのものであり、シミュレーションの問題を示すものではありません。
メモ
可変ステップ ソルバーを使用する場合、最大ステップ サイズを auto
に設定すると、Simulink の新しいシミュレーションでは復元された ModelOperatingPoint
オブジェクトの最大ステップ サイズが使用されます。2 つのシミュレーションの連結された操作点の軌跡が中断なしで実行したシミュレーションと一致するようにするには、最大ステップ サイズの値を指定します。
操作点の保存と復元の制限
メモ
場合によっては、モデルの完全な操作点なしで最終状態を保存することで、モデルの操作点の使用に関する一部の制限を回避できることがあります。詳細については、Save Block States and Simulation Operating Pointsを参照してください。
ブロックのサポート
次のブロックは操作点をサポートしていません。
Stack ブロックと Queue ブロックでは、[Push full stack] オプションの既定の設定は [Dynamic reallocation] です。この既定の設定は
ModelOperatingPoint
オブジェクトをサポートしません。その他の設定 ([無視]、[警告] および [エラー]) はModelOperatingPoint
オブジェクトをサポートします。Simscape™ Multibody™ First Generation のブロック
Simulink は、ブロックの出力を操作点の一部として保存しようとします。S-Function の場合、これは関数で操作点が不要であると宣言されていても起こります。ブロック出力がカスタム タイプである場合、Simulink では操作点を保存できず、エラーが表示されます。S-Function での操作点の使用の詳細については、S-Functionを参照してください。
モデル参照では、操作点が部分的にサポートされます。詳細については、モデル参照を参照してください。
シミュレーション
シミュレーション モードはノーマルまたはアクセラレータのいずれかのみを使用できます。
操作点をノーマル モードで保存し、アクセラレータ モードで復元することはできません。その逆も同様です。
一部のブロックのログに記録されない状態を変更することはできません。詳細については、操作点内でのブロックの状態の変更を参照してください。
コード生成
操作点機能では Simulink Coder™ または Embedded Coder® のコード生成はサポートされません。
モデル参照
アクセラレータ モードの参照モデル内にあるブロックのログが作成された状態は変更できません。
次のブロックがアクセラレータ モードの参照モデルに含まれている場合、操作点はサポートされません。
Level-2 MATLAB S-Function
MATLAB System
n-D Lookup Table
S-Function (カスタムの操作点または
PWork
ベクトルを含む)To File
モデル名のプログラムによるインターフェイス
モデル名をプログラムによるインターフェイスとして使用する場合、操作点を状態の入力として指定することはできません。詳細については、Use Model Name as Programmatic Interfaceを参照してください。