Sekcja 6.1 specyfikacji CAN :
BIT ERROR: Jednostka, która wysyła trochę do magistrali, monitoruje również magistralę. BIT ERROR musi zostać wykryty w tym czasie, gdy monitorowana wartość bitu różni się od wysyłanej wartości bitu. Wyjątkiem jest wysłanie bitu „recesywnego” podczas wypchanego strumienia bitów pola ARBITRATION FIELD lub podczas SLOTA ACK.
Tak więc węzeł, który jako pierwszy przesyła „1”, gdy drugi przesyła „0”, odnotuje błąd bitowy, a następnie zasygnalizuje błąd w normalny sposób - przesyłając flagę błędu (patrz sekcja 3.1.3), jak opisano formalnie w sekcji 6.2.
Nieformalnie, jeśli ten węzeł jest aktywny (co powinno być zwykłym przypadkiem), wyśle flagę błędu 6 dominujących bitów, którą wszystkie inne węzły również wykryją (jako błąd rzeczy). Powoduje to całkowite zniszczenie tego komunikatu:
- nikt tego nie otrzyma
- żaden z nadajników nie będzie myślał, że z powodzeniem cokolwiek przesłał.
Każdy nadajnik będzie następnie próbował retransmitować - w zależności od dokładnego czasu retransmisji, jeden może wystartować wystarczająco wcześniej, a drugi kontrolę wzmocnienia magistrali. W przeciwnym razie ta sama sekwencja może się powtórzyć. (Lub inny komunikat o wyższym priorytecie może zniechęcić ich na chwilę!)
Rozszerzona odpowiedź inspirowana odpowiedzią @ clabbacchio poniżej.
Wspominasz o „paskudnych węzłach”, a clabbacchio słusznie wskazuje, że jeśli dwa węzły transmitują w różnych momentach, każdy odbiornik musi zdecydować, co zrobić z wieloma odbiornikami.
Zostało to wykazane przez włamanie w zeszłym roku . Artykuł omawia, w sekcji „Specyfika PSCM”, w jaki sposób atakujący może zsynchronizować się ze zwykłymi komunikatami w autobusie i odtworzyć swoją złą wiadomość tuż przed tą, którą „dobry” ECU ma zamiar wysłać. Odbierający ECU akceptuje wcześniejszy komunikat, aktualizuje swój licznik wiadomości, a następnie odrzuca „dobre” wiadomości jako błędne, ponieważ jego licznik wiadomości nie zwiększył się.