Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Simulink.SubSystem.convertToModelReference

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

説明

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

[success,mdlRefBlkHs] = Simulink.SubSystem.convertToModelReference(subsys,mdlRefs) は指定したサブシステムを mdlRefs 値を使用して参照モデルに変換します。

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

  • モデルを作成する

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

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

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

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

[success,mdlRefBlkHs] = Simulink.SubSystem.convertToModelReference(subsys,mdlRefs,Name,Value) は、1 つ以上の Name,Value 引数のペアによって指定された追加オプションを使用します。

すべて折りたたむ

f14 モデルを開きます。

open_system('f14');

f14 モデルで、Controller Subsystem の出力信号を選択して [信号のログ] をクリックします。

Simulink® エディターで Controller サブシステムを選択します。次に、コマンド ラインからモデル参照変換アドバイザーを開きます。

Simulink.SubSystem.convertToModelReference(gcb,'UseConversionAdvisor',true);

アドバイザーを使用して変換を実行します。

Bus Counter サブシステムを bus_counter_ref_model という名前の参照モデルに変換します。

open_system('sldemo_mdlref_conversion');
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.

2 つのサブシステムを 1 つのコマンドで変換します。

open_system('f14');
set_param(gcs,'SaveOutput','on','SaveFormat','Dataset');
set_param(gcs,'SignalResolutionControl','UseLocalSettings');
Simulink.SubSystem.convertToModelReference(...
{'f14/Controller','f14/Aircraft Dynamics Model'},...
{'controller_ref_model','aircraft_dynamics_ref_model'},...
'ReplaceSubsystem',true,...
'AutoFix',true,...
'CheckSimulationResults',true)

入力引数

すべて折りたたむ

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

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

データ型: double

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

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

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペア引数を任意の順序で指定できます。

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

AutoFixtrue に設定すると、関数は修正可能なすべての変換問題を修正します。

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

メモ

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

データ型: logical

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

Forcetrue に設定すると、関数は 'AutoFix'true に設定した場合でも変換の問題を修正しません。ただし、success 出力引数は変換エラーが発生したかしないかにかかわらず true です。

変換前後のシミュレーション結果の比較。true または false として指定します。

変換を実行する前に、モデルで目的のサブシステム出力信号の信号ログを有効にします。

Simulink.SubSystem.convertToModelReference コマンドに以下を設定します。

  • 'CheckSimulationResults'true に設定

  • 'AbsoluteTolerance'

  • 'RelativeTolerance'

  • 'SimulationModes' を元のモデルと同じシミュレーション モードに設定

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

比較のための信号の絶対許容誤差。double として指定します。CheckSimulationResultstrue に設定した場合にのみこのオプションを使用します。

データ型: double

比較のための信号の相対許容誤差。double として指定します。CheckSimulationResultstrue に設定した場合にのみこのオプションを使用します。

データ型: double

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

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

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

Subsystem ブロックを Model ブロックと置き換えます。true または false として指定します。Model ブロックは参照モデルを参照します。

既定では、関数は参照モデルを別の Simulink エディター ウィンドウに表示します。

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

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

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

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

データ型: logical

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

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

データ型: logical

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

生成するモデル参照ターゲット。

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

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

出力引数

すべて折りたたむ

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

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

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

データ型: double

ヒント

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

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

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

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

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

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

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

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

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

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

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

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

    メモ

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

互換性についての考慮事項

すべて展開する

R2019a 以降は非推奨

R2006a で導入