﻿'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= 5      ' Tutaj podajemy położenie punktu wymiany narzędzia w odniesieniu do krańcówek bazujšcych ( współrzędne maszynowe )
wy= 5  	
wz= -60		'wz - okrela na jakiej wysokoci ma ustawić się wrzeciono przy wymianie

'!!!!!!!!!!!!!!!!!!

px = 44  ' Tutajokrelamy punkt pomiaru narzędzia, również w odniesieniu do krańcówek bazujšcych
py = 44  ' (współrzędne maszynowe)


'!!!!!!!!!!!!
pz = -20  ' 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.
  




