Connecting Third Party Devices to Wiren Board: различия между версиями

Материал из Wiren Board
(→‎Создайте шаблон: изменил ссылку на документацию по шаблонам)
Строка 20: Строка 20:


== Создайте шаблон ==
== Создайте шаблон ==
Для удобства использования устройства [[Wb-mqtt-serial_templates | создайте шаблон для драйвера wb-mqtt-serial]] в шаблоне укажите:
Для удобства использования устройства [https://github.com/wirenboard/wb-mqtt-serial#%D0%A4%D0%B0%D0%B9%D0%BB-%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D0%B8-%D0%B8-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B создайте шаблон для драйвера wb-mqtt-serial] в шаблоне укажите:
* регистры, в которых хранятся нужные вам данные;
* регистры, в которых хранятся нужные вам данные;
* параметры инициализации, если они необходимы;
* параметры инициализации, если они необходимы;

Версия 11:07, 6 апреля 2022

Введение

Modbus RTU — один из распространенных протоколов для связи устройств. Если устройство стороннего производителя поддерживает протокол Modbus RTU, то его можно подключить к контроллеру Wirenboard.

Список всех поддерживаемых контроллером протоколов можно найти в Таблице поддерживаемых устройств.

Некоторые производители Modbus-устройств не придерживаются стандартов протокола, что может сказаться на работе всей шины. Поэтому рекомендуем проверять работу новых устройств на отдельной шине и только после того, как добьётесь стабильной работы, подключать к ней другие Modbus-устройства.

Подключите устройство

Для подключения стороннего устройства по протоколу Modbus RTU:

  1. Откройте документацию на устройство и убедитесь, что оно имеет интерфейс RS-485 и поддерживает протокол Modbus RTU.
  2. Проверьте, нет ли вашего устройства в Таблице поддерживаемых устройств. Если устройство там есть — используйте указанные в таблице рекомендации по подключению.
  3. Определите, какая информация вам нужна и в каких регистрах она находится.
  4. Подключите устройство к контроллеру по шине RS-485.
  5. Узнайте в документации на устройство параметры подключения: скорость (Baud rate), Количество битов данных (Data bits), Бит чётности (Parity), Количество стоповых битов (Stop bits), Modbus-адрес устройства.
  6. Проверьте связь с устройством и правильность подключения:
    • Остановите драйвер wb-mqtt-serial или иное ПО, которое опрашивает устройство.
    • Подключитесь к устройству с помощью утилиты modbus_client и считайте данные из любого известного вам регистра.

Если чтение данных пройдёт успешно — вы верно подключили устройство и настроили параметры соединения.

Создайте шаблон

Для удобства использования устройства создайте шаблон для драйвера wb-mqtt-serial в шаблоне укажите:

  • регистры, в которых хранятся нужные вам данные;
  • параметры инициализации, если они необходимы;
  • обязательно в шаблоне задайте параметр guard_interval_us, значение которого должно быть не менее 3.5 символа при выбранной скорости. Нужное значение рассчитывается по формуле:

guard_interval_us = (3.5*11*106)/(скорость в бит/с).

Например, для скорости 9600 бит/с guard_interval_us = (3.5*11*106)/9600 = 4000 мкс. При проблемах с подключением стороннего устройства для теста это значение можно увеличить (например до 100000 мкс), так как сторонние устройства иногда работают не совсем корректно.

  • для проверки корректности шаблона выполните на контроллере команду wb-mqtt-serial -g.

Эта команда проверит на корректность файлы шаблонов в директориях /usr/share/wb-mqtt-serial/templates (директория предустановленных шаблонов) и /etc/wb-mqtt-serial.conf.d/templates (директория для пользовательских шаблонов). Если в шаблонах содержатся ошибки, то на экран будут выведены диагностические сообщения с указанием имени шаблона и ошибка.

Особенности реализации Modbus RTU в устройствах Wiren Board

Стандартом Modbus RTU предусмотрен обязательный интервал тишины между фреймами данных в 3.5 символа — frame_timeout_ms.

Для ускорения опроса устройств Wiren Board мы соблюдаем этот интервал только перед первым запросом к следующему в цикле опроса устройству.

Поэтому, чтобы соответствовать требованиям протокола Modbus-RTU, нужно для сторонних устройств задавать параметр guard_interval_us.

Совместная работа модулей Wiren Board и устройств сторонних производителей на одной шине

При работе модулей Wirenboard и устройств сторонних производителей на одной шине RS-485 параметр guard_interval_us следует задавать целиком для порта, также следует изменить параметр RS-485 Response Delay (ms) (Задержка перед ответом по RS-485) у модулей Wirenboard (если такой параметр имеется), например установив значение 8 мс. Это необходимо, так как несоблюдение интервалов тишины при обращении к модулям Wirenboard приводит к сбою в работе некоторых устройств сторонних производителей.

Полезные ссылки