De CAN-bus uitgelegd: hoe controllers, batterijbeheersystemen (BMS) en displays met elkaar communiceren
Op een moderne elektrische machine wisselen de componenten niet alleen vermogen uit, maar ook informatie. De controller wil de status van de batterij weten, het display de snelheid en de temperaturen, en een tweede controller de instellingen van de eerste. De meest gebruikte methode hiervoor komt uit de auto-industrie: het CAN-bus systeem. Deze handleiding legt uit hoe dit werkt en hoe je het correct kunt aansluiten.
Het belangrijkste
- Het CAN-bus systeem verbindt verschillende apparaten via een paar verdraaide draden, die respectievelijk "CAN high" en "CAN low" worden genoemd.
- Er is een weerstand van 120 ohm nodig aan elk van de twee uiteinden van de bus, en alleen aan de uiteinden.
- Elk bericht heeft een identificatienummer dat ook als prioriteit dient: het belangrijkste bericht wordt altijd eerst verwerkt.
- Alle apparaten moeten dezelfde communicatiesnelheid gebruiken.
Een bus, geen verbinding
Een klassieke seriële verbinding verbindt twee apparaten. CAN is daarentegen een bus: alle apparaten zijn aangesloten op dezelfde twee draden, en elk apparaat kan met alle andere communiceren. Om een apparaat toe te voegen, sluit u het aan op de bus, zonder dat er een nieuwe kabel naar de controller hoeft te worden getrokken. Dit heeft ertoe geleid dat het veel wordt gebruikt in de auto-industrie, waar tientallen computers gebruik maken van slechts een paar draden.
Op een lichtgewicht voertuig zijn doorgaans één of meerdere controllers aanwezig, evenals het batterijbeheersysteem (BMS), een display, een telemetriemodule of een oplader.
Twee draden, één verschil
Het CAN-systeem gebruikt een paar draden: CAN-hoog en CAN-laag. De informatie wordt niet overgedragen door de spanning van een draad ten opzichte van de massa, maar door het verschil tussen de twee:
- In ruststand (in de "recessieve" modus) hebben beide draden dezelfde spanning, ongeveer de helft van de voedingsspanning van het circuit;
- Om een "dominante" bit te verzenden, zorgt de zender ervoor dat de twee draden anders bewegen: de bovenste draad beweegt omhoog, terwijl de onderste draad omlaag beweegt.
Een elektrische storing, zoals die van een controller die honderden ampères levert, beïnvloedt beide draden op dezelfde manier. Hun verschil blijft echter intact. Dit maakt CAN zo robuust in een omgeving met veel elektrische storingen, op voorwaarde dat beide draden met elkaar zijn getwist.
De eindweerstanden
Een CAN-bus moet een weerstand van 120 ohm hebben tussen de CAN-high en CAN-low lijnen aan elk van de twee fysieke uiteinden. Deze weerstanden voorkomen dat signalen reflecteren aan het einde van de kabel en zorgen ervoor dat de bus in de rusttoestand blijft.
- De bus is correct aangesloten: bij het meten tussen CAN high en CAN low, met de apparaten uitgeschakeld, wordt ongeveer 60 ohm gemeten (wat overeenkomt met twee weerstanden van 120 ohm parallel geschakeld).
- Ongeveer 120 ohm: er ontbreekt een afsluitweerstand.
- Een waarde die aanzienlijk lager is dan 60 ohm: dit duidt op te veel actieve terminaties, vaak omdat meerdere apparaten hun eigen terminatie hebben geactiveerd.
Een ontbrekende of overbodige terminator is de belangrijkste oorzaak van een instabiele communicatie.
Identificatie en prioriteit
Elk CAN-bericht heeft een identificatienummer, dat aangeeft waar het bericht over gaat (bijvoorbeeld "batterijstatus" of "gewenste motorsnelheid voor"). Apparaten lezen alle berichten, maar houden alleen die berichten bij die relevant zijn voor hen.
Wanneer twee apparaten tegelijkertijd beginnen met uitzenden, vergelijken ze hun identificatienummers bit voor bit, via dezelfde kabel. Een dominant bit overschrijft een recessief bit: het apparaat dat een recessief bit uitzendt en een dominant bit ontvangt, begrijpt dat het verloren heeft en stopt met uitzenden. Het identificatienummer dat het kleinste is, wint altijd, zonder dat er gegevens verloren gaan. Dit wordt arbitrage genoemd: de berichten die het belangrijkst zijn, krijgen de kleinste identificatienummers.
Geïntegreerde betrouwbaarheid
- Elk bericht bevat een controlecode: beschadigde berichten worden gedetecteerd en opnieuw verzonden.
- Elke ontvanger bevestigt de correcte ontvangst met een bevestigingsbit.
- Een apparaat dat steeds meer fouten maakt, schakelt zichzelf automatisch uit om te voorkomen dat het hele systeem vastloopt.
De snelheid van de bus
Alle apparaten op een bus moeten dezelfde snelheid gebruiken. De meest voorkomende waarden zijn 250 en 500 kilobits per seconde, soms 1 megabit. Hoe sneller de bus, hoe korter de maximale lengte. Echter, bij een licht voertuig, met een maximale lengte van enkele meters, is de lengte nooit een beperkende factor. Een nieuwere versie, CAN FD, transporteert meer data per bericht en met een hogere snelheid.
Voorbeeld: twee controllers die met elkaar verbonden zijn
Bij een elektrische scooter met twee motoren functioneren twee controllers die via CAN verbonden zijn, alsof ze één zijn: de controller die het gaspedaal ontvangt, geeft de instructie door aan de andere, en slechts één softwareprogramma toont de instellingen voor beide. Dit geldt voor de VESC-controllers, die worden uitgelegd in onze handleiding "De VESC uitgelegd, eenvoudig".
Werkplaats tip:
Draai altijd de CAN-hoog- en CAN-laagkabels samen, houd ze weg van de fasedraden, en controleer de weerstand van 60 ohm met een multimeter voordat u de stroom inschakelt. Vijf minuten controle kan u urenlang zoeken naar intermitterende communicatie besparen.
Veelgestelde vragen
Wordt er stroom via het CAN-bus systeem getransporteerd om apparaten van stroom te voorzien?
Nee, het CAN-paar transporte alleen informatie. De apparaten hebben hun eigen voeding, die soms wordt geleverd door andere draden in dezelfde kabel.
Waarom werkt de CAN-communicatie soms wel en soms niet?
De meest voorkomende oorzaken zijn een ontbrekende of overmatige terminatie, niet-verdraaide draden die dicht bij de stroomkabels lopen, een versleten connector, of twee apparaten die niet dezelfde bus-snelheid hebben.
Kan elk apparaat met CAN-bus gewoon met elkaar verbonden worden?
Elektrisch gezien, ja, als ze dezelfde communicatiesnelheid gebruiken. Maar om met elkaar te kunnen communiceren, moeten ze dezelfde "taal" spreken: dezelfde identificatiecodes en dezelfde inhoud van de berichten. Twee verschillende merken kunnen niet met elkaar communiceren zonder aanpassing.