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

Ensystec-modbus-address-change: различия между версиями

Материал из XIOT Wiki
Убрано редактирование конфигурации Ensystec через консоль
Исправлена команда записи Modbus адреса Ensystec
Строка 26: Строка 26:
|}
|}


В регистре <code>0x0F</code> адрес находится в младшем байте. На практике заводской адрес читается как <code>0xFFF7</code>, где <code>F7</code> — это 247. Для адреса 11 записывается значение <code>0xFF0B</code>, где <code>0B</code> — это 11.
В регистре <code>0x0F</code> хранится Modbus-адрес устройства. Для смены адреса записывайте новый адрес обычным числом: для адреса <code>11</code> — значение <code>11</code>, для адреса <code>12</code> — значение <code>12</code>. В Modbus-кадре это будет передано как <code>0x000B</code> или <code>0x000C</code>.


== ⚠ Перед началом ==
== ⚠ Перед началом ==
Строка 96: Строка 96:
== 5. Записать новый адрес 11 ==
== 5. Записать новый адрес 11 ==


Запишите в регистр <code>0x0F</code> значение <code>0xFF0B</code>:
Запишите в регистр <code>0x0F</code> новое значение адреса — число <code>11</code>:


<pre>
<pre>
modbus_client --debug -mrtu -a247 -t0x06 -r0x0F -b9600 -d8 -pnone -s2 /dev/ttyRS485-2 0xFF0B
modbus_client --debug -mrtu -a247 -t0x06 -r0x0F -b9600 -d8 -pnone -s2 /dev/ttyRS485-2 11
</pre>
</pre>


Строка 122: Строка 122:
<pre>
<pre>
SUCCESS: read 1 of elements:
SUCCESS: read 1 of elements:
Data: 0xff0b
Data: 0x000b
</pre>
</pre>


Строка 163: Строка 163:


modbus_client --debug -mrtu -a247 -t0x03 -r0x0F -c1 -b9600 -d8 -pnone -s2 /dev/ttyRS485-2
modbus_client --debug -mrtu -a247 -t0x03 -r0x0F -c1 -b9600 -d8 -pnone -s2 /dev/ttyRS485-2
modbus_client --debug -mrtu -a247 -t0x06 -r0x0F -b9600 -d8 -pnone -s2 /dev/ttyRS485-2 0xFF0B
modbus_client --debug -mrtu -a247 -t0x06 -r0x0F -b9600 -d8 -pnone -s2 /dev/ttyRS485-2 11
modbus_client --debug -mrtu -a11 -t0x03 -r0x0F -c1 -b9600 -d8 -pnone -s2 /dev/ttyRS485-2
modbus_client --debug -mrtu -a11 -t0x03 -r0x0F -c1 -b9600 -d8 -pnone -s2 /dev/ttyRS485-2
</pre>
</pre>

Версия от 09:35, 28 мая 2026

Смена Modbus адреса Ensystec через консоль Wiren Board

Эта инструкция описывает смену Modbus-адреса системы защиты от протечек Ensystec Leak Protect через SSH-консоль контроллера Wiren Board.

Способ применяется, когда Ensystec уже подключён к одному из портов RS-485 контроллера и нужно назначить ему уникальный адрес на шине Modbus RTU.

📌 Исходные параметры Ensystec

Для штатного подключения используются параметры:

Параметр Значение
Интерфейс RS-485, Modbus RTU
Скорость 9600 бод
Формат 8N2: 8 бит данных, без чётности, 2 стоп-бита
Заводской Modbus-адрес 247
Регистр адреса holding-регистр 0x0F
Функция записи 0x06, Write Single Register

В регистре 0x0F хранится Modbus-адрес устройства. Для смены адреса записывайте новый адрес обычным числом: для адреса 11 — значение 11, для адреса 12 — значение 12. В Modbus-кадре это будет передано как 0x000B или 0x000C.

⚠ Перед началом

  • Убедитесь, что на линии RS-485 нет другого устройства с адресом, который вы собираетесь назначить.
  • Убедитесь, что обращаетесь к правильному порту: например, /dev/ttyRS485-1, /dev/ttyRS485-2 или /dev/ttyMOD1.
  • На время ручных команд нужно остановить сервис wb-mqtt-serial, иначе он будет занимать порт.
  • В примерах ниже Ensystec подключён к /dev/ttyRS485-2, текущий адрес — 247, новый адрес — 11.

1. Подключиться к Wiren Board по SSH

На компьютере откройте терминал и подключитесь к контроллеру:

ssh root@192.168.88.27

Вместо 192.168.88.27 укажите IP-адрес своего контроллера.

2. Проверить, на каком порту добавлен Ensystec

Порт удобнее проверять в веб-интерфейсе Wiren Board, а не через консольный вывод.

Откройте веб-интерфейс контроллера, перейдите в раздел Устройства и найдите устройство Ensystec. Название группы, в которой оно находится, показывает используемый порт. Например, если Ensystec находится в группе RS485-2, то в командах ниже нужно использовать порт /dev/ttyRS485-2.

Соответствие имён:

В веб-интерфейсе Wiren Board Порт в командах
RS485-1 /dev/ttyRS485-1
RS485-2 /dev/ttyRS485-2
MOD1 /dev/ttyMOD1
MOD2 /dev/ttyMOD2
MOD3 /dev/ttyMOD3

В примерах ниже используется /dev/ttyRS485-2. Если Ensystec находится на другом порту, замените путь во всех командах.

3. Остановить wb-mqtt-serial

systemctl stop wb-mqtt-serial

После остановки сервис перестаёт опрашивать Modbus-устройства, и порт можно использовать вручную через modbus_client.

4. Проверить текущий адрес 247

Прочитайте регистр адреса 0x0F по заводскому адресу 247:

modbus_client --debug -mrtu -a247 -t0x03 -r0x0F -c1 -b9600 -d8 -pnone -s2 /dev/ttyRS485-2

Ожидаемый результат для заводского адреса:

SUCCESS: read 1 of elements:
	Data: 0xfff7

Если ответа нет, проверьте порт, A/B линии RS-485, питание Ensystec и текущий адрес устройства.

5. Записать новый адрес 11

Запишите в регистр 0x0F новое значение адреса — число 11:

modbus_client --debug -mrtu -a247 -t0x06 -r0x0F -b9600 -d8 -pnone -s2 /dev/ttyRS485-2 11

Ожидаемый результат:

SUCCESS: written 1 elements!

После этой команды Ensystec должен перестать отвечать на адресе 247 и начать отвечать на адресе 11.

6. Проверить новый адрес

Прочитайте тот же регистр уже по адресу 11:

modbus_client --debug -mrtu -a11 -t0x03 -r0x0F -c1 -b9600 -d8 -pnone -s2 /dev/ttyRS485-2

Ожидаемый результат:

SUCCESS: read 1 of elements:
	Data: 0x000b

Дополнительно можно проверить, что старый адрес больше не отвечает:

modbus_client --debug -mrtu -a247 -t0x03 -r0x0F -c1 -o300 -b9600 -d8 -pnone -s2 /dev/ttyRS485-2

Ожидаемый результат для старого адреса:

ERROR Connection timed out: select

7. Обновить адрес в веб-интерфейсе Wiren Board

После смены адреса в самом устройстве нужно изменить адрес и в конфигурации Wiren Board.

Откройте веб-интерфейс контроллера Wiren Board, перейдите в раздел Устройства, найдите Ensystec в нужной группе RS-485 и откройте его настройки. В поле адреса Modbus укажите 11, сохраните изменения и примените конфигурацию.

Если Ensystec находится не на RS485-2, убедитесь, что в веб-интерфейсе устройство осталось в правильной группе RS-485.

8. Запустить wb-mqtt-serial и проверить подключение

Запустите сервис обратно:

systemctl start wb-mqtt-serial

Проверьте в веб-интерфейсе Wiren Board, что Ensystec отображается без ошибки связи, а его значения обновляются. Если устройство не отвечает, проверьте, что в настройках устройства указан новый адрес 11, а не старый адрес 247.

Быстрый пример для адреса 11

Если Ensystec подключён к RS485-2, текущий адрес 247, новый адрес 11, последовательность команд будет такой:

systemctl stop wb-mqtt-serial

modbus_client --debug -mrtu -a247 -t0x03 -r0x0F -c1 -b9600 -d8 -pnone -s2 /dev/ttyRS485-2
modbus_client --debug -mrtu -a247 -t0x06 -r0x0F -b9600 -d8 -pnone -s2 /dev/ttyRS485-2 11
modbus_client --debug -mrtu -a11 -t0x03 -r0x0F -c1 -b9600 -d8 -pnone -s2 /dev/ttyRS485-2

После этого откройте веб-интерфейс Wiren Board, выберите устройство Ensystec и измените его Modbus-адрес в настройках на 11. Сохраните и примените конфигурацию.

systemctl start wb-mqtt-serial

См. также