ドキュメンテーション

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

バリアントの定義、設定および有効化

バリアントの選択の表現

バリアントの選択には、モデルの 2 つ以上のコンポーネントのコンフィギュレーションがあります。次の例は、モデルの Variant Subsystem ブロック内のバリアント選択を表現する方法を示しています。設計バリアントを表現する他の方法については、Simulink におけるバリアントの表現のオプションを参照してください。

  1. Variant Subsystem ブロックをモデルに追加し、名前を付けます。

    このブロックはバリアントの選択のコンテナーとして使用します。

  2. Variant Subsystem ブロックをダブルクリックします。このブロックの入力および出力と一致するように Inport ブロックと Outport ブロックを追加します。

    メモ

    Variant Subsystem ブロックには、InportOutportSubsystem および Model ブロックのみを追加できます。データ端子を通して制御信号を渡すことができます。

  3. Variant Subsystem ブロック上のバッジを右クリックし、[ブロック パラメーター (Subsystem)] を選択します。

  4. [ブロック パラメーター] ダイアログ ボックスで、追加するバリアント サブシステムの選択ごとに ボタンをクリックします。

    Simulink® により空の Subsystem ブロックが Variant Subsystem ブロック内に作成されます。新しいブロックには、含んでいる Variant Subsystem ブロックと同じ数の入力端子と出力端子があります

    ヒント

    (バリアントの選択の入力端子と出力端子の数が異なる場合は、バリアントの選択の入力端子と出力端子のマッピングを参照してください)。

  5. Subsystem ブロックを開き、バリアントの選択を表すモデルを作成します。

  6. バリアントのプロトタイプを作成しているときに、Variant Subsystem ブロック内の入力または出力がない、空の Subsystem ブロックを作成できます。空のサブシステムによって、バリアントの完全なモデル化の必要がない、サブシステムが非アクティブな状況が再現されます。空のバリアントの選択では、バリアントのアクティブ化条件を指定するか、条件の前に % 記号を付けてバリアント条件をコメント アウトします。

    空のバリアントの選択がコンパイル中にアクティブである場合、Simulink はそれを無視します。

バリアントの選択として Simulink モデルを含める

Simulink モデルをバリアントの選択として Variant Subsystem ブロック内に含めることができます。

  1. バリアントの選択として含めるモデルを作成します。含んでいる Variant Subsystem ブロックと同じ数の入力端子と出力端子がモデルにあることを確認します。

    メモ

    モデルの入力端子および出力端子の数が異なる場合は、バリアントの選択の入力端子と出力端子のマッピングを参照してください。

  2. モデルで、バリアントの選択を含む Variant Subsystem ブロックを右クリックし、[ブロック パラメーター (Subsystem)] を選択します。

  3. [ブロック パラメーター] ダイアログ ボックスで ボタンをクリックし、Model ブロックをバリアントの選択として追加します。

    Simulink により関連付けられていない Model Reference ブロックが Variant Subsystem ブロックに作成されます。

  4. 関連付けられていないモデル ブロックをダブルクリックします。[モデル名] ボックスにモデル バリアントの選択として使用するモデル名を入力し、[OK] をクリックします。

バリアント制御の設定

バリアント制御を使用して、バリアントの選択をアクティブ化する条件を指定できます。また、最大で 1 つのバリアントの選択を既定として指定できます。

  1. MATLAB® コマンド プロンプトで、組み合わせたときにアクティブ化する条件を作成する制御変数を指定します。

    mode = 3;
    version = 2;

  2. モデルのバリアントの選択のコンテナーである Variant Subsystem ブロックを右クリックし、[ブロック パラメーター (Subsystem)] を選択します。

  3. [ブロック パラメーター] ダイアログ ボックスの [バリアント制御] 列で、いずれかの選択肢の横にある [(既定の設定)] を選択します。

    Simulink は、シミュレーションで 1 つのバリアントの選択のみがアクティブになることを検証します。[ゼロ アクティブ バリアント制御を許可] が選択されている場合、ゼロ バリアントの選択ができます。制御条件でバリアントがアクティブにならない場合、Simulink はシミュレーションに既定のバリアントとコード生成を使用します。

  4. 他の各選択に対してバリアント条件を指定します。空のバリアントの選択を使用している場合、その選択に対するバリアント条件を指定します。既存のアクティブ化条件の先頭に % 記号を付けてコメント アウトすることもできます。

  5. [適用] をクリックします。そうしない場合は変更内容は保存されません。

バリアントへの変換

Simulink エディターでは、次のブロックを Variant Subsystem ブロックに変換できます。

  • Subsystem ブロック

  • Model ブロック

  • Variant Model ブロック (R2017b より前のバージョンで作成されたモデル)

  • 条件付き実行サブシステム

これを行うには、ブロックを右クリックし、コンテキスト メニューで [サブシステムとモデル参照][変換][Variant Subsystem] をクリックします。

これらのブロックはプログラムで Variant Subsystem ブロックに変換することもできます。これを行うには、次のいずれかの構文を使用します。

  • Simulink.VariantManager.convertToVariant(gcb)

  • Simulink.VariantManager.convertToVariant(gcbh)

以下に例を示します。

open_system('sldemo_variant_subsystems');
Simulink.VariantManager.convertToVariant('sldemo_variant_subsystems/Controller');

バリアント モデルをバリアント サブシステムに変換する場合、Model ブロックのパラメーター [プリプロセッサの条件を生成] の動作が Variant Subsystem ブロックのパラメーター [ブロック線図の更新中にすべての選択肢を解析し、プリプロセッサの条件を生成する] と異なることに注意してください。バリアント モデルの場合、このパラメーターを有効にすると、シミュレーションとブロック線図の更新でコンパイルされるのはアクティブなバリアントのみになります。バリアント サブシステムの場合、このパラメーターを有効にするとすべてのバリアントがコンパイルされるため、シミュレーションと更新が低速になる可能性があります。

バリアント モデルのバリアント サブシステムへの変換では Variants コマンド ライン パラメーターを使用するスクリプトの更新が必要になる可能性があります。

関連する例

詳細