Lea bus CAN y protocolo de comunicación en un artículo

Autobus CAN

 

concepto de lata

CAN es la abreviatura de Controller Area Network (CAN). Fue desarrollado por la empresa alemana BOSCH  , que es famosa por la I + D y la producción de productos electrónicos para automóviles , y finalmente se convirtió en un estándar internacional ( ISO11898 ). Es el estándar en serie de ISO internacional estandarización protocolo de comunicación . Es uno de los buses de campo más utilizados en el mundo. En América del Norte y Europa occidental, el protocolo de bus CAN se ha convertido en el bus estándar para los sistemas de control de computadoras automotrices y las LAN de control industrial integradas, y tiene un protocolo J1939 diseñado para camiones grandes y vehículos de maquinaria pesada con CAN como protocolo subyacente . En los últimos años, se ha valorado su alta confiabilidad y buena capacidad de detección de errores, y es ampliamente utilizado en sistemas de control de computadoras automotrices y entornos industriales con temperaturas ambiente severas, fuerte radiación electromagnética y grandes vibraciones.

Dos estándares internacionales ISO de CAN:

1) ISO11898  : define  un estándar de comunicación CAN de alta velocidad con una tasa de comunicación de 125 kbps a 1 Mbps. Pertenece a un bus de circuito cerrado con una tasa de transmisión de hasta 1 Mbps y una longitud de bus de ≤ 40 metros .

2) ISO11519 : define un estándar de comunicación CAN de baja velocidad  con una tasa de comunicación de 10-125 kbps , que pertenece a un bus de circuito abierto.Cuando la tasa de transmisión es de 40 kbps, la longitud del bus puede alcanzar los 1000 metros.

tipo de lata

1) CAN de alta velocidad:

A. Proporcione una tasa de baudios de 5 Kbit/s a 1 Mbit/s según la longitud del cable.

b.La red CAN de alta velocidad termina con una resistencia de 120 ohmios en cada extremo de la red.

C. El nivel silencioso es de 2,5 V y los límites superior e inferior son de 3,5 V y 1,5 V.

2) CAN tolerante a fallas:

A. Proporcione una tasa de baudios de 5 Kbit/s a 125 Kbits/s.

b.Cuando es dominante, es 1V y 4V.

3) CAN de un solo cable:

A. Proporcione una tasa de baudios de 5 Kbit/s a 125 Kbits/s.

B. La velocidad en baudios de CAN de un solo cable es generalmente de 33,3 KHz.

Red CAN automotriz

 

Red CAN automotriz

Autobús CAN automotriz

 

Composición de la CAN

Una trama del bus CAN se compone principalmente de información de trama , ID de trama y datos de trama .

1) Información del marco : dividida en cuatro categorías, marco de datos estándar (vehículo de gasolina, motor), marco remoto estándar (raro), marco de datos extendido (la mayoría de los vehículos diésel, algunos vehículos de gasolina), marco remoto extendido (poco frecuente).

2) Frame ID: Es una especie de "dirección" de CAN. Una característica de CAN es el mecanismo de competencia.Cuanto más pequeña sea la ID de la trama, más derechos tendrá para ocupar los recursos del bus y más prioridad enviará.

        


ID de lata

Archivo DBC: en la industria de vehículos, si se realiza una interpretación estándar para cada ID de cuadro y cada dato de cuadro en el bus CAN del vehículo, el archivo formado es un archivo DBC.

3) Datos de trama: en comparación con el puerto serie, los datos de trama de CAN solo tienen 8 bytes, es decir, 64 bits , y no habrá más. Pero CAN FD resuelve el problema de solo 8 bytes como un nuevo bus.

4) Resistencia del terminal: CAN es lo mismo que RS485. Es necesario reducir el reflejo de la señal diferencial en el terminal. Si no se agrega la resistencia a los dos terminales, la señal rebotará y afectará la comunicación. Debe haber dos resistencias terminales en el bus CAN, con un valor de resistencia de 120 ohmios, conectadas en paralelo, y una en el lado terminal más alejado. Si hay varios nodos, la resistencia del terminal debe aumentarse adecuadamente.

5) Tasa de baudios : Las tasas de baudios comunes de los vehículos son 500K, 250K, 125K, 100K.

Estándar de bus CAN

Norma ISO

 

