Working with WB devices without a controller: различия между версиями

Материал из Wiren Board
(Добавил wb-modbus-device-editor)
(не показано 88 промежуточных версий 5 участников)
Строка 1: Строка 1:
Многие устройства Wiren Board могут работать независимо, без участия контроллера. Для этого требуется подать питание на соответствующие клеммы V+ и GND. Однако для настройки и опроса устройств по Modbus без контроллера потребуются дополнительные меры.
{{DISPLAYTITLE:Работа с Modbus-устройствами Wiren Board без контроллера}}
[[File:USB-RS485.png|450px|thumb|right|Схема подключения modbus-устройств через адаптер USB-RS485. Если у адаптера есть клемма GND — подключите её к клемме GND modbus-устройства]]
== Аппаратная часть ==
 
Большинство устройств Wiren Board могут работать без управления контроллером, но для их настройки потребуется подключиться к ним по протоколу Modbus. Для этого вы можете использовать компьютер с ОС Windows или Linux и преобразователь интерфейса USB-RS-485, например, [[WB-USBRS485 v.1 Interface Converter | WB-USB485 ]].
 
Для начала работы надо клеммы '''A''', '''B''' и '''GND''' устройства подключить к входам адаптера, подать на устройство питание и настроить программное обеспечение на компьютере.
 
== Подготовка к работе ==
Перед настройкой устройства вам нужно знать:
# [[Определение и изменение Modbus-адреса устройств Wirenboard | modbus-адрес]] устройства,
# [[Протокол Modbus#Коды функций чтения и записи регистров|коды функций]] чтения и записи регистров,
# адреса регистров устройства.  


== Аппаратная часть ==
Перечень общих для всех устройств Wiren Board регистров можно найти в [[Common_Modbus_Registers | таблице общих регистров]]. Полный список регистров для каждого устройства смотрите в документации к нему.
[[File:USB-RS485.png |450px|thumb|right|Пример схемы подключения modbus устройств через адаптер USB-RS485]]
 
Если Вы не планируете использовать в Вашем проекте контроллер (на пример Wiren Board 6), но настройка или опрос устройств всё же потребовались можно подключить устройства к ПК через специальный адаптер USB-RS485. Клеммы A и B устройства подключаете к соответствующим входам на адаптере, при этом питание на устройства подается с отдельного блока питания.
== Программы для работы по протоколу Modbus ==
[[Image:wb-modbus-device-editor.png|300px|thumb|Интерфейс утилиты wb-modbus-device-editor]]
Мы рекомендуем использовать утилиту '''[https://github.com/wirenboard/wb-modbus-device-editor wb-modbus-device-editor]''', есть варианты для Windows и Linux.
 
Альтернативный вариант для Windows <b>[https://www.rilheva.com/rilheva-modbus-poll-desktop-edition/ Rilheva Modbus Poll]</b>. Она бесплатна, не требует установки, имеет понятный интерфейс и возможность сохранения настроек обмена и конфигурации регистров.  


== Работа на Windows ==
Также можно использовать утилиты [https://www.modbustools.com/download.html Modbus Poll] из комплекта Modbus Tools (программа платная, но с бесплатным пробным периодом в 30 дней) и [http://s2-team.ru/wrkrs/prods/modbus-tools/termite/ termite] (есть «Pro» и «Free» версия) в ОС Windows и утилиту [[Modbus-client| modbus_client]] в ОС Linux.


Для работы с Modbus на windows рекомендуем использовать утилиту Modbus Poll из комплекта Modbus Tools, либо другую программу для работы c Modbus под Windows.  
== Выбор порта ==
В ОС Windows узнать, к какому порту у вас подключен адаптер, можно в диспетчере устройств. Найдите в дереве тип устройств '''Порты (COM и LPT)''', разверните ветку и найдите в ней свой адаптер. Если устройство выделено восклицательным знаком — это значит, что драйвер не был установлен автоматически. Установите его вручную по инструкции производителя.


=== Настройка порта ===
В ОС Linux порт можно узнать с помощью команды команды <code>dmesg -wH</code>, которую нужно запустить перед физическим подключением USB-адаптера. В диагностических сообщениях будет выведено сообщение об обнаружении адаптера и назначении ему порта:
Подключите адаптер USB-RS485 к компьютеру. За тем нажмите ПКМ на меню "Пуск", выберите "Диспетчер устройств". Найдите тип устройств "Порты(COM и LPT)", разверните и найдите среди имеющихся устройств свой адаптер. Если драйвер не был установлен автоматически установите его вручную по инструкции от производителя. Далее нажмите ПКМ на адаптер 🠖 Свойства 🠖 Port Settings. Укажите параметры порта в соответствии с настройками Вашего оборудования. Для устройств WB по умолчанию 9600 8 n 2. Так же поставьте галку возле параметра "RS485", если такой имеется.  
<syntaxhighlight lang="console">
[  +7,705022] usb 3-7: new full-speed USB device number 6 using xhci_hcd
[  +0,149142] usb 3-7: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.62
[  +0,000014] usb 3-7: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[  +0,000005] usb 3-7: Product: USB2.0-Serial
[  +0,001500] ch341 3-7:1.0: ch341-uart converter detected
[  +0,000549] usb 3-7: ch341-uart converter now attached to ttyUSB0
</syntaxhighlight>
В данном примере был назначен порт /dev/ttyUSB0.  


=== Modbus Poll ===  
В интерфейсе программы '''Rilheva Modbus Poll''' для адаптера обычно нужно выбрать COM-порт с самым большим номером. Чтобы проверить правильность выбора порта в Linux, нужно в пользовательской директории со списком портов эмулятора wine (<code>~/.wine/dosdevices</code>) найти файл, который является символической ссылкой на реальный USB-порт, к которому подключен адаптер.
<gallery mode="traditional" widths ="350px" heights="200px">
Image: Windows-com-port-check.png |Определение номера COM-порта в диспетчере устройств ОС Windows
Image: Wine-com-port-check.png | Определение номера COM-порта при работе через wine в OC Linux
</gallery>


'''[https://www.modbustools.com/download.html Modbus Poll]''' - Платная программа с бесплатным пробным периодом 30 дней. Программа работает в многооконном режиме, то есть одновременно можно опрашивать несколько разных устройств на шине.
== Работа с программой  wb-modbus-device-editor ==
[[Image:wb-modbus-device-editor.png|300px|thumb|Интерфейс утилиты wb-modbus-device-editor]]


*Скачайте и установите программу
В утилиту встроены шаблоны для различных устройств, поэтому всё, что вам нужно — это скачать файл с утилитой, установить её, настроить параметры подключения и выбрать нужный шаблон.
*Запустите
*Нажмите F3 - откроется окно настройки соединения. Выберите настройки в соответствии с Вашим оборудованием и нажмите OK (пример на скриншоте)
*Нажмите Ctrl+N для создания нового окна опроса, за тем нажмите F8 - откроется окно настройки опроса. Здесь необходимо указать modbus адрес устройства, тип опрашиваемого регистра(ов), начальный регистр и количество. За что отвечают те или иные регистры смотрите в картах регистров в документации к Вашему оборудованию. На пример [https://wirenboard.com/wiki/index.php?title=Relay_Module_Modbus_Management Карта регистров модулей реле]. После сохранения Вы увидите данные выбранных регистров в активном окне опроса.
*Если необходимо опрашивать несколько разных устройств на шине или несколько разных регистров или типов регистров одного устройства, еще раз нажмите Ctrl+N для создания нового окна. И снова нажмите F8 для настройки опроса.
*Для записи информации в регистры нажмите в меню кнопку "Functions" и выберите необходимый пункт.  


На пример Если необходимо изменить modbus адрес устройства выберите "Write Single Register" (см скриншот). Введите текущий адрес устройства (параметр slave id), регистр 128 - в нем хранится modbus адрес (параметр Address), и новый modbus адрес (параметр Value). Параметр "Use Function" выберите "Write Single Register" и нажмите Send.
В Linux:
# Скачать утилиту, [https://github.com/wirenboard/wb-modbus-device-editor/releases выбрав нужную версию по ссылке].
# Установить deb-пакет с помощью пакетного менеджера.


<gallery mode="packed" heights="250px">
В Windows:
File:Usbrs485-1.PNG|Настройка порта в диспетчере устройств.
# Скачать утилиту, [https://github.com/wirenboard/wb-modbus-device-editor/releases выбрав нужную версию по ссылке].
File:Usbrs485-2.PNG|Настройка соединения в Modbus Poll.
# Распаковать архив в удобную папку. Запустить wb-modbus-device-editor.exe. Для удобства можно вывести ярлык на рабочий стол.
File:Usbrs485-3.PNG|Настройка опроса в Modbus Poll.
 
File:Usbrs485-4.PNG|Запись новых данных в регистр 128.
== Работа с программой Rilheva Modbus Poll ==
=== Использование готовых конфигураций регистров для модулей Wiren Board ===
Для упрощения настройки наших устройств без контроллера Wiren Board, мы написали готовые шаблоны для программы Rilheva Modbus Poll, лежат в [https://github.com/wirenboard/wb-community/tree/main/templates/rilheva-modbus-poll/templates репозитории wb-community].
Использование:
# Скачайте файл конфигурации с расширением ''.rilmp'' к себе на компьютер.
# Запустите программу Rilheva Modbus Poll и загрузите в неё файл конфигурации.
# Настройки обмена будут заполнены значениями по умолчанию, при необходимости, измените их.
# Укажите modbus-адрес устройства и выберите используемый последовательный порт.
# Запустите опрос устройства, для этого нажмите кнопку '''Connect'''. Значения регистров из будут показаны в таблице.
# Установите нужные значения в поле '''Current value''', они будут сразу отправлены в устройство.
# Остановите опрос кнопкой '''Disconnect'''.
 
<gallery mode="packed" heights="150px">
Image: Rilheva-modbus-poll-wb-mr6с.png | Настройка модуля реле WB-MR6С
Image: Rilheva-modbus-poll-wb-mdm3.png | Настройка диммера WB-MDM3
Image: Rilheva-modbus-poll-wb-mrgbw-d.png | Настройка диммера WB-MRGBW-D
</gallery>
</gallery>


=== Modbus Poll - подключение к счетчику ===
Шаблоны для некоторых Modbus-устройств Wiren Board:
Сначала - настроим соединение, как было описано выше:
* [https://github.com/wirenboard/wb-community/tree/main/templates/rilheva-modbus-poll/templates/common-registers-wb-device.rilmp Универсальный шаблон общих регистров: серийный номер и параметры подключения]
* [https://github.com/wirenboard/wb-community/tree/main/templates/rilheva-modbus-poll/templates/wb-mr6xx-with-inputs.rilmp WB-MR6C v.2, WB-MR6LV/x, WB-MR6HV/x, WB-MR6C/NC (6-канальный модуль реле)]
* [https://github.com/wirenboard/wb-community/tree/main/templates/rilheva-modbus-poll/templates/wb-mr3xx-with-inputs.rilmp WB-MR3LV/x, WB-MR3HV/x, WB-MRWL3  (3-канальный модуль реле)]
* [https://github.com/wirenboard/wb-community/tree/main/templates/rilheva-modbus-poll/templates/wb-mr6xx-without-inputs.rilmp WB-MR6CU v.2, WB-MRPS6 (6-канальный модуль реле)]
* [https://github.com/wirenboard/wb-community/tree/main/templates/rilheva-modbus-poll/templates/wb-mrgbw-d-fw3-registers.rilmp WB-MRGBW-D fw3 (4-канальный диммер светодиодных лент c прошивкой 3.x)]
* [https://github.com/wirenboard/wb-community/tree/main/templates/rilheva-modbus-poll/templates/wb-mdm3.rilmp WB-MDM3 (3-канальный диммер)]
* [https://github.com/wirenboard/wb-community/blob/main/templates/rilheva-modbus-poll/templates/wb-mai6.rilmp WB-MAI6]


[[Файл:Modbys poll 01-select port.png|thumb|right|Выбор и настройка порта]]
=== Создание собственной конфигурации ===
# Выберите в главном окне программы Rilheva Modbus Poll подключение к последовательному порту и укажите номер порта.
# Настройте параметры обмена: скорость, четность, количество стопбитов в соответствии с настройками модуля, а также таймаут ответа и частоту повторения запросов.
# Добавьте регистры устройства, которые необходимо опрашивать. Нажмите кнопку '''Add register''' и в появившемся диалоговом окне заполните поля в соответствии с картой регистров используемого модуля:
#* Address — адрес регистра в десятичном формате.
#* Alias — понятное описание регистра.
#* Read only — запрет на запись значений в регистр. Для регистров, значения которых нужно изменять снимите галочку.
#* Read function — выбор типа регистра и соответствующей modbus-функции для его опроса.
#* Type — задает формат данных.
#* Multiplier — коэффициент, на который умножается значение регистра для удобного отображения.
#* Offset — значение, которое прибавляется к значению регистра для удобного отображения.
#* Decimal places — количество десятичных знаков при отображении.
#* Add further registers with the same kind — опция позволяет добавить сразу несколько регистров одного типа в список опроса.
# Запустите опрос устройства, для этого нажмите кнопку '''Connect'''.
# Установите нужные значения в поле '''Current value''', они будут сразу отправлены в устройство.
# Остановите опрос кнопкой '''Disconnect'''.


Для теста считаем один holding регистр из прибора. Для этого щелкаем '''правой''' кнопкой на строчке и выбираем ''Read/Write Definition''
Рассмотрим работу с устройством по протоколу Modbus RTU на примере модуля реле [[WB-MR6C_v.2_Modbus_Relay_Modules | WB-MR6C v.2]]. Считаем состояние выхода 1, счетчик срабатываний входа 1 и серийный номер модуля:
[[Файл:Modbys poll 02-test1.png|thumb|right|Read/Write Definition]]
# В [[Relay_Module_Modbus_Management | таблице регистров модуля реле]] найдите описание этих регистров:
Заполняем следующие поля:
#* состояние выхода 1 реле: адрес регистра 0, тип coil, формат bool
; Slave Id "ХХ"
#* счетчик срабатываний входа 1: адрес регистра 32, тип input, формат u16
: берется с наклейки на устройстве, напечатан как "Addr: XX"
#* серийный номер модуля: адреса регистров 270, 271, тип input, формат u32
; Function "03"
# Впишите эти параметры в настройках опроса регистров и включите опрос.  
: Мы хотим считать [[Протокол_Modbus#.D0.9C.D0.BE.D0.B4.D0.B5.D0.BB.D1.8C_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85_Modbus|holding]] регистр
# Если параметры обмена и конфигурация регистров корректны, то в поле '''Current value''' отобразится содержимое регистров.  
: Тип регистра - из таблицы в документации
# Внесите изменения и остановите опрос.
; Address "110"
: Из таблицы регистров устройства. Этот - из "[[Common_Modbus_Registers]]", общих для всех устройств разработки [[wirenboard.com|wirenboard]] регистров
: Обратите внимание: Если в таблице адрес указани в шестнадцатеричном виде - нужно переключить '''Address mode'''  в '''Hex''' или пересчитать адрес в десятичный.
; Quantity "1"
: Количество считываемых последовательно регистров, начиная с '''Address'''
; Address in cell
: Отображение адреса регистра в ячейке (необязательно)
[[Файл:Modbys poll 02-test.png|thumb|right|Заполнение полей]]
Нажимаем ''OK''
Видим:
[[Файл:Modbys poll 03-test3.png|thumb|right|Успешное соединение]]


Теперь
Конфигурацию можно сохранить и использовать её для настройки таких же устройcтв.


== Работа на Linux ==
<gallery mode="packed" heights="150px" caption="Пример опроса устройства">
Image: Rilheva-modbus-poll-register1-config.png | Конфигурирование опроса регистра состояния выхода 1 реле
Image: Rilheva-modbus-poll-register2-config.png | Конфигурирование опроса регистра счетчика срабатываний входа 1
Image: Rilheva-modbus-poll-register3-config.png | Конфигурирование опроса регистра серийного номера модуля
Image: Rilheva-modbus-poll-register-polling.png | Опрос регистров устройства Wirenboard
</gallery>


Для работы под Linux достаточно установить утилиту '''[[Modbus-client]]''' и дальше работать так же как на контроллере Wiren Board.  
== Работа с программой modbus_client ==
Для работы с modbus-утройством в ОС Linux также можно использовать консольную утилиту modbus_client.  


Для этого скачайте [https://github.com/contactless/modbus-utils/releases/download/1.2/modbus-utils_1.2_amd64.deb пакет для настольных компьютеров с Linux] и установите командой
Для этого скачайте [https://github.com/contactless/modbus-utils/releases/download/1.2/modbus-utils_1.2_amd64.deb пакет для настольных компьютеров с Linux].


apt install ./modbus-utils_1.2_amd64.deb
Перейдите в папку со скаченным пакетом и установите его командой:
<syntaxhighlight lang="bash">
sudo apt install ./modbus-utils_1.2_amd64.deb
</syntaxhighlight>


Так же по зависимости должен установиться пакет libmodbus. Если это не случилось установите libmodbus в ручную.  
Также автоматически должен установиться пакет <code>libmodbus</code>, если этого не произошло — установите его из репозитория apt.


Подробнее о работе с Modbus-client  '''[https://wirenboard.com/wiki/index.php/Modbus-client тут]'''
Как работать и примеры использования смотрите в статье [[Modbus-client| modbus_client]].

Версия 16:29, 17 апреля 2024

Схема подключения modbus-устройств через адаптер USB-RS485. Если у адаптера есть клемма GND — подключите её к клемме GND modbus-устройства

Аппаратная часть

Большинство устройств Wiren Board могут работать без управления контроллером, но для их настройки потребуется подключиться к ним по протоколу Modbus. Для этого вы можете использовать компьютер с ОС Windows или Linux и преобразователь интерфейса USB-RS-485, например, WB-USB485 .

Для начала работы надо клеммы A, B и GND устройства подключить к входам адаптера, подать на устройство питание и настроить программное обеспечение на компьютере.

Подготовка к работе

Перед настройкой устройства вам нужно знать:

  1. modbus-адрес устройства,
  2. коды функций чтения и записи регистров,
  3. адреса регистров устройства.

Перечень общих для всех устройств Wiren Board регистров можно найти в таблице общих регистров. Полный список регистров для каждого устройства смотрите в документации к нему.

Программы для работы по протоколу Modbus

Интерфейс утилиты wb-modbus-device-editor

Мы рекомендуем использовать утилиту wb-modbus-device-editor, есть варианты для Windows и Linux.

Альтернативный вариант для Windows Rilheva Modbus Poll. Она бесплатна, не требует установки, имеет понятный интерфейс и возможность сохранения настроек обмена и конфигурации регистров.

Также можно использовать утилиты Modbus Poll из комплекта Modbus Tools (программа платная, но с бесплатным пробным периодом в 30 дней) и termite (есть «Pro» и «Free» версия) в ОС Windows и утилиту modbus_client в ОС Linux.

Выбор порта

В ОС Windows узнать, к какому порту у вас подключен адаптер, можно в диспетчере устройств. Найдите в дереве тип устройств Порты (COM и LPT), разверните ветку и найдите в ней свой адаптер. Если устройство выделено восклицательным знаком — это значит, что драйвер не был установлен автоматически. Установите его вручную по инструкции производителя.

В ОС Linux порт можно узнать с помощью команды команды dmesg -wH, которую нужно запустить перед физическим подключением USB-адаптера. В диагностических сообщениях будет выведено сообщение об обнаружении адаптера и назначении ему порта:

[  +7,705022] usb 3-7: new full-speed USB device number 6 using xhci_hcd
[  +0,149142] usb 3-7: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.62
[  +0,000014] usb 3-7: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[  +0,000005] usb 3-7: Product: USB2.0-Serial
[  +0,001500] ch341 3-7:1.0: ch341-uart converter detected
[  +0,000549] usb 3-7: ch341-uart converter now attached to ttyUSB0

В данном примере был назначен порт /dev/ttyUSB0.

В интерфейсе программы Rilheva Modbus Poll для адаптера обычно нужно выбрать COM-порт с самым большим номером. Чтобы проверить правильность выбора порта в Linux, нужно в пользовательской директории со списком портов эмулятора wine (~/.wine/dosdevices) найти файл, который является символической ссылкой на реальный USB-порт, к которому подключен адаптер.

Работа с программой wb-modbus-device-editor

Интерфейс утилиты wb-modbus-device-editor

В утилиту встроены шаблоны для различных устройств, поэтому всё, что вам нужно — это скачать файл с утилитой, установить её, настроить параметры подключения и выбрать нужный шаблон.

В Linux:

  1. Скачать утилиту, выбрав нужную версию по ссылке.
  2. Установить deb-пакет с помощью пакетного менеджера.

В Windows:

  1. Скачать утилиту, выбрав нужную версию по ссылке.
  2. Распаковать архив в удобную папку. Запустить wb-modbus-device-editor.exe. Для удобства можно вывести ярлык на рабочий стол.

Работа с программой Rilheva Modbus Poll

Использование готовых конфигураций регистров для модулей Wiren Board

Для упрощения настройки наших устройств без контроллера Wiren Board, мы написали готовые шаблоны для программы Rilheva Modbus Poll, лежат в репозитории wb-community. Использование:

  1. Скачайте файл конфигурации с расширением .rilmp к себе на компьютер.
  2. Запустите программу Rilheva Modbus Poll и загрузите в неё файл конфигурации.
  3. Настройки обмена будут заполнены значениями по умолчанию, при необходимости, измените их.
  4. Укажите modbus-адрес устройства и выберите используемый последовательный порт.
  5. Запустите опрос устройства, для этого нажмите кнопку Connect. Значения регистров из будут показаны в таблице.
  6. Установите нужные значения в поле Current value, они будут сразу отправлены в устройство.
  7. Остановите опрос кнопкой Disconnect.

Шаблоны для некоторых Modbus-устройств Wiren Board:

Создание собственной конфигурации

  1. Выберите в главном окне программы Rilheva Modbus Poll подключение к последовательному порту и укажите номер порта.
  2. Настройте параметры обмена: скорость, четность, количество стопбитов в соответствии с настройками модуля, а также таймаут ответа и частоту повторения запросов.
  3. Добавьте регистры устройства, которые необходимо опрашивать. Нажмите кнопку Add register и в появившемся диалоговом окне заполните поля в соответствии с картой регистров используемого модуля:
    • Address — адрес регистра в десятичном формате.
    • Alias — понятное описание регистра.
    • Read only — запрет на запись значений в регистр. Для регистров, значения которых нужно изменять снимите галочку.
    • Read function — выбор типа регистра и соответствующей modbus-функции для его опроса.
    • Type — задает формат данных.
    • Multiplier — коэффициент, на который умножается значение регистра для удобного отображения.
    • Offset — значение, которое прибавляется к значению регистра для удобного отображения.
    • Decimal places — количество десятичных знаков при отображении.
    • Add further registers with the same kind — опция позволяет добавить сразу несколько регистров одного типа в список опроса.
  4. Запустите опрос устройства, для этого нажмите кнопку Connect.
  5. Установите нужные значения в поле Current value, они будут сразу отправлены в устройство.
  6. Остановите опрос кнопкой Disconnect.

Рассмотрим работу с устройством по протоколу Modbus RTU на примере модуля реле WB-MR6C v.2. Считаем состояние выхода 1, счетчик срабатываний входа 1 и серийный номер модуля:

  1. В таблице регистров модуля реле найдите описание этих регистров:
    • состояние выхода 1 реле: адрес регистра 0, тип coil, формат bool
    • счетчик срабатываний входа 1: адрес регистра 32, тип input, формат u16
    • серийный номер модуля: адреса регистров 270, 271, тип input, формат u32
  2. Впишите эти параметры в настройках опроса регистров и включите опрос.
  3. Если параметры обмена и конфигурация регистров корректны, то в поле Current value отобразится содержимое регистров.
  4. Внесите изменения и остановите опрос.

Конфигурацию можно сохранить и использовать её для настройки таких же устройcтв.

Работа с программой modbus_client

Для работы с modbus-утройством в ОС Linux также можно использовать консольную утилиту modbus_client.

Для этого скачайте пакет для настольных компьютеров с Linux.

Перейдите в папку со скаченным пакетом и установите его командой:

sudo apt install ./modbus-utils_1.2_amd64.deb

Также автоматически должен установиться пакет libmodbus, если этого не произошло — установите его из репозитория apt.

Как работать и примеры использования смотрите в статье modbus_client.