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.Parametercondです。[モデル トランスフォーマー] ダイアログ ボックスおよびこの例は、システム定数として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ブロックを追加しません。このモデル化パターンでは、警告と除外候補のメッセージが表示されます。

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

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

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

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

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

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

関連するトピック