G-коды

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
banan123
Новичок
Сообщения: 19
Зарегистрирован: 26 июн 2014, 13:37
Репутация: 0
Контактная информация:

Re: G-коды

Сообщение banan123 »

у меня получается сейчас так:
- уход в подпрограмму
- координата1
- уход в подпрограмму
- координата2
******
******
******
- уход в подпрограмму
- координата 576

каждую координату описывать сложно, но координаты повторяются через равный промежуток.
Можно ли как-нибудь автоматизировать это?
banan123
Новичок
Сообщения: 19
Зарегистрирован: 26 июн 2014, 13:37
Репутация: 0
Контактная информация:

Re: G-коды

Сообщение banan123 »

оказывается в G-коде переменные есть))) Вопрос решен.
Portos
Мастер
Сообщения: 244
Зарегистрирован: 24 янв 2013, 21:28
Репутация: 37
Контактная информация:

Re: G-коды

Сообщение Portos »

привет всем,
может кто поможет, засел с одной проблемой, не могу решить.
Есть деталь которую нужно размножить по средствам G-CODE со смещение к примеру в 10мм как на рисунке.

Почитал что M98 - команда вызова подпрограммы M99 - завершить подпрограмму, P№ - подпрограмма , O№ - сама подпрограмма

не могу разобраться со смещениями, может кто на практике такое делал? буду признателен за помощь.
Вложения
01.JPG (16221 просмотр) <a class='original' href='./download/file.php?id=144309&sid=b5b7f0899f8a67eb790457f5dea80cb4&mode=view' target=_blank>Загрузить оригинал (49.31 КБ)</a>
Аватара пользователя
Taganrog
Мастер
Сообщения: 1238
Зарегистрирован: 15 апр 2015, 16:32
Репутация: 284
Настоящее имя: Евгений
Откуда: Брянск
Контактная информация:

Re: G-коды

Сообщение Taganrog »

Попробуй так:

... шапка твоей программы
M98 P100 L10 (вызываем подпрограмму с номером 100 десять раз)
G1X100Y100 (едем допустим на второй ряд )
M98 P100 L10 (опять вызываем подпрограмму)
M30

O100
G91 (назначаем относительное перемещение)
G1X10 (смещаемся на 10 относительно текущей позиции)
G90 (возвращаем абсолютное перемещение)
Z0 (какая то работа)
Z30 (какая то работа)
M99

п.с. можно зациклить и второе смещение
Smlua
Мастер
Сообщения: 806
Зарегистрирован: 15 май 2017, 16:29
Репутация: 374
Настоящее имя: Mikhail
Контактная информация:

Re: G-коды

Сообщение Smlua »

g65 обычно для субпрограмм, например G65P10, а в P10 уже пишется все что нужно

если вручную пишется код - смотрите G37
 G37: Chessboard Drilling Cycle
Format:G37 Xx Yy IΔx Pnx JΔy Kny
Description:
Chessboard hole cycle.
X, Y: the first position to be drilled (G90/91 is influential)
I: hole interval in X axis
P: number of holes in X axis
J: hole interval in Y axis
K: number of holes in Y axis
G37 drills P*K holes in XY plane with XY as start position. The space between adjacent holes is Δx in X axis, while the space in Y-axis is Δy. And the tool moves from one hole to another one at G0 speed.

могут быть различные коэффициенты в зависимости от системы, но суть такая. Конкретно эта выписка из мануала NCStudio http://www.weihong.com.cn/en/uploads/so ... 112433.pdf
Portos
Мастер
Сообщения: 244
Зарегистрирован: 24 янв 2013, 21:28
Репутация: 37
Контактная информация:

Re: G-коды

Сообщение Portos »

Taganrog писал(а):Попробуй так:

... шапка твоей программы
M98 P100 L10 (вызываем подпрограмму с номером 100 десять раз)
G1X100Y100 (едем допустим на второй ряд )
M98 P100 L10 (опять вызываем подпрограмму)
M30

O100
G91 (назначаем относительное перемещение)
G1X10 (смещаемся на 10 относительно текущей позиции)
G90 (возвращаем абсолютное перемещение)
Z0 (какая то работа)
Z30 (какая то работа)
M99
п.с. можно зациклить и второе смещение
Спасибо по пробую.
Тоесть получается так что M98 вызов подпрограммы, а уже в самой мы задаем смещение в ряд, смещение в сеткой не сделать? а сама работа по детали вписывается в строки Z0....Z30?
Аватара пользователя
Taganrog
Мастер
Сообщения: 1238
Зарегистрирован: 15 апр 2015, 16:32
Репутация: 284
Настоящее имя: Евгений
Откуда: Брянск
Контактная информация:

Re: G-коды

Сообщение Taganrog »

Portos писал(а):а уже в самой мы задаем смещение в ряд
Верно в программе пишем те действия, которые надо повторять.
Portos писал(а): смещение в сеткой не сделать?
Напрашивается цикл в цикле, написать легко, но проверить не смогу,позволяет ли мач3 вызывать подпрограмму из подпрограммы?
Portos писал(а):а сама работа по детали вписывается в строки Z0....Z30?
Верно
Portos
Мастер
Сообщения: 244
Зарегистрирован: 24 янв 2013, 21:28
Репутация: 37
Контактная информация:

Re: G-коды

Сообщение Portos »

Taganrog писал(а):Попробуй так:
M98 P100 L10 (вызываем подпрограмму с номером 100 десять раз)
G1X100Y100 (едем допустим на второй ряд )
M98 P100 L10 (опять вызываем подпрограмму)
M30
O100
G91 (назначаем относительное перемещение)
G1X10 (смещаемся на 10 относительно текущей позиции)
G90 (возвращаем абсолютное перемещение)
Z0 (какая то работа)
Z30 (какая то работа)
попробовал, не получилось, фрезерует по одному месту (запустил по воздуху)
Portos
Мастер
Сообщения: 244
Зарегистрирован: 24 янв 2013, 21:28
Репутация: 37
Контактная информация:

Re: G-коды

Сообщение Portos »

Написал такой ради теста, может где ошибся?

G00 G49 G40.1 G17 G80 G50 G90
G0X0Y0
G21
(Setup 2)
G00 Z60.
X0. Y0.

M98 P100 L3
G1X0Y26
M98 P100 L3
M30

O100
G91
G1X10
G90

(Parallel Finishing)

M03 S16500
A+0. F800.
G01 X10. Y-16. Z16. F800.0
Z10. F300.0
X16. F500.0
Y-15.
X10.
Y-14.
X16.
Y-13.
X10.
Y-12.
X16.
Y-11.
X10.
Y-10.
X16.
Z15.
Z30.

M99
Smlua
Мастер
Сообщения: 806
Зарегистрирован: 15 май 2017, 16:29
Репутация: 374
Настоящее имя: Mikhail
Контактная информация:

Re: G-коды

Сообщение Smlua »

а так?

G91 G21

M98 P100 L10 (вызываем подпрограмму с номером 100 десять раз)
G1X100Y100 (едем допустим на второй ряд )
M98 P100 L10 (опять вызываем подпрограмму)
M30

O100
G1X10 (смещаемся на 10 относительно текущей позиции)
Z0 (какая то работа)
Z30 (какая то работа)
%
с Мах3 дело не имел, но по логике вещей G91 нужно задать перед циклом чтоб была точка отсчета
sas_75
Мастер
Сообщения: 463
Зарегистрирован: 10 мар 2015, 11:03
Репутация: 114
Настоящее имя: Сергей
Откуда: Владивосток
Контактная информация:

Re: G-коды

Сообщение sas_75 »

Portos писал(а):Написал такой ради теста, может где ошибся?

G00 G49 G40.1 G17 G80 G50 G90
G0X0Y0
G21
(Setup 2)
G00 Z60.
X0. Y0.

M98 P100 L3
G1X0Y26
M98 P100 L3
M30

O100
G91
G1X10
G90

(Parallel Finishing)

M03 S16500
A+0. F800.
G01 X10. Y-16. Z16. F800.0
Z10. F300.0
X16. F500.0
Y-15.
X10.
Y-14.
X16.
Y-13.
X10.
Y-12.
X16.
Y-11.
X10.
Y-10.
X16.
Z15.
Z30.

M99
В подпрограмме смещение задано в относительных координатах, и это правильно. Но вот далее идет переход к абсолютным и выполнение выборки (Parallel finishing). Поэтому каждый раз идет выполнение на одном и том же месте.
Выборку надо так же делать в относительных значениях координат, а не в абсолютных.
Portos
Мастер
Сообщения: 244
Зарегистрирован: 24 янв 2013, 21:28
Репутация: 37
Контактная информация:

Re: G-коды

Сообщение Portos »

sas_75 писал(а): В подпрограмме смещение задано в относительных координатах, и это правильно. Но вот далее идет переход к абсолютным и выполнение выборки (Parallel finishing). Поэтому каждый раз идет выполнение на одном и том же месте.
Выборку надо так же делать в относительных значениях координат, а не в абсолютных.
можно по подробнее, что-то я запутался уже.
sas_75
Мастер
Сообщения: 463
Зарегистрирован: 10 мар 2015, 11:03
Репутация: 114
Настоящее имя: Сергей
Откуда: Владивосток
Контактная информация:

Re: G-коды

Сообщение sas_75 »

Для Вашего примера подпрограмма будет выглядеть так:

O100
G91
G1X10

(Parallel Finishing)

M03 S16500
A+0. F800.
G01 X10. Y-16. Z-24. F800.0
Z-6. F300.0
X6. F500.0
Y1
X-6
Y1
X6
Y1
X-6
Y1
X6
Y1
X-6
Y1
X6
Z20
G90

M99

Как-то так
Portos
Мастер
Сообщения: 244
Зарегистрирован: 24 янв 2013, 21:28
Репутация: 37
Контактная информация:

Re: G-коды

Сообщение Portos »

sas_75 писал(а):Для Вашего примера подпрограмма будет выглядеть так:


Как-то так
получилось вот так и фрезерует также как на картинке со смещением в низ
Вложения
Снимок11.JPG (16085 просмотров) <a class='original' href='./download/file.php?id=144392&sid=b5b7f0899f8a67eb790457f5dea80cb4&mode=view' target=_blank>Загрузить оригинал (33.96 КБ)</a>
sas_75
Мастер
Сообщения: 463
Зарегистрирован: 10 мар 2015, 11:03
Репутация: 114
Настоящее имя: Сергей
Откуда: Владивосток
Контактная информация:

Re: G-коды

Сообщение sas_75 »

Да, действительно. Надо чуть по-другому.

G00 G49 G40.1 G17 G80 G50 G90
G0X0Y0
G21
(Setup 2)
G0 Z60

G0 X0 Y16
G0 Z16
M98 P100 L3
G0 X0 Y26
M98 P100 L3
G0 Z60
M30

O100
G91
G1 X10

(Parallel Finishing)

M03 S16500
A+0. F800.
G01 Z-6 F300.0
X6 F500.0
Y1
X-6
Y1
X6
Y1
X-6
Y1
X6
Y1
X-6
Y1
X6
G0 Z6
G90

M99
kalyuchiy
Новичок
Сообщения: 17
Зарегистрирован: 04 май 2018, 10:36
Репутация: 0
Настоящее имя: Андрей
Откуда: Луганск
Контактная информация:

Re: G-коды

Сообщение kalyuchiy »

