Wiren-board-modbus-baud-rate-change
Устройства Wirenboard (например, WB-MR, WB-MSW, WB-MAO) позволяют изменить скорость работы по Modbus RTU, записав новое значение в регистр `110` (в десятичной системе). Значение указывается в десятках бит/с: например, для 9600 бод — `96`, для 115200 — `1152`.
⛔ Остановить Modbus-сервис
Перед выполнением команды необходимо остановить сервис, использующий RS-485:
service wb-mqtt-serial stop
⚙ Смена скорости
Пример: текущее устройство работает на скорости 9600 бод, адрес `1`. Требуется изменить скорость на 115200 бод:
modbus_client -m rtu -b 9600 -p none -s 2 /dev/ttyRS485-1 -a 1 -t 0x06 -r 110 1152
Пояснение:
- `-b 9600` — текущая скорость устройства (её нельзя указывать произвольно!)
- `-s 2` — количество стоп-бит (у устройств WB чаще всего 2)
- `-r 110` — регистр смены скорости
- `1152` — новая скорость в десятках бит/с (115200 → 1152)
🔢 Таблица кодов скорости
| Код в регистре | Скорость (бит/с) |
|---|---|
| 12 | 1200 |
| 24 | 2400 |
| 48 | 4800 |
| 96 | 9600 |
| 192 | 19200 |
| 384 | 38400 |
| 576 | 57600 |
| 1152 | 115200 |
✅ Проверка
После смены устройства уже не будет доступно на старой скорости. Проверку нужно выполнять на новой:
modbus_client -m rtu -b 115200 -p none -s 2 /dev/ttyRS485-1 -a 1 -t 0x03 -r 0x00 -c 1
Если команда возвращает `Data: 0xXXXX` — всё успешно.
🔄 Запуск сервиса обратно
service wb-mqtt-serial start
⚠️ Важно
- Устройство сразу переключается на новую скорость.
- Значение `1152` — это не частота, а "115200 делённое на 100".
- Убедитесь, что настройки скорости и стоп-бит совпадают на всех устройствах в шине.
- После изменения скорости необходимо вручную поменять параметры порта в конфигурации контроллера.