Cześć
Od kilku dni walczyłem z pisaniem suba do pomiaru długości narzędzia, widziałem tutaj na forum kilka rozwiązań, ale żadne z testowanych nie potrafiły jednego, mianowicie pomiar długości narzędzia i zapis w tabeli narzędzi, z tymi które u siebie uruchamiałem albo nie działały według mnie dobrze, albo działały tak że układ współrzędnych Z-etki był przestawiany i oś ładowała się na krańcówkę. W poszukiwaniu w sieci natknąłem się na kilka rozwiązań, z których zapożyczyłem, a w zasadzie zainteresowałem się kodami z zapisanymi w nich "zmiennymi" które wykorzystywano w ich większości, nie chcę tutaj kadzić bo nie czuję się pewny tego o czym piszę, i ciężko będzie mi też polemizować na temat dlaczego tak a nie inaczej, dopiero w tym raczkuję.
W zasadzie co mnie skłoniło aby to opisać, potrzebuję oceny, testów, wytknięcie błędów w kodzie i w toku rozumowania, programowania swojej maszyny dopiero się uczę i przekonany jestem że kod działa przypadkowo, a testy wykonałem błędnie.
Przeprowadziłem ich kilka i na tą chwilę to działa, po każdym pomiarze, długość jest zapisywana w tabeli do wybranego narzędzia, i wywołanie funkcji G43 z Nr Narzędzia kompensuje położenie wysokości Z-tki.
Procedura pomiaru jest przerywana na czujniku, tylko i wyłącznie w przypadku nie wybrania narzędzia i wywalany jest systemowy komunikat błędu pomiaru.
Oczywiście SUB mam podpięty pod przycisk którym wywołuje pomiar.
Jak przeprowadziłem test i jak to działa:
Po z bazowaniu maszyny:
w MDI wprowadzam zmianę narzędzia Np: T1M6 i wciskam na pomiar narzędzia.
Z-tka podnosi się do bezpiecznej wysokości, najeżdża nad czujnik, zjazd szybki Z-tki do kontaktu z czujnikiem, wycofanie się jej o 2mm, i kolejny zajazd tym razem wolny do kontaktu, po tym oś Z znowu jest podnoszona do bezpiecznej wysokości i przejazd bramy do wcześniej ustawionych offsetów osi X i Y.
Zaraz po pomiarze przy Nr narzędzia pokazuje się jego długość oraz to samo w tabeli narzędzi.
Kod: Zaznacz cały
o<touch-probe> sub
G49
G90
G53 G0 Z0 (oś Z na pozycję bezpieczną)
G53 X8.846 Y663.624 (przejazd nad czujnik)
G91
G38.2 Z-90 F600 ( szybki zjazd do kontaktu, max 90mm w dół )
G0 Z2 ( wycofanie na 2 mm )
G38.2 Z-10 F30 ( wolny zjazd do kontaktu, max 10mm w dół)
#<offset> = [-86.037 - [#5063 - [-#5213]]] (-86.037 jest to odległość do czujnik od pozycji bazowej. pomiar wykonany ręcznie do zapalenia się w moim przypadku kontrolki)
#<dlugosc_narzedzia> = -[#<offset> - #5223]
G10 L1 P[#5400] Z[#<dlugosc_narzedzia>] (zapis w tabeli narzędzi)
G43 H[#5400] (ustawienie osi Z z kompensacją narzędzia)
G90
G53 G0 Z0 (powrót do bezpiecznego Z)
G0 X0 Y0 (przejazd bramy do ustawionych offsetów osi X i Y)
o<touch-probe> endsub