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

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

  • Компонент под тестом

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

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

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

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

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

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

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

    • Блок-схемы

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

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

    • Блоки модели - ссылки

    • Блоки s-function

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

    • Обвязки SIL/PIL

    • Обвязки модели Subsystem

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

    • Блок-схемы

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

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

    • Блоки модели - ссылки

    • Блоки s-function

    • Обвязки модели Subsystem

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

    • Блок-схемы

    • Обвязки SIL/PIL

    • Обвязки модели Subsystem

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

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

    • Блоки модели - ссылки

    • Блоки s-function

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

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

    • Блок-схемы

    • Обвязки SIL/PIL

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

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

    • Блок-схемы

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

    • Блоки модели - ссылки

    • Блоки 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, обвязка восстанавливает использование что код вместо того, чтобы регенерировать его.

Для получения дополнительной информации смотрите Create Test Harnesses and Select Properties и 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. В тестовой обвязке откройте менеджера по Тесту. На вкладке Apps, под Model Verification, Валидация и Тест, нажимают 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);

Смотрите также

| |

Похожие темы