banan123 писал(а):извините я не понял - после подпрограммы координату, из которой станок ушел в подпрограмму станок не "запоминает", и после каждого выхода из ПП (подпрограммы) нужно ему указывать. Можно ли это процесс "указывания" каждый раз новой координаты автоматизировать?
Не знаю как это реализовано в Mach3, могу рассказать как это работает в микропроцессорах Microchip. Там есть программный счетчик (PC, он же Programm Counter), в этом регистре содержится информация о номере строки выполняемой в данный момент команды. При выполнении подпрограммы в PC заносится номер строки, с которой процессор ушел в подпрограмму. РС может быть многоуровневым, т.к. при выполнении подпрограммы в РС все время заносится информация о номере строки выполняемой в данный момент команды. После выполнения и выхода из подпрограммы в РС загружается номер строки с которой процессор ушел в подпрограмму. Как то так.
Аватара пользователя
vitzin
Мастер
Сообщения: 410
Зарегистрирован: 27 фев 2020, 14:16
Репутация: 55
Настоящее имя: viktor vizin
Контактная информация:

Re: G-коды

Сообщение vitzin »

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

Наружняя фаска

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

g54 (ORIGINE LAVORAZIONE)
g90
T1M6 (fresatura ESTERNA TONDO- OPPURE di un cono convesso)
S9000m3F1000
#210=6(INPOSTA raggio fresa)
#200=52(INPOSTA diam cerchio)
#113=5 (INPOSTA profondita)
#103=.2 (INPOSTA valore Z incrementale)
#108=45 (INPOSTA gradi da fresare per cono)
#100=[[#200/2]+#210] (posizionamento asseX)
#114=fup[#113/#103] (arrotondamento passate)
#120=[#108*tan[#103]] (tangente per discesa ZETA)
#115=[#103-[#103+#103]] (valore opposto Z)
#121=[#113*tan[#108]] (tangente totale per attaccofuori)
#121=[#100+#121+#210] (calcolo di attacco)
g0x#121y0 (POSIZIONAMENTO)
g0z2
g1z0
M98 P101L#114(L=valore passate)
g0z80
M30
 (******************************************)
o101
g91
g1Z#115
G90
#100=[#100+#120]
#150=[[#121-#100]/2] (CALCOLO PER RAGGIO DI ATTACCO)
g3x#100 r#150 (ATTACCO interpolato)
#110=[#100-[#100+#100]]
g2x#100y0j0i#110 (ESECUZIONE interpolata TONDO)
g3x#121 r#150 (DISTACCO interpolato)
M99
Внутренняя фаска

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

g54 (ORIGINE LAVORAZIONE)
g90
T8M6 (fresatura ESTERNA TONDO- OPPURE di un cono convesso)
S9000m3F2000
#210=1,5(INPOSTA raggio fresa)
#200=12(INPOSTA diam cerchio)
#113=4(INPOSTA profondita)
#103=0.1 (INPOSTA valore Z incrementale)
#108=-45 (INPOSTA gradi da fresare per cono)
#100=[[#200/2]-#210] (posizionamento asseX)
#114=fup[#113/#103] (arrotondamento passate)
#120=[#108*tan[#103]] (tangente per discesa ZETA)
#115=[#103-[#103+#103]] (valore opposto Z)
#121=[#113*tan[#108]] (tangente totale per attaccofuori)
#121=[#100+#121-#210] (calcolo di attacco)
g0x#121y0 (POSIZIONAMENTO)
g0z2
g1z0
M98 P101L#114(L=valore passate)
g0z10
M30
 (******************************************)
o101
g91
g1Z#115
G90
#100=[#100+#120]
#150=[[#121-#100]/2] (CALCOLO PER RAGGIO DI ATTACCO)
g3x#100 r#150 (ATTACCO interpolato)
#110=[#100-[#100+#100]]
g3x#100y0j0i#110 (ESECUZIONE interpolata TONDO)
g3x#121 r#150 (DISTACCO interpolato)
M99
Аватара пользователя
ridirt
Мастер
Сообщения: 658
Зарегистрирован: 24 июл 2013, 23:52
Репутация: 273
Настоящее имя: Живописцев Андрей Викторович
Откуда: Спб
Контактная информация:

Re: G-коды

Сообщение ridirt »

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

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

XCurrent = GetDro(0)
YCurrent = GetDro(1)
hui = XCurrent / YCurrent
Ugol = ((Atn (hui)) *180)/3.14159265
Code "G68R" &-Ugol 
Руслан_cnc
Опытный
Сообщения: 199
Зарегистрирован: 12 фев 2012, 18:32
Репутация: 33
Контактная информация:

Re: G-коды

Сообщение Руслан_cnc »

Всем добрый день. Cтойка ADtech4640. Подскажите как корректно работать с G41, G42 и G40 при относительных перемещениях с G91. Столкнулся с такой ситуацией: делаю выборку фрезерованием с использованием G91. Вначале включаю левую коррекцию в пустое место на детали где нет металла, прохожу по контуру(всё в относительных перемещениях) дугами, далее линейное перемещение в пустое место с выключением компенсации и возврат в начальную точку, из которой начиналась обработка. Так вот при отмене компенсации фреза возвращается не туда куда надо. Если бы работал в абсолютных, то проблемы не возникло бы, но надо именно работать в относительных, так как следующая обработка кармана смещена относительно предидущей.Вот мой код

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

G90 G1 Z[#103] F500.
G91 G41 D1 X1.412 Y-8.718
X5.713 Y0.925
G3 X-2.217 Y14.598 R148.556
X-11.71 Y-1.897 R148.556
X2.503 Y-14.552 R148.556
G1 G40 X5.711 Y0.926
X-0.389 Y8.72
Розовая линия - это контур обработки. Начинаю из зелёной окружности, стрелками показано напр. движения фрезы.
для форума.jpg (3517 просмотров) <a class='original' href='./download/file.php?id=200331&sid=b5b7f0899f8a67eb790457f5dea80cb4&mode=view' target=_blank>Загрузить оригинал (64 КБ)</a>
Руслан_cnc
Опытный
Сообщения: 199
Зарегистрирован: 12 фев 2012, 18:32
Репутация: 33
Контактная информация:

Re: G-коды

Сообщение Руслан_cnc »

Всем добрый день. Cтойка ADtech4640. Подскажите как корректно работать с G41, G42 и G40 при относительных перемещениях с G91. Столкнулся с такой ситуацией: делаю выборку фрезерованием с использованием G91. Вначале включаю левую коррекцию в пустое место на детали где нет металла, прохожу по контуру(всё в относительных перемещениях) дугами, далее линейное перемещение в пустое место с выключением компенсации и возврат в начальную точку, из которой начиналась обработка. Так вот при отмене компенсации фреза возвращается не туда куда надо. Если бы работал в абсолютных, то проблемы не возникло бы, но надо именно работать в относительных, так как следующая обработка кармана смещена относительно предидущей. Без использования коррекции на радиус всё работает замечательно, но нужна коррекция для быстрой корректировки размера кармана с уклоном на стенках.
Вот мой код с коррекцией:

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

G90 G1 Z[#103] F500.
G91 G41 D1 X1.412 Y-8.718
X5.713 Y0.925
G3 X-2.217 Y14.598 R148.556
X-11.71 Y-1.897 R148.556
X2.503 Y-14.552 R148.556
G1 G40 X5.711 Y0.926
X-0.389 Y8.72
Розовая линия - это контур обработки. Начинаю из зелёной окружности, стрелками показано напр. движения фрезы. Выключение коррекции в синюю окружность.
для форума.jpg (3513 просмотров) <a class='original' href='./download/file.php?id=200333&sid=b5b7f0899f8a67eb790457f5dea80cb4&mode=view' target=_blank>Загрузить оригинал (64.25 КБ)</a>
Ответить

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