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

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

Материал из XIOT Wiki
Исправлена команда записи Modbus адреса Ensystec
Упрощена инструкция по смене адреса Ensystec
Строка 2: Строка 2:
= Смена Modbus адреса Ensystec через консоль Wiren Board =
= Смена Modbus адреса Ensystec через консоль Wiren Board =


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


Способ применяется, когда Ensystec уже подключён к одному из портов RS-485 контроллера и нужно назначить ему уникальный адрес на шине Modbus RTU.
В примере ниже:
* Ensystec подключён к <code>RS485-2</code>;
* текущий адрес устройства — <code>247</code>;
* новый адрес — <code>11</code>.


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


{| class="wikitable"
{| class="wikitable"
Строка 26: Строка 27:
|}
|}


В регистре <code>0x0F</code> хранится Modbus-адрес устройства. Для смены адреса записывайте новый адрес обычным числом: для адреса <code>11</code> — значение <code>11</code>, для адреса <code>12</code> — значение <code>12</code>. В Modbus-кадре это будет передано как <code>0x000B</code> или <code>0x000C</code>.
Новый адрес записывается в регистр <code>0x0F</code> обычным числом: для адреса <code>11</code> записывается значение <code>11</code>.
 
== ⚠ Перед началом ==
 
* Убедитесь, что на линии RS-485 нет другого устройства с адресом, который вы собираетесь назначить.
* Убедитесь, что обращаетесь к правильному порту: например, <code>/dev/ttyRS485-1</code>, <code>/dev/ttyRS485-2</code> или <code>/dev/ttyMOD1</code>.
* На время ручных команд нужно остановить сервис <code>wb-mqtt-serial</code>, иначе он будет занимать порт.
* В примерах ниже Ensystec подключён к <code>/dev/ttyRS485-2</code>, текущий адрес — <code>247</code>, новый адрес — <code>11</code>.
 
== 1. Подключиться к Wiren Board по SSH ==
 
На компьютере откройте терминал и подключитесь к контроллеру:
 
<pre>
ssh root@192.168.88.27
</pre>
 
Вместо <code>192.168.88.27</code> укажите IP-адрес своего контроллера.
 
== 2. Проверить, на каком порту добавлен Ensystec ==
 
Порт удобнее проверять в веб-интерфейсе Wiren Board, а не через консольный вывод.


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


Соответствие имён:
Откройте веб-интерфейс Wiren Board и перейдите в раздел '''Устройства'''. Найдите Ensystec и посмотрите, в какой группе RS-485 он находится.


{| class="wikitable"
{| class="wikitable"
! В веб-интерфейсе Wiren Board !! Порт в командах
! Группа в веб-интерфейсе !! Порт в командах
|-
|-
| <code>RS485-1</code> || <code>/dev/ttyRS485-1</code>
| <code>RS485-1</code> || <code>/dev/ttyRS485-1</code>
Строка 67: Строка 47:
|}
|}


В примерах ниже используется <code>/dev/ttyRS485-2</code>. Если Ensystec находится на другом порту, замените путь во всех командах.
Если устройство находится не на <code>RS485-2</code>, замените <code>/dev/ttyRS485-2</code> в командах на нужный порт.
 
== Подключиться по SSH ==
 
<pre>
ssh root@192.168.88.27
</pre>
 
Замените <code>192.168.88.27</code> на IP-адрес своего контроллера.


== 3. Остановить wb-mqtt-serial ==
== Остановить опрос Modbus ==


<pre>
<pre>
Строка 75: Строка 63:
</pre>
</pre>


После остановки сервис перестаёт опрашивать Modbus-устройства, и порт можно использовать вручную через <code>modbus_client</code>.
== Проверить текущий адрес ==
 
== 4. Проверить текущий адрес 247 ==


Прочитайте регистр адреса <code>0x0F</code> по заводскому адресу <code>247</code>:
Прочитать регистр <code>0x0F</code> на текущем адресе <code>247</code>:


<pre>
<pre>
Строка 85: Строка 71:
</pre>
</pre>


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


<pre>
<pre>
SUCCESS: read 1 of elements:
SUCCESS: read 1 of elements:
Data: 0xfff7
Data: 0x00f7
</pre>
</pre>


Если ответа нет, проверьте порт, A/B линии RS-485, питание Ensystec и текущий адрес устройства.
На некоторых версиях устройства значение может отображаться как <code>0xfff7</code>. Важен младший байт <code>f7</code>, то есть адрес <code>247</code>.
 
== 5. Записать новый адрес 11 ==


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


<pre>
<pre>
Строка 108: Строка 92:
</pre>
</pre>


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


Прочитайте тот же регистр уже по адресу <code>11</code>:
Прочитать регистр <code>0x0F</code> на новом адресе <code>11</code>:


<pre>
<pre>
Строка 118: Строка 100:
</pre>
</pre>


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


<pre>
<pre>
Строка 125: Строка 107:
</pre>
</pre>


Дополнительно можно проверить, что старый адрес больше не отвечает:
Проверить, что старый адрес <code>247</code> больше не отвечает:


<pre>
<pre>
Строка 131: Строка 113:
</pre>
</pre>


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


<pre>
<pre>
Строка 137: Строка 119:
</pre>
</pre>


== 7. Обновить адрес в веб-интерфейсе Wiren Board ==
== Изменить адрес в веб-интерфейсе Wiren Board ==
 
После смены адреса в самом устройстве нужно изменить адрес и в конфигурации Wiren Board.
 
Откройте веб-интерфейс контроллера Wiren Board, перейдите в раздел '''Устройства''', найдите Ensystec в нужной группе RS-485 и откройте его настройки. В поле адреса Modbus укажите <code>11</code>, сохраните изменения и примените конфигурацию.
 
Если Ensystec находится не на <code>RS485-2</code>, убедитесь, что в веб-интерфейсе устройство осталось в правильной группе RS-485.


== 8. Запустить wb-mqtt-serial и проверить подключение ==
Откройте веб-интерфейс Wiren Board: '''Устройства''' → Ensystec → настройки устройства. Укажите Modbus-адрес <code>11</code>, сохраните и примените конфигурацию.


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


<pre>
<pre>
Строка 153: Строка 129:
</pre>
</pre>


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


== Быстрый пример для адреса 11 ==
== Если текущий адрес уже не 247 ==


Если Ensystec подключён к <code>RS485-2</code>, текущий адрес <code>247</code>, новый адрес <code>11</code>, последовательность команд будет такой:
Если адрес устройства уже был изменён, используйте текущий адрес вместо <code>247</code> в командах чтения и записи. Например, для смены адреса с <code>12</code> на <code>11</code>:


<pre>
<pre>
systemctl stop wb-mqtt-serial
systemctl stop wb-mqtt-serial
 
modbus_client --debug -mrtu -a12 -t0x06 -r0x0F -b9600 -d8 -pnone -s2 /dev/ttyRS485-2 11
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
modbus_client --debug -mrtu -a11 -t0x03 -r0x0F -c1 -b9600 -d8 -pnone -s2 /dev/ttyRS485-2
</pre>
После этого откройте веб-интерфейс Wiren Board, выберите устройство Ensystec и измените его Modbus-адрес в настройках на <code>11</code>. Сохраните и примените конфигурацию.
<pre>
systemctl start wb-mqtt-serial
systemctl start wb-mqtt-serial
</pre>
</pre>

Версия от 10:11, 28 мая 2026

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

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

В примере ниже:

  • Ensystec подключён к RS485-2;
  • текущий адрес устройства — 247;
  • новый адрес — 11.

Параметры Ensystec

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

Новый адрес записывается в регистр 0x0F обычным числом: для адреса 11 записывается значение 11.

Определить порт RS-485

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

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

Если устройство находится не на RS485-2, замените /dev/ttyRS485-2 в командах на нужный порт.

Подключиться по SSH

ssh root@192.168.88.27

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

Остановить опрос Modbus

systemctl stop wb-mqtt-serial

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

Прочитать регистр 0x0F на текущем адресе 247:

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

Ожидаемый ответ для адреса 247:

SUCCESS: read 1 of elements:
	Data: 0x00f7

На некоторых версиях устройства значение может отображаться как 0xfff7. Важен младший байт f7, то есть адрес 247.

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

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

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

SUCCESS: written 1 elements!

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

Прочитать регистр 0x0F на новом адресе 11:

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

Ожидаемый ответ:

SUCCESS: read 1 of elements:
	Data: 0x000b

Проверить, что старый адрес 247 больше не отвечает:

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

Ожидаемый ответ:

ERROR Connection timed out: select

Изменить адрес в веб-интерфейсе Wiren Board

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

Запустить опрос Modbus

systemctl start wb-mqtt-serial

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

Если текущий адрес уже не 247

Если адрес устройства уже был изменён, используйте текущий адрес вместо 247 в командах чтения и записи. Например, для смены адреса с 12 на 11:

systemctl stop wb-mqtt-serial
modbus_client --debug -mrtu -a12 -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
systemctl start wb-mqtt-serial

См. также