Оно прекрасно поддреживает считывание всех нужных подряд идущих 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
спасибо, но немного про другое речь, тут max_reg_hole не поможет
15 ходовых регистров они подряд идут
а ещё 330 - тоже подряд
и оно в итоге и на 9600 работает, но один цикл опроса на ~370 (там ещё есть регистров) регистров по одному займёт 15 секунд(если ИИ не врёт в ответе). а могло бы быстрее.
кстати, а max_reg_hole имеет смысл без enable_wb_continuous_read ?
Название корректное: сплошное чтение – это расширение 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 регистров за раз – предел подберите опытным путём.