Main Content

モデル参照階層の可視化

この例では、依存関係アナライザーを使用してモデルの依存関係を表示、確認、および解析する方法を示します。参照モデルを検索する方法と依存関係グラフを操作する方法を示します。

最上位モデルを開く

例を開きます。ModelReferenceHierarchy プロジェクトはモデル参照階層を定義します。階層内の最上位モデル sldemo_mdlref_depgraph は他の複数のモデルを参照します。

参照モデルを検索

関数 find_mdlrefs を使用して、参照モデルと Model ブロックをプログラムで検索します。たとえば、MATLAB コマンド ウィンドウで次のコマンドを入力します。

[refMdls, modelBlks] = find_mdlrefs('sldemo_mdlref_depgraph')

find_mdlrefs により、2 つの cell 配列 refMdls および modelBlks が返されます。refMdls には、sldemo_mdlref_depgraph によって直接的または間接的に参照されるすべてのモデルの名前が含まれています。既定の設定で、refMdls の最後の要素は入力モデルの名前です。modelBlks には、最上位モデルとすべての参照モデルのすべての Model ブロックへのブロック パスが含まれています。

モデル参照の依存関係グラフの表示

sldemo_mdlref_depgraph モデルの依存関係グラフを表示するには、次のいずれかの処理を実行してモデルの依存関係アナライザーを開きます。

  • 関数 depview を使用します。

  • [モデル化] タブの [設計] セクションで、[依存関係アナライザー] をクリックします。

依存関係グラフでは、ボックスが Simulink モデルを表します。矢印は依存関係を表します。たとえば、sldemo_mdlref_depgraph から sldemo_mdlref_house へのリンクは sldemo_mdlref_depgraphsldemo_mdlref_house を参照していることを示しています。モデルがライブラリ、サブシステム、または保護モデルを参照する場合、依存関係グラフに階層構造で表示されます。

このビューでは、グラフ内のモデルごとに 1 つのボックスのみが存在し、ボックス間に最大 1 つの矢印が存在します。依存関係グラフでは、モデル間の参照が複数存在するかどうかわかりません。このビューでは、どのモデルがノーマル モードで参照され、どのモデルがアクセラレータ モードで参照されるのかわかりません。

依存関係グラフの操作

  • ボックスを選択するには、そのボックスをクリックします。

  • ボックスに関連付けられているモデルまたはライブラリを開くには、そのモデルまたはライブラリをダブルクリックします。

  • 依存関係グラフを移動するには、マウス ホイール ボタンをクリックして押したまま、マウスをドラッグします。

  • ズームインおよびズームアウトするには、マウス ホイールを使用します。

  • 依存関係グラフを中央に配置し、依存関係グラフが使用可能なスペースにちょうどおさまる倍率に調整するには、スペース バーを押します。

モデル インスタンスの依存関係グラフの表示

参照モデル インスタンスを依存関係グラフに表示するには、次のいずれかの操作を実行します。

  • depview('sldemo_mdlref_depgraph','ModelReferenceInstance',true) を使用する。

  • 依存関係アナライザーの [ビュー] セクションで、[モデル インスタンス] を選択する。

インスタンス ビューで、ボックスは Simulink モデルを表します。矢印は依存関係を表します。依存関係グラフは、モデル間に複数の参照がいつ存在するのかを示します。インスタンス ビューにライブラリは表示されません。

このビューでは、2 つのボックスに sldemo_mdlref_F2C というラベルが付いています。それは、このモデルが 2 回、つまり sldemo_mdlref_outdoor_tempsldemo_mdlref_heater からそれぞれ 1 回参照されているためです。最上位モデル、ノーマル モードで参照されるモデル、およびアクセラレータ モードで参照されるモデルが凡例の色で示されます。

sldemo_mdlref_heater はノーマル モードで sldemo_mdlref_F2C を参照し、アクセラレータ モードで sldemo_mdlref_thermostat を参照しています。

モデル インスタンス ビューの確認

sldemo_mdlref_outdoor_temp から sldemo_mdlref_F2C への参照は現在、アクセラレータ モードの参照になっています。この参照をノーマル モードの参照に変更するとします。

  1. sldemo_mdlref_outdoor_temp から sldemo_mdlref_F2C へのリンクを作成する矢印を選択します。

  2. 右側の [プロパティ] ペインにある依存関係テーブルで、Fahrenheit to Celsius をクリックします。Simulink でモデル sldemo_mdlref_outdoor_temp が開き、Fahrenheit to Celsius という名前の Model ブロックが強調表示されます。この Model ブロックは sldemo_mdlref_F2C を参照しています。

  3. Fahrenheit to Celsius という名前の Model ブロックを選択します。

  4. [Model ブロック] タブで、[シミュレーション モード]Normal に変更します。

  5. この変更を確認するには、依存関係グラフに移動して [解析] をクリックします。

依存関係グラフには、sldemo_mdlref_outdoor_temp から sldemo_mdlref_F2C への参照がノーマル モード (オーバーライド済み) の参照として表示されるようになります。sldemo_mdlref_F2C がノーマル モードで動作するように設定されているのに、その親 sldemo_mdlref_outdoor_temp はアクセラレータ モードで動作するように設定されていることに注意してください。アクセラレータ モードで動作しているモデルからノーマル モードで参照することはできないため、sldemo_mdlref_F2C は、シミュレーション中はアクセラレータ モードで動作します。

このモデルがノーマル モードで動作するようにするには、その上位モデルをすべてノーマル モードで動作するように設定しなければなりません。

  1. sldemo_mdlref_depgraph から sldemo_mdlref_outdoor_temp へのリンクを作成する矢印を選択します。

  2. 右側の [プロパティ] ペインにある依存関係テーブルで、outdoor temp をクリックします。Simulink でモデル sldemo_mdlref_depgraph が開き、outdoor temp という名前の Model ブロックが強調表示されます。この Model ブロックは sldemo_mdlref_outdoor_temp を参照しています。

  3. outdoor temp という名前の Model ブロックを選択します。

  4. [Model ブロック] タブで、[シミュレーション モード]Normal に変更します。(sldemo_mdlref_F2C にアクセラレータ モードの上位モデルがまだ存在する場合は、それらによる参照もノーマル モードに変更する必要があります)。

  5. この変更を確認するには、依存関係グラフに移動して [解析] をクリックします。

関連するトピック