Термостат Siemens RDF302
Работа по Modbus
Термостатом можно управлять по протоколу Modbus RTU. На физическом уровне он подключается через интерфейс RS-485.
Настраивать термостат можно с помощью утилиты modbus_client или использовать приложения для компьютера на ОС Windows.
В этой статье мы будем использовать утилиту modbus_client
. Синтаксис и параметры командной строки можно посмотреть на странице утилиты в разделе Аргументы командной строки.
Wbincludes:Modbus: Preparing for work
Настройка для работы с ПО
Установка параметров подключения
Перед началом работы с термостатом нужно назначить ему modbus-адрес и задать параметры подключения.
По умолчанию в термостате заданы параметры: Адрес — 1, Скорость — 19200 бит/с, Четность — Even.
Так как у всех устройств Wiren Board параметры интерфейса по умолчанию: Скорость — 9600 бит/с, Четность — None, то в термостате нужно выставить такие же параметры. Это позволит работать термостату на одной шине с другими устройствами Wiren Board.
Выберите новую скорость интерфейса RS-485 термостата, для этого запишите в регистр P68(0x0043) значение 1
— 9600 бит/с:
modbus_client --debug -mrtu -b19200 -peven -s2 /dev/ttyRS485-1 -a1 -t0x06 -r0x0043 1
Установите четность, для этого запишите в регистр P70(0x0045) значение 1
— Even:
modbus_client --debug -mrtu -b19200 -peven -s2 /dev/ttyRS485-1 -a1 -t0x06 -r0x0045 1
Теперь укажите новый modbus-адрес, для этого запишите в регистр P81(0x0050) новый адрес, например — 2
:
modbus_client --debug -mrtu -b19200 -peven -s2 /dev/ttyRS485-1 -a1 -t0x06 -r0x0050 2
Чтобы применить новые настройки — перезагрузите термостат, для этого отключите питание или снимите и поставьте назад лицевую панель. После перезагрузки термостат будет доступен по указанному выше адресу и с выбранными параметрами интерфейса связи.
Шаблон устройства
ВНИМАНИЕ: шаблон для термостата Siemens RDF302 включен в поставку драйвера wb-mqtt-serial, начиная с версии 2.7.0. Текущую версию шаблона можно также скачать из нашего репозитория: config-siemens-rdf302.json.
Выберите шаблон термостата в разделе «Serial Device Driver Configuration» веб-интерфейса:
- Откройте веб-интерфейс и перейдите Configs → Serial Device Driver Configuration.
- Выберите один из двух интерфейсов связи и установите параметры интерфейса: Baud rate — 9600 бит/с, Parity — N.
- Нажмите на кнопку + Device и в поле Device N выберите Siemens RDF302, где N — порядковый номер устройства.
- В поле Slave id укажите modbus-адрес термостата.
- Сохраните настройки нажатием на кнопку Save.
Теперь устройство будет доступно на вкладке Devices, но перед использованием нужно выбрать одно из четырех приложений.
Вы можете дополнить шаблон по своему усмотрению — смотрите описание шаблонов в статье Драйвер wb-mqtt-serial.
Выбор приложения
Приложение — это набор параметров и алгоритмов которые термостат использует в своей работе.
Приложения запрограммированы с завода, всего их четыре:
- 2-pipe,
- 2-pipe 3-position,
- 2-pipe with electric heater,
- 4-pipe
ВНИМАНИЕ: для удаленного выбора приложения нужно перевести все DIP-переключатели на плате термостата в положение OFF — этот режим включен по умолчанию.
Выбрать приложение можно в настройках термостата в разделе «Serial Device Driver Configuration» веб-интерфейса:
- Откройте веб-интерфейс и перейдите Configs → Serial Device Driver Configuration.
- Выберите интерфейс связи, к которому подключено устройство.
- Найдите в перечне устройств термостат и в поле Plant type выберите одно из четырех приложений. Сразу можете установить параметры управления в поле P01. Control sequence.
- Сохраните настройки нажатием на кнопку Save.
Подробнее о приложениях и параметрах управления читайте в документации к термостату.
Изменение настроек термостата
Часть важных настроек вынесена в шаблон и их можно изменить в веб-интерфейсе, но на этапе пусконаладки может потребоваться изменить конфигурацию входов или изменить режим работы.
Это можно сделать через запись нужных значений в регистры термостата.
В примерах термостат у подключен к интерфейсу /dev/ttyRS485-1
, имеет настройки интерфейса 9600/None/2/8
и доступен по адресу 2
.
Общий алгоритм настройки
- Ищете адрес регистра, функцию записи.
- Смотрите возможные значения.
- Записываете в регистр значение, которое попадает в диапазон возможных.
Блокировка кнопок
Мы хотим заблокировать все физические кнопки на термостате:
- Состояние блокировки хранится в регистре Button lock command с адресом
0x006B
. Функция записи —0x06
. - Возможные значения: число от ноля до четырех. Мы хотим заблокировать все кнопки: 4 — Lock all buttons.
- Теперь запишите нужное значение в регистр Button lock command:
~# modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a2 -t0x06 -r0x006B 4 Data to write: 0x4 Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2) [01][06][00][6B][00][04][F9][D5] Waiting for a confirmation... <01><06><00><6B><00><04><F9><D5> SUCCESS: written 1 elements!
Кнопки термостата заблокированы. Для разблокировки запишите в регистр Button lock command значение 0 — Unlock.
Управление вентилятором в ручном режиме
Теперь переключим вентилятор в ручной режим и установим среднюю скорость вращения:
- Значение режима вентилятора хранится в регистре Fan command value с адресом
0x0065
. Функция записи —0x06
. - Возможные значения: 0 — Auto, 33 — Low Fan, 66 — Mid Fan, 100 — High Fan.
- Теперь запишите нужное значение в регистр Fan command value:
~# modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a2 -t0x06 -r0x0065 66 Data to write: 0x42 Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2) [01][06][00][65][00][42][19][E4] Waiting for a confirmation... <01><06><00><65><00><42><19><E4> SUCCESS: written 1 elements!
Вентилятор будет вращаться со средней скоростью. Чтобы вернуть вентилятор в автоматический режим, запишите в регистр Fan command value значение 0 — Auto.
Чтение и запись значений температуры
Значение температуры нужно конвертировать перед записью или после чтения.
Если мы прочитаем значение текущей уставки из регистра Room Temperature: Comfort setpoint, 0x0066 — получим:
~# modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a2 -t0x03 -r0x0066
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[01][03][00][66][00][01][64][15]
Waiting for a confirmation...
<01><03><02><04><1A><3B><4F>
SUCCESS: read 1 of elements:
Data: 0x03b6
0x03b6 — это число 950. Посмотрев этот параметр на самом термостате видим, что там указано 19°С. Вычисляем коэффициент: 19 / 950 = 0.02
. Это значит, что при записи нам нужно разделить число на наш коэффициент, а при чтении умножить. Запишем в регистр значение 12°C: 12 / 0.02 = 600
:
:~# modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a2 -t0x06 -r0x0066 600
Data to write: 0x258
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[01][06][00][66][02][58][69][4F]
Waiting for a confirmation...
<01><06><00><66><02><58><69><4F>
SUCCESS: written 1 elements!
Таблицы modbus-регистров
Ниже представлены таблицы регистров термостата Siemens RDF302. В отличие от таблиц в руководстве, адреса регистров указаны в новом шестнадцатеричном формате. Подробнее о параметрах и регистрах читайте в документации.
Служебные регистры
Назначение | Длина, байт | Адрес, Hex | Функция чтения | Функция записи | По умолчанию | Возможные значения |
---|---|---|---|---|---|---|
System Time | 4 | 0x0257 | 0x03 | 0x10 | YYYY 1900…2155 = Year MM 1…12 = Month DD 1…31 = Day of Month d 0, 1…7 = Any,Mon…Sun hh 0…23 = Hours mm 0…59 = Minutes ss 0…59 = Seconds - - - Status bits | |
Room operating mode: State | 1 | 0x03E8 | 0x04 | - | Comfort | 1=Comfort, 3=Economy, 4=Protection |
Fan output | 1 | 0x03E9 | 0x04 | - | 0 | 0 = Fan off 33 = Low Fan 66 = Mid Fan 100 = High Fan |
Room temperature | 1 | 0x03EA | 0x04 | - | 0 … 49 °C, 0xffff=Out of services | |
Room temperature: Current setpoint | 1 | 0x03EB | 0x04 | - | 5 … 40 °C, 4=OFF | |
Heating output | 1 | 0x03EC | 0x04 | - | 0 | [0…100] |
Cooling output | 1 | 0x03ED | 0x04 | - | 0 | [0…100] |
Electric heater output | 1 | 0x03EE | 0x04 | - | 0 | [0…100] |
Fault information | 10 | 0x044B | 0x04 | - | len <= 20 | |
X1 (temperature) ** | 1 | 0x03EF | 0x04 | - | 0 … 49 °C 0xffff = Out of services | |
X2 (temperature) ** | 1 | 0x03F0 | 0x04 | - | 0 … 49 °C 0xffff = Out of services | |
Fan operation (0=Auto / 1=Manual) | 1 | 0x03F1 | 0x04 | - | 0 | 0 = Automatic 1 = Manual |
X1 (digital) ** | 1 | 0x03F2 | 0x04 | - | OFF | 0 = OFF 1 = ON |
X2 (digital) ** | 1 | 0x03F3 | 0x04 | - | OFF | 0 = OFF 1 = ON |
Room operating mode: Preselection | 1 | 0x0064 | 0x03 | 0x06 | Comfort | 1=Comfort, 3=Economy, 4=Protection |
Fan command value | 1 | 0x0065 | 0x03 | 0x06 | 0 | 0 = Auto 33 = Low Fan 66 = Mid Fan 100 = High Fan |
Room Temperature: Comfort setpoint | 1 | 0x0066 | 0x03 | 0x06 | 5 … 40 °C | |
Outside temperature | 1 | 0x0067 | 0x03 | 0x06 | 0 … 49 °C | |
Room operating mode: Window state | 1 | 0x0068 | 0x03 | 0x06 | Close | 0 = Close (default) 1 = Open |
Enable electric heater | 1 | 0x0069 | 0x03 | 0x06 | Enable | 0 = Disable 1 = Enable |
Heating/cooling changeover | 1 | 0x006A | 0x03 | 0x06 | heating | 0 = cooling, 1 = heating |
Button lock command | 1 | 0x006B | 0x03 | 0x06 | Unlock | 4 = Lock all buttons 3 = Lock operating button only 2 = Lock fan button only 1 = Lock buttons (+ & -) only 0 = Unlock |
Plant type | 1 | 0x006C | 0x03 | 0x06 | NONE | 0=NONE 1=2-pipe 2=2-pipe 3-position 3=2-pipe with electric heater 4=4-pipe |
Fault text 1 | 10 | 0x00C7 | 0x03 | 0x10 | Condensation in room | len <= 20 |
Fault text 2 | 10 | 0x012B | 0x03 | 0x10 | Fault input 1 | len <= 20 |
Fault text 3 | 10 | 0x018F | 0x03 | 0x10 | Fault input 2 | len <= 20 |
Fault text 4 | 10 | 0x01F3 | 0x03 | 0x10 | Filter dirty | len <= 20 |
Регистры общего назначения
Параметр | Назначение | Длина, байт | Адрес, Hex | Функция чтения | Функция записи | По умолчанию | Возможные значения |
---|---|---|---|---|---|---|---|
P01 | Control sequence | 1 | 0x0000 | 0x03 | 0x06 | 2-pipe: [0…3] 1 (Cooling only) 4-pipe: [2…4] 4 (Heating & Cooling) | 0 = Heating only 1 = Cooling only 2 = Manual Heating or Cooling 3 = Auto Changeover 4 = Heating & cooling |
P02 | Mode selection by user via operating mode button | 1 | 0x0001 | 0x03 | 0x06 | 1 (Comfort, Protection) | 1 = Comfort, Protection 2 = Comfort, Economy, Protection |
P04 | Selection of °C or °F | 1 | 0x0003 | 0x03 | 0x06 | °C | 0 = °C 1 = °F |
P05 | Sensor calibration (build in sensor only) | 1 | 0x0004 | 0x03 | 0x06 | 0.0 °C | -3…3 °C |
P06 | Standard temperature display | 1 | 0x0005 | 0x03 | 0x06 | 0 (Room temperature) | 0 = Room temperature 1 = Setpoint |
P07 | Additional user information | 1 | 0x0006 | 0x03 | 0x06 | 0 (No display) | 0 = No display 1 = Temperature in °C/°F 2 = Outside temperature (0…49 °C) (via Modbus) 3 = Time of day (12 h, via Modbus) 4 = Time of day (24 h, via Modbus) |
P08 | Comfort basic setpoint | 1 | 0x0007 | 0x03 | 0x06 | 21 °C | 5…40 °C |
P09 | Minimum setpoint limitation in Comfort (WminComf) | 1 | 0x0008 | 0x03 | 0x06 | 5 °C | 5…40 °C |
P10 | Maximum setpoint limitation in Comfort (WmaxComf) | 1 | 0x0009 | 0x03 | 0x06 | 35 °C | 5…40 °C |
P11 | Setpoint of heating in Economy (WheatEco) | 1 | 0x000A | 0x03 | 0x06 | 15 °C | OFF, 5 °C…WcoolEco |
P12 | Setpoint of cooling in Economy (WcoolEco) | 1 | 0x000B | 0x03 | 0x06 | 30 °C | OFF, WheatEco…40 °C |
P13 | Electrical heater in cooling mode | 1 | 0x000C | 0x03 | 0x06 | ON | OFF = disabled ON = enabled |
P14 | Key lock (Press operating mode button for 5 seconds to lock or unlock the buttons) | 1 | 0x000D | 0x03 | 0x06 | 0 (Disabled) | 0 = Disabled 1 = Auto lock 2 = Manual lock |
P30 | P-band/Switching differential for heating mode | 1 | 0x001D | 0x03 | 0x06 | 2 K | 0.5 … 6 K |
P31 | P-band/Switching differential for cooling mode | 1 | 0x001E | 0x03 | 0x06 | 1 K | 0.5 … 6 K |
P33 | Dead zone in Comfort mode | 1 | 0x0020 | 0x03 | 0x06 | 2 K | 0.5 … 5 K |
P34 | Setpoint differential | 1 | 0x0021 | 0x03 | 0x06 | 2 K | 0.5 … 5 K |
P35 | Integral time | 1 | 0x0022 | 0x03 | 0x06 | 5 min | 0…10 min |
P36 | Heating/cooling changeover switching point for cooling | 1 | 0x0023 | 0x03 | 0x06 | 16 °C | 10…25 °C |
P37 | Heating/cooling changeover switching point for heating | 1 | 0x0024 | 0x03 | 0x06 | 28 °C | 27…40 °C |
P38 | Input X1 | 1 | 0x0025 | 0x03 | 0x06 | 3 = Op mode c/o | 0 = — (no function) 1 = Room temp ext. sensor / Return air temp (AI) 2 = H/C changeover (AI/DI) 3 = Operating mode contact (DI) 4 = Dew point sensor (DI) 5 = Enable electric heater (DI) 6 = Fault input (DI) 7 = Monitor input (Digital) 8 = Monitor input (Temp) |
P39 | Operating action for X1 if digital input | 1 | 0x0027 | 0x03 | 0x06 | NO | NO = Normally Open NC = Normally Close |
P40 | Input X2 | 1 | ↑ | ↑ | ↑ | 1 = Ext. sensor | 0 = — (no function) 1 = Room temp ext. sensor / Return temp (AI) 2 = H/C changeover (AI/DI) 3 = Operating mode contact (DI) 4 = Dew point sensor (DI) 5 = Enable electric heater (DI) 6 = Fault input (DI) 7 = Monitor input (Digital) 8 = Monitor input (Temp) |
P41 | Operating action for X2 if digital input | 1 | 0x0028 | 0x03 | 0x06 | 0 (N.O.) | 0 = Normally Open 1 = Normally Close |
P44 | Actuator running time Y11/Y21 | 1 | 0x002B | 0x03 | 0x06 | 150 s | 20…300 sec |
P46 | Y2x load current | 1 | 0x00B5 | 0x03 | 0x06 | 0.0 A | 0.0 to 5.0 A |
P48 | On time minimum for 2-pos output control | 1 | 0x002F | 0x03 | 0x06 | 1 min. | 1…20 min |
P49 | Off time minimum for 2-pos output control | 1 | 0x0030 | 0x03 | 0x06 | 1 min. | 1…20 min |
P50 | Purge time | 1 | 0x0031 | 0x03 | 0x06 | OFF | OFF: Not active 1…5 min: Active with selected duration |
P51 | Flow temp limit floor heating | 1 | 0x0032 | 0x03 | 0x06 | OFF | OFF, 10…50 °C |
P52 | Fan control | 1 | 0x0033 | 0x03 | 0x06 | 1 | 0 = Disabled 1 = Enabled 2 = Heating only 3 = Cooling only |
P53 | Fan speeds | 1 | 0x0034 | 0x03 | 0x06 | 2 | 1 = 1-speed 2 = 3-speed |
P54 | Fan overrun time | 1 | 0x0035 | 0x03 | 0x06 | 60 sec | 0…360 sec |
P55 | Fan speed switching point high | 1 | 0x0036 | 0x03 | 0x06 | 100% | 80…100% |
P56 | Fan speed switching point med | 1 | 0x0037 | 0x03 | 0x06 | 65% | 30..75% |
P57 | Fan speed switching point low | 1 | 0x0038 | 0x03 | 0x06 | 10% | 1…15% |
P58 | Fan start kick | 1 | 0x0039 | 0x03 | 0x06 | ON | ON: Enabled OFF: Disabled |
P59 | Fan minimum on time | 1 | 0x003A | 0x03 | 0x06 | 2 min | 1…6 min |
P60 | Periodic fan kick Comfort | 1 | 0x003B | 0x03 | 0x06 | 0 | 0…89 min, OFF(90) |
P61 | Periodic fan kick Eco | 1 | 0x003C | 0x03 | 0x06 | OFF | 0…359 min, OFF(360) |
P62 | Service filter | 1 | 0x003D | 0x03 | 0x06 | Off (0) | Off, 100…9900 hrs |
P65 | Protection heating setpoint | 1 | 0x0040 | 0x03 | 0x06 | 8 °C | OFF, 5…WCoolProt; WCoolProt = 40 °C max |
P66 | Protection cooling setpoint | 1 | 0x0041 | 0x03 | 0x06 | OFF | OFF, WHeatProt… 40; WHeatProt = 5°C min |
P68 | Baud Rate | 1 | 0x0043 | 0x03 | 0x06 | 2 | 0 = 4800 BPS 1 = 9600 BPS 2 = 19200 BPS 3 = 38400 BPS |
P69 | Temporary Comfort setpoint | 1 | 0x0044 | 0x03 | 0x06 | OFF | OFF = Disabled ON = Enabled |
P70 | Parity | 1 | 0x0045 | 0x03 | 0x06 | 1 | 0 = Odd 1 = Even 2 = No parity |
P71 | Restore factory setting | 1 | 0x0046 | 0x03 | 0x06 | OFF | OFF = Disabled ON = Reload start “8888” is displayed for 3s during reload process |
P81 | Device address | 1 | 0x0050 | 0x03 | 0x06 | 1 | 1…247 |