G-code: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
отмена правки 90785707 участника 176.59.6.31 (обс.) было верно
Метка: отмена
м откат правок 93.125.107.84 (обс.) к версии Alex NB IT
Метка: откат
 
(не показано 36 промежуточных версий 15 участников)
Строка 1: Строка 1:
'''G-код''' — условное именование [[Язык программирования|языка программирования]] устройств с [[Числовое программное управление|числовым программным управлением]] (ЧПУ). Был создан компанией [[Electronic Industries Alliance]] в начале [[1960-е|1960-х]]. Окончательная доработка была одобрена в феврале 1980 года как стандарт RS274D. Комитет [[ISO]] утвердил G-код как стандарт ISO 6983-1:2009, [[Госстандарт СССР|Госкомитет по стандартам СССР]] — как [[ГОСТ]] 20999-83. В советской технической литературе G-код обозначается как код ИСО 7-бит (ISO 7-bit).
'''G-код''' — условное именование [[Язык программирования|языка программирования]] устройств с [[Числовое программное управление|числовым программным управлением]] (ЧПУ). Был создан компанией [[Electronic Industries Alliance]] в начале [[1960-е|1960-х]]. Окончательная доработка была одобрена в феврале 1980 года как стандарт RS274D. Комитет [[ISO]] утвердил G-код как стандарт ISO 6983-1:2009, [[Госстандарт СССР|Госкомитет по стандартам СССР]] — как [[ГОСТ]] 20999-83<ref>{{Cite web |url=https://docs.cntd.ru/document/1200024215 |title=ГОСТ 20999-83. Устройства числового программного управления для металлообрабатывающего оборудования. Кодирование информации управляющих программ |access-date=2021-08-21 |archive-date=2021-08-21 |archive-url=https://web.archive.org/web/20210821011007/https://docs.cntd.ru/document/1200024215 |deadlink=no }}</ref>. В советской технической литературе G-код обозначается как код ИСО 7-бит (ISO 7-bit), это вызвано тем, что G-код кодировали на 8-дорожечную перфоленту в коде ISO 7-bit (разработан для представления информации УЧПУ в виде машинного кода так же, как и коды AEG и PC8C), восьмая дорожка использовалась для контроля чётности.
G-код кодировали на 8-дорожечную перфоленту в коде ISO 7-bit (разработан для представления информации УЧПУ в виде машинного кода так же, как и коды AEG и PC8C), восьмая дорожка использовалась для контроля чётности.


Производители систем УЧПУ (CNC), как правило, используют ПО управления станком, для которого написана (оператором) программа обработки в качестве осмысленных команд управления, используется G-код в качестве базового подмножества языка программирования, расширяя его по своему [[усмотрению]].<ref>[http://www.cncezpro.com/gcodes.cfm CNC G Codes Definitions Examples Programs Programming Learning Training<!-- Заголовок добавлен ботом -->]</ref>
Производители систем УЧПУ (CNC), как правило, используют ПО управления станком, для которого написана (оператором) программа обработки в качестве осмысленных команд управления, используется G-код в качестве базового подмножества языка программирования, расширяя его по своему [[усмотрению]]<ref>{{Cite web |url=http://www.cncezpro.com/gcodes.cfm |title=CNC G Codes Definitions Examples Programs Programming Learning Training<!-- Заголовок добавлен ботом --> |accessdate=2008-02-09 |archiveurl=https://web.archive.org/web/20071012021026/http://www.cncezpro.com/gcodes.cfm |archivedate=2007-10-12 |deadlink=yes }}</ref>.

G-Code — это также стандартный язык, используемый многими моделями [[3D-принтер]]ов для управления процессом печати. Файлы GCODE могут быть открыты с помощью различных программ 3D-печати, например, Simplify3D, GCode Viewer, а также с помощью текстового редактора, поскольку их содержимое представляет собой обычный текст.


== Структура программы ==
== Структура программы ==


=== Основные требования к структуре ===
=== Основные требования к структуре ===
Программа, написанная с использованием G-кода, имеет жёсткую структуру. Все команды управления объединяются в '''кадры''' — группы, состоящие из одной или более команд. Кадр завершается символом перевода строки (CR/LF) и может иметь явно указанный номер, начинающийся с буквы N, за исключением первого кадра программы и комментариев. Первый в некоторых случаях ещё и последний) кадр содержит только один необязательный знак «%». Завершается программа командами M02 или M30.
Программа, написанная с использованием G-кода, имеет жёсткую структуру. Все команды управления объединяются в '''кадры''' — группы, состоящие из одной или более команд. Кадр завершается символом перевода строки (CR/LF) и может необязательно иметь явно указанный номер, начинающийся с буквы N, за исключением первого кадра программы и комментариев. Этот номер является по сути меткой кадра и необязательно должен нарастать в программе или представлять собой последовательные целые числа, важно, чтобы номер не повторялся в пределах программы, например, допустимо:
...
N200 G0
n100 x0
x5y4
...
В большинстве современных интерпретаторов кода допустимо использовать в коде программы строчные и прописные буквы, как в примере.


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


Первый (а в некоторых случаях ещё и последний) кадр содержит только один необязательный знак <%>. Завершается программа командами M02 или M30.
Команды в каждом кадре выполняются одновременно, поэтому порядок команд в кадре строго не оговаривается, но традиционно предполагается, что первыми указываются подготовительные команды (например, выбор рабочей плоскости, скоростей перемещений по осям и др.), затем задание координат

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

Элементарные команды в каждом кадре выполняются одновременно, поэтому порядок команд в кадре строго не оговаривается, но традиционно предполагается, что первыми указываются подготовительные команды (например, выбор плоскости круговой интерполяции, скоростей перемещений по осям и др.), затем задание координат перемещения, затем выбора режимов обработки и технологические команды.


Максимальное число элементарных команд и заданий координат в одном кадре зависит от конкретного интерпретатора языка управления станками, но для большинства популярных интерпретаторов (стоек управления) не превышает 6.
Максимальное число элементарных команд и заданий координат в одном кадре зависит от конкретного интерпретатора языка управления станками, но для большинства популярных интерпретаторов (стоек управления) не превышает 6.
Строка 18: Строка 28:
Координаты задаются указанием оси с последующим числовым значением координаты. Целая и дробная части числа координаты разделяются десятичной точкой. Допустимо опускание незначащих нулей, либо их добавление. Также в подавляющем количестве интерпретаторов допустимо не добавлять десятичную точку к целым числам. Например: Y0.5 и Y.5, Y77, Y77. и Y077.0.
Координаты задаются указанием оси с последующим числовым значением координаты. Целая и дробная части числа координаты разделяются десятичной точкой. Допустимо опускание незначащих нулей, либо их добавление. Также в подавляющем количестве интерпретаторов допустимо не добавлять десятичную точку к целым числам. Например: Y0.5 и Y.5, Y77, Y77. и Y077.0.


Существуют так называемые модальные и немодальные команды. Модальные команды изменяют некоторый параметр/настройку и эта настройка действует на все последующие кадры программы до их смены очередной модальной командой. К модальным командам, например, относятся скорости перемещения инструмента, управления скоростью шпинделя, подачи СОЖ и др. Немодальные команды действуют только внутри их содержащего кадра.
Существуют так называемые модальные и немодальные команды. Модальные команды изменяют некоторый параметр/настройку и эта настройка действует на все далее исполняемые кадры программы до их смены очередной модальной командой либо её отмены. К модальным командам, например, относятся скорости перемещения инструмента, управления скоростью шпинделя, подачи [[Смазочно-охлаждающие жидкости|смазочно-охлаждающей жидкости]] (СОЖ) и др. Немодальные команды действуют только внутри их содержащего кадра. К немодальным командам относятся, например, команды разгона и торможения шпинделя.


Интерпретатор кода (стойка управления) станком запоминает значение введённых параметров и настроек до их смены очередной модальной командой или отмены ранее введенной модальной команды, поэтому необязательно указание в каждом кадре, например, скорости перемещения инструмента.
Интерпретатор кода (стойка управления) станком запоминает значение введённых параметров и настроек до их смены очередной модальной командой или отмены ранее введённой модальной команды, поэтому необязательно указание в каждом кадре, например, скорости перемещения инструмента.


=== Описание и вызов подпрограмм ===
=== Описание и вызов подпрограмм ===
Язык допускает многократное исполнение однократно записанной последовательности команд и перемещений инструмента, вызываемую из разных частей программы, например, вырезания в листовой заготовке многих отверстий с одинаковым сложным контуром, расположенных в разных местах будущей детали. При этом в теле подпрограммы описывается траектория движения инструмента для вырезания одного отверстия, а в программе производится многократный вызов подпрограммы. В теле подпрограммы перемещения инструмента задаются в относительных координатах — координатах связанных с формой отверстия, переход к относительной системе координат (иногда такую систему координат называют «инкрементной») производится командой G91 в начале тела подпрограммы, а возврат к абсолютной системе координат командой G90 — в конце тела подпрограммы.
Язык допускает многократное исполнение однократно записанной последовательности команд и перемещений инструмента, вызываемую из разных частей программы, например, вырезания в листовой заготовке многих отверстий с одинаковым сложным контуром, расположенных в разных местах будущей детали. При этом в теле подпрограммы описывается траектория движения инструмента для вырезания одного отверстия, а в программе производится многократный вызов подпрограммы из разных мест. В теле подпрограммы перемещения инструмента задаются в относительных координатах — координатах, описывающих траекторию инструмента при обработке отверстия, переход к относительной системе координат (иногда такую систему координат называют <инкрементной>) производится командой G91 в начале тела подпрограммы, а возврат к абсолютной системе координат командой G90 — в конце тела подпрограммы. В инкрементной системе команды перемещения инструмента интерпретируются как приращения, например:
g90 x5 (''назначение абсолютной системы координат, после исполнения этого кадра машинная координата по оси X станет равной 5'')

g91 x10 (''назначение инкрементной системы координат, после исполнения этого кадра машинная координата по оси X станет равной 15'')
x-15 (''после исполнения этого кадра машинная координата по оси X станет равной 0, так как продолжает действовать инкрементная система координат, заданная модальной командой g91'')
Тело подпрограммы обязательно должно быть описано до команды конца программы — М30, но допустимо расположение подпрограммы после команды М02 — конца программы и иметь имя, начинающееся с буквы О с цифрами номера подпрограммы, например, О112. В конце тела подпрограммы помещается команда возврата в основную программу — М99.
Тело подпрограммы обязательно должно быть описано до команды конца программы — М30, но допустимо расположение подпрограммы после команды М02 — конца программы и иметь имя, начинающееся с буквы О с цифрами номера подпрограммы, например, О112. В конце тела подпрограммы помещается команда возврата в основную программу — М99.


В программе вызов подпрограммы производится командой М98 с указанием обязательного параметра имени подпрограммы P. Недопустимо совпадение имён подпрограмм в пределах одной программы. Пример вызова подпрограммы O112: '''M98 P112'''. Допустимо при вызове подпрограммы указание числа вызовов подпрограммы добавлением необязательного параметра L, например, двукратный вызов подпрограммы 112: '''M98 P112 L2''', что, например, может быть полезно при описании выполнения второго прохода чистовой обработки после первого прохода черновой обработки. При опущенном параметре L подпрограмма вызывается однократно.
В программе вызов подпрограммы производится командой М98 с указанием обязательного параметра имени подпрограммы P. Недопустимо совпадение имён подпрограмм в пределах одной программы. Пример вызова подпрограммы O112: '''M98 P112'''. Допустимо при вызове подпрограммы указание числа вызовов подпрограммы добавлением необязательного параметра L, например, двукратный вызов подпрограммы 112: '''M98 P112 L2''', что, например, может быть полезно при описании выполнения второго прохода чистовой обработки после первого прохода черновой обработки. При опущенном параметре L подпрограмма вызывается однократно.


Управляющее математическое обеспечение некоторых станков или некоторые интерпретаторы G-кода допускают вызов подпрограмм по номеру строки в программе, для этого используется команда M97 с параметром P, указывающем на номер строки, например, '''M97 P321 L4''' — четырёхкратный вызов подпрограммы начинающейся со строки 321. Оформленная таким образом подпрограмма как обычно должна заканчиваться командой M99 — возвратом в вызвавшую программу.
Управляющее математическое обеспечение некоторых станков или некоторые интерпретаторы G-кода допускают вызов подпрограмм по номеру строки (кадра) в программе, для этого используется команда M97 с параметром P, указывающем на номер (метку) строки, например, '''M97 P321 L4''' — четырёхкратный вызов подпрограммы начинающейся с меткой N321. Оформленная таким образом подпрограмма как обычно должна заканчиваться командой M99 — возвратом в вызвавшую программу.


Допустимо вложение подпрограмм, то есть из подпрограммы возможен вызов другой подпрограммы. Максимально допустимое число уровней вложения зависит от реализации конкретного интерпретатора G-кода.
Допустимо вложение подпрограмм, то есть из подпрограммы возможен вызов другой подпрограммы. Максимально допустимое число уровней вложения зависит от реализации конкретного интерпретатора G-кода.


;Пример программы вырезания 2 прямоугольных отверстий 10×20 мм с координатами левого нижнего угла отверстий x=57, y=62 и x=104, y=76 в листовой заготовке толщиной 5 мм с вызовом подпрограммы описывающей вырезание 1 отверстия:
;Пример программы вырезания 2 прямоугольных отверстий 10 x 20 мм, увеличенных на диаметр торцевой фрезы, с координатами левых нижних углов отверстий x=57, y=62 и x=104, y=76 в листовой заготовке толщиной 5 мм с вызовом подпрограммы описывающей вырезание одного отверстия:
...
...
''(Фрагмент программы)''
''(Фрагмент программы)''
Строка 45: Строка 57:
''(Тело подпрограммы)''
''(Тело подпрограммы)''
O112 ''(Метка подпрограммы, номер 112)''
O112 ''(Метка подпрограммы, номер 112)''
G00 F300 Z1 ''(Подвод инструмента на высоту 1 мм над поверхностью заготовки со скоростью 300 мм/мин)'' В G00 функция подачи F не задается!!
G00 Z1 ''(Подвод инструмента на высоту 1 мм над поверхностью заготовки со скоростью холостого перемещения)''
G01 F40 Z-5.5 ''(Врезание инструмента на глубину -5,5 мм в заготовку со скоростью 40 мм/мин)''
G01 F40 Z-5.5 ''(Врезание инструмента на глубину -5,5 мм в заготовку со скоростью 40 мм/мин)''
G91 ''(Переход в относительную систему координат, в этой системе вначале X=0, Y=0)''
G91 ''(Переход в относительную систему координат, в этой системе вначале X=0, Y=0)''
G01 F20 X10 ''(Вырезание 1-й стороны прямоугольника со скоростью 20 мм/мин)''
G01 F20 X10 ''(Вырезание 1-й стороны прямоугольника со скоростью 20 мм/мин)''
Y20 ''(Вырезание 2-й стороны прямоугольника со скоростью 20 мм/мин)''
Y20 ''(Вырезание 2-й стороны прямоугольника со скоростью 20 мм/мин)''
X0 ''(Вырезание 3-й стороны прямоугольника со скоростью 20 мм/мин)''
X-10 ''(Вырезание 3-й стороны прямоугольника со скоростью 20 мм/мин. Так как включена инкрементальная система координат, то возврат инструмента в исходную точку до вызова подпрограммы указывается в виде приращения координаты, здесь -10.)''
Y0 ''(Вырезание 4-й стороны прямоугольника со скоростью 20 мм/мин)''
Y-20 ''(Вырезание 4-й стороны прямоугольника со скоростью 20 мм/мин)''
G90 ''(Переход в абсолютную систему координат, восстановление текущих координат до перехода в относительную систему)''
G90 ''(Переход в абсолютную систему координат, восстановление текущих координат до перехода в относительную систему)''
G00 F300 Z5 ''(Подъём инструмента на высоту 5 мм над поверхностью заготовки со скоростью 300 мм/мин)''
G00 Z5 ''(Подъём инструмента на высоту 5 мм над поверхностью заготовки со скоростью холостого перемещения)''
M99 ''(Возврат в вызывавшую программу или подпрограмму)''
M99 ''(Возврат в вызывавшую программу или подпрограмму)''
...
...
М30 ''(Конец интерпретируемого кода программы. После исполнения этой команды указатель номера кадра устанавливается на 1-ю строку программы)''
М30 ''(Конец интерпретируемого кода программы. После исполнения этой команды указатель номера кадра устанавливается на 1-ю строку программы и исполнение программы останавливается)''


== Сводная таблица кодов ==
== Сводная таблица кодов ==
Основные (называемые в стандарте подготовительными) команды языка начинаются с буквы '''G''' (аббревиатура от слова '''General'''):

Основные (называемые в стандарте подготовительными) команды языка начинаются с буквы '''G''':


* Перемещение рабочих органов оборудования с заданной скоростью (линейное и круговое)
* Перемещение рабочих органов оборудования с заданной скоростью (линейное и круговое)
Строка 92: Строка 103:
!Пример
!Пример
|-
|-
|{{видимый якорь|G00}}<ref>Многие интерпретаторы кода допускают опускание первого нуля в командах G00—G09, например, G1 вместо G01</ref>|| Ускоренное перемещение инструмента (холостой ход). При холостом перемещении '''НЕ ОБЯЗАТЕЛЬНО''' производится линейная интерполяция перемещения аналогично команде [[#G01|G01]]. В некоторых интерпретаторах при выполнении команды перемещения по нескольким осям одновременно, перемещение по осям отрабатывается с максимальной скоростью, поэтому линейное перемещение от исходной точки в конечную точку не обеспечивается, поэтому нельзя производить ходы обработки детали при действии этой модальной команды. || G0 X0 Y0 Z100.
|G00 || Ускоренное перемещение инструмента (холостой ход) || G0 X0 Y0 Z100.
|-
|-
|{{видимый якорь|G01}}||Линейная интерполяция, модальная команда. Инструмент (рабочий орган) перемещается по отрезку прямой линии от исходной точки с координатами до исполнения команды в точку с заданными в команде координатами, скорость перемещения задаётся здесь же или ранее модальной командой F. При этом скорость перемещения связана со скоростями перемещения по осям как
|G01 || Линейная интерполяция || G01 X0. Y0. Z100. F200.
<math>F = \sqrt{F_x^2 + F_y^2 + F_z^2};\ </math> <math>\frac{\Delta L_x}{F_x} = \frac{\Delta L_y}{F_y} = \frac{\Delta L_z}{F_z},\ </math> <math>\Delta L_x,\ \Delta L_y,\ \Delta L_z\ </math> — приращения координат между кадрами; <math>F_x,\ F_y,\ F_z\ </math> — скорости по осям.
|| G01 X0. Y0. Z100. F200.
|-
|-
|{{видимый якорь|G02}} || Круговая интерполяция по часовой стрелке, модальная команда. Инструмент перемещается по дуге окружности по часовой стрелке от исходной точки с координатами до исполнения команды в точку с заданными в команде координатами, скорость перемещения задаётся в этой команде параметром F, радиус дуги задаётся параметром R, либо указанием координат центра дуги параметрами I — (смещение центра по оси X относительно начальной координаты X), J — (смещение центра по оси Y относительно начальной координаты Y), К — (смещение центра по оси Z относительно начальной координаты Z) относительно начальных координат инструмента. Для указания плоскости, в которой производится круговая интерполяция, предварительно должна быть указана плоскость круговой интерполяции (в этом же или в другом предварительном кадре) модальной командой [[#G17|G17]] (плоскость X-Y), или [[#G18|G18]] (плоскость X-Z), или [[#G19|G19]] (плоскость Y-Z). Скорость перемещения задана модальной командой F. || G02 G17 X15. Y15. R5. F200.<br>или<br>G02 G17 X20. Y15. I-50. J-60.
|G02 || Круговая интерполяция по часовой стрелке || G02 X15. Y15. R5. F200.
|-
|-
|G03 || Круговая интерполяция против часовой стрелки || G03 X15. Y15. R5. F200.
|{{видимый якорь|G03}} || Круговая интерполяция против часовой стрелки. Параметры и действие аналогичны команде G02. || G03 X15. Y15. R5. F200.
|-
|-
|G04 || Задержка выполнения программы, способ задания величины задержки зависит от реализации системы управления|| G04 P500;
|{{видимый якорь|G04}} || Задержка выполнения программы, способ задания величины задержки зависит от реализации системы управления, P обычно задает паузу в миллисекундах, X — в секундах. В некоторых интерпретаторах P задает паузу в секундах и параметр X в этой команде не используется. Также в некоторых интерпретаторах возможно задание задержки параметром U.|| G04 P500 или G04 X.5
|-
|-
|{{видимый якорь|G10}} || Переключение абсолютной системы координат. В примере начало координат станет в точке 10, 10, 10 старых координат. || G10 X10. Y10. Z10.
|G10 || Задать новые координаты для начала координат || G10 X10. Y10. Z10.
|-
|-
|{{видимый якорь|G15}} || Переход в полярную (цилиндрическую) систему координат. В этой системе параметр X задаёт радиус, а Y угол в градусах. Если включена абсолютная система координат ([[#G90|G90]]), то начало полярных координат будет в точке текущих координат 0; 0, если включена инкрементная система координат, то начало координат будет в точке, достигнутой при отработке предыдущего кадра. || G15 X15. Y22.5
|G15 || Полярная система координат (X радиус Y угол) || G15 X15. Y22.5
|-
|-
|G16 || Отмена полярной системы координат || G16 X15. Y22.5
|{{видимый якорь|G16}} || Отмена полярной системы координат || G16 X15. Y22.5
|-
|-
|G17 || Выбор рабочей плоскости X-Y || G17
|{{видимый якорь|G17}} || Выбор рабочей плоскости X-Y || G17
|-
|-
|G18 || Выбор рабочей плоскости Z-X || G18
|{{видимый якорь|G18}} || Выбор рабочей плоскости Z-X || G18
|-
|-
|G19 || Выбор рабочей плоскости Y-Z || G19
|{{видимый якорь|G19}} || Выбор рабочей плоскости Y-Z || G19
|-
|-
|G20 || Режим работы в дюймовой системе || G90 G20
|{{видимый якорь|G20}} || Режим работы в дюймовой системе || G90 G20
|-
|-
|G21 || Режим работы в метрической системе || G90 G21
|{{видимый якорь|G21}} || Режим работы в метрической системе || G90 G21
|-
|-
|G22 || Активировать установленный предел перемещений (Станок не выйдет за их предел) || G22 G01 X15. Y25.
|{{видимый якорь|G22}} || Активировать установленный предел перемещений (Инструмент не выйдет за их предел) || G22 G01 X15. Y25.
|-
|-
|G28 || Вернуться на референтную точку || G28 G91 Z0 Y0
|{{видимый якорь|G28}} || Вернуться на референтную точку || G28 G91 Z0 Y0
|-
|-
|G30 || Поднятие по оси Z на точку смены инструмента || G30 G91 Z0
|{{видимый якорь|G30}} || Поднятие по оси Z на точку смены инструмента || G30 G91 Z0
|-
|-
|G40 || Отмена компенсации радиуса инструмента || G1 G40 X0. Y0. F200.
|{{видимый якорь|G40}} || Отмена компенсации радиуса инструмента || G1 G40 X0. Y0. F200.
|-
|-
|G41 || Компенсировать радиус инструмента слева от траектории|| G41 X15. Y15. D1 F100.
|{{видимый якорь|G41}} || Компенсировать радиус инструмента слева от траектории|| G41 X15. Y15. D1 F100.
|-
|-
|G42 || Компенсировать радиус инструмента справа от траектории|| G42 X15. Y15. D1 F100.
|{{видимый якорь|G42}} || Компенсировать радиус инструмента справа от траектории|| G42 X15. Y15. D1 F100.
|-
|-
|G43 || Компенсировать длину инструмента положительно || G43 X15. Y15. Z100. H1 S1000 M3
|{{видимый якорь|G43}} || Компенсировать длину инструмента в положительную сторону. В основном применяется при смене инструмента. || G43 X15. Y15. Z100. H1 S1000 M3
|-
|-
|G44 || Компенсировать длину инструмента отрицательно || G44 X15. Y15. Z4. H1 S1000 M3
|{{видимый якорь|G44}} || Компенсировать длину инструмента в отрицательную сторону. Действие аналогично G43. || G44 X15. Y15. Z4. H1 S1000 M3
|-
|-
|G49 || Отмена компенсации длины инструмента || G49 Z100.
|{{видимый якорь|G49}} || Отмена компенсации длины инструмента || G49 Z100.
|-
|-
|{{видимый якорь|G50}} || Сброс всех масштабирующих коэффициентов в 1,0|| G50
|G53 || Отключить смещение начала системы координат станка || G53 G0 X0. Y0. Z0.
|-
|-
|{{видимый якорь|G51}} || Назначение масштабов. В примере — уменьшение масштаба по оси X в 10 раз. После этой модальной команды все указанные в командах перемещения и координаты по оси X будут умножаться на масштабирующий коэффициент 0,1 и результат интерпретироваться как требуемое перемещение. Если задать масштабирующий коэффициент по некоторой оси (или по любым осям) равным −1, то последующее движение будет зеркальным по этой оси (или осям, где масштабирующий коэффициент −1). || G51 X.1<br>или G51 X-1
|G54—G59 || Переключиться на заданную оператором систему координат || G54 G0 X0. Y0. Z100.
|-
|-
|{{видимый якорь|G53}} || Переход в систему координат станка. || G53 G0 X0. Y0. Z0.
|G61—G64
|-
|{{видимый якорь|G54-G59}} || Переключиться на заданную оператором систему координат || G54 G0 X0. Y0. Z100.
|-
|{{видимый якорь|G61-G64}}
|Переключение режимов Точный Стоп/Постоянная скорость
|Переключение режимов Точный Стоп/Постоянная скорость
|-
|-
|G68 || Поворот координат на нужный угол || G68 X0 Y0 R45.
|{{видимый якорь|G68}} || Поворот координат на нужный угол || G68 X0 Y0 R45.
|-
|-
|G70 || Цикл продольного чистового точения || G70 P10 Q15.
|{{видимый якорь|G70}} || Цикл продольного чистового точения || G70 P10 Q15.
|-
|-
|G71 || Цикл многопроходного продольного чернового точения || G71 P10 Q15. D0.5 UO.2 W0.5
|{{видимый якорь|G71}} || Цикл многопроходного продольного чернового точения || {{nobr|G71 P10 Q15. D.5 U.2 W.5}}
|-
|-
|G80 || Отмена циклов сверления, растачивания, нарезания резьбы метчиком и т. д. || G80
|{{видимый якорь|G80}} || Отмена циклов сверления, растачивания, нарезания резьбы метчиком и т. д. || G80
|-
|-
|G81 || Цикл сверления || G81 X0 Y0. Z-10. R3. F100.
|{{видимый якорь|G81}} || Цикл сверления || G81 X0 Y0. Z-10. R3. F100.
|-
|-
|G82 || Цикл сверления с задержкой || G82 X0. Y0. Z-10. R3. P100 F100.
|{{видимый якорь|G82}} || Цикл сверления с задержкой || {{nobr|G82 X0. Y0. Z-10. R3. P100 F100.}}
|-
|-
|{{видимый якорь|G83}} || Цикл прерывистого сверления (с периодическим полным выводом сверла). Параметр Z указывает полную глубину сверления от поверхности (Z=0), R — высота вывода инструмента над поверхностью для вывода стружки и также конечное положение после завершения сверления, Q — величина заглубления одного из нескольких заглублений при сверлении, F — скорость подачи (необязательна, при отсутствии этого параметра скорость определяется ранее заданной скоростью в команде G1. || G83 Z-20 R1 Q2 f20
|G83 || Цикл прерывистого сверления (с полным выводом сверла) || G83 X0. Y0. Z-10. R3. Q8. F100.
|-
|-
|G84 || Цикл нарезания резьбы || G95 G84 M29 X0. Y0. Z-10. R3 F1.411
|{{видимый якорь|G84}} || Цикл нарезания резьбы || G95 G84 M29 X0. Y0. Z-10. R3 F1.411
|-
|-
|G90 || Задание абсолютных координат опорных точек траектории || G90 G1 X0.5. Y0.5. F10.
|{{видимый якорь|G90}} || Задание абсолютных координат опорных точек траектории || G90 G1 X0.5. Y0.5. F10.
|-
|-
|G91 || Задание координат инкрементально последней введённой опорной точки || G91 G1 X4. Y5. F100.
|{{видимый якорь|G91}} || Задание координат инкрементально относительно координат последней введённой опорной точки, перемещение инструмента в этой системе координат задаётся в виде приращений || G91 G1 X4. Y5. F100.
|-
|-
|G94 || F (подача) — в формате мм/мин. || G94 G80 Z100. F75.
|{{видимый якорь|G94}} || F (подача) — в формате мм/мин || G94 G80 Z100. F75.
|-
|-
|G95 || F (подача) — в формате мм/об. || G95 G84 X0. Y0. Z-10. R3 F1.411
|{{видимый якорь|G95}} || F (подача) — в формате мм/об || G95 G84 X0. Y0. Z-10. R3 F1.411
|-
|-
|G99 || После каждого цикла не отходить на «проходную точку» || G99 G91 X10. K4.
|{{видимый якорь|G99}} || После каждого цикла не отходить на <проходную точку> || G99 G91 X10. K4.
|}
|}

максимум 4 команды в кадре


== Таблица технологических кодов ==
== Таблица технологических кодов ==
Технологические команды языка начинаются с буквы М (аббревиатура от слова ''Miscellaneous'' — дополнительный). Включают такие действия, как:

Технологические команды языка начинаются с буквы М. Включают такие действия, как:
* Сменить инструмент
* Сменить инструмент
* Включить/выключить шпиндель
* Включить/выключить шпиндель
Строка 186: Строка 200:
!Пример
!Пример
|-
|-
|M00 || Приостановить работу станка до нажатия кнопки «старт» на пульте управления, так называемая «безусловная технологическая остановка»|| G0 X0 Y0 Z100 M0
|M00 || Приостановить работу станка до нажатия кнопки <старт> на пульте управления, так называемая <безусловная технологическая остановка>|| G0 X0 Y0 Z100 M0
|-
|-
|M01 || Приостановить работу станка до нажатия кнопки «старт», если включён режим подтверждения остановки|| G0 X0 Y0 Z100 M1
|M01 || Приостановить работу станка до нажатия кнопки <старт>, если включён режим подтверждения остановки. Если этот режим отключён, то команда игнорируется. Используется для начальной проверки (отладки) кода. || G0 X0 Y0 Z100 M1
|-
|-
|M02 || Конец программы, без сброса модальных функций || M02
|M02 || Конец программы, без сброса модальных функций. Указатель номера кадра не изменяется. || M02
|-
|-
|M03 || Начать вращение шпинделя по часовой стрелке || M3 S2000
|M03 || Начать вращение шпинделя по часовой стрелке || M3 S2000
Строка 206: Строка 220:
|M09 || Выключить охлаждение || G0 X0 Y0 Z100 M5 M9
|M09 || Выключить охлаждение || G0 X0 Y0 Z100 M5 M9
|-
|-
|M13 || Включить охлаждение и вращение шпинделя по часовой стрелке || S2000 M13
|M13 || Включить одновременно охлаждение и вращение шпинделя по часовой стрелке || S2000 M13
|-
|-
|M14 || Включить охлаждение и вращение шпинделя против часовой стрелки || S2000 M14
|M14 || Включить одновременно охлаждение и вращение шпинделя против часовой стрелки || S2000 M14
|-
|-
|M17 || Конец подпрограммы || M17
|M17 || Возврат из подпрограммы или из макроса (действие аналогично М99) || M17
|-
|M48
|Разрешить переопределять скорость подачи
|
|-
|M49
|Запретить переопределение скорости подачи
|
|-
|-
|M25 || Замена инструмента вручную || M25
|M25 || Замена инструмента вручную || M25
|-
|-
|M97 || Запуск подпрограммы, находящейся в той же программе (где P — номер кадра, в случае примера переход осуществится к строке N25), '''действует не везде''', предположительно — только на станках HAAS || M97 P25
|M97 || Запуск подпрограммы, находящейся в той же программе (где P — номер кадра, в примере переход осуществится к строке с меткой N25), '''реализована не во всех интерпретаторах''', предположительно — только на станках HAAS || M97 P25
|-
|-
|M98 || Запуск подпрограммы, находящейся отдельно от основной программы (где P — номер подпрограммы, в случае примера переход осуществится к программе O1015) || M98 P1015
|M98 || Запуск подпрограммы, находящейся отдельно от основной программы (где P — номер подпрограммы, в примере переход осуществится к программе O1015) || M98 P1015
|-
|-
|M99 || Конец подпрограммы || M99
|M99 || Конец подпрограммы и переход в вызвавшую программу || M99
|-
|-
|M30 || Конец программы, со сбросом модальных функций || M30
|M30 || Конец программы, со сбросом модальных функций и изменением указателя номера кадра на начало программы. || M30
|}
|}


== Параметры команд ==
== Параметры команд ==

Параметры команд задаются буквами латинского алфавита
Параметры команд задаются буквами латинского алфавита


Строка 232: Строка 253:
!Пример
!Пример
|-
|-
|X|| Перемещение инструмента в заданную точку с заданной координатой по оси X при работе в абсолютной системе координат (см. G90) или задание смещений относительно точки, достигнутой в предыдущем кадре при работе в инкрементной системе координат (см. G91)||G0 X100 Y0 Z0
|X|| Координата точки траектории по оси X||G0 X100 Y0 Z0
|-
|-
|Y|| Координата точки траектории по оси Y||G0 X0 Y100 Z0
|Y|| Аналогично Х по оси Y||G0 X0 Y100 Z0
|-
|-
|Z|| Координата точки траектории по оси Z||G0 X0 Y0 Z100
|Z|| Аналогично Х по оси Z||G0 X0 Y0 Z100
|-
|-
|P|| При использовании в команде вызова подпрограммы (М98) — указание номера вызываемой подпрограммы с именем, заданным после буквы О, например Р301 вызовет подпрограмму с меткой О301. При использовании в команде задержки (G04) указывает время задержки в миллисекундах. ||G04 P500;
|P|| Параметр команды ||G04 P101
М98 Р301

|-
|Метка подпрограммы с указанным номером
|О301
|-
|-
|F|| Линейная скорость перемещения инструмента.
|F|| Скорость рабочей подачи.
Для фрезерных станков это дюймы в минуту (IPM) или миллиметры в минуту (mm/min),
Для фрезерных станков это дюймы в минуту (IPM) или миллиметры в минуту (мм/мин),


Для токарных станков это дюймы за оборот (IPR) или миллиметры за оборот (mm/rev).
Для токарных станков это дюймы за оборот (IPR) или миллиметры за оборот (mm/об). Выбор единиц измерения, дюймы или миллиметры выполняется командами G20 и G21.
||G1 G91 X10 F100
||G1 G91 X10 F100
|-
|-
|S|| Частота вращения шпинделя||S3000 M3
|S|| Частота вращения шпинделя в оборотах в минуту.||S3000 M3
|-
|-
|R|| Параметр стандартного цикла или радиус дуги (расширение стандарта)||G81 R1 0 R2 −10 F50 или G2 G91 X12.5 R12.5
|Указание номера инструмента в команде смены инструмента. Обычно указывается перед командой М6.
|Т1 М6
|-
|-
|R|| Расстояние отвода инструмента в повторяющихся циклах обработки, например, прерывистого сверления глубоких отверстий (G81-G89) или радиус дуги при круговых интерполяциях перемещения инструмента (G02, G03).||G81 Z-20 R2 или
|D|| Параметр коррекции выбранного инструмента || G1 G41 D1 X10. F150.
G2 G91 X12.5 R12.5
|-
|-
|D|| Параметр коррекции радиуса выбранного инструмента || G1 G41 D1 X10. F150.
|L|| Число вызовов подпрограммы||M98 L82 P10 или G65 L82 P10 X_Y_R_
|-
|-
|L|| Число вызовов подпрограммы, число вызовов макроса, или количество циклов в повторяющихся операциях X_Y_R_ — параметры, передаваемые в макрос ||M98 L82 P10 или G65 L82 P10 X_Y_R_
|I|| Параметр дуги при круговой интерполяции. Инкрементальное расстояние от начальной точки до центра дуги по оси X. || G03 X10 Y10 I0 J0 F10
|-
|-
|I|| Указание смещения по оси X координаты центра дуги при круговой интерполяции перемещения инструмента (см G02, G03). Координаты центра дуги по осям указываются в виде смещения относительно начальной точки (достигнутой в предыдущем кадре). Плоскость интерполяции (плоскость, которая параллельна заданной координатной плоскости указывается командами G17, G18, G19. || G03 X10 Y10 I10 J0 F10
|J|| Параметр дуги при круговой интерполяции. Инкрементальное расстояние от начальной точки до центра дуги по оси Y. || G03 X10 Y10 I0 J0 F10
|-
|-
|J|| Аналогично параметру I для оси Y. || G03 X10 Y10 I0 J10 F10
|K|| Параметр дуги при круговой интерполяции. Инкрементальное расстояние дуги по оси Z. || G03 X10 Y10 I0 K0 F10
|-
|K|| Аналогично параметру I для оси Z. || G03 X10 Y10 I0 K0 F10
|-
|-
|}
|}


== Пример ==
== Пример ==
[[Файл:Letter W, example for G-code.svg|thumb|300px|Гравировка буквы W. Красной ломаной линией показано движение инструмента от левой верхней точки.]]
Обработка буквы W (вписанной в прямоугольник 34х27 мм, см. рис.) на условном вертикально-фрезерном станке с ЧПУ, фрезой диаметром 4 мм, в заготовке из органического стекла<ref>[http://www.solsylva.com/cnc/subroutine_gcode.shtml Subroutine G-Code]</ref>:
Пример гравировка буквы W на глубину 2 мм, вписанной в прямоугольник 40×30 мм, (см. рисунок) на условном вертикально-фрезерном станке с ЧПУ в листовой заготовке. Торцевая фреза диаметром 2 мм<ref>{{Cite web |url=http://www.solsylva.com/cnc/subroutine_gcode.shtml |title=Subroutine G-Code |accessdate=2016-01-02 |archiveurl=https://web.archive.org/web/20160117115528/http://solsylva.com/cnc/subroutine_gcode.shtml |archivedate=2016-01-17 |deadlink=yes }}</ref>:

{{-}}
Красным цветом выделен результат обработки.
'''%''' (метка начала программы, необязательна)
[[Файл:Letter W, example for G-code.png|left|border]]
(ось Z настроена так, что при Z=0 инструмент касается поверхности заготовки)

'''O200''' (метка программы, необязательна)
{| class="wikitable"
'''G21 G40 G49 G53 G80 G90 G17''' (Строка безопасности.)
|+
(Состояние станка или интерпретатора определяется предысторией, либо устанавливаются в некоторое исходное состояние при включении питания, и эти настройки могут вызвать нежелательные и непредвиденные действия, поэтому необходимо привести станок в <исходное состояние> с помощью «строки безопасности».)
!Кадр
(G21 — выбор метрической системы единиц - миллиметры,)
!Содержание
(G40 — отменяет автоматическую коррекцию на радиус инструмента.)
!Комментарий
(G49 — отменяет автоматическую коррекцию на длину инструмента.)
|-
(G53 — отменяет возможно введённые ранее дополнительные системы координат, смещённые относительно исходной и переводит станок в основную систему координат.)
| || % || Начало программы
(G80 — отменяет все постоянные циклы, например, циклы сверления и их параметры.)
|-
(G90 — переводит в абсолютную систему координат.)
|N1 || G90 G40 G17 || Система координат абсолютная, компенсация на радиус инструмента выключена, плоскость интерполяции XoY
(G17 — выбирается плоскость круговой интерполяции X-Y.)
|-
'''G0 F300''' (задание скорости холостого перемещения инструмента в мм/мин)
|N2 || S500 M3|| Задать скорость вращения шпинделя 500 об/мин и включить вращение шпинделя
'''M3 S500''' (включение вращения шпинделя по часовой стрелке и задание его скорости вращения 500 об/мин)
|-
'''G4 P2000''' (выдержка 2 секунды для раскрутки шпинделя)
|N3 || G0 X2.54 Y26.15|| Переход в координаты по x и y начала обработки на холостом ходу
'''X0 Y30 Z5''' (подвод инструмента в точку с координатами X=0 Y=30 Z=5 со скоростью холостого перемещения)
|-
'''G1 Z-2 F40''' (врезание в заготовку на глубину 2 мм со скоростью 40 мм/мин)
|N4 || Z1.0 || Подвод инструмента к заготовке по Z, не доходя до поверхности 1 мм, на холостом ходу
'''G1 F20 X10 Y0''' (фрезерование 1-го отрезка буквы W со скоростью 20 мм/мин)
|-
'''X20 Y30''' (фрезерование 2-го отрезка буквы W со скоростью 20 мм/мин)
|N5|| G1 Z-1.0 F100|| Врезание в заготовку на глубину 1 мм на подаче 100 мм/мин
'''X30 Y0''' (фрезерование 3-го отрезка буквы W со скоростью 20 мм/мин)
|-
'''X40 Y30''' (фрезерование 4-го отрезка буквы W со скоростью 20 мм/мин)
|N6|| X5.19 Y 2.0|| Первый штрих буквы W
'''G0 Z5''' (отвод инструмента на высоту 5 мм над поверхностью заготовки со скоростью 300 мм/мин)
|-
'''M5''' (выключение вращения шпинделя)
|N7|| X7.76 || Продолжение движения
'''M30''' (конец программы и конец интерпретируемого кода)
|-
|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 || Конец программы
|}


== См. также ==
== См. также ==
* [[Металлорежущий станок]]
* [[Металлорежущий станок]]
* [[Параметрическое программирование (ЧПУ)|Параметрическое программирование]]
* [[Параметрическое программирование (ЧПУ)|Параметрическое программирование]]
* [[3D-принтер]]


== Примечания ==
== Примечания ==
Строка 315: Строка 332:


== Ссылки ==
== Ссылки ==
* [http://www.intuwiz.ru/services.html Создание и подготовка управляющих программ (G-кода) в режиме on-line.]
* [http://www.intuwiz.ru/services.html Создание и подготовка управляющих программ (G-кода) в режиме on-line.]
* [http://cnc-club.ru/forum/viewtopic.php?f=15&t=34 CAM расширение Inkscape для экспорта в G-code]
* [http://cnc-club.ru/forum/viewtopic.php?f=15&t=34 CAM расширение Inkscape для экспорта в G-code]
* [http://www.ncmanager.com Симуляция работы программ на G-коде в реальном времени]
* [http://www.ncmanager.com Симуляция работы программ на G-коде в реальном времени]
* [http://www.cncezpro.com/gcodes.cfm Real-Time 3D Graphics Simulation for G-code] {{ref-en}}
* [https://web.archive.org/web/20071012021026/http://www.cncezpro.com/gcodes.cfm Real-Time 3D Graphics Simulation for G-code]{{ref-en}}
* [http://www.isd.mel.nist.gov/personnel/kramer/pubs/RS274NGC_3.web/RS274NGC_3TOC.html Overview of canonical machining functions] {{ref-en}}
* [https://web.archive.org/web/20090403101720/http://www.isd.mel.nist.gov/personnel/kramer/pubs/RS274NGC_3.web/RS274NGC_3TOC.html Overview of canonical machining functions]{{ref-en}}
* [http://www.ange-softs.com/simulcnc.php SIMUL CNC] {{ref-en}}
* [http://www.ange-softs.com/simulcnc.php SIMUL CNC]{{ref-en}}
* [http://nc-corrector.inf.ua/Pages/Links.htm Подборка ссылок на сайты редакторов визуализаторов G-кода]
* [http://nc-corrector.inf.ua/Pages/Links.htm Подборка ссылок на сайты редакторов визуализаторов G-кода]



Текущая версия от 17:21, 23 октября 2023

G-код — условное именование языка программирования устройств с числовым программным управлением (ЧПУ). Был создан компанией Electronic Industries Alliance в начале 1960-х. Окончательная доработка была одобрена в феврале 1980 года как стандарт RS274D. Комитет ISO утвердил G-код как стандарт ISO 6983-1:2009, Госкомитет по стандартам СССР — как ГОСТ 20999-83[1]. В советской технической литературе G-код обозначается как код ИСО 7-бит (ISO 7-bit), это вызвано тем, что G-код кодировали на 8-дорожечную перфоленту в коде ISO 7-bit (разработан для представления информации УЧПУ в виде машинного кода так же, как и коды AEG и PC8C), восьмая дорожка использовалась для контроля чётности.

Производители систем УЧПУ (CNC), как правило, используют ПО управления станком, для которого написана (оператором) программа обработки в качестве осмысленных команд управления, используется G-код в качестве базового подмножества языка программирования, расширяя его по своему усмотрению[2].

G-Code — это также стандартный язык, используемый многими моделями 3D-принтеров для управления процессом печати. Файлы GCODE могут быть открыты с помощью различных программ 3D-печати, например, Simplify3D, GCode Viewer, а также с помощью текстового редактора, поскольку их содержимое представляет собой обычный текст.

Структура программы

[править | править код]

Основные требования к структуре

[править | править код]

Программа, написанная с использованием G-кода, имеет жёсткую структуру. Все команды управления объединяются в кадры — группы, состоящие из одной или более команд. Кадр завершается символом перевода строки (CR/LF) и может необязательно иметь явно указанный номер, начинающийся с буквы N, за исключением первого кадра программы и комментариев. Этот номер является по сути меткой кадра и необязательно должен нарастать в программе или представлять собой последовательные целые числа, важно, чтобы номер не повторялся в пределах программы, например, допустимо:

...
N200 G0
n100 x0
x5y4
...

В большинстве современных интерпретаторов кода допустимо использовать в коде программы строчные и прописные буквы, как в примере.

Пробелы в строке кадра игнорируются, поэтому допустимо слитное написание команд кадра.

Первый (а в некоторых случаях ещё и последний) кадр содержит только один необязательный знак <%>. Завершается программа командами M02 или M30.

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

Элементарные команды в каждом кадре выполняются одновременно, поэтому порядок команд в кадре строго не оговаривается, но традиционно предполагается, что первыми указываются подготовительные команды (например, выбор плоскости круговой интерполяции, скоростей перемещений по осям и др.), затем задание координат перемещения, затем выбора режимов обработки и технологические команды.

Максимальное число элементарных команд и заданий координат в одном кадре зависит от конкретного интерпретатора языка управления станками, но для большинства популярных интерпретаторов (стоек управления) не превышает 6.

Координаты задаются указанием оси с последующим числовым значением координаты. Целая и дробная части числа координаты разделяются десятичной точкой. Допустимо опускание незначащих нулей, либо их добавление. Также в подавляющем количестве интерпретаторов допустимо не добавлять десятичную точку к целым числам. Например: Y0.5 и Y.5, Y77, Y77. и Y077.0.

Существуют так называемые модальные и немодальные команды. Модальные команды изменяют некоторый параметр/настройку и эта настройка действует на все далее исполняемые кадры программы до их смены очередной модальной командой либо её отмены. К модальным командам, например, относятся скорости перемещения инструмента, управления скоростью шпинделя, подачи смазочно-охлаждающей жидкости (СОЖ) и др. Немодальные команды действуют только внутри их содержащего кадра. К немодальным командам относятся, например, команды разгона и торможения шпинделя.

Интерпретатор кода (стойка управления) станком запоминает значение введённых параметров и настроек до их смены очередной модальной командой или отмены ранее введённой модальной команды, поэтому необязательно указание в каждом кадре, например, скорости перемещения инструмента.

Описание и вызов подпрограмм

[править | править код]

Язык допускает многократное исполнение однократно записанной последовательности команд и перемещений инструмента, вызываемую из разных частей программы, например, вырезания в листовой заготовке многих отверстий с одинаковым сложным контуром, расположенных в разных местах будущей детали. При этом в теле подпрограммы описывается траектория движения инструмента для вырезания одного отверстия, а в программе производится многократный вызов подпрограммы из разных мест. В теле подпрограммы перемещения инструмента задаются в относительных координатах — координатах, описывающих траекторию инструмента при обработке отверстия, переход к относительной системе координат (иногда такую систему координат называют <инкрементной>) производится командой G91 в начале тела подпрограммы, а возврат к абсолютной системе координат командой G90 — в конце тела подпрограммы. В инкрементной системе команды перемещения инструмента интерпретируются как приращения, например:

g90 x5 (назначение абсолютной системы координат, после исполнения этого кадра машинная координата по оси X станет равной 5)
g91 x10 (назначение инкрементной системы координат, после исполнения этого кадра машинная координата по оси X станет равной 15)
x-15 (после исполнения этого кадра машинная координата по оси X станет равной 0, так как продолжает действовать инкрементная система координат, заданная модальной командой g91)

Тело подпрограммы обязательно должно быть описано до команды конца программы — М30, но допустимо расположение подпрограммы после команды М02 — конца программы и иметь имя, начинающееся с буквы О с цифрами номера подпрограммы, например, О112. В конце тела подпрограммы помещается команда возврата в основную программу — М99.

В программе вызов подпрограммы производится командой М98 с указанием обязательного параметра имени подпрограммы P. Недопустимо совпадение имён подпрограмм в пределах одной программы. Пример вызова подпрограммы O112: M98 P112. Допустимо при вызове подпрограммы указание числа вызовов подпрограммы добавлением необязательного параметра L, например, двукратный вызов подпрограммы 112: M98 P112 L2, что, например, может быть полезно при описании выполнения второго прохода чистовой обработки после первого прохода черновой обработки. При опущенном параметре L подпрограмма вызывается однократно.

Управляющее математическое обеспечение некоторых станков или некоторые интерпретаторы G-кода допускают вызов подпрограмм по номеру строки (кадра) в программе, для этого используется команда M97 с параметром P, указывающем на номер (метку) строки, например, M97 P321 L4 — четырёхкратный вызов подпрограммы начинающейся с меткой N321. Оформленная таким образом подпрограмма как обычно должна заканчиваться командой M99 — возвратом в вызвавшую программу.

Допустимо вложение подпрограмм, то есть из подпрограммы возможен вызов другой подпрограммы. Максимально допустимое число уровней вложения зависит от реализации конкретного интерпретатора G-кода.

Пример программы вырезания 2 прямоугольных отверстий 10 x 20 мм, увеличенных на диаметр торцевой фрезы, с координатами левых нижних углов отверстий x=57, y=62 и x=104, y=76 в листовой заготовке толщиной 5 мм с вызовом подпрограммы описывающей вырезание одного отверстия
...
(Фрагмент программы)
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 мм/мин)
X-10 (Вырезание 3-й стороны прямоугольника со скоростью 20 мм/мин. Так как включена инкрементальная система координат, то возврат инструмента в исходную точку до вызова подпрограммы указывается в виде приращения координаты, здесь -10.)
Y-20 (Вырезание 4-й стороны прямоугольника со скоростью 20 мм/мин)
G90 (Переход в абсолютную систему координат, восстановление текущих координат до перехода в относительную систему)
G00 Z5 (Подъём инструмента на высоту 5 мм над поверхностью заготовки со скоростью холостого перемещения) 
M99 (Возврат в вызывавшую программу или подпрограмму) 
...
М30 (Конец интерпретируемого кода программы. После исполнения этой команды указатель номера кадра устанавливается на 1-ю строку программы и исполнение программы останавливается)

Сводная таблица кодов

[править | править код]

Основные (называемые в стандарте подготовительными) команды языка начинаются с буквы G (аббревиатура от слова General):

  • Перемещение рабочих органов оборудования с заданной скоростью (линейное и круговое)
  • Выполнение типовых последовательностей (таких, как обработка отверстий и резьба)
  • Управление параметрами инструмента, системами координат, и рабочих плоскостей
Подготовительные (основные) команды
Коды Описание
G00-G03 Позиционирование инструмента
G17-G19 Переключение рабочих плоскостей (XY, ZX, YZ)
G20-G21 Не стандартизовано
G40-G44 Компенсация размера различных частей инструмента (длина, диаметр)
G53-G59 Переключение систем координат
G80-G85 Циклы сверления, растачивания, нарезания резьбы
G90-G91 Переключение систем координат (абсолютная, относительная)

Таблица основных команд

[править | править код]
Команда Описание Пример
G00[3] Ускоренное перемещение инструмента (холостой ход). При холостом перемещении НЕ ОБЯЗАТЕЛЬНО производится линейная интерполяция перемещения аналогично команде G01. В некоторых интерпретаторах при выполнении команды перемещения по нескольким осям одновременно, перемещение по осям отрабатывается с максимальной скоростью, поэтому линейное перемещение от исходной точки в конечную точку не обеспечивается, поэтому нельзя производить ходы обработки детали при действии этой модальной команды. G0 X0 Y0 Z100.
G01 Линейная интерполяция, модальная команда. Инструмент (рабочий орган) перемещается по отрезку прямой линии от исходной точки с координатами до исполнения команды в точку с заданными в команде координатами, скорость перемещения задаётся здесь же или ранее модальной командой F. При этом скорость перемещения связана со скоростями перемещения по осям как

 — приращения координат между кадрами;  — скорости по осям.

G01 X0. Y0. Z100. F200.
G02 Круговая интерполяция по часовой стрелке, модальная команда. Инструмент перемещается по дуге окружности по часовой стрелке от исходной точки с координатами до исполнения команды в точку с заданными в команде координатами, скорость перемещения задаётся в этой команде параметром F, радиус дуги задаётся параметром 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 — в секундах. В некоторых интерпретаторах P задает паузу в секундах и параметр X в этой команде не используется. Также в некоторых интерпретаторах возможно задание задержки параметром U. G04 P500 или G04 X.5
G10 Переключение абсолютной системы координат. В примере начало координат станет в точке 10, 10, 10 старых координат. G10 X10. Y10. Z10.
G15 Переход в полярную (цилиндрическую) систему координат. В этой системе параметр X задаёт радиус, а Y угол в градусах. Если включена абсолютная система координат (G90), то начало полярных координат будет в точке текущих координат 0; 0, если включена инкрементная система координат, то начало координат будет в точке, достигнутой при отработке предыдущего кадра. 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 Компенсировать длину инструмента в отрицательную сторону. Действие аналогично G43. G44 X15. Y15. Z4. H1 S1000 M3
G49 Отмена компенсации длины инструмента G49 Z100.
G50 Сброс всех масштабирующих коэффициентов в 1,0 G50
G51 Назначение масштабов. В примере — уменьшение масштаба по оси X в 10 раз. После этой модальной команды все указанные в командах перемещения и координаты по оси X будут умножаться на масштабирующий коэффициент 0,1 и результат интерпретироваться как требуемое перемещение. Если задать масштабирующий коэффициент по некоторой оси (или по любым осям) равным −1, то последующее движение будет зеркальным по этой оси (или осям, где масштабирующий коэффициент −1). G51 X.1
или 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. D.5 U.2 W.5
G80 Отмена циклов сверления, растачивания, нарезания резьбы метчиком и т. д. G80
G81 Цикл сверления G81 X0 Y0. Z-10. R3. F100.
G82 Цикл сверления с задержкой G82 X0. Y0. Z-10. R3. P100 F100.
G83 Цикл прерывистого сверления (с периодическим полным выводом сверла). Параметр Z указывает полную глубину сверления от поверхности (Z=0), R — высота вывода инструмента над поверхностью для вывода стружки и также конечное положение после завершения сверления, Q — величина заглубления одного из нескольких заглублений при сверлении, F — скорость подачи (необязательна, при отсутствии этого параметра скорость определяется ранее заданной скоростью в команде G1. G83 Z-20 R1 Q2 f20
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.

Таблица технологических кодов

[править | править код]

Технологические команды языка начинаются с буквы М (аббревиатура от слова Miscellaneous — дополнительный). Включают такие действия, как:

  • Сменить инструмент
  • Включить/выключить шпиндель
  • Включить/выключить охлаждение
  • Работа с подпрограммами
Вспомогательные (технологические) команды
Код Описание Пример
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 Возврат из подпрограммы или из макроса (действие аналогично М99) M17
M48 Разрешить переопределять скорость подачи
M49 Запретить переопределение скорости подачи
M25 Замена инструмента вручную M25
M97 Запуск подпрограммы, находящейся в той же программе (где P — номер кадра, в примере переход осуществится к строке с меткой N25), реализована не во всех интерпретаторах, предположительно — только на станках HAAS M97 P25
M98 Запуск подпрограммы, находящейся отдельно от основной программы (где P — номер подпрограммы, в примере переход осуществится к программе O1015) M98 P1015
M99 Конец подпрограммы и переход в вызвавшую программу M99
M30 Конец программы, со сбросом модальных функций и изменением указателя номера кадра на начало программы. M30

Параметры команд

[править | править код]

Параметры команд задаются буквами латинского алфавита

Код Описание Пример
X Перемещение инструмента в заданную точку с заданной координатой по оси X при работе в абсолютной системе координат (см. G90) или задание смещений относительно точки, достигнутой в предыдущем кадре при работе в инкрементной системе координат (см. G91) G0 X100 Y0 Z0
Y Аналогично Х по оси Y G0 X0 Y100 Z0
Z Аналогично Х по оси Z G0 X0 Y0 Z100
P При использовании в команде вызова подпрограммы (М98) — указание номера вызываемой подпрограммы с именем, заданным после буквы О, например Р301 вызовет подпрограмму с меткой О301. При использовании в команде задержки (G04) указывает время задержки в миллисекундах. G04 P500;

М98 Р301

О Метка подпрограммы с указанным номером О301
F Линейная скорость перемещения инструмента.

Для фрезерных станков это дюймы в минуту (IPM) или миллиметры в минуту (мм/мин),

Для токарных станков это дюймы за оборот (IPR) или миллиметры за оборот (mm/об). Выбор единиц измерения, дюймы или миллиметры выполняется командами G20 и G21.

G1 G91 X10 F100
S Частота вращения шпинделя в оборотах в минуту. S3000 M3
Т Указание номера инструмента в команде смены инструмента. Обычно указывается перед командой М6. Т1 М6
R Расстояние отвода инструмента в повторяющихся циклах обработки, например, прерывистого сверления глубоких отверстий (G81-G89) или радиус дуги при круговых интерполяциях перемещения инструмента (G02, G03). G81 Z-20 R2 или

G2 G91 X12.5 R12.5

D Параметр коррекции радиуса выбранного инструмента G1 G41 D1 X10. F150.
L Число вызовов подпрограммы, число вызовов макроса, или количество циклов в повторяющихся операциях X_Y_R_ — параметры, передаваемые в макрос M98 L82 P10 или G65 L82 P10 X_Y_R_
I Указание смещения по оси X координаты центра дуги при круговой интерполяции перемещения инструмента (см G02, G03). Координаты центра дуги по осям указываются в виде смещения относительно начальной точки (достигнутой в предыдущем кадре). Плоскость интерполяции (плоскость, которая параллельна заданной координатной плоскости указывается командами G17, G18, G19. G03 X10 Y10 I10 J0 F10
J Аналогично параметру I для оси Y. G03 X10 Y10 I0 J10 F10
K Аналогично параметру I для оси Z. G03 X10 Y10 I0 K0 F10
Гравировка буквы W. Красной ломаной линией показано движение инструмента от левой верхней точки.

Пример гравировка буквы W на глубину 2 мм, вписанной в прямоугольник 40×30 мм, (см. рисунок) на условном вертикально-фрезерном станке с ЧПУ в листовой заготовке. Торцевая фреза диаметром 2 мм[4]:

% (метка начала программы, необязательна)
(ось Z настроена так, что при Z=0 инструмент касается поверхности заготовки)
O200 (метка программы, необязательна)
G21 G40 G49 G53 G80 G90 G17 (Строка безопасности.)
(Состояние станка или интерпретатора определяется предысторией, либо устанавливаются в  некоторое исходное состояние при включении питания, и эти настройки могут вызвать нежелательные и непредвиденные действия, поэтому необходимо привести станок в <исходное состояние> с помощью «строки безопасности».)
(G21 — выбор метрической системы единиц - миллиметры,)
(G40 — отменяет автоматическую коррекцию на радиус инструмента.)
(G49 — отменяет автоматическую коррекцию на длину инструмента.)
(G53 — отменяет возможно введённые ранее дополнительные системы координат, смещённые относительно исходной и переводит станок в основную систему координат.)
(G80 — отменяет все постоянные циклы, например, циклы сверления и их параметры.)
(G90 — переводит в абсолютную систему координат.)
(G17 — выбирается плоскость круговой интерполяции X-Y.)
G0 F300 (задание скорости холостого перемещения инструмента в мм/мин)
M3 S500 (включение вращения шпинделя по часовой стрелке и задание его скорости вращения 500 об/мин)
G4 P2000 (выдержка 2 секунды для раскрутки шпинделя)
X0 Y30 Z5 (подвод инструмента в точку с координатами X=0 Y=30 Z=5 со скоростью холостого перемещения)
G1 Z-2 F40 (врезание в заготовку на глубину 2 мм со скоростью 40 мм/мин)
G1 F20 X10 Y0 (фрезерование 1-го отрезка буквы W со скоростью 20 мм/мин)
X20 Y30 (фрезерование 2-го отрезка буквы W со скоростью 20 мм/мин)
X30 Y0 (фрезерование 3-го отрезка буквы W со скоростью 20 мм/мин)
X40 Y30 (фрезерование 4-го отрезка буквы W со скоростью 20 мм/мин)
G0 Z5 (отвод инструмента на высоту 5 мм над поверхностью заготовки со скоростью 300 мм/мин)
M5 (выключение вращения шпинделя)
M30 (конец программы и конец интерпретируемого кода)

Примечания

[править | править код]
  1. ГОСТ 20999-83. Устройства числового программного управления для металлообрабатывающего оборудования. Кодирование информации управляющих программ. Дата обращения: 21 августа 2021. Архивировано 21 августа 2021 года.
  2. CNC G Codes Definitions Examples Programs Programming Learning Training. Дата обращения: 9 февраля 2008. Архивировано из оригинала 12 октября 2007 года.
  3. Многие интерпретаторы кода допускают опускание первого нуля в командах G00—G09, например, G1 вместо G01
  4. Subroutine G-Code. Дата обращения: 2 января 2016. Архивировано из оригинала 17 января 2016 года.