The Foundation Electronics Logo I²C BUS

CAN BUS

Controller Area Network

Het is een serieel communicatie protocol met bericht-identifiers

1. Geschiedenis

img001

Begin jaren ´90 kristalliseerden zich voor de internationale automobielindustrie twee principiële probleemgebieden uit. Deze hadden te maken met technische ontwikkelingen op het gebied van personenauto´s en vrachtwagens in de toekomst. Zo namen de eisen wat betreft comfort in voertuigen steeds meer toe: van elektronisch bediende ruiten, stoel- en spiegelverstelling, stoelverwarming, airconditioning tot aan audiovisuele presentaties en GPS-routebegeleidings-systemen. De markt eiste een steeds groter spectrum aan ´gemaksproducten´. Aan de andere kant werd natuurlijk ook de gebruiker zich steeds meer bewust van veiligheidsaspecten; de daarvoor noodzakelijke systeemuitbreidingen reiken van elektronische centraalvergrendeling, startblokkering, ABS-voorzieningen tot economisch en ecologisch motormanagement.

Figuur 1: Voorbeeld van elektronische modules in een voertuig

Het onvermijdelijke gevolg van deze elektronificatie van motorvoertuigen is dat de noodzaak tot communicatie tussen afzonderlijke intelligente units binnen het chassis enorm zal toenemen. In het jaar 2005 zullen naar schatting tot 100 afzonderlijke microcontrollers onder het blik hun taken verrichten en onder elkaar gegevens moeten uitwisselen.

Oorspronkelijk gebeurde de interconnectie van de verschillende systemen met discrete verbindingen of een zogenaamde "point to point wiring". De noodzaak tot informatie-uitwisseling nam echter zodanige proporties aan dat een kabelnetwerk met een lengte van enkele kilometers en talloze connectoren nodig werden. Dit veroorzaakte steeds meer problemen in verband met materiaalkost, productietijd, gewicht en betrouwbaarheid.

img002

Figuur 2: Point to point wiring

De oplossing voor dit probleem was de uitwisseling van informatie via een serieel bussysteem. Vanwege zijn toepassing in voertuigen moest deze bus aan enkele speciale voorwaarden voldoen:

datatransport met lage en hoge snelheid, met transmissiesnelheden van 5 kbit/s tot 1 Mbit/s voor luxe- en veiligheidselektronica, zeer betrouwbare dataoverdracht met een ´Hamming-Distance´ (HD) groter dan 4,

geoptimaliseerd voor de overdracht van kleine datahoeveelheden, zoals die vooral bij sensor/actuator-toepassingen voorkomen m.a.w. nuttige overdracht per blok van 0 tot 8 bytes,

protocolcomponenten die door massafabricage heel goedkoop moesten zijn en gemakkelijk in het gebruik,

een busopbouw die zo eenvoudig mogelijk moest zijn voor integratie in het chassis

img003

Figuur 3: Verbinding via seriële bus (can-bus)

Maar jammer genoeg ontwikkelde iedere grote automobielfabrikant een eigen busconcept (natuurlijk niet compatibel met dat van de concurrent) en probeerde vervolgens deze huisstandaard internationaal aanvaard te krijgen. M.a.w. men trachtte zijn eigen concept in een internationale norm om te zetten met de bedoeling uit dit bussysteem zelf economische voordelen te halen.

Maar niet alles liet zich probleemloos tot standaard verheffen. In principe zijn er slechts vier belangrijke ontwikkelingen overgebleven: CAN (ControlIer Area Network) in een lage-en hogesnelheidsversie, VAN, J1850 SCP en J1850 DLC

Het weliswaar reeds genormeerde VAN-concept en vele andere niet-genormeerde ontwerpen van fabrikanten werden in de eerste helft van de jaren´90 opgegeven ten gunste van CAN, zodat CAN tegenwoordig wereldwijd toonaangevend is op het gebied van ´automobiel-bussen´.

In de auto-praktijk wordt CAN als low en highspeed data-overdrachtssysteem sinds 1992 in duurdere personenauto´s van Mercedes (S-klasse) gebruikt. BMW, Porsche en Jaguar volgden en tegenwoordig gebruiken ook VW, Renault, Fiat e.a. de CAN-bus in hun middenklasse auto´s.

Bijna gelijktijdig ontdekte ook de ´normale´ industrie en wel in het bijzonder de automatiserings- en productiebranche de eerder genoemde voordelen van de automobiel-bus (vooral die van het CAN-concept) voor meten, sturen en regelen. Men vindt deze bus nu als communicatie-ruggegraat in PLC-systemen, robot- en motorsturingen, in gebouwen, liften, in de automatisering van laboratoria, in sensor/actuatorsystemen, kortom te veel om op te noemen.

2. De Controller Area Network (CAN) specificaties

img004

De CAN specificaties (ISO11898) definiëren enkel de data link laag en een deel van de fysische laag in het OSI referentiemodel.

In de fysische laag vinden de definities plaats voor het data-overdrachtsmedium (in eerste instantie de buskabel), voor de connectors, voor de data-overdrachtniveau´s en voor de zend- en ontvangbouwstenen.

In tegenstelling tot de andere lagen die zowel in hardware als software mogen worden geïmplementeerd, is de fysische laag altijd "echte" hardware.

Op de data link laag wordt vastgelegd hoe (bij wens tot zenden) toegang wordt verkregen tot het data-overdrachtmedium, hoe het bericht is opgebouwd (adres-, data-, besturings- en foutherkennings/correctie-velden) en hoe het dataoverdrachtprotocol is gestructureerd.

Daarnaast werden in 1991 de CANspecificaties voor Layer 2 nog uitgebreid, zodat men tegenwoordig van de twee parallel naast elkaar bestaande versies CAN 2.0A en CAN 2.0B spreekt. In CAN controllers is de data link laag meestal in de hardware geïmplementeerd.

Vele CAN-toepassingen hebben niet genoeg aan de basisfunctionaliteit die wordt geleverd door de data link laag. Er kunnen dan bijkomende functies worden geïmplementeerd in de Applicatielaag. Een voorbeeld van zo een functie is de transmissie en het ontvangen van data units die langer zijn dan 8 bytes.

Op deze manier zijn er een aantal standaards voor de applicatielaag ontstaan. De bekendste standaards zijn: CANopen, DeviceNet en CAN Kingdom. Het enige doel van deze standaards is de onderlinge uitwisselbaarheid tussen verschillende OEM leveranciers. Indien men een eigen CAN systeem ontwikkeld, hoeft men geen gebruik te maken van deze protocollen en is men vrij om een eigen protocol te implementeren (wat meestal ook wordt gedaan).

3. De fysische laag

3.1 Netwerk topologie

De CAN-bus gebruikt de zogenaamde bus-topologie: alle deelnemers zijn aan een enkele tweedraads leiding (twisted pair kabel, met of zonder afscherming) aangesloten, met aan beide einden bus-afsluitweerstanden.

Ieder station kan hierbij onbeperkt met ieder ander station communiceren. Om aan het busmedium aan te koppelen wordt de zend/ontvangtrap van een CAN-busdeelnemer via twee aansluitingen, CAN-High (CANH) en CAN-Low (CANL) op de buskabel aangesloten.

Elektrische signalen op de bus worden gereflecteerd op het einde van de elektrische leiding tenzij gepaste maatregelen worden genomen. Om het juiste signaalniveau te kunnen bepalen is het absoluut noodzakelijk dat reflecties worden vermeden. Daarom wordt de bus aan beide uiteinden afgesloten met een afsluitweerstand van 120 ohm.

img005

Figuur 4: CAN topologie

3.2 CAN node

Een typische CAN node is als volgt opgebouwd:

img006

Figuur 5: Een typische CAN node

Elke node bestaat uit een microcontroller en een CAN controller. Deze CAN controller kan geïntegreerd zijn in de microcontroller of uitgevoerd zijn als een apart IC. De CAN controller wordt via een line driver (CAN transceiver) verbonden met de bus.

Een belangrijke eigenschap van een CAN node is dat de CAN controller gescheiden transmit en receive lijnen heeft. Op die manier kan een node tezelfdertijd schrijven en luisteren naar de bus. Dit is fundamenteel voor arbitratie en voor bepaalde foutdetectiemethodes.

3.3 Recessieve en dominante staat

Het CAN protocol definieert een niet-destructieve bitsgewijze arbitratie. Op die manier zal een bericht met de hoogste prioriteit voorrang krijgen op de bus. Om die reden moet elke CAN fysische laag een dominante en een recessieve staat op het transmissiemedium ondersteunen. Dit wordt bereikt door een "wired-and" topologie te gebruiken. Hierbij is een laag niveau de dominante staat en een hoog niveau de recessieve staat. Dit wil zeggen dat 1 node de bus laag kan trekken, ongeacht de toestand van de andere nodes (zie figuren).

Als men bvb met optische signalen zou werken, kan men ook een dominante en een recessieve toestand definiëren. De bus zal slechts "donker" zijn wanneer alle nodes geen lichtpuls versturen ( = recessieve staat). Wanneer 1 node een lichtpuls verstuurd zal deze aanwezig zijn op de bus ( = dominante staat).

Figuur 6: Wired AND - recessieve staat

img007

img008

Figuur 7: Wired AND - dominante staat

3.4 Bit codering

In de gebruikte Non-Return-to-Zero (NRZ) bit codering blijft het bitniveau gedurende de volledige bittijd constant (andere methodes voor bitcodering zijn bvb de Manchester code en pulsbreedtemodulatie). Bij NRZ kan het signaalniveau kan constant blijven gedurende een langere periode. Daarom moeten er maatregelen worden genomen om te voorkomen dat het maximum toegelaten interval tussen 2 signaalflanken niet wordt overschreden. Dit is belangrijk met het oog op de synchronisatie. Daarom wordt er bitstuffing toegepast. Hierbij wordt er na vijf bits van eenzelfde niveau een complementaire bit toegevoegd. De ontvanger moet deze stufbits natuurlijk opnieuw verwijderen om de originele data te bekomen.

img009

Figuur 8: NRZ codering vergeleken met Manchester code

img010

Figuur 9: Bitstuffing

3.5 Signaalniveaus

Een busnode zal een recessieve staat detecteren wanneer de spanning op CAN_H niet groter is dan de spanning op CAN_L plus 0,5V. Als de spanning op CAN_H minstens 0,9V hoger is dan die op CAN_L, dan wordt er een dominante staat gedetecteerd. De nominale spanning in de dominante toestand is 3,5V voor de CAN_H lijn en 1,5V voor de CAN_L lijn.

Figuur 10: CAN signaalniveaus

img011

img012

Een voordeel van de differentiële aard van de signaaltransmissie is dat de CANbus ongevoelig is voor elektromagnetische interferentie. De beide buslijnen worden immers op dezelfde manier beïnvloed, waardoor het differentiële signaal onveranderd blijft.

Figuur 11: Invloed elektromagnetische interferentie

3.6 Relatie tussen baudrate en buslengte

img013

De maximale CANbussnelheid bedraagt 1MBaud. Deze snelheid kan gehaald worden met een buslengte van maximaal 40m wanneer men gebruikt maakt van een twisted pair. Voor buslengtes groter dan 40m moet de bussnelheid worden gereduceerd. Een bus van 1km lengte kan nog altijd worden gerealiseerd met een snelheid van 50KBaud. Wanneer de buslengte groter wordt dan 1000m, moet men speciale drivers gaan gebruiken.

Figuur 12: Relatie tussen baudrate en buslengte

4. De data linklaag

De CAN data link laag (DLL) is gestandaardiseerd in ISO11898. De diensten van de DLL zijn geïmplementeerd in de Logical Link Control (LLC) en Medium Access Control (MAC) sublagen van de CAN controller. De LLC levert diensten zoals acceptance filtering, overload notification en recovery manangement. De MAC is op zijn beurt verantwoordelijk voor data encapsulatie, frame codering (stuffing/de-stuffing), medium access management, foutdetectie, foutsignalisatie, acknowledgement en serialisatie.

4.1 Broadcast communication

