Тестовая обвязка обеспечивает изолированную среду, чтобы протестировать конструктивные изменения. Можно синхронизировать изменения от тестовой обвязки до основной модели, или от основной модели до тестовой обвязки. Синхронизация включает эти элементы модели:
Компонент под тестом
Параметры блоков
Опционально, модель или конфигурация модели тестовой обвязки
Опционально, параметры рабочего пространства модели
Вы не должны синхронизировать данные о базовом рабочем пространстве, потому что это доступно и для тестовой обвязки и для основной модели. Тестовые обвязки модели 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 как отражение основной модели.
Изменить режим синхронизации тестовой обвязки:
Закройте тестовую обвязку.
В основной модели кликните по значку обвязки на блоке или холсте Simulink®.
В предварительном просмотре миниатюры тестовой обвязки кликните по значку Harness operations и выберите Properties.
Измените 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);
sltest.harness.check
| sltest.harness.push
| sltest.harness.rebuild