Autor Tópico: Mach3 e Matlab  (Lida 3176 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Offline MarioCampos

  • Novato
  • *
  • Posts: 5
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Belo Horizonte MG
  • Nome:: Mário Campos
  • Profissão: estudante
Mach3 e Matlab
« Online: 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

Offline F.Gilii

  • Administrador
  • CNCMASTER
  • *******
  • Posts: 13796
  • Sexo: Masculino
  • Consultoria, Automação e Construção de Máquinas
  • Cidade - UF: Atibaia - SP
  • Nome:: Fabio Gilii
  • Profissão: Tec. Mecanica de Precisão
Re:Mach3 e Matlab
« Resposta #1 Online: 26 de Fevereiro de 2014, 10:55 »
automaticamente dá, mas ele abre só o arquivo que foi nomeado - não abre qualquer arquivo...

Offline MarioCampos

  • Novato
  • *
  • Posts: 5
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Belo Horizonte MG
  • Nome:: Mário Campos
  • Profissão: estudante
Re:Mach3 e Matlab
« Resposta #2 Online: 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.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Mach3 e Matlab
« Resposta #3 Online: 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.

Offline F.Gilii

  • Administrador
  • CNCMASTER
  • *******
  • Posts: 13796
  • Sexo: Masculino
  • Consultoria, Automação e Construção de Máquinas
  • Cidade - UF: Atibaia - SP
  • Nome:: Fabio Gilii
  • Profissão: Tec. Mecanica de Precisão
Re:Mach3 e Matlab
« Resposta #4 Online: 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

Offline MarioCampos

  • Novato
  • *
  • Posts: 5
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Belo Horizonte MG
  • Nome:: Mário Campos
  • Profissão: estudante
Re:Mach3 e Matlab
« Resposta #5 Online: 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ô.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Mach3 e Matlab
« Resposta #6 Online: 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.

Offline MarioCampos

  • Novato
  • *
  • Posts: 5
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Belo Horizonte MG
  • Nome:: Mário Campos
  • Profissão: estudante
Re:Mach3 e Matlab
« Resposta #7 Online: 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

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Mach3 e Matlab
« Resposta #8 Online: 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

Offline MarioCampos

  • Novato
  • *
  • Posts: 5
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Belo Horizonte MG
  • Nome:: Mário Campos
  • Profissão: estudante
Re:Mach3 e Matlab
« Resposta #9 Online: 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,

 

/** * */