このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Simulink.SubSystem.convertToModelReference
サブシステムからモデルへの変換
構文
説明
Simulink.SubSystem.convertToModelReference(
は、blk
,UseConversionAdvisor=true)blk
で指定されたサブシステムに対してモデル参照変換アドバイザーを開きます。
この関数を使用する前に、サブシステムを含むモデルを読み込みます。
[
は、t
,h
] = Simulink.SubSystem.convertToModelReference(blks
,mdls
)blks
で指定された 1 つ以上のサブシステムを、mdls
で指定された名前のモデルに変換します。
関数が変換するサブシステムごとに、関数は以下を行います。
モデルを作成する。
サブシステムの内容を新しいモデルにコピーする。
元のサブシステムからのコンパイルされた属性を使用するように、新しいモデルのルートレベルの入力ブロックと出力ブロックを更新する。
親モデルのコンフィギュレーション セットを新しいモデルにコピーするか、親モデルと同じコンフィギュレーション セットを参照する。変換によって新しいモデルの一部の構成設定を変更して、新しいモデルを参照モデルとして使用できるようにすることができます。
該当する場合、関数は以下も行います。
サブシステムによって使用されるモデル ワークスペースの内容を親モデルから新しいモデルにコピーする。
親モデルで使用されるデータ ディクショナリを新しいモデルに適用する。
新しいモデルに必要な
Simulink.Bus
オブジェクト、Simulink.Signal
オブジェクト、および調整可能なパラメーターを作成する。元の Subsystem ブロックのブロック マスクに基づいて、新しいモデルのシステム マスクを作成する。システム マスクは、マスク初期化コードなどのブロック マスクの一部の機能をサポートしていません。詳細については、システム マスクの概要を参照してください。
Requirements Toolbox™ ソフトウェアで作成された要件リンクを、元の Subsystem ブロックから新しい Model ブロックにコピーする。
例
sldemo_mdlref_conversion
という名前のモデルを開いてコンパイルします。変換を成功させるには、サブシステムを含むモデルが正常にコンパイルされる必要があります。
mdl = "sldemo_mdlref_conversion"; open_system(mdl); set_param(mdl,SimulationCommand="Update")
モデルは警告やエラーなしでコンパイルされます。
Bus Counter
という名前の Subsystem ブロックに対して、モデル参照変換アドバイザーを開きます。
blk = "sldemo_mdlref_conversion/Bus Counter"; Simulink.SubSystem.convertToModelReference(blk,... 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
という名前のモデルを開いてコンパイルします。変換を成功させるには、サブシステムを含むモデルが正常にコンパイルされる必要があります。
mdl = "sldemo_mdlref_conversion"; open_system(mdl); set_param(mdl,SimulationCommand="Update")
モデルは警告やエラーなしでコンパイルされます。
Bus Counter
という名前の Subsystem ブロックに対して、モデル参照変換アドバイザーを開きます。
blk = "sldemo_mdlref_conversion/Bus Counter"; newmdl = "BusCounter"; Simulink.SubSystem.convertToModelReference(blk,newmdl);
### Successfully converted Subsystem block to Model block.
既定では、この関数は Subsystem ブロックを Model ブロックに置き換えません。代わりに、この関数は、新しいモデルを参照する Model ブロックを含む新しいウィンドウを開きます。
sldemo_mdlref_conversion
という名前のモデル例を開いてコンパイルします。変換を成功させるには、サブシステムを含むモデルが正常にコンパイルされる必要があります。
mdl = "sldemo_mdlref_conversion"; open_system(mdl) set_param(mdl,SimulationCommand="Update")
モデルは警告やエラーなしでコンパイルされます。
以下のオプションを指定し、Bus Counter
という名前の Subsystem ブロックの内容を BusCounter
という名前の参照モデルに変換します。
できる限り問題を自動的に修正する。
新しいモデルを参照する Model ブロックによって Subsystem ブロックを置き換える。
変換前後のシミュレーション結果をチェックする。
subsys = "sldemo_mdlref_conversion/Bus Counter"; newmdl = "BusCounter"; Simulink.SubSystem.convertToModelReference(subsys,newmdl,... AutoFix=true,ReplaceSubsystem=true,CheckSimulationResults=true);
### Successfully converted Subsystem block to Model block.
Subsystem ブロックが、BusCounter
という名前のモデルを参照する Model ブロックによって置き換えられます。
関数 Simulink.SubSystem.convertToModelReference
を 1 回呼び出して、複数のサブシステムを参照モデルに変換できます。
f14
という名前のモデルを開いてコンパイルします。変換を成功させるには、サブシステムを含むモデルが正常にコンパイルされる必要があります。
mdl = "f14"; open_system(mdl) set_param(mdl,SimulationCommand="Update")
モデルは警告やエラーなしでコンパイルされます。
変換するモデルを準備して、変換中に特定される問題を排除するか、問題の数を減らします。
変換前後のシミュレーション結果が同等であることをチェックできるように、Dataset
形式を使用してモデルの出力をログに記録します。
set_param(mdl,SaveOutput="on",SaveFormat="Dataset")
新しい参照モデルは、そのコンフィギュレーション パラメーター設定を親モデルから継承します。信号の関連付けの推奨設定を使用するように f14
モデルを更新します。この設定では、Simulink.Signal
オブジェクトに対して明示的に指定された信号の関連付けのみがサポートされます。
set_param(mdl,SignalResolutionControl="UseLocalSettings")
以下のオプションを指定し、Controller
および Aircraft Dynamics Model
という名前の Subsystem ブロックの内容を参照モデルに変換します。
問題を自動的に修正する。
新しいモデルを参照する Model ブロックによって Subsystem ブロックを置き換える。
変換前後のシミュレーション結果をチェックする。
ss1 = "f14/Controller"; ss2 = "f14/Aircraft Dynamics Model"; mdl1 = "Controller"; mdl2 = "AircraftDynamics"; Simulink.SubSystem.convertToModelReference([ss1 ss2],[mdl1 mdl2],... AutoFix=true,ReplaceSubsystem=true,CheckSimulationResults=true)
### Successfully converted Subsystem block to Model block.
Controller
および Aircraft Dynamics Model
という名前の Subsystem ブロックが、それぞれ Controller
および AircraftDynamics
という名前のモデルを参照する Model ブロックによって置き換えられます。
入力引数
Subsystem ブロックのパスまたはハンドル。数値スカラー、文字ベクトル、または string スカラーとして指定します。
変換できるサブシステムの詳細については、参照モデルの条件付き実行を参照してください。
データ型: double
| char
| string
Subsystem ブロックのパスまたはハンドル。数値配列、文字ベクトル、文字ベクトルの cell 配列、または string 配列として指定します。
変換できるサブシステムの詳細については、参照モデルの条件付き実行を参照してください。
変換する複数のサブシステムを指定すると、変換プロセスは各サブシステムを変換しようとします。正常に変換されたサブシステムは、他のサブシステムの変換が失敗しても、参照モデルになります。
親サブシステムとそのサブシステムの子を同時に変換することはできません。
ヒント
変換する複数のサブシステムを 1 つのコマンドで指定すると、各サブシステムを個別に変換するのに比べ、時間が節約される可能性があります。複数のサブシステムの変換プロセスでは、モデルは 1 回だけコンパイルされます。
複数のサブシステムを指定する場合:
モデルでは、短いシミュレーション時間を設定することを検討します。
関数では、
AutoFix
、ReplaceSubsystem
、およびCheckSimulationResults
をtrue
に設定することを検討します。
データ型: double
| char
| string
| cell
新しいモデルの一意の名前。文字ベクトル、文字ベクトルの cell 配列、または string 配列として指定します。
有効なモデル ファイル名については、Choose Valid Model File Namesを参照してください。
変換するサブシステムを複数指定する場合は、モデル名の数と同じ数を指定します。各モデル名は、指定されたサブシステムに同じ順序で対応します。
データ型: char
| string
| cell
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name
を引用符で囲みます。
例: Simulink.SubSystem.convertToModelReference(blk,mdl,AutoFix=true,ReplaceSubsystem=true)
変換
変換の問題の自動修正。false
または true
として指定します。
AutoFix
を true
に設定すると、アドバイザーは一部の変換の問題を自動的に修正します。アドバイザーが修正できない問題については、手動で対処する必要があります。
アドバイザーは、サブシステム境界を越える Goto ブロックや From ブロックなどの変換の問題を修正できます。自動修正に基づいて、新しいモデルは元のサブシステムよりも多くの端子をもつことがあります。
変換中に必要な修正の数を減らすには、変換するサブシステムの準備を参照してください。
依存関係
Force
を true
に設定すると、このオプションは無視されます。
データ型: logical
エラーをダウングレードする強制的な変換。false
または true
として指定します。
Force
を true
に設定すると、変換プロセスはエラーを警告として返し、AutoFix
を true
に設定していてもエラーを修正しません。
Force
を true
に設定すると、関数を使用して変換の初期ステップを実行できます。その後、変換プロセスを自分で完了します。
データ型: logical
変換データ ファイルの一意の名前。文字ベクトルまたは string スカラーとして指定します。
変換データ ファイルには、変換中に作成された変数とオブジェクトが保存されます。
既定では、ファイル名は親モデル名で始まり、_conversion_data.mat
で終わります。たとえば、mymodel
という名前のモデル内のサブシステムの場合、既定の変換ファイル名は mymodel_conversion_data.mat
です。
変換データは、MAT ファイル (.mat
) またはスクリプト (.m
) に保存できます。.m
ファイル拡張子を指定すると、ファイルは変数をシリアル化します。
ファイルの保存先を制御するには、絶対パスまたは相対パスでファイル名を指定します。
依存関係
この引数を使用するには、親モデルでデータ ディクショナリを使用してはなりません。
データ型: char
| string
モデルのインターフェイス
親モデル レイアウトを保持するためのラッパー サブシステム。false
または true
として指定します。
サブシステムを参照モデルに変換する場合、変換プロセスでラッパー サブシステムを作成できます。ラッパー サブシステムには、変換からの Model ブロックが含まれます。
変換によってインターフェイスに端子が追加されると、ラッパー サブシステムが自動的に作成されます。たとえば、Goto ブロックと From ブロックがサブシステム境界を越えると、Model ブロックは元の Subsystem ブロックよりも多くの端子をもつことがあります。変換によって、元のサブシステムと同じ数の端子をもつラッパー サブシステムが作成されます。このラッパー サブシステムには、新しいモデルを参照する Model ブロックが含まれます。
データ型: logical
インターフェイス定義用の新しいバス オブジェクト。false
または true
として指定します。
サブシステムとは異なり、モデルには定義済みのインターフェイスが必要です。バーチャル バスを含むインターフェイスを定義するには、新しいモデルで以下のいずれかのオプションを使用する必要があります。
In Bus Element ブロックと Out Bus Element ブロック
Simulink.Bus
オブジェクトを指定する Inport ブロックと Outport ブロック
既定では、変換によってバス オブジェクトは作成されません。代わりに、変換では、モデル インターフェイスでバーチャル バスをサポートするために、In Bus Element ブロックと Out Bus Element ブロックが使用されます。
CreateBusObjectsForAllBuses
を true
に設定すると、変換によって、サブシステムで使用される、サブシステムの入力端子または出力端子に接続された各バーチャル バス用のバス オブジェクトが作成されます。
親モデルでデータ ディクショナリが使用されている場合、新しいバス オブジェクトはそのデータ ディクショナリに格納されます。バス オブジェクトを保存するには、親モデルまたはデータ ディクショナリを保存します。親モデルでデータ ディクショナリが使用されていない場合、バス オブジェクトは DataFileName
で指定されたファイルに保存されます。
データ型: logical
親モデルからコード マッピングをコピー。false
または true
として指定します。
CopyCodeMappings
を true
に設定すると、関数は既存のコード マッピング構成を親モデルから新しいモデルにコピーします。
コード マッピング情報には、コード生成のためのモデル データ要素の設定が含まれます。この引数はシミュレーションに影響しません。
詳細については、サブシステムの参照モデルへの変換とコードの生成 (Simulink Coder)を参照してください。
データ型: logical
モデルの実装
サブシステムを参照モデルに置換。false
または true
として指定します。
既定では、変換によって元のモデルは更新されません。元のモデルが開いている場合、変換によって、新しいモデルを参照する Model ブロックを含む新しいウィンドウが開きます。
ReplaceSubsystem
を true
に設定すると、変換では、指定した各 Subsystem ブロックを、対応する新しいモデルを参照する Model ブロックに置き換えようとします。自動修正によってインターフェイスに端子が追加された場合、親モデルのレイアウトを維持するために、アドバイザーは元の Subsystem ブロックを、新しい Model ブロックを含む Subsystem ブロックに置き換えます。
ヒント
サブシステムを変換する前に元のモデルのバックアップを作成することを検討してください。変換を元に戻す場合、バックアップを作成しておくと元のモデルの復元に役立ちます。また、バックアップを使用すると、新しいシステム マスクと元の Subsystem ブロック マスクを比較できます。新しいモデルのシステム マスクは、元の Subsystem ブロックのブロック マスクとは異なる場合があります。たとえば、変換ではブロック マスクからシステム マスクにマスク初期化コードがコピーされません。詳細については、システム マスクの概要を参照してください。
データ型: logical
新しい Model ブロックのシミュレーション モード。"Normal"
、"Accelerator"
、"Software-in-the-loop (SIL)"
、文字ベクトルの cell 配列、または string 配列として指定します。
Model ブロック シミュレーション モードは、参照モデルの対応するインスタンス用のシミュレーション モードを制御します。同じモデルを参照する別の Model ブロックでは、別のシミュレーション モードを指定できます。
"Normal"
— 参照モデルをインタープリターで実行します。参照モデルは、親モデル内に直接実装された Atomic Subsystem であるかのように扱われます。"Accelerator"
— 参照モデルの MEX ファイルを作成します。その後、S-Function を実行して参照モデルを実行します。"Software-in-the-loop (SIL)"
— このオプションには Embedded Coder® のライセンスが必要です。Model ブロックの [コード インターフェイス] のパラメーター設定に基づき、量産コードを生成します。そのコードは、ホスト プラットフォーム用にコンパイルされてホスト プラットフォーム上で実行されます。
Model ブロックの角は、Model ブロックのシミュレーション モードを示しています。ノーマル モードでは、角に塗りつぶしなしの三角形が表示されます。アクセラレータ モードでは、角の三角形は塗りつぶされます。SIL モードでは、角は塗りつぶされ、ブロック アイコンに (SIL)
という語が表示されます。
親モデルのシミュレーション モードが Model ブロックのシミュレーション モードをオーバーライドする場合があります。詳細については、モデルの階層構造内のシミュレーション モードの選択を参照してください。
変換するサブシステムを 1 つ指定する場合は、新しい Model ブロックのシミュレーション モードを、"Normal"
、"Accelerator"
、または "Software-in-the-loop (SIL)"
として指定します。
例: Simulink.SubSystem.convertToModelReference(blk,mdl,ReplaceSubsystem=true,SimulationModes="Accelerator")
R2024b より前: SimulationModes
の値は、cell 配列または string 配列で指定します。
変換するサブシステムを複数指定する場合は、新しい各 Model ブロックのシミュレーション モードを、string 配列または文字ベクトルの cell 配列で指定します。サブシステムと新しいモデル名の指定に使用したのと同じ順序で、Model ブロックのシミュレーション モードを指定します。
例: Simulink.SubSystem.convertToModelReference([blk1 blk2],[mdl1 mdl2],ReplaceSubsystem=true,SimulationModes=["Normal" "Accelerator"])
依存関係
この引数を使用するには、ReplaceSubsystem
を true
に設定します。
データ型: char
| string
| cell
生成するモデル参照ターゲット。"Sim"
または "Coder"
として指定します。
"Sim"
— モデル参照のシミュレーション ターゲットを生成します。"Coder"
— モデル参照のコード生成ターゲットを生成します。
シミュレーション結果の比較
変換前後の最上位モデルのシミュレーション結果の比較。false
または true
として指定します。
シミュレーション結果間の差分が許容誤差レベルを超える場合、関数はエラー メッセージを表示します。
ヒント
変換を実行する前に以下のようにします。
SimulationModes
を元のモデルで使用されるシミュレーション モードに設定する。作成する Model ブロックごとに、このシミュレーション モードを指定します。StopTime
、AbsoluteTolerance
、およびRelativeTolerance
を設定する。
依存関係
この引数を使用するには、次のようにします。
関心のあるサブシステム出力信号に対して信号のログを有効にする。
ReplaceSubsystem
をtrue
に設定する。
データ型: logical
シミュレーション結果の比較の終了時間。数値スカラーとして指定します。
終了時間は、親モデルの開始時間以上の有限スカラーでなければなりません。詳細については、開始時間を参照してください。
依存関係
この引数を使用するには、CheckSimulationResults
を true
に設定します。
データ型: double
比較のための信号の絶対許容誤差。数値スカラーとして指定します。
絶対許容誤差とは、測定された信号の値がゼロに近づくにつれた、ソルバーの最大許容誤差です。変換前のシミュレーション結果はベースラインを確立します。変換後のシミュレーション結果は許容誤差の範囲内である必要があります。
依存関係
この引数を使用するには、CheckSimulationResults
を true
に設定します。
データ型: double
比較のための信号の相対許容誤差。数値スカラーとして指定します。
相対許容誤差とは、許容可能な最大のソルバー誤差を、タイム ステップごとの各信号のサイズとの相対値としたものです。変換前のシミュレーション結果はベースラインを確立します。変換後のシミュレーション結果は許容誤差の範囲内である必要があります。
既定値 (0.001
) は、比較対象信号がベースライン信号の 0.1% 以内の精度であることを意味します。
依存関係
この引数を使用するには、CheckSimulationResults
を true
に設定します。
データ型: double
出力引数
バージョン履歴
R2006a で導入サブシステムをモデルに変換し、親モデルの [信号の関連付け] コンフィギュレーション パラメーターが [明示的と暗黙的]
または [明示的と暗黙的で警告]
に設定されている場合、新しいモデルのコンフィギュレーション セットでは [信号の関連付け] が [明示的のみ]
に変更されます。この変更により、新しいモデルで Simulink.Signal
オブジェクトへの暗黙的な信号の関連付けが回避されます。
詳細については、信号の関連付けを参照してください。
サブシステムをモデルに変換すると、次のものに書き込む Parameter Writer ブロックがチェックされるようになりました。
サブシステムの外にあるブロック
サブシステムの外で使用されているベース ワークスペース変数
モデル ワークスペースの変数
Parameter Writer ブロックがこれらの宛先のいずれかに書き込む場合、変換で問題が検出され、失敗するようになりました。以前のリリースでは、変換は成功しますが、新しいモデルの階層構造をコンパイルまたはシミュレートするとエラーが発生します。
Parameter Writer ブロックの詳細については、Parameter Writer を参照してください。
マスク初期化コードがあるマスク サブシステムを変換するために、Force
を true
に設定する必要はなくなりました。マスク初期化コードによって変換がブロックされなくなりました。モデルのシステム マスクはマスク初期化コードをサポートしていないため、新しいモデルのシステム マスクではマスク初期化コードは使用されません。詳細については、システム マスクの概要を参照してください。
マスク サブシステムをモデルに変換すると、変換によって、該当するパラメーター制約とクロスパラメーター制約が Subsystem ブロック マスクから新しいモデルのシステム マスクにコピーされるようになりました。制約をシステム マスクに適用するには、関連するマスク パラメーターがシステム マスクで使用可能である必要があります。これらの制約の詳細については、制約を使用したマスク パラメーターの検証を参照してください。
サブシステムをモデルに変換し、サブシステム インターフェイスがバーチャル バスを使用する場合、新しいモデルのブロック線図はサブシステムのブロック線図をより適切に再現します。
Simulink.Bus
オブジェクトを作成せずに、またはブロックを追加せずにバス階層を指定するために、新しいモデルでは In Bus Element ブロックと Out Bus Element ブロックが使用されます。対応するバス要素端子は、ブロックの有無にかかわらずバス階層の要素を指定します。詳細については、端子の複数要素の指定を参照してください。
R2022b でサービス インターフェイスのコード マッピングが導入されました。R2023a 以降では、新規に作成された参照モデルに親モデルからサービス インターフェイスのコード マッピングをコピーできます。マッピングをコピーするには、CopyCodeMappings
引数を true
として指定して Simulink.SubSystem.convertToModelReference
関数を使用します。
サービス インターフェイスのマッピングの詳細については、C サービス インターフェイス (Embedded Coder)を参照してください。コード マッピング構成の詳細については、Define Service Interfaces, Storage Classes, Memory Sections, and Function Templates for Software Architecture (Embedded Coder)を参照してください。
新規に作成された参照モデルに親モデルからコード マッピングをコピーできます。コード マッピングをコピーするには、CopyCodeMappings
引数を true
として指定して関数 Simulink.SubSystem.convertToModelReference
を使用します。
モデル参照のコード生成ターゲットを作成するには、BuildTarget
を 'RTW'
ではなく 'Coder'
に設定します。新しい名前は、意味がより明確です。
'RTW'
のサポートを削除する予定はありません。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)