Main Content

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

Merge

複数の信号を単一の信号に結合

  • Merge block

ライブラリ:
Simulink / Signal Routing
HDL Coder / Ports & Subsystems

説明

Merge ブロックは、入力を単一の出力に結合します。どの時点の出力値も、駆動ブロックの最新の計算出力と等しくなります。[入力数] パラメーターを設定して、入力の数を指定します。

Merge ブロックは、異なるときに更新される入力信号を、インターリーブされた値が別の ID と時間を保持する統合信号にインターリーブする場合に使用します。同時に更新する信号を、配列または行列信号に統合するには、Concatenate ブロックを使用します。

Merge ブロック使用の際のガイドライン

Merge ブロックを使用するときは、以下のガイドラインに従ってください。

  • ブロックを介在させずに Merge ブロックを駆動するときは、常に条件付き実行サブシステムを使用してください。

  • 任意のタイム ステップで実行される駆動側の条件付き実行サブシステムは多くても 1 つとなるようにしてください。

  • すべての入力信号が同じサンプル時間をもつことを確認してください。

  • Merge ブロックへの入力となる信号は分岐しないでください。

  • Merge ブロックへの入力となる信号はログに記録しないでください。

  • Merge ブロックのブロックの実行優先順位は指定しないでください。詳細については、ブロックの実行順序、実行優先順位、およびタグの指定を参照してください。

  • Merge ブロックを駆動するすべての条件付き実行サブシステムの Outport ブロックに対して、[ディセーブル時の出力][保持] に設定してください。

  • Model ブロックの出力が MATLAB Function ブロックまたは Stateflow® チャートからのものである場合は、その出力端子を Merge ブロックの入力端子に接続しないでください。

  • Merge ブロックでは、さまざまなタスクの信号をルートの Outport ブロックにマージすることがサポートされます。

Merge ブロックの各入力として、最上位の非バーチャルなソースは、条件付き実行サブシステム (For Iterator Subsystem または While Iterator Subsystem を含まない) でなければなりません。

次のブロック線図に示すのは、Merge ブロックの有効な使い方で、2 つの条件付き実行サブシステムから信号をマージします。

バス サポート

Merge ブロックはバス対応ブロックです。入力はバーチャルまたは非バーチャルなバス信号で次の制約があります。

  • 入力数は 1 よりも大きい

  • [初期出力] は、ゼロ、非ゼロのスカラー、または有限数値構造体でなければなりません。

  • [異なる端子幅を許可] チェック ボックスはオフにしなければなりません。

  • すべての入力は、バスで、等価でなければなりません (すべての要素について同名で同じ属性をもつ同じ階層にある)。

Merge ブロックへの非バーチャル バス入力のすべての信号で同じサンプル時間を使用しなければなりません。Rate Transition ブロックを使って個々の信号のサンプル時間、またはバス内のすべての信号のサンプル時間を変更することができます。

S-Function 出力のマージ

Merge ブロックは、S-Function ブロックの出力を保存するためのメモリが再利用可能な場合に限り S-Function ブロックからの信号をマージできます。S-Function ブロックの再利用不可能な端子を Merge ブロックに接続するモデルを更新またはシミュレートしようとすると、Simulink® はエラー メッセージを表示します。ssSetOutputPortOptimOpts を参照してください。

マルチタスク ルート出力

ルートの Outport ブロックに接続されている Merge ブロックでは、さまざまなタスクの信号をルートの Outport ブロックに同時に書き込むことで、これらの信号をマージできます。Merge ブロックにはソースの union サンプル時間が割り当てられます。

同じタスクに含まれる Merge ブロックのすべてのソースが、同じタイム ステップで同時に出力しない条件付き実行サブシステム内にある必要があります。

