G-коды
-
- Новичок
- Сообщения: 19
- Зарегистрирован: 26 июн 2014, 13:37
- Репутация: 0
- Контактная информация:
Re: G-коды
у меня получается сейчас так:
- уход в подпрограмму
- координата1
- уход в подпрограмму
- координата2
******
******
******
- уход в подпрограмму
- координата 576
каждую координату описывать сложно, но координаты повторяются через равный промежуток.
Можно ли как-нибудь автоматизировать это?
- уход в подпрограмму
- координата1
- уход в подпрограмму
- координата2
******
******
******
- уход в подпрограмму
- координата 576
каждую координату описывать сложно, но координаты повторяются через равный промежуток.
Можно ли как-нибудь автоматизировать это?
-
- Новичок
- Сообщения: 19
- Зарегистрирован: 26 июн 2014, 13:37
- Репутация: 0
- Контактная информация:
Re: G-коды
оказывается в G-коде переменные есть))) Вопрос решен.
-
- Мастер
- Сообщения: 244
- Зарегистрирован: 24 янв 2013, 21:28
- Репутация: 37
- Контактная информация:
Re: G-коды
привет всем,
может кто поможет, засел с одной проблемой, не могу решить.
Есть деталь которую нужно размножить по средствам G-CODE со смещение к примеру в 10мм как на рисунке.
Почитал что M98 - команда вызова подпрограммы M99 - завершить подпрограмму, P№ - подпрограмма , O№ - сама подпрограмма
не могу разобраться со смещениями, может кто на практике такое делал? буду признателен за помощь.
может кто поможет, засел с одной проблемой, не могу решить.
Есть деталь которую нужно размножить по средствам G-CODE со смещение к примеру в 10мм как на рисунке.
Почитал что M98 - команда вызова подпрограммы M99 - завершить подпрограмму, P№ - подпрограмма , O№ - сама подпрограмма
не могу разобраться со смещениями, может кто на практике такое делал? буду признателен за помощь.
- Taganrog
- Мастер
- Сообщения: 1238
- Зарегистрирован: 15 апр 2015, 16:32
- Репутация: 284
- Настоящее имя: Евгений
- Откуда: Брянск
- Контактная информация:
Re: G-коды
Попробуй так:
... шапка твоей программы
M98 P100 L10 (вызываем подпрограмму с номером 100 десять раз)
G1X100Y100 (едем допустим на второй ряд )
M98 P100 L10 (опять вызываем подпрограмму)
M30
O100
G91 (назначаем относительное перемещение)
G1X10 (смещаемся на 10 относительно текущей позиции)
G90 (возвращаем абсолютное перемещение)
Z0 (какая то работа)
Z30 (какая то работа)
M99
п.с. можно зациклить и второе смещение
... шапка твоей программы
M98 P100 L10 (вызываем подпрограмму с номером 100 десять раз)
G1X100Y100 (едем допустим на второй ряд )
M98 P100 L10 (опять вызываем подпрограмму)
M30
O100
G91 (назначаем относительное перемещение)
G1X10 (смещаемся на 10 относительно текущей позиции)
G90 (возвращаем абсолютное перемещение)
Z0 (какая то работа)
Z30 (какая то работа)
M99
п.с. можно зациклить и второе смещение
-
- Мастер
- Сообщения: 806
- Зарегистрирован: 15 май 2017, 16:29
- Репутация: 374
- Настоящее имя: Mikhail
- Контактная информация:
Re: G-коды
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
если вручную пишется код - смотрите 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
-
- Мастер
- Сообщения: 244
- Зарегистрирован: 24 янв 2013, 21:28
- Репутация: 37
- Контактная информация:
Re: G-коды
Спасибо по пробую.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-коды
Верно в программе пишем те действия, которые надо повторять.Portos писал(а):а уже в самой мы задаем смещение в ряд
Напрашивается цикл в цикле, написать легко, но проверить не смогу,позволяет ли мач3 вызывать подпрограмму из подпрограммы?Portos писал(а): смещение в сеткой не сделать?
ВерноPortos писал(а):а сама работа по детали вписывается в строки Z0....Z30?
-
- Мастер
- Сообщения: 244
- Зарегистрирован: 24 янв 2013, 21:28
- Репутация: 37
- Контактная информация:
Re: G-коды
попробовал, не получилось, фрезерует по одному месту (запустил по воздуху)Taganrog писал(а):Попробуй так:
M98 P100 L10 (вызываем подпрограмму с номером 100 десять раз)
G1X100Y100 (едем допустим на второй ряд )
M98 P100 L10 (опять вызываем подпрограмму)
M30
O100
G91 (назначаем относительное перемещение)
G1X10 (смещаемся на 10 относительно текущей позиции)
G90 (возвращаем абсолютное перемещение)
Z0 (какая то работа)
Z30 (какая то работа)
-
- Мастер
- Сообщения: 244
- Зарегистрирован: 24 янв 2013, 21:28
- Репутация: 37
- Контактная информация:
Re: G-коды
Написал такой ради теста, может где ошибся?
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
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
-
- Мастер
- Сообщения: 806
- Зарегистрирован: 15 май 2017, 16:29
- Репутация: 374
- Настоящее имя: Mikhail
- Контактная информация:
Re: G-коды
а так?
G91 G21
M98 P100 L10 (вызываем подпрограмму с номером 100 десять раз)
G1X100Y100 (едем допустим на второй ряд )
M98 P100 L10 (опять вызываем подпрограмму)
M30
O100
G1X10 (смещаемся на 10 относительно текущей позиции)
Z0 (какая то работа)
Z30 (какая то работа)
%
с Мах3 дело не имел, но по логике вещей G91 нужно задать перед циклом чтоб была точка отсчета
G91 G21
M98 P100 L10 (вызываем подпрограмму с номером 100 десять раз)
G1X100Y100 (едем допустим на второй ряд )
M98 P100 L10 (опять вызываем подпрограмму)
M30
O100
G1X10 (смещаемся на 10 относительно текущей позиции)
Z0 (какая то работа)
Z30 (какая то работа)
%
с Мах3 дело не имел, но по логике вещей G91 нужно задать перед циклом чтоб была точка отсчета
-
- Мастер
- Сообщения: 463
- Зарегистрирован: 10 мар 2015, 11:03
- Репутация: 114
- Настоящее имя: Сергей
- Откуда: Владивосток
- Контактная информация:
Re: G-коды
В подпрограмме смещение задано в относительных координатах, и это правильно. Но вот далее идет переход к абсолютным и выполнение выборки (Parallel finishing). Поэтому каждый раз идет выполнение на одном и том же месте.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
Выборку надо так же делать в относительных значениях координат, а не в абсолютных.
-
- Мастер
- Сообщения: 244
- Зарегистрирован: 24 янв 2013, 21:28
- Репутация: 37
- Контактная информация:
Re: G-коды
можно по подробнее, что-то я запутался уже.sas_75 писал(а): В подпрограмме смещение задано в относительных координатах, и это правильно. Но вот далее идет переход к абсолютным и выполнение выборки (Parallel finishing). Поэтому каждый раз идет выполнение на одном и том же месте.
Выборку надо так же делать в относительных значениях координат, а не в абсолютных.
-
- Мастер
- Сообщения: 463
- Зарегистрирован: 10 мар 2015, 11:03
- Репутация: 114
- Настоящее имя: Сергей
- Откуда: Владивосток
- Контактная информация:
Re: G-коды
Для Вашего примера подпрограмма будет выглядеть так:
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
Как-то так
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
Как-то так
-
- Мастер
- Сообщения: 244
- Зарегистрирован: 24 янв 2013, 21:28
- Репутация: 37
- Контактная информация:
Re: G-коды
получилось вот так и фрезерует также как на картинке со смещением в низsas_75 писал(а):Для Вашего примера подпрограмма будет выглядеть так:
Как-то так
-
- Мастер
- Сообщения: 463
- Зарегистрирован: 10 мар 2015, 11:03
- Репутация: 114
- Настоящее имя: Сергей
- Откуда: Владивосток
- Контактная информация:
Re: G-коды
Да, действительно. Надо чуть по-другому.
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
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
-
- Новичок
- Сообщения: 17
- Зарегистрирован: 04 май 2018, 10:36
- Репутация: 0
- Настоящее имя: Андрей
- Откуда: Луганск
- Контактная информация:
Re: G-коды
Не знаю как это реализовано в Mach3, могу рассказать как это работает в микропроцессорах Microchip. Там есть программный счетчик (PC, он же Programm Counter), в этом регистре содержится информация о номере строки выполняемой в данный момент команды. При выполнении подпрограммы в PC заносится номер строки, с которой процессор ушел в подпрограмму. РС может быть многоуровневым, т.к. при выполнении подпрограммы в РС все время заносится информация о номере строки выполняемой в данный момент команды. После выполнения и выхода из подпрограммы в РС загружается номер строки с которой процессор ушел в подпрограмму. Как то так.banan123 писал(а):извините я не понял - после подпрограммы координату, из которой станок ушел в подпрограмму станок не "запоминает", и после каждого выхода из ПП (подпрограммы) нужно ему указывать. Можно ли это процесс "указывания" каждый раз новой координаты автоматизировать?
- vitzin
- Мастер
- Сообщения: 410
- Зарегистрирован: 27 фев 2020, 14:16
- Репутация: 55
- Настоящее имя: viktor vizin
- Контактная информация:
Re: G-коды
Сегодня надо было утопить болты с потайной головкой,а зенкера нема,и сверло не хотелась перетачивать,
да и деталь была на фрезере зажата,до чего даводит лень матушка.
была у меня програмка для фаски наружней,переделал методом тыка на внутреннюю,
может каму пригадится
Наружняя фаска
Внутренняя фаска
да и деталь была на фрезере зажата,до чего даводит лень матушка.
была у меня програмка для фаски наружней,переделал методом тыка на внутреннюю,
может каму пригадится
Наружняя фаска
Код: Выделить всё
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
- Мастер
- Сообщения: 663
- Зарегистрирован: 24 июл 2013, 23:52
- Репутация: 273
- Настоящее имя: Живописцев Андрей Викторович
- Откуда: Спб
- Контактная информация:
Re: G-коды
Для новичков, поворот оси координат можно сделать скриптом привязанным на какую либо кнопку. Скрипт так же вычисляет угол на основе арктангенса относительно двух отверстий, после поиска центра второго отверстия которое может быть как вверху так и в низу от центрального нажимаем кнопку и все поворачивается само.
Вот код скрипта, я его написал еще года два назад. Все гениальное просто.
Вот код скрипта, я его написал еще года два назад. Все гениальное просто.
Код: Выделить всё
XCurrent = GetDro(0)
YCurrent = GetDro(1)
hui = XCurrent / YCurrent
Ugol = ((Atn (hui)) *180)/3.14159265
Code "G68R" &-Ugol
-
- Опытный
- Сообщения: 199
- Зарегистрирован: 12 фев 2012, 18:32
- Репутация: 33
- Контактная информация:
Re: G-коды
Всем добрый день. 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
-
- Опытный
- Сообщения: 199
- Зарегистрирован: 12 фев 2012, 18:32
- Репутация: 33
- Контактная информация:
Re: G-коды
Всем добрый день. 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