Main Content

バリアントの選択の取り扱い

モデル内のバリアントのそれぞれの選択は、バリアント制御と呼ばれる条件式に関連付けられます。バリアント制御を指定する方法によって、アクティブなバリアントの選択が決まります。[ブロック パラメーター] ダイアログ ボックスの [バリアント制御モード] パラメーターを使用すると、バリアント ブロックのモデル化に使用するモードを [式] にするか [ラベル] にするかを選択できます。

次のイメージは、4 つのバリアントの選択を含む Variant Subsystem ブロックの [ブロック パラメーター] ダイアログ ボックスを示しています。

  • 最初の選択肢は、バリアント制御の前に % 記号を追加することによってコメント アウトされています。

  • 2 番目の選択肢は (default) で、どのバリアント制御も true に評価されない場合に有効になります。

  • 3 番目の選択肢は式 mode==3 && version==2true に評価される場合に有効になります。

  • 4 番目の選択肢は式 mode==2 && version==1true に評価される場合に有効になります。

既定のバリアントの選択

少なくとも 1 つのバリアントの選択をモデルの既定として指定できます。上記の図に示すように、Linear Controller サブシステムは既定のバリアントの選択として定義されます。モデルのコンパイル中に、どのバリアント制御も true に評価されないことが Simulink® によって検出された場合、既定の選択が使用されます。

ダイアログ ボックスでバリアントの選択を選択して、その [バリアント制御] プロパティを (default) に変更します。

アクティブなバリアント選択

バリアントのそれぞれの選択がバリアント制御に関連付けられますが、一度に 1 つのバリアント制御のみが true に評価されます。バリアント制御が true に評価された場合、Simulink はそのバリアント制御に対応するバリアント選択を有効にします。最大で 1 つのバリアント選択をアクティブにすることができます。アクティブなバリアントは、モデルがコンパイルされた後は変更できません。

この例では、modeversion に適切な値を指定することによって、バリアントの選択の Model または Nonlinear Controller のいずれかを有効にできます。

mode の値version の値アクティブなバリアント選択
21Nonlinear Controller
32Model

modeversion の値は 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 パラメーターは以下を返します。

List of variant choices in the variant subsystem

アクティブなバリアントを開く

モデルを開くと、最後にモデルを保存したときにアクティブだったバリアントの名前がバリアント ブロックに表示されます。[バリアント] メニューを使用して、アクティブなバリアントを開きます。ブロックを右クリックし、[バリアント][開く] を選択します。次に、アクティブなバリアントを選択します。

現在アクティブな選択を見つけるには、次のコマンドを使用します。

get_param(gcb,'CompiledActiveChoiceControl')

現在アクティブな選択へのパスを見つけるには、次のコマンドを使用します。

get_param(gcb,'CompiledActiveChoiceBlock')

メモ

  • CompiledActiveChoiceBlock パラメーターは、Variant Subsystem ブロックでのみサポートされています。

  • アクティブなバリアントは、モデルがコンパイルされた後は変更できません。

関連する例

詳細