Введение
Промышленные контроллеры Siemens S7 (S7-300, S7-400, S7-1200, S7-1500) — сердце современного производства. Они управляют конвейерами, насосами, задвижками, станками и сотнями других механизмов. Однако доступ к данным и управление ими традиционно требуют сложных SCADA-систем, программирования на STL или LAD, и долгих циклов разработки. AI-агент ASI Biont меняет это: теперь интеграция S7 PLC с AI происходит через диалог в чате, без написания кода вручную. ASI Biont подключается к контроллеру по протоколу Siemens S7 (через библиотеку snap7), читает и записывает DB (data blocks), меркеры (M-биты), входы и выходы (I/Q). Всё управление — через естественный язык. В этой статье — практическое руководство с примерами кода, архитектурной схемой и реальными сценариями автоматизации.
1. Что такое Siemens S7 PLC и зачем подключать его к AI-агенту
Siemens S7 — семейство программируемых логических контроллеров (ПЛК), широко используемых в промышленности. Они работают в реальном времени, управляют технологическими процессами, собирают данные с датчиков и приводов. Подключение к AI-агенту позволяет:
- Автоматизировать анализ данных без участия человека (AI сам находит аномалии, строит тренды).
- Управлять контроллером голосом или текстом (например, «запусти насос №2» или «увеличь давление на 10%»).
- Интегрировать PLC с внешними сервисами: Telegram-уведомления, Google Sheets, базы данных, ERP-системы.
- Создавать гибкие сценарии автоматизации без программирования SCADA.
2. Как ASI Biont подключается к S7 PLC: архитектура и протокол
ASI Biont использует промышленную библиотеку snap7 для связи с Siemens S7. snap7 — это open-source библиотека для работы с Siemens S7 через Ethernet (ISO-on-TCP, RFC 1006). Она поддерживает:
- Чтение/запись DB (Data Blocks).
- Чтение/запись меркеров (M-биты, M-слова).
- Чтение/запись входов (I) и выходов (Q).
- Работа с S7-300/400/1200/1500.
Архитектура подключения
ASI Biont выполняется в облаке (Railway). Для доступа к локальной сети завода используется Hardware Bridge — приложение bridge.py, которое пользователь запускает на своём ПК (Windows/Linux/macOS) внутри локальной сети завода. Bridge подключается к ASI Biont через WebSocket (единственный канал связи). AI отправляет команды через tool industrial_command с протоколом siemens_s7, bridge получает их, выполняет через snap7 на локальной машине и возвращает результат.
Схема:
[ASI Biont (облако)] <--WebSocket--> [bridge.py (ПК пользователя)] <--snap7--> [Siemens S7 PLC]
Важно: bridge.py не имеет HTTP-сервера. Все команды приходят только через WebSocket. Пользователь скачивает bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge) и запускает с параметрами:
pip install pyserial requests websockets snap7
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud=115200
3. Сценарий использования: мониторинг температуры и управление насосом
Рассмотрим реальный кейс: на заводе есть Siemens S7-1200 с датчиком температуры (подключён к входу I0.0) и насосом (управляется выходом Q0.0). Задача:
- AI-агент каждые 5 секунд читает температуру из DB (например, DB1.DBD0).
- Если температура превышает 60°C, AI отправляет уведомление в Telegram и включает насос (Q0.0 = 1).
- Если температура возвращается к норме (<55°C), AI выключает насос.
3.1. Подготовка
Пользователь описывает задачу в чате ASI Biont:
«Подключись к Siemens S7-1200 по IP 192.168.1.100, rack=0, slot=1. Читай DB1.DBD0 (температура). Если температура > 60, включи Q0.0 и отправь уведомление в Telegram. Если < 55, выключи Q0.0.»
AI автоматически генерирует и выполняет Python-скрипт внутри execute_python (sandbox). Так как sandbox не имеет прямого доступа к локальной сети, AI использует industrial_command через bridge для чтения/записи.
3.2. Пример кода (выполняется в sandbox ASI Biont)
import time
import requests
from datetime import datetime
# Параметры подключения (пользователь передал в чате)
PLC_IP = "192.168.1.100"
RACK = 0
SLOT = 1
DB_NUMBER = 1
TEMPERATURE_ADDRESS = 0 # DBD0
Q0_0_ADDRESS = 0 # Q0.0
# Telegram bot token и chat ID (пользователь передал)
TELEGRAM_TOKEN = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
TELEGRAM_CHAT_ID = "123456789"
def send_telegram_message(text):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
data = {"chat_id": TELEGRAM_CHAT_ID, "text": text}
try:
requests.post(url, data=data, timeout=10)
except Exception as e:
print(f"Telegram error: {e}")
# Бесконечный цикл НЕЛЬЗЯ — sandbox имеет таймаут 30 секунд.
# Вместо этого используем однократный опрос или короткий цикл с limit.
for _ in range(3): # 3 итерации для демонстрации
# Чтение температуры из DB1.DBD0 через industrial_command
# AI отправляет команду на bridge, bridge возвращает результат
# В реальном коде это вызов tool call, а не Python-функция, но для примера:
temp = industrial_command(
protocol="siemens_s7",
command="read_db",
params={
"ip": PLC_IP,
"rack": RACK,
"slot": SLOT,
"db_number": DB_NUMBER,
"start": TEMPERATURE_ADDRESS,
"size": 4 # REAL (4 байта)
}
)
# temp — это float (значение температуры)
print(f"[{datetime.now()}] Температура: {temp}°C")
if temp > 60:
# Включить Q0.0
industrial_command(
protocol="siemens_s7",
command="write_merker",
params={
"ip": PLC_IP,
"rack": RACK,
"slot": SLOT,
"address": Q0_0_ADDRESS,
"value": 1
}
)
send_telegram_message(f"⚠️ Авария! Температура {temp}°C превышает 60°C! Насос включён.")
elif temp < 55:
# Выключить Q0.0
industrial_command(
protocol="siemens_s7",
command="write_merker",
params={
"ip": PLC_IP,
"rack": RACK,
"slot": SLOT,
"address": Q0_0_ADDRESS,
"value": 0
}
)
send_telegram_message(f"✅ Температура {temp}°C в норме. Насос выключен.")
time.sleep(5)
Важно: В реальном сценарии пользователь не видит код — AI выполняет его автоматически. Код приведён для понимания логики.
4. Почему это выгодно: SCADA без кода
Традиционно настройка SCADA-системы для S7 PLC занимает дни: нужно установить WinCC, настроить OPC-сервер, написать скрипты на C# или VBS. ASI Biont делает это за секунды через чат. Преимущества:
- Скорость: подключение за 1 минуту вместо 1 дня.
- Гибкость: меняйте логику на лету — просто напишите в чате «теперь при 70°C ещё и сирену включай».
- Zero coding: не нужно знать snap7, Python, SCADA. AI пишет код сам.
- Любое устройство: если snap7 не поддерживает ваш контроллер, используйте execute_python с любой библиотекой — AI напишет код на Python с pymodbus, opcua-asyncio, bac0 или другим протоколом.
5. Дополнительные сценарии
| Сценарий | Команда AI | Результат |
|---|---|---|
| Чтение DB каждый час и запись в Excel | «Читай DB1.DBD0 каждый час и сохраняй в Excel» | AI создаёт файл .xlsx и обновляет его |
| Управление по расписанию | «Включай Q0.0 в 8:00, выключай в 18:00» | AI запускает планировщик (через time.sleep или внешний cron) |
| Уведомления при простое | «Если Q0.0 не менялся 30 минут, отправь Telegram» | AI мониторит и уведомляет |
6. Заключение
Интеграция Siemens S7 PLC с AI-агентом ASI Biont — это промышленная автоматизация нового поколения. Вам не нужно быть инженером SCADA или программистом — просто опишите задачу в чате, и AI сам подключится к контроллеру, настроит чтение/запись, создаст сценарии и уведомления. Экономия времени, снижение порога входа, гибкость — вот что даёт ASI Biont.
Попробуйте сами: перейдите на asibiont.com, создайте API-ключ в разделе Devices, скачайте bridge.py, запустите его с параметрами своего S7 PLC, и напишите в чате «Подключись к моему S7-1200». Убедитесь, что AI-агент готов взять на себя управление вашим производством.
Комментарии