Введение
Промышленные контроллеры (PLC) и удалённые терминалы (RTU) — основа любой автоматизации на производстве. Они управляют конвейерами, регулируют температуру в печах, контролируют давление в трубопроводах. Но классическая работа с ними требует либо дорогих SCADA-систем, либо написания сложных протокольных скриптов. Что, если я скажу, что теперь можно управлять PLC через обычный чат?
ASI Biont — AI-агент, который подключается к промышленному оборудованию по протоколу Modbus/TCP и выполняет команды на естественном языке. Вы пишете: «Прочитай температуру из регистра 40001 на PLC Siemens», — и AI сам формирует запрос, парсит ответ и возвращает результат. Никаких панелей управления, никаких кнопок «добавить устройство» — только диалог.
Как AI подключается к Modbus/TCP
ASI Biont использует industrial_command tool с библиотекой pymodbus (версия 3.6.8). Это стандартная библиотека Python для работы с Modbus TCP, поддерживающая чтение/запись регистров, катушек и дискретных входов.
Доступные команды:
| Команда | Назначение |
|---|---|
read_registers |
Чтение holding или input регистров (16-бит) |
write_register |
Запись одного holding регистра |
read_coils |
Чтение состояния катушек (0/1) |
write_coil |
Установка катушки в 0 или 1 |
Для подключения нужно указать IP-адрес устройства и TCP-порт (по умолчанию 502). AI принимает эти параметры из диалога: «Подключись к PLC 192.168.1.100:502».
Сценарий 1: Мониторинг температуры на PLC Siemens S7-1200
Допустим, на заводе стоит Siemens S7-1200 с датчиком температуры, подключённым к аналоговому входу. Значение хранится в holding регистре 40001. Задача: AI должен каждые 5 минут читать регистр и отправлять отчёт в Telegram.
Как это выглядит в чате:
Пользователь: «Подключись к PLC 192.168.1.100:502, читай регистр 40001 каждые 5 минут и отправляй мне в Telegram, если температура выше 80°C»
AI формирует запрос:
import time
from pymodbus.client import ModbusTcpClient
client = ModbusTcpClient('192.168.1.100', port=502)
client.connect()
while True:
result = client.read_holding_registers(0, 1) # регистр 40001 = address 0
if result.isError():
print('Ошибка чтения')
else:
temp = result.registers[0] / 10.0 # предположим, температура с точностью 0.1°C
print(f'Температура: {temp}°C')
if temp > 80:
requests.post('https://api.telegram.org/bot<TOKEN>/sendMessage', json={'chat_id': '<CHAT_ID>', 'text': f'⚠️ Авария! Температура {temp}°C'})
time.sleep(300)
Важно: В sandbox ASI Biont действует таймаут 30 секунд, поэтому while True не пройдёт. Реальный код использует однократное чтение через industrial_command или асинхронный цикл с asyncio.sleep. Но для наглядности я упрощаю.
AI выполняет industrial_command(protocol='modbus', command='read_registers', ...) и получает данные. Затем он сам решает, нужно ли уведомление.
Сценарий 2: Управление RTU — включение насоса по команде
RTU (Remote Terminal Unit) часто управляет насосами, задвижками, клапанами. Допустим, у нас есть Modbus-реле, подключённое к RTU. Катушка 0 управляет насосом: 1 — включить, 0 — выключить.
Диалог:
Пользователь: «Включи насос на RTU 10.0.0.50»
AI выполняет:
industrial_command(protocol='modbus', command='write_coil', target='10.0.0.50:502', coil_address=0, value=True)
Ответ: «Насос включён. Ток нагрузки: 12.3 А (регистр 30001)». AI может дополнительно прочитать регистр тока, чтобы подтвердить выполнение.
Почему это выгодно
- Экономия времени. Вместо того чтобы писать скрипт на Python с pymodbus, отлаживать его, настраивать планировщик — вы просто описываете задачу словами. AI генерирует и выполняет код за секунды.
- Гибкость. ASI Biont подключается к ЛЮБОМУ устройству через
execute_python. Не нужно ждать, пока разработчики добавят поддержку нового протокола — используйте любую библиотеку из sandbox: snap7 (Siemens S7), pycomm3 (EtherNet/IP), bac0 (BACnet), python-can (CAN bus). - Доступность. Всё управление — через Telegram, Slack или веб-интерфейс ASI Biont. Не нужно ставить SCADA на каждый компьютер. Можно отдать команду с телефона, находясь в командировке.
- Безопасность. bridge.py работает только на вашем ПК, соединение с облаком — через HTTPS short-polling. Никаких открытых портов в локальной сети.
Как подключить своё устройство
- Зайдите на asibiont.com и создайте AI-агента.
- В дашборде перейдите в Devices → Create API Key → скачайте bridge.py.
- Запустите bridge:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --default-baud=9600(для COM-портов) или простоpython bridge.py --token=ВАШ_ТОКЕН(если используете только Modbus/TCP, SSH, MQTT — bridge не обязателен). - Откройте чат с AI и напишите: «Подключись к моему PLC Siemens по адресу 192.168.1.100:502, прочитай регистры 40001-40010 и покажи таблицу».
- AI выполнит
industrial_commandи вернёт результат.
Важные моменты
- Ограничения sandbox: execute_python выполняется в облаке и имеет таймаут 30 секунд. Не пытайтесь запускать бесконечные циклы или тяжелые вычисления — используйте
industrial_commandдля быстрых запросов. - COM-порты: Если ваше устройство подключено через RS-232/RS-485 к COM-порту ПК, обязательно используйте bridge.py. Он обеспечит доступ к pyserial из облака.
- Логирование: AI автоматически сохраняет историю команд и результатов в дашборде. Вы всегда можете вернуться к предыдущим данным.
Заключение
Modbus/TCP — это не просто протокол, это мост между AI и «железом». С ASI Biont вы перестаёте писать утилиты для каждого контроллера — AI делает это за вас. Хотите настроить аварийную сигнализацию? Напишите в чат. Нужно изменить уставку температуры? Скажите AI. Всё остальное — код, протоколы, парсинг — AI берёт на себя.
Попробуйте сами: asibiont.com — создайте AI-агента и подключите свой первый PLC за 5 минут. Бесплатный тариф позволяет интегрировать до 3 устройств.
Комментарии