単純なバリアント パラメーター モデルの作成
この例では、バリアント パラメーターをプログラムによって作成してそれらを Simulink® ブロックで使用し、バリアント条件に基づいてブロック パラメーターの値を変える方法を示します。
バリアント パラメーターは、複数の選択値をもつことができるブロック パラメーターを表現する方法を提供します。たとえば、機能的な動作は同じままで、一部のパラメーターの値が特定の条件で変わるシステムを実装する場合があります。バリアント パラメーターを使用すると、シミュレーション、コード生成、テスト ワークフローのために、ブロック パラメーターの値をさまざまな値の間で切り替えることができます。詳細については、バリアント パラメーターを使用した値が異なるブロック パラメーターの再利用を参照してください。
モデルでバリアント パラメーターを使用する方法
バリアント パラメーターはSimulink.VariantVariable
オブジェクトとして作成します。このオブジェクトは、パラメーターが取り得る一連の値とそれぞれの値に関連付けられるバリアント条件式を定義します。バリアント制御変数をSimulink.VariantControl
オブジェクトとして作成し、この変数を使用してバリアント パラメーターのそれぞれの値に対するバリアント条件を指定する必要があります。
プログラムによって、またはモデル エクスプローラーの [追加] メニューから、Simulink.VariantVariable
オブジェクトおよび Simulink.VariantControl
オブジェクトをベース ワークスペースまたはデータ ディクショナリの [データの設計] セクションに追加できます。
バリアント パラメーターを作成したら、それを使用してブロック パラメーターの値を設定できます (Gain ブロックの [ゲイン] パラメーターなど)。シミュレーション中、true
と評価されるバリアント条件に関連付けられているバリアント パラメーターの値が、そのブロック パラメーターのアクティブな値になります。バリアント制御変数の値を変更することにより、バリアント パラメーターのアクティブな値を変更できます。
モデル例の確認
モデル slexVariantParameters
を開きます。このモデルはベース ワークスペースを使用します。
open_system('slexVariantParameters')
この例では、K1
と K2
の 2 つのバリアント パラメーターを使用します。各パラメーターには、バリアント条件 V==1
および V==2
に対応する 2 つの選択値があります。K1
は Gain1 ブロックの [ゲイン] パラメーターが取り得る値を指定し、K2
は Gain2 ブロックの [ゲイン] パラメーターが取り得る値を指定します。次の表に、このモデルで使用するバリアント パラメーターの値を示します。
バリアント パラメーターとバリアント制御変数オブジェクトの作成
K1
と K2
を作成し、それらを Gain1
ブロックと Gain2
ブロックの [ゲイン] パラメーターとして指定するには、次のようにします。
1. モデルのベース ワークスペースで
オブジェクト Simulink.VariantControl
V
を定義します。
V = Simulink.VariantControl(Value=1, ActivationTime="update diagram")
V = VariantControl with properties: Value: 1 ActivationTime: 'update diagram'
バリアント制御変数オブジェクトの Value
プロパティによって、バリアント パラメーターのアクティブな値が決まります。V
の値は 1
に設定されています。オブジェクトは値をバリアントのアクティベーションのタイミングにも関連付けます。アクティベーションのタイミングの詳細については、Activate Variant During Different Stages of Simulation and Code Generation Workflowを参照してください。
2.
オブジェクトを作成して、それぞれの Gain ブロックの [ゲイン] パラメーターの値を複数定義し、それぞれの値をバリアント条件式に関連付けます。Simulink.VariantVariable
それぞれのバリアント パラメーターについて、次元、データ型、ストレージ クラスなどのプロパティを指定できます。ここでは、必要なプロパティを指定して Simulink.Parameter
オブジェクトを作成し、このオブジェクトの名前を使用してバリアント パラメーター オブジェクトの Specification
プロパティを設定します。
Pspec = Simulink.Parameter(0); Pspec.CoderInfo.StorageClass = 'ExportedGlobal'; K1 = Simulink.VariantVariable(Specification = "Pspec", Choices = {'V==1', 3.5, 'V==2', 8.5}); K2 = Simulink.VariantVariable(Specification = "Pspec", Choices = {'V==1', 4.5, 'V==2', 9.5});
Simulink.VariantVariable
オブジェクトが問題なく作成されたら、Public Methodsで説明している方法を使用して、または VariantVariable ダイアログ ボックスから変更できます。このダイアログ ボックスは、ベース ワークスペースに作成された Simulink.VariantVariable
オブジェクトをダブルクリックすると開きます。また、バリアント マネージャーの [バリアント パラメーター] タブを使用して、ベース ワークスペースやモデルに関連付けられたデータ ディクショナリにあるバリアント パラメーターを確認したり、バリアント条件や選択値を編集したりできます。
3. モデルでそれぞれの Gain ブロックのブロック パラメーター ダイアログ ボックスを開きます。Gain1
ブロックの [ゲイン] パラメーターを K1
、Gain2
ブロックの [ゲイン] パラメーターを K2
と指定します。
4. モデルをシミュレーションするには、[シミュレーション] タブで [実行] をクリックします。シミュレーション中、バリアント条件 V == 1
が true
と評価されます。Simulink で、この条件に対応する値が K1
と K2
のアクティブな値として設定されます。その後、アクティブな値がブロック パラメーターに代入されます。Gain1 ブロックの [ゲイン] パラメーターの値は 3.5
に設定され、Gain2 ブロックの [ゲイン] パラメーターの値は 4.5
に設定されます。
5. [ゲイン] パラメーターの値を変更するには、V
の値を 2
に設定し、シミュレーションを再度実行します。V
の値は、次のいずれかの手順を実行することで変更できます。
ベース ワークスペースに作成されたバリアント制御変数をダブルクリックします。VariantControl ダイアログ ボックスで
V
の値を2
に指定します。
MATLAB® エディターで次のコマンドを実行します。
V.Value = 2;
シミュレーション中に、バリアント条件 V == 2
が true
と評価されるため、Gain1 ブロックの [ゲイン] パラメーターの値は 8.5
に設定され、Gain2 ブロックの [ゲイン] パラメーターの値は 9.5
に設定されます。
バリアント パラメーターでサポートされている演算子のタイプ、オペランド、ストレージの場所、アクティベーションのタイミングの詳細については、Variant Control Mode in Variant Parametersを参照してください。
バリアント マネージャーからのバリアント パラメーターのアクティベーションおよび管理
モデルのバリアント パラメーターを設定すると、Variant Manager for Simulinkの [バリアント パラメーター] タブからバリアント パラメーターを表示および管理できます。モデルの階層構造全体でバリアント選択肢の意味のある組み合わせを表すVariant Configurationsを作成できます。これらのコンフィギュレーションを検証してファイルに保存し、必要なコンフィギュレーションを使用してモデルをシミュレートできます。
バリアント マネージャーを開きます。
新しいバリアント コンフィギュレーションを追加します。
ワークスペースから制御変数をインポートし、コンフィギュレーション用にそれらの変数に適切な値を設定します。
[バリアント パラメーター] タブに切り替えます。
コンフィギュレーションをアクティブにして検証し、結果を確認します。モデルの階層構造で、アクティブな選択肢の値が強調表示されます。エラーのある行にカーソルを合わせ、アクティベーションのステータスに関連した追加情報を示すツールヒントを表示します。
必要に応じて、特定の制御変数を利用しているバリアント パラメーター選択肢を確認するには、制御変数の表内の変数を右クリックし、[使用法の表示] または [使用法の非表示] を選択します。
コンフィギュレーションをバリアント構成オブジェクトに保存し、後から使用するためにモデルに関連付けます。
詳細については、Create and Activate Variant ConfigurationsおよびSave and Reuse Variant Configurations Using Variant Configuration Data Objectを参照してください。