Управление через mqtt устройствами подключенными по modbus rtu

Добрый день. Уже на протяжении пары дней, пытаюсь наладить управление через mqtt устройствами подключенными по modbus rtu. Проблема возникает уже на этапе конфигурирования mqtt-mbgate. После включения Modbus binding : RTU, ложится вся линия rs 485 (modbus rtu), состояние тегов становится “error”. Отправляю запрос по mqtt со SCADa, изменения по mqtt в WB приходят, но стоит обновить страничку, значение становится прежним. Такое чувство, что запрос дальше по линии rs485 не идёт, а остаётся на уровне контроллера.
WirenBoard 6

Необходимо управлять внешним прибором, изменять уставки и менять состояние. С веб интерфейса работает идеально, а вот через mqtt explorer или scada, изменения не происходят.

Настройки mqtt-mbgate.schem

Настройки mqtt-serial.conf

image

Cтоит отметить, что по mqtt в Scada данные приходят, не получается настроить именно управление.
Подскажите пожалуйста, как можно решить данный вопрос?

Добрый день.
А какой протокол предполагается для использования с mbgate? Modbus TCP или Modbus RTU?
Если, как на первом скриншоте включить использование RTU для ttyRS485-1 который УЖЕ включен в конфиг wb-mqtt-serial - то произвойдет конфликт.
То есть именно каждый из RS-485 портов может быть использован или для wb-mqtt-serial (как master) или для mbgate в режиме Modbus RTU (как slave).
Может все ж TCP настраиваете?

Да, благодарю за оформление вопроса - настолько понятно и доходчиво проблема описана - отвечать прямо-таки приятно.

1 Like

Нет, настраиваю именно RTU. Да, именно конфликт и происходит. А как его избежать и в тоже время, отправлять обратно запросы по RTU во внешнее устройство? Насколько я понял, для этого и предназначен шлюз? ( знаком с WB я не давно, устроился в компанию, которая сотрудничает с Вами, до этого работал с промышленными плк, там другой принцип, так что прошу не кидаться тряпками)

Или именно в mqtt-serial необходимо выполнить какую-то настройку?

Порт может быть использовани **или как slave (для mbgate, например) или как master (для serial).
Порт занимается монопольно. А схема которую вы хоьтите - когда в шине два мастера - один опрашивает контроллера и в тоже время сам контроллер работает мастером и опрашивает устройства - невозможна.
Надо использовать свободный, не задействованный в serial порт. Если два встроенных - уже заняты и нужны еще - можно доставить модулем расширения дополнительные RS485 порт, до 3 штук включитьелно дополнительных. Модуль: Модуль расширения: RS485, WBE2-I-RS485-ISO — Wiren Board
То есть используйте второй порт.

Спасибо большое за ответ. Но я не совсем понял, что значит использовать второй порт. Мне физически на него нужно ещё одну линию связи тянуть? У меня один контроллер, который опрашивает 6 своих модулей и 3 сторонних. Управление скажем прибором СО2 с веб-интерфейса осуществляется идеально, а вот если через mqtt изменить какую-нибудь уставку, она до прибора не доходит, хотя сам контроллер же управляет этим прибором.

Да, так. Но зачем именно RTU? контроллер же в сети, раз пользуетесь веб-интерфейсомМожно просто использовать Modbus TCP.

Так… Тут мы чуть в сторону отошли. Задача - управлять через MQTT?
она решается просто - для *изменения параметров - надо писать в /on топик.
https://wirenboard.com/wiki/MQTT#.D0.A3.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D1.83.D1.81.D1.82.D1.80.D0.BE.D0.B9.D1.81.D1.82.D0.B2.D0.B0.D0.BC.D0.B8_.D0.B8.D0.B7_.D0.BA.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D0.BD.D0.BE.D0.B9_.D1.81.D1.82.D1.80.D0.BE.D0.BA.D0.B8

1 Like

Спасибо огромное, вопрос решен с помощью “/on”!

1 Like