Het CAN concept maakt gebruik van het Broadcast Communication principe. Dit betekent dat elk netwerkstation kan luisteren naar de frames die het zendende station (station 2 in onderstaande figuur) op de bus zet. Nadat een node een frame heeft ontvangen is het zijn taak om te beslissen of het CAN frame moet worden aanvaard of niet. Dit wil zeggen dat Acceptance Filtering in elke node moet worden geïmplementeerd.

img014

Het principe van CAN Broadcast Communication kan worden vergeleken met een radiostation dat verkeersinformatie uitzendt. Elke chauffeur die luistert, moet voor zichzelf uitmaken of de verkregen informatie voor hem belangrijk is, afhankelijk van welke weg hij wil volgen.

4.2 Remote Transmission Request

img015

Remote Transmission Requests (RTR) kan men vergelijken met een vraag van een bepaalde node. De node die het antwoord heeft, zal de gevraagde data op de bus plaatsen. Deze data kan ook worden binnengelezen door andere nodes die geïnteresseerd zijn in deze data. Remote frames en data frames worden geïdentificeerd door een specifiek veld dat men de identifier noemt.

4.3 Multiple bus acces / Bus arbitratie

Het CAN protocol staat toe dat verschillende nodes simultaan toegang hebben tot de bus. Wanneer meer dan één node toegang zoekt tot de bus heeft men nood aan arbitratie. De bus access methode die in CAN wordt gebruikt is een niet-destructieve, bitsgewijze arbitratie die Carrier Sense Multiple Access with Collision Detection and Arbitration on Message Priority (CSMA/CD + AMP) wordt genoemd. De prioriteit van een frame is gecodeerd in de CAN identifier.

Wanneer de bus zich in rust bevindt, kunnen verschillende nodes starten met de transmissie van een frame. Elke node leest tijdens het verzenden ook elke bit terug van de bus en vergelijkt de verzonden bitwaarde met de waarde van de ontvangen bit. Per definitie zal een bit met een dominante waarde een recessieve bitwaarde overschrijven.

img016

img017

Wanneer twee of meerdere nodes een transmissie starten op exact hetzelfde ogenblik (nadat ze gecontroleerd hadden of de bus in rust was), wordt een botsing tussen de verschillende berichten vermeden door de geïmplementeerde CMSA/CA + AMP bus access methode. Elke node verstuurt de bits van zijn message identifier en controleert het busniveau. Zolang de bits die door elke node worden verstuurd identiek zijn, gebeurt er niks (zie figuur).

Op bit 5 zenden node 1 en 3 een dominante identifier bit. Node 2 zendt een recessieve identifier bit, maar leest op de bus een dominante bit. Node 2 verliest de bus arbitratie en schakelt over naar de listening only mode. Ter hoogte van bit 2 verliest node 1 arbitratie tegen node 3. Dit betekent dat de message identifier van node 3 een lagere binaire waarde en dus een hogere prioriteit heeft dan de identifiers van node 1 en 2. Op deze manier wint de node met de boodschap met de hoogste prioriteit de bus arbitratie. Er wordt ook geen tijd verloren omdat de boodschap niet moet worden herhaald. Wanneer node 3 de transmissie heeft beëindigd, kunnen node 1 en 2 hun boodschap zenden.

4.4 Remote Transmission Request

018

Het CAN protocol voorziet in twee verschillende communicatie services. Bij de klassieke communicatie service of Write Object Service zendt één node (de producent) een data frame naar één of meerdere ontvangende nodes (de consumenten). Dit betekent niet dat er een node de boodschap zal accepteren of dat iemand geïnteresseerd is in deze informatie.

De tweede communicatie service is om een specifieke boodschap aan te vragen. Deze Read Object service wordt gestart door een of meerdere consumenten. Daarvoor zenden ze een zogenaamd Remote Frame. De node die de aangevraagde informatie bezit, zal nu het overeenkomstige data frame verzenden.

4.5 CAN data frame

Een data frame wordt gegenereerd door een CAN node wanneer deze data wenst te verzenden of wanneer data werd aangevraagd door een andere node. In een data frame kunnen maximaal 8 bytes worden getransporteerd.

img019

