G-code
G-код — условное именование языка программирования устройств с числовым программным управлением (ЧПУ). Был создан компанией Electronic Industries Alliance в начале 1960-х. Окончательная доработка была одобрена в феврале 1980 года как стандарт RS274D. Комитет ISO утвердил G-код как стандарт ISO 6983-1:2009, Госкомитет по стандартам СССР — как ГОСТ 20999-83. В советской технической литературе G-код обозначается как код ИСО 7-бит (ISO 7-bit). G-код кодировали на 8-дорожечную перфоленту в коде ISO 7-bit (разработан для представления информации УЧПУ в виде машинного кода так же, как и коды AEG и PC8C), восьмая дорожка использовалась для контроля чётности.
Производители систем УЧПУ (CNC), как правило, используют ПО управления станком, для которого написана (оператором) программа обработки в качестве осмысленных команд управления, используется G-код в качестве базового подмножества языка программирования, расширяя его по своему усмотрению.[1]
Содержание
Структура программы
Программа, написанная с использованием G-кода, имеет жесткое строение. Все команды управления объединяются в кадры — группы, состоящие из одной или более команд. Кадр завершается символом перевода строки (CR/LF) и имеет номер, за исключением первого кадра программы и комментариев. Первый (а в некоторых случаях ещё и последний) кадр содержит только один знак «%». Завершается программа командой M02 или M30. Комментарии к программе размещаются в круглых скобках, как после программных кодов, так и в отдельном кадре.
Порядок команд в кадре строго не оговаривается, но традиционно предполагается, что первыми указываются подготовительные команды (например, выбор рабочей плоскости), затем команды перемещения, затем выбора режимов обработки и технологические команды.
Подпрограммы могут быть описаны после команды M02, но до M30. Начинается подпрограмма с кадра вида Lxx, где xx — номер подпрограммы, заканчивается командой M17.
Сводная таблица кодов
Основные (называемые в стандарте подготовительными) команды языка начинаются с буквы G:
- Перемещение рабочих органов оборудования с заданной скоростью (линейное и круговое)
- Выполнение типовых последовательностей (таких, как обработка отверстий и резьба)
- Управление параметрами инструмента, системами координат, и рабочих плоскостей
Коды | Описание |
---|---|
G00-G03 | Позиционирование инструмента |
G17-G19 | Переключение рабочих плоскостей (XY, ZX, YZ) |
G20-G21 | Не стандартизовано |
G40-G44 | Компенсация размера различных частей инструмента (длина, диаметр) |
G53-G59 | Переключение систем координат |
G80-G85 | Циклы сверления, растачивания, нарезания резьбы |
G90-G91 | Переключение систем координат (абсолютная, относительная) |
Таблица основных команд
Команда | Описание | Пример |
---|---|---|
G00 | Ускоренное перемещение инструмента (холостой ход) | G0 X0 Y0 Z100; |
G01 | Линейная интерполяция | G01 X0. Y0. Z100 F200; |
G02 | Круговая интерполяция по часовой стрелке | G02 X15. Y15. R5 F200; |
G03 | Круговая интерполяция против часовой стрелки | G03 X15. Y15. R5 F200; |
G04 | Задержка выполнения программы, способ задания величины задержки зависит от реализации системы управления | G04 P500; |
G10 | Задать новые координаты для начала координат | G10 X10 Y10 Z10; |
G15 | Отмена полярной системы координат | G15 X15. Y22.5; G15; |
G16 | Полярная система координат (X радиус Y угол) | G16 X15. Y22.5 |
G17 | Выбор рабочей плоскости X-Y | |
G18 | Выбор рабочей плоскости Z-X | |
G19 | Выбор рабочей плоскости Y-Z | |
G20 | Режим работы в дюймовой системе | G90 G20; |
G21 | Режим работы в метрической системе | G90 G21; |
G22 | Активировать установленный предел перемещений (Станок не выйдет за их предел) | G22 G01 X15 Y25; |
G28 | Вернуться на референтную точку | G28 G91 Z0 Y0; |
G30 | Поднятие по оси Z на точку смены инструмента | G30 G91 Z0; |
G40 | Отмена компенсации радиуса инструмента | G1 G40 X0. Y0. F200 |
G41 | Компенсировать радиус инструмента слева от траектории | G41 X15. Y15. D1 F100 |
G42 | Компенсировать радиус инструмента справа от траектории | G42 X15. Y15. D1 F100 |
G43 | Компенсировать длину инструмента положительно | G43 X15. Y15. Z100. H1 S1000 M3 |
G44 | Компенсировать длину инструмента отрицательно | G44 X15. Y15. Z4. H1 S1000 M3 |
G49 | Отмена компенсации длины инструмента | G49 Z100 |
G53 | Отключить смещение начала системы координат станка | G53 G0 X0. Y0. Z0. |
G54-G59 | Переключиться на заданную оператором систему координат | G54 G0 X0. Y0. Z100. |
G61-G64 | Переключение режимов Точный Стоп/Постоянная скорость | |
G68 | Поворот координат на нужный угол | G68 X0 Y0 R45; |
G70 | Цикл продольного чистового точения | G70 P10 Q15 |
G71 | Цикл многопроходного продольного чернового точения | G71 P10 Q15 D0.5 UO.2 W0.5 |
G80 | Отмена циклов сверления, растачивания, нарезания резьбы метчиком и т. д. | G80 |
G81 | Цикл сверления | G81 X0 Y0. Z-10. R3 F100 |
G82 | Цикл сверления с задержкой | G82 X0. Y0. Z-10. R3 P100 F100 |
G83 | Цикл прерывистого сверления (с полным выводом сверла) | G83 X0. Y0. Z-10. R3 Q8 F100 |
G84 | Цикл нарезания резьбы | G95 G84 M29 X0. Y0. Z-10. R3 F1.411 |
G90 | Задание абсолютных координат опорных точек траектории | G90 G1 X0.5. Y0.5. F10 |
G91 | Задание координат инкрементально последней введённой опорной точки | G91 G1 X4. Y5. F100 |
G94 | F (подача) — в формате мм/мин. | G94 G80 Z100 |
G95 | F (подача) — в формате мм/об. | G95 G84 X0. Y0. Z-10. R3 F1.411 |
G99 | После каждого цикла не отходить на "проходную точку" | G99 G91 X10 K4; |
максимум 4 команды в кадре
Таблица технологических кодов
Технологические команды языка начинаются с буквы М. Включают такие действия, как:
- Сменить инструмент
- Включить/выключить шпиндель
- Включить/выключить охлаждение
- Работа с подпрограммами
Код | Описание | Пример |
---|---|---|
M00 | Приостановить работу станка до нажатия кнопки «старт» на пульте управления, так называемая «безусловная технологическая остановка» | G0 X0 Y0 Z100 M0 |
M01 | Приостановить работу станка до нажатия кнопки «старт», если включён режим подтверждения остановки | G0 X0 Y0 Z100 M1 |
M02 | Конец программы, без сброса модальных функций | M02 |
M03 | Начать вращение шпинделя по часовой стрелке | M3 S2000 |
M04 | Начать вращение шпинделя против часовой стрелки | M4 S2000 |
M05 | Остановить вращение шпинделя | M5 |
M06 | Сменить инструмент | T15 M6 |
M07 | Включить дополнительное охлаждение | M3 S2000 M7 |
M08 | Включить основное охлаждение. Иногда использование более одного M-кода в одной строке (как в примере) недопустимо, для этого используются M13 и M14 | M3 S2000 M8 |
M09 | Выключить охлаждение | G0 X0 Y0 Z100 M5 M9 |
M13 | Включить охлаждение и вращение шпинделя по часовой стрелке | S2000 M13 |
M14 | Включить охлаждение и вращение шпинделя против часовой стрелки | S2000 M14 |
M17 | Конец подпрограммы | M17 |
M25 | Замена инструмента вручную | M25 |
M97 | Запуск подпрограммы, находящейся в той же программе (где P — номер кадра, в случае примера переход осуществится к строке N25), действует не везде, предположительно — только на станках HAAS | M97 P25 |
M98 | Запуск подпрограммы, находящейся отдельно от основной программы (где P — номер подпрограммы, в случае примера переход осуществится к программе O1015) | M98 P1015 |
M99 | Конец подпрограммы | M99 |
M30 | Конец программы, со сбросом модальных функций | M30 |
Параметры команд
Параметры команд задаются буквами латинского алфавита
Код | Описание | Пример |
---|---|---|
X | Координата точки траектории по оси X | G0 X100 Y0 Z0 |
Y | Координата точки траектории по оси Y | G0 X0 Y100 Z0 |
Z | Координата точки траектории по оси Z | G0 X0 Y0 Z100 |
P | Параметр команды | G04 P101 |
F | Скорость рабочей подачи.
Для фрезерных станков это дюймы в минуту (IPM) или миллиметры в минуту (mm/min), Для токарных станков это дюймы за оборот (IPR) или миллиметры за оборот (mm/rev). |
G1 G91 X10 F100 |
S | Частота вращения шпинделя | S3000 M3 |
R | Параметр стандартного цикла или радиус дуги (расширение стандарта) | G81 R1 0 R2 −10 F50 или G2 G91 X12.5 R12.5 |
D | Параметр коррекции выбранного инструмента | G1 G41 D1 X10. F150. |
L | Число вызовов подпрограммы | M98 L82 P10 или G65 L82 P10 X_Y_R_ |
I | Параметр дуги при круговой интерполяции. Инкрементальное расстояние от начальной точки до центра дуги по оси X. | G03 X10 Y10 I0 J0 F10 |
J | Параметр дуги при круговой интерполяции. Инкрементальное расстояние от начального | G03 X10 Y10 I0 J0 F10 |
K | Параметр дуги при круговой интерполяции. Инкрементальное расстояние дуги по оси Z. | G03 X10 Y10 I0 K0 F10 |
L | Вызов подпрограммы с данной меткой | L12 |
Пример
Обработка буквы W (вписанной в прямоугольник 34х27 мм, см. рис.) на условном вертикально-фрезерном станке с ЧПУ, фрезой диаметром 4 мм, в заготовке из органического стекла[2]:
Красным цветом выделен результат обработки.
Кадр | Содержание | Комментарий |
---|---|---|
% | Начало программы | |
N1 | G90 G40 G17 | Система координат абсолютная, компенсация на радиус инструмента выключена, плоскость интерполяции XoY |
N2 | S500 M3 | Задать скорость вращения шпинделя и включить шпиндель |
N3 | G0 X2.54 Y26.15 | Переход в точку начала обработки на холостом ходу |
N4 | Z1.0 | Подход к заготовке по Z, не доходя 1 мм, на холостом ходу |
N5 | G1 Z-1.0 F100 | Врезание в заготовку на подаче 100 мм/мин |
N6 | X5.19 Y 2.0 | Первый штрих буквы W |
N7 | X7.76 | Продолжение движения |
N8 | X16.93 Y26.15 | Второй штрих буквы W |
N9 | X18.06 | Продолжение движения |
N10 | X25.4 Y2.0 | Третий штрих буквы W |
N11 | X25.96 | Продолжение движения |
N12 | X32.17 Y 26.15 | Четвертый штрих буквы W |
N13 | G0 Z12 | Отвод инструмента от заготовки на холостом ходу |
N14 | M5 | Выключить шпиндель |
N15 | M30 | Конец программы |
См. также
Напишите отзыв о статье "G-code"
Примечания
Ссылки
- [www.intuwiz.ru/services.html Создание и подготовка управляющих программ (G-кода) в режиме on-line.]
- [cnc-club.ru/forum/viewtopic.php?f=15&t=34 CAM расширение Inkscape для экспорта в G-code]
- [www.ncmanager.com Симуляция работы программ на G-коде в реальном времени]
- [www.cncezpro.com/gcodes.cfm Real-Time 3D Graphics Simulation for G-code] (англ.)
- [www.isd.mel.nist.gov/personnel/kramer/pubs/RS274NGC_3.web/RS274NGC_3TOC.html Overview of canonical machining functions] (англ.)
- [www.ange-softs.com/simulcnc.php SIMUL CNC] (англ.)
- [nc-corrector.inf.ua/Pages/Links.htm Подборка ссылок на сайты редакторов визуализаторов G-кода]
Отрывок, характеризующий G-code
Жюли собиралась на другой день уезжать из Москвы и делала прощальный вечер.– Безухов est ridicule [смешон], но он так добр, так мил. Что за удовольствие быть так caustique [злоязычным]?
– Штраф! – сказал молодой человек в ополченском мундире, которого Жюли называла «mon chevalier» [мой рыцарь] и который с нею вместе ехал в Нижний.
В обществе Жюли, как и во многих обществах Москвы, было положено говорить только по русски, и те, которые ошибались, говоря французские слова, платили штраф в пользу комитета пожертвований.
– Другой штраф за галлицизм, – сказал русский писатель, бывший в гостиной. – «Удовольствие быть не по русски.
– Вы никому не делаете милости, – продолжала Жюли к ополченцу, не обращая внимания на замечание сочинителя. – За caustique виновата, – сказала она, – и плачу, но за удовольствие сказать вам правду я готова еще заплатить; за галлицизмы не отвечаю, – обратилась она к сочинителю: – у меня нет ни денег, ни времени, как у князя Голицына, взять учителя и учиться по русски. А вот и он, – сказала Жюли. – Quand on… [Когда.] Нет, нет, – обратилась она к ополченцу, – не поймаете. Когда говорят про солнце – видят его лучи, – сказала хозяйка, любезно улыбаясь Пьеру. – Мы только говорили о вас, – с свойственной светским женщинам свободой лжи сказала Жюли. – Мы говорили, что ваш полк, верно, будет лучше мамоновского.
– Ах, не говорите мне про мой полк, – отвечал Пьер, целуя руку хозяйке и садясь подле нее. – Он мне так надоел!
– Вы ведь, верно, сами будете командовать им? – сказала Жюли, хитро и насмешливо переглянувшись с ополченцем.
Ополченец в присутствии Пьера был уже не так caustique, и в лице его выразилось недоуменье к тому, что означала улыбка Жюли. Несмотря на свою рассеянность и добродушие, личность Пьера прекращала тотчас же всякие попытки на насмешку в его присутствии.
– Нет, – смеясь, отвечал Пьер, оглядывая свое большое, толстое тело. – В меня слишком легко попасть французам, да и я боюсь, что не влезу на лошадь…
В числе перебираемых лиц для предмета разговора общество Жюли попало на Ростовых.
– Очень, говорят, плохи дела их, – сказала Жюли. – И он так бестолков – сам граф. Разумовские хотели купить его дом и подмосковную, и все это тянется. Он дорожится.
– Нет, кажется, на днях состоится продажа, – сказал кто то. – Хотя теперь и безумно покупать что нибудь в Москве.
– Отчего? – сказала Жюли. – Неужели вы думаете, что есть опасность для Москвы?
– Отчего же вы едете?
– Я? Вот странно. Я еду, потому… ну потому, что все едут, и потом я не Иоанна д'Арк и не амазонка.
– Ну, да, да, дайте мне еще тряпочек.
– Ежели он сумеет повести дела, он может заплатить все долги, – продолжал ополченец про Ростова.
– Добрый старик, но очень pauvre sire [плох]. И зачем они живут тут так долго? Они давно хотели ехать в деревню. Натали, кажется, здорова теперь? – хитро улыбаясь, спросила Жюли у Пьера.
– Они ждут меньшого сына, – сказал Пьер. – Он поступил в казаки Оболенского и поехал в Белую Церковь. Там формируется полк. А теперь они перевели его в мой полк и ждут каждый день. Граф давно хотел ехать, но графиня ни за что не согласна выехать из Москвы, пока не приедет сын.
– Я их третьего дня видела у Архаровых. Натали опять похорошела и повеселела. Она пела один романс. Как все легко проходит у некоторых людей!
– Что проходит? – недовольно спросил Пьер. Жюли улыбнулась.
– Вы знаете, граф, что такие рыцари, как вы, бывают только в романах madame Suza.
– Какой рыцарь? Отчего? – краснея, спросил Пьер.
– Ну, полноте, милый граф, c'est la fable de tout Moscou. Je vous admire, ma parole d'honneur. [это вся Москва знает. Право, я вам удивляюсь.]
– Штраф! Штраф! – сказал ополченец.
– Ну, хорошо. Нельзя говорить, как скучно!
– Qu'est ce qui est la fable de tout Moscou? [Что знает вся Москва?] – вставая, сказал сердито Пьер.
– Полноте, граф. Вы знаете!
– Ничего не знаю, – сказал Пьер.
– Я знаю, что вы дружны были с Натали, и потому… Нет, я всегда дружнее с Верой. Cette chere Vera! [Эта милая Вера!]
– Non, madame, [Нет, сударыня.] – продолжал Пьер недовольным тоном. – Я вовсе не взял на себя роль рыцаря Ростовой, и я уже почти месяц не был у них. Но я не понимаю жестокость…
– Qui s'excuse – s'accuse, [Кто извиняется, тот обвиняет себя.] – улыбаясь и махая корпией, говорила Жюли и, чтобы за ней осталось последнее слово, сейчас же переменила разговор. – Каково, я нынче узнала: бедная Мари Волконская приехала вчера в Москву. Вы слышали, она потеряла отца?
– Неужели! Где она? Я бы очень желал увидать ее, – сказал Пьер.
– Я вчера провела с ней вечер. Она нынче или завтра утром едет в подмосковную с племянником.
– Ну что она, как? – сказал Пьер.
– Ничего, грустна. Но знаете, кто ее спас? Это целый роман. Nicolas Ростов. Ее окружили, хотели убить, ранили ее людей. Он бросился и спас ее…
– Еще роман, – сказал ополченец. – Решительно это общее бегство сделано, чтобы все старые невесты шли замуж. Catiche – одна, княжна Болконская – другая.
– Вы знаете, что я в самом деле думаю, что она un petit peu amoureuse du jeune homme. [немножечко влюблена в молодого человека.]
– Штраф! Штраф! Штраф!
– Но как же это по русски сказать?..
Когда Пьер вернулся домой, ему подали две принесенные в этот день афиши Растопчина.
В первой говорилось о том, что слух, будто графом Растопчиным запрещен выезд из Москвы, – несправедлив и что, напротив, граф Растопчин рад, что из Москвы уезжают барыни и купеческие жены. «Меньше страху, меньше новостей, – говорилось в афише, – но я жизнью отвечаю, что злодей в Москве не будет». Эти слова в первый раз ясно ыоказали Пьеру, что французы будут в Москве. Во второй афише говорилось, что главная квартира наша в Вязьме, что граф Витгснштейн победил французов, но что так как многие жители желают вооружиться, то для них есть приготовленное в арсенале оружие: сабли, пистолеты, ружья, которые жители могут получать по дешевой цене. Тон афиш был уже не такой шутливый, как в прежних чигиринских разговорах. Пьер задумался над этими афишами. Очевидно, та страшная грозовая туча, которую он призывал всеми силами своей души и которая вместе с тем возбуждала в нем невольный ужас, – очевидно, туча эта приближалась.
«Поступить в военную службу и ехать в армию или дожидаться? – в сотый раз задавал себе Пьер этот вопрос. Он взял колоду карт, лежавших у него на столе, и стал делать пасьянс.
– Ежели выйдет этот пасьянс, – говорил он сам себе, смешав колоду, держа ее в руке и глядя вверх, – ежели выйдет, то значит… что значит?.. – Он не успел решить, что значит, как за дверью кабинета послышался голос старшей княжны, спрашивающей, можно ли войти.
– Тогда будет значить, что я должен ехать в армию, – договорил себе Пьер. – Войдите, войдите, – прибавил он, обращаясь к княжие.
(Одна старшая княжна, с длинной талией и окаменелым лидом, продолжала жить в доме Пьера; две меньшие вышли замуж.)
– Простите, mon cousin, что я пришла к вам, – сказала она укоризненно взволнованным голосом. – Ведь надо наконец на что нибудь решиться! Что ж это будет такое? Все выехали из Москвы, и народ бунтует. Что ж мы остаемся?
– Напротив, все, кажется, благополучно, ma cousine, – сказал Пьер с тою привычкой шутливости, которую Пьер, всегда конфузно переносивший свою роль благодетеля перед княжною, усвоил себе в отношении к ней.
– Да, это благополучно… хорошо благополучие! Мне нынче Варвара Ивановна порассказала, как войска наши отличаются. Уж точно можно чести приписать. Да и народ совсем взбунтовался, слушать перестают; девка моя и та грубить стала. Этак скоро и нас бить станут. По улицам ходить нельзя. А главное, нынче завтра французы будут, что ж нам ждать! Я об одном прошу, mon cousin, – сказала княжна, – прикажите свезти меня в Петербург: какая я ни есть, а я под бонапартовской властью жить не могу.
– Да полноте, ma cousine, откуда вы почерпаете ваши сведения? Напротив…
– Я вашему Наполеону не покорюсь. Другие как хотят… Ежели вы не хотите этого сделать…
– Да я сделаю, я сейчас прикажу.
Княжне, видимо, досадно было, что не на кого было сердиться. Она, что то шепча, присела на стул.
– Но вам это неправильно доносят, – сказал Пьер. – В городе все тихо, и опасности никакой нет. Вот я сейчас читал… – Пьер показал княжне афишки. – Граф пишет, что он жизнью отвечает, что неприятель не будет в Москве.
– Ах, этот ваш граф, – с злобой заговорила княжна, – это лицемер, злодей, который сам настроил народ бунтовать. Разве не он писал в этих дурацких афишах, что какой бы там ни был, тащи его за хохол на съезжую (и как глупо)! Кто возьмет, говорит, тому и честь и слава. Вот и долюбезничался. Варвара Ивановна говорила, что чуть не убил народ ее за то, что она по французски заговорила…
– Да ведь это так… Вы всё к сердцу очень принимаете, – сказал Пьер и стал раскладывать пасьянс.
Несмотря на то, что пасьянс сошелся, Пьер не поехал в армию, а остался в опустевшей Москве, все в той же тревоге, нерешимости, в страхе и вместе в радости ожидая чего то ужасного.
На другой день княжна к вечеру уехала, и к Пьеру приехал его главноуправляющий с известием, что требуемых им денег для обмундирования полка нельзя достать, ежели не продать одно имение. Главноуправляющий вообще представлял Пьеру, что все эти затеи полка должны были разорить его. Пьер с трудом скрывал улыбку, слушая слова управляющего.