'witam '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'Poniżej prezentujemy skrypt realizujący pomiar długości narzędzia dla programu Mach3 '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'Przygotowane przez krzysiekgrab@o2.pl dla Akcesoria CNC , Styczeń 2013 '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ',www.EBMiA.pl, www.akcesoria.cnc.info.pl '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' Deklaracja zmiennych Dim X,Y,Z,px,py,pz,wx,wy,wz,d,zpoz Dim tool,Hits,zs,zn,Hitn Dim w '""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ' Poniższe zmienne wymagają deklaracji przez użytkownika '""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" wx= 10 ' Tutaj podajemy położenie punktu wymiany narzędzia w odniesieniu do krańcówek bazujących ( współrzędne maszynowe ) wy= 10 wz= 10 'wz - określa na jakiej wysokości ma ustawić się wrzeciono przy wymianie '!!!!!!!!!!!!!!!!!! px = 11 ' Tutajokreślamy punkt pomiaru narzędzia, również w odniesieniu do krańcówek bazujących py = 11 ' (współrzędne maszynowe) '!!!!!!!!!!!! pz = 11 ' wysokość przejazdowa ( wysokość na jakiej odbywają się przejazdy na punkt pomiaru oraz wymiany 'pownna być jak najwyższa, tak aby narzędzie nie zachaczyło o obrabiany element, czy mocowanie '"""""""""""""""""""""" 'Koniec definicji '"""""""""""""""""""""""""""" '""""""""""""""""""""""""""""""""""""""" 'Właściwy program '""""""""""""""""""""""""""""""" 'zapamiętanie współrzędnych punktu wyjściowego X = GetoemDRO( 83 ) Y = GetoemDRO( 84 ) zm=getoemdro(85) Z = GetoemDRO( 180) 'message( (px)&(" , ")& (py)&(" , ")& (pz)) MsgBox ("Teraz nastąpi przejazd do spółrzędnych czujnika pomiaru narzędzia. Po czym jeżeli wrzeciono jest uruchamiane ręcznie, wyłącz je, a następnie kliknij ok") ' wyświetlenie komunikatu Code "g53 G00 Z" & pz 'podniesienie Z na wysokość przelotową While IsMoving() Wend w=Getoemled(11) ' zapamiętanie, czy wrzeciono było uruchomione Code"m5" ' wyłączenie wrzeciona Code " g53 G00 X" & px & "Y" & py 'szybki przejazd na pozycje czujnika While IsMoving() Wend '!!!!!!!!!!!!!!!!!!! Message ("Teraz nastąpi pierwszy pomiar") ' komunkat o rozpoczęciu pomiaru ' pomiar podzielony jest na dwa etapy, w opuszczenie może być dość szybkie; po wykryciu czujnika, następuje podniesienie o 2mm ' a nstępnie ponowny pomiar - tutaj prędkość powinna być miejsza, pozowli to na osiągnięcie większej precyzji pomiaru Code "G31 Z-20 F50" 'opuszczenie osi Z do współrzędnej -20 ( Z-20) - w tym czasie powinna nastąpić aktywacja czujnika While IsMoving() ' Tutaj możemy zmienić prędkość pierwszego pomiaru - Wartość przy parametrze F, 50 oznacza 50mm/min Wend Code "G91 Z2 F50" 'podniesienie osi Z o 2 mm While IsMoving() ' Tutaj możemy zmienić prędkość oraz drogę o ile ma się podnieść - podniesienie powinno spowodować wyłączenie czujnika Wend code "g90" Code "G31 Z-20 F10" 'opuszczenie osi Z do współrzędnej -20 ( Z-20) - w tym czasie powinna nastąpić aktywacja czujnika While IsMoving() ' Tutaj możemy zmienić prędkość drugiego pomiaru - Wartość przy parametrze F, 10 oznacza 10mm/min Wend Hits = GetVar(2002) 'przechwycenie wysokości na jakiej zadziałał czujnik przy "starym" narzędziu Code "G53 G00 Z" & pz 'podniesienie osi Z na wysokość przelotową While IsMoving() Wend MsgBox ("Teraz nastąpi przejazd do współrzędnych wymiany narzędzia") ' komunikat o przelocie na punkt wymiany Code "g53 G00 X" & wx & "Y" & wy 'przejazd na pozycje wymiany While IsMoving() Wend Code "g53 G00 Z" & wz 'ustawienie osi Z na wysokości wymiany While IsMoving() Wend MsgBox ("Wymień narzędzie i kliknij OK, Po czym nastąpi przejazd do spółrzędnych czujnika pomiaru narzędzia") ' komunikat Code "g53 G00 Z" & pz 'podniesienie Z na wysokość przelotową While IsMoving() Wend Code " g53 G00 X" & px & "Y" & py 'przejazd na pozycje czujnika While IsMoving() Wend '!!!!!!!!!!!!!!!!!!!!!!!!!!m MsgBox ("Teraz nastąpi drugi pomiar")'komunikato pomiarze drugiego narzędzia Code "G31 Z-20 F50" 'opuszczenie osi Z do współrzędnej -20 ( Z-20) - w tym czasie powinna nastąpić aktywacja czujnika While IsMoving() ' Tutaj możemy zmienić prędkość pierwszego pomiaru - Wartość przy parametrze F, 50 oznacza 50mm/min Wend Code "G91 Z2 F50" 'podniesienie osi Z o 2 mm While IsMoving() ' Tutaj możemy zmienić prędkość oraz drogę o ile ma się podnieść - podniesienie powinno spowodować wyłączenie czujnika Wend code "g90" Code "G31 Z-20 F10" 'opuszczenie osi Z do współrzędnej -20 ( Z-20) - w tym czasie powinna nastąpić aktywacja czujnika While IsMoving() ' Tutaj możemy zmienić prędkość drugiego pomiaru - Wartość przy parametrze F, 10 oznacza 10mm/min Wend Hitn = GetVar(2002) 'przechwycenie wysokości na jakiej zadziałał czujnik przy "nowym" narzędziu Code "G53 G00 Z" & pz 'podniesienie Z na wysokość przelotową While IsMoving() Wend d= Hits- Hitn ' obliczanie różnicy długości d =Abs(d) 'message(Hits) 'message(Hitn) 'message(d) zpoz=0 If Hits < Hitn Then zpoz=zm+d ' na podstawie wysokości zadziałań czujnika przy pomiarach obliczana jest wartość współczynnika korekcji wysokości osi Z If Hits > Hitn Then zpoz=zm-d Code "G53 G00 X" & X & "Y" & Y 'przejazd na współrzędne punktu wyjściowego ( ten w którym zostało wywołane makro ) While IsMoving() Wend MsgBox ("włącz wrzeciono i kliknij OK") ' komunikat o włączeniu wrzeciona - w przypadku gdy włączamy je ręcznie Code "G0 g53 Z" & zpoz ' opuszczenie narzędzia - jego koniec powinien znaleźć się tam gdzi przed wywyołaniem makra While IsMoving() Wend Call setdro(2,z) ' ustawienie wspłrzędnych - ofset If w = true Then Code"m3" ' automatyczne włączenie wrzeciona jeżeli było uruchomine przed pomiarem. End '""""""""""""""""""""""""""""""""""""""""""""'''' '''''''''''''''Uwagi'''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''' 'Program należy skopiować i przypisać do makra M6Start (zastępując to co jest tam wpisane), które znajduje się ' w folderze mach3/macros/nazwa naszego profilu. w programie należy zdefiniować sygnał probe, tak aby w momencie aktywacji czujnika ' w oknie diagnostyka zapalała się lampka przy sygnale digitaze. teraz wywołując makro m6 w gkodzie zostanie wykonany nasz podprogram 'pomiaru i ręcznej wymiany narzędzia. ' makro możemy również przypisać do przycisku Auto. pomiaru narzędzia 'podprogram działa tak, że najpierw następuje przejazd na punkt pomiaru, przed tym należy wyłączyć wrzeciono ręcznie '( ale automatyczne wł/wyłączenie również jest zaimplementowane). następnie po pomiarze następuje na punkt wymiany narzędzia, ' wymianę potwierdzamy ok, teraz drugi pomiar i powrót na punkt początkowy. na koniec następuje uruchomienie wrzeciona ( o ile te było aktywne przed pomiarem). ' W makrze na początku należy zdefiniować punkty położenia czujnika i wymiany narzędzia. są to współrzędne maszynowe względem krańcówek bazowania. ' proszę przetestować i podać ewentualne uwagi. mam nadzieję że program spełni Państwa oczekiwania. pozdrawiam.