Синхронизируйте изменения между тестовой обвязкой и моделью

A тестовой обвязки предоставляет изолированное окружение для тестирования изменений проекта. Можно синхронизировать изменения из тестовой обвязки в основную модель или из основной модели в тестовую обвязку. Синхронизация включает в себя эти элементы модели:

  • Тестируемый компонент

  • Параметры блоков

  • Опционально модель или тестовая обвязка конфигурации модели

  • Опционально параметры рабочего пространства модели

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

Установите синхронизацию для новой тестовой обвязки

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

  • Synchronize on harness open - При открытии тестовой обвязки компоненты тестовой обвязки, конфигурация модели и параметры синхронизируются из модели в тестовую обвязку. Эта опция доступна для:

    • Блоки

    • Подсистемы, включая Stateflow® графики и блоки MATLAB function

    • Для Subsystem Reference блоков синхронизируются только параметры блоков, а не содержимое блоков.

    • Моделируйте опорные блоки

    • Блоки s-function

    Опция Synchronize on harness open недоступна для:

    • SIL/PIL обвязок

    • Модели подсистемы обвязок

  • Synchronize on harness open and close - При открытии тестовой обвязки компоненты тестовой обвязки, конфигурация модели и параметры синхронизируются из модели в тестовую обвязку. Когда тестовая обвязка закроется, те же элементы синхронизируются из обвязки в модель. Эта опция доступна для:

    • Блоки

    • Подсистемы, включая диаграммы и Блоки MATLAB function Stateflow

    • Для Subsystem Reference блоков синхронизируются только параметры блоков, а не содержимое блоков.

    • Моделируйте опорные блоки

    • Блоки s-function

    • Модели подсистемы обвязок

    Опция Synchronize on harness open and close недоступна для:

    • Блоки

    • SIL/PIL обвязок

    • Модели подсистемы обвязок

  • Synchronize only during push and rebuild - Синхронизируется при нажатии кнопки Push Changes или Rebuild Harness. Push Changes синхронизирует изменения от тестовой обвязки к модели. Rebuild Harness синхронизирует изменения из модели в тестовой обвязке. Эта опция доступна для:

    • Подсистемы, включая диаграммы и Блоки MATLAB function Stateflow

    • Моделируйте опорные блоки

    • Блоки s-function

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

    Опция Synchronize only during push and rebuild недоступна для:

    • Блоки

    • SIL/PIL обвязок

    • Компоненты в библиотеках

  • Synchronize only during rebuild - Синхронизируется только при нажатии кнопки Rebuild Harness. Rebuild Harness синхронизирует изменения из модели в тестовой обвязке. Эта опция доступна для:

    • Блоки

    • Подсистемы, включая диаграммы и Блоки MATLAB function Stateflow

    • Моделируйте опорные блоки

    • Блоки s-function

    • Компоненты режима верификации SIL/PIL

    Опция Synchronize only during rebuild недоступна для:

    • Компоненты в библиотеках

Если вы используете командную строку, установите SynchronizationMode свойство с sltest.harness.create.

Примечание

Если вы создаете тестовую обвязку в SIL или PIL режиме для блока Model, режим блока в тестовую обвязку изменяется на SIL или PIL, соответственно. Этот режим не обновляется до основной модели, когда вы закрываете тестовую обвязку.

Поддержание точности блоков SIL или PIL

Если вы используете блок цикла (SIL) или цикла (PIL) в тестовую обвязку, рассмотрите установку тестовой обвязки на перестроение каждый раз, когда она откроется. Регулярное перестроение тестовой обвязки сохраняет сгенерированный код, на который ссылается блок SIL/PIL, как отражение основной модели.

Изменение синхронизации существующей тестовой обвязки

Для изменения тестовой обвязки режима синхронизации:

  1. Закройте тестовую обвязку.

  2. В основной модели щелкните значок обвязки на блоке или Simulink® холст.

  3. В окне предварительного просмотра тестовой обвязки щелкните значок Harness operations и выберите Properties.

  4. Измените Synchronization Mode в диалоговом окне свойств.

Если вы используете командную строку, установите SynchronizationMode свойство с sltest.harness.set.

Синхронизация Конфигурации модели и Рабочего пространства модели данных

Чтобы синхронизировать конфигурацию модели и параметры рабочей области между тестовой обвязкой и основной моделью, выберите Update Configuration Parameters and Model Workspace data on rebuild в диалоговом окне создания обвязок или свойств кабельных трасс.

Проверка несинхонизированных различий компонентов

Если ваша тестовая обвязка не синхронизирует изменения, можно проверить, не синхронизированы ли различия компонентов между тестовой обвязкой и основной моделью. Проверка на несинхонизированные различия может быть полезной, если:

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

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

