Wiren-board-modbus-address-change: различия между версиями
Admin (обсуждение | вклад) Нет описания правки |
Admin (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
__NOTOC__ | __NOTOC__ | ||
Все устройства Wirenboard поддерживают смену Modbus-адреса записью нового значения в регистр ` | Все устройства Wirenboard поддерживают смену Modbus-адреса записью нового значения в регистр `128`. Для этого используется утилита `modbus_client`, запускаемая из консоли контроллера. | ||
== ⛔ Остановить Modbus-сервис == | == ⛔ Остановить Modbus-сервис == | ||
Перед выполнением команды необходимо остановить сервис `wb-mqtt-serial`, чтобы освободить доступ к порту: | |||
<pre> | <pre> | ||
| Строка 16: | Строка 16: | ||
modbus_client \ | modbus_client \ | ||
-m rtu # режим работы Modbus RTU | -m rtu # режим работы Modbus RTU | ||
-b 9600 # скорость | -b 9600 # текущая скорость устройства | ||
-p none # чётность (none/even/odd) — | -p none # чётность (none/even/odd) — чаще всего none | ||
-s 1 # количество стоп-бит (1 или 2) | -s 1 # количество стоп-бит (1 или 2) | ||
/dev/ttyRS485-1 # | /dev/ttyRS485-1 # RS-485 порт контроллера | ||
-a 1 # текущий адрес устройства | -a 1 # текущий адрес устройства | ||
-t 0x06 # тип Modbus-запроса: запись одного регистра | -t 0x06 # тип Modbus-запроса: запись одного регистра | ||
-r | -r 128 # регистр смены адреса | ||
10 # новый адрес устройства | 10 # новый адрес устройства | ||
</pre> | </pre> | ||
| Строка 30: | Строка 30: | ||
Смена адреса с 1 на 10 через первый порт (RS-485-1), 9600 бод: | Смена адреса с 1 на 10 через первый порт (RS-485-1), 9600 бод: | ||
<pre> | <pre> | ||
modbus_client -m rtu -b 9600 -p none -s 1 /dev/ttyRS485-1 -a 1 -t 0x06 -r | modbus_client -m rtu -b 9600 -p none -s 1 /dev/ttyRS485-1 -a 1 -t 0x06 -r 128 10 | ||
</pre> | </pre> | ||
Смена адреса с 3 на 50 через второй порт (RS-485-2), 19200 бод: | Смена адреса с 3 на 50 через второй порт (RS-485-2), 19200 бод: | ||
<pre> | <pre> | ||
modbus_client -m rtu -b 19200 -p none -s 1 /dev/ttyRS485-2 -a 3 -t 0x06 -r | modbus_client -m rtu -b 19200 -p none -s 1 /dev/ttyRS485-2 -a 3 -t 0x06 -r 128 50 | ||
</pre> | </pre> | ||
Смена адреса с 5 на 8 через MOD1, 38400 бод: | Смена адреса с 5 на 8 через MOD1, 38400 бод: | ||
<pre> | <pre> | ||
modbus_client -m rtu -b 38400 -p none -s 1 /dev/ttyMOD1 -a 5 -t 0x06 -r | modbus_client -m rtu -b 38400 -p none -s 1 /dev/ttyMOD1 -a 5 -t 0x06 -r 128 8 | ||
</pre> | </pre> | ||
Смена адреса с 6 на 9 через MOD2, 19200 бод: | Смена адреса с 6 на 9 через MOD2, 19200 бод: | ||
<pre> | <pre> | ||
modbus_client -m rtu -b 19200 -p none -s 1 /dev/ttyMOD2 -a 6 -t 0x06 -r | modbus_client -m rtu -b 19200 -p none -s 1 /dev/ttyMOD2 -a 6 -t 0x06 -r 128 9 | ||
</pre> | </pre> | ||
Смена адреса с 100 на 1 через второй порт, 115200 бод: | Смена адреса с 100 на 1 через второй порт, 115200 бод: | ||
<pre> | <pre> | ||
modbus_client -m rtu -b 115200 -p none -s 1 /dev/ttyRS485-2 -a 100 -t 0x06 -r | modbus_client -m rtu -b 115200 -p none -s 1 /dev/ttyRS485-2 -a 100 -t 0x06 -r 128 1 | ||
</pre> | </pre> | ||
'''Важно:''' всегда указывайте | '''Важно:''' всегда указывайте правильный текущий адрес. На шине должно быть только одно устройство с указанным адресом. | ||
== ✅ Проверка == | == ✅ Проверка == | ||
Проверка связи по новому адресу: | Проверка связи с устройством по новому адресу: | ||
<pre> | <pre> | ||
modbus_client -m rtu -b 9600 -p none -s 1 /dev/ttyRS485-1 -a 10 -t 0x03 -r | modbus_client -m rtu -b 9600 -p none -s 1 /dev/ttyRS485-1 -a 10 -t 0x03 -r 0 -c 1 | ||
</pre> | </pre> | ||
'''Что делает эта команда:''' | '''Что делает эта команда:''' | ||
* `-a 10` — | * `-a 10` — обращение к устройству с новым адресом `10` | ||
* `-t 0x03` — | * `-t 0x03` — чтение holding-регистров | ||
* `-r | * `-r 0` — начальный регистр (0) | ||
* `-c 1` — | * `-c 1` — количество регистров — 1 | ||
'''Результат:''' | '''Результат:''' | ||
Если устройство | Если устройство отвечает, появится строка: | ||
<pre> | <pre> | ||
| Строка 75: | Строка 75: | ||
</pre> | </pre> | ||
Значение может быть любым — главное, что есть ответ. Это означает, что адрес установлен успешно. | |||
== 🔄 Запуск Modbus-сервиса == | == 🔄 Запуск Modbus-сервиса == | ||
После завершения | После завершения настроек запустите сервис обратно: | ||
<pre> | <pre> | ||
| Строка 85: | Строка 85: | ||
== ⚠ Важно == | == ⚠ Важно == | ||
* Регистр ` | * Регистр `128` (десятичный) используется во всех устройствах Wirenboard для смены адреса. | ||
* | * Изменения применяются сразу после записи. | ||
* | * При смене адреса убедитесь, что только одно устройство подключено по указанному адресу. | ||
Версия от 06:19, 10 июня 2025
Все устройства Wirenboard поддерживают смену Modbus-адреса записью нового значения в регистр `128`. Для этого используется утилита `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 порт контроллера -a 1 # текущий адрес устройства -t 0x06 # тип Modbus-запроса: запись одного регистра -r 128 # регистр смены адреса 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 128 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 128 50
Смена адреса с 5 на 8 через MOD1, 38400 бод:
modbus_client -m rtu -b 38400 -p none -s 1 /dev/ttyMOD1 -a 5 -t 0x06 -r 128 8
Смена адреса с 6 на 9 через MOD2, 19200 бод:
modbus_client -m rtu -b 19200 -p none -s 1 /dev/ttyMOD2 -a 6 -t 0x06 -r 128 9
Смена адреса с 100 на 1 через второй порт, 115200 бод:
modbus_client -m rtu -b 115200 -p none -s 1 /dev/ttyRS485-2 -a 100 -t 0x06 -r 128 1
Важно: всегда указывайте правильный текущий адрес. На шине должно быть только одно устройство с указанным адресом.
✅ Проверка
Проверка связи с устройством по новому адресу:
modbus_client -m rtu -b 9600 -p none -s 1 /dev/ttyRS485-1 -a 10 -t 0x03 -r 0 -c 1
Что делает эта команда:
- `-a 10` — обращение к устройству с новым адресом `10`
- `-t 0x03` — чтение holding-регистров
- `-r 0` — начальный регистр (0)
- `-c 1` — количество регистров — 1
Результат: Если устройство отвечает, появится строка:
Data: 0xXXXX
Значение может быть любым — главное, что есть ответ. Это означает, что адрес установлен успешно.
🔄 Запуск Modbus-сервиса
После завершения настроек запустите сервис обратно:
service wb-mqtt-serial start
⚠ Важно
- Регистр `128` (десятичный) используется во всех устройствах Wirenboard для смены адреса.
- Изменения применяются сразу после записи.
- При смене адреса убедитесь, что только одно устройство подключено по указанному адресу.