Które bloki zapisane są jako podprogram?
A.
G90 G00 X10 Z2 G01 Z-16 X22 M17
B.
G90 G00 X52 G01 X-1 G00 X30 Z1 M00
C.
G91 G00 X10 Z2 G01 Z0 G03 X20 Z-10 B10 M30
D.
G91 G00 X0 Z2 G01 Z0 G02 X30 Z-15 B15 M02
Pytanie z egzaminu CKE, czerwiec 2014 (arkusz M.19-X-14.05).
Ten zapis jest właściwy, bo kończy się funkcją M17, a w wielu układach sterowania CNC, szczególnie spotykanych w praktyce szkolnej i przemysłowej, M17 oznacza zakończenie podprogramu oraz powrót do programu głównego. To jest najważniejsza wskazówka w tym pytaniu. Same ruchy narzędzia, czyli G00, G01, współrzędne X i Z albo tryb G90, nie decydują jeszcze o tym, czy mamy program główny czy podprogram. Decyduje sposób zakończenia i logika wywołania. W podprogramie zwykle zapisuje się powtarzalny fragment obróbki, np. najazd, wykonanie tego samego rowka, konturu albo operacji pomocniczej, którą program główny może wywołać kilka razy. Moim zdaniem to bardzo praktyczna rzecz, bo skraca program i zmniejsza ryzyko pomyłki przy przepisywaniu tych samych bloków. W tym przykładzie G90 ustawia programowanie bezwzględne, G00 wykonuje szybki przejazd na pozycję X10 Z2, a G01 realizuje ruch roboczy. Na końcu M17 nie zatrzymuje całej maszyny na stałe, tylko mówi sterowaniu: koniec podprogramu, wróć tam, skąd było wywołanie. Takie rozróżnienie jest dobrą praktyką w programowaniu CNC, bo program główny powinien być czytelny, a powtarzalne sekwencje warto wydzielać do podprogramów.
W tym pytaniu łatwo pomylić sam fragment kodu CNC z podprogramem, bo każdy z pokazanych zapisów wygląda jak normalna sekwencja ruchów narzędzia. Jednak o tym, że blok jest podprogramem, nie świadczy ani obecność G90 lub G91, ani użycie interpolacji liniowej G01 czy kołowej G02/G03. G90 oznacza programowanie bezwzględne, a G91 przyrostowe, czyli określa sposób interpretacji współrzędnych. To ważne dla toru ruchu, ale nie dla typu programu. Podobnie G00, G01, G02 i G03 opisują rodzaj przemieszczenia narzędzia, a nie strukturę programu.
Zapisy zakończone M00, M02 lub M30 nie są typowym zakończeniem podprogramu. M00 oznacza zatrzymanie programu, zwykle po to, żeby operator mógł coś sprawdzić, zmierzyć detal albo wykonać czynność pomocniczą. M02 kończy program główny, a M30 najczęściej kończy program i dodatkowo powoduje powrót na początek programu, zależnie od sterowania. To są funkcje kończące lub zatrzymujące przebieg programu głównego, a nie powrót z podprogramu.
Typowy błąd myślowy polega na tym, że ktoś patrzy na samą geometrię ruchu: skoro jest kilka bloków i narzędzie coś obrabia, to pewnie jest to podprogram. No właśnie nie do końca. W CNC trzeba patrzeć na funkcje organizacyjne programu. Dla podprogramu kluczowe jest zakończenie funkcją powrotu, tutaj M17. Z mojego doświadczenia warto zawsze sprawdzać ostatni blok, bo tam bardzo często ukryta jest odpowiedź, czy dany zapis jest fragmentem roboczym programu głównego, zatrzymaniem technologicznym, czy właśnie podprogramem gotowym do wywołania.
Zapisy zakończone M00, M02 lub M30 nie są typowym zakończeniem podprogramu. M00 oznacza zatrzymanie programu, zwykle po to, żeby operator mógł coś sprawdzić, zmierzyć detal albo wykonać czynność pomocniczą. M02 kończy program główny, a M30 najczęściej kończy program i dodatkowo powoduje powrót na początek programu, zależnie od sterowania. To są funkcje kończące lub zatrzymujące przebieg programu głównego, a nie powrót z podprogramu.
Typowy błąd myślowy polega na tym, że ktoś patrzy na samą geometrię ruchu: skoro jest kilka bloków i narzędzie coś obrabia, to pewnie jest to podprogram. No właśnie nie do końca. W CNC trzeba patrzeć na funkcje organizacyjne programu. Dla podprogramu kluczowe jest zakończenie funkcją powrotu, tutaj M17. Z mojego doświadczenia warto zawsze sprawdzać ostatni blok, bo tam bardzo często ukryta jest odpowiedź, czy dany zapis jest fragmentem roboczym programu głównego, zatrzymaniem technologicznym, czy właśnie podprogramem gotowym do wywołania.