G-code a kompensacja promienia: typowe alarmy przy wejściu i wyjściu z korekcji

0
6
Rate this post

Nawigacja po artykule:

Po co w ogóle używać kompensacji promienia w sterowaniu?

Ścieżka teoretyczna vs rzeczywisty tor środka narzędzia

Kontur na rysunku technicznym opisuje nominalny kształt detalu, a nie tor środka frezu. Program CAM najczęściej generuje ścieżkę jako linię odniesienia – dokładnie po konturze części lub z offsetem. Sterowanie CNC musi na tej podstawie obliczyć, gdzie faktycznie ma jechać środek narzędzia, uwzględniając promień frezu.

Jeżeli kompensacja promienia jest włączona (G41 lub G42), sterowanie „odsuwia” ścieżkę środka narzędzia od konturu o wartość promienia wpisaną w tabeli korekcji. Dzięki temu można na maszynie korygować wymiar bez zmiany G-code, np. gdy frez jest lekko zużyty lub gdy trzeba „podostrzyć” wymiar o kilka setek.

Bez kompensacji promienia w sterowaniu, każdy milimetr musi być „zaprogramowany” już w CAM – z uwzględnieniem rzeczywistego promienia narzędzia. Przy zmianie narzędzia czy korektach wymiaru trzeba wtedy generować kod NC od nowa. Czy u ciebie zmiany narzędzi i drobne poprawki wymiarów zdarzają się często?

Korekcja promienia w sterowaniu vs korekta w CAM

Strategie są dwie: korekta w sterowaniu (G41/G42) albo korekta wyłącznie w CAM (offsety w ścieżce, brak kompensacji w maszynie). W wielu zakładach łączy się te podejścia, ale dominujące jest jedno z nich.

Przy korekcji w sterowaniu:

  • G-code opisuje nominalny kontur części.
  • W tabeli korekcji wpisujesz nominalny lub zmierzony promień narzędzia.
  • Drobne poprawki wymiaru robisz zmianą zużycia (wear) lub korekty promienia bez dotykania programu.

Przy korekcji w CAM:

  • Ścieżka CAM od razu jest odsunięta o promień narzędzia.
  • W G-code często nie używa się G41/G42, albo używa się ich w trybie „wear” z małymi wartościami.
  • Każda zmiana promienia lub narzędzia wymaga regeneracji programu w CAM.

Wybór strategii ma ogromne znaczenie dla typowych alarmów związanych z kompensacją promienia. Im więcej logiki przerzucasz na sterowanie, tym bardziej musisz pilnować warunków wejścia i wyjścia z kompensacji. Który model dominuje u ciebie: maksymalna kontrola w CAM, czy większa elastyczność na maszynie?

Gdzie kompensacja promienia naprawdę pomaga

Są sytuacje, w których kompensacja promienia w sterowaniu wręcz ratuje produkcję:

  • Seria z odchyłkami materiału lub obróbki wstępnej – lekkie różnice naddatku można „złapać” korekcją promienia.
  • Pojedyncze sztuki, prototypy – nie chcesz za każdym razem wracać do CAM po każdej poprawce o 0,02 mm.
  • Bardzo ciasne tolerancje kształtu – szlifierz lub operator może w „okienku” korekcji doregulować wymiar, patrząc na pomiar CMM lub mikrometru.
  • Zmiana partii narzędzi – nowe frezy mają inne zużycie i minimalnie inny rzeczywisty promień.

Bez kompensacji promienia w sterowaniu każde takie zdarzenie to przestój: korekta modelu, regeneracja ścieżki, postproces, przeniesienie programu. Z G41/G42 często wystarczy dopisać 0,01 do jednej pozycji w tabeli korekcji.

Pytanie o priorytety: szybkość programowania czy elastyczna korekta?

Spróbuj odpowiedzieć sam przed sobą: jaki masz główny cel?

  • Minimalizacja czasu programowania w CAM, ale kosztem większej odpowiedzialności operatora i sterowania?
  • Czy pełna kontrola w CAM, z maksymalnie prostą logiką w sterowaniu i mniejszą elastycznością na maszynie?

Jeśli wybierasz pierwszą opcję, tematy wejścia i wyjścia z kompensacji trzeba mieć „w palcu”, bo to będą główne źródła alarmów. Jeżeli drugą – większość alarmów z G41/G42 zniknie, ale stracisz część możliwości szybkiej korekty bez przebudowy programu.

Podstawy G41/G42/G40 – jak myśli sterowanie CNC

G41 i G42 – lewa i prawa strona konturu

G41 i G42 definiują, po której stronie konturu ma znaleźć się środek narzędzia względem kierunku ruchu.

  • G41 – kompensacja promienia po lewiej stronie względem kierunku ruchu narzędzia po konturze.
  • G42 – kompensacja promienia po prawej stronie względem kierunku ruchu.

Nie chodzi o lewo/prawo na ekranie, tylko o to, gdzie masz kontur po swojej lewej/prawej stronie, jeśli przesuwasz się wzdłuż niego zgodnie z zaprogramowanym kierunkiem. To częste źródło błędów początkujących – odwrócenie kierunku powoduje konieczność zamiany G41 na G42 i odwrotnie.

Jeżeli obiegasz kieszeń w lewo (przeciw zegarowi), typowo użyjesz G41 (kontur po lewej). Jeżeli to obróbka zewnętrznego konturu w prawo (zgodnie z zegarem), również zwykle wybierasz G41. Ale wszystko zależy od tego, czy program opisuje wewnętrzny czy zewnętrzny obrys. Jak rozwiązujesz to u siebie: polegasz na CAM, czy świadomie kontrolujesz kierunek i stronę kompensacji?

Anulowanie kompensacji promienia G40 i jego skutki

G40 wyłącza kompensację promienia. To oznacza, że od pierwszego bloku po G40 sterowanie zakłada, że programowane współrzędne to znów tor środka narzędzia, a nie kontur części.

Istnieją dwa warianty użycia:

  • G40 w tym samym bloku co ruch – sterowanie musi w jednym kroku „ściągnąć” narzędzie z odsuniętej ścieżki na tor nominalny, co bywa niemożliwe geometrycznie i generuje alarmy.
  • G40 w oddzielnym bloku, bez ruchu lub z minimalnym przesunięciem – maszyna ma więcej „logicznej przestrzeni” na obliczenie przejścia i najczęściej akceptuje taki kod.

Jeżeli wywołasz G40, a w następnym bloku wykonasz ruch, ścieżka w tym kolejnym bloku będzie już liczona bez kompensacji. Kluczem jest, by przejście z toru odsuniętego (G41/G42) na tor nominalny nie wymagało nierealnego, „nieskończenie ostrego” ruchu.

Interpolacja liniowa vs kołowa przy kompensacji promienia

Sterowanie liczy kompensację promienia współpracując zarówno z odcinkami prostymi (G01), jak i z łukami (G02/G03). W każdym przypadku musi sprawdzić, czy istnieje rozwiązanie geometryczne:

  • dla linii – czy jest miejsce, by środek narzędzia znalazł się w odsunięciu o promień, nie łamiąc poprzednich i następnych przejść,
  • dla łuków – czy promień toru środka narzędzia jest dodatni i większy od zera, oraz czy nie powstaje sprzeczność (np. promień łuku konturu mniejszy niż promień narzędzia).

Przy interpolacji kołowej szczególnie łatwo o alarmy typu „radius too small” albo „improper arc with cutter compensation”, jeśli promień frezu zbliża się do promienia naroża na konturze. Jeżeli projektant narysował ostre naroże z zaokrągleniem 1 mm, a ty chcesz to robić frezem R1,5 i dodatkowo użyć kompensacji G41, sterowanie zwyczajnie nie znajdzie poprawnej trajektorii środka narzędzia.

Różnice między sterowaniami: Fanuc, Haas, Siemens, Heidenhain (ISO)

Ogólna idea G41/G42 jest wspólna, ale szczegóły działania różnią się między producentami sterowań. Warto zestawić kilka typowych zachowań:

SterowanieTypowe oznaczenia i cechy
Fanuc / Haas / OSP (ISO)G41/G42/G40, korekcja D (promień), dokładne wymogi co do długości segmentów wejścia/wyjścia, częste alarmy „improper cutter compensation”.
Siemens (ShopMill / ISO)Podobne G41/G42, ale dodatkowe tryby, często lepsze „look-ahead”; w zależności od cyklu część geometrii liczy sterowanie, a część program.
Heidenhain (ISO)W trybie ISO – G41/G42, ale klasycznie używa się cykli i funkcji FK; sterowanie potrafi samo „domyślić się” części trajektorii, jednak w ISO obowiązują podobne ograniczenia jak na Fanucu.

Niektóre sterowania oferują specjalne warianty kompensacji (np. Fanuc G41.1, G41.2 – zaawansowane tryby, 3D tool compensation, NURBS itp.), które lepiej radzą sobie z krótkimi odcinkami i skomplikowaną geometrią. Jeżeli dostajesz dużo alarmów przy G41/G42, warto sprawdzić w instrukcji, czy twoje sterowanie nie ma dodatkowego trybu, który lepiej obsłuży daną strategię CAM.

Prosty przykład sekwencji G41 / kontur / G40

Praktyczny minimalny schemat obróbki konturu z kompensacją promienia może wyglądać tak:

G0 X-5 Y-5 Z5
G1 Z0 F200
G41 D01 X0 Y-5 F300    (wejście w kompensację, najazd przed konturem)
X50 Y-5                (start konturu)
Y30
X0
Y0
G40 X-5 Y0             (wyjście z kompensacji, odjazd od konturu)
G0 Z50

Wejście w G41 następuje na odcinku, który daje sterowaniu miejsce na odsunięcie toru narzędzia od konturu. G40 jest wywołane na końcu konturu, ale w bloku z ruchem odjeżdżającym od detalu. Jeżeli usuniesz odjazd i spróbujesz dać G40 w samym narożu, łatwo wywołasz alarm przy wyjściu z kompensacji.

Dane w tabelach korekcji – bez poprawnych wartości sterowanie nie ma z czego liczyć

Co musi być poprawnie ustawione: promień, numer D/R, korekta zużycia

Kompensacja promienia opiera się na tym, że sterowanie zna rzeczywisty promień narzędzia. Zwykle wprowadzany jest on w tabeli narzędzi jako:

  • Dxx – numer korekcji promienia (Fanuc, Haas i pochodne),
  • R lub rad. – wartość promienia,
  • czasem osobno pole geometria i zużycie (wear), które się sumują.

