Datagramm-Übertragung
Aufbau
Ein gültiges Datagramm (Frame) besteht aus einem Adress-Byte (ADDR
) in welchem Absender- und Empfängeradresse kodiert sind. Dem folgt ein Datenlängen-Byte (LEN
) welches die Anzahl der ihm nachfolgenden Bytes angibt. Diesem folgt ein Kommando-Byte (CMD
) mit dem der auszuführende Befehl übertragen wird. Je nach Kommando können nun keine oder mehrere Datenbytes (DATA
) folgend. Zuletzt kommt noch das Prüfsummen-Byte (CHK).
Der Datagramm-Aufbau ist wie folgt:
ADR
enthält in den oberen 4 Bits (Bit 7-4) die Absenderadresse und in den unteren 4 Bits (Bit 3-0) die Empfängeradresse.LEN
enthält die Anzahl der auf es folgenden Datenbytes. Beim W-Bus Frame muss wenigstens ein Kommando-Byte folgen und am Ende noch das Prüfsummen-Byte. Daher hat LEN also mindestens den Wert 2.CMD
enthält das Kommando-Byte klassifiziert die Verwendung der ihm möglicherweise folgenden Datenbytes. Bit 7 des CMD-Bytes signalisiert dabei ob es sich um eine Anfrage (Challenge) oder eine Antwort auf eine solche (Response) handelt. Dadurch ergibt sich eine theoretische Anzahl von 127 Kommandos.DATA
enthält, sofern vorhanden, die für das Kommando CMD passenden Informationen. Diese können bei Anfrage- und Antwortpaketen unterschiedlich lang sein, theoretisch bis zu 254 Bytes. In der Praxis ist aber kein Paket länger als 32 Bytes.CHK
ist die Prüfsumme und ein XOR aller Bytes im Frame (ADDR, LEN, CMD, DATA) mit Ausnahme des Prüfsummenbytes selbst.
Länge
Das kleinstmögliche Frame besteht aus 4 Bytes (LEN = 0x02):
ADDR 0x02 CMD CHK
Das größtmögliche Frame ergibt sich aus dem Wert des LEN-Byte, welches maximal 0xFF sein kann, also 255 Bytes. Dem hinzurechnen muss man das ADDR und LEN-Byte selbst. Somit kommt man auf maximal 257 Bytes pro Frame.