このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Merge
複数の信号を単一の信号に結合
ライブラリ:
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 ブロックは、次のブロック線図に示すように、要素が並べ替えられていたり、部分的に選択されていたりするような入力信号を受け入れません。
条件付き実行サブシステムの外側で結合されたブロックには入力信号を接続しないでください。
バス配列を Merge ブロックの入力信号として使用できますが、次の制限があります。
[異なる端子幅を許可] — このパラメーターはクリアします。
初期条件 — このパラメーターは次を使用して指定できます。
値
0
。この場合、バス配列内にある個々の各信号は初期値0
を使用します。バス配列内にある個々の信号に対して初期条件を指定する構造体の配列。
バス型で定義される各要素の初期条件を指定するスカラー構造体。この手法を使用して配列の各バスに同じ初期条件を指定します。
端子
入力
出力
パラメーター
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
拡張機能
バージョン履歴
R2006a より前に導入