G-коды

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

G-коды

Сообщение spike »

В этой ветке будем собирать описания G-кодов. Наполнение будет идти неспешно и вдумчиво.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: G-коды

Сообщение spike »

Список G-кодов:

Код: Выделить всё

КОД         ГРУППА         Функция
G00			  01	  	Быстрое перемещение
G01	  					 Линейная интерполяция, по час. стр.
G02	  					 Круговая интерполяция, по час. стр.
G03	  					 Круговая интерполяция, против час. стр.
G02.2, G03.2				Эвольвентная интерполяция
G02.3, G03.3				Экспоненциальная интерполяция
G04	  		00		  Задержка
G05	  					 Высокоскоростная обработка
G07	  					 Интерполирование гипотетической оси
G07.1 (G107)				Цилиндрическая интерполяция
G10  						 Программируемый ввод данных
G10.6  					  Отвод и восстановление инструмента
G11  						 Отмена программируемого ввода данных
G12.1 		  25		  Режим интерполирование полярных координат
G13.1  					  Отмена режимы интерполирования полярных координат
G15  			17		  Отмена полярных координат
G16	  					 Установка полярных координат
G17			  02		  Выбор плоскости XY
G18	  					 Выбор плоскости ZX
G19	  					 Выбор плоскости YZ
G20			  06		  Ввод в дюймах
G21	  					 Ввод в миллиметрах
G22			  04		  Включение функции сохранения величины хода
G23	  					 Выключение функции сохранения величины хода
G25  			24		  Выключение определения колебания скорости шпинделя
G26	  					 Включение определения колебания скорости шпинделя
G27  			00		  Проверка возврата в позицию ссылки
G28	  					 Возврат в позицию ссылки
G30	  					 Возврат в позицию ссылки 2й, 3й и 4й оси
G30.1	 					Возврат в плавающую точку ссылки
G31	  					 Функция пропуска
G33  			01		  Нарезание резьбы
G34	  					 Резьбы с изменяемым шагом
G37  			00		  Автоматическая компенсация длины инструмента
G39	  					 Офсет угла круговой интерполяции
G40  			07		  Отмена компенсации инструмента
G41	  					 Левая компенсация инструмента
G42	  					 Правая компенсация инструмента
G40.1 (G150)  19		  Нормальный режим прямого контроля
G41.1 (G151)			   Нормальный режим контроля левой стороны
G42.1 (G152)			   Нормальный режим контроля правой стороны
G43  			09		  Компенсация длины инструмента + направление
G44	  					 Компенсация длины инструмента - направление
G45  			00		  Увеличение офсета инструмента
G46	  					 Уменьшение офсета инструмента
G47	  					 Двойное увеличение офсета инструмента
G48	  					 Двойное уменьшение офсета инструмента
G49  			08		  Отмена компенсации длины инструмента
G50  			11		  Отмена масштабирования
G51	  					 Включение масштабирования
G50.1  		 22		  Отмена зеркального отображения
G51.1  				     Включение зеркального отображения
G52  			00		  Установка локальной системы координат
G53	  					 Установка системы координат станка
G54  			14		  Установка системы координат детали 1
G55	  					 Установка системы координат детали 2
G56	  					 Установка системы координат детали 3
G57	  					 Установка системы координат детали 4
G58	  					 Установка системы координат детали 5
G59	  					 Установка системы координат детали 6
G60  			00|01  	Позиционирование одного направления
G61  			15		  Режим точной остановки
G62	  					 Автоматическая коррекция угла
G63	  					 Режим резьбы
G64	  					 Режим обработки
G65  			00		  Вызов макроса
G66  			12		  Модальный вызов макроса
G67	  					 Отмена модального вызова макроса
G68  			16		  Включение вращения системы координат
G69	  					 Выключение вращения системы координат
G72.1  		 00		  Вращение копии
G72.2  				     Параллельная копия
G73  			09		  Многопроходное сверление
G74	  					 Нарезание резьбы
G75  			01		  Шлифование (для шлифовального станка)
G76  			09		  Точная расточка
G77  			01		  Шлифование с прямым постоянным врезанием (для шлифовального станка)
G78	  					 Шлифование с постоянной подачей (для шлифовального станка)
G79	  					 Шлифование с прерывистой подачей (для шлифовального станка)
G80  			09		  Отмена вложенного цикла сверления
G81	  					 Цикл сверления, расточка или внешняя операция
G82	  					 Сверление или расточка
G83	  					 Цикл торцевого сверления
G84	  					 Цикл торцевого нарезания резьбы
G86	  					 Цикл торцевой расточки
G87	  					 Цикл боковой расточки
G88	  					 Цикл расточки
G89	  					 Цикл боковой расточки
G90  			03		  Программирование Абсолютных координат
G91	  					 Программирование относительных координат
G92  			00		  Установка системы координат или установка макс. скорости шпинд.
G92.1  				     Установка системы координат детали
G93	  					 inverse time feed rate mode
G94  			05		  Подача в минуту
G95	  					 Подача на оборот
G96  			13		  Контроль постоянной скорости резания
G97	  					 Отмена контроля постоянной скорости резания
G98  			10		  Возврат в исходный уровень (см. пояснение 6)
G99	  					 Возврат в исходный уровень точки R (см. пояснение 6)
G160 			20		  Отмена контроля подачи (для шлифовального станка)
G161  					   Включение контроля подачи (для шлифовального станка)
Последний раз редактировалось Anonymous 29 авг 2008, 14:12, всего редактировалось 1 раз.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: G-коды

