logo

CAN-Protokoll (Controller Area Network).

CAN steht für Controller Area Network Protokoll. Es handelt sich um ein Protokoll, das von entwickelt wurde Robert Bosch um 1986. Das CAN-Protokoll ist ein Standard, der es dem Mikrocontroller und anderen Geräten ermöglicht, ohne Host-Computer miteinander zu kommunizieren. Das Merkmal, das das CAN-Protokoll unter anderen Kommunikationsprotokollen einzigartig macht, ist der Broadcast-Bustyp. Broadcast bedeutet hier, dass die Informationen an alle Knoten übertragen werden. Der Knoten kann ein Sensor, ein Mikrocontroller oder ein Gateway sein, der es dem Computer ermöglicht, über das Netzwerk über das USB-Kabel oder den Ethernet-Anschluss zu kommunizieren. CAN ist ein nachrichtenbasiertes Protokoll, was bedeutet, dass die Nachricht die Nachrichtenkennung trägt und anhand der Kennung die Priorität festgelegt wird. Im CAN-Netzwerk ist keine Knotenidentifizierung erforderlich, so dass es sehr einfach ist, ihn in das Netzwerk einzufügen oder daraus zu löschen. Es handelt sich um ein serielles Halbduplex- und asynchrones Kommunikationsprotokoll. CAN ist ein zweidrahtiges Kommunikationsprotokoll, da das CAN-Netzwerk über den zweidrahtigen Bus verbunden ist. Die Drähte sind verdrillte Paare mit einer Impedanz von 120 Ω, die an jedem Ende angeschlossen sind. War es ursprünglich hauptsächlich für die Kommunikation innerhalb der Fahrzeuge konzipiert, wird es mittlerweile in vielen anderen Zusammenhängen eingesetzt. Wie UDS und KWP 2000 kann auch CAN für die On-Board-Diagnose eingesetzt werden.

Warum kann?

Der Bedarf an einem zentralisierten Standard-Kommunikationsprotokoll entstand aufgrund der zunehmenden Anzahl elektronischer Geräte. Beispielsweise kann es in einem modernen Fahrzeug mehr als 7 TCU für verschiedene Subsysteme wie Armaturenbrett, Getriebesteuerung, Motorsteuergerät und viele mehr geben. Wenn alle Knoten eins zu eins verbunden wären, wäre die Kommunikationsgeschwindigkeit sehr hoch, aber die Komplexität und die Kosten der Leitungen wären sehr hoch. Im obigen Beispiel benötigt ein einzelnes Armaturenbrett 8 Anschlüsse. Um dieses Problem zu lösen, wurde CAN als zentralisierte Lösung eingeführt, die zwei Drähte erfordert, d. h. CAN-High und CAN-Low. Die Lösung mit dem CAN-Protokoll ist aufgrund der Nachrichtenpriorisierung sehr effizient und flexibel, da ein Knoten ohne Auswirkungen auf das Netzwerk eingefügt oder entfernt werden kann.

Anwendungen des CAN-Protokolls

Ursprünglich wurde das CAN-Protokoll entwickelt, um Kommunikationsprobleme zu lösen, die in Fahrzeugen auftreten. Aufgrund der angebotenen Funktionen wird es später jedoch auch in verschiedenen anderen Bereichen eingesetzt. Im Folgenden sind die Anwendungen des CAN-Protokolls aufgeführt:

Java-Multithreading
  • Automotive (Pkw, Lkw, Busse)
  • Elektronische Ausrüstung für Luftfahrt und Navigation
  • Industrielle Automatisierung und mechanische Steuerung
  • Aufzug und Rolltreppen
  • Gebäudeautomation
  • Medizinische Instrumente und Geräte
  • Marine, Medizin, Industrie, Medizin

CAN-Schichtarchitektur

Da wir wissen, dass die OSI-Modell unterteilt das Kommunikationssystem in 7 verschiedene Schichten. Die CAN-Schichtenarchitektur besteht jedoch aus zwei Schichten, d. h.

