Main Content

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

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

変換するサブシステムには、ブロックを機能的にグループ化する Atomic な動作が必要です。サブシステム内のブロックは連続して実行され、親モデルの実行時に単一のブロック (アトミック単位) のように動作する必要があります。詳細については、サブシステムが Atomic かどうかの指定を参照してください。Atomic な動作により、疑似代数ループが生じる可能性があります。詳細については、代数ループの概念を参照してください。

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

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

ソフトウェアで変換中にいくつかの問題を自動的に修正できます。元の設計意図を尊重するため、自動修正では、手動で適用できるものよりもクリーンでないソリューションが適用されることがあります。たとえば、ソフトウェアは Model ブロックをサブシステムに配置したり、追加のブロックを使用したり、信号名にかっこを追加したりする場合があります。

変換用にサブシステムを準備するには、以下のようにします。

  1. サブシステムが Atomic な動作を行うようにするには、Subsystem ブロックを選択します。Simulink ツールストリップの [Subsystem ブロック] タブで [アトミックにする] を選択します。

  2. Atomic な動作によって生じる疑似代数ループを最小限にするには、Subsystem ブロックを選択します。プロパティ インスペクターで、[代数ループの発生の最小化] を選択します。

    メモ

    プロパティ インスペクターを開くには、Simulink ツールストリップの [モデル化] タブにある [設計] ギャラリーで [プロパティ インスペクター] を選択します。あるいは、Ctrl+Shift+I を押します。

  3. Simulink.Signal オブジェクトへの暗黙的な信号の関連付けを回避するには、親モデル設定を構成します。コンフィギュレーション パラメーターの [信号の関連付け][明示的のみ] (既定の設定) または [なし] に設定します。

    メモ

    [コンフィギュレーション パラメーター] ダイアログ ボックスを開くには、Simulink エディターの [モデル化] タブで、次のいずれかのアクションを実行します。

    • 親モデルが最上位モデルの場合は、[モデル設定] をクリックします。

    • 親モデルが参照モデルの場合は、[モデル設定] ボタンの矢印をクリックします。その後、[参照モデル] セクションで [モデル設定] をクリックします。

  4. 該当する場合は、下表の変換の問題を修正します。

    変換の問題手動修正

    Function-Call Generator ブロックが、エクスポート関数サブシステムではないサブシステムに入力を提供する。

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

    ワイド (非スカラー) 関数呼び出し信号がサブシステムの関数呼び出し入力端子に入力される。

    代わりに、スカラー関数呼び出し信号を使用してサブシステムをトリガーします。

    関数呼び出し信号がサブシステムの出力である。

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

    Merge ブロックで、サブシステムの入力端子からの信号を結合している。

    Merge ブロックを回避するようにサブシステムを構成します。

    バス要素の名前が重複している。

    要素に一意の名前を割り当てます。

    Goto ブロックが、サブシステムの外側にある From ブロックに入力を渡している。

    問題のある各 Goto ブロックを Outport ブロックに置き換えます。その後、新しいサブシステムの出力端子を親システムのブロックに接続します。

    From ブロックが、サブシステムの外側にある Goto ブロックから入力を受け取っている。

    問題のある各 From ブロックを Inport ブロックに置き換えます。From ブロックが同じタグをもっている場合、From ブロックごとに一意の Inport ブロックを追加するのではなく、最初の From ブロックを置き換える Inport ブロックを複製します。詳細については、重複する Inport ブロックの作成を参照してください。その後、新しいサブシステムの入力端子を親システムのブロックに接続します。

    サブシステムが、[既定のパラメーター動作] (Simulink Coder) コンフィギュレーション パラメーターの横にある [構成] ボタンをクリックすると開くダイアログ ボックスで指定されたグローバルな調整可能なパラメーターを使用している。

    調整可能な各パラメーターに対して Simulink.Parameter オブジェクトを作成するには、tunablevars2parameterobjects を使用します。各 Simulink.Parameter オブジェクトには Auto 以外のストレージ クラスがなければなりません。詳細については、再利用可能な参照モデルのインスタンスのパラメーター化調整可能なパラメーターを参照してください。

    サンプル時間が、入力端子を表すブロックと入力端子を駆動するブロックで異なっている。

    2 つのサンプル時間の一方を変更して他方と一致させるか、Rate Transition ブロックを挿入します。

    入力端子でのサンプル時間が一定である。

    サンプル時間が一定になっている各ソース ブロックをサブシステムに移動します。たとえば、Constant ブロックをサブシステムに移動します。

  5. モデルをコンパイルし、エラーがあれば解決します。

    変換を成功させるには、サブシステムを含むモデルが正常にコンパイルされる必要があります。

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

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

  1. 変換プロセスを高速化するには、Scope ブロック ウィンドウを閉じます。

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

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

  4. 一部の変換の問題を自動的に修正するには、モデル参照変換アドバイザーで、[自動的にエラーを修正 (可能な場合)] を選択します。自動修正は制御しません。

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

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

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

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

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

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

  7. 必要に応じて、追加の変換パラメーターを構成します。詳細については、モデル参照変換アドバイザーを参照してください。

  8. [変換] をクリックします。

  9. 特定された問題に対処します。

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

変換結果

すべての変換チェックにパスしたら、以下が行われます。

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

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

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

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

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

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

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

  • コンフィギュレーション セット — 親モデルが参照コンフィギュレーション セットを使用している場合、親モデルと参照モデルはどちらも同じ参照コンフィギュレーション セットを使用します。それ以外の場合、アドバイザーにより、コンフィギュレーション セット全体が参照モデルにコピーされます。

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

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

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

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

Simulation Data Inspector with four simulation results that are within tolerance

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

変換を元に戻す

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

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

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

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

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

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

参考

|

関連するトピック