G0 i G1 potrafią wyglądać podobnie w programie: po obu komendach maszyna jedzie do zadanych współrzędnych. Różnica jest jednak zasadnicza. G0 służy przede wszystkim do szybkiego pozycjonowania, natomiast G1 realizuje kontrolowany ruch liniowy z określonym posuwem. Pomylenie tych funkcji nie kończy się tylko kilkoma sekundami straty w cyklu. W złym miejscu G0 może skierować frez w uchwyt, imadło albo materiał z prędkością kilkudziesięciu metrów na minutę.
W kodzie spotkasz zarówno zapis G0 i G1, jak i G00 i G01. W typowych sterowaniach CNC są to te same polecenia. Ważniejsze od liczby zer jest zrozumienie, jaki tor ruchu maszyna faktycznie wykona, z jaką prędkością i co stanie się wtedy z pozostałymi osiami.
G0 — szybkie pozycjonowanie, które powinno odbywać się tylko w bezpiecznej przestrzeni
G0, czyli rapid traverse, służy do przemieszczania osi z prędkością szybkiego przejazdu maszyny. Najczęściej wykorzystuje się go wtedy, gdy narzędzie nie skrawa: podczas dojazdu nad detal, przejazdu pomiędzy operacjami, wycofania narzędzia czy powrotu w okolice pozycji wymiany.
Prosty blok może wyglądać tak:
G0 X50. Y30. Z20.
Sterowanie rozpoczyna ruch osi X, Y i Z do podanych współrzędnych. Nie oznacza to jednak, że każda obrabiarka wykona taki przejazd po identycznym torze.
To jeden z ważniejszych niuansów pracy z G0. Nie wolno automatycznie zakładać, że ruch szybki pomiędzy dwoma punktami zawsze będzie idealną prostą przestrzenną. Sposób synchronizacji osi zależy od sterowania i konfiguracji maszyny. W niektórych układach osie kończą ruch jednocześnie, w innych zachowanie może prowadzić do toru przypominającego przejazd typu „dog-leg”. Przy dużej ilości wolnej przestrzeni różnica jest nieistotna. Kilka milimetrów nad szczęką imadła — już nie.
Dlatego w praktyce bezpieczniej rozdzielać krytyczne przejazdy. Zamiast:
G0 X100. Y60. Z5.
często rozsądniej napisać:
G0 Z50.
G0 X100. Y60.
G0 Z5.
Najpierw narzędzie wychodzi na bezpieczną wysokość Z, potem przesuwa się w płaszczyźnie XY, a dopiero na końcu schodzi w stronę detalu. Program ma jeden blok więcej, ale łatwiej przewidzieć jego zachowanie.
Na współczesnych centrach obróbczych maksymalny szybki przesuw często wynosi około 20–50 m/min, a w maszynach nastawionych na wysoką dynamikę może przekraczać 60 m/min. Małe lub starsze obrabiarki bywają znacznie wolniejsze. Konkretna wartość wynika z parametrów producenta maszyny, a nie z programu G-code.
Komenda:
G0 X300.
nie oznacza więc „jedź z prędkością 300”. Oznacza: jedź do X300 w trybie szybkiego przejazdu.
Wpisany wcześniej parametr F zazwyczaj nie wyznacza prędkości G0. Szybkość można natomiast ograniczyć potencjometrem lub funkcją Rapid Override, zależnie od panelu sterowania. Podczas pierwszego przejazdu programu korzystanie z redukcji szybkich ruchów jest rozsądniejsze niż testowanie nowego programu przy 100% rapid.
G0 stosuj przede wszystkim do:
-
podnoszenia narzędzia na wysokość bezpieczną;
-
dojazdu nad punkt rozpoczęcia obróbki;
-
przejazdów pomiędzy oddalonymi fragmentami detalu;
-
odjazdu po zakończeniu operacji;
-
pozycjonowania przed rozpoczęciem ruchu roboczego.
Nie stosuj G0 tylko dlatego, że „będzie szybciej”, gdy narzędzie znajduje się kilka milimetrów od materiału, uchwytu lub sondy. Oszczędność jednej sekundy nie uzasadnia ruchu wykonywanego z prędkością wielokrotnie większą od normalnego posuwu roboczego.
G1 — ruch liniowy kontrolowany przez posuw F
G1, czyli interpolacja liniowa, każe sterowaniu poprowadzić narzędzie po linii prostej do wskazanego punktu z zaprogramowanym posuwem.
Przykład:
G1 X80. Y40. F350.
Przy pracy w układzie metrycznym G21 i trybie posuwu na minutę G94, wartość F350 oznacza posuw 350 mm/min.
Jeżeli przed tym blokiem narzędzie znajduje się w punkcie X20 Y40, maszyna wykona prostoliniowy ruch osi X od 20 do 80 mm.
G1 stosuje się przede wszystkim podczas:
-
frezowania prostych odcinków;
-
zagłębiania narzędzia z kontrolowanym posuwem;
-
toczenia odcinków prostoliniowych;
-
wykonywania faz i stożków przez jednoczesny ruch kilku osi;
-
kontrolowanego wejścia i wyjścia z materiału;
-
przejazdów, podczas których konieczna jest konkretna prędkość ruchu.
Przykładowa sekwencja na frezarce może wyglądać następująco:
G21
G90
G0 Z50.
G0 X20. Y20.
G0 Z5.
G1 Z-2. F120.
G1 X80. F400.
G1 Y60.
G0 Z50.
Tutaj logika jest czytelna. G0 szybko ustawia narzędzie nad miejscem rozpoczęcia obróbki. Ostatnie 7 mm ruchu osi Z — z poziomu Z5 do Z-2 — realizuje już G1 z posuwem 120 mm/min. Dopiero po osiągnięciu głębokości rozpoczyna się obróbka w osi X z posuwem 400 mm/min.
To znacznie lepszy schemat niż:
G0 Z-2.
jeżeli Z-2 znajduje się wewnątrz materiału. W takiej sytuacji narzędzie może wejść w detal z pełnym rapidem.
Trzeba też rozumieć modalność. G0 i G1 są funkcjami modalnymi w typowych sterowaniach CNC. Po uruchomieniu G1 pozostaje on aktywny aż do wywołania innej funkcji ruchu należącej do tej samej grupy, na przykład G0, G2 lub G3.
Dlatego:
G1 X50. F300.
Y40.
X10.
oznacza trzy kolejne ruchy wykonywane w trybie G1. Nie trzeba powtarzać G1 w każdym wierszu.
To wygodne, ale bywa źródłem błędów. Po kilkudziesięciu blokach programu operator widzi:
Z-15.
i bez sprawdzenia aktywnego trybu nie wie na pierwszy rzut oka, czy będzie to kontrolowany ruch roboczy, czy szybki przejazd. W programach pisanych ręcznie dobrze jest powtarzać kod ruchu w miejscach istotnych dla bezpieczeństwa, nawet jeżeli sterowanie tego technicznie nie wymaga. Program jest wtedy dłuższy o kilka znaków, ale łatwiejszy do kontroli.
Znaczenie parametru F zależy również od aktywnego trybu posuwu. Na frezarkach bardzo często spotkasz:
-
G94 — posuw na minutę, np. F500 oznacza 500 mm/min przy G21;
-
G95 — posuw na obrót, np. F0.2 oznacza 0,2 mm/obr. przy konfiguracji metrycznej.
Na tokarkach nazwy funkcji mogą się różnić w zależności od rodziny sterowania. Nie należy więc kopiować kodu z jednej maszyny na drugą bez sprawdzenia tabeli kodów G konkretnego sterownika.
Równie ważne są G90 i G91. G0 oraz G1 określają sposób wykonania ruchu, natomiast G90/G91 określają sposób interpretacji współrzędnych.
Przy:
G90
G1 X50.
X50 oznacza dojazd do absolutnej współrzędnej X50.
Przy:
G91
G1 X50.
ta sama wartość oznacza przesunięcie o 50 jednostek względem aktualnego położenia.
To drobna różnica w kodzie i ogromna różnica przy maszynie. Pozostawienie aktywnego G91 po cyklu przyrostowym jest jednym z błędów, które potrafią wysłać kolejne ruchy w zupełnie inne miejsce, niż zakładał programista.
Kiedy wybrać G0, a kiedy G1 — praktyczna reguła programowania
Najprostsza reguła brzmi: G0 używaj w wolnej przestrzeni, G1 tam, gdzie tor ruchu albo jego prędkość mają znaczenie dla bezpieczeństwa lub procesu technologicznego.
Nie oznacza to, że każdy ruch bez skrawania powinien być wykonywany przez G0. Jeżeli narzędzie przejeżdża blisko powierzchni, sondy, szczęki uchwytu albo innego elementu oprzyrządowania, kontrolowany ruch G1 może być lepszym wyborem mimo kilku dodatkowych sekund cyklu.
Przykład: między dwiema kieszeniami narzędzie ma przejechać 80 mm, ale znajduje się tylko 2 mm nad wystającym elementem mocującym. Są trzy sensowne rozwiązania:
-
podnieść Z na bezpieczną wysokość i dopiero wtedy użyć G0;
-
pozostawić niski poziom Z, ale przeprowadzić ruch przez G1 z rozsądnym posuwem;
-
zmienić punkt mocowania lub strategię obróbki, jeżeli podobnych przejazdów jest dużo.
Najgorszym rozwiązaniem jest pozostawienie 2 mm marginesu i użycie pełnego G0 tylko dlatego, że symulacja CAM nie zgłasza kolizji. Model uchwytu w CAM może być nieaktualny, detal może wystawać o kilka dziesiątych milimetra więcej, a rzeczywista długość narzędzia może różnić się od tej wpisanej w projekcie.
Przy ręcznym programowaniu dobrze działa kolejność:
G0 Z[wysokość bezpieczna]
G0 X... Y...
G0 Z[wysokość podejścia]
G1 Z[głębokość] F[posuw wejścia]
G1 X... Y... F[posuw roboczy]
Nie jest to obowiązkowy wzorzec dla każdej operacji, ale na frezarce 3-osiowej jest dobrym punktem wyjścia.
Szczególnej ostrożności wymagają:
-
pierwsze wejście narzędzia po zmianie T;
-
przejazdy nad imadłem, łapami mocującymi i śrubami;
-
ruchy po zmianie układu współrzędnych G54–G59;
-
programy korzystające z G91;
-
ruchy po korekcie długości narzędzia;
-
ponowne uruchamianie programu od środkowego bloku;
-
ręcznie dopisywane fragmenty do programu wygenerowanego z CAM.
Ten ostatni przypadek jest częstszy, niż może się wydawać. Operator poprawia jeden przejazd bezpośrednio przy maszynie, usuwa blok G1 albo G0 i nie zauważa, że kolejna współrzędna przejmuje poprzedni modalny tryb ruchu. Program formalnie pozostaje poprawny składniowo, ale maszyna wykonuje inny ruch.
Przy nauce warto dlatego ćwiczyć nie tylko samo wpisywanie komend, lecz także czytanie stanu modalnego sterowania i przewidywanie następnej pozycji maszyny. Dobry kurs CNC powinien prowadzić właśnie od takich podstaw do samodzielnej analizy programów, ustawiania układów bazowych i bezpiecznego uruchamiania obróbki.
Trzeba też rozdzielić dwie rzeczy: poprawność kodu i bezpieczeństwo kodu. Program:
G0 Z-20.
może być całkowicie poprawny dla sterownika. Jeżeli jednak pomiędzy aktualnym Z a Z-20 znajduje się detal, poprawny składniowo program staje się błędem technologicznym.
Podobnie wygląda kwestia optymalizacji czasu. Zastępowanie wszystkich przejazdów G1 przez G0 rzeczywiście może skrócić cykl. Najpierw trzeba jednak zwiększyć wysokość bezpieczną, przeanalizować oprzyrządowanie i sprawdzić tor każdej osi. Najpierw eliminacja ryzyka kolizji, dopiero potem skracanie przejazdów jałowych.
W praktyce najbardziej irytującym ograniczeniem G0 jest właśnie zależność od konkretnej maszyny. Ten sam program może przejść poprawnie na jednym centrum obróbczym, a po przeniesieniu na inną maszynę wymagać zmiany wysokości bezpiecznych lub kolejności ruchów. Kod ISO tworzy wspólną podstawę, ale ustawienia sterowania, dynamika osi i zachowanie rapidu nie są identyczne we wszystkich obrabiarkach.
FAQ — G0 i G1 w praktyce
Czy G0 zawsze jedzie po linii prostej?
Nie należy tego zakładać. Sposób realizacji szybkiego przejazdu zależy od sterowania i parametrów maszyny. Jeżeli tor przebiega blisko uchwytu lub detalu, rozdziel ruch osi albo użyj G1.
Czy w G0 trzeba podawać F?
Nie. Parametr F określa przede wszystkim posuw ruchu roboczego, np. przy G1. G0 korzysta z prędkości szybkiego przesuwu ustawionej dla danej maszyny i może być ograniczany funkcją Rapid Override.
Czy G1 bez F zadziała?
Jeżeli wcześniej została ustawiona modalna wartość F, sterowanie zwykle wykorzysta ją ponownie. Jeżeli prawidłowy posuw nie został wcześniej zdefiniowany, zachowanie zależy od sterownika i może pojawić się alarm. Nie opieraj bezpieczeństwa programu na domysłach — przed pierwszym G1 ustaw świadomie F.
Czy G1 służy wyłącznie do skrawania?
Nie. G1 warto użyć również przy przejazdach bez skrawania, jeżeli potrzebujesz kontrolowanej prędkości albo przewidywalnego ruchu po linii prostej.
Czy G0 i G1 trzeba wpisywać w każdym bloku?
Nie. Są modalne, więc pozostają aktywne do momentu wywołania innej funkcji ruchu z tej samej grupy. W krytycznych miejscach powtórzenie G0 lub G1 poprawia jednak czytelność programu.
Czy G0 może wykonywać ruch kilku osi naraz?
Tak. Można zadać jednocześnie na przykład X, Y i Z. Nie oznacza to jednak, że taki ruch zawsze jest najbezpieczniejszy. Przy przejazdach nad detalem lepiej najpierw podnieść Z, potem wykonać ruch XY.
Co jest szybsze: G0 czy G1?
G0 jest przeznaczone do szybkiego pozycjonowania i zwykle wykorzystuje znacznie większą prędkość niż typowy posuw roboczy G1. Nie powinno się jednak zastępować G1 przez G0 wewnątrz materiału ani w ciasnej przestrzeni tylko po to, żeby skrócić czas cyklu.
Czy G0 i G1 działają tak samo na frezarce i tokarce?
Ich podstawowa funkcja jest taka sama: G0 odpowiada za szybkie pozycjonowanie, a G1 za interpolację liniową z posuwem. Różnice pojawiają się w interpretacji osi, sposobie definiowania posuwu, ustawieniach sterowania i dodatkowych funkcjach charakterystycznych dla konkretnej maszyny.
Co sprawdzić przed pierwszym uruchomieniem programu?
Najpierw sprawdź wszystkie bloki G0 znajdujące się blisko detalu i oprzyrządowania. Potem zweryfikuj G90/G91, aktywny układ współrzędnych, korekcję długości narzędzia i wartości F. Pierwszy przejazd wykonaj z ograniczonym rapidem i możliwością natychmiastowego zatrzymania maszyny.
Jeżeli masz poprawić w programie tylko jedną rzecz, zacznij od ruchów G0 w osi Z i przejazdów G0 wykonywanych jednocześnie w kilku osiach. Ustal bezpieczną wysokość ponad detalem i najwyższym elementem mocowania, wycofuj narzędzie do tej wysokości przed szybkim ruchem XY, a dopiero później optymalizuj czas cyklu. To usuwa błąd, który ma najpoważniejsze konsekwencje: szybki przejazd narzędzia przez przestrzeń, która w rzeczywistości wcale nie jest wolna.
