При gодключении не через ethernet а именно по RS485 - тоже не отвечают?
у меня нет 485 USB-донгла, не могу проверить.
map другой подключил, результат тот же.
Давайте мы бесплатно поменяем вам оборудование. Курьер привезёт новое оборудование и заберёт старое:
- WB-MIO-E - 1 шт
Для возврата напишите, пожалуйста, письмо на info@wirenboard.com.
В письме укажите:
- ссылку на эту тему,
- серийный номер устройства, если есть,
- ваш действующий телефон, адрес доставки, ФИО получателя.
Получил новую железку, та же картина. Давайте сверим всё ли верно настроено у меня.
$ 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
всё, я понял спасибо )))