W programie G-code przywołujesz korekcję, np. G41 D03. Sterowanie wtedy sięga do tabeli, bierze promień i używa go do odsunięcia ścieżki. Jeżeli tabela jest pusta lub numer D nie istnieje, typowe sterowania zgłoszą alarm już przy próbie wejścia w G41/G42.

Skutki pustej lub błędnej wartości promienia

Co się dzieje, gdy promień w tabeli jest niepoprawny?

  • Promień = 0 (lub puste pole) – sterowanie nie ma czego kompensować; część maszyn zgłosi alarm, inne „udają”, że kompensacja jest zerowa, co prowadzi do obróbki dokładnie po konturze, ale bez świadomości programisty.
  • Promień za duży – sterowanie przy wejściu/wyjściu z G41/G42 nie jest w stanie znaleźć sensownej trajektorii i rzuca alarmem typu „radius too large”, „interference in cutter comp”, „cutter comp not possible”.
  • Zły numer D – odwołanie do niewłaściwego wpisu; program oczekuje np. frezu Ø10, a tabela ma tam dane od Ø16, więc wszystkie przejścia w narożach i łukach nagle przestają się „zamykać”.

Czy zdarzyło ci się, że program testowy działał na symulacji CAM, a na maszynie na pierwszym G41 pojawia się alarm? W pierwszej kolejności spójrz wtedy nie na G-code, lecz na tabelę korekcji – czy numer D i promień zgadzają się z założeniami CAM.

Geometria vs długość – dwa różne światy korekcji

Na wielu sterowaniach korekcje są rozdzielone:

  • korekcja długości (Hxx – wysokość narzędzia, kompensacja w osi Z),
  • korekcja promienia (Dxx lub Rxx – odsunięcie w płaszczyźnie XY).

Zdarza się, że w pośpiechu operator poprawia zły parametr: zamiast zmienić promień w korekcji D, koryguje długość w H. Obróbka wychodzi wymiarowo „dziwna”, a do tego mogą dochodzić alarmy przy łukach, gdy sterowanie ma mieszankę błędnych wartości.

Dlatego w procedurach warsztatowych warto jasno rozdzielić:

  • kto może zmieniać długość H (zwykle po pomiarze narzędzia),
  • kto może manipulować promieniem lub zużyciem w D (np. tylko brygadzista albo tylko na podstawie konkretnego pomiaru detalu).

Nominalny promień czy faktycznie zmierzony? Strategia w firmie

Istnieją dwie popularne polityki wpisywania promienia:

Strategia „nominał + zużycie” vs „faktyczny promień”

Najpierw doprecyzuj, jaki masz cel: łatwe przeliczanie korekcji na wymiar, czy ścisłą zgodność z fizycznym narzędziem?

Najczęstsze podejścia są dwa:

  • Wpisujesz promień nominalny (np. frez Ø10 → R5,000), a wszystkie poprawki robisz w polu wear (zużycie), rzędu kilku setek lub dziesiątek setek milimetra.
  • Wpisujesz promień faktycznie zmierzony (np. z presetera lub z pomiaru testowego), a pole zużycia zostawiasz jak najbliżej zera.

Jeżeli często szlifujesz te same frezy i wiesz, że „dziesiątka” ma prawie zawsze 9,98 mm, możesz z góry wkleić zmierzoną wartość i minimalizować ręczne poprawki. Gdy potrzebujesz szybkich zmian na wymiar w trakcie serii, czytelniejsze bywa trzymanie nominału i wpisywanie +/−0,02…0,05 w polu zużycia.

Jak robisz to teraz: korekty „na detalu” wprowadzasz w promień, czy od razu szlifujesz/zmieniasz narzędzie?

Spójność bazy narzędzi z CAM i symulatorem

Gdy program powstaje w CAM, a maszyna ma własną tabelę narzędzi, pojawia się klasyczne pytanie: gdzie „mieszka” prawda o promieniu – w CAM, czy w sterowaniu?

Dobrze działa taki podział:

  • W CAM – definicja nominalna narzędzia, np. Ø10, R5.
  • W sterowaniu – korekcja rzeczywista plus zużycie, np. R4,98 + wear +0,02.

Warunek: te wartości nie mogą być z sobą w sprzeczności. Jeżeli CAM liczy tor narzędzia z uwzględnieniem promienia („wear”/„control”), a na maszynie dodatkowo włączysz korekcję G41/G42 z innym promieniem, dostajesz podwójne przesunięcie i zupełnie inne przejścia w narożach niż na symulacji.

Proste pytanie kontrolne: czy w twoim CAM ścieżka jest rysowana po konturze detalu (z założeniem, że korekcję zrobi G41/G42), czy już po środku narzędzia? Od tego zależy cała filozofia wpisywania promieni.

Warunki poprawnego wejścia w kompensację promienia

Minimalna długość najazdu – skąd się bierze „za krótki odcinek”

Każde sterowanie potrzebuje odcinka, na którym może „rozwinąć” kompensację – przejść z toru środka narzędzia na tor odsunięty o promień. Jeżeli blok, w którym wywołujesz G41/G42, jest zbyt krótki, kontroler zgłosi błąd.

Jak to ocenić w praktyce? Spójrz na dwa parametry:

  • długość bloku wejściowego (od punktu przed konturem do pierwszego punktu na konturze),
  • wartość promienia w korekcji D/R.

Lekka zasada warsztatowa: odcinek wejścia powinien być wyraźnie dłuższy niż promień narzędzia, najlepiej 1,5–2×R. Jeżeli próbujesz wejść w korekcję na najazdach rzędu 0,5–1 mm przy frezie R5, nic dziwnego, że sterowanie protestuje.

Częsty przypadek: CAM generuje „zębatego” najazdu, złożonego z wielu krótkich segmentów, a G41/G42 włącza się na fragmencie długości kilku setek. W symulacji to wygląda gładko, ale rzeczywiste sterowanie po prostu nie ma miejsca, żeby obliczyć łagodne przejście środka frezu.

Wejście pod kątem prostym vs. styczne podejście do konturu

Druga ważna sprawa to geometria kierunku wejścia. Na czym się łapiesz najczęściej: wchodzisz na kontur „na skos” czy prostopadle?

Najstabilniej działają dwa warianty:

  • najazd prostopadły do pierwszego odcinka konturu, z dłuższym odcinkiem bezpieczeństwa,
  • najazd styczny (colinear) do pierwszego odcinka – narzędzie „wpina się” już po linii.

Wejście pod ostrym, przypadkowym kątem bywa przyczyną alarmów typu „improper cutter comp” – kontroler nie jest w stanie jednoznacznie wyznaczyć łuku przejściowego między pozycją przed G41 a pierwszym punktem na konturze.

Prosty test: narysuj w CAD punkt startowy, pierwszy punkt konturu i okrąg o promieniu narzędzia. Czy da się narysować mały łuk łączący najazd z torem odsuniętym bez załamania? Jeśli nie – sterowanie też tego nie rozwiąże.

Wejście linią, łukiem czy kombinacją? Praktyczne sekwencje

W praktyce stosuje się trzy podstawowe sposoby wejścia w kompensację. Który z nich masz obecnie w swoich szablonach?

  1. Najazd prostoliniowy:
    G0 X-5 Y-5
    G1 Z0 F200
    G41 D01 X0 Y-5 F300   (prosty najazd przed kontur)
    X50 Y-5               (kontur)

    Proste, działa w większości sytuacji, o ile odcinek z G41 jest odpowiednio długi.

  2. Wejście łukiem – najpierw prosty najazd, potem łuk na kontur:
    G0 X-10 Y-5
    G1 Z0 F200
    G41 D01 X0 Y-5 F300   (najazd prosty)
    G3 X0 Y0 I0 J5        (łuk „dokręcający” na kontur)
    ...

    Łagodniejsze dla narzędzia, ale bardziej czułe na błędy promieni i kierunków (G2/G3).

  3. Kombinacja linia + linia – najazd, potem dociągnięcie do konturu innym kierunkiem, tak by utworzyć „ściętą” drogę:
    G0 X-5 Y-10
    G1 Z0 F200
    G41 D01 X0 Y-10 F300  (najazd)
    Y-5                   (dociągnięcie do konturu)
    ...

    Dwie linie dają więcej swobody sterowaniu przy „wyginaniu” toru środka narzędzia.

Dobrą praktyką jest trzymanie w firmie 1–2 sprawdzonych makr wejścia – zamiast za każdym razem wymyślać nową geometrię.

Jedna płaszczyzna, jedno narzędzie, jeden kontur

Wielu alarmów przy wejściu da się uniknąć, jeśli pilnujesz kilku prostych zasad:

  • G41/G42 tylko po zadaniu płaszczyzny (G17/G18/G19) i po wybraniu narzędzia (T) oraz korekcji długości (H).
  • Nie zmieniaj narzędzia w trakcie aktywnej kompensacji – najpierw G40, dopiero potem T… M6.
  • Nie mieszaj kilku konturów w jednej sekwencji G41/G42 bez jasnego rozdzielenia najazdem/odjazdem.

Jeżeli program z CAM generuje jedną długą ścieżkę z przeskokami między obrysami, rozbij ją logicznie na etapy: każdy kontur osobno, z własnym wejściem i wyjściem z korekcji. To często od razu „gasi” serię losowych alarmów przy pierwszych testach.

Warunki poprawnego wyjścia z kompensacji promienia

Dlaczego wyjście z G40 w narożu jest ryzykowne

Gdzie najczęściej masz alarmy końcowe? Zwykle tam, gdzie G40 trafia się dokładnie w narożu albo na bardzo krótkim odcinku.

Sterowanie musi przeprowadzić środek narzędzia z toru odsuniętego z powrotem na tor „nominalny” w jednym z dwóch scenariuszy:

  • G40 w tym samym bloku co ruch – przejście następuje w trakcie tego ruchu,
  • G40 w osobnym bloku – część sterowań traktuje to jak „natychmiastowe” przeniesienie toru, ale też analizuje, czy da się to wykonać bez kolizji geometrii z poprzednimi ruchami.

Jeżeli zrobisz G40 w samym wierzchołku konturu, sterowanie widzi dwa „ostre końce” ścieżek i nie potrafi ich spiąć łagodnym przejściem. Wtedy pojawia się alarm typu „cutter comp cancel impossible” albo ogólne „improper cutter compensation”.

Bezpieczny odjazd od konturu przy G40

Pewniejszy schemat to mały odjazd od detalu przy wyłączaniu kompensacji. Jak może to wyglądać w praktyce?

... (ostatni odcinek konturu)
X0 Y0
G40 X-3 Y0 F300   (wyjście z kompensacji z odjazdem)
G0 Z50

Najważniejsze, aby punkt po G40 znalazł się poza torem detalu, a odcinek z G40 był dłuższy niż 0,5–1×R. Dzięki temu sterowanie ma przestrzeń, by „zwinąć” tor środka narzędzia do pozycji nominalnej.

Zadaj sobie pytanie: czy twoje postprocesory CAM generują dodatkową linię/łuk odjazdu, czy kończą kontur i od razu rzucają G40? Jeśli to drugie, warto dopisać krótki makro-blok odjazdu do postprocesora.

Wyjście G40 na łuku – kiedy kontroler się gubi

Wielu operatorów przekonało się, że G40 na łuku jest znacznie bardziej ryzykowny niż na linii prostej. Dlaczego?

Sterowanie musi przeliczyć nowy promień łuku toru środka narzędzia: w G41/G42 jest to promień konturu ± promień narzędzia, a po G40 nagle ma być to promień samego konturu. Jeżeli łuk kończy się dokładnie z G40, pojawia się problem z zamknięciem poprzedniej trajektorii – stąd częste alarmy w stylu „arc error at cutter comp cancel”.

Bezpieczniej jest zakończyć łuk jeszcze z aktywną kompensacją, a dopiero potem zrobić krótki odcinek liniowy z G40 i odjazdem. Kilka milimetrów prostej potrafi rozwiązać długą listę „niewyjaśnionych” błędów.

Zmiana płaszczyzny a aktywny G40

Czasami programista zmienia płaszczyznę (G17 → G18, G19) jeszcze w trakcie wychodzenia z G40. Przykład:

...
G40 X-5 Y0
G18
G2 X... Z... I... K...

Część sterowań jest na to wrażliwa: oczekują, że kompensacja zostanie całkowicie zamknięta i „uspokojona” w tej samej płaszczyźnie, w której została aktywowana. Dlatego bezpieczniej:

  • dokończyć ruch z G40,
  • w kolejnym bloku dopiero zmienić płaszczyznę lub oś interpolacji.

Jeżeli widzisz alarmy dokładnie na bloku zmiany płaszczyzny po zakończonym konturze, spróbuj wstawić dodatkowy ruch odjazdu z G40 przed G18/G19.

Kolorowy kod JavaScript na monitorze symbolizujący programowanie i G-code
Źródło: Pexels | Autor: Rashed Paykary

Typowe alarmy przy wejściu w G41/G42 – przyczyny i interpretacja

„Improper cutter compensation” / „Cutter comp not allowed in block”

To jeden z najbardziej irytujących alarmów, bo… nic z niego nie wynika na pierwszy rzut oka. Najczęstsze przyczyny są jednak dość powtarzalne:

  • zbyt krótki odcinek w bloku z G41/G42,
  • brak aktywnego narzędzia lub korekcji długości (T/H) w chwili wywołania G41/G42,
  • próba wejścia w kompensację na bloku bez ruchu (niektóre sterowania tego nie lubią),
  • błędna płaszczyzna – kompensacja włączona, nim ustawiono np. G17.

Jak diagnozować? Odpowiedz sobie po kolei:

  1. Czy w bloku z G41/G42 jest wyraźny ruch w XY i sensowna długość odcinka?
  2. Czy przed tym blokiem masz już wybrane narzędzie (T) i aktywne H?
  3. Czy kompensacja jest włączana w tej samej płaszczyźnie, w której biegnie kontur (np. G17 dla XY)?

Jeżeli wszystko wygląda dobrze, zerknij w tabelę D – często problemem jest promień skrajnie duży albo pusty wpis.

„Radius too large / too small” przy wejściu w G41/G42

Alarmy o „za dużym” lub „za małym” promieniu pojawiają się, gdy sterowanie musi wyliczyć przejście między trzema punktami:

  1. punkt przed G41/G42,
  2. punkt w bloku z G41/G42,
  3. następny punkt konturu po G41/G42.

Jeżeli ten układ wymusza łuk o promieniu mniejszym niż promień narzędzia, kontroler nie ma jak „wcisnąć” tam środka frezu i zgłasza błąd. Z drugiej strony, zbyt duży, prawie prostoliniowy łuk też bywa problemem dla algorytmu, zwłaszcza gdy wszystkie punkty leżą praktycznie na jednej linii.

Częsty scenariusz: pierwszy odcinek po wejściu jest krótki i załamuje się ostro względem najazdu. Wtedy pomaga:

  • wydłużenie odcinka najazdu,
  • dodanie „bufora” – dodatkowego punktu pośredniego,
  • zwiększenie promienia naroża na detalu (jeśli konstrukcja na to pozwala).
  • „No cutter radius data / D offset not found” – kompensacja bez danych

    Spotykasz alarm mimo poprawnej geometrii wejścia? Sprawdź najpierw, z czego sterowanie ma liczyć tor. Bez promienia nie ma kompensacji.

    Typowe źródła problemu:

  • wywołanie G41/G42 z numerem D, który jest pusty w tabeli narzędzi,
  • pomyłka o jedną pozycję – frez stoi fizycznie w kieszeni 3, ale program używa D02 zamiast D03,
  • mieszanie różnych standardów: w jednym programie D = średnica, w drugim D = promień,.

Zadaj sobie pytanie: czy dane w tabeli kompensacji są spójne z tym, co generuje CAM? Jeżeli CAM wpisuje do D promień, a ktoś wprowadzi tam średnicę, przy wejściu w kompensację automatycznie tworzysz geometrię nie do przejechania.

Prosty test: uruchom program „na sucho”, z wyłączonym wrzecionem i z podglądem ścieżki. Widoczny tor środka narzędzia od razu zdradzi, czy kompensacja liczy „kosmiczne” odsunięcia.

„Cutter comp interference” / kolizja ścieżek przy wejściu

Ten typ alarmu pojawia się, gdy sterowanie oceniasz, że ścieżka środka narzędzia musiałaby przeciąć sam detal albo wcześniej przejechane fragmenty konturu.

Zazwyczaj dzieje się tak przy:

  • zbyt agresywnym wejściu pod dużym kątem w pierwszy odcinek konturu,
  • małym detalu i dużym frezie – brak miejsca na „rozpęd” środka narzędzia,
  • wejściu na kontur od złej strony (pomyłka G41 ↔ G42).

Zastanów się: czy narzędzie faktycznie wchodzi od strony naddatku, czy może od razu „pcha się” w gotowy wymiar? Jeśli w CAD/CAM widzisz, że najazd przechodzi przez materiał, sterowanie zrobi dokładnie to samo – i podniesie alarm.

Rozwiązania praktyczne:

  • wydłuż odcinek najazdu i ustaw go bliżej równoległego do pierwszego odcinka konturu,
  • zmniejsz średnicę frezu lub zmień strategię – np. wstępne obróbki konturowe mniejszym narzędziem, finalna krawędź większym,
  • sprawdź, czy nie pomyliłeś strony kompensacji – szybka zamiana G41 ↔ G42 potrafi „uzdrowić” cały kontur.

Wejście w G41/G42 po łuku – kiedy sterowanie się buntuje

Masz w programie G2/G3 i od razu dopisany G41/G42? Zastanów się, czy to naprawdę musi być jeden blok.

Wiele sterowań:

  • nie akceptuje aktywacji kompensacji na łuku,
  • akceptuje, ale z dużą ilością ograniczeń co do kierunku, promienia i kolejnego segmentu.

Bezpieczniejszy wariant to wejście prostą, a dopiero potem łuk, już z aktywną kompensacją. Przykład do porównania:

(ryzykownie)
G1 X-5 Y-5
G3 G41 D01 X0 Y0 I5 J5

(bezpieczniej)
G1 X-5 Y-5
G41 D01 X0 Y-5
G3 X0 Y0 I0 J5

Zapytaj siebie: czy zyskujesz coś, wciskając G41/G42 w blok z łukiem? Zwykle nie. Za to ryzyko alarmów rośnie kilkukrotnie.

„Start point is inside contour” – gdy wejście zaczyna się „w środku”

Niektóre sterowania pilnują, aby punkt wejścia w kompensację leżał poza obrysem detalu. Jeżeli CAD/CAM wygenerował najazd zaczynający się już na gotowej krawędzi (lub wręcz „w powietrzu” wewnątrz kieszeni), kontroler zgłasza konflikt.

Dzieje się tak najczęściej przy:

  • kieszeniach otwartych, gdzie kontur jest fragmentem większej geometrii,
  • obróbce drugiej strony detalu, gdy bazowanie nie jest spójne i sterowanie „widzi” tor w innym położeniu.

Zastanów się: czy punkt startowy jest jasno oddzielony od konturu linią najazdu? Jeśli nie, dodaj dodatkowy segment spoza detalu do pierwszego punktu obrysu, a w blok z G41/G42 wpisz ruch właśnie na ten odcinek.

Dobre pytanie pomocnicze: gdzie dokładnie leży środek frezu w chwili aktywacji kompensacji względem finalnego kształtu? Jeżeli już „dotyka” konturu, sterowanie musi tworzyć ścieżkę z niczego i zwykle się broni alarmem.

Typowe alarmy przy wyjściu z G40 – co się dzieje na końcu konturu

„Cutter comp cancel impossible” – brak miejsca na wyjście

Jeżeli wiesz, że wejście było poprawne, a alarm pojawia się dopiero przy G40, prawie zawsze chodzi o brak przestrzeni na wyprostowanie trajektorii środka narzędzia.

Najczęstsze scenariusze:

  • G40 wstawione dokładnie w narożu, bez odcinka odjazdu,
  • G40 na bardzo krótkim segmencie, krótszym niż promień frezu,
  • G40 na łuku, który kończy się ostrym przejściem do kolejnego odcinka.

Pytanie kontrolne: gdzie chcesz wyjechać narzędziem po zakończeniu konturu? Jeżeli odpowiedź brzmi „w bok od detalu”, to zaplanuj od razu linię odjazdu i wpisz G40 w ten odcinek, a nie w ostatni fragment obrysu.

Przykładowa korekta:

(było)
... 
X0 Y50
G40
G0 Z50

(lepiej)
...
X0 Y50
G40 X-3 Y50 F300   (odjazd równoległy do ostatniego odcinka)
G0 Z50

„Cutter comp still in effect at end of program” – zapomniany G40

Bez względu na markę sterowania, program powinien wracać do stanu bazowego: bez kompensacji promienia na końcu bloku pracy. Jeżeli G40 „zginie” po drodze, kontroler przy końcu programu zgłosi ostrzeżenie lub błąd.

Najczęściej dzieje się to przy:

  • wczesnym zatrzymaniu edycji – ktoś urwał program w połowie konturu,
  • dołożeniu ręcznego „dopieszczenia” obrysu w MDI bez kontroli aktywnych modalnych G,
  • niespójnym postprocesorze – raz dodaje G40, raz nie.

Proste pytanie: czy masz w firmie standard końcówki programu? Jeżeli nie, ustal stały szablon, np.:

G40
G0 Z…
G0 X… Y…
M09
M30

Jeden blok z G40 przed wyjazdem z pola pracy eliminuje wiele dziwnych zachowań przy ponownym uruchamianiu tego samego programu.

Zmiana narzędzia / układu współrzędnych przy aktywnej kompensacji

Część sterowań jest wyjątkowo czuła na kombinacje typu:

... (aktywny G41/G42)
G0 Z50
T2 M6
...

lub:

...
G41 D01 X...
...
G55
...

Alarmy mogą być różne: od ogólnych błędów kompensacji po „illegal modal combination”. Przyczyna jest prosta – sterowanie nie chce jednocześnie:

  • zmieniać położenia zer (G54…G59),
  • zmieniać narzędzia lub korekcji długości (H),
  • i trzymać w pamięci aktywnej ścieżki środka narzędzia.

Jak się zabezpieczyć? Zanim zmienisz narzędzie, układ współrzędnych lub płaszczyznę:

  • zamknij kompensację G40 z krótkim, czytelnym odjazdem od konturu,
  • w kolejnym bloku dopiero wykonaj T… M6, G54/G55 lub G17/G18/G19.

Zadaj sobie pytanie: czy ruch, który robisz po G40, ma jeszcze jakikolwiek związek z poprzednim konturem? Jeżeli nie – przerwij „logikę” kompensacji, a dopiero potem przełączaj resztę modalnych funkcji.

Wyjście z G40 w biegunach łuku – szczególny przypadek

Niektóre sterowania źle tolerują G40 dokładnie w „biegunie” okręgu, czyli na końcu łuku 180° lub 360°. Przykład:

G17
...
G3 X0 Y0 I-25 J0   (pełne koło)
G40 X50 Y0         (wyjście dokładnie w punkcie początkowym łuku)

Kontroler musi wtedy dopasować ścieżkę środka narzędzia do miejsca, które jest geometrią „specjalną” (pełny łuk, miejsce zamknięcia koła). Jeżeli do tego dojdzie promień narzędzia zbliżony do promienia konturu, algorytm zwyczajnie nie znajduje jednoznacznego rozwiązania i pojawia się alarm.

Jak z tego wybrnąć?

  • podziel łuk na dwa – zakończ go np. na 170° i przejdź resztę jako linię,
  • wyłącz kompensację na krótkim odcinku prostym kilka dziesiątych od punktu początkowego łuku,
  • jeśli konstrukcja na to pozwala, dodaj niewielką „wypustkę” lub mostek technologiczny i wyjazd wykonaj po nim.

„Arc error at comp cancel” – koniec konturu z błędną definicją łuku

Jeżeli ostatni odcinek konturu jest łukiem, a na nim wyłączasz kompensację, każdy najmniejszy błąd w I/J (lub R) wychodzi z podwójną siłą. Sterowanie musi jednocześnie:

  • domknąć łuk zgodnie z geometrią konturu,
  • wyprowadzić środek narzędzia na tor nominalny.

Jeżeli końcowy punkt łuku nie leży dokładnie na okręgu zdefiniowanym przez I/J (lub R), albo promienie są „na styk” z promieniem narzędzia, drobne zaokrąglenia numeryczne zamieniają się w alarm.

Dobre pytania pomocnicze:

  • czy łuk kończy się dokładnie tam, gdzie zaczynał się kolejny odcinek (geometria jest zamknięta w CAD)?
  • czy CAM nie zaokrąglił promienia lub współrzędnych po drodze?
  • czy możesz zakończyć łuk wcześniej i dodać krótką prostą na wyłączenie G40?

Często wystarczy skrócić łuk o ułamek stopnia, a końcówkę przejechać linią – to „odciąża” sterowanie z konieczności rozwiązania wszystkiego w jednym punkcie.

Jak świadomie projektować wejścia i wyjścia z kompensacji

Myślenie „torami” zamiast „punktami”

Jeśli przy każdym alarmie patrzysz tylko w pojedynczy blok G-kodu, łatwo przeoczyć szerszy kontekst. Sterowanie widzi nie tylko punkt aktualny, ale ciąg punktów przed i po G41/G42/G40.

Dobrze jest zadawać sobie trzy pytania:

  1. Skąd przychodzi narzędzie? (jaki był ruch przed G41/G42 lub G40)
  2. Dokąd ma dojść w tym samym bloku?
  3. Co go czeka w następnym bloku?

Dopiero ten „tryptyk” pozwala ocenić, czy tor środka narzędzia ma szansę pójść gładką, krzywą bez załamań. Jeżeli któryś z odcinków jest za krótki, załamuje się pod zbyt ostrym kątem lub prowadzi przez detal, sterowanie jest zmuszone zgłosić błąd.

Proste reguły robocze dla własnych szablonów

