Открыть сервис

G-коды

G-код (G-code) — это обобщённое название языка программирования устройств с числовым программным управлением (ЧПУ). Он используется для задания траектории движения рабочего органа (инструмента или заготовки), управления режимами обработки (скорость, подача, включение/выключение шпинделя, подача охлаждающей жидкости) и выполнения вспомогательных операций. G-код является стандартом де-факто в промышленности, хотя его синтаксис и набор команд могут варьироваться в зависимости от производителя оборудования.

История

Разработка языка G-кода началась в 1950-х годах в Массачусетском технологическом институте (MIT) в рамках проекта по созданию первых станков с ЧПУ. Первоначально язык был разработан для управления фрезерными станками и назывался APT (Automatically Programmed Tools). В 1960-х годах на основе APT был создан стандарт RS-274, который впоследствии лёг в основу современных G-кодов.

В 1980-х годах, с распространением персональных компьютеров и развитием систем автоматизированного проектирования (САПР), G-код стал стандартным выходным форматом для постпроцессоров — программ, преобразующих геометрические модели (например, из SolidWorks, AutoCAD, Компас-3D) в последовательность команд для станка. В 1990-х годах язык был адаптирован для 3D-принтеров, лазерных резаков и плоттеров.

Структура и синтаксис

Программа на G-коде представляет собой последовательность кадров (строк). Каждый кадр начинается с номера (N) и содержит одну или несколько команд, разделённых пробелами. Команды делятся на несколько типов:

  • G-команды (подготовительные функции) — задают режим движения (линейное, круговое, позиционирование) и систему координат. Примеры: G00 (быстрое позиционирование), G01 (линейная интерполяция), G02/G03 (круговая интерполяция по часовой/против часовой стрелки).
  • M-команды (вспомогательные функции) — управляют включением/выключением шпинделя, подачей охлаждающей жидкости, сменой инструмента. Примеры: M03 (включение шпинделя по часовой стрелке), M05 (остановка шпинделя), M06 (смена инструмента).
  • Адреса — задают числовые параметры: X, Y, Z (координаты), F (скорость подачи), S (частота вращения шпинделя), T (номер инструмента), I, J, K (параметры дуги для круговой интерполяции).

Пример простого кадра

`` N10 G01 X100.0 Y50.0 Z-5.0 F200.0 ``

Этот кадр означает: выполнить линейное перемещение (G01) в точку с координатами X=100, Y=50, Z=-5 со скоростью подачи 200 мм/мин.

Основные команды

Подготовительные функции (G-коды)

КодОписание
G00Быстрое позиционирование (холостой ход)
G01Линейная интерполяция (рабочая подача)
G02Круговая интерполяция по часовой стрелке
G03Круговая интерполяция против часовой стрелки
G17Выбор плоскости XY
G18Выбор плоскости XZ
G19Выбор плоскости YZ
G20Режим дюймов
G21Режим миллиметров
G28Возврат в исходную точку (референтную точку)
G40Отмена коррекции на радиус инструмента
G41Коррекция на радиус инструмента слева
G42Коррекция на радиус инструмента справа
G43Коррекция на длину инструмента
G90Абсолютное позиционирование
G91Относительное позиционирование

Вспомогательные функции (M-коды)

КодОписание
M00Безусловная остановка программы
M01Остановка по требованию (опциональная)
M02Конец программы
M03Включение шпинделя по часовой стрелке
M04Включение шпинделя против часовой стрелки
M05Остановка шпинделя
M06Смена инструмента
M08Включение охлаждающей жидкости
M09Выключение охлаждающей жидкости
M30Конец программы с возвратом в начало

Применение

Металлообработка

G-код является основным языком для фрезерных, токарных, сверлильных и шлифовальных станков с ЧПУ. Программы создаются в системах автоматизированного программирования (CAM-системах) или вручную. Постпроцессор адаптирует общий G-код под конкретный станок (например, Haas, Fanuc, Siemens, Mazak).

3D-печать

В аддитивных технологиях G-код управляет перемещением печатающей головки, экструзией пластика (M104, M109 — управление температурой сопла, M140, M190 — управление температурой стола), скоростью печати и охлаждением. Наиболее распространённый диалект — Marlin (используется в принтерах на базе Arduino). Пример команды: G1 X10.0 Y10.0 E0.5 — перемещение с одновременной подачей пластика.

Лазерная резка и гравировка

G-код задаёт траекторию лазерного луча, мощность (S) и скорость перемещения (F). Для лазерных станков используются те же команды, что и для фрезерных, но с добавлением управления мощностью лазера (например, M03 S1000 — включение лазера на 1000 единиц мощности).

Плоттеры и роботы

Плоттеры (резаки, карандашные плоттеры) используют G-код для управления перемещением пера или ножа. Промышленные роботы (например, KUKA, ABB) также могут программироваться на G-коде, хотя чаще используют собственные языки (KRL, RAPID).

Диалекты и стандарты

Несмотря на стандарт RS-274, существует множество диалектов G-кода, отличающихся набором команд и синтаксисом:

  • Fanuc — наиболее распространённый в промышленности, используется в станках японского производства.
  • Siemens — используется в станках немецкого производства, имеет расширенный набор команд (например, для высокоскоростной обработки).
  • Haas — упрощённый диалект, характерный для станков американской компании Haas Automation.
  • Marlin — открытый диалект для 3D-принтеров, основанный на RepRap.
  • LinuxCNC — открытая система ЧПУ, поддерживающая стандартный G-код с расширениями.

Интересные факты

  • G-код не является языком программирования в классическом смысле (он не имеет переменных, циклов и условных операторов в базовом варианте), хотя современные контроллеры поддерживают макросы и подпрограммы.
  • Некоторые станки поддерживают «параметрическое программирование» — возможность использовать переменные (#1, #2) и математические выражения.
  • В 3D-печати G-код часто создаётся слайсером (например, Cura, PrusaSlicer, Slic3r) из STL-модели.
  • Существуют онлайн-симуляторы G-кода, позволяющие визуализировать траекторию инструмента без запуска станка.
  • В России G-код используется на большинстве промышленных предприятий, оснащённых станками с ЧПУ, а также в любительской 3D-печати.

Критика

Основные недостатки G-кода:

  • Отсутствие стандартизации — разные производители добавляют собственные команды, что затрудняет переносимость программ.
  • Низкая читаемость — длинные программы сложно анализировать и отлаживать вручную.
  • Ограниченные возможности — отсутствие высокоуровневых конструкций (циклы, условия) делает программирование сложных операций трудоёмким.
  • Зависимость от постпроцессора — для каждого станка требуется индивидуальная настройка CAM-системы.

Источники

  • Справочник по программированию станков с ЧПУ. Система Fanuc Series 0i-M.
  • Руководство пользователя Marlin Firmware.
  • Стандарт RS-274-D (EIA-274-D).
  • Книга «CNC Programming Handbook» Peter Smid.
  • Материалы сайта LinuxCNC.org.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →