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

Материал из Wiren Board
(Добавил wb-modbus-device-editor)
(не показано 100 промежуточных версий 6 участников)
Строка 1: Строка 1:
Страница в стадии заполнения, может иметь не полную и не точную информацию.  
{{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 | таблице общих регистров]]. Полный список регистров для каждого устройства смотрите в документации к нему.
 
== Программы для работы по протоколу 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.


Многие устройства Wiren Board могут работать независимо, без участия контроллера. Для этого требуется подать питание на соответствующие клеммы V+ и GND. Однако для настройки и опроса устройств по Modbus без контроллера потребуются дополнительные меры.
Альтернативный вариант для Windows <b>[https://www.rilheva.com/rilheva-modbus-poll-desktop-edition/ Rilheva Modbus Poll]</b>. Она бесплатна, не требует установки, имеет понятный интерфейс и возможность сохранения настроек обмена и конфигурации регистров.  


== Аппаратная часть ==
Также можно использовать утилиты [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.
[[File:USB-RS485.png |450px|thumb|right|Пример схемы подключения modbus устройств через адаптер USB-RS485]]
 
Если Вы не планируете использовать в Вашем проекте контроллер (на пример Wiren Board 6), но настройка или опрос устройств всё же потребовались можно подключить устройства к ПК через специальный адаптер USB-RS485. Клеммы A и B устройства подключаете к соответствующим входам на адаптере, при этом питание на устройства подается с отдельного блока питания.
== Выбор порта ==
В ОС Windows узнать, к какому порту у вас подключен адаптер, можно в диспетчере устройств. Найдите в дереве тип устройств '''Порты (COM и LPT)''', разверните ветку и найдите в ней свой адаптер. Если устройство выделено восклицательным знаком — это значит, что драйвер не был установлен автоматически. Установите его вручную по инструкции производителя.
 
В ОС Linux порт можно узнать с помощью команды команды <code>dmesg -wH</code>, которую нужно запустить перед физическим подключением USB-адаптера. В диагностических сообщениях будет выведено сообщение об обнаружении адаптера и назначении ему порта:
<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.
 
В интерфейсе программы '''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>
 
== Работа с программой  wb-modbus-device-editor ==
[[Image:wb-modbus-device-editor.png|300px|thumb|Интерфейс утилиты wb-modbus-device-editor]]
 
В утилиту встроены шаблоны для различных устройств, поэтому всё, что вам нужно — это скачать файл с утилитой, установить её, настроить параметры подключения и выбрать нужный шаблон.
 
В Linux:
# Скачать утилиту, [https://github.com/wirenboard/wb-modbus-device-editor/releases выбрав нужную версию по ссылке].
# Установить deb-пакет с помощью пакетного менеджера.


== Работа на Windows ==
В Windows:
# Скачать утилиту, [https://github.com/wirenboard/wb-modbus-device-editor/releases выбрав нужную версию по ссылке].
# Распаковать архив в удобную папку. Запустить wb-modbus-device-editor.exe. Для удобства можно вывести ярлык на рабочий стол.


Для работы с Modbus на windows рекомендуем использовать утилиту Modbus Poll из комплекта Modbus Tools, либо другую программу для работы c Modbus под Windows.  
== Работа с программой 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">
Подключите адаптер USB-RS485 к компьютеру. За тем нажмите ПКМ на меню "Пуск", выберите "Диспетчер устройств". Найдите тип устройств "Порты(COM и LPT)", разверните и найдите среди имеющихся устройств свой адаптер. Если драйвер не был установлен автоматически установите его вручную по инструкции от производителя. Далее нажмите ПКМ на адаптер 🠖 Свойства 🠖 Port Settings. Укажите параметры порта в соответствии с настройками Вашего оборудования. Для устройств WB по умолчанию 9600 8 n 2. Так же поставьте галку возле параметра "RS485", если такой имеется.
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>


=== 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]


'''[https://www.modbustools.com/download.html Modbus Poll]''' - Платная программа с бесплатным пробным периодом 30 дней. Программа работает в многооконном режиме, то есть одновременно можно опрашивать несколько разных устройств на шине.  
=== Создание собственной конфигурации ===
# Выберите в главном окне программы 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'''.


*Скачайте и установите программу
Рассмотрим работу с устройством по протоколу Modbus RTU на примере модуля реле [[WB-MR6C_v.2_Modbus_Relay_Modules | WB-MR6C v.2]]. Считаем состояние выхода 1, счетчик срабатываний входа 1 и серийный номер модуля:
*Запустите
# В [[Relay_Module_Modbus_Management | таблице регистров модуля реле]] найдите описание этих регистров:
*Нажмите F3 - откроется окно настройки соединения. Выберите настройки в соответствии с Вашим оборудованием и нажмите OK (пример на скриншоте)
#* состояние выхода 1 реле: адрес регистра 0, тип coil, формат bool
*Нажмите Ctrl+N для создания нового окна опроса, за тем нажмите F8 - откроется окно настройки опроса. Здесь необходимо указать modbus адрес устройства, тип опрашиваемого регистра(ов), начальный регистр и количество. За что отвечают те или иные регистры смотрите в картах регистров в документации к Вашему оборудованию. На пример [https://wirenboard.com/wiki/index.php?title=Relay_Module_Modbus_Management Карта регистров модулей реле]. После сохранения Вы увидите данные выбранных регистров в активном окне опроса.
#* счетчик срабатываний входа 1: адрес регистра 32, тип input, формат u16
*Если необходимо опрашивать несколько разных устройств на шине или несколько разных регистров или типов регистров одного устройства, еще раз нажмите Ctrl+N для создания нового окна. И снова нажмите F8 для настройки опроса.
#* серийный номер модуля: адреса регистров 270, 271, тип input, формат u32
*Для записи информации в регистры нажмите в меню кнопку "Functions" и выберите необходимый пункт.  
# Впишите эти параметры в настройках опроса регистров и включите опрос.  
# Если параметры обмена и конфигурация регистров корректны, то в поле '''Current value''' отобразится содержимое регистров.  
# Внесите изменения и остановите опрос.


На пример Если необходимо изменить modbus адрес устройства выберите "Write Single Register" (см скриншот). Введите текущий адрес устройства (параметр slave id), регистр 128 - в нем хранится modbus адрес (параметр Address), и новый modbus адрес (параметр Value). Параметр "Use Function" выберите "Write Single Register" и нажмите Send.
Конфигурацию можно сохранить и использовать её для настройки таких же устройcтв.


<gallery mode="packed" heights="200px">
<gallery mode="packed" heights="150px" caption="Пример опроса устройства">
File:Usbrs485-1.PNG|Настройка порта в диспетчере устройств.
Image: Rilheva-modbus-poll-register1-config.png | Конфигурирование опроса регистра состояния выхода 1 реле
File:Usbrs485-2.PNG|Настройка соединения в Modbus Poll.
Image: Rilheva-modbus-poll-register2-config.png | Конфигурирование опроса регистра счетчика срабатываний входа 1
File:Usbrs485-3.PNG|Настройка опроса в Modbus Poll.
Image: Rilheva-modbus-poll-register3-config.png | Конфигурирование опроса регистра серийного номера модуля
File:Usbrs485-4.PNG|Запись новых данных в регистр 128.
Image: Rilheva-modbus-poll-register-polling.png | Опрос регистров устройства Wirenboard
</gallery>
</gallery>


== Работа на Linux ==
== Работа с программой modbus_client ==
Для работы с modbus-утройством в ОС Linux также можно использовать консольную утилиту modbus_client.
 
Для этого скачайте [https://github.com/contactless/modbus-utils/releases/download/1.2/modbus-utils_1.2_amd64.deb пакет для настольных компьютеров с Linux].
 
Перейдите в папку со скаченным пакетом и установите его командой:
<syntaxhighlight lang="bash">
sudo apt install ./modbus-utils_1.2_amd64.deb
</syntaxhighlight>
 
Также автоматически должен установиться пакет <code>libmodbus</code>, если этого не произошло — установите его из репозитория apt.
 
Как работать и примеры использования смотрите в статье [[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.