Sequence Viewer を使用したメッセージ、イベント、エンティティの可視化
Simulink® Messages & Events ライブラリのブロック、Simulink モデル内の Stateflow® チャート、および SimEvents® ブロック間でのメッセージとイベントの交換を確認するために、次を実行できます。
Simulink ツールストリップのシーケンス ビューアーツールを使用する。
Sequence Viewer ブロックを Simulink モデルに追加する。
Sequence Viewer を使用すると、メッセージの遷移イベントとメッセージが搬送するデータを可視化できます。Sequence Viewer では、Stateflow チャートの実行に関連するイベント データと、Stateflow チャート間でのメッセージの交換を表示できます。シーケンス ビューアー ウィンドウには、モデル実行中のさまざまな時点で作成、送信、転送、受信、破棄されたメッセージが表示されます。シーケンス ビューアー ウィンドウには、ステート アクティビティ、遷移や、Stateflow グラフィカル関数、Simulink 関数、MATLAB® 関数への関数呼び出しも表示されます。
Sequence Viewer では、SimEvents モデルのシミュレーション時にブロック間のエンティティの移動も可視化できます。エンティティを格納できるすべての SimEvents ブロックは、シーケンス ビューアー ウィンドウにライフラインとして表示されます。これらのブロック間でのエンティティの移動は矢印付きのラインで表示されます。Simulink Function ブロックおよび MATLAB Function ブロックの呼び出しを表示できます。
モデルまたは任意のサブシステムの最上位に Sequence Viewer ブロックを追加できます。メッセージ、イベント、またはステート アクティビティをもたないサブシステムに Sequence Viewer ブロックを配置すると、シーケンス ビューアー ウィンドウは表示する対象がないことを伝えます。
たとえば、Stateflow の例 sf_msg_traffic_light
を開きます。
openExample("stateflow/ModelingADistributedTrafficControlSystemUsingMessageExample")
このモデルには 3 つの Simulink サブシステムがあります。Traffic Light 1、Traffic Light 2 および GUI です。シミュレーション中に、これらのサブシステム内の Stateflow チャートは、メッセージを送信することによってデータを交換します。メッセージがシステムを通過すると、シーケンス ビューアー ウィンドウに表示されます。シーケンス ビューアー ウィンドウでは、モデル内の各ブロックが、シミュレーション時間が下向きに進む縦のライフラインとして表現されます。
シーケンス ビューアー ウィンドウのコンポーネント
ナビゲーション ツール バー
シーケンス ビューアー ウィンドウの上部にあるナビゲーション ツール バーには、モデルの階層構造パスが表示されます。ツール バーのボタンを使用すると、次のことが可能です。
[プロパティ インスペクター] を表示または非表示にする。
自動のレイアウトまたは手動のレイアウトを選択する。
非アクティブなライフラインを表示または非表示にする。
Sequence Viewer 設定を保存する。
Sequence Viewer 設定を元に戻す。
Sequence Viewer パラメーターを設定する。
Sequence Viewer のドキュメンテーションにアクセスする。
プロパティ インスペクター
[プロパティ インスペクター] では、フィルターを選択して以下の表示と非表示を切り替えることができます。
イベント
メッセージ
関数呼び出し
ステートの変化と遷移
ヘッダー ペイン
Sequence Viewer ツール バーの下のヘッダー ペインには、モデル内の対応するブロックの名前を含むライフライン ヘッダーが表示されます。
グレーの四角形のヘッダーはサブシステムに相当します。
白の四角形のヘッダーはマスク サブシステムに相当します。
曲線で囲まれた黄色のヘッダーは Stateflow チャートに相当します。
モデル内のブロックを開くには、対応するライフライン ヘッダー内の名前をクリックします。ライフラインの表示と非表示を切り替えるには、対応するヘッダーをダブルクリックします。ライフライン ヘッダーのサイズを変更するには、ヘッダーの右側をクリックしてドラッグします。すべてのライフライン ヘッダーをシーケンス ビューアー ウィンドウ内に収めるには、Space キーを押します。
メッセージ ペイン
ヘッダー ペインの下にはメッセージ ペインがあります。メッセージ ペインには、ライフライン間のメッセージ、イベント、関数呼び出しが、送信側から受信側への矢印として表示されます。送信側、受信側、ペイロードの情報を [プロパティ インスペクター] に表示するには、メッセージ、イベントまたは関数呼び出しに対応する矢印をクリックします。
ライフライン階層のナビゲート
シーケンス ビューアー ウィンドウでは、ライフラインの階層はモデルの階層構造に相当します。モデルを一時停止または停止すると、ライフラインを展開または縮小してビューアーのフォーカスのルートを変更できます。
親ライフラインの展開
メッセージ ペインで、太いグレーのライフラインは、ライフラインを展開して子を表示できることを示しています。ライフラインの子を表示するには、ヘッダーの下の展開アイコン をクリックするか、親ライフラインをダブルクリックします。
たとえば、Traffic Light 1 ブロックのライフラインを展開すると、Stateflow チャート Ped Button Sensor および Controller に相当する 2 つの新しいライフラインが表示されます。
マスク サブシステム ライフラインの展開
シーケンス ビューアー ウィンドウでは、マスク サブシステムは白のブロックで表示されます。マスク サブシステムの子を表示するには、ライフライン ヘッダーの左下隅にカーソルを合わせて、矢印をクリックします。
たとえば、GUI サブシステムには 4 つのマスク サブシステムが含まれています。Traffic Lamp 1、Traffic Lamp 2、Ped Lamp 1 および Ped Lamp 2 です。
親ライフライン ヘッダーの矢印をクリックすると、これらのマスク サブシステム内の子ライフラインを表示できます。
フォーカスのルートの変更
ライフラインをビューアーのフォーカスのルートにするには、ライフライン ヘッダーの左下隅にカーソルを合わせて、矢印をクリックします。あるいは、シーケンス ビューアー ウィンドウの上部にあるナビゲーション ツール バーを使用して、現在のルートをライフライン階層内で上下に移動することもできます。現在のルートを 1 レベル上に移動するには、Esc キーを押します。
シーケンス ビューアー ウィンドウには、現在のルート ライフライン パスと子ライフラインが表示されます。外部のイベントやメッセージはすべて、図のガターの縦のスロットを介して出入りするものとして表示されます。図のガターのスロットをポイントすると、送受信ブロックの名前がツールヒントに表示されます。
ステート アクティビティと遷移の表示
シーケンス ビューアー ウィンドウにステート アクティビティと遷移を表示するには、最下位の子ステートに到達するまでステートの階層を展開します。黄色の縦棒はアクティブなステートを示します。青い横方向の矢印は、ステート間の遷移を示します。
次の例では、Go
から PrepareToStop
へ遷移し、その 1 秒後に Stop
に遷移することが確認できます。
開始ステート、終了ステートおよび完全な遷移ラベルを [プロパティ インスペクター] に表示するには、遷移に対応する矢印をクリックします。
あるステートがアクティブなときに発生する相互作用に関する情報を表示するには、そのステートに対応する黄色の棒をクリックします。[プロパティ インスペクター] で、[上方向に検索] ボタンと [下方向に検索] ボタンを使用して、そのステートがアクティブなときに行われる遷移、メッセージ、イベントおよび関数呼び出しの間を移動します。
関数呼び出しの表示
Sequence Viewer には関数呼び出しと応答が表示されます。次の表は、関数呼び出しの種類ごとのサポートのタイプを示しています。
関数呼び出しの種類 | サポート |
---|---|
Simulink Function ブロックの呼び出し | 完全にサポートされます。 |
Stateflow グラフィカル関数または Stateflow MATLAB 関数の呼び出し |
|
Function-Call Subsystem の呼び出し | 完全にサポートされて表示されます。 |
MATLAB Function ブロックからの呼び出し | 関数呼び出しイベントの表示がサポートされます。ただし、モデル参照の境界を越える呼び出しは制限されます。 |
シーケンス ビューアー ウィンドウでは、関数呼び出しは、function_name(argument_list)
形式のラベルが付いた実線の矢印として表示されます。関数呼び出しへの応答は、[argument_list]=function_name
形式のラベルが付いた破線の矢印として表示されます。
たとえば、モデル slexPrinterExample
では、サブシステムが Simulink Function ブロック addPrinterJob
を呼び出します。この Function ブロックは、出力値 false
で応答します。
この例を開くには、次のように入力します。
openExample("stateflow/ShareFcnsAcrossSLandSFExample")
シーケンス ビューアー ウィンドウのシミュレーション時間
シーケンス ビューアー ウィンドウでは、イベントが時間の順に縦方向に表示されます。Simulink では複数のイベントが同時に発生する場合があります。一方、シミュレーション中に長時間にわたって何もイベントが発生しない場合もあります。その結果、シーケンス ビューアー ウィンドウには、線形表示と非線形表示を組み合わせて時間が表示されます。時間ルーラーは、線形のシミュレーション時間を表示します。時間グリッドは、時間を非線形で表示します。各時間グリッド行は 2 本の青色の境界線で区切られ、同じシミュレーション時間に発生したイベントが行内に表示されます。時間ストリップは、そのグリッド行でのイベントの時間を表示します。
特定のシミュレーション時間範囲内にあるイベントを表示するには、スクロール ホイールを使用するか、時間ルーラーの時間スライダーを上下にドラッグします。シミュレーションの開始時または終了時に移動するには、[最初のイベントに移動] ボタンまたは [最後のイベントに移動] ボタンをクリックします。シミュレーション実行時間全体を時間ルーラーに表示するには、[ビューに合わせる] ボタン をクリックします。
可変ステップ ソルバーを使用している場合は、時間ルーラーの精度を調整できます。モデル エクスプローラーの Sequence Viewer の [ブロック パラメーター] ペインの [メイン] タブで、[可変ステップの時間精度] フィールドの値を調整します。
シーケンス ビューアー ウィンドウでの情報の再表示
Sequence Viewer には、シミュレーション実行間のライフラインの順序とステートが保存されます。Sequence Viewer ウィンドウを閉じてから再度開くと、前回開いていたライフラインのステートが保持されています。ビューアーの特定のステートを保存するには、ツール バーの [設定の保存] ボタン をクリックします。モデルを保存すると、セッション全体でこのステート情報が保存されます。保存した設定を読み込むには、[設定の復元] ボタン
をクリックします。
[可変ステップの時間精度] パラメーターと [履歴] パラメーターは、シミュレーションの合間にのみ変更できます。ツール バーのボタンには、シミュレーションの前、またはシミュレーションの一時停止中にアクセスできます。シミュレーション中は、ツール バーのボタンは無効になっています。
参考
ブロック
ツール
関連するトピック
- メッセージ送信による Stateflow チャートとの通信 (Stateflow)
- メッセージを使用した分散トラフィック制御システムのモデル化 (Stateflow)