El bus de datos CAN ( Controller Area Network ) es un bus de sistema en serie que se usa ampliamente en muchas industrias, especialmente en la industria automotriz .
Ha sido estandarizado con ISO 11898 .
Se aplica un enfoque conocido con el nombre de multiplexación , y que consiste en conectar a un mismo cable (un bus ) un gran número de ordenadores que, por tanto, se comunicarán a su vez. Esta técnica elimina la necesidad de cablear líneas dedicadas para cada información a transmitir (conexión punto a punto). Tan pronto como un sistema (automóvil, avión, barco, red telefónica, etc. ) alcanza un cierto nivel de complejidad, el enfoque punto a punto se vuelve imposible debido a la inmensa cantidad de cableado a instalar y su costo (en masa, materiales, mano de obra, mantenimiento).
La introducción de buses multiplexados (principalmente CAN) en el automóvil tuvo como objetivo reducir la cantidad de cables en los vehículos (entonces había hasta 2 km de cables por automóvil), pero sobre todo permitió la explosión en la cantidad de computadoras y sensores distribuidos. en todo el vehículo, y los servicios correspondientes (reducción de consumos, control de la contaminación , seguridad activa / pasiva , confort, detección de averías, etc. ), reduciendo al mismo tiempo la longitud de los cables.
El bus de datos CAN es el resultado de la colaboración entre la Universidad de Karlsruhe y Bosch .
Se utilizó por primera vez en el sector de la automoción , pero actualmente se utiliza en la mayoría de las industrias , como la aeronáutica, a través de protocolos estandarizados basados en CAN.
Fue introducido con Intel en 1985 , pero no fue estandarizado por ISO hasta principios de la década de 1991.
En 1992, varias empresas se unieron para crear CAN in Automation, una asociación que tiene como objetivo promover CAN.
Se ha lanzado un primer desarrollo llamado FD para "Flexibel Data rate".
Se está desarrollando una segunda evolución de Bosch , denominada "XL".
Hay dos estándares para la capa física:
CAN es un bus de datos en serie bidireccional semidúplex en la industria automotriz, pero se utiliza unidireccional ( simplex ) en aeronáutica para lograr un comportamiento determinista .
Cada dispositivo conectado, llamado "nodo", puede comunicarse con todos los demás.
Para un bus de datos CAN de “baja velocidad”, el número de nodos está limitado a 20. Para un bus de datos CAN de “alta velocidad”, está limitado a 30.
Cada nodo está conectado al bus mediante un par trenzado (blindado o no) .
Los dos extremos del bus deben estar conectados mediante resistencias de 120 Ω ± 10% (tolerancia entre 108 Ω y 132 Ω).
El acceso al bus de datos CAN sigue la técnica CSMA / CR (escuchar cada estación antes de hablar pero no hablar, resolución de colisiones por prioridad).
La longitud máxima del bus está determinada por la velocidad utilizada:
Velocidad ( kbit / s ) |
Longitud ( m ) |
---|---|
1000 | 30 |
800 | 50 |
500 | 100 |
250 | 250 |
125 | 500 |
62,5 | 1000 |
20 | 2500 |
10 | 5,000 |
La codificación utilizada es del tipo NRZ (sin retorno a 0) :
Los nodos están cableados en el bus según el principio de "cableado OR" desde el punto de vista eléctrico ("cableado Y" desde el punto de vista lógico), lo que significa que en caso de transmisión simultánea desde dos nodos, el valor 0 sobrescribe el valor 1.
Entonces decimos:
Los estados lógicos y los niveles eléctricos utilizados entre las dos líneas del par diferencial para el CAN de baja velocidad son los siguientes:
Estado lógico | V CANH-GND | V CANL-GND | V CANH-CANL |
---|---|---|---|
Recesivo o "1" | 1,75 V | 3,25 V | −1,5 V |
Dominante o "0" | 4 V | 1 V | 3 V |
Los estados lógicos y los niveles eléctricos utilizados entre las dos líneas del par diferencial para el ADC de alta velocidad son los siguientes:
Estado lógico | V CANH-GND | V CANL-GND | V CANH-CANL |
---|---|---|---|
Recesivo o "1" | 2,5 V | 2,5 V | 0 hasta 0,5 V |
Dominante o "0" | 3,5 V | 1,5 V | de 0,9 a 2 V |
La duración de un bit se denomina "tiempo de bit nominal".
Cada bit se compone de varios segmentos sincronizados por el reloj interno de cada nodo:
El "tiempo cuántico" es la unidad de tiempo construida a partir del período del oscilador interno de cada nodo.
La frecuencia del bus es como máximo de 1 MHz y las de los osciladores de varios MHz, el “Time Quantum” generalmente vale varios períodos de reloj (entre 1 y 32 veces).
La duración de cada segmento es la siguiente:
Segmento | Duración en "Time Quantum" |
---|---|
Sincronización | 1 |
Propagar | de 1 a 8 |
Fase tampón n o 1 | de 1 a 8 |
Fase tampón n o 2 | de 2 a 8 |
Por tanto, la duración de un bit puede variar de 5 a 25 "Time Quantum".
Cuanto mayor sea la frecuencia del reloj interno del nodo, más corta puede ser la duración del “Time Quantum”, más contarán los últimos tres segmentos “Time Quantum” y mejor será la precisión de sincronización.
Segmento de sincronizaciónEl segmento de sincronización se utiliza para sincronizar los diferentes nodos.
La transición de 0 a 1 o de 1 a 0, realizada para el nodo emisor, debe tener lugar en este segmento. Si para un nodo receptor esta transición no se produce en este mismo segmento es porque está desincronizado. Este es un error de fase.
Gracias al bit de transparencia, esta verificación se puede realizar al menos cada 5 bits (para los primeros campos de la trama en la que se utiliza).
Segmento de propagaciónEl segmento de propagación se utiliza para compensar los fenómenos de propagación en el bus.
Segmentos de faseLos segmentos de fase se utilizan para compensar los errores de fase detectados durante las transiciones.
La duración de estos segmentos puede variar en caso de resincronización.
Punto de muestreoEl punto de muestreo o “Punto de muestreo” es el instante en el que se lee el valor del bit en el bus. Esto ocurre entre los dos segmentos de fase.
SincronizaciónHay dos tipos de sincronización:
El pinout en el bus de datos CAN está estandarizado y usa un conector DE-9 :
Broche | Descripción |
---|---|
1 | (Reserva) |
2 | PUEDO |
3 | Masa |
4 | (Reserva) |
5 | Blindaje (opcional) |
6 | Masa |
7 | CANH |
8 | (Reserva) |
9 | Fuente de alimentación externa (opcional) |
También hay dos estándares para la capa de enlace de datos:
Hay varios tipos de marcos:
Entre dos tramas, los transmisores deben observar una pausa (período entre tramas) equivalente a la duración de tres bits durante los cuales el bus se mantiene en estado recesivo.
El marco de datos se utiliza para enviar información a otros nodos.
Un marco de datos consta de siete campos diferentes:
Los campos se transmiten en orden de SOF a EOF.
En cada campo de la trama, los bits se transmiten del más fuerte al más débil.
Campo de arbitrajeEl campo de arbitraje está compuesto por 11 bits de identificación para CAN 2.0A y 29 bits para CAN 2.0B seguidos por el bit RTR (Solicitud de transmisión remota) que es dominante. Este campo sirve como identificador de los datos transportados en el campo de datos.
Los 11 bits de CAN 2.0A permiten 2 11 = 2048 combinaciones.
Los 29 bits de CAN 2.0B permiten 2 29 = 536 870 912 combinaciones.
Campo de comandoEl campo de control se compone de seis bits.
El bit más significativo se utiliza para diferenciar el tipo de trama:
El siguiente bit no se usa.
Los cuatro bits menos significativos llamados DLC (Código de longitud de datos) representan el número de bytes del campo de datos integrado (PAYLOAD).
Este número de bytes puede variar de 0 a 8, o nueve valores almacenados con los cuatro bits del campo DLC. Por tanto, no se utilizarían valores de DLC superiores a 9 (de 9 a 15).
Campo de datosEl campo de datos puede variar de 0 a 8 bytes.
En el caso de un marco de solicitud, el campo de datos está vacío.
Campo CRCEl campo se compone de quince bits de CRC (Cyclic Redundancy Check) y de un denominado bit delimitador (“CRC delimiter”) que siempre es recesivo.
Le CRC est calculé à partir de l'ensemble des champs transmis jusque-là (c'est-à-dire le SOF, le champ d'arbitrage, le champ de commande et le champ de données ; les bits de transparence ne sont pas tener en cuenta). El conjunto constituye el polinomio f ( x ).
El algoritmo consiste en primer lugar en multiplicar f ( x ) por 2 15 .
Luego, el polinomio f ( x ) se divide (módulo 2) por el polinomio g ( x ) = x 15 + x 14 + x 10 + x 8 + x 7 + x 4 + x 3 + x 0 .
Una vez realizadas las sucesivas divisiones, el resto constituye la secuencia CRC.
La distancia de Hamming del algoritmo utilizado es 6, lo que significa que se pueden detectar un máximo de cinco errores.
Gracias a este sistema de detección, la tasa de error registrada es muy baja (menos de 4,6 × 10 −11 ). Además, la red puede diferenciar los errores puntuales de los errores redundantes. Por lo tanto, cualquier dispositivo defectuoso puede desconectarse de la red para limitar las perturbaciones. A continuación, la red entra en modo "degradado".
Campo de acuse de reciboEl campo está compuesto por un bit de acuse de recibo ACK (ACKnowledge) y un bit delimitador (“ACKnowledge delimiter”) que es siempre recesivo.
Todos los receptores que han recibido el mensaje con éxito deben reconocerlo transmitiendo un bit dominante durante la duración del bit ACK, lo que permite al nodo emisor saber que al menos uno de los nodos receptores ha recibido el mensaje.
Si un nodo receptor no recibió el mensaje o lo recibió incorrectamente, no puede usar este mecanismo para señalar el error, ya que una estación receptora solo necesita enviar un bit dominante para enmascarar todos los bits recesivos. Para señalar el mal funcionamiento, debe enviar un cuadro de error.
El marco de solicitud se utiliza para solicitar datos de otro nodo. Es similar al marco de datos excepto:
Nótese que el hecho de que el bit RTR sea recesivo en el caso de una trama de solicitud significa que si una trama de datos se envía simultáneamente con el mismo campo de arbitraje, es la trama de datos la que tiene prioridad.
Para asegurar la transmisión de mensajes, se utiliza el método de " relleno de bits ".
Consiste, en el caso de que se hayan enviado cinco bits de la misma polaridad seguidos, agregar un bit de polaridad opuesta a la secuencia, para romper cadenas excesivamente grandes de bits idénticos. Este método solo se aplica a los campos SOF, arbitraje, comando, datos y CRC (delimitador excluido).
Por ejemplo, "1111 1110" se convertirá en "1111 1011 0".
¿Qué sucede si varios nodos intentan transmitir simultáneamente?
Existe un procedimiento de acceso al bus al que debe someterse cada nodo:
Así se consigue una prioridad gracias al campo del arbitraje.
Cuanto más pequeño es, más contiene bits de orden superior 0 (dominante), más prioridad tendrá.
Esta fase de priorización o arbitraje finaliza en el bit RTR.
Tan pronto como se detecta un error, el nodo no espera el final de la trama incriminada, envía inmediatamente una trama de error para señalar un problema en la transmisión.
Un marco de error consta de dos campos diferentes:
El marco de error puede ser:
Los nodos detectan una serie de errores.
Error de bitCada vez que un nodo emite un bit en el bus, vuelve a leer el bus y debe encontrar el bit que escribió. Si al enviar un bit recesivo vuelve a leer un bit dominante, ha sido alterado.
Este mecanismo es idéntico al que permite la priorización, por lo que no debe tenerse en cuenta en el ámbito del arbitraje.
Lo mismo ocurre con el campo de acuse de recibo, si el bit recesivo enviado por el nodo emisor se vuelve dominante, es simplemente que uno o más nodos receptores han confirmado la recepción correcta de la trama, por lo que no es un error.
Error de cosasSi se leen seis bits consecutivos de la misma polaridad en el bus, el mecanismo de bits de transparencia no se ha respetado o se ha alterado un bit.
Error de CRCSi el valor CRC calculado por el nodo receptor es diferente del CRC codificado en la trama por el nodo emisor, la trama se ha corrompido.
Delimitador de CRCSi el bit "delimitador CRC" leído por los nodos receptores no es recesivo, el bit ha sido alterado.
Error de ACKnowledgeSi el bit ACK recesivo enviado por el nodo emisor no ha sido anulado por un bit dominante, entonces ningún nodo receptor lo ha recibido.
AC Delimitación de conocimientosSi el bit "ACKnowledge delimiter" leído por los nodos receptores no es recesivo, el bit ha sido alterado.
Error de recuperaciónPor construcción, la trama de error rompe la regla del relleno de bits ya que, pase lo que pase, los seis bits de la bandera de error son idénticos.
Cuando un nodo envía una trama de error, todos los demás nodos detectan un error de tipo "Stuff error" y también comienzan a enviar una trama de error.
En el caso de tramas de error activas, el número de bits dominantes en una fila no debe exceder los doce bits. Más allá de eso, los nodos que no han enviado su marco de error no deben hacerlo.
El último nodo en enviar proporciona el delimitador (ocho bits recesivos) y finaliza la cacofonía.
El nodo que envió la trama incriminada luego retira su oportunidad.
Y así sucesivamente, hasta que la trama pasa o uno de sus contadores de errores hace que el nodo cambie el modo de error.
Contadores de erroresCada nodo tiene dos contadores de errores:
El contador de errores de transmisión de un nodo en modo transmisor es:
El contador de errores de recepción de un nodo en modo receptor es:
Dependiendo de los contadores de errores, el nodo cambia el modo de error. Hay tres:
El marco de sobrecarga se puede utilizar en dos casos:
Una trama de sobrecarga consta de dos campos diferentes:
La trama de sobrecarga es similar a una trama de error activa.
Cuando un nodo transmite una trama de sobrecarga para solicitar un retardo (condición n o 1), sobrescribe los tres bits recesivos del período entre tramas, los nodos restantes detectan sobrecarga y ellos mismos emiten sobrecarga de tramas (condición n o 2).
Al igual que con las tramas de error activas, el número de bits dominantes en una fila no debe exceder los doce bits. Más allá de eso, los nodos que no han enviado su marco de sobrecarga no deben hacerlo.
El último nodo en enviar proporciona el delimitador (ocho bits recesivos) y finaliza la cacofonía.
Se han definido varias capas de aplicación en el estándar CAN: