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

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

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

Simulink バス信号

この対話型の例では、次の Simulink の概念を紹介します。

  • ベクトル、行列およびバス/複合信号の識別

  • 信号線の書式の理解

  • 信号次元の表示および理解

  • Bus Creator ブロックおよび Bus Selector ブロックの使用

  • Simulink Scope での行列信号の表示

  • Simulink ブロック線図でのブロックの強調表示

モデルの説明

busdemo モデルの左側には、Simulink Sources ライブラリからのソース ブロックが 5 つ含まれています。各ブロックは、幅が 1 の信号であるスカラー出力信号を生成します。ブロック線図では、これらの信号に適切なラベルが付けられています。

Chirp Signal ブロックの出力は、タグが A に設定されている Goto ブロックへ渡されます。

Subsystem ブロック内に、関連付けられている From ブロックがあります。

また、Subsystem ブロック内では、チャープ信号と Constant ブロックの出力が、Bus Creator ブロック (Simulink Signal Routing ライブラリ内に存在) を使用してバンドルされ、1 つのバスに入れられています。

同様に、Clock ブロック、Pulse Generator ブロック、および Sine Wave ブロックからの 3 つの信号も、別の Bus Creator ブロックを使用してバンドルされます。

この Bus Creator ブロックには、Bus Creator2 というラベルが付けられています。

その後、bus1 と bus2 というラベルが付けられた 2 つのバス信号が 3 つ目の Bus Creator ブロックを使用してバンドルされ、main_bus というラベルが付けられた入れ子にされたバス信号が作成されます。

その後、最後の Bus Creator から、バンドルされた信号が Bus Selector ブロックへ渡されます。

Bus Selector ブロックは、元の信号バンドルからパルス信号とチャープ信号を抽出します。最終的に、この 2 つの信号が Simulink Scope に 2 つの座標軸を使用して表示されます。

パルス信号は上の座標軸に表示され、チャープ信号は下の座標軸に表示されます。

シミュレーションを実行して、Scope で Chirp ブロックと Pulse ブロックの出力を表示することができます。

メモ: さまざまな理由から、このモデルでは Mux ブロックと Demux ブロックではなく、Bus Creator ブロックと Bus Selector ブロックを使用しています。重要な動機の 1 つは、バス信号は非常に効率がよいということです。バス信号の場合、シミュレーション中にブロック線図内では Bus Selector で選択された信号のみが順に渡されていくからです。考慮すべきもう 1 つの点は、この 2 つの Bus ブロックは信号名を使用して設定されるため、読みやすい Simulink ブロック線図を作成できるという点です。

Simulink でのバス信号および線の書式

シミュレーションの実行後、busdemo 内の線を確認してください。以下に示すように、Bus Creator ブロックと Bus Selector ブロックに接続している信号は 3 本の線で描かれています。

この線の書式は、信号がバス信号であることを示しています。バス信号とは信号のセットのことで、1 つに束ねられたワイヤーの束のようなものです。バス信号は、バス信号にバンドルされている信号のサイズと形状に基づいて、ベクトル信号として動作するか、あるいは複合信号として動作するという 2 つの方法のいずれかで動作できます。

これをよりよく理解するために、Simulink ブロック線図の [情報表示] メニューの [信号と端子] サブメニューで [信号の次元] 項目をオンにして、信号次元を表示してください。以下に示すように、バス信号に「5{5}」というラベルが表示されるはずです。

中かっこの前の数値は、そのバス信号を作成するのに何本の線がバンドルされたのかを示します。たとえば、Bus Creator2 ブロックの出力は、Clock ブロック、Pulse ブロック、および Sine Wave ブロックからの 3 本の線から作成されています。中かっこ内の数値は、そのバスに合計いくつの信号が含まれているのかを示します。信号 bus2 の場合、Source ブロックからの各出力はスカラーであるため、バスには、各線から 1 つずつ、合計 3 つの信号が含まれています。

このモデル内のすべてのバス信号は、バス内の個々の信号がスカラーであるため、ベクトル信号と同様に扱われます。Gain、Sum、Integer など、ベクトル入力を受け入れる Simulink ブロックに、ベクトル信号と同様のものとしてこのバス信号を渡すことができます。

以下に示すように、バス信号は、バス内の個々の信号のすべてがスカラーまたは 1 次元ベクトルのいずれかである場合にも、ベクトル信号として扱われます。

Simulink でのベクトル信号

スカラーではなく信号のベクトルを出力するように Sine Wave ブロックを変更できます。

このためには、まず、ブロック線図内の Sine Wave ブロックをダブルクリックして開きます。これにより、Sine Wave ブロックに関連付けられている [ブロック パラメーター] ダイアログが開きます。

[ブロック パラメーター] ダイアログの最初のフィールドは [振幅] です。次のコマンドを使用して、このフィールド内の値をベクトルに変更できます。

1 [振幅] フィールドに「[1 2]」と入力します。

2 [OK] をクリックして、変更を適用し、ダイアログを閉じます。

3 モデルの [シミュレーション] メニューから [ブロック線図の更新] を選択して、Simulink ブロック線図を更新します。

Sine Wave ブロックから出ている線には「2」と表示されます。これは、この線が 2 つの要素をもつベクトル信号 (つまり 1 次元信号) を伝送していることを示しています。Bus Selector ブロックへの入力信号には、「5{6}」というラベルが付けられています。中かっこの前の 5 は、バス信号にはこれまでどおり 5 つの信号がバンドルされていることを示しています。これらの信号の 1 つが 2 つの要素をもつベクトルであるため、バス信号の合計幅は 6 (中かっこ内の数値) となっています。

バス信号はこれまでどおりベクトルとして扱われ、ベクトル信号を受け入れる Simulink ブロックに渡すことができます。実際には、バス信号は、スカラーと 1 次元ベクトルのみで構成されている限り、ベクトル信号として扱われます。この後すぐに説明しますが、バス信号がベクトルとして扱われる場合の条件はもう 1 つあります。

Simulink での行および列の行列信号

既定の設定では、Simulink ブロック線図内の信号は 1 次元ベクトルとなります。ただし、ブロック線図に 2 次元の行列を導入することはできます。これを示すために、Sine Wave ブロックを変更して、以前入力したベクトルではなく行列信号を出力するようにします。

このためには、Sine Wave ブロックをダブルクリックして開きます。ダイアログの下部 (およびすべての Source ブロックのダイアログの下部) に、[ベクトル パラメーターを 1 次元として解釈] チェック ボックスが表示されます。

  • このチェック ボックスをオンにすると、Simulink は、[ブロック パラメーター] ダイアログに入力された行または列ベクトルを 1 次元配列として解釈します。

  • このチェック ボックスをオンにしない場合は、Simulink は、[ブロック パラメーター] ダイアログに入力された行または列ベクトルを 2 次元行列として解釈します。メモ: このモードで作業する場合は、[ブロック パラメーター] ダイアログに入力するベクトルと行列の次元をすべて一致させなければなりません。

これを説明するために、次の手順を使用して、Sine Wave の出力を 2 次元にします。

1. [ベクトル パラメーターを 1 次元として解釈] チェック ボックスをオフにします。

2. [OK] をクリックして、変更を適用し、ダイアログを閉じます。

3. Simulink ブロック線図を更新して、信号次元のラベルで変更が有効になっていることを確認します。

Sine Wave ブロックの出力信号には、[1x2] というラベルが付けられています。Simulink は、実際にその線で 2 次元の行列信号を伝送しているのです。Bus Selector ブロックへの入力信号には合計 6 つの要素をもつ 5 つの信号が含まれているため、この信号には、これまでどおり「5{6}」というラベルが付けられています。ただし、この場合、バス内の 5 つ目の信号は、実際は行行列です。

これは、バス信号がベクトルとして扱われる最後の事例ですが、バス内のすべての信号が、スカラー、1 次元ベクトル、行行列、または列行列のいずれかである場合、バス信号は、ベクトル信号として扱われます。バスに行行列と列行列の信号が両方とも含まれている場合は、バス信号はベクトル信号ではなくなります。その代わり、そのバス信号は複合信号として扱われます。これについては、この後すぐに説明します。

Simulink での行列信号

Source ブロックには、任意の 2 次元行列を入力できます。たとえば、2 行 2 列の行列を入力するには、[Sine Wave ブロック] ダイアログを開き、[振幅] パラメーターに [1 2; 3 4] と入力して、ブロック線図を更新します。

Sine Wave ブロックからの出力信号の次元は [2x2] となります。

