CAN BUS
Controller Area Network
Het is een serieel communicatie protocol met bericht-identifiers
1. Geschiedenis

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.

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

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

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.

Figuur 4: CAN topologie
3.2 CAN node
Een typische CAN node is als volgt
opgebouwd:

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


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.

Figuur 8: NRZ codering vergeleken met Manchester code

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


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

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.

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

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.


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

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.

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

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.

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+ |
 |
|