В этой статье будут рассмотрены способы смены Modbus-адреса шлюза ONOKOM в
различных системах умного дома. Существует множество способов, но в статье описывается общий алгоритм и приводятся примеры
для разных систем
Рассмотренные в статье примеры являются проверенными, и если у вас возникнут сложности со
сменой адреса, то вы можете следовать инструкциям из статьи.
Рассмотрим общий алгоритм для смены
Modbus-адреса на шлюзе:
1. Необходимо подключить шлюз к ПК через преобразователь USB в RS485, например WB-USB485
2. Найти программу, способную работать с Modbus (Считывать и записывать Modbus регистры)
3. С помощью программы в 128-й Holding регистр шлюза записать нужный адрес
ONOKOM Modbus Tool — программа, разработанная специалистами ONOKOM, при помощи
которой можно обновлять прошивку шлюзов, изменять их скорость и адрес.
Для использования программы необходим преобразователь USB в RS485, например WB-USB485
Версия программы для Windows: ONOKOM-Modbus-Tool-Windows
Интерфейс программы для Windows:
В примере мы рассмотрим ситуацию, когда на одной шине подключено несколько шлюзов ONOKOM.
Подключаем преобразователь в порт USB.
Скачиваем и запускаем программу, при запуске появится предупреждение о внесении изменений на
устройстве, соглашаемся на внесение изменений.
Это нормально для неподписанных приложений от независимых разработчиков.
Перед нами открывается приложение ONOKOM Modbus Tool, пока что мы не видим
шлюзов. Для продолжения нам нужно указать порт для поиска
В поле "Serial порт" нужно выставить порт, к которому подключен преобразователь USB-RS485, в примере это порт COM5. Нажимаем "Поиск устройств"
Видим, что к порту COM5 подключены три шлюза: TCL-3-MB-B, HS-5-MB-B, TB-1-MB-B
Здесь можно посмотреть:
- Номер и название устройства
- Адрес
- Серийный номер
- Порт и скорость работы шлюза
- Версию загрузчика
- Версию прошивки
- Сигнатуру прошивки
В примере два шлюза имеют одинаковый modbus-адрес — 1
Давайте сменим адрес
одного из шлюзов.
Для этого нажимаем на строку шлюза №2 и в поле Смена адреса стрелочками или
вписав значение, выставляем новый адрес — 3
Затем нажимаем "Сменить
адрес"
После этого появится окно о смене адреса на новый
Чтобы обновить данные, снова нажимаем "Поиск устройств". Теперь у шлюзов обновилась информация
Версия программы для macOS (ARM64): ONOKOM-Modbus-Tool-macOS-arm64
Версия программы для macOS (Intel): ONOKOM-Modbus-Tool-macOS-x86_64
sudo xattr -d com.apple.quarantine ./ONOKOM\ Modbus\ Tool.app/
Интерфейс программы для macOS:
В поле "Serial port" нужно выставить порт, к которому подключен шлюз
В нашем случае порт называется "/dev/cu.usbmodem56292318841 - USB Single Serial"
Нажимаем кнопку "Поиск устройств" и видим подключенный шлюз
В после смена адреса записываем нужное значение. В нашем случае 12
Нажимаем кнопку "Сменить адрес", после чего видим уведомление об успешной операции
modbus_client — утилита для опроса устройств по протоколам Modbus RTU и Modbus TCP из командной строки. Утилита существует в разном исполнении для разных ОС
Скачайте пакет
для настольных компьютеров с Linux.
Перейдите в папку со скаченным пакетом и установите его командой:
sudo apt install ./modbus-utils_1.3.0_amd64.deb
Также автоматически должен установиться пакет
libmodbus, если этого не произошло — установите его из репозитория apt.
Альтернативный способ собрать пакет из исходников, инструкция
по сборке на портале поддержки
Для изменения Modbus-адреса шлюза необходимо записать новый адрес в holding-регистр 128
Следующей командой меняем Modbus-адрес шлюза на
«12»:
modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r128 12
Разберем используемые параметры:
--debug — вывод отправляемых и принимаемых данных;
-mrtu — определяем тип используемого протокола, в нашем случае Modbus RTU.
Должен указываться первым в командной строке или вторым если первый аргумент --debug или имя
файла порта RS-485;
-b9600 — скорость передачи данных по линии, по умолчанию значение 9600;
-pnone — параметр контроля четности;
-s2 — количество стоповых битов, 1 или 2;
/dev/ttyRS485-1 — адрес serial-порта, к которому подключено опрашиваемое
устройство;
-a1 — адрес устройства;
-t0x06 — адрес функции записи holding-регистра;
-r128 — адрес регистра, значение которого мы запрашиваем;
12 — новое значение, которое записываем в регистр
Скачайте в отдельную папку актуальную версию Modbus-client для Windows и переименуйте скаченный файл в modbus_client.exe
Откройте папку с загруженным файлом в командной строке. Для этого: откройте папку с файлом, нажмите на адресную строку вверху окна, наберите cmd и нажмите Enter. Текущая папка откроется в командной строке
В командной строке введите наименование файла
modbus_client (или .\modbus_client) и нажмите Enter.
Если все работает правильно, на экране отобразится справка по работе с программой.
Следующей командой меняем Modbus-адрес шлюза на «12»:
.\modbus_client --debug -mrtu -b9600 -pnone -s2 COM9 -a1 -t0x06 -r128 12
Разберем используемые параметры:
--debug — вывод отправляемых и принимаемых данных;
-mrtu — определяем тип используемого протокола, в нашем случае Modbus RTU.
Должен указываться первым в командной строке или вторым если первый аргумент --debug или имя
файла порта RS-485;
-b9600 — скорость передачи данных по линии, по умолчанию значение 9600;
-pnone — параметр контроля четности;
-s2 — количество стоповых битов, 1 или 2;
COM9 — имя COM-порта, к которому подключено опрашиваемое
устройство;
-a1 — адрес устройства;
-t0x06 — адрес функции записи holding-регистра;
-r128 — адрес регистра, значение которого мы запрашиваем;
12 — новое значение, которое записываем в регистр
Чтобы узнать к какому порту на ПК подключен ваш шлюз, перейдите в "Диспетчер устройств" и найдите порты (COM и LPT)
Скачайте и распакуйте утилиту для вашей ОС:
Modbus-client для MacOS (Intel);
Modbus-client для MacOS (Apple silicon);
Откройте "Терминал" и перейдите в папку с утилитой
Для начала убедитесь, что у вас есть права на файл утилиты, при необходимости назначьте права командой:
chmod u+rwx ./modbus_client
Далее небходимо прописать следующую команду. Она позволит избежать ошибки "App Is Damaged and Can’t Be Opened" и запустить файл
xattr -d com.apple.quarantine ./modbus_client
Можно запустить утилиту следующей командой и в терминале появится подсказка по работе с программой
./modbus_client
Далее необходимо подключить шлюз к ПК через преобразователь USB-RS485 и посмотреть имя порта, к которому подключено устройство. Это можно сделать следующей командой:
ls /dev/tty.usb*
Наконец вводим следующую команду для смены Modbus-адреса. В нашем случае это 12 адрес:
modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/tty.usbmodemXXXXXX -a1 -t0x06 -r128 12
Разберем используемые параметры:
--debug — вывод отправляемых и принимаемых данных;
-mrtu — определяем тип используемого протокола, в нашем случае Modbus RTU.
Должен указываться первым в командной строке или вторым если первый аргумент --debug или имя
файла порта RS-485;
-b9600 — скорость передачи данных по линии, по умолчанию значение 9600;
-pnone — параметр контроля четности;
-s2 — количество стоповых битов, 1 или 2;
/dev/tty.usbmodemXXXXXX — имя USB-порта к которому подключено устройство;
-a1 — адрес устройства;
-t0x06 — адрес функции записи holding-регистра;
-r128 — адрес регистра, значение которого мы запрашиваем;
12 — новое значение, которое записываем в регистр
После процедуры в терминале появится подтверждение, что мы успешно записали значение в регистр
Rilheva Modbus Poll – Программа для работы с Modbus, подойдёт для Windows. Она бесплатна, не требует установки, имеет понятный интерфейс и возможность сохранения настроек обмена и конфигурации регистров. Для работы с программой, также необходимо подключить шлюз к ПК через преобразователь USB в RS485
Для работы со шлюзом можно использовать наш шаблон в котором выведены и подписаны все регистры из Общедоступной карты регистров. Для работы с шаблоном нужно будет его скачать, открыть его и скорректировать настройки modbus-соединения
Чтобы открыть шаблон, в левом верхнем углу нажимаем на кнопку "Open configuration" и выбираем шаблон
После открытия шаблона проверяем настройки modbus-соединения и нажимаем кнопку "Connect"
Если всё было настроено правильно, то регистры начнут считываться и в шаблоне появится актуальная информация
Для работы без шаблона скачиваем и устанавливаем программу, далее запускаем и видим её интерфейс
Для начала необходимо выставить настройки
modbus-соединения нашего устройства и нажать
кнопку "Connect". В примере
выставлены настройки поумолчанию:
-Serial Port
-Modbus slave id: 1
-Timeout: 2000
-Polling frequency: 2000
-COM port: COM 9 (Порт к которому подключено ваше устроство)
-Baude rate: 9600
-Data bits: 8
-Parity: None parity
-Stop bits: 2
Далее нажимаем на кнопку "Add register" и
вводим туда 128
регистр в котором и хранится Modbus-адрес.
В строке "Alias" можно ввести название регистра. Снимаем галочку "Read
only", чтобы можно
было менять значения регистра.
В строке "Read function" выбираем "Read
Holding Registers
(03)". В графе "Type" ставим "16 bit unsigned".
Остальные параметры не
трогаем. Нажимаем "Ok"
В строке состояния стоит статус "CONNECTED", а в 128-м регистре мы считываем значение 1, значит мы настроили всё верно
Чтобы изменить значение регистра, наведите на текущее
значение 128-го регистра в столбце
"Current value", введите туда необходимый адрес и нажмите
"Enter". В нашем случае адреc будет 12
После смены адреса, в статусе появится ошибка. Это из-за
того, что мы сменили адрес, а настройки соединения Modbus остались прежними.
Далее необходимо поменять адрес на текущий в настройках соединения и снова подключиться
Для этого нажимаем кнопку "Disconnect" и в графе "Modbus slave id" ставим текущее значение, в нашем случае - 12. После нажимаем кнопку "Connect"
Если всё выполнено верно, ошибка пропадет и мы снова
можем корректно считывать данные.
Как можно заметить, значение адреса поменялось на 12
По умолчанию все шлюзы ONOKOM имеют адрес «1». Существует несколько способов смены адреса шлюза через Wiren Board
Для изменения Modbus-адреса шлюза необходимо записать новый адрес в holding-регистр
128. Перед этим останавливаем драйвер «wb-mqtt-serial»:
systemctl stop wb-mqtt-serial
Следующей командой меняем Modbus-адрес шлюза на
«12»:
modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r128 12
Разберем используемые параметры:
--debug — вывод отправляемых и принимаемых данных;
-mrtu — определяем тип используемого протокола, в нашем случае Modbus RTU.
Должен указываться первым в командной строке или вторым если первый аргумент --debug или имя
файла порта RS-485;
-b9600 — скорость передачи данных по линии, по умолчанию значение 9600;
-pnone — параметр контроля четности;
-s2 — количество стоповых битов, 1 или 2;
/dev/ttyRS485-1 — адрес serial-порта, к которому подключено опрашиваемое
устройство;
-a1 — адрес устройства;
-t0x06 — адрес функции записи holding-регистра;
-r128 — адрес регистра, значение которого мы запрашиваем;
12 — новое значение, которое записываем в регистр
Эта команда означает, что при остановленном драйвере «wb-mqtt-serial»
устройству с адресом «1» подключенному к порту «RS485-1»
устанавливается адрес «12». Не забываем включить
«wb-mqtt-serial»:
systemctl start wb-mqtt-serial
Также нужно изменить адрес на странице Wiren Board:
Переходим на страницу устройства, в строке «Адрес устройства» меняем на «12», сохраняем настройки
Если к одному порту подключено несколько устройств, может быть удобна смена адреса по
серийному номеру устройства.
С остановленным драйвером «wb-mqtt-serial» через утилиту
«wb-modbus-scanner» узнаем, какие устройства подключены к порту
«RS485-1» считываем их серийные номера. В примере серийный номер устройства —
229330:
wb-modbus-scanner -d /dev/ttyRS485-1 -b 9600
Далее меняем устройству с серийным номером 229330 Modbus-адрес на
«12»:
wb-modbus-scanner -d /dev/ttyRS485-1 -b 9600 -s 229330 -i 12
Не забываем включить драйвер «wb-mqtt-serial»
systemctl start wb-mqtt-serial
Разберем используемые параметры:
-d /dev/ttyRS485-1 — порт, к которому подключено устройство;
-b 9600 — скорость передачи данных по линии, по умолчанию значение 9600;
-s 229330 — серийный номер устройства;
-i 12 — задание нового адреса устройству
В этом разделе рассмотрим смену Modbus-адреса на системе iRidi в приложении Bus77 Home и iRidi Studio
Запускаем приложение и открываем панель опций соответствующей кнопкой в правом верхнем углу
экрана
Переходим в меню настроек
В меню выбираем пункт "Устройства"
Открываем список доступных шлюзов iRidi
Нажимаем на кнопку "Добавить устройство"
Поиск занимает некоторое время и в среднем проходит за пару минут
Также можно добавить шлюз вручную
Для ручного добавления следует указать Modbus-адрес шлюза и нажать на
"Добавить в проект"
Запускаем приложение и на главном экране выбираем "Создать Bus77 проект"
Указываем название проекта и выбираем "Bus77"
В открывшемся окне нажимаем "Поиск в сети"
В случае, если шлюз I-CAN-Modbus не будет найден автоматически, нажимаем на иконку
поиска
Нажимаем правой кнопкой мыши по найденному шлюзу и выбираем "Добавить в
проект"
Шлюз I-CAN-Modbus будет добавлен
Для добавления шлюза ONOKOM выбираем устройство I-CAN-Modbus и нажимаем на кнопку
"Добавить подустройство"
Для добавления можно воспользоваться автоматическим поиском
Также устройство можно добавить вручную
Для этого понадобится ввести Modbus-адрес устройства и нажать "Добавить в
проект"
Шлюз будет добавлен
В этом разделе рассмотрим смену Modbus-адреса на системе Larnitech
Переходим по локальному адресу контроллера Larnitech и вводим необходимые данные
Переходим в меню "Сценарии" на вкладку "Редактировать сценарии" и
нажимаем "Загрузить сценарий"
Выбираем скачаный файл
Далее в меню "Сценари" на вкладке "Сценарии из логики" нажимаем
"Добавить скрипт"
В открывшемся окне выбираем загруженный скрипт и нажимаем "Выбрать"
- Выбираем режим работы "Установка Modbus-адреса"
- Указываем текущий и новый Modbus-адреса
- Для удобства и информативности можно включить push-уведомления во время настройки
Нажимаем "Сохранить"
После загрузки скрипта, в мобильном приложении Larnitech будет уведомление найдено ли
устройство на адресе 1
Для смены адреса переходим в раздел "Свет" и включаем устройство "Сменить
адрес"
При успешной смене адреса будет следующее уведомление:
"Адрес Modbus изменен: старый адрес -> новый адрес"
В этом разделе рассмотрим смену Modbus-адреса на системе Loxone
В шаблонах Loxone для наших устройств уже предусмотрена возможность смены адреса. Это выглядит как виртуальны вход "Modbus address" и привод "Modbus address (service)"
В привод "Modbus address (service)" уже заранее выставлены настройки для записи адреса в 128-ой регистр
В таком случае нам нужно зайти в настройки виртуального входа "Modbus address" и ввести нужное значение
В нашем случае адрес 12
Далее соединяем ноду, если не была соединена и сохраняем изменения на сервер
Скопировано