Совершенствуйте, протестируйте и отладьте подсистему

Тестовые обвязки обеспечивают среду разработки и тестовую среду, которая оставляет основной образцовый проект неповрежденным. Можно протестировать функциональный блок модели в изоляции, не изменяя основную модель. Этот пример демонстрирует совершенствование и тестирование подсистемы контроллера с помощью тестовой обвязки. Основная модель является моделью объекта управления контроллера кондиционера / модуль теплового насоса. Контроллер должен действовать согласно нескольким простым требованиям.

Модель и требования

  1. Доступ к модели. Войти

    cd(fullfile(docroot,'toolbox','sltest','examples'))
  2. Скопируйте этот образцовый файл и вспомогательные файлы к перезаписываемому местоположению на пути MATLAB®:

    sltestHeatpumpExample.slx
    sltestHeatpumpBusPostLoadFcn.mat
    PumpDirection.m
  3. Откройте модель.

    open_system('sltestHeatpumpExample')

В модели в качестве примера:

  • Контроллер принимает комнатную температуру и входные параметры установленной температуры.

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

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

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

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

Создайте обвязку для контроллера

  1. Щелкните правой кнопкой по подсистеме Controller и выберите Test Harness > Create for ‘Controller’.

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

    Во вкладке Basic Properties:

    • Имя: devel_harness_1

    • Очистите Save test harness externally

    • Sources and Sinks: None и Scope

    • Очистите Add separate assessment block

    • Выберите Open harness after creation

  3. Нажмите OK, чтобы создать тестовую обвязку.

Осмотрите и совершенствуйте контроллер

  1. В тестовой обвязке дважды кликните Controller, чтобы открыть подсистему.

  2. Соедините график с блоками Inport.

  3. В тестовой обвязке нажмите кнопку Save, чтобы сохранить тестовую обвязку и модель.

Добавьте тестовые воздействия и протестируйте контроллер

  1. Перейдите к верхнему уровню devel_harness_1.

  2. Создайте тестовое воздействие для обвязки с постоянным Tset и изменяющимся во времени Troom. Соедините блок Constant с входом Tset и установите значение к 75.

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

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

    • Amplitude: 15

    • Bias: 75

    • Frequency: 2*pi/3600

    • Phase (rad): 0

    • 'SampleTime' : 1

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

  5. Соедините блоки Inport с входными параметрами Записи Хранилища данных.

  6. В диалоговом окне Configuration Parameters, в панели Data Import/Export, выбирают Input и вводят u. u является существующей структурой в базовом рабочем пространстве MATLAB.

  7. В панели Solver, набор Stop time к 3600.

  8. Откройте осциллограф в тестовой обвязке и измените размещение, чтобы показать три графика.

  9. Нажмите Run, чтобы моделировать.

Отладьте контроллер

  1. Заметьте, что контроллер вывел. fan_cmd является 1 во время НЕАКТИВНОГО условия где |Troom - Tset| < DeltaT_fan.

    Это - ошибка. fan_cmd должен равняться 0 в IDLE. Управление fan_cmd вывод должно быть изменено для IDLE.

  2. В модели тестовой обвязки откройте подсистему Controller.

  3. Открытый controller_chart.

  4. В состоянии IDLE fan_cmd собирается возвратить 1. Измените fan_cmd, чтобы возвратить 0. IDLE теперь:

    IDLE
    entry:
    fan_cmd = 0;
     pump_cmd = 0;
     pump_dir = 0;
  5. Моделируйте модель тестовой обвязки снова и наблюдайте выходные сигналы.

  6. fan_cmd теперь удовлетворяет требование, чтобы равняться 0 в IDLE.

Похожие темы