Znaleziono 9 wyników

autor: tuxcnc
03 maja 2021, 20:14
Forum: LinuxCNC (dawniej EMC2)
Temat: M6 remap
Odpowiedzi: 14
Odsłony: 1599

Re: M6 remap

szatri pisze:
03 maja 2021, 08:39
Podaj jakiś fragment kodu
No akurat tak się zupełnym przypadkiem złożyło, że się w końcu zabrałem za wycięcie kilku fikuśnych blaszek, które mają robić za nakrętki do chińskiego stołu teowego.
No więc była okazja napisać prosty program z palca.
Doszedłem też do wniosku że dokładniejszy opis może się komuś przydać.
Na początek maszyna, żeby było jasne co gdzie jest :
Obrazek
Wrzeciono stoi teraz w pozycji po bazowaniu, w tym kącie są wszystkie krańcówki, ale nie może tam być G53X0Y0Z0, bo to by było niewygodne. Gdyby krótsza oś była X a dłuższa Y, toby układ współrzędnych był odbity w lustrze, tak więc pozostawało albo zamienić osie, albo punkt G53X0Y0Z0 przesunąć gdzieś indziej.
Ustawiłem tak, że tam gdzie wrzeciono stoi na zdjęciu jest G53X0Y356Z0, czyli współrzędne maszynowe zaczynają się od lewego dolnego rogu fotografii.
Gdzie jest czujnik widać, jest to pozycja G53X192Y356, natomiast punkt wymiany narzędzia jest zdefiniowany na G53X230Y356, czyli na prawo od czujnika.
Jak widać materiał jest mocowany w imadle, widać też miejsca po wyciętych blaszkach, które zdefiniowane są następująco :
Obrazek
Jak można zauważyć X0Y0 to środek jednego z otworów i tam trzeba wcześniej ustawić zero używanego układu współrzędnych.
Tak więc wszystko powinno już być jasne i czas na program :

Kod: Zaznacz cały

M6T1
G43
M3 S24000
F1000
G53 G0 X0
G0 Y0
G0 X-0.55
G0 Z0
G2 I0.55 Z-5 P5
G0 Z1
G0 Y10
G0 X-0.55
G0 Z0
G2 I0.55 Z-5 P5
G0 Z1
G0 Y20
G0 X-0.55
G0 Z0
G2 I0.55 Z-5 P5
G0 Z1
G0 Y20 X8.4
G0 Z0 
G1 Y0 Z-1
G2 X-8.4 I-8.4
G1 Y20
G2 X8.4 I8.4
G1 Y0 Z-2
G2 X-8.4 I-8.4
G1 Y20
G2 X8.4 I8.4
G1 Y0 Z-3
G2 X-8.4 I-8.4
G1 Y20
G2 X8.4 I8.4
G1 Y0 Z-4
G2 X-8.4 I-8.4
G1 Y20
G2 X8.4 I8.4
G1 Y0
G53 G0 Z0
M5
M2
Zasadniczo ważny tutaj jest tylko początek, do którego dopisałem komentarze :

Kod: Zaznacz cały

M6T1 (wymień narzędzie na nr 1)
G43 (zastosuj offset bieżącego narzędzia)
M3 S24000 (włącz wrzeciono na 24 tys obr/min)
F1000 (ustaw posuw roboczy na 1000 mm/min)
G53 G0 X0 (pojedź maksymalnie w lewo)
G0 Y0 (pojedź po lewej krawędzi stołu do Y0 w bieżącym układzie współrzędnych ) 
G0 X-0.55 (pojedź w prawo do miejsca początku obróbki)
G0 Z0 (zjedź frezem do powierzchni materiału)
Wykonanie blaszki wygląda następująco :
Bazuję maszynę.
Zakładam frez 1/8" (3,175mm) bo dla takiego jest napisany program.
Wykonuję w MDI komendę M6T1.
Jeżeli jest ustawione narzędzie inne niż T1 to maszyna jedzie do punktu wymiany i wyświetla stosowny komunikat. Jeżeli jakimś przypadkiem było już ustawione narzędzie T1, to maszyna pojedzie na punkt wymiany, ale bez żadnego komunikatu przejdzie do pomiaru narzędzia. Tutaj niczego się nie wymyśli, jeśli jest założone narzędzie o określonym numerze, to nie ma potrzeby go zmieniać, nawet jeśli fizycznie to nie jest to którego potrzebujemy. Trzeba po prostu o tym pamiętać.
Po pomiarze wrzeciono ustawia się w maksymalnie górnym położeniu nad czujnikiem.
Teraz w MDI wydaję polecenie G43 żeby zastosować zmierzony offset narzędzia.
Następnie ruchami ręcznymi najeżdżam frezem nad punkt w którym pasuje mi ustawić początek obróbki, delikatnie dotykam frezem powierzchni materiału i ustawiam wszystkie offsety używanego układu współrzędnych na zero, po czym na wszelki wypadek jadę wrzecionem w górę.
Teraz maszyna jest gotowa do załadowania i wykonania programu.
Po kliknięciu w <START> wrzeciono jedzie najpierw maksymalnie w górę, potem na punkt wymiany narzędzia czyli prawy górny róg, ponieważ T1 jest już ustawione więc program się nie zatrzymuje, najeżdża nad czujnik, mierzy narzędzie i jedzie maksymalnie w górę.
Tutaj zaczyna się jazda, żeby jadąc do miejsca pracy w nic nie grzmotnąć po drodze. Dlatego najpierw jest G53 G0 X0 który powoduje jazdę na maksymalnej wysokości w lewo do oporu, a potem G0 Y0 co daje ruch po krawędzi stołu. Po prostu założyłem że w pozycjach Y365 nie ma niczego oprócz czujnika narzędzia, a w pozycjach X0 nie ma w ogóle niczego, więc tamtędy można bezpiecznie jeździć, natomiast na reszcie stołu mają prawo być przeszkody.

Teraz już chyba wszystko powinno być jasne.
autor: tuxcnc
03 maja 2021, 08:57
Forum: LinuxCNC (dawniej EMC2)
Temat: M6 remap
Odpowiedzi: 14
Odsłony: 1599

Re: M6 remap

szatri pisze:
03 maja 2021, 08:39
Czyli że g43 ma być w camie?
Podaj jakiś fragment kodu z zmiana co sam urzywasz to może zrozumie?
Wybacz, ale wykład z g-kodów przekracza temat tego wątku.
Jeżeli używasz offsetów narzędzi, to następną linią po M6 musi być G43, reszty dowiedz się sam.
autor: tuxcnc
03 maja 2021, 07:53
Forum: LinuxCNC (dawniej EMC2)
Temat: M6 remap
Odpowiedzi: 14
Odsłony: 1599

Re: M6 remap

szatri pisze:
03 maja 2021, 07:19
Program z cama ma tylko M6 i reszta po stronie maszyny, to chyba logiczne.
Nic nie stoi na przeszkodzie żeby procedura zapamiętywała położenie w którym została wywołana i wracała tam po wymianie i pomiarze narzędzia, tylko uwierz mi że to jest głupi pomysł.
CAM nie wie gdzie wymieniasz narzędzie i co masz zamontowane na stole, więc wcześniej czy później zrobisz paskudnego dzwona.
Stanowczo lepiej podłubać w postprocesorze CAM-a.
szatri pisze:
03 maja 2021, 07:19
Program z cama ma tylko M6 i reszta po stronie maszyny, to chyba logiczne.

Jeszcze kwestia samego pomiaru, a może tabeli narzędzi, bo wcale nie korzysta z wysokości, cały czas robi na tej z g54 i z t1 na którym to było ustawione g54.
Chyba znowu wychodzą braki wiedzy.
Polecenie T przygotowuje narzędzie, czyli w praktyce program zapamiętuje jego numer, ewentualnie przestawia magazyn, ale nie zmienia offsetów.
Polecenie M6 wymienia narzędzie, ale nie zmienia offsetów.
Czyli jeżeli w programie jest tylko M6 to nie korzystasz z offsetów z tabeli narzędzi i w ogóle zupełnie niepotrzebnie je mierzysz.
Offset narzędzia ustawia G43 a odwołuje G49.
Znowu można by było G43 ustawiać w procedurze, ale znowu byłoby to złamanie standardu, bo M6 to nie G43, M6 ma wymienić narzędzie i nie wnikać w offsety.
No i znowu wracamy do edycji postprocesora.

I na koniec, uwierz że warto trzymać się standardów. Złych nawyków nabiera się szybko i łatwo, a potem trudno się ich oduczyć, a może przyjść taki dzień gdy zaczną przeszkadzać zamiast pomagać.
autor: tuxcnc
02 maja 2021, 21:41
Forum: LinuxCNC (dawniej EMC2)
Temat: M6 remap
Odpowiedzi: 14
Odsłony: 1599

Re: M6 remap

szatri pisze:
02 maja 2021, 20:49
Czy testowałeś ta procedurę na maszynie?

Wklepałem dziś ta konfiguracje i nie jestem zadowolony, robiłem to na patyku i dzięki temu nie rozwaliłem czujnika (choć mało brakło)

Chodzi o odjazd po pomiarze na maszynowe z0 i dojazd w TEJ wysokości nad g54 i dopiero zjazd do materiału, a nie jak obecnie po pomiarze wyjedzie w górę i już zanim z czujnika zjedzie jedzie najpierw w Zecie na g54 (pól biedy jak to jest niski czujnik poniżej materiału)

Wiozłem program na ten napis linuxcnc, dopisałem 3 narzędzia, pierwsze narzędzie oczywiście idzie prawidłowo bo z niego jest g54, drugie krótsze zamiast iść nad materiałem to idzie wyzej różnice wysokości (czyli nic się nie zmieniło), kolejne trzecie już dłuższe od pierwszego niżej od materiału o różnice wysokości.

Działa ona komuś w ogóle?
Testowałem.

Albo masz coś źle ustawione, albo oczekujesz od procedury czegoś czego ona nie robi, albo nie rozumiesz jak procedura działa, albo wszystko na raz.
Przy prawidłowym ustawieniu, po napotkaniu M6 wrzeciono powinno pojechać maksymalnie w górę, potem na pozycję wymiany narzędzia i wyświetlić "zmień narzędzie". Po potwierdzeniu, wrzeciono powinno pojechać nad czujnik, cały czas w maksymalnej górnej pozycji, zmierzyć narzędzie, wpisać offset do tabeli narzędzi, pojechać maksymalnie w górę i na tym koniec.
Program główny musi zadbać o resztę, czyli na przykład wydać sekwencję G43 G0X0Y0 G0Z0 albo coś w tym stylu.
Program sam z siebie nie będzie wiedział że wrzeciono jest nad czujnikiem, a nie tam skąd wywołano M6.
Musi tak być dla zachowania kompatybilności ze zwykłym M6, to znaczy procedura nie powinna robić niczego, czego zwykłe M6 nie robi, bo użytkownik mógłby się przyzwyczaić a potem być niemile zaskoczony że gdzie indziej działa inaczej.
autor: tuxcnc
07 kwie 2021, 14:11
Forum: LinuxCNC (dawniej EMC2)
Temat: M6 remap
Odpowiedzi: 14
Odsłony: 1599

Re: M6 remap

szatri pisze:
07 kwie 2021, 11:08
Niestety to ma jakiś błąd z limitem w osi Z
Coś masz źle ustawione.
autor: tuxcnc
06 kwie 2021, 14:40
Forum: LinuxCNC (dawniej EMC2)
Temat: M6 remap
Odpowiedzi: 14
Odsłony: 1599

Re: M6 remap

szatri pisze:
06 kwie 2021, 11:28
Czy tak będzie to dobrze poprawione?
Tak, jest dobrze.
szatri pisze:
06 kwie 2021, 11:28
I taki plik zapisać jako tool-change.ngc w folderze z configiem?
Nie, trzeba go zapisać w folderze z plikami ngc, zgodnie z tym co masz w pliku INI w zmiennej PROGRAM_PREFIX .
szatri pisze:
06 kwie 2021, 11:28
czy dobrze rozumiem ze muszę dopisać w ini ta składnie bez tych średników
Niezupełnie, masz dopisać te linie których brakuje. Czyli przykładowo wpis [RS274NGC] na pewno już masz, wpis FEATURES = 4 możesz mieć a możesz nie mieć, natomiast wpisu REMAP=M6 modalgroup=6 ngc=tool-change na pewno nie masz. Wpisy mają być we właściwych sekcjach, bo inaczej Linuxcnc ich nie odczyta prawidłowo. Ale to są podstawy i więcej tłumaczyć nie będę.
szatri pisze:
06 kwie 2021, 11:28
Oraz poprawić na swoje miejsce [TOOLSENSOR] w tych xpos, y, z, w pozycjach maszyny? (g90)
Znowu niezupełnie, to są współrzędne maszynowe G53, czyli te które wynikają z wpisów w pliku INI.
Jeżeli wpiszesz na przykład XPOS=50 YPOS=70, to po wykonaniu G53G0X50Y70 powinieneś najechać na pozycję czujnika.
szatri pisze:
06 kwie 2021, 11:28
Czy teraz już po ustawieniu g54 (hmm ale czym, sonda czy pierwszym używanym narzędziem w programie) i jego puszczeniu pojedzie w "Z" do max wysokości (no ale to rożnie z kierunkiem tu bywa, raz jest w minus a inni maja w plus) na "TOOL_CHANGE_POSITION" i po zatwierdzeniu nad czujnik z długością pomiaru "DISTANCE = 71" i prędkością "FEED1 = 500" i po zetknięciu styków zjedzie z prędkością "FEED2 = 100", po zapisaniu pomiaru w tabeli w górę w "Z" i do roboty w aktualnym offsecie (g54)?
Znowu niezupełnie.
Nie mam teraz ani głowy żeby pisać, ani siły żeby sprawdzić, więc będzie z pamięci, mam nadzieję że bez pomyłek.
Ustawiasz jakiś układ współrzędnych, niech będzie G54, ale może być inny.
Wydajesz polecenie M6 T<ileś>. "Ileś" nie może być zero, albo wartością której nie ma w tabeli narzędzi. Załóżmy że M6 T1, bo narzędzie numer jeden powinieneś mieć.
Teraz zakładasz frez i klikasz "dalej".
Procedura mierzy narzędzie i wpisuje offset do tabeli narzędzi. Nie robi nic więcej, w szczególności nie ustawia żadnego offsetu.
Teraz wywołujesz offset narzędzia G43 .
Następnie najeżdżasz nad materiał i zjeżdżasz tak żeby frezem dotknąć materiału. Można też "na papierek".
W tym momencie musisz ustawić offset układu współrzędnych, albo klikając w odpowiednią ikonkę, albo poleceniem G10L20P0Z0 .
W tej chwili masz ustawiony zarówno offset układu współrzędnych jak i narzędzia.
Jeśli pomierzysz ponownie to samo narzędzie, to nic się nie zmieni, jeśli pomierzysz inne narzędzie to offset zostanie tak skorygowany, żeby G0Z0 ustawiało koniec freza na powierzchni materiału.
Gdzie pojedzie narzędzie po wydaniu polecenia M6 zależy od tego co masz wpisane w TOOL_CHANGE_POSITION, to też są współrzędne maszynowe G53.

Spróbuj najpierw z jakimś patykiem zamiast freza, może dzwona nie zrobisz.
autor: tuxcnc
04 kwie 2021, 11:01
Forum: LinuxCNC (dawniej EMC2)
Temat: M6 remap
Odpowiedzi: 14
Odsłony: 1599

