Dlaczego maszyna ignoruje korekcję narzędzia? Sprawdź wyjście postprocesora

0
12
Rate this post

Nawigacja po artykule:

Skąd się bierze problem: korekcja ustawiona, maszyna jej nie widzi

Typowy scenariusz z hali: korekcja jest, a przejazd idzie „po modelu”

Operator ustawia korekty narzędzi w sterowaniu, odjeżdża na bezpieczną wysokość, włącza program – a maszyna jedzie prosto w detal, jakby korekcja narzędzia w ogóle nie była aktywna. Oś Z dobija w stół mimo wpisanej długości, kontur wychodzi za duży albo za mały, narożniki się „podcinają”.

Na ekranie tabeli narzędzi wszystko wygląda poprawnie: długość mierzoną sondą widać, promień wpisany zgodnie z katalogiem, offsety są włączone. Problem zwykle siedzi w tym, co faktycznie wychodzi z postprocesora – w G‑code nie ma prawidłowej komendy aktywującej korekcję, albo jest ona wyzerowana innym blokiem.

Korekcja ustawiona w CAM a korekcja faktycznie aktywowana w G‑code

System CAM widzi narzędzie jako zestaw parametrów: średnica, długość, offset długości, offset promienia, strategia kompensacji (w CAM lub w sterowaniu). To, że w CAM wybierzesz „kompensacja w sterowaniu”, nie oznacza jeszcze, że w G‑code pojawi się G41/G42 albo G43. O tym decyduje postprocesor.

Jeśli postprocesor jest skonfigurowany tak, że:

  • ignoruje offsety promienia i „wypala” ścieżkę po torze narzędzia,
  • nie generuje G43, bo zakłada stałą tabelę długości i kompensację „w CAM”,
  • łączy numer T i H w inny sposób niż maszyna,

to sterowanie CNC nie ma szans użyć korekcji, którą tak starannie wprowadzasz w tabeli. Maszyna nie „zgaduje” zamiaru programisty – reaguje wyłącznie na to, co jest zapisane w blokach G‑code.

Gdzie szukać winy: CAD/CAM, postprocesor, sterowanie, czy operator

Źródło problemu rzadko jest jednoznaczne. Najczęściej nakłada się kilka drobnych błędów:

  • w CAM zaznaczona jest niewłaściwa opcja kompensacji (np. „In computer” zamiast „In control”),
  • postprocesor ma wyłączoną generację G41/G42 lub G43/G49,
  • numer H/D w G‑code nie zgadza się z numerem narzędzia lub z tabelą w sterowaniu,
  • sterowanie ma włączony parametr blokujący kompensację w danej płaszczyźnie,
  • operator ręcznie wprowadził G40/G49 w MDI i „zapomniał”, że korekcja jest zdjęta.

Logiczna kolejność sprawdzania powinna iść od najprostszych rzeczy: kod NC → tabela narzędzi → ustawienia postprocesora → ustawienia CAM → parametry sterowania. Dopiero na końcu szuka się winy w „magicznych” makrach M.

Dlaczego pierwsze podejrzenie powinno paść na wyjście postprocesora

Postprocesor jest tłumaczem między światem CAM a maszyną. To on decyduje, czy ścieżka będzie skompensowana w CAM, czy w sterowaniu, czy numer narzędzia T będzie równy numerowi korekcji H/D, czy zupełnie niezależny. Jeśli post jest źle skonfigurowany, maszyna może ignorować korekcję narzędzia mimo idealnie ustawionych offsetów.

Jedna linijka w pliku postprocesora potrafi zmienić logikę całego warsztatu: nagle wszystkie programy zaczynają używać H=T, albo przestają generować G41/G42. Zanim zaczniesz regulować sondę narzędziową, kalibrować stół czy dzwonić do serwisu, otwórz G‑code i sprawdź, czy w ogóle wołasz korekcję narzędzia.

Podstawy korekcji narzędzia w G‑code: długość i promień

Korekcja długości narzędzia: G43/G44/G49 i adres H

Korekcja długości narzędzia kompensuje różnicę między punktem pomiaru a punktem zerowym programu w osi narzędzia (najczęściej Z). W sterowaniach fanucopodobnych standardowo używa się:

  • G43 H… – dodatnia korekcja długości (najczęściej spotykana),
  • G44 H… – ujemna korekcja długości (rzadziej stosowana),
  • G49 – kasowanie korekcji długości (powrót do stanu bez kompensacji).

Adres H wskazuje, z którego wiersza tabeli korekt długości ma korzystać sterowanie. Jeśli wpisujesz długość narzędzia w wierszu H7, w programie musi pojawić się H7, nie H1, nie H0. Samo wywołanie narzędzia T7 nie aktywuje korekcji długości, dopóki nie pojawi się G43 H7 (lub analogiczna kombinacja zależnie od filozofii zakładu).

Bez G43 H… sterowanie użyje współrzędnych bez kompensacji długości. W praktyce Z pojedzie za nisko lub za wysoko o długość trzpienia względem przyjętego wzorca pomiarowego.

Korekcja promienia narzędzia: G40/G41/G42 i adres D

Korekcja promienia (kompensacja promienia freza) umożliwia programowanie ruchów po geometrii detalu, a nie po torze środka narzędzia. Główne komendy to:

  • G41 D… – korekcja promienia w lewo od kierunku ruchu,
  • G42 D… – korekcja promienia w prawo od kierunku ruchu,
  • G40 – kasowanie korekcji promienia.

Adres D wskazuje na wiersz korekcji promienia w tabeli sterowania. Niektóre konfiguracje łączą H i D (ten sam numer zarówno dla długości, jak i promienia), inne rozdzielają je. To jest dokładnie ten moment, gdzie musi być spójność z postprocesorem: jeśli post generuje D = numer narzędzia, to w tabeli CNC w wierszu D5 musi być promień freza używanego jako T5.

Bez aktywnej kompensacji promienia (G41/G42) sterowanie odczyta współrzędne XY jako tor środka narzędzia. Jeśli CAM liczył ścieżkę po geometrii detalu i oczekuje, że kompensacja zostanie wykonana w maszynie, to brak G41/G42 sprawi, że wszystkie wymiary będą „przepchnięte” o promień narzędzia.

Numer narzędzia T a numery korektorów H i D

T (np. T3) oznacza fizyczne narzędzie w magazynku lub we wrzecionie. H i D to odwołania do wpisów w tabelach korekt. Mogą być:

  • równe numerowi narzędzia (T3 G43 H3 G41 D3) – często stosowane w prostych warsztatach,
  • całkowicie niezależne (T3 G43 H13 G41 D23) – gdy jedną głowicę wykorzystuje się z różnymi trzpieniami i różnymi korektami.

Maszyna nie zakłada z automatu, że H musi się równać T. To człowiek (lub postprocesor) decyduje o tej konwencji. Jeśli post zakłada H=T, a operator przyjął inną filozofię (np. offsety długości numerowane osobno), maszyna „zobaczy” korekcję z pustego wiersza, czyli de facto korekcję równą zero.

Jak sterowanie łączy G‑code z tabelą narzędzi i korekt

W typowym sterowaniu fanucopodobnym są co najmniej dwie istotne tabele:

  • tabela narzędzi – powiązanie numeru T z fizycznym gniazdem, opisem itp.,
  • tabela offsetów – wartości długości (H) i promienia/zużycia (D).

Gdy program wykona linię:

T5 M6

sterowanie przygotuje narzędzie z gniazda przypisanego do T5. Korekcja długości i promienia nadal jest nieaktywna. Dopiero linie:

G43 H5 Z100.
G41 D5 X...

mówią maszynie: „użyj wartości z wiersza 5 w tabeli długości (H5) i z wiersza 5 w tabeli promienia (D5)”. Jeśli w tym wierszu nic nie ma, efekt jest taki sam, jakby korekcji nie było.

Skutek braku lub wyzerowania korekcji narzędzia

Brak aktywnej korekcji długości:

  • Z jednego narzędzia na drugie zmieniasz się poprawnie, ale wszystkie Z jadą tak, jakby narzędzia były identycznej długości.
  • Przy przejściu z krótkiego freza na długi grozi to kolizją stołu, uchwytu lub detalu.

Brak aktywnej korekcji promienia, gdy CAM zakłada kompensację w sterowaniu:

  • Kontury wychodzą przesunięte o promień narzędzia.
  • Wewnątrz kieszeni widać „niedojście” lub „przejście na zewnątrz” względem modelu.

Zero w tabeli korekt jest dla sterowania równie „prawidłową” wartością jak dowolna inna liczba. Nie ma żadnego ostrzeżenia typu „offset nie jest ustawiony”, chyba że producent maszyny dodał własne mechanizmy kontroli.

Jak wygląda poprawny G‑code z aktywną korekcją – anatomia bloku

Minimalny pakiet startowy dla narzędzia z korekcją

Dla typowego frezowania w sterowaniu fanucopodobnym minimalny zestaw komend dla jednego narzędzia wygląda tak:

T5 M6          (wywołanie i zmiana narzędzia)
G0 G90 G54 X... Y... S... M3
G43 H5 Z100.   (aktywacja korekcji długości)
...
G1 Z... F...   (zejście robocze z uwzględnioną długością)
G41 D5 X... Y... F...  (jeśli używana jest korekcja promienia)
...
G40            (kasowanie korekcji promienia)
G0 Z100.
G49            (kasowanie korekcji długości)
M1 lub M30

Aby korekcja zadziałała, w powyższym ciągu muszą pojawić się co najmniej:

  • G43 H… dla długości,
  • G41 lub G42 z D… dla promienia (jeśli używasz kompensacji w sterowaniu).

Bez tych komend wartości z tabeli offsetów nie wejdą do gry.

Przykłady poprawnych bloków księgowych dla różnych sterowań

Dla jasności porównanie trzech typowych „dialektów” ISO (uproszczone):

SterowaniePrzykładowa sekwencjaUwagi
Fanuc / HaasT5 M6
G0 G90 G54 X0 Y0 S5000 M3
G43 H5 Z100.
G1 Z-10. F500.
G41 D5 X50. Y0 F300.
...
G40 X0 Y0
G0 Z100.
G49
Standard G43/H dla długości, G41/D dla promienia.
Heidenhain (tryb ISO)T5 M6
G0 G90 G54 X0 Y0 S5000 M3
G43 H5 Z100.
G1 Z-10. F500.
G41 D5 X50. Y0 F300.
...
G40 X0 Y0
G0 Z100.
G49
W trybie ISO bardzo podobnie; w trybie dialogowym korekcje opisuje się inaczej.
Siemens Sinumerik (ISO)T="T5" D5
M6
G0 G90 G54 X0 Y0 S5000 M3
G43 H5 Z100.
G1 Z-10. F500.
G41 D5 X50. Y0 F300.
...
G40 X0 Y0
G0 Z100.
G49
Często narzędzie i korektor zadawane są parą T/D; reszta podobna do Fanuca.

