Wiren Board 6 управляет котлом через шлюз Modbus-OpenTherm
Есть задача подключения оборудования котельной коттеджа в систему Умный дом. В качестве контроллера умного дома выбран Wiren Board 6 (WB6). В котельной установлен одноконтурный котел Thermona, который греет контур отопления (радиаторы в комнатах, подключенные через коллектор) и греет горячую воду в накопительной емкости косвенного нагрева.
У этого котла есть возможность подключения по цифровому интерфейсу OpenTherm для внешнего управления, что позволяет получить от котла необходимую телеметрическую информацию и задавать ему основные параметры работы.
Для подключения контроллера к котлу по OpenTherm решил использовать шлюз Nevoton BCG-3.0.1-W ( см. рис. 1)
Рисунок 1
Список поддерживаемых котлов здесь.
Шлюз к контроллеру подключается по интерфейсу RS485 (протокол Modbus RTU).
На сайте производителя шлюза скачал конфигурационный файл для контроллера Wiren Board 6 (в архиве 7zip или в формате json). Разместил файл .json в каталоге /usr/share/wb-mqtt-serial/templates в контроллере и затем ввел шлюз в конфигурацию контроллера через меню Configs/Serial Device Driver Configuration, как уже известное контроллеру устройство (рис. 2). Процесс пошагово выглядит так:
Рисунок 2
- Добавить новое последовательное устройство
- Выбирать Device type из списка: OpenThermMBGateway
- Задать идентификатор устройства (адрес) на шине Modbus – 10 (у меня такой адрес был в заводской установке шлюза).
- Сохранить.
В результате, в WEB-интерфейсе контроллера WB6 появится новое устройство, как показано на рис. 3:
Рисунок 3
Названия каналов этого устройства, в основном, соответствуют названию параметров протокола OpenTherm. И, судя по названиям этих параметров, теперь можно наблюдать всю внутреннюю жизнь котла. Наибольший интерес представляют несколько параметров:
OT_Status – слово статуса котла и мастера. Для выделения отдельных флагов это слово надо парсить любым удобным способом. Можно и с помощью Node-red. Среди флагов есть даже индикатор горения горелки.
OT_Error – флаг ошибки
OT_Modulation – процент модуляции горелки.
OT_BoilerTemperature – температура котловой воды (теплоносителя)
OT_WaterPressure – давление в котловом контуре, бар
OT_DHWsetPoint – заданная температура ГВС. Можно изменять уставку температуры в накопительном водонагревателе в зависимости от сценария автоматики (день/ночь, будни/выходные).
OT_DHWtemp – измеренная температура ГВС
OT_ErrorOEM – код ошибки производителя котла (соответствует коду, индицируемому на панели котла и приведенному в инструкции к котлу). Этот параметр меня интересует больше всего. И лучше всего, когда он равен нулю (нет ошибок).
OT_ControlSetpoint – заданная целевая температура котловой воды. Это основной параметр, с помощью которого производится управление теплогенерацией котла.
Котел не знает какова желаемая температура воздуха в помещении. Он только исполняет команду внешнего управляющего термостата: «Подайте, любезный, теплоноситель с температурой 57 градусов, пожалуйста». Таким термостатом будет виртуальное устройство «Терморегулятор» на контроллере WB6. Он будет вычислять, какой температуры теплоноситель должен подаваться в отопительную систему в зависимости от внешних параметров для достижения желаемой температуры воздуха в помещении.
Рисунок 4
В этой статье описываю виртуальное устройство «Терморегулятор» с реализацией управления по погодозависимому алгоритму, когда котел подает в отопительную систему теплоноситель с температурой, выбранной по температурной кривой в зависимости от температуры на улице. Таких температурных кривых в «Терморегуляторе» предусмотрено несколько и можно произвести переключение с одной кривой на другую для адаптации к особенностям конкретного обогреваемого строения.
Температура котловой воды Tboiler рассчитывается по следующей замысловатой формуле:
Tboiler = ax2 + bx + c,
где: a = -0,21k — 0,06; b = 6,04k + 1,98; с = -5,06k + 18,06; x = -0.2*Toutside + 5; k = 0.1 … 3 – коэффициент, учитывающий характеристики помещения (теплопотери, отапливаемая площадь и проч.)
Интерфейс виртуального устройства реализовал скриптом WB6, а функционал виртуального устройства средствами node-red (рис. 5). Использованы ноды node-red-contrib-Wiren Board, предложенные пользователем apopov.
Рисунок 5
Чтобы удобно было задавать температурный режим для помещений и измерять комнатную температуру, я воспользовался комнатным пультом ПУ-3 (рис. 6) с интерфейсом RS485 (Modbus RTU), который предложил автор статьи (Управление климатом в комнате с радиаторным отоплением при помощи сенсорной панели термостата).
Рисунок 6
Для питания контроллера, шлюза и пультов можно использовать один блок питания +24V.
Вот так выглядит установленное оборудование в щитке автоматики в котельной (рис.7):
Рисунок 7
В котельной у нас расположен еще счетчик ХВС Valtec VLF-UI 15, счетчик газа c импульсным выходом и рядом в главном щите стоит счетчик электроэнергии Меркурий- 206. Подключим к контроллеру и все счетчики, а для этого установим модуль опроса счетчиков NEVOTON PCR-6.0.1-E.
Этот модуль взаимодействует с контроллером по интерфейсу Ethernet. Попросту, он должен быть подключен к той же локальной сети, что и контроллер (проводом Ethernet или через Wi-Fi-канал). В WEB-интерфейсе модуля можно произвести настройки подключения к MQTT-брокеру контроллера Wiren Board 6, указав IP-адрес и порт контроллера. Имена топиков можно не указывать – в настройках по умолчанию на заводе уже прописаны допустимые для Wiren Board 6 топики.
После включения модуля опроса счетчиков в локальную сеть и выполнении указанных настроек в WEB-интерфейсе контроллера появится новое устройство PCR-6.0.1 (рис. 8) с показаниями всех подключенных к нему счетчиков.
Рисунок 8
Подробнее, о применении модуля опроса счетчиков NEVOTON PCR-6.0.1-E можно узнать тут и тут: