Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Variant Sink

バリアントを使用した複数の出力間での経路設定

  • ライブラリ:
  • Simulink / Signal Routing

  • Variant Sink block

説明

Variant Sink ブロックには、1 つの入力端子と 1 つ以上の出力端子があります。最大で 1 つのバリアントの選択がアクティブになるように、出力端子に接続されたブロックとしてバリアントの選択を定義できます。

各出力端子はバリアント制御に関連付けられています。true に評価されるバリアント制御によって、アクティブになる出力端子が決まります。

シミュレーション中、Simulink® はアクティブな選択を Variant Sink ブロックの入力端子に直接接続し、非アクティブな選択を無視します。

端子

入力

すべて展開する

入力信号。スカラー、ベクトル、または行列として指定され、アクティブな出力端子に接続されます。

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

出力

すべて展開する

最初のバリアントからの出力信号です。true に評価されるバリアント制御によって、アクティブになる出力端子が決まります。

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

N 番目のバリアントからの出力信号true に評価されるバリアント制御によって、アクティブになる出力端子が決まります。

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

パラメーター

すべて展開する

  • — バリアント条件の評価に基づいてアクティブなバリアントを選択するには、[式] モードを使用します。バリアント条件で使用されるバリアント制御変数は、グローバル ワークスペースまたはデータ ディクショナリで作成しなければなりません。

  • ラベル[ラベル モードのアクティブな選択肢] パラメーターで指定するバリアントの名前に基づいてアクティブなバリアントを選択するには、[ラベル] モードを使用します。[label] モードでは、バリアント制御は string であり、いずれのワークスペースでも作成される必要はありません。

    [ラベル] モードを選択すると、バリアント バッジによって変更が示されます。

    メモ

    [ラベル モードのアクティブな選択肢] パラメーターをマスクにプロモートすると、[バリアント制御モード] は無効になります。

    • [ラベル モードのアクティブな選択肢] パラメーターをマスクにプロモートするときに、ブロックが [式] モードである場合、[マスク] ダイアログ ボックスからプロモートされた [ラベル モードのアクティブな選択肢] パラメーターを変更することで、[バリアント制御モード][ラベル] に変更できます。

    • [ラベル モードのアクティブな選択肢] パラメーターをマスクにプロモートするときに、ブロックが [ラベル] モードである場合、[バリアント制御モード][式] モードに変更することはできません。

    パラメーターのマスクへのプロモートの詳細については、マスクへのパラメーターのプロモートを参照してください。

  • sim/codegen の切り替え — シミュレーションのためのバリアントとコード生成ワークフローを自動的に切り替えるには、[sim/codegen の切り替え] モードを使用します。モデルをシミュレーションするときに (ノーマル、アクセラレータ、ラピッド アクセラレータ)、Simulink はアクティブな選択肢として sim 分岐を自動的に選択します。同様に、ソフトウェアインザループ (SIL)、プロセッサインザループ (PIL) シミュレーションを実行したり、コードを生成したり、エクスターナル モードを使用するときに、Simulink は自動的に codegen 分岐を選択します。

このパラメーターを別の値に設定すると、バリアント バッジがバリアントのバッジに示すように変化します。

依存関係

[バリアントのアクティベーションのタイミング] パラメーターは、[バリアント制御モード] パラメーターを [式] または [sim/codegen の切り替え] に設定する場合のみ使用できます。

このパラメーターは、ブロック線図の更新またはコードのコンパイル中に Simulink が Variant Sink ブロックのアクティブな選択肢を設定するかどうかを決定します。また、このパラメーターは ERT ターゲット用に生成されたコードに含める変動性も決定します。すべてのバリアントの選択肢を含める場合、生成されたコードでは選択肢が C のプリプロセッサの条件ステートメント (#if と #endif) で囲まれます。

このパラメーターを別の値に設定すると、バリアント バッジがバリアントのバッジに示すように変化します。

[バリアントのアクティベーションのタイミング] パラメーターは、次のように設定できます。

  • ブロック線図の更新 — Simulink は、信号属性を伝播する前に、ブロック線図の更新中にアクティブな選択肢を設定します。非アクティブな選択肢は信号属性の伝播の前に削除されるため、生成されたコードにはアクティブな選択肢のみが含まれます。

  • ブロック線図の更新時にすべての選択肢を解析 — Simulink は、信号属性の伝播後にアクティブな選択肢を設定します。信号属性は、アクティブな選択肢と非アクティブな選択肢の両方に伝播されます。すべての選択肢は、シミュレーションの結果とコード生成のすべてのバリアント ブランチの一貫性を維持するために解析されます。非アクティブな選択肢は、ブロック線図の更新の最後に、モデルの開始が発生する前に削除されます。生成されたコードには、アクティブな選択肢のみが含まれます。このワークフローは、シミュレーションとコード生成とで同じままです。

  • コードのコンパイル — シミュレーションの場合、ワークフローは [ブロック線図の更新時にすべての選択肢を解析] と同じです。ただし、非アクティブな選択肢はコード生成中に削除されません。生成されたコードにはアクティブな選択肢と非アクティブな選択肢が含まれ、選択肢は C プリプロセッサ条件付きステートメントの #if#endif で囲まれます。

次の図は、このパラメーターで指定するさまざまな値でのバリアントのアクティベーションのタイミングを示します。

詳細については、Represent Variant Source and Sink Blocks in Generated Code (Embedded Coder)を参照してください。

依存関係

  • [バリアント制御モード][式] に設定すると、このパラメーターを [ブロック線図の更新][ブロック線図の更新時にすべての選択肢を解析]、または [コードのコンパイル] に設定できます。

  • [バリアント制御モード][sim/codegen の切り替え] に設定すると、このパラメーターを [ブロック線図の更新] または [ブロック線図の更新時にすべての選択肢を解析] のいずれかに設定できます。[コードのコンパイル] オプションは使用できなくなります。

プログラムでの使用

ブロック パラメーター: VariantActivationTime
型: 文字ベクトル
値: [ブロック線図の更新] | [ブロック線図の更新時にすべての選択肢を解析] | [コードのコンパイル]
既定の設定: [ブロック線図の更新]

Variant Sink ブロックの上流で 1 つのバリアントの選択に接続されている入力端子の数この値は読み取り専用です。

端子を追加するには をクリックし、既存の端子を削除するには をクリックします。

グローバル ワークスペースで利用可能なバリアント制御が表示されます。バリアント制御は、boolean の条件式または boolean の条件式を表す Simulink.Variant オブジェクトのいずれかです。お使いのモデルのコードを生成する場合、制御変数を MATLAB® 変数として定義しなければなりません。

非数値のバリアント制御値を入力するには、列挙型データを使用します。列挙型データの使用の詳細については、Simulink モデルでの列挙型データの使用を参照してください。

バリアントの名前を加えるには、新しい行にある [バリアント制御式] のセルをダブルクリックして、バリアント制御式を入力します。バリアント制御名を編集したら、[適用] をクリックします。変更を適用せずにバリアント制御を追加または削除する場合、バリアント制御名に対する前の編集内容は失われます。

プログラムでの使用

ブロック パラメーター: VariantControls
型: 文字ベクトルの cell 配列
値: バリアントの選択に関連付けられたバリアント制御
既定の設定: 'Variant'

Simulink.Variant オブジェクトのバリアント制御に関する [条件] が表示されます。Simulink.Variant パラメーターのダイアログ ボックスまたはグローバル ワークスペース内のバリアント条件を作成または変更します。

詳細については、プログラムによるバリアント制御の作成およびSimulink.Variantを参照してください。

[バリアント制御モード][ラベル] を選択すると、[ラベル モードのアクティブな選択肢] オプションが有効になります。[ラベル モードのアクティブな選択肢] オプションからアクティブなバリアントの選択肢を選択できます。Variant Sink ブロックのバッジを右クリックして [ラベル モードのアクティブな選択肢] を選択することもできます。

[ラベル モードのアクティブな選択肢] ドロップダウン リストには、グローバル ワークスペースまたはデータ ディクショナリで現在定義されているすべてのバリアント制御が表示されます。有効な MATLAB 識別子を使用してバリアント制御を指定します。詳細については、Simulink.Variantを参照してください。

メモ

[ラベル モードのアクティブな選択肢] オプションは、[式] モードでは使用できません。

依存関係

このパラメーターを有効にするには、[ラベル] モードを選択します。

プログラムでの使用

ブロック パラメーター: LabelModeActivechoice
型: 文字ベクトル
値: バリアント制御式で指定
既定の設定: Choice_1

アクティブなバリアントの選択がない状態で (バリアント ブロックを含む) モデルをシミュレートするには、[ゼロ アクティブ バリアント制御を許可] オプションを選択します。このオプションが選択され、アクティブなバリアントの選択がない場合、Simulink は Variant Sink ブロックの入力ストリームおよび出力ストリームに接続されているすべてのブロックを無効にします。削除されたブロックはブロック線図の更新やシミュレーションで無視されます。

このオプションを選択しない場合、アクティブなバリアントの選択がないと、Simulink でエラーが発生します。

このオプションを選択すると、バリアント バッジによって変更が示されます。

依存関係

[バリアント制御モード][式] オプションが選択されています。

プログラムでの使用

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

このオプションを選択すると、Simulink は Variant Sink ブロック端子の各バリアント制御 (条件式) に注釈を付けます。

プログラムでの使用

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

ブロックの特性

データ型

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

直接フィードスルー

いいえ

多次元信号

いいえ

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

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

R2016a で導入