WB-MIO-E v.2 + WB-MAP6S + WB-MS v.2

При gодключении не через ethernet а именно по RS485 - тоже не отвечают?

у меня нет 485 USB-донгла, не могу проверить.

map другой подключил, результат тот же.

Давайте мы бесплатно поменяем вам оборудование. Курьер привезёт новое оборудование и заберёт старое:

  • WB-MIO-E - 1 шт

Для возврата напишите, пожалуйста, письмо на info@wirenboard.com.

В письме укажите:

  1. ссылку на эту тему,
  2. серийный номер устройства, если есть,
  3. ваш действующий телефон, адрес доставки, ФИО получателя.

Получил новую железку, та же картина. Давайте сверим всё ли верно настроено у меня.

$ modbus_client --debug -mtcp  192.168.78.131 -p23  -a64 -t 0x04 -r 104 -c2
Connecting to 192.168.78.131:23
[00][01][00][00][00][06][40][04][00][68][00][02]
Waiting for a confirmation...
ERROR Connection timed out: select
ERROR occured!

Нет, неверно. Почему-то используете нестандартный порт и не указываете его в аргументах при запросе.

23 порт идёт с заводской поставки, замена на стандартный 502 ничего не меняет

и в запросе он указан кстати -p23

Да, действительно, проглядел.
Давайте проверим на модуле состояние переключателей Преобразователь интерфейсов WB-MIO-E v.2 — Wiren Board
Ну и - пробовали ли считать с самого модуля MIO его его регистры, например 128 holding?

Включил modbus в work mode

теперь работает

$ modbus_client --debug -mtcp  192.168.78.131  -a64 -t 0x03 -r 250 -c 3
Connecting to 192.168.78.131:502
[00][01][00][00][00][06][40][03][00][FA][00][03]
Waiting for a confirmation...
<00><01><00><00><00><09><40><03><06><00><32><00><2E><00><37>
SUCCESS: read 3 of elements:
	Data: 0x0032 0x002e 0x0037 

А как теперь эти данные расшифровать? мне нужно получать данные с MAP6S и WB-MS

Вы читаете три регистра из стандартных регистров. Судя по документации - первые три байта строки с версией прошивки.
тут передаются asc2 коды символов.
Строка прочитанная “1.7”

for i in 143 112  95 64; do echo -e "------ \naddr: $i"; modbus_client --debug -mtcp  192.168.78.131  -a$i -t 0x03 -r 250 -c 3 | grep Data | sed -e 's/0x00/\x/g' -e 's/Data://' -e 's/s//g'|  xxd -r -p && echo '';done

получил версии прошивок устройств на шине

------ 
addr: 143
4.3
------ 
addr: 112
2.6
------ 
addr: 95
1.6
------ 
addr: 64
2.7

Как мне считать информацию по напряжению сети и по потреблению по каналам? Если по документации взять -a64 -t 0x03 -r 4313 -c 3 то получаю ошибку ERROR Illegal data address

Считывать надо только существующие регистры. 4313 существует а 4314 - нет.

так я вроде 4313 и считываю…

$ modbus_client --debug -mtcp  192.168.78.131  -a64 -t 0x03 -r 4313 -c 3 
Connecting to 192.168.78.131:502
[00][01][00][00][00][06][40][03][10][D9][00][03]
Waiting for a confirmation...
<00><01><00><00><00><03><40><83><02>
ERROR Illegal data address
ERROR occured!

Нет. Очевидно что три регистра (аргумент c) с адреса 4313.

так, становится понятнее )))

$ modbus_client --debug -mtcp  192.168.78.131  -a64 -t 0x03 -r 4313 | grep Data | sed  -e 's/Data://' 
	 0x574b 

а как этот u16 big endian в человекочитаемый формат привести?

Я совсем не понял вопроса.
Предполагаю что нужно умножить на коэффициент из таблицы и получит уже физическое значение.

в таблице указано что значение 4313 в формате " u16 big endian" как мне содержимое регистра перевести в человекочитаемое:

результат 0x574b в что-то типа 220

Как уже писал - умножить на коэффициент и привести (обычно приводят) в десятичный вид.

$ echo $(printf "%d\n" $(modbus_client --debug -mtcp  192.168.78.131  -a64 -t 0x03 -r 4313 | grep Data | sed  -e 's/Data://' ))*0.01 | bc
224.93

всё, я понял спасибо )))