logo

CAN (Controller Area Network) protokol

CAN står for Controller Area Network protokol. Det er en protokol, der er udviklet af Robert Bosch omkring 1986. CAN-protokollen er en standard designet til at tillade mikrocontrolleren og andre enheder at kommunikere med hinanden uden nogen værtscomputer. Den funktion, der gør CAN-protokollen unik blandt andre kommunikationsprotokoller, er udsendelsestypen af ​​bus. Her betyder broadcast, at informationen sendes til alle noderne. Noden kan være en sensor, mikrocontroller eller en gateway, der gør det muligt for computeren at kommunikere over netværket via USB-kablet eller Ethernet-porten. CAN er en meddelelsesbaseret protokol, hvilket betyder, at meddelelsen bærer meddelelsesidentifikatoren, og baseret på identifikatoren bestemmes prioritet. Der er ikke behov for node-identifikation i CAN-netværket, så det bliver meget nemt at indsætte eller slette det fra netværket. Det er en seriel halv-dupleks og asynkron type kommunikationsprotokol. CAN er en to-leder kommunikationsprotokol, da CAN-netværket er forbundet via den to-leder bus. Ledningerne er parsnoet med 120Ω karakteristik impedans forbundet i hver ende. Oprindeligt var det primært designet til kommunikation i køretøjerne, men det bruges nu i mange andre sammenhænge. Ligesom UDS og KWP 2000, KAN også bruges til indbygget diagnostik.

Hvorfor KAN?

Behovet for en centraliseret standardkommunikationsprotokol kom på grund af stigningen i antallet af elektroniske enheder. For eksempel kan der være mere end 7 TCU til forskellige undersystemer såsom instrumentbræt, transmissionskontrol, motorkontrolenhed og mange flere i et moderne køretøj. Hvis alle noderne er forbundet en-til-en, ville kommunikationshastigheden være meget høj, men kompleksiteten og omkostningerne ved ledningerne ville være meget høje. I ovenstående eksempel kræver et enkelt dashboard 8 stik, så for at overvinde dette problem blev CAN introduceret som en centraliseret løsning, der kræver to ledninger, dvs. CAN høj og CAN lav. Løsningen med at bruge CAN-protokollen er ret effektiv på grund af dens beskedprioritering, og fleksibel, da en node kan indsættes eller fjernes uden at påvirke netværket.

Anvendelser af CAN-protokol

Oprindeligt blev CAN-protokollen designet til at målrette det kommunikationsproblem, der opstår i køretøjerne. Men senere, på grund af de funktioner, den tilbyder, bruges den på forskellige andre områder. Følgende er anvendelserne af CAN-protokollen:

  • Automotive (personbiler, lastbiler, busser)
  • Elektronisk udstyr til luftfart og navigation
  • Industriel automation og mekanisk styring
  • Elevator og rulletrapper
  • Bygningsautomatisering
  • Medicinske instrumenter og udstyr
  • Marine, medicinsk, industriel, medicinsk

KAN lagdelt arkitektur

Som vi ved, at OSI model opdeler kommunikationssystemet i 7 forskellige lag. Men CAN lagdelt arkitektur består af to lag, dvs.

Lad os forstå begge lag.

  • Data-link lag: Dette lag er ansvarlig for node til node dataoverførsel. Det giver dig mulighed for at etablere og afslutte forbindelsen. Den er også ansvarlig for at opdage og rette de fejl, der kan opstå på det fysiske lag. Datalink-laget er opdelt i to underlag:
      MAC:MAC står for Media Access Control. Den definerer, hvordan enheder i et netværk får adgang til mediet. Det giver indkapsling og afkapsling af data, fejldetektion og signalering.
  • LLC:LLC står for logisk linkkontrol. Den er ansvarlig for filtrering af rammeaccept, overbelastningsmeddelelse og gendannelsesstyring.
  • Fysisk lag: Det fysiske lag er ansvarlig for transmissionen af ​​rådata. Den definerer specifikationerne for parametre såsom spændingsniveau, timing, datahastigheder og stik.

CAN-specifikationer definerer CAN-protokol og CAN fysiske lag, som er defineret i CAN-standarden ISO 11898. ISO 11898 har tre dele:

