Através de Macros programadas em VB (Visual Basic) é possível criar rotinas e automatizar tarefas dentro do Mach3. Criando movimentos, lendo sinais de sensores, calculando fórmulas e executando rotinas dentro do próprio Software.
A Macro AutoToolZero EdgeFinder faz Zeramento Automático da Ferramenta no eixo XYZ.
O Zeramento é feito com apenas um click do mouse. Além disso garante precisão centesimal já que o processo é eletrônico e digital através de um pulso elétrico.
O Mach3 faz o zeramento automático da altura da ferramenta no eixo XYZ.
A Macro pode ser customizada para descontar o valor da altura do sensor Probe e fazer um recuo após o zeramento.
O mesmo Script pode ser utilizado como base para zerar a ferramenta em X ou em Y.
MACRO: AutoToolZero: Download
Rem VBScript Sensor Probe XYZ - Edge Finder com furo interno
Rem WWW.MACHSUPORTE.COM.BR
Rem Fluxo:
Rem 1 - Iniciar com a ferramenta posicionada sobre o centro do furo
Rem 2 - Macro desloca para a base do probe e faz Z
Rem 3 - Volta para o furo
Rem 4 - Desce para leitura lateral
Rem 5 - Faz centro X e Y pelo furo interno
'------------------------------------------------------------
' VARIAVEIS DE AJUSTE
'------------------------------------------------------------
ZProbe = -20.00 ' Profundidade maxima de leitura do Probe Z
ZFeed = 50 ' Feed-rate de leitura Z
ZOffset = 1.00 ' Altura real do probe: da peça ate o topo da base
ZSubida = 3.00 ' Quanto sobe depois de zerar o Z
ZUp = ZOffset + ZSubida
' Offset entre o centro do furo e o ponto da base usado para medir Z
' Exemplo:
' Se, saindo do centro do furo, a ferramenta precisa andar +20 mm em X para ficar sobre a base, use XOffset_XY_Z = 20
' Se não precisa mover em Y, deixe YOffset_XY_Z = 0
XOffset_XY_Z = 20.00
YOffset_XY_Z = 0.00
' Altura para fazer a leitura lateral dentro do furo
' Atenção:
' Este valor é a posição Z absoluta após o zeramento.
' Se o Z zero ficou na superfície da peça, normalmente este valor precisa deixar a ferramenta dentro da altura do probe.
' Exemplo: se o probe tem 10 mm de altura e você quer ler 3 mm abaixo do topo, use 7.00
' Se seu sistema realmente exige valor negativo, ajuste aqui.
Z_leitura_negativo = ZOffset - 3.00
DiametroFuro = 10.00 ' Diâmetro aproximado do furo interno do probe
FolgaScan = 5.00 ' Folga extra para garantir que o G31 encoste na parede do furo
XyFeed = 50 ' Feed-rate de leitura XY
Tolerancia = 0.05 ' Tolerância para detectar falha de contato
' Zerar X/Y no centro encontrado:
' 1 = zera X/Y
' 0 = apenas move para o centro, sem zerar
ZerarXY = 1
' Valor que será colocado no DRO quando a ferramenta estiver no centro do furo.
' Para zerar exatamente no centro do furo, deixe 0 e 0.
' Para usar o furo como referência de aresta/canto da peça, coloque aqui a distância real
' entre o centro do furo e o zero desejado da peça.
X_DRO_CentroFuro = 0.00
Y_DRO_CentroFuro = 0.00
StopMacro = 0
'------------------------------------------------------------
' INICIO DA MACRO
'------------------------------------------------------------
If GetOemLed(825) <> 0 Then
Code "(Probe ja ligado! cheque a conexao e tente novamente)"
Else
CurrentFeed = GetOemDRO(818) ' Salva feed atual
DoSpinStop() ' Desliga spindle
Code "G90" ' Garante modo absoluto
Code "G4 P1.0"
' Salva posição inicial: ferramenta sobre o centro do furo
XHole = GetOemDro(0)
YHole = GetOemDro(1)
' Calcula posição da base para leitura do Z
XPadZ = XHole + XOffset_XY_Z
YPadZ = YHole + YOffset_XY_Z
Code "(Movendo para area de leitura Z...)"
Code "G0 X" & XPadZ & " Y" & YPadZ
While IsMoving()
Sleep(200)
Wend
' Zera temporariamente o DRO Z antes do probe, mantendo a logica da sua macro atual
DoOEMButton(1010)
Sleep(200)
'------------------------------------------------------------
' LEITURA DO EIXO Z
'------------------------------------------------------------
Code "G4 P1.0"
Code "(Escaneando Z...)"
Code "G31 Z" & ZProbe & " F" & ZFeed
While IsMoving()
Sleep(200)
Wend
ZPos = GetVar(2002)
If Abs(ZPos - ZProbe) < Tolerancia Then
MsgBox "**ERRO** Sonda Z nao detectou contato!"
Code "G0 Z10"
StopMacro = 1
End If
If StopMacro = 0 Then
Code "G0 Z" & ZPos
While IsMoving()
Sleep(200)
Wend
Call SetDro(2, ZOffset)
Sleep(200)
Code "G4 P0.5"
Code "G0 Z" & ZUp
While IsMoving()
Sleep(200)
Wend
Code "(Z Zero OK)"
End If
'------------------------------------------------------------
' VOLTA PARA O FURO E DESCE PARA LEITURA XY
'------------------------------------------------------------
If StopMacro = 0 Then
Code "(Voltando para o centro do furo...)"
Code "G0 X" & XHole & " Y" & YHole
While IsMoving()
Sleep(200)
Wend
Code "(Descendo para leitura XY...)"
Code "G0 Z" & Z_leitura_negativo
While IsMoving()
Sleep(200)
Wend
XCurrent = GetOemDro(0)
YCurrent = GetOemDro(1)
DiamScan = (DiametroFuro / 2) + FolgaScan
Code "F" & XyFeed
End If
'------------------------------------------------------------
' PROBE X--
'------------------------------------------------------------
If StopMacro = 0 Then
XNew = XCurrent - DiamScan
Code "(Escaneando X-- ...)"
Code "G31 X" & XNew
While IsMoving()
Sleep(200)
Wend
XPos1 = GetVar(2000)
If Abs(XPos1 - XNew) < Tolerancia Then
MsgBox "**ERRO** Sonda nao detectou contato em X--!"
StopMacro = 1
End If
Code "G0 X" & XCurrent
While IsMoving()
Sleep(200)
Wend
End If
'------------------------------------------------------------
' PROBE X++
'------------------------------------------------------------
If StopMacro = 0 Then
XNew = XCurrent + DiamScan
Code "(Escaneando X++ ...)"
Code "G31 X" & XNew
While IsMoving()
Sleep(200)
Wend
XPos2 = GetVar(2000)
If Abs(XPos2 - XNew) < Tolerancia Then
MsgBox "**ERRO** Sonda nao detectou contato em X++!"
StopMacro = 1
End If
End If
'------------------------------------------------------------
' CALCULA CENTRO X
'------------------------------------------------------------
If StopMacro = 0 Then
XCenter = (XPos1 + XPos2) / 2
Code "(Movendo para centro X...)"
Code "G0 X" & XCenter
While IsMoving()
Sleep(200)
Wend
End If
'------------------------------------------------------------
' PROBE Y++
'------------------------------------------------------------
If StopMacro = 0 Then
YCurrent = GetOemDro(1)
YNew = YCurrent + DiamScan
Code "(Escaneando Y++ ...)"
Code "G31 Y" & YNew
While IsMoving()
Sleep(200)
Wend
YPos1 = GetVar(2001)
If Abs(YPos1 - YNew) < Tolerancia Then
MsgBox "**ERRO** Sonda nao detectou contato em Y++!"
StopMacro = 1
End If
Code "G0 Y" & YCurrent
While IsMoving()
Sleep(200)
Wend
End If
'------------------------------------------------------------
' PROBE Y--
'------------------------------------------------------------
If StopMacro = 0 Then
YNew = YCurrent - DiamScan
Code "(Escaneando Y-- ...)"
Code "G31 Y" & YNew
While IsMoving()
Sleep(200)
Wend
YPos2 = GetVar(2001)
If Abs(YPos2 - YNew) < Tolerancia Then
MsgBox "**ERRO** Sonda nao detectou contato em Y--!"
StopMacro = 1
End If
End If
'------------------------------------------------------------
' CALCULA CENTRO Y
'------------------------------------------------------------
If StopMacro = 0 Then
YCenter = (YPos1 + YPos2) / 2
Code "(Movendo para centro Y...)"
Code "G0 Y" & YCenter
While IsMoving()
Sleep(200)
Wend
End If
'------------------------------------------------------------
' ZERA X/Y OU APENAS FINALIZA NO CENTRO
'------------------------------------------------------------
If StopMacro = 0 Then
If ZerarXY <> 0 Then
Call SetDro(0, X_DRO_CentroFuro)
Sleep(200)
Call SetDro(1, Y_DRO_CentroFuro)
Sleep(200)
Code "(XY Zero OK)"
Else
Code "(XY Center OK)"
End If
Code "G0 Z" & ZUp
While IsMoving()
Sleep(200)
Wend
Code "(XYZ Probe OK)"
Else
Code "(Macro interrompida por erro de leitura)"
Code "G0 Z" & ZUp
While IsMoving()
Sleep(200)
Wend
End If
Code "F" & CurrentFeed
End If
PROCEDIMENTO:
#1: Clique em: Operator >> Edit Button Script.
(Na tela do Mach3, vários botões vão começar piscar em branco.)
#2: Clique sobre um dos botões piscando para abrir a janela de edição da Macro.
#3: Copie e Cole a Macro acima dentro da janela de edição e clique em Salvar.
Após configurada a Macro Auto Tool Zero de Zeramento Automático do eixo Z, pode ser chamada a qualquer momento clicando sobre o botão escolhido previamente.
Tags relacionadas com Macro Auto Tool Zero (Zeramento Automático Z):AutoToolZero / Auto Tool Zero Mach3 CNC,Touch Probe Mach3, Zeramento Automático Mach3, Zeramento Automático de Ferramenta Mach3, Como Zerar Ferramenta Mach3 Automaticamente, Como Zerar Ferramenta Mach3 Automático, Macro de Zeramento Automático Mach3, Macro de Zeramento Automático de Ferramenta Mach3, Macro Como Zerar Ferramenta Mach3 Automaticamente, Macro Como Zerar Ferramenta Mach3 Automático. |
Somos uma empresa visionária na indústria 4.0! Atuando no comércio, manutenção e fabricação de máquinas CNC computadorizadas para indústria!
Contamos com um time de especialistas no assunto de Automação e CNC, projetos e desenhos em software 3D, e programação G-Code CAD & CAM.
2019-2026 © MACH Suporte
Todos os direitos reservados.
©All right reserved.
CNPJ: 49.943.620/0001-53