Main Content

Simulink.Variant クラス

名前空間: Simulink

バリアント選択を制御する条件を指定

説明

バリアント ブロックを含むモデルでは、各バリアント選択肢をバリアント制御に関連付ける必要があります。シミュレーション時、すべてのバリアント選択肢のバリアント制御が Simulink® で評価され、true と評価されたバリアント制御に対応する選択肢がアクティブになります。

バリアント制御は、A == 1A==1 && B == 2 のように、boolean の条件式の形式で指定できます。これらの式のバリアント制御変数 A および B は、MATLAB® 変数、Simulink.Parameter オブジェクト、または Simulink.VariantControl オブジェクトのいずれかにできます。詳細については、Switch Between Choices Using Condition Expressions in Variant Blocksを参照してください。

boolean のバリアント条件式を表現するには、Simulink.VariantExpression クラスのオブジェクトを作成します。ベース ワークスペースまたはデータ ディクショナリでオブジェクトを定義し、そのオブジェクトを選択肢のバリアント制御としてバリアント ブロックで使用できます。Simulink.VariantExpression オブジェクトを使用すると、一般的なバリアント条件をモデル間で再利用でき、バリアント条件式の可読性が向上します。

次の例では、Variant Source ブロックで Simulink.VariantExpression オブジェクトをバリアント制御として使用しています。

v_EngType_Big = Simulink.VariantExpression('V == 1');
v_EngType_Small = Simulink.VariantExpression('V == 2');

Simulink.VariantExpression object in a Variant block

メモ

  • マスクまたはモデル ワークスペースで Simulink.VariantExpression オブジェクトを使用してバリアント制御を定義することはサポートされていません。バリアント制御変数の保存場所の詳細については、Storage Locations for Variant Control Variables (Operands) in Variant Blocksを参照してください。

  • 構造体内で Simulink.VariantExpression オブジェクトを使用することはサポートされていません。

作成

説明

variantControl = Simulink.VariantExpression(conditionExpression) は、バリアント制御を作成し、Condition プロパティを conditionExpression に設定します。

プロパティ

すべて展開する

バリアント条件式。文字ベクトルまたは string として指定します。式はブール値として評価されなければならず、次のオペランドと演算子を 1 つ以上含むことができます。

オペランド

  • 整数または列挙値を表すスカラーのリテラル値

  • 次のいずれかの型に解決される変数名:

    • MATLAB 変数

    • Simulink.VariantControl オブジェクト

    • 整数、列挙データ型、またはスカラー リテラル値をもつ Simulink.Parameter オブジェクト

    • Simulink.VariantExpression オブジェクト

演算子

  • グループ化に使用される小かっこ

  • 算術演算子、関係演算子、論理演算子、またはビット演算子

バリアント条件式でサポートされる演算子とオペランドの種類の詳細については、Types of Variant Control Variables (Operands) in Variant BlocksおよびTypes of Operators in Variant Blocks for Different Activation Timesを参照してください。

例: '(Fuel==2 || Emission==1) && Ratio==2'

属性:

GetAccess
public
SetAccess
public

データ型: char | string

すべて折りたたむ

モデルのシミュレーションは行うが、コード生成は行わない場合は、MATLAB 変数を使用します。

スカラー リテラル値をもつ MATLAB 変数を作成します。

Fuel = 3;
Emission = 2;
Ratio = 3;

変数を使用して条件式を定義し、バリアント制御を作成します。

Variant1 = Simulink.VariantExpression('Fuel==3 && Emission==2');
Variant2 = Simulink.VariantExpression('(Fuel==2 || Emission==1) && Ratio==2');
Variant3 = Simulink.VariantExpression('Fuel==3 || Ratio==4');

コード生成用のプリプロセッサ条件を生成するには、Simulink.Parameter オブジェクトを使用します。

スカラー リテラル値をもつバリアント Simulink.Parameter オブジェクトを作成します。

Fuel = Simulink.Parameter(3);
Emission = Simulink.Parameter(2);
Ratio = Simulink.Parameter(3);

値が外部ヘッダー ファイルで指定されるように、これらのオブジェクトのカスタム ストレージ クラスを ImportedDefine に指定します。カスタム ストレージ クラスのその他の有効な値は DefineCompilerFlag です。

メモ

バリアントのアクティベーションのタイミングが startup に設定されたコードを生成する場合は、オブジェクトのサポートされるカスタム ストレージ クラスを指定します。startup のアクティベーションのタイミングをサポートする組み込みおよびカスタムのストレージ クラスの詳細については、Storage Classes for Different Variant Activation Timesを参照してください。

