Autor |
Nachricht |
frogger Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
14-11-2007, 8:55 Titel: Diagnose-CAN-Bus anreizen (VW) |
|
|
Weiß jemand, wie das Protokoll auf dem Diagnose-Bus (VW Golf 5) abläuft? Zeit scheint auf jeden Fall beim Senden von Antworten wichtig zu sein. Hier ein Ausschnitt, was ich beobachtet habe (VAG-Com fordert Daten an, ich höre auf dem CAN-Bus mit):
.....ID...DLC..........DATA..........
<< 0x200 7 xx xx xx xx xx xx yy (wobei yy die Zieladresse ist, z. B. Motorsteuerung)
>> 0x2yy 7 xx ...
<< 0x740 6 a0 0f 8a ff 32 ff
>> 0x300 6 a1 0f 8a ff 4a ff
<< 0x740 5 10 00 02 10 89
>> 0x300 1 B1
>> 0x300 5 10 00 52 50 89
<< 0x740 1 B1
Die Nachrichten 0x200 und 0x740 werden von VAG-Com gesendet, 0x300 erhalte ich immer als Antwort (im späteren Verlauf auch die Meßwertblöcke).
Die Nachrichten mit Länge 1 scheinen immer zwischen 0xB1 und 0xBf hochzuzählen. Die Nachricht 0x740 sendet ähnliches, allerdings werden Werte regelmäßig übersprungen: B1, B5, B9, BD etc.
Hat jemand Ahnung, wie man hier vorgehen muß und welche Bedeutung die Nachrichten der Länge 1 haben? Gibt es Material, Links? |
|
Nach oben |
|
|
rathma Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
14-11-2007, 20:34 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
B(x) ist die bestätigung das was empfangen wurde.
viel spass beim rausfinden wie das transportprotukoll läuft.
zur info, das sind gleich zwei protukolle auf einmal 1x das transportprotokoll 1x das kwp2000
mit den tp 2.0 hab ich mich noch nicht so auseinander gesetzt, ich weiss bloss, das es noch zweitkritischer ist als beim tp.1.6, wobei ich beim 1.6er das genaue timing auch noch nicht so raus habe, ich antworte da immer so schnell wie möglich, wobei ich dann auch ab und zu zu schnell geantwortet habe.
ich hab mir so 2 - 3 logs ausgedruckt paar buntstifte in die hand genommen und dann mal rechnen angefangen... so schwer ist das mit den tp nicht wenn mans mal raus hat |
|
Nach oben |
|
|
frogger Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 9:28 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
Wenn eine Botschaft (eine Zeile) oder auch mehrere (ein ganzer Block) mit der ID 0x300 auf dem Bus liegt, dann ist offenbar immer das erste Byte einer jeden Zeile wichtig:
0x2y bedeutet: Datenzeile y
0x1y bedeutet: Ende eines Datenblock mit Zeile y
0xBy bedeutet: Quittierung der zuletzt empfangenen Zeile y eines Datenblocks
0xA0 bedeutet: Connection Setup Request (Byte 2 enthält Blockgröße n)
0xA1 bedeutet: Connection Setup Response
0xA3 bedeutet: Connection Test
0xA4 bedeutet: Break
0xA8 bedeutet: Disconnect
Bitte vervollständigen :D
So sende ich mit ID 0x740, wobei eine fremdgesendete Botschaft 0x300 immer quittiert. Empfange ich jedoch Botschaften mit 0x300, so muß ich immer mit einer Botschaft 0x740 quittieren.
Was das Anreizen von Botschaften betrifft, so wird es schwieriger, herauszufinden, was da gesendet werden muß. Ne Menge Datenfelder mit rätselhafter Bedeutung... :?
EDIT: Es ist mir jetzt möglich, kontinuierlich Meßwertblöcke anzufordern. Nach ca. 30 Blöcken endet die Kommunikation aber mit 0xA8 . 0x740 (also ich) sende dabei immer 5 Bytes mit dem ersten Byte 0x1y (letztes Nibble y hochzählen zw. 0x1 und 0xf, dann wieder bei 0 beginnen). Diese Botschaft enthält als letztes Byte die gewünschte Adresse des Meßwertblocks.
Zuletzt bearbeitet am 15-11-2007, 13:27, insgesamt 2-mal bearbeitet.
|
|
Nach oben |
|
|
rathma Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 11:05 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
vielleicht machst was mit den kwp2000 falsch oder du fliegst aus den netzwerkmanagement, keine ahnung(ferndiagnose ist da immer schlecht, am besten mal einen trace hier posten vom allen nachrichten die du sendetst um empfängst), vielleicht sendest du aber auch zu langsam oder zu schnell.
deine auflistung ist eigendlich soweit richtig(zumindest wenn ich von tp.16 ausgehe) a3 ist erst beim tp 2.0 dazugekommen, damit hab ich mich noch nicht auseinander gesetzt(mangels golf5 und und zeit zum spielen).
hast du eigendlich rausgefunden was diese zwei eröffnungnachrichten bedeuten:
<< 0x740 6 a0 0f 8a ff 32 ff
>> 0x300 6 a1 0f 8a ff 4a ff
ganz am anfang hatte ich mal vermuted das es wirgenwelche checksummen, timinggeschichten sind aber das wars nicht.
gruss markus
ps mach das "?" bei a8 weg |
|
Nach oben |
|
|
frogger Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 11:37 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
hast du eigendlich rausgefunden was diese zwei eröffnungnachrichten bedeuten:
<< 0x740 6 a0 0f 8a ff 32 ff
>> 0x300 6 a1 0f 8a ff 4a ff
Wenn ich eine Botschaft mit 0xA3 nach jeder Datenblockquittierung rausschicke, dann erhalte ich
>> 0x300 6 a1 0f 8a ff 4a ff
Darauf kann ich dann mit einer Meßwertanfrage antworten
<< 0x740 5 11 00 02 21 xx (xx ist die gewünschte Nummer des Meßwertblocks)
Wenn ich diese Vorgehensweise kontinuierlich durchziehe, dann kann ich den das Protokoll aufrechterhalten. In den Logs ist jedoch zu erkennen, daß VAG-Com 0xA3 nur alle 0xF Datenblöcke auf den Bus legt -- das scheint auszureichen. Warum ich die Botschaft mit Byte 0xa1 ständig anfordern muß, weiß ich nicht...
ist erst beim tp 2.0 dazugekommen, ...
Ist TP 2.0 ein offenes Protokoll? Sind die Specs zu haben? Wie steht es um KWP2000?
ps mach das '?' bei a8 weg
erledigt |
|
Nach oben |
|
|
rathma Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 12:01 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
das kwp2000 verwenden viele autohersteller, leider hab ich nach stunden langen sachen bei google nicht wirklich was gefunden was ins detail geht
für das transportprotukoll liegt die osek spezification zu grunde, die wurde aber mit sicherheit von vw noch ein bisschen an eigene bedürfnisse angepasst.
die osek org (irgendwie ein zusammenschluss aus vag bmw mb opel bosch siemens...) haben glaub ich die doc frei im internet zur verfügung gestellt(in englisch), schau dich einfach mal bei denen auf den ftp server um
http://www.osek-vdx.org/
gruss
markus |
|
Nach oben |
|
|
frogger Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 13:08 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
Ich habe mir mal folgendes (sehr aktuelles) Buch ausgeliehen:
Bussysteme in der Kfz-Technik
Zimmermann, Schmidgall
ISBN 3-8348-0235-2
2. Auflage 4/2007
hier das Inhaltsverzeichnis
TP 2.0 und KWP2000 sind hier detailliert erläutert (so scheint es). Ich zieh ich mir das mal jetzt rein, bevor ich weitermache...
PS: Ich habe die Liste oben schon etwas vervollständigt. 0xA0 ist ein 'Connection Setup Request', 0xA1 ist die dazugehörige Antwort ('Response'). Aufbau wie folgt:
Byte 2: Blockgröße n, d. h. nach n Datenzeilen ist eine Quittierung nötig ( 1 bis max. 15)
Byte 3: max. zulässige Zeit T1 zw. letzter Botschaft eines Blocks und der Quittierung
Byte 4: T2 nicht definiert (i. d. R. 0xFF)
Byte 5: min. notwendige Zeit T3 zw. zwei aufeinanderfolgenden Botschaften
Byte 6: T4 nicht definiert (i. d. R. 0xFF)
(T1 bis T4 sind 6-Bit-Werte mit 2-Bit-Skalierungsfaktor; Faktor zeigt an, ob 100 Mikrosek, 1 ms, 10 ms oder 100 ms)
Zuletzt bearbeitet am 15-11-2007, 16:17, insgesamt 2-mal bearbeitet.
|
|
Nach oben |
|
|
Frank5 Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 14:08 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
Hallo
Wokann man sich denn so ein gutes Buch ausleihen??
Bei uns in der Bücherei sind die Bücher allemind.10Jahre alt. Und das Buch neu kaufen ist leider auch nicht drin.
Gruss
Frank |
|
Nach oben |
|
|
frogger Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 14:14 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
am besten in die Uni-Bibliothek deines Vertrauens gehen. Da können i. d. R. auch Nicht-Studenten Bücher ausleihen. |
|
Nach oben |
|
|
Maxx Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 15:41 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
Das ist ja ein geniales Buch.
Lohnt sich ein Kauf?
SGM |
|
Nach oben |
|
|
rathma Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 15:44 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
also doch timing weisst du in was für einheiten (ms us sek?)
das buch muss ich haben einscannen und mir vorbeischicken (hat jetzt keiner gelesen) na schmarn kosted bei einen sehr bekannten buchhandel keine 40 euro und ich werd heute abend mal seid jahren wieder meine bücherrei aufsuchen |
|
Nach oben |
|
|
frogger Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 16:35 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
also doch timing weisst du in was für einheiten (ms us sek?)
Der oben genannte Skalierungsfaktor bestimmt die Einheit. Hab's oben nachgetragen.
Den Teil mit TP 2.0 hab ich nun voll verstanden. Kleine Zusammenfassung:
1. Mit 'Basis-ID 0x200' einen Kanal aufbauen:
Byte 1: Logische Adresse (d. h. Steuergerätenr., z. B. 0x02 bei Getriebe)
Byte 2: Opcode
(u. a. 0xC0 für Request, 0xD0 für Positive Response)
Byte 3 und 4: RX ID (0x10 für ungültig)
Byte 5 und 6: TX ID (gewünschte ID für zu empf. Datenblöcke, z. B. 0x300)
Byte 7: Application Type (bei VW meist 0x01)
2. Erhalt der Antwort 'Basis-ID + Logische Adresse' (z. B. 0x202 bei Getriebe)
Bytes wie oben, Sender teilt TX ID mit, mit der man künftig Datenblöcke senden muß
3. Mit nun empfangener TX ID das Timing vereinbaren
4. usw.
Ansonsten: Das Buch ist leicht zu lesen, zudem ist es ziemlich aktuell (2. Auflage von 4/2007). Kauf lohnt sich wohl für interessierte. |
|
Nach oben |
|
|
rathma Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 17:12 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
buch ist schon bestellt, blos mein buchladen meines vertrauens meint ca 8 tage lieferzeit. naja in der zwischenzeit gehts weiter mit treiberprogrammieren.
ein nachteil hat das buch aber, wenn alles so wie du meinst gut erklärt ist wird hier im board bald wieder totale funkstille sein |
|
Nach oben |
|
|
frogger Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
15-11-2007, 17:56 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
ein nachteil hat das buch aber, wenn alles so wie du meinst gut erklärt ist wird hier im board bald wieder totale funkstille sein
Na, die CAN-Matrix eines jeden Fahrzeugherstellers wird nach wie vor nirgends zu lesen sein. Mal abgesehen von den sonstigen Eigenheiten eines jeden Herstellers bei den Protokollen...
Nach der Timing-Vereinbarung geschieht noch eine kleine Kommunikation, die ich nicht verstehe:
<< 0x740 5 10 00 02 10 89
>> 0x300 1 B1
>> 0x300 5 10 00 02 50 89
<< 0x740 1 B1
<< 0x740 5 11 00 02 1a 9b
Das erste Byte ist ja nun klar: 0x10 = Blockende + Sequenznummer 0. 0x300 sendet mir ähnliche Daten zurück, die Sequenznummer auf der anderen Seite ist ja auch 0. Nun sendet VAG-Com einen weiteren Block, wobei die Sequenznummer 1 ist (klar).
Was steht in der Nutzlast der Datenblöcke, die hier gesendet werden? Ist das schon KWP2000? Zumindest beim Motorsteuergerät kann ich diese Daten aber auch weglassen, geht trotzdem. |
|
Nach oben |
|
|
rathma Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
16-11-2007, 0:28 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
das hat nix mehr mit tp öffnen oder so zu tun, das könnte eine eröffnung für kwp2000 sein, so in der richtung hallo ich will kwp oder diagnose oder flashen .... sicher kann ich es dir nicht sagen.
gruss
markus |
|
Nach oben |
|
|
frogger Gast
Kostenloser Account, kein CAN Entwicklungs-Support
|
16-11-2007, 14:49 Titel: Re: Diagnose-CAN-Bus anreizen (VW) |
|
|
Ich hab jetzt mehr Infos, wie der KWP2000-Teil auf dem Diagnose-Bus funktioniert (genauere Infos im genannten Buch):
Beispiel-Botschaft:
<< 0x740 5 10 00 02 10 89
Die Nutzlast eines TP 2.0-Datenblockes sieht so aus (Bytes zähle ich ab ersten Nutzlast-Byte):
Byte 1 und 2: Länge der Nutzlast in Bytes (im Beispiel 2)
Byte 3: SID (Service Identifier), d. h. ausgewählter Dienst (z. B. 0x10 = Start Diagnostic Session, 0x1A = Read ECU Identification, 0x21 = Auslesen von Steuergerätewerten)
Byte 4: Irgendein Parameter, abhängig von der SID (Bei SID 0x10 eine 1-Byte-Session-Nummer, 0x89 bis 0xFE sind dabei herstellerspezifische Sessions; bei SID 0x21 wird die gewünschte Meßwertblock-Nummer erwartet)
Die Antwort auf so eine KWP2000-Botschaft sieht ähnlich aus. Beispiel zur obigen Botschaft:
>> 0x300 5 10 00 02 50 89
Byte 1 und 2: die Länge wie gehabt
Byte 3: bei positiven Antworten wird der gesendete SID (im Beispiel 0x10) mit 0x40 verknüpft (macht im Beispiel 0x50). Bei einer negativen Antwort ist die SID = 0x7F.
Byte 4: Bei einer negativen Antwort wird hier die SID wiederholt. Bei einer pos. Antwort wird hier offenbar der gesendete Parameter wiederholt (im Beispiel 0x89).
Byte 5: Bei einer negativen Antwort der Fehlercode (0x10 = general reject, 0x11 = service not supported, 0x12 = subfunction not supported, etc.)
Für eine negative Antwort kann man mal einen nicht vorhandenen Meßwertblock anfragen.
Das obige Beispiel zeigt also die Eröffnung einer Diagnose-Session über KWP2000. Die Session 0x89 ist herstellerspezifisch. Per Default befindet sich ein Steuergerät in der Default Diagnostic Session, wo nur eigeschränkte Dienste verfügbar sind (aus Sicherheitsgründen). Ich denke, daß man in der Default Session z. B. nicht Werte in die Steuergeräte schreiben kann. Die Eröffnung einer Session muß man also nur bei besonderen Wünschen vornehmen, kann ansonsten aber ausbleiben. |
|
Nach oben |
|
|
|