ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

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

Simulink.BlockPath

完全に指定された Simulink ブロック パス

説明

Simulink.BlockPath オブジェクトは、モデル階層内のブロックを一意に識別する完全に指定されたブロック パスを表し、その中には、参照モデルの複数インスタンスが関係するモデル参照階層も含まれます。Simulink はブロック パス オブジェクトをさまざまなコンテキストで使用します。たとえば、ノーマル モードの可視性を指定する場合、Simulink はブロック パス オブジェクトを用いてノーマル モードの可視性のあるモデルを識別します。詳細は、「ノーマル モードの可視性の設定」を参照してください。

Simulink.BlockPath クラスは Simulink.SimulationData.BlockPath とよく似ています。

Simulink.BlockPath クラスを使用するには Simulink® をインストールしておかなくてはなりません。ただし、Simulink.SimulationData.BlockPath クラスの使用については Simulink をインストールしておく必要はありません。Simulink.BlockPath クラスには、モデル ダイアグラムを更新せずにブロック パス オブジェクトの有効性をチェックできるメソッドが用意されているため、Simulink をインストールした場合は Simulink.SimulationData.BlockPath の代わりに Simulink.BlockPath を使用することを検討してください。

プロパティのまとめ

名前

説明

SubPath

ブロック パスに指定されたブロック内の各コンポーネント

メソッドのまとめ

名前

説明

BlockPath

ブロック パスを作成します。

convertToCell

ブロック パスを文字列から成るセル配列に変換します。

getBlock

モデル参照階層にある単一のブロック パスを取得します。

getLength

ブロック パスの長さを取得します。

validate

ブロック パスが有効なブロック階層を示しているかを特定します。

プロパティ

SubPath

説明

ブロック パスに指定されたブロックにある 1 つのコンポーネントを示します。

たとえば、SubPath チャートを参照するロック パスの場合、チャートの信号は Stateflow® を用いて示せます。 以下に例を示します。

Block Path:
      'sf_car/shift_logic'
 
    SubPath:
      'gear_state.first'

データ型

文字列

アクセス

RW

メソッド

BlockPath

目的

ブロック パスの作成

構文

blockpath_object = Simulink.BlockPath()
blockpath_object = Simulink.BlockPath(blockpath)
blockpath_object = Simulink.BlockPath(paths)
blockpath_object = Simulink.BlockPath(paths, subpath)

入力引数

blockpath

コピーするブロック パス。

paths

1 つの文字列または文字列のセル配列で、Simulink がブロック パス作成に使用します。

最上位モデルからブロック パス作成を指定した各ブロックの順番で、個々の文字列を指定します。

各文字列は、Simulink モデルにある 1 つのブロックへのパスでなければなりません。ブロックは、次の要件を満たさなければなりません。

  • 単一モデルにある 1 つのブロック

  • 1 つの Model ブロック (最後の文字列は例外で、Model ブロック以外のブロックとなる場合もある)

  • 1 つ前の文字列に指定された Model ブロックで示されるモデル中のブロックの 1 つ

ノーマル モードの可視性を指定するブロック パスの作成する際には、

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

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

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

セル配列中で gcb を使用すると、現在選択されているブロックを特定できます。

subpath

1 つのブロック内の各コンポーネントを示す文字列です。

出力引数

blockpath_object

作成するブロック パスです。

説明

blockpath_object = Simulink.BlockPath() は、空のブロック パスを作成します。

blockpath_object = Simulink.BlockPath(blockpath) は、source_blockpath 引数に指定されたブロック パス オブジェクトに対し、そのブロック パスのコピーを作成します。

blockpath = Simulink.BlockPath(paths) は、paths 引数に指定された文字列のセル配列を元に、1 つのブロック パス作成します。個々の文字列はモデル階層の各レベルにおける 1 つのパスを示します。Simulink はこれらの文字列を元に完全なブロック パスを作成します。

blockpath = Simulink.BlockPath(paths, subpath)は、paths 引数に指定された文字列または文字列のセル配列を基にブロック パスを作成し、ブロックの各コンポーネント (たとえば 1 つの信号) に対するパスを作成します。

gcb を使用して現在のブロックを取得し、bp1 というブロック パス オブジェクトを作成します。

sldemo_mdlref_depgraph
bp1 = Simulink.BlockPath(gcb)

得られるブロック パスは、thermostat という名前の、最上位の Model ブロックです (左上の Model ブロック)。

bp1 = 

  Simulink.BlockPath
  Package: Simulink

  Block Path:
    'sldemo_mdlref_depgraph/thermostat'

ブロック パスの要素を示す文字列のセル配列を使用して、bp2 という名前のブロック パスを作成します。

sldemo_mdlref_depgraph
bp2 = Simulink.BlockPath({'sldemo_mdlref_depgraph/thermostat', ...
'sldemo_mdlref_heater/Fahrenheit to Celsius', ...
'sldemo_mdlref_F2C/Gain1'})

得られるブロック パスは、ブロック パスのモデル参照階層を反映しています。