Fuel.CoderInfo.StorageClass = 'Custom';
Fuel.CoderInfo.CustomStorageClass = 'ImportedDefine';

Emission.CoderInfo.StorageClass = 'Custom';
Emission.CoderInfo.CustomStorageClass = 'ImportedDefine';

Ratio.CoderInfo.StorageClass = 'Custom';
Ratio.CoderInfo.CustomStorageClass = 'ImportedDefine';

変数を使用して条件式を定義し、バリアント制御を作成します。

Variant1 = Simulink.VariantExpression('Fuel==3 && Emission==2');
Variant2 = Simulink.VariantExpression('(Fuel==2 || Emission==1) && Ratio==2');
Variant3 = Simulink.VariantExpression('Fuel==3 || Ratio==4');

Simulink.VariantControl 型のバリアント制御変数をバリアントのアクティベーションのタイミングに関連付けることができます。例については、Simulink.VariantControl Variables for Coherent Switching of Choices in Variant Blocksを参照してください。

スカラー リテラル値をもつ Simulink.VariantControl オブジェクトを作成します。

Fuel = Simulink.VariantControl('Value',3,'ActivationTime','update diagram');
Emission = Simulink.VariantControl('Value',2,'ActivationTime','update diagram');
Ratio = Simulink.VariantControl('Value',3,'ActivationTime','update diagram');

変数を使用して条件式を定義し、バリアント制御を作成します。

Variant1 = Simulink.VariantExpression('Fuel==3 && Emission==2');
Variant2 = Simulink.VariantExpression('(Fuel==2 || Emission==1) && Ratio==2');
Variant3 = Simulink.VariantExpression('Fuel==3 || Ratio==4');

モデルに必要なバリアント値を特定した後、バリアント条件をSimulink.VariantExpressionオブジェクトとして定義して、バリアント ブロックのアクティベーションを制御する複雑なバリアント条件を作成できます。Simulink.VariantExpression オブジェクトを使用すると、一般的なバリアント条件をモデル間で再利用でき、複雑なバリアント条件式のカプセル化に役立ちます。

Simulink.VariantExpression オブジェクトの Condition プロパティ内でバリアント条件式全体を指定することも、バリアント制御変数のみを指定することもできます。

メモ:

  • Simulink.VariantExpression 型のバリアント制御変数は、ベース ワークスペースまたはデータ ディクショナリでのみ定義できます。マスクまたはモデル ワークスペースで Simulink.VariantExpression オブジェクトを使用してバリアント制御を定義することはサポートされていません。バリアント制御変数の保存場所の詳細については、Storage Locations for Variant Control Variables (Operands) in Variant Blocksを参照してください。

  • 構造体内で Simulink.VariantExpression を使用することはサポートされていません。

slexVariantSubsystems モデルを開きます。

open_system('slexVariantSubsystems');
VSS_LINEAR_CONTROLLER = 
  VariantExpression with properties:

    Condition: 'VSS_MODE==1'

VSS_NONLINEAR_CONTROLLER = 
  VariantExpression with properties:

    Condition: 'VSS_MODE==2'

VSS_MODE = 2

MATLAB® コマンド ウィンドウで、Simulink.VariantExpression オブジェクトのバリアント制御式を定義します。

V_LinearController = Simulink.VariantExpression('V==1');
V_NonLinearController = Simulink.VariantExpression('V==2');

Controller ブロックの [ブロック パラメーター] ダイアログ ボックスで、Simulink.VariantExpression オブジェクトをバリアント制御変数として指定します。

set_param('slexVariantSubsystems/Controller/Linear Controller', 'VariantControl', 'V_LinearController')
set_param('slexVariantSubsystems/Controller/Nonlinear Controller', 'VariantControl', 'V_NonLinearController')

モデルで Controller ブロックの [ブロック パラメーター] ダイアログ ボックスを開きます。Simulink.VariantExpression オブジェクトが表す boolean 条件が [バリアントの選択肢] テーブルの [条件] 列に自動的に表示されます。

vss-simulinkvariant-dialog.png

バリアント制御変数 V の値を 1 と設定し、モデルをシミュレートします。

V = 1;
sim('slexVariantSubsystems');

シミュレーション時に Linear Controller ブロックがアクティブになります。Controller ブロックをダブルクリックしてアクティブな選択肢を確認します。この方法を使用して、再利用可能な複雑なバリアント条件式を開発できます。

バージョン履歴

R2006a より前に導入

すべて展開する