G-коды и M-коды для токарного станка с ЧПУ: справочник с примерами (LinuxCNC)
· ~15 мин чтения
Управляющая программа для станка с ЧПУ - это текст из строк-команд. Каждая строка говорит станку, куда ехать, как ехать и что включить. За «как ехать» отвечают G-коды (подготовительные функции), за «что включить» - M-коды (вспомогательные функции: шпиндель, СОЖ, остановки).
В этой статье - коды, которые реально нужны на токарном станке, с упором на LinuxCNC. Большинство кодов одинаковы на всех стойках (Fanuc, Siemens в режиме ISO, Mach3/4 и др.), но где LinuxCNC отличается - это отмечено отдельно.
Содержание
- Группы команд - коротко
- Оси токарного станка
- Из чего состоит строка программы
- Адреса (буквы) в командах
- G-коды: перемещения
- G-коды: режимы и системы координат
- G-коды: подача и скорость шпинделя
- G-коды: резьба
- G-коды: коррекция и инструмент
- G-коды: сверлильные циклы
- M-коды
- Структура управляющей программы
- Пример: наружное точение
- Основные токарные циклы и их G-код
- Частые ошибки
Группы команд - коротко
| Группа | Коды | Для чего |
|---|---|---|
| Перемещения | 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
Структура управляющей программы
Программа читается сверху вниз, по одной строке (кадру) за раз. Обычно в ней пять частей:
- Начало - строка
%(в LinuxCNC необязательна, но если она есть, то и в конце должна быть%) и комментарий с названием детали. - Безопасная строка - режимы, которые сбрасывают всё, что могло
остаться от прошлой программы:
G18 G21 G7 G90 G40 G80. - Инструмент и шпиндель -
T1 M6 G43, оборотыSиM3, СОЖM8. - Обработка - подходы G0, рабочие проходы G1/G2/G3/G33 и отводы.
- Конец -
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 синхронно со шпинделем - спираль на торце |
Частые ошибки
- Диаметр вместо радиуса. Программа написана в диаметрах, а станок в G8 - резец остановится вдвое дальше от оси, и деталь выйдет толще. Если наоборот (радиусы при G7) - резец уйдёт вдвое ближе к оси и врежется слишком глубоко. Проверяйте G7/G8 в начале программы, подробно - в статье G7 и G8: диаметр или радиус.
- G96 без ограничения оборотов. При подходе к оси шпиндель разгоняется до максимума.
- G0 в материал. Быстрый ход только по воздуху; врезание - всегда G1.
- Не та плоскость. Без G18 дуги и коррекция на радиус работают не так, как ожидается.
- Код резьбы от другой стойки. G32 из программы Fanuc в LinuxCNC не сработает - нужен G33 (и наоборот).
- Подача не в тех единицах.
F0.2при G94 - это 0,2 мм/мин, то есть станок почти стоит. Для токарки удобнее G95.
Как не писать всё это вручную
Даже простое точение - это десятки строк, а резьба, сфера или конус с коррекцией - сотни, и любая опечатка может стоить детали или резца. Turn G-code генерирует готовую программу для 12 токарных циклов (наружное точение, торцовка, резьба, конус, сфера, канавка, расточка, отрезка, фаска/радиус и другие) по полям формы: диаметры, длины, подачи, обороты. Траекторию видно в 2D-симуляторе до запуска на станке, а G7/G8, G32/G33, M-коды СОЖ и формат вывода настраиваются под вашу стойку.
