Šta se dešava ako su dva segmenta ID čvorova iste?

Apr 04, 2018Ostavi poruku

Šta se dešava ako su dva segmenta ID čvorova isti?




CAN-bus mreže ne dozvoljavaju dva čvora u principu da imaju isti ID segment, ali šta se događa ako su dva segmenta ID čvorova isti?

Prije eksperimenta moramo imati jasno razumijevanje strukture CAN poruka i principa arbitraže.


Prvo, struktura CAN poruka

Najčešće korišćeni CAN-bus mrežni standard je verzija V2.0. Ovaj standard je dalje podeljen na A i B delove. Njihova glavna razlika je dužina ID koda u području arbitraže. Među njima CAN2.0A (standardni okvir) je 11 bitni ID, CAN2.0B (proširiti okvir) je 29 bitni ID. Tabela 1 dole prikazuje strukturu CAN poruke:

Tabela 1 Struktura poruka CAN

Ime faze Duljina faze / bit Opis
SOF 1 podrazumeva početak faze podataka i sastavlja se pomoću jednog dominantnog bita
Faza Abtricija Standardni okvir 12 Označava prioritet okvira, čineći 11 ID adresa i 1 RTR
produženi okvir 32 Označava prioritet okvira, čine 29 ID adresa, 1 bitni SRR, IDE prošireni i RTR
Kontrolna faza 6 označava kod grupe i rezervisane bitove dužine podataka segmenta podataka
Faza podataka 0 ~ 8 sadržaj podataka, kontrolna faza kontroliše dužinu podataka
CRC 16 provjeriti okvir za transimission erro, od SOF-a do faze podataka, sve sadržaje, osim punjenja bitova
ACK 2 drugi čvor potvrđuje da je ovaj okvir pravilno primljen
Kraj okvira 7 znači završetak rama


Drugo, princip arbitraže

CAN-arbitraža je zasnovana na "liniji i principu", kao što je prikazano na slici 1. Kada primopredajnik emituje signale različitih nivoa istovremeno, recesivni nivo uvek pokriva dominantni nivo. Tokom slanja poruke, CAN kontroler će nadgledati da li je status busa isti kao onaj koji je poslao sam. Ako se u segmentu ID pojavljuje nedoslednost, pojavit će se arbitraža. Ako se to desi u drugim područjima, biće pokrenuta odgovarajuća greška.

Sledeća je ključna tačka. Šta ako su dva segmenta ID čvorova isti? Započeli smo eksperiment sa dve CAN kartice i jedan CANScope. CAN kartica simulira CAN standardni čvor za slanje i primanje poruka, a CANScope vrši nadgledanje komunikacije, kao što je prikazano na slici 2.

                                                           

1.jpg

Fig.2 Izgradnja platforme eksperimenta


Treće, eksperiment jedan "ID segment je isti, ali podaci su različiti"

CAN kartica se koristi za slanje CAN rama sa ID 000H podacima na 01020304050607H i drugu CAN karticu za slanje CAN okvira sa 000H podacima na 02020304050607H. Podaci na koje se CANScope čuje su prikazani na slici 3. Može se primetiti da postoji veliki broj grešaka u popunjavanju polja podataka.


2.jpg

Fig.3 Podaci polje popuniti erro

Zašto je to tako? Prvo dobijamo talasne oblike koji odgovaraju dvije poruke prenosa CAN kartice, kao što je prikazano na slici 4. Pošto je dvoličasta poruka standardni okvir podataka, a svaki okvir sadrži 8 bajtova podataka, oblici talasa koji odgovaraju dva frejma paketa potpuno isti u ID segmentu, segmentima RTR, IDE, R0 i DLC. Zbog toga je uloga arbitraže neefikasna i oba čvora smatraju da imaju prioritet i nastavljaju da šalju podatke.

3.jpg

Sada se fokusiramo na segment podataka, podaci prvog bajta su isti, 00H; drugi bajt podaci su različiti, odnosno 01H, 02H. Strelice na slici 5 ukazuju da je logika odgovarajućih bitova 0 i 1 respektivno. Ranije smo pomenuli da će CAN čvor otkriti da li je nivo busa isti kao nivo koji je poslao pri slanju poruke. Ukoliko se neusklađenost pojavljuje u oblasti koja nije arbitražna, pokrenuta je odgovarajuća greška, pa ako se dva frejma šalju u istovremeno vrijeme bitne greške. Pošto greška pri slanju bita će dovesti čvor da pošalje 6 dominantnih bitova koji krše pravila punjenja (aktivna greška uništava podatke okvira), pojavljuje se greška u popunjavanju polja podataka, kao što je prikazano na Sl. 3.


4.jpg

Sl. 5 konflikti na polju podataka


Četvrto, eksperiment dva "isti podaci sa istim ID-om"

Istovremeno, koristite dvije CAN kartice za slanje CAN okvira čiji je ID 000H podatak na 01020304050607H, a CANScope vrši nadzor komunikacije. Prije svega, ne proveravamo opciju "bus response" kako bi CANScope radili u režimu samo slušanja. Rezultati eksperimenta su prikazani na slici 6, a razdjelnik odgovora je u pogrešnom formatu.

5.jpg

Slika 6 Greška u formatu za razdvajanje odgovora


Zašto se to dogodilo? Čvor koji šalje poruku poslaće dva recesivna bita u ACK segmentu. Ako se u prvom bitu primi dominantni nivo, smatra se da je okvir pravilno primljen. Pošto dva arbitra smatraju da su dobili arbitražno pravo kada imaju isti arbitražni segment, čekaju odgovor u ACK segmentu, ali u mreži postoje samo dva čvora. Prema tome, u ACK segmentu se ne može primiti nikakav odgovor, a dođe do greške razgraničenja odgovora. Jednostavno rečeno, ova situacija je slična činjenici da samo jedan čvor u autobusu neće moći da šalje podatke. Slika 7 prikazuje poređenje talasa kada nema odgovora u ACK segmentu.

6.jpg

Slika 7 ACK Odgovor


Provjeravamo odgovor autobusa i ponovo pokrenemo eksperiment (u ovom trenutku postoje tri čvorove u autobusu). U ovom trenutku, kao što je prikazano na Sl. 8, podaci sabirnice se prenose i primaju normalno.

7.jpg

Slika 8 Započnite BUS odgovor


Sažetak: Kada dva čvora pošalju pakete sa istim ID-om i podacima istovremeno, javlja se greška pri padanju polja podataka. Kada dva čvora pošalju pakete sa istim ID-om i istim podacima, ne dođe do greške ako drugi čvorovi odgovore. Ostali čvorovi su odgovorili sa greškom odgovora. Zbog toga treba izbjeći istu situaciju u ID segmentu prilikom dizajniranja CAN sabirnice.


Pošaljite upit

whatsapp

Telefon

E-pošte

Upit