Un poco de filosofía barata sobre el RS485:
Independiente de protocolos hardware y/o software de control de flujo del RS485 mas complejos voy a hablar del sistema mas simple de implementación de comunicaciones RS485.
La idea fundamental que quiero transmitir es la siguiente: Todos los dispositivos colgados en paralelo de las dos líneas de un RS485
pueden hablar al mismo tiempo, pero no
deben hablar al mismo tiempo, por que en este caso nadie oirá nada de nada.
Una de las soluciones posibles, la mas simple, es que uno de ellos habla siempre primero, es el
MASTER, y todos los demás sólo responden, son los
SLAVES.
Escenifiquemos una situación imaginando que tenemos un PIC al que llamamos
MASTER y otro PIC al que llamamos
SLAVE.
Una posible conversación entre ellos podría ser:
MASTER : "Hola SLAVE"
SLAVE : "Hola MASTER".
Simple y sencillo como juego de chiquillo.
Pero compliquemos un poco el asunto, añadiendo a nuestra Red RS485 un segundo PIC también llamado
SLAVENuestra conversación anterior sería:
MASTER : "Hola SLAVE"
SLAVE : "Hola MASTER".
SLAVE : "Hola MASTER".
Puafffff, el PIC
MASTER habla y los dos PIC's
SLAVE lo oyen y le contestan al mismo tiempo. Choque, Crash, Overrun, simultaneidad de tiempo y espacio, el resultado no puede ser mas horrible: nadie escucha nada.
La solución no puede ser mas sencilla: Implementamos lo que conocemos como sistema de
POLLING (sondeo, muestreo, pregunta) para ello nombramos de forma distinta a cada SLAVE. Uno de ellos será
SLAVE1 y el otro responderá a
SLAVE2.
De forma que nuestra conversación será ahora:
MASTER : "Hola SLAVE1"
SLAVE1 : "Hola MASTER".
MASTER : "Hola SLAVE2"
SLAVE1 : "Hola MASTER".
Sólo uno de ellos habla cada vez, primero el
MASTER le pregunta al
SLAVE1, sólo éste le contesta, después el
MASTER le pregunta al
SLAVE2 y es entonces este cuando le contesta también. El
MASTER está haciendo
POLLING y los
SLAVES contestan cuando se reconocen en el mensaje del MASTER.
En una forma mas académica: Cada PIC SLAVE guarda un parámetro de configuración del estilo "
001", "
002", "
00x". El PIC
MASTER emite un mensaje del estilo "
P001:?", todos los
SLAVES reciben el mismo mensaje pero sólo el PIC numerado como "
001" responderá algo así como "
R001:ABCDEFG"
Fijaos como un "
P001:?" significaría algo así como "
Pregunta para el 001 : ¿Tú quien eres?" y el "
R001:ABCDEFG" debería entenderse como "
Respuesta de 001 : Yo soy ABCDEFG"
Con esto te aseguras unas comunicaciones simples y fiables.
Un saludo.