CAN BUS

¿Qué es el Can-Bus?

    Can-Bus es un protocolo de comunicación en serie desarrollado por Bosch para el intercambio de información entre unidades de control electrónicas del automóvil.

    Can significa Controller Area Network (Red de área de control) y Bus, en informática, se entiende como un elemento que permite transportar una gran cantidad de información.

    Este sistema permite compartir una gran cantidad de información entre las unidades de control abonadas al sistema, lo que provoca una reducción importante tanto del número de sensores utilizados como de la cantidad de cables que componen la instalación eléctrica. 

    De esta forma aumentan considerablemente las funciones presentes en los sistemas del automóvil donde se emplea el Can-Bus sin aumentar los costes, además de que estas funciones pueden estar repartidas entre dichas unidades de control.

 

¿Cuáles son las principales características del protocolo CAN?

 ·       La información que circula entre las unidades de mando a través de los dos cables (bus)  son paquetes de 0 y 1 (bit) con una longitud limitada y con una estructura definida de campos que conforman el mensaje.

 

·       Uno de esos campos actúa de identificador del tipo de dato que se transporta, de la unidad de mando que lo trasmite y de la prioridad para trasmitirlo respecto a otros.  El mensaje no va direccionado a ninguna unidad de mando en concreto, cada una de ellas reconocerá mediante este identificador si el mensaje le interesa o no.

 

·       Todas las unidades de mando pueden ser trasmisoras y receptoras, y  la cantidad de las mismas abonadas al sistema puede ser variable (dentro de unos límites).

 

·       Si la situación lo exige, una unidad de mando puede solicitar a otra una determinada información mediante uno de los campos del mensaje (trama remota o RDR).

 

·       Cualquier unidad de mando introduce un mensaje en el bus con la condición de que esté libre, si otra lo intenta al mismo tiempo el conflicto se resuelve por la prioridad del mensaje indicado por el identificador del mismo.

 

·       El sistema está dotado de una serie de mecanismos que aseguran que el mensaje es trasmitido y recepcionado correctamente. Cuando un mensaje presenta un error, es anulado y vuelto a trasmitir de forma correcta, de la misma forma una unidad de mando con problemas avisa a las demás mediante el propio mensaje, si la situación es irreversible, dicha unidad de mando queda fuera de servicio pero el sistema sigue funcionando.

 

¿Qué elementos componen el sistema Can-Bus?

 

Cables

    La información circula por dos cables trenzados que unen todas las unidades de control que forman el sistema. Esta información se trasmite por diferencia de tensión entre los dos cables, de forma que un valor alto de tensión representa un 1 y un valor bajo de tensión representa un 0. La combinación adecuada de unos y ceros conforman el mensaje a trasmitir.

    En un cable los valores de tensión oscilan entre 0V y 2.25V, por lo que se denomina cable L (Low) y en el otro, el cable H (High) lo hacen entre 2.75V. y  5V.  En caso de que se interrumpa la línea H o que se derive a masa, el sistema trabajará con la señal de Low con respecto a masa, en el caso de que se interrumpa la línea L, ocurrirá lo contrario. Esta situación permite que el sistema siga trabajando con uno de los cables cortados o comunicados a masa, incluso con ambos comunicados también sería posible el funcionamiento, quedando fuera de servicio solamente cuando ambos cables se cortan.

    Es importante tener en cuenta que el trenzado entre ambas líneas sirve para anular los campos magnéticos, por lo que no se debe modificar en ningún caso ni el paso ni la longitud de dichos cables.

Elemento de cierre o terminador

    Son resistencias conectadas a los extremos de los cables H y L. Sus valores  se obtienen de forma empírica y permiten adecuar el funcionamiento del sistema a diferentes longitudes de cables y número de unidades de control abonadas, ya que impiden fenómenos de reflexión que pueden perturbar el mensaje.

    Estas resistencias están alojadas en el interior de algunas de las unidades de control del sistema por cuestiones de economía y seguridad de funcionamiento

 

Controlador

    Es el elemento encargado de la comunicación entre  el microprocesador de la unidad de control y el trasmisor-receptor. Trabaja acondicionando la información que entra y sale entre ambos componentes.

    El controlador está situado en la unidad de control, por lo que existen tantos como unidades estén conectadas al sistema. Este elemento trabaja con niveles de tensión muy bajos y es el que determina la velocidad de trasmisión de los mensajes, que será mas o menos  elevada según el compromiso del sistema. Así, en la línea de Can-Bus del motor-frenos-cambio automático es de 500 K baudios, y en los sistema de confort de 62.5 K baudios. Este elemento también interviene en la necesaria sincronización entre  las diferentes unidades de mando para la correcta emisión y recepción de los mensajes.

 

