Modbus/TCP и ASI Biont: как подключить PLC или RTU к AI-агенту за 5 минут

Введение

Промышленные контроллеры (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 может дополнительно прочитать регистр тока, чтобы подтвердить выполнение.

Почему это выгодно

  1. Экономия времени. Вместо того чтобы писать скрипт на Python с pymodbus, отлаживать его, настраивать планировщик — вы просто описываете задачу словами. AI генерирует и выполняет код за секунды.
  2. Гибкость. ASI Biont подключается к ЛЮБОМУ устройству через execute_python. Не нужно ждать, пока разработчики добавят поддержку нового протокола — используйте любую библиотеку из sandbox: snap7 (Siemens S7), pycomm3 (EtherNet/IP), bac0 (BACnet), python-can (CAN bus).
  3. Доступность. Всё управление — через Telegram, Slack или веб-интерфейс ASI Biont. Не нужно ставить SCADA на каждый компьютер. Можно отдать команду с телефона, находясь в командировке.
  4. Безопасность. bridge.py работает только на вашем ПК, соединение с облаком — через HTTPS short-polling. Никаких открытых портов в локальной сети.

Как подключить своё устройство

  1. Зайдите на asibiont.com и создайте AI-агента.
  2. В дашборде перейдите в Devices → Create API Key → скачайте bridge.py.
  3. Запустите bridge: python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --default-baud=9600 (для COM-портов) или просто python bridge.py --token=ВАШ_ТОКЕН (если используете только Modbus/TCP, SSH, MQTT — bridge не обязателен).
  4. Откройте чат с AI и напишите: «Подключись к моему PLC Siemens по адресу 192.168.1.100:502, прочитай регистры 40001-40010 и покажи таблицу».
  5. 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 устройств.

← Все статьи

Комментарии