Уточнение, тестирование и отладка подсистемы

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

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

  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:

    • Name: devel_harness1

    • Очистить 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_harness1.

  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

    • Sample time: 1

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

  5. Соедините Inport блоки с входами Data Store Write.

  6. В диалоговом окне Параметров конфигурации на панели 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. The 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.

Похожие темы