Main Content

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

Simulink.SubSystem.convertToModelReference

サブシステムからモデル参照への変換

説明

Simulink.SubSystem.convertToModelReference(gcb,'UseConversionAdvisor',true) は、選択している Subsystem ブロックに対してモデル参照変換アドバイザーを開きます。

[tf,h] = Simulink.SubSystem.convertToModelReference(subsys,model) は指定したサブシステムを参照モデルに変換します。

関数が変換するサブシステムごとに、以下を行います。

  • モデルを作成する。

  • サブシステムの内容を新しいモデルにコピーする。

  • ルートレベルの Inport ブロックおよび Outport ブロックとモデルのコンフィギュレーション パラメーターを更新し、元のサブシステムのコンパイルされた属性と一致させる。

  • 元のモデルのモデル ワークスペースの内容を新しいモデルにコピーする。

この関数を使用する前に、サブシステムが含まれるモデルを読み込みます。

[tf,h] = Simulink.SubSystem.convertToModelReference(subsys,model,Name,Value) は、1 つ以上の名前と値の引数を使用してオプションを指定します。

すべて折りたたむ

sldemo_mdlref_conversion という名前のモデルを開いてシミュレートします。

model = "sldemo_mdlref_conversion";
open_system(model);
sim(model);

モデルは、警告もエラーもなしでシミュレートされます。

Bus Counter という名前の Subsystem ブロックをクリックします。次に、関数 Simulink.SubSystem.convertToModelReference を使用して、Subsystem ブロックに対してモデル参照変換アドバイザーを開きます。

Simulink.SubSystem.convertToModelReference(gcb,...
    'UseConversionAdvisor',true);
Updating Model Advisor cache...
Model Advisor cache updated. For new customizations, to update the cache, use the Advisor.Manager.refresh_customizations method.

モデル参照変換アドバイザーが開きます。

sldemo_mdlref_conversion という名前のモデル例を開いて、シミュレートします。

model = "sldemo_mdlref_conversion";
open_system(model);
sim(model);

モデルは、警告もエラーもなしでシミュレートされます。

以下のオプションを指定し、Bus Counter という名前の Subsystem ブロックの内容を bus_counter_ref_model という名前の参照モデルに変換します。

  • できる限り問題を自動的に修正する。

  • 新しいモデルを参照する Model ブロックによって Subsystem ブロックを置き換える。

  • 変換前後のシミュレーション結果をチェックする。

Simulink.SubSystem.convertToModelReference(...
   'sldemo_mdlref_conversion/Bus Counter', ...
   'bus_counter_ref_model', ...
   'AutoFix',true,...
   'ReplaceSubsystem',true,...
   'CheckSimulationResults',true);
### Successfully converted Subsystem block to Model block.

Subsystem ブロックが、bus_counter_ref_model という名前のモデルを参照する Bus Counter という名前の Model ブロックによって置き換えられます。

関数 Simulink.SubSystem.convertToModelReference を 1 回呼び出して、複数のサブシステムを参照モデルに変換できます。

f14 という名前のモデルを開いてシミュレートします。

model = "f14";
open_system(model);
sim(model);

モデルは、警告もエラーもなしでシミュレートされます。

変換するモデルを準備して、変換中に特定される問題を排除するか、問題の数を減らします。

変換前後のシミュレーション結果が同等であることをチェックできるように、Dataset 形式を使用してモデルの出力をログに記録します。

set_param(gcs,...
    'SaveOutput','on',...
    'SaveFormat','Dataset');

新しい参照モデルは、そのコンフィギュレーション パラメーター設定を親モデルから継承します。信号の関連付けの推奨設定を使用するように f14 モデルを更新します。この設定では、Simulink.Signal オブジェクトに対して明示的に指定された信号の関連付けのみがサポートされます。

set_param(gcs,'SignalResolutionControl','UseLocalSettings');

以下のオプションを指定し、Controller および Aircraft Dynamics Model という名前の Subsystem ブロックの内容を参照モデルに変換します。

  • 問題を自動的に修正する。

  • 新しいモデルを参照する Model ブロックによって Subsystem ブロックを置き換える。

  • 変換前後のシミュレーション結果をチェックする。