В тестовой обвязке выберите Check Harness для проверки на различия. Если компонент отличается, можно нажать изменения от тестовой обвязки к основной модели или перестроить тестовую обвязку из основной модели. Также см. sltest.harness.check функция.

Примите во внимание следующие условия при проверке на несинхонизированные различия:

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

  • Если компонент содержит Simscape™ Solver Configuration блок, результат проверки всегда показывает, что компонент отличается между тестовой обвязкой и основной моделью. Блок Solver Configuration затронут блоками Simscape вне компонента, и поэтому всегда отличается между тестовой обвязкой и основной моделью.

Перестроите Тестовую обвязку

Перестроите тестовую обвязку, чтобы отразить последнее состояние основной модели. В тестовую обвязку выберите Rebuild Harness. В дополнение к обновлению тестируемого компонента и блочных параметров эта операция перестраивает подсистемы преобразования кабелей. Если тестовая обвязка не имеет подсистем преобразования, их добавляет перестроение.

Перестроение может отсоединить сигнальные линии. Для примера, если имена сигналов изменены в основной модели, сигнальные линии в тестовую обвязку могут быть отключены. Если линии отключены, соедините сигнальные линии с тестируемым компонентом или подсистемами преобразования. Если вы задали использование существующего сгенерированного кода для подсистемы SIL/PIL с помощью sltest.harness.create или sltest.harness.setперестроение обвязки использует этот код вместо его регенерации.

Для получения дополнительной информации смотрите Создание тестовых обвязок и Выбор свойств и sltest.harness.rebuild.

Толкайте изменения от тестовой обвязки к модели

После изменения системы в тестовой обвязке можно нажать изменения в основной модели. В тестовую обвязку выберите Push Changes. Этот процесс перезаписывает компонент в основной модели.

Проверяйте компонент и Параметр на главную модель

Этот пример показывает базовый рабочий процесс обновления параметра в тестовую обвязку, проверки синхронизации между тестовой обвязкой и основной моделью и перемещения изменения параметра от тестовой обвязки к основной модели.

Этот пример также включает программные шаги.

Откройте модель sltestCar. Модель включает трансмиссию сдвига алгоритма регулятора и упрощенные силовые агрегаты и динамику аппарата.

open_system('sltestCar');

Обновите параметр маски в тестовой обвязке

1. Откройте тестовую обвязку. Нажмите значок на shift_logic и выберите ShiftLogic_InportHarness тестовая обвязка. Тестовая обвязка синхронизируется только при нажатии или перестройке из основной модели.

sltest.harness.open('sltestCar/shift_logic','ShiftLogic_InportHarness');

2. Дважды кликните shift_logic подсистема. Для параметра «Задержка перед переключением передачи ( такт)» введите 4. Нажмите кнопку ОК.

shiftLogicMask = Simulink.Mask.get('ShiftLogic_InportHarness/shift_logic');
maskParamValue = shiftLogicMask.Parameters.Value;
shiftLogicMask.Parameters.Value = '4';   % Set to new parameter value

Проверяйте синхронизацию между тестовой обвязкой и основной моделью

В командной строке запустите sltest.harness.check функция.

[comparison,details] = sltest.harness.check('sltestCar/shift_logic',...
    'ShiftLogic_InportHarness');

Результаты показывают, что тестируемый компонент отличается в тестовой обвязке из-за обновленного параметра маски.

comparison
comparison =

  logical

   0

details
details = 

  struct with fields:

     overall: 0
    contents: 1
      reason: 'The contents of harnessed component and the contents of the component in the main model are same, but they differ in terms of block or mask parameters.'

Обновите параметр к основной модели

1. В тестовую обвязку откройте Test Manager. На вкладке Apps, в разделе Верификация модели, Validation и Test, нажмите Simulink Test.Затем, на вкладке Tests, нажмите Simulink Test Manager.

2. В основной модели дважды кликните подсистему shift_logic. Выполняется обновление значения параметров.

sltest.harness.push('sltestCar/shift_logic','ShiftLogic_InportHarness')

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

В командной строке обновите основную модель и протестируйте кабель. Затем запустите sltest.harness.check функция.

set_param('sltestCar','SimulationCommand','update');
set_param('ShiftLogic_InportHarness','SimulationCommand','update');
[comparison,details] = sltest.harness.check('sltestCar/shift_logic',...
    'ShiftLogic_InportHarness');

Результаты показывают, что тестируемый компонент является тем же самым между тестовой обвязкой и основной моделью.

comparison
comparison =

  logical

   1

details
details = 

  struct with fields:

     overall: 1
    contents: 1
      reason: 'The checksum of the harnessed component and the component in the main model are same.'

close_system('sltestCar',0);

См. также

| |

Похожие темы