El estándar CAN se divide en dos categorías: el estándar de capa inferior (capa física y capa de enlace de datos) y el estándar de capa superior (capa de aplicación).

  • ISO 11898-1 – Protocolo CAN
  • ISO 11898-2 – Capa física de alta velocidad CAN
  • ISO 11898-3 – Capa física tolerante a fallas de baja velocidad CAN
  • ISO 11898-4: CAN activado por tiempo
  • ISO 11898-5 - "Unidad de acceso a medios de alta velocidad en modo de bajo consumo" - actualmente en borrador
  • ISO 11519-2: obsoleta, reemplazada por 11898-3.
  • ISO 14230 - "Protocolo de palabra clave 2000" - define partes de diagnósticos de línea serie no CAN.
  • ISO 15765, el estándar que define los diagnósticos en el bus CAN, es esencialmente el Keyword Protocol 2000 en el bus CAN.
  • J1939: el protocolo de alto nivel basado en CAN más utilizado para camiones y autobuses, definido por SAE. J1939 se divide en varias partes, que describen la capa física, la capa de enlace de datos, la gestión de la red y una gran cantidad de mensajes predefinidos.
  • ISO 11783: similar a J1939, pero para el sector agrícola (como tractores)
  • ISO 11992: define la interfaz entre camiones y remolques
  • NMEA 2000 – Protocolo basado en J1939 utilizado en el sector marítimo. Definido por el comité NMEA.

Si no especifica de qué estándar está hablando, por lo general, el valor predeterminado es el protocolo de capa de enlace de datos definido por ISO 11898-1 y la capa física definida por ISO 11898-2.

Estándar subyacente:

Los estándares subyacentes de CAN son básicamente los mismos, cubriendo la capa física y la capa de enlace de datos en el modelo OSI, y la relación correspondiente con el modelo ISO/OSI se muestra en la siguiente figura:

Correspondencia

 

  • ISO 11898-1: protocolo de capa de enlace de datos, describe la arquitectura básica del bus CAN y define los métodos de comunicación de diferentes dispositivos de bus CAN en la capa de enlace de datos
  • ISO 11898-2: protocolo de capa física de bus CAN de alta velocidad, la velocidad máxima de transmisión de datos es de 1 Mbps y la aplicación es una señal balanceada de dos hilos (CAN_H, CAN_L)
  • ISO 11898-3: define el estándar de capa física del bus CAN de baja velocidad (LS-CAN, Fault-Tolerant CAN), con una velocidad de transmisión de datos de 5 Kbps ~ 125 Kbps. Tolerante a fallas significa que cuando falla una señal de transmisión en el bus, también puede comunicarse confiando en otra señal única
  • ISO 11898-4: define el mecanismo activado por tiempo (CAN activado por tiempo, TTCAN) en el bus CAN, define la entidad de sincronización de cuadros que coopera con ISO 11898-1 y realiza el método de comunicación activado por tiempo entre ECU automotrices.

Estándar superior:

Diferentes campos de aplicación o fabricantes tienen diferentes prácticas, y no existe un estándar internacional uniforme

Comparación de protocolos de capa superior

 

Tipos de tramas CAN (cuatro tipos de tramas)

1) Marco de datos

Una trama utilizada por una unidad emisora ​​para transmitir datos a una unidad receptora.

El diagrama de estructura del marco del marco de datos:

Marco de datos

 

SOF: indica el inicio de la trama de datos; (1 bit), se envía un borde de bit dominante y el nodo de red comienza a sincronizarse

ID: 11 bits en formato estándar, 29 bits en formato extendido incluyendo Base ID (11 bits) y Extended IDr (18 bits), esta sección identifica la prioridad de la trama de datos, cuanto menor sea el valor, mayor será la prioridad;

RTR: bit de solicitud de transmisión remota, 0 significa trama de datos, 1 significa trama remota, es decir, cuando RTR=1, el campo de datos de la trama del mensaje está vacío; (1 bit)

IDE: (1 bit) bit de extensión del identificador, 0 indica el formato estándar, 1 indica el formato extendido; el marco extendido y el formato de marco estándar son diferentes y no pueden existir en la misma red de latas

DLC: código de longitud de datos, 0-8 significa que la longitud de datos es de 0~8 bytes; (4 bits)

Campo de datos: campo de datos (0~8 bytes)

CRC (15 bits):

  • Verifique el campo, codifique todos los datos desde el software hasta el campo de datos
  • Llenado por el remitente
  • Verifique el algoritmo G(x) = x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1; (15 bits)

DEL: el delimitador implícito del campo de verificación y el campo de respuesta; (1 bit)

RECONOCIMIENTO: (1 bit)

  • Campo de respuesta, para confirmar si los datos se reciben normalmente.La llamada recepción normal significa que no contiene errores de llenado, errores de formato y errores de CRC.
  • El nodo emisor establece este bit en 1, y el receptor lo confirma, y ​​da un bit dominante 0 al recibir el mensaje.
  • Si un nodo no confirma la recepción del mensaje, el remitente informará un error si monitorea este bit como un bit invisible

SRR: el bit de solicitud remota de sustitución, utilizado en formato extendido, debe ser 1; (1 bit)

EOF: 7 bits recesivos consecutivos (1) indican el final de la trama; (7 bits)

ITM (3 bits):

  • Interframe space, Intermission (ITM), también conocido como Interframe Space (IFS), tiene 3 bits recesivos consecutivos, pero no pertenece a la trama de datos.
  • El espacio entre cuadros es un cuadro que se utiliza para separar los cuadros de datos y los cuadros remotos de los cuadros precedentes. Las tramas de datos y las tramas remotas pueden separar esta trama de cualquier trama anterior (trama de datos, trama remota, trama de error, trama de sobrecarga) insertando espacio entre tramas. El espacio entre cuadros no se puede insertar antes de los cuadros de sobrecarga y los cuadros de error.

2) Marco remoto

Una trama utilizada por una unidad receptora para solicitar datos de una unidad emisora ​​con el mismo identificador.

La estructura del marco del marco remoto es similar a la del marco de datos, la diferencia es:

  • 1. El valor RTR del marco de datos es "0", y el valor RTR del marco remoto es "1".
  • 2. No hay bloque de datos en el marco remoto.
  • 3. El bloque DLC de la trama remota indica la longitud de los datos enviados por la unidad de envío de solicitudes.

diagrama de formato

marco remoto

 

Cuando la trama de datos y la trama remota con el mismo identificador en el bus se envían al mismo tiempo, debido a que el bit RTR de la trama de datos es dominante, la trama de datos ganará el derecho de control del bus en el arbitraje.

3) Marco de error

Trama utilizada para notificar a otras unidades de un error cuando se detecta un error.

La estructura de trama de una trama de error consta de un indicador de error y un delimitador de error.

Indicador de error: 6 bits,

indicador de error

 

Delimitador de error: compuesto por bits recesivos de 8 bits.

4) Marco de sobrecarga

La unidad receptora notifica a la unidad emisora ​​que aún no ha completado los preparativos para la recepción.

Dos casos de envío de tramas de sobrecarga:

1. La condición de la unidad receptora requiere que el nodo emisor retrase la transmisión de la siguiente trama de datos o trama remota.

2. Se detecta un bit dominante en los 3 bits de Intermisión.

Cada nodo puede enviar como máximo dos tramas de sobrecarga de forma continua, y la trama de sobrecarga se compone de un indicador de sobrecarga y un delimitador de sobrecarga (8 bits recesivos).

marco de sobrecarga

 

Comparación de tramas de datos y tramas remotas:

Comparar

 

Arbitraje de bus CAN

Prioridad de arbitraje: cuanto menor sea el valor del identificador, mayor será la prioridad del mensaje

Línea y lógica : solo cuando los nodos de envío son todos recesivos , el nivel del bus es recesivo

Al enviar datos, todos los nodos de envío también detectan el estado del nivel en el bus y comparan el nivel en el bus con el nivel enviado por sí mismo poco a poco.

  • 1) Cuando se envía 0, aparece 1: se informa de un error.
  • 2) Enviar 0 y aparecer 0: continuar.
  • 3) Enviar 1 y aparecer 1: Continuar.
  • 4) Enviando 1 y apareciendo 0: la competencia falla, y se convierte en receptor.

enviar autodiagnóstico

 

Como se muestra en la figura a continuación, el nodo C que falló la competencia intentará enviar de nuevo automáticamente la primera vez que detecte que el bus está inactivo.

Los nodos CAN A y C envían tramas de datos al mismo tiempo, el bus CAN se arbitra de acuerdo con la prioridad y cierra la energía

 

CAN acceso condicional

Los mensajes en el bus CAN se transmiten . Los nodos pueden determinar si recibir el mensaje configurando el código de filtro (Código de filtro) y la máscara (Código de máscara) en el controlador, y luego verificando el identificador del mensaje en el bus. Para la máscara , "1" indica que este bit está relacionado con este nodo y "0" indica que este bit no está relacionado con este nodo.

Flujo de datos CAN-BUS

 

STM32 puede filtrar código

 

poco relleno

El bus CAN adopta la codificación NRZ, sin una línea de reloj separada, lo que tiene la ventaja de una alta eficiencia, pero no es fácil distinguir dónde comienza y dónde termina el bit. Por lo tanto, para garantizar suficientes saltos de nivel durante la comunicación síncrona, se aplica un mecanismo de relleno de bits , es decir, se inserta un nivel de inversión cada 5 niveles idénticos consecutivos , y el nodo receptor recibe automáticamente el mensaje después de recibir el mensaje. Retire el acolchado.

