¿Qué es una trama de error CAN?
CAN se diseñó para entornos hostiles, y su manejo de errores es lo que permite que un bus siga funcionando cuando un nodo o un cable empiezan a portarse mal. En el centro de eso están la trama de error y los contadores detrás de ella, que van promoviendo silenciosamente a un nodo con problemas por estados cada vez más cautelosos y, si sigue fallando, lo sacan del bus por completo para que deje de perturbar a los demás. Esta página explica qué es una trama de error, cómo los contadores de error dirigen los estados error-activo, error-pasivo y bus-off, y qué significa realmente entrar en bus-off en el campo.
Trama de error CAN en una línea: Una trama de error CAN es un mensaje especial que un nodo transmite en el instante en que detecta una trama corrupta, lo que obliga a todos los nodos a descartar ese mensaje y al transmisor a reintentarlo. CAN mantiene contadores de errores de transmisión y de recepción, y a medida que los errores de un nodo se acumulan, este pasa de error-activo a error-pasivo y finalmente a bus-off, donde deja de transmitir para proteger al resto del bus. A esto se le llama confinamiento de fallas.
Cómo funciona una trama de error
Cuando cualquier nodo detecta una violación, como un bit que no esperaba, una infracción de la regla de relleno, un CRC malo, un error de trama o un reconocimiento ausente, transmite de inmediato una trama de error. La trama de error es deliberadamente una ráfaga de bits dominantes que viola a propósito las reglas normales de entramado, lo que obliga a todos los demás nodos a ver también un error y descartar el mensaje en curso. Esta señalización global significa que cuando un nodo detecta corrupción, todo el bus acuerda desechar esa trama, y el transmisor original la retransmite.
Esto es lo que hace a CAN robusto y no meramente detector de errores: una trama corrupta no solo se marca, se destruye activamente en el cable y se reintenta, de modo que los consumidores nunca actúan sobre datos malos. El costo es tiempo de bus, y un nodo que sigue generando errores sigue consumiendo ese tiempo, que es exactamente la razón por la que CAN necesita un mecanismo para identificar y aislar a un nodo persistentemente defectuoso antes de que agote la capacidad del bus.
Los contadores de error y los tres estados
Cada controlador CAN mantiene un contador de errores de transmisión y un contador de errores de recepción. Detectar un error incrementa el contador correspondiente en un paso definido; enviar o recibir una trama con éxito lo decrementa. Esta ponderación es intencional: un nodo que es él mismo la fuente del problema acumula errores de transmisión más rápido que un nodo sano que solo los presencia, así que los contadores tienden a señalar al verdadero culpable y no a un espectador inocente.
Los contadores dirigen tres estados. Un nodo arranca en error-activo, lo que significa que participa plenamente y señala errores con tramas de error dominantes que todo el bus escucha. Cuando su conteo de errores cruza un umbral pasa a error-pasivo: sigue comunicándose pero señala los errores de forma más discreta, de modo que un nodo en apuros no pueda dominar el bus con tramas de error. Si el contador de errores de transmisión sube más allá del umbral de bus-off, el nodo entra en bus-off, se desconecta del bus y deja de transmitir por completo. La mayoría de los controladores también levanta una bandera de advertencia de error antes del umbral pasivo, dando al software aviso temprano de que un nodo está en problemas.
A esta degradación por etapas se le llama confinamiento de fallas, y es la razón por la que un solo nodo malo no tumba permanentemente una red CAN. Un dispositivo con un transceptor marginal o una falla de cableado acumulará errores, caerá a error-pasivo y, si sigue fallando, entrará en bus-off, momento en el que el resto del bus se recupera y continúa sin él. La recuperación desde bus-off típicamente requiere que el controlador sea reiniciado o que observe un periodo de reposo definido, lo cual es una decisión de software, no automática en toda implementación.
Qué significa bus-off en el campo
Cuando un nodo entra en bus-off, sus datos simplemente dejan de aparecer, mientras el resto del bus sigue funcionando. Esa asimetría es una pista de diagnóstico útil: si los tags de un dispositivo se congelan o desaparecen mientras todos los demás nodos del mismo bus se actualizan con normalidad, lo más probable es que el nodo fallido haya entrado en bus-off, y la falla es local a su transceptor, cableado o conector, no un problema de todo el bus. Una falla de todo el bus, en cambio, tumba a muchos nodos a la vez.
Como el bus-off se dispara por errores de transmisión acumulados, sus causas raíz habituales son físicas: el transceptor dañado de un nodo específico, un conector flojo o corroído en esa derivación, un error de cableado en ese ramal, o una discrepancia de velocidad en baudios que hace que ese nodo vea errores constantemente. Perseguirlo significa ir a la capa física del nodo infractor, no reescribir la lógica de mensajes, que es el mismo enfoque de cualquier flujo de solución de problemas de un bus CAN.
A través de un gateway de monitoreo, nada de la maquinaria de contadores de error es visible directamente, pero su resultado es inconfundible: los datos de un nodo se estancan o quedan obsoletos mientras sus vecinos siguen reportando. Un registro de series de tiempo que muestra a un solo dispositivo cayéndose repetidamente, recuperándose cada vez tras un intervalo de reinicio, es la firma de un nodo que cicla hacia bus-off, y le dice exactamente qué derivación inspeccionar en el cable.
Preguntas frecuentes
¿Qué hace que un nodo CAN entre en bus-off?
Un nodo entra en bus-off cuando su contador de errores de transmisión sube más allá del umbral de bus-off, lo que ocurre cuando detecta errores de transmisión repetidamente. Las causas raíz habituales son físicas y locales a ese nodo: un transceptor fallando, un conector flojo o corroído, una falla de cableado en su ramal, o una discrepancia de baudios que le hace ver errores constantes. En bus-off el nodo se desconecta y deja de transmitir para que el resto del bus siga funcionando.
¿Cuál es la diferencia entre error-activo y error-pasivo en CAN?
Error-activo es el estado normal, donde un nodo participa plenamente y señala los errores detectados con tramas de error dominantes que todo el bus escucha. Cuando sus contadores de error cruzan un umbral pasa a error-pasivo: sigue comunicándose pero señala los errores de forma más discreta, de modo que un nodo en apuros no pueda inundar el bus con tramas de error. Error-pasivo es una etapa de advertencia en el camino hacia bus-off si los errores continúan.
¿Un nodo CAN malo tumba todo el bus?
Normalmente no, gracias al confinamiento de fallas. Un nodo persistentemente defectuoso acumula errores más rápido que los nodos sanos, cae a error-pasivo y, si sigue fallando, entra en bus-off y se desconecta, tras lo cual los nodos restantes se recuperan y continúan. Si en cambio todos los nodos fallan a la vez, la falla es de todo el bus, como una terminación ausente o un par en corto, y no un solo dispositivo malo.
Fuentes y lecturas
Referencias primarias de los organismos de normas y reguladores que definen este tema:
Servicios de automatización
¿Necesita convertir esta información en un sistema que funcione?
Merobix integra SCADA, programa PLC Allen-Bradley y Siemens, y diseña y fabrica tableros de control industrial.
Las solicitudes de reunión se revisan antes de confirmarse.