Представьте: вы стоите в цеху, а ваш фрезерный станок с прошивкой GRBL шлёт статусы в Telegram, отвечает на вопросы «где сейчас шпиндель?» и принимает команды «сделай прорезь 20 мм» — просто через чат. Это не магия, а связка ЧПУ-станка с AI-агентом ASI Biont. В этой статье разберём, как подключить GRBL/Marlin к агенту, какие протоколы использовать и как автоматизировать типовые задачи.
Зачем подключать станок к ИИ-агенту
GRBL и Marlin — одни из самых популярных прошивок для станков с числовым программным управлением. GRBL работает на Arduino и управляет шаговыми двигателями по G-code. Marlin используется в большинстве 3D-принтеров и многих фрезерах. Оба устройства общаются с компьютером через последовательный порт. Однако обычный станок — это «немое железо»: он не понимает человеческий язык, не умеет анализировать свой статус и не может предупредить о ошибке. Подключение к AI-агенту решает три главные задачи:
- Удалённый мониторинг — статус станка, температура, координаты, скорость шпинделя.
- Чат-управление — отправить G-code простой фразой, например «в домашнюю позицию».
- Генерация G-code — ИИ создаёт управляющую программу по текстовому описанию детали.
Особенно это важно для небольших мастерских, где нет полноценной MES-системы, но есть пара станков. Вместо того чтобы подходить к каждому устройству и проверять индикаторы, оператор видит всё в одном чате.
Как ASI Biont подключается к ЧПУ-станку
В ASI Biont нет панели управления с кнопкой «Добавить устройство». Вместо этого агент сам пишет код интеграции под конкретную железку. Для GRBL/Marlin чаще всего используется COM-порт (RS-232), поэтому нужен Hardware Bridge — bridge.py, который скачивается из дашборда ASI Biont. Bridge запускается на компьютере, к которому станок подключён через USB, и создаёт мост между COM-портом и AI-агентом. Пример запуска:
python bridge.py --token=XXX --ports=COM3 --baud 115200 --rate=10
Разберём параметры: --token — токен дашборда, --ports — имя COM-порта, --baud — скорость обмена (для GRBL обычно 115200, для Marlin — 250000), --rate — частота опроса в секунду. Hardware Bridge не имеет HTTP API; команды отправляются через industrial_command(). Это важно, чтобы не пытаться дёргать endpoint'ы, которых нет.
Альтернативный способ — универсальный execute_python. AI-агент прямо в sandbox выполняет Python-скрипт, который использует pyserial, paramiko, paho-mqtt или pymodbus. Это идеально для разовых задач и экспериментов: не нужно запускать bridge, достаточно описать в чате порт и baud rate.
| Способ | Когда использовать | Плюсы | Минусы |
| Hardware Bridge (COM) | Станок подключён к ПК через USB/RS-232 | Постоянный мост, низкая задержка | Требует запуска bridge.py |
| execute_python | Разовые запросы и тесты | Не требует bridge, работает в sandbox | Ограничение по времени выполнения 30с |
| MQTT/Modbus | Промышленные станки с Ethernet | Удалённо, без прямой COM | Нужен шлюз/адаптер |
Выбор метода зависит от задачи. Для постоянной интеграции удобнее Hardware Bridge, для прототипа — execute_python.
Практический пример: удалённый мониторинг и управление
Рассмотрим реальный сценарий. На небольшом производстве настроен фрезерный станок с прошивкой GRBL. Оператору необходимо удалённо проверять статус станка с телефона и отправлять простые команды. Для этого ASI Biont через Hardware Bridge подключается к COM3.
Вот диалог с агентом:
- Пользователь: «Подключись к станку на COM3, скорость 115200. Читай статус каждые 5 секунд. Если станок в состоянии Idle — напиши мне об этом».
- ASI Biont: сгенерировал код, запустил Hardware Bridge и начал опрос.
Код, который генерирует ASI Biont для чтения статуса, выглядит так:
import serial
ser = serial.Serial('COM3', 115200, timeout=1)
ser.write(b'?\n')
response = ser.readline().decode().strip()
print(response)
Ответ GRBL выглядит похоже:
<Idle
|MPos:0.000,0.000,0.000|FS:0,0|WCO:0.000,0.000,0.000>
Это значит: станок в режиме Idle, координаты в нуле, скорость шпинделя 0. Если в ответе Alarm, значит, требуется сброс. AI-агент может сам интерпретировать эти строки и написать оператору человеческим языком: «Станок свободен, текущие координаты X=0, Y=0, Z=0».
Для отправки команд достаточно записать их в порт. Например, чтобы отправить станок в домашнюю позицию:
ser.write(b'G28\n')
response = ser.readline().decode() # 'ok' или 'error'
Оператору достаточно написать в чат: «отправь G28» — и AI выполнит код. Аналогично с Marlin: команда M105 возвращает температуры сопла и стола. Вот код для Marlin:
ser.write(b'M105\n')
temperature = ser.readline().decode().strip()
# 'ok T:25.0 /0.0 B:20.0 /0.0'
Эти примеры показывают, как AI-агент превращает станок в «умное устройство», которое понимает естественный язык.
Сценарий: генерация G-code по текстовому описанию
Самый интересный сценарий — создание управляющей программы по описанию детали. Например, вы пишете агенту: «Фрезеровать прямоугольное углубление 30×20 мм, глубина 2 мм, начало в точке X=10, Y=10». ASI Biont генерирует G-code:
G21 ; установить единицы в мм
G90 ; абсолютные координаты
G0 X10 Y10 Z5
G1 Z-2 F100
G1 X40 Y10
G1 X40 Y30
G1 X10 Y30
G1 X10 Y10
G0 Z5
M30
Конечно, такой код нужно проверять. AI может предложить симуляцию или предупреждение о возможных коллизиях. Но сама по себе возможность сэкономить часы на написании вручную — огромный плюс.
Для более сложных деталей можно попросить агента сгенерировать код с использованием циклов и подпрограмм. Например, для фрезеровки «кармана» с несколькими проходами по глубине AI может создать цикл G-code. Вот фрагмент для трёх проходов:
G1 Z-1 F50
G1 X20 Y20
G1 Z-2 F50
G1 X20 Y20
G1 Z-3 F50
G1 X20 Y20
Это упрощает подготовку производства и уменьшает вероятность человеческой ошибки.
Дополнительные сценарии автоматизации
AI-агент может не только выполнять команды, но и реагировать на события. Например:
- Автоматический сброс ошибки. Если GRBL вернул
Alarm, агент отправляет$Xи предупреждает оператора. -
Уведомление в Telegram. После завершения обработки агент вызывает Telegram Bot API:
import requests
requests.post('https://api.telegram.org/bot/sendMessage', json={'chat_id': '...', 'text': 'Станок завершил работу'}) -
Формирование отчётов. По команде «что происходило сегодня» агент собирает логи и выдаёт сводку.
Безопасность и типичные ошибки
При подключении ЧПУ к ИИ важно помнить о безопасности:
- Всегда проверяйте, что станок не находится в режущем цикле, перед отправкой новых координат.
- Настраивайте границы рабочего поля (soft limits) в прошивке.
- Запускайте bridge.py с минимальными правами, чтобы случайный код не имел доступ к системе.
Типичные ошибки новичков:
- Неправильный baud rate: для GRBL используйте 115200, для Marlin — 250000.
- Забыли про символ
\nв конце G-code — станок не выполнит команду. - Чтение порта без
timeout— программа зависает навсегда.
Почему это выгодно
Традиционная интеграция с ЧПУ требует написания отдельной программы на C++ или C#, протокольной документации и отладки. С ASI Biont интеграция делается в диалоге. Пользователь описывает задачу, AI пишет код на Python и сразу же его выполняет. Это сокращает время интеграции с дней до минут.
Более того, execute_python позволяет подключить любое устройство, даже если для него ещё нет готового коннектора. Нужен только Python-модуль — pyserial для COM-порта, paramiko для SSH, paho-mqtt для MQTT, pymodbus для Modbus/TCP, aiohttp для HTTP API. Пользователь сообщает порт, IP, baud rate или API-ключ, и AI сам пишет скрипт. Не нужно ждать, пока разработчики добавят поддержку в платформу.
Заключение
Подключение ЧПУ-станка с прошивками GRBL и Marlin к AI-агенту ASI Biont — это реальный способ сделать станок «разговорчивым». Удалённый мониторинг, чат-управление и генерация G-code экономят время и снижают количество ошибок. Всё, что нужно, — скачать Hardware Bridge из дашборда, указать COM-порт и начать диалог с агентом.
Попробуйте интеграцию на asibiont.com. Скачайте bridge.py, подключите станок через COM-порт и напишите в чат: «Настрой доступ к COM3 и покажи статус». Через минуту вы увидите координаты своего станка в ленте чата — и это только начало.
Источники
- GRBL Wiki: https://github.com/gnea/grbl/wiki
- Marlin Documentation: https://marlinfw.org/docs/basics/introduction.html
- PySerial Documentation: https://pyserial.readthedocs.io/en/latest/
- Paho MQTT Python Client: https://www.eclipse.org/paho/index.php?page=clients/python/docs/index.php
- opcua-asyncio: https://github.com/FreeOpcUa/opcua-asyncio
Комментарии