Enable_wb_continuous_read на стороннем устройстве

Добрый день

Написал шаблон для стороннего устройства.

Оно прекрасно поддреживает считывание всех нужных подряд идущих 15 параметров за раз - проверено через modbus_client_rpc

Так же без проблем на несуществующие регистры отдаёт 0xFFFF

Добавил в шаблон "enable_wb_continuous_read": true

Не работает:

Aug 16 19:43:27 wirenboard-AFRC2C6E wb-mqtt-serial[484532]: WARNING: [modbus] Continuous read is not enabled [slave_id is 144]
Aug 16 19:43:27 wirenboard-AFRC2C6E wb-mqtt-serial[484532]: INFO: [modbus] Init setup register “Data Rate”: <modbus:144:holding: 353><-- 2 (0x2)
Aug 16 19:43:27 wirenboard-AFRC2C6E wb-mqtt-serial[484532]: INFO: [modbus] Init setup register “Device Address”: <modbus:144:holding: 354><-- 144 (0x90)

Регистры в шаблоне идут

u16 – hold
u16 – hold – указан как параметр настройки
u16 – hold – указан как параметр настройки
u32 – hold
u16 – hold
u16 – hold
u16 – hold
u16 – hold
u16 – hold
u16 – hold
u16 – hold
u16 – hold
u16 – hold

Как бы оживить continuous_read ?

Добрый день!

Режим “enable_wb_continuous_read” поддерживается только в устройствах Wiren Board. Это описано в документации wb-mqtt-serial.

спасибо, а жаль

в “запросы потребителей” запишите что ли…

на 9600 ускорило бы заметно - там в устройстве 15 ходовых регистров и 330 иногда нужных..

Да, конечно, уже добавил для разработчиков.

Тут подробно описано.

спасибо, но немного про другое речь, тут max_reg_hole не поможет

15 ходовых регистров они подряд идут

а ещё 330 - тоже подряд

и оно в итоге и на 9600 работает, но один цикл опроса на ~370 (там ещё есть регистров) регистров по одному займёт 15 секунд(если ИИ не врёт в ответе). а могло бы быстрее.

кстати, а max_reg_hole имеет смысл без enable_wb_continuous_read ?

Да.
enable_wb_continuous_read записывает в 1 в 114 регистр - и все.

значит меня вводит в заблуждение название настройки enable_wb_continuous_read

регистры в не-WB устройства будут опрашиваться по несколько регистров разом и без всяких отдельных настроек если номера подряд идут ?

как-то регулируется максимальный размер одной группы ?

Название корректное: сплошное чтение – это расширение Modbus в устройствах WB (регистр 114), оно разрешает читать диапазоны с несуществующими регистрами. Объединение соседних регистров в один запрос – это отдельный механизм, работает с любыми Modbus-устройствами.

Но само по себе оно не включится: за размер пачки отвечает max_read_registers, по умолчанию он равен 1 – каждый регистр отдельным запросом. Пропишите его в шаблоне явно. При 0 или слишком большом значении берётся максимум по протоколу: 125 для 16-битных регистров и 2000 для однобитных. Ещё на группировку влияют max_reg_hole и max_bit_hole. Описание – в README драйвера: GitHub - wirenboard/wb-mqtt-serial: Wiren Board MQTT serial protocol driver · GitHub

Стороннее устройство может и не обработать 125 регистров за раз – предел подберите опытным путём.

спасибо, 33 оно за раз смогло