Перейти к содержимому
MetalGuide
G-код и CAM

Круговая интерполяция G02 и G03: центр через I, J, K, радиус R и частые ошибки

Как записать дугу в управляющей программе: направление G02 и G03, плоскости G17–G19, центр через I, J, K по ГОСТ 20999-83, радиус R и его знак, полная окружность, винтовое движение и почему стойка ругается на несовпадение радиусов. С разбором кадров.

Редакция MetalGuide9 мин чтения

Что задаёт кадр круговой интерполяции

Кадр дуги — это вид движения, конечная точка, центр или радиус и подача. Начальная точка в кадр не пишется: это место, где инструмент стоит после предыдущего кадра.

G-код
G17 G03 X50. Y40. I-10. J0. F400
  • G17 — плоскость XY. Модальная: её задают один раз, она действует до замены на G18 или G19.
  • G03 — дуга против часовой стрелки; G02 — по часовой.
  • X50. Y40. — конечная точка дуги в текущей системе размеров: абсолютной G90 или в приращениях G91.
  • I-10. J0. — центр дуги: на сколько он смещён от начальной точки по X и по Y.
  • F400 — подача, мм/мин. В LinuxCNC дуга идёт на текущей подаче, а без заданной подачи стойка выдаёт ошибку.

Общий формат кадра — адреса, порядок слов, модальные и разовые функции — разобран в статье «Структура управляющей программы».

Направление: по часовой или против

ГОСТ 20999-83 «Устройства числового программного управления для металлообрабатывающего оборудования. Кодирование информации управляющих программ» действует с 01.07.1984. В его табл. 5 G02 — круговая интерполяция по часовой стрелке, G03 — против, при наблюдении со стороны положительного направления оси, перпендикулярной к обрабатываемой поверхности. LinuxCNC формулирует то же: направление видно с положительного конца оси, вокруг которой идёт круговое движение.

Плоскость

Код

Откуда смотреть

Центр задают

XY

G17

С плюса Z

I и J

ZX

G18

С плюса Y

I и K

YZ

G19

С плюса X

J и K

Ось, с плюса которой смотрят, — это и ось винтового движения: Z для G17, Y для G18, X для G19.

На фрезерном станке в плоскости G17 это совпадает с видом сверху на стол. В G18 и G19 направление легко перепутать, потому что чертёж обычно смотрят с другой стороны. На токарном станке дуги лежат в плоскости ZX, и как стойка понимает «по часовой» при переднем и заднем расположении резцедержки, проверяйте по руководству программиста к своей стойке и на симуляции.

Центр через I, J, K

Параметры интерполяции I, J, K задают центр дуги: I — по оси X, J — по Y, K — по Z. По ГОСТ 20999-83 (п. 4.3.3) их рекомендуется задавать в приращениях от начальной точки к центру, независимо от того, заданы ли размеры в абсолютных значениях или в приращениях. Формулы — в приложении 3 стандарта:

Параметры интерполяции в плоскости XY по ГОСТ 20999-83, приложение 3

I = Xц − X0; J = Yц − Y0

I, J
параметры интерполяции, мм
Xц, Yц
координаты центра дуги, мм
X0, Y0
координаты начальной точки дуги, мм

Знак ставят после адреса и перед цифрами; без знака число считается положительным (п. 4.1.5). Поэтому I-10. значит «центр на 10 мм левее начала», а не «центр в точке X = −10».

Круговая интерполяция: центр через I и J, знак радиуса RСлева — дуга в плоскости XY. Из начальной точки в конечную можно пройти против часовой стрелки — это G03, сплошная линия, — или по часовой — это G02, штриховая линия, длинный путь. Центр дуги задан от начальной точки: по горизонтали приращение I, здесь отрицательное, по вертикали приращение J, здесь положительное. Справа — те же две точки при задании радиусом: при одном радиусе через них проходят две дуги G02. Положительный R даёт дугу меньше 180 градусов с центром ниже хорды, отрицательный R — дугу больше 180 градусов с центром выше хорды.Центр — приращения I, J от началацентрначалоконецI < 0J > 0G03G02Радиус R: знак выбирает дугуначалоконеццентр при R > 0центр при R < 0R+R−
Слева: центр дуги задан приращениями I и J от начальной точки; одна и та же пара точек даёт короткую дугу G03 и длинную G02. Справа: при одном радиусе через две точки проходят две дуги, выбор делает знак R. Схема не в масштабе.

Некоторые стойки умеют читать I, J, K как абсолютные координаты центра. В LinuxCNC это переключается кодом G90.1, а по умолчанию действует G91.1 — приращения. Перепутанный режим — частая причина ошибки радиуса, разобранной ниже.

Пример: скругление угла R10

Пластина 60 × 40 мм, верхний правый угол скруглён радиусом 10 мм, центр скругления в точке (50; 30). Контур обходим против часовой стрелки, без коррекции на радиус — чтобы видеть геометрию.

G-код
G90 G17
G01 X60. Y0. F400
G01 X60. Y30.
G03 X50. Y40. I-10. J0.
G01 X0. Y40.

Начало дуги — (60; 30), конец — (50; 40). I = 50 − 60 = −10, J = 30 − 30 = 0. Проверка: от центра до начала 10 мм, до конца √(0² + 10²) = 10 мм — радиусы совпадают. Если обойти тот же контур по часовой стрелке, дуга пойдёт из (50; 40) в (60; 30): это G02 X60. Y30. I0. J-10., потому что теперь начало — точка (50; 40), и J = 30 − 40 = −10.

Радиус R и его знак

Многие стойки, в том числе LinuxCNC, принимают вместо центра радиус: G03 X50. Y40. R10. для скругления выше. Это короче, но через две точки при заданном радиусе проходят две дуги одного направления — короткая и длинная. В LinuxCNC выбор делает знак:

  • R больше нуля — дуга меньше 180°.
  • R меньше нуля — дуга больше 180°.

Пример: инструмент в точке (20; 0), нужна дуга G02 в точку (0; 20) радиусом 20 мм. G02 X0. Y20. R20. даёт четверть окружности с центром в (20; 20). G02 X0. Y20. R-20. — три четверти с центром в начале координат (0; 0). Обе дуги проходят через одни и те же точки.

LinuxCNC предупреждает: дуги через R, близкие к полуокружности или к полной окружности, — плохая практика. Небольшая ошибка в конечной точке сильно смещает центр и всю дугу: по примеру документации, у дуги около 180° ошибка конечной точки в 1 % смещает середину дуги примерно на 7 %. Дуги примерно до 165° и от 195° до 345° через R задавать нормально; остальные — центром.

ГОСТ 20999-83 описывает дугу только через параметры интерполяции I, J, K. Адрес R — расширение конкретных систем ЧПУ, и как ваша стойка понимает его знак, проверяйте по руководству.

Полная окружность и квадранты

Полную окружность через R не задать: конечная точка совпадает с начальной, и стойка не может выбрать центр. LinuxCNC в этом случае выдаёт ошибку. Окружность пишут через центр: в LinuxCNC в режиме приращений I, J без координат конечной точки — G02 I-20. J0. из точки (20; 0) обходит окружность радиусом 20 мм вокруг (0; 0).

ГОСТ 20999-83 допускает программировать в одном кадре дугу, лежащую в одном квадранте (п. 4.3.5), и рекомендует задавать в одном кадре дугу, лежащую в одной из трёх координатных плоскостей (п. 4.3.1). LinuxCNC принимает в одном кадре и дугу через несколько квадрантов, и целую окружность. Если ваша стойка требует разбивки по квадрантам, это настраивают в постпроцессоре, а не правят руками в каждой программе. Как устроен постпроцессор — в статье «CAM и постпроцессор: как устроена цепочка».

Винтовое движение

Если в кадр дуги добавить перемещение по оси, перпендикулярной плоскости, получится винт: для G17 — слово Z. Так фрезеруют врезание по спирали в карман, отверстия большого диаметра концевой фрезой и резьбу резьбофрезой.

G-код
G17 G03 X0. Y20. Z-0.5 I-20. J0.

Из точки (20; 0; 0) инструмент проходит четверть окружности против часовой стрелки вокруг (0; 0) и опускается на 0,5 мм. В LinuxCNC число полных витков в одном кадре задаёт слово P: каждая единица сверх P1 добавляет к дуге полный оборот.

ГОСТ 20999-83 называет такое движение линейно-круговой интерполяцией (приложение 4: кадр G03 G17 X Y Z I J K) и задаёт K иначе, чем современные стойки: как линейное перемещение на один радиан дуги (п. 4.3.4). В LinuxCNC K — это приращение центра по Z для дуг в плоскостях G18 и G19. Смысл адреса K в винтовом кадре проверяйте по руководству своей стойки.

Где винтовое врезание выгоднее прямого и наклонного — в статье «Фрезерование пазов и карманов»; резьбофрезерование — в статье «Нарезание резьбы: метчик, резьбофреза, накатка».

Ошибка радиуса: почему стойка не принимает дугу

Стойка считает два радиуса: от центра до начальной точки и от центра до конечной. Если они различаются больше допуска, кадр не выполняется. В LinuxCNC ошибка возникает, если разница больше 0,5 мм или если она больше 0,005 мм и одновременно больше 0,1 % радиуса. Допуски других стоек свои — смотрите руководство.

Типичный случай — I и J записаны как координаты центра, а стойка ждёт приращения. В примере со скруглением G03 X50. Y40. I50. J30. вместо I-10. J0. стойка поставит центр в (60 + 50; 30 + 30) = (110; 60). От него до начала (60; 30) — √(50² + 30²) ≈ 58,31 мм, до конца (50; 40) — √(60² + 20²) ≈ 63,25 мм. Разница 4,94 мм — кадр отклонён.

Причина

Как проявляется

Что сделать

I, J как координаты центра

Ошибка радиуса на каждой дуге

Пересчитать как приращения от начала или включить режим абсолютного центра

Округление координат

Ошибка на дугах малого радиуса, особенно из CAM

Выводить в мм не меньше трёх знаков после точки — так советует LinuxCNC

Не та плоскость

Дуга в G18 или G19 вместо G17, ошибка или зарез

Явно писать G17, G18, G19 в начале программы и после подпрограмм

Перепутаны G02 и G03

Дуга идёт в другую сторону, центр на месте — радиус верен

Проверить направление с плюса перпендикулярной оси, прогнать симуляцию

R с неверным знаком

Вместо короткой дуги — длинная, радиусы при этом совпадают

Для дуг около 180° и больше — центр I, J вместо R

Две последние ошибки стойка не поймает: геометрия формально верна. Их ловит только графическая симуляция или проход по воздуху с увеличенным отступом.

Коррекция на радиус на дугах

Программу обычно пишут по контуру детали, а смещение на радиус фрезы добавляет коррекция G41/G42. Включать и отменять её на дуге нельзя — только на линейном перемещении; как устроены коррекции и нуль детали — в статье «Системы координат и коррекции инструмента».

Подачу на дуге задают так же, как на прямой, а обороты и подачу на зуб для своего инструмента и материала удобно подобрать в калькуляторе режимов резания.

Как проверить дугу до станка

  1. Найдите на чертеже начало, конец и центр дуги в системе координат детали.
  2. Посчитайте I, J как разность «центр минус начало» и сверьте с кадром.
  3. Посчитайте оба радиуса: от центра до начала и до конца. Они должны совпасть до тысячных миллиметра.
  4. Определите направление, глядя с плюса оси, перпендикулярной плоскости дуги.
  5. Проверьте плоскость G17, G18 или G19, режим центра и, если стоит R, его знак.
  6. Прогоните программу в графической симуляции стойки или CAM до первой детали.

Посчитать здесь: Режимы резания

Обороты шпинделя по скорости резания, минутная подача по подаче на зуб, съём материала и поправка подачи на утонение стружки — для фрезерования и точения.

На отдельной странице

Вопросы и ответы

Как понять, где G02, а где G03, если смотреть на чертёж?

Смотрите на плоскость дуги со стороны положительного направления оси, перпендикулярной к ней: для G17 — сверху, с плюса Z. Если инструмент идёт от начала дуги к концу по часовой стрелке — G02, против — G03.

Что лучше задавать — центр I, J или радиус R?

Центр однозначен и точнее, а окружность целиком задаётся только им. R удобен для коротких скруглений, но при одном радиусе через две точки проходят две дуги, и выбор между ними делает знак R. Дуги около 180° и почти полные окружности через R не задавайте.

I и J — это координаты центра?

По ГОСТ 20999-83 — нет: это приращения от начальной точки дуги к центру, и стандарт рекомендует задавать их так даже в абсолютной системе размеров. Некоторые стойки умеют читать центр в абсолютных координатах (в LinuxCNC это режим G90.1), но по умолчанию — приращения.

Почему стойка выдаёт ошибку радиуса на дуге из CAM?

Расстояние от центра до начала и до конца дуги различается больше допуска стойки. Чаще всего виноваты округление координат в постпроцессоре, неверный режим I, J (приращения или абсолютные) или не та плоскость G17–G19.

Источники

  1. ГОСТ 20999-83 Устройства числового программного управления для металлообрабатывающего оборудования. Кодирование информации управляющих программ · в реестре гида
  2. ГОСТ 20999-83 — карточка стандарта, статус «действует», введён 01.07.1984 взамен ГОСТ 20999-78 · в реестре гида
  3. LinuxCNC Documentation. G-codes — G2, G3 Arc Move

Посчитать

Читать также