FIFTY LINETurn G-code

G-коды и M-коды для токарного станка с ЧПУ: справочник с примерами (LinuxCNC)

· ~15 мин чтения

Управляющая программа для станка с ЧПУ - это текст из строк-команд. Каждая строка говорит станку, куда ехать, как ехать и что включить. За «как ехать» отвечают G-коды (подготовительные функции), за «что включить» - M-коды (вспомогательные функции: шпиндель, СОЖ, остановки).

В этой статье - коды, которые реально нужны на токарном станке, с упором на LinuxCNC. Большинство кодов одинаковы на всех стойках (Fanuc, Siemens в режиме ISO, Mach3/4 и др.), но где LinuxCNC отличается - это отмечено отдельно.

Содержание

  1. Группы команд - коротко
  2. Оси токарного станка
  3. Из чего состоит строка программы
  4. Адреса (буквы) в командах
  5. G-коды: перемещения
  6. G-коды: режимы и системы координат
  7. G-коды: подача и скорость шпинделя
  8. G-коды: резьба
  9. G-коды: коррекция и инструмент
  10. G-коды: сверлильные циклы
  11. M-коды
  12. Структура управляющей программы
  13. Пример: наружное точение
  14. Основные токарные циклы и их G-код
  15. Частые ошибки

Группы команд - коротко

Группа Коды Для чего
Перемещения G0, G1, G2, G3, G4 Быстрый ход, рабочая подача, дуги, пауза
Плоскость и единицы G18, G20, G21 Плоскость XZ токарного станка, дюймы / миллиметры
Диаметр / радиус G7, G8 Что означает X: диаметр или радиус (LinuxCNC)
Координаты G90, G91, G53, G54-G59, G28, G30 Абсолютные / относительные, нули детали, точки отвода
Подача и шпиндель G94, G95, G96, G97 мм/мин или мм/об, постоянная скорость резания или обороты
Резьба G33, G76, G33.1 (G32 на Fanuc) Резьбовой проход, многопроходный цикл, метчик
Коррекция G40, G41, G42, G43, G49 Радиус при вершине резца, вылет инструмента
Сверление G73, G81, G82, G83, G80 Сверлильные циклы и их отмена
Шпиндель и программа M0, M1, M2, M30, M3, M4, M5 Остановы, конец программы, вращение шпинделя
Инструмент и СОЖ M6, M61, M7, M8, M9 Смена инструмента, охлаждение

Оси токарного станка

  • Z - вдоль оси вращения детали. Z0 обычно на торце детали, «минус» - в сторону патрона.
  • X - поперёк, от оси детали к инструменту. X0 - ось вращения.

Координата X может означать диаметр или радиус - это задаётся кодом G7/G8 (см. ниже). Путаница между ними - одна из самых частых ошибок: деталь получается в два раза толще или тоньше.

Из чего состоит строка программы

N40 G1 X30 Z-50 F0.2 (чистовой проход)
Элемент Значение
N40 номер строки (необязательный)
G1 подготовительная функция - линейное рабочее перемещение
X30 Z-50 конечная точка
F0.2 подача
( ... ) комментарий, станок его игнорирует. В LinuxCNC также ; до конца строки

Адреса (буквы) в командах

После G- или M-кода идут параметры: латинская буква (адрес) и число.

Адрес Значение Пример
N Номер строки (кадра), необязательный N40
X Координата поперёк оси детали - диаметр (G7) или радиус (G8) X30
Z Координата вдоль оси детали; «минус» - к патрону Z-50
F Подача: мм/мин (G94) или мм/об (G95) F0.15
S Обороты (G97, об/мин) или скорость резания (G96, м/мин) S800
T Номер инструмента T1 M6
I, K Центр дуги G2/G3 по X и по Z; у G33 K - шаг резьбы G3 X4 Z-8 I-3 K-4
R Радиус дуги G3 X30 Z-5 R5
P Время паузы G4 (сек) или параметр цикла G4 P0.5
Q Параметр цикла или номер инструмента в M61 M61 Q2
D Предел оборотов при G96 (LinuxCNC) G96 D2000 S150

Многие коды модальные: однажды заданный G1 или F0.2 действует, пока его не заменят другим кодом той же группы. Поэтому в программе часто пишут только изменившиеся координаты.

G-коды: перемещения

Код Что делает Пример записи
G0 Быстрое перемещение (холостой ход) с максимальной скоростью станка. Не для резания! G0 X42 Z2
G1 Линейное рабочее перемещение с подачей F. Основной код для точения, торцовки, фасок, конусов. G1 Z-50 F0.2
G2 Дуга по часовой стрелке G2 X30 Z-5 R5
G3 Дуга против часовой стрелки G3 X30 Z-5 R5
G4 Пауза (выдержка). В LinuxCNC P - в секундах G4 P0.5

Дуги G2/G3. Задаются конечной точкой и либо центром (I - смещение по X, K - по Z), либо радиусом R:

G1 X20 Z0
G3 X30 Z-5 R5     (скругление R5)

Важно: направление «по/против часовой» на токарном станке зависит от того, с какой стороны от оси стоит резец (передний или задний резцедержатель) и как настроена ось X. Перед резом проверяйте дугу в предпросмотре траектории. В LinuxCNC центр дуги I/K по умолчанию задаётся относительно начальной точки (режим G91.1), а не в абсолютных координатах.

G-коды: режимы и системы координат

Код Что делает
G18 Плоскость XZ - рабочая плоскость токарного станка. Нужна для дуг и коррекции на радиус. В LinuxCNC по умолчанию G17, поэтому в токарных конфигурациях G18 обычно прописан в стартовом коде.
G7 X - это диаметр (LinuxCNC). Привычный токарю режим: X30 = диаметр 30 мм.
G8 X - это радиус (LinuxCNC, режим по умолчанию). X30 = радиус 30, т.е. диаметр 60.
G20 / G21 Дюймы / миллиметры
G90 Абсолютные координаты - от нуля детали
G91 Относительные (приращения) - от текущей точки
G54-G59 Рабочие системы координат (нули детали). В LinuxCNC есть ещё G59.1-G59.3
G53 Перемещение в машинных координатах (только в этой строке)
G28 / G30 Выход в сохранённую позицию (запоминается командами G28.1 / G30.1) - часто используют как точку смены инструмента
G61 / G64 Точный останов в каждой точке / сглаживание траектории. G64 P0.01 - сглаживание с допуском 0,01 мм

G-коды: подача и скорость шпинделя

Код Что делает Пример записи
G94 Подача F в мм/мин (дюйм/мин) G94 G1 Z-20 F80
G95 Подача F в мм на оборот шпинделя - самый удобный режим для токарки G95 G1 Z-20 F0.15
G96 Постоянная скорость резания: S - в м/мин (при G21). Обороты автоматически растут при уменьшении диаметра G96 D2000 S150 M3
G97 Постоянные обороты: S - в об/мин G97 S500 M3

Обязательно ограничивайте обороты при G96. Когда резец подходит к оси (например, при торцовке к X0), обороты стремятся к бесконечности. В LinuxCNC предел задаётся адресом D прямо в строке G96:

G96 D2000 S150 M3   (150 м/мин, но не выше 2000 об/мин)

На Fanuc для этого служит отдельная команда G50 S…; в LinuxCNC G50 для этого не используется.

G-коды: резьба

Код Что делает Пример записи
G33 Перемещение, синхронизированное со шпинделем - один резьбовой проход. K - шаг резьбы (мм/об) G33 Z-25 K1.5
G76 Многопроходный цикл нарезания резьбы (LinuxCNC) см. ниже
G33.1 Жёсткое нарезание резьбы метчиком (нужен датчик положения шпинделя) G33.1 Z-15 K1.25

Один проход G33 выглядит так:

G0 X19.4 Z3         (подход на глубину прохода, с разгоном 3 мм)
G33 Z-25 K1.5       (проход с шагом 1,5 мм)
G0 X22              (отвод)
G0 Z3               (возврат)

Для полной резьбы таких проходов нужно много - с уменьшающейся глубиной. Это делает цикл G76: у него параметры P (шаг), Z (конец резьбы), I (смещение вершины профиля), J (глубина первого прохода), K (полная глубина профиля), R (уменьшение глубины проходов), Q (угол врезания), H (зачистные проходы), E и L (сбеги). Точные правила знаков и единиц - в документации вашей версии LinuxCNC.

G32 или G33? На Fanuc и многих китайских стойках резьбовой проход - это G32, а шаг задаётся буквой F. В LinuxCNC - G33 с адресом K. Если программа написана под другую стойку, этот код придётся менять.

Конусная резьба. Если в строке G33 указать и X, и Z, резец идёт по наклонной линии, сохраняя шаг: так нарезают коническую резьбу. Настоящий пример такой программы с разбором - на странице «Конусная резьба».

Turn G-code переключает синтаксис G32/G33 одной кнопкой и позволяет выбрать букву шага (I, K или F), а циклы резьбы и конусной резьбы рассчитывают проходы, разгон и сбег сами.

G-коды: коррекция и инструмент

Код Что делает
G40 Отмена коррекции на радиус при вершине резца
G41 / G42 Коррекция на радиус при вершине слева / справа от траектории. Нужна для точных конусов, сфер и радиусов. В LinuxCNC в таблице инструментов должен быть задан радиус и ориентация (Q) резца
G43 Включить коррекцию длины (вылета) инструмента из таблицы. На токарном станке LinuxCNC применяет смещения по X и Z
G49 Отменить коррекцию длины

G-коды: сверлильные циклы

Код Что делает
G81 Простое сверление
G82 Сверление с выдержкой на дне
G83 Сверление с полным выводом сверла (для глубоких отверстий)
G73 Сверление с ломкой стружки
G80 Отмена цикла

Особенность LinuxCNC: цикл сверлит по оси, перпендикулярной выбранной плоскости. В плоскости G18 это ось Y, которой на токарном станке нет. Поэтому перед сверлильным циклом по оси Z переключаются на G17, а после - возвращают G18. Проще доверить это генератору: цикл «Сверление» в Turn G-code выводит сверление готовыми перемещениями.

M-коды

Код Что делает Пример записи
M0 Программный останов (продолжение по кнопке «Пуск») - например, чтобы перевернуть деталь M0 (ПЕРЕВЕРНУТЬ)
M1 Останов по выбору - срабатывает, только если оператор включил этот режим M1
M2 Конец программы M2
M30 Конец программы с возвратом в начало M30
M3 Шпиндель по часовой стрелке (прямое вращение) S800 M3
M4 Шпиндель против часовой (обратное вращение) S800 M4
M5 Остановка шпинделя M5
M6 Смена инструмента T1 M6
M7 СОЖ туманом M7
M8 СОЖ поливом M8
M9 Выключить СОЖ M9
M48 / M49 Разрешить / запретить корректоры подачи и оборотов M49
M61 Сообщить станку номер установленного инструмента без смены M61 Q2
M62-M65 Включение/выключение цифровых выходов (LinuxCNC) M64 P0
M66 Ожидание входного сигнала (LinuxCNC) M66 P0 L3 Q5
M100-M199 Пользовательские M-коды - свои скрипты (LinuxCNC) M101

M-коды СОЖ бывают разными на разных станках: у кого-то полив - M8, у кого-то подключён к M7. Посмотрите конфигурацию своего станка.

Смена инструмента в LinuxCNC. Привычная для Fanuc запись T0101 (инструмент 1, корректор 1) в стандартном LinuxCNC не работает. Пишут так:

T1 M6 G43

Структура управляющей программы

Программа читается сверху вниз, по одной строке (кадру) за раз. Обычно в ней пять частей:

  1. Начало - строка % (в LinuxCNC необязательна, но если она есть, то и в конце должна быть %) и комментарий с названием детали.
  2. Безопасная строка - режимы, которые сбрасывают всё, что могло остаться от прошлой программы: G18 G21 G7 G90 G40 G80.
  3. Инструмент и шпиндель - T1 M6 G43, обороты S и M3, СОЖ M8.
  4. Обработка - подходы G0, рабочие проходы G1/G2/G3/G33 и отводы.
  5. Конец - M9 (СОЖ), M5 (шпиндель), отвод в безопасную точку и M30.

Комментарии пишут в круглых скобках (в LinuxCNC - ещё и после ;), станок их пропускает. Номера строк N можно не писать.

Пример: наружное точение

Заготовка Ø40, точим Ø30 на длину 50 мм, съём по 1 мм на сторону. Ноль детали - на торце и оси.

%
(НАРУЖНОЕ ТОЧЕНИЕ D40 -> D30, L50)
G18 G21 G7 G90 G40 G95   (плоскость XZ, мм, диаметр, абсолют, подача мм/об)
T1 M6 G43                (проходной резец)
G96 D2000 S150 M3        (150 м/мин, не выше 2000 об/мин)
M8                       (СОЖ)
G0 X42 Z2                (подход)

G0 X38                   (проход 1)
G1 Z-50 F0.2
G0 X42
G0 Z2

G0 X36                   (проход 2)
G1 Z-50
G0 X42
G0 Z2

G0 X34                   (проход 3)
G1 Z-50
G0 X42
G0 Z2

G0 X32                   (проход 4)
G1 Z-50
G0 X42
G0 Z2

G0 X30                   (чистовой проход)
G1 Z-50 F0.1
G1 X41                   (выход по торцу уступа)
G0 Z2

M9                       (СОЖ выкл.)
G97 S500                 (выключаем G96 до остановки шпинделя)
M5                       (шпиндель стоп)
G0 X100 Z100             (отвод в безопасную точку)
M30
%

Это учебный пример: перед запуском на своём станке проверьте нули, вылет инструмента, безопасную точку отвода и режимы резания под свой материал и резец. Первый запуск - в предпросмотре и «по воздуху».

Основные токарные циклы и их G-код

Каждую типовую операцию можно записать этими кодами. Ниже - какие коды в основном работают в каждом цикле; по ссылке - страница цикла с настоящей программой из Turn G-code и разбором по строкам.

Цикл Основные коды Что происходит
Наружное точение G0, G1 по Z Проходы вдоль оси с уменьшением диаметра, затем чистовой
Торцовка G0, G1 по X Проходы поперёк от края к центру, глубина по Z
Резьба G33 (или G32) с K Много резьбовых проходов с уменьшающейся глубиной, разгон и сбег
Конусная резьба G33 X… Z… K… Резьбовой проход сразу по наклонной линии
Конус G1 X… Z… Черновые ступени, затем проход по линии конуса
Сфера G1, G3 с I/K Черновые цилиндры в обход шара, затем дуга в размер
Канавка G1 по X Врезания по ширине канавки, слой за слоем
Сверление G1 по Z, G0 Шаги с отскоком для вывода стружки
Расточка G1 по Z Проходы внутри отверстия с увеличением диаметра
Отрезка G1 по X, G0 Врезания с отводом стружки и расширением пропила
Фаска / радиус G1, G3 Проходы по фаске или дуге, подобные чистовому профилю
Архимедова спираль G33 с K Резец идёт по X синхронно со шпинделем - спираль на торце

Частые ошибки

  1. Диаметр вместо радиуса. Программа написана в диаметрах, а станок в G8 - резец остановится вдвое дальше от оси, и деталь выйдет толще. Если наоборот (радиусы при G7) - резец уйдёт вдвое ближе к оси и врежется слишком глубоко. Проверяйте G7/G8 в начале программы, подробно - в статье G7 и G8: диаметр или радиус.
  2. G96 без ограничения оборотов. При подходе к оси шпиндель разгоняется до максимума.
  3. G0 в материал. Быстрый ход только по воздуху; врезание - всегда G1.
  4. Не та плоскость. Без G18 дуги и коррекция на радиус работают не так, как ожидается.
  5. Код резьбы от другой стойки. G32 из программы Fanuc в LinuxCNC не сработает - нужен G33 (и наоборот).
  6. Подача не в тех единицах. F0.2 при G94 - это 0,2 мм/мин, то есть станок почти стоит. Для токарки удобнее G95.

Как не писать всё это вручную

Даже простое точение - это десятки строк, а резьба, сфера или конус с коррекцией - сотни, и любая опечатка может стоить детали или резца. Turn G-code генерирует готовую программу для 12 токарных циклов (наружное точение, торцовка, резьба, конус, сфера, канавка, расточка, отрезка, фаска/радиус и другие) по полям формы: диаметры, длины, подачи, обороты. Траекторию видно в 2D-симуляторе до запуска на станке, а G7/G8, G32/G33, M-коды СОЖ и формат вывода настраиваются под вашу стойку.

← Все статьи