Sie sind auf Seite 1von 6

W-Bus Protokoll Beschreibung

Dies sind alles nur Vermutungen, und auf keinen Fall umbedingt richtig.

W-Bus ist elektrisch identisch mit OBDII üblichen interfaces. Es arbeitet


mit 2400 Baud im 8E1 format (even parity).

Anschlüsse:
8-poliger Stecker
Pin 1: Schaltsignal EIN SH
Pin 2: W-Bus (in Verbindung mit der ovalen Webasto-Uhr)
Pin 3: Zuheizen (Verbindung über Thermoschalter zur Masse)
Pin 4: CAN low
Pin 5: Dosierpumpe
Pin 6: Solenoid Valve, Kühlerwasserkreis umschaltung. (Sommer /
Winterschalter)
Pin 7: CAN high
Pin 8: Gebläseansteuerung

2-poliger Stecker
Pin 1: Batterie Plus
Pin 2: Masse

3-poliger Stecker
Pin 1: nix
Pin 2: Umwälzpumpe plus
Pin 3: Umwälzpumpe masse

Angegebene nummern von den sende (Tx) und Empfang (Rx) Sequenzen sind in
hexadezimal.

Zu beachten: Da die Sende und Empfang Leitungen gekoppelt sind, empfängt man
immer das selbst gesendete.

Initialisierung:
BREAK setzen für 50ms
BREAK resetten und 50ms warten
Dann kommt folgende transaktion:
TX f4 03 51 0a ac ;Read Info (51) _ getBus Version (0a)
RX 4f 04 d1 0a 33 a3 ;Version ist 3.3
TX f4 03 51 0b ad ;Read Info (51) _ getDeviceName (0b)
RX 4f 0b d1 0b 50 51 33 35 20 53 48 20 82 ;Name = "PQ35 RH "
TX f4 03 51 0c aa ;Read Info (51) _ getWBusCode (0c)
RX 4f 0a d1 0c 71 7c c4 e7 3f 80 00 09
TX f4 02 38 ce ;CMD?? (38)
RX 4f 09 b8 0b 00 00 00 00 03 dd 2b

Ob es nötig ist diese Transaktion immer zu machen ist noch nicht klar.
Warscheinlich nicht.

Ob dann ständig die Heizung befragt werden muss, oder ob nach


einer bestimmten Sendepause nochmal die BREAK sequenz gemacht werden
muss ist auch noch unklar. Mit der break sequenz ist das Heizgerät aber
generell ereichbar.

Das W-Bus Protokoll ist Paket basiert. Es werden immer komplette Pakete
gesendet. Die Grund Struktur ist folgende:

SYNC LÄNGE Kategorie Daten Checksum


SYNC:
Ist 0xf4 im falle wenn der client sendet und 0x4f im falle wenn die Heizung
sendet. Dieses byte besteht aus 2 Nibble (4 bit). Das erste Nibble ist die
Adresse oder ID vom Sender des paket, und das zweite ist die Adresse oder ID
vom Empfänger. Deshalb sind die Nibble bei einer Antwort umgedreht.
Das Webasto Data Top Programm verwendet die Adresse f (15) und die Webasto
Thermo Top V die Adresse 4. Die Vorwahluhr 1533 benutzt die Adresse 3.

LÄNGE:
Beträgt ein byte, und ist die Anzahl von bytes von dem gesendeten Paket wenn
man SYNC (ein byte) und die Checksum (auch ein byte) weglässt.

Kategorie:
Beträgt 1 byte. Dieses byte sagt um was es get. Bit 7 ist null wenn
der client sendet, und 1 wenn die Heizung sendet. Die bits 6-0 besagen die
familie der Angelegenheit oder Komando.

Daten:
Beliebig viele bytes. Es kommt auf die Kategorie an ob Daten im Paket
enthalten sind oder nicht. Sowohl der client als auch die Heizung kann Daten
schicken.

Checksum:
Wird aus der XOR verknüpfung aller bytes erzeugt.

Beispiel:

Client sendet:
0xf4 0x03 0x50 0x0f 0xa8

0xf4: Adressen header


0x03: 3 bytes folgen inklusive Checksum
0x50: Bit 7 ist null, ich bin ein client. Kategorie 0x50 (sensor)
0x0f: Index 0x0f, also sensor 15 lesen.
0xa8: Checksum (=0xf4 xor 0x03 xor 0x50 xor 0x0f)

Die Heizung antwortet:


0x4f 0x08 0xd0 0x0f 0x00 0x00 0x00 0x00 0x00 0x98

0x4f: Adressen header


0x08: 8 bytes folgen, inklusive Checksum
0xd0: Bit 7 ist 1, ich bin die Heizung.
Kategorie 0x50 bestätigt (= 0xd0 & 0x7f)
0x0f: Index 0x0f bestätigt.
0x00 0x00 0x00 0x00 0x00: Die geforderten Daten
0x98: Checksum (=0x4f xor 0x08 xor 0xd0 xor 0x0f xor 0x00 xor ...0x00)

Kategorien:
(Bit 7 ist 0 wenn der client sendet, 1 wenn die Heizung Antwortet)

Das sind natürlich bis jetzt alles Vermutungen:

Kategorie 0x10
Hat keine daten. Alles abschalten. Danach ist sensor 0x50 0x03
von 0x03 0x03 auf 0x03 0x01 zurück gekehrt. Später dann auf 0x03 0x00.

Kategorie 0x21
Ein byte daten (Laufzeit in Minuten). Standheizung einschalten:
TX f4 03 21 3b ed
RX 4f 03 a1 3b d6

Kategorie 0x22
Ein byte daten (Laufzeit in Minuten). Lüftung einschalten:
TX f4 03 21 3b ed
RX 4f 03 a1 3b d6

Kategorie 0x23
Ein byte daten (Laufzeit in Minuten). Zuheizen einschalten:
TX f4 03 21 3b ed
RX 4f 03 a1 3b d6

Kategorie 0x38
Wird kurz nach Anfang der Diagnose einmal betätigt. Dann nie wieder. Das
h�chste bit von b8 ist auf "1" in der Antwort, das bedeutet NACK (nicht
akzeptiert).
TX f4 02 38 ce
RX 4f 09 b8 0b 00 00 00 00 03 dd 2b

Kategorie 0x44
Wurde nach einem Startversuch gesehen.
Annahme: Diese Kategorie dient dazu die Beständigkeit eines anderen
komandos zu prüfen. In diesem Fall komando 0x21, welcher heizen ist.
TX f4 04 44 21 00 95
RX 4f 03 c4 00 88 42
Ein NACK bedeutet wohl das der entsprechende komando nicht mehr am laufen
ist.

Kategorie 0x45
Komponenten test.
Format der daten:
1 byte Agregat
1: Combustion Fan
2: Fuel Pump
3: Glow Plug
4: Circulation Pump
5: Vehicle Fan Relays
6-8: Not used by TT-V
9: Solenoid Valve
10-14: Not used by TT-V
15: Fuel Prewarming
16: Not used by TT-V

1 byte: Einschaltzeit in Sekunden


2 bytes: Wert
Prozent: 2. byte ist 0.5 Prozent pro bit (2 ~> 1%).
Hertz: 2. byte 1/20 Hertz pro bit (20 ~> 1 Hertz).

Kategorie 0x50
Sensoren, bzw Status abfragen. Hat ein byte daten (index)
Index 03: Vermutung: bitmaske die den Betriebs Sustand anzeigt, bzw, sieht
es so aus das manche bits anziegen ob bestimmte agregate ans sind oder
nicht.
Daten:
1 byte: Index von was gemessen werden soll. Folgende bytes bei der Antwort
sind die Daten.
0x03: Vermutung: Status was an ist und wer weiss was noch.
1 byte: Bitmaske was eingeschaltet ist (engeschaltet ist bit auf 1):
bit 0 Gebläse
bit 1 Glühkerze
bit 3 Circulation Pump
bit 4 Vehicle Fan Relay

0x05: Betriebsspannung unter anderen Sachen:


1 byte: Vermutung: Temperatur mit 50 Grad offset (20 Grad ist wert=70)
2 bytes: Spannung in mili Volt.
4 bytes: kein Ahnung
1 byte: Vermutung: GK Wiederstand in mili Ohm.

0x06: bytes:
0,1: Working hours
2: Working minutes
3,4: Operating hours
5: Operating minutes

0x0a: burning duration, PH, SH, at powerlevels 0.33,34..66,67..100,>100 each

0x0b: Working duration PH (park heating) and SH (supplemental heating)

0x0c: Start counters PH, SH, and unknown.

0x12: Ventilation duration (2bytes hours big endian and one byte
minutes, just like all other time values)

0x13: Vermutung: Kraftstoff Vorwärmung.


2 bytes: Temperatur ? Steigt bei eingeschalteter Kraftstoffvorwärmung.
2 bytes: Normal: 00 00. Bei eingeschalteter KV 00 08

15: Subsystem oder test status


test 2:
20 Sekunden 2 Hertz: 002800000000
20 Sekunden 4-5 Hertz 005000000000

Kategorie 0x51
Information abfragen, wie Heizungs "Device Name", W-BUS ID, usw.
Index 0x01: Device ID Number
Index 0x02: Hardware version (KW/Jahr), Software version, Software version EEPROM
Index 0x03: Data Set ID Number
Index 0x04: Control Unit Herstellungsdatum (Tag monat jahr je ein byte)
Index 0x05: Heizer Herstellungsdatum (Tag monat jahr je ein byte)
Index 0x06: 1 byte, keine Ahnung
Index 0x07: Customer ID Number (Die VW Teilenummer als string und noch ein paar
nummern drann)
Index 0x09: Serial Number

Index 0x0a: W-BUS version. Antwort ergibt ein byte. Jedes nibble dieses
byte entspricht einer Zahl (Zahl1.Zahl2)

Index 0x0b: Device Name: Als character string zu interpretieren.


Index 0x0c: W-BUS code. Keine Ahnung was der soll, ist halt ne Nummer :)

Index 0x0d: Keine Ahnung

Kategorie 0x53:
Fragt daten ab. Dies geschieht nicht regelmäsig. Deshalb vermutlich keine
Sensoren.
TXf4 03 53 02 a6
RX4f 11 d3 02 2c 24 25 1c 30 d4 fa 40 74 00 00 63 9c 05 6e
bytes:
0: k.A.
1,2: Minimum Voltage threshold
3,4,5,6: k.A.
7: Minimum voltage detection delay (delay)
8,9: Maximum voltage threshold
10,11,12,13: k.A.
14: Max voltage detection delay (seconds)

Kategorie 0x56
Fehler Code behandlung
Erstes daten byte als Index bezeichnet jeweils:

Index 01: Fehler code list lesen. Keine Daten. Als antwort kommt eine
liste von Fehler codes. Format der Liste:
byte: Anzahl der Fehlercodes. So oft gibt es die nächsten beiden bytes:
byte: Fehler code
byte: Vermutung: Wie oft der Fehlercode gemeldet wurde minus 1.
...

TX f4 03 56 01 a0
RX 4f 0a d6 01 03 98 00 88 00 90 00 11

Fehler codes:
0x88: Fuel Pump Failure
0x8b: Circulation Pump Interruption (nicht angeschlossen)
0x90: Solenoid Valve Interruption (was für ein Ventil ist des blos?)
0x98: Gibts immer wenn die Stromversorgung weg war. Keine Beschreibung.

Index 02: Fehler code details lesen. 1 Byte daten, und entspricht dem
Fehler code.
Format:
5 bytes: Da ist status, counter, temperatur, usw drinn
Vermutung:
1 byte status
1 byte counter
2 bytes operating state wie abfrage 0x50 0x08 oder 0x09 ?
1 byte Temperatur in Celcius offset 50 grad (70 -> 20 Grad)
2 bytes: Betriebsspannung in milivolt.
2 bytes: Betriebs Zeit Stunde
1 byte: Betriebszeit Minute

TX f4 04 56 02 98 3c
RX 4f 0e d6 02 98 03 06 04 00 46 35 66 03 97 37 ba

Error code count: 1


Error code 98, counter: 1
State: 3
Counter: 6
Unkown values 4 0
Temperatur 20 C
Power supply tension: 0.870000
Operating time: 14231:234

Hier war State Not actual, not stored


Counter 1
Temperatur 20 Grad Celcius
Operating State Off
TX f4 04 56 02 98 3c
RX 4f 0e d6 02 98 00 01 04 00 46 35 66 03 97 1b 92
TX f4 04 56 02 88 2c
RX 4f 0e d6 02 88 00 01 04 00 46 35 7a 03 97 1d 98
TX f4 04 56 02 90 34
RX 4f 0e d6 02 90 00 01 04 00 46 35 66 03 97 1d 9c

Index 03: Fehler codes löschen. Keine Daten.

Kategorie 0x57:
Fragt auch irgendwas ab. Vermutung:
TX f4 03 57 01 a1
RX 4f 06 d7 01 97 64 ff 93
bytes:
0: Fuel type
1: Circulation pump in iddle period
2: Max heating duration

Das könnte Ihnen auch gefallen