Luis,
Abaixo uma rotina para centralização de furo feita pelo interno...
Sub MainRoutine
Dim Posn as Double
Dim Start as Double
Dim Metric as Boolean
Dim Dist As Double ' distancia preparada para fazer probe
Dim OffDist As Double ' distancia para liberar o toque
' Probe Rad does not matter
Dim XLeft, XRight, XCentre, YTop, YBottom, YCentre As Double
Dim Tol As Double
If GetOEMLed (16) Then
Message "Não pode fazer o Toque quando em Coordenadas Maquina"
Exit Sub
End If
Code "G90G80G69G50"
Metric = GetOEMLED(802)
If Metric Then
Dist = 100
OffDist = 1
Tol = 0.1
Else
Dist = 4 'polegada
OffDist = 0.04
Tol = 0.01
End If
Start = GetOEMDRO (800)
Posn = Start - Dist ' X inicial
Message "Toque para Esquerda em X"
Code "G31 X" & nFmt (Posn, 4) ' probe esquerdo
While ISMoving ()
Sleep 20
Wend
XLeft = GetVar (2000)
If GetOEMDRO (800) <= Posn + Tol Then
Message "*** Não encontrou o Furo. Z muito Alto?"
Exit Sub
End If
Code "G01 X" & nFmt (GetOEMDRO (800) + OffDist, 4)
While IsMoving ()
Sleep 20
Wend ' Sai do ponto de toque
Posn = Start + Dist ' para mover à direita
Message "Toque para Direira em X"
Code "G31 X" & nFmt (Posn, 4) ' probe direita
While ISMoving ()
Sleep 20
Wend
XRight= GetVar (2000)
If GetOEMDRO (800) >= Posn - Tol Then
Message "*** Não encontrou o Furo. Z muito Alto?"
Exit Sub
End If
XCentre = (XRight + XLeft) /2.0 ' primeira aproximação no centro
Message "Indo para o Centro em X"
Code "G01 X" & nFmt (XCentre, 4)
While ISMoving ()
Sleep 20
Wend
Start = GetOEMDRO (801)
Posn = Start - Dist ' Y inicial
Message "Toque para Y menos"
Code "G31 Y" & nFmt (Posn, 4) ' Toque em Y menos
While ISMoving ()
Sleep 20
Wend
YBottom = GetVar (2001)
If GetOEMDRO (801) <= Posn + Tol Then
Message "*** Não encontrou o Furo. Z muito Alto?"
Exit Sub
End If
Code "G01 Y" & nFmt (GetOEMDRO (801) + OffDist, 4)
While IsMoving ()
Sleep 20
Wend ' sai do ponto de toque
Posn = Start + Dist ' toque em Y mais
Message "Toque em Y Mais"
Code "G31 Y" & nFmt (Posn, 4) ' toque em Ymais
While ISMoving ()
Sleep 20
Wend
YTop= GetVar (2001)
If GetOEMDRO (801) >= Posn - Tol Then
Message "*** Não encontrou Furo. Z muito Alto?"
Exit Sub
End If
YCentre =(YBottom + YTop) / 2.0 ' estimativa
Message "Indo para o Centro em Y"
Code "G01 Y" & nFmt (YCentre, 4)
While IsMoving ()
Sleep 20
Wend
' faz a rotina em X de novo para maior acurácia
Start = GetOEMDRO (800)
Posn = Start - Dist ' X inicial
Message "Refining X left"
Code "G31 X" & nFmt (Posn, 4) ' toque p/ esquerda
While ISMoving ()
Sleep 20
Wend
XLeft = GetVar (2000)
If GetOEMDRO (800) <= Posn + Tol Then
Message "*** Não encontrou o Furo. Z muito Alto?"
Exit Sub
End If
Code "G01 X" & nFmt (GetOEMDRO (800) + OffDist, 4)
While IsMoving ()
Sleep 20
Wend ' sai do ponto de toque
Posn = Start + Dist ' move p/ direita
Message "Refinando X p/ Direita"
Code "G31 X" & nFmt (Posn, 4) ' toque p/ direita
While ISMoving ()
Sleep 20
Wend
XRight= GetVar (2000)
If GetOEMDRO (800) >= Posn - Tol Then
Message "*** Não encontrou o Furo. Z muito alto?"
Exit Sub
End If
Message "Encontrando o Centro"
XCentre = (XRight + XLeft) /2.0 ' aproximação do centro
Code "G01 X" & nFmt (XCentre, 4)
While ISMoving ()
Sleep 20
Wend
SetOEMDRO 800, GetOEMDRO (800) - XCentre
SetOEMDRO 801, GetOEMDRO (801) - YCentre
SetUserDRO 1064, XCentre
SetUserDRO 1065, YCentre
Message ""
Code "G91 G0 Z15"
Code "G28.1 X-65.03 Y-87.42"
End Sub ' MainRoutine
MainRoutine
Crie um botão na tela do Mach3 e copie este código para ele.
Posicione o probe dentro do furo e execute - a rotina termina com o centro da maquina no centro do furo.