Uhrensynchronisation und Wecken

Eines der Ziele bei der Entwicklung des FlexRay-Systems, bestand in der toleranten Datenübertragung und einer hohen Ausfallsicherheit. Vor allem durch die dezentrale Uhrensynchronisation und die garantierten Latenzzeiten wurde letztendlich eine hohe Sicherheit bei der Datenübertragung in Kraftfahrzeugen realisiert.

Die Verfahren zur Kommunikation und zur Übertragung basieren in FlexRay auf einem hierarchisch organisierten Zeitsystem, welches durch einzelne Bausteine und Vorgänge unterstützt wird. Das Verfahren der Uhrensynchronisation und der Vorgang des Wake-Ups werden in diesem Beitrag ausführlich dargestellt.

Uhrensynchronisation im FlexRay-System

Das hierarchische Zeitsystem, auf dem die Übertragungseigenschaften und das Kommunikationsverfahren des FlexRay-Systems basieren, wird auch als Uhrensynchronisation bezeichnet. Das System ist auf verschiedenen Ebenen organisiert, die hinsichtlich ihres zeitlichen Ablaufs, in den folgenden Absätzen erläutert werden.

Die oberste Ebene des Kommunikationsverfahrens wird durch den Kommunikationszyklus gebildet, welcher sich in sogenannte Makro- und Mikroticks unterteilt. In allen Knoten ist die Anzahl der Ticks innerhalb eines Zyklus immer gleich. Das Gleiche gilt für Makroticks auf bezüglich ihrer Länge, die innerhalb einer festgelegten Toleranz, in allen Knoten dieselbe ist.

Die Länge der Mikroticks, welche die kleinste Zeiteinheit im FlexRay-System darstellen, kann sich hingegen je Makrotick unterscheiden. Auch die Anzahl der Mikroticks muss für einen Makrotick nicht immer gleich sein und wird direkt aus dem entsprechenden Knoten der verfügbaren Quarzfrequenz abgeleitet.

Um die Zeitsynchronisation zu realisieren, steht in jedem Knoten ein lokaler Oszillator für die Zeitgenerierung zur Verfügung. Durch diesen wird die globale Synchronisation von Nachrichten möglich, die zu einer globalen Zeit durchgeführt wird. Die lokalen Oszillatoren weisen jedoch Steigungs- und Frequenzabweichungen auf, die mit Hilfe von Korrekturmechanismen ausgeglichen werden müssen.

Offset- und Steigungskorrektur im FlexRay-Protokoll

In der Form eines Offset- oder eines Steigungsfehlers zeigen sich die Unterschiede der lokalen Zeitblasen in den einzelnen Knoten. Der Offset-Fehler kann durch die Messung der absoluten Abweichung zwischen zwei Knoten im statischen Segment ermittelt werden. Bei dem Steigungsfehler handelt es sich um die zeitliche Entfernung zweier Knoten je Zyklus. Zur Ermittlung dieser Abweichung sind zwei Messungen erforderlich.Um eine stabile und global gültige Zeitbasis im FlexRay-System zu gewährleisten, werden im Protokoll beide Fehlertypen eingesetzt. Erst die Kombination aus Offset- und Steigungskorrektur ermöglicht einen fehlerfreien Kommunikationsablauf. Nach der Messung der absoluten Abweichungen zwischen den Knotenfrequenzen sorgt die Steigungskorrektur dafür, dass die Zykluslänge in allen Knoten gleich ist.Die Steigungsdifferenz beschreibt die Differenz von zwei aufeinander folgenden Abweichungen eines Knotens. Der Korrekturmechanismus berechnet die Steigungsdifferenzen der einzelnen Knoten und bildet daraus den Mittelwert. Abgeleitet aus diesem Ergebnis wird dann die Anzahl der benötigten Mikroticks berechnet, die zur Kompensierung der Differenz benötigt werden. Die entsprechenden Mikroticks werden dann gleichmäßig auf den Kommunikationszyklus aufgeteilt.Sollten nach der Steigungskorrektur noch Offset-Fehler bestehen, die beispielsweise durch Laufzeiteffekte entstehen, werden diese mit Hilfe der Offset-Korrektur behoben. Dies geschieht durch die Anwendung des Welch-Lynch-Algorithmus. Bei dieser Berechnung wird die „Offset“ am Ende eines Zyklus korrigiert, so dass der nächste Zyklus mit genau der gleichen Zeit beginnt. Der Algorithmus streicht die größten und kleinsten Werte, die bei der Zeitmessung vorgefunden wurden, und berechnet dann aus der Summe der verbliebenden Werte den Mittelwert. Der errechnete Wert ist letztendlich die Größe, um die der Zyklus korrigiert werden muss. Nach der Modifikation ist eine fehlerfreie Datenübertragung im gesamten FlexRay-System garantiert.

Wecken im FlexRay-System

Ein Steuergerät im Bus kann durch den FlexRay-Transceiver aktiv geweckt werden. Dieser Vorgang wird auch Wake-up bzw. Wakeup genannt. Wenn sich ein Steuergerät im Ruhezustand (Sleep-Zustand) befindet, ist die Spannungsversorgung für alle Komponenten abgeschaltet. Über sogenannte Inhibit-Anschlüsse versorgt der FlexRay-Baustein das Steuergerät mit Spannung.Der Transceiver ist der einzige Baustein, der direkt an die Batteriespannung angeschlossen ist und sich ständig im Standby-Modus befindet, in dem lediglich die Erkennung des Wake-Up-Patterns aktiviert ist.

Das Wake-Up-Pattern kann über einen Tiefpassfilter erkannt werden, der in der analogen Schaltung enthalten ist. Sobald der Transceiver ein Wake-Up-Pattern bemerkt, schaltet dieser die Spannungsversorgung über die Inhibit-Anschlüsse ein, wodurch das Steuergerät in den Normalbetrieb wechselt. Das Wake-Up-Pattern besteht aus 2 bis 63 Wake-Up-Symbolen, welche jeweils aus einer logischen Null und einer Idle-Pause bestehen.

Grundsätzlich kann der Weckvorgang im FlexRay-System durch jedes Steuergerät initiiert werden, wobei jedes Gerät nur über einen Kanal wecken darf. Diese Begrenzung wird aus Gründen der Fehlertoleranz eingefügt. Nach der Konfiguration des FlexRay-Controllers und vor dem Hochlauf, kann eine Anwendung im Host, das Wecken auslösen. Dabei überwacht der Controller zunächst zwei Kommunikationszyklen und löst das Wake-Up-Pattern über den konfigurierten Kanal aus, wenn keine Kommunikation für zwei aufeinanderfolgende Zyklen erkannt wurde.

Das Versenden kann abgebrochen werden, wenn während der Idle-Phase Kollisionen auf dem Bus entdeckt werden. Insofern es sich um ein zweikanaliges System handelt, übernimmt dann ein weiterer Knoten den Weckvorgang, nachdem dieser auf dem ersten Kanal geweckt wurde.