Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ノーマル モードでの複数の参照モデル インスタンスのシミュレーション

ノーマル モードの可視性

ノーマル モードの参照モデルのインスタンスはすべてシミュレーションの一部です。ただし、Simulink® ソフトウェアがモデル ウィンドウに表示するインスタンスは 1 つだけです。ノーマル モードの可視性には Scope ブロックとデータ端子の値の表示が含まれます。

ノーマル モードの可視性を設定するには、最上位モデルの [シミュレーション] タブの [準備] セクションで、[信号のログとビューアー] の下で [ノーマル モードの可視性] を選択します。この設定で、Simulink ソフトウェアに表示されるインスタンスが決まります。参照モデルの特定のインスタンスについてノーマル モードの可視性を指定しない場合、Simulink ソフトウェアは参照モデルのインスタンスを 1 つ選択して表示します。

シミュレーションの後、ノーマル モードの可視性のない Model ブロックから参照モデルを開こうとすると、Simulink ソフトウェアは警告を表示します。

ノーマル モードで参照モデルのどのインスタンスが表示されるかを制御し、シミュレーションが適切に実行されるようにモデルを設定するには、ノーマル モードの可視性をもつインスタンスの指定を参照してください。

参照モデルの複数のインスタンスを含むモデル例

sldemo_mdlref_basic モデルおよび "モデル リファレンス構造の可視化" の使用例は、参照モデルの複数のインスタンスを含むモデルの使用方法を示しています。

sldemo_mdlref_basic

sldemo_mdlref_basic モデルには 3 つの Model ブロック (CounterACounterBCounterC) があり、いずれも sldemo_mdlref_counter モデルを参照しています。

ブロック線図を更新すると、sldemo_mdlref_basicsldemo_mdlref_counter を参照する 3 つの Model ブロックに別々のアイコンを表示します。

Model ブロック角アイコンシミュレーション モードとノーマル モードの可視性設定
CounterAノーマル モード、ノーマル モードの可視性は有効
CounterB灰色の角ノーマル モード、ノーマル モードの可視性は無効
CounterC黒い角アクセラレータ モード (ノーマル モードの可視性は適用できない)

sldemo_mdlref_basic を開いてシミュレーションを実行します。CounterA モデルをダブルクリックして ScopeA ブロックを開きます。

この ScopeA ブロックは、ノーマル モードの可視性が有効になっている CounterA Model ブロックのシミュレーション結果を反映します。

CounterB Model ブロックをダブルクリックして sldemo_mdlref_counter モデルを開こうとした場合でも、sldemo_mdlref_counterScopeA にはノーマル モードの可視性が有効になっている CounterA Model ブロックの結果が表示されます。

モデル リファレンス構造の可視化

Visualizing Model Reference Architectures の使用例は、ノーマル モードの参照モデルの複数のインスタンスを参照するモデルについて、依存関係アナライザーの使用方法を示しています。

参照モデルの複数のインスタンスを含むモデルの設定

  1. [最上位モデルごとに可能なインスタンスの総数] パラメーターを [複数] に設定します。

  2. ノーマル モードを使用するように参照モデルの各インスタンスを設定します。インスタンスを参照する Model ブロックの [ブロック パラメーター] ダイアログ ボックスで、[シミュレーション モード] パラメーターを [ノーマル] に設定します。その Model ブロックの階層の上位モデルがすべてノーマル モードになっていることを確認します。

    ノーマル モードの Model ブロックのアイコンの角は白 (空白) です。そのブロック線図を更新した後やモデルのシミュレーションを行った後は角が灰色に変わります。

  3. 必要に応じてノーマル モードの参照モデルの複数のインスタンスを使用するように、モデルが使用する S-Function を変更します。詳細については、Supporting the Use of Multiple Instances of Referenced Models That Are in Normal Modeを参照してください。

既定の設定では、Simulink はインスタンスの 1 つにノーマル モードの可視性を割り当てます。構成手順を完了した後で、既定以外のインスタンスがノーマル モードの可視性をもつように指定できます。

参照モデルでの再利用可能なアルゴリズムのカプセル化の詳細については、モデルの再利用を参照してください。

ノーマル モードの可視性をもつインスタンスの指定

ノーマル モードの可視性をもつインスタンスの識別

どのインスタンスが現在ノーマル モードの可視性をもっているのか識別するには次を行います。

  1. ノーマル モードの可視性の設定を適用するために、ブロック線図を更新し、モデルに他の変更を行わないようにします。

  2. 対象のモデルを参照する Model ブロックを確認します。角が白い Model ブロックはノーマル モードの可視性が有効になっています。モデルの階層構造全体を移動して確認します。

モデルの編集中やコンパイル中には、ブロック線図を更新した後で ModelReferenceNormalModeVisibilityBlockPath パラメーターを使用します。結果は、ノーマル モードの可視性が有効になっているモデルを参照している Model ブロックのブロック パスを示す Simulink.BlockPath オブジェクトです。以下に例を示します。

