Du satte dig i din bil, tryckte på startknappen och motorn vaknade till liv på nolltid, men hur bestämde din bil om den skulle starta eller inte?
Jo, för att få bilen att starta kommunicerade flera antenner och elektroniska kontrollenheter med nyckelbrickan. Controller Area Network (CAN)-protokollet säkerställer att kommunikationen mellan din nyckelbricka, antenner och ECU sker på rätt sätt inuti din bil.
Så vad är CAN-protokollet, och hur hjälper det enheterna på ditt fordons system att arbeta tillsammans? Nåväl, låt oss ta reda på det.
Vad är CAN-protokollet och varför behövs det?
Förr i tiden hade bilar inte mycket elektronik. Faktum är att om du ville starta ditt fordon i början av 1900-talet, var du tvungen att gå ur ditt fordon och dra igång motorn för hand.
Dagens bilar har tvärtom flera elektroniska sensorer, och elektroniska enheter övervakar allt från kabintemperaturen till vevaxelns varv.
Som sagt, data som tas emot från dessa sensorer saknar värde förrän den har bearbetats. Denna databehandling utförs av datorenheter som kallas elektroniska styrenheter (ECU).
Till skillnad från en dator med en enda CPU, har en bil flera ECU, som var och en är ansvarig för att utföra en viss uppgift. Även om dessa ECU: er kan utföra en enda uppgift effektivt, måste de fungera tillsammans för att säkerställa funktioner som magmuskler och ESC arbeta ordentligt.
På grund av detta måste alla ECU: er på en bil vara anslutna. Man skulle kunna använda en punkt-till-punkt-topologi för att göra dessa anslutningar, där varje ECU är ansluten direkt till varannan ECU. Denna arkitektur skulle dock göra systemet komplext. Faktum är att ett modernt fordon har över 70 ECU, och att ansluta dem på ett-till-ett-sätt skulle öka vikten på ledningarna exponentiellt.
För att lösa detta problem skapade Bosch, tillsammans med Mercedes-Benz och Intel, protokollet Controller Area Network 1986. Detta protokoll gjorde det möjligt för ECU: er att kommunicera med varandra med hjälp av en delad databuss känd som CAN-bussen.
Hur fungerar KAN?
CAN-protokollet är en meddelandebaserad kommunikationsmetodik som bygger på en uppsättning partvinnade kablar för dataöverföring. Dessa ledningar är kända som CAN hög och CAN låg.
För att möjliggöra dataöverföring på dessa ledningar ändras deras spänningsnivåer. Dessa förändringar i spänningsnivåer översätts sedan till logiska nivåer som gör att ECU: erna på en bil kan kommunicera med varandra.
För sändning av logik ett på CAN-bussen är spänningen för båda ledningarna inställd på 2,5 volt. Detta tillstånd är också känt som det recessiva tillståndet, vilket innebär att CAN-bussen är tillgänglig för användning av vilken ECU som helst.
Tvärtom sänds logisk 0 på CAN-bussen när CAN-högledningen har en spänning på 3,5 volt och CAN-lågledningen är på 1,5 volt. Detta tillstånd för bussen är också känt som det dominerande tillståndet, vilket talar om för varje ECU i systemet att en annan ECU sänder, så de bör vänta tills sändningen är över innan de börjar sända sitt meddelande.
För att möjliggöra dessa spänningsändringar är bilens ECU: er anslutna till CAN-bussen via en CAN-sändtagare och en CAN-styrenhet. Transceivern ansvarar för att konvertera spänningsnivåerna på CAN-bussen till nivåer som ECU: n kan förstå. Den registeransvarige, å andra sidan, används för att hantera mottagen data och säkerställa att kraven i protokollet är uppfyllda.
Alla dessa ECU: er anslutna till CAN-bussen kan överföra data på den tvinnade kabeln, men det finns en hake, endast meddelandet med högsta prioritet kan överföras på CAN-bussen. För att förstå hur en ECU sänder data på CAN-bussen måste vi förstå meddelandestrukturen för CAN-protokollet.
Förstå meddelandestrukturen i CAN-protokollet
Närhelst två ECU: er vill kommunicera, sänds meddelanden med strukturen nedan på CAN-bussen.
Dessa meddelanden överförs genom att ändra spänningsnivåerna på CAN-bussen, och CAN-ledningarnas tvinnade parkonstruktion förhindrar datakorruption under överföring.
- SÅ F: Förkortning för Start Of Frame, SOF-biten är en enda dominant bitdataram. Denna bit sänds av en nod när den vill skicka data på CAN-bussen.
- Identifierare: Identifieraren på CAN-protokollet kan vara antingen 11 bitar eller 29 bitar i storlek. Identifierarens storlek baseras på vilken version av CAN-protokollet som används. Om den utökade versionen av CAN används är storleken på identifieraren 29 bitar och i andra fall är storleken på identifieraren 11 bitar. Huvudmålet med identifieraren är att identifiera meddelandets prioritet.
- RTR: Remote Transmission Request eller RTR används av en nod när data behöver begäras från en annan nod. För att göra detta skickar noden som vill ha data ett meddelande med en recessiv bit i RTR-ramen till den avsedda noden.
- DLC: Datalängdkoden definierar storleken på data som överförs i datafältet.
- Data fält: Det här fältet innehåller datanyttolasten. Storleken på denna nyttolast är 8 byte, men nyare protokoll som CAN FD ökar storleken på denna nyttolast till 64 byte.
- CRC: Förkortning för Cyclic Redundancy Check, CRC-fältet är en felkontrollram. Detsamma är 15 bitar i storlek och beräknas av både mottagaren och sändaren. Den sändande noden skapar en CRC för data när den sänds. Vid mottagning av datan beräknar mottagaren CRC för den mottagna datan. Om båda CRC: erna stämmer överens, bekräftas dataintegriteten. Om inte, har uppgifterna fel.
- Bekräftelsefält: När väl data har tagits emot och är fri från fel matar den mottagande noden en dominant bit in i bekräftelseramen och skickar den tillbaka till sändaren. Detta talar om för sändaren att data har tagits emot och är fri från fel.
- End of Frame: När väl dataöverföringen är avslutad sänds sju på varandra följande recessiva bitar. Detta säkerställer att alla noder vet att en nod har slutfört dataöverföring och att de kan överföra data på bussen.
Utöver bitarna ovan har CAN-protokollet några få bitar reserverade för framtida användning.
Förenkla CAN genom ett exempel
Nu när vi har en grundläggande förståelse för hur ett meddelande på CAN-bussen ser ut, kan vi förstå hur data överförs mellan olika ECU: er.
För enkelhetens skull, låt oss säga att vår bil har 3 ECU: er: Nod 1, Nod 2 och Nod 3. Av de 3 ECU: erna vill nod 1 och nod 2 kommunicera med nod 3.
Låt oss se hur CAN-protokollet hjälper till att säkerställa kommunikation i ett sådant scenario.
- Upptäcka bussens tillstånd: Alla ECU: er på bilen är anslutna till CAN-bussen. I fallet med vårt exempel vill Nod 1 och Nod 2 skicka data till en annan ECU; Innan du gör det måste båda ECU: erna kontrollera CAN-bussens tillstånd. Om bussen är i ett dominant tillstånd kan ECU: erna inte överföra data när bussen används. Å andra sidan, om bussen är i ett recessivt tillstånd, kan ECU: erna sända data.
- Skickar början av ram: Om differentialspänningen på CAN-bussen är noll, ändrar både nod 1 och nod 2 bussens tillstånd till dominant. För att göra detta höjs spänningen för CAN hög till 3,5 volt och spänningen för CAN låg reduceras till 1,5 volt.
- Bestämma vilken nod som kan komma åt bussen: När SOF väl har sänts tävlar båda noderna om att komma åt CAN-bussen. CAN-bussen använder protokollet Carrier Sense Multiple Access/Collision Detection (CSMA/CD) för att bestämma vilken nod som får åtkomst. Detta protokoll jämför identifierarna som sänds av båda noderna och ger åtkomst till den med högre prioritet.
- Skickar data: När noden väl har tillgång till bussen skickas datafältet tillsammans med CRC: n till mottagaren.
- Kontrollera och avsluta kommunikationen: Vid mottagning av datan kontrollerar Nod 3 CRC för den mottagna datan. Om det inte finns några fel sänder Nod 3 ett CAN-meddelande till den sändande noden med en dominant bit på bekräftelseramen tillsammans med EOF för att avsluta kommunikationen.
Olika typer av CAN
Även om meddelandestrukturen som används av CAN-protokollet förblir densamma, ändras dataöverföringshastigheten och storleken på databitarna för att överföra högre bandbredder av data.
På grund av dessa skillnader har CAN-protokollet olika versioner, och en översikt över detsamma ges nedan:
- Höghastighets CAN: Data på CAN-ledningarna sänds seriellt, och denna överföring kan göras med olika hastigheter. För höghastighets-CAN är denna hastighet 1 Mbps. På grund av denna höga dataöverföringshastighet används höghastighetsburkar för ECU: er som styr drivlinan och säkerhetssystemen.
- Låghastighets CAN: I fallet med låghastighets-CAN reduceras hastigheten med vilken data överförs till 125 kbps. Eftersom den låga hastigheten kan erbjuda lägre datahastigheter används den för att ansluta ECU: er som hanterar passagerarens komfort, som luftkonditioneringen eller infotainmentsystemet.
- Kan FD: Förkortning för CAN flexibel datahastighet, CAN FD är den senaste versionen av CAN-protokollet. Det ökar storleken på dataramen till 64 byte och tillåter ECU: erna att överföra data med hastigheter från 1 Mbps till 8 Mbps. Denna dataöverföringshastighet kan hanteras av ECU: erna i realtid baserat på systemkrav, vilket gör att data kan överföras med högre hastigheter.
Vad är framtiden för fordonskommunikation?
CAN-protokollet tillåter flera ECU: er att kommunicera med varandra. Denna kommunikation möjliggör säkerhetsfunktioner som elektronisk stabilitetskontroll och avancerade förarassistanssystem som döda vinkeln och adaptiv farthållare.
Som sagt, med tillkomsten av avancerade funktioner som autonom körning, ökar mängden data som överförs av CAN-bussen exponentiellt. För att aktivera dessa funktioner kommer nyare versioner av CAN-protokollet, som CAN FD, in på marknaden.