Тестовые обвязки обеспечивают среду разработки и тестовую среду, которая оставляет основной образцовый проект неповрежденным. Можно протестировать функциональный блок модели в изоляции, не изменяя основную модель. Этот пример демонстрирует совершенствование и тестирование подсистемы контроллера с помощью тестовой обвязки. Основная модель является моделью объекта управления контроллера кондиционера / модуль теплового насоса. Контроллер должен действовать согласно нескольким простым требованиям.
Доступ к модели. Войти
cd(fullfile(docroot,'toolbox','sltest','examples'))
Скопируйте этот образцовый файл и вспомогательные файлы к перезаписываемому местоположению на пути MATLAB®:
sltestHeatpumpExample.slx sltestHeatpumpBusPostLoadFcn.mat PumpDirection.m
Откройте модель.
open_system('sltestHeatpumpExample')
В модели в качестве примера:
Контроллер принимает комнатную температуру и входные параметры установленной температуры.
Контроллер вывел, шина с сигналами, управляющими вентилятором, тепловым насосом и направлением теплового насоса (тепло или холодный).
Объект принимает шину управления. Тепловой насос и сигналы вентилятора являются булевской переменной, и направление теплового насоса задано +1
для охлаждения и -1
для нагревания.
Тест покрывает четыре температурных условия. Каждое условие соответствует одному операционному состоянию с вентилятором, насосом, и направление насоса сигнализирует о выходных параметрах.
Температурное условие | Системное состояние | Команда вентилятора | Накачайте команду | Накачайте направление |
---|---|---|---|---|
|Troom - Tset| < DeltaT_fan | неактивный | 0 | 0 | 0 |
DeltaT_fan <= |Troom - Tset| < DeltaT_pump | вентилятор только | 1 | 0 | 0 |
|Troom - Tset| >= DeltaT_pump and Tset < Troom | охлаждение | 1 | 1 | -1 |
|Troom - Tset| >= DeltaT_pump and Tset > Troom | нагревание | 1 | 1 | 1 |
Щелкните правой кнопкой по подсистеме Controller
и выберите Test Harness > Create for ‘Controller’.
Установите свойства обвязки:
Во вкладке Basic Properties:
Имя: devel_harness_1
Очистите Save test harness externally
Sources and Sinks: None и Scope
Очистите Add separate assessment block
Выберите Open harness after creation
Нажмите OK, чтобы создать тестовую обвязку.
В тестовой обвязке дважды кликните Controller
, чтобы открыть подсистему.
Соедините график с блоками Inport.
В тестовой обвязке нажмите кнопку Save, чтобы сохранить тестовую обвязку и модель.
Перейдите к верхнему уровню devel_harness_1
.
Создайте тестовое воздействие для обвязки с постоянным Tset
и изменяющимся во времени Troom
. Соедините блок Constant с входом Tset
и установите значение к 75
.
Добавьте блок Sine Wave в модель тестовой обвязки, чтобы моделировать температурный сигнал. Соедините блок Sine Wave с входом Troom_in
подсистемы преобразования.
Дважды кликните блок Sine Wave и установите параметры:
Amplitude: 15
Bias: 75
Frequency: 2*pi/3600
Phase (rad): 0
'SampleTime' : 1
Выберите Interpret vector parameters as 1–D.
Соедините блоки Inport с входными параметрами Записи Хранилища данных.
В диалоговом окне Configuration Parameters, в панели Data Import/Export, выбирают Input и вводят u
. u
является существующей структурой в базовом рабочем пространстве MATLAB.
В панели Solver, набор Stop time к 3600
.
Откройте осциллограф в тестовой обвязке и измените размещение, чтобы показать три графика.
Нажмите Run, чтобы моделировать.
Заметьте, что контроллер вывел. fan_cmd
является 1
во время НЕАКТИВНОГО условия где |Troom - Tset| < DeltaT_fan
.
Это - ошибка. fan_cmd
должен равняться 0
в IDLE
. Управление fan_cmd
вывод должно быть изменено для IDLE
.
В модели тестовой обвязки откройте подсистему Controller
.
Открытый controller_chart
.
В состоянии IDLE
fan_cmd
собирается возвратить 1
. Измените fan_cmd
, чтобы возвратить 0
. IDLE
теперь:
IDLE entry: fan_cmd = 0; pump_cmd = 0; pump_dir = 0;
Моделируйте модель тестовой обвязки снова и наблюдайте выходные сигналы.
fan_cmd
теперь удовлетворяет требование, чтобы равняться 0
в IDLE
.