マスク パラメーターを使用してロックされたカスタム ライブラリのバリアント サブシステムのアクティブな選択肢を制御
この例では、マスク パラメーターをバリアント制御変数として使用することで、ロックされたカスタム ライブラリに属する Variant Subsystem のアクティブな選択肢を制御する方法を示します。マスク パラメーターによって変数のスコープが制限されるため、異なるスコープ内の制御変数に対して同じ名前を使用できます。この例には、プロモート済みパラメーターと列挙クラスを使用した制御式が含まれており、マスク ダイアログ ボックスのインターフェイスと列挙クラスを使用した制御式を簡略化して、バリアント条件式の可読性を向上させます。Variant Subsystem の詳細については、Variant Subsystem を使用した個別の階層でのバリエーションの実装を参照してください。
モデル
MATLAB® コマンド ウィンドウで以下のコマンドを入力して、Simulink® モデルを開きます。
openExample("simulink_variants/SimulinkVariantsExample",... "supportingFile","slexVariantSubsystemUsingMaskAndEnums.slx")
ロックされているカスタム ライブラリ slexVarEngineLibrary の Engine サブシステム ブロックについて考えます。

サブシステムのマスク ダイアログ ボックスには以下のパラメーターが含まれます。
Engine type: このパラメーターの値を選択すると、Simulink はその値のインデックスをマスク パラメーター
engineに割り当てます。シミュレーション中、engineの値を使用してバリアント条件式が評価され、基盤となる Turbo Engine サブシステムおよび Non Turbo Engine サブシステムがアクティブ化または非アクティブ化されます。Fidelity type for turbo engine: このパラメーターは、[Engine type] パラメーターが
[Turbo]に設定されている場合にのみ利用可能になります。このパラメーターは、Turbo Engine サブシステムの基盤となる層から Engine サブシステムのマスク ダイアログ ボックスにプロモートされます。このパラメーターの値を選択すると、Simulink はその値のインデックスを Turbofan Engine サブシステムのマスク パラメーターenginetypeに割り当てます。シミュレーション中、enginetypeの値を使用してバリアント条件式が評価され、基盤となる High、Medium、および Low サブシステムがアクティブ化または非アクティブ化されます。Fidelity type for non turbo engine: このパラメーターは、[Engine type] パラメーターが
[Non Turbo]に設定されている場合にのみ利用可能になります。このパラメーターは、Non Turbo Engine サブシステムの基盤となる層から Engine サブシステムのマスク ダイアログ ボックスにプロモートされます。このパラメーターの値を選択すると、Simulink はその値のインデックスを Non Turbo Engine サブシステムのマスク パラメーターenginetypeに割り当てます。シミュレーション中、enginetypeの値を使用してバリアント条件式が評価され、基盤となる High、Medium、および Low サブシステムがアクティブ化または非アクティブ化されます。
Turbo Engine サブシステムでの enginetype のスコープは Non Turbo Engine サブシステムでの enginetype のスコープと異なります。Turbo Engine の enginetype は、Turbo Engine サブシステムの基となる層からのみ参照できます。同様に、Non Turbo Engine の enginetype は Non Turbo Engine サブシステムの基盤となる層からのみ参照できます。バリアント制御変数としてマスク パラメーターを使用してスコープを制限することで、Turbo Engine サブシステムと Non Turbo Engine サブシステムにおいて、異なる値を保持する変数に対して同じ名前を使用することができます。

アクティブな選択肢間での切り替え
モデルをシミュレーションするには、[シミュレーション] タブで [実行] をクリックします。Engine サブシステムのマスク ダイアログ ボックスでは、[Engine type] パラメーターは
[Non Turbo]に設定され、[Fidelity type for non turbo engine] は[Medium]に設定されています。これらのパラメーターはマスク パラメーターengineおよびengineTypeのインデックスにマッピングされているため、engineの値は2に設定され、engineTypeの値は1に設定されています。ここで、2はNon Turboオプションのインデックスを指定し、1はHighオプションのインデックスを指定します。マスク ダイアログ ボックスのパラメーターが、基となるマスク パラメーターにどのようにマッピングされるかの詳細については、簡単なマスクの作成を参照してください。シミュレーション中、条件式
engine == Engine.NONTURBOおよびengineType == EngineFidelity.MEDIUMはtrueに評価されます。ここで、EngineおよびEngineFidelityは、1および2として指定されるEngine.TURBOおよびEngine.NONTURBOの値と、1、2、および3として指定されるEngineFidelity.HIGH、EngineFidelity.MEDIUM、およびEngineFidelity.LOWの値をもつ、Engine.mファイルとEngineFidelity.mファイルで定義された整数ベースの列挙クラスです。NonTurbo Engine サブシステムがアクティブになり、Turbo Engine サブシステムが非アクティブになります。
アクティブな選択肢を変更するには、マスク ダイアログ ボックスで
[Turbo]を選択してからモデルを再度シミュレーションします。シミュレーション中、engineの値は1に設定され、バリアント条件engine == Engine.TURBOをtrueとして評価します。Turbo Engine サブシステムがアクティブになり、Non Turbo Engine サブシステムが非アクティブになります。