Różnice nazewnicze są mniejsze niż się wydaje. Kluczowe pozostaje: czy G43/G41/G42 w ogóle występują w G‑code oraz czy numery H/D zgadzają się z tym, jak prowadzisz tabelę w sterowaniu.

Gdzie w programie pojawia się aktywacja i kasowanie korekcji

Spójny schemat dla jednego narzędzia:

  1. Wywołanie narzędzia: Tn M6.
  2. Ustawienie bazy i pozycji nad detalem: G0 G90 G54 X... Y... Zbezpieczne.
  3. Aktywacja korekcji długości: G43 Hn Z... – często łączona z ruchem do bezpiecznej Z.
  4. Opcjonalnie: dojazd do punktu wejścia bez korekcji promienia (G40 lub brak G41/G42).
  5. Aktywacja korekcji promienia: G41/G42 Dn – najlepiej w ruchu na prostym odcinku przed właściwym konturem.
  6. Obróbka z aktywnymi korekcjami.
  7. Kasowanie korekcji promienia przed odjazdem: G40.
  8. Odjazd w Z przy aktywnym G43, następnie kasowanie korekcji długości: G0 Zbezpieczne, potem G49.

Jeżeli któraś z tych komend wyleci z G‑code wskutek modyfikacji postprocesora, zachowanie maszyny przestaje się zgadzać z tym, czego oczekuje CAM i operator.

Przykład błędnego fragmentu i jego skutki na maszynie

Przykładowy błędny fragment G‑code i co z niego wynika

T5 M6
G0 G90 G54 X0 Y0 S5000 M3
G0 Z100.
G1 Z-10. F500.
G41 D5 X50. Y0 F300.
...
G0 Z100.
M30

Brak G43 H5 sprawia, że Z‑10 liczony jest bez kompensacji długości. Jeśli w H5 miało być +120.000, maszyna pojedzie o 120 mm niżej względem oczekiwań CAM. Sterowanie nie wyświetli błędu – wykona ruch zgodnie z tym, co dostało.

Drugi problem: G41 D5 wchodzi „z powietrza”, bez fazy najazdu na prostą. W wielu sterowaniach zakończy się to alarmem korekcji promienia albo nieprawidłową ścieżką wejścia.

Zbliżenie na frezarkę CNC z chłodziwem podczas obróbki metalu
Źródło: Pexels | Autor: Daniel Smyth

Mapa zależności: CAM → postprocesor → sterowanie → fizyczne narzędzie

Od modelu 3D do współrzędnych – rola CAM

CAM generuje ścieżkę narzędzia względem modelu i przyjętej strategii kompensacji:

  • środek narzędzia (kompensacja promienia w CAM),
  • geometria detalu (kompensacja promienia w sterowaniu).

Jeśli w ustawieniach operacji zaznaczono kompensację w maszynie, CAM nie przesuwa toru o promień, tylko dopisuje atrybuty do ścieżki (typowo „left/right”), które potem postprocesor musi zamienić na G41/G42.

Postprocesor jako tłumacz założeń CAM na G‑code

Postprocesor decyduje o tym, czy:

  • atrybut „kompensacja w maszynie” przełoży się na G41/G42 z D…,
  • offset długości będzie numerowany jako H = T, H = D lub według własnej logiki,
  • G43 pojawi się przy każdym narzędziu, czy tylko przy pierwszym.

Jeśli w CAM ustawiono korekcję promienia w maszynie, a post ignoruje ten atrybut (lub ma wyłączone generowanie G41/G42), sterowanie nigdy nie dostanie informacji, że ma użyć tabeli D.

Sterowanie CNC i jego własne zasady interpretacji G‑code

Sterowanie czyta G‑code sekwencyjnie, blok po bloku. Dla niego liczy się:

  • aktualny tryb (G40/G41/G42, G49/G43/G44, aktywne G54…G59),
  • ostatnio zadane numery H i D,
  • wykonany M6 (czy narzędzie faktycznie jest we wrzecionie).

Jeżeli post wygeneruje G43 H5, ale fizycznie we wrzecionie jest T7 (bo brak T5 M6 albo poprzedni blok go nie zmienił), offset długości H5 zostanie nałożony na złe narzędzie.

Fizyczne narzędzie, pomiar i wpis do tabeli korekt

Ostatni element łańcucha to rzeczywista geometria narzędzia:

  • pomiar na presetarze lub w sondzie narzędziowej,
  • wpis wyniku do tabeli offsetów (H i D),
  • ewentualne zużycie korygowane w D (zużycie promienia, korekta wykończeniówki).

Jeżeli numer z G‑code (np. H5) nie pokrywa się z wierszem, do którego wpisano wynik pomiaru, cała wcześniejsza praca jest dla sterowania niewidoczna. Dla niego H5 to po prostu inna komórka pamięci niż H12, niezależnie od tego, jakie narzędzie faktycznie jest założone.

Najczęstsze powody, dla których maszyna „ignoruje” korekcję

Brak G43/G41/G42 w wygenerowanym programie

Klasyczny przypadek przy nowym poście: CAM ma włączoną kompensację, ale post nie wypisuje G43 lub G41/G42. W logice CAM wszystko się zgadza, na symulacji ścieżka wygląda dobrze, za to na maszynie:

  • kontur jest przesunięty o promień,
  • Z wchodzi zbyt głęboko lub zbyt płytko,
  • sterowanie nie pokazuje żadnych alarmów korekcji.