javascript søvn
  • ISO 11898-1: Denne del indeholder specifikationen af ​​datalinklaget og fysisk signallink.
  • ISO 11898-2: Denne del kommer under CAN fysisk lag til højhastigheds CAN. Højhastigheds-CAN tillader datahastigheder på op til 1 Mbps, der bruges i drivlinjen og køretøjets ladeområde.
  • ISO 11898-3: Denne del kommer også under CAN fysisk lag for lavhastigheds CAN. Det tillader datahastigheder op til 125 kbps, og lavhastigheds-CAN bruges, hvor kommunikationshastigheden ikke er en kritisk faktor.

CiA DS-102: Den fulde form for CiA er CAN in Automation, som definerer specifikationerne for CAN-stikket.

automatteori

For så vidt angår implementeringen, er CAN-controlleren og CAN-transceiveren implementeret i softwaren ved hjælp af applikations-, operativsystem- og netværksstyringsfunktionerne.

CAN indramning

Lad os forstå strukturen af ​​CAN-rammen.

CAN protokol
    SOF:SOF står for start of frame, hvilket angiver, at den nye frame er indtastet i et netværk. Den er på 1 bit.Identifikator:Et standarddataformat defineret under CAN 2.0 A-specifikationen bruger en 11-bit meddelelsesidentifikator til voldgift. Grundlæggende sætter denne meddelelsesidentifikator datarammens prioritet.RTR:RTR står for Remote Transmission Request, som definerer rammetypen, om det er en dataramme eller en fjernramme. Den er på 1-bit.Kontrolfelt:Den har brugerdefinerede funktioner.
      GÅ:En IDE-bit i et kontrolfelt står for identifikationsudvidelse. En dominerende IDE-bit definerer 11-bit standardidentifikatoren, mens recessiv IDE-bit definerer den 29-bit udvidede identifikator.DLC:DLC står for Data Length Code, som definerer datalængden i et datafelt. Den er på 4 bit.Datafelt:Datafeltet kan indeholde op til 8 bytes.
    CRC felt:Datarammen indeholder også et cyklisk redundanskontrolfelt på 15 bit, som bruges til at detektere korruptionen, hvis den opstår i transmissionstiden. Afsenderen vil beregne CRC'en før afsendelse af datarammen, og modtageren beregner også CRC'en og sammenligner derefter den beregnede CRC med CRC'en modtaget fra afsenderen. Hvis CRC ikke matcher, vil modtageren generere fejlen.ACK felt:Dette er modtagerens bekræftelse. I andre protokoller sendes en separat pakke til en bekræftelse efter at have modtaget alle pakkerne, men i tilfælde af CAN-protokol sendes der ikke en separat pakke til en bekræftelse.EOF:EOF står for end of frame. Den indeholder 7 på hinanden følgende recessive bits kendt End of frame.

Nu vil vi se, hvordan data overføres gennem CAN-netværket.

CAN protokol

Et CAN-netværk består af flere CAN-noder. I ovenstående tilfælde har vi overvejet tre CAN-noder og navngivet dem som node A, node B og node C. CAN-node består af tre elementer, som er angivet nedenfor:

  • Vært
    En vært er en mikrocontroller eller mikroprocessor, som kører en applikation til at udføre et bestemt job. En vært bestemmer, hvad den modtagne besked betyder, og hvilken besked den skal sende næste gang.
  • CAN controller
    CAN-controlleren beskæftiger sig med kommunikationsfunktionerne beskrevet af CAN-protokollen. Det udløser også transmissionen eller modtagelsen af ​​CAN-meddelelserne.
  • CAN Transceiver
    CAN-transceiveren er ansvarlig for transmissionen eller modtagelsen af ​​data på CAN-bussen. Det konverterer datasignalet til strømmen af ​​data indsamlet fra CAN-bussen, som CAN-controlleren kan forstå.

I ovenstående diagram bruges uskærmet parsnoet kabel til at sende eller modtage dataene. Det er også kendt som CAN-bus, og CAN-bus består af to linjer, dvs. CAN-lavlinje og CAN-højlinje, som også er kendt som henholdsvis CANH og CANL. Overførslen sker på grund af den differentielle spænding, der påføres disse linjer. CAN'en bruger parsnoet kabel og differentialspænding på grund af dets miljø. For eksempel i en bil kan motor, tændingssystem og mange andre enheder forårsage datatab og datakorruption på grund af støj. Snoningen af ​​de to linjer reducerer også magnetfeltet. Bussen afsluttes med 120Ω modstand i hver ende.

CAN-egenskaber

CAN protokol

