Den CAN ( Controller Area Network ) data bus er et serielt system, bus, der er meget udbredt i mange industrier, især bilindustrien .
Det er standardiseret med ISO 11898 .
Den anvender en fremgangsmåde, der er kendt under navnet multiplexing , og som består i at forbinde til det samme kabel (en bus ) et stort antal computere, som derfor kommunikerer igen. Denne teknik eliminerer behovet for at tilslutte dedikerede linjer til hvert stykke information, der skal transmitteres (punkt-til-punkt-forbindelse). Så snart et system (bil, fly, båd, telefonnetværk osv. ) Når en vis grad af kompleksitet, bliver punkt-til-punkt tilgang umulig på grund af den enorme mængde ledninger, der skal installeres, og dens omkostninger (i masse , materialer, arbejdskraft, vedligeholdelse).
Indførelsen af multipleksede busser (hovedsageligt CAN) i bilen havde til formål at reducere mængden af kabler i køretøjer (der var da op til 2 km kabler pr. Bil), men frem for alt tillod det eksplosionen i antallet af computere og sensorer distribueret i hele køretøjet og de tilsvarende tjenester (reduktion i forbrug, forureningsbekæmpelse , aktiv / passiv sikkerhed , komfort, fejlregistrering osv. ), samtidig med at kabellængderne reduceres.
CAN-databussen er resultatet af samarbejdet mellem universitetet i Karlsruhe og Bosch .
Det blev først brugt i bilsektoren , men bruges i øjeblikket i de fleste industrier såsom luftfart via standardiserede CAN-baserede protokoller.
Det blev introduceret med Intel i 1985 , men blev ikke standardiseret af ISO indtil begyndelsen af 1991'erne.
I 1992 kom flere virksomheder sammen for at skabe CAN i Automation, en forening, der sigter mod at fremme CAN.
En første udvikling kaldet FD for "Flexibel Data rate" er blevet frigivet.
En anden udvikling foretaget af Bosch , kaldet “XL”, er under udvikling.
Der er to standarder for det fysiske lag:
CAN er en halvdupleks tovejs seriel databus i bilindustrien, men bruges envejs - simplex - i luftfart for at opnå deterministisk adfærd .
Hver tilsluttet enhed, kaldet en "node", kan kommunikere med alle de andre.
For en “lav hastighed” CAN databus er antallet af noder begrænset til 20. For en “høj hastighed” CAN databus er den begrænset til 30.
Hver knude er forbundet til bussen via et snoet par (afskærmet eller ej) .
De to ender af bussen skal løbes tilbage af modstande på 120 Ω ± 10% (tolerance mellem 108 Ω og 132 Ω).
Adgang til CAN-databussen følger CSMA / CR- teknikken (at lytte til hver station, før man taler, men ikke taler, opløsning af kollisioner efter prioritet).
Den maksimale længde på bussen bestemmes af den anvendte hastighed:
Hastighed ( kbit / s ) |
Længde ( m ) |
---|---|
1000 | 30 |
800 | 50 |
500 | 100 |
250 | 250 |
125 | 500 |
62.5 | 1000 |
20 | 2.500 |
10 | 5.000 |
Den anvendte kodning er af NRZ- typen (ikke tilbage til 0) :
Knudepunkterne er kablet på bussen efter princippet "kablet ELLER" fra et elektrisk synspunkt ("kablet OG" fra et logisk synspunkt), hvilket betyder at værdien 0 i tilfælde af samtidig transmission fra to knudepunkter overskriver værdien 1.
Så vi siger:
De logiske tilstande og de elektriske niveauer, der anvendes mellem de to linjer i differensparret til lavhastigheds-CAN, er som følger:
Logisk tilstand | V CANH-GND | V CANL-GND | V CANH-CANL |
---|---|---|---|
Recessiv eller "1" | 1,75 V. | 3,25 V. | −1,5 V. |
Dominant eller "0" | 4 V | 1 V | 3 V |
De logiske tilstande og de elektriske niveauer, der anvendes mellem de to linjer i differensparret til ADC med høj hastighed, er som følger:
Logisk tilstand | V CANH-GND | V CANL-GND | V CANH-CANL |
---|---|---|---|
Recessiv eller "1" | 2,5 V | 2,5 V | 0 til 0,5 V. |
Dominant eller "0" | 3,5 V | 1,5 V | fra 0,9 til 2 V. |
Varigheden af en bit kaldes “Nominal Bit Time”.
Hver bit består af flere segmenter, der er uret af det interne ur i hver node:
"Tidskvantumet" er tidsenheden konstrueret ud fra perioden for den interne oscillator i hver knude.
Busfrekvensen er højst 1 MHz og oscillatorernes frekvenser adskillige MHz, "Time Quantum" er generelt værd flere urperioder (mellem 1 og 32 gange).
Varigheden af hvert segment er som følger:
Segment | Varighed i "Time Quantum" |
---|---|
Synkronisering | 1 |
Spredning | fra 1 til 8 |
Bufferfase nr . 1 | fra 1 til 8 |
Bufferfase nr . 2 | fra 2 til 8 |
Således kan varigheden af en bit variere fra 5 til 25 "Time Quantum".
Jo højere frekvensen af knudens interne ur er, jo kortere kan "Time Quantum" være, jo mere tæller de sidste tre segmenter "Time Quantum", og jo bedre bliver synkroniseringspræcisionen.
SynkroniseringssegmentSynkroniseringssegmentet bruges til at synkronisere de forskellige knudepunkter.
Overgangen fra 0 til 1 eller fra 1 til 0, lavet til afsenderknudepunktet, skal finde sted i dette segment. Hvis denne overgang ikke finder sted i det samme segment for en modtagende knude, er det fordi den er desynkroniseret. Dette er en fasefejl.
Takket være gennemsigtighedsbiten kan denne kontrol udføres mindst hver 5. bit (for de første felter i rammen, hvor den bruges).
FormeringssegmentFormeringssegmentet bruges til at kompensere for formeringsfænomener på bussen.
FasesegmenterFasesegmenter bruges til at kompensere for fasefejl, der detekteres under overgange.
Varigheden af disse segmenter kan variere i tilfælde af resynkronisering.
PrøveudtagningspunktSamplingpunktet eller “Sample point” er det øjeblik, hvor bitens værdi læses på bussen. Dette sker mellem de to fasesegmenter.
SynkroniseringDer er to typer synkronisering:
Pinout på CAN-databussen er standardiseret og bruger et DE-9- stik :
Broche | Beskrivelse |
---|---|
1 | (Reservere) |
2 | CANL |
3 | Masse |
4 | (Reservere) |
5 | Afskærmning (valgfri) |
6 | Masse |
7 | CANH |
8 | (Reservere) |
9 | Ekstern strømforsyning (valgfri) |
Der er også to standarder for datalinklaget:
Der er flere typer rammer:
Mellem to rammer skal senderne observere en pause (inter-frame periode) svarende til varigheden af tre bits, hvorunder bussen holdes i recessiv tilstand.
Datarammen bruges til at sende information til andre noder.
En dataramme består af syv forskellige felter:
Felterne transmitteres i rækkefølge fra SOF til EOF.
I hvert felt i rammen transmitteres bitene fra den stærkeste til den svageste.
VoldgiftsfeltVoldgiftsfeltet er sammensat af 11 identifikationsbits til CAN 2.0A og 29 bit til CAN 2.0B efterfulgt af RTR (Remote Transmission Request) bit, som er dominerende. Dette felt fungerer som en identifikator for de data, der transporteres i datafeltet.
De 11 bits CAN 2.0A tillader 2 11 = 2048 kombinationer.
De 29 bits CAN 2.0B tillader 2 29 = 536 870 912 kombinationer.
KommandofeltKontrolfeltet består af seks bits.
Den mest betydningsfulde bit bruges til at differentiere typen af ramme:
Den næste bit bruges ikke.
De fire mindst signifikante bits kaldet DLC (Data Length Code) repræsenterer antallet af byte i det indbyggede datafelt (PAYLOAD).
Dette antal bytes kan variere fra 0 til 8 eller ni værdier gemt med de fire bits i DLC-feltet. DLC-værdier større end 9 vil derfor ikke blive brugt (fra 9 til 15).
DatafeltDatafeltet kan variere fra 0 til 8 byte.
I tilfælde af en anmodningsramme er datafeltet tomt.
CRC-feltFeltet er sammensat af femten bits CRC (Cyclic Redundancy Check) og af en såkaldt afgrænsningsbit (“CRC-afgrænser”), som altid er recessiv.
CRC beregnes ud fra alle hidtil transmitterede felter (dvs. SOF, voldgiftsfelt, kontrolfelt og datafelt; transparensbit tages ikke i betragtning). Sættet udgør polynomet f ( x ).
Algoritmen består først og fremmest i at multiplicere f ( x ) med 2 15 .
Derefter divideres polynomet f ( x ) (modulo 2) med polynomet g ( x ) = x 15 + x 14 + x 10 + x 8 + x 7 + x 4 + x 3 + x 0 .
Når de successive opdelinger er foretaget, udgør resten CRC-sekvensen.
Den Hamming afstand algoritmen anvendes, er 6, hvilke organer der kan detekteres højst fem fejl.
Takket være dette detekteringssystem er den registrerede fejlrate meget lav (mindre end 4,6 × 10 −11 ). Derudover er netværket i stand til at skelne punktfejl fra overflødige fejl. Således kan enhver defekt enhed afbrydes fra netværket for at begrænse forstyrrelser. Netværket skifter derefter til "nedbrudt" tilstand.
Bekræftelsesfelt ACKFeltet er sammensat af en ACK-kvitteringsbit (ACKnowledge) og en såkaldt afgrænsningsbit (“ACKnowledge-afgrænser”), som altid er recessiv.
Alle modtagere, der har modtaget meddelelsen med succes, skal anerkende den ved at transmittere en dominerende bit i ACK-bitens varighed, hvilket gør det muligt for afsenderknudepunktet at vide, at mindst en af de modtagende noder har modtaget meddelelsen.
Hvis en modtagende node ikke eller forkert modtog meddelelsen, kan den ikke bruge denne mekanisme til at signalere fejlen, da en modtagestation kun behøver at sende en dominerende bit for at maskere alle recessive bits. For at signalere fejlen skal den sende en fejlramme.
Anmodningsrammen bruges til at anmode om data fra en anden node. Det svarer til datarammen undtagen:
Bemærk, at det faktum, at RTR-bit er recessiv i tilfælde af en anmodningsramme, betyder, at hvis en dataramme sendes samtidigt med det samme voldgiftsfelt, er det datarammen, der har prioritet.
For at sikre transmission af meddelelser anvendes metoden " bit-stuffing ".
Den består, i det tilfælde hvor der er sendt fem bits af samme polaritet i træk, tilføjer en smule modsat polaritet til sekvensen for at bryde for store strenge af identiske bits. Denne metode anvendes kun til SOF-, voldgifts-, kommando-, data- og CRC-felter (skillelinje ekskluderet).
For eksempel bliver "1111 1110" til "1111 1011 0".
Hvad sker der, hvis flere noder forsøger at transmittere samtidigt?
Der er en busadgangsprocedure, som hver node skal indsende:
Således opnås en prioritet takket være voldgiftsfeltet.
Jo mindre den er, jo mere den indeholder bits af høj orden 0 (dominerende), jo mere vil den have prioritet.
Denne prioriterings- eller voldgiftsfase slutter ved RTR-bit.
Så snart der opdages en fejl, venter noden ikke på slutningen af den inkriminerede ramme, den sender straks en fejlramme for at signalere et problem i transmissionen.
En fejlramme består af to forskellige felter:
Fejlrammen kan være:
Et antal fejl kan detekteres af noderne.
BitfejlHver gang en node udsender en smule på bussen, genlæser den bussen og skal finde den bit, den skrev. Hvis den sendes en recessiv bit, læses den igen en dominerende bit, den er blevet ændret.
Denne mekanisme er identisk med den, der tillader prioritering, hvorfor det ikke skal tages i betragtning i voldgiftsfeltet.
Ditto for bekræftelsesfeltet, hvis den recessive bit, der sendes af den afsendende knude, bliver dominerende, er det simpelthen, at en eller flere modtagende noder har bekræftet den korrekte modtagelse af rammen, så det er ikke en fejl.
Ting fejlHvis seks på hinanden følgende bits af samme polaritet læses på bussen, er gennemsigtighedsbitmekanismen ikke respekteret, eller en bit er blevet ændret.
CRC-fejlHvis CRC-værdien beregnet af den modtagende node er forskellig fra den CRC, der er kodet i rammen af den afsendende node, er rammen blevet beskadiget.
CRC-afgrænserHvis biten "CRC-afgrænsning", der læses af de modtagende noder, ikke er recessiv, er biten blevet ændret.
ACKendskab fejlHvis den recessive ACK-bit, der sendes af den afsendende node, ikke er blevet tilsidesat af en dominerende bit, har ingen modtagende node modtaget den.
ACKendskab afgrænsningHvis biten "ACKnowledge-afgrænsning", der læses af de modtagende noder, ikke er recessiv, er biten blevet ændret.
Fejl ved gendannelseVed konstruktion bryder fejlrammen reglen om bitfyldning , uanset hvad der sker, de seks bits i fejlflagget er identiske.
Når en node sender en fejlramme, registrerer alle de andre noder en "Stuff error" -typefejl og begynder også at sende en fejlramme.
I tilfælde af aktive fejlrammer må antallet af dominerende bits i en række ikke overstige tolv bit. Derudover må de noder, der ikke har sendt deres fejlramme, ikke gøre det.
Den sidste node, der sendes, forsyner afgrænseren (otte recessive bits) og slutter kakofonien.
Noden, der sendte den inkriminerede ramme, trækker derefter sin chance tilbage.
Og så videre, indtil rammen passerer, eller en af dens fejltællere får knuden til at ændre fejltilstand.
FejltællereHver knude har to fejltællere:
Transmissionsfejltælleren for en knude i sendertilstand er:
Modtagefejltælleren for en node i modtagertilstand er:
Afhængigt af fejltællerne skifter noden fejltilstand. Der er tre:
Overbelastningsrammen kan bruges i to tilfælde:
En overbelastningsramme består af to forskellige felter:
Overbelastningsrammen svarer til en aktiv fejlramme.
Når en node transmitterer en overbelastningsramme for at anmode om en forsinkelse (betingelse nr . 1), overskriver den de tre recessive bits i inter-frame-perioden, de resterende knudepunkter registrerer overopladning, og de udsender selv rammeoverbelastning (tilstand nr . 2).
Som med aktive fejlrammer bør antallet af dominerende bits i en række ikke overstige tolv bit. Derudover må noder, der ikke har sendt deres overbelastningsramme, ikke gøre det.
Den sidste node, der sendes, forsyner afgrænseren (otte recessive bits) og slutter kakofonien.
Flere anvendelseslag er defineret på CAN-standarden: