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. Además ofrece una solución a la gestión de la comunicación entre múltiples CPUs (unidades centrales de proceso).
El protocolo de comunicaciones CAN proporciona los siguientes beneficios: Ofrece alta inmunidad a las interferencias, habilidad para el autodiagnóstico y la reparación de errores de datos. Es un protocolo de comunicaciones normalizado, con lo que se simplifica y economiza la tarea de comunicar subsistemas de diferentes fabricantes sobre una red común o bus. El procesador anfitrión (host) delega la carga de comunicaciones a un periférico inteligente, por lo tanto el procesador anfitrión dispone de mayor tiempo para ejecutar sus propias tareas. Al ser una red multiplexada, reduce considerablemente el cableado y elimina las conexiones punto a punto, excepto en los enganches.
Historia y evolución del protocolo CAN
El desarrollo del protocolo CAN comenzó en 1983 en la empresa Robert Bosch GmbH (comúnmente conocida como Bosch). El protocolo fue oficialmente lanzado en 1986 en el congreso de la Sociedad de Ingenieros Automotrices (SAE) en Detroit. Los primeros controladores CAN llegaron al mercado en 1987 de la mano de Intel y Philips.
Bosch publicó posteriormente varias versiones de la especificación CAN, siendo la última de ellas la especificación CAN 2.0, publicada en 1991. Esta especificación consta de dos partes; la parte A para el formato estándar y la parte B para el formato extendido. Un dispositivo CAN que usa el formato estándar utiliza identificadores de 11 bits y es comúnmente referido como dispositivo CAN 2.0A. Un dispositivo CAN que usa el formato extendido utiliza identificadores de 29 bits y es comúnmente referido como dispositivo CAN 2.0B. Los estándares CAN 2.0A/B y otros documentos de referencia relacionados con CAN son de acceso libre a través de Bosch.Bosch Semiconductor CAN Literature
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. Actualmente el bus CAN está estandarizado por las siguientes normas:
ISO 11898-1:2015, Part 1: Data link layer and physical signalling ISO 11898-2:2016, Part 2: High-speed medium access unit ISO 11898-3:2006. Part 3: Low-speed, fault-tolerant, medium-dependent interface. Este estándar ha sido revisado y confirmado en 2015 ISO 11898-4:2004, Part 4: Time-triggered communication. Este estándar ha sido revisado y confirmado en 2013 ISO 11898-5:2007, Part 5: High-speed medium access unit with low power mode ISO 11898-6:2013, Part 6: High-speed medium access unit with selective wake-up functionality ISO 16845:2016, Conformance test plan
En 2011 Bosch, en cooperación con los fabricantes de automóviles y otros expertos del bus CAN, comenzó a desarrollar la siguiente generación del CAN: el protocolo CAN FD (flexible data-rate). El CAN FD es compatible hacia atrás, es decir, un controlador CAN FD es capaz de comprender un mensaje CAN clásico (o CAN 2.0). Por el contrario, un controlador CAN clásico destruye un mensaje CAN FD emitiendo un mensaje de error. El nuevo CAN FD es capaz de transmitir datos más rápido que 1 Mbps (la velocidad máxima del CAN clásico). Ambos protocolos, el CAN clásico y el CAN FD, están estandarizados en la norma ISO/DIS 11898-1.
Principales características de CAN 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. CAN es un protocolo orientado a mensajes, es decir la información que se va a intercambiar se descompone en mensajes, a los cuales se les asigna un identificador y se encapsulan en tramas para su transmisión. Cada mensaje tiene un identificador único dentro de la red, con el cual los nodos deciden aceptar o no dicho mensaje. Dentro de sus principales características se encuentran:
Prioridad de mensajes. Garantía de tiempos de latencia. Flexibilidad en la configuración. Recepción por multidifusión (multicast) con sincronización de tiempos. Sistema robusto en cuanto a consistencia de datos. Sistema multimaestro. Detección y señalización de errores. Retransmisión automática de tramas erróneas Distinción entre errores temporales y fallos permanentes de los nodos de la red, y desconexión autónoma de nodos defectuosos.
CAN fue desarrollado inicialmente para aplicaciones en los automóviles y por lo tanto la plataforma del protocolo es resultado de las necesidades existentes en el área de la automoción. La Organización Internacional para la Estandarización (ISO, International Organization for Standardization) define dos tipos de redes CAN: una red de alta velocidad (hasta 1 Mbit/s), bajo el estándar ISO 11898-2, destinada para controlar el motor e interconectar las unidades de control electrónico (ECU); y una red de baja velocidad tolerante de fallos (menor o igual a 125 kbit/s), bajo el estándar ISO 11519-2/ISO 11898-3, dedicada a la comunicación de los dispositivos electrónicos internos de un automóvil como son control de puertas, techo corredizo, luces y asientos.
Tipos de bus CAN
La especificación de los buses CAN está recogida en el conjunto de estándares ISO 11898. Dicha especificación define las dos primeras capas, la capa física y la capa de enlace de datos, del modelo OSI de interconexión de sistemas. Sobre la base de dichos estándares, los buses CAN se pueden clasificar en dos tipos: CAN de alta velocidad (hasta 1 Mbit/s). CAN de baja velocidad tolerante de fallos (hasta 125 kbit/s).
CAN de alta velocidad
ISO 11898-2, también llamado CAN de alta velocidad, usa un único bus lineal terminado en cada extremo con sendas resistencias de 120 Ω. 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. Con esta configuración la velocidad del bus es de un máximo de 1 Mbit/s.
thumb|centro|700px|Bus CAN de alta velocidad. ISO 11898-2
Extensiones del CAN de alta velocidad
La Organización Internacional para la Normalización (ISO) ha definido unas extensiones opcionales de la capa física del bus CAN de alta velocidad (ISO 11898-2). Dichas extensiones están descritas en sus respectivos estándares y son útiles para sistemas con requisitos específicos. También definen la compatibilidad con ISO 11898-2.
ISO 11898-5 especifica la capa física con tasas de transmisión de hasta 1 Mbit/s para sistemas que requieren bajo consumo de energía cuando no hay comunicaciones activas en el bus de datos. ISO 11898-5 representa una extensión de ISO 11898-2 y aquellas implementaciones que cumplan cualquiera de estas dos normas, es decir, los nodos CAN de alta velocidad con y sin bajo consumo de energía, son interoperables entre sí y pueden coexistir en la misma red.
ISO 11898-6 es una extensión de ISO 11898-2 y de ISO 11898-5. Esta extensión especifica la capa física de un bus CAN de hasta 1 Mbit/s, proporcionando un método selectivo de activación de nodos (wake-up) usando tramas CAN configurables. Las implementaciones de ISO 11898-6, ISO 11898-2 e ISO 11898-5 son interoperables y se pueden usar en una misma red simultáneamente.
CAN de baja velocidad tolerante de fallos
ISO 11898-3, también llamado CAN de baja velocidad tolerante de fallos, puede utilizar un bus lineal, un bus en estrella o múltiples buses en estrella conectados por un bus lineal. El bus está terminado en cada nodo por una fracción de la resistencia de terminación total. La resistencia de terminación total debería ser un valor próximo a 100 Ω, pero no inferior a 100 Ω. Este estándar permite velocidades de hasta 125 kbit/s.
700px|miniaturadeimagen|centro|Bus CAN de baja velocidad tolerante de fallos. ISO 11898-3
CAN FD (flexible data-rate)
En 2011 Bosch comenzó a trabajar en una evolución del CAN. En 2012 lanzó CAN FD 1.0, que ofrece un aumento de la tasa de transferencia después del arbitraje. De momento (2015), solo se ha definido la capa de enlace de datos del CAN FD. 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 especificación está recogida en el borrador de norma ISO/DIS 11898-1:2015.
Capa física
Define los aspectos del medio físico para la transmisión de datos entre nodos de una red CAN, las características materiales y eléctricas y la transmisión del flujo de bits a través del bus.
Niveles de tensión del bus
miniaturadeimagen|Niveles de tensión del bus CAN La transmisión de señales en un bus CAN se lleva a cabo a través de dos cables trenzados. Las señales de estos cables se denominan CAN_H (CAN high) y CAN_L (CAN low) respectivamente. El bus tiene dos estados definidos: estado dominante y estado recesivo. En estado recesivo, los dos cables del bus se encuentran al mismo nivel de tensión (common-mode voltage), mientras que en estado dominante hay una diferencia de tensión entre CAN_H y CAN_L de al menos 1,5 V. La transmisión de señales en forma de tensión diferencial, en comparación con la transmisión en forma de tensiones absolutas, proporciona protección frente a interferencias electromagnéticas.
La tensión en modo común puede estar, según la especificación, en cualquier punto entre -2 y 7 V. La tensión diferencial del bus (la diferencia entre CAN_H y CAN_L) en modo dominante debe estar entre 1,5 y 3 V. No se especifica, en cambio, que la tensión de modo común, cuando el bus está en modo recesivo, deba estar comprendida entre la tensión de CAN_L y la tensión de CAN_H cuando el bus está en modo dominante. 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.
Cable y conectores miniaturadeimagen|Conector D-sub de 9 pines (DE-9) Los distintos nodos de un bus CAN deben estar interconectados mediante un par de cables trenzados con una impedancia característica de 120 Ω, y puede ser cable apantallado o sin apantallar. 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.
El estándar CAN, a diferencia de otros estándares como el USB, no especifica ningún tipo de conector para el bus y por lo tanto cada aplicación puede tener un conector distinto. Sin embargo, hay varios formatos comúnmente aceptados como el conector D-sub de 9 pines, con la señal CAN_L en el pin 2 y la señal CAN_H en el pin 7.
Las propiedades de la línea de transmisión limitan el ancho de banda de los datos. Orientativamente, se aceptan los siguientes valores como límite de longitud del bus en función de la tasa de transferencia: Longitud del bus(m) Tasa de transferencia(kbit/s) 40 1000 100 500 200 250 500 100 1000 50
Sincronización de bits
Todos los nodos de un bus CAN deben trabajar con la misma tasa de transferencia nominal. Dado que el bus CAN no usa una señal de reloj separada, factores como la deriva de reloj y la tolerancia de los osciladores causan que haya una diferencia entre la tasa de transferencia real de los distintos nodos. Por ello es necesario un método de sincronización entre los nodos. 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.