Mi dispositivo CAN no puede comunicarse o es inconsistente a altas velocidades de transmisión

Actualizado el Apr 18, 2024

Reportado en

Otros

Dispositivos de comunicaciones industriales CAN.

Detalles del problema

Mi dispositivo CAN puede comunicarse correctamente a velocidades de transmisión bajas, pero cuando aumenta la velocidad de transmisión, solo se comunica de forma intermitente o no se comunica por completo.

Recibo errores CAN: Form Error, CRC Error, Bit Error or Stuff Error.

Solución

Estos errores pueden ser el resultado de una terminación incorrecta de CAN.
Este documento discute la terminación apropiada para cada forma de comunicación CAN.

Información adicional

La especificación CAN (ISO 11898) requiere la terminación adecuada del bus CAN en cada uno de los dos extremos de la red CAN, generalmente en el nodo del controlador y el nodo del "dispositivo más lejano". Es suficiente colocar una resistencia de 120Ω entre CAN_H y CAN_L, que son los pines 2 y 7 en las interfaces NI-CAN DB-9. Vea el enlace relacionado a continuación titulado: Terminación adecuada para hardware NI-CAN para un tratamiento más preciso de cómo terminar una red CAN. Sin la terminación adecuada, el intento de comunicación puede generar uno de los siguientes comportamientos no deseados:
     
    • Comunicación exitosa a bajas velocidades en baudios, pero falla a altas velocidades en baudios (la velocidad en baudios a la que ocurrirá la falla dependerá de una serie de factores que incluyen la longitud de la red CAN, los datos asociados con la trama; esto puede cambiar la frecuencia más alta componente de una transmisión dada, interferencia electromagnética cerca de la red, y más). Una prueba resumida en la siguiente tabla ilustra esto:
      Velocidad de transmisión de CAN - Prueba de terminación
      Tasa de baudiosCable correctamente terminado?¿Comunicación puerto a puerto exitosa?
      1M
      1MNoNo
      125K
      125KNoAlgunas veces
      40K
      40KNo

      Tenga en cuenta que la comunicación siempre es exitosa con la terminación adecuada, pero a una velocidad de transmisión de 40K fue exitosa a pesar de no usar la terminación y por lo tanto no cumplir con la especificación CAN ISO 11898.
    • Errores CAN: error de formulario, error CRC, error de bit, error de relleno y algunos otros pueden resultar de una terminación incorrecta. Para obtener más información sobre los errores de CAN, consulte el Manual del usuario de hardware y software de NI-CAN que se encuentra en los enlaces relacionados a continuación (consulte el Resumen del Apéndice B del Estándar CAN; contiene una sección llamada CAN Error Detection and Confinement de CAN que describe los errores de CAN).
    Un ejemplo de un error de CAN que puede explicarse por una terminación incorrecta (y es una condición de error definida basada en la especificación CAN ISO 11898) es un error de relleno. Se produce un error de relleno cuando se detectan 6 bits consecutivos de igual valor en el bus. Cada vez que un dispositivo transmisor detecta 5 bits consecutivos de igual valor, inserta automáticamente un bit complementado en el flujo de bits transmitido. Este bit de relleno es detectado y eliminado automáticamente por todos los dispositivos receptores.

    Este esquema de relleno de bits se utiliza para garantizar suficientes bordes en el flujo de bits para mantener la sincronización dentro de un cuadro. Si un dispositivo de escucha detecta 6 bits del mismo valor, entonces se debe haber perdido la sincronización y lo que se recibió NO fue lo que se envió. Esto es precisamente lo que puede ocurrir con una terminación incorrecta. Algunos bits en la trama se transmiten y reciben correctamente, pero la trama completa (y la integridad de todos los bits en esa trama) no se mantienen y se reciben en la interfaz CAN de escucha.

    La razón de esto es que una red CAN, en general, define una línea de transmisión. La teoría de la línea de transmisión determina que los componentes de frecuencia suficientemente alta no se transmitirán con éxito a lo largo de una línea de transmisión dada sin la terminación adecuada en el terminal receptor. Esta terminación a menudo se conoce como una red coincidente, donde la terminación a menudo se elige para la transferencia máxima de energía a la carga (la interfaz CAN de recepción en este caso) por el complejo conjugado de la impedancia que se observa mirando hacia atrás en la red (en la práctica, muchas aplicaciones utilizan una terminación ligeramente diferente para tener en cuenta el rendimiento del ruido y otras consideraciones).

    La buena noticia es que la especificación CAN ISO 11898 se realizó de tal manera que la terminación adecuada en una red CAN completa (que de hecho cumple con esta norma CAN) es tan simple como colocar dos resistencias de 120Ω en los "extremos" de la red. .