U stapte in uw auto, drukte op de startknop en de motor kwam in een mum van tijd tot leven, maar hoe besliste uw auto of hij moest starten of niet?
Om de auto te laten starten, communiceerden verschillende antennes en elektronische regeleenheden met de sleutelhanger. Het Controller Area Network (CAN)-protocol zorgt ervoor dat de communicatie tussen uw sleutelhanger, antennes en ECU's op de juiste manier in uw auto plaatsvindt.
Dus wat is het CAN-protocol en hoe helpt het de apparaten in de systemen van uw voertuig samen te werken? Nou, laten we het uitzoeken.
Wat is het CAN-protocol en waarom is het nodig?
Vroeger hadden auto's niet veel elektronica. Als u uw voertuig in het begin van de 20e eeuw wilde starten, moest u zelfs uit uw voertuig stappen en de motor met de hand starten.
De auto's van vandaag hebben daarentegen verschillende elektronische sensoren en elektronische apparaten bewaken alles, van de cabinetemperatuur tot de omwentelingen van de krukas.
Dat gezegd hebbende, de gegevens die van deze sensoren worden ontvangen, hebben geen waarde totdat ze zijn verwerkt. Deze gegevensverwerking wordt uitgevoerd door computerapparatuur die bekend staat als Electronic Control Units (ECU's).
In tegenstelling tot een computer met een enkele CPU, heeft een auto meerdere ECU's, die elk verantwoordelijk zijn voor het uitvoeren van een bepaalde taak. Hoewel deze ECU's een enkele taak efficiënt kunnen uitvoeren, moeten ze samenwerken om functies zoals: buikspieren en ESC werk nauwkeurig.
Daarom moeten alle ECU's op een auto worden aangesloten. Men zou een point-to-point-topologie kunnen gebruiken om deze verbindingen te maken, waarbij elke ECU rechtstreeks is verbonden met elke andere ECU. Deze architectuur zou het systeem echter complex maken. In feite heeft een modern voertuig meer dan 70 ECU's, en als ze één-op-één worden aangesloten, zou het gewicht van de bedrading exponentieel toenemen.
Om dit probleem op te lossen, creëerde Bosch, samen met Mercedes-Benz en Intel, in 1986 het Controller Area Network-protocol. Dankzij dit protocol konden ECU's met elkaar communiceren via een gedeelde databus die bekend staat als de CAN-bus.
Hoe werkt KAN?
Het CAN-protocol is een op berichten gebaseerde communicatiemethode die vertrouwt op een set twisted pair-kabels voor gegevensoverdracht. Deze draden staan bekend als CAN hoog en CAN laag.
Om gegevensoverdracht op deze draden mogelijk te maken, worden hun spanningsniveaus gewijzigd. Deze veranderingen in spanningsniveaus worden vervolgens vertaald naar logische niveaus waardoor de ECU's op een auto met elkaar kunnen communiceren.
Voor het verzenden van logische één op de CAN-bus wordt de spanning van beide lijnen ingesteld op 2,5 volt. Deze toestand wordt ook wel de recessieve toestand genoemd, wat betekent dat de CAN-bus beschikbaar is voor gebruik door elke ECU.
Integendeel, logische 0 wordt op de CAN-bus verzonden wanneer de CAN-high-lijn een spanning van 3,5 volt heeft en de CAN-low-lijn 1,5 volt. Deze toestand van de bus staat ook bekend als de dominante toestand, die elke ECU in het systeem vertelt dat een andere ECU aan het verzenden is, dus ze moeten wachten tot de verzending voorbij is voordat ze beginnen met het verzenden van hun bericht.
Om deze spanningsveranderingen mogelijk te maken, zijn de ECU's van de auto verbonden met de CAN-bus via een CAN-transceiver en een CAN-controller. De zendontvanger is verantwoordelijk voor het omzetten van de spanningsniveaus op de CAN-bus naar niveaus die de ECU kan begrijpen. De controller daarentegen wordt gebruikt om de ontvangen gegevens te beheren en ervoor te zorgen dat aan de vereisten van het protocol wordt voldaan.
Al deze ECU's die op de CAN-bus zijn aangesloten, kunnen gegevens over de getwiste kabel verzenden, maar er is een addertje onder het gras, alleen het bericht met de hoogste prioriteit kan op de CAN-bus worden verzonden. Om te begrijpen hoe een ECU gegevens op de CAN-bus verzendt, moeten we de berichtstructuur van het CAN-protocol begrijpen.
De berichtenstructuur van het CAN-protocol begrijpen
Wanneer twee ECU's willen communiceren, worden berichten met de onderstaande structuur op de CAN-bus verzonden.
Deze berichten worden overgedragen door de spanningsniveaus op de CAN-bus te wijzigen, en het twisted pair-ontwerp van de CAN-draden voorkomt datacorruptie tijdens verzending.
- SOF: Afkorting van Start Of Frame, het SOF-bit is een enkel dominant bit-dataframe. Dit bit wordt verzonden door een knooppunt wanneer het gegevens over de CAN-bus wil verzenden.
- ID: De identifier op het CAN-protocol kan 11 bits of 29 bits groot zijn. De grootte van de identifier is gebaseerd op de versie van het CAN-protocol dat wordt gebruikt. Als de uitgebreide versie van CAN wordt gebruikt, is de grootte van de identifier 29 bits en in andere gevallen is de identifier 11 bits. Het belangrijkste doel van de identifier is om de prioriteit van het bericht te identificeren.
- RTR: Het Remote Transmission Request of de RTR wordt gebruikt door een knooppunt wanneer gegevens moeten worden opgevraagd bij een ander knooppunt. Om dit te doen, stuurt het knooppunt dat de gegevens wil een bericht met een recessief bit in het RTR-frame naar het beoogde knooppunt.
- DLC: De gegevenslengtecode definieert de grootte van de gegevens die in het gegevensveld worden verzonden.
- Dataveld: Dit veld bevat de gegevenslading. De grootte van deze payload is 8 bytes, maar nieuwere protocollen zoals CAN FD vergroten de grootte van deze payload tot 64 bytes.
- CRC: Afkorting van Cyclic Redundancy Check, het CRC-veld is een foutcontroleframe. Hetzelfde is 15 bits groot en wordt berekend door zowel de ontvanger als de zender. Het verzendende knooppunt creëert een CRC voor de gegevens wanneer deze worden verzonden. Bij ontvangst van de gegevens berekent de ontvanger de CRC voor de ontvangen gegevens. Als beide CRC's overeenkomen, wordt de integriteit van de gegevens bevestigd. Zo niet, dan bevatten de gegevens fouten.
- Bevestigingsveld: Zodra de gegevens zijn ontvangen en vrij zijn van fouten, voert het ontvangende knooppunt een dominante bit in het bevestigingsframe en stuurt het terug naar de zender. Dit vertelt de zender dat de gegevens zijn ontvangen en vrij zijn van fouten.
- Eind van kader: Zodra de gegevensoverdracht is voltooid, worden zeven opeenvolgende recessieve bits verzonden. Dit zorgt ervoor dat alle knooppunten weten dat een knooppunt de gegevensoverdracht heeft voltooid en dat ze gegevens op de bus kunnen verzenden.
Naast de bovenstaande bits heeft het CAN-protocol een paar bits gereserveerd voor toekomstig gebruik.
KAN vereenvoudigen door middel van een voorbeeld
Nu we een basiskennis hebben van hoe een bericht op de CAN-bus eruitziet, kunnen we begrijpen hoe gegevens tussen verschillende ECU's worden verzonden.
Laten we voor de eenvoud zeggen dat onze auto 3 ECU's heeft: Node 1, Node 2 en Node 3. Van de 3 ECU's willen Node 1 en Node 2 communiceren met Node 3.
Laten we eens kijken hoe het CAN-protocol in een dergelijk scenario helpt om de communicatie te verzekeren.
- Detectie van de staat van de bus: Alle ECU's op de auto zijn aangesloten op de CAN-bus. In het geval van ons voorbeeld willen Node 1 en Node 2 gegevens naar een andere ECU sturen; alvorens dat te doen, moeten beide ECU's de status van de CAN-bus controleren. Als de bus zich in een dominante staat bevindt, kunnen de ECU's geen gegevens verzenden omdat de bus in gebruik is. Aan de andere kant, als de bus zich in een recessieve toestand bevindt, kunnen de ECU's gegevens verzenden.
- Het begin van het frame verzenden: Als de differentiële spanning op de CAN-bus nul is, veranderen zowel Node 1 als Node 2 de status van de bus in dominant. Om dit te doen, wordt de spanning van CAN hoog verhoogd tot 3,5 volt en de spanning van CAN laag verlaagd tot 1,5 volt.
- Bepalen welk knooppunt toegang heeft tot de bus: Zodra de SOF is verzonden, strijden beide knooppunten om toegang tot de CAN-bus. De CAN-bus gebruikt het Carrier Sense Multiple Access/Collision Detection (CSMA/CD)-protocol om te beslissen welk knooppunt toegang krijgt. Dit protocol vergelijkt de identifiers die door beide knooppunten worden verzonden en geeft toegang tot degene met de hogere prioriteit.
- Gegevens verzenden: Zodra het knooppunt toegang heeft tot de bus, wordt het gegevensveld, samen met de CRC, naar de ontvanger gestuurd.
- De communicatie controleren en beëindigen: Bij ontvangst van de gegevens controleert Knooppunt 3 de CRC van de ontvangen gegevens. Als er geen fouten zijn, stuurt knooppunt 3 een CAN-bericht naar het verzendende knooppunt met een dominante bit op het bevestigingsframe samen met de EOF om de communicatie te beëindigen.
Verschillende soorten CAN
Hoewel de berichtenstructuur die door het CAN-protocol wordt gebruikt hetzelfde blijft, worden de snelheid van de datatransmissie en de grootte van de databits gewijzigd om hogere bandbreedtes aan data over te dragen.
Vanwege deze verschillen heeft het CAN-protocol verschillende versies, waarvan hieronder een overzicht wordt gegeven:
- Hoge snelheid KAN: De gegevens op de CAN-draden worden serieel verzonden en deze overdracht kan met verschillende snelheden worden gedaan. Voor high-speed CAN is deze snelheid 1 Mbps. Vanwege deze hoge datatransmissiesnelheid wordt high-speed can gebruikt voor ECU's, die de aandrijflijn en veiligheidssystemen aansturen.
- KAN op lage snelheid: In het geval van CAN met lage snelheid wordt de snelheid waarmee gegevens worden verzonden teruggebracht tot 125 kbps. Omdat de lage snelheid lagere datasnelheden kan bieden, wordt deze gebruikt om ECU's aan te sluiten die het comfort van de passagier regelen, zoals de airconditioning of het infotainmentsysteem.
- Kan FD: Afkorting van CAN flexibele datasnelheid, CAN FD is de nieuwste versie van het CAN-protocol. Het vergroot de grootte van het dataframe tot 64 bytes en stelt de ECU's in staat om gegevens te verzenden met snelheden van 1 Mbps tot 8 Mbps. Deze gegevensoverdrachtsnelheid kan door de ECU's in realtime worden beheerd op basis van systeemvereisten, waardoor gegevens met hogere snelheden kunnen worden overgedragen.
Wat is de toekomst van autocommunicatie?
Dankzij het CAN-protocol kunnen meerdere ECU's met elkaar communiceren. Deze communicatie maakt veiligheidsvoorzieningen zoals elektronische stabiliteitscontrole en geavanceerde rijhulpsystemen zoals dodehoekdetectie en adaptieve cruisecontrol mogelijk.
Dat gezegd hebbende, met de komst van geavanceerde functies zoals autonoom rijden, neemt de hoeveelheid gegevens die door de CAN-bus wordt verzonden exponentieel toe. Om deze functies mogelijk te maken, komen nieuwere versies van het CAN-protocol, zoals de CAN FD, op de markt.