Rotina Mestre X Escravo

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Rotina Mestre X Escravo

Mensagempor buiz » 12 Jan 2008 10:55

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.
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor MOR_AL » 12 Jan 2008 12:14

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
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor eletroinf » 12 Jan 2008 13:07

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.
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Mensagempor buiz » 12 Jan 2008 13:20

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.
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor Maurício » 12 Jan 2008 17:33

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
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor LeandroPIC » 12 Jan 2008 18:03

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........
Avatar do usuário
LeandroPIC
Byte
 
Mensagens: 163
Registrado em: 06 Jul 2007 12:19

Mensagempor zielpunkt » 12 Jan 2008 23:02

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.
"Talento é mais barato que sal. O que separa a pessoa talentosa da bem-sucedida é muito trabalho duro." [ Stephen King ]
zielpunkt
Byte
 
Mensagens: 376
Registrado em: 12 Out 2006 11:36
Localização: Sao Paulo - SP

Mensagempor buiz » 13 Jan 2008 17:52

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!!
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor buiz » 13 Jan 2008 17:56

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
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor buiz » 13 Jan 2008 17:59

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
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor eletroinf » 13 Jan 2008 20:21

Só agora me dei por conta, mas eu automaticamente eu inferi que estivesse falando de Modbus...
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Mensagempor zielpunkt » 13 Jan 2008 21:21

Esquenta não, buiz...é que eu ando meio sensível :cry:

Abço.
"Talento é mais barato que sal. O que separa a pessoa talentosa da bem-sucedida é muito trabalho duro." [ Stephen King ]
zielpunkt
Byte
 
Mensagens: 376
Registrado em: 12 Out 2006 11:36
Localização: Sao Paulo - SP

Mensagempor buiz » 14 Jan 2008 06:57

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.
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor fabim » 14 Jan 2008 07:10

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
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor buiz » 14 Jan 2008 08:14

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.
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x