Čo sa stane, ak dva segmenty ID uzlov sú rovnaké?

Apr 04, 2018 Zanechajte správu

Čo sa stane, ak sú dva segmenty ID uzlov rovnaké?




Siete zbernice CAN nepovoľujú, aby dva uzly mali v zásade rovnaký segment ID, ale čo sa stane, ak sú segmenty dvoch uzlov ID rovnaké?

Pred experimentom musíme jasne pochopiť štruktúru správ CAN a zásady arbitráže.


Po prvé, štruktúra správ CAN

Najpoužívanejšou normou siete CAN-Bus je verzia V2.0. Táto norma je ďalej rozdelená na časti A a B. Ich hlavným rozdielom je dĺžka ID kódu v rozhodcovskej oblasti. Medzi nimi CAN2.0A (štandardný rámec) je 11-bitové ID, CAN2.0B (expand frame) je ID 29 bitov. Tabuľka 1 ukazuje štruktúru správy CAN:

Tabuľka 1 Štruktúra správ CAN

Názov fázy Dĺžka fázy / bit popis
SOF 1 znamená začiatok dátovej fázy a tvorí ho jediným dominantným bitom
Fáza abtrácie Štandardný rámček 12 Označuje prioritu rámca, doplnenie o 11 ID adries a 1 RTR
rozšírený rámček 32 Označuje prioritu rámca, doplnenie o 29 ID adries, 1 bit SRR, rozšírené IDE a RTR
Kontrolná fáza 6 znamená kód skupiny a rezervované bity dĺžky údajov segmentu údajov
Dátová fáza 0 až 8 dátový obsah, kontrola fázy riadenia dĺžky dát
CRC 16 skontrolovať chybu transmisie rámca, od SOF do dátovej fázy, všetok obsah okrem plniacich bitov
ACK 2 iný uzol potvrdzuje, že tento rámček bude prijatý správne
Koniec rámu 7 je koniec rámu


Po druhé, princíp arbitráže

Licencia zbernice CAN je založená na "línii a princípe", ako je znázornené na obrázku 1. Keď transceiver vysiela signály rôznych úrovní v rovnakom čase, recesívna úroveň je vždy pokrytá dominantnou úrovňou. Počas odosielania správy riadiaci systém CAN kontroluje, či je stav zbernice rovnaký ako ten, ktorý bol odoslaný samostatne. Ak dôjde k nekonzistencii v segmente ID, dôjde k arbitráži. Ak sa vyskytne v iných oblastiach, spustí sa príslušná chyba.

Nasledujúci je kľúčový bod. Čo ak sú dva segmenty ID uzlov rovnaké? Pokus sme spustili pomocou dvoch kariet CAN a jedného CANScope. Karta CAN simuluje štandardný uzol CAN na odosielanie a prijímanie správ a CANScope monitoruje komunikáciu, ako je znázornené na obrázku 2.

                                                           

1.jpg

Obr.2 Konštrukcia plošiny experimentu


Po tretie, experiment jeden "Segment ID je rovnaký, ale údaje sú iné"

Karta CAN sa používa na odoslanie rámca CAN s údajmi ID 000H na 01020304050607H a ďalšou kartou CAN na odoslanie rámca CAN s 000H údajmi na 02020304050607H. Údaje, ktoré CANScope počúva, sú zobrazené na obrázku 3. Je zrejmé, že existuje veľké množstvo chýb vyplnenia dátového poľa.


2.jpg

Obr.3 Chyba vyplnenia dátového poľa

Prečo je to tak? Najprv sme získali krivky zodpovedajúce dvom správam o prenose karty CAN, ako je to znázornené na obrázku 4. Pretože dvojpólová správa je štandardný dátový rámec a každý snímok obsahuje 8 bajtov dát, krivky zodpovedajúce dvom rámcom paketov sú presne to isté v segmentoch ID, RTR, IDE, R0 a DLC. Úloha rozhodcovského konania je preto neúčinná a obe uzly sa považujú za prioritné a naďalej posielajú údaje.

3.jpg

Teraz sa sústredíme na dátový segment, prvé bajtové údaje sú rovnaké, sú 00H; druhé dáta bytu sú odlišné, respektíve 01H, 02H. Šípky na obrázku 5 ukazujú, že logika zodpovedajúcich bitov je 0 a 1. Predtým sme spomenuli, že uzol CAN zistí, či úroveň zbernice je rovnaká ako úroveň, ktorú odoslal pri odosielaní správy. Ak dôjde k nekonzistencii v oblasti, ktorá nie je rozhodcovská, je spustená príslušná chyba, takže ak sú dva rámce zaslané do zbernice súčasne, musia sa vyskytnúť bitové chyby. Pretože chyba odoslania bitov spôsobí, že uzol vysiela 6 dominantných bitov, ktoré porušujú pravidlo plnenia (aktívna chyba ničí dáta rámca), nastane chyba plnenia dátového poľa, ako je znázornené na obr. 3.


4.jpg

Obr. 5 Konflikty v údajových poliach


Po štvrté, experimentujte dva "rovnaké údaje s rovnakým ID"

Zároveň použite dve CAN karty na odosielanie CAN rámcov, ktorých ID je 000H dáta na 01020304050607H a CANScope monitoruje komunikáciu. V prvom rade nekontrolujeme možnosť "odpoveď zbernice", aby CANScope pracoval v režime iba na počúvanie. Experimentálne výsledky sú uvedené na obrázku 6 a oddeľovač odozvy je v nesprávnom formáte.

5.jpg

Obr.6 Chyba formátu oddeľovača odozvy


Prečo sa to deje? Uzol, ktorý odosiela správu, pošle dva segmenty recesívne v segmente ACK. Ak je počas prvého bitu prijatá dominantná úroveň, rám sa považuje za správne prijatý. Pretože obaja rozhodcovia si myslia, že získali právo rozhodcovského konania, keď majú rovnaký rozhodcovský segment, čakajú na odpoveď v segmente ACK, ale v sieti sú len dva uzly. Preto v sekcii ACK nemôže byť prijatá žiadna odpoveď a nastane chyba oddeľovača odozvy. Jednoducho povedané, táto situácia je podobná skutočnosti, že iba jeden uzol v zbernici nebude schopný odoslať dáta. Obrázok 7 znázorňuje porovnanie priebehu krivky v prípade, že v segmente ACK nie je žiadna odozva.

6.jpg

Obr.7 Odpoveď ACK


Skontrolujeme odpoveď na zbernicu a znova spustime experiment (v súčasnosti je v zbernici 3 uzly). V tomto čase, ako je znázornené na obr. 8, dáta zbernice sa prenášajú a prijímajú normálne.

7.jpg

Obr.8 Spustite odpoveď BUS


Zhrnutie: Keď dva uzly odosielajú pakety s rovnakým ID a dátami súčasne, dochádza k chybe padding dátového poľa. Keď dva uzly odosielajú pakety s rovnakým ID a rovnakými dátami, nevyskytne sa žiadna chyba, ak odpovedia iné uzly. Ostatné uzly reagovali s chybou odpovede. Preto by sme sa mali vyhnúť rovnakej situácii v segmente ID pri navrhovaní zbernice CAN.


Zaslať požiadavku

whatsapp

Telefón

E-mailom

Vyšetrovanie