Kaj se zgodi, če sta dva segmenta ID-ja vozlišča enaka?

Apr 04, 2018Pustite sporočilo

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.

                                                           

1.jpg

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.


2.jpg

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.

3.jpg

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.


4.jpg

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.

5.jpg

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.

6.jpg

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.

7.jpg

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.


Pošlji povpraševanje

whatsapp

Telefon

E-pošta

Povpraševanje