このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。
バリアントとは、およびどのような場合にそれを使用するか
バリアントとは
モデルベース デザイン ワークフローでは、さまざまな要件セットを満たすためにシステム コンポーネントに対して複数の設計バリエーションを作成することが重要です。これらの要件はさまざまな市場ニーズ、顧客の基本設定、地図機能に対応できます。要件から展開まで、開発ライフサイクル全体を通して、これらの設計の選択肢を切り替えなければならない場合があります。
Simulink® バリアント機能を使用することで、1 つのモデル内でシステムのすべての代替設計を表現できます。設計の選択肢はそれぞれバリアントの選択としてモデルに組み込まれます。このようなモデルには、共通の固定構造と、バリアントの選択に応じてアクティブになる可変コンポーネントの有限セットがあります。このモデルは Variant Source ブロックを使用してシステムへの入力信号に対するバリアントの選択を実装する方法を示します。非アクティブな選択肢は薄く表示されます。
例については、Use Variants to Create One Model for Many Systemsを参照してください。
バリアントを使用する利点
モデルベース デザインでバリアントを使用する場合、いくつかの利点が得られます。
バリアントを使用して多くのシステムに対して 1 つのモデルを設計できます。
モデルのセクションをコメントアウトせずに、設計の可能性をバリアントとしてすばやくプロトタイプを作成できます。
バリアントは、再利用とカスタマイズ用のモジュール設計プラットフォームの開発に役立ちます。このアプローチは、複雑さを低減してワークフローの速度を改善します。
モデルのコンポーネントにいくつかの代替設定がある場合、固定コンポーネントを変更することなく、代替設定を確認できます。
シミュレーションまたはコード生成用に、同一のモデルから異なるバリアント コンフィギュレーションを使用できます。
特定のテスト スイート用に考えられるすべての設計のシミュレーションを実行できます。
大規模な設計作業の場合、これらの設計をテストするプロセスを、マルチコア コンピューターのクラスターに分散できます。一方で、設計に固有なテストを効果的に管理するための代替設計用に、異なるテスト スイートをマッピングできます。
多数のバリアントをもつモデルから、バリアント コンフィギュレーションのサブセットに対して削減されたモデルを生成できます。
どのような場合にバリアントを使用するか
以下にバリアントを使用できる 3 つのシナリオを示します。
複数のシミュレーション、コード生成、テスト ワークフローを表すモデル。 | |
コンポーネント レベルで複数の設計の選択肢が含まれるモデル。 | |
テスト モデルをデバッグ モデルと区別する場合など、大部分は類似していてもわずかな変動があるモデル。左側のテスト モデルは固定された設計です。右側の同じテスト モデルには、デバッグ目的で導入されたバリアントが含まれています。 | |
Simulink のバリアントのタイプ
"バリアント ブロック" を使用することで、1 つのモデル内でシステム コンポーネントの複数の構造またはアルゴリズムの実装を表現し、要件に応じてそれらを切り替えられます。Simulink におけるバリアント ブロックのタイプの概要については、Variant Blocks in Simulinkを参照してください。
"バリアント パラメーター" を使用することで、ブロック パラメーターに対して変動する値が必要な設計バリエーションを実装できます。詳細については、Use Variant Parameters to Reuse Block Parameters with Different Valuesを参照してください。
"バリアント遷移" では、同じ Stateflow® チャート内で複数の設計の設定に遷移できます。詳細については、バリアント条件を使用したインジケーター ランプ調光器の制御 (Stateflow)を参照してください。
"次元バリアント" では、バリアント条件に基づいて変動するシンボリック次元を指定できます。Implement Symbolic Dimensions for Array Sizes in Generated Code (Embedded Coder)を参照してください。
"AUTOSAR バリアント" では、バリアント ブロックを使用して変動点とともに AUTOSAR ソフトウェア コンポーネントを実装できます。AUTOSAR バリアントのモデル化 (AUTOSAR Blockset)を参照してください。
ヒント
Simulink におけるバリアントの機能を示す例のリストについては、V-Model for System Development with Simulink Variantsを参照してください。
バリアントで使用する重要な用語とパラメーターの定義を確認するには、Variant Terminologyを参照してください。
バリアント コード生成機能を示す例については、バリアント システム (Simulink Coder)を参照してください。
Simulink のバリアント ブロック
以下のバリアント ブロックをモデル設計に応じて使用します。
モデル内の個別の階層内にコンポーネントの複数の実装を作成する "階層的バリアント ブロック"。
モデル内の同じレベルにあるすべてのバリアント実装を表現する "インライン バリアント ブロック"。
バリアントを使用してコンテキスト依存のシステム動作をモデル化する "イベントベースのバリアント"。
バリアントのタイプ | バリアント ブロック | 用途 |
---|---|---|
階層的バリアント ブロック | Variant Subsystem | Variant Subsystem ブロックは、バリアントの選択肢を表現するために Subsystem ブロックで事前構成されたテンプレートです。 Variant Subsystem ブロックでは、バリアントの選択として、Subsystem ブロック、Model ブロック、または Subsystem Reference ブロックの組み合わせが許可されます。 |
Variant Model | Variant Model ブロックは、バリアントの選択を表現するために 2 つの Model ブロックで事前構成されたテンプレートです。 Variant Model ブロックでは、バリアントの選択として、Subsystem ブロック、Model ブロック、または Subsystem Reference ブロックの組み合わせが許可されます。 | |
Variant Assembly Subsystem | Variant Assembly Subsystem ブロックでは、外部ファイルからバリアントの選択を追加または削除できます。 Variant Assembly Subsystem では、バリアントの選択として、Model ブロックまたは Subsystem Reference ブロックの組み合わせが許可されます。 | |
インライン バリアント ブロック | Variant Source | Variant Source ブロックではその各入力端子に接続されているブロック領域としてバリアントの選択を定義できます。ブロックは信号のソースに変化を提供します。 |
Variant Sink | Variant Sink ブロックではその各出力端子に接続されているブロック領域としてバリアントの選択を定義できます。ブロックは信号の接続先に変化を提供します。 | |
Variant Start | Variant Start ブロックでは有界領域の先頭を定義できます。バリアント条件の伝播を有界領域内に制限できます。すべての Variant Start ブロックにそれぞれ対応する Variant End ブロックがあります。 | |
Variant End | Variant End ブロックでは有界領域の末端を定義できます。バリアント条件の伝播を有界領域内に制限できます。 | |
Manual Variant Source | Manual Variant Source ブロックは、その入力端子で複数のバリアントの選択を定義できる切り替えスイッチです。 | |
Manual Variant Sink | Manual Variant Sink ブロックは、その出力端子で複数のバリアントの選択を定義できる切り替えスイッチです。 | |
Variant Connector (Simscape) | Variant Connector ブロックでは物理ネットワークでバリアントの選択を定義できます。コンポーネントを物理的に取り外したりシミュレーションから除外したりせずに、シミュレーション中にネットワーク内でコンポーネントを切り替えることができます。 | |
イベントベースのバリアント | Simulink Function | Simulink Function ブロック内のバリアント機能により、ブロックを条件付きで使用可能にできます。関数呼び出し端子ブロックにバリアント条件を指定するか、ブロックで対応する Function Caller ブロックから条件を継承できます。 |
Initialize Function ブロック、Reset Function ブロックおよび Terminate Function ブロック | Initialize ブロック、Reset ブロック、および Terminate ブロック内のバリアント機能により、ブロックを条件付きで使用可能にできます。Event Listener ブロックにバリアント条件を指定できます。 |
バリアント ブロックの比較
次の表に、階層的バリアント ブロックとインライン バリアント ブロックの比較を示します。
機能 | Variant Source ブロックと Variant Sink ブロック | Variant Subsystem ブロックと Variant Model ブロック |
---|---|---|
バリアントの選択の表現 | 端子数 | Subsystem ブロック、Model ブロック、または Subsystem Reference ブロック |
別の階層にバリアントの選択を実装できる | なし | あり |
バリアントの選択における入力端子と出力端子のフレキシブルな数のサポート (選択に類似のインターフェイスなし) | なし | [Variant Subsystem の外部に条件を伝播する] パラメーターが |
既定のバリアントを指定するオプション | あり | あり |
制御端子のサポート | なし | あり |
スタンドアロン ファイルとして保存できる | なし | なし |
物理接続ラインのモデル化に使用される Connection Port のサポート | なし | [バリアントのアクティベーションのタイミング] パラメーターが |
バリアントの選択のコメント ([ブロック パラメーター] ダイアログ ボックスでバリアント制御の前に | なし | あり |
バリアントを使用した多くのシステムに対する 1 つのモデルの作成
次の例は、Simulink モデル内のバリアントの設計を示しています。複数のコンフィギュレーションのある自動車を表すシステムをモデル化する場合の要件について検討します。これらのコンフィギュレーションには多くの類似点がある一方、燃料消費、モーター タイプ、排気規制などのプロパティが異なる可能性があります。
コンフィギュレーションごとに個別のモデルを設計する代わりに、1 つのモデル内でバリアントの選択としてコンフィギュレーションを表現できます。要件に応じて有効にするバリアントの選択をいずれか 1 つ選択できます。このアプローチでは、共通のコンポーネントは固定されます。
このモデルには、車両のモーターを表す Variant Subsystem ブロック Motor Variant Subsystem
が含まれています。モーターには Variant Subsystem ブロック内のバリアントの選択として表される、2 つの考えられるコンフィギュレーション Gas
と Electric
があります。Variant Subsystem ブロックは基礎となるブロックの状態に従ってそのインターフェイスを適応します。ここでは、Electric
モーターに exhaust temperature
入力はありません。Electric
バリアントを有効にすると、Simulink は Motor Variant Subsystem
で対応する端子と、その入力に関連付けられているその他のコンポーネントを自動的に無効にします。
このモデルの exhaust temperature
センサーに対して、2 つのベンダーから提供されている異なる 5 つのセンサーを切り替える必要について検討します。Variant Source ブロックを使用すれば、同じモデル内のすべての選択を表現し、一度に 1 つの選択のみを有効にできます。
バリアントの取り扱い
バリアント モデルの視覚要素
視覚要素 | 用途 |
---|---|
バリアント条件の凡例 | [バリアント条件の凡例] ダイアログ ボックスを使用して、モデルに適用されたバリアント条件を可視化できます。Simulink はバリアント条件をもつモデル コンポーネントに注釈を付け、[バリアント条件の凡例] に各注釈の条件が表示されます。Visualize Propagated Variant Conditions in Variant Conditions Legendを参照してください。 |
バリアントのバッジ | 各バリアント ブロックにはブロックに設定されたさまざまなパラメーター値によって変化するバッジが表示されます。Variant Badgesを参照してください。 |
バリアント フェージングと信号の強調表示 | 非アクティブなバリアント選択の色は既定で薄くなります。Simulink エディターの [デバッグ] タブにある [情報のオーバーレイ] メニューで [バリアント フェージング] オプションを使用することで、退色効果を無効にすることを選択できます。 バリアント ブロックを通過する信号を強調表示すると、アクティブなバリアント選択のパスが強調表示されます。バリアント システムでの信号の強調表示を参照してください。 |
バリアントのバッジ
各バリアント ブロックにバッジが表示されます。バリアントのバッジの色とアイコンは、そのブロックに設定されている以下のパラメーターの値に基づいて変化します。
バリアントのアクティベーションのタイミング
バリアント制御モード
ゼロ アクティブ バリアント制御を許可 (Variant Source ブロックと Variant Sink ブロックの場合)
バリアント サブシステムの外部に条件を伝播する (Variant Subsystem ブロックの場合)
バリアントのバッジは一部のバリアント コマンドへの迅速なアクセスも提供します。これらのコマンドにアクセスするには、バリアントのバッジを右クリックします。
メモ
バリアントのバッジの [ブロックの更新 (Ctrl+K)] オプションでは、バリアント ブロックのマスク ワークスペースで定義された変数は再評価されません。たとえば、ブロックのマスク ワークスペースで定義されたバリアント制御変数をもつマスクされた Variant Subsystem ブロックについて考えます。ブロックのアクティブな選択肢を変更するには、バリアント制御変数の値を変更します。[ブロックの更新 (Ctrl+K)] オプションをクリックしても、バリアント制御変数は再評価されないため、ブロックのアクティブな選択肢は更新されません。最新のアクティブな選択肢を反映するには、マスク ダイアログの [適用] をクリックするか、ブロック線図を更新する必要があります。
バリアントの選択の定義と制御
モデル内の各バリアントの選択は、その選択がアクティブか非アクティブかを決定するために使用される "バリアント制御" に関連付ける必要があります。バリアント ブロックの場合、[バリアント制御モード] パラメーターを使用してバリアント制御を指定するモードを選択できます。詳細については、Introduction to Variant Controlsを参照してください。
バリアント条件の伝播を使用したバリアント領域の自動識別
Simulink は "バリアント条件の伝播" のプロセスによるシミュレーション中にアクティブなモデル コンポーネントを決定します。このプロセスは、バリアント ブロックで指定されたバリアント制御を評価し、接続しているブロックにバリアント条件を自動的に伝播します。バリアント条件は、信号線、バス、関数呼び出しを通して伝播できます。この処理は、非アクティブな選択肢に関連付けられているモデル コンポーネントのアクティベーションを停止します。これらはシミュレーションに含まれません。条件伝播を停止してモデルのバリアント領域を定義できます。Propagate Variant Conditions to Define Variant Regions with Variant Blocksを参照してください。
バリアントのアクティベーションのタイミングの選択
[バリアントのアクティベーションのタイミング] パラメーターを使用して、アクティブなバリアント選択が決定されるタイミングも選択できます。このパラメーターはアクティブな選択肢と非アクティブな選択肢がどのようにシミュレーションおよびコード生成のワークフローに含まれるのかについても決定します。Activate Variant During Different Stages of Simulation and Code Generation Workflowを参照してください。
メモ
[バリアント制御モード] が expression
に設定されている場合にのみ、バリアント ブロックに対するバリアントのアクティベーションのタイミングを選択できます。
Manual Variant Source ブロックと Manual Variant Sink ブロックは、バリアント制御とバリアントのアクティベーションのタイミングをサポートしていません。これらは、アクティブな入力端子と出力端子に基づいて、それぞれアクティブなバリアント選択を決定します。
Variant Connector ブロックでは、バリアントのアクティベーションのタイミングはサポートされません。
バリアント マネージャーを使用したすべてのバリアントの管理
バリアント マネージャーは、モデルの階層構造を可視化し、階層全体でのバリアント要素の使用を一元管理できるツールです。
このツールは Variant Manager for Simulink というサポート パッケージとして提供されています。主な機能は次のとおりです。
バリアント マネージャー — モデルの階層構造を可視化し、階層全体でのバリアント要素の使用を管理し、バリアント コンフィギュレーションを作成および管理する。
バリアント リデューサー — 選択されたバリアント コンフィギュレーションのみを含む削減されたモデルを生成する。
バリアント アナライザー — バリアント コンフィギュレーションを比較対比してエラーや不整合を特定する。
バリアント コンフィギュレーションの作成および有効化:
モデルの階層構造にはいくつかのバリアント ブロックが含まれていることがあり、それぞれに多くのバリアントの選択があります。これらのバリアント選択の組み合わせはシステムの特定のコンフィギュレーションに対応しています。これらのコンフィギュレーションの切り替えと、それらの手動での検証は複雑であり、誤りが発生することがあります。バリアント マネージャーを使用して、モデルのバリアント コンフィギュレーションを作成および保存し、任意のコンフィギュレーションでモデルを実行できます。一連の制約に対してコンフィギュレーションを検証することもできます。
バリアント コンフィギュレーションの解析および削減:
バリアント マネージャーのバリアント アナライザー ツールを使用すると、モデルのバリアント コンフィギュレーションを比較して、各コンフィギュレーションで使用されるブロックを特定できます。このツールはモデル内の未使用の領域を識別できるため、モデル検証と妥当性確認ワークフローに役立ちます。
バリアント マネージャーのバリアント リデューサー ツールを使用して、バリアント コンフィギュレーションのサブセットに対する削減されたモデルを自動的に生成し、削減されたモデルを詳細レポートで解析できます。この削減プロセスにより、指定したバリアント コンフィギュレーションの非アクティブなコンポーネントが削除されます。バリアント リデューサーはモデル内の関連付けられているモデル参照、サブシステム参照、およびライブラリを削減します。このツールは MAT または .sldd
ファイルなどの依存アーティファクトも削減し、削減されたすべてのアーティファクトを指定した出力フォルダーにパッケージ化します。
Variant Manager for Simulinkを参照してください。
バリアント モデルからのコードの生成
Simulink Coder™ または Embedded Coder® を使用してバリアント モデルからコードを生成できます。Prepare Variant-Containing Model for Code Generationを参照してください。
バリアント コード生成機能を示す例については、バリアント システム (Simulink Coder)を参照してください。
関連する例
- V-Model for System Development with Simulink Variants
- 単純なバリアント モデルの作成
- Create a Simple Variant Parameter Model
- Implement Variations in Separate Hierarchy Using Variant Subsystems
- Variant Source and Variant Sink Blocks
- バリアント条件を使用したインジケーター ランプ調光器の制御 (Stateflow)
- モデルをバリアント システムに変換 (Simulink Check)
- モデルのアクティブおよび非アクティブなバリアント パスを評価するカスタム チェックの作成 (Simulink Check)