CAN-BUS CONTROLLER AREA NETWORK The CAN protocol is developed by Robert Bosch GmbH and protected by patents. Indhold Det fysiske lag - Kabling og impedans -

Download Report

Transcript CAN-BUS CONTROLLER AREA NETWORK The CAN protocol is developed by Robert Bosch GmbH and protected by patents. Indhold Det fysiske lag - Kabling og impedans -

CAN-BUS
CONTROLLER AREA NETWORK
The CAN protocol is developed by Robert Bosch GmbH and protected by patents.
Indhold
Det fysiske lag
- Kabling og impedans
- Bit signalering
- Transmissions hastighed
- Nominel bus signal level
- De facto standarden DS-102 pin assignment (CIA)
Datalink laget.
- Dataframe, bit identifier, frame coding.
- Arbitration, hvad er det?
- Bit stuffing, error handling,
- Bit timing
- Synkronisering (sample point)
- Acceptance filter (ACF)
- De væsentligste forskelle mellem CAN 2.0A og CAN 2.0B
Det fysiske lag
Kabling og impedans
To-leder bussen er består normalt af et ”twisted-pair” (skærmet eller uskærmet) kabel. Fladkabel (som til telefoner) fungerer også fint,
men genererer mere støj og mere modtagelig for udefrakommende støjkilder.
Bussens linie skal være tilsluttet i hver ende med en modstand for at modvirke refleksion.
Ved brug af modstanden, skal størrelsen være: min. 100 Ω, norm. 120 Ω, max. 130 Ω.
Det fysiske medie, er en to-leder bus linie, med normale slutmodstande i hver ende, der svarer til impedancen i lederne.
Kabeltyperne i et CAN netværk, bør være så tæt som muligt på en enkelt linie struktur, for at undgå kabel-reflekterede bølger.
Kablerne bør være så korte som muligt når man kører high bit-rates. Ved 1Mb/s bør ledningerne maksimum være 30 cm.
Teoretisk er max længden 40 m ved en data-strøm på 1Mb/s. Ved data-strømme lavere end 1Mb/s kan kabellængderne øges væsentligt.
Maksimum 1 km ved max 50Kb/s. Hvis man benytter en ”bridge” eller en ”repeater” kan man begrænse modstanden i knudepunkterne.
En anden mulighed for at begrænse knudepunkterne, er at formindske afstanden mellem dem eller forsyne dem med galvanisk adskillelse.
En connetor til brug ved tilslutning til bus linien, skal have en nominel impedans på 120 Ω og en nominel transmissionsmodstand på 70 mΩ.
Kablerne skal have en nominel impedans på 120 Ω og en længde-relateret modstand på 70 m/m og et specifikt linie delay på 5 ns/m.
Hvis bus længden er længere en 40 meter, skal den specifikke modstand på bus kabelet være lavere.
Bus kablerne bliver dirigeret parallelt, snoet og/eller skærmet, afhængig af EMC forskrifterne.
Nogle ISO 11898-2 kompatible integrerede transceiver kredse, er forsynet med en ”slope-control” funktion, for at reducere elektromagnetisk
udstråling (fx ved brug af uskærmede kabler). Hvis ”slope-control” funktionen bliver brugt, begrænses det interne delay. Dette er modsvaret til et
maximum på bus længden i en given bit-rate.
Bit signalering, NRZ
CAN-bussen består af en såkaldt ”Non Return to Zero” (NRZ) kodning (med bit-stuffing) til data kommunikation
i en to-leder bus.
Brugen af NRZ kodning sikrer kompakte beskeder med et minimum af omkoblinger
og høj afskærmningsevne i forhold til forstyrrelser udefra.
Transmissionshastighed
Transmissionshastigheden på en CAN-bus er ifølge standard 1Mbit/s.
Nogle CAN kontrollere kan ikke desto mindre håndtere hastigheder der er højere end det.
Hastigheden på en CAN-bus kan også være lavere end 1Mbit/s, hastigheden er afhængig af længden på kablet.
Jo større modstand jo mindre hastighed.
Herunder ses en oversigt over estimerede hastigheder ved forskellige længder:
• 100 meter ved 500 kbit/s
• 200 meter ved 250 kbit/s
• 500 meters ved 125 kbit/s
• 6 kilometer ved 10 kbit/s
Nominel bus signal level
Det at CAN-Bussens siganeler er nomineller, vil sige at de ledninger, to, sender forskellige signaler. Det er den
forskel der er mellem de to signaler, som bestemmer om det er et logisk 0 eller 1, der skal sendes.
F.eks. et 0, logisk, sendes med cirka 2 V. mellem de to ledere, imens vil et 1 sendes med samme spænding
på begge ledere. Og på denne måde bliver bussen samtidig godt beskyttet mod støj, elektrisk.
De facto standarden DS-102
pin assignment (CIA)
CiA DS-102 standarden inkluderer en pin tildeling for 9-polet Sub-D connectorer til forbindelse af noder til CAN
bus linien. Pin tildelingen er brugt af nogle høj-lags protokol specifikationer
(f.eks. CANopen, Smart Distributed System).
Her er to eksempler:
Datalink laget
Dataframe
Dataframe, er d en mest andvendte meddelelsestype. Det udgør følgende hovedpunkter (nogle detaljer er
udeladt da det ellers ville fylde for meget.):
·
Voldgifts feltet, som bestemmer prioriteten af beskeden når to eller flere noder er ”kæmper” om bussen.
Voldgifts feltet indeholder:
I CAN 2.0A, en 11-bit genkender og et bit, RTR bittet, som er dominant for data frames.
I CAN 2.0B, en 29-bit genkender (som også indeholder to recessive bits: SRR og IDE) og RTR bittet
·
·
·
Data feltet, som indeholder nul til otte byte af data.
CRC feltet, som indeholder en 15-bit checksum udregnet på denstørste del af beskden. Denne Checksum
er brugt til fejl-finding.
Et anerkendelses slot; enhver CAN controller der har været i stand til et anerkendelses bit for enden af enhver
besked. Afsenderen tjekker for tilstedeværelsen af anerkendelses bittet og gen-sender beskeden hvis der ikke
er fundet nogen anerkendelse.
Note 1: Det er værd at bemærke, at tilstedeværelsen af et anerkendelses bit på bussen, ikke er en garanti for at ’
nogen af de tilsigtede adresser har modtaget beskeden. Den eneste ting man ved er at en eller flere noder på bussen
der modtaget korrekt.
Note 2: Genkendelsen i voldgifts feltet er ikke, på trods af navnet, nødvendigvis i stand til at genkende indholdet
af beskeden.
Bit identifier
Bit-identifier – Frame-coding.
En besked sent via CAN udvidede frame-format er ca. det samme som i standard frame-formatet.
Forskellen er længden på den ”identifier” der bliver brugt. Denne er bygget op omkring den eksisterende
11-bit identifier (den såkaldte base-identifier) og en 18-bit udvidelse.
Forskellen mellem disse to, er lavet ved hjælp af IDE-bittet som bliver transmitteret som den dominerende i
en CAN standard-framen og som den tilbagetrukne i det udvidede CAN frame-format. Dvs. at den besked sendt i
standard-formatet, altid overtrumfer det udvidede format!
Arbitration, hvad er det?
CAN protokolellen bruger
principperne fra Carrier Sense
Multiple Access with Non
Destructive Arbitration. Denne
”voldgifts” koncept undgår
kollisioner af beskeder når mere
end én node transmiteres
samtidig.
På vores oscilloscope skærm, kan man se kurven af transmit
stikbenene af to-noder kaldet A og B. De er lige inaktive og det er
resultatet af bus linien er i overensstemmelse med ”wired-AND
principle”.
Lad os antage at kun node A venter på at tgransmitere en besked. En
standard transmision uden ”voldgift” virker sådan her. Node A lytter
på CAN bussen for at være sikker på er i ”ikke aktiv” tilstand, og at
ikke andre noder sender samtidig.
Hvis bussen er ”ikke aktiv” og ingen andre noder ønsker at sende på
samme tid, bliver node A ”bus master” og starter med at transmittere
sin besked. Vi kan se beskedens bit-mønster rulle igennem fra højre
til venstre, transmiteres til busseb af node A. Alle de andre noder på
bussen skifter til ”modtage tilstand” i løbet af det første
transmitterede bit, ”Start Of Frame” bit.
Efter korrekt modtagelse af denne besked, som er anerkendt af hver
modtage node i godkendelses slot’tet, hver bus node tjekker besked
identifikationen og gemmer beskeden, hvis det er krævet. Ellers, er
beskeden kasseret.
Hvis, efter at bussen er fundet inaktiv, to eller flere bus noder starter deres
transmission samtidig, kollisioner er af beskederne bliver undgået ved bitby-bit ”voldgift”. Her er hvordan det virker, hver node bittet fra dets
besked-genkendelse og overvåger bus niveauet. Så længe som
genkendelses-bittene er ens, hver node fortsætter med at sende sin besked.
På genkendelses bittets position, fremhævet herover, node A sender et
dominant genkendelses bit, mens node B sender et vigende/recessiv 1.
Node B forvente at læse et recessiv bus niveau tilbage, men aflytter et
dominant niveau i stedet for. Så den taber ”voldgiften” og skifter til
modtage status. Denne tilstand forekommer når besked-genkendelsen, når
en af de konkurrerende noder har et lavere binær værdi og indikerer at
den konkurrerende node er ved sende en besked med en højere prioritet.
På denne måde, bussen med den højeste prioritets besked vinder
”voldgiften” uden tab af tid sådan at beskeden gentages.
Når først bussen returnerer til inaktiv tilstand, noderne har tabt
”voldgiften”, ligesom node B i vores eksempel, prøver den automatisk at
gentage den trnsmission. To noder må ikke sende beskeder med den samme
genkendelse da ”voldgiften” vil fejle og føre til collision og fejlmeddelelser.
Nu da vi har set hvordan CAN-Bus ”voldgiften” opererer, lad os tænke på
CAN data frame formatet. Vi vil starte denne diskussion med et kig på
standard data frame formatet.
Bit stuffing, error handling
Detekterede fejl er gjort opmærksom på til alle andre noder via "Error Frames".
Når en fejl er opdaget, vil transmissionen af de fejlagtige beskeder blive afbrudt, en ”error frame”
bliver transmitteret, og framen gentaget så snart som muligt.
Detekterede fejl er gjort opmærksom på til alle andre
noder via "Error Frames". Når en fejl er opdaget, vil
transmissionen af de fejlagtige beskeder blive afbrudt, en
”error frame” bliver transmitteret, og framen gentaget så
snart som muligt.
En CAN node er i en af de tre fejl-tilstande, fejl-aktiv, fejl-passiv eller bus afbrudt ifølge
værdien af den interne fejl tællere. Den fejl-aktive tilstand er tilstande efter reset, hvor busnodenkan modtage og transmittere beskeder, og transmittere fejl-frame, lavet af dominant bit,
uden nogen begrænsninger. I løbet af CAN kommunikationen, er fejl-tælleren opdateret ifølge
”quite complex rules”. For hver modtagelse eller overførsels fejl, er fejl-tælleren forøget med
en given værdi. For hver vellykket overførsel, er fejl-tælleren formindsket en given værdi. En
node er i fejl-aktiv tilstand hvis både modtagelse fejl tæller, og i overførsels fejl tæller,
indeholder en værdi mindre end 127. I fejl-passiv tilstand, er der ingen af disse tællere der har
en værdi over 127. Og i bus afbrudt tilstand, har transmit fejl-tælleren en værdi over 255.
Hvis enten de modtagende eller den overførende fejl-tæller har nået en
værdi over 128, vil noden skifte til fejl-passiv tilsatnd. I den fejl-passive
tilstand, kan beskeder stadig sendes og modtages, selvom efter
transmissionen af en besked, vil noden blive nød tila t gå igennem en
afbrudt transmission, det er, hvis den skal vente 8 bit gange længere end
fejl-aktive noder, før den må overføre en ny besked. Angående fejl
signalering, er det kun fejl-frames, sat sammen af recessive bit der må blive
overført af en fejl passiv node.
Hvis begge fejl-tælleren kommer under en værdi på 128 igen som
følge at en vellykket bus kommunikation, vil noden skifte tilbage til
fejl-aktive tilstand.
En kendetegnene ved CAN protokollen er, at defekte noder trækker sig væk
fra bussen automatisk. Bus-afbrudt tilstanden bliver indført hvis den
overførsels-fejl-tælleren overstiger en værdi på 255. Alle bus aktiviter bliver
stoppet, hvilket gør det midlertidigt umuligt for den station at deltage i buskommunikationen. I denne tilstand, beskeder kan hverken sendes eller
modtages.
En node kan returnere til den fejl-aktiv tilstand, kun ved at værts-CPU’en
gen-initialisere den. Når en node gen-initialisers, bliver modtage og sende
fejl-tælleren resat til nul.
For at give en idé af fejl detekteringens kapaciteten af CAN, er der her
et eksempel: Et CAN netværk kører 2000 timer pr. år, med en CAN
bus hastighed på 500 kbit/s, med en 25% bus belastning vil resultere i
én udetekteret fejl for hver 1000 år.
Bit timing
Bit rate
Bus length
Nominal bit time (4)
Unterminated cable drop
length (5)
(cumulative length)
Length of time quantum
1 Mbit/s
25 m
1.5 (7.5) m
125 ns
8 tq
(1 µs)
800 kbit/s
50 m
2.5 (12.5) m
125 ns
10 tq
(1.25 µs)
8 tq
(1 µs)
500 kbit/s
100 m
5.5 (27.5) m
125 ns
16 tq
(2 µs)
14 tq
(1.75 µs)
250 kbit/s
250 m (2)
11 (55) m
250 ns
16 tq
(4 µs)
14 tq
(3,5 µs)
125 kbit/s
500 m (2)
22 (110) m
500 ns
16 tq
(8 µs)
14 tq
(7 µs)
50 kbit/s
1000 m (3)
55 (275) m
1.25 µs
16 tq
(20 µs)
20 kbit/s
2500 m (3)
137.5 (687.5) m
3.125 µs
16 tq
(50 µs)
10 kbit/s
5000 m (3)
275 (1,375) m
6.25 µs
16 tq
(100 µs)
(1)
(4)
Sample point location
(4)
6 tq
(750 ns)
14 tq
(17.5 µs)
14 tq
(43.75 µs)
14 tq
(87.5 µs)
For at sætte kommunikationen i en CAN-Bus i gang, må bit-timingen for hver node programmeres til at være det
samme. CAN-Bus bit hastigheden er fastsat ved at programmere værdier ind i ”Bit Timing Registeret (BTR) i CAN
controller chipsene. At lave udregningerne til at få bit hastigheden man vil have er ikke den store videnskab,
men den er langvarig/trættende og fejl-behæftet. Hvis man bruger forskellige typer af CAN controllere,
må hver især blive programmeret med forskellige værdier for at frembringe den samme bit hastighed.
Hvis buslængden, forskelligt krystal eller oscillator frekvens og tolerance også skal tages ind i redegørelsen,
så involverer det endnu mere arbejde.
Synkronisering (sample point)
Når en node modtager en data frame eller en fremmed frame, er det nødvendigt for modtageren at
synkronisere med afsenderen.
Da der ikke er noget absolut clock signal som et CAN system kan brugesom en tids reference, to mekanismer
er brugt til vedligeholde synkroniseringen.
Den første er hard synchronisation og forekommer i Start of Frame (SOF).
For at kompensere for oscillator drift, fase forskydning mellem, sender og modtager oscillatorer, er ekstra
synkronisering nødvendig. Så – for efterfølgende bit i enhver modtaget frame, hvis en bit kant ikke forekommer
i Sync-seg segmentet af bit-tid, resynkroniseringen vil automatisk blive påkaldt og vil forkorte længden af den
nuværende bit tid, afhængig af hvor kanten er. Den maksimale tid, som bit-tiden er forlænget eller forkortet er
bestemt af et bruger-programmeret antal af tids kvanta, kendt som det Synchronisation Jump Width (SJW).
Acceptance filter (ACF)
Kommunikation på bussen forgår som en broadcast, det vil sige at alle signaler bliver sendt ud så alle kan læse dem.
For at finde ud af hvem de signaler der står på busser er til, er man nød til at have en metode til at sortere signalerne.
Man skal kunne skelne om man skal bruge signalet eller ej. Til dette formål har man et acceptance filteret.
Acceptance filteret består af to registre. Det ene hedder (ACR) Acceptance Code Register og det andet (AMR)
Acceptance Mask Register. Begge registre er på otte bit, en byte. For at finde ud af, om det der sendes på bussen
skal bruges af den enkelte enhed, lægges de to registre sammen. Hvis resultatet er "0" skal det signal der er på
linjen bruges. Hvis resultatet er "1" skal signalet ignoreres.
De væsentlige forskelle mellem
Can 2.0A og Can 2.0B
Besked Frames.
I et CAN system, er data’er transmitteret og modtaget ved at bruge besked frame. Besked frame bringer data fra en transmitterings
node til én eller flere modtage noder.
Standard CAN protokollen (version 2.0A), også kendt som Base Frame Format, understøtter beskeder med 11 bit genkendelse.
Den udvidede CAN protokol (version 2.0B), også kendt som Extended Frame Format, understøtter både 11 bit og 29 bit genkendelse.
De fleste 2.0A controllere sender og modtager kun Standard format beskeder, selvom nogle (kendt som 2.0B passive) vil modtage
Extended format beskeder – men derefter ignorere dem. 2.0B controllere kan sende og modtage beskeder i begge formater.
2.0A Format
En standard CAN (Version 2.0A) besked frame indeholder syv forskellige bit felter:
 Et ”Start of Frame” (SOF) felt – som indikerer starten af besked frame’en
 Et Arbitrations felt, indeholdende en besked om genkendelse og ”Remote Transmission Request” (RTR) bit. RTR bittet bliver brugt til
