Как подключить Modbus RTU-устройство стороннего производителя к контроллеру Wirenboard?

Материал из Wiren Board
Версия от 12:53, 8 августа 2021; A.Degtyarev (обсуждение | вклад) (Добавил структуру, поправил текст)

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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