Этот пример показывает, как смоделировать систему релейного управления, которая регулирует температуру бойлера. Модель имеет два компонента:
Модель объекта управления является подсистемой Simulink ®, которая моделирует динамику котла.
Bang-Bang Controller является графиком Stateflow ®, которая реализует логику релейного управления.
На графике используются:
временная логика реализации сроков релейного цикла
8-битные данные с фиксированной точкой для представления температуры бойлера
after
ОператорКонтроллер определяет, когда котел включается или отключается. Первоначально котел отключается. Через 40 секунд, если бойлер холодный, котел включается. Через 20 секунд котел отключается, и цикл релейного управления повторяется.
Чтобы управлять переходами между On
и Off
состояния, график вызывает оператор временной логики в абсолютное время after
. Для примера - метка перехода after(20,sec)
запускает переход от On
на Off
после On
состояние активно в течение 20 секунд. Область метки after(40,sec)[cold()]
вызывает переход от Off
на On
произойдет, если функция cold
возвращает true
после Off
состояние активно в течение 40 секунд.
The Off
состояние также использует временную логику для управления светодиодным индикатором состояния. Потому что диаграммы Stateflow в моделях Simulink не поддерживают оператор every
для абсолютной временной логики состояние реализует операцию светодиода с помощью substate Flash
с циклическим переходом. Метка перехода after(5,sec)
запускает действие входа подсостояния и заставляет светодиодный индикатор мигать каждые 5 секунд.
Подсистема Boiler Модель Объекта Управления моделирует температурную реакцию бойлера в периоды нагрева или охлаждения.
В зависимости от выходных данных графика Контроллер, подсистема добавляет или вычитает шаг температуры (+ 1 для нагрева или -0,1 для охлаждения) к предыдущей температуре бойлера и передает результат в подсистему Цифрового Термометра.
Подсистема Цифрового Термометра преобразует полученную температуру в 8-битное представление с фиксированной точкой. Преобразование происходит в три этапа.
Блок Sensor преобразует входную температуру бойлера в промежуточный аналоговый выход напряжения.
Подсистема аналого-цифровой преобразователь (АЦП) оцифровывает аналоговое напряжение от блока датчика, умножая напряжение на, округляя до целого уровня, а затем ограничивая результат максимум 255 (самое большое беззнаковое 8-битное целое значение). Подсистема выводит квантованное целое число.
Блок Linear Fixed-Point Conversion инвертирует объединенную передаточную функцию блоков Sensor и ADC, чтобы кодировать температуру бойлера как число с фиксированной точкой с наклоном и смещением. Эти параметры с фиксированной точкой преобразуют 8-битное квантованное целое число в цифровую закодированную температуру.
График Bang-Bang Controller получает эту цифровую закодированную температуру и интерпретирует ее как беззнаковые 8-битные данные с фиксированной точкой temp
. График обрабатывает эти данные о температуре в 8-битном окружении без каких-либо явных преобразований.
После симуляции осциллограф Simulink показывает, что температура бойлера достигает 20 степеней Цельсия примерно через 450 секунд (7,5 минут). Логика релейного управления эффективно поддерживает эту температуру для остальной части симуляции.
after | every | Data Type Conversion (Simulink)