Сообщение spike »

Строго говоря в предыдущем посте я перечислил команды, поддерживаемые одной из систем ЧПУ фирмы Fanuc, и точно сказать какие конкретно Ж-коды описаны в стандарте RS-274/NGC Language не могу, потому как сам стандарт не видел, если у кого есть - поделитесь! Есть вот такая ссылка, информация о Ж-кодах будет браться частично оттуда.

Продолжим:
Все слова языка RS274/NGC начинаются с зарезервированных букв:

Код: Выделить всё

A	A-ось станка
B	B-ось станка
C	C-ось станка
D	(tool radius compensation number)
F	подача
G	основная функция
H	(tool length offset index)
I	смещение по оси X для дуг, (X offset in G87 canned cycle)
J	смещение по оси Y для дуг, (Y offset in G87 canned cycle)
K	смещение по оси Z для дуг, (Z offset in G87 canned cycle)
L	количество повторов циклов, (key used with G10)
M	вспомогательная функция
N	номер строки
P	(dwell time in canned cycles, dwell time with G4, key used with G10)
Q	(feed increment in G83 canned cycle)
R	радиус дуги, (canned cycle plane)
S	скорость (частота) вращения шпинделя
T	выбор инструмента
X	X-ось станка
Y	Y-ось станка
Z	Z-ось станка
VShaclein
Опытный
Сообщения: 183
Зарегистрирован: 25 авг 2008, 11:36
Репутация: -47
Контактная информация:

Re: G-коды

Сообщение VShaclein »

VShaclein
Опытный
Сообщения: 183
Зарегистрирован: 25 авг 2008, 11:36
Репутация: -47
Контактная информация:

Re: G-коды

Сообщение VShaclein »

И выход с тех линков, на, как я понял, реализацию:
http://linuxwiki.de/EMC
http://sourceforge.net/project/showfile ... _id=619029
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

G-коды. Модальные группы

Сообщение spike »

VShaclein писал(а):Вот, вроде бы, интересный ресурс:
...
http://www.isd.mel.nist.gov/personnel/k ... _3TOC.html
Да, здесь наверное более стандартный код...


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

Код: Выделить всё

N116 G1 X19.605 Y32.665
N118 G3 X15.507 Y33.764 R3.
N120 X19.493 Y26.858 R3.987 
N122 X15.507 Y33.764 R3.987
N124 X14.409 Y29.665 R3.001
N126 G1 X15.909 Y27.067
команды G1 и G3 входят в 1-ю модальную группу, в строке 118 вызвана G3 (круговая интерполяция против часовой стрелки) - она действует до строки 126, где вызывается G1(линейная интерполяция)

Код: Выделить всё

[b]Модальные группы для G-кодов:[/b]
 1. {G0, G1, G2, G3, G38.2, G80, G81, G82, G83, G84, G85, G86, G87, G88, G89} команды движения 
 2. {G17, G18, G19} выбор плоскости для круговой интерполяции 
 3. {G90, G91} distance mode 
 5. {G93, G94} режим подачи 
 6. {G20, G21} единицы измерения
 7. {G40, G41, G42} компенсация радиуса инструмента 
 8. {G43, G49} компенсация длинны инструмента 
10. {G98, G99} return mode in canned cycles 
12. {G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3} выбор координатной системы 
13. {G61, G61.1, G64} path control mode 

[b]Модальные группы для М-кодов:[/b]
 4. {M0, M1, M2, M30, M60} остановка
 6. {M6} смена инструмента 
 7. {M3, M4, M5} вращение шпинделя 
 8. {M7, M8, M9} подача СОЖ (M7 и M8 могут быть активны одновременно) 
 9. {M48, M49} enable/disable feed and speed override switches 

и отдельная группа [b]немодальных G-кодов:[/b]
{G4, G10, G28, G30, G53, G92, G92.1, G92.2, G92.3}
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

G00 - Позиционирование

Сообщение spike »

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

Формат
G00IP_;
IP_- для абсолютных координат указывается конечная точка. Для относительных координат расстояние перемещения инструмента.

В зависимости от возможностей ЧПУ и станка может быть использовано
  • Нелинейное интерполирование позиционирования (инструмент позиционируется по кратчайшей траектории с максимальной скоростью для каждой оси)
  • Линейное интерполирование позиционирования (траектория - прямая)
G00.png (82224 просмотра) <a class='original' href='./download/file.php?id=2363&sid=c54460c1e94c4d7fc8831afedb0e6f9e&mode=view' target=_blank>Загрузить оригинал (6.08 КБ)</a>
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

G01 - Линейное интерполирование

Сообщение spike »

Перемещение инструмента по прямой.

Формат
G00IP_F_;
IP_ Для абсолютных координат указывается конечная точка. Для относительных координат расстояние перемещения инструмента.
F_ Скорость подачи инструмента.

Пояснение
  • Инструмент перемещается по прямой линии в указанную позицию со скоростью подачи указанной в F. Эта скорость подачи остается эффективной в последующих блоках пока не будет запрограммировано новое значение F. Скорость подачи измеряется по линии перемещения инструмента. Если скорость подачи не запрограммирована, она считается равной нулю.
  • Скорость подачи поворотной оси задается в гр/мин (единица измерения указывается в знаке десятичной точки).
  • Если производится линейной интерполирование оси α (такой как Х, Y, Z) и поворотной оси β (такой как А, В, С), скорость подачи является тангенциальной скоростью подачи α и β в декартовой системе координат в F (мм/мин).
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Круговая интерполяция

Сообщение spike »

Перемещение инструмента по дуге.

Формат
  • Дуга в плоскости XY: G17 {G02 или G03} X_Y_ {I_J_ или R_} F_
  • Дуга в плоскости ZX: G18 {G02 или G03} Z_X_ {I_K_ или R_} F_
  • Дуга в плоскости YZ: G19 {G02 или G03} Y_Z_ {J_K_ или R_} F_

Код: Выделить всё

Команда          Описание
G17         Определение плоскости XpYp
G18         Определение плоскости ZpXp
G19         Определение плоскости YpZp
G02         Круговая интерполяция по часовой стрелке
G03         Круговая интерполяция против часовой стрелки
X_          Значение координаты по оси Х или параллельной оси
Y_          Значение координаты по оси Y или параллельной оси
Z_          Значение координаты по оси Z или параллельной оси
I_          Относительное расстояние по Хр от начальной точки до центра дуги, значение радиуса
J_          Относительное расстояние по Yр от начальной точки до центра дуги, значение радиуса
K_          Относительное расстояние по Zр от начальной точки до центра дуги, значение радиуса
R_          Радиус дуги без знака (значение радиуса всегда указывается)
F_          Скорость подачи по дуге
Пояснения
Направление круговой интерполяции «По часовой стрелке» (G02) и «против часовой стрелки» (G03) в плоскости ХY (ZX или YZ) определяет направление в плоскости XY если смотреть в направлении из положительного в отрицательное по оси Z (Y или Z) в декартовой системе координат. См. рисунок:
Рисунок1.png (82220 просмотров) <a class='original' href='./download/file.php?id=2387&sid=c54460c1e94c4d7fc8831afedb0e6f9e&mode=view' target=_blank>Загрузить оригинал (10.56 КБ)</a>
Расстояние перемещения по дуге
Конечная позиция дуги указывается адресами X, Y, Z и выражается в абсолютных или относительных значениях в соответствии с G90 или G91. Для относительных значений указывается расстояние до конечной точки от начальной точки.