メモ: m 行 n 列の行列 (ここで m と n はどちらも 1 ではない) を入力すると、[ベクトル パラメーターを 1 次元として解釈] チェック ボックスの現在の状態にかかわらず、ブロックの出力は常に行列となります。このチェック ボックスは、m または n のいずれかが 1 である場合にのみ、ベクトル パラメーターに適用されます。

Bus Selector ブロックへの入力信号には、「5{8}」というラベルが付けられています。この信号には 5 つの信号が含まれていますが、それらの信号の 1 つが 4 つの要素をもっているため、全幅は 8 となります。この場合、バス信号は複合信号として扱われます。実際には、バス内の信号のいずれかに行行列でも列行列でもない 2 次元信号が含まれると直ちに、バス信号が自動的に複合信号として扱われるようになります。

複合信号は、Simulink ブロック線図を通る単一のワイヤーにデータをバンドルする場合に役立ちます。ただし、複合信号は、ほとんどの Simulink ブロックに入ることができません。実際には、複合信号は、Bus Selector、Subsystem、Goto、Demux などのバーチャル ブロックにしか入れません。

要約すると、次の条件のいずれかが満たされる場合に、バス信号が複合信号として扱われます。

1. バスに、行行列である信号と、列行列である信号が含まれている場合。

2. バスに、1 つまたは複数の [m x n] 行列 (ここで m と n はどちらも 1 より大きい) が含まれている場合。

Bus Creator ブロックの使用

バス信号の構造をさらに深く理解するために、Bus Creator ブロックを開きます。

このブロックには 2 つの入力があります。これらの入力はそれぞれ、その入力自体がバス信号となっています。bus1 と bus2 というラベルが付けられたこの 2 つのバス信号は、[バス内の信号] リストに、前に正符号を付けて示されます。この 2 つのバス信号を、ツリー内のそれぞれの最上位ノードをダブルクリックして開くと、最後のバスを構成する入れ子にされた信号が表示されます。

[バス内の信号] リストで使用されている名前は、Simulink ブロック線図に入力された信号名から継承されたものです。特定の信号の発信元を検出する場合は、次の手順を実行します。

1. たとえば、bus2 ノード内のパルス信号を選択します。

2. [バス内の信号] リストの右側にある [検索] をクリックします。

3. Pulse Generator ブロックが強調表示されます。

Bus Creator は信号名を使用して、バス内の特定の信号のソースを特定します。

Bus Selector ブロックの使用

信号ラベルが示すように、Bus Creator ブロックの出力はこれまでどおり 5 つの信号で構成されています。ここで、最後の要素は、以前に入力した 2 行 2 列の行列信号です。これを説明するために、Sine Wave ブロックからの行列信号を出力するように Bus Selector ブロックを設定できます。このためには、まず、Bus Selector ブロックをダブルクリックして開きます。

  • このダイアログの左側に、Bus Selector ブロックへ渡されるすべての信号のリストが表示されています。バスに対応するツリーをクリックすると、そのバスを構成しているソース信号を表示できます。Bus Creator の出力信号は、bus1 と bus2 という 2 つのバス信号で構成されています。

  • 右側には、[選択された信号] が表示されています。これは、Bus Selector ブロックの出力となるすべての入力信号が示されたリストです。特定の入力バスに対応する信号を参照するには、ドット表記を使用します。たとえば、bus1 からのチャープ入力信号にアクセスするには、bus1.Chirp を使用します。

次の手順は、Pulse Generator ソースと Sine Wave ソースに対応する出力信号リストを指定する方法を説明しています。

1. [選択された信号] リスト内の bus1.Chirp 信号を強調表示し、このリストの左側にある [削除] を選択して、この信号を削除します。

2. [バス内の信号] リスト内の bus2.Sine 信号を強調表示し、[選択] を選択して、この信号を [選択された信号] に追加します。

3. [OK] を選択して、これらの変更を適用し、ダイアログを閉じます。

シミュレーションを実行します。Scope の下の座標軸に、Sine Wave ブロックからの 4 つの信号が表示されます。

興味深い機能:HILITE_SYSTEM

この例では、リンクのいくつかをクリックしたときに、Simulink ブロック線図内のさまざまなブロックが強調表示されました。これは、関数 hilite_system を使用して行われたことです。構文は hilite_system(sys) です。ここで、sys は強調表示するブロックの名前です。多種多様の強調表示スキームがあります。これらのスキームについては、このコマンドのヘルプ テキストを参照してください。Sine Wave ブロックを強調表示する例をいくつか次に示します。

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