バリアントの選択の取り扱い
モデル内のバリアントのそれぞれの選択は、バリアント制御と呼ばれる条件式に関連付けられます。バリアント制御を指定する方法によって、アクティブなバリアントの選択が決まります。[ブロック パラメーター] ダイアログ ボックスの [バリアント制御モード] パラメーターを使用すると、バリアント ブロックのモデル化に使用するモードを [式]
にするか [ラベル]
にするかを選択できます。
次のイメージは、4 つのバリアントの選択を含む Variant Subsystem ブロックの [ブロック パラメーター] ダイアログ ボックスを示しています。
最初の選択肢は、バリアント制御の前に
%
記号を追加することによってコメント アウトされています。2 番目の選択肢は
(default)
で、どのバリアント制御もtrue
に評価されない場合に有効になります。3 番目の選択肢は式
mode==3 && version==2
がtrue
に評価される場合に有効になります。4 番目の選択肢は式
mode==2 && version==1
がtrue
に評価される場合に有効になります。
既定のバリアントの選択
少なくとも 1 つのバリアントの選択をモデルの既定として指定できます。上記の図に示すように、Linear Controller
サブシステムは既定のバリアントの選択として定義されます。モデルのコンパイル中に、どのバリアント制御も true
に評価されないことが Simulink® によって検出された場合、既定の選択が使用されます。
ダイアログ ボックスでバリアントの選択を選択して、その [バリアント制御] プロパティを (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
パラメーターは以下を返します。
アクティブなバリアントを開く
モデルを開くと、最後にモデルを保存したときにアクティブだったバリアントの名前がバリアント ブロックに表示されます。[バリアント] メニューを使用して、アクティブなバリアントを開きます。ブロックを右クリックし、[バリアント] 、 [開く] を選択します。次に、アクティブなバリアントを選択します。
現在アクティブな選択を見つけるには、次のコマンドを使用します。
get_param(gcb,'CompiledActiveChoiceControl')
現在アクティブな選択へのパスを見つけるには、次のコマンドを使用します。
get_param(gcb,'CompiledActiveChoiceBlock')
メモ
CompiledActiveChoiceBlock
パラメーターは、Variant Subsystem ブロックでのみサポートされています。アクティブなバリアントは、モデルがコンパイルされた後は変更できません。