Тестовые обвязки обеспечивают окружение разработки и проверки, которая оставляет основной проект модели нетронутым. Можно тестировать функциональный модуль вашей модели изолированно, не изменяя основную модель. Этот пример демонстрирует уточнение и проверку подсистемы контроллера с помощью тестовой обвязки. Основная модель является моделью контроллера-завода модуля кондиционирования/теплового насоса. Контроллер должен работать в соответствии с несколькими простыми требованиями.
Получите доступ к модели. Войти
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:
Name: devel_harness1
Очистить Save test harness externally
Sources and Sinks: None и Scope
Очистить Add separate assessment block
Выберите Open harness after creation
Щелкните OK, чтобы создать тестовую обвязку.
В тестовой обвязке дважды кликните мышью Controller
чтобы открыть подсистему.
Соедините график с блоками Inport.
В тестовой обвязке нажмите кнопку Save, чтобы сохранить тестовую обвязку и модель.
Переход к верхнему уровню devel_harness1
.
Создайте тестовое воздействие для обвязки с постоянным Tset
и изменяющуюся во времени Troom
. Соедините Constant блок с Tset
введите и установите значение 75
.
Добавьте блок Sine Wave к модели тестовой обвязки, чтобы симулировать сигнал температуры. Подключите блок Sine Wave к входу подсистемы преобразования Troom_in
.
Дважды кликните Sine Wave блок и установите параметры:
Amplitude: 15
Bias: 75
Frequency: 2*pi/3600
Phase (rad): 0
Sample time: 1
Выберите Interpret vector parameters as 1–D.
Соедините Inport блоки с входами Data Store Write.
В диалоговом окне Параметров конфигурации на панели Data Import/Export выберите Input и введите u
. u
- существующая структура в базовом рабочем пространстве MATLAB.
На панели Solver задайте Stop time 3600
.
Откройте возможности в тестовой обвязке и измените размещение, чтобы отобразить три графика.
Нажмите Run для моделирования.
Наблюдайте за контроллер выходом. fan_cmd
является 1
во время условия МГ, где |Troom - Tset| < DeltaT_fan
.
Это баг. fan_cmd
должен равняться 0
при IDLE
. The 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
.