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

SOFTWARES => Controle => Mach 2/3 => Tópico iniciado por: MarioCampos em 26 de Fevereiro de 2014, 10:28

Título: Mach3 e Matlab
Enviado por: MarioCampos em 26 de Fevereiro de 2014, 10:28
Olá,
Alguém sabe dizer se é possível fazer o Mach3 ler o código G diretamente do software Matlab? Atualmente, descarrego um arquivo .txt e faço o upload no Mach3, mas gostaria de eliminar este passo intermediário.

Obrigado,

Mário
Título: Re:Mach3 e Matlab
Enviado por: F.Gilii em 26 de Fevereiro de 2014, 10:55
automaticamente dá, mas ele abre só o arquivo que foi nomeado - não abre qualquer arquivo...
Título: Re:Mach3 e Matlab
Enviado por: MarioCampos em 26 de Fevereiro de 2014, 21:56
Obrigado pela resposta, mas não entendi como é feito isto. Para que o Mach3 receba um comando direto do Matlab (arquivo .m), eu devo dar algum comando ou realizar alguma configuração no Mach3?
Até hoje não consegui fazê-lo ler o ".m". Ele só recebe o comando da programação Matlab se eu salvar o arquivo .m, gerar um arquivo .txt e depois fazer o upload no Mach3.
Gostaria de eliminar o procedimento de gerar o .txt, pois ele torna a mudança de comando muito demorada.

Obrigado mais uma vez.
Título: Re:Mach3 e Matlab
Enviado por: minilathe em 27 de Fevereiro de 2014, 08:19
Obrigado pela resposta, mas não entendi como é feito isto. Para que o Mach3 receba um comando direto do Matlab (arquivo .m), eu devo dar algum comando ou realizar alguma configuração no Mach3?

O arquivo .m no Matlab é um arquivo de comandos (um script do tipo txt) para o Matlab e que só o Matlab "entende". Você gerou esse arquivo .m pelo seu programa em Matlab?

Ele só recebe o comando da programação Matlab se eu salvar o arquivo .m, gerar um arquivo .txt e depois fazer o upload no Mach3.
Gostaria de eliminar o procedimento de gerar o .txt, pois ele torna a mudança de comando muito demorada.

Seria necessário que o Mach3 se comunicasse diretamente com o Matlab. Acho possível efetuar a comunicação, pois o Matlab possui algumas bibliotecas de interface (TCP, IP, Serial, ....), a questão é fazer o Mach3 ter uma porta de comunicação TCP, IP, Serial, .... para aceitar comandos do tipo G. Já, com o LinuxCNC, a coisa muda de figura.

Desculpe a pergunta, qual a sua aplicação? Acho meio sem sentido essa comunicação, sendo mais simples fazer tudo o que eventualmente precisa em Matlab.
Título: Re:Mach3 e Matlab
Enviado por: F.Gilii em 27 de Fevereiro de 2014, 08:49
Creio que encontrei uma solução, mas teria que testar...

Precisaria criar uma macro chamada M1030 e colocar este conteúdo nela (talvez necessite de ajustes)

Código: [Selecionar]
SetVar(601,0)

AUTO BATCH LOADER CODE **************************************************

' AutoBatchLoader macro
Dim fname1,fname2,fname3,fname4,fname5 As String
Dim F1WO,F2WO,F3WO,F4WO,F5WO As Single

fname1 ="c:\mach3\gcode\" & AskTextQuestion("File#1 Name?")
F1WO= "" & Question("File#1 Offset in G59 P### Format")
Message(Fname1  & "  AND  G59 P" & F1WO)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
fname2 ="c:\mach3\gcode\" & AskTextQuestion("File#2 Name?")
F2WO= "" & Question("File#2 Offset in G59 P### Format")
Message(Fname2  & "  AND  G59 P" & F2WO)

fname3 ="c:\mach3\gcode\" & AskTextQuestion("File#3 Name?")
F3WO= "" & Question("File#3 Offset in G59 P### Format")
Message(Fname3  & "  AND  G59 P" & F3WO)

fname4 ="c:\mach3\gcode\" & AskTextQuestion("File#4 Name?")
F4WO= "" & Question("File#4 Offset in G59 P### Format")
Message(Fname4  & "  AND  G59 P" & F4WO)

fname5 ="c:\mach3\gcode\" & AskTextQuestion("File#5 Name?")
F5WO= "" & Question("File#5 Offset in G59 P### Format")
Message(Fname5  & "  AND  G59 P" & F5WO)

For x = 1 To 5

If x = 1 Then loadfile(fname1)
While Isloading()
Sleep(1000)
Wend
If X = 1 Then  Code"G59 P" & F1WO
Sleep(1000)
SetVar(601,1)
Sleep(1000)

If x = 2 Then loadfile(fname2)
While Isloading()
Sleep(1000)
Wend
If X = 2 Then  Code"G59 P" & F2WO
Sleep(1000)
SetVar(601,1)
Sleep(1000)

If x = 3 Then loadfile(fname3)
While Isloading()
Sleep(1000)
Wend
If X = 3 Then  Code"G59 P" & F3WO
Sleep(1000)
SetVar(601,1)
Sleep(1000)

If x = 4 Then loadfile(fname4)
While Isloading()
Sleep(1000)
Wend
If X = 4 Then Code"G59 P" & F4WO
Sleep(1000)
SetVar(601,1)
Sleep(1000)

If x = 5 Then loadfile(fname4)
While Isloading()
Sleep(1000)
Wend
If X = 5 Then  Code"G59 P" & F5WO
Sleep(1000)
Setvar(601,1)
Sleep(1000)

Message(filename)

While Isloading()
Sleep(5000)
Wend

runfile()
Sleep(2000)

While Getvar(601)=1
Sleep(2000)
Wend

If Getvar(601)=1 Then End

Next x
Message("End Of Batch Load")

End
Título: Re:Mach3 e Matlab
Enviado por: MarioCampos em 27 de Fevereiro de 2014, 13:18
Obrigado F.Gilii e minilathe!

minilathe, a aplicação é acadêmica. Temos um robô antigo que perdeu seu sistema embutido de comando, e o novo comando é feito desta forma. Geramos o comando no Matlab e o Mach3 faz a comunicação com o robô.
Título: Re:Mach3 e Matlab
Enviado por: minilathe em 27 de Fevereiro de 2014, 21:54
Obrigado F.Gilii e minilathe!

minilathe, a aplicação é acadêmica. Temos um robô antigo que perdeu seu sistema embutido de comando, e o novo comando é feito desta forma. Geramos o comando no Matlab e o Mach3 faz a comunicação com o robô.

Qual a marca e modelo do robô?

Seria interessante conhecer como se dá conexão do robô e do Mach3.
-São utilizados drivers?
-De que tipo?
-Qual(is) o(s) tipo(s) de sinal(is) é(são) utilizado(s)?
-Quais os tipos de motores e sensores utilizados?
 
Acho que sendo uma aplicação acadêmica, o LinuxCNC seria mais apropriado. Com vantagens em relação ao fato de ser software aberto e possibilitar algumas opções de interface de comunicação.
Título: Re:Mach3 e Matlab
Enviado por: MarioCampos em 28 de Fevereiro de 2014, 10:47
minilathe

O driver utilizado é um servodriver modelo G320 fabricado pela Geckodrive. São 5 motores síncronos (é um braço robótico; manipulador ASEA IRB6).
São sinais de pulso de 20kHz e os sensores antigos foram substituídos por encoder's. Quanto ao uso de Linux, não sei qual foi o critério de escolha pelo Windows, mas vou propor discutir a mudança.

Já me propuseram implementar um web service para comunicar o Matlab e o Mach3, mas outras pessoas me disseram que não tem como fazer isso com o Mach3.

Semana que vem, vou testar a programação que o F. Gilii me passou aqui no fórum também.

Obrigado
Título: Re:Mach3 e Matlab
Enviado por: minilathe em 28 de Fevereiro de 2014, 15:45
O driver utilizado é um servodriver modelo G320 fabricado pela Geckodrive. São 5 motores síncronos (é um braço robótico; manipulador ASEA IRB6).
São sinais de pulso de 20kHz e os sensores antigos foram substituídos por encoder's. Quanto ao uso de Linux, não sei qual foi o critério de escolha pelo Windows, mas vou propor discutir a mudança.

O Mach3 deve gerar os sinais de passo e direção para cada driver, que por sua vez controlam cada motor. Isso o LinuxCNC também faz.

Saberia informar como é a interface física do PC com os drivers, usa uma porta paralela (de impressora)?

Já me propuseram implementar um web service para comunicar o Matlab e o Mach3, mas outras pessoas me disseram que não tem como fazer isso com o Mach3.

Entendo que você quer fazer a comunicação do Matlab e/ou do Simulink diretamente e em tempo real com o robô, correto? Caso afirmativo, o programa CNC (Mach3 ou LinuxCNC) deve se comunicar com o Matlab/Simulink em tempo real e não através de leitura e escrita de arquivos. Conforme já mencionei anteriormente, o Simulink possui a capacidade de se comunicar em rede, porta serial ou driver de dispostivo (eu já usei este artifício com placas da National, porta serial e TCP/IP).

Além disso, o LinuxCNC pode ser adequado para receber comandos via rede ou porta serial, conforme o vídeo a seguir:
Interfacing Arduino and EMC without Linux programming (http://www.youtube.com/watch?v=1g0IO6JZxmA#)
Título: Re:Mach3 e Matlab
Enviado por: MarioCampos em 06 de Março de 2014, 00:56
minilathe,

é porta paralela sim. Estou esperando o fim do recesso de carnaval para conversar com o professor.
Daí te dou retorno do que foi resolvido.

Obrigado,