Allgemeines

Zum ersten Mal kam IBus in Fahrzeugen der E31-Baureihe zum Einsatz und wurde im Groben für den MID (MultiInformationsDisplay) verwedet um Verbrauch, Aussentemperatur und weitere Werte anzuzeigen. Im E31 gab es noch nicht so viele Busteilnehmer, es sind gerade mal fünf:

ID Teilnehmer
0x01 MID
0x02 EKM
0x09 ZKE
0x0A ??
?? LKM
0xFF Broadcast


In den späteren Baureihen, wie zum Beispiel E38, E39 und E46 wurde der IBus ausgebaut, wird aber weiterhin für die Innenraumelektronik, hauptsächlich Navigation und Radio (oder auf Neudeutsch auch Infotainment genannt) verwendet.

Die Kommunikation auf dem IBus findet seriell mit folgenden Parameter statt: 9600Bps, 8 Datenbits, 1 Stopbit, gerade Parität (even). Physikalisch verwendet IBus nur eine Leitung für die Kommunikation unter den Teilnehmer. Diese Leitung ist über einen Pull-Up Widerstand (typischerweise 10k) mit Ubat verbunden. Befindet sich der IBus im Leerlauf (keine Kommunikation findet statt), so liegt auf dem IBus die Ubat-Spannung an. Zum Senden wird der IBus kurzzeitig auf die Masse gezogen, was dann dem Senden eines Bits entspricht.

Wie man aus der Tabelle unschwer erkennen kann, hat jeder Busteilnehmer eine eindeutige ID zugewiesen bekommen. Diese ID ist genau ein Byte lang. So weisst jeder Teilnehmer, wann er angesprochen wird und dass die Botschaft auch tatsächlich an ihn adressiert ist. Eine Ausnahme ist hier Broadcast. Sendet man eine Botschaft an den Broadcast, wird diese Botschaft von jedem Busteilnehmer empfangen.

Botschaftstruktur

Im Wesentlichen ist die IBus-Botschaft aus fünf Blöcken aufgebaut:

  • Quelle-ID: Woher kommt die Botschaft
  • Länge: Wie lang ist die Botschaft
  • Ziel-ID: An wen ist die Botschaft adressiert
  • Nutzdaten: Das, was man senden will
  • XOR-Checksumme: Stellt die Datenintegrität der Botschaft sicher

Der Block Länge beschreibt die Länge der Botschaft ab dem Block Ziel-ID bis XOR-Checksumme, also Ziel-ID + Nutzdaten + XOR-Checksumme. Die Botschaftlänge ist max. 36 Byte.

Transceiver

Um mit dem IBus vernünftig kommunizieren zu können, sollte man am besten einen Transceiver verwenden. Es gibt zwar eine Notlösung mit einem Transistor, aber von der halte ich persönlich nichts.

Man kann grunsätzlich alle LIN-Transceiver verwenden, muss aber die Geschwindigkeit auf 9600 Baud einstellen. Oder man verwendet einen K-Bus Transceiver. Der Vorteil der K-Bus Transceiver ist, dass sie eine hardwareseitige Kollisionserkennung haben und auch erkennen, wann der Bus sich im Leerlauf befindet und wann nicht.

Hier ist eine kurze Liste der K-Bus Transceiver:

  • Melexis TH3122, dieser wird von mir verwendet. Der Transceiver besitzt neben dem eigentlichen Transceiver mit hardwareseitigen Kollisionserkennung noch einen Spannungsregler (5V, max 100mA) noch eine Spannungsüberwachung und einen Resetcontroller.
  • Elmos E910.15, hier handelt es sich um einen K-Bus/LIN Transceiver, der Transceiver hat zwei Betriebsmodi, die man über einen extrenen Pin umschalten kann.
  • Elmos E910.05, ist ein reiner K-Bus Transceiver