Можно использовать инструмент Model Transformer, чтобы улучшить удобочитаемость модели, заменяя 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, в подсистеме, инструмент Еще может также добавить блок подсистемы.
Инструмент 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.
Откройте модель ex_data_store_elimination
. В командной строке MATLAB®, введите:
addpath(fullfile(docroot,'toolbox','simulink','examples')) ex_data_store_elimination
Сохраните модель в свою рабочую папку.
В Редакторе Simulink, в меню Analysis, выбирают Refactor Model > Model Transformer. Чтобы открыть Трансформатор Модели программно, в командной строке MATLAB, вводят эту команду: mdltransformer('ex_data_store_replacement')
.
В папке Transformations выберите проверку Eliminate data store blocks.
В поле Prefix of refactored model задайте префикс для пересмотренной модели.
Нажмите кнопку Run This Check. Главная таблица Result содержит гиперссылки на блоки Data Store Memory и соответствующий Data Store Read и блоки Data Store Write, которые имеют право на устранение.
Нажмите кнопку 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
.
Трансформатор Модели не заменяет блоки Чтения и Записи Хранилища данных, которые удовлетворяют этим условиям:
Они пересекают контуры условно выполняемых подсистем такой как Enabled, Инициированные, или Подсистемы вызова функций и диаграммы Stateflow.
Они не завершают взаимоисключающие ветви подсистем Если-действия.
Они пересекают контуры вариантов.
У них есть больше чем один ввод или вывод.
Они получают доступ к части массива.
Они выполняются на различных уровнях.
Они - внутренние различные экземпляры подсистем библиотеки и имеют различный относительный порядок выполнения.