Siemens RDF302: различия между версиями

м
Изменил структуру
м (Изменил структуру)
Строка 1: Строка 1:
{{DISPLAYTITLE: Термостат Siemens RDF302 }}
{{DISPLAYTITLE: Термостат Siemens RDF302 }}
[[Image: Siemens RDF302.png|300px|thumb|right| Термостат Siemens RDF302]]
[[Image: Siemens RDF302.png|300px|thumb|right| Термостат Siemens RDF302]]
== Работа по Modbus ==
== Представление в веб-интерфейсе ==
Термостатом можно управлять по протоколу [[Протокол_Modbus|Modbus RTU]]. На физическом уровне он подключается через интерфейс [[RS-485]].
 
Настраивать термостат можно с помощью утилиты [[Modbus-client|modbus_client]] или использовать [[Working with WB devices without a controller|приложение для компьютера на ОС Windows]].
 
В этой статье мы будем использовать утилиту <code>modbus_client</code>, а подключаться к контроллеру через [[SSH]]. Синтаксис и параметры командной строки можно посмотреть на странице утилиты в разделе [[Modbus-client#Аргументы командной строки|Аргументы командной строки]].
 
== Подготовка к работе ==
{{Wbincludes:Modbus: Preparing for work}}
 
== Изменение настроек термостата ==
Часть важных настроек вынесена в шаблон и их можно изменить в веб-интерфейсе, но на этапе пусконаладки может потребоваться изменить конфигурацию входов или изменить режим работы. Это можно сделать через запись нужных значений в [[#Таблицы modbus-регистров | регистры термостата]].
 
В примерах термостат у подключен к интерфейсу <code>/dev/ttyRS485-1</code>, имеет настройки интерфейса <code>9600/None/2/8</code> и доступен по адресу <code>2</code>.
 
'''ВНИМАНИЕ:''' доступность параметров зависит от выбранного приложения и режимов работы, подробнее читайте в [[#Документация |документации к термостату]].
 
=== Установка параметров подключения ===
Перед началом работы с термостатом нужно назначить ему modbus-адрес и задать параметры подключения.
 
По умолчанию в термостате заданы параметры: Адрес — 1, Скорость — 19200 бит/с, Четность — Even.
 
Так как у всех устройств Wiren Board параметры интерфейса по умолчанию: Скорость — 9600 бит/с, Четность — None, то в термостате нужно выставить такие же параметры. Это позволит работать термостату на одной шине с другими устройствами Wiren Board.
 
Выберите новую скорость интерфейса RS-485 термостата, для этого запишите в регистр P68(0x0043) значение <code>1</code> — 9600 бит/с:
<syntaxhighlight lang="bash">
modbus_client --debug -mrtu -b19200 -peven -s2 /dev/ttyRS485-1 -a1 -t0x06 -r0x0043 1
</syntaxhighlight>
 
Установите четность, для этого запишите в регистр P70(0x0045) значение <code>2</code> — No parity (None):
<syntaxhighlight lang="bash">
modbus_client --debug -mrtu -b19200 -peven -s2 /dev/ttyRS485-1 -a1 -t0x06 -r0x0045 2
</syntaxhighlight>
 
Теперь укажите новый modbus-адрес, для этого запишите в регистр P81(0x0050) новый адрес, например — <code>2</code>:
<syntaxhighlight lang="bash">
modbus_client --debug -mrtu -b19200 -peven -s2 /dev/ttyRS485-1 -a1 -t0x06 -r0x0050 2
</syntaxhighlight>
 
Чтобы применить новые настройки — перезагрузите термостат, для этого отключите питание или снимите и поставьте назад лицевую панель. После перезагрузки термостат будет доступен по указанному выше адресу и с выбранными параметрами интерфейса связи.
[[Image: Siemens RDF302 DIP-swithes.png|200px|thumb|right| DIP-переключатели. Включен режим удаленного выбора приложения]]
 
=== Общий алгоритм настройки ===
# Ищете адрес регистра, функцию записи.
# Смотрите возможные значения.
# Записываете в регистр значение, которое попадает в диапазон возможных.
 
=== Блокировка кнопок ===
 
Мы хотим заблокировать все физические кнопки на термостате:
# Состояние блокировки хранится в регистре '''Button lock command''' с адресом <code>0x006B</code>. Функция записи — <code>0x06</code>.
# Возможные значения: число от ноля до четырех. Мы хотим заблокировать все кнопки: 4 — Lock all buttons.
# Теперь запишите нужное значение в регистр '''Button lock command''':
#:<syntaxhighlight lang="bash">
~# 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!
</syntaxhighlight>
 
Кнопки термостата заблокированы. Для разблокировки запишите в регистр '''Button lock command''' значение 0 — Unlock.
 
===Управление вентилятором в ручном режиме===
 
Теперь переключим вентилятор в ручной режим и установим среднюю скорость вращения:
# Значение режима вентилятора хранится в регистре '''Fan command value''' с адресом <code>0x0065</code>. Функция записи — <code>0x06</code>.
# Возможные значения: 0 — Auto, 33 — Low Fan, 66 — Mid Fan, 100 — High Fan.
# Теперь запишите нужное значение в регистр '''Fan command value''':
#:<syntaxhighlight lang="bash">
~# 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!
</syntaxhighlight>
 
Вентилятор будет вращаться со средней скоростью. Чтобы вернуть вентилятор в автоматический режим, запишите в регистр '''Fan command value''' значение 0 — Auto.
 
===Чтение и запись значений температуры===
Значение температуры нужно конвертировать перед записью или после чтения.
 
Если мы прочитаем значение текущей уставки из регистра Room Temperature: Comfort setpoint, 0x0066 — получим:
<syntaxhighlight lang="bash">
~# 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
</syntaxhighlight>
 
0x03b6 — это число 950. Посмотрев этот параметр на самом термостате видим, что там указано 19°С. Вычисляем коэффициент: <code>19 / 950 = 0.02</code>. Это значит, что при записи нам нужно разделить число на наш коэффициент, а при чтении умножить. Запишем в регистр значение 12°C: <code>12 / 0.02 = 600</code>:
<syntaxhighlight lang="bash">
:~# 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!
</syntaxhighlight>
 
== Настройка для работы с ПО ==
[[Image: Devices View Siemens RDF302.png |300px|thumb|right| Представление Siemens RDF302 в веб-интерфейсе]]
[[Image: Devices View Siemens RDF302.png |300px|thumb|right| Представление Siemens RDF302 в веб-интерфейсе]]


Перед настройкой термостата в веб-интерфейсе, установите в нем [[#Установка параметров подключения | параметры подключения]].
Для отображения устройства в веб-интерфейсе контроллера Wiren Board вам нужно добавить новое serial-устройство и выбрать шаблон '''Siemens RDF302'''.  
=== Шаблон устройства ===
'''ВНИМАНИЕ:''' шаблон для термостата Siemens RDF302 включен в поставку драйвера [[Драйвер wb-mqtt-serial|wb-mqtt-serial]], начиная с версии 2.7.0. Текущую версию шаблона можно также скачать из нашего репозитория: [https://github.com/wirenboard/wb-mqtt-serial/tree/master/wb-mqtt-serial-templates/config-siemens-rdf302.json config-siemens-rdf302.json].
 
Выберите шаблон термостата в разделе «Serial Device Driver Configuration» веб-интерфейса:
# Откройте веб-интерфейс и перейдите '''Configs''' → '''Serial Device Driver Configuration'''.
# Выберите один из двух интерфейсов связи и установите параметры интерфейса: Baud rate — 9600 бит/с, Parity — N, Data bits — 8, Stop bits — 2.
# Нажмите на кнопку '''+ Device''' и в поле '''Device N''' выберите '''Siemens RDF302''', где N — порядковый номер устройства.
# В поле '''Slave id''' укажите modbus-адрес термостата.
# Сохраните настройки нажатием на кнопку '''Save'''.


Теперь устройство будет доступно на вкладке '''Devices''', но перед использованием нужно выбрать одно из [[#Выбор приложения | четырех приложений]].
Смотрите также:
 
* [[RS-485:Configuration via Web Interface | Начальное конфигурирование устройств через веб-интерфейс]]
Вы можете дополнить шаблон по своему усмотрению — смотрите описание шаблонов в статье [[Драйвер wb-mqtt-serial:Примеры написания шаблонов | Драйвер wb-mqtt-serial]].
* [[Драйвер wb-mqtt-serial:Примеры написания шаблонов | Примеры написания шаблонов]]


=== Выбор приложения ===
=== Выбор приложения ===
[[Image: Siemens RDF302 DIP-swithes.png|200px|thumb|right| DIP-переключатели. Включен режим удаленного выбора приложения]]
[[Image: Siemens RDF302 Setup.png|300px|thumb|right| Установка параметров Siemens RDF302]]
[[Image: Siemens RDF302 Setup.png|300px|thumb|right| Установка параметров Siemens RDF302]]
Приложение — это набор параметров и алгоритмов которые термостат использует в своей работе.
Приложение — это набор параметров и алгоритмов которые термостат использует в своей работе.
Строка 139: Строка 23:
'''ВНИМАНИЕ:''' для удаленного выбора приложения нужно перевести все DIP-переключатели на плате термостата в положение OFF — этот режим включен по умолчанию.
'''ВНИМАНИЕ:''' для удаленного выбора приложения нужно перевести все DIP-переключатели на плате термостата в положение OFF — этот режим включен по умолчанию.


Выбрать приложение можно в настройках термостата в разделе «Serial Device Driver Configuration» веб-интерфейса:
Выбрать приложение можно в настройках термостата в разделе '''Serial Device Driver Configuration''' веб-интерфейса:
# Откройте веб-интерфейс и перейдите '''Configs''' → '''Serial Device Driver Configuration'''.
# Откройте веб-интерфейс и перейдите '''Settings''' → '''Configs''' → '''Serial Device Driver Configuration'''.
# Выберите интерфейс связи, к которому подключено устройство.
# Выберите интерфейс связи, к которому подключено устройство.
# Найдите в перечне устройств термостат и в поле '''Plant type''' выберите одно из четырех приложений. Сразу можете установить параметры управления в поле '''P01. Control sequence'''.
# Найдите в перечне устройств термостат и в поле '''Plant type''' выберите одно из четырех приложений. Сразу можете установить параметры управления в поле '''P01. Control sequence'''.
Строка 147: Строка 31:
Подробнее о приложениях и параметрах управления читайте в документации к термостату.
Подробнее о приложениях и параметрах управления читайте в документации к термостату.


== Таблицы modbus-регистров==
{{Wbincludes:Modbus Aliens}}
Ниже представлены таблицы регистров термостата Siemens RDF302. В отличие от таблиц в руководстве, адреса регистров указаны в новом шестнадцатеричном формате. Подробнее о параметрах и регистрах читайте в документации.
 
=== Параметры порта ===
По умолчанию устройство имеет настройки:
* Baud rate — 19 200 бит/с,
* Parity — Even,
* Data bits — 8,
* Stop bits — 1.
 
Параметры порта <code>Baud rate</code> и <code>Parity</code> можно настроить записав в регистры выбранные значения:
{|class="wikitable sortable" style="text-align:center;"
! Параметр
! Адрес, Hex
! Тип регистра
! По умолчанию
! Возможные значения
|-
| style="text-align:left;" | Baud Rate
| 0x0043
| Holding
| 2
| style="text-align:left;" | 0 = 4800 бит/с<br>1 = 9600 бит/с<br>2 = 19200 бит/с<br>3 = 38400 бит/с
|-
| style="text-align:left;" | Parity
| 0x0045
| Holding
| 1
| style="text-align:left;" | 0 = Odd<br>1 = Even<br>2 = No parity
|}
=== Modbus-адрес ===
По умолчанию в термостате задан modbus-адрес — <code>1</code>, изменить его можно записав в регистр значение от 1 до 247:
{|class="wikitable sortable" style="text-align:center;"
! Параметр
! Адрес, Hex
! Тип регистра
! По умолчанию
! Возможные значения
|-
| style="text-align:left;" | Device address
| 0x0050
| Holding
| 1
| style="text-align:left;" | 1…247
|}
 
=== Карта регистров ===
Таблицы регистров термостата Siemens RDF302. Значения температуры при чтении нужно умножить на <code>0.02</code>, а при записи разделить. Подробнее о параметрах и регистрах читайте в документации.


=== Служебные регистры ===
==== Служебные регистры ====
{|class="wikitable sortable"
{|class="wikitable sortable"
!width="17%"| '''Назначение'''
!width="17%"| '''Назначение'''
Строка 377: Строка 306:
|}
|}


=== Регистры общего назначения ===
==== Регистры общего назначения ====


{|class="wikitable sortable"
{|class="wikitable sortable"