PROTOCOLO CAN
PROTOCOLO CAN
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.
HISTORIA
CAN (Controller Area Network, por sus siglas en inglés) fue desarrollado por Bosch en
1985 para redes en vehículos. Previo a eso, los fabricantes automotrices conectaban
dispositivos electrónicos en los vehículos utilizando sistemas de cableado de punto a
punto. Sin embargo, conforme los fabricantes comenzaron a utilizar más y más
dispositivos electrónicos en los vehículos:
Al reemplazar el cableado por redes de
comunicación en los vehículos, se logró reducir
el costo del cable, su complejidad y su peso.
CAN, un sistema de bus serial de alta integridad destinado para comunicar dispositivos
inteligentes, se convirtió en la red estándar para vehículos.
La industria automotriz adoptó rápidamente CAN y, en 1993, se convirtió en el estándar
internacional conocido como ISO 11898
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.
TIPOS DE BUS CAN
La especificación de los buses CAN esta 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 , los buses CAN se pueden clasificar en dos
tipos:
CAN de alta velocidad (hasta 1 Mbit/s).
CAN de baja velocidad tolerante a 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.
CAN DE BAJA VELOCIDAD TOLERANTE A FALLOS
ISO 11898-3, también llamado CAN de baja velocidad tolerante a 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.
CAN DE BAJA VELOCIDAD TOLERANTE A FALLOS
CAPA FÍSICA
Niveles de tensión del bus
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.
CAPA DE ENLACE DE DATOS
Acceso al medio (arbitraje)
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
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.
TIPOS DE TRAMA
• Trama de datos (data frame)
Tramas utilizadas para el paso de información entre nodos, que puede ser enviada y
recibida por uno o varios de ellos.
• Trama remota (remote frame)
Tramas utilizadas para solicitar el envío de información a otro nodo.
• Trama de error (error frame)
Tramas utilizadas cuando algún nodo de la red detecta un error en alguno de los
mensajes transmitidos por otros nodos
Trama de sobrecarga (overload frame)
Es enviada por un nodo cuando éste está sobrecargado, lo que provoca que el bus
incluya un retardo extra entre tramas.
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.
CÓMO UTILIZAR EL PROTOCOLO CAN EN ARDUINO
Como Arduino no contiene ningún puerto CAN incorporado, se utiliza un
módulo CAN llamado MCP2515. Este módulo CAN está interconectado
con Arduino mediante la comunicación SPI.
Así como el ambiente de desarrollo de Arduino no
cuenta con las librerias preinstaladas para
utilizarlo se necesita descargar la siguiente librería
“ACAN 2515”
DEMOSTRACIÓN
En esta demostración veremos cómo enviar datos de humedad y
temperatura a través del módulo de bus CAN MCP2515.
Componentes requeridos
Arduino UNO x2
Sensor de temperatura y humedad DHT11
Pantalla LCD de 16x2
MCP2515 Módulo CAN x 2
Potenciómetro 10k
Protoboard
Conexión de cables
CÓDIGO DEL TRANSMISOR CAN
CÓDIGO DEL RECEPTOR CAN