Lassen Sie uns beide Ebenen verstehen.

  • Datenverbindungsschicht: Diese Schicht ist für die Datenübertragung von Knoten zu Knoten verantwortlich. Es ermöglicht Ihnen, die Verbindung aufzubauen und zu beenden. Es ist auch für die Erkennung und Behebung von Fehlern verantwortlich, die auf der physikalischen Ebene auftreten können. Die Datenverbindungsschicht ist in zwei Unterschichten unterteilt:
      MAC:MAC steht für Media Access Control. Es definiert, wie Geräte in einem Netzwerk Zugriff auf das Medium erhalten. Es bietet Kapselung und Entkapselung von Daten, Fehlererkennung und Signalisierung.
  • GMBH:LLC steht für Logical Link Control. Es ist für die Frame-Akzeptanzfilterung, die Überlastbenachrichtigung und das Wiederherstellungsmanagement verantwortlich.
  • Physikalische Schicht: Die physikalische Schicht ist für die Übertragung der Rohdaten verantwortlich. Es definiert die Spezifikationen für die Parameter wie Spannungspegel, Timing, Datenraten und Anschluss.

CAN-Spezifikationen definieren das CAN-Protokoll und die physikalische CAN-Schicht, die im CAN-Standard definiert sind ISO 11898. ISO 11898 besteht aus drei Teilen:

  • ISO 11898-1: Dieser Teil enthält die Spezifikation der Datenverbindungsschicht und der physikalischen Signalverbindung.
  • ISO 11898-2: Dieser Teil fällt unter die physikalische CAN-Schicht für Hochgeschwindigkeits-CAN. Der Hochgeschwindigkeits-CAN ermöglicht Datenraten von bis zu 1 Mbit/s im Antriebsstrang und im Ladebereich des Fahrzeugs.
  • ISO 11898-3: Dieser Teil fällt auch unter die physikalische CAN-Schicht für CAN mit niedriger Geschwindigkeit. Es ermöglicht eine Datenrate von bis zu 125 kbit/s und der Low-Speed-CAN wird dort eingesetzt, wo die Kommunikationsgeschwindigkeit kein kritischer Faktor ist.

CiA DS-102: Die vollständige Form von CiA ist CAN in Automation, das die Spezifikationen für den CAN-Anschluss definiert.

Was die Implementierung betrifft, werden CAN-Controller und CAN-Transceiver mithilfe der Anwendungs-, Betriebssystem- und Netzwerkmanagementfunktionen in die Software implementiert.

CAN-Framing

Lassen Sie uns die Struktur des CAN-Frames verstehen.

CAN-Protokoll
    SOF:SOF steht für „Start of Frame“ und gibt an, dass der neue Frame in ein Netzwerk eingetragen wird. Es ist 1 Bit.Kennung:Ein in der CAN 2.0 A-Spezifikation definiertes Standarddatenformat verwendet eine 11-Bit-Nachrichtenkennung zur Arbitrierung. Grundsätzlich legt diese Nachrichtenkennung die Priorität des Datenrahmens fest.RTR:RTR steht für Remote Transmission Request und definiert den Rahmentyp, ob es sich um einen Datenrahmen oder einen Remote-Rahmen handelt. Es ist 1-Bit.Kontrollfeld:Es verfügt über benutzerdefinierte Funktionen.
      GEHEN:Ein IDE-Bit in einem Kontrollfeld steht für Identifier-Erweiterung. Ein dominantes IDE-Bit definiert den 11-Bit-Standardbezeichner, während ein rezessives IDE-Bit den 29-Bit-erweiterten Bezeichner definiert.DLC:DLC steht für Data Length Code und definiert die Datenlänge in einem Datenfeld. Es besteht aus 4 Bit.Datenfeld:Das Datenfeld kann bis zu 8 Bytes enthalten.
    CRC-Feld:Der Datenrahmen enthält außerdem ein zyklisches Redundanzprüffeld von 15 Bit, das zur Erkennung von Beschädigungen verwendet wird, wenn diese während der Übertragungszeit auftreten. Der Sender berechnet den CRC, bevor er den Datenrahmen sendet, und der Empfänger berechnet ebenfalls den CRC und vergleicht dann den berechneten CRC mit dem vom Sender empfangenen CRC. Wenn der CRC nicht übereinstimmt, generiert der Empfänger den Fehler.ACK-Feld:Dies ist die Empfangsbestätigung des Empfängers. Bei anderen Protokollen wird nach dem Empfang aller Pakete ein separates Paket für eine Bestätigung gesendet. Beim CAN-Protokoll wird jedoch kein separates Paket für eine Bestätigung gesendet.EOF:EOF steht für End of Frame. Es enthält 7 aufeinanderfolgende rezessive Bits, die als „Ende des Rahmens“ bekannt sind.

