Настройте тестовые обвязки

Можно настроить тестовую обвязку при помощи функции, которая запускается как коллбэк после создания или восстановления тестовой обвязки. В функции запишите команды, чтобы настроить вашу тестовую обвязку. Например, можно создать функции к:

  • Соедините пользовательский источник или блоки приемника.

  • Добавьте подсистему объекта для тестирования с обратной связью.

  • Измените конфигурацию модели.

  • Включите логгирование сигнала.

  • Измените время остановки симуляции.

Запуски специальной функции тестовой обвязки как тестовая обвязка постсоздают коллбэк или поствосстанавливают коллбэк. Настроить тестовую обвязку с помощью функции обратного вызова:

  1. Создайте функцию обратного вызова.

  2. В функции используйте Simulink® программируемый интерфейс, чтобы написать сценарий команд, чтобы настроить тестовую обвязку. Для получения дополнительной информации смотрите функции, перечисленные в Программном редактировании моделей.

  3. Задайте функцию как постсоздавание или поствосстановите коллбэк:

    • Для новой тестовой обвязки,

      • Если вы используете пользовательский интерфейс, вводите имя функции в 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 принимает вход xX struct информации о тестовой обвязке, автоматически созданной, когда тестовая обвязка использует коллбэк. Можно выбрать функцию и имена аргумента.

Например, задайте функцию обратного вызова обвязки harnessCustomization.m:

function harnessCustomization(harnessInfo)

% Script commands here to customize your test harness.

end
В этом примере, harnessInfo имя struct и harnessCustomization имя функции. То, когда создавание или восстанавливает операцию, вызывает harnessCustomization, harnessInfo заполняется с информацией о тестовой обвязке, включая указатели на модель тестовой обвязки, основную модель, и блокируется в тестовой обвязке.

Например, использование harnessCustomization как коллбэк для следующей тестовой обвязки:

Test harness for the Roll Reference subsystem

заполняет 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');

Отобразите Содержимое struct информации об Обвязке

Перечислять информацию об обвязке для вашей тестовой обвязки:

  1. В функции обратного вызова добавьте линию

    disp(harnessInfo)

  2. Создайте или восстановите тестовую обвязку с помощью функции обратного вызова.

  3. Когда вы создаете или восстанавливаете тестовую обвязку, содержимое информационной структуры обвязки отображено на командной строке.

Осуществляйте обмен данными между коллбэками

Скрипты коллбэка оценены в MATLAB® базовое рабочее пространство. Чтобы осуществлять обмен данными между скриптами коллбэка, использовать assignin и evalin сохранить и получить данные от базового рабочего пространства. Например,

assignin('base','a',2);
a = evalin('base','a');

Для параллельного выполнения постзагрузка и коллбэки очистки оценены на параллельном работнике MATLAB, где коллбэки имеют свои собственные базовые рабочие пространства. Переменные, созданные в коллбэке предварительной нагрузки теста и тестовом файле и коллбэках настройки тестового набора, также доступны в параллельном базовом рабочем пространстве работника MATLAB. До выполнения переменные базового рабочего пространства передаются от клиента MATLAB параллельным работникам MATLAB.

Настройте тестовую обвязку, чтобы создать смешанные исходные типы

Эта функция обратного вызова обвязки в качестве примера соединяет блок Constant с третьим входом компонента этой тестовой обвязки в качестве примера.

Функция выполняет процедуру:

  1. Получите имя модели тестовой обвязки.

  2. Добавьте блок Constant.

  3. Получите указатели порта для блока Constant.

  4. Получите указатели порта для входной подсистемы преобразования.

  5. Получите указатели для линий, соединенных с входной подсистемой преобразования.

  6. Удалите существующий блок Inport.

  7. Удалите остающуюся линию.

  8. Соедините новую строку от блока 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

Test harness with callback updates

Пример коллбэка тестовой обвязки

В этом примере показано, как использовать постсоздать коллбэк, чтобы настроить тестовую обвязку. Коллбэк изменяет один источник обвязки от 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);

Смотрите также

|

Похожие темы