get_param('sldemo_mdlref_basic',...
 'ModelReferenceNormalModeVisibilityBlockPath')
ans =

   Simulink.BlockPath
   Package: Simulink

   Block Path:
      'sldemo_mdlref_basic/CounterA'

シミュレーション中またはコンパイル済み状態の最上位モデルに対しては、CompiledModelBlockInstancesBlockPath パラメーターを使用できます。以下に例を示します。

a = get_param('sldemo_mdlref_depgraph',...
 'CompiledModelBlockInstancesBlockPath')
a = 

         sldemo_mdlref_F2C: [1x1 Simulink.BlockPath]
      sldemo_mdlref_heater: [1x1 Simulink.BlockPath]
sldemo_mdlref_outdoor_temp: [1x1 Simulink.BlockPath]

ノーマル モードの可視性を指定する Simulink.BlockPath オブジェクトを作成する場合、以下が適用されます。

  • 最初の文字ベクトルは、モデル参照階層の最上位モデルにある 1 つのブロックを示していなければなりません。

  • 各文字ベクトルは、ノーマル モードにある Model ブロックを示していなければなりません。

  • バリアント モデルまたはバリアント サブシステムを示す文字ベクトルは、アクティブなバリアントを参照していなければなりません。

インスタンスのノーマル モードの可視性の有効化

メモ

シミュレーション中はノーマル モードの可視性を変更できません。

現在ノーマル モードの可視性をもつインスタンス以外に、参照モデルの別のインスタンスに対してノーマル モードの可視性を有効にするには、次を行います。

  1. 最上位モデルに移動します。

  2. [シミュレーション] タブの [準備] セクションで、[信号のログとビューアー] の下で [ノーマル モードの可視性] を選択します。

    [Model ブロックのノーマル モードの可視性] ダイアログ ボックスが開きます。たとえば、sldemo_mdlref_basic モデルのダイアログ ボックスは、階層ペインが拡張されると次のように表示されます。

    モデル階層ペインには、そのダイアログ ボックスを呼び出したモデルのモデル階層の一部が表示されます。階層はノーマル モードではない最初の Model ブロックで止まります。モデル階層ペインには参照保護されているモデルの Model ブロックは表示されません。

    ダイアログ ボックスには最上位モデルのモデルの階層構造全体が表示されます。参照モデルのノーマル モード インスタンスには、チェック ボックスが付いています。

    ヒント

    [Model ブロックのノーマル モードの可視性] ダイアログ ボックスの [モデルの階層構造] ペインに現在のモデルの階層構造が反映されるようにするには、[更新] をクリックします。

  3. ノーマル モードの可視性をオンにするモデルのインスタンスを選択します。

    Simulink によってそのモデルのすべての上位モデルがオンになり、モデルの他のインスタンスはすべてオフになります。モデルをオフにすると、Simulink によってそのモデルの子モデルがすべてオフになります。

    ヒント

    [Model ブロックのノーマル モードの可視性] ダイアログ ボックスからモデルを開くには、[モデルの階層構造] ペインでモデルを右クリックして [開く] をクリックします。

  4. ノーマル モードの可視性の設定を適用するには、モデルの階層構造の最上位モデルのシミュレーションを実行します。

[Model ブロックのノーマル モードの可視性] ダイアログ ボックスを使用するのとは別の方法として、MATLAB® コマンド ラインで ModelBlockNormalModeVisibility パラメーターを使用できます。次のいずれかの値を入力として指定できます。

  • Simulink.BlockPath オブジェクトの配列。以下に例を示します。

    bp1 = Simulink.BlockPath({'mVisibility_top/Model',  ...
    'mVisibility_mid_A/Model'});
    bp2 = Simulink.BlockPath({'mVisibility_top/Model1', ...
    'mVisibility_mid_B/Model1'});
     bps = [bp1, bp2];
     set_param(topMdl,'ModelBlockNormalModeVisibility',bps);
    
  • 文字ベクトルの cell 配列の cell 配列。文字ベクトルは個々のブロックとモデルのパスです。次の例は、オブジェクト配列の例と同じ効果があります。

    p1 = {'mVisibility_top/Model','mVisibility_mid_A/Model'};
    p2 = {'mVisibility_top/Model1','mVisibility_mid_B/Model1'};
    set_param(topMdl,'ModelBlockNormalModeVisibility',{p1, p2});
    
  • 空の配列。ノーマル モードの可視性をもつインスタンスについての Simulink の既定の選択を使用するように指定します。以下に例を示します。

    set_param(topMdl, 'ModelBlockNormalModeVisibility', []);

    空の配列を使用すると、[Model ブロックのノーマル モードの可視性] ダイアログ ボックスですべてのチェック ボックスをクリアするのと同じ結果になります。

関連する例

詳細