Wiren-board-modbus-address-change: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
| Строка 16: | Строка 16: | ||
modbus_client \ | modbus_client \ | ||
-m rtu # режим работы Modbus RTU | -m rtu # режим работы Modbus RTU | ||
-b 9600 # скорость порта (бит/с) — | -b 9600 # скорость порта (бит/с) — какая сейчас настроена на устройстве | ||
-p none # чётность (none/even/odd) — зависит от устройства, чаще всего none | -p none # чётность (none/even/odd) — зависит от устройства, чаще всего none | ||
-s 1 # количество стоп-бит (1 или 2) | -s 1 # количество стоп-бит (1 или 2) | ||
Версия от 05:42, 10 июня 2025
Все устройства Wirenboard поддерживают смену Modbus-адреса записью нового значения в регистр `0x80`. Для этого используется утилита `modbus_client` на контроллере.
⛔ Остановить Modbus-сервис
Сначала необходимо остановить `wb-mqtt-serial`, чтобы освободить порт:
service wb-mqtt-serial stop
⚙ Смена адреса
Пример: текущее устройство на адресе `1`, нужно установить новый адрес `10`.
modbus_client \ -m rtu # режим работы Modbus RTU -b 9600 # скорость порта (бит/с) — какая сейчас настроена на устройстве -p none # чётность (none/even/odd) — зависит от устройства, чаще всего none -s 1 # количество стоп-бит (1 или 2) /dev/ttyRS485-1 # используемый RS-485 порт контроллера (обычно ttyRS485-1) -a 1 # текущий адрес устройства -t 0x06 # тип Modbus-запроса: запись одного регистра -r 0x80 # регистр смены адреса (в устройствах WB всегда 0x80) 10 # новый адрес устройства
🧪 Примеры команд
Смена адреса с 1 на 10 через первый порт (RS-485-1), 9600 бод:
modbus_client -m rtu -b 9600 -p none -s 1 /dev/ttyRS485-1 -a 1 -t 0x06 -r 0x80 10
Смена адреса с 3 на 50 через второй порт (RS-485-2), 19200 бод:
modbus_client -m rtu -b 19200 -p none -s 1 /dev/ttyRS485-2 -a 3 -t 0x06 -r 0x80 50
Смена адреса с 5 на 8 через первый порт, 38400 бод:
modbus_client -m rtu -b 38400 -p none -s 1 /dev/ttyRS485-1 -a 5 -t 0x06 -r 0x80 8
Смена адреса с 100 на 1 через второй порт, 115200 бод:
modbus_client -m rtu -b 115200 -p none -s 1 /dev/ttyRS485-2 -a 100 -t 0x06 -r 0x80 1
Важно: всегда указывайте корректный текущий адрес, иначе команда не выполнится. На шине должно находиться только одно устройство с указанным адресом.
✅ Проверка
Проверка связи по новому адресу:
modbus_client -m rtu -b 9600 -p none -s 1 /dev/ttyRS485-1 -a 10 -t 0x03 -r 0x00 -c 1
Что делает эта команда:
- `-a 10` — обращается к устройству с новым адресом `10`.
- `-t 0x03` — читает Holding-регистр (стандартное чтение значений).
- `-r 0x00` — запрашивает значение из регистра `0x00` (часто содержит информацию о типе устройства, состоянии или просто возвращает валидное значение).
- `-c 1` — читается 1 регистр.
Результат: Если устройство доступно и отвечает, команда вернёт строку вида:
Data: 0xXXXX
Где `0xXXXX` — шестнадцатеричное значение, прочитанное из регистра. Значение может быть любым — главное, что есть ответ. Это означает, что адрес успешно установлен и связь работает.
🔄 Запуск Modbus-сервиса
После завершения смены адреса запустите сервис обратно:
service wb-mqtt-serial start
⚠ Важно
- Регистр `0x80` используется во всех устройствах WB для установки адреса.
- Адрес применяется сразу после записи.
- На шине должно быть только одно устройство с текущим адресом при смене.