Введение
Промышленные системы управления — SCADA и DCS — десятилетиями работают в изолированных контурах. Инженеры АСУ ТП пишут скрипты на Python, настраивают OPC-UA-клиенты и вручную тянут данные в Excel или SQL-базы. Но что, если вместо ручного скриптинга вы просто скажете AI-агенту: «Подключись к OPC-UA-серверу на 192.168.1.100, прочитай температуру реактора и отправь в Telegram при превышении 80°C»? Именно это позволяет сделать ASI Biont — AI-агент, который сам пишет код интеграции под ваше устройство. В этой статье мы разберём, как подключить OPC-UA-сервер (SCADA/DCS) к ASI Biont, какие сценарии автоматизировать и почему это снижает порог входа для инженеров.
Что такое OPC-UA и зачем его подключать к AI-агенту?
OPC-UA (Open Platform Communications Unified Architecture) — это открытый стандарт промышленной связи, который используется для обмена данными между SCADA-системами, DCS, ПЛК и датчиками. В отличие от классического OPC-DCOM, OPC-UA работает через TCP/IP, поддерживает шифрование, аутентификацию и модель адресного пространства (теги, объекты, методы). По данным OPC Foundation (opcfoundation.org), более 4500 компаний по всему миру используют OPC-UA в своих решениях. Подключение такого сервера к AI-агенту позволяет:
- Автоматически читать теги (температура, давление, уровень) и анализировать тренды.
- Писать значения в теги для управления оборудованием (например, аварийное отключение насоса).
- Интегрировать данные с внешними сервисами: Telegram, Notion, Google Sheets, базами данных.
- Заменить ручной скриптинг на диалог с AI: вы описываете задачу, AI пишет код и выполняет его.
Как ASI Biont подключается к OPC-UA-серверу?
ASI Biont использует два основных механизма для работы с OPC-UA:
1. industrial_command tool — AI отправляет команду industrial_command(protocol='opcua', command='read_variable', params={'url': 'opc.tcp://192.168.1.100:4840', 'node_id': 'ns=2;s=Temperature'}). Этот вызов выполняется в облаке и возвращает значение тега.
2. execute_python — AI пишет полноценный Python-скрипт с библиотекой opcua-asyncio (asyncua), который выполняется в sandbox-окружении ASI Biont. Скрипт может читать/писать теги, подписываться на изменения, сохранять данные в PostgreSQL или отправлять в Telegram.
Важно: OPC-UA-сервер должен быть доступен из интернета (если он находится в локальной сети, используйте VPN или Hardware Bridge для туннелирования). ASI Biont не имеет прямого доступа к локальной сети пользователя — все запросы идут через облако.
Пошаговая настройка
- Опишите задачу в чате: «Подключись к OPC-UA-серверу на opc.tcp://192.168.1.100:4840, прочитай значение тега Temperature и запиши в переменную». AI сам выберет способ — либо через industrial_command, либо через execute_python.
- AI пишет код: Если используется execute_python, AI генерирует скрипт с asyncua, выполняет его в sandbox и возвращает результат.
- Результат в чате: AI показывает прочитанное значение, подтверждает запись или сообщает об ошибке.
Пример кода: чтение тега OPC-UA через execute_python
Ниже приведён реальный Python-скрипт, который ASI Biont может сгенерировать и выполнить. Он подключается к OPC-UA-серверу, читает тег температуры и выводит результат. Обратите внимание: в sandbox нет while True — код выполняется один раз и завершается в течение 30 секунд.
import asyncio
from asyncua import Client
async def read_opcua_tag():
url = "opc.tcp://192.168.1.100:4840"
node_id = "ns=2;s=Temperature"
async with Client(url=url) as client:
node = client.get_node(node_id)
value = await node.read_value()
print(f"Значение тега {node_id}: {value}")
return value
result = asyncio.run(read_opcua_tag())
Что делает этот код?
- Подключается к OPC-UA-серверу по адресу
opc.tcp://192.168.1.100:4840. - Читает значение узла с идентификатором
ns=2;s=Temperature. - Выводит результат в консоль sandbox.
Сценарий 1: Аварийное отключение оборудования при превышении температуры
Представьте: на заводе есть реактор, температура в котором не должна превышать 80°C. AI-агент может:
1. Подключиться к OPC-UA-серверу.
2. Прочитать тег Reactor_Temperature.
3. Если значение > 80°C, записать в тег Emergency_Stop значение True (или 1).
4. Отправить уведомление в Telegram.
Пример кода (выполняется через execute_python):
import asyncio
from asyncua import Client
import requests
TELEGRAM_TOKEN = "ваш_токен"
CHAT_ID = "ваш_chat_id"
def send_telegram(message):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
requests.post(url, json={"chat_id": CHAT_ID, "text": message})
async def emergency_check():
url = "opc.tcp://192.168.1.100:4840"
async with Client(url=url) as client:
temp_node = client.get_node("ns=2;s=Reactor_Temperature")
stop_node = client.get_node("ns=2;s=Emergency_Stop")
temp = await temp_node.read_value()
if temp > 80.0:
await stop_node.write_value(True)
send_telegram(f"⚠️ Авария! Температура {temp}°C превышает 80°C. Оборудование отключено.")
else:
print(f"Температура в норме: {temp}°C")
asyncio.run(emergency_check())
Результат: AI запускает этот скрипт (вручную или по расписанию), и при превышении температуры оборудование отключается автоматически. Никакого ручного мониторинга.
Сценарий 2: Мониторинг температуры/давления через чат
Вы можете в любой момент спросить в чате: «Какая сейчас температура в реакторе?» AI выполнит industrial_command(protocol='opcua', command='read_variable', params={'url': '...', 'node_id': '...'}) и мгновенно ответит. Например:
Пользователь: «Прочитай давление в трубопроводе P-101»
AI: Значение тега ns=2;s=Pressure_P101: 12.5 бар
Это удобно для оперативного контроля без открытия SCADA-клиента.
Сценарий 3: Автоматическое логирование в базу данных
AI может настроить периодический сбор данных с OPC-UA-сервера и запись в PostgreSQL. Для этого используется execute_python с библиотеками asyncua и asyncpg. Пример кода:
import asyncio
from asyncua import Client
import asyncpg
DATABASE_URL = "postgresql://user:pass@localhost:5432/scada_logs"
async def log_data():
conn = await asyncpg.connect(DATABASE_URL)
url = "opc.tcp://192.168.1.100:4840"
async with Client(url=url) as client:
temp_node = client.get_node("ns=2;s=Temperature")
temp = await temp_node.read_value()
await conn.execute(
"INSERT INTO temperature_log (value, timestamp) VALUES ($1, NOW())",
temp
)
await conn.close()
print(f"Записано значение {temp}")
asyncio.run(log_data())
Результат: Данные автоматически сохраняются в базу, и вы можете строить графики или анализировать тренды через BI-инструменты.
Сценарий 4: Интеграция с Notion и Telegram
Допустим, вы хотите, чтобы AI создавал отчёт в Notion о состоянии оборудования каждую смену и отправлял сводку в Telegram. ASI Biont может:
1. Прочитать несколько тегов (температура, давление, уровень).
2. Сформировать Markdown-отчёт.
3. Отправить его в Telegram через requests.post к api.telegram.org.
4. Создать страницу в Notion через Notion API (используя requests).
Пример фрагмента (без полного кода из-за объёма):
import requests
# Отправка в Telegram
requests.post(f"https://api.telegram.org/bot{TOKEN}/sendMessage", json={"chat_id": ID, "text": report})
# Создание в Notion (через Notion API)
headers = {"Authorization": "Bearer secret_...", "Content-Type": "application/json"}
data = {"parent": {"database_id": "..."}, "properties": {"Title": {"title": [{"text": {"content": "Отчёт за смену"}}]}}}
requests.post("https://api.notion.com/v1/pages", headers=headers, json=data)
Почему это выгодно?
- Снижение порога входа: Инженеру не нужно знать Python или asyncua — достаточно описать задачу на естественном языке.
- Скорость: AI пишет код за секунды, а не часы, как при ручной разработке.
- Гибкость: Подключите любое устройство через execute_python — не только OPC-UA, но и Modbus, MQTT, HTTP API, BACnet, Siemens S7, CAN bus и другие.
- Автоматизация рутины: Мониторинг, логирование, уведомления — всё настраивается в чате без написания скриптов вручную.
Заключение
OPC-UA-сервер — это не просто точка сбора данных, а ворота к интеллектуальной автоматизации. ASI Biont позволяет подключиться к любому OPC-UA-серверу (SCADA, DCS) через диалог в чате, читать и писать теги, интегрировать данные с Telegram, Notion, базами данных и запускать сценарии аварийного отключения. Вам не нужно ждать обновлений от вендора или писать сложные скрипты — AI сделает всё за вас.
Попробуйте сами: Зайдите на asibiont.com, создайте API-ключ, скачайте bridge.py (если нужно для локального доступа) и в чате напишите: «Подключись к моему OPC-UA-серверу на opc.tcp://192.168.1.100:4840 и прочитай все теги». Убедитесь, что промышленная автоматизация может быть простой и быстрой.
Комментарии