Strona 1 z 2

Step and repeat w g-codzie?

: 28 gru 2013, 16:30
autor: oprawcafotografii
Bry :)

Moja znajomosc g-codow ogranicza sie do umiejetnosci wstawienia M8
na poczatku pliku prosze wiec o wyrozumialosc ;)

Mam nast. sprawe - frezuje mala forme 30(poziom)x20(pion)mm w wiekszej
ilosci gniazd na jednej formatce - powiedzmy ze blacha ma rozmiar 300x20mm
czyli chce zrobic dziesiec gniazd w poziomie ze skokiem co 30mm.
To tylko przyklad oczywiscie...

CAMem generuje kod na jedno gniazdo - chcialbym go uzyc jako procedure
wywolywania wiele razy. Kod dla jednego gniazda wyglada tak:

Kod: Zaznacz cały

%
(FILENAME: obadwa.nc)
(STOCK/BLOCK, 30.000, 20.000, 20.000, -0.000, -0.000, 20.000)
G21G64G17
G90
(TOOL/MILL,2.0000,0,10.0000,0.0)
M8
M6 T1
M3 S24000
G0X0.000Y0.000Z2.540
(Parallel Finish)
G0X4.750Y8.715
G1A0.000Z-0.160F1200.0
G1F1200.0
Y8.739Z-0.421
Y8.856Z-0.831
Y9.045Z-1.211
Y9.296Z-1.544
Y9.613Z-1.834
Y9.975Z-2.059
Y10.000Z-2.069
Y10.025Z-2.059
Y10.387Z-1.834
Y10.704Z-1.544
Y10.955Z-1.211
Y11.144Z-0.831
Y11.261Z-0.421
Y11.285Z-0.160
X4.800
Y11.261Z-0.421
...
...
duzo podobnych linijek ;)
...
...
Y8.739Z-0.421
Y8.715Z-0.160
G0Z2.540
M5
M30
(END)
(OF PROGRAM)
Oczywiscie taki pojedynczy kod zostanie wykonany w taki sposob, ze maszyna
wytnie go od wspolzednych 0,0 (lewy dolny rog).

I tu pytanie - czy w g-codzie da sie zrobic tak zeby zmienic zero materialu
i wywolac ponownie "procedure"?

Wygladalo by to tak:

ustaw zero materialu=0,0
skocz do procedury TNIJ GNIAZDO
ustaw zero materialu=30,0
skocz do procedury TNIJ GNIAZDO
ustaw zero materialu=60,0
skocz do procedury TNIJ GNIAZDO
ustaw zero materialu=90,0
skocz do procedury TNIJ GNIAZDO
...
ustaw zero materialu=270,0
skocz do procedury TNIJ GNIAZDO

Czyli chodzi o to zeby w kodzie byla jedna "procedura" frezowania gniazda
a tylko zmienial sie umowny poczatek startu pracy.

Jak to zrobic bo pewnie sie da?

q[/code]

: 28 gru 2013, 16:38
autor: WZÓR
Zrób z tego programu podprogram i zastosuj w programie głównym G10

Mariusz.

: 28 gru 2013, 17:06
autor: oprawcafotografii
Ba! To moje pierwsze minuty z g-codami ;)

Wymodzilem cos takiego ale nie wiem czy dobrze?

Kod: Zaznacz cały

%
G21G64G17
M6 T1
G90
M3 S24000
M5
M8

G52 X0
M98 P1
G52 X30
M98 P1

O1
G0X0.000Y0.000Z2.540
G0X4.750Y8.715
G1A0.000Z-0.160F1200.0
G1F1200.0
Y8.739Z-0.421
Y8.856Z-0.831
Y9.045Z-1.211
Y9.296Z-1.544
Y9.613Z-1.834
Y9.975Z-2.059
Y10.000Z-2.069
Y10.025Z-2.059
...
...
...
Y8.739Z-0.421
Y8.715Z-0.160
G0Z2.540
M99

M30

: 28 gru 2013, 17:08
autor: maz
da sie, ale z tego sie nie zrobi ;)

Nie zapominajmy o wspolrzednych przyrostowych ;)

Nie wiem, czy maszyna(sterowanie) podola.

Najlatwiej, to przesuwac sobie baze i tyle, ale jak chcesz programowo, to trzeba kod odpowiednio przygotowac, tzn zarowno ten podprogram jak i program z przesunieciem,

: 28 gru 2013, 17:10
autor: oprawcafotografii
No wlasnie wolalbym nie przesowac bazy recznie bo mozna sie pomylic i narobic szkod ;)

q

: 28 gru 2013, 17:46
autor: maz
Jeśli maszyna jest 1 bazowa - nie ma tzw offsetów na kilka baz, to zapętlenie programu nic nie da, jeśli podprogram - czyli kształt gniazda nie jest napisany w sposób przyrostowy.

Co z tego, że się wywoła ścieżkę jako podprogram, jak drugie wywołanie nic nie zmieni - współrzędnę w podprogramie są nadal te same bo są absolutne, baza ta sama.

czyli nic sie nie zmienia ;)

Najłatwiej jak już jest ściażka, użyć kilku baz, jeśli jest możliwość, wtedy przeróbka to 3 minuty

: 28 gru 2013, 18:16
autor: teles222
W linuxCNC używam do tego podprogramów i G92 do zmiany ofsetu

przykładowy programik

G21
G90
G64
G17
g40
G10 L1 P3 r 2.000
T3M6
S5000M03
g0 z 30.000
o<kontur1> sub
g0 x 85.000 y 85.000
g0 z 12.000
g1 z 0.000 f 400
g42
f2000
g1 x 74.664 y 95.000
g1 x 72.500 y 109.000
g1 x 52.500
g1 z 1.000
g1 x 37.500
g1 z 0.000
g1 x 17.500
g1 x 13.405 y 82.500
g1 z 1.000
g1 x 10.700 y 65.000
g1 z 0.000
g1 x 9.000 y 54.000
g2 x 0.000 y 45.000 r 9.000
g1 y 29.000
g3 x 35.000 y 1.022 r 49.410
g1 z 1.000
g3 x 55.000 y 1.022 r 49.410
g1 z 0.000
g3 x 90.000 y 29.000 r 49.410
g1 y 45.000
g2 x 81.000 y 54.000 r 9.000
g1 x 79.300 y 65.000
g1 z 1.000
g1 x 76.595 y 82.500
g1 z 0.000
g1 x 72.500 y 109.000
g1 z 13.000
g40
g0 z 30.000
o<kontur1>endsub
g0 x 0.000
o<kontur1>call (wywołanie podprogramu)
g40
g0 x 98.000
g92 x 0.000 (Zmiana ofsetu z x98 na x 0.000)
o<kontur1>call
g40
g0 x 98.000
g92 x 0.000
o<kontur1>call
g40
g0 x 98.000
g92 x 0.000
o<kontur1>call
g40
g0 z 35.000
g92.2
g0 x 356.200
y 209.200
g92 y 64.200 x 62.200
o<kontur1>call
g40
g92.2
g0 x 258.200
y 209.200
g92 y 64.200 x 62.200
o<kontur1>call
g40
g92.2
g0 x 160.200
y 209.200
g92 y64.200 x 62.200
o<kontur1>call
g40
g92.2
g0 x 62.200
y 209.200
g92 y 64.200
o<kontur1>call
g40
g0 z 30
g92.2
m5
g0 x 0.000 y 0.000
m2

Pozdrawiam

: 28 gru 2013, 18:53
autor: ma555rek
quote="oprawcafotografii"]ustaw zero materialu=0,0

program główny
jedź na pierwszy punkt G0 X0 Y0
M98 Pxxx Qx :wywołaj podprogram Pxxx procedura Qx razy
( wykonanie iluś tam detali)
G92.1 :odwołanie zmian na offsetach
M30

Pxxx :procedura TNIJ GNIAZDO
G92x0y0 : ustawienie lokalnego offsetu dla aktualnej pozycji.
obróbka gniazda
g0xoy30 :najazd na początek następnego detalu Następne wywołanie procedury ustawi w tym miejscu nowy offset
koniec procedury
M99

: 28 gru 2013, 18:58
autor: tomcat65
oprawcafotografii pisze:Wymodzilem cos takiego ale nie wiem czy dobrze?
Dobrze kombinujesz z G52. Jeśli przesunięcie detalu/gniazda jest o stałą wartość, to to też możesz zautomatyzować.
Drugą metodę podał kolega powyżej - G92.
Czy podprogram jest napisany absolutnie czy przyrostowo nie ma znaczenia. Po zmianie offsetu podprogram staruje od tymczasowego zera.

: 28 gru 2013, 19:16
autor: WZÓR
maz pisze: ...Najłatwiej jak już jest ściażka, użyć kilku baz, jeśli jest możliwość, wtedy przeróbka to 3 minuty
Też racja .... :smile:

@ oprawcafotografii - tak to się (np.) w Haas robi.

http://zapodaj.net/51458d6c621eb.jpg.html

p.s.
@ oprawcafotografii - na jakim sterowaniu i maszynie chcesz puścić ten program ?
..... jeszcze chwila , a będziemy mieć przykłady na HH. :wink:

Mariusz.