制限

  • Merge ブロックに接続するすべての信号は、機能的には同じ信号です。このため、信号には制限があり、特定の信号は最大 1 つの信号オブジェクトに関連付けられます。詳細については、Simulink.Signal を参照してください。

  • Merge ブロックへの入力が単一のイニシエーターからである場合、実行時診断は実行されません。単一のイニシエーターの例としては、Merge ブロックに接続された Function-Call Subsystem を実行する Stateflow チャートなどがあります。

  • ディセーブルのとき、マージ対象の条件付き実行サブシステムの出力端子をリセットに設定しないでください。このアクションにより、複数のサブシステムがブロックを同時に更新する可能性があります。より詳しく述べると、ディセーブル状態のサブシステムはその出力をリセットすることで Merge ブロックを更新します。一方、Enabled Subsystem はその出力を計算することにより、ブロックを更新するからです。

    この動作を防ぐには、マージ対象の各条件付き実行サブシステムに対して Outport ブロックの [ディセーブル時の出力] パラメーターを [保持] に設定します。

  • Merge ブロックは、次のブロック線図に示すように、要素が並べ替えられていたり、部分的に選択されていたりするような入力信号を受け入れません。

    Simulink block diagram including 2 enabled subsystems, each of whose outputs is connected to a Selector block. The outputs of both Selector blocks are connected to a Merge block. One Selector block reorders its input signal before passing it to the Merge block, and the other Selector block selects a subset of its input signal before passing it to the Merge block.

  • 条件付き実行サブシステムの外側で結合されたブロックには入力信号を接続しないでください。

バス配列を Merge ブロックの入力信号として使用できますが、次の制限があります。

  • [異なる端子幅を許可] — このパラメーターはクリアします。

  • 初期条件 — このパラメーターは次を使用して指定できます。

    • 0。この場合、バス配列内にある個々の各信号は初期値 0 を使用します。

    • バス配列内にある個々の信号に対して初期条件を指定する構造体の配列。

    • バス型で定義される各要素の初期条件を指定するスカラー構造体。この手法を使用して配列の各バスに同じ初期条件を指定します。

端子

入力

すべて展開する

他の入力信号とマージされる 1 番目の入力信号

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

他の入力信号とマージされる n 番目の入力信号。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

出力

すべて展開する

入力信号からマージされた出力信号。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

パラメーター

すべて展開する

マージする入力信号の数を指定します。ブロックは各入力信号に対して端子を作成します。

プログラムでの使用

ブロック パラメーター: Inputs
型: 文字ベクトル
値: 整数
既定の設定: '2'

出力信号の初期値を指定します。初期出力値を指定しない場合、初期出力は初期化モードと駆動ブロックに依存します。

簡易初期化モードでは、[初期出力] の未指定 (空行列 []) の値に関して、出力データ型の既定の初期値が使用されます。既定の初期値の詳細は、信号値の初期化を参照してください。クラシック初期化モードでは、[初期出力] の未指定 (空行列 []) の値に関して、そのブロックの初期出力は最後に評価された駆動ブロックの初期出力と等しくなります。これらのソースの初期化の順序は変化する可能性があるため、初期化はモデルのシミュレーションとコード生成で一致しない可能性があります。

プログラムでの使用

ブロック パラメーター: InitialOutput
型: 文字ベクトル
値: スカラー | ベクトル
既定の設定: '[ ]'

このパラメーターを選択して、要素の数が相互に異なる入力、または出力と異なる入力をブロックが受け入れるようにします。このブロックでは、出力信号の先頭に対する各入力信号のオフセットを指定できます。出力信号の幅は次のようになります。

max(w1+o1, w2+o2, ... wn+on)

ここで、w1, ... wn は入力信号の幅、o1, ... on は入力信号のオフセットです。

このパラメーターをオフにすると、Merge ブロックは同じ次元の入力のみを受け入れ、入力と同じ次元の信号を出力します。

メモ

モデルでクラシック初期化モードを使用していない限り、このパラメーターは選択しないでください。

プログラムでの使用

ブロック パラメーター: AllowUnequalInputPortWidths
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

ベクトルを入力して、出力信号の先頭に対する各入力信号のオフセットを指定します。

依存関係

このパラメーターを有効にするには、[異なる端子幅を許可] を選択します。

プログラムでの使用

ブロック パラメーター: InputPortOffsets
型: 文字ベクトル
値: スカラー | ベクトル
既定の設定: '[ ]'

ブロックの特性

データ型

Boolean | bus | double | enumerated | fixed point | half | image | integer | single | string

直達

はい

多次元信号

はい

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

拡張機能

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

バージョン履歴

R2006a より前に導入