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

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

Материал из XIOT Wiki
Уточнена проверка порта Ensystec через веб-интерфейс Wiren Board
Убрано редактирование конфигурации Ensystec через консоль
Строка 137: Строка 137:
</pre>
</pre>


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


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


<pre>
Откройте веб-интерфейс контроллера Wiren Board, перейдите в раздел '''Устройства''', найдите Ensystec в нужной группе RS-485 и откройте его настройки. В поле адреса Modbus укажите <code>11</code>, сохраните изменения и примените конфигурацию.
cp /etc/wb-mqtt-serial.conf /etc/wb-mqtt-serial.conf.bak-$(date +%Y%m%d-%H%M%S)
</pre>
 
Затем замените адрес Ensystec в конфигурации на <code>11</code>:
 
<pre>
jq '(.ports[] | select(.path == "/dev/ttyRS485-2").devices[] | select(.device_type == "Ensystec-Leak-Protect").slave_id) = "11"' /etc/wb-mqtt-serial.conf > /tmp/wb-mqtt-serial.conf && mv /tmp/wb-mqtt-serial.conf /etc/wb-mqtt-serial.conf
</pre>


Если Ensystec подключён к другому порту, замените <code>/dev/ttyRS485-2</code> в команде на нужный порт.
Если Ensystec находится не на <code>RS485-2</code>, убедитесь, что в веб-интерфейсе устройство осталось в правильной группе RS-485.


== 8. Запустить wb-mqtt-serial и проверить подключение ==
== 8. Запустить wb-mqtt-serial и проверить подключение ==
Строка 161: Строка 153:
</pre>
</pre>


Проверьте, что сервис активен:
Проверьте в веб-интерфейсе Wiren Board, что Ensystec отображается без ошибки связи, а его значения обновляются. Если устройство не отвечает, проверьте, что в настройках устройства указан новый адрес <code>11</code>, а не старый адрес <code>247</code>.
 
<pre>
systemctl is-active wb-mqtt-serial
</pre>
 
Проверьте журнал на подключение устройства с новым адресом:
 
<pre>
journalctl -u wb-mqtt-serial -n 80 --no-pager | grep -E 'Ensystec|modbus:11|failed.*11'
</pre>
 
Нормальный признак успешной настройки:
 
<pre>
device modbus:11 is connected
</pre>


== Быстрый пример для адреса 11 ==
== Быстрый пример для адреса 11 ==
Строка 189: Строка 165:
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 0xFF0B
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>


cp /etc/wb-mqtt-serial.conf /etc/wb-mqtt-serial.conf.bak-$(date +%Y%m%d-%H%M%S)
После этого откройте веб-интерфейс Wiren Board, выберите устройство Ensystec и измените его Modbus-адрес в настройках на <code>11</code>. Сохраните и примените конфигурацию.
jq '(.ports[] | select(.path == "/dev/ttyRS485-2").devices[] | select(.device_type == "Ensystec-Leak-Protect").slave_id) = "11"' /etc/wb-mqtt-serial.conf > /tmp/wb-mqtt-serial.conf && mv /tmp/wb-mqtt-serial.conf /etc/wb-mqtt-serial.conf


<pre>
systemctl start wb-mqtt-serial
systemctl start wb-mqtt-serial
journalctl -u wb-mqtt-serial -n 80 --no-pager | grep -E 'Ensystec|modbus:11|failed.*11'
</pre>
</pre>



Версия от 09:28, 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 адрес находится в младшем байте. На практике заводской адрес читается как 0xFFF7, где F7 — это 247. Для адреса 11 записывается значение 0xFF0B, где 0B — это 11.

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

  • Убедитесь, что на линии 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 значение 0xFF0B:

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

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

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: 0xff0b

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

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 0xFF0B
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

См. также