CAN (Controller Area Network) Funktionsprinzip

Der CAN-Bus ist ein asynchrones, serielles Feldbussystem für die Vernetzung von Steuergeräten, Sensoren und Aktoren. Im Gegensatz zu anderen Netzwerkprotokollen adressiert CAN nicht die Teilnehmer (Steuergeräte) sondern die übermittelte Nachricht. Kurz: Die Nachricht enthält die Information, von wem Sie gesendet wurde und die Teilnehmer entscheiden, ob sie die Nachricht verwenden. Hierfür ist der CAN-Bus als Multi-Master-Topologie (Alle Teilnehmer sind gleichberechtigt) ausgelegt, bei welcher der Buszugriff über das CSMA/CA (Carrier Sense Multiple Access / Collision Avoidance) Verfahren geregelt ist. Bus-Zugriffs-Kollisionen werden durch Bit-Arbitrierung vermieden. Die Daten sind NRZ-L kodiert. Zusätzlich ist eine zyklische Redundanzprüfung via CRC im Einsatz.

CAN - Grundlagen Netzwerke:

CAN ist ein örtlich begrenztes System, das zur Familie der LAN  (Local Area Network) - Netze gehört. Es untersteht somit dem OSI Netzwerkmodell. 

Das OSI Netzwerkmodell definiert sieben Schichten (Layer).

Layer Beschreibung  
Application (7) Anwendungsschicht / Verarbeitungsschicht. Auf diesem Layer wird die Funktionalität des Netzwerkes dem Benutzer zur Verfügung gestellt. z.B. E-Mail im Internet (Ethernet)  
Presentation (6) Darstellungsschicht. Hier werden die systemabhängigen Daten (Daten im Getriebe-Steuergerät) in eine systemunabhängige, dem CAN-Protokoll entsprechende, Darstellung gebracht. Hierzu gehören auch Datenkompression und Verschlüsselung. Kurz: Übersetzt die Daten des Getriebe-Steuergeräts in die "CAN-Sprache".  
Session (5) Sitzungsschicht. Hier wird die Kommunikation zwischen den Steuergeräten im Fahrzeug geregelt.  
Transport (4) Transportschicht. Sie kümmert sich um die Segmentierung von Datenpaketen und die Stauvermeidung auf dem CAN-Bus.  
Network (3) Vermittlungsschicht. Sie kümmert sich um das Routen der Datenpakete auf dem BUS. (Die Datenströme werden von den Sendern zu den Empfängern geleitet. Vergleichbar mit der Vermittlung eines Telefongesprächs von einem Anschluss zu einem anderen.)  
Data Link (2) Sicherungsschicht. Hier werden die Daten in Bitdatenströme aufgeteilt und mit Prüfsummen versehen (Codierung / Verschlüsselung der Daten)  
Physical (1) Bitübertragungsschicht. Hierbei handelt es sich um die Verkabelung (Kupferkabel / Lichtwellenleiter)  

CAN Übertragungssysteme

Der CAN-Bus wird in Fahrzeugen als linearer Bus verwendet. Topologien in Ring- oder Sternanordnung sind nicht erlaubt. Als Bus-Medium ist eine verdrillte oder geschirmte Zweidraht-Kupferleitung (CAN-H und CAN-L), die an beiden Enden mit einem 120Ω Widerstand abgeschlossen ist, vorgesehen. Diese Abschlusswiderstände werden zwingend benötigt, da ansonsten die CAN-Signale von einem offenen oder falsch abgeschlossenen Leitungs-Ende reflektiert werden können und auf der Leitung zurücklaufen. Diese Reflektionen überlagern die eigentlich auf dem CAN-Bus vorhandenen Signale, wodurch diese für die Netzknoten unlesbar werden.

CAN

Netzknoten Besteht aus einem Mikro-Kontroller, CAN-Kontroller und Bustreiber
Mirko-Kontroller Steuert den CAN-Kontroller und bearbeitet Sende- und Empfangsdaten
CAN-Kontroller Realisiert den Sende- und Empfangsbetrieb über den CAN-Bus
Bustreiber Senden bzw. Empfangen des Buspegels
Busleitung Zweidrahtleitung (verdrillt oder abgeschirmt)
Busabschluss Widerstände zur Vermeidung von Reflexionen. (Dringend benötigt)

CAN

CAN Bus-Pegel:

Das CAN-Signal ist ein digitales Signal (nur zwei Zustände "rezessiv = 1" und "dominant = 0"), das für +24V Fahrzeuge im Bereich von -3 V bis +32V Kurzschlussfest ist. Der rezessive Pegel ist für beide Leitungen mit 2.5V definiert, der dominante Pegel mit 3.5V (3V bis 5V) für CAN-H und 1.5V  (max. 2V) für CAN-L. Für die Erkennung eins Zustandswechsels ist die Differenz zwischen CAN-H und CAN-L entscheidend. Die Differenzspannung zwischen CAN-H und CAN-L ist mit 2V ( 1.6V - 5V) für einen dominanten Pegel und 0V (-1V - 0.5V) für einen rezessiven Pegel definiert.

CAN

CAN Aufbau eines Datenprotokolls:

Ein vollständiges Datenpakt (Datensatz) auf dem CAN-Bus besteht aus sieben Feldern.

CAN
Anfangsfeld Das Anfangsfeld (Start Frame) markiert den Beginn einer Botschaft und synchronisiert alle Stationen.
Statusfeld Das Statusfeld (Arbitration Field) besteht aus einem Botschafts-Identifier (11 Bit) und einem Kontrollbit. Während der Übertragung dieses Feldes prüft der Sender bei jedem Bit, ob er noch sendeberechtigt ist oder ob eine andere Station mit höherer Priorität sendet. Das Kontrollbit entscheidet, ob es sich bei der Botschaft um einen Data Frame oder einen Remote Frame handelt.
Kontrollfeld Das Kontrollfeld enthält den code für die Anzahl der Daten-Bytes im Datenfeld.
Datenfeld Im Datenfeld werden informationen für die anderen Stationen übertragen. Der Informationsgehalt lliegt zwischen 0 und 8 Bytes (1 Byte = 8 Bit) max. 64 Bit.
Sicherungsfeld Das Sicherungsfeld (CRC Field) dient dazu, Übertragungsstörungen zu erkennen.
Bestätigungsfeld Im Bestätigungsfeld (Ack Field) signalisieren die Empfänger dem Sender, dass die Botschaft korrekt empfangen wurde. Wird ein Fehler erkannt, teilen sie dies dem Sender sofort mit, worauf der Sender die Daten wiederholt sendet.
Endfeld Mit dem Endfeld (End of Frame) endet die Botschaft. Dies ist die letzte Möglichkeit, um Fehler zu melden.

Das CAN Protokoll SAE J1939 definiert zusätzlich noch ein erweitertes Statusfeld von 11 Bit (Base frame format)- auf 19 Bit (Extended frame format) - Identifizierung.

Statusfeld - Objektidentifier:

Der Objektidentifier kennzeichnet den Inhalt einer Nachricht. Die Empfänger entscheiden anhand dieses Identifiers, ob die Nachricht für sie relevant ist, oder verworfen wird. Zusätzlich dient der Objektidentifier für die Priorisierung und Arbitrierung der Nachrichten.

CAN ist ein Multi-Master Bussystem. Durch Arbitrierung und Priorisierung wird das Senderecht auf dem Bus geregelt.

Arbitierungsprinzip:

Die Belegung des CAN-Busses erfolgt durch Aufschalten eines dominanten Bits (SOF). Anschließend werden die Bits des Identifiers nacheinander auf den Bus gelegt und mit dem tatsächlich vorhandenen Buspegel verglichen. Tritt während der Arbitrierung ein Unterschied auf (rezessiv gesendet - dominat erkannt), zieht sich der Sender des rezessiven Pegels vom Bus zurück und schaltet unmittelbar in den Empfangsmodus. Der erkannte dominante Buspegel erfolgte durch einen Sender mit höherer Priorität.