Diagnoza jest prosta: otworzyć program, wyszukać „G43” oraz „G41”/„G42”. Jeśli ich brak, problem leży w konfiguracji postprocesora albo samych operacji CAM (kompensacja wyłączona).

Niezgodność numeracji T/H/D między CAM a sterowaniem

Drugi typowy błąd to różna filozofia numeracji:

  • post generuje H = T, D = T,
  • operator w sterowaniu ma offsety długości i promienia numerowane zupełnie inaczej.

Efekt: G43 H5 działa, ale w H5 jest zero, bo długość narzędzia T5 wpisano np. do H25. Maszyna nie „pomyśli”, żeby sama szukać właściwego wiersza – użyje tego, który podano w programie.

Aktywacja korekcji w złym miejscu trajektorii

Nawet przy prawidłowym numerze D i obecnym G41/G42, problemem może być geometria najazdu. Jeśli G41/G42 pojawi się:

  • w ruchu prostopadle do konturu bez odcinka na dojazd,
  • w punkcie, z którego sterowanie nie może wstecznie „dopasować” toru,

pojawiają się alarmy typu „nieprawidłowy najazd z korekcją promienia”. Niektórzy błędnie uznają, że „maszyna nie obsługuje korekcji”, podczas gdy trzeba zmienić strategię wejścia w kontur i ustawienia postu (długość odcinka najazdowego).

Ręczna ingerencja w G‑code po wyjściu z CAM

Usuwanie lub przesuwanie bloków typu:

G43 H...
G41 D...
G40
G49

„bo są niepotrzebne” to prosta droga do chaosu. Jedno przypadkowe usunięcie G40 może zostawić aktywną korekcję promienia na kolejnej operacji, która była programowana bez kompensacji. Postprocesor zakłada spójny schemat – ręczne poprawki często tę spójność rozwalają.

Zła konfiguracja bazy (G54…G59) mylona z błędem korekcji

W praktyce często miesza się dwa problemy:

  • przesunięta baza detalu (zły G54 X/Y/Z),
  • brak korekcji długości.

Jeśli detal jest przesunięty o kilka milimetrów, a narzędzie wchodzi złą głębokość o kilka, łatwo o wniosek, że „H nie działa”. Dopiero porównanie G‑code z tabelą baz i offsetów pozwala rozdzielić, co wynika z geometrii zamocowania, a co z postu.

Błędna interpretacja trybu pracy korekcji w konkretnym sterowaniu

Niektóre sterowania (np. starsze Sinumeriki, sterowania OEM) stosują rozszerzone tryby korekcji lub własne M‑kody. Jeżeli post generuje kod „fanucopodobny”, ale maszyna oczekuje innej sekwencji, korekcja może być ignorowana albo wywoływana w trybie, którego operator nie rozumie (np. kompensacja wektorowa zamiast klasycznej wzdłuż osi Z).

Jak czytać wyjście postprocesora krok po kroku

1. Zlokalizuj blok wywołania narzędzia

Najpierw trzeba znaleźć miejsce, gdzie zmienia się narzędzie, np.:

N120 T5 M6

Wokół tego bloku szukasz:

  • ustawienia bazy (G54..G59),
  • ustawienia trybu (G90/G91, G17/G18/G19),
  • pierwszego ruchu w Z z korekcją długości.

2. Sprawdź, czy po Tn M6 pojawia się G43 z H

Kilka następnych linii po zmianie narzędzia powinno zawierać:

G0 G90 G54 X... Y... S... M3
G43 H5 Z...

Jeżeli zamiast G43 H5 jest samo:

G0 Z100.

oznacza to, że korekcja długości nie jest wywoływana w ogóle. Wtedy trzeba wrócić do ustawień postu lub szablonu operacji CAM.

3. Zweryfikuj zgodność numerów T, H i D

Przy każdym narzędziu zapisz sobie trójkę:

T5   H5   D5
T7   H7   D7

Potem porównaj to z tabelą offsetów w sterowaniu. Jeśli dla T5 post generuje H3 D8, a operator w sterowaniu założył, że „H = T, D = T”, mamy gotowy powód błędnego zachowania.

4. Poszukaj G41/G42 i odpowiadających im D

Dla operacji konturowych z kompensacją w maszynie G41/G42 powinno pojawić się tuż przed wejściem w kontur, np.:

G0 X0 Y-10.
G1 Z-5. F200.
G41 D5 X0 Y0 F300.

Brak G41/G42 przy operacji, która w CAM ma ustawioną kompensację w sterowaniu, oznacza, że post albo ją ignoruje, albo operacja jest skonfigurowana na kompensację w CAM.

5. Upewnij się, że G40 i G49 są w logicznych miejscach

G40 powinno się pojawić po zakończeniu pracy z korekcją promienia, przed odjazdem i ewentualną zmianą narzędzia:

G40 X... Y...
G0 Z100.

G49 zazwyczaj znajduje się na końcu operacji narzędzia, po odjeździe w bezpieczne Z. Jeżeli G49 pojawi się w środku obróbki (np. po pauzie M0), dalsze ruchy Z będą wykonywane bez kompensacji długości, mimo że we wrzecionie wciąż jest to samo narzędzie.

6. Zwróć uwagę na komentarze i zmienne pochodzące z CAM

Wiele postów dopisuje nad blokiem narzędzia komentarz z informacją o korekcji, np.:

( TOOL 5 <FREZ 10 R5> DIA COMP: WEAR LEFT  )

Jeśli w komentarzu widać „DIA COMP: WEAR LEFT”, a niżej brak G41/G42, wiesz, że informacja z CAM nie została przełożona poprawnie na G‑code. To wskazuje bezpośrednio na błąd w definicji postu.