Transmisor / Receptor

    El trasmisor-receptor es el elemento que tiene la misión de recibir y de trasmitir los datos,  además de acondicionar y preparar  la información para que pueda ser utilizada por los controladores.  Esta preparación consiste en situar los niveles de tensión de forma adecuada, amplificando la señal cuando la información se vuelca en la línea y reduciéndola cuando es recogida de la misma y suministrada al controlador.

    El trasmisor-receptor es básicamente un circuito integrado que está situado en cada una de las unidades de control abonadas al sistema, trabaja con intensidades próximas a 0.5 A y en ningún caso interviene modificando el contenido del mensaje. Funcionalmente está situado entre los cables que forman la línea Can-Bus y el controlador.

 

 

¿Como funciona el sistema Can-Bus?

    Las unidades de mando que se conectan al sistema Can-Bus son las que necesitan compartir información, pertenezcan o no a un mismo sistema. En automoción generalmente están conectadas a una línea las unidades de control del motor, del ABS y del cambio automático, y a otra línea (de menor velocidad) las unidades de control relacionadas con el sistema de confort.

    El sistema Can-Bus está orientado hacía el mensaje y no al destinatario.  La información en la línea es trasmitida en forma de mensajes estructurados en la que una parte del mismo es un identificador que indica la clase de dato que contiene. Todas las unidades de control reciben el mensaje, lo filtran y solo lo emplean las que necesitan dicho dato. Naturalmente, la totalidad de unidades de control abonadas al sistema son capaces tanto de introducir como de recoger mensajes de la línea. Cuando el bus está libre cualquier unidad conectada puede empezar a trasmitir un nuevo mensaje.

    En el caso de que una o varias unidades pretendan introducir un mensaje al mismo tiempo,  lo hará la que tenga una mayor prioridad. Esta prioridad viene indicada por el identificador.

    El proceso de trasmisión de datos se desarrolla siguiendo un ciclo de varias fases:

    Suministro de datos: Una unidad de mando recibe información de los sensores que tiene asociados (r.p.m. del motor, velocidad, temperatura del motor, puerta abierta, etc.)

    Su microprocesador pasa la información al controlador donde es gestionada y acondicionada para a su vez ser pasada al trasmisor-receptor donde se transforma en señales eléctricas.

    Trasmisión de datos: El controlador de dicha unidad transfiere los datos y su identificador junto con la petición de inicio de trasmisión, asumiendo la responsabilidad de que el mensaje sea correctamente trasmitido a todas las unidades de mando asociadas. Para trasmitir el mensaje ha tenido que encontrar el bus libre, y en caso de colisión con otra unidad de mando intentando trasmitir simultáneamente, tener una prioridad mayor. A partir del momento en que esto ocurre, el resto de unidades de mando se convierten en receptoras.

    Recepción del mensaje: Cuando la totalidad de  las unidades de mando reciben el mensaje, verifican el identificador para determinar si el mensaje va a ser utilizado por ellas. Las unidades de mando que necesiten los datos del mensaje lo procesan, si no lo necesitan, el mensaje es ignorado.

    El sistema Can-Bus dispone de mecanismos para detectar errores en la trasmisión de mensajes, de forma que todos los receptores realizan un chequeo del mensaje analizando una parte del mismo, llamado campo CRC. Otros mecanismos de control se aplican en las unidades emisoras que monitorizan el nivel del bus, la presencia de campos de formato fijo en el mensaje (verificación de la trama), análisis estadísticos por parte de las unidades de mando de sus propios fallos etc.

    Estas medidas hacen que las probabilidades de error en la emisión y recepción de mensajes sean muy bajas, por lo que es un sistema extraordinariamente seguro.

    El planteamiento del Can-Bus, como puede deducirse, permite disminuir notablemente el cableado en el automóvil, puesto que si una unidad de mando dispone de una información, como por ejemplo, la temperatura del motor, esta puede ser utilizada por el resto de unidades de mando sin que sea necesario que cada una de ellas reciba la información de dicho sensor.

    Otra ventaja obvia es que las funciones pueden ser repartidas entre distintas unidades de mando, y que incrementar las funciones de las mismas no presupone un coste adicional excesivo.

 

 

¿Como es el mensaje? 

    El mensaje es una sucesión de “0” y “1”, que como se explicaba al principio, están representados por diferentes niveles de tensión en los cables del Can-Bus y que se denominan “bit”.

    El mensaje tiene una serie de campos de diferente tamaño (número de bits) que permiten llevar a cabo el proceso de comunicación entre las unidades de mando según el protocolo definido por Bosch para el Can-Bus, que facilitan desde identificar a la unidad de mando, como indicar el principio y el final del mensaje, mostrar los datos, permitir distintos controles etc.

    Los mensajes son introducidos en la línea con una cadencia que oscila entre los 7 y los 20 milisegundos dependiendo de la velocidad del área y de la unidad de mando que los introduce.

    Ejemplo de cómo se escribe un mensaje:

Estructura del mensaje estándar:

    Campo de inicio del mensaje: El mensaje se inicia con un bit dominante, cuyo flanco descendente es utilizado por las unidades de mando para sincronizarse entre sí.

    Campo de arbitrio: Los 11 bit de este campo se emplean como identificador que permite reconocer a las unidades de mando la prioridad del mensaje. Cuanto más bajo sea el valor del identificador más alta es la prioridad, y por lo tanto determina el orden en que van a ser introducidos los mensajes en la línea.

    El bit RTR indica si el mensaje contiene datos (RTR=0) o si se trata de una trama remota sin datos (RTR=1). Una trama de datos siempre tiene una prioridad más alta que una trama remota.

    La trama remota se emplea para solicitar datos a otras unidades de mando o bien porque se necesitan o para realizar un chequeo.

    Campo de control:  Este campo informa sobre las características del campo de datos. El bit IDE indica cuando es un “0” que se trata de una trama estándar y cuando es un “1” que es una trama extendida. Los cuatro bit que componen el campo DLC indican el número de bytes contenido en el campo de datos.

    La diferencia entre una trama estandar y una trama extendida es que la primera tiene 11 bits y la segunda 29 bits. Ambas tramas pueden coexistir eventualmente, y la razón de su presencia es la existencia de dos versiones de CAN.

    Campo de datos: En este campo aparece la información del mensaje con los datos que la unidad de mando correspondiente introduce en la linea Can-Bus. Puede contener entre 0 y 8 bytes (de 0 a 64 bit).

    Campo de aseguramiento (CRC): Este campo tiene una longitud de 16 bit y es utilizado para la detección de errores por los 15 primeros, mientras el último siempre es un bit recesivo (1) que delimita el campo CRC.

    Campo de confirmación (ACK): El campo ACK esta compuesto por dos bit que son siempre trasmitidos como recesivos (1). Todas las unidades de mando que reciben el mismo CRC modifican el primer bit del campo ACK por uno dominante (0), de forma que la unidad de mando que está todavía trasmitiendo reconoce que al menos alguna unidad de mando ha recibido un mensaje escrito correctamente. De no ser así, la unidad de mando trasmisora interpreta que su mensaje presenta un error.

    Campo de final de mensaje (EOF): Este campo indica el final del mensaje con una cadena de 7 bits recesivos.

    Puede ocurrir que en determinados mensajes se produzcan largas cadenas de ceros o unos, y que esto provoque una pérdida de sincronización entre unidades de mando. El protocolo CAN resuelve esta situación insertando un bit de diferente polaridad cada cinco bits iguales: cada cinco “0” se inserta un “1” y viceversa. La unidad de mando que utiliza el mensaje, descarta un bit posterior a cinco bits iguales.  Estos bits reciben el nombre de bit stuffing.

Ejemplo de un mensaje real:

SOF

identificador

RTR

DE

DLC

DATO byte 1

DATO byte 2

CRC

ACK

FN

0

1100010000

0

000

0010

00010110

00000000

0

01

11111

¿Como se diagnóstica el Can-Bus?

    Los sistemas de seguridad que incorpora el Can-Bus permiten que las probabilidades de fallo en el proceso de comunicación sean muy bajas, pero sigue siendo posible que cables, contactos y las propias unidades de mando presenten alguna disfunción.

    Para el análisis de una avería, se debe tener presente que una unidad de mando averiada abonada al Can-Bus en ningún caso impide que el sistema trabaje con normalidad. Lógicamente no será posible llevar a cabo las funciones que implican el uso de información que proporciona la unidad averiada, pero sí todas las demás.

    Por ejemplo, si quedase fuera de servicio la unidad de mando de una puerta, no funcionaría el cierre eléctrico ni se podrían accionar el del resto de las puertas.

    En el supuesto que la avería se presentara en los cables del bus, sería posible accionar eléctricamente la cerradura de dicha puerta, pero no las demás. Recuérdese que esto solo ocurriría si los dos cables se cortan o se cortocircuitan a masa.

    También es posible localizar fallos en el Can-Bus consultando el sistema de auto diagnosis del vehículo, donde se podrá averiguar desde el estado de funcionamiento del sistema hasta las unidades de mando asociadas al mismo, pero necesariamente se ha de disponer del equipo de chequeo apropiado.

    Otra alternativa es emplear el programa informático CANAlyzer (Vector Informatik GmbH) con el ordenador con la conexión adecuada. Este programa permite visualizar el tráfico de datos en el Can-Bus, indica el contenido de los mensajes y realiza la estadística de mensajes, rendimiento y fallos.

    Probablemente, la herramienta más adecuada y asequible sea el osciloscopio digital con dos canales, memoria y un ancho de banda de 20 MHz. (FLUKE, MIAC etc.) con el que se pueden visualizar perfectamente los mensajes utilizando una base de tiempos de 100 microsegundos y una base de tensión de 5V. En este caso, se debe tener en cuenta que los bits stuff (el que se añade después de cinco bits iguales) deben ser eliminados.