Main Content

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

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

モデル参照は、大規模で複雑なシステムをモデル化したり、チームベースの開発を行う場合にメリットがあります。多くの大規模モデルでは、サブシステムと参照モデルを組み合わせて使用します。サブシステムを参照モデルに変換するかどうかを決定するには、モデル コンポーネントのタイプの検討を参照してください。

変換するサブシステムの準備

変換するサブシステムを準備することで、変換中に特定される問題を排除したり、問題の数を減らすことができます。こうした問題に変換前に対処する方が、診断メッセージと Simulink® エディター間を繰り返し切り替えるよりも効率的です。

サブシステムを準備するには、以下を行います。

  1. コンフィギュレーション パラメーターの [信号の関連付け][明示的のみ] または [なし] に設定します。

    ヒント

    この問題は変換中に自動的に修正できます。

  2. Subsystem ブロック インターフェイスを設定します。

    ヒント

    インターフェイスに関する以下の問題は、変換中に自動的に修正できます。

    サブシステム インターフェイス探すものモデルの変更

    Goto ブロックまたは From ブロック

    サブシステム境界に交差する Goto ブロックまたは From ブロック

    サブシステム境界に交差する、対応する Goto ブロックを持つ From ブロックを Inport ブロックで置き換えます。

    サブシステム境界に交差する、対応する From ブロックを持つ各 Goto ブロックを Outport ブロックで置き換えます。

    Inport ブロックと Outport ブロックを対応するサブシステム端子に接続します。

    データ ストア

    Data Store Read ブロックまたは Data Store Write ブロックによってサブシステムの外部からアクセスされる Data Store Memory ブロック

    Data Store Memory ブロックをグローバル データ ストアで置き換えます。グローバル データ ストアを Simulink.Signal オブジェクトで定義します。詳細については、信号オブジェクトを使用したデータ ストアを参照してください。

    調整可能なパラメーター

    [コンフィギュレーション パラメーター][コード生成][最適化][構成] ボタンを使用して開いたダイアログ ボックスの調整可能なグローバル パラメーター

    調整可能な各パラメーターに対して Simulink.Parameter オブジェクトを作成するには、tunablevars2parameterobjects を使用します。

    Simulink.Parameter オブジェクトには Auto 以外のストレージ クラスがなければなりません。

    詳細については、再利用可能な参照モデルのインスタンスのパラメーター化調整可能なパラメーターを参照してください。

  3. Subsystem ブロックの内容を設定します。

    サブシステムの構成探すものモデルの変更
    ブロックの実行順序

    含まれているブロックを連続的に実行することを強制しないバーチャル サブシステム。

    Subsystem ブロックを選択し、[Subsystem ブロック] タブで [アトミックにする] を選択します。

    関数の呼び出し

    バーチャル サブシステム境界に交差する関数呼び出し信号

    変換するサブシステムに Function-Call Generator ブロックを移動します。

    メモ

    エクスポート関数サブシステムを変換する場合、Function-Call Generator ブロックを移動する必要はありません。

    関数呼び出し出力

    関数呼び出し出力をデータ トリガーに変更します。

    幅の広い関数呼び出し端子

    Function-Call Subsystem 用の幅の広い信号を削除します。

    サンプル時間

    Inport ブロックを駆動するブロックのサンプル時間に一致しない Inport ブロックのサンプル時間。

    適切な場所に Rate Transition ブロックを挿入します。

    Inport ブロック

    マージした Inport ブロック

    マージした Inport ブロックを避けるようにモデルを設定します。Merge ブロックのドキュメンテーションを参照してください。

    Constant ブロック

    サブシステムに入力を提供する Constant ブロック

    Constant ブロックをサブシステムに移動します。

    バス

    サブシステムの入出力バス

    サブシステムの内部にあるブロックに対して、信号名とバス要素名を一致させます。

    バス要素名と一致しない信号名を見つけるには、[信号ラベルの不一致] 診断を使用します。

    バス内の信号名の複製

    バス要素の信号名は一意にします。

    有効な MATLAB® 識別子ではない信号名。有効な識別子は、以下の条件を満たす文字ベクトルです。

    • 名前に文字、数字またはアンダースコアを含む。

    • 文字列の先頭が文字。

    • 名前の長さが関数 namelengthmax で返される値以下。

    無効な信号名を有効な MATLAB 識別子に変更します。

  4. 変換するサブシステムを含むモデルが正常にコンパイルされることを確認してください。

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

サブシステムを参照モデルに変換するには、以下を行います。

  1. 変換する Subsystem ブロックを選択します。

  2. Simulink ツールストリップの [Subsystem ブロック] タブで、[変換][Model ブロック] を選択します。

    モデル参照変換アドバイザーが開き、ここで変換パラメーターを対話的に指定し、アドバイザーが検出した問題を修正できます。

変換プロセスを高速化するには、以下を行います。

  • モデル参照変換アドバイザーで、[自動的にエラーを修正 (可能な場合)] を選択する。このオプションでは、いくつかの変換の問題が自動的に修正されますが、その修正を制御することはできません。

  • 変換を開始する前に、開いている Scope ブロック ウィンドウを閉じる。

Subsystem ブロックをそのままにして、Subsystem ブロックの内容から別のモデルを作成するには、[サブシステムの内容を Model ブロックに置換] をオフにします。

変換前後の最上位モデルのシミュレーション結果を比較するには、以下を行います。

  • 対象の出力信号に対して信号のログを有効にする。

  • [変換後にシミュレーション結果をチェック] および [サブシステムの内容を Model ブロックに置換] を選択する。

  • [終了時間][絶対許容誤差]、および [相対許容誤差] を設定する。

  • アドバイザーの [Model ブロック シミュレーション モード] オプションを元のモデルと同じシミュレーション モードに設定する。

変換の設定後、[変換] をクリックし、特定された問題に対処します。

または、MATLAB コマンド ウィンドウで関数 Simulink.SubSystem.convertToModelReference を使用します。1 つの Simulink.SubSystem.convertToModelReference コマンドを使用して複数の Subsystem ブロックを変換できます。ただし、親サブシステムとそのサブシステムの子を同時に変換することはできません。

変換結果

すべての変換チェックにパスした後で、Simulink は以下を行います。

  • サブシステムから参照モデルが作成されます。

  • 参照モデルに必要な Simulink.Bus オブジェクト、Simulink.Signal オブジェクトおよび調整可能なパラメーターが作成されます。

  • 既定では、新しいモデルを参照する Model ブロックによって Subsystem ブロックが置き換えられます。

  • 自動修正によって端子が Model ブロック インターフェイスに追加された場合、Subsystem ブロックに Model ブロックが挿入されます。

  • slprj フォルダーに HTML 変換概要レポートが作成されます。このレポートには、アドバイザーが実行した修正結果を含む、変換プロセスの結果がまとめられています。このレポートでは、コピーする要素についても説明しています。

  • オプションで、変換前後のシミュレーション結果の整合性をチェックします。

Simulink は、以下の要素を元のモデルから、新たに作成した参照モデルにコピーします。

  • コンフィギュレーション セット — 親モデルで以下を使用する場合

    • 参照されるコンフィギュレーション セットではないコンフィギュレーション セット。アドバイザーはコンフィギュレーション セット全体を参照モデルにコピーします。

    • 参照されるコンフィギュレーション セット。親モデルと参照モデルはどちらも同じ参照されるコンフィギュレーション セットを使用します。

  • 変数 — アドバイザーは、元のモデルでサブシステムが使用していたモデル ワークスペース変数のみを、参照モデルのモデル ワークスペースにコピーします。サブシステムを含むモデルがデータ ディクショナリを使用している場合は、参照モデルも同じデータ ディクショナリを使用します。

  • 要件リンク — アドバイザーは Requirements Toolbox™ ソフトウェアで作成された要件リンクを元の Subsystem ブロックから Model ブロックにコピーします。

変換前後のシミュレーション結果の比較

変換を正常に完了したら、[比較結果を表示するにはここをクリック] リンクを使用します。結果がシミュレーション データ インスペクターに表示されます。緑色のチェック マークは、シミュレーション結果がベースライン モデルと新しい参照モデルを含むモデル間の許容誤差内にあることを示します。

Simulation Data Inspector with four simulation results that are within tolerance

詳細については、シミュレーション データの比較を参照してください。

変換を元に戻す

変換結果に満足しない場合、モデルを初期の状態に戻すことができます。次のいずれかの方法を使用します。

  • 変換時のいずれかの時点で、[ファイル][復元ポイントの読み込み] を選択する。

  • [変換を完了] チェックを正常に実行した後に、[元のモデルを復元するにはここをクリック] リンクを使用します。

親モデルへの参照モデルの統合

変換が完了した後、必要に応じてモデル化要件に合わせてモデルを更新します。たとえば、Subsystem ブロックを、作成された参照モデルを参照する Model ブロックに手動で置き換えることができます。

外部データを含むモデルをシミュレートする場合は、新しい参照モデルのルート Inport ブロックの [データを内挿する] パラメーター設定が適切であるか確認します。Inport ブロックの [データを内挿する] パラメーターに関するドキュメンテーションを参照してください。

参考

関連するトピック