メインコンテンツ

Simulink.VariantConfigurationData

バリアント コンフィギュレーションと制約を作成して格納する

    説明

    メモ

    このオブジェクトには Variant Manager for Simulink® が必要です。

    Simulink.VariantConfigurationData オブジェクトは、バリアント コンフィギュレーション、コンフィギュレーションが満たさなければならない制約、およびモデルに対する推奨バリアント コンフィギュレーションの名前の集合を格納するために使用します。バリアント コンフィギュレーション データ オブジェクトは、ベース ワークスペースまたは Simulink データ ディクショナリの [Configurations] セクションで定義できます。

    バリアント コンフィギュレーションは、モデルの階層構造全体における一連の特定の変動点を表します。バリアント制御変数とその値のグループが格納され、それを使用してモデルの階層構造内の特定のバリアントを有効にできます。Simulink.VariantConfigurationData オブジェクトにより、次のことが可能になります。

    • 新しいバリアント コンフィギュレーションを定義する。

    • バリアント コンフィギュレーションにバリアント制御変数を追加する。

    • 無効なバリアント コンフィギュレーションをチェックするための制約を定義する。

    • 最上位モデルと参照モデルのバリアント コンフィギュレーション間の関連付けを追加または削除する。

    • 既存のバリアント コンフィギュレーション、制約、制御変数を削除する。

    • 特定のコンフィギュレーションを推奨されるバリアント コンフィギュレーションとして設定する。

    作成

    説明

    varconfigdata = Simulink.VariantConfigurationData は、空の VariantConfigurationData オブジェクトを作成します。

    varconfigdata = Simulink.VariantConfigurationData(PropertyName=Value) は、VariantConfigurationData オブジェクトを作成し、そのプロパティを 1 つ以上の名前と値の引数を使用して設定します。

    プロパティ

    すべて展開する

    このプロパティは、オブジェクトの作成後は読み取り専用になります。

    バリアント コンフィギュレーション データ オブジェクト内のバリアント コンフィギュレーションのセット。次のフィールドをもつ構造体または構造体配列として指定します。

    フィールド説明
    Name文字ベクトルまたは string スカラー

    コンフィギュレーションの名前。この値は、一意の有効な MATLAB® 変数名でなければなりません。

    Description文字ベクトルまたは string スカラー

    コンフィギュレーションの説明。

    ControlVariables

    構造体または構造体配列

    バリアント制御変数の名前とその値。次のフィールドをもつ構造体または構造体配列として指定します。

    • Name — 制御変数の名前。文字ベクトルまたは string スカラーとして指定します。

    • Value — 制御変数の値。次のデータ型のいずれかとして指定します。

      • MATLAB 変数

      • Simulink.Parameter

      • AUTOSAR.Parameter

      • Value が通常の MATLAB 変数である Simulink.VariantControl

      • ValueSimulink.Parameter である Simulink.VariantControl

      • ValueSimulink.Parameter から継承されるユーザー定義型である Simulink.VariantControl

      • ValueSimulink.Parameter オブジェクトまたは Simulink.Parameter から継承されるクラスのオブジェクト (オブジェクトの値は slexpr 関数を使用して指定された数式に設定) である Simulink.VariantControl

    • Source — 制御変数のデータ ソース。文字ベクトルまたは string スカラーとして指定します。

    例: ctrlVarStruct=struct(Name="Ctrl",Value="ControllerType.Linear",Source="plant.sldd");

    例:ctrlVarStruct=struct(Name="Vctrl",Value="1",Source="base workspace");

    各種のバリアント制御変数の使用方法を示す例については、Use Variant Control Variables in Variant Blocksを参照してください。

    データ型: struct

    このプロパティは、オブジェクトの作成後は読み取り専用になります。

    バリアント コンフィギュレーション データ オブジェクト内のすべてのバリアント コンフィギュレーションが満たさなければならない制約。次のフィールドをもつ構造体または構造体配列として指定します。

    • Name — 制約の名前。文字ベクトルまたは string スカラーとして指定します。この値は、一意の有効な MATLAB 変数名でなければなりません。

    • Condition — バリアント制御変数を使用して定義された boolean 式。文字ベクトルまたは string スカラーとして指定します。制約が満たされるには、この式が true に評価される必要があります。

    • Description — 制約の説明。文字ベクトルまたは string スカラーとして指定します。

    データ型: struct

    推奨されるバリアント コンフィギュレーションの名前。文字ベクトルまたは string スカラーとして指定します。このプロパティは、一般的なワークフロー向けのモデルに適したコンフィギュレーションを示すために使用します。この値は、バリアント コンフィギュレーション データ オブジェクトにあるバリアント コンフィギュレーションの名前でなければなりません。

    データ型: char | string

    オブジェクト関数

    addConfigurationバリアント コンフィギュレーション データ オブジェクトに新しいバリアント コンフィギュレーションを追加
    addComponentConfiguration Associate top-model variant configuration with variant configuration of referenced model
    addConstraintバリアント コンフィギュレーション データ オブジェクトに制約を追加
    addControlVariablesバリアント コンフィギュレーション データ オブジェクトの名前付きバリアント コンフィギュレーションにバリアント制御変数を追加
    addCopyOfConfigurationバリアント コンフィギュレーション データ オブジェクトに既存のバリアント コンフィギュレーションのコピーを追加
    convertDefaultToPreferredConvert default variant configuration to preferred variant configuration
    getConfigurationバリアント コンフィギュレーション データ オブジェクトから特定のバリアント コンフィギュレーションを取得
    getComponentConfigurationNameGet name of variant configuration used by referenced component in model hierarchy
    getPreferredConfigurationGet name of preferred variant configuration for variant configuration data object
    isConfigActiveCheck if variant configuration is active
    setPreferredConfiguration Set name of preferred variant configuration for variant configuration data object
    removeConfigurationバリアント コンフィギュレーション データ オブジェクトからバリアント コンフィギュレーションを削除
    removeComponentConfigurationRemove association between variant configurations of top-level model and referenced model
    removeConstraint バリアント コンフィギュレーション データ オブジェクトから制約を削除
    removeControlVariableバリアント コンフィギュレーションからバリアント制御変数を削除

    次の関数は、MATLAB の標準の集合演算を Simulink.VariantConfigurationData オブジェクト用に特殊化したものです。

    intersect

    vcdC = intersect(vcdA,vcdB)

    バリアント コンフィギュレーション データ オブジェクト vcdAvcdB の交差を求めます。この関数は、vcdAvcdB の両方にある共通のバリアント コンフィギュレーションを含むバリアント コンフィギュレーション データ オブジェクト vcdC を返します。交差はバリアント制御変数とその値を照合することで求められます。

    vcdC の制約は次のように形成されます。vcdAvcdB のそれぞれに制約が 2 つある場合について考えます。

    • vcdA の制約は constraintA1constraintA2

    • vcdB の制約は constraintB1constraintB2

    この場合、vcdC の制約は次のようになります。

    • constraintA1 && (constraintB1 && constraintB2)

    • constraintA2 && (constraintB1 && constraintB2)

    論理演算 ANDOR、および NOT で形成される制約の条件は、既定では簡略化され、記号を並べ替えることができます。

    vcdC = intersect(vcdA,vcdB,SimplifyConditions=false) は、制約の条件が簡略化されていないバリアント コンフィギュレーション データ オブジェクト vcdC を返します。

    vcdC の残りのプロパティは vcdA と同じで、vcdC におけるデータの順序は vcdA と同じになります。

    setdiff

    vcdC = setdiff(vcdA,vcdB)

    バリアント コンフィギュレーション データ オブジェクト vcdAvcdB の間の差を求めます。この関数は、vcdA にあって vcdB にないコンフィギュレーションを含むバリアント コンフィギュレーション データ オブジェクト vcdC を返します。差はバリアント制御変数の値の変化を特定することで求められます。

    vcdC の制約は次のように形成されます。vcdAvcdB のそれぞれに制約が 2 つある場合について考えます。

    • vcdA の制約は constraintA1constraintA2

    • vcdB の制約は constraintB1constraintB2

    この場合、vcdC の制約は次のようになります。

    • constraintA1 && ~(constraintB1 && constraintB2)

    • constraintA2 && ~(constraintB1 && constraintB2)

    論理演算 ANDOR、および NOT で形成される制約の条件は、既定では簡略化され、記号を並べ替えることができます。

    vcdC = setdiff(vcdA,vcdB,SimplifyConditions=false) は、制約の条件が簡略化されていないバリアント コンフィギュレーション データ オブジェクト vcdC を返します。

    vcdC の残りのプロパティは vcdA と同じで、vcdC におけるデータの順序は vcdA と同じになります。

    union

    vcdC = union(vcdA,vcdB)

    バリアント コンフィギュレーション データ オブジェクト vcdAvcdB の和集合を求めます。この関数は、vcdAvcdB の両方のコンフィギュレーションを重複なしで含むバリアント コンフィギュレーション データ オブジェクト vcdC を返します。和集合はバリアント制御変数とその値を照合することで求められます。

    vcdC の制約は次のように形成されます。vcdAvcdB のそれぞれに制約が 2 つある場合について考えます。

    • vcdA : constraintA1, constraintA2

    • vcdB : constraintB1, constraintB2

    この場合、vcdC の制約は次のようになります。

    • constraintA1 || (constraintB1 && constraintB2)

    • constraintA2 || (constraintB1 && constraintB2)

    論理演算 ANDOR、および NOT で形成される制約の条件は、既定では簡略化され、記号を並べ替えることができます。

    vcdC = union(vcdA,vcdB,SimplifyConditions=false) は、制約の条件が簡略化されていないバリアント コンフィギュレーション データ オブジェクト vcdC を返します。

    vcdC の残りのプロパティは vcdA と同じで、vcdC におけるデータの順序は vcdAvcdB の順にそれらと同じになります。

    unique

    uniquedVCD = unique(vcd)

    バリアント コンフィギュレーション データ オブジェクト vcd の一意のコンフィギュレーションを求めます。

    vcd の重複するコンフィギュレーションは、バリアント制御変数の値を比較することで削除されます。vcd の重複する制約は、制約の条件を比較することで削除されます。

    すべて折りたたむ

    この例では、Simulink.VariantConfigurationData オブジェクトを作成し、次のオブジェクト プロパティを設定する方法を示します。

    • Configurations

    • Constraints

    • PreferredConfiguration

    新しいバリアント コンフィギュレーションの定義

    バリアント コンフィギュレーション データ オブジェクトに追加する新しいバリアント コンフィギュレーションを定義します。

    Simulink.VariantConfigurationData オブジェクトの Configurations プロパティは、次のフィールドをもつ構造体です。

    • Name

    • ControlVariables

    • Description

    新しいコンフィギュレーションのバリアント制御変数と値を格納する ControlVariables フィールド用の構造体を作成します。

    ctrlVarStructA(1).Name = "Ctrl";
    ctrlVarStructA(1).Value = "ControllerType.Linear";
    ctrlVarStructA(1).Source = "topData.sldd";
    ctrlVarStructA(2).Name = "Noise";
    ctrlVarStructA(2).Value = "NoiseType.NoNoise";
    ctrlVarStructA(2).Source = "topData.sldd";
    ctrlVarStructA(3).Name = "PlantLoc";
    ctrlVarStructA(3).Value = "PlantLocation.Internal";
    ctrlVarStructA(3).Source = "topData.sldd";
    ctrlVarStructA(4).Name = "FidType";
    ctrlVarStructA(4).Value = "Fidelity.High";
    ctrlVarStructA(4).Source = "plantData.sldd";

    新しいバリアント コンフィギュレーション用の構造体を作成します。

    configStruct(1).Name = "LinInterExpNoNoise";
    configStruct(1).ControlVariables = ctrlVarStructA;
    configStruct(1).Description = "Linear Internal Plant Controller";

    2 つ目のバリアント コンフィギュレーションを定義します。

    ctrlVarStructB(1).Name = "Ctrl";
    ctrlVarStructB(1).Value = "ControllerType.Nonlinear";
    ctrlVarStructB(1).Source = "topData.sldd";
    ctrlVarStructB(2).Name = "Noise";
    ctrlVarStructB(2).Value = "NoiseType.NoNoise";
    ctrlVarStructB(2).Source = "topData.sldd";
    ctrlVarStructB(3).Name = "PlantLoc";
    ctrlVarStructB(3).Value = "PlantLocation.External";
    ctrlVarStructB(3).Source = "topData.sldd";
    ctrlVarStructB(4).Name = "FidType";
    ctrlVarStructB(4).Value = "Fidelity.Low";
    ctrlVarStructB(4).Source = "plantData.sldd";
    
    configStruct(2).Name = "NonLinExterLowFid";
    configStruct(2).ControlVariables = ctrlVarStructB;
    configStruct(2).Description = "Nonlinear External Plant Controller";

    制約の定義

    バリアント コンフィギュレーション データ オブジェクト内のすべてのバリアント コンフィギュレーションに適用される制約を定義します。

    constrStruct = struct(Name="PlantLocation", ...
      Condition="(PlantLoc==PlantLocation.Internal) || (PlantLoc==PlantLocation.External)", ...
     Description="Plant location constraint");

    バリアント コンフィギュレーション データ オブジェクトの作成

    バリアント コンフィギュレーション、制約、および推奨されるコンフィギュレーションの名前を追加してオブジェクトを作成します。

     vcdo = Simulink.VariantConfigurationData(Configurations=configStruct,Constraints=constrStruct, ...
      PreferredConfiguration="LinInterExpNoNoise")
    vcdo = 
      VariantConfigurationData with properties:
    
                Configurations: [1×2 struct]
                   Constraints: [1×1 struct]
        PreferredConfiguration: 'LinInterExpNoNoise'
    
    

    モデルとのバリアント コンフィギュレーション データ オブジェクトの関連付けまたは関連付け解除

    VariantConfigurationObject モデル パラメーターを使用して vcdo を Simulink® モデルに関連付けることができます。

    set_param("model",VariantConfigurationObject="vcdo");
    

    モデルと vcdo の関連付けを解除するには、VariantConfigurationObject モデル パラメーターを空の文字ベクトルまたは string に設定します。

    set_param("model",VariantConfigurationObject="");
    

    モデルを保存することで変更を保存します。

     save_system("model");
    

    ヒント

    バリアント構成オブジェクトは、バリアント マネージャーを起動せずにベース ワークスペースまたはデータ ディクショナリから編集できます。モデル エクスプローラーで、ベース ワークスペースまたはデータ ディクショナリの [Configurations] セクションにあるオブジェクトをダブルクリックします。この操作により、Simulink.VariantConfigurationData のプロパティ ダイアログ ボックスが起動します。スタンドアロンのバリアント マネージャーとして機能するこのダイアログ ボックスで、バリアント構成オブジェクトのバリアント コンフィギュレーション、制御変数、制約を変更できます。

    バージョン履歴

    R2013b で導入

    すべて展開する