Настройка MIO+WD14

Пытаюсь настроить связку MIO+4 модуля WD14. Насколько понял, нужно сначала записать в регистры 10999, 11999, 12999, 13999 MIO значение 1.
Делаю это командой
modbus_client --debug -mrtu -a24 -t0x06 -b9600 -pnone -s2 /dev/ttyRS485-1 -r10999 0x0001
Получаю сообщение об успехе, однако при считывании получаю не то что хотелось бы
modbus_client --debug -mrtu -a24 -t0x03 -b9600 -pnone -s2 /dev/ttyRS485-1 -r10999
Data: 0x0000

Что делаю не так? Из-за этих регистров не работают WD14 подключенные через MIO?

Добрый день.
Немного непонятно, зачем писать в регистры? Достаточно выбрать верный шаблон, в нем указаны все setup-регистры, которые записываются во флеш MIO.
Но если хотите конфигурировать вручню: https://support.wirenboard.com/t/help-wb-mio-and-wbio-di-wd-14/

Эту тему читал, поэтому собственно и появился вопрос как записать в регистр. В теме сказано что в регистре 10999 должно быть 0х0001, у меня считывается 0х0000 хотя в остальных регистрах совпадает.
Если не касаться регистров. Захожу в конфиг serial device, добавляю wbio-di-wd-14. Он подключен к mio с id 14. В slave id пишу 14:1. Не работает… Что не так?
Смущает что в поле SlaveId ожидается тип поля hex или decimal, а я ввожу стринг. Хотя в вики есть фото где указан тип поля стринг, но у меня нет этого выбора

MIO отвечает?
Лог обмена, ошибки… Моей телепатии не хватает чтобы понять “не работает”…

1 лайк

Пардон, в логи не смотрел
Mio был подключен к первой шине, в лог валились ошибки. Переключил на вторую шину, те же ошибки.
WARNING: [modbus] failed to read 14 coil(s) @ 0 of device modbus_io:24:2: Serial protocol error: request timed out.
Частое моргание светодиода на MIO о чем-то свидетельствует?

Частое - о том что обмен идет, обычно.
Собственно говоря а при выполнении команд, которые приводились в первом сообщении - были ли ошибки?
И какой у MIO адрес? В командах используется 24, ниже вижу

в логе

опять 24.
Предлагаю проверить какой на самом устройстве, попробовать прочитать что-то с помощью modbus_client.

14:1 - не правильно написал на форуме. Верный Id - 24
modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-2 -a24 -t0x03 -r128
ответил
SUCCESS: read 1 of elements:
Data: 0x0018
Т.е., насколько я понимаю что общение с mio есть и он отвечает modbus_client-у. Т.к. регистры считывались и на первой шине и на второй

Отлично. А чтение 997 holding - что возвращает?
Coil 1000 - 1013? WD-14 первый модуль?
Ну и покажите конфиг wb-mqtt-serial.conf

997: 0х0002
1000-1013: 0х00

{
“baud_rate” : 9600,
“data_bits” : 8,
“devices” :
[
{
“device_type” : “WBIO-DI-WD-14”,
“slave_id” : “24:1”
},
{
“device_type” : “WBIO-DI-WD-14”,
“slave_id” : “24:2”
}
],
“enabled” : true,
“parity” : “N”,
“path” : “/dev/ttyRS485-2”,
“poll_interval” : 10,
“stop_bits” : 2
},

Есть еще один модуль WD-14 подключен к WB после R1G-16

Так.

А прочитайте еще из MIO holding 10999 и 11000 - 11005

Поведение при ручном опросе не соответствует все же ошибке:

То есть с помощью modbus_client читаются а в конфигурации serial - нет? Так не бывает, в общем. Включите debug для serial и покажитте лог с момента перезапуска и до момента начала опроса, можно с запасом.

Выяснил, к MIO было подключено 6 wd-14, как только два отключил, сразу все заработало. Спасибо!

1 лайк

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.