7. Sprawdź zachowanie na krótkim, testowym programie

Zamiast analizować długą obróbkę, lepiej wygenerować prosty kontur testowy, np. kwadrat z jedną głębokością. Na takim przykładzie łatwiej:

  • zobaczyć, czy G41/G42 wchodzą we właściwym miejscu,
  • zmierzyć różnicę wymiaru przy zmianie wartości w D (kompensacja promienia),
  • sprawdzić wpływ zmiany H na głębokość Z.
Zbliżenie na pracującą maszynę CNC podczas precyzyjnej obróbki
Źródło: Pexels | Autor: Daniel Smyth

Konfiguracja postprocesora pod korekcję długości narzędzia

Ustalenie filozofii numeracji offsetów

Na początku trzeba zdecydować, jak ma wyglądać powiązanie:

  • T ↔ H (długość),
  • T ↔ D (promień/zużycie).

Najprostszy wariant: H = T, D = T. W postprocesorze ustawiasz wtedy, by dla narzędzia T5 generował G43 H5 i G41/G42 D5. Warunek: ta sama logika musi być przyjęta w sterowaniu i w dokumentacji stanowiskowej.

Włączenie automatycznego generowania G43

W większości systemów CAM w definicji postu jest przełącznik typu „Enable tool length compensation”. Po jego aktywacji post wstawia G43 H# po bloku T# M6. Należy ustawić, czy:

  • G43 ma się pojawiać zawsze z ruchem w Z (np. G43 H# Z100.),
  • czy ma być wydzielony do osobnego bloku bez ruchu.

Drugi wariant bywa przydatny przy nietypowych procedurach najazdu, ale wymaga większej dyscypliny w pisaniu cykli.

Mapowanie numeru narzędzia na numer H

Post musi wiedzieć, jak przeliczyć numer H dla danego narzędzia. Typowe opcje:

  • H = T – najczęściej stosowane w małych warsztatach,
  • H = offset zdefiniowany w bibliotece narzędzi CAM – narzędzie ma własny „Tool Length Offset ID”, niezależny od numeru T.

W drugim przypadku operator musi dostać czytelną listę: T5 → H13, T7 → H21 itd. Bez tego korekcja długości działa poprawnie matematycznie, ale jest praktycznie nieużywalna na hali.

Parametry bezpieczeństwa najazdu w Z

W konfiguracji postu określa się także:

  • poziom Z, na który ma jechać maszyna podczas aktywacji G43 (np. Z100., Zbezpieczne),
  • czy ma używać ruchu G0 czy G1 w momencie włączania korekcji.

Typowy, bezpieczny schemat: najpierw G0 nad detal na bezpieczną Z bez G43, potem na tej wysokości G43 H# Zbezpieczne (często bez ruchu), a następnie zejście Z z kompensacją długości.

Integracja z sondą narzędziową i automatycznym pomiarem

Jeżeli maszyna korzysta z automatycznego pomiaru narzędzia, post może generować dodatkowe sekwencje M‑kodów i cykli, które:

  • po zmianie narzędzia wywołują pomiar długości,
  • zapisują wynik pomiaru do odpowiedniego offsetu H.

Obsługa nietypowych przypadków długości narzędzia

Część postów musi brać pod uwagę narzędzia o różnych punktach referencyjnych: np. frezy palcowe mierzone do czubka, głowice planujące mierzone do płytki. Jeżeli w CAM zdefiniujesz „Length from gauge line”, a na maszynie długości są wpisane „do płaszczyzny płytki”, powstaje stałe przesunięcie Z, którego nie skoryguje żadna magia w G‑code.

Dobrą praktyką jest ujednolicenie w zakładzie jednej filozofii pomiaru długości i odzwierciedlenie jej w postprocesorze. W ustawieniach narzędzia CAM wskaż, skąd liczona jest długość, i opisz to w dokumentacji dla operatorów. Wtedy G43 H# będzie interpretowane tak samo przez CAM i sterowanie.

Kontrola kolejności bloków przy zmianie długości

Przy bardziej rozbudowanych procedurach (sonda, dodatkowe M‑kody) kolejność bloków staje się krytyczna. Typowy, bezpieczny schemat w G‑code:

T5 M6
G0 G90 G54 X... Y... S... M3
G43 H5 Z100.

Jeżeli post wstawi G43 H5 przed ruchem w bazę (G54 X/Y) albo po zejściu w Z blisko detalu, można doprowadzić do niekontrolowanego ruchu po przeliczeniu Z. W konfiguracji postu szukaj sekcji odpowiedzialnej za „tool change output order” i trzymaj się jednego, sprawdzonego schematu dla wszystkich narzędzi.

Rozróżnienie korekcji długości roboczej i pomocniczej

Na maszynach z dodatkowymi osiami lub chwytakami stosuje się czasem kilka zestawów offsetów długości: główna długość narzędzia, długość głowicy kątowej, przedłużki. Postprocesor powinien mieć możliwość wyboru, czy H odnosi się do:

  • czystej długości narzędzia,
  • sumarycznej długości zestawu (wrzeciono + adapter + głowica).

Jeśli w CAM zaprogramujesz głowicę kątową bez tej informacji, a post zawsze wygeneruje G43 H# „jak dla zwykłego freza”, maszyna zignoruje realną geometrię układu i korekcja długości będzie błędna mimo pozornie poprawnego G‑code.

Weryfikacja korekcji długości na maszynie bez ryzyka kolizji

Przy pierwszych testach postu lepiej nie wchodzić od razu w detal. Prosty sposób:

  1. ustaw bazę detalu (G54) na pustym obszarze stołu, wyżej niż najwyższy element mocujący,
  2. wpisz poprawną długość narzędzia tylko do jednego offsetu H, resztę zostaw jako zero,
  3. uruchom program i obserwuj ruchy Z przy aktywacji G43 H# i zmianie H.

Jeżeli zmiana wartości w H natychmiast przekłada się na zmianę rzeczywistej wysokości ruchu Z (bez dotykania czegokolwiek), korekcja długości działa, a źródła problemu trzeba szukać w numeracji lub bazach, a nie w samym G43.

Dostosowanie postprocesora do korekcji promienia narzędzia

Wybór trybu kompensacji: w CAM czy w sterowaniu

Na poziomie operacji CAM zwykle masz trzy opcje:

  • kompensacja w CAM (brak G41/G42, ślad po „gotowym” konturze),
  • kompensacja w sterowaniu (G41/G42, promień korygowany w D),
  • tryb hybrydowy: zgrubnie w CAM, drobna korekta w sterowaniu (wear).

Postprocesor musi reagować na ten wybór. Jeśli wszystkie operacje generuje „jak leci” z G41/G42, niezależnie od ustawień CAM, łatwo o podwójną kompensację. W definicjach cykli sprawdź, czy post czyta flagę „tool radius compensation” z operacji, czy stosuje narzucony globalnie tryb.

Przypisanie offsetu D do narzędzia

Podobnie jak przy H, postprocesor potrzebuje jasnej reguły „skąd wziąć numer D”. Możliwości jest kilka:

  • D = T – najprostsze, dla prostych programów i małej liczby narzędzi,
  • D = osobny identyfikator kompensacji promienia z biblioteki narzędzi,
  • D = numer wynikający z mapowania grup narzędzi (np. wszystkie frezy Ø10 → D10).

Jeżeli w CAM zdefiniujesz osobny „Wear Offset ID”, ale post tego nie czyta i zawsze generuje D = T, na maszynie będziesz obserwować „ignorowanie” zmian w D# innym niż T# – bo dana wartość nigdy nie jest wywoływana w programie.

Kontrola kierunku kompensacji: G41 czy G42

W CAM kierunek kompensacji (lewa/prawa) jest powiązany z kierunkiem przejścia po konturze. Post ma obowiązek to odzwierciedlić. Jeśli w postprocesorze wymusisz zawsze G41 lub zignorujesz informację o stronie, pojawi się zjawisko pozornej „niezgodności wymiaru” niezależnej od wartości D.

Dobrym testem jest wygenerowanie dwóch konturów: jednego CW, drugiego CCW, z tą samą korekcją „lewa/prawa” w CAM. W G‑code powinna się zmieniać odpowiednio sekwencja G41/G42, a nie geometria ścieżki.

Definicja odcinka najazdu z korekcją

Większość postów ma parametr typu „lead-in length for cutter compensation”. Jeżeli będzie zbyt krótki, sterowanie nie zdąży obliczyć przesunięcia toru i wyrzuci alarm. Zbyt długi – narzędzie wjedzie w obszar, którego nie przewidział technolog.

W konfiguracji postu określ minimalną długość odcinka prostego przed pełnym wejściem w kontur (np. wielokrotność promienia). Następnie wygeneruj prosty kontur i sprawdź, czy blok z G41/G42 znajduje się na odcinku prostym, a nie w narożniku lub na krótkim łuku.

Wyłączanie kompensacji promienia między przejściami

Część postów pozostawia G41/G42 aktywne między kolejnymi poziomami Z tego samego konturu. To zwykle poprawne. Problem zaczyna się, gdy narzędzie ma odjechać w bok, skorzystać z innego cyklu, a kompensacja wciąż działa.

W kodzie powinno być wyraźne:

G40 X... Y...
G0 Z...

Jeżeli post nie generuje G40 przy zakończeniu obróbki konturu, a tylko na końcu całego programu, maszynie „zostaje” aktywna korekcja na ruchach, które planowane były bez niej. Z zewnątrz wygląda to jak ignorowanie ustawień CAM, w rzeczywistości to brak logiki w wyłączaniu G41/G42.

Obsługa kompensacji zużycia (wear) w postprocesorze

Tryb wear zakłada, że w CAM tor jest liczony dla nominalnego promienia, a w sterowaniu wpisujesz małe korekty (setne dziesiąte milimetra). Aby to działało, post musi:

  • ustawić w CAM narzędzie z promieniem nominalnym,
  • wygenerować G41/G42 z odniesieniem do D#, w którym operator wpisze tylko poprawki, nie pełny promień.

Jeżeli w tabeli D wpiszesz pełny promień, a CAM już go uwzględnił, rzeczywisty ślad narzędzia będzie przesunięty podwójnie. Z poziomu hali wygląda to tak, jakby sterowanie „ignorowało” promień z CAM, podczas gdy to postprocesor nie rozróżnia trybu wear od trybu pełnej kompensacji.

Diagnostyka problemów na konkretnych sterowaniach

Różnice między „fanucopodobnymi” a specyficznymi dialektami

Posty domyślnie generują kod w stylu Fanuca. Wielu producentów sterowań deklaruje zgodność, ale w szczegółach bywa różnie: inne domyślne płaszczyzny, inny sposób łączenia G43 z cyklami stałymi, dodatkowe M‑kody przy korekcji.

Przykład: sterowanie wymaga aktywacji G43 przed wywołaniem cyklu wiercenia G81, inaczej długość narzędzia jest ignorowana w tym cyklu. Standardowy post „fanucowy” może założyć, że kolejność nie ma znaczenia. Efektem będą różne głębokości przy tej samej wartości H.

Typowe pułapki na Sinumeriku

Na Sinumeriku często stosuje się cykle i dane narzędziowe zapisane w tabelach maszynowych, a nie jako klasyczne G43/G41/G42. Post generujący „czysty Fanuc” może:

  • ignorować wewnętrzne funkcje korekcji długości (TOOL LENGTH),
  • nie wywoływać prawidłowo tablicy promieni (R‑table),
  • łączyć niekompatybilne tryby (np. kompensacja wektorowa vs. osiowa).

Przy konfiguracji postu dla Sinumerika sprawdź, czy używa on natywnych konstrukcji (CYCLE800, TOOL CALL z parametrami L i R), czy emuluje „fanucowe” G43/G41. W drugim przypadku niektóre korekcje mogą być ignorowane przez wewnętrzne procedury cykli.

Sterowania z rozszerzoną korekcją dynamiczną

Nowocześniejsze sterowania (Heidenhain, nowsze Fanuki, niektóre OEM) potrafią stosować zaawansowane funkcje: kompensację narzędzia względem 5 osi, korekcję wygięcia, dynamiczne dopasowanie w narożach. Jeżeli post generuje tylko podstawowe G43/G41, część funkcji pozostanie nieużyta lub będzie domyślnie wyłączona.

W dokumentacji postu poszukaj sekcji związanych z „5‑axis tool center point control”, „TCPM”, „TCPC”. Bez ich aktywacji maszyna może działać jak 3‑osiowa, a wszelkie korekty długości/ promienia względem skręconej osi będą ignorowane.

Testy porównawcze na różnych maszynach z tym samym G‑code

Dobrym narzędziem diagnostycznym jest uruchomienie tego samego, prostego programu na dwóch maszynach z różnymi sterowaniami. Jeśli:

  • na jednej korekcja działa poprawnie,
  • na drugiej głębokość lub wymiar jest błędny,

problem leży po stronie interpretacji G‑code, nie CAM. Wtedy zamiast modyfikować geometrię w CAM, trzeba przygotować wariant postu dla konkretnego sterowania lub włączyć odpowiednie tryby zgodności (np. „Fanuc mode” w Sinumeriku).

Porządkowanie przepływu informacji: od planowania po uruchomienie

Spójna dokumentacja narzędzi i offsetów

Sama modyfikacja postu nie wystarczy, jeśli operatorzy nie wiedzą, jakie wartości wpisać do tabel T/H/D. Przy każdym programie powinien istnieć jasny arkusz lub wydruk:

  • T# – opis narzędzia, średnica, długość nominalna,
  • H# – numer i oczekiwana metoda pomiaru (ręczna/sonda),
  • D# – początkowa wartość kompensacji promienia (dla wear zwykle 0.000).

Taki dokument jest „mostem” między CAM a sterowaniem. Bez niego maszyna „ignoruje” korekcję tylko dlatego, że wpisano ją w niewłaściwe miejsce w tabeli.

Procedura weryfikacji nowego lub zmienionego postu

Przed wdrożeniem nowej wersji postprocesora przydaje się krótka, stała checklista:

  1. wygenerować test korekcji długości (prosty ruch w Z z różnymi H),
  2. wygenerować test korekcji promienia (kontur z G41/G42 i z pomiarem detalu),
  3. sprawdzić numery T/H/D w G‑code i na sterowaniu,
  4. uruchomić testy najpierw w powietrzu, potem w miękkim materiale.

Takie podejście szybko ujawnia niezgodności, które w długim, produkcyjnym programie są trudne do wychwycenia. Zamiast szukać „błędu maszyny”, wracasz do konkretnej linii G‑code i ustawienia w postprocesorze.

Najczęściej zadawane pytania (FAQ)

Dlaczego maszyna ignoruje korekcję długości narzędzia mimo ustawionego H w tabeli?

Najczęściej w G-code w ogóle nie ma komendy G43 z prawidłowym numerem H, albo numer H nie zgadza się z wierszem w tabeli offsetów. Samo T5 M6 nie włącza korekcji długości – potrzebne jest jeszcze G43 H5 (lub inny numer, zgodny z tabelą).

Drugi typowy błąd: postprocesor ma wyłączoną generację G43, bo ścieżka została policzona „z kompensacją w CAM”. Wtedy nawet poprawnie wpisane długości w sterowaniu nie zostaną użyte, a Z pojedzie jak dla narzędzia „o długości zero”.

Dlaczego frez jedzie „po modelu”, chociaż mam ustawiony promień w tabeli D?

Jeśli w G-code nie ma G41/G42 z odpowiednim numerem D, sterowanie traktuje współrzędne jako tor środka narzędzia. Wpisany w tabeli promień nie zadziała sam z siebie – aktywuje go dopiero G41 D… lub G42 D…

Druga sprawa to strategia kompensacji w CAM. Gdy w operacji ustawiono „In computer”, postprocesor zwykle nie generuje G41/G42, bo ścieżka jest już przesunięta o promień. Jeśli w takim programie dodatkowo włączysz G41/G42 ręcznie, kontur będzie zdublowanie skompensowany.

Jak szybko sprawdzić, czy problem leży w postprocesorze, a nie w maszynie?

Najpierw otwórz wygenerowany G-code i sprawdź, czy przy zmianie narzędzia pojawia się zestaw typu: T… M6, potem G43 H… i (jeśli ma działać korekcja promienia) G41/G42 D…. Jeśli tych komend nie ma, albo numery H/D nie pokrywają się z tabelą, problem jest po stronie postprocesora/CAM.

Jeśli kod wygląda poprawnie, dopiero wtedy warto przejrzeć tabelę offsetów w sterowaniu, parametry blokujące korekcję i ewentualne makra M, które mogą kasować G40/G49 w trakcie programu.

Czy numer H i D musi być zawsze taki sam jak numer narzędzia T?

Nie musi. To tylko przyjęta konwencja warsztatowa. W wielu zakładach stosuje się H=T i D=T (np. T5 G43 H5 G41 D5), ale technicznie nic nie stoi na przeszkodzie, żeby T3 pracowało z H13 i D23.

Kluczowa jest spójność CAM → postprocesor → tabela w sterowaniu. Jeśli postprocesor zakłada H=T, a operator numeruje długości inaczej, sterowanie pobierze korekcję z „pustego” wiersza i efekt będzie taki, jakby kompensacji nie było.

Ustawiłem w CAM „kompensacja w sterowaniu”, ale w G-code nie ma G41/G42. Co jest nie tak?

Opcja w CAM to tylko wskazówka dla postprocesora. Jeśli post jest skonfigurowany tak, że ignoruje kompensację promienia i zawsze „wypala” ścieżkę po torze narzędzia, w wygenerowanym kodzie nie pojawi się G41/G42 niezależnie od ustawień operacji.

Trzeba wtedy edytować ustawienia lub plik postprocesora: włączyć generowanie G41/G42, zdecydować logikę numeracji D oraz upewnić się, że CAM nie liczy już ścieżki po geometrii narzędzia (żeby nie dublować kompensacji).

Jak wygląda minimalny poprawny blok G-code z aktywną korekcją narzędzia?

Dla typowego frezowania na sterowaniu fanucopodobnym podstawowy zestaw komend to:

  • T5 M6
  • G0 G90 G54 X… Y… S… M3
  • G43 H5 Z100.
  • G1 Z… F…
  • G41 (lub G42) D5 X… Y… F…

Brak któregokolwiek z elementów (G43 H5 lub G41/G42 D5, jeśli używasz korekcji promienia) powoduje, że maszyna pojedzie tak, jakby odpowiednia korekcja była równa zero.

Maszyna czasem widzi korekcję, a czasem nie – od czego zacząć diagnostykę?

Najprościej prześledzić program narzędzie po narzędziu. Sprawdź, czy dla każdego T pojawia się odpowiedni G43 H… i czy nie ma „po drodze” G49 albo G40 wstawionych ręcznie (np. w MDI lub w makrze zmiany narzędzia), które zdejmują korekcję.

W praktyce problem bywa mieszany: jedna operacja ma w CAM „In computer”, inna „In control”, a postprocesor dodatkowo raz generuje G41/G42, a raz nie. Bez uporządkowania filozofii kompensacji w całym procesie (CAM → post → sterowanie) takie „znikające” offsety będą wracać.

Kluczowe Wnioski

  • Jeśli maszyna ignoruje korekcję narzędzia, pierwsze podejrzenie powinno paść na wyjście postprocesora – to w G-code musi się pojawić G41/G42, G43 i właściwe numery H/D, inaczej sterowanie zignoruje wpisy w tabeli korekt.
  • Sama konfiguracja narzędzia w CAM (średnica, długość, wybór „kompensacja w sterowaniu”) nie gwarantuje poprawnej kompensacji na maszynie; o faktycznych komendach w kodzie decyduje wyłącznie postprocesor.
  • Brak lub błędne G43 H… powoduje ignorowanie korekcji długości – Z jedzie jak bez kompensacji, co kończy się dobiciem w stół albo przejazdem za wysoko względem detalu.
  • Brak G41/G42 lub złe D… przy ścieżce liczonej „po geometrii detalu” skutkuje przesunięciem wymiarów o promień narzędzia – kontury wychodzą za duże, za małe lub narożniki są podcięte.
  • Numery T, H i D nie są automatycznie powiązane; jeśli post zakłada H=T i D=T, a operator używa innego systemu numeracji korekt, maszyna będzie korzystać z innych wpisów w tabeli niż oczekiwane.
  • Typowe źródła błędów to mieszanka drobiazgów: zła opcja kompensacji w CAM, wyłączone G41/G42/G43 w poście, niezgodność numerów H/D z tabelą, parametry sterowania blokujące kompensację, ręcznie wpisane G40/G49 w MDI.
  • Logika diagnozy powinna być prosta: najpierw analiza kodu NC, potem tabela narzędzi, dalej ustawienia postprocesora i CAM, dopiero na końcu parametry sterowania i ewentualne makra M – regulacja sondy czy serwis to ostateczność.
Poprzedni artykułPraktyczny przewodnik po wdrażaniu AI w małych firmach: od analizy danych po automatyzację procesów
Stanisław Sikora
Programista i operator CNC z wieloletnią praktyką przy uruchomieniach oraz optymalizacji cykli. Na blogu dzieli się podejściem „najpierw bezpieczeństwo”: poprawne ustawienie układów współrzędnych, kontrola przejazdów, limity osi i świadome użycie kompensacji. Dużo miejsca poświęca postprocesorom i temu, jak czytać kod, by szybko wyłapać ryzykowne fragmenty. Wskazówki opiera na realnych przypadkach z produkcji, pomiarach i obserwacji zachowania maszyny, a rekomendacje zawsze podaje z kontekstem materiału, narzędzia i mocowania.