Управляющая программа для фрезерного станка с ЧПУ — это последовательность кадров, каждый из которых содержит команду: куда переместить инструмент, с какой подачей, на какой скорости вращать шпиндель и когда включить охлаждение. Чтобы уверенно читать и редактировать такие программы, достаточно понимать структуру кадра и назначение двух десятков самых ходовых кодов. Ниже разберём реальную по структуре, но условную программу обработки контура и отверстий, а затем пройдёмся по каждому типу команд отдельно.
Главный принцип, который стоит держать в голове: программа описывает не деталь, а движение инструмента. Всё, что вы видите в кадрах, — это траектория центра (или режущей кромки) инструмента, режимы резания и вспомогательные действия. Понимание этого сразу объясняет, зачем нужны коррекции на радиус, почему важна точка смены инструмента и что произойдёт при ошибке в одном кадре.
- Пример программы: что будем разбирать
- Структура кадра: из чего состоит строка программы
- Блок 1: безопасность и исходное состояние (N10–N20)
- Блок 2: смена инструмента и выход в рабочую позицию (N30–N50)
- Блок 3: врезание и обработка контура с коррекцией на радиус (N60–N120)
- Блок 4: сверление постоянным циклом (N160–N230)
- Блок 5: завершение программы (N240–N280)
- Сводная таблица основных кодов из примера
- Как проверить программу перед запуском
- Типичные ошибки при чтении и правке программ
- Когда программу пишут вручную, а когда в CAM
- Что делать дальше
Пример программы: что будем разбирать
Возьмём условную, но типичную задачу: фрезеровать прямоугольный контур 100×60 мм на глубину 5 мм и просверлить четыре отверстия по углам. Заготовка — плита, ноль детали установлен в левом нижнем углу на верхней плоскости. Инструмент — концевая фреза диаметром 10 мм (T1) и сверло диаметром 8 мм (T2). Программа написана в системе координат, близкой к Fanuc-совместимому диалекту — на нём работают большинство стойких к времени учебных и производственных примеров, хотя точный синтаксис всегда сверяйте с руководством вашей стойки ЧПУ.
Пример программы:
O0001 (KONTUR I OTVERSTIYA)
N10 G21 G17 G40 G49 G80 G90
N20 G91 G28 Z0
N30 T1 M06
N40 G90 G54 G00 X-10. Y-10. S3000 M03
N50 G43 H01 Z50. M08
N60 G01 Z-5. F100
N70 G41 D01 X0 Y0
N80 Y60.
N90 X100.
N100 Y0
N110 X0
N120 G40 X-10. Y-10.
N130 G00 Z50. M09
N140 M05
N150 G91 G28 Z0
N160 T2 M06
N170 G90 G54 G00 X0 Y0 S1500 M03
N180 G43 H02 Z50. M08
N190 G99 G81 Z-15. R2. F80
N200 X100.
N210 Y60.
N220 X0
N230 G80
N240 G00 Z50. M09
N250 M05
N260 G91 G28 Z0
N270 G28 Y0
N280 M30
Далее разберём программу по смысловым блокам, а не строго построчно: так проще увидеть логику, а не просто перечень команд.
Структура кадра: из чего состоит строка программы
Каждая строка (кадр) программы — это набор «слов»: буква-адрес и число. Например, в кадре G01 X100. Y60. F150 буква G задаёт тип перемещения, X и Y — координаты конечной точки, F — подачу. Несколько правил, которые помогают читать любой кадр:
- N — номер кадра. На логику работы не влияет, нужен для удобства поиска, редактирования и ссылок в сообщениях стойки при ошибках.
- G — подготовительная функция: тип движения, выбор плоскости, системы координат, коррекций.
- X, Y, Z — координаты конечной точки перемещения по осям.
- F — подача (скорость рабочего перемещения), обычно в мм/мин при метрической системе.
- S — частота вращения шпинделя, об/мин.
- T — номер инструмента, H и D — номера корректоров длины и радиуса.
- M — вспомогательная функция: пуск шпинделя, смена инструмента, охлаждение, конец программы.
- Точка в числе означает десятичную дробь: X100. — это 100 мм, а без точки на многих стойках — 0,1 мм или 100 мкм в зависимости от настройки. Это одна из самых опасных неоднозначностей для новичка.
- Текст в круглых скобках — комментарий, стойка его игнорирует.
Важная особенность: многие слова модальны. Это значит, что команда действует до тех пор, пока её не отменят. Если в одном кадре задано G01 и F100, то в следующих кадрах достаточно писать только координаты — движение останется линейным с той же подачей. Именно поэтому в примере кадры N80–N100 содержат только координаты: режим G01, подача и коррекция продолжают действовать.
Блок 1: безопасность и исходное состояние (N10–N20)
Первые кадры любой грамотной программы приводят станок в предсказуемое состояние. Независимо от того, что выполнялось до этого, стойка получает однозначные установки:
- G21 — метрическая система (мм). Без этого кадра программа может выполняться в дюймах, если стойка была настроена иначе.
- G17 — плоскость XY. Влияет на круговую интерполяцию и некоторые циклы.
- G40 — отмена коррекции на радиус инструмента.
- G49 — отмена коррекции на длину инструмента.
- G80 — отмена постоянного цикла сверления.
- G90 — абсолютные координаты (от нуля детали, а не от текущей позиции).
Кадр N20 G91 G28 Z0 возвращает ось Z в исходную (референтную) точку. Здесь используется хитрость: G91 временно включает приращения, G28 с координатой Z0 означает «вернуть Z в ноль машины», после чего режим G90, заданный ранее в N10, продолжит действовать для последующих кадров. Такой возврат перед сменой инструмента нужен, чтобы инструмент не цеплял деталь или приспособление при перемещении к магазину.
Этот блок часто называют «строкой безопасности». Хорошая практика — начинать каждую программу именно с него, а не полагаться на то, что «после прошлой детали всё и так было выключено».
Блок 2: смена инструмента и выход в рабочую позицию (N30–N50)
Кадр N30 T1 M06 вызывает инструмент №1 в шпиндель. M06 — команда смены. На станках с ручной сменой оператор получит подсказку, на автоматических — произойдёт механическая замена.
Далее N40 G90 G54 G00 X-10. Y-10. S3000 M03 делает сразу несколько вещей:
- G54 — активация первой рабочей системы координат, привязанной к нулям детали. Именно G54 (или G55–G59 для других деталей на столе) связывает координаты программы с физическим положением заготовки.
- G00 — быстрое позиционирование на холостом ходу, вне материала.
- X-10. Y-10. — точка подхода: на 10 мм за контур по обеим осям, чтобы врезание началось снаружи детали, а не в её теле.
- S3000 M03 — шпиндель 3000 об/мин, прямое вращение (по часовой стрелке при взгляде сверху).
Кадр N50 G43 H01 Z50. M08 включает коррекцию длины инструмента (G43, компенсатор H01) и опускает инструмент на высоту 50 мм над нулём детали — это безопасная высота для перемещений. M08 включает охлаждение. Коррекция длины нужна потому, что программа задаёт координату кончика инструмента, а стойке нужно знать фактическую длину вылета из шпинделя — её измеряют заранее и записывают в таблицу корректоров.
Блок 3: врезание и обработка контура с коррекцией на радиус (N60–N120)
Кадр N60 G01 Z-5. F100 — рабочий ход: линейное перемещение на глубину 5 мм с подачей 100 мм/мин. Врезание выполнено вертикально, в уже пройденную зону за пределами контура (точка X-10 Y-10 лежит вне заготовки по траектории подхода), поэтому фреза не врезается в материал боковой поверхностью на полной глубине сразу.
Дальше начинается самое интересное — коррекция на радиус инструмента:
N70 G41 D01 X0 Y0 включает левую коррекцию (G41) с корректором D01. Что это значит практически: в программе заданы координаты контура детали, а не траектории центра фрезы. Стойка сама смещает траекторию на радиус инструмента (5 мм для фрезы Ø10) влево от направления движения. Если фреза изношена или заменена на другую, достаточно изменить значение в корректоре D01 — программу править не нужно. Это же позволяет оставлять припуск: записав в корректор радиус плюс припуск, получите черновой проход.
Кадры N80–N110 — обход контура по координатам углов: (0,60), (100,60), (100,0), (0,0). Обратите внимание: в каждом кадре меняется только одна координата, потому что контур прямоугольный и оси параллельны сторонам.
Кадр N120 G40 X-10. Y-10. отменяет коррекцию и одновременно отводит инструмент от контура. Отменять G40 нужно на отводе, а не в конце последнего рабочего кадра: при отмене коррекции стойка перестраивает траекторию, и если это сделать прямо в материале, фреза может оставить зарез.
Блок 4: сверление постоянным циклом (N160–N230)
После возврата Z в исходную точку и смены инструмента на сверло программа переходит к отверстиям. Кадр N190 G99 G81 Z-15. R2. F80 запускает постоянный цикл сверления G81:
- Z-15. — конечная глубина отверстия от нуля детали (с учётом того, что сверло должно пройти и заострение, если нужна сквозная дыра).
- R2. — плоскость отвода: над ней перемещения быстрые, между R и Z — рабочая подача.
- G99 — после каждого отверстия возвращаться к плоскости R, а не к исходной высоте. Это экономит время при негабаритных перемычках между отверстиями.
- F80 — подача сверления.
Кадры N200–N220 задают только координаты остальных трёх отверстий: цикл G81 остаётся активным и повторяется в каждой точке. Кадр N230 G80 отменяет цикл — без этого следующее перемещение по X или Y попыталось бы «просверлить» ещё одну дыру.
Для глубоких отверстий вместо G81 применяют циклы с выводом для стружки (например, G83 — прерывистое сверление с полным выводом). Выбор цикла зависит от отношения глубины к диаметру и свойств материала — точные рекомендации ищите в документации к стойке и справочниках режимов.
Блок 5: завершение программы (N240–N280)
Финал стандартен: подъём на безопасную высоту, выключение охлаждения и шпинделя, возврат Z в референт, возврат стола по Y для удобного доступа к детали и M30 — конец программы с возвратом к её началу. M30, в отличие от M02, сбрасывает состояние стойки, поэтому после неё программа готова к повторному запуску без ручных отмен режимов.
Сводная таблица основных кодов из примера
| Код | Назначение | Модальный |
|---|---|---|
| G00 | Быстрое позиционирование (холостой ход) | Да |
| G01 | Линейная интерполяция с подачей F | Да |
| G02 / G03 | Круговая интерполяция по/против часовой стрелки | Да |
| G17 | Плоскость XY | Да |
| G21 | Метрические единицы | Да |
| G28 | Возврат в референтную точку машины | Нет |
| G40 / G41 / G42 | Отмена / левая / правая коррекция на радиус | Да |
| G43 / G49 | Включение / отмена коррекции длины | Да |
| G54 | Рабочая система координат | Да |
| G80 | Отмена постоянного цикла | Да |
| G81 / G83 | Сверление / прерывистое сверление | Да |
| G90 / G91 | Абсолютные / относительные координаты | Да |
| M03 / M05 | Пуск / останов шпинделя | Да |
| M06 | Смена инструмента | Нет |
| M08 / M09 | Охлаждение вкл / выкл | Да |
| M30 | Конец программы с возвратом в начало | Нет |
Как проверить программу перед запуском
Даже синтаксически правильная программа может испортить деталь или инструмент. Перед запуском на рабочем режиме стоит пройти стандартную последовательность проверок:
- Просмотр на стойке в режиме графики. Большинство стоек умеют рисовать траекторию без вращения шпинделя. Ищите резкие скачки, заходы в тело детали на быстром ходу и «хвосты» после отмены коррекций.
- Проверка нулей и корректоров. Убедитесь, что G54 соответствует фактическому положению заготовки, а значения H и D в таблице — реальным инструментам, а не остались от прошлой смены.
- Холостой прогон с завышенным Z. Классический приём: временно сместить ноль по Z вверх (или использовать функцию смещения стойки) и выполнить программу без касания материала. Так видно всю траекторию в реальной геометрии приспособлений.
- Первую деталь — на пониженной подаче. Ручное управление подачей (override) позволяет вовремя остановиться, если врезание выглядит неправильно.
- Контроль первой детали. Проверить размеры, особенно по осям, где работает коррекция на радиус: если контур ушёл в плюс, значение в корректоре D уменьшают, в минус — увеличивают.
Типичные ошибки при чтении и правке программ
- Правка координат без учёта коррекции. Если контур получился больше на 0,3 мм, не двигайте координаты в программе — измените корректор D. Правка координат ломает логику и создаёт расхождение между программой и чертежом.
- Забытая G80 или G40. Активный цикл или коррекция «протаскиваются» в следующие кадры и дают неожиданные перемещения. Поэтому строка безопасности в начале программы — не формальность.
- Путаница G90 и G91. Одна лишняя G91 превращает абсолютные координаты в приращения: вместо перемещения в точку X100 инструмент уйдёт на 100 мм от текущей позиции. Последствия — от брака до столкновения.
- Число без десятичной точки. На многих стойках X100 без точки означает 0,1 мм. Всегда ставьте точку или проверьте параметр стойки, задающий формат ввода.
- Слишком высокое быстрое перемещение над деталью. Безопасная высота Z50 в примере выбрана с запасом; если над заготовкой стоят прижимы, высота холостых перемещений должна учитывать их.
- Редактирование программы прямо на стойке без резервной копии. Изменения стоит вносить в управляемой версии (CAM-проект или архив), а не только в памяти станка.
Когда программу пишут вручную, а когда в CAM
Ручное программирование оправдано для простых геометрий: контуры из прямых и дуг, сверловка по сетке, подрезка, несложные карманы. Оно быстрее, чем сборка модели в CAM, и даёт полный контроль над каждым кадром. Для объёмных деталей, 3D-поверхностей и сложных траекторий используют CAM-системы: они генерируют тот же G-код, но автоматически, с учётом геометрии модели. Даже в этом случае умение читать программу остаётся необходимым: именно в тексте программы видно, чем реально обрабатывалась деталь, и именно его правят при отладке.
Что делать дальше
Если вы только осваиваете чтение программ, начните с трёх шагов. Первый — откройте программу, которая уже обрабатывалась на вашем станке, и пройдите её кадр за кадром, сверяясь с таблицей кодов выше и руководством по программированию вашей стойки: синтаксис у Fanuc, Siemens, Heidenhain и других систем заметно различается. Второй — выполните графическую проверку этой же программы на стойке, наблюдая, как команды превращаются в траекторию. Третий — попробуйте внести осмысленное изменение (например, сместить контур или добавить отверстие в цикл) и проверьте результат сначала в графике, затем на холостом ходу. Такой цикл «прочитал — визуализировал — изменил — проверил» быстрее всего переводит теорию в практический навык.
