Перейти к содержанию
  • Лента
  • Популярные
  • Последние
  • Теги
  • Пользователи
  • Сотрудничество
Свернуть
Логотип бренда
Категории
  1. Промышленный форум
  2. Категории
  3. ПO для чпу
  4. Python-скрипт для отправки G-кода на ЧПУ через COM-порт с проверкой отклика

Python-скрипт для отправки G-кода на ЧПУ через COM-порт с проверкой отклика

Запланировано Прикреплена Закрыта Перенесена ПO для чпу
python чпуg-codeserial порт
1 Сообщения 1 Постеры 2 Просмотры 1 Отслеживают
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsxK Не в сети
    kirilljsxK Не в сети
    kirilljsx
    Модератор
    написал отредактировано
    #1

    Часто на производстве приходится вручную таскать флешки или мучаться с пультами ЧПУ-стендов. Python-скрипт решает это: генерит G-код, шлет его по последовательному порту и ждет подтверждения от стойки. Экономит часы на запуске программ, минимизирует ошибки ввода.

    Скрипт проверяет отклик - если станок не ответил, не идет дальше. Подходит для Fanuc, Siemens или GRBL-контроллеров. Зачем это нужно? Чтобы не бегать к станку каждый раз, а запускать пачками из офиса или сервера. Проблемы с таймаутами и потерянными командами уходят сами.

    Почему последовательный порт все еще в деле

    Последовательный порт (RS-232 или USB-эмуляция) - классика для старых стоек ЧПУ. Не все станки имеют Ethernet, а USB часто глючит с драйверами. Скрипт на Python с библиотекой pyserial подключается к COM-порту, шлет строки G-кода и читает ответы. Без него приходится вручную копировать в консоль пульта - рискуешь накосячить с координатами или потерять конец программы.

    Пример: на Fanuc 0i порт COM3 на 9600 бод. Шлешь “G28\n”, ждешь “OK” или код ошибки. Если таймаут - скрипт стопорится и логирует. Это спасает от холостого хода без программы. Аргумент простой: в цеху 10 станков, каждый запуск - 5 минут. С скриптом - секунды, плюс лог для отладки. Логично перейти к шагам настройки.

    • Выбор порта: В Windows - Диспетчер устройств, ищи COMx. Linux - /dev/ttyUSB0.
    • Baudrate: Стандарт 9600-19200, уточни в мануале стойки.
    • Таймаут: Установи 2-5 сек, чтобы не висеть вечно.
    Параметр Fanuc Siemens 810D GRBL
    Baud 9600 19200 115200
    Формат 8N1 8N1 8N1
    Отклик ? или OK ACK ok

    Генерация G-кода перед отправкой

    Скрипт не просто шлет - он может сам сгенерить простую программу. Например, прямоугольник или контур из параметров. Функция generate_gcode() собирает строки: G21 для мм, G90 абсолют, G01 с подачей. Потом сохраняет в .nc или шлет сразу. Реальный кейс: деталь 100x50 мм, 10 проходов - скрипт выдает готовый блок за миг.

    Без генерации загружаешь готовый .nc файл. Скрипт парсит его построчно, добавляет паузы M0 для проверки. Аргумент: CAM-системы типа Fusion 360 выдают тонны кода, вручную править - ад. Python читает файл, фильтрует комментарии (убирает ; ) и шлет чистый G-code. Переходим к коду.

    def generate_rectangle(width, height, depth=-3, feed=200):
        gcode = [
            'G21 G90 G17',  # мм, абсолют, XY
            f'G0 Z10',      # отвод
            f'G0 X0 Y0',
            f'G1 Z{depth} F100',
            f'G1 X{width} F{feed}',
            f'G1 Y{height}',
            f'G1 X0',
            f'G1 Y0',
            'G0 Z10',
            'M30'           # конец
        ]
        return '\n'.join(gcode)
    
    • Используй для тестовых запусков.
    • Добавь циклы для карманов: for i in range(passes).
    • Нюанс: Всегда G28 в начале для нуля.

    Отправка с проверкой отклика: сердце скрипта

    Основная магия - в функции send_with_ack(). Подключаемся: serial.Serial('COM3', 9600, timeout=3). Шлем command + '\n', читаем ser.readline(). Проверяем на ‘OK’, ‘?’, ‘alarm’. Нет отклика - retry или exit. Пример: шлешь M03 (шпиндель on), ждешь готовности.

    В цикле для файла: открываешь .nc, построчно шлешь, пауза 0.1 сек. Логируй каждый шаг в файл. Реальный пример: программа 1000 строк - скрипт прогоняет за минуту, с проверкой. Без нее станок может уйти в аварию на 200-й строке. Таблица ошибок поможет.

    import serial
    import time
    
    def send_gcode(ser, cmd):
        ser.write((cmd + '\n').encode())
        resp = ser.readline().decode().strip()
        if 'OK' in resp or '?' not in resp:
            print(f'OK: {cmd} -> {resp}')
            return True
        print(f'Error: {cmd} -> {resp}')
        return False
    
    ser = serial.Serial('COM3', 9600, timeout=2)
    with open('prog.nc') as f:
        for line in f:
            cmd = line.strip().split(';')  # убрать комментарии
            if cmd and send_gcode(ser, cmd):
                time.sleep(0.05)
            else:
                break
    ser.close()
    
    Ошибка Значение Действие
    ? Готов OK
    ALARM Авария Stop + reset
    Пусто Таймаут Retry x3
    E Синтаксис Правь G-code

    Тестирование и отладка на практике

    Запускай сначала на эмуляторе GRBL в терминале - шлешь код, видишь симуляцию. Потом на реальном станке: сухой пробег без инструмента. Логи в .txt: timestamp + cmd + resp. Проблемы: baud не совпадает - мусор в ответе. Порт занят - исключение PermissionError.

    Масштабируй: класс CNC_sender с методами connect(), send_file(), status(). Интегрируй в веб-дашборд на Flask для удаленного пуска. Аргумент: в смену 50 программ - с скриптом техник не нужен у каждого станка. Список типичных фейлов.

    • Бaud mismatch: Ответ как белиберда - подгони под мануал.
    • Flow control: RTS/CTS включи, если стойка требует.
    • Buffer overflow: Пауза между строками 50-100мс.
    • Windows драйверы: CH340 для USB-RS232.

    Готовый скрипт с GUI? Tkinter кнопка “Send” - для операторов без Python.

    Нюансы интеграции с производством

    Скрипт крут, но под станок дорабатывай: Fanuc любит % в начале файла, GRBL - без. Масштаб: сервер с несколькими портами, очередь задач по API. Что осталось? Многострочная обработка M98 подпрограмм и Modbus over serial для новых стоек. Подумай о базе ошибок - собери статистику, чтобы предсказывать сбои. Внедряй поэтапно: тест на одном станке, потом флот.

    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовал этот пост, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    • kirilljsxK

      Выгрузка скорректированных параметров подачи Fanuc 31i через Python для OEE и оптимизации

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу fanuc 31i python oee параметры подачи
      1
      1
      0 Голоса
      1 Сообщения
      28 Просмотры
      Нет ответов
    • kirilljsxK

      Чтение износа инструмента Fanuc 31i через Python: предсказание замены без остановки

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу fanuc 31i износ инструмента python focas
      1
      1
      0 Голоса
      1 Сообщения
      32 Просмотры
      Нет ответов
    • kirilljsxK

      Дуги в G-code: форматирование команд G02 G03 и прим��ры использования

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC g-code дуги чпу g02 g03
      1
      0 Голоса
      1 Сообщения
      50 Просмотры
      Нет ответов
    • kirilljsxK

      Конвертация STL в G-code: особенности, шаги и применение в 3D-печати

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу stl g-code слайсер
      1
      0 Голоса
      1 Сообщения
      268 Просмотры
      Нет ответов
    • kirilljsxK

      Генерация миниатюр для HMI: интеграция preview в G-code

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу g-code hmi preview чпу
      1
      0 Голоса
      1 Сообщения
      32 Просмотры
      Нет ответов
    • kirilljsxK

      Симуляция и верификация УП: программы для проверки ЧПУ и предотвращения столкновений

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу симуляция чпу предотвращение столкновений верификация уп
      1
      0 Голоса
      1 Сообщения
      92 Просмотры
      Нет ответов
    • locolizatorL

      Миниатюры для HMI в G-code: как интегрировать preview в ЧПУ-системы

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу g-code hmi preview чпу миниатюры
      1
      0 Голоса
      1 Сообщения
      27 Просмотры
      Нет ответов
    • locolizatorL

      Миниатюры для HMI в G-code: интеграция preview в ЧПУ-системы

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC g-code hmi preview чпу миниатюры
      1
      0 Голоса
      1 Сообщения
      26 Просмотры
      Нет ответов

    Категории

    • Главная
    • Новости
    • Объявления
    • ПО и ЧПУ
    • Обсуждение

    Контакты

    • Сотрудничество
    • forum@investsteel.ru

    © 2022 - 2026 InvestSteel, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Популярные
    • Последние
    • Теги
    • Пользователи
    • Сотрудничество