Mis juhtub, kui kaks sõlme ID segi on samad?

Apr 04, 2018Jäta sõnum

Mis juhtub, kui kahe sõlme ID segmendid on samad?




CAN-bussivõrgud ei luba kahel võrgul põhimõtteliselt sama ID-segmenti, aga mis juhtub, kui kaks sõlme ID-i segmenti on samad?

Enne katset peame olema selge arusaam CAN-sõnumite struktuurist ja vahekohtu põhimõtetest.


Esiteks CAN-sõnumi struktuur

Kõige laialdasemalt kasutatav CAN-bus võrgu standard on V2.0 versioon. See standard jaguneb A ja B osaks. Nende peamine erinevus on ID-koodi pikkus vahekohtu piirkonnas. Nende hulgas on CAN2.0A (standard raam) 11-bitine ID, CAN2.0B (laiendatav kaader) on 29-bitine ID. Allpool toodud tabel 1 näitab CAN-sõnumi struktuuri:

Tabel 1 CAN-sõnumi struktuur

Faasi nimi Faasi pikkus / bitt Kirjeldus
SOF 1 tähendab andmete faasi alustamist ja moodustab ühe domineeriva natuke
Abstratsioonifaas Standard raam 12 Näitab raami prioriteetsust, moodustab 11 ID-aadressi ja 1 RTR-i
laiendatud raami 32 Näitab raami prioriteetsust, moodustades 29 ID-aadressi, 1-bitine SRR, IDE laiendatud ja RTR
Juhtimisfaas 6 rühmade kood ja andmegmendi andmete pikkuse reserveeritud bittid
Andmefaas 0 ~ 8 andmesisu, kontrolli faas kontrollib andmete pikkust
CRC 16 kontrollige kaadri transmissionaarset erro, SOF-i andmefaasi, kogu sisu, välja arvatud täitmise bittid
ACK 2 teine sõlm kinnitab seda kaadrit õigesti vastu võetud
Raam end 7 raamide otsa


Teiseks, vahekohtu põhimõte

CAN bussi arbitraaž põhineb joonisel 1 kujutatud joonisel 1 toodud joonisel. Kui transiiver helistab eri tasemete signaale samal ajal, on retsessiivsuse tase alati domineeriv tasand. Sõnumi saatmise ajal kontrollib CAN-kontroller, kas bussi olek on sama, mis see ise saadab. Kui ID-segmendis esineb vastuolu, toimub vahekohus. Kui see tekib teistes valdkondades, käivitub vastav viga.

Järgnevalt on põhipunkt. Mis siis, kui kaks sõlme ID segmenti on samad? Alustasime kahte CAN-kaarti ja ühte CANScope'i katset. CAN-kaart simuleerib CAN-i standardseadet sõnumite saatmiseks ja vastuvõtmiseks ning CANScope teostab sideseanssi, nagu on näidatud joonisel 2.

                                                           

1.jpg

Joonis 2 Eksperimendi platvormi ehitamine


Kolmandaks proovige üks "ID-segment on sama, kuid andmed on erinevad"

CAN-kaarti saab CAN-kaadri saatmiseks ID 000H andmega 01020304050607H-le ja teise CAN-kaarti CAN-kaadri saatmiseks koos 000H andmega 02020304050607H-le. Andmed, mida CANScope kuulab, on näidatud joonisel 3. Võib märgata, et on palju andmevälja täitmise vigu.


2.jpg

Joonis 3 Andmevälja täidetakse erro

Miks see nii on? Esmalt saadakse lainekujud, mis vastavad kahele CAN-kaardi edastus sõnumile, nagu on näidatud joonisel 4. Kuna kahetine sõnum on standardne andmekaader ja iga kaader sisaldab 8 baiti andmeid, on lainekujud, mis vastavad pakettide kahele raamistikule ID-segmendis täpselt sama, RTR, IDE, R0 ja DLC segmendid. Seepärast on vahekohtumenetluse roll ebaefektiivne ja mõlemad sõlmed peavad ennast esmatähtsaks ja jätkavad andmete saatmist.

3.jpg

Nüüd keskendume andmeside segmendile, esimesed baiti andmed on samad, on 00H; teised baidiandmed on erinevad, vastavalt 01H, 02H. Joonisel 5 olevad nooled näitavad, et vastavate bittide loogika on vastavalt 0 ja 1. Varem me mainisime, et CAN-sõlm tuvastab, kas bussi tase on sama kui sõnumi saatmisel saadetud tase. Kui vastuolu esineb mitte-vahekohtumenetluses, käivitub vastav viga, nii et kui kaks kaadrit saadetakse bussile samal ajal, peavad ilmnema bitivigad. Kuna natuke saatmise viga põhjustab sõlme saatmise 6 valitsevat bitti, mis rikub täitmise reeglit (aktiivne viga hävitab raamandmed), ilmub andmevälja täitmise viga, nagu on näidatud joonisel fig. 3


4.jpg

Joonis 5 Andmeväljakonfliktid


Neljandaks katsetage kahte "samad andmed sama ID-ga"

Samal ajal kasutage kahte CAN-kaarti CAN-kaadrite saatmiseks, mille ID on 000H andmed 01020304050607H-le, ja CANScope teostab sideseanssi. Kõigepealt me ei kontrolli "bus response" võimalust teha CANScope tööd ainult kuulamisrežiimis. Katse tulemused on näidatud joonisel 6 ja vastuse eraldaja on vales vormis.

5.jpg

Joonis 6 Vastuse eraldaja vorminguviga


Miks see juhtub? Sõnum, mis saadab sõnumi, saadab ACK segmendis kaks retsessiivset bitti. Kui esimese biti saamisel on domineeriv tase, loetakse raami õigeks vastuvõtmiseks. Kuna kaks vahekohtunikku arvavad, et nad on saavutanud vahekohtu õiguse, kui neil on sama vahekohtu segment, ootavad nad ACK segmendis vastust, kuid võrgus on ainult kaks võrku. Seepärast ei saa ACK-segmendis vastust saada ning tekib vastuse eraldaja viga. Lihtsamalt öeldes on see olukord sarnane asjaolule, et bussis ei saa ainult andmeid edastada. Joonisel 7 on kujutatud lainekuju võrdlust, kui ACK-segmendis puudub vastus.

6.jpg

Fig.7 ACK Vasta


Kontrollime bussi vastust ja alustage katset uuesti (praegu on bussis 3 sõlme). Sel ajal, nagu on näidatud joonisel fig. 8, edastatakse bussiandmeid ja neid saab tavaliselt.

7.jpg

Fig.8 Start BUS Reply


Kokkuvõte: kui kaks sõlme saadavad üheaegselt sama ID-ga ja andmega pakette, tekib andmevälja lisamise viga. Kui kaks sõlme saadavad sama ID-ga ja samade andmetega pakette, ei esine viga, kui teised sõlmed vastavad. Teised sõlmed vastas vastuse veale. Seetõttu peaksime CAN-bussi kavandamisel vältima samasugust olukorda ID-segmendis.


Küsi pakkumist

whatsapp

Telefoni

E-posti

Küsitlus