'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 = 0  ' Tutajokre?lamy punkt pomiaru narzędzia, również w odniesieniu do krańcówek bazujcych
py = 230  ' (współrzędne maszynowe)


'!!!!!!!!!!!!
pz = -1
  ' 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


Code "g53 G00 Z-80"   'podniesienie Z na wysoko?ć przelotow
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-120 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-120 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 
Code "g53 G00 Z-80"   'podniesienie Z na wysoko?ć przelotow
While IsMoving()
Wend


MsgBox ("Teraz nastpi drugi pomiar")'komunikato pomiarze drugiego narzędzia



Code "G31 Z-120 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-120 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.
  

      
