Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print
SOFTWARES => Controle => Mach 2/3 => Tópico iniciado por: Bruno Gomes em 30 de Março de 2011, 08:21
-
Olá, é possível criar novas funções / códigos M. Ex. para abrir e fechar placa, avançar e recuar contra ponta, no Mach3 torno.
Se possível, como criar?
Obrigado.
-
Criar novas eu não se se é possivel. O que eu sei que pode ser feito do Mach 3 é alterar as saidas dos sinais.
Ou seja, o comando que gera um sinal para ligar o spindle pode ser utilizado para energizar uma solenoide para abrir ou fechar uma valvula, p.ex.
M3, M4 e M5 são originariamente convencionados para ligar e desligar o spindle, mas podem ser utilizados para outras tarefas.
Espero tê-lo ajudado
-
Sim, é possível criar rotinas que são lidas e interpretadas pelo mach3 para operação de periféricos...
-
Seria muito complicado criar essas rotinas que são lidas e interpretadas pelo mach3 para operação de periféricos...
Mais uma vez, obrigado pela ajuda...
-
Bruno,
Não é complicado - é necessário saber o que voce quer ligar e tento te dar uma ajuda...
As macros são editáveis com um bloco de notas, e conhecendo-se os comandos que o Mach3 entende, se pode fazer qualquer coisa...
-
F.Gilii, boa noite!
O que desejo acionar com funções M, são solenóides de válvulas, para placa pneumática e contra ponta.
No caso precisaria de 4 códigos M. Um para fechar outro para abrir a placa e mais um para avançar e o último para recuar o contra ponta.
Gostaria também de saber se esses macros também podem apenas monitorar uma torre de ferramentas...
A lógica de giro bidirecional da torre seria feita por um pequeno clp, talvez o modelo click da Weg.
Então o que quero saber é se o mach consegue enviar um sinal para o número da ferramenta ex. T01D01, esse sinal informaria o clp para qual posição ele deve fazer o giro e indexar o disco da torre. E se o mach consegue receber um sinal de clp, dizendo que a torre ja esta indexada na posição e pode preceguir com a usinagem.
Bom talvez isso que eu queira fazer seja um pouco mais complexo. Não vou fazer a torre logo, isso seria um projeto futuro, mas gostaria de estudar o assunto.
Obrigado pelas dicas...
-
Bruno,
Dá pra fazer tudo isso sim...
O Mach3 pode usar uma segunda porta paralela e pode configutar todos os 17 pinos disponíveis para entradas ou saídas de sinais caso os pinos de entrada da primeira porta LPT nãosejam suficientes...
No caso das macros, voce pode ter quantas macros quiser contanto que respeite algumas regras de nomeação e de sintaxe.
Então por exemplo, se eu quero uma macro para avançar o contra ponto, posso escrever um comando simples como este exemplo:
ActivateSignal (output#6)
Supondo que eu tenha uma eletroválvula ou solenoide ligado na saída #6 do Mach3 (que será um determinado pino de saída da porta LPT), este será acionado quando o interpretador ler o comando.
As macros podem também conter comandos em código-G ou seja, pode-se executar rotinas de movimentos dos eixos independentemente dos arquivos de corte, como por exemplo executar movimentos preparatórios para levar o magazine para a posiçãode troca de ferramentas...
Se o seu CLP funcionar com comunicação ModBus, poderá fazer com que o Mach3 converse diretamente com seu CLP...
-
Este é um exemplo de macro para funcionar com um dispositivo modbus:
' Macro To interface To ModIO/TC
'
' The Mach3 Modbus interface should be configured:
' ModIO Checkbox NOT checked
' First line of AutoPolling Input not checked - No inputs can go to Ports
' and Pins
' Second line of Inputs Checked, Slave = x, Start Regs = 1200, # Regs = 3
' First line of Autopolling Output not checked - no output Ports & Pins
' Second line of Output Slave = x, Start Regs = 1100, # Regs = 2
' This macro should be used with M990 in the Mach3 Init string. This is needed
' to synchronisethe Initiation flag values in ModIO and Mach3.
' M999 must be called after a ModIO reset too.
Option Explicit ' requires declarations
Dim tool As Integer
Dim ChangesCalled As Integer
Dim Dummy As Integer
Dim ChangesWere As Integer ' value before this request
Dim ChangerCount As Integer ' value returned from the ModIO
Dim ErrNo as Integer
Const ChangerCurrPos = 64 ' Inputs 1200 Current tool
Const ChangerCountReg = 65 ' 1201 Change done indicator - this is the
' same as 1101 when done
Const ChangerErrCode = 66 ' 1202 Error code reply if problems
Const ChangerReqPos = 64 ' Outputs 1100
Const ChangerInitReg = 65 ' 1101 initiates a change when made different
' to 1201
Const CallDRONo = 1080
' This just keeps count of the number of changes done
ChangesCalled = GetUserDRO (CallDRONo) ' what we think is current
ChangesCalled = ChangesCalled + 1
SetUserDRO CallDRONo, ChangesCalled ' remember new value in Mach3
' Now lets kick the ModIO/TC
tool = GetSelectedTool() ' what tool does user want
SetModOutput ChangerCurrPos, tool ' output requested tool number
ChangesWere = GetInput (ChangerCountReg) ' read current ChangerCountReg
SetModOutput ChangerInitReg, ChangesWere+1 ' initiate the turret change
ChangerCount = ChangesWere ' How many does it think is has done so far
While (ChangesWere = ChangerCount) And (GetInput (ChangerErrCode) = 0)
' not failed or finished
Sleep(50)
ChangerCount = GetInput (ChangerCountReg)
Wend ' loop until changer tells is it done something
If GetInput (ChangerErrCode) <> 0 Then
ErrNo = GetInput (ChangerErrCode)
Message "Toolchanger raised error " & ErrNo
Code "M0" ' chuck it all in.
' *** Must be a better solution here
Else
Message "Tool changed " & ChangesCalled & " times"
End If
SetCurrentTool GetInput (ChangerCurrPos)
SetModOutput ChangerCurrPos, 0 ' Clear tool number incase the Mach3 and
' ModIO initiate counters get out of step
' when we might get a spurious change
' end of Toolchanger macro
' *** Note M6End.M1S should be empty
-
Muito obrigado pelas informações...
Me ajudou muito.
-
Boa noite.
Estava dando uma olhada neste topico, e preciso acionar uma valvula pneumatica para liberar fluido para furar aluminio, quando o Z avança liberaria o fluido alguem ja usou para furar aluminio. Hoje uso M3 para ligar o Spindle e M5 para desligar como poderia fazer para acionar uma valvula somente quando avança o Z e quando esta usinando ? Pelo que eu vi da para usar o M4 e para desligar usaria qual ? Qual configuração necessaria ?
Abraço Ismael.
-
Use o sinal de direção do eixo "Z"
-
Fgilli.
Estou usando a placa da pede aquela com Charge Pump, e a saida esta ligada ao drive do servo, teria que usar um rele que esta na placa da pede, tenho como fazer isso com o pino de direção do Z ?
Abraço
-
Ismael,
O mais fácil é fazer uma cirurgia na placa, fazendo um jumper na parte de baixo da BOB onde tem a tomada centronics, entre o pino de direção do eixo Z e o pino de acionamento do relé desejado.
Tem como fazer no Mach3 usando o Brain, mas estou sem tempo no momento - assim que der eu vejo como se pode fazer isso.
-
Fgilli.
A respeito da saida, se eu fizer isso toda vez que eu avançar o Z ira liberar o fluido de corte.
Eu não tenho como usar um M7 para ligar por exemplo output 4 e M9 para desligar, ai so colocar no programa quando quero ligar e desligar, ou não tem como fazer isso ?
Tem que fazer muitas configurações para isso ?
Abraço
-
A respeito da saida, se eu fizer isso toda vez que eu avançar o Z ira liberar o fluido de corte.
Sim - foi o que voce pediu...
Eu não tenho como usar um M7 para ligar por exemplo output 4 e M9 para desligar, ai so colocar no programa quando quero ligar e desligar, ou não tem como fazer isso ?
Claro que tem - normalmente se usa M7 ou M8 - desliga com M9
-
Fgilli
Mas tem que configurar alguma saida ?
ABraço.
-
Mas tem que configurar alguma saida ?
Claro!
-
Fgilli.
Como seria essa configuração ?
Abraço
-
Como seria essa configuração ?
Da mesma maneira que se configura um relé para ligar/desligar um spindle...
No mach3, há uma tela para isso:
(http://www.guiacnc.com.br/w2box/data/Fabio%20Gilii/Mach3/rel%E9s.PNG)
Claro que precisa indicar o pino e a porta que deseja usar (na aba "Sinais de Saídas")
-
Fgilli
Como ficaria no programa, tem um exemplo ? Tem que colocar qual saida eu quero que acione no output4 ?
Abraço
-
Fgilli.
Vc tem algum exemplo de um programa usando por exemplo M7 e M9 ?
Abraço
-
(Sample Program M08EX7:)
(Workpiece Size: X4, Y3, Z1)
(Tool: Tool #2, 1/4" Slot Drill)
(Tool Start Position: X0, Y0, Z1)
N2 G90 G80 G40 G54 G20 G17 G50 G94 G64 (safety block)
N5 G90 G20
N10 M06 T2 G43 H2
N15 M03 S1200
N20 M08 (Coolant on)
N25 G00 X1 Y1
N30 Z0.1
N35 G01 Z-.25 F5
N40 X3 F20
N45 Y2
N50 X1
N55 Y1
N60 G00 Z1
N65 M09 (Coolant off)
N70 G00 X0 Y0
N75 M05
N80 M30
-
F.Gilii, bom dia.
Por gentileza, poderia me exclarecer uma dúvida?
Eu preciso fazer uma função "M" para abrir uma placa pneumática, para isso o sinal de saida tem que ficar ativo por 3 segundos e depois se desligar.
Estou com a seguinte função na macro:
ActivateSignal (output7)
DeactivateSiganl (output7)
Sei que a primeira linha faz ligar a saida 7, mas qual função eu edito para ficar com o tempo de 3 segundos??
E logo depois o mesmo pino se desliga.
Obrigado
-
A sintaxe pode ser assim:
ActivateSignal (output7)
Code "G04 P3"
DeactivateSignal (output7)
-
Saudações mestre Gilli
Aproveitando as consultas gostaria de saber como é feito.
Tenho uma rotina de corte dema peça de 10 x 20 mm.
Como é feito a rotina para ser cortada varias vezes.
Tem de fazer varias vezes a mesma rotina mudando o X e Y ou existe uma subroti,na ou um modo de somar uma variael na posição X e Y.
Grato
Roberto
-
Gilli, vou precisar da tua ajuda pois preciso fazer algo bem semelhante ao do nosso amigo Bruno. Já encomendei a clp, só falta chegar.
-
Saudações mestre Gilli
Aproveitando as consultas gostaria de saber como é feito.
Tenho uma rotina de corte dema peça de 10 x 20 mm.
Como é feito a rotina para ser cortada varias vezes.
Tem de fazer varias vezes a mesma rotina mudando o X e Y ou existe uma subroti,na ou um modo de somar uma variael na posição X e Y.
Grato
Roberto
Roberto, dá uma olhada aqui e vê se é isso que precisas.
http://www.guiacnc.com.br/index.php/topic,9977.0.html (http://www.guiacnc.com.br/index.php/topic,9977.0.html)
-
Oi Sergio
Ja vi a subrotina, mas ela faz o corte no mesmo lugar.
O que procurava como seria possivel por exemplo fazer 20 peças iguais na mesma chapa com separação de 2mm entre elas
Sei que pode fazer o desenho e gerar o gcode, mas a quantidade de linhas é bem grande,
Usando subrotina seria bem menor o programa.
Roberto
-
Ja vi a subrotina, mas ela faz o corte no mesmo lugar.
Não exatamente! Existe algumas maneiras de repetir o corte em locais diferentes.
Vc pode usar uma sub-rotina para produzir os mesmos movimentos em coordenadas de origem diferentes.
Veja:
http://www.guiacnc.com.br/index.php/topic,5985.msg110337.html#msg110337 (http://www.guiacnc.com.br/index.php/topic,5985.msg110337.html#msg110337)
-
Caro professor Marcomartin
è isso mesmo que estava procurando e vc. pagou o "pato"
Desculpe por não ter procurado muito, é que a visão anda ruim e até para ler no computador ta dificil.
Mas agora vou estudar um pouco o programa e tentar entender.
Eu também programei muito em basic num PDP-11 da Digital e tenho alguma noção para "pegar o pato!. hi
Abração e obrigado Roberto
-
F.Gilii
ActivateSignal (output7)
Code "G04 P3"
DeactivateSignal (output7)
Ja tentei, mas não funciona, o mach executa o dwell de 3 segundos, mas não ativa nem desativa o pino de saida.
-
Testei aqui e funciona normalmente
Configurou a porta de saída no output que deseja?
-
Olá, Essa é a minha primeira pergunta aqui no fórum, estou fazendo a eletrônica de uma maquina CNC com uma torre rotacional de 6 ferramentas antiga, e gostaria de substituir o software da mesma pelo mach3, tenho uma torre com seis ferramentas e ela tem internamente uma chave rotacional NA (normalmente aberta) que informa em qual ferramenta está posicionada, montei uma interface com microcontrolador que faz com que a mesma para na ferramenta na posição que necessito, estou utilizando duas logica para identificar a ferramenta, a primeira há 6 botões onde aperto o numero, e para na ferramenta chamada, a outra maneira que acabei utilizando é usando dois pinos da porta paralela que movimenta os eixos dos motores uso o da direção para ativar um contador interno do microcontrolador, e o step para gerar a quantidade de pulsos necessários, onde a interface entende qual ferramenta foi chamada.
Minha pergunta é se teria como eu acionar por exemplo a output#1 quando chamar a a ferramenta 1 (M6 T0101), output#2 para ferramenta 2 e assim por diante ? e se eu ao chegar na ferramenta eu usar uma input#1 para falar informar ao mach3 que a ferramenta chegou e que ele podesse seguir a rotina de codigos (g-code) ? pois necessito dos pinos dos motores, pois minha maquina tem 6 eixos, X,Y e Z para movimentos, A e B rotacional, C motor da torre de ferramenta e o Splinde.