ドキュメンテーション

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

合成信号手法

合成信号を使用してモデル内の見た目の複雑さを軽減できます。合成信号とは、他の信号で構成される信号のことです。個別要素の信号は別々のソースをもち、結合によって合成信号を形成します。その後、合成信号の下流から個別の信号を抽出し、その信号を合成信号の一部ではなかったかのように使用できます。

次の 1 つ以上の手法を使用して、信号を合成信号に結合します。

モデル化要件を満たす合成信号手法を選択するには、合成信号の技術の選択を参照してください。

バス

"バス信号" ("バス" とも呼ばれます) は、タイ ラップで結束されるワイヤーのバンドルに似ています。Simulink® バスは、コンピューター ハードウェア アーキテクチャのバスなどのハードウェア バスと似ていません。Simulink ソフトウェアは、信号の名前ベースの階層構造としてバスを実装します。

バスは、"要素" と呼ばれる信号で構成されています。構成要素の信号は、バス内で別々の ID を保持します。これらの信号には、任意のレベルで入れ子になった他のバスも含めて、あらゆるタイプがあります。バスの要素は、以下のいずれかです。

  • 混在するデータ型の信号 (double、整数、固定小数点など)

  • スカラー要素とベクトル要素の混在

  • 実数値信号と複素数値信号の混在

  • その他のバス

  • 多次元信号

すべてのブロックでバスが受け入れられるわけではありません。どのブロックがどのタイプのバスを処理できるかの詳細については、バス対応ブロックを参照してください。モデル参照インターフェイスにおけるバスも参照してください。

たとえば、このモデルにはバス要素 ClockPulse、および Sine で構成されるバス信号 bus1 があります。

バスを使用する完全な例については、slexBusExample およびバス入門を参照してください。

バーチャル バスと非バーチャル バス

バスには、バーチャルまたは非バーチャルがあります。バーチャル バスと非バーチャル バスはどちらも同様に見た目を単純化しますが、Simulink ではこれらを異なる方法で処理します。

バス機能的な効果信号ストレージ生成コード
バーチャルグラフィカルにしか存在せず、機能的な効果はなし。

各バス要素信号はメモリ内の独自のストレージを占有しますが、バス信号はメモリに格納されません。

"バーチャル" バスに接続するブロックは、コンポーネント信号に割り当てられたメモリにアクセスすることにより、入力を読み取り、出力を書き込みます。通常、これらの信号は不連続です。

信号のサイズとデータ型に関する情報が信号ソースから伝播されます。

テスト ポイントに関連付けられている場合でも生成コードに示されません。構成要素の信号のみ示されます。
非バーチャル機能的な効果あり。

バス信号は連続メモリで独自のストレージを占有します。

"非バーチャル" バスに接続するブロックは、コンポーネント信号のコピーにアクセスすることにより、入力を読み取り、出力を書き込みます。コピーは、バスに割り当てられたメモリの隣接領域に保持されます。

生成コード内で構造体として示されます。

バスを含むモデルのシミュレーションを実行するとき、またはモデルのブロック線図の更新を実行する場合に、Simulink ではバーチャル バス信号と非バーチャル バス信号に対して異なるライン スタイルを使用します。

バーチャル バス
非バーチャル バス

Signal Conversion ブロックは、バーチャル バスを非バーチャルバスに、または非バーチャル バスをバーチャル バスに変換できます。

バス オブジェクト

バスには "バス オブジェクト" を関連付けることができます。バス オブジェクトは、Simulink がバス信号の検証に使用するバス プロパティを提供します。バス オブジェクトは、バーチャル バスではオプションですが、非バーチャル バスでは必須です。

バス オブジェクトでは、それが格納する信号の値とは異なり、バスのアーキテクチャ上のプロパティのみが指定されます。たとえば、バス オブジェクトではバス内の要素の数、それらの要素の順序、要素の入れ子構造の有無とその方法、および構成要素の信号のデータ型は指定できますが、信号値は指定できません。バス オブジェクトは、C における構造定義に似ています。つまり、バス オブジェクトは、バスのメンバーを定義しますが、バスは作成しません。バス オブジェクトについてもう 1 つ考慮する点は、ケーブル コネクタと似ているということです。コネクタはすべてのピンとそれらの構成を定義し、接続可能なワイヤのタイプを制御します。同様に、バス オブジェクトは関連付けられたバスに必要な信号の構成とプロパティを定義します。

