Введение
Промышленная автоматизация — это мир, где Modbus RTU по RS-485 остаётся золотым стандартом. Десятки тысяч контроллеров, датчиков температуры, давления, расходомеров, клапанов и насосов по всему миру общаются именно по этой шине. Но чтобы собрать с них данные, настроить мониторинг или управление, обычно приходится писать код, настраивать SCADA-системы или покупать дорогие шлюзы. ASI Biont меняет правила игры: вы просто описываете в чате, к какому устройству подключиться, и AI-агент сам пишет интеграцию. В этой статье — пошаговое руководство по подключению Modbus RTU (RS-485) к ASI Biont: от схемы до реального сценария управления клапаном через Telegram. Никакого кодирования вручную — только диалог с AI.
Что такое Modbus RTU (RS-485) и зачем его подключать к AI-агенту
Modbus RTU — один из старейших и самых надёжных промышленных протоколов. Данные передаются в двоичном формате (RTU — Remote Terminal Unit) по физическому интерфейсу RS-485, который обеспечивает связь на расстоянии до 1200 метров и устойчивость к помехам. Типичная сеть — мастер (обычно ПЛК или компьютер) и до 247 слейвов (датчиков, исполнительных механизмов).
Проблема: чтобы прочитать регистр с датчика или записать значение в контроллер клапана, нужно:
1. Знать адрес слейва, номер регистра (holding register, input register, coil).
2. Настроить COM-порт (baud rate, parity, stop bits).
3. Написать код на Python/C++/C# с использованием библиотеки pymodbus или libmodbus.
4. Разобрать ответ (обычно 2 байта данных).
5. Реализовать логику мониторинга и уведомлений.
Решение с ASI Biont: вы в чате пишете: «Подключись к Modbus RTU на COM3, 9600, 8N1, считай holding register 1 с адреса 1 каждые 5 секунд и отправляй в Telegram, если температура > 80°C». AI-агент сам генерирует код, запускает его на сервере (через execute_python) или отправляет команды через Hardware Bridge (bridge.py на вашем ПК), который напрямую общается с COM-портом. Всё — без единой строки кода с вашей стороны.
Какой способ подключения используется
Для Modbus RTU (RS-485) ASI Biont использует два основных способа:
| Способ | Когда применять | Как работает |
|---|---|---|
| Hardware Bridge (bridge.py) | Устройство подключено к COM-порту вашего ПК через USB-RS485 конвертер. | Вы запускаете bridge.py на своём ПК (Windows/Linux/macOS). Bridge подключается к ASI Biont через WebSocket (единственный канал). AI отправляет команду через industrial_command с протоколом serial:// — bridge читает/пишет в COM-порт через pyserial. Данные передаются в hex-формате (например, data="010300000001840A" — Modbus RTU запрос). Bridge выполняет атомарную операцию: отправляет запрос в порт и сразу читает ответ. |
| execute_python (облачный sandbox) | Устройство доступно по сети (например, Ethernet-RS485 шлюз), или вы хотите использовать библиотеку pymodbus напрямую через TCP-to-RTU. | AI пишет Python-скрипт с pymodbus, который выполняется в sandbox-окружении на сервере ASI Biont (Railway). Скрипт подключается к Modbus TCP (через шлюз) или к RTU через последовательный порт, если порт проброшен через сеть (например, ser2net). Важно: execute_python не имеет доступа к локальным COM-портам — для этого используйте Hardware Bridge. |
Почему Hardware Bridge — основной вариант для RS-485?
Потому что большинство промышленных датчиков и контроллеров не имеют Ethernet-выхода. Они подключаются через USB-RS485 конвертер (например, FTDI, CH340) к USB-порту ПК. Bridge.py — это единственный безопасный способ дать облачному AI доступ к вашему локальному COM-порту. Bridge работает через WebSocket (шифрованный), не открывает порты в интернет и не требует статического IP. Вы просто запускаете скрипт на своём компьютере, и AI получает канал связи.
Конкретный сценарий: мониторинг температуры и управление клапаном через Telegram
Представьте: на заводе есть Modbus RTU-датчик температуры (адрес 1, holding register 1 — температура в °C с множителем 10) и Modbus RTU-клапан (адрес 2, coil 1 — открыть/закрыть). Задача: AI-агент должен каждые 10 секунд опрашивать датчик, и если температура превышает 85°C — отправлять уведомление в Telegram и закрывать клапан (coil = 0).
Шаг 1. Подготовка оборудования
- Подключите датчик и клапан к USB-RS485 конвертеру (схема: A (D+) → A, B (D-) → B, GND → GND).
- Подключите конвертер к ПК (появится порт, например, COM3 на Windows, /dev/ttyUSB0 на Linux).
- Узнайте параметры Modbus сети: baud rate (9600), data bits (8), parity (None), stop bits (1) — обычно 9600 8N1.
- Установите Python 3.8+ на ПК и библиотеки:
pip install pyserial requests websockets.
Шаг 2. Скачайте и запустите Hardware Bridge
Bridge.py скачивается только через дашборд ASI Biont: Devices → Create API Key → Скачать bridge. После скачивания запустите:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud 115200
Флаг --rate=10 (опционально) ограничивает частоту запросов к порту, чтобы не перегружать устройство.
Bridge подключается к ASI Biont через WebSocket и готов к приёму команд.
Шаг 3. Опишите задачу в чате с AI-агентом
Вы пишете:
Подключись к Modbus RTU устройству через Hardware Bridge на порту COM3, baud rate 9600, 8N1. Адрес датчика температуры — 1, holding register 1, значение в °C с множителем 10. Адрес клапана — 2, coil 1. Каждые 10 секунд читай температуру. Если температура > 85°C, отправь сообщение в Telegram (токен: 123456:ABC, chat_id: 987654) и закрой клапан (coil = 0). Если температура упадёт ниже 75°C — открой клапан (coil = 1).
AI-агент понимает задачу и генерирует необходимые команды. Он не пишет Python-код напрямую (так как execute_python не имеет доступа к COM-порту), а использует industrial_command с протоколом serial://.
Шаг 4. Как AI формирует команды
Для чтения holding register 1 с адреса 1 AI отправляет Modbus RTU запрос:
industrial_command(protocol='serial://', command='write_and_read', port='COM3', baud=9600, data='010300000001840A')
Здесь:
- 01 — адрес слейва (1)
- 03 — функция чтения holding registers (0x03)
- 0000 — начальный адрес регистра (0)
- 0001 — количество регистров (1)
- 840A — CRC16 (вычисляется автоматически bridge.py, если не указан, или передаётся вручную)
Bridge отправляет эти 8 байт в COM-порт и читает ответ: 01 03 02 02 58 B8 73 (2 байта данных: 0x0258 = 600, что означает 60.0°C). Bridge возвращает ответ AI-агенту.
Для записи coil 1 на адресе 2 (закрыть клапан):
industrial_command(protocol='serial://', command='write_and_read', port='COM3', baud=9600, data='0205000000CDCD')
Где 0205000000CDCD — запись coil 1 в 0 (выключено).
Шаг 5. Автоматизация через execute_python (уведомления в Telegram)
AI-агент не может напрямую вызывать Telegram API из industrial_command. Для отправки сообщений он использует execute_python — пишет скрипт, который выполняется в sandbox-окружении. Вот как выглядит сгенерированный код:
import requests
import time
# Параметры от AI (заполняются автоматически)
TELEGRAM_TOKEN = "123456:ABC"
CHAT_ID = "987654"
def send_telegram_message(text):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
payload = {"chat_id": CHAT_ID, "text": text}
requests.post(url, json=payload)
# AI получает данные от bridge и принимает решение
# Этот скрипт выполняется по таймеру (каждые 10 секунд)
temperature = 60.0 # пример данных от bridge
if temperature > 85.0:
send_telegram_message(f"⚠️ Авария! Температура {temperature}°C превышает 85°C. Закрываю клапан.")
# Команда на закрытие отправляется через industrial_command
elif temperature < 75.0:
send_telegram_message(f"✅ Температура {temperature}°C в норме. Открываю клапан.")
Важно: execute_python выполняется в sandbox с таймаутом 30 секунд. Поэтому бесконечные циклы (while True) запрещены — AI использует периодический вызов (каждые 10 секунд) через механизм scheduled tasks, который настроен в дашборде.
Шаг 6. Результат
Теперь:
- Каждые 10 секунд AI читает температуру.
- Если температура > 85°C — в Telegram приходит тревога, клапан закрывается.
- Если температура падает ниже 75°C — клапан открывается, приходит уведомление.
- Всё управление — через чат, без панелей управления и ручного кода.
Почему это выгодно: реальные цифры
Традиционная интеграция Modbus RTU устройства требует:
- 2-4 часа на написание и отладку кода на Python/C#.
- Знание Modbus протокола, CRC16, работы с COM-портами.
- Настройку отдельного сервера или скрипта для мониторинга.
- Дополнительное время на интеграцию с Telegram/email.
С ASI Biont:
- 5 минут на подключение bridge.py.
- 2 минуты на описание задачи в чате.
- AI пишет код за секунды.
- Не нужно знать Modbus — AI разбирается с CRC и адресами сам.
Подводные камни и как их избежать
- CRC16. Modbus RTU требует контрольную сумму. Bridge.py умеет вычислять CRC автоматически, если в команде не указан CRC. Но если вы передаёте данные вручную — убедитесь, что CRC правильный. AI-агент всегда вычисляет CRC через pymodbus или встроенную функцию.
- Таймауты. Некоторые датчики медленно отвечают (до 500 мс). Bridge использует таймаут по умолчанию 1 секунда. Если устройство медленнее — укажите
--timeout 2при запуске bridge. - Конфликт портов. Если на COM3 уже работает другая программа (например, SCADA), bridge не сможет открыть порт. Закройте другие программы или используйте другой порт.
- Overlapped I/O на Windows. На Windows pyserial иногда использует overlapped I/O, что вызывает ошибки записи. Bridge автоматически применяет CancelIoEx + PurgeComm + синхронный WriteFile — это решает проблему. Если bridge выдаёт ошибку «written: 0», проверьте, не занят ли порт.
Другие сценарии интеграции Modbus RTU с ASI Biont
| Сценарий | Что делает AI |
|---|---|
| Мониторинг давления в трубопроводе | Читает input register датчика давления, логирует в CSV, отправляет отчёт раз в час в Telegram. |
| Управление насосом по уровню в резервуаре | Читает holding register уровнемера, включает/выключает насос (coil) при достижении порогов. |
| Сбор данных с энергомониторов | Читает несколько holding registers (напряжение, ток, мощность) и строит график через matplotlib. |
| Аварийная сигнализация | При чтении дискретного входа (coil) = 1 отправляет уведомление в Telegram и Slack. |
Заключение
Modbus RTU (RS-485) — это не legacy, а живой стандарт, который будет работать ещё десятилетия. ASI Biont делает его дружелюбным: вы просто говорите AI, что нужно сделать, и он сам пишет код, подключается к устройству и управляет им. Никаких панелей, кнопок «добавить устройство» или ожидания обновлений — всё через диалог. Попробуйте сами: подключите свой первый Modbus датчик за 10 минут на asibiont.com.
Комментарии