Jetzt werden wir sehen, wie Daten über das CAN-Netzwerk übertragen werden.

CAN-Protokoll

Ein CAN-Netzwerk besteht aus mehreren CAN-Knoten. Im obigen Fall haben wir drei CAN-Knoten betrachtet und sie als Knoten A, Knoten B und Knoten C bezeichnet. Der CAN-Knoten besteht aus drei Elementen, die unten aufgeführt sind:

  • Gastgeber
    Ein Host ist ein Mikrocontroller oder Mikroprozessor, auf dem eine Anwendung ausgeführt wird, um eine bestimmte Aufgabe auszuführen. Ein Host entscheidet, was die empfangene Nachricht bedeutet und welche Nachricht er als nächstes senden soll.
  • CAN-Controller
    Der CAN-Controller übernimmt die durch das CAN-Protokoll beschriebenen Kommunikationsfunktionen. Es löst auch das Senden bzw. Empfangen der CAN-Nachrichten aus.
  • CAN-Transceiver
    Der CAN-Transceiver ist für die Übertragung bzw. den Empfang der Daten auf dem CAN-Bus verantwortlich. Es wandelt das Datensignal in den vom CAN-Bus gesammelten Datenstrom um, den der CAN-Controller verstehen kann.

Im obigen Diagramm wird ein ungeschirmtes Twisted-Pair-Kabel zum Senden oder Empfangen der Daten verwendet. Er wird auch als CAN-Bus bezeichnet und besteht aus zwei Leitungen, nämlich der CAN-Low-Leitung und der CAN-High-Leitung, die auch als CANH bzw. CANL bekannt sind. Die Übertragung erfolgt aufgrund der an diesen Leitungen anliegenden Differenzspannung. Der CAN verwendet aufgrund seiner Umgebung Twisted-Pair-Kabel und Differenzspannung. Beispielsweise können in einem Auto, einem Motor, einem Zündsystem und vielen anderen Geräten Datenverlust und Datenbeschädigung aufgrund von Rauschen auftreten. Durch die Verdrillung der beiden Leitungen verringert sich auch das Magnetfeld. Der Bus ist an jedem Ende mit einem Widerstand von 120 Ω abgeschlossen.

CAN-Eigenschaften

CAN-Protokoll

Mit Hilfe der Differenzspannung ermitteln wir, wie 0 und 1 über den CAN-Bus übertragen werden. Die obige Abbildung ist das Spannungsdiagramm, das den Spannungspegel von CAN Low und CAN High zeigt. In der CAN-Terminologie wird die logische 1 als rezessiv bezeichnet, während die logische 0 als dominant gilt. Wenn die CAN-High-Leitung und die CAN-Low-Leitung mit 2,5 Volt beaufschlagt werden, beträgt die tatsächliche Differenzspannung null Volt. Eine Nullspannung am CAN-Bus wird vom CAN-Transceiver als rezessive oder logische 1 gelesen. Eine Nullspannung am CAN-Bus ist ein idealer Zustand des Busses. Wenn die CAN-High-Leitung auf 3,5 Volt hochgezogen und die CAN-Low-Leitung auf 1,5 Volt heruntergezogen wird, beträgt die tatsächliche Differenzspannung des Busses 2 Volt. Es wird vom CAN-Transceiver als dominantes Bit oder logische 0 behandelt. Wenn der Buszustand den dominanten oder logischen Wert 0 erreicht, ist es für keinen anderen Knoten möglich, in den rezessiven Zustand zu wechseln.

Wichtige Erkenntnisse aus den CAN-Eigenschaften

  • Logik 1 ist ein rezessiver Zustand. Um 1 auf dem CAN-Bus zu übertragen, sollten sowohl CAN-High als auch CAN-Low mit 2,5 V angelegt werden.
  • Logisch 0 ist ein dominanter Zustand. Um 0 auf dem CAN-Bus zu übertragen, sollte CAN High mit 3,5 V und CAN Low mit 1,5 V angelegt werden.
  • Der ideale Zustand des Busses ist rezessiv.
  • Wenn der Knoten den dominanten Zustand erreicht, kann er von keinem anderen Knoten in den rezessiven Zustand zurückversetzt werden.

CAN-Bus-Logik

CAN-Protokoll
CAN-Protokoll

Aus dem obigen Szenario erfahren wir, dass der dominante Zustand den rezessiven Zustand überschreibt. Wenn der Knoten gleichzeitig das dominante und das rezessive Bit sendet, bleibt der Bus dominant. Die rezessive Ebene tritt nur auf, wenn alle Knoten das rezessive Bit senden. Eine solche Logik ist als UND-Logik bekannt und physikalisch als Open-Collector-Schaltung implementiert.

CAN-Kommunikationsprinzip

Wie wir wissen, wird die Nachricht basierend auf der im Arbitrierungsfeld festgelegten Priorität gesendet. Für den Standardrahmen beträgt die Nachrichtenkennung 11 Bit, während die Nachrichtenkennung für den erweiterten Rahmen 29 Bit beträgt. Es ermöglicht dem Systemdesigner, die Nachrichtenkennung beim Entwurf selbst zu entwerfen. Je kleiner die Nachrichtenkennung ist, desto höher wäre die Nachrichtenpriorität.

Lassen Sie uns anhand eines Flussdiagramms verstehen, wie die Schlichtung funktioniert.

q2 Monate
CAN-Protokoll (Controller Area Network).

Der Absender möchte die Nachricht senden und wartet darauf, dass der CAN-Bus inaktiv wird. Ist der CAN-Bus frei, dann sendet der Sender das SOF bzw. das dominante Bit für den Buszugriff. Anschließend wird das Nachrichtenidentifizierungsbit im höchstwertigen Bit gesendet. Wenn der Knoten das dominante Bit auf dem Bus erkennt, während er das rezessive Bit übertragen hat, bedeutet dies, dass der Knoten die Arbitrierung verloren hat und die Übertragung weiterer Bits stoppt. Der Absender wartet und sendet die Nachricht erneut, sobald der Bus frei ist.

Beispiel für eine CAN-Schiedsgerichtsbarkeit

CAN-Protokoll

Wenn wir drei Knoten betrachten, nämlich Knoten 1, Knoten 2 und Knoten 3, lauten die Nachrichtenkennungen dieser Knoten jeweils 0x7F3, 0x6B3 und 0x6D9.

CAN-Protokoll

Die Übertragung aller drei Knoten mit dem höchstwertigen Bit ist im obigen Diagramm dargestellt.

elfThBit: Da alle drei Knotenbits rezessiv sind, bleibt auch das Busbit rezessiv.

10ThBit: Alle Knoten haben das 10. Bit als rezessiv, daher bleibt der Bus auch rezessiv.

9ThBit: Knoten 1 hat ein rezessives Bit, während andere Knoten ein dominantes Bit haben, sodass der Bus auch dominant bleibt. In diesem Fall hat Knoten 1 die Arbitrierung verloren und sendet daher keine Bits mehr.

8ThBit: Sowohl Knoten 2 als auch Knoten 3 senden rezessive Bits, sodass der Buszustand rezessiv bleibt.

7ThBit: Der Knoten 2 sendet ein dominantes Bit, während Knoten 3 ein rezessives Bit gesendet hat, sodass der Buszustand dominant bleibt. In diesem Fall hat Knoten 3 die Schlichtung verloren und stoppt daher das Senden der Nachricht, während Knoten 2 die Schlichtung gewonnen hat. Dies bedeutet, dass er den Bus weiterhin hält, bis die Nachricht empfangen wird.