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
-
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!
-
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
-
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
-
Talvez seja melhor com um controlador externo, pois não é nada seguro tentar fazer isso através de macro ou de "brain" no Mach3
-
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?
-
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.
-
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??
-
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...
-
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...
-
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??
-
DoOEMButton (xxx)
-
DoOEMButton (xxx)
Já tentei, não funciona porque o botão executa um script...
-
Provavelmente porque está chamando uma macro dentro de outra macro...
-
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.
-
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
-
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
-
Poste aqui o conteúdo da macro que é executada pelo botão e da macro que chama o botão
-
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
-
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)