El bus CAN (Controller Area Network) es un protocolo de comunicacin serial
internacionalmente estandarizado por ISO (11898, 11519), fue desarrollado inicialmente por BOSCH, una empresa alemana en 1986 como un medio de comunicacin entre los sistemas de control electrnico en un automvil, originalmente fue concebido con la finalidad de reducir los mltiples buses de datos existentes en los vehculos, disminuyendo el cableado y el peso del automvil, traduciendo lo anterior en ahorro de combustible. Hoy en da, CAN es ampliamente aceptado por su alto rendimiento y fiabilidad, se utiliza en la industria automotriz, buques marinos, equipos mdicos y aplicaciones industriales entre otras. Estndar CAN El protocolo de comunicacin CAN est basado en 3 capas del modelo de referencia OSI (Open Systems Inteconection): [a] Capa Fsica: Responsable de la transferencia de informacin entre los distintos nodos de la red, define las especificaciones elctricas del bus. Capa de Enlace de Datos: Es responsable del acceso al medio y el control lgico, se encarga de la gestin de mensajes, el arbitraje y la sincronizacin con el bus y el monitoreo de posibles errores. Capa de Aplicacin: Se compone de dispositivos de control lgico como Microcontroladores, procesadores digitales de seales, etc. Los cuales procesan la informacin entrante y saliente del bus.
Fig. b Arquitectura del Protocolo CAN
Estructura del Bus
Fig. ccc Estructura del Bus CAN La figura cccc muestra la estructura del bus CAN. La norma ISO-18898-2 no especifica un tipo de cable o conector en particular, sin embargo especifica que al final de cada cable se debe colocar una resistencia de 120 en paralelo tal como lo muestra la figura ccc. Cada nodo est compuesto por una unidad de control (Microcontrolador, Microprocesador, PC, etc.), un controlador CAN y un transceiver. De tal manera que es posible conectar mltiples nodos al bus. Los cables son denominados CAN high (CANH) y CAN low (CANL). [b] Un transceiver por su parte, adecua en hardware los niveles lgicos requeridos para el funcionamiento del bus. Existen 2 estados lgicos en el bus CAN de acuerdo a la figura ddd Dominante: Tensin diferencial CANH-CANL de 2v Recesivo: Tensin diferencial CANH-CANL de 0V.
Fig. ddd Estados y niveles lgicos en el bus CAN
El protocolo de comunicacin CAN puede ser configurado para diferentes tasas de transferencia de datos tal como lo indica la siguiente imagen: [c]
Fig. eee Tasa de Transferencia de Datos en Bus CAN
Estructura de las Tramas La comunicacin dentro del protocolo CAN se desempea mediante las siguientes tramas de informacin[d]: Trama de datos: Es utilizada por la unidad transmisora para enviar mensajes a la unidad receptora Trama de solicitud remota: Es empleada por la unidad receptora para solicitar la transmisin de un mensaje a una unidad transmisora Trama de Error: Notifica a otros nodos cuando un error es detectado Trama de sobrecarga: Es empleada por las unidades receptoras para notificar que el nodo an no se encuentra listo para recibir un mensaje Trama de interespacio: Se encarga de separar una trama (cualquier tipo) de la siguiente. A continuacin se explica de manera breva la estructura de la Trama de Datos y la Trama de solicitud Remota.
Trama de Datos La figura fff muestra la estructura de la trama de datos:
Fig. fff Trama de datos del Protocolo CAN
SOF (Start Of Frame): Indica el inicio de la trama (1 bit). Arbitration Field (Campo de Arbitraje): Indica la prioridad de la trama, mientras ms pequeo sea el valor, adquiere mayor prioridad (11 bits en CAN estndar y 29 bits en CAN extendido). Control Field (Campo de Control): Contiene bits reservados e indica el nmero de datos a transmitir que puede ser entre el rango de 0-8 bytes. (6 bits) Data Field (Campo de Datos): Contiene los datos enviados (0 a 8 bytes segn lo indique el campo de control). CRC Field (Campo CRC): Es empleado para verificar un error en la transmisin de la trama. (18 bits) ACK Field (Campo ACK): Indica que el mensaje ha sido recibido satisfactoriamente. EOF (Final de la Trama): Final de la trama o End Of Frame, indica el final de la trama de datos. (7 bits).
Trama de Solicitud Remota La trama de solicitud remota contiene los mismos campos que la trama de datos a excepcin del campo de datos. Figura ggg
Fig. ggg Trama de Solicitud Remota del Protocolo CAN Est trama es empleada cuando un nodo quiere obtener informacin de otro. La solicitud es enviada y el nodo que posee dicha informacin, enva un mensaje en respuesta.
Proceso de Transmisin y Recepcin en Bus CAN
Fig. jjj Proceso de Transmisin y Recepcin de un Mensaje va CAN Seleccin del Tipo de mensajes (Estndar o Extendido) Definir Identificador del nodo 0 (Prioridad) Definir Identificador de nodo destino Definir cantidad de datos a transmitir (0- 8 bytes) Cargar dato al buffer transmisor Mensaje Enviado? Fin No Configuracin de Baud rate Transmisin nodo 0 Seleccin del Tipo de mensajes (Estndar o Extendido) Definir Identificador del nodo 1 (Prioridad) Cargar dato al buffer transmisor I mensaje = I Filtro Destino correcto No Configuracin de Baud rate Recepcin nodo 1 Mensaje? No Definir Identificador del filtro de recepcin Desecha mensaje Cada nodo conectado al bus CAN debe tener configurada por software dentro del controlador la misma tasa de transferencia para evitar errores durante el envo de mensajes, a continuacin se explica brevemente cada bloque del proceso de Transmisin y recepcin: Transmisin 1. Seleccin del tipo de mensajes: El protocolo de comunicacin can puede ser configurado en dos modos, extendido y estndar. La diferencia radica en el nmero de bits para definir un nodo que contiene cada uno.
a. CAN Estndar: 11 bits,
posibles combinaciones para definir un nodo.
b. CAN Extendido: 29 bits,
posibles combinaciones para definir un nodo.
2. Definir el identificador del nodo: Se le asigna un valor para identificar al nodo, mientras ms prximo a cero sea ese valor, el nodo tendr mayor prioridad de transmisin.
3. Definir identificador del nodo destino: Se define el identificador del nodo al que se le va a enviar el mensaje.
4. Definir cantidad de datos a transmitir: 0 8 bytes de informacin.
5. Verificar envo de mensaje: El controlador verifica que el mensaje haya sido recibido.
Recepcin Los pasos 1 y 2 son exactamente iguales que en el proceso de transmisin 3. Definir identificador de Filtro de recepcin: El filtro de recepcin es un valor que se compara con el identificador de un mensaje transmitido, si el identificador del filtro y el identificador del mensaje son idnticos, el mensaje es aceptado.
4. Mensaje nuevo en el Bus?: Se espera hasta que exista un mensaje en el bus y de haberlo se carga en el buffer receptor.
5. Comparacin: Si el identificador del mensaje, coincide con el identificador del filtro, el mensaje es aceptado. En caso contrario el mensaje es desechado.
[a] Texas Instruments, Introduction to the Controller Area Network (CAN) Reporte de Aplicacin, Julio 2008. [b] Microchip Technology Inc, A CAN Physical Layer Discussion, Hoja de aplicacin, 2002. [c] Hurtado Chavez Jos Luis, Sistema de Iluminacin con Bus CAN, [d] Renesas Electronics Corporation, Introduction to CAN, Nota de aplicacin, Abril 2010.