What is a CAN network?

CAN-netværk: En dybdegående guide

11/05/2010

Rating: 4.78 (1037 votes)

Controller Area Network, bedre kendt som CAN, er en yderst robust seriel kommunikationsprotokol, der har revolutioneret måden, elektroniske enheder kommunikerer på i komplekse systemer. Oprindeligt udviklet til bilindustrien for at reducere mængden af ledninger i køretøjer, har dens pålidelighed og effektivitet ført til, at den i dag anvendes i en lang række industrier. I modsætning til traditionelle netværk som Ethernet, der sender store datablokke fra punkt A til B, fungerer CAN ved at udsende mange små beskeder til hele netværket. Dette sikrer, at alle noder i systemet har adgang til de samme konsistente data i realtid, hvilket er afgørende for sikkerhedskritiske applikationer.

How does a CAN network work?
Unlike a traditional network such as USB or Ethernet, CAN does not send large blocks of data point-to-point from node A to node B under the supervision of a central bus master. In a CAN network, many short messages like temperature or RPM are broadcast to the entire network, which provides for data consistency in every node of the system.
Indholdsfortegnelse

En Kort Historie om CAN-protokollen

Historien om CAN begynder i 1983, da det tyske firma Robert Bosch GmbH startede udviklingen. Målet var at skabe et pålideligt netværk til biler, der kunne forbinde forskellige elektroniske kontrolenheder (ECU'er) som motorstyring, ABS-bremser og transmission uden et komplekst og tungt ledningsnet. Den første officielle udgivelse af protokollen fandt sted i 1985. I starten af 1990'erne blev CAN standardiseret af International Organization for Standardization (ISO) under standarden ISO 11898. I 1995 blev en udvidet version, kendt som CAN 2.0B, introduceret, som tilføjede understøttelse for længere meddelelsesidentifikatorer. Siden da er protokollen fortsat med at udvikle sig og har fundet vej til næsten alle markeder, fra industriel automation til medicinsk udstyr.

Hvordan Fungerer et CAN-netværk?

For at forstå CAN's effektivitet er det vigtigt at se på dets grundlæggende principper. Netværket er bygget op omkring nogle få, men kraftfulde, koncepter, der adskiller det fra andre kommunikationsmetoder.

Fysisk Lag og Netværksmodel

CAN-protokollen opererer primært på de to nederste lag af OSI-modellen: det fysiske lag og datalinklaget. Dette er en af dens store fordele, da det giver systemingeniører frihed til at designe de øverste lag (netværk, transport osv.) specifikt til deres applikation. Et typisk CAN-netværk består af et to-tråds kabel (twisted pair), kendt som CAN High (CAN_H) og CAN Low (CAN_L). Disse to ledninger transmitterer et differentielt signal, hvilket gør netværket ekstremt modstandsdygtigt over for elektrisk støj og interferens – en afgørende egenskab i støjende miljøer som en bil eller en fabrikshal.

Dominante og Recessive Bits

CAN-bussen bruger en unik logik med to tilstande: dominant og recessiv.

  • En dominant bit (logisk 0) oprettes ved at skabe en spændingsforskel mellem CAN_H (f.eks. 3.5V) og CAN_L (f.eks. 1.5V).
  • En recessiv bit (logisk 1) er bussens standardtilstand, hvor der er meget lille eller ingen spændingsforskel mellem de to ledninger (begge omkring 2.5V).

Det afgørende princip er, at den dominante bit altid overskriver den recessive bit. Hvis bare én node på netværket sender en dominant bit, vil hele bussen være i dominant tilstand. Dette er fundamentet for CAN's smarte metode til at håndtere kollisioner.

Why should you choose a CAN protocol?
There are many reasons to choose the CAN protocol. CAN is a serial network communication protocol that requires only two wires to communicate data among multiple devices. All the devices connected in a CAN network communicate over a common two-wire bus, so no two nodes/devices need to be connected.

Busadgang og Prioritering: CSMA/CD-CR

CAN anvender en metode kaldet Carrier Sense Multiple Access with Collision Detection and Collision Resolution (CSMA/CD-CR). Det betyder, at enhver node kan begynde at sende en besked, når bussen er ledig (carrier sense). Hvis to eller flere noder begynder at sende samtidigt, opstår en kollision. I modsætning til Ethernet, hvor en kollision ødelægger dataene og kræver en genfremsendelse, bruger CAN en elegant proces kaldet bitvis arbitrering (bitwise arbitration) til at løse konflikten uden tab af data eller tid.

Hver CAN-meddelelse starter med en identifikator (ID). Noderne, der sender samtidigt, lytter til bussen, mens de sender deres ID, bit for bit. Hvis en node sender en recessiv bit (1), men registrerer en dominant bit (0) på bussen, ved den, at en anden node med en højere prioriteret besked (dvs. en lavere ID-værdi) også sender. Den tabende node stopper øjeblikkeligt sin transmission og lytter, mens den vindende node fortsætter uforstyrret. På denne måde sikres det, at den vigtigste besked altid kommer igennem først, uden forsinkelse.

Strukturen af CAN-meddelelser (Rammer)

Data på CAN-bussen sendes i pakker kaldet rammer (frames). Der findes flere typer, men de mest almindelige er Data Frames og Remote Frames.

Data Frame

Dette er den mest almindelige rammetype og bruges til at overføre data. Den består af flere felter:

  • Start of Frame (SOF): En enkelt dominant bit, der markerer starten på en ramme og synkroniserer noderne.
  • Arbitration Field: Indeholder meddelelsens identifikator (ID). I standard CAN (2.0A) er den 11 bits, mens den i udvidet CAN (2.0B) er 29 bits. Det er dette felt, der bestemmer meddelelsens prioritet.
  • Control Field: Angiver længden af datafeltet i bytes (0-8 bytes).
  • Data Field: Indeholder de faktiske data, der skal overføres. Kan være fra 0 til 8 bytes langt.
  • CRC Field: Et 15-bit Cyclic Redundancy Check-felt, der bruges til at opdage transmissionsfejl.
  • ACK Field: Acknowledge-feltet. Den sendende node sender dette som en recessiv bit. Enhver modtagende node, der har modtaget beskeden korrekt, overskriver den med en dominant bit. Dette bekræfter, at mindst én node har modtaget beskeden fejlfrit.
  • End of Frame (EOF): Syv recessive bits, der markerer slutningen af rammen.

Andre Rammetyper

  • Remote Frame: Bruges til at anmode om data fra en anden node. Den ligner en Data Frame, men har intet datafelt.
  • Error Frame: Sendes af en node, der opdager en fejl på bussen. Dette alarmerer alle andre noder, så den fejlbehæftede ramme kan kasseres.
  • Overload Frame: Bruges af en node til at signalere, at den er for travl og har brug for en kort pause, før den næste ramme sendes.
RammetypeFormålNøglekarakteristika
Data FrameOverføre dataIndeholder et datafelt på 0-8 bytes.
Remote FrameAnmode om dataHar intet datafelt.
Error FrameSignalerer en fejlTvinger alle noder til at ignorere den igangværende meddelelse.
Overload FrameAnmode om en forsinkelseBruges, når en node er midlertidigt overbelastet.

Fejlhåndtering: CAN's Største Styrke

CAN-protokollen er berømt for sin exceptionelle fejlhåndtering. Den har flere indbyggede mekanismer til at opdage og håndtere fejl, hvilket sikrer en ekstremt høj grad af dataintegritet.

  1. Bit Monitoring: Hver node, der sender, lytter samtidigt til bussen for at verificere, at det, den sender, også er det, der er på bussen. Hvis der er en uoverensstemmelse, genereres en Bit Error.
  2. Bit Stuffing: For at sikre tilstrækkelige flanker til synkronisering, indsætter protokollen automatisk en modsat bit efter fem på hinanden følgende identiske bits. Hvis en modtager ser seks identiske bits i træk, ved den, at der er sket en Stuff Error.
  3. Frame Check: CRC-feltet og andre fastformaterede felter i rammen tjekkes for at sikre, at de overholder protokollens regler. Hvis ikke, genereres en Form Error.
  4. Acknowledgement Check: Hvis en sender ikke modtager en dominant bit i ACK-feltet, genereres en ACK Error.

Når en node opdager en fejl, sender den straks en Error Frame, som får alle andre noder til at kassere den aktuelle meddelelse. Den oprindelige sender vil derefter automatisk forsøge at genfremsende beskeden. Derudover har hver node en intern fejltæller, der holder styr på, hvor mange fejl den sender eller modtager. Hvis en node konsekvent er kilden til fejl, vil den automatisk gå gennem forskellige tilstande (Error Passive, Bus-Off) og til sidst koble sig helt af netværket for ikke at forstyrre resten af kommunikationen. Denne mekanisme kaldes fault confinement.

What is a CAN network?
It is more flexible and efficient network. The first release of the CAN protocol came in 1985 by Robert Bosch. He originally developed and released CAN to meet the requirements of automotive network and reduces the cost and size of vehicle wiring harness. The ISO standardized CAN in the early 1990s in ISO-11898.

Anvendelsesområder for CAN

Selvom CAN blev skabt til biler, er dens anvendelse i dag langt bredere.

  • Bilindustrien: Stadig det største marked. CAN forbinder alt fra motorstyring, transmission, airbags, klimaanlæg og infotainmentsystemer. Moderne biler kan have flere separate CAN-netværk til forskellige formål (f.eks. et højhastighedsnetværk til drivlinjen og et lavhastighedsnetværk til komfortfunktioner).
  • Industriel Automation: Bruges i fabrikker til at styre robotter, samlebånd og maskiner. Protokoller som CANopen og DeviceNet er bygget oven på CAN og er standarder i industrien.
  • Medicinsk Udstyr: Pålideligheden gør CAN ideel til udstyr som røntgenmaskiner, CT-scannere og patientovervågningssystemer i intensivafdelinger.
  • Bygningsautomatik: Styrer elevatorer, ventilationsanlæg (HVAC), belysning og automatiske døre i smarte bygninger.
  • Landbrugs- og Byggemaskiner: Styrer komplekse hydrauliske systemer og motorer i traktorer, mejetærskere og gravemaskiner.

Ofte Stillede Spørgsmål (FAQ)

Hvad er den største forskel på CAN og Ethernet?

Den primære forskel ligger i deres formål og design. Ethernet er designet til at overføre store mængder data hurtigt mellem specifikke adresser (punkt-til-punkt eller via en switch) og er ikke deterministisk. CAN er designet til realtidskommunikation med små, hyppige beskeder, der udsendes til alle noder. Dens prioritetsbaserede arbitrering gør den deterministisk, hvilket betyder, at man kan garantere, at de vigtigste beskeder kommer igennem inden for en bestemt tidsfrist.

Hvad er den maksimale hastighed for en CAN-bus?

Den maksimale datahastighed for klassisk CAN er 1 Mbit/s. Hastigheden er dog omvendt proportional med bussens længde. Ved 1 Mbit/s er den maksimale længde ca. 40 meter. Ved lavere hastigheder, f.eks. 125 kbit/s, kan bussen være op til 500 meter lang. Nyere standarder som CAN FD (Flexible Data-Rate) tillader meget højere hastigheder i datafasen af meddelelsen.

Kan jeg tilføje en ny enhed til et CAN-netværk uden at omkonfigurere alt?

Ja, det er en af CAN's store fordele. Da protokollen er meddelelsesbaseret og ikke adressebaseret, kan nye noder tilføjes til bussen uden at skulle omprogrammere de eksisterende noder. Den nye node kan blot begynde at lytte efter de meddelelser, den er interesseret i, eller begynde at sende sine egne meddelelser. Dette giver stor fleksibilitet og skalerbarhed.

Hvis du vil læse andre artikler, der ligner CAN-netværk: En dybdegående guide, kan du besøge kategorien Teknologi.

Go up