G-code
G-код — условное именование языка программирования устройств с числовым программным управлением (ЧПУ). Был создан компанией Electronic Industries Alliance в начале 1960-х. Окончательная доработка была одобрена в феврале 1980 года как стандарт RS274D. Комитет ISO утвердил G-код как стандарт ISO 6983-1:2009, Госкомитет по стандартам СССР — как ГОСТ 20999-83. В советской технической литературе G-код обозначается как код ИСО 7-бит (ISO 7-bit). G-код кодировали на 8-дорожечную перфоленту в коде ISO 7-bit (разработан для представления информации УЧПУ в виде машинного кода так же, как и коды AEG и PC8C), восьмая дорожка использовалась для контроля чётности.
Производители систем УЧПУ (CNC), как правило, используют ПО управления станком, для которого написана (оператором) программа обработки в качестве осмысленных команд управления, используется G-код в качестве базового подмножества языка программирования, расширяя его по своему усмотрению.[1]
G-Code – это также стандартный язык печати, используемый многими 3D-принтерами для управления процессом печати. Файлы GCODE могут быть открыты с помощью различных программ 3D-печати, например, Simplify3D, GCode Viewer, а также с помощью текстового редактора, поскольку их содержимое представляет собой обычный текст.
Структура программы
Основные требования к структуре
Программа, написанная с использованием G-кода, имеет жёсткую структуру. Все команды управления объединяются в кадры — группы, состоящие из одной или более команд. Кадр завершается символом перевода строки (CR/LF) и может иметь явно указанный номер, начинающийся с буквы N, за исключением первого кадра программы и комментариев. Первый (а в некоторых случаях ещё и последний) кадр содержит только один необязательный знак «%». Завершается программа командами M02 или M30.
Комментарии к программе размещаются в круглых скобках. Комментарий может располагаться как в отдельной строке, так и после программных кодов. Недопустимо оформлять в качестве комментария несколько строк, охваченных парой круглых скобок.
Команды в каждом кадре выполняются одновременно, поэтому порядок команд в кадре строго не оговаривается, но традиционно предполагается, что первыми указываются подготовительные команды (например, выбор рабочей плоскости, скоростей перемещений по осям и др.), затем задание координат перемещения, затем выбора режимов обработки и технологические команды.
Максимальное число элементарных команд и заданий координат в одном кадре зависит от конкретного интерпретатора языка управления станками, но для большинства популярных интерпретаторов (стоек управления) не превышает 6.
Координаты задаются указанием оси с последующим числовым значением координаты. Целая и дробная части числа координаты разделяются десятичной точкой. Допустимо опускание незначащих нулей, либо их добавление. Также в подавляющем количестве интерпретаторов допустимо не добавлять десятичную точку к целым числам. Например: Y0.5 и Y.5, Y77, Y77. и Y077.0.
Существуют так называемые модальные и немодальные команды. Модальные команды изменяют некоторый параметр/настройку и эта настройка действует на все последующие кадры программы до их смены очередной модальной командой. К модальным командам, например, относятся скорости перемещения инструмента, управления скоростью шпинделя, подачи СОЖ и др. Немодальные команды действуют только внутри их содержащего кадра.
Интерпретатор кода (стойка управления) станком запоминает значение введённых параметров и настроек до их смены очередной модальной командой или отмены ранее введенной модальной команды, поэтому необязательно указание в каждом кадре, например, скорости перемещения инструмента.
Описание и вызов подпрограмм
Язык допускает многократное исполнение однократно записанной последовательности команд и перемещений инструмента, вызываемую из разных частей программы, например, вырезания в листовой заготовке многих отверстий с одинаковым сложным контуром, расположенных в разных местах будущей детали. При этом в теле подпрограммы описывается траектория движения инструмента для вырезания одного отверстия, а в программе производится многократный вызов подпрограммы. В теле подпрограммы перемещения инструмента задаются в относительных координатах — координатах связанных с формой отверстия, переход к относительной системе координат (иногда такую систему координат называют «инкрементной») производится командой G91 в начале тела подпрограммы, а возврат к абсолютной системе координат командой G90 — в конце тела подпрограммы.
Тело подпрограммы обязательно должно быть описано до команды конца программы — М30, но допустимо расположение подпрограммы после команды М02 — конца программы и иметь имя, начинающееся с буквы О с цифрами номера подпрограммы, например, О112. В конце тела подпрограммы помещается команда возврата в основную программу — М99.
В программе вызов подпрограммы производится командой М98 с указанием обязательного параметра имени подпрограммы P. Недопустимо совпадение имён подпрограмм в пределах одной программы. Пример вызова подпрограммы O112: M98 P112. Допустимо при вызове подпрограммы указание числа вызовов подпрограммы добавлением необязательного параметра L, например, двукратный вызов подпрограммы 112: M98 P112 L2, что, например, может быть полезно при описании выполнения второго прохода чистовой обработки после первого прохода черновой обработки. При опущенном параметре L подпрограмма вызывается однократно.
Управляющее математическое обеспечение некоторых станков или некоторые интерпретаторы G-кода допускают вызов подпрограмм по номеру строки в программе, для этого используется команда M97 с параметром P, указывающем на номер строки, например, M97 P321 L4 — четырёхкратный вызов подпрограммы начинающейся со строки 321. Оформленная таким образом подпрограмма как обычно должна заканчиваться командой M99 — возвратом в вызвавшую программу.
Допустимо вложение подпрограмм, то есть из подпрограммы возможен вызов другой подпрограммы. Максимально допустимое число уровней вложения зависит от реализации конкретного интерпретатора G-кода.
- Пример программы вырезания 2 прямоугольных отверстий 10×20 мм с координатами левого нижнего угла отверстий x=57, y=62 и x=104, y=76 в листовой заготовке толщиной 5 мм с вызовом подпрограммы описывающей вырезание 1 отверстия
... (Фрагмент программы) G00 X57 Y62 (позиционирование по X, Y на 1-е отверстие) M98 P112 (вырезание 1-го отверстия) G00 X104 Y76 (позиционирование по X, Y на 2-е отверстие) M98 P112 (вырезание 2-го отверстия) ... М02 (Конец программы) ... (Тело подпрограммы) O112 (Метка подпрограммы, номер 112) G00 Z1 (Подвод инструмента на высоту 1 мм над поверхностью заготовки со скоростью холостого перемещения) G01 F40 Z-5.5 (Врезание инструмента на глубину -5,5 мм в заготовку со скоростью 40 мм/мин) G91 (Переход в относительную систему координат, в этой системе вначале X=0, Y=0) G01 F20 X10 (Вырезание 1-й стороны прямоугольника со скоростью 20 мм/мин) Y20 (Вырезание 2-й стороны прямоугольника со скоростью 20 мм/мин) X0 (Вырезание 3-й стороны прямоугольника со скоростью 20 мм/мин) Y0 (Вырезание 4-й стороны прямоугольника со скоростью 20 мм/мин) G90 (Переход в абсолютную систему координат, восстановление текущих координат до перехода в относительную систему) G00 Z5 (Подъём инструмента на высоту 5 мм над поверхностью заготовки со скоростью холостого перемещения) M99 (Возврат в вызывавшую программу или подпрограмму) ... М30 (Конец интерпретируемого кода программы. После исполнения этой команды указатель номера кадра устанавливается на 1-ю строку программы и исполнение программы останавливается)
Сводная таблица кодов
Основные (называемые в стандарте подготовительными) команды языка начинаются с буквы G:
- Перемещение рабочих органов оборудования с заданной скоростью (линейное и круговое)
- Выполнение типовых последовательностей (таких, как обработка отверстий и резьба)
- Управление параметрами инструмента, системами координат, и рабочих плоскостей
Коды | Описание |
---|---|
G00-G03 | Позиционирование инструмента |
G17-G19 | Переключение рабочих плоскостей (XY, ZX, YZ) |
G20-G21 | Не стандартизовано |
G40-G44 | Компенсация размера различных частей инструмента (длина, диаметр) |
G53-G59 | Переключение систем координат |
G80-G85 | Циклы сверления, растачивания, нарезания резьбы |
G90-G91 | Переключение систем координат (абсолютная, относительная) |
Таблица основных команд
Команда | Описание | Пример |
---|---|---|
G00 | Ускоренное перемещение инструмента (холостой ход). При холостом перемещении производится линейная интерполяция перемещения аналогично команде G01. | G0 X0 Y0 Z100. |
G01 | Линейная интерполяция, модальная команда. Инструмент (рабочий орган) перемещается по отрезку прямой линии от исходной точки с координатами до исполнения команды в точку с заданными в команде координатами, скорость перемещения задаётся здесь же или ранее модальной командой F. | G01 X0. Y0. Z100. F200. |
G02 | Круговая интерполяция по часовой стрелке, модальная команда. Инструмент перемещается по дуге окружности по часовой стрелке от исходной точки с координатами до исполнения команды в точку с заданными в команде координатами, радиус дуги задаётся параметром R, либо указанием координат центра дуги параметрами I — (смещение центра по оси X относительно начальной координаты X), J — (смещение центра по оси Y относительно начальной координаты Y), К — (смещение центра по оси Z относительно начальной координаты Z) относительно начальных координат инструмента. Для указания плоскости, в которой производится круговая интерполяция должны быть предварительно указана плоскость круговой интерполяции (в этом же или некотором предварительном кадре) модальной командой G17 (плоскость X-Y), или G18 (плоскость X-Z), или G19 (плоскость Y-Z). Скорость перемещения задана модальной командой F. | G02 G17 X15. Y15. R5. F200. или G02 G17 X20. Y15. I-50. J-60. |
G03 | Круговая интерполяция против часовой стрелки. Параметры и действие аналогичны команде G02. | G03 X15. Y15. R5. F200. |
G04 | Задержка выполнения программы, способ задания величины задержки зависит от реализации системы управления, P обычно задает паузу в миллисекундах, X — в секундах. | G04 P500 или G04 X.5 |
G10 | Переключение абсолютной системы координат. В примере начало координат станет в точке 10, 10, 10 старых координат. | G10 X10. Y10. Z10. |
G15 | Переход в полярную систему координат (X радиус Y угол) | G15 X15. Y22.5 |
G16 | Отмена полярной системы координат | G16 X15. Y22.5 |
G17 | Выбор рабочей плоскости X-Y | G17 |
G18 | Выбор рабочей плоскости Z-X | G18 |
G19 | Выбор рабочей плоскости Y-Z | G19 |
G20 | Режим работы в дюймовой системе | G90 G20 |
G21 | Режим работы в метрической системе | G90 G21 |
G22 | Активировать установленный предел перемещений (Инструмент не выйдет за их предел) | G22 G01 X15. Y25. |
G28 | Вернуться на референтную точку | G28 G91 Z0 Y0 |
G30 | Поднятие по оси Z на точку смены инструмента | G30 G91 Z0 |
G40 | Отмена компенсации радиуса инструмента | G1 G40 X0. Y0. F200. |
G41 | Компенсировать радиус инструмента слева от траектории | G41 X15. Y15. D1 F100. |
G42 | Компенсировать радиус инструмента справа от траектории | G42 X15. Y15. D1 F100. |
G43 | Компенсировать длину инструмента положительно | G43 X15. Y15. Z100. H1 S1000 M3 |
G44 | Компенсировать длину инструмента отрицательно | G44 X15. Y15. Z4. H1 S1000 M3 |
G49 | Отмена компенсации длины инструмента | G49 Z100. |
G50 | Сброс всех масштабирующих коэффициентов в 1,0. | G50 |
G51 | Назначение масштабов. В примере — уменьшение масштаба по оси X в 10 раз. | G51 X.1 |
G53 | Переход в систему координат станка. | G53 G0 X0. Y0. Z0. |
G54—G59 | Переключиться на заданную оператором систему координат | G54 G0 X0. Y0. Z100. |
G61—G64 | Переключение режимов Точный Стоп/Постоянная скорость | |
G68 | Поворот координат на нужный угол | G68 X0 Y0 R45. |
G70 | Цикл продольного чистового точения | G70 P10 Q15. |
G71 | Цикл многопроходного продольного чернового точения | G71 P10 Q15. D0.5 UO.2 W0.5 |
G80 | Отмена циклов сверления, растачивания, нарезания резьбы метчиком и т. д. | G80 |
G81 | Цикл сверления | G81 X0 Y0. Z-10. R3. F100. |
G82 | Цикл сверления с задержкой | G82 X0. Y0. Z-10. R3. P100 F100. |
G83 | Цикл прерывистого сверления (с полным выводом сверла) | G83 X0. Y0. Z-10. R3. Q8. F100. |
G84 | Цикл нарезания резьбы | G95 G84 M29 X0. Y0. Z-10. R3 F1.411 |
G90 | Задание абсолютных координат опорных точек траектории | G90 G1 X0.5. Y0.5. F10. |
G91 | Задание координат инкрементально последней введённой опорной точки | G91 G1 X4. Y5. F100. |
G94 | F (подача) — в формате мм/мин. | G94 G80 Z100. F75. |
G95 | F (подача) — в формате мм/об. | G95 G84 X0. Y0. Z-10. R3 F1.411 |
G99 | После каждого цикла не отходить на «проходную точку» | G99 G91 X10. K4. |
максимум 4 команды в кадре
Таблица технологических кодов
Технологические команды языка начинаются с буквы М. Включают такие действия, как:
- Сменить инструмент
- Включить/выключить шпиндель
- Включить/выключить охлаждение
- Работа с подпрограммами
Код | Описание | Пример |
---|---|---|
M00 | Приостановить работу станка до нажатия кнопки «старт» на пульте управления, так называемая «безусловная технологическая остановка» | G0 X0 Y0 Z100 M0 |
M01 | Приостановить работу станка до нажатия кнопки «старт», если включён режим подтверждения остановки | G0 X0 Y0 Z100 M1 |
M02 | Конец программы, без сброса модальных функций | M02 |
M03 | Начать вращение шпинделя по часовой стрелке | M3 S2000 |
M04 | Начать вращение шпинделя против часовой стрелки | M4 S2000 |
M05 | Остановить вращение шпинделя | M5 |
M06 | Сменить инструмент | T15 M6 |
M07 | Включить дополнительное охлаждение | M3 S2000 M7 |
M08 | Включить основное охлаждение. Иногда использование более одного M-кода в одной строке (как в примере) недопустимо, для этого используются M13 и M14 | M3 S2000 M8 |
M09 | Выключить охлаждение | G0 X0 Y0 Z100 M5 M9 |
M13 | Включить охлаждение и вращение шпинделя по часовой стрелке | S2000 M13 |
M14 | Включить охлаждение и вращение шпинделя против часовой стрелки | S2000 M14 |
M17 | Конец подпрограммы | M17 |
M48 | Разрешить переопределять скорость подачи | |
M49 | Запретить переопределение скорости подачи | |
M25 | Замена инструмента вручную | M25 |
M97 | Запуск подпрограммы, находящейся в той же программе (где P — номер кадра, в случае примера переход осуществится к строке N25), действует не везде, предположительно — только на станках HAAS | M97 P25 |
M98 | Запуск подпрограммы, находящейся отдельно от основной программы (где P — номер подпрограммы, в случае примера переход осуществится к программе O1015) | M98 P1015 |
M99 | Конец подпрограммы | M99 |
M30 | Конец программы, со сбросом модальных функций | M30 |
Параметры команд
Параметры команд задаются буквами латинского алфавита
Код | Описание | Пример |
---|---|---|
X | Координата точки траектории по оси X | G0 X100 Y0 Z0 |
Y | Координата точки траектории по оси Y | G0 X0 Y100 Z0 |
Z | Координата точки траектории по оси Z | G0 X0 Y0 Z100 |
P | Параметр команды | G04 P101 |
F | Скорость рабочей подачи.
Для фрезерных станков это дюймы в минуту (IPM) или миллиметры в минуту (mm/min), Для токарных станков это дюймы за оборот (IPR) или миллиметры за оборот (mm/rev). |
G1 G91 X10 F100 |
S | Частота вращения шпинделя | S3000 M3 |
R | Параметр стандартного цикла или радиус дуги (расширение стандарта) | G81 R1 0 R2 −10 F50 или G2 G91 X12.5 R12.5 |
D | Параметр коррекции выбранного инструмента | G1 G41 D1 X10. F150. |
L | Число вызовов подпрограммы | M98 L82 P10 или G65 L82 P10 X_Y_R_ |
I | Параметр дуги при круговой интерполяции. Инкрементальное расстояние от начальной точки до центра дуги по оси X. | G03 X10 Y10 I0 J0 F10 |
J | Параметр дуги при круговой интерполяции. Инкрементальное расстояние от начальной точки до центра дуги по оси Y. | G03 X10 Y10 I0 J0 F10 |
K | Параметр дуги при круговой интерполяции. Инкрементальное расстояние дуги по оси Z. | G03 X10 Y10 I0 K0 F10 |
Пример
Обработка буквы W (вписанной в прямоугольник 34х27 мм, см. рис.) на условном вертикально-фрезерном станке с ЧПУ, фрезой диаметром 4 мм, в заготовке из органического стекла[2]:
Красным цветом выделен результат обработки.
Кадр | Содержание | Комментарий |
---|---|---|
% | Начало программы | |
N1 | G90 G40 G17 | Система координат абсолютная, компенсация на радиус инструмента выключена, плоскость интерполяции XoY |
N2 | S500 M3 | Задать скорость вращения шпинделя 500 об/мин и включить вращение шпинделя |
N3 | G0 X2.54 Y26.15 | Переход в координаты по x и y начала обработки на холостом ходу |
N4 | Z1.0 | Подвод инструмента к заготовке по Z, не доходя до поверхности 1 мм, на холостом ходу |
N5 | G1 Z-1.0 F100 | Врезание в заготовку на глубину 1 мм на подаче 100 мм/мин |
N6 | X5.19 Y 2.0 | Первый штрих буквы W |
N7 | X7.76 | Продолжение движения |
N8 | X16.93 Y26.15 | Второй штрих буквы W |
N9 | X18.06 | Продолжение движения |
N10 | X25.4 Y2.0 | Третий штрих буквы W |
N11 | X25.96 | Продолжение движения |
N12 | X32.17 Y 26.15 | Четвертый штрих буквы W |
N13 | G0 Z12 | Отвод инструмента от заготовки на высоту 12 мм на холостом ходу |
N14 | M5 | Выключить вращение шпинделя |
N15 | M30 | Конец программы |
См. также
Примечания
- ↑ CNC G Codes Definitions Examples Programs Programming Learning Training (недоступная ссылка)
- ↑ Subroutine G-Code
Ссылки
- Создание и подготовка управляющих программ (G-кода) в режиме on-line.
- CAM расширение Inkscape для экспорта в G-code
- Симуляция работы программ на G-коде в реальном времени
- Real-Time 3D Graphics Simulation for G-code (недоступная ссылка) (англ.)
- Overview of canonical machining functions (англ.)
- SIMUL CNC (англ.)
- Подборка ссылок на сайты редакторов визуализаторов G-кода