Ошибки при работе wb-mqtt-mbgate

Добрый день, есть контроллер Wiren Board 7.4.3 (s/n A24QN5UD), release wb-2404 (as stable). Тот же самый, что и в этой теме Циклическая перезагрузка контроллера по счетчику watchdog. Хотя на самом деле это не важно, потому что описанная ниже проблема воспроизводилась и воспроизводится на другом контроллере и на разных версиях ПО.
Шлюз wb-mqtt-mbgate работает в режиме rtu:

  1. При наличии постоянного опроса контроллера, шлюз wb-mqtt-mbgate падает при рестарте службы wb-mqtt-serial с ошибкой
ERROR Connection timed out: select
<01><7>DEBUG: [modbus] modbus_receive returned -1
<3>ERROR: [modbus] libmodbus error: Connection timed out
<3>ERROR: [mbgate] FATAL: IO Error occured in server work cycle
terminate called without an active exception
Aborted

В некоторых случае для воспроизведения требуется несколько раз подряд перезагрузить wb-mqtt-serial, а в некоторых он падает каждый раз, как, например, в стенде с конфигами приложенными к этой теме.

  1. При получении пакета с неправильной контрольной суммой шлюз wb-mqtt-mbgate падает с ошибкой:
Waiting for an indication...
<01><03><00><08><00><02><45><C8>
ERROR CRC received 0x45C8 != CRC calculated 0x45C9
<7>DEBUG: [modbus] modbus_receive returned -1
<3>ERROR: [modbus] libmodbus error: Invalid CRC
<3>ERROR: [mbgate] FATAL: IO Error occured in server work cycle
terminate called without an active exception
Aborted

Данное поведение воспроизводится на столе с помощью ПО com2port

  1. При получении 17-й функции шлюз падает с ошибкой
Waiting for an indication...
<01><11><C0><2C>
Segmentation fault

Так же стоит отметить, что при постоянном опросе контроллера в случае, если шлюз упал, самостоятельно он, чаще всего, вообще не поднимается и приходится вместе с ним перезагружать сначала wb-mqtt-serial, а затем, собственно, wb-mqtt-mbgate.
Данная проблема повторялась на двух контроллерах, причем на этих контроллерах стояли разные версии ПО в разный момент времени, но проблема всегда оставалась.
Эта проблема воспроизводилась на следующих версиях wb-mqtt-mbgate-1.6.3, 1.6.4(скачали с гита), 1.5.5

wb-mqtt-mbgate.conf (14,3 КБ)
wb-mqtt-mbgate.log (109,8 КБ)
wb-mqtt-serial.conf (1,4 КБ)
wb-mqtt-serial.log (40,8 КБ)

Так же периодический опрос проводился в ПО Vinci 1, 3 и 4 функцией по включенным регистрам в wb-mqtt-mbgate.conf с периодом 1с

Вопрос: это ошибка в самом шлюзе или все таки какие-то настройки заданы неправильно, если в шлюзе, то как скоро ждать фикса?

Еще замечание: При выборе типа данных float, для корректного отображения данных приходится делать Byte swap, хотя в документации говорится, что по дефолту значения передаются в big-endian.
Проверялось с помощью qmodmaster, на котором настройка “Endian: big”. К тому же онлайн конвертеры так же преобразуют полученные 16-ричные сырые байты. Без галочки Byte swap значения некорректны.

Добрый день.

В конфигурации wb-mqtt-serial грубая ошибка - используется тот же порт что в wb-mqtt-mbgate.

Jul 25 12:34:32 wirenboard-A24QN5UD wb-mqtt-mbgate[20637]: Waiting for an indication...
Jul 25 12:34:32 wirenboard-A24QN5UD wb-mqtt-mbgate[20637]: <01><AC><7>DEBUG: [modbus] modbus_receive returned -1
Jul 25 12:34:32 wirenboard-A24QN5UD wb-mqtt-mbgate[20637]: ERROR: [modbus] libmodbus error: Connection timed out
Jul 25 12:34:32 wirenboard-A24QN5UD wb-mqtt-mbgate[20637]: ERROR: [mbgate] FATAL: IO Error occured in server work cycle
Jul 25 12:34:32 wirenboard-A24QN5UD wb-mqtt-mbgate[20637]: terminate called without an active exception

Воспроизводится, благодарю. Оформлю баг.