' Macro per trovare l'altezza del probe
' versione 1.0 5/11/2011
' Robot Factory
'
' Condizioni macchina:
' Zero macchina: X tutto a destra, Y tutto dietro, Z tutto in alto.
'
' Direzioni macchina:
' Asse X, verso sinistra +X verso destra -X
' Asse Y, verso dietro -Y verso avanti +Y
' Asse Z, verso alto +Z verso basso -Z
'
' INDISPENSABILE:
' Abilitare e verificarne il funzionamento dell'ingresso PROBE (port 1 pin 10)(Config | Input Signal)
'
' Condizioni di lavoro iniziali:
' 1) Referenziare a ZERO macchina
' 2) Spostarsi in una posizione adatta per la misurazione del probe
' 3) Azzerare la punta sul pezzo di riferimento
' 4) Azzerare i contatori
' 5) Portare l'asse Z in una posizione adatta alla misurazione (h probe + 10 mm)
' 6) Posizionare il probe
' 7) Premere "Set Offset"

' variabili del programma

     fmax = 1000			' imposto il feedrate massimo
     fmin = 150				' imposto il feedrate per la misurazione
     palt = GetUserDRO(1155)  ' <-----  Altezza (spessore) del probe + 10 mm
     zmin = -20			' profondit oltre il probe
     Zcontact = GetOemLed (825)		' led Digitizer

' verifico se  impostato il valore con l'altezza del probe e se non c' contatto

If palt <> 0 Then		' altezza del probe  + 10 mm

If Zcontact = 0 Then			' contatto in probe

DoSpinStop() 				' fermo in ogni caso per sicurezza il motore M5

' controllo se la macchina  stata referenziata

If (GetLed (7) = 0) And (GetLed (8) = 0) And (GetLed (9) = 0) Then	' controllo se la macchina  stata referenziata

	If GetOEMLed (16) Then	' controllo di non essere in coordinate macchina
		DoOEMButton (256)
         While IsMoving()
         Wend
	End If

zzero = 0
zzero = GetDRO (32)			' memorizzo la posizione iniziale ASSOLUTA di Z

' inizio programma

     code "G0 F" & fmax			' porto il feedrate al valore massimo
     While IsMoving()
     Wend

     zrif = zzero + palt		  ' porto Z oltre il probe
     code "G1 G53 Z" & zrif		' per poterlo inserire
     While IsMoving()
     Wend

     Response = MsgBox ("E' stato posizionato il probe?", 4 , "ATTENZIONE")
     	If (Response = 6) Then 
     		i = 99
     	Else
     		MsgBox ("Bisognava posizionare il probe")
     	End If
     
   If i <> 99 Then				' non faccio nulla

     	MsgBox ("Non posso misurare il probe")
     
     Else
         code "G0 F" & fmin			' porto il feedrate al minimo
         While IsMoving()
         Wend
         
         If IsSuchSignal (22) Then		' scendo sul probe
         	code "G31 Z" & zmin
         	While IsMoving()
         	Wend
         End If
         
         zuno = GetVar (2002)			' memorizzo il valore di Z
         zsu = zuno + 5
         code "G1 Z" & zsu			' salgo per la seconda misura
         While IsMoving()
         Wend
         
         If IsSuchSignal (22) Then		' scendo una seconda volta
         	code "G31 Z" & zmin
         	While IsMoving()
         	Wend
         End If
         
         zdue = GetVar (2002)			' memorizzo il valore di Z
         misura = (zuno + (zdue)) / 2		' valore trovato

         code "G0 F" & fmax			' porto il feedrate al valore massimo
         While IsMoving()
         Wend

         code "G1 G53 Z" & zrif			' salgo per togliere il probe
         While IsMoving()
         Wend

         Call SetUserDro (1154,misura)			' scrivo il valore nel campo
         While IsMoving()
         Wend

         MsgBox ("Operazione eseguita con successo")

   End If
' controllo se la macchina  stata referenziata
Else
	MsgBox ("Bisogna referenziare la macchina")
End If
' contatto in probe
Else
 MsgBox ("Contatto nel probe")
End If
' altezza del probe
Else
  MsgBox ("Non  stata inserita l'altezza per la misurazione")
End If