Re: M6 remap

Zapomniałem o przywróceniu posuwu, trzeba gdzieś na początku dodać

Kod: Zaznacz cały

#<feed> = #<_feed>		 (remember feed value)
oraz gdzieś na końcu

Kod: Zaznacz cały

F #<feed> (restore previous feed value)
Tutaj niczego nie trzeba sprawdzać, bo na pewno F zostanie zmienione.
Tak przy okazji, to widziałem też programy korzystające z G70/G72, pewnie dałoby się użyć też G73, ale ja wolę mieć nad wszystkim pełną kontrolę.
autor: tuxcnc
03 kwie 2021, 23:50
Forum: LinuxCNC (dawniej EMC2)
Temat: M6 remap
Odpowiedzi: 14
Odsłony: 1599

Re: M6 remap

Napisałem własny program.
Wygląda na to, że działa prawidłowo, ale gwarancji nie daję.
Tym się różni od wielu dostępnych w necie, że nie zmienia niejawnie parametrów modalnych, więc nie grozi na przykład dzwon, bo "się przestawiło" z G91 na G90 ...
Trzeba wprowadzić pewne zmiany w pliku INI, ale jest to opisane w nagłówku.

Kod: Zaznacz cały

O<tool-change> SUB
(file tool-change.ngc)

(--- header ---)
(tuxcnc 2021)
(manual tool change with automatic measurement)
(replaces M6 g-code)
(we assume that, toolsensor is permanently mounted)
(and Z parameters of TOOL_CHANGE_POSITION and TOOLSENSOR ZPOS)
(are maximum upper, otherwise you may get collision)
(you must have the following in your INI file)
(without semicolons and you can change parameters)
;[RS274NGC]
;FEATURES = 4
;REMAP=M6 modalgroup=6 ngc=tool-change
;[EMCIO]
;TOOL_CHANGE_QUILL_UP = 1
;TOOL_CHANGE_POSITION = 230 0 0
;[TOOLSENSOR]
;XPOS = 192
;YPOS = 0
;ZPOS = 0
;APOS = 0
;BPOS = 0
;CPOS = 0
;UPOS = 0
;VPOS = 0
;WPOS = 0
;FEED1 = 500
;FEED2 = 100
;TRAVEL =100
;DISTANCE = 71
(--- end of header ---)

#<tool> = #<_selected_tool>
#<previous_tool> = #<_current_tool>

