K-Line Interface für Digifant I / später KW1281 ECUs

Whats currently going on / was gerade passiert
User avatar
bofh
Posts: 622
Joined: Tue 1. Jun 2010, 19:01
Location: Saarland
Contact:

K-Line Interface für Digifant I / später KW1281 ECUs

Post by bofh » Thu 16. Jun 2011, 20:44

Die Digifant I hat von Haus aus nur einen Fehlerspeicher, der sich ausblinken lässt. Ein vollständiges Diagnose-Protokoll wie es z.B. die VR6 Motronik kennt (KW1281) wurde für die Digifant damals noch nicht implementiert. Das interessante an KW1281 ist die Möglichkeit, Meßwerte aus dem Steuergerät auslesen zu können. Ich hab mir schon immer solch eine Funktionalität auch für die gute alte Digifant gewünscht...

Die Hardware der Digifant hat alles an Bord was man für ein serielles Diagnose-Protokoll benötigt.
Der SCI-Port (Serial Communications Interface) der Motorola 68HC11 MCU ist mit dem Diagnose-Pin 20 der Digifant verbunden.
Es fehlt einzig und allein die Implementierung in der Firmware!

Den originalen Ausblink-Code habe ich entfernt und anstatt dessen mit eigenem Code ein effizientes serielles Protokoll implementiert das mir periodisch beliebige Daten ausgibt.

Zur Zeit läuft das ganze noch in der Entwicklungs-Umgebung am HiL-Simulator auf meinem Schreibtisch (damit kann ich dem Steuergeräte einen laufenden Motor simulieren). Pin 20 ist über einem K-Line nach TTL Interface an einem Seeeduino Mega mit der aktuellen Entwicklungs-Firmware angeschlossen.

Hier z.B. die Ausgabe von 17 Werten mit einer Frequenz von 2Hz:
Image
:beer:

Stephan hat übrigens den K-Line / TTL Konverter ins Design des nächsten MD01 integriert. :up:
Mit der passenden Software wird man dann auch per KW1281 Informationen auslesen können (allerdings nicht so schnell bzw so viele wie ich sie hier aus der Digifant ausgebe).

passuff
Posts: 97
Joined: Wed 2. Feb 2011, 11:11

Re: K-Line Interface für Digifant I / später KW1281 ECUs

Post by passuff » Fri 17. Jun 2011, 10:44

Sau genial!!! Wird der Code für die Digifant open source oder eher gewerblich?

Meinste das(für KWP1281) ist nicht einfacher über das wbh diag Modul was ich schonmals verlinkt habe? Mit einem einfachen Pegelwandler müsste man das komplette Protokoll integrieren, was ja eigentlich nicht nötig ist..
Das Wbh Diag arbeitet mit AT Befehlen (Ich habs hier liegen wenn du dirs mal ansehen willst) und ist kinderleicht zu bedienen...
Auch ist das UI vom Wbh diag open source....

User avatar
bofh
Posts: 622
Joined: Tue 1. Jun 2010, 19:01
Location: Saarland
Contact:

Re: K-Line Interface für Digifant I / später KW1281 ECUs

Post by bofh » Wed 29. Jun 2011, 14:34

Die Performance-Tests haben mich sehr positiv überrascht: ich kann 20 Werte mit bis zu 100 Hz aus der Digifant ausgeben. :shock: 8-)
Am Motorlauf ist absolut keine Änderung zu merken. :)

Hast ein paar Beispiele für AT Befehle vom WBH Diag um Messwertblöcke auszulesen?

passuff
Posts: 97
Joined: Wed 2. Feb 2011, 11:11

Re: K-Line Interface für Digifant I / später KW1281 ECUs

Post by passuff » Thu 30. Jun 2011, 13:19

Code: Select all

 ATAn [Analogwert]
Es wird eine Analog/Digital-Wandlung am Pin ADC0…5 durchgeführt, wobei n den Pin 0…5 bezeichnet. Der aus-gegebene Wert liegt zwischen 0 und 1024 und entspricht einem analogen Spannungswert je nach Eingangsbe-schaltung. Weitere Ausführungen im Kapitel Spannungsteiler.
>ATA2
0429
>

