Введение: зачем подключать Modbus/TCP к AI?
Modbus/TCP — один из старейших и самых распространённых промышленных протоколов. Он используется тысячами PLC (программируемых логических контроллеров), RTU (удалённых терминалов) и датчиков на заводах, в энергетике, на транспорте. Обычно настройка такого оборудования требует написания кода на C++, Python или использования дорогих SCADA-систем. Но что, если вы можете управлять PLC простыми текстовыми командами в чате — и AI-агент сам напишет весь код интеграции?
Именно это и делает ASI Biont — AI-агент, который подключается к любому промышленному оборудованию через диалог. Никаких панелей управления, кнопок «добавить устройство» или ожидания, пока разработчики выпустят обновление. Вы просто описываете задачу, и AI пишет код на Python с библиотекой pymodbus, выполняет его в облачном sandbox-окружении и возвращает результат.
Как ASI Biont подключается к Modbus/TCP?
ASI Biont использует protocol='modbus_tcp' в инструменте industrial_command. Это встроенный механизм, который даёт AI возможность читать и писать регистры, катушки, дискретные входы и holding-регистры PLC. Команды выполняются на сервере ASI Biont (облако), который напрямую соединяется с устройством по IP-адресу и порту (по умолчанию 502).
Для работы не требуется запускать bridge на локальном ПК — если PLC доступен из интернета или локальной сети, AI подключается напрямую. Если устройство находится в изолированной сети, используется Hardware Bridge (см. ниже).
Доступные команды
| Команда | Описание | Пример параметров |
|---|---|---|
read_registers |
Чтение holding-регистров (16-бит) | slave=1, address=0, count=10 |
write_register |
Запись одного holding-регистра | slave=1, address=10, value=150 |
read_coils |
Чтение катушек (битовые выходы) | slave=1, address=0, count=8 |
write_coil |
Запись одной катушки | slave=1, address=5, value=True |
read_discrete_inputs |
Чтение дискретных входов | slave=1, address=0, count=16 |
Реальный сценарий: мониторинг температуры и аварийное отключение
Рассмотрим типовую задачу. На заводе есть PLC (например, Siemens S7-1200 с Modbus/TCP шлюзом), который управляет конвейерной линией. В регистре 0x0064 (100 десятичное) хранится температура подшипника двигателя. Если температура превышает 85°C, нужно отправить уведомление в Telegram и, если температура достигла 95°C, аварийно остановить линию, записав 0 в регистр 0x00C8 (200), отвечающий за разрешение работы.
Шаг 1. Пользователь описывает задачу в чате
В чате ASI Biont пользователь пишет:
«Подключись к PLC по адресу 192.168.1.100:502, slave ID 1. Каждые 30 секунд читай регистр 100 (температура подшипника). Если температура > 85, отправь уведомление в Telegram (токен: 123456:ABC, chat_id: 987654). Если температура > 95, запиши 0 в регистр 200 и отправь аварийное сообщение. Логируй все показания в CSV-файл.»
Шаг 2. AI пишет код и выполняет его
AI генерирует Python-скрипт с использованием pymodbus и requests для Telegram. Пример кода (выполняется в sandbox):
import asyncio
import csv
from datetime import datetime
from pymodbus.client import AsyncModbusTcpClient
import requests
TELEGRAM_TOKEN = "123456:ABC"
CHAT_ID = "987654"
PLC_IP = "192.168.1.100"
PLC_PORT = 502
SLAVE_ID = 1
TEMP_REGISTER = 100
STOP_REGISTER = 200
TEMP_WARN = 85
TEMP_CRITICAL = 95
async def send_telegram(message):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
await asyncio.to_thread(requests.post, url, json={"chat_id": CHAT_ID, "text": message})
async def main():
client = AsyncModbusTcpClient(PLC_IP, port=PLC_PORT)
await client.connect()
with open("temperature_log.csv", "a", newline="") as f:
writer = csv.writer(f)
for _ in range(60): # 30 секунд * 60 = 30 минут мониторинга
try:
result = await client.read_holding_registers(TEMP_REGISTER, 1, slave=SLAVE_ID)
temp = result.registers[0]
timestamp = datetime.now().isoformat()
writer.writerow([timestamp, temp])
if temp > TEMP_CRITICAL:
await client.write_register(STOP_REGISTER, 0, slave=SLAVE_ID)
await send_telegram(f"🚨 АВАРИЯ! Температура {temp}°C. Линия остановлена.")
break
elif temp > TEMP_WARN:
await send_telegram(f"⚠️ Предупреждение: температура {temp}°C")
await asyncio.sleep(30)
except Exception as e:
await send_telegram(f"❌ Ошибка: {str(e)}")
break
client.close()
asyncio.run(main())
Шаг 3. AI запускает код и возвращает результат
Sandbox выполняет скрипт. AI сообщает в чат: «Начинаю мониторинг. Первое чтение: температура 72°C. Логирую в CSV. При превышении 85°C отправлю уведомление.»
Что делать, если PLC в изолированной сети?
Если PLC находится в локальной сети без доступа из интернета, используйте Hardware Bridge. Пользователь скачивает bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge) и запускает его на ПК, который имеет доступ к PLC:
pip install pyserial requests websockets
python bridge.py --token=YOUR_TOKEN --ports=COM3 --baud 115200
После этого AI может отправлять команды через industrial_command с protocol='modbus_tcp', и bridge перенаправит их в локальную сеть.
Почему это выгодно?
- Нулевой порог входа: не нужно знать Modbus API, писать код вручную или разбираться в документации pymodbus. AI делает всё за секунды.
- Гибкость: можно менять логику на лету — просто напишите в чате «теперь проверяй регистр 150 и отправляй данные в Excel».
- Экономия времени: интеграция, которая заняла бы у инженера полдня, выполняется за 2 минуты.
Заключение
Modbus/TCP — это не просто протокол, это мост между промышленным оборудованием и AI. ASI Biont позволяет превратить PLC в интеллектуальный узел, который реагирует на события, отправляет уведомления и управляется через естественный язык. Попробуйте сами: зайдите на asibiont.com, опишите задачу в чате и увидите, как AI подключается к вашему устройству.
Призыв к действию: Перейдите на asibiont.com и начните интеграцию вашего Modbus-устройства с AI-агентом прямо сейчас. Бесплатный пробный период уже доступен.
Комментарии