G-code
G-code — это общепринятое название языка программирования устройств с числовым программным управлением (ЧПУ), используемого для управления автоматизированным производственным оборудованием, таким как станки, 3D-принтеры и роботы-манипуляторы. G-code описывает геометрию перемещения рабочего органа (инструмента или заготовки) и технологические команды (скорость, подача, включение/выключение вспомогательных механизмов). Формально язык определён стандартом ISO 6983 (RS-274D), однако на практике существует множество диалектов, привязанных к конкретным производителям контроллеров (Fanuc, Siemens, Haas, LinuxCNC и др.).
История
Ранние системы ЧПУ
Первые системы числового программного управления появились в конце 1940-х — начале 1950-х годов в Массачусетском технологическом институте (MIT) в рамках проекта по созданию фрезерного станка с сервоприводами, управляемыми перфолентой. Исходный код записывался в двоичном или десятичном формате, что было неудобно для редактирования.
Разработка APT и стандартизация
В 1956 году Douglas Aircraft Company (совместно с MIT) разработала язык APT (Automatically Programmed Tools) — первый высокоуровневый язык для программирования обработки деталей. APT генерировал постпроцессором файлы на языке, близком к современному G-code. В 1960-х годах Electronics Industries Association (EIA) выпустила стандарт RS-274, который закрепил основные G-коды (подготовительные функции) и M-коды (вспомогательные функции). В 1970-х годах стандарт был принят Международной организацией по стандартизации как ISO 6983.
Эпоха персональных компьютеров и открытых систем
С 1980-х годов, с распространением микропроцессоров, G-code стал использоваться в настольных станках и 3D-принтерах. Появились открытые контроллеры (например, GRBL, Mach3, LinuxCNC), которые интерпретируют G-code на персональном компьютере или микроконтроллере. В 2000-х годах язык был адаптирован для аддитивных технологий (3D-печать), где он управляет экструдером, нагревательным столом и вентиляторами.
Структура и синтаксис
Формат кадра
Программа на G-code состоит из последовательности кадров (строк). Каждый кадр содержит одну или несколько команд, разделённых пробелами. Типичный кадр: `` N10 G01 X100.5 Y50.2 F200 `` Здесь:
N10— номер кадра (необязателен);G01— подготовительная функция (линейная интерполяция);X100.5 Y50.2— координаты конечной точки;F200— скорость подачи (мм/мин).
Основные типы кодов
- G-коды (подготовительные функции) — задают режим движения (быстрое позиционирование G00, линейная интерполяция G01, круговая интерполяция G02/G03, остановка G04 и т.д.).
- M-коды (вспомогательные функции) — управляют включением/выключением шпинделя (M03/M05), подачей охлаждающей жидкости (M08/M09), сменой инструмента (M06) и т.д.
- S-код — скорость шпинделя (об/мин).
- F-код — скорость подачи (мм/мин или мм/об).
- T-код — номер инструмента.
- D-код — номер корректора на инструмент (радиус или длина).
- H-код — номер корректора длины инструмента (часто совпадает с T).
Координатная система
G-code использует декартову систему координат (X, Y, Z). Дополнительные оси (A, B, C) — вращательные вокруг X, Y, Z соответственно. Начало отсчёта (ноль) задаётся оператором или командой G92 (установка текущей позиции). Абсолютные координаты (G90) отсчитываются от нуля станка, относительные (G91) — от текущей позиции.
Классификация и распространённые диалекты
Промышленные контроллеры
- Fanuc — наиболее распространённый в мире диалект (станки с ЧПУ). Отличается строгим синтаксисом, поддержкой макросов (пользовательские циклы).
- Siemens Sinumerik — используется в европейском станкостроении. Поддерживает высокоуровневые циклы (например, CYCLE81 для сверления).
- Heidenhain — популярен в фрезерных станках. Имеет собственный диалоговый язык (Klartext), но может интерпретировать и стандартный G-code.
- Haas — упрощённый диалект, близкий к Fanuc, но с некоторыми отличиями (например, G187 для управления качеством поверхности).
Открытые системы
- LinuxCNC (ранее EMC2) — свободное ПО для управления станками. Поддерживает стандартный RS-274, а также расширения (например, G33 для резьбы).
- GRBL — прошивка для микроконтроллеров Arduino, используемая в настольных фрезерах и лазерных граверах. Поддерживает ограниченный набор G-кодов.
- Marlin — прошивка для 3D-принтеров. Включает специфические команды для управления экструзией (G1 E...), нагрева (M104, M140) и вентиляторами (M106).
3D-печать
В аддитивных технологиях G-code генерируется слайсером (Cura, PrusaSlicer, Simplify3D) из 3D-модели (STL-файла). Типичные команды:
G1 E10— выдавливание пластика;G28— возврат в домашнюю позицию (хоуминг);M104 S200— установка температуры хотэнда;M140 S60— установка температуры стола.
Применение
Механическая обработка
G-code является основным языком для фрезерных, токарных, сверлильных и шлифовальных станков с ЧПУ. Программа описывает траекторию движения инструмента, глубину резания, скорость вращения шпинделя и подачу. Современные CAD/CAM-системы (SolidCAM, NX, Mastercam) автоматически генерируют G-code из 3D-модели детали.
3D-печать
В аддитивных технологиях G-code управляет движением печатающей головки, экструзией материала, температурой и вентиляцией. Слайсеры преобразуют модель в G-code, который затем выполняется контроллером 3D-принтера.
Лазерная и плазменная резка
G-code задаёт траекторию перемещения лазерной головки или плазмотрона, а также мощность лазера (через S-код или M-код). В лазерных станках часто используется команда M03 для включения лазера.
Робототехника
Некоторые промышленные роботы (например, KUKA, ABB) поддерживают G-code для выполнения технологических операций (сварка, фрезерование, сборка). Однако в робототехнике чаще применяются специализированные языки (KRL, RAPID).
Ограничения и критика
Отсутствие универсальности
Несмотря на стандарт ISO 6983, G-code не является полностью переносимым между разными контроллерами. Один и тот же код может работать на станке Fanuc, но вызвать ошибку на Siemens или Haas. Причины — различия в реализации циклов, корректоров и систем координат.
Низкий уровень абстракции
G-code описывает элементарные движения и команды, что делает его громоздким для сложных деталей. Для обработки сложной поверхности требуется тысячи строк кода. Современные CAD/CAM-системы решают эту проблему, генерируя код автоматически, но ручное редактирование остаётся трудоёмким.
Отсутствие обратной связи
G-code не поддерживает условные операторы, циклы и ветвления в классическом понимании (хотя в некоторых диалектах есть макросы). Это затрудняет адаптивное управление, например, изменение подачи в зависимости от нагрузки на шпиндель.
Альтернативы и развитие
STEP-NC (ISO 14649)
STEP-NC — более современный стандарт, основанный на модели данных STEP (ISO 10303). Вместо последовательности команд он описывает «рабочие задания» (working steps) с указанием геометрии, инструмента и стратегии обработки. STEP-NC позволяет переносить программы между разными станками без перепрограммирования, но пока не получил широкого распространения из-за сложности внедрения.
Языки высокого уровня
Для роботов и станков с ЧПУ разрабатываются языки, подобные Python или Lua, которые позволяют писать более гибкие программы с циклами и условиями. Например, система G‑code Macro (Fanuc) поддерживает переменные, арифметические операции и условные переходы.
Интересные факты
- Первая буква «G» происходит от английского «geometric» — геометрические функции.
- В 3D-печати G-code часто называют «gcode» (слитно), хотя официально пишется с дефисом.
- Некоторые контроллеры (например, LinuxCNC) поддерживают выполнение G-code в режиме реального времени с частотой обновления до 1 кГц.
- В 2010-х годах появились проекты по генерации G-code из нейросетей (например, для оптимизации траекторий фрезерования).
Источники
- ISO 6983-1:2009 — Automation systems and integration — Numerical control of machines — Program format and definition of address words.
- Smid, P. (2008). CNC Programming Handbook: A Comprehensive Guide to Practical CNC Programming. Industrial Press.
- Литература по станкам с ЧПУ: Босинзон М.А. «Программирование станков с ЧПУ» (2010).
- Документация прошивки Marlin (marlinfw.org).
- Документация GRBL (github.com/grbl/grbl).
- Стандарт STEP-NC (ISO 14649).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →