Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Simulink.BlockDiagram.addBusToVector

バスを Vector ブロックに追加してバーチャル バス信号をベクトル信号に変換

説明

[destBlocks,busToVectorBlocks,ignoredBlocks] = Simulink.BlockDiagram.addBusToVector(model) は、ベクトルとして暗黙的に使用されたバス信号をモデル内で検索して検索結果を返しますが、ライブラリ ブロックは除外されます。

[destBlocks,busToVectorBlocks,ignoredBlocks] = Simulink.BlockDiagram.addBusToVector(model,includeLibs) はモデルを検索し、includeLibstrue の場合は、ベクトルとして暗黙的に使用されたバス信号の検索ライブラリ ブロックに含まれます。

[destBlocks,busToVectorBlocks,ignoredBlocks] = Simulink.BlockDiagram.addBusToVector(model,includeLibs,reportOnly) はモデルを検索し、reportOnlyfalse の場合、検索対象となるブロック内でベクトルとして使用される各バスに Bus to Vector ブロックが挿入されます。この挿入によって、バスがベクトルとして暗黙的に使用される代わりに、バスがベクトルへ明示的に変換されます。信号のソース ブロックと宛先ブロックは変更されません。

Simulink.BlockDiagram.addBusToVectorBus to Vector ブロックをモデルまたはライブラリに追加する場合、ブロック線図の保存されたコピーが変更されます。

Simulink.BlockDiagram.addBusToVector がライブラリ ブロックを変更する場合、変更はライブラリを使用するすべてのモデル内の各ブロックに影響を与えます。

[destBlocks,busToVectorBlocks,ignoredBlocks] = Simulink.BlockDiagram.addBusToVector(model,includeLibs,reportOnly,strictOnly) はモデルを検索し、strictOnlytrue の場合、これらのブロックのいずれかに送られるベクトルとして暗黙的に使用される入力バス信号がないことを、関数がチェックします。これらのブロックはバーチャル バス信号を取ることはできませんが、非バーチャル バス信号は受け入れることができます。

  • Delay

  • Selector

  • Assignment

  • Vector Concatenate

  • Reshape

  • Permute Dimensions

すべて折りたたむ

バスを受け入れないブロックにおいて、バスがベクトルに暗黙的に変換されることがあります。バスがベクトルとして扱われている場合、バス要素にはアクセスできなくなります。

ex_bus_to_vector モデルを開いてシミュレートします。

model = 'ex_bus_to_vector';
load_system(model);
sim(model);
open_system(model);

モデルは正常にシミュレートされています。ただし、Gain ブロックへの入力がバスですが、出力はベクトルです。バスを受け入れるには、Gain ブロックでバスをベクトルに暗黙的に変換します。

ベクトルとして扱われるバスをシミュレーションの実行前に特定するには、関数 Simulink.BlockDiagram.addBusToVector を使用します。

blocks = Simulink.BlockDiagram.addBusToVector(model)
### Processing block diagram 'ex_bus_to_vector'
### Number of blocks left that are connected to a bus being used as a vector: 2
### Done processing block diagram 'ex_bus_to_vector'
blocks=1×2 struct array with fields:
    BlockPath
    InputPort
    LibPath

予期しない変換を特定しやすくするには、バスからベクトルへの許容される変換を Bus to Vector ブロックで指定します。

ex_bus_to_vector モデルを開いてシミュレートします。

model = "ex_bus_to_vector";
load_system(model);
sim(model);
open_system(model);

モデルは正常にシミュレートされています。ただし、Gain ブロックへの入力がバスですが、出力はベクトルです。Gain ブロックがバスをベクトルに暗黙的に変換しています。

バスをベクトルに暗黙的に変換する Bus to Vector ブロックを挿入するには、3 番目の引数を false に設定して関数 Simulink.BlockDiagram.addBusToVector を使用します。

3 番目の引数を false に設定して関数 Simulink.BlockDiagram.addBusToVector を使用すると、モデルが保存されます。この例では、ex_bus_to_vector モデルのコピーを作成するために関数 save_system を使用しています。

model1 = 'ex_bus_to_vector_blocks';
save_system(model,model1)

[blocks,busToVectors] = ...
    Simulink.BlockDiagram.addBusToVector(model1,true,false)
