Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print
SOFTWARES => Controle => Mach 2/3 => Tópico iniciado por: gurob em 26 de Novembro de 2015, 19:38
-
Boa noite pessoal
Eu preciso de uma ajuda que acredito ser simples, mas não tenho conhecimento avançado para fazer.
Já trabalho com mach3 faz algum tempo, implemento algumas funções, mas agora preciso fazer uma macro que faça o eixo X se movimentar em uma direção (G1 X500 F100) até que o sinal do INPUT1 seja acionado.
Ou seja, trata-se de um REF X (G28.1) ou um PROBE (G31), mas esses eu ja estou usando pra outras funções, entao preciso criar mais um REF X “manualmente”.
Alguem tem alguma dica? Preciso resolver urgente.
Obrigado
Gustavo
-
Nao seria possivel vc usar um rele com um codigo m para ele, e comutar o sinal do probe??? Hora usa para um sensor hora para outro ?!!!
Enviado de meu LG-D855 usando Tapatalk
-
Oi Eneas
Infelizmente tambem ná é possivel pois ja estou fazendo isso kkkk.
Eu comuto o sinal do probe antes de ligar a tocha de plasma pra nao queimar o input do probe.
Será que é tao dificil movimentar um eixo até que um sinal seja ativo? Parece que ninguem tem uma resposta pra isso.
Talvez usando WHILE de certo, mas nunca usei isso no mach3.
Obrigado
-
Gustavo,
Eu entendo que o tal sinal que deve ser acionado seja por exemplo um sensor de proximidade, um contato seco (como um final de curso) etc..
Aí sim poderia fazer uma macro que sinalizasse uma entrada (input) e que interromperia o movimento.
Voce descreveu mais ou menos o que precisa, mas teria como explicar o que exatamente quer fazer?
A logica é mais ou menos essa usando G28.1: (apenas como exemplo)
G28.1 Z3.00 (home para baixo à partir da altura de segurança, 3 é apenas um exemplo)
G92 Z0.0 (feito o Home, então ajusta Z = 0)
G00 Z2.8000 (volta para trás para dar a folga do contato)
G92 Z0.0 (ajusta de novo z = 0)
G00 Z3.8000 (Move para cima até altura de furação)
M03 (liga a tocha)
G04 P0.3 (tempo de furação)
G01 Z1.5000 (desce até altura de corte)
.... (vem o resto dos comandos...)
Exemplo de código que aguarda um sinal qualquer de entrada:
If Not IsActive(Input1) Then
NewTool = 1
End If
If Not IsActive(Input2) Then
NewTool = 2
End If
...
Por isso perguntei pedí que explicasse o que quer fazer
-
Prezado Fabio
Obrigado pela sua atenção no meu caso. Vou explicar detalhadamente.
O ref X (G28.1) já estou usando para fazer a referencia do carro, como normalmente se faz.
O probe (G31) já estou usando para fazer o toque da tocha plasma na chapa, em seguida a tocha sobe para abrir o arco, como normalmente se faz.
O desafio aqui é AUTO REFERENCIAR a chapa. Eu coloquei um sensor de proximidade ótico que liguei no INPUT1 no carro X, então o que preciso é que o carro X vá andando devagar até que o sensor ótico detecte a chapa, e ali ele vai fazer um G92 X0. O sensor já esta funcionando, aciona o Input1 quando movo manualmente o carro.
Esse referenciamento é facil de fazer com o G28.1 ou G31, porém ja estou usando-os para suas funções nativas. Seria bom se existisse um ProbeX ProbeY e ProbeZ no Mach3, mas não existe e preciso encontrar outra maneira de fazer isso. Não vou usar gabaritos pra chapa, quero que o carro detecte que está sobre a chapa e se auto-zere. Estou tentando criar um M31 que faça a funçao do G31.
Alguma idéia?
Obrigado
-
Posso estar errado, mas creio que o mais fácil seja usar a função G31 dentro de uma macro, mas como voce está usando já esta rotina provavelmente com contato ôhmico entre tocha e chapa, talvez isso funcione: (exemplo que X vai na direção --)
CurrentFeed = GetOemDRO(818) 'guarda o valor da Vel. avanço atual
CurrentAbsInc = GetOemLED(48) 'verifica o estado atual de G90/G91
CurrentGmode = GetOemDRO(819) 'verifica o estado atual de G0/G1
Code "F100"
Rem Probe para esquerda
XNew = GetDro(0) - 75 'probe em -75mm da posição atual
Code "G1 X" &XNew
While isMoving()
If (IsOutputActive(Output1)) Then
DoOEMButton(1003)
Sleep 100
End If
Wend
Call SetDro (0,0.000)
Code "G4 P0.25"
Code "F" &CurrentFeed 'restaura a vel. avanço original
Call ReturnG90G91State()
Exit Sub
End If
Sub ReturnG90G91State()
If CurrentAbsInc = 0 Then 'restaura o comando G91
Code "G91"
End If
If CurrentGMode = 0 Then 'restaura o comando G0
Code "G0"
End If
End Sub
Não é muito elegante usar o comando DoOEMButton (1003) que é STOP, mas talvez funcione - não tenho como testar aqui - veja se funfa
-
Oi Fabio
Obrigado pela dica, vou tentar implementar na maquina amanhã, mas creio que onde vc digitou (IsOutputActive(Output1)) seja (IsInputActive(Input1)), certo?
Estou monitorando o input do sensor.