BAC-6000ALN: различия между версиями
(Создал страницу) |
м (Исправил подпись под изображением.) |
||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Термостат BAC-6000 Series}} | {{DISPLAYTITLE: Термостат BAC-6000 Series}} | ||
[[Image: BAC-6000 Series.png|300px|thumb|right| Термостат BAC-6000 Series, | [[Image: BAC-6000 Series.png|300px|thumb|right| Термостат BAC-6000 Series, черный]] | ||
== Работа по Modbus == | == Работа по Modbus == | ||
Термостатом можно управлять по протоколу [[Протокол_Modbus|Modbus RTU]]. На физическом уровне он подключается через интерфейс [[RS-485]]. | Термостатом можно управлять по протоколу [[Протокол_Modbus|Modbus RTU]]. На физическом уровне он подключается через интерфейс [[RS-485]]. |
Версия 19:51, 15 января 2021
Работа по Modbus
Термостатом можно управлять по протоколу Modbus RTU. На физическом уровне он подключается через интерфейс RS-485.
Настраивать термостат можно с помощью утилиты modbus_client, использовать приложение для компьютера на ОС Windows или из веб-интерфейса контроллера Wiren Board.
В этой статье мы будем использовать утилиту modbus_client
, а подключаться к контроллеру через SSH. Синтаксис и параметры командной строки можно посмотреть на странице утилиты в разделе Аргументы командной строки.
Подготовка к работе
Wbincludes:Modbus: Preparing for work
Изменение настроек термостата
Все настройки, доступные для изменения через RS-485 выведены в веб-интерфейс, но вы можете их изменять из командной строки с помощью утилиты modbus_client
. Для этого нужно записать значения в регистры термостата. Если вы никогда не использовали утилиту modbus_client
, смотрите раздел Подготовка к работе.
В примерах термостат подключен к интерфейсу /dev/ttyRS485-1
, имеет настройки интерфейса 9600/None/1/8
и доступен по адресу 2
.
Установка параметров подключения
Вы можете перед началом работы с термостатом назначить ему modbus-адрес, но параметры подключения изменить нельзя.
По умолчанию в термостате заданы параметры: Адрес — 1, Скорость — 9600 бит/с, Четность — Even, Бит — 1.
У всех устройств Wiren Board параметры интерфейса по умолчанию: Скорость — 9600 бит/с, Четность — None, Бит — 2. Поэтому для использования термостата на одной линии с ними, в устройствах Wiren Board нужно установить параметр Бит = 1
.
Modbus-адрес термостата устанавливается из сервисного меню и не может быть изменен через RS-485. Настройка делается нажатием кнопок на корпусе термостата:
- Выключите термостат нажатием на кнопку
ON/OFF
. - Зажмите одновременно кнопки
M
иFan
на 5 секунд — термостат войдет в сервисный режим. - Кратким нажатием на кнопку
M
выберите параметрD
. - Кнопками
вверх ↑
ивниз ↓
установите новый адрес термостата. - После установки адреса подождите 5 секунд, термостат применит новые настройки и выйдет из сервисного режима.
- Включите термостат нажатием на кнопку
ON/OFF
.
Теперь вы можете подключиться к термостату по-новому modbus-адресу.
Общий алгоритм настройки
- Ищете адрес регистра и функцию записи.
- Смотрите возможные значения.
- Записываете в регистр значение, которое попадает в диапазон возможных.
Блокировка кнопок
Мы хотим заблокировать физические кнопки на термостате:
- Состояние блокировки хранится в регистре Lock buttons с адресом
0x06
. Функция записи —0x06
. - Возможные значения: 0 — Unlock, 1 — Lock.
- Теперь запишите значение 1 в регистр Lock buttons:
~# modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-1 -a2 -t0x06 -r0x05 1 Data to write: 0x1 Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1) [03][06][00][05][00][01][59][E9] Waiting for a confirmation... <03><06><00><05><00><01><59><E9> SUCCESS: written 1 elements!
Кнопки термостата заблокированы. Для разблокировки запишите в регистр Lock buttons значение 0 — Unlock.
Чтение и запись значений температуры
Значение температуры нужно конвертировать перед записью или после чтения.
Прочитаем значение текущей уставки из регистра Set temperature, 0x04 — получим:
~# modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-1 -a2 -t0x03 -r0x04
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
[03][03][00][04][00][01][C4][29]
Waiting for a confirmation...
<03><03><02><00><32><40><51>
SUCCESS: read 1 of elements:
Data: 0x0032
В документации к термостату указан коэффициент конвертации — 0.5. Это значит, что при чтении мы должны умножить полученное значение на коэффициент, а при записи разделить.
Нами было считано значение 0x0032
— это число 50, умножим его на коэффициент: 50 × 0.5 = 25 °С
Теперь запишем в регистр значение 12°C: 12 / 0.5 = 24
:
~# modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-1 -a2 -t0x06 -r0x04 24
Data to write: 0x18
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
[03][06][00][04][00][18][C9][E3]
Waiting for a confirmation...
<03><06><00><04><00><18><C9><E3>
SUCCESS: written 1 elements!
Настройка для работы с ПО
Перед настройкой термостата в веб-интерфейсе, установите в нем параметры подключения.
Шаблон устройства
ВНИМАНИЕ: шаблон пока не включен в поставку wb-mqtt-serial, поэтому вам нужно самостоятельно сохранить шаблон в файл и загрузить на контроллер в папку /usr/share/wb-mqtt-serial/templates
.
Шаблон config-bac-6000-series.json
:
{
"device_type": "BAC-6000 Series",
"device": {
"name": "BAC-6000 Series",
"id": "bac-6000-series",
"channels": [
{
"name": "Lock buttons",
"reg_type": "holding",
"address": "0x05",
"type": "wo-switch",
"format": "s16"
},
{
"name": "Room temperature",
"reg_type": "holding",
"address": "0x03",
"type": "temperature",
"format": "s16",
"scale": 0.5
},
{
"name": "Fan Speed: 0 — Auto",
"reg_type": "holding",
"address": "0x01",
"type": "range",
"format": "s16",
"max": 3
},
{
"name": "Set Mode",
"reg_type": "holding",
"address": "0x02",
"type": "range",
"format": "s16",
"max": 2
},
{
"name": "Set temperature [10 … 30]",
"reg_type": "holding",
"address": "0x04",
"type": "range",
"format": "s16",
"scale": 0.5,
"max": 30
}
]
}
}
После копирования шаблона на контроллер перезапустите службу wb-mqtt-serial
:
service wb-mqtt-serial restart
Теперь выберите шаблон термостата в разделе Serial Device Driver Configuration веб-интерфейса:
- Откройте веб-интерфейс и перейдите Configs → Serial Device Driver Configuration.
- Выберите один из двух интерфейсов связи и установите параметры интерфейса: Baud rate — 9600 бит/с, Parity — N, Data bits — 8, Stop bits — 1.
- Нажмите на кнопку + Device и в поле Device N выберите BAC-6000 Series, где N — порядковый номер устройства.
- В поле Slave id укажите modbus-адрес термостата.
- Сохраните настройки нажатием на кнопку Save.
Теперь устройство будет доступно на вкладке Devices.
Вы можете изменить шаблон по своему усмотрению — смотрите описание шаблонов в статье Драйвер wb-mqtt-serial.
Таблица modbus-регистров
Таблица регистров термостата BAC-6000ALN.
Назначение | Длина, байт | Адрес, Hex | Функция чтения | Функция записи | Возможные значения |
---|---|---|---|---|---|
Power | 1 | 0x00 | 0x03 | 0x06 | 0x005a — OFF, 0x00a5 — ON |
Fan Speed | 1 | 0x01 | 0x03 | 0x06 | 0 — Auto, 1 — Hign, 2 — Mid, 3 — Low |
Set Mode | 1 | 0x02 | 0x03 | 0x06 | 0 — Cooling, 1 — Heating, 2 — Ventilation |
Room temperature | 1 | 0x03 | 0x03 | - | - |
Set temperature | 1 | 0x04 | 0x03 | 0x06 | 10…30 |
Lock buttons | 1 | 0x05 | 0x03 | 0x06 | 0 — Unlock, 1 — Lock |