### Processing block diagram 'ex_bus_to_vector_blocks'
### Number of blocks left that are connected to a bus being used as a vector: 2
### Successfully inserted Bus to Vector Blocks in model. Preparing to save model and/or libraries
### To eliminate modeling errors in the future, please enable strict bus modeling by setting the 'Bus signal treated as vector' diagnostic in the Configuration parameter dialog, Diagnostic/Connectivity tab to 'error'
### Done processing block diagram 'ex_bus_to_vector_blocks'
blocks=1×2 struct array with fields:
    BlockPath
    InputPort
    LibPath

busToVectors = 2x1 cell
    {'ex_bus_to_vector_blocks/Bus to Vector' }
    {'ex_bus_to_vector_blocks/Bus to Vector1'}

Gain ブロックでバスからベクトルへの暗黙的な変換が実行されなくなります。挿入した Bus to Vector ブロックで明示的に変換が実行されます。

入力引数

すべて折りたたむ

モデル名またはハンドル。文字ベクトル、string スカラー、または数値スカラーとして指定します。

データ型: double | char | string

ライブラリ ブロックの検索。false または true として指定します。

  • false — モデル内のブロックのみ検索します。

  • true — ライブラリ ブロックで、ベクトルとして暗黙的に使用されるバス信号を検索します。

2 番目の引数として指定します。

データ型: logical

モデルを変更せずに結果をレポートするかどうかを選択します。false または true として指定します。

  • false — ベクトルとして暗黙的に使用されるバス信号の Bus to Vector ブロックを挿入してモデルを更新します。

  • true — 検索結果をレポートしますが、モデルは変更しません。

3 番目の引数として指定します。引数 modelincludeLibs も指定します。

データ型: logical

ベクトルとして暗黙的に使用される入力バス信号をチェックします。非バーチャルなバス信号は受け入れることができるが、バーチャルなバス信号は受け入れることができないブロックを送ります。false または true として指定します。strictOnlytrue の場合、これらのブロックのいずれかに送られるベクトルとして暗黙的に使用される入力バス信号がないことを、関数がチェックします。これらのブロックはバーチャル バス信号を取ることはできませんが、非バーチャル バス信号は受け入れることができます。

  • Delay

  • Selector

  • Assignment

  • Vector Concatenate

  • Reshape

  • Permute Dimensions

4 番目の引数として指定します。引数 modelincludeLibs および reportOnly も指定しなければなりません。

データ型: logical

出力引数

すべて折りたたむ

バスをベクトルとして扱う、バスに接続されているブロック。構造体の配列として返されます。配列内の各構造体には次のフィールドが含まれています。

  • BlockPath — 文字ベクトル。バスに接続するブロックのパスを指定します。

  • InputPort — 整数。バスに接続する入力端子を指定します。

  • LibPath — ブロックがライブラリ ブロック インスタンスで、includeLibstrue の場合、値はソース ライブラリ ブロックのパスです。そうでない場合、LibPath は空 ([]) です。

関数によって追加される Bus to Vector ブロック。cell 配列として指定します。reportOnlyfalse に設定される場合、cell 配列には、ベクトルとして使用されるバスを置き換えるために追加された各 Bus to Vector ブロックへのパスが含まれます。そうでない場合、busToVectorBlocks は空 ([]) です。

関数で Bus to Vector ブロックを挿入できない状況。構造体の配列として指定します。配列内の各構造体には次のフィールドが含まれています。

  • BlockPath — 文字ベクトル。バスに接続するブロックのパスを指定します。

  • InputPort — 整数。バスに接続する入力端子を指定します。

これらの状況は、入力バーチャル バス信号が、属性の異なる要素で構成されているため、Bus to Vector を挿入できない場合に起こります。

ヒント

  • この関数を実行する前に、次を行います。

    1. モデルのコンパイルがエラーなく実行されることを確認します。

    2. モデルを保存します。

  • reportOnlyfalse に設定して関数を呼び出す前にモデルとライブラリのバックアップを取ります。

  • すべてのモデル内のブロックの変更結果をプレビューするには、includeLibstrue に設定し、reportOnlytrue に設定した Simulink.BlockDiagram.addBusToVector を呼び出します。次に、出力引数 destBlocks で返される情報を調べます。

バージョン履歴

R2007a で導入