このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
モデルをバリアント システムに変換
モデル トランスフォーマー ツールを使用すると、条件を満たすモデル化パターンを Variant Source ブロックとVariant Subsystem, Variant Model, Variant Assembly Subsystemブロックに置き換えることにより、モデルのコンポーネント化を改善できます。モデル トランスフォーマーは、条件を満たすモデル化パターンをレポートします。どのモデル化パターンを 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 式を形成するその他のブロックの組み合わせ。Types of Operators in Variant Blocks for Different Activation Timesにある MATLAB 式は、ビット演算以外ではサポートされます。
モデル トランスフォーマーを使用したバリアント システムへのモデルの変換
この例では、"モデル トランスフォーマー" アプリを使用してモデルをバリアント システムに変換する方法を説明します。この例では、モデル ControlFlowOptimization
を使用します。このモデルには 3 つの Switch ブロックがあります。これらの Switch ブロックへの制御入力は Simulink.Parameter cond
です。[モデル トランスフォーマー] ダイアログ ボックスおよびこの例は、システム定数として cond
を参照します。
モデル
ControlFlowOptimization.
を開きます。Switch1
の [ブロック パラメーター] ダイアログ ボックスを開きます。[しきい値] パラメーターを0
に変更します。[しきい値] パラメーターは整数でなければなりません。バリアント変換後に、Variant Source ブロックの条件式の一部となるためです。Switch ブロック
Switch1
、Switch2
およびSwitch3
で手順 2 を繰り返します。モデルを作業フォルダーに保存します。
モデル例でのバリアント変換の実行
[アプリ] タブで、[モデル トランスフォーマー] を選択してモデル トランスフォーマーを開きます。または、コマンド ウィンドウで次を入力します。
mdltransformer('ControlFlowOptimization')
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_ControlFlowOptimization
です。
8.元のモデル ControlFlowOptimization
で、いずれか 1 つの Switch ブロックを右クリックします。メニューで、[モデル トランスフォーマー]、[変換後のブロックへのトレーサビリティ] を選択します。変換後のモデル gen0_ControlFlowOptimization
で、対応する Variant Source ブロックが強調表示されます。
9.変換後のモデル gen0_ControlFlowOptimization
で、いずれか 1 つの Switch ブロックを右クリックします。メニューで、[モデル トランスフォーマー]、[オリジナル ブロックへのトレーサビリティ] を選択します。元のモデル ControlFlowOptimization
で、対応する Switch ブロックが強調表示されます。
モデル変換の制限
モデル トランスフォーマー ツールには以下の制限があります。
モデル トランスフォーマーをモデルで実行するには、モデルをシミュレートできなければなりません。
If Action Subsystem ブロックが Merge ブロックを駆動し、Merge ブロックのもう 1 つの入力端子が未接続であるか、別の条件付きサブシステムによって駆動されている場合、モデル トランスフォーマーは Variant Source ブロックを追加しません。このモデル化パターンでは、警告と除外候補のメッセージが表示されます。
モデル トランスフォーマーは、すべてのモデル化パターンに対してバリアント変換を実行できるわけではありません。次の場合は例外になります。
保護モデルを参照する Model ブロックがモデルに含まれている場合。
[バリアントのアクティベーションのタイミング] パラメーターが
update diagram
に設定された Variant Source ブロックがモデルに含まれている場合。
1 つ以上のタスクを実行した後は、[このチェックを実行] ボタンと [すべて実行] ボタンが非アクティブになるため、タスクを再実行できません。タスクを再実行する場合は、[モデル トランスフォーマー] を右クリックし、
Reset
を選択して、モデル トランスフォーマーをリセットします。変換中は、モデルを変更しないでください。モデルを変更する場合は、[モデル トランスフォーマー] を閉じ、モデルを変更してから、[モデル トランスフォーマー] を再度開きます。
モデル トランスフォーマー内のハイパーリンクを機能させるには、リンク先のモデルを開いておかなければなりません。