Main Content

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

ローカル データ ストア ブロックの削除によるモデルの可読性の改善

モデル トランスフォーマー ツールを使用すると、Data Store Memory ブロック、Data Store Read ブロックおよび Data Store Write ブロックを直結信号線、Delay ブロックまたは Merge ブロックに置き換えることにより、モデルの可読性を改善できます。バス信号の場合、ツールによる置き換えの一環として Bus Creator ブロックまたは Bus Selector ブロックが追加されることもあります。これらのブロックを置き換えると、データの依存関係が明示的になるため、モデルの可読性が改善されます。モデル トランスフォーマーは、これらの置換を使用してモデルを作成します。新しいモデルの機能は既存のモデルと同じです。

モデル トランスフォーマーは、次のデータ ストアを置き換えることができます。

  • バス以外の信号について、Data Store Read ブロックが Data Store Write ブロックより前に実行される場合、ツールによりこれらのブロックは Delay ブロックに置き換えられます。

  • バス以外の信号について、Data Store Write ブロックが Data Store Read ブロックより前に実行される場合、これらのブロックは直接接続に置き換えられます。

  • バス信号について、バス要素への書き込みがバスの読み取りより前に実行される場合、Data Store Read ブロックと Data Store Write ブロックは直接接続と Bus Creator ブロックに置き換えられます。

  • バス信号について、バスへの書き込みがバス要素の読み取りより前に実行される場合、Data Store Read ブロックと Data Store Write ブロックは直接接続と Bus Selector ブロックに置き換えられます。

  • 条件付き実行サブシステムの場合、Data Store Read ブロックと Data Store Write ブロックは直接接続と Merge ブロックに置き換えられます。読み取り/書き込みのペアが If サブシステムの境界を越え、かつ Write ブロックがサブシステム内にあるモデルの場合、Else Subsystem ブロックが追加されることもあります。

モデル トランスフォーマー ツールは、Data Store Memory ブロックが定義するローカル データ ストアのみを削除します。このツールはグローバル データ ストアを削除しません。Data Store Memory ブロックの場合は、ブロック パラメーターのダイアログ ボックスの [信号属性] タブで、[データ ストア名を Simulink の信号オブジェクトに関連付ける] パラメーターをオフにしなければなりません。

モデル例

モデル ex_data_store_elimination には、BA の 2 つのローカル データ ストアが含まれています。データ ストア B には、2 つの Data Store Read ブロックと 1 つの Data Store Write ブロックがあります。データ ストア A には、1 つの Data Store Write ブロックと 1 つの Data Store Read ブロックがあります。赤の数字はソートされた実行順序を表します。

データ ストア ブロックの置き換え

置き換えの条件を満たすデータ ストア ブロックを特定します。次に、これらのブロックを直結信号線、Delay ブロックまたは Merge ブロックに置き換えるモデルを作成します。

  1. モデル ex_data_store_elimination を開きます。MATLAB® コマンド ラインで以下のように入力します。

    addpath(fullfile(docroot,'toolbox','simulink','examples'))
    ex_data_store_elimination

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

  3. [アプリ] タブで、[モデル トランスフォーマー] をクリックします。または、MATLAB コマンド プロンプトで次のコマンドを入力します。

    mdltransformer('ex_data_store_elimination')

  4. [変換] フォルダーで、[データ ストア ブロックを削除] チェックを選択します。

  5. [リファクタされたモデルの接頭辞] フィールドで、リファクタリングされたモデルの接頭辞を指定します。

  6. [このチェックを実行] ボタンをクリックします。上部の [結果] テーブルには、Data Store Memory ブロックと、それに対応し削除条件を満たす Data Store Read ブロックおよび Data Store Write ブロックへの各ハイパーリンクが含まれています。

  7. [モデルのリファクタリング] ボタンをクリックします。下部の [結果] テーブルには、新しいモデルへのハイパーリンクが含まれています。ツールによって m2m_ex_data_store_replacement フォルダーが作成されます。このフォルダーには gen_ex_data_store_replacement.slx モデルが含まれています。

ローカル データ ストア A の場合、gen_ex_bus_struct_in_code.slx には、Data Store Write ブロックの代わりに Delay ブロックが、Data Store Read ブロックの代わりに直接信号接続が含まれています。ローカル データ ストア B の場合、gen_ex_bus_struct_in_code.slx には、Bias ブロックから Out2 への直接信号接続が含まれています。

制限

モデル トランスフォーマーは、次の条件を満たす Data Store Read ブロックおよび Data Store Write ブロックを置き換えません。

  • Enabled Subsystem、Triggered Subsystem、Function-Call Subsystem などの条件付き実行サブシステムの境界および Stateflow チャートの境界を越えている。

  • If-Action Subsystem の相互排他的な分岐を完成しない。

  • バリアントの境界を越えている。

  • 複数の入力または出力がある。

  • 配列の一部にアクセスする。

  • 実行レートが異なる。

  • ライブラリ サブシステムの異なるインスタンス内に存在し、相対的な実行順序が異なる。

関連するトピック