Mitä tapahtuu, jos kaksi solmun ID-segmenttiä ovat samat?
CAN-väylän verkoissa ei sallita kahden solmun periaatteessa samaa ID-segmenttiä, mutta mitä tapahtuu, jos kaksi solmun ID-segmenttiä ovat samat?
Ennen kokeilua meillä on oltava selkeä käsitys CAN-viestien rakenteesta ja välimiesmenettelyn periaatteista.
Ensinnäkin CAN-sanoman rakenne
Yleisimmin käytetty CAN-väylän verkko-standardi on V2.0-versio. Tämä standardi jaetaan edelleen A- ja B-osiin. Niiden tärkein ero on ID-koodin pituus välimiesalueella. Niistä CAN2.0A (vakiokehys) on 11 bittiä, CAN2.0B (laajennuskehys) on 29-bittinen ID. Alla olevassa taulukossa 1 esitetään CAN-sanoman rakenne:
Taulukko 1 CAN-sanoman rakenne
| Vaihe nimi | Vaihepituus / bitti | Kuvaus | |
| SOF | 1 | tarkoittaa datavaiheen alkamista ja koostuu yhdestä hallitsevasta bitistä | |
| Abtrition Phase | Vakiokehys | 12 | Ilmaisee kehyksen prioriteetti, koostuu 11 ID-osoitteesta ja 1 RTR |
| laajennettu kehys | 32 | Ilmaisee kehyksen prioriteetti, koostuu 29 ID-osoitteesta, 1 bitti SRR, IDE laajennettu ja RTR | |
| Ohjausvaihe | 6 | tarkoittaa datasegmentin datapituuden ryhmäkoodia ja varattuja bittejä | |
| Data-vaihe | 0 ~ 8 | datasisältö, ohjausvaihe ohjaa datan pituutta | |
| CRC | 16 | tarkista kehyksen transimission erro, SOF: stä datavaiheeseen, kaikki sisältö, paitsi täyttöbitit | |
| ACK | 2 | toinen solmu vahvistaa tämän kehyksen vastaanotettavaksi oikein | |
| Kehyksen loppu | 7 | tarkoittaa kehyksen päätä | |
Toiseksi, välimiesmenettelyn periaate
CAN-väylän välitystoiminto perustuu "linjaan ja periaatteeseen", kuten kuviossa 1 esitetään. Kun lähetin-vastaanotin lähettää samanaikaisesti eri tasojen signaaleja, resessiivinen taso kattaa aina määräävä taso. Viestin lähettämisen aikana CAN-ohjain tarkkailee, onko väylän tila sama kuin itse lähettämä. Jos epäjohdonmukaisuus tapahtuu ID-segmentissä, välimiesmenettely tapahtuu. Jos se tapahtuu muilla alueilla, vastaava virhe käynnistyy.
Seuraavassa on avainkysymys. Entä jos kaksi solmun ID-segmenttiä ovat samat? Aloitimme kokeilun kahdella CAN-kortilla ja yhdellä CANScopella. CAN-kortti simuloi CAN-standardisolmua lähettämään ja vastaanottamaan viestejä, ja CANScope tekee viestinnän valvonnan, kuten kuviossa 2 on esitetty.
Kuva 2 Kokeilulaitteen rakentaminen
Kolmanneksi kokeile yhtä "ID-segmentti on sama, mutta tiedot ovat erilaiset"
CAN-korttia käytetään CAN-kehyksen lähettämiseen ID 000H -datalla 01020304050607H ja toinen CAN-kortti CAN-kehyksen lähettämiseksi 000H-datalla 02020304050607H. Tiedot, jotka CANScope kuuntelee, on esitetty kuviossa 3. Voidaan havaita, että on paljon tietokentän täyttövirheitä.

Kuva 3 Tietokenttä täyttyy
Miksi tämä on niin? Saamme ensin aaltomuodot, jotka vastaavat kahta CAN-kortin lähetysviestiä, kuten kuviossa 4 on esitetty. Koska kaksinapainen viesti on vakiotietokehys ja kukin kehys sisältää 8 tavua dataa, pakettien kaksi kehystä vastaavat aaltomuodot ovat täsmälleen sama ID-segmentissä, RTR, IDE, R0 ja DLC segmenteissä. Siten välimiesmenettelyn rooli on tehoton ja molemmat solmut pitävät itsensä ensisijaisina ja jatkavat tietojen lähettämistä.
Nyt keskitymme datasegmenttiin, ensimmäisen tavun tiedot ovat samat, ovat 00H; toiset tavutiedot ovat erilaiset, vastaavasti 01H, 02H. Kuvion 5 nuolet osoittavat, että vastaavien bittien logiikka on vastaavasti 0 ja 1. Aiemmin mainittiin, että CAN-solmu havaitsee, onko väylätaso sama kuin viestin lähettämiseen lähetetty taso. Jos epäjohdonmukaisuus esiintyy ei-välitysalueella, vastaava virhe käynnistyy, joten jos kaksi kehystä lähetetään samaan aikaan väylään Bittivirheet on tehtävä. Koska bittivirheviesti aiheuttaa sen, että solmu lähettää 6 dominanttia bittiä, jotka rikkoo täyttösääntöä (aktiivinen virhe tuhoaa kehysdatan), datakentän täyttövirhe ilmenee, kuten kuviossa 2 esitetään. 3.

Kuvio 5 Data Field Conflicts
Neljänneksi kokeile kaksi "samaa dataa samalla tunnuksella"
Samanaikaisesti voit käyttää kahta CAN-korttia lähettämään CAN-kehyksiä, joiden tunnus on 000H-data 01020304050607H ja CANScope tekee viestintätarkkailua. Ennen kaikkea emme tarkista "väylävastausta" -vaihtoehtoa, jotta CANScope toimisi vain kuuntelutilassa. Koetulokset on esitetty kuviossa 6, ja vastauserotin on väärässä muodossa.
Kuva 6. Vastauserotusmuoto virhe
Miksi näin tapahtuu? Viestin lähettävä solmu lähettää kaksi recessive-bittiä ACK-segmenttiin. Jos hallitseva taso vastaanotetaan ensimmäisen bitin aikana, kehystä pidetään oikein vastaanotettuna. Koska molemmat välimiehet katsovat, että he ovat saaneet välimiesoikeuden, kun heillä on sama välimiesosa, he odottavat vastausta ACK-segmentissä, mutta verkossa on vain kaksi solmua. Tästä syystä ACK-segmenttiin ei voida vastaanottaa vastausta, ja vastauserotusvirhe esiintyy. Yksinkertaisesti sanottuna tämä tilanne on samanlainen kuin se, että väylässä vain yksi solmu ei pysty lähettämään tietoja. Kuvio 7 esittää aaltomuodon vertailua, kun ACK-segmentissä ei ole vastausta.
Kuva 7 ACK Vastaus
Tarkistamme väylävastauksen ja aloitamme kokeilun uudelleen (tällä hetkellä linjalla on 3 solmua). Tällä hetkellä, kuten kuviossa 2 esitetään, 8, väylädata lähetetään ja vastaanotetaan normaalisti.
Kuva.8 Start BUS Reply
Yhteenveto: Kun kaksi solmua lähettää paketteja, joilla on sama tunnus ja tiedot samanaikaisesti, ilmestyy datakentän täyttövirhe. Kun kaksi solmua lähettää paketteja, joilla on sama tunnus ja samat tiedot, virhe ei ilmene, jos muut solmut reagoivat. Muut solmut vastasivat vastausvirheellä. Siksi meidän on vältettävä samaa tilannetta ID-segmentissä suunnittelemalla CAN-väylä.





