Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

バリアント ブロックを含むモデルの削減

メモ

モデルを削減するためには、Simulink® Design Verifier™ ライセンスが必要です。

バリアント モデルには複数の変数構造と 1 つの固定構造を含めることができます。変数構造と固定構造の組み合わせにより、選択したバリアントの選択のさまざまな組み合わせに応じてモデルが作成されます。バリアントの選択の各組み合わせはバリアント コンフィギュレーションとして保存できます。

選択したバリアント コンフィギュレーションに応じて、バリアント モデルを削減して簡略化されたスタンドアロン モデルにすることができます。さらに、関連するすべてのファイルおよび変数の依存関係も削減されます。これらの削減されたアーティファクトは、ユーザー指定の出力フォルダーにパッケージされます。

メモ

Variant Connector ブロックを含むバリアント モデルは削除できません。

モデルのバリアント リデューサーについて考えます。モデルには次のバリアントの選択をもつ Variant Source ブロック、Variant Sink ブロックおよび Variant Subsystem ブロックが含まれています。

  • Variant Source: V==1 および V==2

  • Variant Sink: W==1W==2 および W==3

  • Variant Subsystem: V==1 および V==2

モデルに config1 (V==1 && W==2) および config2 (V==2 && W==2) という名前の事前定義された 2 つのバリアント コンフィギュレーションがあると仮定します。これらのコンフィギュレーションは、バリアント コンフィギュレーション データ オブジェクト varConfig に保存されます。

モデルを削減するには、以下の手順を実行します。

  1. バリアントのバッジを右クリックして [バリアント マネージャーで開く] を選択します。バリアント マネージャーが開き、事前定義されたコンフィギュレーションが表示されます。

  2. [モデルの削減] をクリックします。[バリアント リデューサー] ダイアログ ボックスが開きます。

  3. [削減モード] セクションで、次を選択します。

    • [現在のバリアント制御値]: グローバル ワークスペースでバリアント制御変数の値に基づきモデルを削減する場合。

    • [バリアント コンフィギュレーションの指定]: バリアント コンフィギュレーション データ オブジェクトおよび削減されたモデルで保持するコンフィギュレーションに関連付けられたモデルを削減する場合。

      メモ

      削減中に、最後に選択されたコンフィギュレーションの制御変数の値がグローバル ワークスペースに保存されます。

    • [バリアント制御値の指定]: バリアント制御変数の値に基づきモデルを削減する場合。異なるコンフィギュレーションに対応する複数の変数グループを作成することができます。[新しい変数グループ] をクリックして、バリアント制御変数の値を設定します。バリアント制御値を指定するか、またはドロップダウン リストから [Full-range] または [Ignored] を選択することができます。バリアント制御値をベクトルとして指定しても、その変数のすべての組み合わせについてモデルを削減することができます。たとえば、値 V = 1W = [1,2] を指定した場合、モデルは {V==1, W==1}{V==1, W==2} のコンフィギュレーションについて削減されます。バリアント制御値として [Full-range] を選択した場合、[参照値] 列が有効になり、モデルのコンパイルを成功させるために必要な参照値を入力できます。モデルは指定したバリアント制御変数のすべての有効な値について削減されます。バリアント制御値として [Ignored] を選択した場合、そのバリアント制御変数はモデル削減時に考慮されません。

      メモ

      全範囲のバリアント制御変数を使用するには、そのバリアント制御変数を使用するブロックの [ブロック パラメーター] ダイアログ ボックスの [バリアントのアクティベーションのタイミング][コードのコンパイル] に設定しなければなりません。

    メモ

    変数グループを指定してバリアント削減を呼び出すと、削減されたモデルには、関連付けられている変数グループに対応するバリアント コンフィギュレーションが含まれます。これにより、元のモデルにある既存のバリアント コンフィギュレーションが上書きされます。

  4. [信号属性を保持] を選択し、コンパイル済みの信号属性を元のモデルと削減されたモデル間で保持します。このオプションを選択すると、削減されたモデル内の適切なブロック端子に信号指定ブロックを追加することで、バリアント リデューサーはコンパイル済みの信号属性を元のモデルと削減されたモデル間で保持しようとします。コンパイル済み信号属性には、信号のデータ型、信号の次元、コンパイル済みサンプル時間などが含まれます。

  5. [詳細な概要の生成] を選択して、バリアント リデューサーの概要を出力フォルダーに生成します。バリアント リデューサーの概要には、[バリアント リデューサーのオプション][元のモデルと削減されたモデルの相違][依存アーティファクト][コールバック] および [警告] の概要が含まれます。

    詳細な概要を使用して、元のモデルと削減されたモデルとのトレーサビリティ情報を入手できます。また、自動では処理できず手動での介入が必要なアーティファクトの特定にも役立ちます。たとえば、変更が必要なコールバック コードです。

    メモ

    詳細な概要を生成するには、[Simulink Report Generator] のライセンスが必要です。

  6. [モデルの接尾辞] フィールドで値を接尾辞として指定します。モデルの接尾辞の値が、削減されたモデル、データ ディクショナリおよび関連するアーティファクトに追加されます。既定では、_r が接尾辞です。

  7. 削減されたモデルを保存する出力フォルダーを指定します。

    メモ

    [削減されたモデルを開く] チェック ボックスをオンにすると、現在作業中のフォルダーが出力フォルダーに変更されます。

  8. [削減] をクリックします。これで、必要なコンフィギュレーションに対して削減されたモデルが作成されました。関連付けられたライブラリ リンクまたは参照モデルがモデルに含まれている場合、指定されたコンフィギュレーションに対応する親が削減され、モデル内で参照されます。削減されたモデル、削減された参照モデル、削減されたライブラリは、対応するモデル、参照モデルまたはライブラリから _r ([モデルの接尾辞]) が追加された名前を取得します。

Simulink Function ブロックに対するバリアント条件 V==1 || V==2 || V==3 || V==4 をもつ Simulink Function ブロックを含むバリアント モデルについて考えます。モデルが利用可能な何らかのバリアント条件または条件の組み合わせのために削減される場合、削減されたモデル内の Simulink Function ブロックは無条件です。たとえば、モデルがバリアント条件 V=1, V=2, and V=3 のために削減された場合、削減されたモデル内の Simulink Function ブロックは無条件です。一方、モデルがバリアント条件 V=1, V=2, and V=5 のために削減された場合、削減されたモデル内の Simulink Function ブロックは条件付きのままであり、そのバリアント条件は V==1 || V==2 です。

プログラムによるモデルの削減

プログラムでモデルを削減するには、以下の構文を使用します。

Simulink.VariantManager.reduceModel(model,<Name>,<Value>)

以下に例を示します。

  • グローバル ワークスペースでバリアント制御変数の値に基づきモデルを削減する場合。

    Simulink.VariantManager.reduceModel('sldemo_variant_subsystems')
  • グローバル ワークスペースでバリアント制御変数の値に基づき、指定したフォルダーにモデルを削減する場合。

    Simulink.VariantManager.reduceModel('sldemo_variant_subsystems', 'OutputFolder', 'outdir')
  • バリアント コンフィギュレーション データ オブジェクトおよび削減されたモデルで保持するコンフィギュレーションに関連付けられたモデルを削減する場合。

    Simulink.VariantManager.reduceModel('sldemo_variant_subsystems','NamedConfigurations', {'LinInterStd','NonLinExterHighFid'})
  • バリアント制御変数の構造体形式でコンフィギュレーションを指定し、モデルを削減する場合。

    Simulink.VariantManager.reduceModel('iv_model', 'VariableConfigurations', {'V',1,'W',[1 2]})

    ここでは、{V=1, W=1}{V=1, W=2} それぞれに対応する 2 つのコンフィギュレーションが指定されます。

  • バリアント制御値を指定してモデルを削減する場合。ここで 'w' は全範囲のバリアント制御値。

    Simulink.VariantManager.reduceModel('slexVariantReducer','VariableConfigurations',{'V',1},'FullRangeVariables',{'W',1});

    ここでは、それぞれ {V==1, W==1}, {V==1, W==2}, {V==1, W==3} および {V==1, W==0} に対応する 4 つのコンフィギュレーションが計算されます。

プログラムによるモデルの削減の詳細については、reduceModelを参照してください。

考慮事項および制限事項

  • 削減されたモデルを保存する出力フォルダーは matlabroot の下に存在してはなりません。

  • モデルが matlabroot の下に配置されているファイルに依存している場合、モデルの削減中にこれらのファイルが変更されたり、出力フォルダーにコピーされたりすることはありません。ファイルの依存関係には Simulink ライブラリのファイル、.m ファイル、.mat ファイル、.sldd ファイルを含めることができます。

  • 出力フォルダーに前のモデル削減からの variant_reducer.log ファイルが含まれている場合、リデューサーは後続の削減のためにその出力内で利用可能なすべてのファイルを上書きします。

  • コールバック コード:

    • モデルのコールバック、マスク初期化コードおよびマスク パラメーターのコールバック コードは手動で変更しなければなりません。

    • バリアント非アクティブ コンポーネント (モデル、ブロック、信号など) からの InitFcn、MaskEval、PreLoad、PostLoad およびすべての編集時コールバック コードは削除されます。削減されたモデルで、これは予期しない動作の原因になります。

  • シミュレーション セマンティクスの一貫性を確保するために、削減されたモデルにさらなるブロックが自動的に追加されます。追加のブロックには、一貫した信号属性 (データ型、次元、実数/複素数) を実現するための Signal Specification ブロック、または接続されていない信号のために Ground ブロックと Terminator ブロックを含めることができます。

  • モデルの削減中、アクティブ パス上に存在するコメント化されたブロックは保持されますが、非アクティブ パス上に存在するコメント化されたブロックは削除されます。

  • モデルの削減中、バリアント遷移を含む Stateflow® キャンバス内の要素は変更されません。

  • Stateflow チャートの非アクティブな要素からの信号属性 (データ型、実数/複素数、次元など) は、削減されたモデルでは保持されない可能性があります。

関連する例

詳細