このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
バリアントの選択の取り扱い
モデル内のバリアントのそれぞれの選択は、バリアント制御と呼ばれる条件式に関連付けられます。バリアント制御を指定する方法によって、アクティブなバリアントの選択が決まります。[ブロック パラメーター] ダイアログ ボックスの [バリアント制御モード] パラメーターを使用すると、バリアント ブロックのモデル化に使用するモードを [式]
にするか [ラベル]
にするかを選択できます。
次のイメージは、4 つのバリアントの選択を含む Variant Subsystem ブロックの [ブロック パラメーター] ダイアログ ボックスを示しています。
最初の選択肢は、バリアント制御の前に
%
記号を追加することによってコメント アウトされています。2 番目の選択肢は
(default)
で、どのバリアント制御もtrue
に評価されない場合に有効になります。3 番目の選択肢は式
mode==3 && version==2
がtrue
に評価される場合に有効になります。4 番目の選択肢は式
mode==2 && version==1
がtrue
に評価される場合に有効になります。
既定のバリアントの選択
少なくとも 1 つのバリアントの選択をモデルの既定として指定できます。上記の図に示すように、Linear Controller
サブシステムは既定のバリアントの選択として定義されます。モデルのコンパイル中に、どのバリアント制御も true
に評価されないことが Simulink® によって検出された場合、既定の選択が使用されます。既定のバリアントの選択がアクティブにならない場合は Simulink で警告が発行され、意図と異なる可能性がある構成をモデル内で特定するのに役立ちます。
バリアント条件は、そのバリアント条件に関連付けられたブロックがアクティブにならない場合、false
に設定されます。
ダイアログ ボックスでバリアントの選択を選択して、その [バリアント制御] プロパティを (default)
に変更します。
アクティブなバリアント選択
バリアントのそれぞれの選択がバリアント制御に関連付けられますが、一度に 1 つのバリアント制御のみが true
に評価されます。バリアント制御が true
に評価された場合、Simulink はそのバリアント制御に対応するバリアント選択を有効にします。最大で 1 つのバリアント選択をアクティブにすることができます。アクティブなバリアントは、モデルがコンパイルされた後は変更できません。
この例では、mode
と version
に適切な値を指定することによって、バリアントの選択の Model
または Nonlinear Controller
のいずれかを有効にできます。
mode の値 | version の値 | アクティブなバリアント選択 |
---|---|---|
2 | 1 | Nonlinear Controller |
3 | 2 | Model |
mode
と version
の値は MATLAB® コマンド ウィンドウで指定できます。
非アクティブなバリアント選択
バリアント制御によって 1 つのバリアントの選択が有効になった場合、Simulink は他のバリアントの選択を非アクティブにする必要があると判断します。Simulink はシミュレーション中に非アクティブなバリアントの選択を無視します。ただし、Simulink は非アクティブなバリアントの選択の中にあるブロックのコールバックの実行は継続します。
非アクティブな選択肢の色は既定で薄くなります。[バリアント フェージング] オプションを使用することで、退色効果を無効にすることを選択できます。[バリアント フェージング] オプションは、Simulink エディターの [デバッグ] タブにある [情報のオーバーレイ] メニューで選択可能です。get_param
コマンドと set_param
コマンドを使用して、非アクティブな選択肢の退色状態をプログラムによって表示または変更できます。以下に例を示します。
get_param('bdroot','VariantFading') % To view the fading state of inactive choices
set_param('bdroot','VariantFading','on') % To turn on the fading effect of inactive choices
空のバリアント選択
バリアントの選択のプロトタイプを作成しているときに、Variant Subsystem ブロック内の入力または出力がない、空の Subsystem ブロックを作成できます。空のサブシステムによって、バリアントの選択の完全なモデル化を必要とせずに、サブシステムが非アクティブな状況が再現されます。
空のバリアントの選択では、バリアントのアクティブ化条件を指定することも、条件の前に %
記号を付けてバリアント条件をコメント アウトすることもできます。
このバリアントの選択がシミュレーション中にアクティブである場合、Simulink は空のバリアントの選択を無視します。ただし、Simulink は空のバリアントの選択の中にあるブロックのコールバックの実行は継続します。
バリアント選択肢のリスト
読み取り専用パラメーター VariantChoices
を使用して Variant Subsystem ブロックでバリアント選択肢のリストを取得できます。
varchoices = get_param(gcb, 'VariantChoices');
この例では、VariantChoices
パラメーターは以下を返します。
アクティブなバリアントを開く
モデルを開くと、最後にモデルを保存したときにアクティブだったバリアントの名前がバリアント ブロックに表示されます。
アクティブなバリアントを開くには、以下のオプションのいずれかに従います。
Variant Subsystem ブロックをダブルクリックして、アクティブなバリアントをブロック内で直接開く。
Model ブロックをバリアントの選択肢としてもつ Variant Subsystem ブロックでは、アクティブな Model ブロックへのダブルクリックによる移動の動作が Model ブロックの読み込み状況に応じて異なります。Model ブロックが読み込まれていない場合、Variant Subsystem ブロックをダブルクリックすると Variant Subsystem のレイヤーが開き、基になるバリアントの選択肢が表示されます。その後、Model ブロックをダブルクリックすると、その中にあるブロックが表示されます。Model ブロックが既に読み込まれている場合は、Variant Subsystem ブロックをダブルクリックしたときに Variant Subsystem のレイヤーはスキップされます。アクティブな Model ブロックが直接開き、その中にあるブロックが表示されます。
Variant Subsystem ブロックを右クリックして [バリアント] 、 [開く] を選択し、アクティブなバリアントを選択する。
Variant Subsystem ブロックのバッジを右クリックして [開く] を選択し、アクティブなバリアントを選択する。
現在アクティブな選択を見つけるには、次のコマンドを使用します。
get_param(gcb,'CompiledActiveChoiceControl')
現在アクティブな選択へのパスを見つけるには、次のコマンドを使用します。
get_param(gcb,'CompiledActiveChoiceBlock')
メモ
CompiledActiveChoiceBlock
パラメーターは、Variant Subsystem ブロックでのみサポートされています。アクティブなバリアントは、モデルがコンパイルされた後は変更できません。