Modbus TCP / RTU over TCP

Регистры устройств Modbus прямо в чате

Подключите устройства Modbus TCP к ИИ-агенту: регистры и катушки по карте тегов через шлюз на объекте. Агент сведёт сутки по часам и посчитает расход по счётчику.

Как агент работает с Modbus TCP

Данные читает шлюз: программа, которая ставится службой на компьютер или сервер в сети объекта и ходит к устройству по Modbus TCP, порт 502, или к последовательному шлюзу в режиме RTU поверх TCP. В подключении указываются адрес, номер устройства (по умолчанию 1) и карта регистров: по строке на тег путь, адрес и тип, например holding.100 float32. Наружу шлюз отправляет данные только исходящим соединением.

Адрес пишется от нуля, как в запросе: регистр 40001 из руководства это holding.0, а 30010 это input.9. Значения в 2 и 4 регистрах читаются в порядке байт из руководства устройства (ABCD, CDAB, BADC, DCBA), и тег может задать свой. Соседние теги одной области и одного устройства читаются одним запросом, до 125 регистров или 2000 битов; пропуск между тегами по умолчанию 0, потому что регистр без карты даёт исключение всему запросу.

Драйвер только читает: из функций Modbus он посылает чтение катушек, дискретных входов, holding и input регистров (коды 1 до 4). Записи и комбинированных функций в нём нет. Исключение устройства помечает плохими теги этого запроса со своим кодом, а ответ «занято» пропускает один опрос; остальные устройства за тем же шлюзом читаются дальше.

В режиме RTU поверх TCP у кадра нет номера транзакции, поэтому шлюз держит один запрос за раз и после нового соединения выжидает одно время ответа, чтобы поздний ответ прошлого запроса не попал в тег. Для медленного устройства есть паузы после соединения и между запросами. Если связь с облаком рвётся, данные копятся на диске шлюза и приходят после восстановления.

Сценарии интеграции

Что сейчас на линии

Агент найдёт теги по пути, например line1/tank, и покажет текущие значения регистров и катушек со временем отсчёта и пометкой, свежие ли они.

Сводка за сутки

Агент возьмёт историю температуры, давления или мощности за сутки и по часам покажет минимум, максимум, среднее и последнее значение.

Расход по счётчику

Агент заберёт показания накопительного счётчика из пары регистров за месяц и посчитает расход по дням.

Задача на выход за порог

Агент заведёт задачу, которая запустится, когда значение тега выйдет за порог и продержится заданное время, а не на каждый отсчёт за порогом.

Теги с исключением

Агент назовёт теги, на которые устройство ответило исключением, и его код, например 0x02 (нет такого адреса) или 0x0B (устройство за шлюзом не ответило).

Пропуски в данных

Агент покажет промежутки истории без отсчётов и скажет, на связи ли шлюз объекта сейчас.

Примеры: Modbus TCP

Modbus TCP
Реальные чаты: выберите вопрос
Сколько воды ушло за октябрь?

За октябрь 1 860 м³, в среднем 60 м³ в сутки.

  • Больше всего 94 м³ 17 октября
  • В выходные расход падал до 25–30 м³

Показания беру из пары регистров счётчика по карте тегов и считаю разницу по дням.

Открыть в чате

Как подключить

Перед подключением

  • Устройство Modbus TCP или последовательный шлюз в прозрачном режиме
  • Порт 502 или порт шлюза открыт до компьютера шлюза объекта
  • Карта регистров из руководства устройства: адреса, типы, порядок байт
  • Номер устройства (unit id), если он не 1
  • Компьютер в сети объекта для службы шлюза
  • Сервер пускает только известные адреса? Разрешите подключения с 158.160.205.91 и 87.228.27.163.
  1. 1

    Выберите режим передачи шлюза

    tcp сопоставляет запрос и ответ по ID транзакции. RTU не различает одинаковые поздние ответы; если шлюз поддерживает Modbus TCP, выберите tcp.

  2. 2

    Для RTU оставьте одного мастера линии

    rtu_over_tcp требует прозрачного режима последовательного шлюза. Отключите других мастеров и клиентов TCP, получающих копии того же потока.

Частые вопросы

Заведите шлюз во вкладке «Шлюзы» и поставьте его службой на компьютер в сети объекта. В подключении укажите адрес устройства, например tcp://10.0.12.5:502, номер устройства, порядок байт и карту регистров: по строке путь, адрес и тип, например line1/tank/level holding.100 float32 unit=°C. Подключение назначается шлюзу, и он начинает опрос.

Теги из карты регистров: катушки, дискретные входы, holding и input регистры, целые и дробные значения до 64 бит, отдельные биты регистра и строки. Для каждого тега агент читает текущее значение со временем отсчёта, историю интервалами и сырые отсчёты.

Нет. Драйвер посылает только функции чтения 1 до 4, функций записи в нём нет. Агент ничего не пишет в устройство.

Номер вида 40001 считается от единицы, а первая цифра называет область: 4 это holding, 3 это input. Номер пишется от нуля без этой цифры: 40001 это holding.0, 30010 это input.9. Бит регистра пишется через точку, например holding.100.3.

Категория
Оборудование
Подключение
По API-ключу

Подключите Modbus TCP

Подключение занимает пару минут, данные остаются в ваших системах.

Подключить