Освоение программирования ЧПУ: язык, структура и G/M-коды
Цель
После изучения данного раздела вы сможете:
- Идентифицировать инструкции программы ЧПУ.
- Понять формат программы.
- Описать коды адресных команд (Letter Address Codes).
- Описать определения специальных символов.
- Понять G- и M-коды.
Программы ЧПУ перечисляют инструкции в порядке выполнения. Они читаются как книга: слева направо, сверху вниз. Каждое предложение программы записано на отдельной строке — блоке (Block). Блоки расположены в определенной последовательности, обеспечивающей безопасность, предсказуемость и читаемость, поэтому важно придерживаться стандартной структуры программы.
Блоки располагаются в следующем порядке:
- Начало программы
- Установка инструмента
- Включение шпинделя
- Включение СОЖ
- Быстрое перемещение (G00) в позицию над деталью
- Обрабатывающая операция
- Выключение СОЖ
- Выключение шпинделя
- Перемещение в безопасную позицию
- Конец программы
Приведенные шаги — простейший тип программы: один инструмент, одна операция. Программы с несколькими инструментами повторяют шаги 2–9 для каждого.
Таблицы 3 и 4 в разделе G- и M-коды показывают самые частые коды, желательно запомнить.
Как у любого языка, у G-кода есть правила. Некоторые коды модальные — остаются в силе до отмены или изменения. Некоторые имеют разный смысл в зависимости от контекста. Эти правила описаны в главе, но не стоит учить каждый нюанс — задача постпроцессора CAD/CAM — правильно отформатировать и записать программу.
Формат программы
Программа в Таблице 1 обрабатывает квадратный контур и сверлит отверстие.
| Блок | Описание | Назначение |
|---|---|---|
| % O1234 (T1 0.25 END MILL) G17 G20 G40 G49 G80 G90 |
Начало программы. Номер программы (Имя). Описание инструмента для оператора. Блок безопасности — обеспечить безопасный режим. |
Начало программы |
| T1 M6 S9200 M3 |
Установить инструмент №1. Обороты 9200 об/мин, по часовой стрелке. |
Смена инструмента |
| G54 M8 G00 X-0.025 Y-0.275 G43 Z1. H1 Z0.1 G01 Z-0.1 F18. |
Использовать приспособление №1 (G54). СОЖ вкл. Быстрое перемещение над деталью. Быстрое перемещение в безопасную плоскость, TLO №1. Быстрое перемещение в плоскость подачи. Линейный ход на глубину резания 18 дюйм/мин. |
Перемещение в позицию |
| G41 Y0.1 D1 F36. Y2.025 X2.025 Y-0.025 X-0.025 G40 X-0.4 G00 Z1. |
Компенсация диаметра (CDC) влево, вход, компенсация D1, 36 дюйм/мин. Линейный ход. Линейный ход. Линейный ход. Линейный ход. Выкл. CDC с выходным движением. Быстрое перемещение в безопасную плоскость. |
Обработка контура |
| M5 M9 (T2 0.25 DRILL) T2 M6 S3820 M3 |
Шпиндель выкл. СОЖ выкл. Описание инструмента для оператора. Установить инструмент №2. Обороты 3820 об/мин, по часовой стрелке. |
Смена инструмента |
| M8 X1. Y1. G43 Z1. H2 Z0.25 |
СОЖ вкл. Быстрое перемещение над отверстием. Быстрое перемещение в безопасную плоскость, TLO №2. Быстрое перемещение в плоскость подачи. |
Перемещение в позицию |
| G98 G81 Z-0.325 R0.1 F12. G80 Z1. |
Цикл сверления (canned), глубина Z-.325, F12. Отмена цикла сверления. Быстрое перемещение в безопасную плоскость. |
Сверление отверстия |
| M5 M9 G91 G28 Z0 G91 G28 X0 Y0 G90 M30 % |
Шпиндель выкл. СОЖ выкл. Возврат в домашнюю позицию по Z. Возврат в домашнюю позицию по XY. Сброс в абсолютный режим (безопасность). Сброс программы в начало. Конец программы. |
Конец программы |
Коды адресных команд (Letter Address Commands)
Командный блок управляет станком через адресные команды (буквенные адреса). Некоторые используются многократно, их смысл меняется в зависимости от G-кода в том же блоке.
Коды бывают модальными (действуют до отмены/изменения) или не модальными (действуют только в текущем блоке). Многие адреса выбраны логично (T — tool, S — spindle, F — feed rate).
Таблица 2: Коды адресных команд
| Переменная | Описание | Определения |
|---|---|---|
| A | Абсолютная/инкрементная позиция оси A (вращательная вокруг X) | A,B,C — 4/5-я вращательные оси. Угол в градусах до 3 знаков. G01 A45.325 B90. |
| B | Абсолютная/инкрементная позиция оси B (вращательная вокруг Y) | Аналогично A |
| C | Абсолютная/инкрементная позиция оси C (вращательная вокруг Z) | Аналогично B |
| D | Задает диаметровое/радиальное смещение для компенсации диаметра режущего инструмента | Компенсация износа и дефлекции диаметра. D сопровождается целым числом, совпадающим с номером инструмента (T5 → D5). Без десятичной точки. Всегда с G41/G42 и XY движением (не дугой). Контроллер считывает регистр и смещает траекторию влево (G41) или вправо (G42) на значение регистра. G01 G41 X2. D1 |
| E | Точная подача для резьбонарезания на токарных | — |
| F | Задает скорость подачи | Устанавливает подачу при фрезеровании линий, дуг, циклах сверления. Подача в дюйм/мин (G94) или обратное время (G93). До 3 знаков после запятой (для резьбы), нужна десятичная точка. G01 X2. Y0. F30. |
| G | Адрес подготовительных команд | G-команды говорят контроллеру, какое движение нужно (быстрое позиционирование, линейная подача, круговая, фиксированный цикл) или какое смещение использовать. G02 X2. Y2. I.50 J0. |
| H | Задает смещение длины инструмента; инкрементная ось, соответствующая C (на токарно-фрезерных) | Вызывает регистр TLO на контроллере. Контроллер комбинирует TLO и Fixture Offset Z, чтобы знать положение инструмента относительно нуля детали. Всегда с целым числом (H1, H2), G43 и Z координатой. G43 H1 Z2. |
| I | Задает размер дуги по оси X для G02/G03. Также параметр в некоторых фиксированных циклах. | Для дуг (G2/G3) — инкрементное X-расстояние от начала дуги к центру. Некоторые циклы сверления используют I как опциональный параметр. G02 X.5 Y2.500 I0. J0.250 |
| J | Задает размер дуги по оси Y для G02/G03. Также параметр в некоторых фиксированных циклах. | Для дуг — инкрементное Y-расстояние от начала дуги к центру. Некоторые циклы используют J. G02 X.5 Y2.500 I0. J0.250 |
| K | Задает размер дуги по оси Z для G02/G03. Также параметр в циклах, равен L. | Для дуги — инкрементное Z-расстояние от начала дуги к центру. В плоскости G17 — инкремент Z для винтовых движений. Некоторые циклы используют K. G18 G03 X.3 Z2.500 I0. K0.250 |
| L | Счетчик циклов фиксированного цикла; спецификация регистра для G10 | Счетчик циклов: число повторений фиксированного цикла в каждой позиции. По умолчанию 1. Иногда используется K вместо L. С инкрементным позиционированием (G91) серию равноудалённых отверстий можно запрограммировать как цикл. G10: спецификация регистра для редактирования (смещения приспособления, радиуса инструмента, длины инструмента). |
| M | Вспомогательная функция | Всегда с целым числом, определяющим смысл. Только один M-код в блоке. Расширенные определения позже. M08 |
| N | Номер строки (блока) в программе; номер системного параметра для G10 | Номера блоков облегчают чтение. Редко нужны для CAD/CAM программ без подпрограмм. Занимают память — большинство 3D программ не используют. Целые до 5 знаков, без десятичной точки. Не могут быть перед % и обычно не перед комментарием. N100 T02 M06 |
| O | Имя программы | Программы хранятся по номеру. Целое число с буквой O, без десятичных. O1234 (Exercise 1) |
| P | Параметр для различных G и M кодов | Выдержка (задержка) в секундах. С G4, если не в циклах сверления. G4 P.1 |
| Q | Шаг погружения в циклах сверления (peck increment) | Инкремент подачи за проход в цикле пошагового сверления. G83 X2. Y2. Z-.625 F20. R.2 Q.2 P9. |
| R | Задает радиус дуги или высоту отхода в циклах сверления | Дуги можно задать радиусом R или векторами I,J,K. IJK надежнее R — рекомендуется использовать их. R также в циклах сверления — плоскость возврата Z. G83 Z-.625 F20. R.2 Q.2 P9. |
| S | Задает скорость: обороты шпинделя или скорость резания в зависимости от режима | Обороты шпинделя (RPM). Целое без десятичной, всегда с M03 (по часовой) или M04 (против). S2500 M03 |
| T | Выбор инструмента | Выбирает инструмент. Целое, всегда с M6 (код смены). T01 M06 |
| U | Инкрементная ось, соответствующая X (обычно только токарные группа А); также время выдержки на некоторых станках | В этих системах X и U заменяют G90/G91. На этих токарных G90 — адрес фиксированного цикла для черновой обработки. |
| V | Инкрементная ось, соответствующая Y | До 2000-х V редко использовался — большинство токарных с U,W не имели Y. Сейчас с живым инструментом и токарно-фрезеровкой V встречается чаще. |
| W | Инкрементная ось, соответствующая Z (обычно только токарные группа А) | В этих системах Z и W заменяют G90/G91. На этих токарных G90 — адрес фиксированного цикла для черновой обработки. |
| X | Абсолютная/инкрементная позиция оси X | Координатные данные X. До 4 знаков после запятой, конечные нули не используются. Координаты модальны — не повторять, если не меняются. G01 X2.250 F20. |
| Y | Абсолютная/инкрементная позиция оси Y | Координатные данные Y. G01 Y2.250 F20. |
| Z | Абсолютная/инкрементная позиция оси Z | Координатные данные Z. |
Определения специальных символов
- % — Начало или конец программы. Все программы начинаются и заканчиваются % в отдельном блоке. Код перемотки ленты (наследие эпохи бумажных лент).
- ( ) — Комментарии. Комментарии оператору — заглавные буквы в скобках. Макс. 40 символов, все заглавные.
(T02: 5/8 END MILL) - / — Пропуск блока (Block Delete). Коды после этого игнорируются, если на пульте включен Block Delete.
/ M00 - ; — Конец блока (End of Block). Невидим в текстовом редакторе (перевод строки), но появляется в конце каждого блока на экране пульта.
N8 Z0.750 ;
G- и M-коды
G- и M-коды составляют основу программы ЧПУ. Определения классов кодов и конкретные значения важнейших кодов ниже.
G-коды (подготовительные)
Коды, начинающиеся с G, называются подготовительными — они готовят станок к определенному типу движения.
| Код | Описание |
|---|---|
| G00 | Быстрое перемещение (Rapid). Для позиционирования без резания. |
| G01 | Линейное движение с заданной подачей. |
| G02 | Круговая интерполяция по часовой стрелке. |
| G03 | Круговая интерполяция против часовой стрелки. |
| G04 | Выдержка (Dwell). |
| G28 | Возврат в домашнюю позицию станка. |
| G40 | Выключение компенсации диаметра режущего инструмента (CDC). |
| G41 | CDC влево. |
| G42 | CDC вправо. |
| G43 | Компенсация длины инструмента (TLO). |
| G54 | Смещение приспособления №1. |
| G55 | Смещение приспособления №2. |
| G56 | Смещение приспособления №3. |
| G57 | Смещение приспособления №4. |
| G58 | Смещение приспособления №5. |
| G59 | Смещение приспособления №6. |
| G80 | Отмена цикла сверления. |
| G81 | Простой цикл сверления. |
| G82 | Простой цикл сверления с выдержкой. |
| G83 | Цикл пошагового сверления (peck drilling). |
| G84 | Цикл нарезания резьбы (растачивание). |
| G90 | Режим абсолютного программирования координат. |
| G91 | Режим инкрементного программирования координат. |
| G98 | Возврат цикла сверления к исходной точке (R). |
| G99 | Возврат цикла сверления к референсной плоскости (последняя Z высота). |
M-коды (вспомогательные)
Коды, начинающиеся с M — вспомогательные (miscellaneous). Управляют дополнительными функциями: СОЖ, направление шпинделя. В одном блоке может быть только один M-код.
| Код | Описание |
|---|---|
| M00 | Останов программы. Нажать Cycle Start для продолжения. |
| M01 | Опциональный останов. |
| M02 | Конец программы. |
| M03 | Шпиндель по часовой стрелке (CW). |
| M04 | Шпиндель против часовой стрелки (CCW). |
| M05 | Останов шпинделя. |
| M06 | Смена инструмента. |
| M08 | СОЖ включить. |
| M09 | СОЖ выключить. |
| M30 | Конец программы и возврат к началу (нажать Cycle Start для повтора). |
Расширенные определения избранных G-кодов
G00 — Быстрое перемещение (Rapid Move)
Команда двигаться максимально быстро к заданной точке. Всегда с координатной позицией, модальна. В отличие от G01, G00 не координирует оси для движения по прямой. Каждая ось движется с макс. скоростью до выполнения. Движение получается как на рис. 18.
G00 X0. Y0.
Внимание: Скорость rapid на некоторых станках может превышать 1 м/с. Неверное смещение или координата могут разбить станок быстрее, чем оператор нажмет аварийную остановку. Используйте переопределение rapid feed override при первом запуске программы.
Линейное движение — движение по прямой
G-код — о движении. Самый частый тип — прямолинейное (линейное). Движение модально: вы говорите контроллеру тип движения G-кодом, он запоминает и делает его до смены другим G-кодом.
- G00 — быстрое позиционирование; Rapids — максимальная скорость. Перемещение режущего инструмента через воздух к следующей позиции резания.
- G01 — более медленное режущее движение; Feed — медленнее, для резания. Подача задается F-кодом.
F-word = «F» как «Feedrate». S-word = «S» как «Spindle Speed», адрес — об/мин.
Задание линейного движения через X, Y, Z
Указание G00 или G01 не вызывает движения — они лишь говорят контроллеру, какой тип движения ожидать, когда вы наконец скажете, куда двигаться. Для реального движения нужно указать пункт назначения словами X, Y, Z. Чтобы перейти в нуль детали:
G00 X0 Y0 Z0 или медленнее G01 X0 Y0 Z0 F40.
Интерполированное движение (interpolated move) — когда задаем несколько координат в одной строке — значит, более одной оси движется одновременно. Контроллер двигает их с точно нужной относительной скоростью, чтобы резец следовал по прямой к цели с заданной подачей.
Если задать ту же цель, но разнести координаты по строкам — каждый блок отдельное движение:
G00 X0 Y0 (движение к X0 Y0, Z неизменно)
Z0 (движение к Z0, X,Y неизменны)
G00 и G01 модальны — указываем только при смене режима.
Ось Z
Интерполированные движения поднимают вопрос для оси Z. Часто лучше двигать ось глубины резания отдельно, а не в координированном движении с X и Y. Легче судить о возможном столкновении, когда резец приближается к детали и оснастке. Сначала двигаем по X и Y, потом по Z — гораздо проще оценить риск случайного столкновения. Также меньше шансов задеть случайный предмет (зажим), если держать резец высоко, пока не окажетесь прямо над началом резания.
G02 и G03 — Круговое движение как модальный режим
- G02 устанавливает режим по часовой стрелке.
- G03 устанавливает режим против часовой стрелки.
Когда режим G02/G03 установлен, дуги определяются в G-коде двумя концами и центром, равноудалённым от концов. Концы просты: текущая контрольная точка (положение в начале блока) — один конец. Другой — координаты XYZ. Центр чаще всего задают через I, J, K — инкрементные смещения от начала дуги к центру.
ПРИМЕР ПО ЧАСОВОЙ СТРЕЛКЕ:
Дуга начинается в X0 Y2., заканчивается в X2. Y0. Центр в X0 Y0. В G-коде:
G02 (установка режима по часовой стрелке)
X2 Y0 I0 J-2.0
Центр через радиус «R»
Можно задать центр просто радиусом окружности. Радиус 2, тогда G-код:
G02 X2 Y0 R2
G17/G18/G19 — Обозначение плоскости
Дуги должны лежать в плоскости, заданной командой G17 (XY), G18 (XZ) или G19 (YZ). G17 — по умолчанию.
G40/G41/G42 — Компенсация диаметра режущего инструмента (CDC)
CDC — ключ к точному ЧПУ, позволяя оператору компенсировать износ и дефлекцию инструмента, приказывая станку отклониться влево (G41) или вправо (G42) от запрограммированной траектории. G40 отменяет компенсацию. Величина смещения вводится в D-регистр контроллера. Регистр износа — как таблица, к которой контроллер обращается при каждом движении.
Таблица 5: Регистр диаметрового смещения
| Смещение диаметра инструмента | Значение |
|---|---|
| D1 | 0.0125 |
| D2 | 0.0000 |
| D3 | 0.0000 |
| D4 | 0.0000 |
| D5 | 0.0000 |
| D6 | 0.0000 |
Значение в D-регистре вычисляет оператор, контролируя готовые размеры элементов детали, сравнивая с чертежом и внося разницу в регистр для поддержания спецификаций. Если отклонения нет — регистр = 0.
G01 G41 D1 X1.0 Y.25 F40.
G43 — Компенсация длины инструмента
G43 активирует компенсацию длины инструмента. Всегда с H-кодом и Z-движением: H — регистр TLO для чтения, Z — высота относительно нуля детали.
TLO как таблица на контроллере:
Таблица 6: Рабочие смещения (Tool Length Register)
| Регистр длины инструмента | Z |
|---|---|
| H1 | 10.236 |
| H2 | 4.7510 |
| H3 | 6.9652 |
| H4 | 7.6841 |
| H5 | 12.4483 |
| H6 | 8.2250 |
TLO комбинируется с активным фикстуром на контроллере, так станок знает, где кончик инструмента относительно нуля детали.
G43 H1 Z1.
G54 — Рабочее смещение (Work Offset)
Рабочие смещения — регистры данных в контроллере ЧПУ, хранящие расстояние от домашней позиции станка X,Y,Z до нуля детали. Их можно представить как таблицу:
Таблица 7: Рабочее смещение
| Рабочее смещение | X | Y | Z |
|---|---|---|---|
| G54 | 14.2567 | 6.6597 | 0.0000 |
| G55 | 0.0000 | 0.0000 | 0.0000 |
| G56 | 0.0000 | 0.0000 | 0.0000 |
| G57 | 0.0000 | 0.0000 | 0.0000 |
| G58 | 0.0000 | 0.0000 | 0.0000 |
| G59 | 0.0000 | 0.0000 | 0.0000 |
Совет: G54 обычно для первой наладки. Дополнительные смещения — для других сторон детали.
X и Y — расстояние от домашней позиции станка до нуля детали по XY. Z — расстояние от референсной точки инструмента (например, верха блока 1-2-3) до Z-нуля детали.
G54 X0. Y0.
Тест по блоку
- Опишите инструкции списка программы ЧПУ.
- Все программы ЧПУ начинаются и заканчиваются чем?
- Опишите коды адресных команд (Letter Address Commands).
- Перечислите три специальных символа.
- Опишите G- и M-коды.
- Опишите
G00 G90 G54 X0 Y0. - Опишите
G00 G90 G43 H1 Z1. - В чем разница между G00 и G01?
- В чем разница между G02 и G03?
- Опишите F- и S-слова.
Промышленные технологии
- Основы программирования микропроцессоров
- Структура программы на C: разбор Hello World и процесс компиляции
- Структура программы на C#: основные компоненты и пример Hello World
- Мастерство ЧПУ-обработки: контроль переменных для стабильных результатов
- Мастерство точности ЧПУ фрезеровки: проверенные шаги для точных деталей
- Премиальные услуги ЧПУ-обработки и инструментального производства в Портленде, Орегон
- Блок 5: Операция ЧПУ — наладка и управление станком Haas Mill
- Повышение точности и прецизионности ЧПУ-станочного инструмента: комплексное руководство
- ЧПУ-шлифовальные станки для инструментов: функции, применение и преимущества
- Прессеттер и измерение инструментов ЧПУ: основное руководство по точности и эффективности