Kaj se zgodi, če sta dva segmenta ID-ja vozlišča enaka?
CAN-bus omrežja ne dovoljujejo, da bi dve vozlišči načeloma imeli isti segment ID, a kaj se zgodi, če sta dva segmenta ID-ja vozlišča enaka?
Pred poskusom moramo jasno razumeti strukturo sporočil CAN in načela arbitraže.
Prvič, struktura sporočil CAN
Najbolj razširjen standard CAN-bus omrežja je različica V2.0. Ta standard je nadalje razdeljen na dele A in B. Njihova glavna razlika je dolžina ID kode na območju arbitraže. Med njimi je CAN2.0A (standardni okvir) 11 bitnih ID, CAN2.0B (razširitveni okvir) je 29-bitni ID. Spodnja tabela 1 prikazuje strukturo sporočila CAN:
Tabela 1 Struktura sporočil CAN
| Ime faze | Dolžina faze / bit | Opis | |
| SOF | 1 | pomeni začetek faze podatkov in jih sestavljajo en sam prevladujoči bit | |
| Faza Abtrition | Standardni okvir | 12 | Označuje prednost okvirja, sestavlja 11 naslovov ID in 1 RTR |
| podaljšan okvir | 32 | Označuje prednostno okno, sestavlja 29 naslovov ID, 1-bitni SRR, IDE, razširjen in RTR | |
| Nadzorna faza | 6 | pomeni kodo skupine in rezervirane bite podatkovne dolžine podatkovnega segmenta | |
| Podatkovna faza | 0 ~ 8 | vsebina podatkov, kontrolna faza nadzor podatkov dolžino | |
| CRC | 16 | preveri prenos podatkov erro, od SOF do podatkovne faze, vse vsebine, razen polnilnih bitov | |
| ACK | 2 | drugo vozlišče potrdite, da je ta okvir pravilno sprejet | |
| Konec okvirja | 7 | pomeni konec okvirja | |
Drugič, načelo arbitraže
CAN-arbitraža temelji na "liniji in načelu", kot je prikazano na sliki 1. Ko primopredajnik oddaja signale različnih ravni hkrati, je recesivna raven vedno pokrita s prevladujočo ravnijo. Med pošiljanjem sporočila krmilnik CAN spremlja, ali je status vodila enak tistemu, ki ga sam pošlje. Če pride do nedoslednosti v segmentu ID, se bo pojavila arbitraža. Če se pojavi na drugih območjih, se sproži ustrezna napaka.
Naslednja je ključna točka. Kaj, če sta dva segmenta ID-ja vozlišča enaka? Poskus smo začeli z dvema karticama CAN in enim CANScope. Kartica CAN simulira standardno vozlišče CAN za pošiljanje in prejemanje sporočil, CANScope pa spremlja komunikacijo, kot je prikazano na sliki 2.
Slika 2 Gradnja platforme eksperimentov
Tretjič, poskus enega "ID segment je enak, vendar so podatki drugačni"
Kartica CAN se uporablja za pošiljanje CAN-okvira s podatki ID 000H na 01020304050607H in drugo kartico CAN za pošiljanje CAN-okvira s podatki 000H na 02020304050607H. Podatki, ki jih CANScope posluša, so prikazani na sliki 3. Ugotoviti je mogoče, da obstaja veliko napak pri polnjenju podatkovnega polja.

Slika 3 Polje podatkovnega polja je napačno
Zakaj je to tako? Najprej dobimo valovne oblike, ki ustrezajo sporočilom o prenosu kartic CAN, kot je prikazano na sliki 4. Ker je dvoporno sporočilo standardni podatkovni okvir in vsak okvir vsebuje 8 bajtov podatkov, so valovne oblike, ki ustrezajo obema okvirjema paketov popolnoma enaki v segmentu ID, segmenti RTR, IDE, R0 in DLC. Zato je vloga arbitraže neučinkovita in obe vozlišči menita, da imajo prednost in še naprej pošiljata podatke.
Zdaj se osredotočamo na podatkovni segment, prvi podatki bajtov so enaki, so 00H; drugi bajtni podatki so različni, oziroma 01H, 02H. Puščice na sliki 5 kažejo, da je logika ustreznih bitov 0 oziroma 1. Pred tem smo omenili, da vozlišče CAN zazna, ali je raven vodila enaka ravni, ki jo je poslala pri pošiljanju sporočila. Če pride do neskladja na območju brez arbitraže, se sproži ustrezna napaka, tako da če se oba okvirja pošljejo v vodilo istočasno, se pojavijo napake Bit. Ker bo napaka pri pošiljanju bitov povzročila, da bo vozlišče poslalo 6 prevladujočih bitov, ki kršijo pravil za polnjenje (aktivna napaka uniči podatke okvirja), pride do napake pri polnjenju podatkovnega polja, kot je prikazano na sl. 3.

Slika 5 Konflikti podatkovnega polja
Četrtič, eksperiment dva "isti podatki z istim ID-jem"
Istočasno uporabite dve kartici CAN za pošiljanje CAN-okvirov, katerih ID 000H je 01020304050607H, CANScope pa nadzor komunikacij. Najprej ne preverjamo možnosti "bus response", da bi CANScope deloval samo v načinu poslušanja. Eksperimentalni rezultati so prikazani na sliki 6, delilec odgovora pa je v napačni obliki.
Slika 6 Napaka pri formatiranju odziva razrešnice
Zakaj se to zgodi? V vozlišču, ki pošilja sporočilo, se v segment ACK pošljejo dve recesivni bitji. Če med prvim bitom prejmemo prevladujočo raven, velja, da je okvir pravilno sprejet. Ker dva arbitra menita, da sta pridobili arbitražno pravico, ko imata enak segment arbitraže, čakajo na odziv v segmentu ACK, vendar je v omrežju samo dve vozlišči. Zato v odseku ACK ni mogoče prejeti nobenega odziva in se zgodi napaka razmejitve odzivnika. Preprosto rečeno, ta položaj je podoben dejstvu, da samo eno vozlišče v avtobusu ne bo moglo pošiljati podatkov. Slika 7 prikazuje primerjavo valovnih oblik, kadar v ACK odseku ni odgovora.
Slika 7 ACK Odgovori
Preverimo odziv v avtobusu in znova zaženemo poskus (trenutno je v vozlišču 3 vozlišča). V tem trenutku, kot je prikazano na sl. 8, se podatki o avtobusu pošiljajo in sprejemajo normalno.
Slika 8 Začni odgovor BUS
Povzetek: Kadar dve vozlišči istočasno pošiljajo pakete z istim ID-jem in podatki, se zgodi napaka pri polnjenju podatkovnega polja. Če dve vozli pošiljajo pakete z istim ID-jem in istimi podatki, se ne pojavi nobena napaka, če se druga vozlišča odzovejo. Druga vozlišča so odgovorila z napako odziva. Zato se pri oblikovanju CAN-Busa izogibamo enaki situaciji v segmentu ID.





