Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print

SOFTWARES => Controle => Mach 2/3 => Tópico iniciado por: gazequipamentos em 07 de Junho de 2017, 21:54

Título: Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: gazequipamentos em 07 de Junho de 2017, 21:54
Boa noite pessoal.
Eu estou com uma grande dúvida.
Na minha máquina eu travalho apenas com dois eixos, X e Y. Porém, eu gostaria de acionar um terceiro motor.
Esse motor aciona uma bomba, então digamos que independentemente dos eixos coordenados para fazer o "desenho", eu preciso movimentar esse motor 720 graus no sentido horario, e 720 no anti horario, continuamente.
Teria como fazer um macro, um botão, ou algo que acione esse motor dessa forma, enquanto a máquina trabalha normalmente?
Obrigado!
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: F.Gilii em 12 de Junho de 2017, 12:03
Se este eixo rotativo tiver que ser sincronizado com os movimentos de X e Y, o jeito é criar um arquivo onde em cada linha de comando esteja indicado o que deve fazer.

Nunca fiz isso, mas imagino o seguinte quadro:
Velocidades de Movimentos lineares serão expressas em mm/min e em movimentos circulares seriam expressas em graus/min, então talvez seja simples:
Exemplo (partindo de X0 Y0 e A0) = G1 X100 Y100 A100 F500 faria com que todos os movimentos terminassem juntos, pois o eixo mais lento é quem manda na velocidade
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: gazequipamentos em 12 de Junho de 2017, 16:21
Fabio,
Muito obrigado pelo retorno.
Mas a idéia é que o movimento seja independente de x e y.
Enquanto o x e o y fazem seu caminho, seja ele interpolando ou não, eu gostaria que o A se movimentasse independentemente, sem ser sincronizado com os outros dois... Você conhece alguma maneira no Mach? ou somente com controlador externo?
Obrigado
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: F.Gilii em 12 de Junho de 2017, 16:51
Talvez seja melhor com um controlador externo, pois não é nada seguro tentar fazer isso através de macro ou de "brain" no Mach3
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: matrix em 12 de Junho de 2017, 18:50
Assim sem muita pesquisa consigo ver uma forma de fazer isso, em vez de configurar esse terceiro eixo de A, configura como Z, e pode usar o controle de THC, e talvez possa fazer o controle na macropump ou no brains, é uma ideia.




Aproveito este tópico para fazer uma questão ao Fábio, eu preciso de usar o control THC também,
Mas preciso de acionar uma macro dentro da macropump sem que esta pare de correr, dentro
Da macropump preciso de colocar ex:M500, e dentro da macro M500 faria então o programa para controlar o THC.


Só tem um pormenor, a macro M500 tem que correr ao mesmo tempo que o gcode (enquanto a máquina trabalha).




É possível? Haverá algum outro problema?
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: minilathe em 12 de Junho de 2017, 20:20
Boa noite pessoal.
Eu estou com uma grande dúvida.
Na minha máquina eu travalho apenas com dois eixos, X e Y. Porém, eu gostaria de acionar um terceiro motor.
Esse motor aciona uma bomba, então digamos que independentemente dos eixos coordenados para fazer o "desenho", eu preciso movimentar esse motor 720 graus no sentido horario, e 720 no anti horario, continuamente.
Teria como fazer um macro, um botão, ou algo que acione esse motor dessa forma, enquanto a máquina trabalha normalmente?
Obrigado!

Não sei se entendi, você deseja comandar um movimento de rotação como seu terceiro eixo? E esse eixo precisa se mover (girar) entre + e - 720 graus ou numa fração? Qual a velocidade? O acionamento é do tipo anda e para? Se assim for, já pensou em usar um motor de passo? É possível comandar o mesmo independemente dos eixos x e y. Quando mover o z (ou outro nome), os sinais de passo e sentido farão mover seu eixo independente. 

Evidentemente, que há inúmeras outras possibilidades mais complexas, com controlador independente (exemplo: Arduino, PC, CLP, DSP, Raspberry, eletrônica de projeto específico, ...) para mover o eixo rotativo. Mas, a simplicidade é uma virtude, a simplicidade bem aplicada é sempre a primeira opção.
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: matrix em 13 de Junho de 2017, 06:19





Já fiz o teste, funciona desde que o Gcode esteja parado, se estiver a correr não funciona,


Uma forma de funcionar é , criar um botão com o script pretendido, este funciona mesmo com o Gcode em funcionamento, mas agora
preciso de accionar este botão com a macropump, como é um botão de user não consigo chamar com o VB.


Já tentei ex:


douserbutton(1500)


alguém sabe qual o código para accionar botões de user??
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: F.Gilii em 13 de Junho de 2017, 09:26
Gil,

Pelo que eu entendí, o colega Gazequipamentos precisa que um eixo fique continuamente oscilando à direita e esquerda - duas voltas para cada lado sem parar, e ao mesmo tempo que possa usar os movimentos em X e Y independentes ou não (interpolados ou não).

Creio ainda que o melhor seria usar um comando independente que faça estes giros, e eu tentaria disparar os movimentos de X e Y talvez usando por exemplo um sinal de índice gerado por um sensor no eixo...
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: F.Gilii em 13 de Junho de 2017, 09:41
Matrix,

O Mach3 tem implementado já no seu "core" o controle de THC - funciona de forma simples e eficiente...

Regra de Ouro: - NUNCA use uma macropump para controle de movimento (de qualquer eixo)

Uma macropump roda qualquer comando em VBscript válido (para o Mach3) cerca de 40x por segundo continuamente (com uma parada de 1/10 de segundo a cada ciclo), MAS é bem complicado (e muitas vezes errado) tentar fazer controle de eixos dentro de macros, ainda mais de forma independente dentro do Mach3...

Controle de THC é dinâmico e sempre atrelado ao que a máquina está fazendo - se está cortando muito que bem, mas se está parada (sem o sinal de "arco OK" presente) vai ter problemas...

A não ser que você queira tentar refinar um pouco o funcionamento do comportamento do Mach3 - por exemplo quando um corte é interrompido por algum motivo e a tocha se apaga.

Neste caso talvez uma macropump possa por exemplo fazer o disparo da tocha na tentativa de retomar o corte, e se falhar com 3 tentativas para tudo e dá uma mensagem qualquer ao operador... mas isso é o máximo de controle automático que poderá usar numa macropump...
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: matrix em 13 de Junho de 2017, 10:08
Matrix,

O Mach3 tem implementado já no seu "core" o controle de THC - funciona de forma simples e eficiente...

Regra de Ouro: - NUNCA use uma macropump para controle de movimento (de qualquer eixo)

Uma macropump roda qualquer comando em VBscript válido (para o Mach3) cerca de 40x por segundo continuamente (com uma parada de 1/10 de segundo a cada ciclo), MAS é bem complicado (e muitas vezes errado) tentar fazer controle de eixos dentro de macros, ainda mais de forma independente dentro do Mach3...

Controle de THC é dinâmico e sempre atrelado ao que a máquina está fazendo - se está cortando muito que bem, mas se está parada (sem o sinal de "arco OK" presente) vai ter problemas...

A não ser que você queira tentar refinar um pouco o funcionamento do comportamento do Mach3 - por exemplo quando um corte é interrompido por algum motivo e a tocha se apaga.

Neste caso talvez uma macropump possa por exemplo fazer o disparo da tocha na tentativa de retomar o corte, e se falhar com 3 tentativas para tudo e dá uma mensagem qualquer ao operador... mas isso é o máximo de controle automático que poderá usar numa macropump...




Obrigado Fabio,


O que quero fazer é usar a função já existente no mach3 de THC, o objectivo é exactamente o mesmo, ajustar o eixo Z durante o movimento.


A questão é que tenho que fazer um script que faça a leitura de X em X tempo, tipo este





Tenho que usar um cilindro com duas inputs, uma verifica de o cilindro está posicionado e a outra verifica se se o eixo tem que subir ou descer (THC).




Não posso colocar dentro da macropump porque esta não pode parar ( já tem outras funcões a correr).


Já testei fazer um botão com o script dentro, e funciona lindamente, agora com algumas condições apenas chamo esse botão, o problema é que não encontro codigo VB para chamar
esse botão.




Consegue lembrar alguma forma de chamar um user button?? 





Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: F.Gilii em 13 de Junho de 2017, 11:28
DoOEMButton (xxx)
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: matrix em 13 de Junho de 2017, 11:31
DoOEMButton (xxx)




Já tentei, não funciona porque o botão executa um script...
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: F.Gilii em 13 de Junho de 2017, 12:14
Provavelmente porque está chamando uma macro dentro de outra macro...
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: matrix em 13 de Junho de 2017, 12:24
Provavelmente porque está chamando uma macro dentro de outra macro...




Fábio, neste momento tenho um botão no screen configurado para script ( com o Script), e estou a usar o editor de VB directamente para testar o botão.


Como pode ver no anexo.


Neste caso não estou a chamar uma macro, estou a chamar um botão.







Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: F.Gilii em 13 de Junho de 2017, 12:44
creio que é o que eu acabei de dizer - tentativa de rodar uma macro de dentro de outra macro... que eu saiba não dá certo
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: F.Gilii em 13 de Junho de 2017, 12:49
Talvez se escrever uma macro onde exista uma chamada para um script (runScript() ) mas aí eu desconheço..

Talvez estudando este manual você chegue a alguma conclusão:
http://www.machsupport.com/wp-content/uploads/2013/02/Mach3_V3.x_Macro_Prog_Ref.pdf
http://www.machsupport.com/wp-content/uploads/2013/02/VBScript_Commands.pdf

Talvez a parte "StartPeriodicScript()" e "StopPeriodicScript()" possa fazer alguma coisa rodar por um período pré determinado, impedindo os erros de sincronização do clock interno das macros
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: F.Gilii em 13 de Junho de 2017, 12:56
Poste aqui o conteúdo da macro que é executada pelo botão e da macro que chama o botão
Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: matrix em 13 de Junho de 2017, 13:08
creio que é o que eu acabei de dizer - tentativa de rodar uma macro de dentro de outra macro... que eu saiba não dá certo




Acho que não é por essa razão que não funciona, porque eu já testei varias vezes rodar macros dentro de macros, e funciona direito (pode não ser aconselhado mas funciona),
até posso dentro de uma macro fazer um call a runscript que funciona.




A única diferença é que o Botão script, é o único que funciona enquanto roda o Gcode, qualquer das outras opções o gGcode pára ate a macro finalizar e só depois continua.


bom, vou ter de dar a volta a isto de alguma forma.


Obrigado Fábio

Título: Re:Controlar um eixo (motor) independentemente dos eixos utilizados na movimentação
Enviado por: matrix em 13 de Junho de 2017, 13:12



      SetUserLED(1605,1)
Fábio, não será esta a macro, é apenas uma macro de teste, antes de fazer tenho de ter a certeza se é possivel  fazer e como, a macro final vai ser mais
complexa.


estas DRO são apenas para verficar no screen se a macro está a rodar ou não
 


       volta:
      SetUserDRO (1700,GetUserDRO(1700)+1)
                      If GetUserDRO(1700)< 100000 Then
 
                      GoTo volta
                          End If




setuserdro(1700,0)
Setuserled(1605,0)