Controller Area Network , også kjent som CAN-bus , er en seriell multicast -standard for feltbuss (hovedsakelig i bilmiljøet), introdusert på 1980-tallet av Robert Bosch GmbH , for å koble sammen forskjellige elektroniske kontrollenheter (ECU). CAN er uttrykkelig designet for å fungere uten problemer selv i miljøer som er sterkt forstyrret av tilstedeværelsen av elektromagnetiske bølger og kan bruke en balansert potensialdifferanselinje som RS-485 som overføringsmedium . EMC-støyimmunitet kan økes ytterligere ved å bruke tvunnet -par kabler .
Selv om den opprinnelig ble brukt i bilbransjen , for eksempel bilbuss, brukes den for tiden i mange industrielle applikasjoner av den innebygde typen , der det kreves et høyt nivå av immunitet mot forstyrrelser. Bithastigheten kan nå1 Mbit/s for lange nettverk mindre enn40 m . Lavere hastigheter lar deg nå større avstander (f.125 kbit/s for500 m ). Kommunikasjonsprotokollen til CAN er standardisert som ISO 11898-1 (2015). Denne standarden beskriver hovedsakelig datautvekslingslaget ( datalinklag ) , sammensatt av det underliggende "logiske" ( Logical Link Control, LLC ) laget ( underlaget ) og det underliggende laget til Media Access Control, (MAC) og noen aspekter av fysisk lag beskrevet av ISO / OSI-modellen ( ISO / OSI Reference Model ). Protokollene til alle de andre lagene er overlatt til nettverksdesignerens frie valg.
CAN overfører data i henhold til en modell basert på "dominante" og "recessive" biter, der de dominerende bitene er de logiske 0 -ene og de recessive bitene er de logiske 1- ene . Hvis en node sender en dominant bit og en annen en recessiv bit, så "vinner" den "dominante" biten mellom de to (gjør en logisk OG -kombinasjon ).
|
|
Med denne teknikken, når en recessiv bit sendes, og samtidig en annen enhet sender en dominant bit, er det en kollisjon, og bare den dominante biten er synlig på nettverket (alle andre kollisjoner er usynlige). I praksis hender det at en dominerende bit blir "hevdet" ved generering av en spenning mellom lederne, mens en recessiv bit ganske enkelt ignoreres. Vi er så sikre på at hver gang en potensiell forskjell pålegges, oppdager hele nettverket det, og derfor «vet» at det er en dominerende bit.
Vanligvis, når den brukes i en differensialbuss, brukes CSMA / BA (Carrier Sense Multiple Access / Bitwise Arbitration) -skjemaet : hvis to eller flere enheter begynner å sende samtidig, brukes en prioritetsbasert voldgiftsmekanisme for å bestemme hvilken enhet la overføringen fortsette. Under overføring sjekker hver sendenode bussstatusen og sammenligner den mottatte biten med den overførte biten. Hvis en dominant bit mottas mens en recessiv bit sendes, stopper noden overføringen (dvs. mister arbitreringen ). Voldgiften utføres under overføringen av nodeidentifikasjonsdatapakken. Noder som begynner å sende samtidig sender en dominerende binær 0 ID, som begynner med den høye biten. Så snart deres ID er representert med et større tall (derfor med lavere prioritet), sender nodene selv en 1 bit (recessiv) og venter på svaret på en 0 (dominant), og stopp deretter overføringen. På slutten av sendingen av ID-ene har alle nodene gått tilbake til AV-tilstanden, og meldingen med maksimal gjeldende prioritet kan fritt overføres.
Alle rammer (også kalt "meldinger") begynner med en "start-av-ramme" (SOF) bit. CAN-rammer kan være av fire typer:
Dette er rammene som utfører selve dataoverføringen. Meldinger kan ha to formater:
CAN-standarden må nødvendigvis gjenkjenne basisrammeformatet og kan valgfritt gjenkjenne det utvidede rammeformatet (som imidlertid må tolereres).
Den grunnleggende CAN tillater 2 11 = 2 048 forskjellige typer meldinger, men i henhold til Bosch-spesifikasjoner kan kun 2 031. I den utvidede versjonen kan du ha opptil 2 29 = 536 870 912 typer meldinger.
GrunnrammeformatGrunnrammeformatet har følgende struktur:
Feltnavn | Lengde (antall bits) | Funksjon |
---|---|---|
Start-på-ramme | 1 | Indikerer starten på overføringssekvensen |
Identifikator | 11 | (Unik) identifikator for dataene |
Fjernforespørsel om overføring (RTR) | 1 | Det må være en dominerende bit |
Ekstra identifikasjonsbit (IDE) | 1 | Det må være en dominerende bit |
Reservert bit (r0) | 1 | Reservert |
Datalengdekode (DLC) | 4 | Antall byte for å kode hver data (0-8 byte) |
Datafelt | 0-8 byte | Data som skal overføres (lengde er spesifisert av DLC-feltet) |
CRC | 15 | Paritetssjekk med redundans |
CRC-skilletegn | 1 | Det må være litt recessivt |
ACK-spor | 1 | Senderen sender en recessiv bit og hver mottaker kan kvittere for mottak med en dominerende bit |
ACK-avgrensning | 1 | Det må være litt recessivt |
End-of-frame (EOF) | 7 | De må være litt recessive |
En begrensning på identifikatorfeltet er at de første 7 bitene ikke alle kan være recessive.
Utvidet rammeformatFormatet til den utvidede rammen har følgende struktur:
Feltnavn | Lengde (antall bits) | Funksjon |
---|---|---|
Start-på-ramme | 1 | Indikerer starten på overføringssekvensen |
Identifikator A | 11 | Første del av den (unike) identifikatoren til dataene |
Replacement Remote Request (SRR) | 1 | Det må være litt recessivt |
Ekstra identifikasjonsbit (IDE) | 1 | Det må være litt recessivt |
Identifikator B | 18 | Andre del av den (unike) dataidentifikatoren |
Fjernforespørsel om overføring (RTR) | 1 | Det må være en dominerende bit |
Reserverte biter (r1 og r0) | 2 | Reservert |
Datalengdekode (DLC) | 4 | Antall databyte (0-8 byte) |
Datafelt | 0-8 byte | Data som skal overføres (lengde spesifisert av DLC-feltet) |
CRC | 15 | Paritetssjekk med redundans |
CRC-skilletegn | 1 | Det må være litt recessivt |
ACK-spor | 1 | Senderen sender en recessiv bit og hver mottaker kan kvittere for mottak med en dominerende bit |
ACK-avgrensning | 1 | Det må være litt recessivt |
End-of-frame (EOF) | 7 | De må være litt recessive |
De to identifikatorene (A og B) kombinert danner en enkelt 29-bits identifikator.
Den eksterne rammen er identisk med datarammen, bortsett fra at:
Feilrammen består av to felt:
Det finnes to typer feilflagg:
Overbelastningsramme inneholder to felt: Overbelastningsflagg og Overbelastningsavgrenser. Det er to overbelastningsforhold som kan føre til at et overbelastningsflagg passeres:
1. Status for mottakeren, som krever en overføringsforsinkelse fra neste dataramme eller fjernramme, 2. En dominant bit detekteres under et intervall i overføringen.En case 1-overbelastningsramme tillates bare å starte på tidspunktet for den første biten i et forventet intervall, mens en case 2-overbelastningsramme starter én bit etter å ha oppdaget den dominerende biten. Overbelastningsflagget består av seks dominerende biter (alle lik 0). Den generelle formen er som for et aktivt feilflagg, som sletter intervallfeltene. Følgelig oppdager også de andre nodene i nettverket en overbelastningstilstand og sender et overbelastningsflagg. Delimiter-overbelastningen består av 8 recessive bits (alle lik 1) og har samme form som en " Error Delimiter ".
Den består av å sette inn en bit med motsatt verdi etter fem påfølgende biter med samme verdi. Denne praksisen kalles bitstuffing (bokstavelig talt fylling av biter ), og er nødvendig på grunn av kodingen som brukes i rammen, av typen NRZ ( Non Return to Zero ), som i tilfelle påfølgende like verdier opprettholder samme spenningsverdi og genererer ikke overganger som er nyttige for resynkronisering av kommuniserende enheter. Rammene som utsettes for denne operasjonen blir deretter "dekodet" av mottakeren, som fjerner bitene som er satt inn tidligere. Følgelig, når seks påfølgende like biter med samme verdi (111111 eller 000000) mottas, anses de som en feil. Bitstuffing innebærer at datarammene som overføres kan være større enn hva man kan forvente ved å bruke tabellene ovenfor.
ISO 11898-2- standarden bruker en balansert to-leder linje for signaler. Det er det mest brukte fysiske laget i bil- og industrikontrollapplikasjoner.
ISO 11898-4- standarden definerer typen CAN-kommunikasjon kalt tidsutløst (TTCAN), basert på en lagprotokoll utstyrt med en systemklokke for å planlegge videresending av meldinger.
Siden CAN-standarden ikke i seg selv sørger for applikasjonslagsprotokoller, slik som flytkontroll , krevde adressering av enheter koblet til bussen og overføring av datablokker større enn en enkelt melding implementering av spesifikke protokoller. Disse inkluderer DeviceNet , CANopen , CANaerospace , SDS og CAN Kingdom .