FlexRay
Das jüngste der heute im Einsatz befindlichen Bussysteme ist FlexRay. Es wurde entwickelt, weil CAN sich immer mehr als ein „Flaschenhals“ erwies. Mit 500 kbit/s als praktisch nutzbarer Bitrate zeigte sich CAN für anspruchsvolle Anwendungen im Bereich des Antriebsstranges und insbesondere im Bereich des Fahrwerks als nicht mehr ausreichend.
FlexRay |
Ein zweiter treibender Aspekt für die Entwicklung von FlexRay waren künftige X-By-Wire Anwendung, wie Break-By-Wire oder Stear-By-Wire. Hier sind nicht nur eine hohe Bitrate, sondern auch neue Ansätze für sicherheitskritische Anwendungen gefordert. FlexRay bietet hier vom Grundkonzept her mit seinem zweikanaligen Ansatz größere Möglichkeiten. FlexRay ist technisch gesehen aus dem proprietären Bussystem Byteflight von BMW und TTP. Einer Lösung, die von der Universität Wien entwickelt wurde und heute von der Firma TTTech vermarktet wird.
Spezifikationen – FlexRay Communications System |
Der erste Serieneinsatz von FlexRay fand im Jahr 2006 statt. Das erste Fahrzeug war der damalige BMW X5. Die Spezifikation ist seit 2005 in der Version 2.1 stabil. Es finden kleine weitere Entwicklungen statt, diese aber aufwärtskompatibel sein werden.
Physical Layer und Bus-Topologie
Wie CAN verwendet FlexRay eine bitstrombasierte Übertragung. Es wird ein bidirektionales Zwei-Draht-Bussystem eingesetzt. Die Busleitungen müssen an beiden Enden mit Abschlusswiderständen abgeschlossen werden. Der zweite Kanal ist optional. Er kann entweder redundant oder zur Verdopplung der Bandbreite eingesetzt werden.
FlexRay – Physical Layer und Bus-Topologie |
Der Buszugriff findet zeitgesteuert mit einem Zeitscheibenverfahren statt, siehe nächster Abschnitt. Es können maximal 64 Steuergeräte in verschiedenen Topologien an das Bussystem angeschlossen werden. Die von CAN bekannte Linienstruktur ist mit FlexRay auch machbar, stellt aber hier eher die Ausnahme dar. Die Vorzugstopologie ist eine Sternstruktur mit einem aktiven Sternpunkt (Active-Star). Der aktive Sternpunkt ist ein Koppelpunkt, an dem die Signale regeneriert werden. Somit sind Abstände zwischen Steuergerät und Sternpunkt von bis zu 24 Metern möglich. Die Standardbitrate von FlexRay ist 10 Mbit/s. Im Gegensatz zu CAN hat FlexRay keine inhärente Beschränkung bezüglich der Bitrate. Das heißt, zukünftig können hier auch höhere Bitraten eingesetzt werden.
Data Link Layer
FlexRay organisiert den zeitlichen Ablauf der Übertragungen in so genannten Zyklen, siehe Abbildung. Innerhalb eines Zyklus gibt es ein statisches und ein dynamisches Segment. Die Zyklen werden periodisch wiederholt, die Länge eines Zyklus ist fest.
FlexRay Data Link Layer – Zyklus |
Innerhalb des statischen Segments haben wir Zeitschlitze mit einer festen Länge. Die Länge eines Zeitschlitzes ist so groß, dass genau eine Botschaft hineinpasst. Während der Entwicklungsphase wird festgelegt, welches Steuergerät in welchem Zeitschlitz senden darf und senden muss. Dabei ist es möglich, dass in einem bestimmten Zeitschlitz für unterschiedliche Zyklen unterschiedliche Steuergeräte zugeordnet werden. Das ist das so genannte Cycle-Multiplexing, auf dessen Funktion und Sinn wir später kurz eingehen. Jedes Steuergerät zählt, beginnend mit dem Anfang des Zyklus, die Zeitschlitze mit, so dass alle Steuergeräte darüber orientiert sind, in welchem Zeitschlitz sich das Übertragungssystem gerade befindet.
Im dynamischen Segment haben wir ebenfalls Zeitschlitze, die so genannten Minislots. Auch hier ist jedem Minislot genau ein Steuergerät zugeordnet. Das heißt, nur jeweils ein Steuergerät hat das Senderecht, wodurch alles wieder kollisionsfrei ablaufen kann.
Im Gegensatz zum statischen Segment dürfen die Botschaften im dynamischen Segment aber nun eine variable Länge aufweisen. Sie können also mehr als einen Minislot lang dauern. Ein Steuergerät darf hier auch ganz auf sein Senderecht verzichten. Dann bleibt das zugehörige Minislot frei, der Slot-Zähler zählt weiter und im nächsten Minislot darf dann ein anderes Steuergerät zählen. Wenn ein Steuergerät dagegen sein Senderecht nutzt und seine Botschaft länger dauert, als ein Minislot, dann bleibt der Slot-Counter einfach so lange stehen, bis die Botschaft abgeschlossen ist. Eine Botschaft im dynamischen Segment muss innerhalb des aktuellen Zyklus vollständig versendet werden können. Wenn das nicht der Fall ist, darf der Kommunikationscontroller die Botschaft nicht versenden. Die Botschaft muss mindestens bis zum nächsten Zyklus warten. Die Wahl des Minislots für eine Botschaft stellt damit einer Art Priorität dieser Botschaft dar.
Am Ende eines Kommunikationszyklus befinden sich die Network-Idle-Time und das Symbol-Window. Das Symbol-Window ist für zukünftige Erweiterungen vorgesehen. Die Network-Idle-Time dient der Synchronisation zwischen Sendern und Empfängern.
Cycle-Multiplexing
Der Kommunikationsablauf wiederholt sich in den Kommunikationszyklen periodisch. Üblicherweise wird eine Botschaft einmal je Zyklus versendet. Für zeitkritische Botschaften muss die Zykluszeit entsprechend klein gewählt werden. Beim BMW X5 zum Beispiel nahm man 5 Millisekunden. Um auch Botschaften mit noch kürzerer Zykluszeit versenden zu können, ohne den Zyklus an sich kürzer zu machen, hat man sich einen Trick einfallen lassen: Das Cycle-Multiplexing, siehe Abbildung.
FlexRay – Cycle Multiplexing |
Man wählt mit 3 Millisekunden das statische Segment etwas größer als die Hälfte der gesamten Zyklusdauer. Dadurch ist es möglich, eine Botschaft zweimal zu versenden, am Anfang und in der Mitte des Zyklus. Das ergibt eine effektive Zyklusdauer von 2,5 Millisekunden. Für diejenigen Botschaften, bei denen eine größere Periodendauer reichen würde, für die also eine Zykluszeit von 5 Millisekunden nicht notwendig ist, hat man das Cycle-Multiplexing geschaffen. Dadurch muss man keine Schlitze reservieren, die nicht benötigt werden. Beim Cycle Multiplexing benutzt man ein- und denselben Zeitschlitz für unterschiedliche Botschaften von unterschiedlichen Steuergeräten. Im Beispiel ist hier in Orange eine Botschaft dargestellt, die alle 10 Millisekunden versendet wird und in Gelb eine Botschaft, die nur alle 20 Millisekunden versendet werden soll. Insgesamt kann man auf diese Weise ein Schema mit maximal 64 Kommunikationszyklen aufbauen, bei denen die Zeitschlitze unterschiedlich verwendet werden.
Frameformat
Das Botschaftsformat von FlexRay ist in nachfolgender Abbildung dargestellt. Die Übertragung beginnt mit einer Reihe von Steuerbits. Danach folgt die Frame-ID, die mit der Nummer des Slots bzw. des Minislots identisch ist. Hier sind 2048 verschiedene Werte möglich. Dann folgt die Anzahl der Datenworte. Im Gegensatz zu CAN oder LIN, werden bei FlexRay die Anzahl der übertragenen Daten in Worten gezählt (16 Bit). Eine FlexRay-Botschaft kann zwischen Null und maximal 127 Worten, also maximal 254 Byte Daten enthalten. Der Header wird durch eine Prüfsumme, ein CRC, abgesichert. Zusammen mit dem Header wird zur Realisierung des Cycle-Multiplexing ein Zykluszähler übertragen. Abgeschlossen wird die Datenübertragung durch eine 24 Bit große Prüfsumme, die sich über die gesamte Botschaft erstreckt.
FlexRay – Frameformat |
In der Abbildung ist das Format der Botschaften auf der Ebene des Data-Link-Layers dargestellt, so wie sie die Software zu sehen bekommt. Auf physikalischer Ebene streut der Kommunikationscontroller, ganz ähnlich wie bei CAN, noch eine ganze Reihe von Bits ein: Am Anfang zum Beispiel die Trailing-Start-Sequence, die zur Synchronisation dient. Ebenso die Frame-Start-Sequence, die ebenfalls zu Synchronisationszwecken verwendet wird. Weiterhin die Byte-Start-Sequence: Dies sind 2 Bits, die vor jedem Byte gesendet werden, so dass für jedes übertragene Byte effektiv 10 Bit gesendet werden. Der Protokoll-Overhead des Gesamtprotokolls ist somit etwas größer als bei CAN. Die Nutzdatenrate beträgt bei 10 Mbit/s im besten Fall ca. 500 kByte/s. In der Praxis wird es eher etwas weniger sein. Grund: Am Anfang und am Ende eines Zeitschlitzes wird immer etwas Platz gelassen, da eine Botschaft unter allen Umständen in den Zeitschlitz hineinpassen muss.
Ein weiterer wichtiger Aspekt bei der Auslegung von FlexRay-Systemen ist die Tatsache, dass die Zeitschlitze den einzelnen Steuergeräten eindeutig zugeordnet werden. Dies muss in der Entwicklungsphase des Systems geschehen. Auch müssen Platzhalter für künftige Erweiterungen vorgehalten werden. All diese Aspekte reduzieren nochmals deutlich die effektive Nutzdatenrate bei FlexRay-Systemen. Die Arbitrierung findet hier, wenn man so sagen darf, nicht im Fahrzeug, sondern in den Entwicklungsabteilungen statt! Wer hier „gewinnt“, hängt vermutlich nicht nur mit technischen Anforderungen zusammen.
Netzwerkstart und Taktsynchronisation
Für das korrekte Funktionieren des FlexRay-Systems ist es von entscheidender Bedeutung, dass alle Steuergeräte zeitsynchronen zueinander arbeiten. Im laufenden Betrieb wird dies durch die Taktsynchronisation gewährleistet. Beim Netzwerkstart sind allerdings ganz besondere Maßnahmen notwendig.
FlexRay – Netzwerkstart und Taktsynchronisation |
Zum Netzwerkstart muss es mindestens zwei, besser drei so genannte Kaltstartknoten geben. Nur diese dürfen die Kommunikation beginnen. Bevor sie das tun, prüfen sie, ob das Bussystem in Ruhe ist oder ob es bereits eine Kommunikation gibt. Wenn schon eine Kommunikation stattfindet, klinken sie sich einfach ohne zusätzliche Maßnahmen in diese Kommunikation ein. Wenn dagegen das Bussystem in Ruhe ist oder wenn das Bussystem vorher im Schlafzustand war, dann wird zunächst einmal ein Wake-Up-Pattern gesendet. Danach wird überprüft, ob das Bussystem immer noch in Ruhe ist. Ist das der Fall, dann sendet einer der Kaltstartknoten ein Collision-Avoidance-Symbol. Dieses signalisiert allen anderen angeschlossenen Steuergeräten, dass dieser Kaltstartknoten versucht, das Netzwerk zu starten. Wenn das Bussystem weiterhin in Ruhe ist, führt dieser Kaltstartknoten den Kaltstart durch, indem er seine normalen Botschaften sendet. In diesen Botschaften sind im Header das Startup-Frame-Indicator-Bit und das Sync-Frame-Indicator-Bit gesetzt. So dass diese Botschaften eindeutig als Botschaften eines Kaltstartknotens erkannt werden können.
Die anderen Kaltstartknoten nehmen die Kommunikation erst dann auf, wenn sie mindestens vier solche Botschaften vom ersten Kaltstartknoten empfangen haben. Danach ist der Weg für die „normalen“ Steuergeräte frei, sich in die Kommunikation einzuklinken. Sie müssen aber, bevor sie die Kommunikation aufnehmen können, mindestens zwei Botschaften von zwei unterschiedlichen Kaltstartknoten empfangen haben.
Insgesamt bedeutet dies, dass der Start eines Netzwerkes mindestens 8 vollständige Kommunikationszyklen erfordert. Im laufenden Betrieb werden dann insbesondere in der Network-Idle-Time die lokalen Taktsignale aller Kommunikationscontroller justiert, so dass die Knoten synchron bleiben. Dazu müssen mindestens zwei der Kaltstartknoten auch im laufenden Betrieb ständig Botschaften mit dem entsprechenden Sync-Frame-Indicator-Bit senden.
Alle Botschaften für den Kaltstart des Netzes und die Synchronisation werden nur im statischen Segment gesendet. Das heißt, bei der Konfiguration eines Netzwerks muss auf jeden Fall ein statisches Segment mit mindestens zwei Zeitschlitzen konfiguriert werden.
Siehe auch
CAN - Controller Area Network
LIN - Local Interconnect Network