Помощь с заведением стороннего Modbus устройства BHT-8000GALW

Здравствуйте!

Пытаюсь завести стороннее Modbus устройство BHT-8000GALW в систему Wirenboard, но столкнулся с некоторыми трудностями. Есть вот такой шаблон для него:
BHT-8000GALW.json (2,4 КБ)

Прошу помощи в следующих вопросах:

  1. Как определить адрес устройства?
    Я не уверен, как правильно узнать Modbus-адрес устройства. Пробовал сканировать шину через консоль, ничего не показало.

  2. Как проверить, работает ли устройство?
    Хотел бы убедиться, что устройство вообще отвечает по Modbus. Какие инструменты или методы можно использовать для проверки связи с устройством?

А в этой модели действительно есть поддержка modBus?

Судя по расшифровке букв в названиях таких моделей за наличие modBus отвечает буква N
У вас
GA - для водяного нагревателя
L - подсветка экрана
W - WiFi

Уточните в инструкции к данной модели про наличие modBus именно в вашей версии устройства.
bht-8000-heating-thermostat-manual-2.pdf (1007,9 КБ)

1 Like

Добрый день,

Также рекомендую ознакомиться с данной статьей, где описаны принципы подключения сторонних устройств к Wiren Board.

Здравствуйте.

Прошу проверить действительную маркировку вашего устройства в соответствии с комментарием пользователя vag.

Лучше, если пришлете фото шильдика, например.

К сожалению документатция не сохранилась, дали в пользование. Брался для электрических полов, вот выход modbus:

Здравствуйте. Понятно.

  1. Плохо что у термостата нет контакта GND, поскольку он является уравнивающим для уровней сигнала устройств для неизолированных портов. Неизвестно, изолирован ли порт в данном случае.
  2. С помощью modbus_client попробуйте адрес 1, опросить 0 holding регистр. По аналогии с другой серией. Вообще, рекомендую, все же, найти инструкцию.
  3. Если п.2 не сработает, сделайте широковещательный (используя -a0) опрос 0 holding регистра.

Прошу поделиться результатом.

Нашел карту регистров.


Перевел вторую шину на 9600 8, N, 1
Остановил systemctl stop wb-mqtt-serial
Выполнил поиск с помощью: modbus_client --debug -mrtu -b9600 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x03 -r0
А потом: modbus_client --debug -mrtu -b9600 -pnone -s1 /dev/ttyRS485-2 -a0 -t0x03 -r0


Физически подключено:
wirenboard A+:White: B-:Red (Плюс и минус были перепутаны на терморегуляторе с завода)

Здравствуйте. Благодарю за ожидание.

Прошу прощения, я ввел вас в заблуждение:

Если п.2 не сработает, сделайте широковещательный (используя -a0) опрос 0 holding регистра

На самом деле, устройства не отвечают на широковещательные команды.


В вашем случае можно также попробовать сканировать устройства на всех параметрах подключения. Например, с помощью скрипта. Только не забудьте изменить опрашиваемый регистр в самом скрипте.
Также, на вашем месте, я бы попробовал поменять A, B местами.

Прошу поделиться результатами.

Поменял в скрипте на вторую шину и 128 регистр (0х80) на 40001 (0х0000)

Результат сканирования:
W0tfMJhoD-38vrq3_28kE2JjmgH618nlSVvqGng7Bvwj3qZjNTF6jWj-Zvo2iGresr5JUSUOrjumgRQuGQfWON-J

но при попытке прочитать вручную опять ошибка

Здравствуйте. Благодарю за ожидание.

Результат показал, что устройство отвечает c адреса 1 на 0х0000 регистр с настройками порта 19200, s2.
Прошу сделать такой опрос с помощью modbus_client и показать вывод. Если в выводе будет ошибка, то повторите опрос раз 10, например.


Есть ли смысл перепаивать провода, или это скорее программное?

А попробуйте с одним стопбитом (-s1) Ну и цикл можно до 100 попыток увеличить пожалуй.
Хотя - такого еще не видел, самые плохие устройства не отвечают (с ошибками) в 50% запросов.
То есть, ничего не меняя запустите снова скрипт. Ответило? Отлично, попробуйте опросить. Не ответило - возможно контакт потерян, как вариант.

1 Like

Здравствуйте. Удалось ли решить вопрос?