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, как отражение основной модели.
Для изменения тестовой обвязки режима синхронизации:
Закройте тестовую обвязку.
В основной модели щелкните значок обвязки на блоке или 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
перестроение обвязки использует этот код вместо его регенерации.
Для получения дополнительной информации смотрите Создание тестовых обвязок и Выбор свойств и 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);
sltest.harness.check
| sltest.harness.push
| sltest.harness.rebuild