Включите повторное использование компонента при помощи обнаружения клонов

Клоны моделируют шаблоны, которые имеют идентичные типы блока и связи. Инструмент Identify Modeling Clones идентифицирует клоны через образцовые контуры, на которые ссылаются. Можно использовать инструмент Identify Modeling Clones, чтобы включить повторное использование компонента путем создания блоков библиотеки от клонов подсистемы и заменяющий клоны на ссылки на те блоки библиотеки. Можно также использовать инструмент, чтобы соединиться с клонами в существующей библиотеке.

Чтобы открыть инструмент, в Редакторе Simulink, выбирают Analysis> Refactor Model> Identify Modeling Clones.

Точные клоны по сравнению с подобными клонами

Существует два типа клонов: точные клоны и подобные клоны. Точные клоны имеют идентичные типы блока, связи и значения параметров. Подобные клоны имеют идентичные типы блока и связи, но у них могут быть различные значения параметров блоков. Например, значение блока Gain может отличаться в подобных клонах, но должно быть тем же самым в точных клонах.

Точные клоны и подобные клоны могут иметь эти различия:

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

  • Длина сигнальных линий и местоположения и размера блоков может отличаться, если связи блока являются тем же самым.

  • Блоки и сигналы могут иметь различные имена.

Чтобы обнаружить только точные клоны, для каждой регистрации инструмента Identify Modeling Clones, устанавливают Maximum number of different parameters на 0 (значение по умолчанию). Увеличение этого значения параметров увеличивает число подобных клонов, которые может потенциально обнаружить инструмент.

После того, как вы идентифицируете клоны, можно заменить их на ссылки на блоки библиотеки. Подобные клоны соединяются с подсистемами библиотеки маскированными.

Идентифицируйте точные и подобные клоны

Этот пример показывает, как использовать инструмент Identify Modeling Clones, чтобы идентифицировать точные клоны и подобные клоны, и затем заменить их на ссылки на блоки библиотеки.

  1. Откройте модель ex_clone_detection и соответствующую библиотеку ex_clone_library. В командной строке MATLAB®, введите:

    addpath(fullfile(docroot,'toolbox','simulink','examples'))
    ex_clone_detection
    ex_clone_library

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

  3. В Редакторе Simulink, из меню Analysis, выбирают Refactor Model> Identify Modeling Clones. Чтобы открыть инструмент Identify Modeling Clones программно, в подсказке команды MATLAB, введите: clonedetection('ex_clone_detection').

  4. Выберите папку Replace clones with library block links. Если вы хотите выполнить все или некоторые регистрации инструмента Identify Modeling Clones, можно нажать Run Selected Checks. Выбор этой опции не осуществляет рефакторинг модель. Это только идентифицирует клоны. Этот пример берет вас посредством каждой проверки по одному.

Замените клоны блоков библиотеки со ссылками библиотеки

Идентифицируйте шаблоны моделирования, которые являются графическими клонами подсистемы библиотеки. Графические клоны могут быть в моделировании областей, которые включают неактивные варианты и прокомментированные области. Если один клон имеет ссылку на блок библиотеки, инструмент сообщает о недостающем звене для другой подсистемы или клонов подсистемы. Инструмент также сообщает о клонах, которые не имеют ссылок на блоки библиотеки. Вы выбираете, создать ли блок библиотеки и заменить клон на ссылку на тот блок библиотеки.

  1. Выберите Replace clones of library blocks with library links.

  2. В поле Library file name задайте библиотеку ex_clone_library.

  3. Оставьте значение Maximum number of different parameters как 0.

  4. Нажмите Run This Check. В главной таблице Result левый столбец содержит гиперссылки на моделирование клонов. Правый столбец содержит гиперссылки на соответствующие подсистемы библиотеки. Усиление блокирует G12, G13, и G14 и SS2 являются клонами libsubsystem.

  5. Нажмите Refactor Model.

  6. В нижней таблице Result существует сообщение, сообщающее вам, что модель была успешно пересмотрена. Кнопка Refactor Model теперь недоступна, и кнопка Undo включена.

  7. Модель теперь содержит ссылки на libsubsystem. Чтобы удалить соединенные блоки библиотеки, нажмите кнопку Undo. После того, как вы осуществите рефакторинг, можно удалить последние изменения в модели путем нажатия кнопки Undo. Каждый раз, когда вы осуществляете рефакторинг модель, инструмент создает резервную модель в папке, которая имеет префиксный m2m _plus имя модели.

Примечание

Инструмент Identify Modeling Clones идентифицирует клоны, которые подобны блокам библиотеки. Это не осуществляет рефакторинг модель, чтобы заменить подобные клоны на ссылки на блоки библиотеки.

Замените графические клоны на ссылки библиотеки

Теперь идентифицируйте графические клоны подсистемы и замените их на ссылки на блоки библиотеки. Если вы не хотите осуществлять рефакторинг модель, чтобы заменить клоны в неактивных вариантах или прокомментированных областях, можно пропустить эту проверку и вместо этого осуществить проверку Replace functional clones with library links.

  1. Выберите Replace graphical clones with library links.

  2. В поле New library file name укажите, что библиотека называет или использует имя по умолчанию.

  3. Измените значение Maximum number of different parameters на 2.

  4. Нажмите Run This Check. Главная таблица Result содержит отдельные группировки для точных и подобных клонов. Exact Clone Group 1 содержит гиперссылки на клоны подсистемы. SS1 и SS4. Similar Clone Group 1 содержит гиперссылки на SS3 и SS5. Similar Clone Group 2 содержит гиперссылки на SS6 и SS7.

  5. Кликните по символу +, чтобы показать содержимое во второй строке и втором столбце таблицы Result. SS5 имеет один блок и один параметр, который отличается от SS3. SS3 является базовым клоном для сравнения.

  6. Нажмите Refactor Model.

  7. В нижней таблице Result существует сообщение, сообщающее вам, что модель была пересмотрена. Кнопка Refactor Model теперь недоступна, и кнопка Undo включена.

  8. Для каждой группы клонов пересмотренная модель содержит ссылки на подсистемы библиотеки. Similar Clone Group 1 и Similar Clone Group 2 соединяются с подсистемами библиотеки маскированными.

Замените функциональные клоны на ссылки библиотеки

Идентифицируйте клоны функциональной подсистемы и замените их на ссылки на блоки библиотеки. Если вы хотите осуществить рефакторинг модель, чтобы заменить клоны в активных областях моделирования и неактивных вариантах и прокомментированных областях, можно пропустить эту проверку и вместо этого осуществить проверку Replace graphical clones with library links.

  1. Выберите Replace functional clones with library links.

  2. В поле New library file name задайте имя для библиотеки или используйте имя по умолчанию.

  3. Нажмите Run This Check. Главная таблица Result не приводит новые клоны, потому что шаг Replace Graphical Clones with Library Links идентифицирует функциональные клоны.

Сохраните и просмотрите отчеты обнаружения клонов

Когда инструмент Identify Modeling Clones осуществляет проверки, он генерирует отчет HTML результатов проверки. По умолчанию отчет HTML находится в папке slprj/modeladvisor/. Инструмент Identify Modeling Clones использует папку slprj в папке генерации кода, чтобы сохранить отчеты и другую информацию. Если папка slprj не существует в папке генерации кода, инструмент Identify Modeling Clones создает его.

Просмотрите отчет в Идентифицировать инструменте клонов Моделирования путем щелчка по ссылке на папке Replace clones with library block links. Сохраните отчет в новое местоположение путем нажатия кнопки Save As и определения местоположения.

Дополнительная информация

  • Можно запустить инструмент Identify Modeling Clones на библиотеке.

  • Можно исключить блоки Подсистемы и Модели - ссылки от обнаружения клонов путем щелчка правой кнопкой по подсистеме или блоку Model Reference и выбора Identify Modeling Clones > Subsystem and its contents > Add to exclusions. Для получения дополнительной информации смотрите, Исключают подсистемы и модели, на которые ссылаются, от обнаружения клонов.

  • Для дополнительной практики с помощью инструмента Identify Modeling Clones попробуйте модель aero_dap3dof и соответствующие библиотеки aero_librcs и aero_libdap.

Похожие темы