Улучшите читаемость модели, исключив блоки локального хранилища данных

Можно использовать инструмент Model Transformer для улучшения читаемости модели путем замены блоков Data Store Memory, Data Store Read и Data Store Write линией прямого сигнала, блоком Delay или блоком Merge. Для сигналов шины инструмент может также добавить Bus Creator или Bus Selector блоков в качестве части замены. Замена этих блоков улучшает читаемость модели, делая зависимость данных явной. Model Transformer создает модель с этими заменами. Новая модель имеет ту же функциональность, что и существующая модель.

Модельный трансформатор может заменить эти хранилища данных:

  • Для сигналов, которые не являются шинами, если блок 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.

Инструмент Model Transformer устраняет только локальные хранилища данных, которые задают Data Store Memory блоки. Инструмент не устраняет глобальных данных хранилища. Для блока Data Store Memory на вкладке Signal Attributes в диалоговом окне параметров блоков необходимо очистить параметр Data store name must resolve to Simulink signal object.

Пример модели

Модель ex_data_store_elimination содержит два локальных хранилища данных: B и A. Для B хранилища данных, существует два блока Data Store Read и один блок Data Store Write. Для A хранилища данных, существует один Data Store Write блок и один Data Store Read блок. Красные номера представляют отсортированный порядок выполнения.

Замените блоки хранилища данных

Идентифицируйте блоки хранилища данных, которые могут быть заменены. Затем создайте модель, которая заменяет эти блоки прямыми сигнальными линиями, Delay блоками или Merge блоками.

  1. Откройте модель ex_data_store_elimination. В MATLAB® в командной строке введите:

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

  2. Сохраните модель в рабочей папке.

  3. На вкладке Apps нажмите Model Transformer. Кроме того, в командной строке MATLAB введите эту команду:

    mdltransformer('ex_data_store_elimination')
    .

  4. В папке Transformations выберите проверку Eliminate data store blocks.

  5. В поле Prefix of refactored model укажите префикс для рефакторной модели.

  6. Нажмите кнопку Run This Check. Верхняя таблица Result содержит гиперссылки на блоки Data Store Memory и соответствующие блоки Data Store Read и Data Store Write, которые имеют право на удаление.

  7. Нажмите кнопку Refactor Model. Нижняя Result таблица содержит гиперссылку на новую модель. Инструмент создает m2m_ex_data_store_replacement папка. Эта папка содержит gen_ex_data_store_replacement.slx модель.

Для локального хранилища данных A, gen_ex_bus_struct_in_code.slx содержит блок Delay вместо блока Data Store Write и прямое сигнальное соединение вместо блока Data Store Read. Для локального хранилища данных B, gen_ex_bus_struct_in_code.slx содержит прямое сигнальное соединение от блока Bias к Out2.

Ограничения

Model Transformer не заменяет блоки Data Store Read и Write, которые отвечают следующим условиям:

  • Они пересекают контуры условно выполненных подсистем, таких как Enabled, Triggered или Function-Call и Диаграммы Stateflow.

  • Они не заполняют взаимоисключающие ветви подсистем If-Action.

  • Они пересекают контуры вариантов.

  • Они имеют несколько входов или выходов.

  • Они получают доступ к части массива.

  • Они выполняются с различными скоростями.

  • Они находятся внутри различных образцов библиотечных подсистем и имеют другой относительный порядок выполнения.

Похожие темы