Расстояние от начальной точки до центра дуги
Центр дуги определяется адресами I, J, K для осей X, Y, Z. Числовые значения I, J, K представляют собой вектор из начальной точки до центра дуги и всегда указываются в относительных координатах независимо от G90 и G91.
При задании значений I, J, K необходимо учитывать направление.
Рисунок2.png (82221 просмотр) <a class='original' href='./download/file.php?id=2388&sid=c54460c1e94c4d7fc8831afedb0e6f9e&mode=view' target=_blank>Загрузить оригинал (12.96 КБ)</a>
Программирование полной окружности
Если пропущено X, Y и Z (конечная точка является начальной точкой) и центр указанный в I, J, K, дуга составляет 360 градусов (окружность).

Радиус дуги
Расстояние между дугой и центром дуги состоит из дуги и может быть указан используя радиус R окружности вместо I, J, K. В этом случае дуга с углом сектора 180 или больше градусов не может быть указана.

Пример:
Рисунок3.png (82225 просмотров) <a class='original' href='./download/file.php?id=2389&sid=c54460c1e94c4d7fc8831afedb0e6f9e&mode=view' target=_blank>Загрузить оригинал (6.68 КБ)</a>
Эта траектория может быть запрограммирована следующим образом:

Код: Выделить всё

  При абсолютном программировании:
	G92 X200.0 Y40.0 Z0;
	G90 G03 X140.0 Y100.0R60.0 F300.;
	G02 X120.0 Y60.0R50.0;
	или
	G92X200.0 Y40.0Z0;
	G90 G03 X140.0 Y100.0I-60.0 F300.;
	G02 X120.0 Y60.0I-50.0;

  При программировании приращения
	G91 G03 X-60.0 Y60.0 R60.0 F300.;
	G02 X-20.0 Y-40.0 R50.0;
	или
	G91 G03 X-60.0 Y60.0 I-60.0 F300.;
	G02 X-20.0 Y-40.0 I-50.0;
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: G-коды

Сообщение spike »

ГОСТ 20999-83.pdf
Устройства числового программного управления для металлообрабатывающего оборудования. Кодирование информации управляющих программ
(2.36 МБ) 3607 скачиваний
Аватара пользователя
buyvoll
Мастер
Сообщения: 214
Зарегистрирован: 14 сен 2010, 14:20
Репутация: 26
Контактная информация:

Re: G-коды

Сообщение buyvoll »

Вопрос по G-кодам
пример круговой интерполяции из википедии
G02 X15 Y15 R5 F200

X15 и Y15 это конечные точки в которые должен попасть инструмент из тех координат, в которых он находится непосредственно перед чтением этой строки, так?
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: G-коды

Сообщение spike »

Именно так, если активна G90 (программирование в абсолютных координатах), если G91 - то смещение конечной точки дуги относительно текущей.
Аватара пользователя
buyvoll
Мастер
Сообщения: 214
Зарегистрирован: 14 сен 2010, 14:20
Репутация: 26
Контактная информация:

Re: G-коды

Сообщение buyvoll »

понял, благодарю.
получается угол поворота можно вычислить по теореме косинусов ))
Prog
Новичок
Сообщения: 4
Зарегистрирован: 14 апр 2013, 21:47
Репутация: 0
Контактная информация:

Re: G-коды

Сообщение Prog »

UP
Здравствуйте Уважаемые.
Подскажите пожалуйста, как продолжить работу по обработки радиуса, при остановке до точки выхода в Мач3 (постпроцессор плюс).
Координаты х,у остановки в принципе известны (или вычисляются).

