CAN-bussen forklaret: Hvordan controllere, batteristyringssystemer (BMS) og displays kommunikerer med hinanden
På en moderne elektrisk maskine udveksler komponenterne ikke kun strøm: de udveksler information. Controlleren ønsker at kende batteriets tilstand, displayet viser hastighed og temperaturer, og en anden controller modtager information fra den første. Den mest almindelige metode til dette kommer fra bilindustrien: CAN-bussen. Denne guide forklarer, hvordan den fungerer, og hvordan man tilslutter den korrekt.
Det vigtigste
- CAN-kommunikation forbinder flere enheder via et enkelt par af tvunnet kabel, der kaldes CAN-high og CAN-low.
- Der skal være en modstand på 120 ohm i hver ende af bussen, og kun i enderne.
- Hver besked har en identifikator, som også fungerer som en prioritet: den vigtigste besked vises altid først.
- Alle enheder skal bruge den samme kommunikationshastighed.
En bus, ikke en forbindelse
En traditionel seriel forbindelse forbinder to enheder. CAN er derimod en bus: alle enheder er tilsluttet de samme to ledninger, og hver enhed kan kommunikere med alle de andre. For at tilføje en enhed, tilsluttes den blot til bussen, uden at skulle trække et nyt kabel helt tilbage til controlleren. Dette er det, der har gjort den populær i bilindustrien, hvor titusindvis af computere deler sig nogle få par af ledninger.
På et let køretøj finder man typisk en eller flere controllere, batteriets BMS (Battery Management System), en displayenhed, et telemetrimodul eller en oplader.
To ledninger, én forskel
CAN-bussen bruger et par ledninger, "CAN high" og "CAN low". Informationen overføres ikke via spændingen på en enkelt ledning i forhold til jord, men via forskellen mellem de to:
- I hvile (i "recessiv" tilstand) har begge ledere samme spænding, omtrent halvdelen af kredsløbets forsyningsspænding;
- For at udsende en "dominant" bit, sender enheden et signal ved at adskille de to ledninger: den ene ledning går op, mens den anden går ned.
En elektrisk forstyrrelse, som for eksempel fra en controller, der leverer hundredvis af ampere, påvirker begge ledninger på samme måde. Deres forskel forbliver derimod uændret. Det er det, der gør CAN-kommunikation så robust i et elektrisk støjende miljø, forudsat at de to ledninger er tvunnet sammen.
Modstande til afslutning
En CAN-bus skal have en modstand på 120 ohm mellem CAN-high og CAN-low i hver af sine to fysiske ender. Disse modstande forhindrer signaler i at reflekteres i enden af kablet og bringer bussen tilbage til hviletilstand.
- Bussen er korrekt tilsluttet: Ved at måle mellem CAN high og CAN low, med enhederne slukket, finder man en modstand på omkring 60 ohm (hvilket svarer til to modstande på 120 ohm forbundet parallelt).
- Omkring 120 ohm: Der mangler en afslutningsmodstand.
- En værdi, der er væsentligt lavere end 60 ohm: Det indikerer, at der er for mange termineringer aktiveret, ofte fordi flere enheder har deres egne termineringer aktiveret.
En manglende eller forkert tilslutning er den primære årsag til ustabil kommunikation.
Identifikationsoplysninger og prioritet
Hver CAN-besked indeholder en identifikator, et nummer, der angiver, hvad beskeden handler om (for eksempel "batteristatus" eller "ønsket motorhastighed foran"). Alle enheder læser alle beskeder, men beholder kun dem, der er relevante for dem.
Når to enheder begynder at sende data samtidigt, sammenligner de deres identifikatorer bit for bit, over den samme forbindelse. En dominerende bit overskriver en recessiv bit: den enhed, der sender en recessiv bit og modtager en dominerende bit, forstår, at den har tabt, og stopper med at sende. Den mindste identifikator vinder altid, uden at nogen data går tabt. Dette kaldes arbitration (konfliktløsning): de vigtigste beskeder får tildelt de mindste identifikatorer.
Indbygget pålidelighed
- Hver besked indeholder en kontrolkode: Hvis en besked er beskadiget, bliver den detekteret og sendt igen.
- Hver modtager bekræfter korrekt modtagelse med et bekræftelsesbit.
- En enhed, der akkumulerer fejl, vil automatisk trække sig tilbage for at undgå at blokere hele systemet.
Hastigheden på bussen
Alle enheder i en bus skal bruge den samme hastighed. De mest almindelige værdier er 250 og 500 kilobit pr. sekund, og nogle gange 1 megabit. Jo hurtigere bussen er, desto kortere er dens maksimale længde. Men i et let køretøj, med en længde på højst et par meter, er længden aldrig en begrænsning. En nyere version, CAN FD, transporterer mere data pr. besked ved en højere hastighed.
Eksempel: to controllere forbundet
På en elscooter med to motorer fungerer to controllere, der er forbundet via CAN-bus, som én enhed: den controller, der modtager signalet fra speederen, sender kommandoen videre til den anden, og kun én software til justering viser data fra begge. Dette gælder for VESC-controllere, som præsenteres i vores guide VESC forklaret simpelt.
Værkstedstip.
Sørg altid for at forbinde CAN-high og CAN-low sammen, hold dem væk fra fasekablerne, og kontroller modstanden på 60 ohm med et multimeter, før du tænder for strømmen første gang. Fem minutters kontrol kan spare dig for timer med fejlfinding af intermitterende kommunikationsproblemer.
Ofte stillede spørgsmål
Transporterer CAN-bussen strøm til at forsyne enheder?
Nej, CAN-parret transporter kun information. Enhederne har deres egen strømforsyning, som nogle gange leveres af andre ledninger i det samme kabel.
Hvorfor fungerer min CAN-kommunikation kun periodisk?
De mest almindelige årsager er en manglende eller forkert afslutning, utvundne ledninger, der løber tæt på strømkabler, et slidt stik, eller to enheder, der ikke har samme bushastighed.
Kan man forbinde alle mulige CAN-enheder sammen?
Elektrisk set, ja, hvis de deler den samme databus-hastighed. Men for at de skal kunne kommunikere med hinanden, skal de tale det samme "sprog": de skal bruge de samme identifikatorer og have det samme indhold i beskederne. To forskellige mærker kan ikke kommunikere med hinanden uden tilpasning.