Du satte deg inn i bilen, trykket på startknappen, og motoren våknet til liv på et blunk, men hvordan bestemte bilen din om den skulle starte eller ikke?

Vel, for å få bilen til å starte, kommuniserte flere antenner og elektroniske kontrollenheter med nøkkelbrikken. Controller Area Network (CAN)-protokollen sørger for at kommunikasjonen mellom nøkkelbrikken, antennene og ECU-ene skjer på riktig måte inne i bilen din.

Så hva er CAN-protokollen, og hvordan hjelper den enhetene på kjøretøyets systemer med å fungere sammen? Vel, la oss finne ut av det.

Hva er CAN-protokollen, og hvorfor er det nødvendig?

På den tiden hadde ikke biler mye elektronikk. Faktisk, hvis du ønsket å starte kjøretøyet på begynnelsen av 1900-tallet, måtte du gå ut av kjøretøyet og skru motoren for hånd.

Dagens biler har tvert imot flere elektroniske sensorer, og elektroniske enheter overvåker alt fra kabintemperaturen til veivakselens omdreininger.

Når det er sagt, er dataene som mottas fra disse sensorene uten verdi før de er behandlet. Denne databehandlingen utføres av dataenheter kjent som elektroniske kontrollenheter (ECU).

instagram viewer

Bildekreditt: SenseiAlan/Flickr

I motsetning til en datamaskin med en enkelt CPU, har en bil flere ECUer, som hver er ansvarlig for å utføre en bestemt oppgave. Selv om disse ECU-ene kan utføre en enkelt oppgave effektivt, må de fungere sammen for å sikre funksjoner som ABS og ESC fungere skikkelig.

På grunn av dette må alle ECUene på en bil kobles til. Man kan bruke en punkt-til-punkt-topologi for å lage disse forbindelsene, hvor hver ECU er koblet direkte til annenhver ECU. Imidlertid vil denne arkitekturen gjøre systemet komplekst. Faktisk har et moderne kjøretøy over 70 ECU, og å koble dem på en-til-en-måte vil øke vekten på ledningene eksponentielt.

For å løse dette problemet opprettet Bosch sammen med Mercedes-Benz og Intel Controller Area Network-protokollen i 1986. Denne protokollen gjorde det mulig for ECUer å kommunisere med hverandre ved hjelp av en delt databuss kjent som CAN-bussen.

Hvordan fungerer CAN?

CAN-protokollen er en meldingsbasert kommunikasjonsmetodikk som er avhengig av et sett med tvunnet par kabler for dataoverføring. Disse ledningene er kjent som CAN høy og CAN lav.

For å muliggjøre dataoverføring på disse ledningene, endres spenningsnivåene deres. Disse endringene i spenningsnivåer blir deretter oversatt til logiske nivåer som gjør at ECU-ene på en bil kan kommunisere med hverandre.

Bildekreditt: Spinningspark/Wikimedia

For overføring av logikk en på CAN-bussen er spenningen på begge linjene satt til 2,5 volt. Denne tilstanden er også kjent som den recessive tilstanden, noe som betyr at CAN-bussen er tilgjengelig for bruk av enhver ECU.

Tvert imot, logisk 0 overføres på CAN-bussen når CAN-høylinjen har en spenning på 3,5 volt og CAN-lavlinjen er på 1,5 volt. Denne tilstanden til bussen er også kjent som den dominerende tilstanden, som forteller hver ECU i systemet at en annen ECU sender, så de bør vente til overføringen er over før de begynner å sende meldingen.

For å muliggjøre disse spenningsendringene, kobles bilens ECUer til CAN-bussen gjennom en CAN-sender/mottaker og en CAN-kontroller. Transceiveren er ansvarlig for å konvertere spenningsnivåene på CAN-bussen til nivåer som ECUen kan forstå. Kontrolløren, derimot, brukes til å administrere de mottatte dataene og sikre at kravene i protokollen er oppfylt.

Alle disse ECUene som er koblet til CAN-bussen kan overføre data på den vridde kabelen, men det er en hake, bare meldingen med høyest prioritet kan overføres på CAN-bussen. For å forstå hvordan en ECU overfører data på CAN-bussen, må vi forstå meldingsstrukturen til CAN-protokollen.

Forstå meldingsstrukturen til CAN-protokollen

Når to ECUer ønsker å kommunisere, sendes meldinger med strukturen nedenfor på CAN-bussen.

Disse meldingene overføres ved å endre spenningsnivåene på CAN-bussen, og det tvunnede par-designet til CAN-ledningene forhindrer datakorrupsjon under overføring.

  • SOF: Kort for Start Of Frame, SOF-biten er en enkelt dominerende bitdataramme. Denne biten overføres av en node når den ønsker å sende data på CAN-bussen.
  • Identifikator: Identifikatoren på CAN-protokollen kan være enten 11 biter eller 29 biter i størrelse. Størrelsen på identifikatoren er basert på versjonen av CAN-protokollen som brukes. Hvis den utvidede versjonen av CAN brukes, er størrelsen på identifikatoren 29 biter, og i andre tilfeller er størrelsen på identifikatoren 11 biter. Hovedmålet med identifikatoren er å identifisere meldingens prioritet.
  • RTR: Remote Transmission Request eller RTR brukes av en node når data må forespørres fra en annen node. For å gjøre dette, sender noden som ønsker dataene en melding med en recessiv bit i RTR-rammen til den tiltenkte noden.
  • DLC: Datalengdekoden definerer størrelsen på data som overføres i datafeltet.
  • Datafelt: Dette feltet inneholder datanyttelasten. Størrelsen på denne nyttelasten er 8 byte, men nyere protokoller som CAN FD øker størrelsen på denne nyttelasten til 64 byte.
  • CRC: Kort for Cyclic Redundancy Check, CRC-feltet er en feilkontrollramme. Det samme er 15 bits i størrelse og beregnes av både mottakeren og senderen. Den overførende noden oppretter en CRC for dataene når de sendes. Ved mottak av dataene, beregner mottakeren CRC for de mottatte dataene. Hvis begge CRC-ene samsvarer, bekreftes integriteten til dataene. Hvis ikke, har dataene feil.
  • Bekreftelsesfelt: Når dataene er mottatt og er fri for feil, mater mottaksnoden en dominerende bit inn i bekreftelsesrammen og sender den tilbake til senderen. Dette forteller senderen at dataene er mottatt og er fri for feil.
  • End of Frame: Når dataoverføringen er fullført, sendes syv påfølgende recessive biter. Dette sikrer at alle noder vet at en node har fullført dataoverføring, og de kan overføre data på bussen.

I tillegg til bitene ovenfor, har CAN-protokollen noen få biter reservert for fremtidig bruk.

Forenkling av CAN gjennom et eksempel

Nå som vi har en grunnleggende forståelse av hvordan en melding på CAN-bussen ser ut, kan vi forstå hvordan data overføres mellom forskjellige ECUer.

For enkelhets skyld, la oss si at bilen vår har 3 ECUer: Node 1, Node 2 og Node 3. Av de 3 ECUene ønsker Node 1 og Node 2 å kommunisere med Node 3.

La oss se hvordan CAN-protokollen bidrar til å sikre kommunikasjon i et slikt scenario.

  • Oppdage tilstanden til bussen: Alle ECU-ene på bilen er koblet til CAN-bussen. Når det gjelder vårt eksempel, ønsker Node 1 og Node 2 å sende data til en annen ECU; før du gjør det, må begge ECU-ene sjekke tilstanden til CAN-bussen. Hvis bussen er i en dominerende tilstand, kan ikke ECU-ene overføre data når bussen er i bruk. På den annen side, hvis bussen er i en recessiv tilstand, kan ECU-ene overføre data.
  • Sende starten på rammen: Hvis differensialspenningen på CAN-bussen er null, endrer både Node 1 og Node 2 tilstanden til bussen til dominant. For å gjøre dette, økes spenningen til CAN høy til 3,5 volt, og spenningen til CAN lav reduseres til 1,5 volt.
  • Bestemme hvilken node som kan få tilgang til bussen: Når SOF-en er sendt, konkurrerer begge nodene om å få tilgang til CAN-bussen. CAN-bussen bruker Carrier Sense Multiple Access/Collision Detection (CSMA/CD)-protokollen for å bestemme hvilken node som får tilgang. Denne protokollen sammenligner identifikatorene som sendes av begge nodene og gir tilgang til den med høyere prioritet.
  • Sender data: Når noden har tilgang til bussen, sendes datafeltet, sammen med CRC, til mottakeren.
  • Kontrollere og avslutte kommunikasjonen: Ved mottak av dataene kontrollerer node 3 CRC for de mottatte dataene. Hvis det ikke er noen feil, sender Node 3 en CAN-melding til den overførende noden med en dominerende bit på bekreftelsesrammen sammen med EOF for å avslutte kommunikasjonen.

Ulike typer CAN

Selv om meldingsstrukturen som brukes av CAN-protokollen forblir den samme, endres hastigheten på dataoverføringen og størrelsen på databitene for å overføre høyere båndbredder med data.

På grunn av disse forskjellene har CAN-protokollen forskjellige versjoner, og en oversikt over det samme er gitt nedenfor:

  • Høyhastighets CAN: Dataene på CAN-ledningene overføres serielt, og denne overføringen kan gjøres med forskjellige hastigheter. For høyhastighets CAN er denne hastigheten 1 Mbps. På grunn av denne høye dataoverføringshastigheten, brukes høyhastighetsbokser for ECUer, som kontrollerer drivverket og sikkerhetssystemene.
  • Lavhastighets CAN: Ved lavhastighets CAN reduseres overføringshastigheten til 125 kbps. Siden den lave hastigheten kan tilby lavere datahastigheter, brukes den til å koble til ECUer som styrer passasjerens komfort, som klimaanlegget eller infotainmentsystemet.
  • Kan FD: Forkortelse for CAN fleksibel datahastighet, CAN FD er den nyeste versjonen av CAN-protokollen. Det øker størrelsen på datarammen til 64 byte og lar ECU-ene overføre data med hastigheter fra 1 Mbps til 8 Mbps. Denne dataoverføringshastigheten kan styres av ECU-ene i sanntid basert på systemkrav, slik at data kan overføres med høyere hastigheter.

Hva er fremtiden for bilkommunikasjon?

CAN-protokollen lar flere ECUer kommunisere med hverandre. Denne kommunikasjonen muliggjør sikkerhetsfunksjoner som elektronisk stabilitetskontroll og avanserte førerassistentsystemer som blindsonedeteksjon og adaptiv cruisekontroll.

Når det er sagt, med bruken av avanserte funksjoner som autonom kjøring, øker mengden data som overføres av CAN-bussen eksponentielt. For å aktivere disse funksjonene kommer nyere versjoner av CAN-protokollen, som CAN FD, på markedet.