Main Content

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

バリアント サブシステム、バリアント モデル

バリアントの選択として Subsystem ブロックまたは Model ブロックが含まれているテンプレート サブシステム

  • ライブラリ:
  • Simulink / Ports & Subsystems

    HDL Coder / Ports & Subsystems

  • Variant Subsystem, Variant Model block
  • Variant Subsystem, Variant Model block

説明

Variant Subsystem ブロックは、シミュレーション用にアクティブな選択を最大で 1 つもつことができます。Variant Subsystem ブロックは、Variant Subsystem の選択肢として使用するために 2 つの Subsystem ブロックを含めるように事前構成されたテンプレートです。

Variant Subsystem ブロックには、バリアント システムとして Subsystem ブロックと Model ブロックを混在させることができます。これには Inport ブロック、Outport ブロック、および Connection Port ブロックも含むことができます。Variant Subsystem ブロック内には、接続が描かれません。

Model ブロックを選択肢としてもつ Variant Subsystem ブロックは、Variant Model ブロックと呼ばれます。

各バリアント システムは、グローバル ワークスペースに作成されたバリアント制御に関連付けられています。バリアント制御によってアクティブなバリアント システムが決定されます。バリアント制御は条件式、条件式を指定する Simulink.Variant オブジェクト、または既定のバリアントにすることができます。true として評価されるバリアント制御が、アクティブなバリアントを決定します。

Variant Subsystem ブロックに含まれる Outport ブロックで [ソース非接続時に出力を指定] オプションを選択すると、その出力として非グラウンド値を指定できます。

メモ

Outport ブロック ダイアログ ボックスの [信号属性] セクションで正しいデータ型を指定しなければなりません。

端子

Simulink® のシミュレーションの実行中は、Variant Subsystem ブロックの非アクティブな端子は無効になります。

入力

すべて展開する

Variant Subsystem 内に含まれる Subsystem ブロックまたは Model ブロックはそれぞれ、1 つのバリアント システムを表します。バリアント システムの入力端子名が Variant Subsystem Container ブロックによって使用される入力端子名のサブセットである場合、Variant System ブロックは Variant Subsystem ブロックと異なる数の入力端子をもつことができます。

出力

すべて展開する

Variant Subsystem 内に含まれる Subsystem ブロックまたは Model ブロックはそれぞれ、1 つのバリアント システムを表します。バリアント システムの出力端子名が Variant Subsystem ブロックによって使用される出力端子名のサブセットである場合、Variant System ブロックは Variant Subsystem ブロックと異なる数の出力端子をもつことができます。

パラメーター

すべて展開する

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

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

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

    メモ

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

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

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

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

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

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

依存関係

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

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

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

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

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

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

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

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

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

依存関係

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

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

プログラムでの使用

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

テーブルには、Variant Subsystem に含まれる各バリアント システムの行があります。バリアント システムが存在しない場合、テーブルは空になります。

[バリアントの選択] テーブルの左にあるボタンを使用して、テーブルの要素を変更できます。

目的...クリックするボタン
新しいサブシステムの選択を作成して追加:テーブルに新しいサブシステム バリアントの選択を配置し、Variant Subsystem ブロック線図に Subsystem ブロックを作成します。
新しいモデル バリアントの選択を作成して追加します: テーブルに新しいモデル バリアントの選択を配置し、Variant Subsystem ブロックに Model ブロックを作成します。
選択されている Variant オブジェクトを作成/編集: グローバル ワークスペースに Simulink.Variant オブジェクトを作成し、Simulink.Variant オブジェクトのパラメーター ダイアログ ボックスを開いてバリアントの [条件] を指定します。
選択されているバリアントの選択ブロックを開きます: [バリアントの選択] テーブルで選択された行のサブシステムのブロック線図を開きます。
Variant Subsystem の内容のダイアログ情報を更新:バリアント システムおよびグローバル ワークスペースのバリアント制御の値に応じて [バリアントの選択] テーブルを更新します。

この読み取り専用フィールドはバリアント システム名に基づいています。サブシステム バリアントの選択を追加するには、 をクリックします。モデル バリアントの選択を追加するには、 をクリックします。

バリアントの名前を加えるには、新しい行にある [バリアント制御] のセルをダブルクリックして、バリアント制御式を入力します。

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

プログラムでの使用

構造体フィールド: Variant パラメーター構造体の読み取り専用 variant.Name フィールドによって表現されます
型: 文字ベクトル
値: バリアントの選択に関連付けられたバリアント制御
既定の設定: 'variant'

この読み取り専用フィールドは、グローバル ワークスペースの関連付けられたバリアント制御の条件に基づいています。Simulink.Variant パラメーターのダイアログ ボックスまたはグローバル ワークスペース内のバリアント条件を作成または変更します。

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

[ラベル モードのアクティブな選択肢] オプションの場合、バリアント制御は boolean の条件式または Simulink.Variant オブジェクトでなくてもかまいません。% 記号で始まるバリアント制御は無視されます。

メモ

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

依存関係

このパラメーターを有効にするには、[バリアント制御モード] パラメーターの [ラベル] オプションを選択します。

プログラムでの使用

パラメーター: LabelModeActivechoice
型: 文字ベクトル
値: ラベル モードのアクティブな選択肢が指定されない場合、値は空です。ラベル モードのアクティブな選択肢が指定される場合、値はラベル モードのアクティブな選択肢の名前です。
既定の設定: ''

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

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

依存関係

  • バリアントの (既定の) オプションは選択されていません。

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

プログラムでの使用

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

このオプションを選択した場合、Simulink は Variant Subsystem ブロックの外部のブロックに基になるブロックのバリアント条件を伝播します。シミュレーション中に、アクティブな選択に接続された Subsystem の外部のコンポーネントがアクティブになり、非アクティブな選択に接続されたコンポーネントが非アクティブになります。

このオプションを選択すると、Variant Subsystem の外部のコンポーネントが Variant Subsystem ブロック内のブロックのアクティブな状態と非アクティブな状態を確実に認識します。詳細については、Variant Subsystem の適応インターフェイスを参照してください。

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

プログラムでの使用

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

ブロックの特性

データ型

Boolean[a] | bus[a] | double[a] | enumerated[a] | fixed point[a] | half[a] | integer[a] | single[a] | string[a]

直接フィードスルー

いいえ

多次元信号

限定的[a]

可変サイズの信号

限定的[a]

ゼロクロッシング検出

いいえ

[a] 実際のデータ型または機能のサポートは、ブロックの実装に依存します。

拡張機能

R2010b で導入