Можно настроить тестовую обвязку при помощи функции, которая выполняется после создания или восстановления тестовой обвязки. В функции напишите сценарий команд, чтобы настроить вашу тестовую обвязку. Например, функция может:
Соедините пользовательский источник или блоки приемника.
Добавьте подсистему объекта для тестирования с обратной связью.
Измените конфигурацию модели.
Включите логгирование сигнала.
Измените время остановки симуляции.
Запуски специальной функции тестовой обвязки как тестовая обвязка постсоздают коллбэк или поствосстанавливают коллбэк. Настроить тестовую обвязку с помощью функции обратного вызова:
Создайте функцию обратного вызова.
В функции используйте Simulink® программируемый интерфейс, чтобы написать сценарий команд, чтобы настроить тестовую обвязку. Для получения дополнительной информации смотрите функции, перечисленные в Программном редактировании моделей (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)
Создайте или восстановите тестовую обвязку с помощью функции обратного вызова.
Когда вы создаете или восстанавливаете тестовую обвязку, содержимое информационной структуры обвязки отображено на командной строке.
Эта функция обратного вызова обвязки в качестве примера соединяет блок 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 = fullfile(matlabroot,'examples','simulinktest','main',... 'harnessSourceLogCustomization.m');
Информация о специальной функции и тестовой обвязке
Функциональный harnessSourceLogCustomization
изменяет третий исходный блок и включает сигнал, входящий в систему компонент под тестовыми воздействиями и выходными параметрами. Можно считать функцию путем ввода:
type(cbFile)
Функция использует аргумент. Аргумент является 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