Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Stateflow を含む Simulink モデルの比較とマージ

この例では、MATLAB® の比較レポートを使用して 2 つの異なる設計間の変更された部分を把握する方法を示します。これは、Stateflow® を含む 2 つの Simulink® モデルの変更箇所を比較レポートで確認してマージする方法を示します。この例を実行するには、Stateflow ライセンスが必要です。

モデルの比較

例のファイルの作業コピーを作成します。MATLAB® により、ファイルがサンプル フォルダーにコピーされ、編集できるようになります。

slcomparisons.examples.stateflowMerge;

ユーザーが新しい kickdown モードを shift_logic に追加しました。Simulink モデルの比較を使用して 2 つのモデルを比較し、相違点を検証してマージするためのレポートを生成します。

visdiff を使用して sl_sfcar_1 and sl_sfcar_2 モデルを比較します。

visdiff('sl_sfcar_1', 'sl_sfcar_2');

結果の理解

比較ツールは、モデルの階層構造全体ではなく、2 つのモデル間の相違点のみを含むレポートを示します。

項目が変更されているか (紫色)、挿入されているか (青色)、削除されているか (黄色) を色で示します。

相違点間の移動

[比較] タブの [次へ][前へ] ナビゲーション ボタンを使用して、レポート内で変更のグループを順に確認します。

  • レポートは変更を 1 つずつ表します。[左] のツリーで選択した項目に一致がある場合、[右] のツリーでも選択されます。

  • MATLAB で、両方のモデルがレポートの横に表示されます。レポートでは、可能な場合に両方の Simulink モデルで選択した項目が強調表示されます。

Simulink モデルでの相違点の強調表示

[右] のツリーでツリー ノード Out1 を選択します。レポートで強調表示されている Out1 と、モデル sl_sfcar_2 で対応するブロックを確認します。

モデル内での強調表示を制御するには、[比較] タブの [強調表示] セクションで、[常に強調表示] チェック ボックスをオンまたはオフにします。[今すぐ強調表示] ボタンをクリックすると、現在選択されているレポート ノードをいつでも強調表示できます。

Stateflow チャートでの相違点の強調表示

ツリーを上から表示し、レポートの Stateflow チャートを特定します。shift_logic ノードの隣にある Stateflow チャート アイコンを確認します。[右] のツリーで kickdown をクリックします。レポートには両方の shift_logic Stateflow チャートが表示されます。新しい kickdown 機能が一方のチャートに追加されていることを確認します。

結果のフィルター処理

フィルターを適用して、比較レポートに表示される変更のタイプを制御できます。利用可能なフィルターと現在のレポートに適用されているかどうかを確認するには、[比較] タブの [フィルター] セクションで下矢印をクリックしてフィルター ギャラリーを展開します。フィルター名をクリックして、適用するかどうかを切り替えます。[フィルター] セクションで、[表示] または [非表示] をクリックして、フィルターを適用する方法を制御します。

たとえば、Simulink モデル ファイルの一部の情報は機能以外であると定義されています。これらは、設計の動作を変更する可能性が低い変更です。機能以外の項目は既定では非表示になっています。[非表示] フィルター ボタンが選択されているときは [機能以外の変更] ボタンの選択を解除すると表示できます。

Stateflow を含むモデルでの変更のマージ

ツールストリップの [マージ モード] ボタンをクリックして、2 つの Simulink と Stateflow モデル間の変更をマージできます。これにより 3 番目のファイル targetFile が作成され、このファイルには左側のモデルまたは右側のモデルのどちらかの変更が含まれます。[ターゲット] ツリーのボタンを使用して、targetFile 内で保持する差分を選択します。

[ファイルの保存] ボタンをクリックして右側のモデル (sl_sfcar_2) で選択した変更を保存します。

マージ操作のヒント

レポートの Simulink 部分では、ラインをマージする前にブロックをマージしなければなりません。遷移をマージする前にステートとジャンクションをマージしなければなりません。これを行わないと、レポートで接続を行うことができなくなります。

名前が同じモデルをマージする場合の詳細については、同じ名前のモデルの比較を参照してください。

参考

visdiff

詳細情報

Simulink モデルの比較

同じ名前のモデルの比較

関連する例

Simulink モデルの比較とマージ

Simulink 3-way マージを使用した競合の解決