Ved hjælp af differentialspænding vil vi bestemme, hvordan 0 og 1 transmitteres gennem CAN-bussen. Ovenstående figur er spændingsgrafen, der viser spændingsniveauet for CAN lav og CAN høj. I CAN-terminologi siges logik 1 at være recessiv, mens logik 0 er dominerende. Når CAN high line og CAN low line anvendes med 2,5 volt, vil den faktiske differentialspænding være nul volt. En nul volt på CAN-bussen læses af CAN-transceiveren som en recessiv eller logisk 1. En nul volt på CAN-bussen er en ideel tilstand af bussen. Når CAN high line trækkes op til 3,5 volt og CAN low line trækkes ned til 1,5 volt, så ville bussens faktiske differensspænding være 2 volt. Den behandles som en dominant bit eller logisk 0 af CAN-transceiveren. Hvis bustilstanden nås til dominant eller logisk 0, ville det blive umuligt at flytte til den recessive tilstand med en hvilken som helst anden knude.

Nøglepunkter lært fra CAN-egenskaberne

  • Logik 1 er en recessiv tilstand. For at sende 1 på CAN-bussen skal både CAN høj og CAN lav anvendes med 2,5V.
  • Logisk 0 er en dominerende tilstand. For at sende 0 på CAN-bussen skal CAN høj anvendes ved 3,5V og CAN lav bør anvendes ved 1,5V.
  • Bussens ideelle tilstand er recessiv.
  • Hvis noden når den dominerende tilstand, kan den ikke flytte tilbage til den recessive tilstand med nogen anden node.

CAN bus logik

CAN protokol
CAN protokol

Fra ovenstående scenarie får vi at vide, at den dominerende tilstand overskriver den recessive tilstand. Når noden sender den dominante og den recessive bit samtidigt, så forbliver bussen dominerende. Det recessive niveau opstår kun, når alle noderne sender den recessive bit. En sådan logik er kendt som OG-logik, og fysisk er den implementeret som et åbent samlerkredsløb.

CAN kommunikationsprincip

Som vi ved, at meddelelsen sendes ud fra den prioritet, der er sat i voldgiftsfeltet. For standardrammen er meddelelsesidentifikatoren 11 bit, mens meddelelsesidentifikatoren for den udvidede ramme er 29 bit. Det giver systemdesigneren mulighed for at designe meddelelsesidentifikatoren ved selve designet. Jo mindre meddelelsesidentifikatoren er, jo højere vil meddelelsesprioriteten være.

Lad os forstå, hvordan voldgift fungerer gennem et flowdiagram.

række objekter i java
CAN (Controller Area Network) protokol

Afsenderen ønsker at sende beskeden og venter på, at CAN-bussen bliver inaktiv. Hvis CAN-bussen er inaktiv, sender afsenderen SOF'en eller den dominerende bit for busadgangen. Derefter sender den meddelelsesidentifikatorbit i den mest signifikante bit. Hvis noden detekterer den dominerende bit på bussen, mens den har transmitteret den recessive bit, betyder det, at noden har mistet arbitreringen og stopper med at transmittere yderligere bits. Afsenderen vil vente og sende beskeden igen, når bussen er ledig.

Eksempel på CAN-voldgift

CAN protokol

Hvis vi betragter tre noder, dvs. Node 1, Node 2 og Node 3, er meddelelsesidentifikatorerne for disse noder henholdsvis 0x7F3, 0x6B3 og 0x6D9.

CAN protokol

Overførslen af ​​alle de tre noder med den mest signifikante bit er vist i diagrammet ovenfor.

ellevethbit: Da alle de tre bits af noder er recessive, vil busbit også forblive recessive.

erstatte alt java

10thbit: Alle noderne har 10. bit som recessiv, så bussen vil også forblive recessiv.

9thbit: Node 1 har recessiv bit, mens andre noder har en dominant bit, så bussen vil også forblive dominerende. I dette tilfælde har node 1 mistet voldgiften, så den holder op med at sende bits.

8thbit: Både node 2 og node 3 sender recessiv bit, så bustilstanden forbliver recessiv.

7thbit: Node 2 sender dominant bit, mens node 3 har sendt recessiv bit, så bustilstanden forbliver dominerende. I dette tilfælde har node 3 mistet voldgiften, så den stopper med at sende beskeden, mens node 2 har vundet voldgiften betyder, at den vil fortsætte med at holde bussen indtil beskeden modtages.