Вы можете настроить тестовую обвязку с помощью функции, которая запускается после создания или перестройки тестовой обвязки. В функции выполните скрипт команд, чтобы настроить тестовую обвязку. Для примера можно создать функции для:
Подключите пользовательский исходный или приемный блоки.
Добавьте подсистему объекта для проверки с обратной связью.
Измените конфигурацию модели.
Включите логгирование сигнала.
Измените время остановки симуляции.
Функция настройки тестового кабеля запускается как тестовый кабель после создания обратного вызова или после восстановления обратного вызова. Чтобы настроить тестовую обвязку с помощью функции обратного вызова:
Создайте функцию обратного вызова.
В функции используйте Simulink® программный интерфейс для скрипта команд для настройки тестовой обвязки. Для получения дополнительной информации см. функции, перечисленные в Программное Редактирование Моделей.
Задайте функцию в качестве обратного коллбэка после создания или после восстановления:
Для новой тестовой обвязки,
Если вы используете пользовательский интерфейс, введите имя функции в Post-create callback method или Post-rebuild callback method в Advanced Properties диалогового окна создания обвязок.
Если вы используете sltest.harness.create
, задайте функцию как PostCreateCallback
или PostRebuildCallback
значение.
Для существующей тестовой обвязки,
Если вы используете пользовательский интерфейс, введите имя функции в Post-rebuild callback method в диалоговом окне свойств обвязки.
Если вы используете sltest.harness.set
, задайте функцию как PostRebuildCallback
значение.
Для получения дополнительной информации о свойствах тестовых обвязок см. Раздел «Создание тестовых обвязок» и «Выбор свойств».
Объявление функции обратного вызова
function myfun(x)
myfun
- имя функции и myfun
принимает входные x
. x
- это struct информации о тестовой обвязке, автоматически созданная при использовании тестовой обвязкой коллбэка. Вы можете выбрать функцию и имена аргумента.Для примера задайте обвязку функцию обратного вызова harnessCustomization.m
:
function harnessCustomization(harnessInfo) % Script commands here to customize your test harness. end
harnessInfo
- имя struct и harnessCustomization
- имя функции. Когда операция создания или перестроения вызовов harnessCustomization
, harnessInfo
заполняется информацией о тестовой обвязке, включая указатели на модель тестовой обвязки, основную модель и блоки в тестовую обвязку. Для примера используйте harnessCustomization
в качестве коллбэка для следующей тестовой обвязки:
заполняет harnessInfo
с указателями на три источника, один приемник, основная модель, модель тестовой обвязки, владелец кабеля, тестируемый компонент и подсистемы преобразования:
harnessInfo = struct with fields: MainModel: 2.0001 HarnessModel: 1.1290e+03 Owner: 17.0001 HarnessCUT: 201.0110 DataStoreMemory: [] DataStoreRead: [] DataStoreWrite: [] Goto: [] From: [] GotoTag: [] SimulinkFunctionCaller: [] SimulinkFunctionStub: [] Sources: [1.1530e+03 1.1540e+03 1.1550e+03] Sinks: 1.1630e+03 AssessmentBlock: [] InputConversionSubsystem: 1.1360e+03 OutputConversionSubsystem: 1.1560e+03 CanvasArea: [215 140 770 260]
Используйте struct поля для настройки тестовой обвязки. Для примера:
Чтобы добавить Constant блок с именем ConstInput
в тестовую обвязку получите имя модели тестовой обвязки, а затем используйте add_block
функция.
harnessName = get_param(harnessInfo.HarnessModel,'Name'); block = add_block('simulink/Sources/Constant',... [harnessName '/ConstInput']);
Чтобы получить указатели на порт для тестируемого компонента, получите 'PortHandles'
параметр для harnessInfo.HarnessCUT
.
CUTPorts = get_param(harnessInfo.HarnessCUT,'PortHandles');
Чтобы получить время остановки симуляции для тестовой обвязки, получите 'StopTime'
параметр для harnessInfo.HarnessModel
.
st = get_param(harnessInfo.HarnessModel,'StopTime');
Как задать 16
второе время остановки симуляции для тестовой обвязки, установите 'StopTime'
параметр для harnessInfo.HarnessModel
.
set_param(harnessInfo.HarnessModel,'StopTime','16');
Чтобы перечислить информацию о обвязке для тестовой обвязки:
В функции обратного вызова добавьте линию
disp(harnessInfo)
Создайте или перестроите тестовую обвязку с помощью функции обратного вызова.
При создании или перестройке тестовой обвязки содержимое информационной структуры обвязки отображается в командной строке.
Этот пример функции обратного вызова обвязки соединяет Constant блок с третьим входом этого примера тестовой обвязки.
Функция выполняется в соответствии с процедурой:
Получите имя модели тестовой обвязки.
Добавьте блок Constant.
Получите указатели на порты для блока Constant.
Получите указатели на порты для подсистемы входного преобразования.
Получите указатели для линий, соединенных с подсистемой преобразования входа.
Удалите существующий Inport блок.
Удалите оставшуюся линию.
Подключите новую линию от блока Constant к входу 3
подсистемы входного преобразования.
function harnessCustomization(harnessInfo) % Get harness model name: harnessName = get_param(harnessInfo.HarnessModel,'Name'); % Add Constant block: constBlock = add_block('simulink/Sources/Constant',... [harnessName '/ConstInput']); % Get handles for relevant ports and lines: constPorts = get_param(constBlock,'PortHandles'); icsPorts = get_param(harnessInfo.InputConversionSubsystem,... 'PortHandles'); icsLineHandles = get_param... (harnessInfo.InputConversionSubsystem,'LineHandles'); % Delete the existing Inport block and the adjacent line: delete_block(harnessInfo.Sources(3)); delete_line(icsLineHandles.Inport(3)); % Connect the Constant block to the input % conversion subsystem: add_line(harnessInfo.HarnessModel,constPorts.Outport,... icsPorts.Inport(3),'autorouting','on'); end
В этом примере показов, как использовать коллбэк после создания для настройки тестовой обвязки. Этот коллбэк меняет один источник обвязки с блока Inport на блок Constant и включает регистрацию сигнала в тестовую обвязку.
Модель
В этом примере вы создаете тестовую обвязку для Roll Reference
подсистема.
open_system('RollAutopilotMdlRef')
Получите путь к функции индивидуальной настройки обвязок
cbFile = 'harnessSourceLogCustomization.m';
Функция индивидуальной настройки и тестовая обвязка
Функция harnessSourceLogCustomization
изменяет третий исходный блок и включает регистрацию сигнала на компоненте под тестовыми воздействиями и выходами. Вы можете прочитать функцию, введя:
type(cbFile)
В качестве альтернативы включению выходного кода логгирования в коллбэк можно использовать Log Output Signals в диалоговом окне Create New Harness, или использовать 'LogHarnessOutputs',true
как вход в sltest.harness.create
. Эти опции регистрируют все компоненты в выходных сигналах тестирования в тестовой обвязке и возвращают результаты тестирования для этих сигналов.
Функция harnessSourceLogCustomization
использует аргумент. Аргумент является struct, содержащим тестовую обвязку информацию. Информация включает указатели на блоки в тестовую обвязку, включая:
Тестируемый компонент
Входные подсистемы
Источники и раковины
Владелец обвязки в основной модели
Для примера, harnessInfo.Sources
приводит список указателей для тестовых исходных блоков тестовых обвязок.
Создайте пользовательскую тестовую обвязку
1. Скопируйте функцию индивидуальной настройки обвязки во временную рабочую директорию.
copyfile(cbFile,tempdir); cd(tempdir);
2. В RollAutopilotMdlRef
модель, щелкните правой кнопкой мыши по Roll Reference
и выберите Тестовую обвязку > Создать для Крена Ссылки.
3. В диалоговом окне создания обвязок для метода последующего коллбэка введите harnessSourceLogCustomization
.
4. Нажмите кнопку ОК, чтобы создать тестовую обвязку. Обвязка показывает логгирование сигнала и время остановки симуляции, заданные в функции обратного вызова.
Можно также использовать sltest.harness.create
функция для создания тестовой обвязки, задающая функцию обратного вызова с помощью 'PostCreateCallback'
Пара "имя-значение".
sltest.harness.create('RollAutopilotMdlRef/Roll Reference',... 'Name','LoggingHarness',... 'PostCreateCallback','harnessSourceLogCustomization'); sltest.harness.open('RollAutopilotMdlRef/Roll Reference','LoggingHarness');
close_system('RollAutopilotMdlRef',0);
sltest.harness.create
| sltest.harness.set