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

м
Строка 73: Строка 73:


=== Изменение настроек термостата ===
=== Изменение настроек термостата ===
Часть важных настроек вынесена в веб-интерфейс, но на этапе пусконаладки может потребоваться изменить конфигурацию входов или изменить режим работы.
Это можно сделать через запись нужных значений в [[#Таблицы modbus-регистров | регистры термостата]].
==== Алгоритм настройки ====
# Ищете адрес регистра, функцию записи.
# Смотрите возможные значения.
# Записываете в регистр значение, которое попадает в диапазон возможных.
==== Блокировка кнопок ====
Мы хотим заблокировать все физические кнопки на термостате:
# Состояние блокировки хранится в регистре '''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>


== Таблицы modbus-регистров==
== Таблицы modbus-регистров==