Перейти к содержанию

Wiren-board-modbus-baud-rate-change: различия между версиями

Материал из XIOT Wiki
Нет описания правки
Строка 1: Строка 1:
__NOTOC__
__NOTOC__


Устройства Wirenboard поддерживают изменение скорости Modbus по записи значения в регистр `0x81`. Это позволяет перевести устройство, например, с 9600 на 19200 бод или выше.
Устройства Wirenboard (например, WB-MR, WB-MSW, WB-MAO) позволяют изменить скорость работы по Modbus RTU, записав новое значение в регистр `110` (в десятичной системе). Значение указывается в десятках бит/с: например, для 9600 бод — `96`, для 115200 — `1152`.


== ⛔ Остановить Modbus-сервис ==
== ⛔ Остановить Modbus-сервис ==
Перед сменой параметров необходимо остановить `wb-mqtt-serial`, чтобы освободить порт:
Перед выполнением команды необходимо остановить сервис, использующий RS-485:


<pre>
<pre>
Строка 11: Строка 11:


== ⚙ Смена скорости ==
== ⚙ Смена скорости ==
Пример: текущее устройство на скорости 9600 бод и адресе `1`. Хотим установить скорость 19200.
Пример: текущее устройство работает на скорости 9600 бод, адрес `1`. Требуется изменить скорость на 115200 бод:


<pre>
<pre>
modbus_client -m rtu -b 9600 -p none -s 1 /dev/ttyRS485-1 -a 1 -t 0x06 -r 0x81 4
modbus_client -m rtu -b 9600 -p none -s 2 /dev/ttyRS485-1 -a 1 -t 0x06 -r 110 1152
</pre>
</pre>


'''Пояснение параметров:'''
'''Пояснение:'''
* `-b 9600` — текущая скорость устройства (её нельзя менять в команде!).
* `-b 9600` — текущая скорость устройства (её нельзя указывать произвольно!)
* `-a 1` — текущий адрес устройства.
* `-s 2` — количество стоп-бит (у устройств WB чаще всего 2)
* `-r 0x81` — регистр смены скорости.
* `-r 110` — регистр смены скорости
* `4` — новое значение скорости (код 19200 бод, см. таблицу ниже).
* `1152` — новая скорость в десятках бит/с (115200 → 1152)


== 🔢 Таблица значений для скорости ==
== 🔢 Таблица кодов скорости ==
{| class="wikitable"
{| class="wikitable"
! Значение !! Скорость
! Код в регистре !! Скорость (бит/с)
|-
|-
| 1 || 1200
| 12 || 1200
|-
|-
| 2 || 2400
| 24 || 2400
|-
|-
| 3 || 4800
| 48 || 4800
|-
|-
| 4 || 9600
| 96 || 9600
|-
|-
| 5 || 19200
| 192 || 19200
|-
|-
| 6 || 38400
| 384 || 38400
|-
|-
| 7 || 57600
| 576 || 57600
|-
|-
| 8 || 115200
| 1152 || 115200
|}
|}


== ✅ Проверка связи ==
== ✅ Проверка ==
После смены устройство уже не будет отвечать на прежней скорости. Выполните запрос на новой скорости:
После смены устройства уже не будет доступно на старой скорости. Проверку нужно выполнять на новой:


<pre>
<pre>
modbus_client -m rtu -b 19200 -p none -s 1 /dev/ttyRS485-1 -a 1 -t 0x03 -r 0x00 -c 1
modbus_client -m rtu -b 115200 -p none -s 2 /dev/ttyRS485-1 -a 1 -t 0x03 -r 0x00 -c 1
</pre>
</pre>


Если в ответ придёт строка `Data: 0xXXXX`, связь установлена успешно.
Если команда возвращает `Data: 0xXXXX` — всё успешно.
 
== 🔄 Возврат Modbus-сервиса ==
После смены скорости и проверки запустите сервис обратно:


== 🔄 Запуск сервиса обратно ==
<pre>
<pre>
service wb-mqtt-serial start
service wb-mqtt-serial start
</pre>
</pre>


== ⚠ Важно ==
== ⚠️ Важно ==
* После выполнения команды устройство сразу переходит на новую скорость.
* Устройство сразу переключается на новую скорость.
* Убедитесь, что на шине нет других устройств с тем же адресом — иначе смена не сработает.
* Значение `1152` — это не частота, а "115200 делённое на 100".
* После смены не забудьте обновить настройки порта в интерфейсе XIOT или в `wb-mqtt-serial.conf`.
* Убедитесь, что настройки скорости и стоп-бит совпадают на всех устройствах в шине.
* После изменения скорости необходимо вручную поменять параметры порта в конфигурации контроллера.
 


== 📚 См. также ==
== 📚 См. также ==
* [[Смена Modbus адреса у устройств Wiren Board через консоль]]
* [[Смена Modbus адреса у устройств Wiren Board через консоль]]

Версия от 05:47, 10 июня 2025


Устройства 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".
  • Убедитесь, что настройки скорости и стоп-бит совпадают на всех устройствах в шине.
  • После изменения скорости необходимо вручную поменять параметры порта в конфигурации контроллера.


📚 См. также