Если у вас есть модель, которая интегрирует Код С с блоком 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-Functions являются описаниями языка компьютера Simulink® блоки, записанные в MATLAB®, C, C++ или Фортран. Можно протестировать код, упакованный в S-Функции, используя Simulink Test™ тестовые обвязки. Тестирование кода в S-Functions может быть полезно для регрессионной проверки унаследованного кода и для проверки вашего кода в системном контексте.
В этом примере вы тестируете код в блоке S-Function с использованием тестовой обвязки. Основная модель является моделью контроллера-завода модуля кондиционирования/теплового насоса. Прежде чем вы начнете, измените рабочую папку по умолчанию на одну с разрешениями на запись.
Примечание
Этот пример работает только с 64-разрядной Windows® платформы.
Добавьте папку с примером в путь MATLAB и установите имена файлов с примером.
ep = fullfile(docroot,'toolbox','sltest','examples'); addpath(ep); md = 'sltestHeatpumpSfunExample.slx' cb = 'sltestHeatpumpBusPostLoadFcn.mat' dt = 'PumpDirection.m'
Откройте модель.
open_system(fullfile(ep,md))
В модели примера:
Контроллер является S-функцией, которая принимает входные параметры комнатной температуры и заданные входы температуры.
Контроллер выход является шиной с сигналами, которые управляют вентилятором, тепловым насосом и направлением теплового насоса (тепло или охлаждение).
Объект принимает шину управления. Тепловой насос и сигналы вентилятора являются булевыми, а направление теплового насоса определяется +1
для охлаждения и -1
для нагрева.
Тест охватывает четыре температурных условий. Каждое условие соответствует одному рабочему состоянию с выходами сигнала вентилятора, насоса и направления насоса.
Температурное условие | Состояние системы | Команда вентилятора | Команда насоса | Направление насоса |
---|---|---|---|---|
|Troom_in - Tset| < DeltaT_fan | неработающий | 0 | 0 | 0 |
DeltaT_fan <= |Troom_in - Tset| < DeltaT_pump | только вентилятор | 1 | 0 | 0 |
|Troom_in - Tset| >= DeltaT_pump and Tset < Troom_in | охлаждение | 1 | 1 | -1 |
|Troom_in - Tset| >= DeltaT_pump and Tset > Troom_in | отопление | 1 | 1 | 1 |
На вкладке Apps, в разделе Верификации модели, Валидация и Тест, нажмите Simulink Test. Затем на вкладке Tests нажмите Simulink Test Manager.
На панели инструментов Test Manager щелкните New, чтобы создать тестовый файл. Назовите и сохраните тестовый файл.
В тест, под System Under Test, нажмите кнопку, чтобы загрузить текущую модель в тест.
В модели щелкните правой кнопкой мыши по Controller_sfcn
и выберите Test Harness > Create for ‘Controller_sfcn’.
Установите свойства обвязки.
На вкладке Basic Properties:
Установите Name значение test_harness_1
Установите Sources and Sinks равными None и Scope
Щелкните OK, чтобы создать тестовую обвязку.
В тест под System Under Test обновите список тестовой обвязки и выберите test_harness_1
для Harness.
Создайте входы в тестовую обвязку с постоянной Tset
и изменяющуюся во времени Troom_in
.
Соедините Constant блок с Tset
введите и установите значение 75
.
Добавьте блок Sine Wave к модели тестовой обвязки, чтобы симулировать сигнал температуры. Подключите блок Sine Wave к входу подсистемы преобразования Troom_in
.
Дважды кликните Sine Wave блок и установите параметры:
Параметр | Значение |
---|---|
Амплитуда | 15 |
Уклон | 75 |
Частота | 2 * pi/3600 |
Фаза (рад) | 0 |
Шаг расчета | 1 |
Выберите Interpret vector parameters as 1–D.
На Solver панели панели инструментов Simulink задайте Stop time 3600
.
В тест, в Simulation Outputs, нажмите Add. Выделите шину выхода из контроллера S-Function.
В диалоговом окне Signal Selection нажмите кнопку Add.
В разделе Baseline Criteria щелкните Capture, чтобы записать набор базовых данных из симуляции тестовой обвязки. Сохраните набор базовых данных в рабочей папке. Базовые сигналы появляются в таблице.
Запустите тест. Результаты тестирования отображаются на панели Results and Artifacts.
Разверните результаты, чтобы просмотреть результат критериев опорной структуры. Регрессионный тест проходит, потому что выходы симуляции идентичны базовым данным.