Подключение нового устройства Modbus


#21

Довольно часто. Да, регистр читается. Вывел в устройство 10 регистров. Смотрю в devices. Часть из них красная (с ошибкой), часть нормальная. Ошибка может висеть минуту или больше. Потом нормально, значение меняется. Другие регистры становятся красными. Это касается всех регистров. Один не пробовал оставлять. Но уверен, картина будет та же.


#22

Попробуйте поставить большое значение guard_interval_us (описание по ссылке выше).


#23

Что бы небыло путаницы, сначала хочу определиться в терминологии.
В GitHub (/etc/wb-mqtt-serial.conf) для Порта указывается:
Мин. интервал опроса каждого регистра для устройств, подключенных к порту, mc
“poll_interval”:
Я понимаю это так, poll_interval - время отведённое на опрос регистра. Если за это время программа не успела прочитать регистр, то будет ошибка (или не правильное значение). Верно?
А вот в Serial Device Driver Configuration несколько по-другому комментируется данный параметр.
Desired poll interval (ms) - Эта опция указывает интервал между двумя последовательными опросами каждого канала (или общую продолжительность цикла опроса).
Время самого опроса входит в этот параметр? Что такое цикл опроса?
Это время опроса + пауза между опросами. Так?
В общем я прописал такие значения:
В сети два Modbus устройства. Значения одинаковые для двух устройств.
“poll_interval”: 2000
“delay_ms”: 100
“guard_interval_us”: 100000
Ошибки стали появляться на много реже. И пропадают быстрее.


#25

Служба техподдержки, вы где?


#26

Неверно. То, о чём вы говорите, называется, кажется, response_timeout - то есть время ожидания ответа после запроса регистра.

Верно. Это время, которое говорит, что не надо читать чаще, чем раз в столько-то секунд. То есть если всё идеально, и это не конфликтует с другими настройками, то регистр будет читаться ровно, допустим, раз в две секунды (а не чаще, хотя теоретически могло бы).


#27

На контроллере WirenBoard-6 на порту /dev/ttyRS485-1 подключено два устройства.
Задача вывести в консоль их адреса.
Останавливаю сервис: systemctl stop wb-mqtt-serial
Выполняю команду:
for i in {1…247}; do modbus_client -mrtu /dev/ttyRS485-1 --debug -a$i -t3 -r0x80 -s2 -pnone; done 2>/dev/null | grep Data:

Команда ошибки не выдаёт. Отрабатывает быстро. В консоль ничего не выводится.
Почему?