bp2 = 

  Simulink.BlockPath
  Package: Simulink

  Block Path:
    'sldemo_mdlref_depgraph/thermostat'
      'sldemo_mdlref_heater/Fahrenheit to Celsius'
        'sldemo_mdlref_F2C/Gain1'

convertToCell

目的

ブロック パスを文字列のセル配列に変換

構文

cellarray = Simulink.BlockPath.convertToCell()

出力引数

cellarray

ブロック パスの要素を示す文字列のセル配列です。

説明

cellarray = Simulink.BlockPath.convertToCell() は、ブロック パスを文字列のセル配列に変換します。

sldemo_mdlref_depgraph
bp2 = Simulink.BlockPath({'sldemo_mdlref_depgraph/thermostat', ...
'sldemo_mdlref_heater/Fahrenheit to Celsius', ...
'sldemo_mdlref_F2C/Gain1'}) 
cellarray_for_bp2 = bp2.convertToCell()

得られる結果は、ブロック パスの要素を示すセル配列です。

cellarray_for_bp2 = 

    'sldemo_mdlref_depgraph/thermostat'
    'sldemo_mdlref_heater/Fahrenheit to Celsius'
    'sldemo_mdlref_F2C/Gain1'

getBlock

目的

モデル参照階層にあるブロック パスを取得します。

構文

block = Simulink.BlockPath.getBlock(index)

入力引数

index

取得するブロック パスのブロック インデックスです。このインデックスは、モデル参照階層のレベルを反映しています。インデックス 1 は最上位モデルを表し、インデックス 2 はインデックス 1 のブロックで参照されるモデル中のブロックを表し、また、インデックス n はインデックス n-1 の参照ブロックを表します。

出力引数

block

index 引数に指定されたモデル参照階層のレベルを示すブロックです。

説明

blockpath = Simulink.BlockPath.getBlock(index) は、index 引数に指定されたブロックのブロック パスを返します。

モデル参照階層にある 2 番目のレベルに対するブロックを取得します。

sldemo_mdlref_depgraph
bp2 = Simulink.BlockPath({'sldemo_mdlref_depgraph/thermostat', ...
'sldemo_mdlref_heater/Fahrenheit to Celsius', ...
'sldemo_mdlref_F2C/Gain1'})
blockpath = bp2.getBlock(2)

ブロック パス階層の 2 番目のレベルに存在する thermostat ブロックが得られます。

blockpath =

sldemo_mdlref_heater/Fahrenheit to Celsius

getLength

目的

ブロック パスの長さを取得します。

構文

length = Simulink.BlockPath.getLength()

出力引数

length

ブロック パスの長さです。この長さは、モデル参照階層のレベル数です。

説明

length = Simulink.BlockPath.getLength() は、ブロック パスのモデル参照階層におけるレベル数を、対応する数値で返します。

bp2 ブロック パスの長さを取得します。

sldemo_mdlref_depgraph
bp2 = Simulink.BlockPath({'sldemo_mdlref_depgraph/thermostat', ...
'sldemo_mdlref_heater/Fahrenheit to Celsius', ...
'sldemo_mdlref_F2C/Gain1'})
length_bp2 = bp2.getLength()

得られる結果は、3 つの要素をもつブロック パスを反映したものとなります。

length_bp2 =

     3

validate

目的

ブロック パスが有効なブロック階層を示しているかを特定します。

構文

Simulink.BlockPath.validate()
Simulink.BlockPath.validate(AllowInactiveVariant)

入力引数

AllowInactiveVariant

非アクティブなバリアントを有効性チェックに含めるには、true に設定します。既定の設定は false です。

説明

Simulink.BlockPath.validate() は、ブロック パスが有効なブロック階層を示しているかを特定します。有効性になんらかの問題がある場合は、MATLAB® コマンド ウィンドウにメッセージが表示されます。このメソッドは、以下をチェックします。

  • ブロック パスのすべての要素が有効なブロックを示しているか

  • バリアントンのすべての要素がアクティブか

  • 最後の要素を除いて、すべての要素が次の要件を満たしているか

    • 有効な Model ブロックであるか

    • 次の要素のモデルを参照しているか

Simulink.BlockPath.validate(AllowInactiveVariant) true を指定すると、有効性チェックにおける非アクティブなバリアントは、上述したその他の有効性チェックに適合する場合に、有効であると見なされます。AllowInactiveVariant 引数の指定を省略するか、既定値である false を指定すると、アクティブなバリアントだけがチェック対象となります。

アクティブなバリアントだけをチェックして、ブロック パスを検証します。この検証は失敗します。その理由は、bp が、非アクティブ バリアントであるブロック参照モデル sldemo_mdlref_second_order_controller を指定している一方で、ブロック パスが実際に参照しているモデルは sldemo_mrv_nonlinear_controller であるためです。

sldemo_mdlref_variants
bp = Simulink.BlockPath({'sldemo_mdlref_variants/Controller', ...
'sldemo_mrv_second_order_controller/sensor1'})
bp.validate()

すべてのバリアントをチェックする検証を行います。非アクティブ バリアントもチェックされる場合は、ブロック パスは検証をパスします。

bp.validate(true)

参考

|

この情報は役に立ちましたか?