Protocolo CAN Desarrollado por la compañía Robert Bosch en 1986, se trata de un protocolo de comunicación ampliamente usado en entornos y sistemas con requisitos de tiempo real, surgido por la necesidad de conectar muchos dispositivos electrónicos en el interior de los coches. Es muy utilizado en el sector de la automoción o la aeronáutica, por la fiabilidad en las comunicaciones para el funcionamiento de los sistemas, empleando un único bus de comunicaciones, compartido por todos los dispositivos, evitando la necesidad de establecer una conexión punto a punto con cada uno de ellos.
Ilustración 1: Evolución de las conexiones en los dispositivos electrónicos
Ventajas del protocolo CAN El potencia de CAN no se enfoca en velocidad o distancia, si no en las garantías de comunicación para sistemas con características de tiempo real o de alta integridad. Posee herramientas para la detección de errores en la transmisión, así como la capacidad de retransmisión automática de las tramas erróneas. Capacidad de discernir entre errores puntuales en la transmisión, o errores producidos por el fallo de un nodo, teniendo la capacidad de desconectarlo para evitar que el error sature la red. Priorización de mensajes y garantía en los tiempos de latencia en la entrega de los mismos, brindando fiabilidad en el ámbito de los sistemas de tiempo real. Garantías en la consistencia de los datos. Flexibilidad en la configuración de la red, tanto en número de nodos, como en la disposición de los mismos, pudiendo añadirse o quitarse nodos de forma dinámica sin afectar al protocolo. Pueden conectarse hasta 110 nodos a una red CAN Componentes del protocolo CAN Formado por 2 elementos principales: Controlador y transmisor Controlador: Gestiona el montaje de las tramas CAN, la comprobación de errores en la transmisión, o en otros nodos, así como de la detección de colisiones. Transmisor / Receptor: Conocido como “Transceptor”, es un módulo encargado de la codificación y decodificación de los mensajes en el bus, sincronización, control de los niveles de la señal o del control de acceso al medio.
El controlador de CAN, así como el transceptor, son módulos independientes de los nodos, lo que permite que éstos no tengan que destinar recursos en la gestión de las comunicaciones, acceso al medio o colisiones entre otros. A pesar de que algunos microcontroladores poseen módulos CAN en un único encapsulado, internamente son circuitos independientes en la mayoría de los casos Cualquier dispositivo conectado al bus puede mandar mensajes, y todos los nodos conectados recibirán ese mensaje, pero solo reaccionan las unidas a las que están enviadas dichos mensajes. Para discriminar los tipos de mensajes, éstos llevan un identificador asociado. De este modo, cada nodo puede procesar los mensajes que le interesen o por el contrario, descartarlos. La comunicación además es bidireccional. Parámetros de transmisión
Capa física del protocolo Posee una topología en forma de bus, en la que únicamente son necesarios dos cables trenzados y con una impedancia de 120 Ω, para interconectar todos los dispositivos en una misma red. Las señales de estos cables se denominan CAN H (CAN high) y CAN L (CAN low), y dependiendo del voltaje de las mismas, el bus puede encontrarse en modo recesivo, con ambos cables con el mismo nivel de tensión, o en modo dominante, con una diferencia de tensión entre los cables de al menos 1,5V. Este modo de comunicación tiene como objetivo proporcionar una mayor protección frente a interferencias electromagnéticas. Esta protección viene dada, debido a que la lectura de los bits se basa en la diferencia de voltaje entre los dos cables trenzados, por lo que en caso de verse sometidas a la misma influencia electromagnética, a pesar de la variación señal en los cables, la diferencia de voltaje entre ellos se mantiene constante.
Ilustración 2: Niveles de tensión del bus CAN
Control de acceso al medio El protocolo CAN tiene otra característica denominada arbitraje, mediante la cual se controla el acceso al medio por parte de los nodos y se evitan posibles colisiones en las comunicaciones. Esta característica forma parte del control de acceso al medio implementado por el protocolo CAN, CSMA/CD+CR (Carrier Sense, Multiple Access/Collision Detection + Collision Resolution o Acceso Múltiple con detección de portadora, detección de colisión más Resolución de colisión) En el bus, los bits dominantes equivalen al nivel lógico "0", y los bits recesivos al valor lógico "1". Al inicio de las tramas enviadas por los nodos, se encuentra un campo dedicado específicamente al arbitraje, que coincide con el identificador propio del nodo. Antes de transmitir, los nodos deben vigilar el bus durante un período en el que no puede haber actividad en él, tras ésto, y cuando dos nodos tratan de transmitir de forma simultánea, los bits dominantes prevalecen sobre los bits recesivos, por lo que el nodo que trata de transmitir la trama con bits dominantes (numero de identificación menor) es capaz de detectar la colisión con los bits recesivos (numero de identificación mayor). Para que la detección de colisiones sea eficaz, los nodos deben tener una correcta sincronización, manteniendo las frecuencias de reloj de los controladores CAN dentro de los valores tolerados[4]. El nodo que detecta la colisión, deja de transmitir inmediatamente y espera hasta finalizar la comunicación del otro nodo para intentarlo de nuevo.