Тестируйте Интегрированный Код

Тестируйте Интегрированный Код С

Если у вас есть модель, которая интегрирует Код С с блоком C Caller, можно протестировать Код С с Test Manager и тестовую обвязку.

Блок C Caller использует параметры конфигурации, чтобы задать пользовательский код. Если вы измените параметры конфигурации, синхронизируйте параметры между тестовой обвязкой и моделью. Для получения дополнительной информации смотрите Синхронизация изменений между тестовой обвязкой и моделью и Создание тестовых обвязок и Выбор свойств.

  • Если вы измените параметры конфигурации тестовой обвязки, можно подтолкнуть конфигурация модели к основной модели. Нажмите Push Changes или используйте sltest.harness.push.

  • Если вы измените основные параметры конфигурации модели в основной модели и хотите обновить тестовые параметры тестовой обвязки, тестовая обвязка должен скопировать параметры конфигурации при перестроении. Задать это свойство можно двумя способами:

    • Когда вы создаете тестовую обвязку, выберите Update Configuration Parameters and Model Workspace data on rebuild. Можно также выбрать Rebuild Harness on Open, которая перестраивается каждый раз при открытии обвязки.

    • Для существующих тестовых обвязок в предпросмотре обвязок выберите один или несколько из Rebuild Harness > Rebuild on Open, или Rebuild Harness without Compiling Model и Update Harness Configuration Settings and Model Workspace. Опция Update Harness Configuration Settings and Model Workspace обновляет настройки каждый раз, когда происходит перестроение.

Тестовый код в S-функциях

S-Functions являются описаниями языка компьютера Simulink® блоки, записанные в MATLAB®, C, C++ или Фортран. Можно протестировать код, упакованный в S-Функции, используя Simulink Test™ тестовые обвязки. Тестирование кода в S-Functions может быть полезно для регрессионной проверки унаследованного кода и для проверки вашего кода в системном контексте.

Пример проверки S-функций

В этом примере вы тестируете код в блоке S-Function с использованием тестовой обвязки. Основная модель является моделью контроллера-завода модуля кондиционирования/теплового насоса. Прежде чем вы начнете, измените рабочую папку по умолчанию на одну с разрешениями на запись.

Примечание

Этот пример работает только с 64-разрядной Windows® платформы.

Настройка рабочего окружения

  1. Добавьте папку с примером в путь MATLAB и установите имена файлов с примером.

    ep = fullfile(docroot,'toolbox','sltest','examples');
    addpath(ep);
    
    md = 'sltestHeatpumpSfunExample.slx'
    cb = 'sltestHeatpumpBusPostLoadFcn.mat'
    dt = 'PumpDirection.m'
  2. Откройте модель.

    open_system(fullfile(ep,md))

В модели примера:

  • Контроллер является S-функцией, которая принимает входные параметры комнатной температуры и заданные входы температуры.

  • Контроллер выход является шиной с сигналами, которые управляют вентилятором, тепловым насосом и направлением теплового насоса (тепло или охлаждение).

  • Объект принимает шину управления. Тепловой насос и сигналы вентилятора являются булевыми, а направление теплового насоса определяется +1 для охлаждения и -1 для нагрева.

Тест охватывает четыре температурных условий. Каждое условие соответствует одному рабочему состоянию с выходами сигнала вентилятора, насоса и направления насоса.

Температурное условиеСостояние системыКоманда вентилятораКоманда насосаНаправление насоса
|Troom_in - Tset| < DeltaT_fanнеработающий000
DeltaT_fan <= |Troom_in - Tset| < DeltaT_pumpтолько вентилятор100
|Troom_in - Tset| >= DeltaT_pump and Tset < Troom_inохлаждение11-1
|Troom_in - Tset| >= DeltaT_pump and Tset > Troom_inотопление111

Создайте Тест

  1. На вкладке Apps, в разделе Верификации модели, Валидация и Тест, нажмите Simulink Test. Затем на вкладке Tests нажмите Simulink Test Manager.

  2. На панели инструментов Test Manager щелкните New, чтобы создать тестовый файл. Назовите и сохраните тестовый файл.

  3. В тест, под System Under Test, нажмите кнопку, чтобы загрузить текущую модель в тест.

Создайте Тестовую обвязку

  1. В модели щелкните правой кнопкой мыши по Controller_sfcn и выберите Test Harness > Create for ‘Controller_sfcn’.

  2. Установите свойства обвязки.

    На вкладке Basic Properties:

    • Установите Name значение test_harness_1

    • Установите Sources and Sinks равными None и Scope

  3. Щелкните OK, чтобы создать тестовую обвязку.

  4. В тест под System Under Test обновите список тестовой обвязки и выберите test_harness_1 для Harness.

Добавьте входы и установите параметры симуляции

Создайте входы в тестовую обвязку с постоянной Tset и изменяющуюся во времени Troom_in.

  1. Соедините Constant блок с Tset введите и установите значение 75.

  2. Добавьте блок Sine Wave к модели тестовой обвязки, чтобы симулировать сигнал температуры. Подключите блок Sine Wave к входу подсистемы преобразования Troom_in.

  3. Дважды кликните Sine Wave блок и установите параметры:

    ПараметрЗначение
    Амплитуда15
    Уклон75
    Частота2 * pi/3600
    Фаза (рад)0
    Шаг расчета1

    Выберите Interpret vector parameters as 1–D.

  4. На Solver панели панели инструментов Simulink задайте Stop time 3600.

Получение базовых данных

  1. В тест, в Simulation Outputs, нажмите Add. Выделите шину выхода из контроллера S-Function.

  2. В диалоговом окне Signal Selection нажмите кнопку Add.

  3. В разделе Baseline Criteria щелкните Capture, чтобы записать набор базовых данных из симуляции тестовой обвязки. Сохраните набор базовых данных в рабочей папке. Базовые сигналы появляются в таблице.

Запуск Теста и просмотр результатов

  1. Запустите тест. Результаты тестирования отображаются на панели Results and Artifacts.

  2. Разверните результаты, чтобы просмотреть результат критериев опорной структуры. Регрессионный тест проходит, потому что выходы симуляции идентичны базовым данным.

См. также

Похожие темы