Simulink.SubSystem.convertToModelReference(...
    {'f14/Controller','f14/Aircraft Dynamics Model'},...
    {'controller_ref_model','aircraft_dynamics_ref_model'},...
    'AutoFix',true,...
    'ReplaceSubsystem',true,...
    'CheckSimulationResults',true)
### Successfully converted Subsystem block to Model block.

Controller および Aircraft Dynamics Model という名前の Subsystem ブロックが、それぞれ controller_ref_model および aircraft_dyanmics_ref_model という名前のモデルを参照する Model ブロックによって置き換えられます。

入力引数

すべて折りたたむ

サブシステム名またはハンドル。数値配列、文字ベクトル、文字ベクトルの cell 配列、または string 配列として指定します。

変換できるサブシステムの詳細については、参照モデルの条件付き実行を参照してください。

データ型: double | char | string

参照モデル名。文字ベクトルまたは文字ベクトルの cell 配列、または string 配列として指定します。各モデル名は 59 文字以下でなければなりません。

変換するサブシステムを複数指定する場合は、参照モデル名の数と同じ数を指定します。各モデル名は、指定されたサブシステムに同じ順序で対応します。

データ型: char | string

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: Simulink.SubSystem.convertToModelReference...(engineSubsys,engineModelRef,'ReplaceSubsystem',true)

変換

すべて折りたたむ

自動修正が可能なすべての変換の問題を修正するオプション。true または false として指定します。

AutoFixtrue に設定すると、関数は修正可能なすべての変換問題を修正します。関数で修正できない問題については、モデルを修正して対処するように促すエラー メッセージが変換プロセスによって生成されます。

メモ

Forcetrue に設定すると、関数は自動的に変換の問題を修正しません。

データ型: logical

エラーが発生しても変換を完了するオプション。true または false として指定します。

true の場合、関数は変換エラーを警告として返し、AutoFixtrue に設定した場合でもエラーを修正せずに変換を継続します。Force オプションによって、この関数を変換の最初のステップを行うために使用し、その後手動で変換プロセスを完了させることができます。

データ型: logical

変換データを保存するファイルの名前。文字ベクトルとして指定します。絶対パスまたは相対パスを指定できます。

変換データは、MAT ファイル (既定) または MATLAB® ファイルに保存できます。.m ファイル拡張子を使用する場合、関数はすべての変数を MATLAB ファイルにシリアル化します。

既定では、関数はモデル名と _conversion_data.mat で構成されるファイル名を使用します。

データ型: char

モデルのインターフェイス

すべて折りたたむ

モデル レイアウトを保持するためのラッパー サブシステムを挿入するオプション。true または false として指定します。

サブシステムを参照モデルに変換する場合、変換プロセスでラッパー サブシステムを挿入して親モデルのレイアウトを保持できます。サブシステム ラッパーには、変換による Model ブロックが含まれています。

この変換では、端子の追加によって Model ブロックのインターフェイスが変更された場合、ラッパー サブシステムが自動的に作成されます。

データ型: logical

インターフェイス定義のバス オブジェクトを作成するオプション。true または false として指定します。

サブシステムとは異なり、モデルには定義済みのインターフェイスが必要です。バーチャル バスを含むインターフェイスを定義するには、新しいモデルで以下のいずれかのオプションを使用する必要があります。

  • In Bus Element ブロックと Out Bus Element ブロック

  • Simulink.Bus オブジェクトを指定する Inport ブロックと Outport ブロック

既定では、変換時に Bus オブジェクトは作成されません。代わりに、モデル インターフェイスでバーチャル バスをサポートするために In Bus Element ブロックと Out Bus Element ブロックが使用され、変換後の新しいモデルには元のサブシステムが含まれます。

このパラメーターを true に設定すると、Bus オブジェクトを指定していない Inport ブロックと Outport ブロックに接続されたすべてのバーチャル バスについて、変換で Bus オブジェクトが作成されます。変換ではモデル インターフェイスの Inport ブロックと Outport ブロックが維持され、それらで新しい Bus オブジェクトが指定されます。

データ型: logical

親モデルから新しいモデルにコード マッピングをコピーするオプション。true または false として指定します。

true の場合、関数は親モデルから新しい参照モデルに既存のコード マッピング構成をコピーします。

false の場合、関数は親モデルから新しいモデルに既存のコード マッピング構成をコピーしません。

データ型: logical

モデルの実装

すべて折りたたむ

