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

ELETRÔNICA / ELÉTRICA => Eletrônica Básica => Microcontroladores => Tópico iniciado por: geancoelho em 18 de Maio de 2012, 12:29

Título: MODBUS no PIC
Enviado por: geancoelho em 18 de Maio de 2012, 12:29
Boa tarde a todos.

Alguem por aqui ja implementou uma biblioteca em C para modbus com o PIC???

Estou com isso na cabeça a uns 2 anos e ainda nao achei algum pra me orientar.

Trabalho com programação em c no CCS mais nunca implementei nada em MODBUS.

Grto a todos.
Título: Re:MODBUS no PIC
Enviado por: Blackmore em 18 de Maio de 2012, 17:33
Gean,

Eu também não implementei nada ainda, mas gostaria de tentar. O quê precisamos para iniciar algum estudo sobre o assunto?
Título: Re:MODBUS no PIC
Enviado por: geancoelho em 18 de Maio de 2012, 18:11
Ironicamente, alguem que ja tenha feito!!!

Tentei varias veses isso e nunca cheguei a nada, li varios manuais tenho inumeras bibliotecas mais nenhuma delas funciona.

acho que o minilathe poderia nos ajudar, estou esperando o tão apreciado comentario dele. E de outros que possivelmente ja tenham se aventurado no mundo do MODBUS.

O protocolo é antigo mas pra mim é muito desconhecido pois ja implementei inumeros deles em minhas maquinas e projetos mais todos em equipamentos que comprei.

Mesmo assim vamos em frente pois tenho muita vontade de montar alguma coisa que se comunique com o EMC2 pela MODBUS.
Título: Re:MODBUS no PIC
Enviado por: Blackmore em 18 de Maio de 2012, 18:17
bom ... pensei que vc queria desenvolver alguma biblioteca ... blz então.
desculpe o atrapalho.
Abraço!
Título: Re:MODBUS no PIC
Enviado por: geancoelho em 18 de Maio de 2012, 18:25
acho que rolou um mau entendido!

A minha ideia é justamente essa, mas diante da minha insuficiencia de capacidade é que espero a ajuda dos amigos.

Sua ajuda é muito bem vinda, e com certesa isso acelera o processo de criação de uma biblioteca.
Título: Re:MODBUS no PIC
Enviado por: minilathe em 18 de Maio de 2012, 18:35
Gean,

Já programei rotinas para Modbus-RTU, o que você espera fazer? Se comunicar com o EMC2?
Título: Re:MODBUS no PIC
Enviado por: geancoelho em 18 de Maio de 2012, 18:40
Justamente isso

queria montar uma placa com algumas entradas e saidas digitais e analogicas

montar um joystic

entre outras coisas, mas como nunca implementei isso no PIC fico perdido e ao longo destes 2 anos tentei varias coisas mais sempre sem sucesso.

Agradeceria sua ajuda se fosse possivel.
Título: Re:MODBUS no PIC
Enviado por: Blackmore em 18 de Maio de 2012, 18:47
Citar
acho que rolou um mau entendido!

fica tranquilo ... negócio é aproveitar energia e não disperdiçar...
Vou ficar de olho e se eu tiver algo a acrescentar ... o farei.
Título: Re:MODBUS no PIC
Enviado por: minilathe em 18 de Maio de 2012, 18:59
Gean,

Vamos por partes,

queria montar uma placa com algumas entradas e saidas digitais e analogicas

montar um joystic

Placas de E/S e comando por joystick são coisas distintas, com soluções e abordagens distintas de implementação.

A comunicação com o EMC2 não precisa ser feita necessariamente via Modbus-RTU, há outras possibilidades, USB, RS-232 via Python, ...
Título: Re:MODBUS no PIC
Enviado por: minilathe em 18 de Maio de 2012, 19:03
Gean,

Acho que a comunicação usando RS-232 via Python é mais fácil, programa-se menos. Além disso, a interface Modbus do EMC2 é Modbus-TCP, se não estou enganado, nesse caso, o PIC deveria usar uma placa Ethernet/TCP, o que complicaria um pouco mais.
Título: Re:MODBUS no PIC
Enviado por: geancoelho em 19 de Maio de 2012, 08:16
Como não conheço nada de Python então nao posso apinar e sim escutar seu conselho quanto a facilidade de implementação.

Quanto ao modbus o EMC aceita o TCP e o RTU seja ele por serial ou USB

Voltando ao pythom este seria implementado no EMC e trabalharia com a serial. Isso seria muito dificil de aprender??

Minha primeira ideia do Joystic foi uma biblioteca PS2 de teclado dentro do microcontrolador e dai o mesmo comunicando como se fosse um teclado mais com as formas de um joystic
Título: Re:MODBUS no PIC
Enviado por: minilathe em 19 de Maio de 2012, 12:38
No caso de um joystick, não precisaria um PIC, poderia usar o comando de um game que tivesse interface USB. Seria pelo menos a solução mais simples e barata.
Título: Re:MODBUS no PIC
Enviado por: minilathe em 19 de Maio de 2012, 19:02
Nem me lembrava, que eu já fiz alguns testes com Modbus-RTU no EMC2.

http://www.guiacnc.com.br/emc-linux/emc2-com-modbus/ (http://www.guiacnc.com.br/emc-linux/emc2-com-modbus/)

Nesse teste, eu usei um simulador de Modbus-RTU rodando num PC com MS-Windows se comunicando com o EMC2 em outro PC.
Título: Re:MODBUS no PIC
Enviado por: Joao Henrique em 20 de Maio de 2012, 21:47
Já implementei MODBUS-RTU em PIC com MikroBasic. Neste projeto funcionava como Slave. Se puder ajudar é só falar.

João Henrique
Título: Re:MODBUS no PIC
Enviado por: geancoelho em 21 de Maio de 2012, 07:40
Muito obrigado pelas intenções dadas a este projeto.

O joystic que pretendo montar seria identico a um handwheel usado nas maquinas com comando HEIDENHAIN.
Por isso que tentei uma biblioteca PS2 no pic para enviar os codigos como sendo um teclado. Ainda nao consegui nada!

O MODBUS seria para enviar ao emc alguns sinais digitais e a a temperatura do SPINDLE e outras coisas que me surgirem.


Título: Re:MODBUS no PIC
Enviado por: Blackmore em 21 de Maio de 2012, 10:08
geancoelho

Citar
O joystic que pretendo montar seria identico a um handwheel usado nas maquinas com comando HEIDENHAIN.

você pretendia enviar informações como teclado (PS2)primeiro e não deu certo? tentou utilizar MODBUS e não deu certo? hummm uma pergunta boba ... vc tem certeza que a saída serial do microcontrolador está funcionando devidamente?
Título: Re:MODBUS no PIC
Enviado por: F.Gilii em 21 de Maio de 2012, 10:15
Apenas para um lembrete:
As rodas de MPG são encoders de quadratura normalmente portanto, deve haver dois canais e duas formas de onda quadrada defasadas em 90º uma da outra, e tais sinais devem ser tratados corretamente.

Por exemplo, o Mach3 já está preparado para ler estes sinais diretamente.
Título: Re:MODBUS no PIC
Enviado por: geancoelho em 21 de Maio de 2012, 10:23
Blackmore

O problema não é o hardware e sim o programador que não esta dando conta!!!

Fabio

o encoder esta funcionando no microcontrolador mais a comunicação com o mundo exterior que não consegui implementar.

Título: Re:MODBUS no PIC
Enviado por: Blackmore em 21 de Maio de 2012, 10:28
Citar
O problema não é o hardware e sim o programador que não esta dando conta!!!

qual compilador você está utilizando? poderia postar o fragmento de código para ativação da serial e a chamada da função no programa?



edit:

[OFF]
vc está pertinho da rua Dorothovio do Nascimento não é?
Título: Re:MODBUS no PIC
Enviado por: geancoelho em 21 de Maio de 2012, 10:50
Eu uso o CCS como compilador e as bibliotecas proprias dele porem a biblioteca do modbus nao funciona direito pois conversei com outros programadores mais experientes e os mesmo disseram que tambem abandonaram esta e criaram suas proprias porem ninguem me mostrou o milagre.

quanto ao ps2 vou procurar o codigo que esta em algum lugar dos muitos programas que tentei.
Título: Re:MODBUS no PIC
Enviado por: Blackmore em 21 de Maio de 2012, 11:16
eu só acho as bibliotecas do CCS um pouco chatas ... mas todas que testei funfaram ... blz então . to por aqui ..
Título: Re:MODBUS no PIC
Enviado por: geancoelho em 21 de Maio de 2012, 11:36
Estou sim!!

Estrada da ilha numero 50.

Voce esta em Joinville??
Título: Re:MODBUS no PIC
Enviado por: Blackmore em 21 de Maio de 2012, 11:50
Estou não, em uma empresa em que trabalhei tive um fornecedor de injeção plástica aí da dorothovio e tive a oportunidade de conhecer a cidade ... muito bacana Joi ...
Título: Re:MODBUS no PIC
Enviado por: minilathe em 24 de Maio de 2012, 21:25
Gean,

Desistiu??

O joystic que pretendo montar seria identico a um handwheel usado nas maquinas com comando HEIDENHAIN.
Por isso que tentei uma biblioteca PS2 no pic para enviar os codigos como sendo um teclado. Ainda nao consegui nada!

Eu já liguei um mouse USB para movimentar uma CNC via EMC2 e funcionou bem, dá para fazer a mesma coisa com um joystick USB. Não precisa programar nada.

O MODBUS seria para enviar ao emc alguns sinais digitais e a a temperatura do SPINDLE e outras coisas que me surgirem.

Se forem apenas entradas para o EMC2, dá para enviar os sinais via RS232 ao EMC2 sem Modbus e sem nenhuma programação em Linux, é necessário programar apenas o PIC.
Título: Re:MODBUS no PIC
Enviado por: geancoelho em 25 de Maio de 2012, 07:51
Mestre Minilathe

Desistir nunca.

Apenas estou tentando avançar mais sem sucesso. Essa do RS232 nao entendi, teria algum protocolo pronto pra isso no emc ou seria uma palabra binaria e comparariamos os bits.

Teriamos como enviar dados de valores tipo  inteiros reais, como ja comentei, minha intenção é ler variaveis analogicas como tempreratura pelo EMC.
Título: Re:MODBUS no PIC
Enviado por: minilathe em 25 de Maio de 2012, 08:23
Apenas estou tentando avançar mais sem sucesso. Essa do RS232 nao entendi, teria algum protocolo pronto pra isso no emc ou seria uma palabra binaria e comparariamos os bits.

Teriamos como enviar dados de valores tipo  inteiros reais, como ja comentei, minha intenção é ler variaveis analogicas como tempreratura pelo EMC.

Se for para ler entradas oriundas do PIC, numa comunicação unidirecional, você pode usar o seguinte:

(1) criar um pipe no Linux:
$ mkfifo fila

(2) No PC, direcionar a porta serial do PC ao pipe, no meu caso, usei um conversor serial/USB (/dev/ttyUSB0):
$ stty 9600
$ (stty raw; cat > received.txt) < /dev/ttyUSB0 &

(3) Se você programar o PIC para ficar escrevendo na serial, os dados serão enviados ao pipe.

(4) Ler do pipe e enviar ao EMC2.
Título: Re:MODBUS no PIC
Enviado por: geancoelho em 25 de Maio de 2012, 09:10
O professor poderia me mostrar um exemplo deste PIPE??
Título: Re:MODBUS no PIC
Enviado por: minilathe em 25 de Maio de 2012, 13:07
Segue um exemplo, eu liguei um Arduino em meu Notebook, onde a porta /dev/ttyUSB0 permite me comunicar com o mesmo.

Executei os seguintes comandos num terminal:

$ stty -F /dev/ttyUSB0 9600
$ stty 9600
$ mkfifo fila
$ (stty raw; cat > fila) < /dev/ttyUSB0 &


O primeiro comando ajusta a velocidade da porta serial para 9600, o segundo comando ajusta a velocidade do terminal para 9600, o terceiro comando cria um pipe no Linux, o terceiro comando redireciona os dados que chegam pela serial para o pipe.

Se eu executar o comando "cat fila", terei a reposta abaixo:
$ cat fila

1
2
3
4
5
6
7
8
9
10
11
12

No Arduino eu criei um programa que gera uma onda triangular e envia pela serial, a seguir:

// 
//  Programa rampa
// 
//  Gera uma onda triangular e envia pela porta serial
// 
//  Gil Pinheiro - Maio/2012
//

int n=0;

void setup() {
  Serial.begin(9600);
}

void loop() {

  while( n < 255 ) {
    n++;
    Serial.println(n);
    delay(100);
  }

  while( n > 0 ) {
    n--;
    Serial.println(n);
    delay(100);
  }

}
Título: Re:MODBUS no PIC
Enviado por: minilathe em 25 de Maio de 2012, 13:13
Falta mostrar ainda como redirecionar o pipe e mapear as variáveis recebidas dentro do EMC2, mas isso é fácil tb...
Título: Re:MODBUS no PIC
Enviado por: minilathe em 27 de Maio de 2012, 09:29
Segue vídeo mostrando o que eu fiz com meu Arduino Mega 2560 (clone da OSEPP).

Interfacing Arduino and EMC without Linux programming (http://www.youtube.com/watch?v=1g0IO6JZxmA#)
Título: Re:MODBUS no PIC
Enviado por: Blackmore em 27 de Maio de 2012, 10:02
Devido a falta de tempo vou perder uma grande oportunidade de testar o Modbus RTU com um item comercial que comunica neste protocolo. Estou com um expansor de portas ( http://metaltex.com.br/downloads/manual_ma.pdf (http://metaltex.com.br/downloads/manual_ma.pdf) ) mas o devolvo amanhã e não sobrará tempo para ativar ele a partir de um microcontrolador ...  :-\ 
Mas acredito que seria uma boa oportunidade para testar isso pela primeira vez ... e claro aprender algo novo!
Título: Re:MODBUS no PIC
Enviado por: minilathe em 27 de Maio de 2012, 14:05
Devido a falta de tempo vou perder uma grande oportunidade de testar o Modbus RTU com um item comercial que comunica neste protocolo. Estou com um expansor de portas ( http://metaltex.com.br/downloads/manual_ma.pdf (http://metaltex.com.br/downloads/manual_ma.pdf) ) mas o devolvo amanhã e não sobrará tempo para ativar ele a partir de um microcontrolador ...  :-\ 
Mas acredito que seria uma boa oportunidade para testar isso pela primeira vez ... e claro aprender algo novo!

Para usar com o EMC não precisa de microcontrolador nenhum, é só criar pontos Modbus no EMC e conectar o PC ao expansor de portas. Ou então, se quiser testar sem o EMC, baixe um programa Host Modbus e conecte ao expansor de portas. Muito rápido e fácil....
Título: Re:MODBUS no PIC
Enviado por: Blackmore em 27 de Maio de 2012, 14:20
Citar
Para usar com o EMC não precisa de microcontrolador nenhum

Segundo o manual do produto, o ModBus RTU é RS485 ... e eu não tenho disponível comigo nenhum conversor RS485 ... sem ele eu não consigo ligar o terminal RTU ao PC com USB ... ou ao microcontrolador conforme comentado no post anterior e que se trata do assunto do tópico (ModBUS no PIC).
No mais mestre, obrigado pelos esclarecimentos, vou ver o que posso aprender dentro de sua sugestão anterior, valeu!