Sección 6.1 de la CAN spec :
BIT ERROR: una unidad que está enviando un bit en el bus también supervisa el
autobús. Debe detectarse un ERROR BIT en ese momento de bit, cuando el bit
El valor que se supervisa es diferente del valor de bit que se envía.
Una excepción es el envío de un bit 'recesivo' durante el relleno
flujo de bits del CAMPO DE ARBITRAJE o durante la RANURA DE ACK.
Por lo tanto, el nodo que primero transmite un '1' cuando el otro está transmitiendo un '0' anotará un error de bit y luego señalará un error como normal - transmitiendo un indicador de error (consulte la Sección 3.1.3), como se describe formalmente en la Sección 6.2.
De manera informal, si ese nodo está activo por error (que debería ser el caso habitual) transmitirá un indicador de error de 6 bits dominantes, que todos los demás nodos también detectarán (como error de error). Esto tiene el efecto de destruir ese mensaje completamente:
- nadie lo recibirá
- ninguno de los transmisores pensará que ha transmitido nada con éxito.
Cada transmisor intentará retransmitir, dependiendo de la sincronización precisa de las retransmisiones, uno puede comenzar suficientemente antes del control de ganancia del bus. De lo contrario, la misma secuencia puede volver a ocurrir. (¡O bien, otro mensaje de mayor prioridad puede hacer que ambos se apaguen por un tiempo!)
Respuesta extendida inspirada en la respuesta de @ clabbacchio a continuación.
Usted menciona "nodos desagradables", y clabbacchio establece el punto válido de que si dos nodos transmiten en momentos diferentes, cada receptor debe decidir qué hacer con sus múltiples recepciones.
Esto fue demostrado por un hack el año pasado . El documento analiza, en la sección "Características específicas de PSCM", cómo un atacante puede sincronizarse con los mensajes regulares en el bus y reproducir su malvado mensaje justo antes del que la ECU "buena" está a punto de enviar. La ECU receptora acepta el mensaje anterior, actualiza su contador de mensajes y luego descarta los mensajes "buenos" como erróneos, porque su contador de mensajes no se ha incrementado.