
Produktinformationen Applikationsschrift CAN Bus :: Arbitrierung unter der Lupe
Applikationsschrift CAN Bus :: Arbitrierung unter der Lupe
Der symmetrische CAN-Bus, der häufig in Kraftfahrzeugen zur Steuerung des Antriebs und weiterer Kraftfahrzeugelemente eingesetzt wird, basiert auf der asynchronen Übertragung von Datenpaketen. Dadurch kollidieren Pakete häufig, was wiederum Meldungen niedrigerer Priorität ausbremsen kann. Dem sollte ein Arbitrierprozess abhelfen, was jedoch nicht immer klappt.
Die asymmetrische Übertragung läuft über zahlreiche Knoten. Pakete kollidieren genau dann, wenn zwei Knoten gleichzeitig senden wollen. Treten solche Kollisionen auf, kann es Verzögerungen bei der Übertragung von Meldungen niedrigerer Priorität geben. Dies ist der Fall, obwohl es einen Arbitrierprozess auf Bit-Ebene gibt, der bestimmt, welche CAN-Meldung die höchste Priorität hat. Weiterhin können bei hoher Buslast Fehler auf dem CAN-Bus auftreten.
Wenn zwei oder mehr Knoten gleichzeitig oder fast gleichzeitig mit dem Senden eines Datenpakets beginnen, bestimmt die Arbitrierung, welches Datenpaket die höchste Priorität hat und daher weiter übertragen werden soll. Wenn der Low-Pegel am symmetrischen CAN-Bus als dominant interpretiert wird, verhalten sich mehrere Knoten wie ein logisches UND (»wired AND«).
Bei einem dominanten »Low« werden niedrige Pegel als logische Nullen interpretiert und hohe Pegel als logische Einsen. Sind alle übertragenen Bits »High« (Eins), herrscht auf dem Bus hoher Pegel.
Ist mindestens eins von mehreren übertragene Bits »Low« (Null), so zieht es den Bus in den dominanten Zustand, also auf »Low«. Deshalb setzt sich immer der Knoten mit der niedrigsten Frame-ID bei der Arbitrierung durch. Im abgebildeten Beispiel hat Knoten 2 eine geringere Frame-ID als die Knoten 1 und 3, oder anders gesagt: Die Frame-ID von Knoten 2 fängt mit mehr Nullen an, die den Bus länger auf »Low« halten als die Datenpakete der Knoten 1 und 3. Daher wird sich immer Knoten 2 (mit der niedrigsten Frame-ID) gegen Knoten 1 und 3 (mit höherer Frame-ID) bei der Arbitrierung durchsetzen. Sendende Knoten senden nicht nur Bits, sondern prüfen auch kurz vor Ende jeder Bitzeit (etwa bei 75% der Bitzeit) den Pegel auf dem Bus. Senden sie selbst eine Eins, lesen aber eine Null vom Bus, wissen sie, dass es einen oder mehrere andere Knoten geben muss, die ihnen gegenüber Vorrang haben. Im dargestellten Beispiel sendet Knoten 1 für das Bit 6 eine Eins, liest dann aber eine Null vom Bus. Also überlässt Knoten 1 ab dem Bit 5 die Kontrolle über den Bus den anderen sendenden Knoten. Knoten 1 muss nun warten, bis der aktuell gesendete Frame fertig übertragen ist, bevor er einen zweiten Versuch unternehmen kann, seine Daten zu senden.
Nachteile der Arbitrierung
Arbitrierung auf Bit-Ebene funktioniert gut, sie hat aber bei asynchronen seriellen Bussen wie etwa dem CAN-Bus den Nachteil, dass entscheidende Kommunikationspakete oft nur verzögert gesendet werden können. Wenn zudem die Buslast hoch ist (der Prozentsatz der Zeit, in der tatsächlich gesendet wird, im Verhältnis zur Gesamtzeit einschließlich Wartephasen), steigt die Zahl der Buskollisionen. Das erhöht theoretisch sowohl die Bitfehlerrate (BER) als auch die Fehlererholungszeit. Automobil ingenieure streben daher an, die Last am CAN-Bus möglichst unter 30% zu halten.
Weil die Bordelektronik heutiger Kraftfahrzeuge aber immer komplexer wird, wird bei Kfz-Datennetzen teilweise zu CAN-FD übergegangen (das verringert die Buslast) oder zum zeitgetriggerten/synchronen FlexRay-Bus, wo Arbitrierung und Buslast kein Thema mehr sind.....
Autor: Johnnie Hancock, Florian Stadler | Keysight Technologies (vormals Agilent)
Erschienen; Design & Elektronik | Januar 2014
Nehmen Sie hier Kontakt mit uns auf. Fragen zum Artikel? Beratung gewünscht?
Nehmen Sie hier Kontakt mit uns auf.