CAN-võrk

Controller Area Network (CAN-siin) on sõiduki siini standard, mis võimaldab sõidukis olevatel mikrokontrolleritel ja seadmetel omavahel juhtarvuti abita andmeid vahetada.
CAN-siin on sõnumipõhine protokoll, mis loodi konkreetselt autotööstuses kasutamiseks, kuid leiab nüüd kasutust ka teistes valdkondades, nagu lennundus, merendus, tööstusautomaatika ja meditsiiniseadmed.
CAN-siini arendamine algas 1983. aastal ettevõttes Robert Bosch GmbH. Protokolli ametlik esitlus toimus 1986. aasta Autoinseneride ühingu (SAE) kongressil Detroitis. Esimesed Inteli ja Philipsi toodetud CAN-i kontrollerikiibid toodi turule 1987. aastal. Bosch avalikustas CAN 2.0 spetsifikatsiooni aastal 1991. Aastal 2012 tutvustas Bosch täiustatud CAN-i andmekihi protokolli nimega CAN FD, mis on ISO-11898-1 edasiarenduseks.
CAN-siin on üks viiest protokollist, mida kasutatakse sõidukite pardadiagnostika standardi OBD-II alusel. OBD-II standard on olnud kohustuslik kõigile USA-s müüdavatele sõiduautodele ja väikeveokitele aastast 1996 ja EOBD standard on olnud kohustuslik kõigile Euroopa Liidus müüdud bensiinimootoriga sõidukitele aastast 2001 ja diiselmootoriga sõidukitele aastast 2004.

Rakendused

Kaasaegses autos võib olla kuni 70 elektroonilist juhtmoodulit mitmesuguste süsteemide jaoks.
Üldjuhul on suurimaks protsessoriks mootori juhtmoodul, lisaks sellele on juhtmoodulid käigukastil, turvapatjadel, ABS-pidurisüsteemil, püsikiirushoidikul, roolivõimendil, helisüsteemidel, akendel, ustel, peeglitel ja teistel seadmetel. Mõned neist moodustavad omavahel sõltumatuid alamsüsteeme, kuid teiste omavaheline andmevahetus on hädavajalik. Lisaks peavad alamsüsteemid juhtima täitureid või hankima teavet anduritest. Selle vajaduse täitmiseks võetigi kasutusele CAN-standard.
Tänapäeval kasutatakse CAN-siini lisaks ka automaatikasüsteemides väljasiinina, suuresti tänu mõnede CAN-kontrollerite ja protsessorite soodsale hinnale.
Bosch omab CAN-tehnoloogia patente ja ühilduvate mikroprotsessorite tootjad maksavad Boschile litsentsitasusid, mis kanduvad kiibi hinna komponendina edasi kliendile.

Tehnoloogia

CAN on mitme halduriga leviedastusel põhinev jadasiini standard elektrooniliste juhtmoodulite ühendamiseks.
Iga sõlm saab sõnumeid saata ja vastu võtta, aga mitte samaaegselt. Sõnum sisaldab identifikaatorit, mis määrab sõnumi prioriteedi, ja kuni kaheksat andmebaiti. Täiustatud CAN-i (CAN FD) andmejaotise osa on kuni 64 baiti kaadri kohta. Signaal kodeeritakse ja jõuab kõigi sõlmedeni.
CAN-võrguga ühendatud seadmeteks on üldjuhul andurid, täiturid ja teised juhtseadmed. Samas pole need ühendatud otse siini külge, vaid juhtprotsessori ja CAN-kontrolleri kaudu.
Kui siin on ooteolekus, võib iga sõlm hakata andmeid edastama. Kui kaks või mitu sõlme hakkavad sõnumeid saatma samaaegselt, kirjutab kõrgema taseme identifikaatoriga sõnum üle teise sõlme madalama taseme identifikaatorid, nii et lõpuks jääb võrku vaid kõrgema taseme sõnum ja jõuab kõigi sõlmedeni. Sellist mehhanismi nimetatakse prioriteedipõhiseks siini arbitreerimiseks. Numbriliselt väiksema ID-väärtusega sõnumid edastatakse esmajärjekorras.

Andmeedastus

CAN-süsteem kasutab automaatset arbitreerimiseta andmeedastust. Kõrgeima prioriteediga sõnum jõuab alati kõigi sõlmedeni ja madalama prioriteediga sõnumit edastav sõlm jääb oma järge ootama.
See saavutatakse binaarmudeli alusel andmeedastuse teel, kus domineeriv bitt on loogiline 0 ja retsessiivne loogiline 1. 
Arbitreerimisel jälgib iga signaali edastav sõlm siini seisundit ja võrdleb vastuvõetud bitti edastatud bitiga. Kui retsessiivse biti edastamisel võetakse vastu domineeriv bitt, lõpetab sõlm edastamise.
Arbitreerimine toimub identifikaatori välja edastamise jooksul. Iga andmeedastust alustav sõlm saadab välja identifikaatori, kus kõrgemast bitist lugedes jääb domineerivaks binaarne 0. Kohe, kui sõlme ID on suurem number (madalama prioriteediga) kui vastuvõetud teate ID, lõpetab sõlm oma identifikaatori edastamise. Lõpuks jääb järele vaid üks sõlm ja kõrgeima prioriteediga sõnum jõuab võrgus takistuseta kõigi sõlmedeni.
Näide: tegemist on 11-bitise identifikaatoriga CAN-võrguga, mille sõlmede ID-d on 15 (binaarsüsteemis 00000001111) ja 16 (binaarsüsteemis 00000010000). Kui need kaks sõlme hakkavad samaaegselt andmeid edastama, saadetakse esmalt esimesed kuus nulli identifikaatorist, mille alusel ei saa otsust langetada. Seitsmenda biti edastamisel edastab sõlm ID-ga 16 väärtuse 1 (retsessiivne) ja sõlm ID-ga 15 väärtuse 0 (domineeriv). Nüüd järeldab sõlm ID-ga 16, et on arbitreerimise kaotanud ja võimaldab teisel sõlmel andmeedastust jätkata. Nii on tagatud, et madalama bitiväärtusega sõlm võidab õiguse võrku kasutada.

Turvalisus

CAN on madala taseme protokoll, millel puuduvad sisseehitatud turvalisusfunktsioonid. Rakendustes tuleb kasutada protokollist eraldiseisvaid turvalisusmehhanisme, näiteks seadmete autentimine. Selle nõude eiramisel võidakse toime panna ründeid, kuna ründaja saab siinile sisestada oma sõnumeid.