Можно настроить тестовую обвязку при помощи функции, которая запускается как коллбэк после создания или восстановления тестовой обвязки. В функции запишите команды, чтобы настроить вашу тестовую обвязку. Например, можно создать функции к:
Соедините пользовательский источник или блоки приемника.
Добавьте подсистему объекта для тестирования с обратной связью.
Измените конфигурацию модели.
Включите логгирование сигнала.
Измените время остановки симуляции.
Запуски специальной функции тестовой обвязки как тестовая обвязка постсоздают коллбэк или поствосстанавливают коллбэк. Настроить тестовую обвязку с помощью функции обратного вызова:
Создайте функцию обратного вызова.
В функции используйте Simulink® программируемый интерфейс, чтобы написать сценарий команд, чтобы настроить тестовую обвязку. Для получения дополнительной информации смотрите функции, перечисленные в Программном редактировании моделей.
Задайте функцию как постсоздавание или поствосстановите коллбэк:
Для новой тестовой обвязки,
Если вы используете пользовательский интерфейс, вводите имя функции в Post-create callback method или Post-rebuild callback method в Advanced Properties диалогового окна создания обвязки.
Если вы используете sltest.harness.create
, задайте функцию как PostCreateCallback
или PostRebuildCallback
значение.
Для существующей тестовой обвязки,
Если вы используете пользовательский интерфейс, вводите имя функции в Post-rebuild callback method в диалоговом окне свойств обвязки.
Если вы используете sltest.harness.set
, задайте функцию как PostRebuildCallback
значение.
Другой способ настроить тестовые обвязки путем установки собственных значений по умолчанию для создания обвязок. Для получения дополнительной информации смотрите Create Test Harnesses and Select Properties.
Объявление функции обратного вызова
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)
Создайте или восстановите тестовую обвязку с помощью функции обратного вызова.
Когда вы создаете или восстанавливаете тестовую обвязку, содержимое информационной структуры обвязки отображено на командной строке.
Скрипты коллбэка оценены в MATLAB® базовое рабочее пространство. Чтобы осуществлять обмен данными между скриптами коллбэка, использовать assignin
и evalin
сохранить и получить данные от базового рабочего пространства. Например,
assignin('base','a',2); a = evalin('base','a');
Для параллельного выполнения постзагрузка и коллбэки очистки оценены на параллельном работнике MATLAB, где коллбэки имеют свои собственные базовые рабочие пространства. Переменные, созданные в коллбэке предварительной нагрузки теста и тестовом файле и коллбэках настройки тестового набора, также доступны в параллельном базовом рабочем пространстве работника MATLAB. До выполнения переменные базового рабочего пространства передаются от клиента MATLAB параллельным работникам MATLAB.
Эта функция обратного вызова обвязки в качестве примера соединяет блок 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)
Как альтернатива включению выходного кода логгирования в коллбэке, можно использовать Логарифмические Выходные сигналы в диалоговом окне Create New Harness или использовать 'LogHarnessOutputs',true
как вход к sltest.harness.create
. Эти опции регистрируют весь компонент под тестовыми выходными сигналами в тестовой обвязке и возвращают результаты испытаний для тех сигналов.
Функциональный harnessSourceLogCustomization
использует аргумент. Аргумент является struct, перечисляющим информацию о тестовой обвязке. Информация включает указатели на блоки в тестовой обвязке, включая:
Компонент под тестом
Введите подсистемы
Источники и приемники
Владелец обвязки в основной модели
Например, harnessInfo.Sources
перечисляет указатели на исходные блоки тестовой обвязки.
Создайте индивидуально настраиваемую тестовую обвязку
1. Скопируйте специальную функцию обвязки во временную рабочую директорию.
copyfile(cbFile,tempdir); cd(tempdir);
2. В RollAutopilotMdlRef
модель, щелкните правой кнопкой по Roll Reference
подсистема и выбирает Test Harness> Create for 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