Шлюз MQTT - Modbus RTU/TCP slave - при перезагрузке слетает скорость порта

Здравствуйте.
Экспериментально выяснено, что при перезагрузке контроллера скорость порта в “Шлюз MQTT - Modbus RTU/TCP slave” слетает на 9600, хотя в UI показывает то, что было установлено.
Изменение скорости в UI и сохранение помогает до следующей перезагрузки.

Добрый день
Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера до и после перезагрузки. Создание архива описано в документации.

diag_output_AJV7E3S2_2025-02-18-15.16.18.zip (408,1 КБ)
diag_output_AJV7E3S2_2025-02-18-15.14.51.zip (408,2 КБ)

Первый по времени архив - сразу после включения (перезагрузки контроллера).
Второй - после того, как поменял скорость в UI.

Добрый день,

Прошу проверить, какая скорость установлена в конфигурационном файле:

cat /etc/wb-mqtt-mbgate.conf

Также прошу прислать скриншоты веб-интерфейса и вывод команды.

root@wirenboard-AJV7E3S2:~# cat /etc/wb-mqtt-mbgate.conf
{
“modbus”: {
“path”: “/dev/ttyRS485-2”,
“baud_rate”: 115200,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 1
},
“mqtt”: {
“host”: “/var/run/mosquitto/mosquitto.sock”,
“port”: 0,
“auth”: false,
“username”: “”,
“password”: “”
},
“debug”: false,
“registers”: {
“discretes”: ,
“coils”: [
{
“enabled”: true,
“topic”: “HMI sauna/Печка”,
“unitId”: 2,
“address”: 2
}
],
“inputs”: ,
“holdings”: [
{
“enabled”: true,
“topic”: “HMI sauna/°t фактическая”,
“unitId”: 2,
“address”: 0,
“format”: “unsigned”,
“size”: 2,
“scale”: 1,
“byteswap”: false,
“wordswap”: false
},
{
“enabled”: true,
“topic”: “HMI sauna/°t целевая”,
“unitId”: 2,
“address”: 1,
“format”: “unsigned”,
“size”: 2,
“scale”: 1,
“byteswap”: false,
“wordswap”: false
}
]
}
}

Скорость в настройках всегда 115200. Для того чтобы “поменять в UI” я изменяю ее на что-то другое (например, 2400), а потом еще раз меняю на 115200.
Видимо, применяются настройки по разному при запуске сервиса и при перечитывании конфигурации после изменения в UI.

Добрый день,

Судя по выводу, всё отображается корректно.

Прошу выполнить следующие шаги:

  1. Проверьте текущее значение строки в конфигурационном файле:
cat /etc/wb-mqtt-mbgate.conf | grep "baud_rate"
  1. Измените значение baud_rate, если требуется.
  2. Сохраните изменения и снова проверьте файл.
  3. Перезагрузите контроллер.

Сообщите, сохраняются ли изменения после перезагрузки.

Это мы с вами проверили первым шагом в этой переписке - я прислал вам архивы с этим конфигом после перезагрузки и после изменения в UI.
В файлах все хорошо, UI в них все меняет. Очевидно, разница только в применении конфига при старте сервиса и при сигнале из UI (не знаю, как именно вы применяете настройки на сервисе).

Сервис просто перезапускается. Нет разницы - запуск или “применение”.

А для чего этот же порт включен в настройках wb-mqtt-serial?
Из логов очевидно что сервис запускается вторым и меняет настройки порта как они у него сконфигурированы.

1 лайк

В wb-mqtt-serial порт был включен по умолчанию. Мне и в голову не пришло, что там надо что-то менять :slight_smile:

Отключение помогло. Спасибо!

1 лайк

Ну да, это заводское состояние.
Дело в том что порты и другие аппаратные ресурсы могут быть использованы только одним сервисом, монопольно.
Рад что смог помочь.

1 лайк

Полагаю, в сервисах не хватает lock-файлов чтобы идентифицировать факт использования устройства.