Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

モデルをバリアント システムに変換

モデル トランスフォーマー ツールを使用すると、条件を満たすモデル化パターンを Variant Source ブロックとバリアント サブシステム、バリアント モデルブロックに置き換えることにより、モデルのコンポーネント化を改善できます。モデル トランスフォーマーは、条件を満たすモデル化パターンをレポートします。どのモデル化パターンを Variant Source ブロックまたは Variant Subsystem ブロックに置き換えるかを選択します。

モデル トランスフォーマーでは、以下の変換を実行できます。

  • 1 つの If ブロックが 1 つ以上の If Action Subsystem に接続し、それぞれに出力端子が 1 つずつある場合は、このモデル化パターンを 1 つのサブシステムと 1 つの Variant Source ブロックに置き換えます。

  • 1 つの If ブロックが、出力端子がない、または出力端子が 2 つ以上ある 1 つの If Action Subsystem に接続する場合は、このモデル化パターンを 1 つの Variant Subsystem ブロックに置き換えます。

  • 1 つの Switch Case ブロックが 1 つ以上の Switch Case Action Subsystem に接続し、それぞれに出力端子が 1 つずつある場合は、このモデル化パターンを 1 つのサブシステムと 1 つの Variant Source ブロックに置き換えます。

  • 1 つの Switch Case ブロックが、出力端子がない、または出力端子が 2 つ以上ある 1 つの Switch Case Action Subsystem に接続する場合は、このモデル化パターンを 1 つの Variant Subsystem ブロックに置き換えます。

  • 1 つの Switch ブロックを 1 つの Variant Source に置き換えます。

  • データ端子が 2 つ以上ある 1 つの Multiport Switch ブロックを 1 つの Variant Source ブロックに置き換えます。

モデル トランスフォーマー ツールで変換を実行するには、Multiport Switch ブロックまたは Switch ブロックへの制御入力と、If ブロックまたは Switch Case ブロックへの入力が、以下のいずれかでなければなりません。

  • [定数値] パラメーターがスカラー型の Simulink.Parameter オブジェクトである Constant ブロック。

  • [定数値] パラメーターがスカラー型の Simulink.Parameter オブジェクトである Constant ブロック、およびサポートされている MATLAB 式を形成するその他のブロックの組み合わせ。バリアント条件式の演算子とオペランドにある MATLAB 式は、ビット演算以外ではサポートされます。

モデル例

この例では、モデル トランスフォーマーを使用してモデルをバリアント システムに変換する方法を説明します。この例では、モデル rtwdemo_controlflow_opt を使用します。このモデルには 3 つの Switch ブロックがあります。これらの Switch ブロックへの制御入力は Simulink.Parameter cond です。[モデル トランスフォーマー] ダイアログ ボックスおよびこの例は、システム定数として cond を参照します。

  1. モデルを開きます。コマンド ウィンドウで rtwdemo_controlflow_opt と入力します。

  2. Switch1 の [ブロック パラメーター] ダイアログ ボックスを開きます。[しきい値] パラメーターを 0 に変更します。[しきい値] パラメーターは整数でなければなりません。バリアント変換後に、Variant Source ブロックの条件式の一部となるためです。

  3. Switch ブロック Switch1Switch2 および Switch3 で手順 2 を繰り返します。

  4. モデルを作業フォルダーに保存します。

モデル例でのバリアント変換の実行

  1. [アプリ] タブで、[モデル トランスフォーマー] を選択してモデル トランスフォーマーを開きます。または、コマンド ウィンドウで
    mdltransformer('rtwdemo_controlflow_opt') と入力します。

  2. チェックReplace Modeling Patterns with Variant Blocksを選択します。

  3. [システム定数 cell 配列の指定] フィールドでは、Simulink.Parameters で構成される文字ベクトルの cell 配列を指定できます。ベース ワークスペースにはそれらの定義が含まれていなければなりません。

  4. [変換後のモデル名の接頭辞] フィールドで、モデル名の接頭辞を指定します。接頭辞を指定しない場合の既定の設定は gen0 です。

  5. [このチェックを実行] を選択します。モデル トランスフォーマーに、Variant Source ブロックまたは Variant Subsystem ブロックの条件式の構成に適格なシステム定数およびブロックがリストされます。モデル トランスフォーマーでシステム定数のリストを表示するには、スカラー型の Simulink.Parameter オブジェクトでなければなりません。この例の場合は、Cond が条件式の一部となる条件を満たします。

  6. いずれかの変換を実行しない場合は、該当するチェック ボックスをオフにします。

  7. [モデルのリファクタリング] を選択します。モデル トランスフォーマーに、変換後のモデルへのハイパーリンクと、元のモデルおよび変換後のモデルの対応するブロックへのハイパーリンクが表示されます。

    変換後のモデルは、元のモデル名に接頭辞 m2m が付いたフォルダー内にあります。この例では、フォルダー名は m2m_rtwdemo_controlflow_opt です。

  8. 元のモデル rtwdemo_controlflow_opt で、いずれか 1 つの Switch ブロックを右クリックします。メニューで、[モデル トランスフォーマー][変換後のブロックへのトレーサビリティ] を選択します。変換後のモデル gen0_rtwdemo_controlflow_opt で、対応する Variant Source ブロックが強調表示されます。

  9. 変換後のモデル gen0_rtwdemo_controlflow_opt で、いずれか 1 つの Switch ブロックを右クリックします。メニューで、[モデル トランスフォーマー][オリジナル ブロックへのトレーサビリティ] を選択します。元のモデル rtwdemo_controlflow_opt で、対応する Switch ブロックが強調表示されます。

モデル変換の制限

モデル トランスフォーマー ツールには以下の制限があります。

  • モデル トランスフォーマーをモデルで実行するには、モデルをシミュレートできなければなりません。

  • If Action Subsystem ブロックが Merge ブロックを駆動し、Merge ブロックのもう 1 つの入力端子が未接続であるか、別の条件付きサブシステムによって駆動されている場合、モデル トランスフォーマーは Variant Source ブロックを追加しません。このモデル化パターンでは、警告と除外候補のメッセージが表示されます。

  • モデル トランスフォーマーは、すべてのモデル化パターンに対してバリアント変換を実行できるわけではありません。次の場合は例外になります。

    • 保護されたモデル参照ブロックがモデルに含まれている場合。

    • [バリアントのアクティベーションのタイミング] パラメーターが update diagram に設定された Variant Source ブロックがモデルに含まれている場合。

  • 1 つ以上のタスクを実行した後は、[このタスクを実行] ボタンと [すべて実行] ボタンが非アクティブになるため、タスクを再実行できません。タスクを再実行する場合は、[モデル トランスフォーマー] を右クリックし、Reset を選択して、モデル トランスフォーマーをリセットします。

  • 変換中は、モデルを変更しないでください。モデルを変更する場合は、[モデル トランスフォーマー] を閉じ、モデルを変更してから、[モデル トランスフォーマー] を再度開きます。

  • モデル トランスフォーマー内のハイパーリンクを機能させるには、リンク先のモデルを開いておかなければなりません。

関連するトピック