Een data frame begint met een dominante Start of Frame (SOF) bit om alle nodes te synchronizeren. The SOF bit wordt gevolgd door het Arbitratieveld. Dit veld bevat informatie over de inhoud en de prioriteit van de boodschap. Het volgende veld is het Controleveld. Dit veld geeft aan hoeveel data bytes er in de boodschap worden meegegeven. Het Cyclic Redundancy Check (CRC) veld wordt gebruikt om mogelijke transmissiefouten te detecteren. Tijdens het Acknowledgement (ACK) veld stuurt de zendende node een recessieve bit op de bus. Elke node die een foutloos frame heeft ontvangen, bevestigt de correcte ontvangst van het frame door een dominante bit terug te zenden. Het einde van de boodschap wordt aangegeven door het end of frame (EOF) veld. Tussen twee frames moet er zich een recessief 3-bit Intermissionveld bevinden.

4.5.1 Het arbitratieveld

img020

De lengte van de identifier in het standaard formaat is 11 bit en komt overeen met het Base ID in het Extended formaat. De identifier wordt gevolgd door de RTR bit. In data frames moet deze bit dominant zijn. In een remote frame is de RTR bit recessief. Na het Base ID volgt de IDE (Identifier Extension) bit. Deze is dominant in het standaard frame formaat (in het controleveld) en recessief in het extended formaat. Een standaard frame heeft dus voorrang op een extended frame in het geval van een collision.

Het extended frame formaat bestaat uit twee delen: het base ID met 11 bits en het extended ID met 18 bits. De SRR (Substitute Remote Request) bit vervangt de RTR bit en wordt recessief verzonden. Als de SRR bit corrupt is en dominant wordt verzonden, zal de ontvanger deze negeren. Maar de waarde wordt niet genegeerd voor bit stuffing en arbitratie. Aangezien de SRR bit wordt ontvangen voor de IDE bit, kan de ontvanger niet onmiddellijk uitmaken of hij nu een RTR of een SRR bit binnenkrijgt. Dit betekent dat enkel de IDE bit beslist of men met een standaard of een extended frame te maken heeft.

4.5.2 Het controleveld

Het formaat van het controleveld is gelijkaardig voor het standaard formaat en het extended formaat. In het standaard frame formaat bestaat het controleveld uit de Data Length Code (DLC), de dominante IDE bit en de Reserved Bit die eveneens dominant is. Het controleveld in het extended formaat bevat de DLC en de twee gereserveerde bits r1 en r0. De gereserveerde bits moeten dominant worden verzonden, maar ontvangers accepteren dominante en recessieve bits in alle mogelijke combinaties.

imag021

Het aantal bytes in het CAN Data Field wordt aangegeven door de Data Length Code (DLC) die 4 bits breed is en wordt verzonden in het Control Field. Het toegelaten aantal data bytes in een dataframe ligt tussen 0 en 8. DLC´s van 0 tot 7 geven een datalengte aan van 0 tot 7 bytes. Alle andere DLC´s geven aan dat het dataveld 8 bytes lang is. Dit betekent dat DLC´s van 9 tot 15 mogen gebruikt worden voor applicatie-specifieke doeleinden. De implementatie van het volledige bereik van DLC´s is niet verplicht.

5 Standaard pinouts can bus

SUB-D 9
Pin 1:Not connected
Pin 2:Can_L
Pin 3:Ground
Pin 4:Not connected
Pin 5:Shield
Pin 6:Not connected
Pin 7:Can_H
Pin 8:Not connected
Pin 9:Reference power (5 to 26 volts)

5-pin XLR
Pin 1:Can SHLD : Optional Can Shield
Pin 2:Can V+ : Optional Can external positive supply
Pin 3:Can GND : Ground
Pin 4:Can H : Can High bus line (dominant high)
Pin 5:Can L : Can Low bus line (dominant low)

Terminal block, 5 ways
Pin 1:Can GND
Pin 2:Can L
Pin 3:Can SHLD
Pin 4:Can H
Pin 5:Can V+

Last Updates

07/02/08 Manufacturer Symbols
13/11/07 Package Database
translated to english
16/10/07 SMD Codebook
translated to english
16/08/07 Sitemap added
Valid XHTML 1.0 Transitional CSS Valid
Adverteren bij Daisycon