Controller Area Network
Controller Area Network, CAN eller CAN-buss, är en databuss som främst är avsedd för fordon, men som numera även används i andra sammanhang.
CAN möjliggör att flera noder eller styrenheter i fordonet kan sända meddelanden till varandra på ett säkert och snabbt sätt. Alla noder i nätet är parallellkopplade till två gemensamma ledare. Kommunikationen är seriell och asynkron dvs informationen sänds som en serie bit-signaler och meddelandena sänds bara vid behov.
CAN används när kraven på snabbhet och tålighet i svåra miljöer är stora och används i fordon främst för motorstyrning, styrning av växellådor, bromssystem (ABS och adaptiv farthållning), krockkuddesystem (SRS), antisladdsystem och antikrocksystem. Fördelarna med nätverkstekniken är att man kan utnyttja mer avancerade funktioner som föraren uppskattar, samtidigt som man reducerar kablar och kontaktdon vilket sänker kostnaderna och ökar tillförlitligheten.
CAN utvecklades ursprungligen av Bosch 1983 och har under 2000-talet blivit en de facto-standard för snabb kommunikation i fordon men även i andra utrustningar. CAN kräver att varje nod är en relativt avancerad mikrodator. Av det skälet har Local Interconnect Network - LIN blivit en parallell standard för enklare funktioner där noderna inte behöver vara en komplett dator. Eftersom CAN är meddelandebaserat så har dessutom ett annat nätverk Media Oriented Systems Transport - MOST blivit standard för ljud och video mellan fordonens infotainment-komponenter vilka kräver strömmande data.
Topologi [1]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/CAN-Bus_Elektrische_Zweidrahtleitung.svg/250px-CAN-Bus_Elektrische_Zweidrahtleitung.svg.png)
CAN är inte ett master / slave system som LIN-nätet, utan flera noder kan sända och flera kan motta meddelanden simultant - nätet är ej hierarkiskt. CAN innehåller därför ett skydd mot samtidig sändning från två noder (CSMA/CR Carrier Sense Multiple Access / Collision Resolution) vilket gör att endast en nod i taget sänder.
Bussen består fysiskt vanligen av ett tvinnat kabelpar som är hopkopplat genom de flesta kabelmattorna i fordonet. Noderna ansluts till närmaste kabelpar. Maximal längd på busskabeln är 40 meter vid hastigheten 1M bit/s, längre vid lägre hastighet till exempel 500 m vid 0,125 Mbit/s. Den ena busskabeln kallas High och den andra Low och signalen utgörs av differensspänningen. Ofta är bägge ändarna av bussen hopkopplade med en resistans på ca 120 ohm. Se vidstående figur. CAN tillåter även optiska fibrer, men detta var ännu inte vanligt år 2012. Likaså tillåter CAN att vid låg hastighet bara ha en kabel och låta fordonets chassi vara återledare, men inte heller var detta vanligt 2012 eftersom LIN var att föredra i dessa fall.
I många fordon används flera CAN-nät. Vart och ett med sitt kabelpar och ofta med olika hastighet. Se tillämpningar nedan.
En speciell variant är Diagnosuttag (bilar) (OBD-II) enligt amerikansk och europeisk standard. I OBD-II är CAN-anslutning en av 5 standardanslutningar till fordonets delsystem. I detta fall skapas ett tillfälligt CAN-nät mellan fordonet och till exempel en diagnosdator på en verkstad. CAN-anslutning finns för diagnos även av andra fordon som saknar OBD-II till exempel utombordsmotorer [2]. Diagnosuttagen används även för uppdatering av programvara i fordonet.
Noderna
Varje nod är en styrenhet eller mikrodator med hårdvara och programvara. Funktionerna i noderna är i princip uppdelade i tre lager eller nivåer (jfr Open Systems Interconnection):
- Applikationslagret. Här utförs den för fordonet programmerade funktionen i delsystemet. Det innebär att:
- Avgöra vilka meddelanden från andra noder som måste hanteras till exempel att motorstyrningssystemet får en begäran från automatväxeln att sänka vridmomentet inför en växling.
- Läsa av sensorer som ger kompletterande indata till exempel acceleration i sidled vid en sladd och vilken rattvinkeln är.
- Sända ett meddelande till ett annat delsystem till exempel radarsystemet meddelar upptäckt av ett hinder till nödbromssystemet.
- Låta aktuerare utföra regleringar i delsystemet till exempel stänga en bränsleventil om motormomentet begärs sänkt eller bromsa ett hjul om bilens rörelse ej stämmer med rattrörelsen.
- Kommunikationslagret. Här mottas meddelanden från applikationslagret och görs i ordning för avsändning som en serie av bitar inkluderande identifierare, checkbitar och kontrollsummor. Här ses även till att omsändning sker vid fel. På motsvarande sätt bryts erhållna meddelanden ut från bitströmmen, kontroller sker och ev. omsändning begärs innan meddelandet överlämnas till applikationslagret. Kommunikationslagret hanterar även konfigureringen av nätverket vid uppstart samt feldiagnostik. Alla dessa funktioner finns färdiga som programvara för alla CAN-noder.
- Fysiska lagret. Här mottages bitarna från kommunikationslagret och omvandlas i en sändare till elektriska signaler i kabeln. Mottagna signaler i kabeln omvandlas i en mottagare till bitar som lämnas till kommunikationslagret.
Antalet noder i ett nät beror av utformningen av sändarna / mottagarna i noderna och kan vara minst 32 men även 64 eller t.o.m. 128.
Meddelanden
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/CAN_telegramm_2.0A.svg/575px-CAN_telegramm_2.0A.svg.png)
Ett meddelande består dels av en identifierare och dels av data. Identifieraren syftar på meddelandets funktion ej mottagarens adress. CAN innehåller därför inga identifierare av noderna. Meddelandets identifierare är entydig i nätet och utgöres av 11 bitar i basformatet. (kan vara 29 bitar i utvidgade formatet CAN 2.0B). Data kan vara upp till 8 bytes (64 bits). Dessutom finns diverse andra bitar vilka framgår av vidstående figur.
Det är identifieraren som avgör för en annan nod om den ska behandla meddelandet. Identifieraren kan även avgöra prioriteringen om flera noder vill sända samtidigt (högre numeriskt värde på identifieraren).
I CAN skiljer man på 4 olika meddelandetyper (frames eller ramar som de också kallas):
- Datameddelande. Ett meddelande som innehåller data från avsändaren.
- Meddelandebegäran (remote frame). En begäran från en nod om att få ett datameddelande.
- Felmeddelande. Sänds av en nod som upptäcker ett fel.
- Kömeddelande (overload frame). En begäran att bromsa datameddelanden och meddelandebegärningar.
CAN saknar inbyggda funktioner för sekretess såsom lösenord och kryptering (kan läggas in i applikationslagret).
Tillämpningar
CAN är främst avsett för personbilar men har funnit användning även i andra fordon som lastbilar, bussar, tåg, flygplan och entreprenadmaskiner. CAN användes även i utrustningar som inte har med fordon att göra. I entreprenadmaskiner med mycket hydraulik kan man reducera antalet hydraulslangar om en CAN-nod styr oljeventilerna. Ett exempel med extremt mycket hydraulik och krävande miljö är skördare för skogsavverkning. De använder CAN för kommunikation mellan förarhyttens reglagesystem och skördaraggregatets styrsystem som mäter stammens tjocklek och längd och hanterar fällning, kvistning och kapning [3].
För de flesta personbilsmärkena användes CAN på ett likartat sätt och kan beskrivas med ett exempel från 2011 [4]:
- CAN-buss 1 med hög hastighet och följande noder: Motorstyrsystem - Växellådssystem - System för el-hydraulisk servostyrning - System för låsningsfria bromsar och antisladd - System för aktiva xenonljus - System för fyrhjulsdrift - System för elektrisk parkeringsbroms - SRS krockskyddssystem - System för chassits stötdämparreglering - Diagnosuttag OBD-II - System för rattvinkelmätning - System för automatbromsning med analys av radar- och kamerabilder - Bilens centraldator - System för lasermätning av annalkande hinder. Således upp till 14 noder i en fullutrustad bil.
- CAN-buss 2 med mellanhastighet och följande noder: Bilens centraldator - Styrsystem för bränsledriven motorvärmare - System för funktioner i förardörren - Styrsystem för släpets anslutning - Styrsystem för back-kamera - System för nyckelfri låshantering - Radarsystem i stötfångarna - System för funktioner i främre passagerardörren - Styrsystem för Infotainment och bildskärm - Telefonsystem - Diagnosuttag OBD-II - Klimatsystem - System för förarinstrumentet. Således ytterligare 13 system i en fullutrustad bil.
- CAN-buss för krockvarningssystem med noderna: SRS krockskyddssystem - System för passagerarviktmätning - Automatiska bromssystemet - System för analys av framåtriktad kamera och radar - System för laserscanning av hinder framför.
Totalt således 14 + 13 + 5 = 32 noder i de tre näten i en bil (några gemensamma för flera nät).
Utveckling av CAN-tillämpningar
CAN är utvecklad av Bosch som även äger många licenser. Den breda användningen av CAN har gjort att komponent- och systemleverantörer har utvecklat standardiserade lösningar som enkelt kan införas i olika bilmodeller.
Men flera underleverantörer har även utvecklat CAN-hjälpmedel som de erbjuder på den öppna marknaden. Det finns till exempel:
- Utbildningspaket
- Testverktyg dels för program och dels för den elektriska signaleringen. Det senare mycket viktigt i denna miljö.
- Certifiering av komponenter och system
- Chips med inbyggda CAN-funktioner.
CAN har funnits sedan 1980-talet och gjorde att ett antal mindre likartade nätverk konkurrerades ut. Men sedan slutet av 90-talet har tillkommit andra standarder som inte direkt konkurrerar med CAN utan snarare kompletterar när CAN inte passar (LIN och MOST). Försök har gjorts att ersätta CAN med snabbare lösningar till exempel FlexRay som dock 2012 hade små andelar [5].
Den snabba utvecklingen inom området kan göra att nya standarder tar över i framtiden.
För- och nackdelar
CAN passar bäst för sådana delsystem där man av olika skäl ändå behöver en riktig mikroprocessor. CAN kan då ge följande fördelar:
- Antalet kablar mellan delsystemen reduceras kraftigt vilket dels ger lägre kostnader för kablar och kontaktdon och dels minskar risken för felsituationer - kvaliteten höjs. I vissa fall kan även andra komponenter reduceras till exempel hydraulslangar i entreprenadmaskiner.
- Funktionerna i delsystemen kan utökas eller göras mer avancerade vilket kan ge högre värde för föraren och passagerarna i fordonet. Ett exempel på delsystem är system för adaptiv farthållning som är praktiskt i kö-körning.
- Delsystemen utgörs av programvara som senare kan korrigeras och även förbättras inom ramen för hårdvaran vilket kan öka värdet för användaren och förlänga livslängden men givetvis kan minska nyförsäljningen, vilket kanske inte är bra för leverantören. Även pirater kan utnyttja denna möjlighet till exempel "chips-trimning" vilket kan vara både bra och dåligt. Programvara som kunde "chips-trimmas" (genom att programmera om minneschips direkt) fanns dock före CAN.
- Diagnostisering av fel förenklas genom att delsystemen kontinuerligt kan mäta fysikaliska variabler och registrera och lagra dessa för senare avläsning via diagnosuttaget, vilket betyder att avbrott för verkstadsbesök kan förkortas och att reparationer kan göras billigare. Dock kan den komplicerade elektroniken i sig försvåra felsökning om diagnosdatan är ofullständig.
CAN passar mindre bra för vissa delsystem. Nackdelarna kan då vara:
- CAN blir onödigt dyrt när delsystemen inte behöver en riktig mikrodator. Då brukar LIN vara ett bättre alternativ.
- CAN är asynkront och passar ej bra för strömmande data som kräver en hög garanterad hastighet, till exempel kommunikation mellan radiomottagare, mediespelare, GPS-navigator, förstärkare mm och dess displayer (infotainment). Då passar MOST bättre. Innan MOST blev etablerat eller i billigare bilar där man nöjer sig med enklare, så används CAN för styrning av mediastyrenheter och information till displayer och vanliga analoga kablar för ljud och ev. bild.
- Hastigheten är inte så hög då utrymmet inte utnyttjas så effektivt. En vanlig hastighet är 500 kbit/s, men man kan med den hastigheten bara räkna med totalt 2000 CAN-meddelanden per sekund, dvs 128 kbit applikationsdata.
- Delsystem som står på när fordonet ej används till exempel larm, nyckellösa system och SMS-mottagning kan dra för mycket ström om de hanteras av en avancerad mikrodator. Efter 2000 har man infört funktioner för att väcka upp och låta styrenheter somna över CAN, så att funktioner kan slås på utan att hela bilen slås på. Tidigare användes då i stället konventionella kablar och strömsnåla kretsar. Exempel är larmströmbrytare för öppna dörrar / luckor och "nyckelfria" beröringssensorer i dörrhandtagen som ofta har separata signalkablar. En annan funktion är varningsblinkers som ska fungera utan att alla styrenheter fungerar och drar ström.
- Den avancerade datahanteringen ökar kostnaderna för den utrustning som krävs för att kunna serva och reparera bilen vilket gör att mindre reparatörer får svårt att konkurrera med lågt pris. Det går dock snabbare att hitta fel med datorbaserad diagnos, speciellt elfel. Förr kunde märkesverkstäder få monopol på sitt märke i sin stad på detta, men konkurrenslagar har gjort detta friare.
Se även
- Datornätverk (fordon)
- Styrenhet (fordon)
- Autosar, en standard för bilars styrsystem.
- LAN
- LIN
- MOST
- Fältbuss
Externa länkar
- CAN in Automation - Intresseorganisation för CAN
- Kvasers webbplats för CAN - Kvaser är en Svensk pionjär inom CAN teknik.
- Canmatrix - Ett pythonbibliotek för att läsa och skriva flera olika CAN-databas format.
Referenser
Litteratur
- Konrad Etschberger (Hrsg.): CAN Controller Area Network - Grundlagen, Protokolle, Bausteine, Anwendungen. Hanser, ISBN 3-446-19431-2
- Horst Engels : CAN-Bus - Technik einfach, anschaulich und praxisnah vorgestellt. Franzis, ISBN 3-7723-5146-8
- Werner Zimmermann und Ralf Schmidgall: Bussysteme in der Fahrzeugtechnik – Protokolle, Standards und Softwarearchitektur. Vieweg+Teubner, 4. Auflage, 2010, ISBN 978-3-8348-0907-0
- Kai Borgeest: Elektronik in der Fahrzeugtechnik. 1. Auflage, Vieweg-Teubner, Wiesbaden, 2008, ISBN 978-3-8348-0207-1