Bus CAN

CAN (siglas del inglés Controller Area Network) es un protocolo de comunicaciones desarrollado por la firma alemana Robert Bosch GmbH, basado en una topología bus para la transmisión de mensajes en entornos distribuidos.El protocolo de comunicaciones CAN proporciona los siguientes beneficios: El desarrollo del protocolo CAN comenzó en 1983 en la empresa Robert Bosch GmbH (comúnmente conocida como Bosch).[2]​ En 1993 se publicó el estándar ISO 11898 del bus CAN y ha sido a partir de ese momento un estándar de la Organización Internacional para la Normalización.[3]​[4]​ CAN se basa en el modelo productor/consumidor, el cual es un concepto, o paradigma de comunicaciones de datos, que describe una relación entre un productor y uno o más consumidores.Es importante que el valor de las resistencias de terminación coincida con la impedancia característica del bus, definida en 120 Ω, para evitar reflexiones en la línea que podrían perturbar la comunicación.Dichas extensiones están descritas en sus respectivos estándares y son útiles para sistemas con requisitos específicos.La frecuencia se puede multiplicar hasta por 8 y el número máximo de bytes por trama aumenta, siendo posible transmitir una mayor cantidad de datos en el mismo tiempo.La tensión en modo común puede estar, según la especificación, en cualquier punto entre -2 y 7 V.Esto permite la conexión directa entre nodos que operen a distintas tensiones, e incluso nodos que sufran diferencia de tensión entre sus respectivas tierras.El cable trenzado proporciona protección frente a interferencias electromagnéticas externas.Y si, además, está apantallado, la protección será mayor pero a cambio de un incremento en el coste del cable.La sincronización es especialmente importante en la fase de arbitraje ya que durante el arbitraje cada nodo debe ser capaz de observar tanto los datos transmitidos por él como los datos transmitidos por los demás nodos.Esto incluye que todos los nodos muestreen el valor correcto de cada bit.El protocolo CAN proporciona un acceso multimaestro al bus con una resolución determinista de las colisiones.La especificación del CAN usa los términos “dominante” y “recesivo” para referirse a los bits, donde un bit dominante equivale al valor lógico 0 y un bit recesivo equivale al valor lógico 1.Cuando dos nodos intentan transmitir bits diferentes se denomina colisión y el valor del bit dominante prevalece sobre el valor del bit recesivo.El arbitraje se produce durante los primeros bits de una trama o mensaje, durante la transmisión de lo que se conoce como identificador del mensaje.Conociendo los identificadores de todos las tramas que intentan ser transmitidas, se puede establecer de manera determinista el orden en el que son transmitidas.El nodo que requiere la información envía entonces una trama con una petición de transmisión remota (RTR = 1; recesivo).Es transmitida por un nodo que se encuentra muy ocupado y el bus proporciona entonces un retardo extra entre tramas.Las tramas de datos y remotas están separadas por al menos tres bits recesivos (1).
Bus CAN de alta velocidad. ISO 11898-2
Bus CAN de baja velocidad tolerante de fallos. ISO 11898-3
Niveles de tensión del bus CAN
Conector D-sub de 9 pines (DE-9)
Ejemplo de cuantificación de un bit CAN con 10 cuantos de tiempo por bit
Trama CAN en formato base con las tensiones eléctricas del bus y sin bits de relleno
Trama CAN antes y después de la adición de bits de relleno (en morado)