В загальному, G-код — це мова, якою люди взаємодіють з комп'ютеризованими верстатами, задають їм що робити і як це зробити. «Як» визначається інструкціями про те, де перейти до (повернути або виконати дію), як швидко рухатися, і якою траєкторією переміщуватися.
Використання
G-код використовується в системі керування верстатами з числовим програмним керуванням LinuxCNC, програмі Mach3, інших системах.
Приклад використання: запрограмований верстат переміщує різальний інструмент відповідно до заданих G-кодом інструкцій через визначені траєкторії, зрізаючи надлишки матеріалу, щоб отримати деталь відповідно до креслення. Це ж саме поняття поширюється також на нерізальні (незрозумілий термін???) технології, такі як інструменти формування або полірування; 3D-друк; вимірювальне зондування для перевірки результатів.
Пробіли в рядку кадру ігноруються, тому припустимо злите написання команд кадру.
У більшості сучасних інтерпретаторів коду допустимо використовувати в коді програми малі та великі літери, як у прикладі.
Основні вимоги до структури
Програма, написана мовою G-коду, має жорстко визначену структуру. Усі команди управління згруповані у кадри — блоки, які містять одну або кілька команд. Кадр закінчується символом переходу на новий рядок (CR/LF) і може необов’язково містити явний номер, що починається з літери N, за винятком першого кадру програми та коментарів. Цей номер виступає як позначка кадру і не обов’язково повинен збільшуватися у програмі або бути послідовними цілими числами, головне, щоб він не повторювався в межах програми.
...
N200 G0
n100 x0
x5y4
...
У більшості сучасних інтерпретаторів G-коду допустиме використання як малих, так і великих літер, як у прикладі. Пробіли в рядку кадру ігноруються, тож команди можуть записуватися без пропусків.
Перший (а іноді й останній) кадр містить лише один необов’язковий знак <%>. Програма завершується командами M02 або M30.
Коментарі розміщуються в круглих дужках і можуть знаходитися як у окремому рядку, так і в будь-якому місці кадру серед команд. Заборонено оформляти кілька рядків коментаря, оточених парою дужок.
Елементарні команди в кадрі виконуються одночасно, тому порядок їх розміщення не є жорстко визначеним, але зазвичай спочатку йдуть підготовчі команди (наприклад, вибір площини інтерполяції, швидкості переміщення за осями тощо), потім вказівка координат руху, а далі — вибір режимів обробки та технологічні команди.
Максимальна кількість елементарних команд і координат у одному кадрі залежить від конкретного інтерпретатора мови керування верстатом, але для більшості популярних інтерпретаторів вона не перевищує шести.
Координати задаються вказанням осі з подальшим числовим значенням, де ціла і дробова частини розділяються десятковою крапкою. Допускається опускання незначущих нулів або їх додавання. Також у більшості інтерпретаторів можна не ставити десяткову крапку після цілих чисел. Наприклад: 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 - чотириразовий виклик підпрограми, що починається з 3. Оформлена таким чином підпрограма, як звичайно, повинна закінчуватися командою M99 — поверненням у програму, що викликала.
Приклад програми вирізання 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-коду, має жорстку структуру. Усі команди управління об'єднуються у кадри — групи, які з однієї чи більше команд. Кадр завершується символом перекладу рядка (CR/LF) і може необов'язково мати явно вказаний номер, що починається з літери N, за винятком першого кадру програми та коментарів. Цей номер є по суті міткою кадру і необов'язково повинен наростати в програмі або бути послідовними цілими числами, важливо, щоб номер не повторювався в межах програми, наприклад, допустимо:
Таблиця кодів
Основні (називаються в стандарті підготовчими) команди мови починаються з літери G (абревіатура від слова General ):
Переміщення робочих органів обладнання із заданою швидкістю (лінійне та кругове)
Виконання типових послідовностей (таких, як обробка отворів та різьблення)
Управління параметрами інструмента, системами координат та робочих площин
Підготовчі (основні) команди
Коди
Опис
G00-G03
Позиціонування інструменту
G17-G19
Перемикання робочих площин (XY, ZX, YZ)
G20-G21
Не стандартизовано
G40-G44
Компенсація розміру різних частин інструменту (довжина, діаметр)
Перемикання систем координат (абсолютна, відносна)
Таблиця основних команд
Команда
Опис
Приклад
G00
Прискорене переміщення інструменту (холостий хід). При холостому переміщенні НЕ ОБОВ'ЯЗКОВО виконується лінійна інтерполяція переміщення аналогічно команді 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.
Задання координат інкрементально відносно координат останньої введеної опорної точки, переміщення інструменту в цій системі координат задається у вигляді приростів
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) або міліметри за оборот (мм/об). Вибір одиниць вимірювання, дюйми або міліметри, виконується командами 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 мм.[1]:
% (мітка початку програми, необов’язкова)
(вісь 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 секунди для набору обертів шпинделя)
X0Y30Z5(переміщення інструмента у точку з координатами X=0, Y=30, Z=5 зі швидкістю холостого ходу)
G1 Z-2F40(врізання інструмента у заготовку на глибину 2 мм зі швидкістю 40 мм/хв)
G1 F20X10Y0(фрезерування першого відрізка літери W зі швидкістю 20 мм/хв)
X20Y30(фрезерування другого відрізка літери W зі швидкістю 20 мм/хв)
X30Y0(фрезерування третього відрізка літери W зі швидкістю 20 мм/хв)
X40Y30(фрезерування четвертого відрізка літери W зі швидкістю 20 мм/хв)
G0 Z5(підйом інструмента на висоту 5 мм над поверхнею заготовки зі швидкістю 300 мм/хв)
M5 (зупинка обертання шпинделя)
M30 (кінець програми та кінець інтерпретованого коду)