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

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

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

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

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

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

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

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

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

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

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

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

      • Если вы используете пользовательский интерфейс, вводите имя функции в Post-create callback method или Post-rebuild callback method в Advanced Properties диалогового окна создания обвязки.

      • Если вы используете sltest.harness.create, задаете функцию как значение PostRebuildCallback или PostCreateCallback.

    • Для существующей тестовой обвязки,

      • Если вы используете пользовательский интерфейс, вводите имя функции в 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');

Как Отобразить Содержимое 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 = 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);

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

|

Похожие темы