バス オブジェクトは、ベース ワークスペースなどの場所に格納できる Simulink.Bus クラスのインスタンスです。このオブジェクトは、バスの構造、および入れ子、データ型、サイズなどその要素のプロパティを定義します。バス オブジェクトはプログラムにより、または Simulink バス エディターを使用して作成できます。バス エディターを使用すると、バス オブジェクトを対話形式で作成および管理できます。バス オブジェクトを MATLAB® コードまたは MAT ファイルとして保存できます。詳細については、バス オブジェクトを使用する状況およびバス エディターによるバス オブジェクトの作成を参照してください。

バスのコードの生成

シミュレーションについて、非バーチャル バスのすべての要素のサンプル時間が同じでなければならない点を除き、バーチャル バスと非バーチャル バスは似ています。ただし、バスのタイプによって、生成されたコードの効率性、サイズおよび可読性に大きな違いが生じる可能性があります。これらの違いの例については、バスのコードの生成を参照してください。

バスを使用するモデルに対するコードを生成する場合に最適な手法の詳細については、バス信号の効率的なコードの生成 (Simulink Coder)を参照してください。

バス要素端子

In Bus Element ブロックと Out Bus Element ブロックを使用すると、バス信号をサブシステムに対する入力および出力として簡単かつ柔軟に使用できます。以下は、バス要素端子ブロックを使用するモデルを示しています。

InportBus SelectorBus Creator および Outport ブロックを使用するサブシステム インターフェイスをリファクタリングして、In Bus Element ブロックと Out Bus Element ブロックを使用できます。変換操作は、信号線またはブロックに追加仕様がない場合のみサポートされます。シングルクリック操作を使用して、次を実行できます。

  • サブシステム内の Inport ブロックと Bus Selector ブロックを In Bus Element ブロックに変換する。

  • サブシステム内の Outport ブロックと Bus Creator ブロックを Out Bus Element ブロックに変換する。

  • サブシステムの入力インターフェイスまたは出力インターフェイスを変換してバス要素端子ブロックを使用する。

slexBusExample およびサブシステム バス インターフェイスの簡略化を参照してください。

バス配列

同一のプロパティをもつ複数の非バーチャル バスを 1 つのバス配列に結合できます。バス配列とは、要素がバスである配列のことです。各バス オブジェクトは、そのバス要素として同じ信号名、階層および属性をもちます。バス配列は MATLAB の構造体の配列と同等です。

バス配列の使用例としては、多チャネル システムのモデル化があります。同じバス オブジェクトを使用してすべてのチャネルをモデル化できますが、チャネルはそれぞれ異なる値をもつ場合があります。

バス配列を使用するモデルの例については、sldemo_bus_arrays のモデルを開いてください。この例で、非バーチャル バス入力信号は、バス信号の配列を作成する Vector Concatenate ブロックまたは Matrix Concatenate ブロックに接続されます。以下に、シミュレートされたモデルがどのように表示されるかを示します。

モデルは、以下でバス配列を使用します。

  • Assignment ブロック。配列内のバスに値を割り当てます。

  • For Each Subsystem ブロック。配列内の各バスで反復処理を実行します。

  • Memory ブロック。前のタイム ステップからのバス配列の入力を出力します。

バス配列へのバスの統合を参照してください。

Mux

合成信号のすべての信号のタイプが同じ場合、通常は Mux を使用できます。Mux は特殊なタイプの不連続 (バーチャル) ベクトルです。ブロックまたはモデル化構成にバスが必要な場合は、Mux を使用しないでください。

このモデルには、Mux ブロックに入力され、Mux 信号として Demux ブロックに送信され、別々の信号として出力される 3 つの信号があります。

詳細については、Mux 信号を参照してください。

連結された連続出力信号

同じデータ型をもつ入力信号を連結して連続した出力信号を作成できます。Vector Concatenate ブロックまたは Matrix Concatenate ブロックを使用して、信号を入力において連結し、出力信号を生成します。この出力信号の要素は、メモリの連続した位置にあります。

たとえば、このモデルでは Matrix Concatenate ブロック パラメーター [連結の次元]2 に設定しています。入力は 2 次元行列です。Matrix Concatenate ブロックは行列の水平方向の連結を実行し、入力行列を左右に並べて配置して、出力行列を作成します。

参考

ブロック

関数

クラス

関連するトピック