Página 1 de 2
Rotina Mestre X Escravo

Enviado:
12 Jan 2008 10:55
por buiz
Olá,
Semana passada eu tinha duvida sobre comunicação RS485, mas ja esta solucionado graça a ajuda de alguns colegas aqui do forum.
Bom, o problema agora esta na comunicação mestre X escravo, ja tentei de varias maneiras, mas geralmente paralisa ou perde dados.
A questão é a seguinte, alguem tem experiencia com este tipo de comunicação em C no CCS?
Como o mestre deve chamar o escravo, para que depois ele responda sem que haja colisão, sem riscos de o mestre estar perguntando e o escravo responder antes do témino da pergunta, não sei se fui claro aqui.
Mas se alguem tiver alguma logica, e poder me dar uma luz eu agradeço!
No Help do CCS tem pouca coisa sobre este assunto, na net tambem não achei muita coisa que trate especificamente deste assunto.
Abraços, Buiz.

Enviado:
12 Jan 2008 12:14
por MOR_AL
Olá Buiz.
O que você quer saber é sobre o Protocolo de comunicação entre o mestre e o escravo.
Tem alguma coisa em comunicação one-wire no manual do DS18S20 (termômetro da Maxin).
Tem também alguma coisa em comunicação I2C no manual das memórias EEPROM 24CXX.
Espero ter ajudado.
[]s
MOR_AL

Enviado:
12 Jan 2008 13:07
por eletroinf
Buiz, quando o mestre envia o Telegrama, todos escravos receberão. Porém aí entra a questão do endereço; O telegrama do mestre é a pergunta e só irá responder o escravo que foi endereçado. Assim, tu pode ter meia dúzia de escravos. O mestre manda o pedido, todos conferem o endereço, só responde aquele cujo endereço confere com a solicitação. Eu já falei aqui no fórum, repito: Dentre as várias documentações, uma boa pedida é o manual dos inversores Weg, que explica de forma simples como é o básico dessa comunicação. Veja o manual dos CFW 08, se não me engano tem pra baixar no site da Weg.

Enviado:
12 Jan 2008 13:20
por buiz
Vou dar uma olhada aqui, pois tenho o Manual do CFW 08 aqui em casa.
é a meneira que o mestre se porta na rede e os escravos eu entedi, acho que eu estou me atrapalhando com os tempos de pergunta e resposta.
Vou continuar tentando aqui!
Obrigado por enquanto.

Enviado:
12 Jan 2008 17:33
por Maurício
Salve, buiz!
Um protocolo bom de ser estudado é o I2C, como ponto de partida.
Se a rede é half-duplex, vc precisa implementar um tempo depois que o escravo recebeu o último byte do mestre, pra dar tempo do mestre sair do modo de transmissão e entrar no modo de recepção, ou então usar 485 full-duplex.
Eu acho que o seu problema nessa linha é só de protocolo, mesmo.
[]'s

Enviado:
12 Jan 2008 18:03
por LeandroPIC
tem ans da microchip que poderão te ajudar, fiz uma rede rs485 e inplementei um protocolo que vi em um an, mas não lenbro mais qual era........

Enviado:
12 Jan 2008 23:02
por zielpunkt
Então,
Como eu fui o unico por aqui que respondeu a tua questão no teu primeiro post sobre este assunto (
http://www.asm51.eng.br/phpbb/viewtopic.php?t=4366&highlight=) onde, diga-se de passagem, vc nem se deu ao trabalho de dar um reply pra informar que se o que eu respondi foi ou não util pra vc, volto a repetir o que disse ali. A menos que tenha um sistema extremamente crítico de tempos, basta prover algum mísero retardo entre a requisição do mestre e a resposta de
um escravo. Agora, escravo que responde antes de terminar a solicitação do mestre? Processo esquisito, não? Lamento dizer que ainda não entendeu como se comportam os dispositivos na rede. E se trabalha com diversos escravos vai ter, é lógico, que endereçar o dispositivo desejado (ou não, caso o dado seja para todos os dispositivos).
É isso.

Enviado:
13 Jan 2008 17:52
por buiz
Olá,
Olha eu realmente nunca tinha trabalhado com dispositivos em rede, e por isso estou tendo um pouco de dificuldade, ja que o colega ZIELPUNKT ficou tao magoado por eu não ter posto uma réplica no post anterior, eu peço desculpas a ele, mas sou grato a todos que aqui me ajudaram, e que da mesma forma eu ajudo quando o assunto esta ao meu alcence. Bom mas o assunto não é este, e queria informar que estou quase conseguindo fazer funcionar a minha rede, e mais uma vez agradeço a todos!
Agora é só ajustar os tempos de comunicação, pois eu não tinha um intervalo entre pergunta e resposta, então tão logo o mestre perguntava o escravo ja respondia sem o mestre ter passado para o estado de recepção, acho que esta faltando uma confirmação de ja mandei, ja recebi e vou responder, coisa deste tipo, mas vou tentar solucionar.
Um abraço a todos e uma otima semana..
Desculpe!!

Enviado:
13 Jan 2008 17:56
por buiz
Mauricio e leandro,
Obrigado tambem pelas dicas, acho que é isso mesmo que esta acontecendo com a minha comunicação, mas com paciencia estou chegando lá.
Veleu..
Um Abraço

Enviado:
13 Jan 2008 17:59
por buiz
eletroinf e MOR_AL
As dicas de vcs foram super uteis, a do manual do CFW 08 nem se fala então, ja li e esclareceu bastante, muito obrigado!
Abraços Buiz

Enviado:
13 Jan 2008 20:21
por eletroinf
Só agora me dei por conta, mas eu automaticamente eu inferi que estivesse falando de Modbus...

Enviado:
13 Jan 2008 21:21
por zielpunkt
Esquenta não, buiz...é que eu ando meio sensível
Abço.

Enviado:
14 Jan 2008 06:57
por buiz
Olá a todos,
Como estou utilizando C para programar fiz um código proprio para testes, que esta funcionado mais ou menos.
void transmite (int dado) // para transmitir algum dado via RS485
{
output_high(habilita); // Habilita é o pino de RE/DE do MAX 485
delay_ms(10);
putc(dado); // envia o dado
delay_ms(10);
output_low(habilita);
}
void recebe () // para receber via RS 485
{
output_low(habilita); // Coloca o MAX 485 em recepção
delay_ms(10);
recebido=getc(); // recebe o dado
}
Alguem tem alguma sugestão melhor, algo que mande o endereço do escravo junto, tipo "transmite (endereço,dados)"?
E o (Kbhit()) seria util neste código?
Um abraço Buiz.

Enviado:
14 Jan 2008 07:10
por fabim
buiz.
qual a maxima quantidade de bytes. MASTER >> SLAVE
qual a maxima quantidade de bytes. SLAVE >> MASTER
especificando a quantidade de bytes de cada lado da gangorra, da pra montar um ant-colisão, seja por sw ou com um simples 555..
fabim

Enviado:
14 Jan 2008 08:14
por buiz
MESTRE CHAMA O ESCRAVO 1 VEZ;
O ESCRAVO RESPONDE;
MESTRE SE COLOCA NA POSIÇÃO PARA RECEBER OS DADOS;
ESCRAVO ENVIA 128 VARIAVEIS AO MESTRE.
CONCLUIDO O ENVIO, O MESTRE CHAMA UM PROXIMO ESCRAVO E O CICLO SE REPETE.