Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print
SOFTWARES => Controle => Mach 2/3 => Tópico iniciado por: Edney Lima em 27 de Maio de 2016, 11:04
-
Bom dia Amigos Guia CNC.
Alguem poderia me dar uma ajuda na alteração da macro M6?
Como ficaria a macro M6 se eu quiser que quando eu programar:
T1
M6
o mach3 acionasse uma saida ex: (output2), movimentasse um motor de passo a "G53 G0 A60"
e quando programar
T2
M6
o mach3 acionasse a mesma saida ex: (output2) e movimentasse o mesmo motor de passo a uma posição "G53 G0 A120"
e assim sucessivamente para 6 posições na minha torre.
Tenho essa macro:
If GetSelectedTool() = GetCurrentTool() Then
End
End If
If GetSelectedTool = 1 Then
ActivateSignal(OutPut2)
Sleep 500
Code "G53 G0 A0"
While IsMoving()
Wend
Sleep 500
DeActivateSignal(OutPut2)
End If
If GetSelectedTool = 2 Then
ActivateSignal(OutPut2)
Sleep 500
Code "G53 G0 A45"
While IsMoving()
Sleep 500
Wend
DeActivateSignal(OutPut2)
End If
mas quando peço troca de ferramentas não acontece nada.
quando deixo só isso dentro da macro:
ActivateSignal(OutPut2)
Sleep 500
Code "G53 G0 A60"
While IsMoving()
Wend
Sleep 500
DeActivateSignal(OutPut2)
ela aciona a saida 2 e gira o motor de passo normalmente.
não tenho certeza, mas acredito que deve ser alguma escrita errada na linguagem
alguem poderia me dar uma ajuda, ficarei muito grato.
Edney
-
Edney,
Fiz um "retrofitting" de um torno com magazine de 8 ferramentas, e usei uma macro parecidíssima como esta abaixo.
O magazine é rotativo através de motor de passo, e para que a macro funcione precisa que haja um sensor de origem no magazine justamente para que o cnc reconheça onde está a ferramenta 1 - o magazine possui uma espécie de catraca, então fui obrigado a criar uma rotina que fizesse o giro passando um pouco da posição de trava, e retornasse para garantir que travasse no ângulo correto.
Também foi necessário alterar um pouco a tela do Mach3 e incluir uma janela que indicasse que ferramenta estava presente na ultima troca.
Veja se te ajuda em algo - na sua logica me parece que falta algo que garanta a posição correta (em graus) do magazine...
'M6Start.m1s
Message ("macro rodando")
OldTool = GetOEMDRO (1200)
Tool = GetSelectedTool()
MaxToolNum = 8 'Max quantidade de ferramentas no trocador
If OldTool = Tool Then
Message ("Ferramenta Selecionada já está cerragada")
Exit Sub
End If
While Tool > MaxToolNum
Tool = Question ("Qual a Estação desta Ferramenta? de 1 a " & MaxToolNum)
Wend
xval= getoemdro(800) 'pega valor de x
zval= getoemdro(802) 'pega valor de z
Call Dooembutton(138)
While IsMoving()
Wend
moveto = Tool- OldTool
If moveto<1 Then moveto=8+moveto
code "G91" 'inc mode
code "G00 A"+Str((moveto*45)+5)
code "G90"
While IsMoving()
Wend
code "G91"
code "G00 A-10"
code "G90"
While IsMoving()
Wend
code "G91"
code "G01 A-2 F100"
code "G90"
While IsMoving()
Wend
code "G90" 'abs mode
NewTool=Tool
If NewTool=1 Then
Call DoOemButton (1009) 'zero Y
End If
Call SetUserDRO (1200, NewTool)
SetCurrentTool(NewTool)
code "G0 Z"+Str(zval) 'retorna para posição inicial
code "G0 X"+Str(xval) 'antes da troca
While IsMoving()
Wend
-
Boa Tarde Fabio
Muito interessante essa sua macro, acredito que vai me ajudar bastante, só vou precisar de um tempinho para entender sua macro.
Veja se entendi a respeito do sensor da ferramenta 1.
Esse sensor seria a referencia do eixo A?
A respeito da garantia do posicionamento da minha lógica, fiz um travamento mecânico.
Na minha lógica a saída 2 ira acionar uma solenoide de um cilindro pneumático que esse vai "destravar" a torre, e após destravar ira girar o motor de passo, assim que girar o motor de passo na posição, vai desacionar a solenoide e travar a torre na posição.
A principio estou fazendo com motor de passo, mas depois que estiver funcionando pretendo investir num servo motor de 100W para fazer o giro da torre.
Edney
-
Legal...
Com relação à origem do eixo A (que aciona o magazine) achei necessário que reconheça um ponto de origem ou de partida - assim facilitou muito a vida da logica de controle
-
Fabio
Muito obrigado
a linguagem de macros é linguagem C?
o Sr. tem algum manual ou tutorial que explica alguma coisa sobre a linguagem das macros?
se tiver envie pra mim por favor
[email protected]
grato
Edney
-
No caso específico do Mach3 se usa VBscript (Cyperss Enable)...
http://www.machsupport.com/wp-content/uploads/2013/02/VBScript_Commands.pdf (http://www.machsupport.com/wp-content/uploads/2013/02/VBScript_Commands.pdf)
-
Obrigado, baixei o manual e vou estuda-lo
-
Bom dia Amigos GuiaCNC
Com ajuda do Fabio, da apostila que ele nos postou, com ajuda de um amigo aqui de limeira, com ajuda da internet, consegui fazer minha macro m6 funcionar.
Agora vou finalizar o projeto mecanico e colocar minha torre pra funcionar hehehehehe
quero agradecer a todos que me ajudaram nessa empreitada.
Fabio, essa apostila que nos postou, existe em portugues?
Caso existir seria muito util para nós.
Reparei que o mach3 precisa reconhecer que existe um trocador automatico, para isso precisa mudar uma parametrização referente que existe um trocador automatico de ferramentas.
Edney
-
Segue a foto do caminho da alteração para que reconheça um trocador automatico
-
foto do caminho da alteração
-
Esse procedimento para trocador automatico de ferramentas está correto?
-
Bom dia
Nessa macro que tenho:
If GetSelectedTool() = GetCurrentTool() Then
End
End If
If GetSelectedTool = 1 Then
ActivateSignal(OutPut2)
Sleep 500
Code "G53 G0 A0"
While IsMoving()
Wend
Sleep 500
DeActivateSignal(OutPut2)
End If
If GetSelectedTool = 2 Then
ActivateSignal(OutPut2)
Sleep 500
Code "G53 G0 A45"
While IsMoving()
Sleep 500
Wend
DeActivateSignal(OutPut2)
End If
no casso acima só coloquei as trocas de 2 ferramentas mas as outras trocas é igual porem só muda o posicionamento,
mas eis um "probleminha" e uma duvida.
ainda estou em testes na bancada.
por exemplo:
percebi que quando estou trabalhando com a T1 e peço a T4 a torre se move normalmente, mas quando estou trabalhando com a T8 e quero a T1, ao invés de se mover direto pra T1 que seria o "caminho" mais curto, a torre se move voltando passando por todas as ferramentas e posiciona na T1.
Os posicionamentos estão corretos, mas a duvida é:
Tem como fazer alguma coisa dentro da macro para que ela se mova pelo "caminho" mais perto?
Edney
-
Se o eixo A está configurado como rotativo, talvez se marcar a opção "Ang Short Rot on G0" (Angular short rotation on G0) na janela de configurações gerais...
-
Bom dia
Grande Fabio.
Mais uma vez agradecido.
Testando somente no PC, funcionou.
Final de semana vou testar na bancada, com a torre
Edney
-
Fabio
Te mandei uma MP
Edney
-
Bom dia Amigos Guia CNC
seguindo os conselhos do Fabio a respeito de colocar um sensor para referencia da primeira ferramenta, surgiu uma duvida.
Nessa macro que estou usando
If GetSelectedTool() = GetCurrentTool() Then
End
End If
If GetSelectedTool = 1 Then
ActivateSignal(OutPut2)
Sleep 500
Code "G53 G0 A0"
While IsMoving()
Wend
Sleep 500
DeActivateSignal(OutPut2)
End If
If GetSelectedTool = 2 Then
ActivateSignal(OutPut2)
Sleep 500
Code "G53 G0 A45"
While IsMoving()
Sleep 500
Wend
DeActivateSignal(OutPut2)
End If
Output2 estou usando um rele para destravar o freio da torre e depois de destravado a torre gira para a posição que pede o programa, até ai o funcionamento está tudo ok, mas a minha grande duvida é como destravar esse freio quando for referenciar a maquina.
A unica solução que encontrei foi colocar um botão externo para destravar o freio e fazer o referenciamento e após referenciar travo o freio manualmente, gostaria de saber se existe uma solução automatica para fazer isso.
Se alguem ja fez algo parecido me de uma ajuda por favor.
Edney
-
Altere a macro do botão de referenciamento e insira os comandos de destravar e travar a saída que lhe interessa antes e depois da chamada de referencia do eixo da ferramenta
-
Fabio
Qual é a macro do botão de referenciamento?
-
Acredito que esteja escrita no próprio botão da tela do Mach3 - "Ref All Home'
Para alterar você vai no menu "Operator > Edit Button script" e clica em cima do botão da tela - vai abrir a janela de edição de macros, e você altera o que deseja
-
quando clico em editar a macro do botão os botões que poder ser alterados ficam piscando certo.
no perfil para fresa o botão "ref all home" fica piscando e da pra alterar normal, mas no perfil para torno não fica piscando para alterar a macro dele.
Como editaria a macro dele?
-
no perfil para torno não tem "ref all home", só tem "home all"
-
Provavelmente tenha que alterar o comportamento do botão através do editor de telas do Mach3
Você usa a tela padrão de torno?
Se sim, veja a tela principal já editada para você - assim vc poderá depois acertar o comportamento do botão conforme eu sugerí no post anterior.
-
Obrigada pela excelente ajuda
quando chegar em casa vou testar e alterar a macro conforme sugeriu
Edney
-
DoButton( 24 ) é referente a qual eixo?
'DoButton( 23 ) é referente a qual eixo? pq esse tem aspas na frente?
DoButton( 22 ) é referente a qual eixo?
DoButton( 25 ) é referente a qual eixo?
'DoOEMButton(133)
'DoOEMButton(134)
'DoOEMButton(135)
Edney
-
Veja que há linhas que estão em coloração verde (na tela do editor) - estas linhas estão quotadas e não são interpretadas pelo comando...
DoButton (24) - referenciamento do eixo Z
DoButton (23) - referenciamento eixo Y (e está cotado)
DoButton (22) - referenciamento eixo X
O resto que está quotado se refere à referenciamento (zeramento de digitais para leitura de encoders - pode ignorar ( e até apagar se preferir)
-
Fabio
Alterei a macro para assim:
O que acha dessas alterações?
no caso minha output 2 é a que destrava a torre.
DoButton( 22 )
DoButton( 24 )
activatesignal(output2)
Sleep 500
DoButton( 25 )
While IsMoving()
Wend
Sleep 500
deactivatesignal(output2)
alterei também a ordem de referenciamento, pode dar algum problema para o software ou "a ordem dos fatores não altera o produto"?
Edney
-
Não sei se para torno tem alguma ordem de eixos para o referenciamento - creio que não tem problemas se iniciar por exemplo pelo X e depois o Z ou vice versa...
Se a macro funcionou para referenciar seu magazine, beleza...