Регистры устройств 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
За октябрь 1 860 м³, в среднем 60 м³ в сутки.
- Больше всего 94 м³ 17 октября
- В выходные расход падал до 25–30 м³
Показания беру из пары регистров счётчика по карте тегов и считаю разницу по дням.
Как подключить
Перед подключением
- Устройство Modbus TCP или последовательный шлюз в прозрачном режиме
- Порт 502 или порт шлюза открыт до компьютера шлюза объекта
- Карта регистров из руководства устройства: адреса, типы, порядок байт
- Номер устройства (unit id), если он не 1
- Компьютер в сети объекта для службы шлюза
- Сервер пускает только известные адреса? Разрешите подключения с 158.160.205.91 и 87.228.27.163.
- 1
Выберите режим передачи шлюза
tcp сопоставляет запрос и ответ по ID транзакции. RTU не различает одинаковые поздние ответы; если шлюз поддерживает Modbus TCP, выберите tcp.
- 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.