Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

プログラムによるバリアント制御の作成

バリアント制御の作成およびエクスポート

制御変数を作成し、バリアント条件を定義し、制御変数をエクスポートします。

  1. ベース ワークスペースまたはデータ ディクショナリに制御変数を作成します。

    FUEL=2;
    EMIS=1;
  2. 制御変数を使用し、Simulink.Variant オブジェクトを使用して制御条件を定義します。

    LinearController=Simulink.Variant('FUEL==2 && EMIS==1');

    メモ

    各シミュレーションの前に、バリアント条件を表す Simulink.Variant オブジェクトを定義します。

  3. 変数をベース ワークスペースに保存した場合、ワークスペースでエクスポートする制御変数を選択します。右クリックし [名前を付けて保存] をクリックして、MAT ファイル名を指定します。

バリアント条件の再利用

一般的なバリアント条件をモデル間で再利用するには、Simulink.Variant オブジェクトを使用してバリアント制御条件を指定します。

Simulink.Variant オブジェクトを再利用することにより、条件式を定義する制御変数の値を変更することでバリアント条件を反映して動的にモデルの階層構造を変更します。

Simulink.VariantExpression Objects for Variant Condition Reuse of Variant Blocksの例は、Simulink.Variant オブジェクトを使用したバリアント制御条件の定義方法を示しています。

メモ

AUTOSAR ワークフローのバリアント制御条件を定義するには、Simulink.Variant オブジェクトを使用しなければなりません。

バリアント制御としての列挙型

列挙型を使用し、バリアント制御値として使う整数に意味のある名前を与えます。

  1. MATLAB® エディターで、列挙型の値を意味のある名前にマップするクラスを定義します。

    classdef sldemo_mrv_CONTROLLER_TYPE < Simulink.IntEnumType
            enumeration
            NONLINEAR (1)
            SECOND_ORDER (2)
            end
    end
    
    classdef sldemo_mrv_BUILD_TYPE < Simulink.IntEnumType
            enumeration
            PROTOTYPE (1)
            PRODUCTION (2)
            end
    end
    
  2. これらのクラスに対して Simulink.Variant オブジェクトをベース ワークスペース内に定義します。

    VE_NONLINEAR_CONTROLLER = Simulink.Variant...
    ('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.NONLINEAR')
    VE_SECOND_ORDER_CONTROLLER =Simulink.Variant...
    ('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.SECOND_ORDER')
    VE_PROTOTYPE =Simulink.Variant...
    ('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PROTOTYPE')
    VE_PRODUCTION =Simulink.Variant...
    ('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PRODUCTION')

    列挙型を使用すると、整数ではなく値の名前が使用されるので、生成されたコードがわかりやすくなります。

関連する例

詳細