Programowanie CNC od podstaw - G-code, kody M i bezpieczeństwo

Robert Borkowski .

26 maja 2026

Przykład G-code: G1 to typ komendy, X23 to parametr, F1000 to prędkość posuwu.

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ą.

Nowoczesna maszyna CNC z panelem sterowania, na którym widać ekran z danymi i schematem, a także klawiaturę i pokrętła do wprowadzania komend, w tym **g code**.

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.

  1. Określ geometrię i bazę. Ustal, gdzie znajduje się punkt zerowy programu oraz w którą stronę rosną osie X, Y i Z.
  2. Dobierz narzędzie. Zapisz jego średnicę, długość, numer w magazynie i wartość korekcji.
  3. 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.
  4. Zdefiniuj bezpieczne ruchy. Przed przejazdem w poziomie odsuń narzędzie w osi Z, aby nie przejechało przez detal lub uchwyt.
  5. Dodaj polecenia technologiczne. Włącz wrzeciono, chłodzenie i odpowiednie kompensacje w kolejności wymaganej przez sterownik.
  6. 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.

FAQ - Najczęstsze pytania

W zapisie N10 G01 X50.0 Y20.0 F250 numer N10 oznacza blok, G01 wybiera ruch liniowy, X i Y wskazują punkt docelowy, a F250 określa posuw 250 mm/min przy aktywnych milimetrach. Kolejne bloki tworzą ścieżkę narzędzia.
Kody G sterują ruchem narzędzia, układem współrzędnych i sposobem obróbki, na przykład G00 oznacza szybki przejazd, a G01 ruch liniowy z posuwem. Kody M obsługują funkcje pomocnicze maszyny, takie jak uruchomienie wrzeciona M03, chłodzenie M08 czy zakończenie programu M30.
Podstawowe polecenia są podobne, ale sterowniki mają własne dialekty. Różnice dotyczą między innymi cykli wiercenia, makr, parametrów, kompensacji i kodów M, dlatego program trzeba sprawdzić w instrukcji konkretnej obrabiarki oraz tabeli aktywnych kodów.
Należy zweryfikować punkt zerowy i aktywną bazę, szczególnie G54, jednostki G20 lub G21, tryb G90 albo G91, narzędzie, korekcje długości i promienia oraz wysokość bezpiecznego przejazdu. Następnie warto użyć symulatora lub pojedynczego bloku, wykonać przejazd testowy na sucho i rozpocząć pracę ze zmniejszoną prędkością.
Oceń artykuł

Średnia: 0.0 / 5 · 0 ocen

Tagi

g-code kody m cam kompensacja sterowanie cnc
Autor Robert Borkowski
Robert Borkowski
Nazywam się Robert Borkowski i od 15 lat zajmuję się techniką warsztatową, elektryką oraz automatyką. Moje zainteresowanie tymi dziedzinami zaczęło się w młodym wieku, kiedy to pasjonowałem się budową różnych urządzeń i rozwiązywaniem problemów technicznych. Fascynuje mnie, jak technologia wpływa na nasze życie i jak możemy ją wykorzystać do poprawy codziennych procesów. W moich tekstach staram się w przystępny sposób wyjaśniać złożone zagadnienia, porównując różne źródła informacji i śledząc najnowsze trendy w branży. Zależy mi na tym, aby dostarczać rzetelne, zrozumiałe i aktualne informacje, które pomogą czytelnikom lepiej zrozumieć otaczający ich świat technologii. Wierzę, że dobrze zorganizowana wiedza jest kluczem do efektywnego rozwiązywania problemów i podejmowania świadomych decyzji.
Komentarze (0)
Dodaj komentarz