Se inventa en los años 80 en la industria del automovil.
Objetivos de diseño:
- Disminuir cableado.
- Fiabilidad
- Seguridad
Es un estructura de RED basada en un bus serie, optimizada para tasas binarias “bajas/medias” con fiabilidad, robustez y seguridad.
Dos versiones:
- Standard ISO11519.
- Baja tasa binaria (125kbps).
- Bus hasta 1000m en cable UTP (Unshielded Twisted Pair)
- Standard ISO11898.
- Alta tasa binaria (1Mbps).
- Bus hasta 40m en cable UTP/STP
Perteneciente a la capa 1 y 2 de OSI (Fisico y enlace de datos).
Características:
- Protocolo MAC:CSMA/CD (Carrier-sense multiple Access with Collision Detection)
- CD no destructivo
- Multimaster (En cada transacción hay un único Master, que es el que gana el arbitrio)
- Mensajes priorizados. El nodo que emite el mensaje de mayor prioridad será el Master de la transacción
- Recepción “multicast” (todos o ninguno)
- Consistencia de los datos en el sistema
- Detección y señalización del error
- Retransmisión automática de mensajes corruptos
- Diferencia entre errores temporales y fallos de nodo
- Los nodos con fallos se desconectan del bus (“liberan” ancho de banda)
- Tiempos de latencia garantizados
- Flexibilidad (Se pueden añadir/quitar nodos con la alimentación ON; ‘hot plugin’)
- Resincronización de reloj
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 estado inactivo del bus es el estado recesivo (valor lógico 1). 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.
Tramas
Existen cuatro tipos de trama:
- Trama de Datos:
- SOF (Start of Frame), 1 bit dominante.
- Identificador (11-29 bits) Arbitrio
- Control (6 bits) – DLC (6 bits/4 bits longitud)
- Datos (<8 bytes)
- CRC (15 bits)
- ACK (2 bits)
- EOF (8 bits recesivos)
- Trama de Petición de Transmisión Remota (RTR)
- Trama de Sobrecarga (overload)
- Trama de Error
Relleno: No puede haber más de 5 bits seguido iguales en los campos posteriores al identificador
Identificador
En la trama estándar es de 11 bits (Spec. <2.0a). Para la extendida es de 29 bits (Spec. >2.0b)
Se usa para el arbitrio y no se detectan errores en él. Se envía el MSB primero y no pueden ser recesitos los 7 bits más significativos.
Al final del campo hay 1 bit (RTR) que indican el tipo de trama:
- En trama de datos el bit de RTR es dominante.
- En trama RTR (Remote Transmission Request) el bit de RTR es recesivo.
Arbitrario en Identificador
Protocolo C SM A/MD : el campo de id y RT R se emplean para el arbitrio del bus.
- Monitoriza el bus antes y durante el envío
- CD bit a bit: se envía bit recesivo(1) y detecta bit dominante(0) => deja de transmitir.
- Arbitrio bit a bit no destructivo (Wired AND) en Identificador
- Prioridad: Mensaje de menor identificador tiene mayor prioridad.
Control
Indica la longitud en bytes del campo de datos.
- r = recesivo
- d = dominante
- No se permite cualquier combinación de valores.
Trama RTR
- Similar a la trama de Datos
- No hay campo de DATOS
- RT R es recesivo
- DLC puede valer de 0 a 8
Trama Overload
- Emitidas ( máx 2) para indicar que se necesitará más tiempo para procesar el mensaje anterior.
- La trama se obtiene por la superposición de Flags de Overload
- Se transmiten sin respetar la espera intertramas para forzar la detección de sobrecarga.
- 6 bits dominantes (campo + flags) + 8 bits recesivos (delimitador de trama)
Trama de Error
- Se señaliza el error violando la regla de relleno (se emiten más de 5 bits iguales seguidos (dominantes en caso de que el nodo esté en modo ‘Error-Activo’, o recesivos en caso de que el nodo esté en modo ‘Error-Pasivo’.
- La trama se obtiene por la superposición de Flags de Error de los nodos de la red
- Comportamiento ante el error: Puede haber nodos Error-Activos, Error-Pasivos o Nodos Off.
Los nodos mantienen dos contadores TEC (Transmit Error Counter) y REC (Receive Error Counter)
- Nodos Error-Activos(TEC < 127 y REC < 127). Detecta error y emite 6 bits dominantes seguidos (viola la regla de relleno)
- Nodos Error-Pasivos(127 < TEC < 255 y 127 < REC < 255). Detecta error y emite 6 bits recesivos seguidos (viola la regla de relleno) que no tienen efecto sobre lo que poenen en el bus el resto de nodos.
- Nodos Off(TEC > 255). Se desconecta del bus (libera disponibilidad para el resto). Hay que seguir un procedimiento para reconectarlo.
Error de bit:
Trama error:
Error de relleno:
Error de CRC:
Error de trama
Se genera el error al detectar anomalías en la trama
Temporización
La duración de ’bit’ normal es 1/tasa binaria. El tiempo nominal está compuesto por cuatro segmentos:
- Sincronización (flanco)
- Propagación
- Buffer fase 1
- Buffer fase 2
Los dos últimos se subdividen en hasta 8 subpartes programables para ajustar la fase.
Hardware
Algunas implementaciones comerciales son:
- MCP2515
Transceptores
Adaptan la señal NRZ que sale de la controladora a una señal Diferencial en el bus.
- MAX3051de Maxim
- MC33989 de Freescale (Motorola)
- PC A82C250 de NXP (Phillips)
- SGS5637 de SGS
- etc