Страница 4 из 5

Re: G-коды

Добавлено: 09 май 2018, 13:54
banan123
у меня получается сейчас так:
- уход в подпрограмму
- координата1
- уход в подпрограмму
- координата2
******
******
******
- уход в подпрограмму
- координата 576

каждую координату описывать сложно, но координаты повторяются через равный промежуток.
Можно ли как-нибудь автоматизировать это?

Re: G-коды

Добавлено: 10 май 2018, 21:06
banan123
оказывается в G-коде переменные есть))) Вопрос решен.

Re: G-коды

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

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

не могу разобраться со смещениями, может кто на практике такое делал? буду признателен за помощь.

Re: G-коды

Добавлено: 10 авг 2018, 10:52
Taganrog
Попробуй так:

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

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

п.с. можно зациклить и второе смещение

Re: G-коды

Добавлено: 10 авг 2018, 11:06
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

Re: G-коды

Добавлено: 10 авг 2018, 13:51
Portos
Taganrog писал(а):Попробуй так:

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

O100
G91 (назначаем относительное перемещение)
G1X10 (смещаемся на 10 относительно текущей позиции)
G90 (возвращаем абсолютное перемещение)
Z0 (какая то работа)
Z30 (какая то работа)
M99
п.с. можно зациклить и второе смещение
Спасибо по пробую.
Тоесть получается так что M98 вызов подпрограммы, а уже в самой мы задаем смещение в ряд, смещение в сеткой не сделать? а сама работа по детали вписывается в строки Z0....Z30?

Re: G-коды

Добавлено: 10 авг 2018, 14:09
Taganrog
Portos писал(а):а уже в самой мы задаем смещение в ряд
Верно в программе пишем те действия, которые надо повторять.
Portos писал(а): смещение в сеткой не сделать?
Напрашивается цикл в цикле, написать легко, но проверить не смогу,позволяет ли мач3 вызывать подпрограмму из подпрограммы?
Portos писал(а):а сама работа по детали вписывается в строки Z0....Z30?
Верно

Re: G-коды

Добавлено: 12 авг 2018, 10:11
Portos
Taganrog писал(а):Попробуй так:
M98 P100 L10 (вызываем подпрограмму с номером 100 десять раз)
G1X100Y100 (едем допустим на второй ряд )
M98 P100 L10 (опять вызываем подпрограмму)
M30
O100
G91 (назначаем относительное перемещение)
G1X10 (смещаемся на 10 относительно текущей позиции)
G90 (возвращаем абсолютное перемещение)
Z0 (какая то работа)
Z30 (какая то работа)
попробовал, не получилось, фрезерует по одному месту (запустил по воздуху)

Re: G-коды

Добавлено: 12 авг 2018, 10:38
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

Re: G-коды

Добавлено: 12 авг 2018, 10:41
Smlua
а так?

G91 G21

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

O100
G1X10 (смещаемся на 10 относительно текущей позиции)
Z0 (какая то работа)
Z30 (какая то работа)
%
с Мах3 дело не имел, но по логике вещей G91 нужно задать перед циклом чтоб была точка отсчета

Re: G-коды

Добавлено: 12 авг 2018, 10:53
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). Поэтому каждый раз идет выполнение на одном и том же месте.
Выборку надо так же делать в относительных значениях координат, а не в абсолютных.

Re: G-коды

Добавлено: 12 авг 2018, 12:47
Portos
sas_75 писал(а): В подпрограмме смещение задано в относительных координатах, и это правильно. Но вот далее идет переход к абсолютным и выполнение выборки (Parallel finishing). Поэтому каждый раз идет выполнение на одном и том же месте.
Выборку надо так же делать в относительных значениях координат, а не в абсолютных.
можно по подробнее, что-то я запутался уже.

Re: G-коды

Добавлено: 12 авг 2018, 13:33
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

Как-то так

Re: G-коды

Добавлено: 12 авг 2018, 13:56
Portos
sas_75 писал(а):Для Вашего примера подпрограмма будет выглядеть так:


Как-то так
получилось вот так и фрезерует также как на картинке со смещением в низ

Re: G-коды

Добавлено: 12 авг 2018, 15:09
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

Re: G-коды

Добавлено: 03 июл 2019, 15:19
kalyuchiy
banan123 писал(а):извините я не понял - после подпрограммы координату, из которой станок ушел в подпрограмму станок не "запоминает", и после каждого выхода из ПП (подпрограммы) нужно ему указывать. Можно ли это процесс "указывания" каждый раз новой координаты автоматизировать?
Не знаю как это реализовано в Mach3, могу рассказать как это работает в микропроцессорах Microchip. Там есть программный счетчик (PC, он же Programm Counter), в этом регистре содержится информация о номере строки выполняемой в данный момент команды. При выполнении подпрограммы в PC заносится номер строки, с которой процессор ушел в подпрограмму. РС может быть многоуровневым, т.к. при выполнении подпрограммы в РС все время заносится информация о номере строки выполняемой в данный момент команды. После выполнения и выхода из подпрограммы в РС загружается номер строки с которой процессор ушел в подпрограмму. Как то так.

Re: G-коды

Добавлено: 21 апр 2020, 00:10
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

Re: G-коды

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

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

XCurrent = GetDro(0)
YCurrent = GetDro(1)
hui = XCurrent / YCurrent
Ugol = ((Atn (hui)) *180)/3.14159265
Code "G68R" &-Ugol 

Re: G-коды

Добавлено: 11 дек 2021, 16:33
Руслан_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 (3879 просмотров) <a class='original' href='./download/file.php?id=200331&sid=19f07f4b1d712328e760218b7ef846a1&mode=view' target=_blank>Загрузить оригинал (64 КБ)</a>

Re: G-коды

Добавлено: 11 дек 2021, 16:33
Руслан_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 (3875 просмотров) <a class='original' href='./download/file.php?id=200333&sid=19f07f4b1d712328e760218b7ef846a1&mode=view' target=_blank>Загрузить оригинал (64.25 КБ)</a>