Цель: добавить в ручную продолжение обработки по дуге с заданной координаты.
Пример (для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

N1560 G00X137.88Y317.
N1570 M03
N1580 G04 P0.4
N1590 G03X134.64Y325.03I-3.94J3.08F750 
N1600 G02X134.64Y325.03I21.04J149.73 //остановка на данной процедуре
N1610 M05
координата остановки X303.95Y44514
Спасибо.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: G-коды

Сообщение nkp »

Код: Выделить всё

G1 F30
G00 X137.88 Y317.
M03 S2000
G04 P0.4
G03 X134.64 Y325.03 I-3.94 J3.08 
G02 X303.95 Y445.14 I21.04 J149.73
G02 X134.64 Y325.03 I-148.27 J29.62

M05
M2
из данных этой строки вычисляем координаты центра дуги(в нашем случае - окружности)
x155.68
y474.76
затем пересчитываем эти координаты из абсолютных в относительные (относительно точки остановки)
Prog
Новичок
Сообщения: 4
Зарегистрирован: 14 апр 2013, 21:47
Репутация: 0
Контактная информация:

Re: G-коды

Сообщение Prog »

спасибо nkp.
Ранее как то хитро выкручивался на дугах. Сам подзабыл как. По моему как у Вас, Координаты текущие и продолжить M03. Но это работает лишь на дугах.
nkp писал(а): из данных этой строки вычисляем координаты центра дуги(в нашем случае - окружности)
x155.68
y474.76
затем пересчитываем эти координаты из абсолютных в относительные (относительно точки остановки)
Можно с комментариями команд?

Код: Выделить всё

G03 X134.64 Y325.03 I-3.94 J3.08 
G02 X303.95 Y445.14 I21.04 J149.73
G02 X134.64 Y325.03 I-148.27 J29.62
Где центр в примере используется?
G92 и G91 не используем?

И после этого цикла нужно вернуть точку ноль как то?
В смысле, что бы оборудование продолжило дальнейшую обработку оставшихся деталей.

И еще вопрос. Мач3 как то сам может решать эту задачу? Почему на такой элементарной операции выдает ошибку?
Может есть более продвинутые системы?
Спасибо.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: G-коды

Сообщение Nick »

Prog писал(а):Где центр в примере используется?
I,J - это смещение центра относительно текущих координат.
А начать с начала кадра - не вариант? Т.е. пишем к этой программе:
N1590 G03X134.64Y325.03I-3.94J3.08F750
N1600 G02X134.64Y325.03I21.04J149.73 //остановка на данной процедуре
G0 Z10 (выходим на безопасную высоту)
G0 X134.64 Y325.03 (едем в начало кадра)
G01 Z-1 (заглубляемся)
И дальше продолжаем с строки, на которой остановились.
Аватара пользователя
mycnc
Мастер
Сообщения: 913
Зарегистрирован: 03 июл 2011, 02:01
Репутация: 623
Контактная информация:

Re: G-коды

Сообщение mycnc »

Prog писал(а): И еще вопрос. Мач3 как то сам может решать эту задачу? Почему на такой элементарной операции выдает ошибку?
Может есть более продвинутые системы?
Спасибо.
Это правда, что Мач не может продолжить программу после остановки с cередине блока?
Здесь же должны быть пользователи Mach3, отпишитесь пожалуйста.
Последний раз редактировалось mycnc 16 апр 2013, 01:05, всего редактировалось 1 раз.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: G-коды

Сообщение aftaev »

mycnc писал(а):Это правда, что Мач не может продолжить программу после остановки с вередине блока?
это как?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
mycnc
Мастер
Сообщения: 913
Зарегистрирован: 03 июл 2011, 02:01
Репутация: 623
Контактная информация:

Re: G-коды

Сообщение mycnc »

aftaev писал(а):
mycnc писал(а):Это правда, что Мач не может продолжить программу после остановки в середине блока?
это как?
Например -
при вырезании большого отверстия нажать кнопку "стоп" в середине дуги,
откатить резак вручную в то место где удобно его перебрать при необходимости,
по кнопке "возврат" - вернуться на точку, где остановилась резка,
нажав "пуск" продолжить резку с точки останова.
Ответить

Вернуться в «Windows / Mach»