Можно сохранить тестовые обвязки внутренне как часть файла SLX модели, либо внешне в отдельных файлах SLX. Модель хранит все тестовые обвязки внутри или снаружи; невозможно использовать оба типа хранилища обвязок в одной модели. Вы выбираете внутреннюю или внешнюю тестовую обвязку при создании первой тестовой обвязки. Если ваша модель уже имеет тестовые обвязки, можно преобразовать между типами хранилища обвязок.
Если вы храните модель в системе управления строением, рассмотрите использование внешних тестовых обвязок. Внешние тестовые обвязки позволяют вам создавать или изменять обвязку без изменения файла модели. Если вы планируете часто делиться своей моделью, рассмотрите использование внутренних тестовых обвязок для упрощения управления файлами. Создание или изменение внутренней тестовой обвязки изменяет файл SLX модели. Как внутренние так и внешние тестовые обвязки обеспечивают одинаковую синхронизацию, толкание, перестроение и функциональность интерфейса значка.
Обвязки, сохраненные извне, используют отдельный файл SLX для каждой обвязки и <modelName>_harnessInfo.xml
файл, который содержит метаданные, связывающие модель и обвязки. Изменение тестовых обвязок может изменить harnessInfo.xml
файл. Метаданные и модель связаны с помощью уникального идентификатора для модели. XML- файл метаданных тестовой обвязки создается и хранится по умолчанию в той же папке, что и модель. При необходимости можно переместить XML- файл метаданных в другую папку на пути MATLAB. Ссылка между моделью и ее обвязками сохраняется, пока все обвязки файл метаданных, модель и обвязки находятся в пути MATLAB.
Следуйте этим рекомендациям для внешних тестовых обвязок:
Предупреждение
Не удаляйте и не вносите изменения в harnessInfo.xml
вручную файл. Удаление
harnessInfo.xml
файл может разорвать связь между моделью и обвязками, которая не может быть регенерирована из модели.
The harnessInfo.xml
файл должен быть доступным для записи, чтобы сохранить изменения в тестовой обвязке или основной модели.
Папки, содержащие файлы SLX тестовых обвязок, должны быть в MATLAB® путь.
Если тестовая обвязка harnessInfo.xml
файл находится не в той же папке, что и модель, XML-файл или его папка должны быть в пути MATLAB.
При преобразовании внутренних тестовых обвязок во внешние тестовые обвязки файлы SLX сохраняются в текущей рабочей папке.
При преобразовании внешних тестовых обвязок во внутренние тестовые обвязки внешние файлы SLX могут находиться где угодно в пути MATLAB.
Если ваша модель использует внешние тестовые обвязки, создайте копию вашей модели только с помощью Save > Save as. Использование Save as копирует внешние тестовые обвязки в папку назначения новой модели, переименовывает обвязки и сохраняет актуальность информации о обвязке.
Копирование файла модели на диск не будет копировать внешние обвязки, сопоставленные с моделью.
Изменяйте или удаляйте тестовые обвязки только с помощью Simulink® UI или команды:
Чтобы удалить тестовые обвязки, используйте эскиз UI или sltest.harness.delete
команда.
Для переименования тестовых обвязок используйте пользовательский интерфейс свойств обвязки или sltest.harness.set
команда.
Чтобы создать копию сохраненного извне тестовой обвязки, используйте sltest.harness.clone
или сохраните тестовую обвязку в новое имя с помощью Save > Save as.
Удаление или переименование файлов обвязок за пределами Simulink приводит к неточной harnessInfo.xml
файл и проблемы загрузки тестовых обвязок.
Можно изменить способ хранения тестовых обвязок в модели на разных фазах жизненного цикла модели. Для примера:
Разработайте свою модель с помощью внутренних тестовых обвязок, чтобы вы могли легче делиться моделью для обзора. Когда вы завершите проект и поместите модель под управление изменениями, преобразуйте во внешние обвязки.
Используйте модель управления строения в качестве начальной точки для нового проекта. Протестируйте существующую модель с внешними обвязками, чтобы избежать ее изменения. Затем создайте копию существующей модели. Преобразуйте во внутренние обвязки для новой фазы разработки.
Для изменения тестовой обвязки памяти на внешнюю (или внутреннюю):
Перейдите к верхней части основной модели.
На вкладке Apps, в разделе Верификации модели, Валидация и Тест, нажмите Simulink Test. Затем на вкладке Tests щелкните Manage Test Harnesses > Convert to External Harnesses или Convert to Internal Harnesses.
Диалоговое окно содержит информацию о процедуре преобразования и затронутых тестовых обвязках. Для продолжения нажмите кнопку Yes.
Обвязки преобразуются.
Преобразование во внешние тестовые обвязки создает файл SLX для каждой тестовой обвязки и XML-файл информации о обвязке <modelName>_harnessInfo.xml
.
Наоборот, преобразование во внутренние тестовые обвязки перемещает файлы SLX тестовой обвязки и harnessInfo.xml
файл.
Когда компонент модели имеет тестовую обвязку, в правом нижнем углу блока появляется значок. Чтобы просмотреть тестовые обвязки, щелкните значок. Чтобы открыть тестовую обвязку, щелкните плитку.
Чтобы просмотреть тестовые обвязки для блока модели, щелкните значок вывода в холсте модели. Чтобы открыть тестовую обвязку, щелкните плитку.
Чтобы отобразить открытые тесты, которые ссылаются на тестовую обвязку, щелкните значок в тестовую обвязку холсте. Можно щелкнуть имя тестового примера и перейти к тестовому случаю в Диспетчере тестов.
Можно экспортировать тестовые обвязки в автономные модели, что полезно для архивирования тестовых обвязок или совместного использования тестовой обвязки проекта без совместного использования модели.
Для экспорта отдельной тестовой обвязки:
Из отдельной модели тестовой обвязки, на вкладке Apps, под Model Verification, Validation, and Test, нажмите Simulink Test.
На вкладке Harness нажмите Detach and Export.
В диалоговом окне «Экспорт тестовой обвязки в независимую модель» нажмите кнопку OK.
В диалоговом окне «Сохранить как» введите имя файла для автономной модели тестовой обвязки и нажмите кнопку OK.
Обвязка преобразуется в автономную модель.
Преобразование удаляет обвязку из основной модели и разрывает отношение к основной модели. Если у модели есть только одна обвязка, его harnessInfo.xml
файл удален. Если в модели больше одного кабеля, и вы удаляете один из них, harnessInfo.xml
файл обновляется.
Чтобы экспортировать все обвязки в модель:
Перейдите к верхнему уровню модели. Не выбирайте блоки.
На вкладке Apps, под Model Verification, Validation, and Test, нажмите Simulink Test.
На вкладке Harness нажмите Detach and Export.
В диалоговом окне «Экспорт тестовой обвязки в независимую модель» нажмите кнопку OK.
В диалоговом окне «Сохранить как» введите имя файла для отдельной модели и нажатия кнопки OK.
Все тестовые обвязки экспортируются и преобразуются в автономные модели.
Экспорт удаляет обвязки из основной модели, удаляет harnessInfo.xml
файл, и разрывает отношения с основной моделью.
Посмотрите sltest.harness.export
.
Этот пример демонстрирует клонирование существующей тестовой обвязки и экспорт клонированной обвязки в отдельную модель. Это может быть полезно, если вы хотите создать копию тестовой обвязки как отдельную модель, но оставьте тестовую обвязку, связанный с компонентом модели.
Высокоуровневый рабочий процесс
Если вы не знаете точных свойств тестовой обвязки, который вы хотите клонировать, получите их использование sltest.harness.find
. Вам нужен идентификатор владельца обвязки и имя обвязки.
Клонируйте тестовую обвязку с помощью sltest.harness.clone.
Экспорт тестовой обвязки в отдельную модель с помощью sltest.harness.export
. Обратите внимание, что нет никакой связи между экспортированной моделью и исходной моделью. Экспортированная модель является отдельной.
Откройте модель и сохраните локальную копию
model = 'sltestTestSequenceExample';
open_system(model)
Сохраните локальную копию в доступном для записи месте на пути MATLAB.
Получите свойства исходной тестовой обвязки
properties = sltest.harness.find([model '/shift_controller'])
properties = struct with fields: model: 'sltestTestSequenceExample' name: 'controller_harness' description: '' type: 'Testing' ownerHandle: 10.0004 ownerFullPath: 'sltestTestSequenceExample/shift_controller' ownerType: 'Simulink.SubSystem' isOpen: 0 canBeOpened: 1 verificationMode: 0 saveExternally: 0 rebuildOnOpen: 0 rebuildModelData: 0 postRebuildCallback: '' graphical: 0 origSrc: 'Test Sequence' origSink: 'Test Assessment' synchronizationMode: 0 existingBuildFolder: '' functionInterfaceName: ''
Клонирование тестовой обвязки
Клонируйте тестовую обвязку с помощью sltest.harness.clone, ownerFullPath
и name
поля структуры свойств обвязки.
sltest.harness.clone(properties.ownerFullPath,properties.name,'ControllerHarness2')
Сохраните модель
Перед экспортом обвязок сохраните изменения в модель.
save_system(model)
Экспорт тестовой обвязки в отдельную модель
Экспортировать тестовую обвязку можно с помощью sltest.harness.export. Экспортированное имя модели ControllerTestModel
.
sltest.harness.export([model '/shift_controller'],'ControllerHarness2',... 'Name','ControllerTestModel')
clear('model') clear('properties') close_system('sltestTestSequenceExample',0)
В этом примере показано, как выполнить программное удаление тестовых обвязок. Удаление с помощью программного интерфейса может быть полезно, когда ваша модель имеет несколько тестовые обвязки на разных уровнях иерархии. Этот пример демонстрирует, как создать четыре тестовых обвязок, а затем удалить их.
1. Откройте модель
open_system('sltestCar');
2. Создайте две обвязки для transmission
подсистема и две обвязки для transmission ratio
подсистема.
sltest.harness.create('sltestCar/transmission'); sltest.harness.create('sltestCar/transmission'); sltest.harness.create('sltestCar/transmission/transmission ratio'); sltest.harness.create('sltestCar/transmission/transmission ratio');
3. Найдите обвязки в модели.
test_harness_list = sltest.harness.find('sltestCar')
test_harness_list = 1x5 struct array with fields: model name description type ownerHandle ownerFullPath ownerType isOpen canBeOpened verificationMode saveExternally rebuildOnOpen rebuildModelData postRebuildCallback graphical origSrc origSink synchronizationMode existingBuildFolder functionInterfaceName
4. Удалите обвязки.
for k = 1:length(test_harness_list) sltest.harness.delete(test_harness_list(k).ownerFullPath,... test_harness_list(k).name) end
close_system('sltestCar',0);
Simulink Test™ предоставляет вам возможность перемещать или клонировать тестовые обвязки от владельца источника к владельцу назначения без необходимости компиляции модели. Можно переместить или клонировать:
Подсистема проводит жгуты между подсистемами. Подсистема назначения также может быть в другой модели.
Обвязки для компонентов библиотеки между библиотеками.
Блок Subsystem Reference подключается к другим обвязкам блоков Subsystem Reference.
Подсистема Ссылки блока подключается к Подсистеме модели обвязок и из нее.
Подсистема Ссылки блока подключается к Подсистеме модели обвязок и из нее.
Чтобы переместить или клонировать обвязки, щелкните правой кнопкой мыши холст Simulink и выберите Test Harness > Manage Test Harnesses. Откроется диалоговое окно Управление тестовым жгутом (Manage Тестовая Обвязка), в котором перечислены тестовые обвязки, сопоставленные с подсистемой или блоком, указанным в Filter by harness owner. Щелкните Actions, чтобы получить доступ к опциям Переместить и Клонировать (Move and Clone).
Выберите путь назначения и назовите свою тестовую обвязку.
При преобразовании Subsystem или Subystem Reference блока в модель-ссылку тестовые обвязки переносятся в модель-ссылку. Обвязки на Subsystem блоке преобразуются в обвязки на блок-схеме. Вложенные обвязки в подсистемах копируются в идентичные блоки в модели-ссылке. Все перенесённые обвязки являются внутренними обвязками в модели-ссылке. Тестовые обвязки могут быть переименованы при их переносе. Обратную связь о переносе обвязки можно увидеть в панели Complete Conversion Conversion Advisor или в командной строке MATLAB.
Эти ограничения применяются к преобразованию Subsystem или Subystem Reference блока в модель-ссылку:
SIL и PIL- обвязкам не передаются.
Потребности в тестовой обвязке для подсистемы не переносятся. Их необходимо скопировать вручную.
Модель-ссылка | sltest.harness.clone
| sltest.harness.create
| sltest.harness.delete
| sltest.harness.export
| sltest.harness.find
| sltest.harness.load
| sltest.harness.move
| sltest.harness.open