A CAN ( Controller Area Network ) adatbusz egy soros rendszerbusz , amelyet széles körben használnak számos iparágban, különösen az autóiparban .
Az ISO 11898 szabvány szerint lett szabványosítva .
A multiplexelés néven ismert megközelítést alkalmazza , amely abból áll, hogy ugyanahhoz a kábelhez ( buszhoz ) csatlakozik nagyszámú számítógép, amelyek ezért egymás után kommunikálnak. Ez a technika kiküszöböli annak szükségességét, hogy dedikált vonalakat kössenek az egyes továbbítandó információkhoz (pont-pont kapcsolat). Amint egy rendszer (autó, repülőgép, hajó, telefonhálózat stb. ) Eléri a bonyolultság bizonyos szintjét, a pontról pontra történő megközelítés lehetetlenné válik a telepítésre szánt kábelek hatalmas mennyisége és költségei miatt. tömeg, anyagok, munka, karbantartás).
A multiplex buszok (főként CAN) bevezetése az autóba a járművek kábelmennyiségének csökkentését tűzte ki célul ( autónként akkor legfeljebb 2 km kábel volt), de mindenekelőtt ez lehetővé tette az elosztott számítógépek és érzékelők számának robbanását. és a megfelelő szolgáltatásokat (a fogyasztás csökkentése, a környezetszennyezés csökkentése , az aktív / passzív biztonság , a kényelem, a hibakeresés stb. ), miközben csökkenti a kábelek hosszát.
A CAN adatbusz a Karlsruhei Egyetem és a Bosch közötti együttműködés eredménye .
Először az autóiparban használták , de jelenleg a legtöbb iparágban, például a repülésben , szabványosított CAN-alapú protokollok révén használják.
Úgy vezették be az Intel a 1985 , de nem volt egységes az ISO elejéig 1991s.
1992-ben több vállalat jött létre, hogy létrehozzák a CAN-t az Automation-ben, amely a CAN népszerűsítését célozza.
Megjelent az első FD nevű fejlesztés a „Flexibel Data rate” számára.
A Bosch által folytatott második , XL nevű evolúció folyamatban van.
A fizikai rétegnek két szabványa van:
A CAN egy fél-duplex kétirányú soros adatbusz az autóiparban, de egyirányú - szimplex - az aeronautikában a determinisztikus viselkedés elérésére szolgál .
Minden csatlakoztatott eszköz, úgynevezett „csomópont”, képes kommunikálni az összes többivel.
Egy „alacsony sebességű” CAN-busz esetében a csomópontok száma 20-ra korlátozódik. Egy „nagy sebességű” CAN-adatbusz esetében 30-ra korlátozódik.
Minden csomópont csavart (árnyékolt vagy nem árnyékolt) páron keresztül csatlakozik a buszhoz .
A busz két végét 120 Ω ± 10% -os ellenállásokkal kell visszahurkolni (tűrés 108 Ω és 132 Ω között).
A CAN adat buszhoz való hozzáférés a CSMA / CR technikát követi (minden állomás meghallgatása beszéd előtt, de nem beszél, ütközések feloldása prioritás szerint).
A busz maximális hosszát az alkalmazott sebesség határozza meg:
Sebesség ( kbit / s ) |
Hossz ( m ) |
---|---|
1000 | 30 |
800 | 50 |
500 | 100 |
250 | 250 |
125 | 500 |
62.5 | 1000 |
20 | 2500 |
10. | 5000 |
A használt kódolás NRZ típusú (nincs visszatérés 0-ra) :
A csomópontokat a buszon az elektromos szempontból a „vezetékes VAGY” elv (a logikai szempontból a „vezetékes ÉS” elv) köti össze, ami azt jelenti, hogy két csomópontból történő egyidejű átvitel esetén a 0 érték felülírja az 1. értéket.
Tehát azt mondjuk:
A differenciálpár két vonala közötti logikai állapotok és elektromos szintek a kis sebességű CAN számára a következők:
Logikai állapot | V CANH-GND | V CANL-GND | V CANH-CANL |
---|---|---|---|
Recesszív vagy "1" | 1,75 V | 3,25 V | -1,5 V |
Domináns vagy "0" | 4 V | 1 V | 3 V |
A logikai állapotok és az elektromos szintek, amelyeket a differenciálpár két vonala között használnak a nagy sebességű ADC számára, a következők:
Logikai állapot | V CANH-GND | V CANL-GND | V CANH-CANL |
---|---|---|---|
Recesszív vagy "1" | 2,5 V | 2,5 V | 0–0,5 V |
Domináns vagy "0" | 3,5 V | 1,5 V | 0,9 és 2 V között |
A bit időtartamát „Névleges bitidőnek” nevezzük.
Minden bit több szegmensből áll, amelyeket az egyes csomópontok belső órája ütemez:
Az "Időkvantum" az az időegység, amely az egyes csomópontok belső oszcillátorainak periódusából épül fel.
A busz frekvenciája legfeljebb 1 MHz, az oszcillátoroké pedig több MHz, az „Időkvantum” általában több órajelet (1 és 32-szeres) ér.
Az egyes szegmensek időtartama a következő:
Szegmens | Időtartam az "Időkvantumban" |
---|---|
Szinkronizálás | 1 |
Terjedés | 1-től 8-ig |
Pufferfázis n o 1 | 1-től 8-ig |
Pufferfázis n o 2 | 2-től 8-ig |
Így a bit időtartama 5 és 25 „Időkvantum” között változhat.
Minél nagyobb a csomópont belső órájának frekvenciája, annál rövidebb lesz az „Időkvantum” időtartama, annál inkább az utolsó három szegmens számolja az „Időkvantumot”, és annál jobb lesz a szinkronizálási pontosság.
Szinkronizációs szegmensA szinkronizációs szegmens a különböző csomópontok szinkronizálására szolgál.
A küldő csomópont számára 0-ról 1-re vagy 1-ről 0-ra történő átmenetnek ebben a szegmensben kell megtörténnie. Ha egy fogadó csomópontnál ez az átmenet nem ugyanabban a szegmensben megy végbe, az azért van, mert szinkronizálatlan. Ez egy fázishiba.
Az átlátszósági bitnek köszönhetően ez az ellenőrzés legalább 5 bitenként elvégezhető (annak a keretnek az első mezőihez, amelyben használjuk).
Szaporítási szegmensA terjedési szegmenst a buszon terjedő jelenségek kompenzálására használják.
FázisszegmensekA fázisszegmenseket az átmenetek során észlelt fázishibák kompenzálására használják.
Ezeknek a szegmenseknek az időtartama újraszinkronizálás esetén változhat.
Mintavételi pontA mintavételi pont vagy a „mintapont” az a pillanat, amikor a bit értéke leolvasható a buszon. Ez a két fázisszegmens között fordul elő.
SzinkronizálásKétféle szinkronizálás létezik:
A CAN-adat buszon a pinout szabványosított és egy DE-9 csatlakozót használ :
Bross | Leírás |
---|---|
1 | (Lefoglal) |
2 | LEHET |
3 | Tömeg |
4 | (Lefoglal) |
5. | Árnyékolás (opcionális) |
6. | Tömeg |
7 | CANH |
8. | (Lefoglal) |
9. | Külső tápegység (opcionális) |
Az adatkapcsolati rétegre két szabvány is vonatkozik:
Többféle keret létezik:
Két képkocka között az adónak szünetet (képkockák közötti periódust) kell követnie, amely megegyezik három bit időtartamával, amely alatt a busz recesszív állapotban van.
Az adatkeretet arra használják, hogy információkat küldjön más csomópontokra.
Az adatkeret hét különböző mezőből áll:
A mezőket sorrendben továbbítják az SOF-től az EOF-ig.
A keret minden mezőjében a bitek a legerősebbtől a leggyengébbig terjednek.
Választottbírósági mezőAz arbitrációs mező 11 azonosító bitből áll a CAN 2.0A-hoz és 29 bit a CAN 2.0B-hez, amelyet az domináns RTR (Remote Transmission Request) bit követ. Ez a mező az adatmezőben továbbított adatok azonosítójaként szolgál.
A CAN 2.0A 11 bitje 2 11 = 2048 kombinációt tesz lehetővé .
A CAN 2.0B 29 bitje 2 29 = 536 870 912 kombinációt tesz lehetővé.
Parancs mezőA vezérlő mező hat bitből áll.
A legjelentősebb bitet a kerettípus megkülönböztetésére használják:
A következő bitet nem használjuk.
A négy legkevésbé jelentős bit, az úgynevezett DLC (Data Length Code) a fedélzeti adatmező (PAYLOAD) bájtjainak számát jelenti.
Ez a bájtok száma 0 és 8 között változhat, vagy kilenc értéket tárolhatunk a DLC mező négy bitjével együtt. A 9-nél nagyobb DLC-értékeket ezért nem használnánk (9-től 15-ig).
AdatmezőAz adatmező 0 és 8 bájt között változhat.
Kérési keret esetén az adatmező üres.
CRC mezőA mező tizenöt bit CRC-ből (Cyclic Redundancy Check) és egy úgynevezett határoló bitből („CRC delimiter”) áll, amely mindig recesszív.
A CRC kiszámítása az összes eddig továbbított mezőből (azaz SOF, választottbírósági mező, vezérlőmező és adatmező; az átlátszó biteket nem veszik figyelembe). A halmaz alkotja az f ( x ) polinomot .
Az algoritmus elsősorban abból áll, hogy megszorozzuk f ( x ) -t 2 15- gyel .
Ezután az f ( x ) polinomot elosztjuk (modulo 2) a g ( x ) = x 15 + x 14 + x 10 + x 8 + x 7 + x 4 + x 3 + x 0 polinommal .
Az egymást követő osztások elvégzése után a fennmaradó rész alkotja a CRC szekvenciát.
Az alkalmazott algoritmus Hamming-távolsága 6, ami azt jelenti, hogy legfeljebb öt hiba észlelhető.
Ennek az érzékelő rendszernek köszönhetően a rögzített hibaarány nagyon alacsony (kevesebb mint 4,6 × 10 −11 ). Ezenkívül a hálózat képes megkülönböztetni a ponthibákat a redundáns hibáktól. Így minden hibás eszköz leválasztható a hálózatról a zavarok korlátozása érdekében. Ezután a hálózat "leromlott" módba lép.
ACK nyugtázó mezőA mező egy ACK nyugtázó bitből (ACKnowledge) és egy úgynevezett határoló bitből („ACKnowledge delimiter”) áll, amely mindig recesszív.
Minden olyan vevőnek, amely sikeresen megkapta az üzenetet, nyugtáznia kell azt egy domináns bit továbbításával az ACK bit időtartama alatt, amely lehetővé teszi a küldő csomópont számára, hogy a fogadó csomópontok közül legalább az egyik megkapta az üzenetet.
Ha egy fogadó csomópont nem vagy helytelenül fogadta az üzenetet, akkor nem használhatja ezt a mechanizmust a hiba jelzésére, mivel a fogadó állomásnak csak egy domináns bitet kell küldenie az összes recesszív bit elfedésére. A meghibásodás jelzéséhez hibakeretet kell küldenie.
A kérési keretet arra használják, hogy adatokat kérjen egy másik csomóponttól. Hasonló az adatkerethez, kivéve:
Vegye figyelembe, hogy az a tény, hogy az RTR bit recesszív egy kéréskeret esetén, azt jelenti, hogy ha egy adatkeretet egyidejűleg küldenek ugyanazzal a választottbírói mezővel, akkor az adatkeretnek van prioritása.
Az üzenetek továbbításának biztosítása érdekében a „ bit-stuffing ” módszert alkalmazzák.
Abban az esetben áll, amikor öt azonos polaritású bitet küldtek egymás után, egy kissé ellentétes polaritást adva a szekvenciának, hogy megszakítsák az azonos bitek túlságosan nagy láncait. Ezt a módszert csak az SOF, az arbitrázs, a parancs, az adatok és a CRC mezőkre alkalmazzák (a határoló kizárva).
Például az "1111 1110" "1111 1011 0" lesz.
Mi történik, ha több csomópont próbál egyszerre továbbítani?
Van egy buszhozzáférési eljárás, amelyet minden csomópontnak be kell nyújtania:
Így a választottbírósági területnek köszönhetően prioritás érhető el.
Minél kisebb, annál többet tartalmaz magas rendű 0 (domináns) biteket, annál inkább elsőbbséget élvez.
Ez a rangsorolási vagy döntési szakasz az RTR bitnél ér véget.
Amint hibát észlel, a csomópont nem várja meg az inkriminált keret végét, azonnal hibakeretet küld, hogy jelezze az átviteli problémát.
A hibakeret két különböző mezőből áll:
A hibakeret a következő lehet:
Számos hibát fedezhetnek fel a csomópontok.
Bit hibaValahányszor egy csomópont kibocsát egy kicsit a buszon, újraolvassa a buszt, és meg kell találnia azt a bitet, amelyet írt. Ha egy recesszív bit küldésekor újraolvas egy domináns bitet, akkor azt megváltoztatták.
Ez a mechanizmus megegyezik a prioritások rangsorolását lehetővé tevő mechanizmussal, ezért nem szabad ezt figyelembe venni a választottbírósági területen.
Ugyanígy a nyugtázási mező esetében, ha a küldő csomópont által küldött recesszív bit dominánssá válik, akkor egyszerűen az, hogy egy vagy több vevő csomópont megerősítette a keret helyes vételét, tehát nem hiba.
Cucc hibaHa a buszon egymást követő hat, azonos polaritású bitet olvasunk, az átlátszóság bit mechanizmusát nem tartották be, vagy egy kicsit megváltoztatták.
CRC hibaHa a vevő csomópont által kiszámított CRC érték eltér a küldő csomópont által a keretben kódolt CRC-től, akkor a keret megsérült.
CRC határolóHa a fogadó csomópontok által olvasott „CRC határoló” bit nem recesszív, akkor a bit megváltozott.
ACKnowledge hibaHa a küldő csomópont által küldött recesszív ACK bitet nem írta felül egy domináns bit, akkor egyetlen fogadó csomópont sem kapta meg.
ACTudáshatárolásHa a fogadó csomópontok által olvasott "ACKnowledge delimiter" bit nem recesszív, akkor a bit megváltozott.
Hiba helyreállításaSzerkezetileg a hiba kockaváltások a jogállamiság bit-töltelék óta, bármi is történik, a hat bit hiba zászló azonosak.
Amikor egy csomópont hibakeretet küld, az összes többi csomópont észleli a „Stuff error” típusú hibát, és elkezdi a hibakeret küldését is.
Aktív hibakeretek esetén a domináns bitek száma egy sorban nem haladhatja meg a tizenkét bitet. Ezen túl azok a csomópontok, amelyek nem küldték el hibakeretüket, nem tehetik meg ezt.
Az utolsó elküldött csomópont megadja a határolót (nyolc recesszív bit), és befejezi a kakofóniát.
Ezután az inkriminált keretet küldő csomópont elveszíti esélyét.
És így tovább, amíg a keret áthalad, vagy az egyik hibaszámlálója a csomópont hibamódot vált.
HibaszámlálókMinden csomópontnak két hibaszámlálója van:
Az adó módban lévő csomópont átviteli hibaszámlálója:
Egy csomópont vételi mód számlálója vevő módban:
A hibaszámlálóktól függően a csomópont megváltoztatja a hibamódot. Itt három van:
A túlterhelési keret két esetben használható:
A túlterhelési keret két különböző mezőből áll:
A túlterhelési keret hasonló az aktív hibakerethez.
Ha egy csomópont továbbít túlterhelés keretet kérni késleltetést (feltétel n o 1), felülírja a három recesszív bit inter-keret periódus, a fennmaradó csomópontok érzékelik túltöltést, és ők maguk bocsátanak ki keretek túlterhelés (feltétel n o 2).
Az aktív hibakeretekhez hasonlóan a sorban lévő domináns bitek száma sem haladhatja meg a tizenkét bitet. Ezen túl azok a csomópontok, amelyek nem küldték el a túlterhelési keretet, nem tehetik meg.
Az utolsó elküldött csomópont megadja a határolót (nyolc recesszív bit), és befejezi a kakofóniát.
A CAN szabványban több alkalmazási réteget határoztak meg: