モデル参照階層の可視化
この例では、依存関係アナライザーを使用してモデルの依存関係を表示、確認、および解析する方法を示します。参照モデルを検索する方法と依存関係グラフを操作する方法を示します。
最上位モデルを開く
例を開きます。ModelReferenceHierarchy
プロジェクトはモデル参照階層を定義します。階層内の最上位モデル sldemo_mdlref_depgraph
は他の複数のモデルを参照します。
参照モデルを検索
関数
を使用して、参照モデルと Model ブロックをプログラムで検索します。たとえば、MATLAB コマンド ウィンドウで次のコマンドを入力します。find_mdlrefs
[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_depgraph
が sldemo_mdlref_house
を参照していることを示しています。モデルがライブラリ、サブシステム、または保護モデルを参照する場合、依存関係グラフに階層構造で表示されます。
このビューでは、グラフ内のモデルごとに 1 つのボックスのみが存在し、ボックス間に最大 1 つの矢印が存在します。依存関係グラフでは、モデル間の参照が複数存在するかどうかわかりません。このビューでは、どのモデルがノーマル モードで参照され、どのモデルがアクセラレータ モードで参照されるのかわかりません。
依存関係グラフの操作
ボックスを選択するには、そのボックスをクリックします。
ボックスに関連付けられているモデルまたはライブラリを開くには、そのモデルまたはライブラリをダブルクリックします。
依存関係グラフを移動するには、マウス ホイール ボタンをクリックして押したまま、マウスをドラッグします。
ズームインおよびズームアウトするには、マウス ホイールを使用します。
依存関係グラフを中央に配置し、依存関係グラフが使用可能なスペースにちょうどおさまる倍率に調整するには、スペース バーを押します。
モデル インスタンスの依存関係グラフの表示
参照モデル インスタンスを依存関係グラフに表示するには、次のいずれかの操作を実行します。
depview('sldemo_mdlref_depgraph','ModelReferenceInstance',true)
を使用する。依存関係アナライザーの [ビュー] セクションで、[モデル インスタンス] を選択する。
インスタンス ビューで、ボックスは Simulink モデルを表します。矢印は依存関係を表します。依存関係グラフは、モデル間に複数の参照がいつ存在するのかを示します。インスタンス ビューにライブラリは表示されません。
このビューでは、2 つのボックスに sldemo_mdlref_F2C
というラベルが付いています。それは、このモデルが 2 回、つまり sldemo_mdlref_outdoor_temp
と sldemo_mdlref_heater
からそれぞれ 1 回参照されているためです。最上位モデル、ノーマル モードで参照されるモデル、およびアクセラレータ モードで参照されるモデルが凡例の色で示されます。
sldemo_mdlref_heater
はノーマル モードで sldemo_mdlref_F2C
を参照し、アクセラレータ モードで sldemo_mdlref_thermostat
を参照しています。
モデル インスタンス ビューの確認
sldemo_mdlref_outdoor_temp
から sldemo_mdlref_F2C
への参照は現在、アクセラレータ モードの参照になっています。この参照をノーマル モードの参照に変更するとします。
sldemo_mdlref_outdoor_temp
からsldemo_mdlref_F2C
へのリンクを作成する矢印を選択します。右側の [プロパティ] ペインにある依存関係テーブルで、
Fahrenheit to Celsius
をクリックします。Simulink でモデルsldemo_mdlref_outdoor_temp
が開き、Fahrenheit to Celsius
という名前の Model ブロックが強調表示されます。この Model ブロックはsldemo_mdlref_F2C
を参照しています。Fahrenheit to Celsius
という名前の Model ブロックを選択します。[Model ブロック] タブで、[シミュレーション モード] を
Normal
に変更します。この変更を確認するには、依存関係グラフに移動して [解析] をクリックします。
依存関係グラフには、sldemo_mdlref_outdoor_temp
から sldemo_mdlref_F2C
への参照がノーマル モード (オーバーライド済み) の参照として表示されるようになります。sldemo_mdlref_F2C
がノーマル モードで動作するように設定されているのに、その親 sldemo_mdlref_outdoor_temp
はアクセラレータ モードで動作するように設定されていることに注意してください。アクセラレータ モードで動作しているモデルからノーマル モードで参照することはできないため、sldemo_mdlref_F2C
は、シミュレーション中はアクセラレータ モードで動作します。
このモデルがノーマル モードで動作するようにするには、その上位モデルをすべてノーマル モードで動作するように設定しなければなりません。
sldemo_mdlref_depgraph
からsldemo_mdlref_outdoor_temp
へのリンクを作成する矢印を選択します。右側の [プロパティ] ペインにある依存関係テーブルで、
outdoor temp
をクリックします。Simulink でモデルsldemo_mdlref_depgraph
が開き、outdoor temp
という名前の Model ブロックが強調表示されます。この Model ブロックはsldemo_mdlref_outdoor_temp
を参照しています。outdoor temp
という名前の Model ブロックを選択します。[Model ブロック] タブで、[シミュレーション モード] を
Normal
に変更します。(sldemo_mdlref_F2C
にアクセラレータ モードの上位モデルがまだ存在する場合は、それらによる参照もノーマル モードに変更する必要があります)。この変更を確認するには、依存関係グラフに移動して [解析] をクリックします。