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
-
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.
-
Gean,
Eu também não implementei nada ainda, mas gostaria de tentar. O quê precisamos para iniciar algum estudo sobre o assunto?
-
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.
-
bom ... pensei que vc queria desenvolver alguma biblioteca ... blz então.
desculpe o atrapalho.
Abraço!
-
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.
-
Gean,
Já programei rotinas para Modbus-RTU, o que você espera fazer? Se comunicar com o EMC2?
-
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.
-
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.
-
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, ...
-
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.
-
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
-
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.
-
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.
-
Já implementei MODBUS-RTU em PIC com MikroBasic. Neste projeto funcionava como Slave. Se puder ajudar é só falar.
João Henrique
-
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.
-
geancoelho
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?
-
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.
-
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.
-
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 é?
-
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.
-
eu só acho as bibliotecas do CCS um pouco chatas ... mas todas que testei funfaram ... blz então . to por aqui ..
-
Estou sim!!
Estrada da ilha numero 50.
Voce esta em Joinville??
-
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 ...
-
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.
-
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.
-
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.
-
O professor poderia me mostrar um exemplo deste PIPE??
-
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);
}
}
-
Falta mostrar ainda como redirecionar o pipe e mapear as variáveis recebidas dentro do EMC2, mas isso é fácil tb...
-
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#)
-
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!
-
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....
-
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!