<< Click to Display Table of Contents >> Navigation: Protokolle > LIN-Bus Grundlagen > Botschaftsaufbau |
Eine Botschaft auf dem LIN-Bus wird grundsätzlich von allen Bus-Teilnehmern empfangen. Ob die empfangene Botschaft für den einzelnen Empfänger relevant ist, wird anhand der Botschafts-ID entschieden. Eine weitere Adressierung, um gezielt einzelne Knoten anzusprechen, gibt es nicht.
Das Senden einer Botschaft wird immer durch den Master initiiert. Jeder LIN-ID darf maximal ein Slave zugeordnet sein, der auf diese Botschafts-ID antwortet. Deutlich wird dies, wenn man den Aufbau einer LIN-Botschaft betrachtet. Die Ausnahme bildet der „Event-Triggered-Frame“, auf den auch mehrere Slaves antworten können. Diese Sonderform der Botschaft wurde mit dem neusten LIN-Standard eingeführt.
Die Botschaften sind in zwei Teile untergliedert, dem Botschaftskopf (Header) und den Daten mit Checksumme. Der Header enthält unter anderem die Botschafts-ID. Dieser Teil einer Botschaft wird immer vom Master auf den Bus geschrieben. Alle Slaves lesen den Header ein und entscheiden darauf hin, ob sie Daten liefern müssen. Der entsprechende Slave schreibt diese dann direkt nach dem Header auf den Bus. Alle anderen Busteilnehmer verhalten sich passiv und antworten auf die empfangene Botschafts-ID nicht. Der Empfang der Botschaft erfolgt hingegen von allen Teilnehmern die am Bus angeschlossen sind, so dass eine „Slave-zu-Slave“-Kommunikation möglich ist, die aber vom Master initiiert wird.
Im Bild wird der blau markierte Teil der Botschaft vom LIN-Master gesendet, der gelbe Teil wird jeweils von einem LIN-Slave hinzugefügt.
Botschaftsteile:
•Synch Break: Zeichen für die Slaves das nun eine Übertragung folgt (Länge hängt vom LIN-Standard ab)
•Synch Feld: Synchronisationsbyte an dem die Slaves ihre eigene Geschwindigkeit anpassen. (1Byte)
•Identifier: Botschafts-ID (1Byte)
•Daten Felder: Zu übertragende Daten (0-8Byte).
•Checksumme: Checksumme zum Aufspüren von Übertragungsfehlern (1Byte)
Folgende Botschaftsarten werden unterschieden:
•Unconditional-Frame
Standard-Botschaft auf dem LIN-Bus, zum Transport von Signalen.
•Sporadic-Frame
Sonderform des „Unconditional-Frame“, wird nicht zyklisch übertragen sondern nur bei Wertänderung.
•Event-Triggered-Frame
Botschaft mit Sonderstatus, die eine Antwort mehrerer Slaves auf die gleiche Botschafts-ID zulässt. Ein Slave dem eine Botschaft diesen Typs zugeordnet ist antwortet nur, wenn sich seine Daten geändert haben. Im optimalen Fall antwortet immer nur ein Slave auf diese Botschafts-ID. Antworten mehrere Slaves, kommt es zu Kollisionen auf dem Bus. Der LIN-Master erkennt dies und fragt dann mit gesonderten Botschaften die Slaves einzeln ab.
•Diagnostic-Frame
Botschaft mit Botschafts-ID 0x3C oder 0x3D, wird genutzt zur Übertragung des LIN-Transport-Protokolls. Über diese Botschafts-IDs dürfen keine beliebigen Daten übertragen werden.
•Reserved-Frame
Botschafts-IDs die nicht genutzt werden sollen (0x3E und 0x3F).
Identifier
Die Basis für die Kommunikation auf dem LIN-Bus bilden die Identifier der einzelnen Botschaften. Die Teilnehmer bzw. Steuergeräte, die am Bus angeschlossen sind, werden nicht direkt adressiert. Stattdessen erhält jeder Busteilnehmer alle Botschaften, die auf dem Bus verkehren. Anhand der Botschafts-ID wird dann entschieden, ob die Botschaft verarbeitet wird. Zu jedem Identifier kann es mehrere Empfänger geben, aber normalerweise immer nur einen Sender. Die Ausnahme ist der „Event-Triggered-Frame“: Auf diese Botschaften können mehrere Slaves antworten.
Der Botschafts-Identifier besitzt eine Länge von sechs Bit und kann somit die Werte von 0x00 bis 0x3F annehmen. Das ermöglicht maximal 64 Botschaften auf dem Bus.
Daten
Ein LIN-Botschaft kann maximal acht Byte an Daten transportieren. Die Bytes können beliebig genutzt werden. Ausnahmen bildet hier der Einsatz als „Event-Triggered-Frame“ oder „Diagnostic-Frame“. Bei einem „Event-Triggered-Frame“ gilt das erste Byte der Daten als Multiplexerwert, um den Slave zu identifizieren, der die Daten auf den Bus geschrieben hat. Die „Diagnostic-Frames“ gehören zu einem Transport-Protokoll, dass in der LIN-Spezifikation näher erläutert ist.
Jeder Botschaft ist eine Checksumme angehängt. Die Checksumme ist ein Byte lang und unterscheidet sich von LIN-Version 1.3 zu LIN-Version 2.1:
•LIN V1.3 (Classic Checksum): Die Checksumme wird nur über die Daten-Bytes gebildet.
•LIN V2.1 (Enhanced Checksum): Die Checksumme wird über die Daten und das PID-Feld gebildet.
Bei dem Betrieb eines LIN V2.1 Busses können deshalb einzelne Botschaften auch als LIN V1.3 Botschaft übertragen werden, um so kompatibel mit alten Steuergeräten zu bleiben.
Die Botschafts-IDs 60 (0x3C) und 61 (0x3D) sind festgelegt auf die klassische Checksumme nach LIN 1.3.