Wiren Board Devices Modbus Management: различия между версиями

Материал из Wiren Board
(Поправил)
(Соберу сюда все примеры чтения строк и параметров)
Строка 28: Строка 28:
== Управление устройствами из командной строки == <!--T:10-->
== Управление устройствами из командной строки == <!--T:10-->
Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице [[Modbus-client]]. Доступ к командной строке описан в статье [[SSH]].
Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице [[Modbus-client]]. Доступ к командной строке описан в статье [[SSH]].
Таблица [[Common_Modbus_Registers | Общие регистры устройств WB]] содержит одинаковые для всех устройств производства компании ''Wirenboard'' регистры.


=== Пример чтения модели устройства === <!--T:11-->
=== Пример чтения модели устройства === <!--T:11-->
Строка 45: Строка 46:
В результате выполнения команды получаем строку, например '''WBMS'''. Модуль WB-MS в примере имеет Modbus-адрес 189.
В результате выполнения команды получаем строку, например '''WBMS'''. Модуль WB-MS в примере имеет Modbus-адрес 189.
</translate>
</translate>
=== Пример чтения версии прошивки ===
wb-mqtt-serial должен быть предварительно остановлен. По адресу 250 хранится null-termitated строка максимальнойдлиной в 16 регистров. Прочтем 16 регистров, начиная с адреса 250, и преобразуем полученный шестнадцатеричный ответ в символьную строку:
<!--T:12-->
<syntaxhighlight lang="bash">
export DEV_PORT=/dev/ttyRS485-1 #Correct this!
export DEV_ADDR=189 #Correct this!
echo  -e `modbus_client --debug -mrtu -pnone -s2 $DEV_PORT \
-a$DEV_ADDR -t0x03 -r250 -c 16 | \
grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'` </syntaxhighlight>
<!--T:13-->
В результате выполнения команды получаем строку, например '''1.3.1'''. Модуль в примере имеет Modbus-адрес 189.

Версия 12:30, 29 декабря 2020

Другие языки:


Параметры Modbus

Modbus-адрес

Modbus-адрес устройств Wiren Board легко определить — он нанесен на наклейке (адрес указан в десятичном формате). Новый адрес устройства записывается командой WRITE_SINGLE_REGISTER в регистр хранения (holding register) с адресом 128 (0x80). Подробно о том, как определить (если адрес был изменен) или изменить Modbus-адрес модуля, написано на странице Определение и изменение Modbus-адреса устройств Wirenboard.

Команды Modbus, поддерживаемые устройством

Датчики Wirenboard поддерживают все основные команды Modbus. Подробнее смотрите здесь: Коды функций чтения и записи регистров.

Modbus-регистры устройства

Данные и конфигурационные параметры Modbus-устройств хранятся в Modbus-регистрах. Для каждого типа устройств имеются свои карты Modbus-регистров, ссылки на которых приводятся на страницах соответствующих устройств.

Сигнатура устройства

По адресу 200 хранится сигнатура модуля длиной 6 байт. Сигнатура уникальна для каждой модели устройств Wiren Board и позволяет идентифицировать модель по Modbus:

Для получения сигнатуры устройства нужно выполнить команду READ_HOLDING_REGISTERS по адресу 200 (длина 6 регистров). Запись в эту область памяти не поддерживается, при попытке записи в недопустимое место возвращается ошибка 3. Пустые места в тексте сигнатуры забиваются значением 0x00. Начиная с регистра 220 записана дата сборки прошивки, в формате "числоx00времяx00" в виде строки (пример: 'Jan 27 2017 17:01:13'). Длина записи — 21 регистр.

Управление устройствами из командной строки

Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице Modbus-client. Доступ к командной строке описан в статье SSH. Таблица Общие регистры устройств WB содержит одинаковые для всех устройств производства компании Wirenboard регистры.

Пример чтения модели устройства

Проверим, верно ли, что мы подключились именно к модулю нужного типа. (Модуль wb-mqtt-serial должен быть предварительно остановлен). По адресу 200 хранится уникальная сигнатура длиной в 6 регистров. Прочтем 6 регистров, начиная с адреса 200, и преобразуем полученный шестнадцатеричный ответ в символьную строку:

export DEV_PORT=/dev/ttyRS485-1 #Correct this!
export DEV_ADDR=189 #Correct this!

echo  -e `modbus_client --debug -mrtu -pnone -s2 $DEV_PORT \
-a$DEV_ADDR -t0x03 -r200 -c 6 | \
grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'`

В результате выполнения команды получаем строку, например WBMS. Модуль WB-MS в примере имеет Modbus-адрес 189.

Пример чтения версии прошивки

wb-mqtt-serial должен быть предварительно остановлен. По адресу 250 хранится null-termitated строка максимальнойдлиной в 16 регистров. Прочтем 16 регистров, начиная с адреса 250, и преобразуем полученный шестнадцатеричный ответ в символьную строку:

export DEV_PORT=/dev/ttyRS485-1 #Correct this!
export DEV_ADDR=189 #Correct this!

echo  -e `modbus_client --debug -mrtu -pnone -s2 $DEV_PORT \
-a$DEV_ADDR -t0x03 -r250 -c 16 | \
grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'`

В результате выполнения команды получаем строку, например 1.3.1. Модуль в примере имеет Modbus-адрес 189.