at skelne mellem et transmitteret Data frame og en anmodning om data fra en fjern node.
Forskelle CAN 2.0A og CAN 2.0B figur 1
 Et kontrol felt indeholder seks bit:
* to reserverede bit (r0 og r1) og
* et fire bit ”Data Length Code” (DLC). DLC’en indikerer antal af bit i Data feltet som følger
 Et Data felt, som indeholder fra 0 til 8 byte.
 CRC feltet, som indeholder et femten cyklisk redundans tjek node og et recessiv afgræsnings bit.
 Erkendelses feltet, indeholder to bit. Det første er slot bittet som transmitterer og modtager, men er senere over-skrevet af
dominante bit transmitteret fra en hvilken som helst node som vellykket modtager den transmitteret besked.
Det andet bit er et recessiv afgrænsnings bit.
 Enden af Frame feltet, indeholder syv recessive bit.
Efter End of Frame er pause feltet bestående af tre recessive bit.
Efter tre bits pause periode er bussen godkendt til at være frie. Bussens ledigheds tid må være af en vilkårlig længe inklusiv nul.
2.0B Format
CAN 2.0B formatet stiller en niogtyve (29) bit godkender tilrådighed, i modsætning til den 11 bit godkender i
CAN 2.0A.
Version 2.0B er udviklet til at sørge for overensstemmelse med andre serielle kommunikations protokoller,
som er brugt i auto branchens applikationer i USA. For at tilfredsstille dette behov, og stadig tilbyde
kompalitet med 2.0A formatet, har Besked Framen i version 2.0B en udvidet format.
Forskellene er:
-I version 2.0B består arbitrations (voldgifts) feltet af to identificerings felter. Den første (Base ID) er eleve
(11) bit lang for kampalitet medc version 2.0A. Det andet felt (udvidelses ID) er atten (18) bit langt, som giver
en total længde på niogtyve (29) bit.
- Forskellen mellem de to formater er lavet ved at bruge et Identifiserings Udvidelses (Identifier Extension) (IDE)bit
-En Erstatnings Fjern Forespørgsel (Substitute Remote Request) (SRR) bit er også includeret i voldgifts feltet.
SRR bittet er altid transmitteret som et recessiv bit for at sikre at, i tilfældet en voldgift mellem Standard Data Framen
og en Udvidet Data Frame, vil Standard Data Framen altid have prioritet hvis begge beskeder har den samme base
(11 bit) genkender.
Alle andre filter i en 2.0B besked frame er identiske til dem i Standard format.
2.0A og 2.0B kompalitet
2.0B controllere er helt bagud kompatible med 2.0A controlere og kan transmittere og sende beskeder i begge formater.
Vær dog opmærksom på, at der er to typer af 2.0A controllere:
-Den første er kun i stand til at treansmittere og modtage beskeder i 2.0A format. Med denne type af controller,
-vil modtagelse af enhver 2.0B besked give en fejl.
-Den anden (kendt som 2.0B passiv) er i stand til at sende og modtage 2.0A beskeder. De vil også anerkende modtagelsen
af 2.0B beskeder – men derefter ignorere dem..
Derfor, er det muligt indenfor de ovennævnte begrænsninger at bruge både version 2.0A (med 2.0B passiv kompalitet)
og 2.0B controllere i et enkelt netværk.
Antallet af unikke genkendere til rådighed for brugere, i et enkelt 2.0A netværk, er 2.032 (2 11 – 24 = 2048 – 16 = 2032)
SLUT
Klik her for at få opgaven i word-format.