Подключение вентустановки по modbus

Добрый вечер! Имеется вентустановка с пультом управления управляемая по modbus rtu. Уже писал по этой теме Помогите подобрать оборудование - #24 от пользователя eag. Сейчас у меня есть карта регистров. Помогите с подключением ее к ВБ6 или подскажите кто сможет помочь написать шаблон. Проштудировал тему про Syberia 5 так я точно не смогу

1 лайк

Можете написать в телеграм @tecolux, попробуем помочь

1 лайк

Вообще - начать все равно надо с того чтобы прочитать что-нибудь с помощью modbus_client

Прочитал, скажите какие команды вводить? Вот карта регистров Инструкция_Интех ver2.02.pdf (1.7 МБ) и вот еще данные

Этого хватит?

Готов пообщаться на эту тему, но ни как не дождусь ответа. Выше выслал исходники.

Добрый день.
Начать - нужно с физического подключения и проверки правильности подключения (получить ответы, попробовать записать что-нибудь) по инструкции:
https://wirenboard.com/wiki/WB_FAQ/thirdparty-modbus-devices-conection

Подключил. физически к 1 порту, отключил mqtt, далее нужно ввести такую команду modbus_client --debug -mrtu -b115200 -pnone -s1 /dev/ttyRS485-1 -a2 -t0x03 -r1? еслиimage

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

Перед работой в командной строке нужно сначала остановить сервис wb-mqtt-serial:

systemctl stop wb-mqtt-serial

Для простоты предлагаю начать с данных, хранящихся в одном 16-битном регистре, например с чтения серийного номера агрегата (регистр 41099 в документации):

modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r1098

Нумерация регистров нестандартная, может быть разной в зависимости от производителя, поэтому, если не получится прочитать с помощью первой команды, нужно попробовать также варианты:

modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r41098
modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r41099
modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r1099
modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r98
modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r99

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

root@wirenboard-AVV36KSB:~# systemctl stop wb-mqtt-serial
root@wirenboard-AVV36KSB:~# modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r1098
Opening /dev/ttyRS485-1 at 115200 bauds (O, 8, 1)
[01][04][04][4A][00][01][11][2C]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!
root@wirenboard-AVV36KSB:~# modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r41098
Opening /dev/ttyRS485-1 at 115200 bauds (O, 8, 1)
[01][04][A0][8A][00][01][32][20]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!
root@wirenboard-AVV36KSB:~# modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r41099
Opening /dev/ttyRS485-1 at 115200 bauds (O, 8, 1)
[01][04][A0][8B][00][01][63][E0]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!
root@wirenboard-AVV36KSB:~# modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r1099
Opening /dev/ttyRS485-1 at 115200 bauds (O, 8, 1)
[01][04][04][4B][00][01][40][EC]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!
root@wirenboard-AVV36KSB:~# modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r98
Opening /dev/ttyRS485-1 at 115200 bauds (O, 8, 1)
[01][04][00][62][00][01][90][14]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!
root@wirenboard-AVV36KSB:~# modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x04 -r99
Opening /dev/ttyRS485-1 at 115200 bauds (O, 8, 1)
[01][04][00][63][00][01][C1][D4]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!
root@wirenboard-AVV36KSB:~#
Вот все попробовал

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

Я так понимаю скорее всего передача используется с 7-битами данных, тогда что нужно поменять в команде

Как и написано в статье:
добавить параметр -d7 d rjvfyle/
Например

modbus_client --debug -mrtu -b115200 -podd -s1 -d7 /dev/ttyRS485-1 -a1 -t0x04 -r99

Все проверил и прозвонил, ответ тот же. Что еще может влиять? на этом же порту висят mr6cu, msv v3, mwac. Первые 2 отлично работают, mwac не работает. Кроме того если запускаю скрипт for i in {1…247}; do echo -n "$i - "; D=modbus_client -mrtu /dev/ttyRS485-1 --debug -b9600 -pnone -s2 -a$i -t3 -o100 -r200 -c6 2>/dev/null | grep Data: | awk 'gsub("Data:","")' | sed -e 's/0x00/\\\x/g' -e 's/\s//g'; echo -e $D; done он показывает только msv v3. Что случилось как поправить?

Попробовал и так, тот же эффект
root@wirenboard-AVV36KSB:~# modbus_client --debug -mrtu -b115200 -podd -s1 -d7 /dev/ttyRS485-1 -a1 -t0x04 -r99
Opening /dev/ttyRS485-1 at 115200 bauds (O, 7, 1)
[01][04][00][63][00][01][C1][D4]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!

Позвонил в техподдержку, сказали, что используется передача с 8 битами.

В документации установки на странице 24 нашел следующее:

Панель оператора поддерживает следующие команды Modbus: чтение - 03h, запись - 10h

То есть для чтения регистров нужно всегда использовать функцию 3:

modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x03 -r1098

И также попробовать все указанные выше варианты адресов.

[quote=“Explorerol, post:17, topic:10186”]
modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x03 -r1098
[/quoteroot@wirenboard-AVV36KSB:~# modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x03 -r1098
Opening /dev/ttyRS485-1 at 115200 bauds (O, 8, 1)
[01][03][04][4A][00][01][A4][EC]
Waiting for a confirmation…
<01><83><02>
ERROR Illegal data address
ERROR occured!

Перебираю другие адреса

Да, видно, что установка получила запрос и корректно на него ответила ошибкой “Неверный адрес”. Значит параметры связи установлены правильно. Нужно подобрать теперь адрес.

[quote=“eag, post:18, topic:10186”]
ERROR Illegal data address
ERROR occured!
[/quoteroot@wirenboard-AVV36KSB:~# modbus_client --debug -mrtu -b115200 -podd -s1 /dev/ttyRS485-1 -a1 -t0x03 -r41099
Opening /dev/ttyRS485-1 at 115200 bauds (O, 8, 1)
[01][03][A0][8B][00][01][D6][20]
Waiting for a confirmation…
<01><03><02><38><4D><6B>
SUCCESS: read 1 of elements:
Data: 0x384d
Вот такой должен быть ответ?

Да, это результат успешного считывания регистра