Modbus реле на 16 каналов (R4D3B16)

Доброго времени суток!

Купил китайское 16-ти канальное реле управляемое через RS485 (MODBUS) интерфейс. Подключил к WB5 и пытался сделать для него шаблон для wb-modbus-seiral драйвера, но полностью устройство так и не заработало. Описал все 16 каналов как в примере ниже.

        {
            "name": "DO_01",
            "reg_type": "holding",
            "address": 1,
            "type": "switch"
        },

Добавил девайс, но есть две проблемы:

  1. Состояние каналов вроде бы считывается правильно, но все нечетные каналы подсвечены красным (периодически есть проблемы считывания). Иногда ситуация меняется и красным подсвечиваются четные каналы. Пробовал менять poll_intervall для устройства и для каналов - не помогает. Устройство возвращает два состояние в двух байтах - 0x0000 или 0x0001. Может ли это являться причиной такого поведения с WB? Подскажите, как можно определить, в чем проблема?

  2. Не работает управление каналами через MQTT. Проблема похоже в том, что команда включения/выключения состоит из двух байт - состояние и задержка. Например включение 1го канала через modbus_client выглядит следующим образом:

modbus_client -mrtu -a0x21 -b9600 -d8 -s1 -pnone /dev/ttyAPP1 --debug -t0x06 -r0x01 0x0100

выключение производится записью 0x0200 (непонятно чем руководствовались китайцы, что выбрали 2-ку вместо 0 для сброса) вместо 0x0100.

Собственно вопрос - можно ли стандартным путём прикрутить это реле к WB5, что бы управлять каналами и отслеживать их состояние через MQTT?

Спасибо!

Добрый день.

Если включить дебаг для serial - таймауты? Или ошибка CRC?

Нет, если обмен идет без ошибок.

Я поискал , но карты регистров в интернете нет, вы откуда брали документацию?
По сути - для такого рода устройств надо писать как “шаблон” - который отобразит состояние регистров в MQTT так и виртуальное устройство, которое уже позволит им “удобно” управлять.
То же switch из шаблона не даст при “выключении” записать 0x200.

Добрый день!

Карту регистров предоставили китайцы после покупки. Я загрузил архив на Яндекс диск (https://yadi.sk/d/F29E_oHTH5SsIQ).

Попробовал debug, увидел, что периодически проскакивали ошибки serial port timeout. Методом подбора, нашел, что guard_interval_us = 4000 избавляет от ошибок при чтении статуса каналов. Однако после записи, иногда проскакивают ошибки. Буду дальше эксперементировать.

Сегодня поигрался с типами регистров и контролов. В итоге, при использовании “holding” или “holding_single” с контролом типа “value” удалось таки заставить реле переключаться, записывая числа 256 (вкл) или 512 (выкл) в MQTT топик */on. Правда есть одна маленькая проблемка. После записи указанных чисел в топик */on, это же значение на секунду появляется в веб интерфейсе для соответсвующего канала, затем оно зменяется на 0 или 1. Думаю это не критично. Буду дальше двигаться в сторону виртуального устройства для нормального управления, как другими стандартными реле.

Спасибо!

Собственно вы сами практически со всем разобрались. :wink:

Добрый день!

удалось ли продвинуться в сторону виртуального устройства? у меня тоже такое реле, но на 8 входов и 8 реле. я только начал свой путь по освоению данного чуда))
могли бы поделиться своими наработками?

Здравствуйте!
Для информации: в документации сделали руководство по подключению сторонних устройств к контроллеру Wirenboard.

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.