por fabim » 15 Jan 2008 10:00
ou.... Gisculpa... passoulico batido..
Buiz, siguinte..
Em uma rede que existem equipamentos paralelos seja, 485,422,can etc..
O mais importante do protocolo é o pacotinho de start..
Exemplo, o PC manda apenas 1 byte que é o endereço de 0 a 64 slaves..
>>>>64D e depois fica pra receber esperando este mesmo numero
o slave manda 64D <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
o master sabe que o fein tá na fita
aí o master manda "para exemplificar" estes caracteres.
'64_eu_quero_dados'
o slave pega e identifica estes bytes dentro dele pra ver se bateu o primeiro byte "se esta falando com ele" e os subsequentes, pra saber se o cabeça da historia quer os 128 bytes..
Mais aí entra o tale do start, no meio destes 128bytes se forem valores de 0 a 255, pode acontecer de em uma parte dele que o slave 64 esta mandando pro cabeção, um outro slave enxerga uma sequencia pedindo dados pra ele, pronto aí f****..
O segundo slave vai mandar dados, juntamente com o que ja estava mandando.!!
Resumindo de uma forma simples..uma solução pratica e inteiramente funcional..
Pegue como base um filtro >>>http://www.asciitable.com/<<<
Funciona basicamente usando codigos de 1 a 31..
estes codigos independentemente de comprimento serão utilizados para inico de dados, fim de dados etc
.Ponto.
Ao invés de eu enviar por exemplo valores analogicos de 0 a 255 para o cabeção, eu envio ja
tratado.
Neste array de resposta de 128 bytes em questão seja lá o que estiver dentro dele, por exemplo
podera usar caracteres epenas 48 a 57, 65 a 90, 97 a 122, os outros caracteres voce utiliza
para comandos endereçamentos etc..
Exempro do preto véio..
MASTER MANDA COMANDO.{
start of reading, start of text, endereço do módulo, end of text, end of transmission.
são 5 bytes de controle, para ping.}
Slave devolve pedido.{
start of reading, start of text, endereço do módulo, end of text, end of transmission.
são 5 bytes de controle, para ping.
(todos os slaves vão receber os 5 bytes, e todos vão comparar todos os bytes para saber se a informação chegou
corretamente, feito isto os slaves vão comparar o byte 3 com o seu endereço fisico, o slave cuja
endereço fisico bater retorna estes bytes..!ponto.
OBS: para comando e pedido de informação crie um delay por exemplo de 500mS, se vier dados antes de estourar
os 500mS intão é continuação, se estourar é apenas aquela quantidade de bytes.
EX.start of reading, start of text, 35D , end of text, end of transmission.500mS...estourou.
Aí o pic ..
quantos bytes chegaram ?
5
Case 5 of
5 : Ping.
trata ping
etc.
agora master pede informação para slave.."128bytes"
"start of reading, start of text, endereço do módulo, end of text,start of text,'IND' , end of text,end of transmission."500mS
10 bytes. sendo 6,7,8 "I N D", I ned data.
mesma coisa a cima.!!!
o PIC devolve.
"start of reading, start of text, endereço do módulo, end of text,start of text,128 bytes , end of text,end of transmission."500mS
etc etc etc..
Com isso não tem como haver erro de colisão.
nossa doeu a cabeça.
abraços
Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!