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

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

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

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

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

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

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

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

  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 как коллбэк для следующей тестовой обвязки:

заполняет 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. Когда вы создаете или восстанавливаете тестовую обвязку, содержимое информационной структуры обвязки отображено на командной строке.

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

Эта функция обратного вызова обвязки в качестве примера соединяет блок 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

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

В этом примере показано, как использовать постсоздать коллбэк, чтобы настроить тестовую обвязку. Коллбэк изменяет один источник обвязки от блока Inport до блока Constant и включает сигнал, входящий в систему тестовая обвязка.

Модель

В этом примере вы создаете тестовую обвязку для Roll Reference подсистема.

open_system('RollAutopilotMdlRef')

Получите путь к специальной функции обвязки

cbFile = '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);

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

|

Похожие темы