G-code: различия между версиями
[непроверенная версия] | [непроверенная версия] |
орфография, пунктуация |
м откат правок 93.125.107.84 (обс.) к версии Alex NB IT Метка: откат |
||
(не показана 21 промежуточная версия 7 участников) | |||
Строка 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-код в качестве базового подмножества языка программирования, расширяя его по своему [[усмотрению]] |
Производители систем УЧПУ (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 |
G-Code — это также стандартный язык, используемый многими моделями [[3D-принтер]]ов для управления процессом печати. Файлы GCODE могут быть открыты с помощью различных программ 3D-печати, например, Simplify3D, GCode Viewer, а также с помощью текстового редактора, поскольку их содержимое представляет собой обычный текст. |
||
== Структура программы == |
== Структура программы == |
||
=== Основные требования к структуре === |
=== Основные требования к структуре === |
||
Программа, написанная с использованием G-кода, имеет жёсткую структуру. Все команды управления объединяются в '''кадры''' — группы, состоящие из одной или более команд. Кадр завершается символом перевода строки (CR/LF) и может иметь явно указанный номер, начинающийся с буквы N, за исключением первого кадра программы и комментариев. |
Программа, написанная с использованием G-кода, имеет жёсткую структуру. Все команды управления объединяются в '''кадры''' — группы, состоящие из одной или более команд. Кадр завершается символом перевода строки (CR/LF) и может необязательно иметь явно указанный номер, начинающийся с буквы N, за исключением первого кадра программы и комментариев. Этот номер является по сути меткой кадра и необязательно должен нарастать в программе или представлять собой последовательные целые числа, важно, чтобы номер не повторялся в пределах программы, например, допустимо: |
||
... |
|||
N200 G0 |
|||
n100 x0 |
|||
x5y4 |
|||
... |
|||
В большинстве современных интерпретаторов кода допустимо использовать в коде программы строчные и прописные буквы, как в примере. |
|||
Пробелы в строке кадра игнорируются, поэтому допустимо слитное написание команд кадра. |
|||
Комментарии к программе размещаются в круглых скобках. Комментарий может располагаться как в отдельной строке, так и после программных кодов. Недопустимо оформлять в качестве комментария несколько строк, охваченных парой круглых скобок. |
|||
Первый (а в некоторых случаях ещё и последний) кадр содержит только один необязательный знак <%>. Завершается программа командами M02 или M30. |
|||
Команды в каждом кадре выполняются одновременно, поэтому порядок команд в кадре строго не оговаривается, но традиционно предполагается, что первыми указываются подготовительные команды (например, выбор рабочей плоскости, скоростей перемещений по осям и др.), затем задание координат |
|||
перемещения, затем выбора режимов обработки и технологические команды. |
|||
Комментарии к программе размещаются в круглых скобках. Комментарий может располагаться как в отдельной строке, так и в любом месте кадра среди команд. Недопустимо оформлять в качестве комментария несколько строк, охваченных парой круглых скобок. |
|||
Элементарные команды в каждом кадре выполняются одновременно, поэтому порядок команд в кадре строго не оговаривается, но традиционно предполагается, что первыми указываются подготовительные команды (например, выбор плоскости круговой интерполяции, скоростей перемещений по осям и др.), затем задание координат перемещения, затем выбора режимов обработки и технологические команды. |
|||
Максимальное число элементарных команд и заданий координат в одном кадре зависит от конкретного интерпретатора языка управления станками, но для большинства популярных интерпретаторов (стоек управления) не превышает 6. |
Максимальное число элементарных команд и заданий координат в одном кадре зависит от конкретного интерпретатора языка управления станками, но для большинства популярных интерпретаторов (стоек управления) не превышает 6. |
||
Строка 20: | Строка 28: | ||
Координаты задаются указанием оси с последующим числовым значением координаты. Целая и дробная части числа координаты разделяются десятичной точкой. Допустимо опускание незначащих нулей, либо их добавление. Также в подавляющем количестве интерпретаторов допустимо не добавлять десятичную точку к целым числам. Например: Y0.5 и Y.5, Y77, Y77. и Y077.0. |
Координаты задаются указанием оси с последующим числовым значением координаты. Целая и дробная части числа координаты разделяются десятичной точкой. Допустимо опускание незначащих нулей, либо их добавление. Также в подавляющем количестве интерпретаторов допустимо не добавлять десятичную точку к целым числам. Например: 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. |
Тело подпрограммы обязательно должно быть описано до команды конца программы — М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''' — четырёхкратный вызов подпрограммы начинающейся |
Управляющее математическое обеспечение некоторых станков или некоторые интерпретаторы G-кода допускают вызов подпрограмм по номеру строки (кадра) в программе, для этого используется команда M97 с параметром P, указывающем на номер (метку) строки, например, '''M97 P321 L4''' — четырёхкратный вызов подпрограммы начинающейся с меткой N321. Оформленная таким образом подпрограмма как обычно должна заканчиваться командой M99 — возвратом в вызвавшую программу. |
||
Допустимо вложение подпрограмм, то есть из подпрограммы возможен вызов другой подпрограммы. Максимально допустимое число уровней вложения зависит от реализации конкретного интерпретатора G-кода. |
Допустимо вложение подпрограмм, то есть из подпрограммы возможен вызов другой подпрограммы. Максимально допустимое число уровней вложения зависит от реализации конкретного интерпретатора G-кода. |
||
;Пример программы вырезания 2 прямоугольных отверстий |
;Пример программы вырезания 2 прямоугольных отверстий 10 x 20 мм, увеличенных на диаметр торцевой фрезы, с координатами левых нижних углов отверстий x=57, y=62 и x=104, y=76 в листовой заготовке толщиной 5 мм с вызовом подпрограммы описывающей вырезание одного отверстия: |
||
... |
... |
||
''(Фрагмент программы)'' |
''(Фрагмент программы)'' |
||
Строка 52: | Строка 62: | ||
G01 F20 X10 ''(Вырезание 1-й стороны прямоугольника со скоростью 20 мм/мин)'' |
G01 F20 X10 ''(Вырезание 1-й стороны прямоугольника со скоростью 20 мм/мин)'' |
||
Y20 ''(Вырезание 2-й стороны прямоугольника со скоростью 20 мм/мин)'' |
Y20 ''(Вырезание 2-й стороны прямоугольника со скоростью 20 мм/мин)'' |
||
X-10 ''(Вырезание 3-й стороны прямоугольника со скоростью 20 мм/мин. Так как включена инкрементальная система координат, то возврат инструмента в исходную точку до вызова подпрограммы указывается в виде приращения координаты, здесь -10.)'' |
|||
Y-20 ''(Вырезание 4-й стороны прямоугольника со скоростью 20 мм/мин)'' |
|||
G90 ''(Переход в абсолютную систему координат, восстановление текущих координат до перехода в относительную систему)'' |
G90 ''(Переход в абсолютную систему координат, восстановление текущих координат до перехода в относительную систему)'' |
||
G00 Z5 ''(Подъём инструмента на высоту 5 мм над поверхностью заготовки со скоростью холостого перемещения)'' |
G00 Z5 ''(Подъём инструмента на высоту 5 мм над поверхностью заготовки со скоростью холостого перемещения)'' |
||
Строка 61: | Строка 71: | ||
== Сводная таблица кодов == |
== Сводная таблица кодов == |
||
Основные (называемые в стандарте подготовительными) команды языка начинаются с буквы '''G''' (аббревиатура от слова '''General'''): |
|||
Основные (называемые в стандарте подготовительными) команды языка начинаются с буквы '''G''': |
|||
* Перемещение рабочих органов оборудования с заданной скоростью (линейное и круговое) |
* Перемещение рабочих органов оборудования с заданной скоростью (линейное и круговое) |
||
Строка 94: | Строка 103: | ||
!Пример |
!Пример |
||
|- |
|- |
||
|G00 || Ускоренное перемещение инструмента (холостой ход). При холостом перемещении '''НЕ ОБЯЗАТЕЛЬНО''' производится линейная интерполяция перемещения аналогично команде G01. |
|{{видимый якорь|G00}}<ref>Многие интерпретаторы кода допускают опускание первого нуля в командах G00—G09, например, G1 вместо G01</ref>|| Ускоренное перемещение инструмента (холостой ход). При холостом перемещении '''НЕ ОБЯЗАТЕЛЬНО''' производится линейная интерполяция перемещения аналогично команде [[#G01|G01]]. В некоторых интерпретаторах при выполнении команды перемещения по нескольким осям одновременно, перемещение по осям отрабатывается с максимальной скоростью, поэтому линейное перемещение от исходной точки в конечную точку не обеспечивается, поэтому нельзя производить ходы обработки детали при действии этой модальной команды. || G0 X0 Y0 Z100. |
||
|- |
|- |
||
| |
|{{видимый якорь|G01}}||Линейная интерполяция, модальная команда. Инструмент (рабочий орган) перемещается по отрезку прямой линии от исходной точки с координатами до исполнения команды в точку с заданными в команде координатами, скорость перемещения задаётся здесь же или ранее модальной командой F. При этом скорость перемещения связана со скоростями перемещения по осям как |
||
<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 || Круговая интерполяция по часовой стрелке, модальная команда. Инструмент перемещается по дуге окружности по часовой стрелке от исходной точки с координатами до исполнения команды в точку с заданными в команде координатами, радиус дуги задаётся параметром 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.<br>или |
|{{видимый якорь|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. |
||
|- |
|- |
||
|G03 || Круговая интерполяция против часовой стрелки. Параметры и действие аналогичны команде G02. || G03 X15. Y15. R5. F200. |
|{{видимый якорь|G03}} || Круговая интерполяция против часовой стрелки. Параметры и действие аналогичны команде G02. || G03 X15. Y15. R5. F200. |
||
|- |
|- |
||
|G04 || Задержка выполнения программы, способ задания величины задержки зависит от реализации системы управления, P обычно задает паузу в миллисекундах, X — в секундах.|| G04 P500 или G04 X.5 |
|{{видимый якорь|G04}} || Задержка выполнения программы, способ задания величины задержки зависит от реализации системы управления, P обычно задает паузу в миллисекундах, X — в секундах. В некоторых интерпретаторах P задает паузу в секундах и параметр X в этой команде не используется. Также в некоторых интерпретаторах возможно задание задержки параметром U.|| G04 P500 или G04 X.5 |
||
|- |
|- |
||
|G10 || Переключение абсолютной системы координат. В примере начало координат станет в точке 10, 10, 10 старых координат. || G10 X10. Y10. Z10. |
|{{видимый якорь|G10}} || Переключение абсолютной системы координат. В примере начало координат станет в точке 10, 10, 10 старых координат. || G10 X10. Y10. Z10. |
||
|- |
|- |
||
|{{видимый якорь|G15}} || Переход в полярную (цилиндрическую) систему координат. В этой системе параметр X задаёт радиус, а Y угол в градусах. Если включена абсолютная система координат ([[#G90|G90]]), то начало полярных координат будет в точке текущих координат 0; 0, если включена инкрементная система координат, то начало координат будет в точке, достигнутой при отработке предыдущего кадра. || G15 X15. Y22.5 |
|||
|G15 || Отмена полярной системы координат || G15 X15. Y22.5 |
|||
|- |
|- |
||
|G16 || |
|{{видимый якорь|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}} || Компенсировать длину инструмента в положительную сторону. В основном применяется при смене инструмента. || G43 X15. Y15. Z100. H1 S1000 M3 |
||
|- |
|- |
||
|G44 || Компенсировать длину инструмента |
|{{видимый якорь|G44}} || Компенсировать длину инструмента в отрицательную сторону. Действие аналогично G43. || G44 X15. Y15. Z4. H1 S1000 M3 |
||
|- |
|- |
||
|G49 || Отмена компенсации длины инструмента || G49 Z100. |
|{{видимый якорь|G49}} || Отмена компенсации длины инструмента || G49 Z100. |
||
|- |
|- |
||
|G50 || Сброс всех масштабирующих коэффициентов в 1,0 |
|{{видимый якорь|G50}} || Сброс всех масштабирующих коэффициентов в 1,0|| G50 |
||
|- |
|- |
||
|{{видимый якорь|G51}} || Назначение масштабов. В примере — уменьшение масштаба по оси X в 10 раз. После этой модальной команды все указанные в командах перемещения и координаты по оси X будут умножаться на масштабирующий коэффициент 0,1 и результат интерпретироваться как требуемое перемещение. Если задать масштабирующий коэффициент по некоторой оси (или по любым осям) равным −1, то последующее движение будет зеркальным по этой оси (или осям, где масштабирующий коэффициент −1). || G51 X.1<br>или G51 X-1 |
|||
|G51 || Назначение масштабов. В примере — уменьшение масштаба по оси X в 10 раз. || G51 X.1 |
|||
|- |
|- |
||
|G53 || Переход в систему координат станка. || G53 G0 X0. Y0. Z0. |
|{{видимый якорь|G53}} || Переход в систему координат станка. || G53 G0 X0. Y0. Z0. |
||
|- |
|- |
||
| |
|{{видимый якорь|G54-G59}} || Переключиться на заданную оператором систему координат || G54 G0 X0. Y0. Z100. |
||
|- |
|- |
||
|{{видимый якорь|G61-G64}} |
|||
|G61—G64 |
|||
|Переключение режимов Точный Стоп/Постоянная скорость |
|Переключение режимов Точный Стоп/Постоянная скорость |
||
|- |
|- |
||
|G68 || Поворот координат на нужный угол || G68 X0 Y0 R45. |
|{{видимый якорь|G68}} || Поворот координат на нужный угол || G68 X0 Y0 R45. |
||
|- |
|- |
||
|G70 || Цикл продольного чистового точения || G70 P10 Q15. |
|{{видимый якорь|G70}} || Цикл продольного чистового точения || G70 P10 Q15. |
||
|- |
|- |
||
|G71 || Цикл многопроходного продольного чернового точения || G71 P10 Q15. |
|{{видимый якорь|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}} || F (подача) — в формате мм/мин || G94 G80 Z100. F75. |
||
|- |
|- |
||
|G95 || F (подача) — в формате мм/об |
|{{видимый якорь|G95}} || F (подача) — в формате мм/об || G95 G84 X0. Y0. Z-10. R3 F1.411 |
||
|- |
|- |
||
|G99 || После каждого цикла не отходить на |
|{{видимый якорь|G99}} || После каждого цикла не отходить на <проходную точку> || G99 G91 X10. K4. |
||
|} |
|} |
||
максимум 4 команды в кадре |
|||
== Таблица технологических кодов == |
== Таблица технологических кодов == |
||
Технологические команды языка начинаются с буквы М (аббревиатура от слова ''Miscellaneous'' — дополнительный). Включают такие действия, как: |
|||
Технологические команды языка начинаются с буквы М. Включают такие действия, как: |
|||
* Сменить инструмент |
* Сменить инструмент |
||
* Включить/выключить шпиндель |
* Включить/выключить шпиндель |
||
Строка 192: | Строка 200: | ||
!Пример |
!Пример |
||
|- |
|- |
||
|M00 || Приостановить работу станка до нажатия кнопки |
|M00 || Приостановить работу станка до нажатия кнопки <старт> на пульте управления, так называемая <безусловная технологическая остановка>|| G0 X0 Y0 Z100 M0 |
||
|- |
|- |
||
|M01 || Приостановить работу станка до нажатия кнопки |
|M01 || Приостановить работу станка до нажатия кнопки <старт>, если включён режим подтверждения остановки. Если этот режим отключён, то команда игнорируется. Используется для начальной проверки (отладки) кода. || G0 X0 Y0 Z100 M1 |
||
|- |
|- |
||
|M02 || Конец программы, без сброса модальных функций || M02 |
|M02 || Конец программы, без сброса модальных функций. Указатель номера кадра не изменяется. || M02 |
||
|- |
|- |
||
|M03 || Начать вращение шпинделя по часовой стрелке || M3 S2000 |
|M03 || Начать вращение шпинделя по часовой стрелке || M3 S2000 |
||
Строка 212: | Строка 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 || Возврат из подпрограммы или из макроса (действие аналогично М99) || M17 |
||
|- |
|- |
||
|M48 |
|M48 |
||
Строка 228: | Строка 236: | ||
|M25 || Замена инструмента вручную || M25 |
|M25 || Замена инструмента вручную || M25 |
||
|- |
|- |
||
|M97 || Запуск подпрограммы, находящейся в той же программе (где P |
|M97 || Запуск подпрограммы, находящейся в той же программе (где P — номер кадра, в примере переход осуществится к строке с меткой N25), '''реализована не во всех интерпретаторах''', предположительно — только на станках HAAS || M97 P25 |
||
|- |
|- |
||
|M98 || Запуск подпрограммы, находящейся отдельно от основной программы (где P |
|M98 || Запуск подпрограммы, находящейся отдельно от основной программы (где P — номер подпрограммы, в примере переход осуществится к программе O1015) || M98 P1015 |
||
|- |
|- |
||
|M99 || Конец подпрограммы || M99 |
|M99 || Конец подпрограммы и переход в вызвавшую программу || M99 |
||
|- |
|- |
||
|M30 || Конец программы, со сбросом модальных функций || M30 |
|M30 || Конец программы, со сбросом модальных функций и изменением указателя номера кадра на начало программы. || M30 |
||
|} |
|} |
||
== Параметры команд == |
== Параметры команд == |
||
Параметры команд задаются буквами латинского алфавита |
Параметры команд задаются буквами латинского алфавита |
||
Строка 246: | Строка 253: | ||
!Пример |
!Пример |
||
|- |
|- |
||
|X|| Перемещение инструмента в заданную точку с заданной координатой по оси X при работе в абсолютной системе координат (см. G90) или задание смещений относительно точки, достигнутой в предыдущем кадре при работе в инкрементной системе координат (см. G91)||G0 X100 Y0 Z0 |
|||
|X|| Координата точки траектории по оси X||G0 X100 Y0 Z0 |
|||
|- |
|- |
||
|Y|| |
|Y|| Аналогично Х по оси Y||G0 X0 Y100 Z0 |
||
|- |
|- |
||
|Z|| |
|Z|| Аналогично Х по оси Z||G0 X0 Y0 Z100 |
||
|- |
|- |
||
|P|| При использовании в команде вызова подпрограммы (М98) — указание номера вызываемой подпрограммы с именем, заданным после буквы О, например Р301 вызовет подпрограмму с меткой О301. При использовании в команде задержки (G04) указывает время задержки в миллисекундах. ||G04 P500; |
|||
|P|| Параметр команды ||G04 P101 |
|||
М98 Р301 |
|||
|- |
|||
|О |
|||
|Метка подпрограммы с указанным номером |
|||
|О301 |
|||
|- |
|- |
||
|F|| Линейная скорость перемещения инструмента. |
|||
|F|| Скорость рабочей подачи. |
|||
Для фрезерных станков это дюймы в минуту (IPM) или миллиметры в минуту ( |
Для фрезерных станков это дюймы в минуту (IPM) или миллиметры в минуту (мм/мин), |
||
Для токарных станков это дюймы за оборот (IPR) или миллиметры за оборот (mm/ |
Для токарных станков это дюймы за оборот (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>{{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>: |
|||
Пример гравировка буквы 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 || Конец программы |
|||
|} |
|||
== См. также == |
== См. также == |
||
Строка 330: | Строка 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-коде в реальном времени] |
||
* [https://web.archive.org/web/20071012021026/http://www.cncezpro.com/gcodes.cfm Real-Time 3D Graphics Simulation for G-code] |
* [https://web.archive.org/web/20071012021026/http://www.cncezpro.com/gcodes.cfm Real-Time 3D Graphics Simulation for G-code]{{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] |
* [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] |
* [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 на глубину 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 (конец программы и конец интерпретируемого кода)
См. также
[править | править код]Примечания
[править | править код]- ↑ ГОСТ 20999-83. Устройства числового программного управления для металлообрабатывающего оборудования. Кодирование информации управляющих программ . Дата обращения: 21 августа 2021. Архивировано 21 августа 2021 года.
- ↑ CNC G Codes Definitions Examples Programs Programming Learning Training . Дата обращения: 9 февраля 2008. Архивировано из оригинала 12 октября 2007 года.
- ↑ Многие интерпретаторы кода допускают опускание первого нуля в командах G00—G09, например, G1 вместо G01
- ↑ Subroutine G-Code . Дата обращения: 2 января 2016. Архивировано из оригинала 17 января 2016 года.
Ссылки
[править | править код]- Создание и подготовка управляющих программ (G-кода) в режиме on-line.
- CAM расширение Inkscape для экспорта в G-code
- Симуляция работы программ на G-коде в реальном времени
- Real-Time 3D Graphics Simulation for G-code (англ.)
- Overview of canonical machining functions (англ.)
- SIMUL CNC (англ.)
- Подборка ссылок на сайты редакторов визуализаторов G-кода