Jeżeli chcesz zmniejszyć liczbę niespodzianek, wprowadź u siebie kilka twardych zasad:

  • wejście w G41/G42 zawsze na oddzielnym bloku z ruchem liniowym,
  • bloki z G41/G42 i G40 mają odcinek minimum ~0,5–1×R narzędzia,
  • G40 zawsze z odjazdem od konturu (nigdy „na nim”),
  • żadnych zmian T, H, G54…G59, G17–G19 na tym samym bloku co G41/G42/G40,
  • łuki na wejściu/wyjściu tylko wtedy, gdy masz je zweryfikowane w praktyce na danym sterowaniu.

Zastanów się: które z tych reguł są u ciebie realne do wprowadzenia od jutra, a które wymagają modyfikacji postprocesora lub przeszkolenia zespołu? Czasem jedna mała zmiana w szablonie makra wejścia/wyjścia wygasza połowę istniejących alarmów.

Ręczne poprawki po CAM – gdzie ingerować, a gdzie nie

CAM potrafi stworzyć bardzo skomplikowane sekwencje ruchów. Pytanie brzmi: czy każdy z nich naprawdę musi zostać w programie?

Jeśli widzisz:

  • wejście w kompensację na mikroskopijnych segmentach,
  • łuki o promieniach wielokrotnie mniejszych niż promień narzędzia,
  • nagłe zmiany kierunku w pierwszych dwóch–trzech blokach po G41/G42,

to są idealne miejsca na ręczną korektę. Najczęściej wystarczy:

  • zastąpić zygzak dwóch–trzech krótkich odcinków jedną linią,
  • wydłużyć najazd poza detal i przenieść G41/G42 na ten prosty odcinek,
  • dodać brakujący odjazd z G40 – kilka milimetrów prostej, równoległej do ostatniego odcinka konturu.
  • Kluczowe Wnioski

  • Kompensacja promienia w sterowaniu (G41/G42) pozwala traktować G-code jako opis nominalnego konturu, a rzeczywisty tor środka narzędzia wylicza sterowanie; dzięki temu poprawka wymiaru często sprowadza się do zmiany jednej wartości w tabeli korekcji, a nie przebudowy programu.
  • Strategia „wszystko w CAM” daje pełną kontrolę nad geometrią, ale każda zmiana narzędzia lub promienia wymusza regenerację ścieżek; strategia „korekcja w sterowaniu” przerzuca więcej odpowiedzialności na operatora, lecz znacznie przyspiesza drobne korekty – jaki model lepiej pasuje do twojej organizacji pracy?
  • Kompensacja promienia w sterowaniu szczególnie pomaga przy seriach z różnym naddatkiem, prototypach, bardzo ciasnych tolerancjach i przy zmianach partii narzędzi – w takich sytuacjach szybka korekta o 0,01–0,02 mm z panelu maszyny oszczędza czas, który normalnie poszedłby na CAM.
  • Dobór G41/G42 zależy od kierunku obiegania konturu i tego, czy obrabiasz obrys wewnętrzny, czy zewnętrzny; kluczowe pytanie przy programowaniu brzmi: „z której strony, patrząc wzdłuż ruchu, mam mieć materiał?”, bo odwrócenie kierunku wymaga zamiany G41 na G42 i odwrotnie.
  • Sposób wyłączania kompensacji (G40) ma duży wpływ na alarmy: bezpieczniej jest używać G40 w osobnym bloku lub z niewielkim ruchem przejściowym, tak aby sterowanie mogło „ściągnąć” narzędzie z odsuniętej ścieżki bez nierealnie ostrego załamania toru.
  • Bibliografia

  • ISO 6983-1: Numerical control of machines – Program format and definitions of address words – Part 1. ISO (1982) – Podstawy formatu G-code, definicje funkcji G, struktura programu NC
  • ISO 841: Industrial automation systems and integration – Numerical control of machines – Coordinate systems and motion nomenclature. ISO (2001) – Układy współrzędnych, kierunki ruchu, konwencje osi w CNC
  • Fanuc Series 0i/0i Mate-MODEL D: Operator’s Manual (B-64304EN). FANUC – Opis G41/G42/G40, warunki wejścia/wyjścia, typowe alarmy kompensacji
  • Haas Mill Operator’s Manual. Haas Automation – Praktyczne użycie G41/G42/G40, przykłady ścieżek i alarmów kompensacji
  • SINUMERIK 840D/828D: Function Manual – Milling. Siemens – Implementacja kompensacji promienia, różnice trybów, ograniczenia geometryczne
  • OSP-P300M: CNC Programming Manual. Okuma – Opis korekcji promienia narzędzia, alarmy przy wejściu/wyjściu z G41/G42
  • Heidenhain Programming Station: User’s Manual – ISO Programming. Heidenhain – Tryb ISO w Heidenhain, odpowiedniki G41/G42/G40, specyfika sterowania
  • CNC Programming Handbook, 3rd Edition. Industrial Press (2006) – Rozdziały o kompensacji promienia, strategiach programowania i błędach
  • CNC Handbook. McGraw-Hill (2013) – Przegląd standardów G-code, kompensacja narzędzia, praktyka warsztatowa
  • Metal Cutting Theory and Practice, 3rd Edition. CRC Press (2013) – Tło teoretyczne promienia narzędzia, zużycia i wpływu na wymiar detalu