Cuadro comparativo de relleno de bits de DataFrame

 

Excepto por el delimitador CRC, el campo ACK y EOF en la trama, el mecanismo de relleno de bits se aplica al resto de la trama. En el campo donde se aplica el relleno de bits, la detección de 6 bits dominantes consecutivos o bits recesivos se considera como un informe de error.

Comprobación de errores CAN

error CRC

1) Al enviar un mensaje, el nodo de envío calculará el valor de la suma de verificación desde el bit SOF del marco de datos hasta el último bit del campo de datos de acuerdo con un polinomio específico, y pondrá el valor en el campo CRC del marco de datos, y transmitir la trama de datos al bus superior.

2) Después de recibir los datos, el nodo receptor aplica el mismo polinomio para calcular el valor de Checksum y lo compara con el valor de Checksum recibido. Si los dos son consistentes, se recibirá normalmente; si no, el mensaje se descartará y se enviará una trama de error para solicitar al nodo emisor que retransmita el mensaje.

Error de respuesta (error ACK)

El receptor dará un nivel dominante en el bit de respuesta de acuse de recibo después de recibir el mensaje, y si el remitente detecta que el bit es recesivo, informará un error.

Error de formato (Error de formulario)

Errores detectados cuando se detecta el formato opuesto al campo de bits de formato fijo, como detectar si aparece un bit dominante en el delimitador CRC y el delimitador de acuse de recibo y el área eof.

error de bits

Compare el nivel de salida con el nivel del bus (sin incluir los bits de relleno) y detecte el error cuando los dos niveles sean diferentes. Si se envía un bit dominante, pero el bus es un bit recesivo, se informará un error.

Error de cosas

Un error detectado cuando se detectan 6 bits del mismo nivel de forma consecutiva dentro de un segmento que requiere relleno de bits.

Mecanismo de detección de errores de bus CAN

Cada controlador de nodo en el bus CAN detectará si el mensaje es incorrecto.Si el nodo encuentra que el mensaje es incorrecto, enviará una bandera de error, interrumpiendo así la transmisión normal de datos en el bus. Otros nodos en el bus que no hayan encontrado el mensaje de error original tomarán las medidas necesarias después de recibir el indicador de error, como descartar el mensaje actual en el bus.

Hay dos contadores de estado de error dentro del nodo CAN:

  • 1) TEC/contador de errores de transmisión, enviando el contador de estado de error, una vez que ocurre un error, el valor del contador +8
  • 2) REC /Receive Error Counter, recibiendo el contador de estado de error, una vez que ocurre un error, el valor del contador +1
  • 3) Si el mensaje se envía o recibe con éxito una vez, el valor TEC o REC correspondiente será -1

                                                        conteo de errores

La especificación CAN define 3 estados de error para los nodos:

  • 1) Error activo: estado normal, en este estado, el nodo puede enviar todo tipo de marcos, incluidos los marcos de error; informará activamente el error después de encontrar el error.
  • 2) Error pasivo: el nodo puede enviar todas las tramas excepto la trama de error; el recuento de TEC o REC excede 127 y entra en este estado; en este momento, el nodo solo enviará 6 bits recesivos después de encontrar el error, y no transmitirá el error Y, al enviar cuadros continuos, debe haber un tiempo de retraso de 8 bits entre ellos.
  • 3) Bus apagado: el controlador aísla el nodo del bus; o si el TEC es superior a 255, entrará en este estado y deberá reiniciarse, o esperar 128 niveles de bits recesivos de 11 bits.

Mecanismo de detección de errores de bus CAN

 

Introducción al protocolo CAN bus.pdf

CAN bus C código fuente y data.rar

Código fuente y datos del bus CAN C, programa de fuente de inicio síncrono del motor del bus del analizador de latas

Manual de aplicación del protocolo CAN bus.pdf

Manual de aplicación del protocolo CAN bus

can-utils.zip

Herramientas CAN, incluidas herramientas básicas para mostrar, registrar, generar y reproducir tráfico CAN, configuración de puerta de enlace central CAN, medición y prueba de bus CAN, herramientas ISO-TP, convertidor de archivos de registro, configuración de especificación de línea serie, generador de proyectos CMake, etc. código fuente

Escudo de bus CAN - MCP2515 y MCP2551.zip

Código fuente del protocolo Can  bus y código de caso de aplicación basado en arduino

Supongo que te gusta

Origin blog.csdn.net/xipengbozai/article/details/131352010
Recomendado
Clasificación