# KWP1281

KWP1281, eine Abkürzung für Key-Word-Protokoll 1281, ist ein ausschließlich bei der Volkswagen AG verbreitetes veraltetes Kommunikationsprotokoll für Automobilelektronik, das in der SAE J2818 nachträglich im Januar 2008 definiert wurde. Es ist ausschließlich zur herstellerspezifischen Diagnose von Steuergeräten in Fahrzeugdiagnosesystem gedacht.
Trotz der Normierung in der SAE J2818 handelt es sich bei KWP1281 um ein proprietäres Protokoll. Die Norm legt zwar die Schichten 1 und 2 des OSI-Modells fest, ohne Kenntnisse der weiteren Schichten ist aber keine Diagnoseverbindung zum Fahrzeug möglich. Die Schichten 3 bis 7 werden von der Volkswagen AG nicht veröffentlicht, die alleiniger Nutzer von KWP1281 ist. Dadurch wird ein freier Wettbewerb bei der Entwicklung von Fahrzeugdiagnosesystemen verhindert und der Kunde mit seinem Fahrzeug wird an das Werkstattnetz des Herstellers gebunden, wodurch freie Werkstätten behindert werden. Mit der Gruppenfreistellungsverordnung sollte diese Beschränkung abgebaut werden (siehe Weitere Einflüsse der Gesetzgebung auf die Fahrzeugdiagnose), weshalb auch die SAE J2818 definiert wurde, um dem zu genügen. Inzwischen gibt es verschiedene alternative Diagnoselösungen, die KWP1281 beherrschen und frei verfügbar sind. Die Kenntnisse über die höheren OSI-Schichten wurden dabei in der Regel mittels Reverse Engineering gewonnen. Anbieter wie die Robert Bosch GmbH profitieren davon, dass sie eng mit Volkswagen zusammenarbeiten und seit je her an der Entwicklung der Motorsteuergeräte etc. mitwirken und so interne Kenntnisse über die Protokolle besitzen.
SAE J2818 definiert lediglich die bidirektionale Kommunikation über die K-Leitung. Die teilweise notwendige Initialisierung über die unidirektionale L-Leitung oder die missbräuchliche Nutzung der L-Leitung als bidirektionale Verbindung wird nicht definiert, obwohl beides gängige Praxis bei der Diagnose bei Volkswagen ist.
Initialisiert wird eine Diagnoseverbindung vom Diagnosetester zum Fahrzeug durch ein 10-Bit-Datenwort, welches mit einer Übertragungsrate von 5 Baud (entspricht 200 ms pro Bit) gesendet wird. Teil dieses Reizsignals ist die Adresse des Steuergerätes, mit welchem die folgende Kommunikation stattfinden soll. Die Adresse wird im Datenformat 7O1 (7 Nutzdatenbytes, ungerade Parität, 1 Stoppbit) gesendet. Vor der Reizphase muss die K-Leitung analog zu Parameter W5 aus ISO 14230-2 für mindestens 300 ms auf logisch 1 gewesen sein.
| Daten | Funktion |
| 1 Startbit | logisch 0, Kennzeichnung der Reizphase |
| 7 Datenbits | Adresse des Steuergerätes |
| 1 Paritätsbit | ungerade Parität (englisch: odd) |
| 1 Stoppbit | logisch 1 |
Die Adressen für die Steuergeräte sind nicht normiert. Einige Adressen sind:
| Adresse | Steuergerät |
| 1 | Motor (Engine Control Unit) |
| 2 | Automatikgetriebe |
| 3 | Antiblockiersystem |
Zur Synchronisation und zur Signalisierung, dass das adressierte Steuergerät existiert und sich angesprochen fühlt, sendet das Steuergerät eine Antwort. Es handelt sich dabei um 10 alternierende Bits, beginnend mit einer logischen 0. Betrachtet man diese Bitfolge im 8N1 Datenformat (1 Startbit, 8 Nutzdatenbytes, keine Parität, 1 Stoppbit), ergibt sich für das Nutzdatenbyte der hexadezimale Wert 55$_{hex}$.
Das Synchronisationsmuster dient dazu, es dem Tester zu ermöglichen, die Baudrate für die weitere Kommunikation zu ermitteln, die das Steuergerät vorgibt, in dem er die Zeitspanne für ein Bit oder das ganze Synchronisationsmuster misst und dann daraus eine Baudrate berechnet:
    $Baudrate={\frac {1}{\text{Zeit pro Bit}}}$
SAE J2818 gibt an, dass Steuergeräte, die keinen abgasrelevanten Bezug haben, eine von 10.400 Bd. abweichende Baudrate nutzen sollten. Die Praxis zeigt, dass dies nicht eingehalten wird. Baudraten von 1.200, 2.400, 4.800, 9.600 und 10.400 Bd. sind für alle Arten von Steuergeräten anzutreffen.
Nach dem Synchronisationsmuster sendet das Steuergerät zwei weitere Keybytes (7O1), welche dem Tester das verwendete Protokoll mitteilen. Das zweite Keybyte wird vom Tester als Empfangsquittung invertiert zurückgesendet. Damit ist die Initialisierungsphase abgeschlossen. Die weitere Kommunikation findet nun im 8N1-Datenformat statt. Das Steuergerät wartet dabei auf das erste Byte vom Tester. Die Kommunikation ist byteweise aufgebaut: Jedes gesendete Byte (bis auf das letzte Byte einer jeden Botschaft) wird vom Empfänger als Komplement zu FF$_{hex}$ bestätigt. Eine Botschaft weist in der Regel folgenden Aufbau auf:
| Typ | Beschreibung |
| Länge | Anzahl der folgenden Bytes |
| Zähler | Fortlaufender Zähler 00$_{hex}$ bis FF$_{hex}$ |
| Titel | Botschaftstype |
| n Nutzdaten | Daten |
| Ende | 03$_{hex}$ |
Die Kommunikation kann entweder durch eine Botschaft mit dem Titel Kommunikationsende vom Tester beendet werden oder wird automatisch nach Ablauf von 1100 ms beendet, da dies die maximal erlaubte Zeit zwischen dem Ende einer Nachricht und dem Beginn der nächsten ist.