O100 if [#<_task> EQ 0]	( only run the subroutine in milltask interpreter )
        (debug, Task ist Null)
O100     return [999]
O100 endif

o200 IF [ #<tool> EQ 0 ]	( check if tool zero selected and end routine )
(MSG, No Tool Selected )
O200     return [999]
o200 ENDIF

(---  store existing parameters  ---)
#<g30x> = #5181
#<g30y> = #5182
#<g30z> = #5183
#<g30a> = #5184
#<g30b> = #5185
#<g30c> = #5186
#<g30u> = #5187
#<g30v> = #5188
#<g30w> = #5189
#<absolute> = #<_absolute>  (remember in local variable if G90 was set) 
#<mist> = #<_mist> 	    (remember in local variable if M7 was set)
#<flood> = #<_flood>        (remember in local variable if M8 was set)
#<tool_offset> = #<_tool_offset>

G49			 ( cancel tool length compensation )
M9			 ( coolant off )
M6		    	 ( run normal M6 operation )
G91			 ( incremental distance mode )
(---   prepare g30     ----)
#5181 = #<_ini[TOOLSENSOR]XPOS>
#5182 = #<_ini[TOOLSENSOR]YPOS>
#5183 = #<_ini[TOOLSENSOR]ZPOS>
#5184 = #<_ini[TOOLSENSOR]APOS>
#5185 = #<_ini[TOOLSENSOR]BPOS>
#5186 = #<_ini[TOOLSENSOR]CPOS>
#5187 = #<_ini[TOOLSENSOR]UPOS>
#5188 = #<_ini[TOOLSENSOR]VPOS> 
#5189 = #<_ini[TOOLSENSOR]WPOS>
(--------------------------)						
G30 ( go to toolsensor )
#<PlaneOffset> = [#5183 - #5422]  ( get the current plane Z offset )	
G38.2 Z-[#<_ini[TOOLSENSOR]TRAVEL>] F[#<_ini[TOOLSENSOR]FEED1>]  ( fast touch )
G38.4 Z1 F[#<_ini[TOOLSENSOR]FEED2>]
G10 L1 P#<tool> Z-[-#<PlaneOffset> - #5063 - #<_ini[TOOLSENSOR]DISTANCE>] ( store offset in tooltable )
G30 ( go to safe position )
#<previous_tool> = #<tool>

(--- restore parameters ---)
#5181 = #<g30x>
#5182 = #<g30y>
#5183 = #<g30z>
#5184 = #<g30a>
#5185 = #<g30b>
#5186 = #<g30c>
#5187 = #<g30u>
#5188 = #<g30v> 
#5189 = #<g30w>
O<restore_abs> if [#<absolute>]
    G90 (restore only if it was set on entry:)
O<restore_abs> endif
O<restore_mist> if [#<mist>]
    M7 (restore only if it was set on entry:)
O<restore_mist> endif
O<restore_flood> if [#<flood>]
    M8 (restore only if it was set on entry:)
O<restore_flood> endif
O<restore_tool_offset> if [#<tool_offset>]
    G43 (restore only if it was set on entry:)
O<restore_tool_offset> endif
(--------------------------)

O<tool-change> ENDSUB
M2
autor: tuxcnc
31 mar 2021, 21:04
Forum: LinuxCNC (dawniej EMC2)
Temat: M6 remap
Odpowiedzi: 14
Odsłony: 1599

M6 remap

Zabrałem się za konfigurowanie w mojej nowej frezarce ręcznej wymiany narzędzia z automatycznym pomiarem.
Najpierw trafiłem na jakieś cuda na kiju, z klikaniem w przyciski i wyświetlaniem komunikatów przez skrypt pythona, ale zupełnie nie o to mi chodziło.
Ja bym chciał żeby po napotkaniu polecenia M6Tx w programie, wyświetlał się standardowy komunikat "wymień narzędzie na ...", a potem maszyna już sama z siebie pomierzyła nowe narzędzie i ustawiła jego offset.
Zupełnie przypadkiem natrafiłem na https://www.forum.linuxcnc.org/10-advan ... nt-working
Nie sprawdzałem załączonego tam kodu, nie wiem czy jest dobry, ale zupełnie nie o to chodzi.
Po prostu zszokowała mnie linia

Kod: Zaznacz cały

M6				( run normal M6 operation )
Mapowanie polega na tym, że zamiast mapowanej funkcji jest wywoływana funkcja mapująca.
Tutaj każde wywołanie M6 powinno być zastąpione wywołaniem podprogramu tool-change.ngc, a wywołanie M6 wewnątrz tool-change.ngc powinno zakończyć się wejściem w martwą pętlę.
Z nieznanej przyczyny tak się nie dzieje, i działa to w ten sposób, że napotkanie w programie głównym M6 powoduje wywołanie podprogramu tool-change.ngc, ale M6 wewnątrz podprogramu wykonuje się standardowo, i jeśli jest to skonfigurowane w pliku INI to podnosi oś Z, jedzie na zadeklarowany punkt wymiany narzędzia i wyświetla okno z komunikatem "zmień narzędzie ..."
Czyli podsumowując, mapując M6 na podprogram tool-change.ngc zawierający M6, po prostu rozszerzamy standardowe M6 o wykonanie dodatkowych linii przed i po tym poleceniu.
Mam nadzieję że wyjaśniłem to w sposób jasny.

Wróć do „M6 remap”