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.
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.

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.
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

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.
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.
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.
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.





