Local Interconnect Network
# Local Interconnect Network

Das Local Interconnect Network (LIN), auch LIN-Bus genannt, ist ein serieller Feldbus für die Vernetzung von Sensoren und Aktoren. Typische Anwendungsbeispiele sind die Vernetzung innerhalb der Tür oder des Sitzes eines Kraftfahrzeugs.
Als Industriestandard wurde die LIN-Spezifikation bis 2010 vom LIN-Konsortium entwickelt. Sie umfasst die physikalische Schicht, das Bus-Protokoll, die Schnittstelle zur Applikation sowie ein einheitliches Format zur Beschreibung eines gesamten LIN. Der erreichte Stand 2.2A der Spezifikation wurde der ISO übertragen und als ISO-Norm 17987-1, Road vehicles - Local interconnect network (LIN) - Part 1–8 veröffentlicht.
CAN in Automation fungiert im Auftrag des Technical Management Board of ISO (TMB) seit 2017 als Registrierungsstelle für die LIN Supplier ID gemäß ISO 17987 Normenreihe.

## LIN-Topologie

Ein LIN setzt sich aus einem Commander und einem oder mehreren Responder zusammen. Üblicherweise wird die Zahl der Responder auf 16 begrenzt. Der Commander ist typischerweise ein Mikrocontroller, der als Bridge das LIN an einen CAN-Bus anbindet. Auf dem LIN bestimmt der Commander die (meist fest konfigurierte) zeitliche Reihenfolge aller Nachrichten, indem er ihren Anfang aussendet, den sogenannten Header. Dieser enthält eine Kennung, die eine Zeile in der Konfigurationstabelle adressiert. In der Tabelle ist festgelegt, welcher Teilnehmer den bis zu acht Byte umfassenden Datenteil der Nachricht senden soll, um was für Daten es sich handelt und welcher oder welche Teilnehmer die Nachricht lesen sollen. Jeder Responder muss nur den für ihn relevanten Teil der Tabelle speichern. Eine dynamische Änderung der Konfiguration im Betrieb (Plug ’n Play) ist nicht vorgesehen. Entwurfswerkzeuge für die Konfigurationstabelle stellen sicher, dass im Betrieb keine Kollisionen auftreten.

## Die LIN-Spezifikation

Die Spezifikation sieht zwei Netzknotenzustände vor: Sleep-Mode und Normal-Mode. Der Übergang zwischen den beiden Modi wird einerseits mit einem expliziten Kommando vom Commander und andererseits über ein Wake-Up-Signal-Frame durch den Commander oder einen der Responder initiiert.
Die Diagnose wird bei LIN mit Hilfe von Kommando-Botschaften durchgeführt. Um einen Responder diagnostizieren zu können, überträgt der Commander ein bestimmtes Kommando. Die Datenübertragung innerhalb einer Diagnose zwischen Commander und Responder basiert auf dem durch die ISO 15765-2 definierten Transportprotokoll.
LIN arbeitet mit einer Signalleitung, die die Netzknoten Wired-AND-verknüpft, realisiert durch Open-Collector-Ausgänge und Pull-Up-Widerstände an der Bordnetzspannung. Der hohe Pegel (logisch 1) stellt den rezessiven Zustand sowie den Ruhezustand dar und ca. 0 V (logisch 0) den dominanten Zustand. Die Flankensteilheit ist auf etwa 2 V/μs begrenzt zugunsten akzeptabler Störausstrahlung. Entsprechend ist die Baudrate auf maximal 20 kBd begrenzt, üblich sind 2400, 9600, 10417 und 19.200 Baud. Die Bus-Transceiver werden über einen – im LIN-Kontext meist SCI (Serial Communication Interface) genannte – UART angesteuert.

## Fehlerbehandlung

In Kapitel 6 der Spezifikation ist die Fehlerbehandlung vorgeschrieben:
* Jeder Sender muss bitweise zurücklesen, was er sendet, und im Fehlerfall die Sendung abbrechen. Wenn der Commander erkennt, dass er nicht senden kann, muss er seiner Anwendungsschicht einen Physical-Bus-Error melden.
* Eine Prüfsumme sichert die Daten gegen Übertragungsfehler.
* Das Header-Byte kodiert mit sechs Bit die maximal 64 Botschaften und enthält zwei Paritätsbit, sodass alle Einzel- und viele Doppel-Bitfehler im Header erkannt werden.
* Für ausbleibende Antworten muss beim Commander ein No-Response-Error detektiert werden.
* Responder müssen darauf achten, dass die Flanken im Synchronisierungsfeld innerhalb der definierten Toleranz liegen.
Als fehlerhaft erkannte Botschaften werden verworfen. Fehlerereignisse werden lokal registriert. Eine Fehlersignalisierung ist nicht Teil des Protokolls, sondern muss bei Bedarf in der Anwendungsschicht definiert werden.