Code: Select all

ATDnn [Dial]
Baut eine Verbindung über das Diag-noseprotokoll zum Fahrzeug auf. Für nn muß die Steuergerätenummer an-gegeben werden. Beispielsweise [b]ATD01 für das Motorsteuergerät [/b]oder ATD17 für das Kombiinstrument.
Sobald alle Daten übermittelt wurden, wird ">" ausgegeben. 
Beispiel für KW 1281:
>atd17
CONNECT: 5.1
1J0920801E
KOMBI+WEGFAH
RS. BOO V25
SWC: 05141
WSC: 00426
Ident.-Nr. W
EGFAHRS.:VWZ
6Z0X1334096
>
Beispiel für KW 2000:
CONNECT: 5.2
06F906056GA
MED9.5.10 G00
CID: 9148
SWC: 00072
WSC: 32773
EXT: 31640
IMP: 031[/code

Code: Select all

02 [Fehlercodes auslesen]
Hiermit lassen sich alle Fehlercodes (Diagnostic Trouble Code: DTC) vom Steuergerät abfragen. Je Zeile wird der Fehlercode und der dazugehö-rende Statuscode für die Fehlerursa-che (getrennt durch ein Leerzeichen) ausgegeben. Da bei größerer Fehler-anzahl die Daten vom Steuergerät in Etappen gesendet werden, kann es zwischendurch zu kurzen Verzöge-rungen bei der Ausgabe kommen.
>02
465A A3
461E 23
4620 23
44AB 23
406A 23
>
Es sind fünf DTCs abgelegt. Die erste Angabe bedeutet, es wurde der de-zimale Fehlercode 18010 mit dem Statuscode 163 abgelegt. Es gibt kei-ne Möglichkeit, einzelne Fehlercodes oder den Zeitpunkt der Generierung abzufragen.
Für die Interpretation der Fehlercodes bemühen Sie bitte das Reparatur-handbuch oder eine der zahlreichen Webseiten zum Thema:

Zahlreiche Fehlercodes in diversen Dateien und auch als Datenbank. Kostenlose Anmeldung notwendig: http://tech.groups.yahoo.com/group/obd-2/

Code: Select all

08nn [Messwertgruppen und Rohdaten auslesen]
Hiermit können Sie die an ein Steuer-gerät angeschlossenen Sensoren und deren Meßwerte abfragen. Welche Werte und wieviele geliefert werden ist unterschiedlich. Die Daten werden in Blöcken à drei Werte geliefert. Die meisten Steuergeräte liefern pro Gruppe vier Meßwerte, aber auch weniger Meßwerte sind möglich.
Welche Meßwerte in welcher Gruppe und an welcher Position geliefert werden, ist je nach Steuergerät an-ders. Es werden nie alle Gruppen von einem Steuergerät unterstützt. In-formationen hierzu müssen dem Re-paraturhandbuch des Fahrzeuges ent-nommen werden.
Das Steuergerät kennzeichnet jeden Meßwert mit einer Kennzahl, die dann Rückschlüsse darauf zuläßt, wie aus den gelieferten Zahlen der Meß-wert berechnet wird und in welcher Maßeinheit. Eine Übersicht der pas-senden Formeln etc. finden Sie im Anhang B. Eine Messwertbeschrif-tung der jeweiligen Daten ist nur be-dingt aufgrund der Maßeinheit mög-lich.
Mit nn benennen Sie die gewünschte Meßwertgruppe. Bei KW 1281 ist der Bereich 0…255 und bei KW 2000 1…255 erlaubt.
12/21 WBH-Diag Pro
Funktionsbeschreibung
>0802
07 64 31
01 C8 00
25 00 1E
2C 00 21
>
Die erste Zahl einer jeden Zeile ist die Kennzahl zur Meßwertberechnung. Die beiden folgenden Zahlenwerte werden im Anhang B als Byte A und Byte B bezeichnet und stellen den ei-gentlichen Meßwert dar.
Im Beispiel wird die Gruppe 2 abge-fragt. Es wurden vier Meßwerte (je einer pro Zeile) für diese Gruppe ge-liefert. Der erste Block liefert dann einen berechneten Meßwert von 0.01*A*B =
0.01*64H*31H =
0.01*100D*49D = 49 km/h
Mit diesem Kommando können bei KW 1281 auch die die zehn Rohda-tenmeßwerte, die oft als "Gruppe 00" bezeichnet werden, ausgelesen wer-den. Diese sind bei KW 2000 nicht verfügbar. Für die Abfrage muß für nn der Wert 00 angegeben werden. Je-der Datenwert der Antwort wird dann mit einem CR abgeschlossen. Die Bedeutung der Zahlenwerte ist dem Reparaturhandbuch des Fahrzeuges zu entnehmen.
>0800
B3
85
00
B9
FF
80
80
80
80
80
>
Es gibt auch einige wenige Steuerge-räte, die eine sehr exotische Antwort liefern. Hierbei sendet das Steuerge-rät zuerst eine Lookup-Tabelle, die Meßwerte und Textzeichen enthält. In weiteren Abfragen können dann die Indexzeiger auf diese Tabelle und Berechnungswerte abgefragt wer-den. Der WBH-Diag Pro fasst diese zwei Abfragen automatisch zusam-men und liefert zuerst die empfange-ne Lookup-Tabelle und anschließend nach einem Zeilenumbruch die (vier) Folgebytes. Wieviele Bytes die Loo-kup-Tabelle enthält ist unterschied-lich. Abfrage und Ausgabe sieht dann bspw. so aus:
>0804
88 F6 00
8D 01 4A
20 20 20
20 30 03
20 20 20
20 52 03
20 20 20
20 30 03
20 20 20
20 31 48
03 20 20
20 20 32
48 03 20
20 20 20
33 48 03
20 20 20
20 34 48
03 20 20
20 20 31
4D 03 20
20 20 20
32 4D 03
20 20 20
20 33 4D
03 20 20
20 20 34
4D 03 8E
01 00 86
01 00
0B 05 44
00
>
Die ersten 3 Bytes sind Berech-nungswerte für den ersten Meßwert.
Die Bytefolge 8D 01H (4. und 5. Byte) weist daraufhin, daß eine ASCII Loo-kup-Tabelle folgt (für den zweiten Meßwert). Diese besteht aus 74D Bytes (6. Byte 4AH). Diese Lookup-Tabelle liefert 11 Datenblöcke, die jeweils mit dem Wert 03H abschlie-ßen. Der erste Datenblock (Byte 7…12) mit dem Indexwert 0 besteht aus den ASCII-Werten für " 0" (<blank> <blank> <blank> <blank> 0). Das End-Byte 03H wird bei der
13/21 WBH-Diag Pro
Funktionsbeschreibung
Textkonvertierung nicht berücksich-tigt.
Anschließend folgen 6 Bytes für den dritten und vierten Meßwert.
Mit Hilfe der vier zusätzlichen Bytes nach dem Zeilenumbruch können nun die Meßwerte berechnet und der an-zuzeigende Text aus der Lookup-Tabelle bestimmt werden. Da die Lookup-Tabelle an zweiter Meß-wertstelle gesendet wurde, ist das zweite Zusatzbyte für die Tabelle ausschlaggebend (05H). Es wird also auf den Datenblock mit dem Index 5 verwiesen. Dies ist der sechste Da-tenblock, da mit 0 begonnen wird zu zählen. Dieser Datenblock repräsen-tiert im Beispiel den Text " 3H" (<blank> <blank> <blank> <blank> 3H). 

Ich denke dass sind die wichtigsten Befehle. Aber alles ist möglich, genau wie mit einem VCDS Tool.
Handbuch(sehr verständlich) gibts hier: http://www.blafusel.de/obd/files/whh-di ... latt_2.pdf
Im Kapitel 3 sind alle Befehle gelistet und beschrieben..

User avatar
bofh
Posts: 622
Joined: Tue 1. Jun 2010, 19:01
Location: Saarland
Contact:

Re: K-Line Interface für Digifant I / später KW1281 ECUs

Post by bofh » Thu 30. Jun 2011, 14:58

ist ja fast schon zu einfach :mrgreen:

wär mal interessant zu wissen wieviele Messwertgruppen man damit pro Sekunde auslesen kann.

passuff
Posts: 97
Joined: Wed 2. Feb 2011, 11:11

Re: K-Line Interface für Digifant I / später KW1281 ECUs

Post by passuff » Thu 30. Jun 2011, 15:35

leider nciht mehr als kwp1281 her gibt..Ich dachte erst dass es an der kommunikation zwischen interface und pc liegt, dem war aber nciht so...
ich habs nie berechnet. aber es ist lausig.. kwp2000 ist da schon etwas besser...

grad entdeckt:
Sample Rate: We can get just over 4.0 samples per second from our '97 VR6 ECU (single group)
with the most aggressive protocol-timing settings. This ECU runs at 9600 baud. Most newer
ECU's run at 10400 and should give proportionately more. Naturally, if two groups are being
displayed simultaneously, the sample rate drops to around 2.0, and 3 groups simultaneously runs at
around 1.3. Sample Rate will vary from controller to controller and the PC used will also have some
effect. Some controllers (particularly AG4 transmissions and Digifant-III ECU's) use a "hybrid" datatype
that requires reading a long header when changing group numbers. Viewing multiple groups still
works with these data types, but the sample rate becomes extremely slow. If you see "Reading
Header" all the time under the Sample Rate display, you'll know you've got one of these.
In Engine controllers using KWP-2000, there is a [Turbo] button in Measuring Blocks screen of the
latest version of VAG-COM. Pressing this button can significantly speed up sampling, in some cases
to over 30 samples per second when logging a single group. Once you have pressed [Turbo] you will
remain in this High-Speed mode until you exit the Measuring Blocks screen.

User avatar
bofh
Posts: 622
Joined: Tue 1. Jun 2010, 19:01
Location: Saarland
Contact:

Re: K-Line Interface für Digifant I / später KW1281 ECUs

Post by bofh » Thu 30. Jun 2011, 22:59

4 samples bei nur 1 Gruppe ist echt lausig :(

passuff
Posts: 97
Joined: Wed 2. Feb 2011, 11:11

Re: K-Line Interface für Digifant I / später KW1281 ECUs

Post by passuff » Fri 1. Jul 2011, 09:30

vor allem 4 gruppen und max 1Hz :(

passuff
Posts: 97
Joined: Wed 2. Feb 2011, 11:11

Re: K-Line Interface für Digifant I / später KW1281 ECUs

Post by passuff » Mon 4. Jul 2011, 19:18

Habe gerade beim stöbern ein Paar Infos entdeckt.. In einer Doku zur Bosch EDC15V habe ich folgendes entdeckt:

Code: Select all

McMess ist ein Übertragungsprotokoll für eine Kommunikation zwischen einem Steuergerät (SG)
und einem Testgerät (TG). McMess wurde optimiert für die Verwendung der K-Leitung als
Übertragungsmedium. Die K-Leitung ist eine digitale Eindrahtschnittstelle mit Ubatt - Pegel. Die
Informationen werden ähnlich dem V.24-Standard asynchron übertragen. Die
Übertragungseinheiten bestehen aus 9 Datenbits sowie Start- und Stopbit. Das SG und das TG
senden niemals gleichzeitig. Mit McMess kann das TG schnell RAM-Inhalte vom SG abfragen. Das
SG wird im Vergleich zu anderen Protokollen nur minimal belastet.
Da es sich um ein STG handelt was meines Wissens nur das KWP1281 Protokoll beherrscht und nicht KWP2000 hört sich das interessant an. Gibt es für KWP1281 also doch noch eine schnelle Datenloggmöglichkeit durch direkten Ram Zugriff, so wie auch bei KWP200??

User avatar
bofh
Posts: 622
Joined: Tue 1. Jun 2010, 19:01
Location: Saarland
Contact:

Re: K-Line Interface für Digifant I / später KW1281 ECUs

Post by bofh » Tue 5. Jul 2011, 10:57

hört sich interessant an! 8-)

Google ist zum Stichwort McMess leider nicht sehr auskunftsfräudig.
Ich fürchte da hilft auch wieder nur reverse engineering weiter. :(

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest