¿Qué es el CANbus? Te lo explicamos.

- Hace 9 meses

Desde que se empezó a usar elementos electrónicos en los coches, hemos tenido la necesidad de transmitir datos entre las diferentes unidades de control. En 1986 la empresa alemana Bosch presentó al mundo su nuevo sistema de transmisión de datos mediante los buses CAN, por sus siglas Controller Area Network.

Hasta esa fecha los fabricantes conectaban los diferentes elementos electrónicos entre sí (ver imagen más abajo). Lo que al final daba lugar a tener kilómetros de cables y el coste del vehículo se encarecía. Había otros problemas como el de que hacer si un cable se rompe y se tiene que sustituir, la identificación del mismo y su substitución era una tarea casi imposible.

Nodos conectados en una red "Fully connected"
Nodos conectados en una red «Fully connected»

Para que os hagáis una idea, hoy en día un vehiculo dispone de unas 80 ECU’s si todas ellas tienen que estar conectadas entre sí (suponiendo que estén todas separadas por un metro de distancia) necesitaríamos unos 3160 metros de cable (suponiendo que solo necesitásemos un cable para unirlas). La realidad es que necesitaríamos alrededor de 5 o 6 cables por cada una de ellas, así que al final nos da un total de 19 Km de cable. Totalmente inviable.

Ejemplo de algunas ECU's de un vehículo moderno
Ejemplo de algunas ECU’s de un vehículo moderno

El bus CAN

Cómo ya os hemos comentado en el primer párrafo, dada la necesidad de transmitir datos de una manera fiable, sencilla y con un coste el más bajo posible se diseñó este sistema. El bus can se compone de dos cables que permiten conectar en paralelo tantos elementos como queramos (ver imagen más abajo).

Esquemático del bus CAN
Esquemático del bus CAN

Debido a los requerimientos actuales tenemos dos tipos de buses CAN, el primero es el bus can de alta velocidad para aquellos elementos que necesitan de una comunicación muy rápida cómo los sistemas ADAS, la transmisión o el motor. Y el segundo es el bus CAN de baja velocidad para el aire acondicionado, la radio…

El bus can en cualquier caso tiene dos cables, el CAN_L o CAN low y el CAN_H o CAN high. El bus tiene dos estados, el dominante y el recesivo.

  • El estado recesivo es el estado que ambos voltajes están en el common mode voltage.
  • El estado dominante es el estado en el que existe una diferencia de voltaje entre ellos.
Ejemplo de CAN_L y CAN_H
Ejemplo de CAN_L y CAN_H

El estándar CAN no especifica ningún conector, sin embargo comúnmente se usa el 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

Connector d-sub
Connector d-sub

Transmisión de datos

Según las especificaciones del bus, un bit dominante equivale al valor lógico 0 y un bit recesivo equivale al valor lógico 1. Cuando el bus no envía datos se dice que está en modo inactivo y este modo equivale a estar en estado recesivo.

Cuando dos nodos intentan mandar datos al mismo tiempo se considera que hay una colisión. En ese caso, el nodo que iba a mandar un bit recesivo se para y queda en modo inactivo escuchando el otro nodo. Esto se le llama arbitraje.

El arbitraje se produce durante los primeros bits de la trama. Al final del proceso de arbitraje solo debe quedar un nodo transmitiendo y los demas escuchando.

Trama del bus can
Trama del bus can
Nombre del campoLongitud (bits)Finalidad
Inicio de trama1Demarca el comienzo de una transmisión.
Identificador – ID (verde)11Un identificador (único) que también representa la prioridad de la trama.
Petición de transmisión remota – RTR (cian)1Dominante (0) para tramas de datos y recesivo (1) para tramas de peticiones remotas.
Bit de extensión de identificador – IDE1Dominante (0) para el formato base (identificador de 11 bits).
Bit reservado (r0)1Bit reservado. Debe ser dominante (0), pero aceptado tanto dominante como recesivo.
Código de longitud de datos – DLC (amarillo)4Número de bytes de datos en el mensaje, entre 0 y 8. Si este campo es mayor que 8 el mensaje será de 8 bytes como máximo de cualquier modo.
Campo de datos (rojo)0–64
(0-8 bytes)
Datos de la trama (la longitud del campo viene dada por el código de longitud de datos o DLC).
CRC15Verificación por redundancia cíclica. Código que verifica que los datos fueron transmitidos correctamente.
Delimitador CRC1Debe ser recesivo (1).
Hueco de acuse de recibo – ACK1El transmisor emite recesivo (1) y cualquier receptor emite dominante (0).
Delimitador ACK1Debe ser recesivo (1).
Fin de trama EOF7Debe ser recesivo (1).
Trama bus CAN

El bus CAN y ADAS

Ya os podéis imaginar que el bus CAN y su sucesor que veremos en la próxima entrega, el FlexRay, son elementos básicos y necesarios para poder tener los sistemas ADAS e ir avanzando hacia un futuro coche conectado.

Si no tuviésemos esta capacidad de transmisión de datos a semejante velocidad y de manera tan simplificada, hasta las tareas más simples como dar la orden de activar el AEB por parte de la ECU ADAS se volvería una misión ardua y compleja que haría retrasar o incluso desaparecer estos sistemas.

En la siguiente entrega veremos como funciona el FlexRay y porque es el sucesor del sistema CAN, hasta entonces espero que hayan disfrutado de este post.