Subsystem ブロックを Model ブロックと置き換えるオプション。true または false として指定します。

値を true に設定する場合は、サブシステムを変換する前に元のモデルのバックアップを作成することを検討してください。変換を元に戻す場合、バックアップを作成しておくとモデルの復元が容易になります。

ReplaceSubsystemtrue に設定した場合、変換処理は自動修正オプションを使用するかどうかに応じて異なります。

  • 自動修正を使用する場合、自動修正で入力端子または出力端子が変更されない限り、変換によって Subsystem ブロックは Model ブロックと置き換えられます。端子が変更される場合、変換によって Subsystem ブロックに挿入される Model ブロックにサブシステムの内容が含まれます。

  • 自動修正を使用しない場合、変換によって Subsystem ブロックが Model ブロックと置き換えられます。

データ型: logical

Model ブロック用のシミュレーション モード。'Normal' または 'Accelerator' として指定します。このシミュレーション モード設定は変換によって作成されたモデルを参照する Model ブロックに適用されます。

データ型: char | string

生成するモデル参照ターゲット。'Sim' または 'Coder' として指定します。

  • 'Sim' — モデル参照のシミュレーション ターゲット

  • 'Coder' — コード生成ターゲット

データ型: char

シミュレーション結果の比較

すべて折りたたむ

変換前後のシミュレーション結果をチェックするオプション。true または false として指定します。

変換を実行する前に以下のようにします。

  • モデルで目的のサブシステム出力信号の信号ログを有効にする。

  • CheckSimulationResultstrue に設定する。

  • AbsoluteTolerance を設定する。

  • RelativeTolerance を設定する。

  • SimulationModes を元のモデルで使用されるシミュレーション モードに設定する。

シミュレーション結果間の差分が許容誤差レベルを超える場合、関数はメッセージを表示します。

データ型: logical

比較のための信号の絶対許容誤差。数値スカラーとして指定します。

CheckSimulationResultstrue に設定した場合にのみこのオプションを使用します。

データ型: double

比較のための信号の相対許容誤差。数値スカラーとして指定します。

CheckSimulationResultstrue に設定した場合にのみこのオプションを使用します。

データ型: double

出力引数

すべて折りたたむ

True または false の結果。データ型 logical1 または 0 として返されます。

1 の値は変換に成功したことを示します。

Forcetrue に設定した場合、変換が完了すると関数は 1 の値を返します。ただし、シミュレーション結果は変換前のモデルのシミュレーション結果とは異なる場合があります。

作成された Model ブロックのハンドル。数値配列として返されます。

データ型: double

ヒント

  • 親サブシステムとそのサブシステムの子を同時に変換することはできません。

  • 変換する複数のサブシステムを 1 つのコマンドで指定すると、各サブシステムを個別に変換するのに比べ、時間が節約される可能性があります。複数サブシステムの変換プロセスはモデルを 1 回コンパイルします。

  • 変換する複数のサブシステムを指定すると、変換プロセスは各システムを変換しようとします。正常に変換されたサブシステムは、他のサブシステムの変換が失敗しても、参照モデルになります。

  • 複数のサブシステムを指定する場合は、次の点を考慮します。

    • 入力引数で、'Autofix''ReplaceSubsystem''CheckSimulationResults'true に設定する。

    • モデルでは、シミュレーション時間を短時間に設定する。

  • データ ディクショナリは、次の条件がどちらも存在する場合に変換プロセスの一部として作成するバス オブジェクトを保存します。

    • 最上位モデルでデータ ディクショナリを使用する。

    • 最上位モデルへのすべての変更が保存されている。

  • マスク サブシステムの動作を維持するには、次の追加のタスクを実行します。

    • マスク コールバック、アイコン、端子およびドキュメンテーションに対して、参照モデルに変換する前にマスク サブシステムのバックアップ コピーを作成します。変換後に、バックアップしたマスク サブシステムのマスク エディターから内容を新しい Model ブロックのマスク エディターにコピーします。

    • マスク パラメーターをモデル引数で置き換えます (再利用可能な参照モデルのインスタンスのパラメーター化を参照)。

    メモ

    参照モデルは、マスク パラメーターを作成するためにマスク初期化コードで実現できる機能をサポートしていません。

バージョン履歴

R2006a で導入

すべて展開する