Die Funktionsweise von CAN Netzwerken

Prinzipien des Datenaustausches

Can Broadcast Filter
Broadcast und Akzeptanzfilterung von CAN-Knoten

Wenn Daten über CAN übertragen werden, findet die Adressierung nicht über eine Knotennummer statt, sondern der Inhalt der Nachricht wird mit einem Identifier versehen, der im gesamten Netzwerk einmalig ist. Dieser Identifier legt nicht nur verschiedene Nachrichteninformationen fest, sondern auch die Priorität der Nachricht. Diese Tatsache ist wichtig für die Steuerung des Buszugriffs, wenn mehrere Knoten Zugriff auf den Bus haben wollen.

Sollte eine CPU eines Knotens eine Nachricht an einen oder mehrere Knoten versenden wollen, übermittelt es die Informationen an den CAN-Chip inklusive des bzw. der Identifier zur weiteren Verarbeitung („Make ready“). Das ist alles, was die CPU zu tun hat, um einen Datenaustausch einzuleiten. Die Nachricht wird dann durch den CAN-Chip zusammengesetzt und übermittelt. Sobald der CAN-Chip Zugriff auf den Bus erhält („Send Message“), werden alle Knoten zu Empfängern der Nachricht („Receive Message“). Jeder Knoten im Netzwerk, der die Nachricht richtig empfangen hat, führt einen Annahmetest durch, um festzustellen ob die Daten für ihn bestimmt sind („Select“). Sollten die Daten relevant für ihn sein werden sie verarbeitet („Accept“), andernfalls werden sie verworfen und ignoriert.

Eine hohe Flexibilität von System und Konfiguration wird durch das inhaltsorientierte Adressschema erreicht. Es ist sehr leicht Knoten zu einem bestehenden Netzwerk hinzuzufügen ohne irgendwelche Hardware oder Softwareanpassungen an den vorhandenen Knoten vorzunehmen. Vorraussetzung ist allerdings, dass die neuen Knoten nur Empfänger sind. Da das Übertragungsprotokoll keine physikalische Adressierung der einzelnen Knoten erfordert, unterstützt es das Konzept der modularen Elektronik und erlaubt ebenfalls Broadcasts oder Multicasts sowie die Synchronisation von verteilten Prozessen.

Messungen als Information für diverse Controller können über das Netzwerk übermittelt werden, so dass es nicht mehr relevant ist, dass jeder Controller seine eigenen Sensoren hat!
Image: Arbitration Principle
Prinzip der Nicht-Destruktiven bitweisen Arbitrierung

Nicht-Destruktive bitweise Arbitrierung

Die in Echtzeit zu verarbeitenden Daten müssen möglichst schnell übermittelt werden. Dies erfordert nicht nur einen physischen Datentransferpfad mit bis zu 1 Mbit/s, sondern vor allem einen schnellen Buszugriff während viele Knoten ihre Nachrichten gleichzeitig auf den Bus bringen wollen.

Bei der Echtzeitverarbeitung von Nachrichten, die über das Netzwerk ausgetauscht werden, kann ihre Priorität stark abweichen. Stark schwankende Werte ( z.B. Drehzahl ) müssen schneller und aktueller übermittelt werden als andere eher langsam verändernde Werte (z.B. Temperatur).

Die Priorität einer zu übermittelnden Nachricht, verglichen mit anderen, weniger wichtigen Nachrichten, wird durch den enthaltenen Identifier festgelegt. Die Prioritäten werden während des Systemdesigns vergeben und in Form von Binärwerten festgelegt. Diese können nicht dynamisch geändert werden. Der Identifier mit dem niedrigsten Binärwert hat die höchste Priorität.

Zugriffsprobleme auf dem Bus werden durch die bitweise Arbitrierung der Identifier gelöst, die von jedem Knoten durch die Überwachung des Bus Levels Bit für Bit übernommen wird. In Bezug auf den „Wired AND“ Mechanismuns, bei dem der dominante Pegel (logisch 0) den rezessiven Pegel (logisch 1) überschreibt sind alle Knoten, die ein rezessives Bit anlegen wollen, aber ein dominantes Bit empfangen, ab sofort nur noch Empfänger und haben keinen Schreibzugriff auf den Bus mehr. Alle „Verlierer“ empfangen die höher priorisierte Nachricht und versuchen nicht mehr zu senden, bis der Bus wieder frei ist.

Effektivität des Buszugriffs

Die Effektivität der Buszugriffsregelung wird hauptsächlich durch die möglichen Anwendungsfälle bzw. Einsatzgebiete des seriellen Busses bestimmt. Um möglichst einfach zu entscheiden welches Bussystem für den benannten Einsatzzweck das Beste ist, empfiehlt die Literatur eine Methode, die die verschiedenen Bussysteme anhand ihrer Buszugriffsmethode einordnet.

Grundsätzlich unterscheiden wir die folgenden Arten:

Zeitgesteuerter BuszugriffBedarfsorientierter Buszugriff
Der Zugriff wird sequenziell an jeden Anfrager für eine maximale Zeit unabhängig von der wirklichen Nutzungszeit vergeben (z.B.: token slot oder token passing).Der Bus wird für einen Teilnehmer geöffnet sobald er die Anfrage gestellt hat und kein anderer den Bus blockiert (z.B.: CSMA, CSMA/CD, flying master, round robin oder bitwise arbitration).
Beim CAN-Bus spricht man auch von einer bedarfsorientierten Buszuteilung, da nur Chips mit zu übermittelnden Nachrichten versuchen auf den Bus zu senden!

