Seção 6.1 da especificação CAN :
ERRO DE BOCADO: Uma unidade que está enviando um pouco no barramento também monitora o barramento. Um BIT ERROR deve ser detectado nesse momento, quando o valor do bit monitorado for diferente do valor do bit enviado. Uma exceção é o envio de um bit 'recessivo' durante o fluxo de bits recheado do ARBITRATION FIELD ou durante o ACK SLOT.
Portanto, o nó que primeiro transmite um '1' quando o outro está transmitindo um '0' notará um Erro de Bit e sinalizará um erro normalmente - transmitindo um sinalizador de erro (consulte a Seção 3.1.3), como descrito formalmente na seção 6.2.
Informalmente, se esse nó estiver com erro ativo (que deve ser o caso usual), ele transmitirá um sinalizador de erro de 6 bits dominantes, que todos os outros nós também detectarão (como um erro de material). Isso tem o efeito de destruir completamente essa mensagem:
- ninguém vai receber
- nenhum dos transmissores achará que transmitiu algo com sucesso.
Cada transmissor tentará retransmitir - dependendo do tempo preciso das retransmissões, um pode iniciar suficientemente antes do outro o controle de ganho do barramento. Caso contrário, a mesma sequência pode acontecer novamente. (Ou outra mensagem de prioridade mais alta pode adiar os dois por um tempo!)
Resposta estendida inspirada na resposta de @ clabbacchio abaixo.
Você menciona "nós desagradáveis" e o clabbacchio afirma que, se dois nós transmitem em momentos diferentes, cada receptor precisa decidir o que fazer com suas múltiplas recepções.
Isso foi demonstrado por um hack no ano passado . O artigo discute, na seção "Especificações do PSCM", como um invasor pode sincronizar com as mensagens regulares no barramento e reproduzir sua mensagem maligna imediatamente antes daquela que a ECU "boa" está prestes a enviar. A ECU receptora aceita a mensagem anterior, atualiza seu contador de mensagens e descarta as mensagens "boas" como incorretas, porque seu contador de mensagens não foi incrementado.