Beruflich Dokumente
Kultur Dokumente
Joshua B. Knobloch
SS 2014
1 Einführung
1.1 Motivation
Seit den 80er Jahre ist es notwendig, dass sich mikroprozessorgesteuerte Sys-
teme in einem Fahrzeug untereinander austauschen können. Dies geschah
zunächst mit einfachen Punkt-zu-Punkt-Verbindungen, was zu einer Zunah-
me an Gewicht und Komplexität im Kabelbaum führte. Durch den Siegeszug
der Elektrik und Elektrotechnik in der Automobilindustrie wurden die Ka-
belbäume jedoch so schwer und komplex, dass schon bald eine andere Lösung
zur Kommunikation gefunden werden musste.
Anfang der 90er Jahre wurde mit dem CAN der erste herstellerübergreifende
Bus eingeführt. Der CAN ist ein von Bosch entwickelter und später durch
die ISO11898 und SAEJ1939 standardisierter Klasse B bis Klasse C Bus (
Abbildung 1). Er dient hauptsächlich zur Vernetzung von Steuergeräten.
2 Bitübertragungsschicht
Zur Übertragung der Bits nutzt LIN eine nach ISO 9141 genormte, bidirek-
tionale Eindrahtleitung. Die Bitübertragungsschicht agiert unabhängig von
höher gelegenen Schichten wie z.B. der Protokollschicht, weshalb Knoten pro-
blemlos versionsübergreifend miteinander kooperieren können. Das System
ist auf eine Bordnetzspannung von 8 bis 18 V und eine Bietriebstemperatur
von -40 bis zu 125°C ausgelegt.
2.1 Transceiver
Die elektrischen Hauptbestandteile des Transceivers sind ein Pull-Up-Wiederstand,
der mit der Versorgungsspannung verbunden ist, und ein Transistor, welcher
über die Masse gekoppelt wird. Die Diode verhindert dass über die LIN-
Signalleitung Strom in den Knoten fliest. (Abbildung 3)
Durch die parallele Schaltung aller Transistoren mit der Masse ist der Low-
Pegel dominant. D.h. es reicht dass ein ein Transistor eine Null sendet und
die komplette Leitung nimmt den dominanten Wert an. Nur wenn alle Kno-
ten die Transistoren sperren liegt auf der Leitung der rezessive Wert (die 1
wird gesendet) an.
Abbildung 3: Teilausschnitt eines LIN-Transceivers [1, S.107]
2.2 Signalspezifikation
Um einen rezessiven Wert, also eine logische 1, zu senden, muss ein Kno-
ten mindestens 60% der Versorgungsspannung auf die Leitung legen. Ein
Wert unter 40% wird als dominanter Wert, also als eine logische 0, er-
kannt.(Abbildung 4)
3 Protokolle
Im LIN-Bus wird die Kommunikation zwischen Master-Slave und Slave-Slave
Knoten ausschließlich vom Master, mit Hilfe sogenannter Frames (siehe Ka-
pitel 2.1), gesteuert. Wann welcher Frame gesendet wird, steht in der Time-
Schedule-Tabelle des Master Tasks. Ein Master kann mehrere Tabellen haben
und z.B. bei eine Kollision von seiner normalen Tabelle auf eine Andere über
gehen, damit die Kollision gelöst werden kann. Danach wird er wieder auf
die normale Tabelle wechseln und diese periodisch abarbeiten.
Grundsätzlich gibt es drei verschiedene Arten des Informationsaustausches
(Abbildung 6):
3.1 Frames
Ein Frame besteht, wie in Abbildung 5 dargestellt, aus einem Header und
einem Response. Der Header wiederum beinhaltet das Breakfield, das Sync-
field und den Identifier und initialisiert einen Datenaustausch. Im Response
findet dann der eigentliche Datenaustausch statt. Er wird immer, auch im
Masterknoten, vom Slave Task erzeugt und ist die Antwort auf den Header.
3.1.1 Breakfield
Das Breakfield wird immer vom Masterknoten initialisiert und signalsiert den
Slaveknoten den Begin eines neuen Frames. Es ist mindestens 13 Bitzeiten auf
dem dominanten Wert und dann mindestens eine Bitzeit auf dem rezessiven
Wert.
3.1.2 Syncfield
Zur Synchronisation der Slaves sendet der Master nach dem Breakfield ein
0x55 Datenbyte. Die Slaves messen die Zeit, die sie benötigen um das Byte zu
empfangen und teilen sie durch 8. Für die Messung wird die fallende Flanke
verwendet, da diese steiler als die steigende ist.
3.1.3 Identifier
Das Identifierbyte lässt sich nochmals in den Frameidentifier und die Parity
aufgliedern. Um das Frame zu identifizieren werden die Bits 0 bis 5 benutzt,
was insgesamt 64 Codierungen möglich macht, welche wie folgt verteilt sind:
• 0-59: Signalübertragung
Die Bits 6 und 7 sind Paritybits und werden durch folgende Formel berechnet:
Wegen diese Paritybits spricht man auch oft vom „Protected Identifier“. [1,
S. 93]
3.1.4 Datenfeld
Das Datenfeld ist der erste Teil der durch einen Slave Task erzeugten Ant-
wort. Seine Länge ist vom Identifier abhängig, jedoch maximal 8 Bytes lang.
Jedes Byte beginnt mit dem LSB (little-endian).
3.1.5 Checksumme
Die Checksumme komplettiert jeden Frame und ist eine der wenigen Mög-
lichkeiten einen Übertragungsfehler festzustellen.
Die Kommunikation mit Slaves der Version 1.x, das „master request frame“
und das „slave response frame“, benutzen die classic Checksumme. Sie wird
über die Bytes des Datenfeldes gebildet.
Zur Kommunikation mit Slaves der Version 2.x wird die enhanced Checks-
umme verwendet. Diese bezieht den „Protected Identifier“ zusätzlich mit ein.
Im „Protected Identifier“ werden die Bits 0 bis 5 zur Identifikation des Fra-
mes benutzt und die Bits 6 und 7 dienen als Parity-Bits um eventuelle Fehler
zu erkennen. Für das „master request frame“ und das „slave response frame“
wird jedoch weiterhin die classic Checksumme verwendet.
3.2 Frametypen
Es gibt insgesamt drei Frametypen, welche im Folgenden vorgestellt werden.
Wichtig ist, dass ein LIN-Cluster nicht unbedingt alle Typen unterstützen
muss, sondern nur die für die Anwendung wichtigen.
Um Bandbreite zu sparen antworten nur die Slaves, bei denen sich ein Wert
seit der letzten Abfrage geändert hat. Ist das jedoch bei keinem der Fall,
so bleibt die Leitung nach dem Senden des Headers leer. Umgekehrt kann
es aber auch passieren, dass mehrere Slaves eine Änderung mitteilen wollen.
Damit der Master weiß, welcher Slave ihm antwortet, wird in das erste Byte
des Datenfeldes der Identifier eingetragen. Es bleiben also nur 7 Bytes zur
Datenübertragung übrig.
Wollen mehrere Slaves auf das Event Triggered Frame antworten, kommt es
zu einer Kollision auf der Leitung. In diesem Fall gibt es zwei Möglichkeiten,
wie die Kollision verlaufen kann.
1. Fall:
Allgemein ist jeder Slavetask dazu verpflichtet, das Gesendete zurückzule-
sen und bei einem Fehler das Senden des nächsten Bytes einzustellen. Der
Master bekommt diese Kollision aber nur mit, wenn alle Slaves das Senden
einstellen. Abbildung 5 soll hierzu ein Beispiel liefern.
Abbildung 7: Beide Slaves bemerken die Kollision und stoppen die Übertra-
gung [1, S. 97]
Beim Zurücklesen haben beide Slaves bemerkt, dass ein Fehler aufgetreten
ist und stellen das Senden des zweiten Datenbytes ein. Nun bemerkt auch
der Master die Kollision und wechselt von seiner normalen Time-Scheduling-
Tabelle auf eine andere. Er sendet nun einmalig jedes Unconditional Frame,
welches im Time Triggered Frame zusammengefasst wurden, und wechselt
danach wieder zu seiner gewohnten Time-Scheduling-Tabelle.
2. Fall:
Wie in Abbildung 6 beispielhaft dargestellt kann es auch passieren, dass ein
Slave, und somit auch der Master, die Kollision nicht bemerkt.
Durch die dominante Null wird das Byte von ID0 korrekt übertragen, so dass
der Master keine Möglichkeit hat, zu erkennen, dass auch ID1 einen geän-
derten Wert übermitteln wollte. ID1 muss nun auf die nächste planmäßige
Abfrage des Masters warten, um den Wert übermitteln zu können.
3.3 Fehlererkennung
Da der LIN-Bus für einfache Aktor-Sensor Anwendungen entwickelt wurde
und keine sicherheitskritischen Systeme vernetzt, gibt es nur wenige Mecha-
nismen, um Fehler zu erkennen. In den folgenden Abschnitten werden die
Wichtigsten beschrieben.
3.3.1 Bitfehler
Der Bitfehler wird vom sendenden Slave-Task selbst erkannt. Wenn beim
Rücklesen der gesendeten Daten ein Fehler festgestellt wird, muss das Senden
sofort, spätestens aber nach dem Senden des Bytes, abgebrochen werden.
3.3.2 Identifier-Parity-Fehler
Jeder Slave-Task überprüft die beiden Paritätsbits beim Empfang eines Hea-
ders. Stimmen die Bits nicht, handelt der Slave wie bei einem unbekannten
Identifier und verwirft die Nachricht.
3.5 Netzwerkmanagement
Wie in Abbildung 9 zu sehen ist, kennt LIN drei Zustände im Netzwerkma-
nagement.
4.1 Off-The-Shelf-Knoten
Um die Kosten für einen einzelnen Knoten noch weiter zu senken, wurde der
Off-The-Shelf-Knoten eingeführt. Das bedeutet, der Hersteller des Knotens
liefert alle wichtigen Daten, wie z.B. Protokollversion, Herstellercode, imple-
mentierte Frames oder Bitübertragungsrate, in einem Node Capability File
(NCF) mit aus. Anhand dieser Informationen kann der Master im normalen
Netzwerkbetrieb jeden Knoten leicht in den Cluster integrieren. Dazu konfi-
guriert er die Identifier des Knotens neu.
5 Zusammenfassung
Nach über 15 Jahren Entwicklung und Verbesserung findet man heute aus
gutem Grund in fast jedem Fahrzeug einen LIN-Bus. Durch seine weltweite
Standardisierung und leichte Konfigurierbarkeit ist er billig in der Anschaf-
fung und schnell in jeden Cluster integriert. Durch die Nutzung einer Ein-
drahtleitung werden zusätzliche Kabel im Kabelbaum eingespart, was das
Gewicht des Fahrzeugs weiter reduziert. Durch die Master-Slave Hierarchie
und die Kommunikation über Frames wird das System einfach gehalten und
gleichzeitig werden Kollisionen reduziert.
Da der LIN-Bus meist als Sub-Bus eines CAN eingesetzt wird und nur sicher-
heitsunkritische Aufgaben zugeteilt bekommt, sind Schwachstellen wie man-
gelnde Fehlererkennung und Behandlung oder eine maximale Datenübertra-
gung von gerade einmal 20 kbit/s im Vergleich zu den Vorteilen hinnehmbar.
Literatur
[1] Hans-Christian von der Wense Andreas Grzemba. LIN-Bus. Franzis,
2005.
[2] LIN Consortium. Lin specification package revision 2.2a. 2010.
[3] Sebastian Stegemann Denis Müller, Dirk Sommer. Local interconnect
network (lin), Oktober 2009.
[4] Matthias Meier. Lin bus, Oktober 2007.
[1, 2, 3, 4, 5]