artikel:w-bus:bituebertragung

Bit-Übertragung

Die Bitübertragungsschicht (OSI-Layer 1) definiert die elektrische, mechanische und funktionale Schnittstelle zum Übertragungsmedium.

Der hohe Pegel (logisch „1“) stellt mit ca. Batteriespannung den rezessiven, sowie den Ruhezustand dar. Der niedrige Pegel (logisch „0“) mit ca. 0 V den dominanten Zustand (Signal wird vom Bustreiber nach Masse gezogen).

Die Flankensteilheit ist auf etwa 2 V/µs begrenzt, zugunsten akzeptabler Störausstrahlung.

Diese ist für den W-Bus fest auf 2.400 Baud eingestellt.

Für jedes Datenwort (1 Byte) werden immer 8 Datenbits, wobei das niederwertigste Bit (LSB) zuerst gesendet wird, 1 Stoppbit und 1 Paritätsbit mit gerader Parität übertragen:

Hieraus ergibt sich eine maximale Byteübertragungsrate von 218 Byte/s, berechnet nach folgender Formel:

1 Startbit + 8 Datenbits + 1 Parity-Bit + 1 Stopp-Bit = 11 Bits pro Byte
2400 Baud / 11 Bit = 218 Byte/s

:!: Die Timings sind äußerst wichtig für eine gelungene Kommunikation. Der Standard, dem W-Bus entspringt, lautet ISO 9141. Dort sind klare Vorgaben wie sich Sender/Empfänger verhalten müssen um eine saubere und möglichst störungsfreie Kommunikation hin zu bekommen. Jegliche Abweichung von diesen Timings durch die Soft- oder Hardware führt u.U. zum Fehlverhalten.

Um die Busteilnehmer für den Empfang von Daten vorzubereiten und ggf. aus einem Stromsparmodus zu erwecken wird spezielles Signal, das BREAK gesendet. Dieses besteht aus einem 25 ms langen dominanten Pegel (LOW), gefolgt von einem 25 ms langen rezessiven Pegel (HIGH). Während dieser Zeit müssen sich alle Busteilnehmer empfangsbereit schalten.

Nach einer gewissen Zeit der Inaktivität (genaues ist bislang nicht bekannt) auf dem Bus legen sich die Teilnehmer wieder „schlafen“. Hieraus können sie wiederum nur mit dem BREAK geweckt werden. Man könnte diesen Bus-Sleep auch mit ständigen Statusabfragen zur Heizung verhindern, so alle 4 Sekunden sollte genügen.

Ein Datenbit hat bei 2.400 Baud eine Dauer von 0,415 ms (Kehrwert von 2400).

Zur Übertragung eines Bytes werden 11 Bits benötigt. Das ergibt eine Brutto-Bytelänge von 11 * 0,415 ms = 4,571 ms.

Die ISO-Norm für das „Inter byte timing“ gibt vor, das die Bytes innerhalb einer Nachricht unmittelbar hintereinander folgen müssen. Der zeitliche Abstand zwischen den Bytes ist auf einen Bereich von 0 - 20 ms definiert.

Oberhalb dieses Maximalwertes wird ein Empfänger die Bytes nicht mehr der aktuellen Nachricht zuordnen wodurch u.U. die Übertragung verstümmelt ist.

Der Zeitabstand zwischen einer Anfrage und der Antwort muss sich im Zeitrahmen von 25 - 50 ms bewegen.

Gelingt es dem Empfänger nicht innerhalb von 50 ms mit dem senden der Antwort zu beginnen, muss der Sender davon ausgehen keine Antwort mehr zu erhalten und einen Timeout auslösen.

Im Gegenzug darf die Antwort aber auch nicht unmittelbar auf die Anfrage folgen. Es müssen mind. 25 ms Leerlauf dazwischen eingehalten werden. Diese Pause ermöglicht es anderen Busteilnehmern ebenfalls zu kommunizieren und verhinden das zwei Teilnehmer durch permanente Frage/Antwort-Pakete den Bus „verstopfen“.

Zwischen zwei Abfragen (z.B. aufgrund mehrfacher Abfragen an verschiedene Empfänger, oder eines Timeouts bei ausbleiben einer Antwort) muss per Definition eine Pause von mind. 55 ms liegen. Diese Pause darf bis zu 5000 ms ausgedehnt werden, bevor ein Empfänger davon ausgehen kann, das keine weiteren Anfragen mehr erfolgen. In einem solchen Fall kann ein Busteilnehmer in den Stromsparmodus übergehen, aus dem er nur mit einem BREAK geweckt werden kann.

Da der W-Bus auf einem LIN-Bus basiert, kommen praktisch alle LIN-Bausteine in Frage. Da diese zum einen recht günstig zubeschaffen sind und zum anderen stabil genug für den Einsatz in einem rauhen KFZ-Bordnetz sind, ist deren Verwendung einem Aufbau mit diskreter Schaltungstechnik vorzuziehen. Wer mit dieser Thematik noch nie in Berührung gekommen ist, sollte sich diesen Artikel durchlesen.

LIN arbeitet mit einer Signalleitung. Alle Busteilnehmer (Netzknoten) sind „Wired-AND“ verknüpft. Realisiert wird dies durch Open-Collector-Ausgänge und einem 510 Ohm Pull-Up-Widerstand nach 12 V (Bordnetzspannung).

Erfolgreich getestet, vor allem in Verbindung mit Mikrocontroller-Steuerungen, wurden bislang folgende Trieber-ICs:

Es empfiehlt sich immer ein Blick ins jeweilige Datenblatt, um die RX/TX-Signale der Treiber mit dem Buspegel des eingesetzten uControllers oder Interfacebausteins abzugleichen.

  • artikel/w-bus/bituebertragung.txt
  • Zuletzt geändert: Mon. 17.02.2020 20:06
  • von 54.211.206.190