Gdy frezarka lub tokarka CNC wykonuje ruch, który na pierwszy rzut oka wygląda jak zwykłe przesunięcie osi, w tle realizuje precyzyjny program zapisany w G-code. Wyjaśniam, jak czytać takie instrukcje, czym różnią się kody G od kodów M, jak napisać prosty program oraz gdzie najłatwiej popełnić kosztowny błąd. Pokazuję też, dlaczego ten sam zapis może zachować się inaczej na sterowaniu Fanuc, Haas, Siemens czy LinuxCNC.
Najważniejsze informacje o programowaniu CNC
- G-code steruje ruchem narzędzia, układem współrzędnych i sposobem obróbki.
- Kody M obsługują funkcje pomocnicze, takie jak wrzeciono, chłodzenie i zakończenie programu.
- G90 i G91 decydują, czy współrzędne są absolutne, czy przyrostowe.
- G54 wskazuje bazę przedmiotu, dlatego jej błędne ustawienie może zniszczyć detal lub narzędzie.
- Program trzeba sprawdzić w symulatorze, a pierwszy przejazd wykonać z bezpiecznym odstępem i zmniejszoną prędkością.

Czym właściwie jest G-code w maszynach CNC
G-code to tekstowy język poleceń, za pomocą którego sterowanie CNC interpretuje położenie osi, ruch narzędzia i parametry skrawania. Najprościej mówiąc, program mówi maszynie dokąd ma pojechać, jak szybko i w jaki sposób. Nie jest to jednak kompletny język programowania w takim sensie jak Python czy C++, choć bardziej rozbudowane sterowania pozwalają używać zmiennych, podprogramów i makr.Standard ISO 6983 opisuje format wielu programów NC, ale nie gwarantuje pełnej zgodności między wszystkimi maszynami. Producenci dodają własne funkcje, cykle i skróty, dlatego kod przygotowany dla jednego sterownika trzeba zawsze sprawdzić w instrukcji konkretnej obrabiarki. Ta zasada oszczędza wiele nerwów, szczególnie przy poleceniach dotyczących zmiany narzędzia, kompensacji i cykli wiercenia.
Jak wygląda pojedynczy blok programu
Program CNC składa się z bloków, czyli wierszy wykonywanych według określonej kolejności. Przykładowy zapis może wyglądać tak:
N10 G01 X50.0 Y20.0 F250
Litera N10 oznacza numer bloku. G01 wybiera interpolację liniową, czyli ruch po linii prostej, wartości X i Y wskazują punkt docelowy, a F250 oznacza posuw 250 mm/min, jeśli aktywne są milimetry. W zależności od sterowania można pomijać numery bloków, ale podczas nauki pomagają one znaleźć konkretną linię programu.
Do najczęściej spotykanych adresów należą X, Y, Z dla osi, F dla posuwu, S dla prędkości wrzeciona, T dla numeru narzędzia oraz H i D dla wartości kompensacji. Sam traktuję te litery jak krótkie parametry opisujące jeden ruch. Dopiero połączenie kilku bloków tworzy ścieżkę narzędzia.
Najważniejsze kody ruchu i funkcje pomocnicze
Nie trzeba zapamiętywać całej tablicy poleceń, aby zacząć czytać program. W codziennej pracy najczęściej wracają te same grupy kodów. Część z nich pozostaje aktywna do chwili wywołania innego polecenia, dlatego mówi się o nich jako o kodach modalnych.
| Kod | Znaczenie | Praktyczne zastosowanie |
|---|---|---|
| G00 | Szybki przejazd | Przemieszczenie narzędzia poza materiałem |
| G01 | Ruch liniowy z posuwem | Frezowanie, toczenie i wykonywanie prostych odcinków |
| G02 / G03 | Interpolacja kołowa | Łuki i zaokrąglenia zgodnie z kierunkiem ruchu |
| G17 / G18 / G19 | Wybór płaszczyzny | Odpowiednio XY, XZ lub YZ |
| G20 / G21 | Jednostki calowe lub metryczne | Ustalenie, jak sterowanie interpretuje wymiary |
| G54 | Układ współrzędnych przedmiotu | Przeniesienie zera programu na detal |
| G90 / G91 | Współrzędne absolutne lub przyrostowe | Określenie sposobu liczenia kolejnych pozycji |
| G43 | Kompensacja długości narzędzia | Uwzględnienie rzeczywistej długości freza |
Kody M sterują funkcjami maszyny, a nie geometrią. M03 uruchamia wrzeciono w określonym kierunku, M05 je zatrzymuje, M08 włącza chłodziwo, M09 je wyłącza, a M30 kończy i często resetuje program. Konkretne zachowanie może się różnić, dlatego przed użyciem nietypowego kodu sprawdzam dokumentację sterowania.
Przykład prostego programu frezarki
%
O1001
G21 G17 G90 G54
T1 M06
S3000 M03
G00 Z5.0
G00 X10.0 Y10.0
G01 Z-1.0 F100
G01 X60.0 F250
G01 Y40.0
G01 X10.0
G01 Y10.0
G00 Z5.0
M05
M30
%
Ten przykład zakłada frezowanie prostokątnego konturu na głębokości 1 mm. Najpierw program ustawia milimetry, płaszczyznę XY, tryb absolutny i bazę G54, potem wybiera narzędzie, uruchamia wrzeciono i wykonuje przejazdy robocze z posuwem.
Nie należy uruchamiać takiego kodu bez sprawdzenia punktu zerowego, średnicy narzędzia, korekcji długości i parametrów materiału. Program pokazuje logikę zapisu, ale nie uwzględnia na przykład kompensacji promienia narzędzia G41/G42. Bez niej środek freza poruszałby się po zadanym konturze, a niekoniecznie jego krawędź.
Jak przygotować program CNC krok po kroku
Ręczne pisanie ma sens przy prostych detalach, poprawkach i nauce. Przy skomplikowanych kształtach korzystam z systemu CAM, który przelicza geometrię na ścieżki narzędzia. Nawet wtedy operator powinien rozumieć kod, bo CAM nie sprawdzi za człowieka, czy zero detalu ustawiono w odpowiednim miejscu.
- Określ geometrię i bazę. Ustal, gdzie znajduje się punkt zerowy programu oraz w którą stronę rosną osie X, Y i Z.
- Dobierz narzędzie. Zapisz jego średnicę, długość, numer w magazynie i wartość korekcji.
- Ustaw parametry skrawania. Prędkość obrotową S i posuw F dobierz do materiału, średnicy narzędzia, głębokości skrawania i sztywności maszyny.
- Zdefiniuj bezpieczne ruchy. Przed przejazdem w poziomie odsuń narzędzie w osi Z, aby nie przejechało przez detal lub uchwyt.
- Dodaj polecenia technologiczne. Włącz wrzeciono, chłodzenie i odpowiednie kompensacje w kolejności wymaganej przez sterownik.
- Zweryfikuj program. Użyj symulatora, podglądu grafiki lub pojedynczego bloku, a pierwszy przejazd wykonaj na sucho.
W programie warto jasno oddzielać przygotowanie maszyny od właściwej obróbki. Początkowe ustawienia, takie jak G21, G90, G17 i G54, ograniczają ryzyko, że maszyna odziedziczy nieoczekiwany tryb po poprzednim programie. Nie każde sterowanie wymaga identycznego nagłówka, ale jawne ustawianie trybów jest dobrą praktyką.
Różnica między frezarką, tokarką i routerem
Ta sama składnia może prowadzić do zupełnie innej obróbki, bo maszyny mają różne układy osi i sposoby mocowania narzędzia. We frezarce narzędzie obraca się wokół osi wrzeciona i pracuje zwykle w przestrzeni X, Y, Z. Na tokarce najczęściej obraca się przedmiot, a narzędzie porusza się w osiach X i Z.
| Maszyna | Typowe zadanie | Na co uważać |
|---|---|---|
| Frezarka CNC | Kieszenie, otwory, kontury, powierzchnie | Długość narzędzia, promień freza i kolizje z uchwytem |
| Tokarka CNC | Planowanie, toczenie średnicy, gwintowanie | Kierunek osi X, punkt odniesienia i geometria płytki |
| Router CNC | Cięcie płyt, drewna, tworzyw i aluminium | Mocowanie materiału, pył, mała sztywność i prędkość posuwu |
Dlatego nie kopiuję programu z internetu bez sprawdzenia jego przeznaczenia. Kod dla routera może wyglądać podobnie do kodu frezarki, ale różnić się układem zera, sterowaniem wrzeciona i obsługą krańcówek. W praktyce podobieństwo zapisu bywa zdradliwe.
Dlaczego ten sam G-code nie działa wszędzie tak samo
Najczęstsze nieporozumienie polega na traktowaniu G-code jak jednego, identycznego języka. Podstawowe polecenia są szeroko rozpowszechnione, ale sterowniki mają własne dialekty. Haas może obsługiwać określony cykl inaczej niż Fanuc, a LinuxCNC korzysta z odmiany RS274/NGC opisanej szczegółowo w swojej dokumentacji.
Różnice dotyczą między innymi cykli wiercenia, makr, parametrów, kompensacji i komend M. Nawet jeśli kod przejdzie przez kontrolę składni, nie oznacza to, że narzędzie wykona bezpieczny ruch. Zawsze sprawdzam instrukcję konkretnej maszyny oraz tabelę aktywnych kodów.
Najważniejsze pułapki zgodności
- Jednostki G20/G21 mogą zmienić interpretację wszystkich wymiarów. Wartość 10 może oznaczać 10 mm albo 10 cali.
- Tryb G90/G91 wpływa na każdą kolejną współrzędną. W trybie przyrostowym X10 oznacza przesunięcie o 10, a nie przejazd do pozycji X10.
- Aktywny G54 może wskazywać inną bazę niż zakładana przez autora programu.
- Kody modalne pozostają aktywne. Po jednym G01 kolejny blok bez G-code nadal może wykonywać ruch roboczy.
- Kompensacja narzędzia musi odpowiadać rzeczywistym wartościom wpisanym do tabeli korekcji.
To właśnie dlatego program powinien zawierać bezpieczne, jednoznaczne ustawienia początkowe i końcowe. Nie polegam wyłącznie na tym, że poprzedni program zostawił maszynę w odpowiednim trybie. Taka oszczędność kilku wierszy nie daje realnej korzyści, a może skończyć się kolizją.
Błędy początkujących, które najłatwiej przewidzieć
Pierwszy błąd zwykle nie wynika z nieznajomości kodu, lecz z pominięcia czynności przygotowawczych. Program może być logiczny, a mimo to narzędzie wejdzie w materiał w złym miejscu, jeśli punkt zerowy ustawiono na powierzchni zamiast na środku detalu.
Brak kontroli wysokości bezpiecznej
Przejazd G00 jest szybki i nie służy do skrawania. Jeśli narzędzie pozostaje na wysokości Z-2, a program wykonuje szybki ruch do kolejnego punktu, może przeciąć detal, imadło albo szczęki uchwytu. Bezpieczna wysokość zależy od maszyny i mocowania, ale powinna uwzględniać najwyższy element znajdujący się na drodze narzędzia.
Pomylenie punktu zerowego
Zero programu nie musi znajdować się w tym samym miejscu co zero maszynowe. G54, G55 i kolejne układy pozwalają ustawić różne bazy, lecz operator musi wiedzieć, która z nich jest aktywna. Przed startem porównuję współrzędne z rysunkiem i sprawdzam, czy pozycja narzędzia odpowiada rzeczywistemu położeniu detalu.
Zły posuw albo obroty
Wartość F250 nie jest uniwersalna. Dla małego freza w aluminium może być rozsądna, a dla dużego narzędzia w stali już zupełnie nieodpowiednia. Zbyt mały posuw może powodować tarcie i przegrzewanie, natomiast zbyt duży zwiększa obciążenie ostrza i ryzyko złamania.
Brak symulacji i przejazdu testowego
Najbezpieczniej najpierw obejrzeć ścieżkę w symulatorze, a później uruchomić program z uniesionym narzędziem lub z dala od materiału. Pomagają też pojedynczy blok, zmniejszona prędkość i przycisk zatrzymania awaryjnego. Nie zastępują one przygotowania, ale dają operatorowi czas na zauważenie błędnego kierunku ruchu.
Jak rozsądnie uczyć się programowania CNC
Na początku nie próbowałbym zapamiętać setek kodów. Lepiej opanować kilkanaście podstawowych poleceń i ćwiczyć je na prostych kształtach: prostokącie, otworach, kieszeni oraz łuku. Taka nauka pokazuje zależność między rysunkiem, współrzędnymi i ruchem maszyny.
Dobrym ćwiczeniem jest rozpisanie programu dla detalu o wymiarach 50 x 30 mm. Najpierw wybiera się bazę, potem punkty narożne, wysokość bezpieczną, głębokość obróbki i posuw. Dopiero na końcu warto dodać chłodzenie, zmianę narzędzia oraz bardziej zaawansowane cykle.
Ja uczę się każdego sterowania z jego własną instrukcją, a nie z przypadkowej tabeli znalezionej w sieci. Tabele są przydatne jako ściąga, lecz nie pokazują wszystkich warunków użycia danego polecenia. Szczególnie ostrożnie podchodzę do makr i cykli, bo ich składnia może różnić się między producentami.
Przeczytaj również: Jak wybrać CAM? Poradnik dla warsztatów CNC
Ręczne pisanie czy program CAM
| Metoda | Kiedy ma sens | Ograniczenie |
|---|---|---|
| Programowanie ręczne | Proste kontury, poprawki, krótkie cykle i nauka | Łatwo pomylić współrzędne i parametry |
| System CAM | Złożone powierzchnie, wiele przejść i optymalizacja ścieżki | Wygenerowany kod nadal wymaga kontroli |
| Programowanie konwersacyjne | Szybkie przygotowanie prostych operacji przy maszynie | Mniejsza elastyczność przy nietypowej geometrii |
CAM przyspiesza pracę, ale nie zwalnia z odpowiedzialności za wynik. Zły model, niewłaściwy postprocesor albo błędne ustawienie półfabrykatu wygenerują kod, który wygląda profesjonalnie, a nadal jest niebezpieczny. Najlepsze efekty daje połączenie automatyzacji z umiejętnością czytania kilku pierwszych i ostatnich bloków programu.
Od poprawnego kodu do bezpiecznej obróbki
Dobry program CNC nie jest tylko zbiorem działających poleceń. Powinien jasno określać jednostki, bazę, narzędzie, wysokości bezpieczeństwa i zakończenie pracy. Poprawność składni to dopiero pierwszy etap, bo o rezultacie decydują również mocowanie, stan narzędzia, materiał i ustawienia sterownika.
Najrozsądniejszy schemat pracy wygląda tak: sprawdzam dokumentację maszyny, przygotowuję bazę, kontroluję tabelę narzędzi, symuluję ścieżkę, wykonuję przejazd testowy i dopiero wtedy rozpoczynam skrawanie. Taki proces może wydawać się wolniejszy przy prostym detalu, ale przy pierwszej kolizji oszczędność czasu znika natychmiast.
Gdy podstawowe kody są już zrozumiałe, nauka kolejnych funkcji staje się znacznie łatwiejsza. Zamiast zapamiętywać przypadkowe komendy, można świadomie dobierać cykle, kompensacje i strategie CAM do konkretnej operacji, a każdą zmianę oceniać przez pryzmat bezpieczeństwa i jakości powierzchni.