Eine weitere Möglichkeit des Buszugriffs ist die Effezienz der Arbitrierung und der Methode des Buszugriffs:

Nicht-Destruktiver BuszugriffDestruktiver Buszugriff
Bei dieser Methode wird der Bus für einen Knoten freigegeben, was entweder direkt oder innerhalb einer bestimmten Zeitspanne erfolgt und einen einzelnen Buszugriff erlaubt. (von einer oder mehreren Knoten). Dies stellt sicher, dass jeder Buszugriff von einer oder mehreren Knoten zu einem eindeutigen Zugriff führen muss. (z.B.: token slot, token passing, round robin, bitwise arbitration)Gleichzeitiger Buszugriff von mehreren Knoten lässt alle Buszugriffe sofort fehlschlagen und resultiert somit nicht in einer erfolgreichen Busbelegung. Es ist auch möglich mehr als einen Zugriffsversuch als Vorraussetzung für die Busbelegung zu sehen. Die Anzahl der erfolgreichen Zugriffe ist aber eine rein statische Größe. (z.B.: CSMA/CD, Ethernet).

Um alle Übertragungsanfragen in einem CAN-Netzwerk abzuwickeln, aber auch mit Latenzvorgaben und niedrigen Übertragungsraten zu arbeiten, muss das CAN-Protokoll eine Methode zur Busbelegung zur Verfügung stellen, die auch bei gleichzeitigem Buszugriff immer sicherstellt, dass nur eine eindeutige Busbelegung zustande kommt. Die Methode der bitweisen Arbitrierung aufgrund des Identifiers von Nachrichten, der sie unverwechselbar macht, vermeidet jede Kollision zwischen Knoten, die Nachrichten übermitteln wollen. Dies geschieht spätestens zwischen 13 (standard format) oder 33 (extended format) bit-Perioden für jede Buszugriffs-Periode. Entgegen der nachrichtenbezogenen Arbitrierung wie bei CSMA/CD wird bei dieser Nicht-Destruktiven Methode der Konfliktlösung sichergestellt, dass keinerlei Buskapazitäten verloren gehen ohne wirkliche Daten zu übermitteln.

Sogar in Situationen in denen der Bus überlastet ist, ist die Verbindung von Nachrichtenprioriät mit dem Inhalt der Nachricht ein großer Vorteil verglichen mit vorhandenen CSMA/CD oder Token Protokollen: Trotz der, in dem Moment, mangelhaften Busübertragungskapazität, werden alle noch offenen Übermittlungensanfragen in ihrer Prioritätsreihenfolge im Gesamtsystem bearbeitet. Die verfügbare Bandbreite wird effizient eingesetzt um wirkliche Daten zu übermitteln, da Freiräume in der Busbelegung quasi vermieden werden. Der Abbruch der kompletten Verbindung aufgrund einer Systemüberlastung kann mit CSMA/CD vorkommen, aber ist mit CAN nicht möglich. Also erlaubt CAN die Implementierung von schnellen, durchsatzabhängigen Buszugriffen, die aufgrund der bitweisen Abitrierung auf Basis der Nachrichtenpriorität nicht destruktiv stattfinden.

Nicht-Destruktiver Buszugriff kann eingeteilt werden in:

  • Zentralisierte Buszugriffskontrolle
  • Dezentralisierte Buszugriffskontrolle

Diese werden durch Kontrollmechanismen unterschieden, die nur einmal vorhanden (zentralisiert) oder verteilt im System mehrfach vertreten sind (dezentralisiert). Ein Kommunikationssystem mit festgelegten Knoten (unter anderem für zentralisierte Buszugriffskontrolle) muss eine Strategie bereitstellen, die ausgeführt werden kann, wenn eine Hauptstation einen Fehler aufweist. Dieses Konzept hat den Nachteil, dass die Strategie für Fehlermanagement schwierig ist und meist auch kostenintensiv in der Implementierung. Zudem kann die Übernahme der Hauptaufgaben durch einen redundanten zweiten Hauptknoten sehr zeitaufwendig sein. Für diese Fälle und um das Problem des nicht immer ausfallsicheren Masters zu umgehen ( und gleichzeitig auch den Ausfall der kompletten Systemkommunikation ), setzt das CAN-Protokoll auf die dezentralisierte Buszugriffskontrolle. Alle Hauptkommunikationsmechanismen, inklusive der Buszugriffskontrolle, sind mehrfach im System implementiert, da das der einzige Weg ist, um die Anforderungen eines hochverfügbaren Kommunikationssystems zu erfüllen.

In Summe kann man sagen, dass CAN eine bandbreitenabhängige Busbelegung besitzt, die aufgrund der Möglichkeit des nicht destruktiven Buszugriffs mit dezentralisierter Zugriffskontrolle eine möglichst hohe Nutzdatenlast bei niedriger Datenrate in Bezug auf die Busauslastung erreicht. Die Effizienz der Busarbitrierungsprozedur wird noch durch die Tatsache verbessert, dass der Bus nur durch die Knoten mit offenen Übermittlungsanfragen belegt ist.

Diese Anfragen werden anhand ihrer Wichtigkeit im Gesamtsystem behandelt. Dies garantiert im Speziellen Vorteile in Volllast-Situationen. Da der Buszugriff auf Basis der Nachrichtpriorität vergeben wird, ist es möglich niedrige Latenzzeiten in Echtzeitsystemen zu garantieren.