CAN-Hacking (war: OBD2 - ELM327 - Linux)

Alles, was mit dem Auslesen des CAN-Busses über den ODB2-Port zu tun hat (Scannen, OVMS und DashDAQ)
Antworten
Tachy
500 kW - overdrive
Beiträge: 1396
Registriert: 7. Aug 2011 13:16
Wohnort: Sulzburg-Laufen, Markgräflerland
Kontaktdaten:

Re: OBD2 - ELM327 - Linux

Beitrag von Tachy »

HIer schonmal eine zeitliche Abfolge der 5E9 -> 5EC - Sequenzen. zuerst wird wohl 00 geschickt, dann antwortet der 5EC mit 00.

Ich habe im DashDAQ folgende Felder angelegt: Ladegerät Strom und Spannung, Batterietemperatur, Außentemperatur ungefiltert und gefiltert. 5 Werte. Das deckt sich fast mit den Werten in 5EC.. wir sind dicht dran.


34,592 5E9 8 00 00 00 00 00 00 00 00
34,804 5EC 8 00 00 00 00 00 00 00 00
35,018 5E9 8 FE 00 00 00 00 00 00 00
35,045 5E9 8 FE 00 00 00 00 00 00 00
35,072 5E9 8 FE 00 00 00 00 00 00 00
35,099 5E9 8 FE 00 00 00 00 00 00 00
35,117 5EC 8 FE 34 48 6E 63 60 00 00
35,126 5E9 8 FE 00 00 00 00 00 00 00
35,154 5E9 8 FE 00 00 00 00 00 00 00
35,171 5EC 8 FE 34 48 6E 63 60 00 00
35,180 5E9 8 FE 00 00 00 00 00 00 00
35,207 5E9 8 FE 00 00 00 00 00 00 00
35,226 5EC 8 FE 34 48 6E 63 60 00 00
35,234 5E9 8 FE 00 00 00 00 00 00 00
35,261 5E9 8 FE 00 00 00 00 00 00 00
35,279 5EC 8 FE 34 48 6E 63 60 00 00
35,288 5E9 8 FE 00 00 00 00 00 00 00
35,315 5E9 8 FE 00 00 00 00 00 00 00
35,334 5EC 8 FE 34 49 6E 63 60 00 00
35,343 5E9 8 FE 00 00 00 00 00 00 00
35,369 5E9 8 FE 00 00 00 00 00 00 00
35,388 5EC 8 FE 34 49 6E 63 60 00 00
....
Tachy
500 kW - overdrive
Beiträge: 1396
Registriert: 7. Aug 2011 13:16
Wohnort: Sulzburg-Laufen, Markgräflerland
Kontaktdaten:

Re: OBD2 - ELM327 - Linux

Beitrag von Tachy »

Das sind die Codes, die nur dann kommen, wenn der DashDAQ dranhängt:

101

5e8,5e9,5ea,5eb,5ec,5ed,5ef

7df,7e0,7e1,7e2,7e3
7e5,7e7
7e9,7ea,7eb
7ed,7ef

Anbei das Logfile mit ausschließlich diesen Codes in zeitlicher Abfolge, wenn das DashDAQ mit den 5 angezeigten Feldern im Screen hochfährt (ab 44,393 Screenwechsel auf einen anderen Screen mit nur einem Wert )
dashdaq_anstecken_nur_dashdaq.zip
(3.47 KiB) 811-mal heruntergeladen
und hier ein Logfile mit nur einem Feld Außentemperatur (Ergebnis in Byte 3 von 5EC ):
dashdaq_anstecken_2_nur_dashdaq.zip
(968 Bytes) 820-mal heruntergeladen
Das letztere ist mal weitaus übersichtlicher.
Tachy
500 kW - overdrive
Beiträge: 1396
Registriert: 7. Aug 2011 13:16
Wohnort: Sulzburg-Laufen, Markgräflerland
Kontaktdaten:

Re: OBD2 - ELM327 - Linux

Beitrag von Tachy »

So, nun habe ich die Codes jetzt mal von Hand abgesetzt und geschaut, wo was zurückkam - das Ganze hat sich dann noch etwas anders sortiert:

Code: Alles auswählen

21,952 7E0      8 02 01 00 00 00 00 00 00  Eingabe
21,958 7E8      8 06 41 00 BE 7F B8 13 AA  Ausgabe

21,981 7DF      8 02 01 00 00 00 00 00 00  Eingabe
21,985 7E8      8 06 41 00 BE 7F B8 13 AA  Ausgabe
21,986 7E9      8 06 41 00 80 00 00 01 AA 
21,983 7EA      8 06 41 00 80 00 00 01 AA 
21,982 7EB      8 06 41 00 80 40 00 01 AA 
21,988 7EC      8 06 41 00 80 00 00 01 AA 
22,003 7ED      8 06 41 00 00 00 00 01 AA 
21,986 7EF      8 06 41 00 00 00 00 01 AA 


22,328 7E0      8 02 AA 00 00 00 00 00 00  Eingabe
22,330 5E8      8 00 00 00 00 00 00 00 00  Ausgabe

22,392 7E1      8 02 AA 00 00 00 00 00 00  Eingabe
22,397 5E9      8 00 00 00 00 00 00 00 00  Ausgabe

22,456 7E2      8 02 AA 00 00 00 00 00 00  Eingabe
22,463 5EA      8 00 00 00 00 00 00 00 00  Ausgabe

22,522 7E3      8 02 AA 00 00 00 00 00 00  Eingabe
22,524 5EB      8 00 00 00 00 00 00 00 00  Ausgabe

22,587 7E4      8 02 AA 00 00 00 00 00 00  Eingabe
22,604 5EC      8 00 00 00 00 00 00 00 00  Ausgabe

22,651 7E5      8 02 AA 00 00 00 00 00 00  Eingabe
22,662 5ED      8 00 AA AA AA AA AA AA AA  Ausgabe

22,716 7E7      8 02 AA 00 00 00 00 00 00  Eingabe
22,726 5EF      8 00 00 00 00 00 00 00 00  Ausgabe

22,781 7E4      8 10 08 2C FE 43 69 43 68  Eingabe
22,788 7EC      8 30 00 14 AA AA AA AA AA  Ausgabe

22,789 7E4      8 21 80 1F 00 00 00 00 00  Eingabe
22,800 7EC      8 02 6C FE AA AA AA AA AA  Ausgabe

(22,817 101      8 FE 01 3E 00 00 00 00 00  Eingabe?)

22,820 7E4      8 03 AA 04 FE 00 00 00 00  EIngabe  
22,864 5EC      8 FE 14 71 60 00 00 00 00  Ausgabe
22,897 5EC      8 FE 14 71 60 00 00 00 00 
22,928 5EC      8 FE 14 71 60 00 00 00 00 
22,961 5EC      8 FE 14 71 60 00 00 00 00 
22,994 5EC      8 FE 14 71 60 00 00 00 00 
23,027 5EC      8 FE 14 71 60 00 00 00 00 
23,058 5EC      8 FE 14 71 60 00 00 00 00 
23,090 5EC      8 FE 14 71 60 00 00 00 00 
23,123 5EC      8 FE 14 71 60 00 00 00 00 
23,158 5EC      8 FE 14 71 60 00 00 00 00 
23,189 5EC      8 FE 14 71 60 00 00 00 00 
23,221 5EC      8 FE 14 71 60 00 00 00 00 
23,253 5EC      8 FE 14 71 60 00 00 00 00 
23,285 5EC      8 FE 14 71 60 00 00 00 00 
Ich habe versucht, das ganze nachzustellen, indem ich als Eingabesequenz sämtliche obige Eingabecodes gesendet habe, um die Ausgaben nachzuziehen:

Code: Alles auswählen

[TxList]
Message0Id=7E0
Message0DLC=8
Message0Data=02 01 00 00 00 00 00 00
Message0Period=0
Message0Comment=
Message0Mode=off
Message0TriggerId=

Message1Id=7DF
Message1DLC=8
Message1Data=02 01 00 00 00 00 00 00
Message1Period=0
Message1Comment=
Message1Mode=off
Message1TriggerId=

Message2Id=7E0
Message2DLC=8
Message2Data=02 AA 00 00 00 00 00 00
Message2Period=0
Message2Comment=
Message2Mode=off
Message2TriggerId=

Message3Id=7E1
Message3DLC=8
Message3Data=02 AA 00 00 00 00 00 00
Message3Period=0
Message3Comment=
Message3Mode=off
Message3TriggerId=

Message4Id=7E2
Message4DLC=8
Message4Data=02 AA 00 00 00 00 00 00
Message4Period=0
Message4Comment=
Message4Mode=off
Message4TriggerId=

Message5Id=7E3
Message5DLC=8
Message5Data=02 AA 00 00 00 00 00 00
Message5Period=0
Message5Comment=
Message5Mode=off
Message5TriggerId=

Message6Id=7E4
Message6DLC=8
Message6Data=02 AA 00 00 00 00 00 00
Message6Period=0
Message6Comment=
Message6Mode=off
Message6TriggerId=

Message7Id=7E5
Message7DLC=8
Message7Data=02 AA 00 00 00 00 00 00
Message7Period=0
Message7Comment=
Message7Mode=off
Message7TriggerId=

Message8Id=7E7
Message8DLC=8
Message8Data=02 AA 00 00 00 00 00 00
Message8Period=0
Message8Comment=
Message8Mode=off
Message8TriggerId=

Message9Id=7E4
Message9DLC=8
Message9Data=10 08 2C FE 43 69 43 68 
Message9Period=0
Message9Comment=
Message9Mode=off
Message9TriggerId=

Message10Id=7E4
Message10DLC=8
Message10Data=21 80 1F 00 00 00 00 00
Message10Period=0
Message10Comment=
Message10Mode=off
Message10TriggerId=

Message11Id=7E4
Message11DLC=8
Message11Data=03 AA 04 FE 00 00 00 00
Message11Period=0
Message11Comment=
Message11Mode=off
Message11TriggerId=

Message12Id=-1
speichern als send.txl, laden mit Canhacker, File -> Load Tx List....


... es ging alles bis zu dieser Stelle:

7E4 8 21 80 1F 00 00 00 00 00

die dann die gewünschte Ausgabe in 7EC vermissen ließ.

7E4 8 03 AA 04 FE 00 00 00 00

lieferte dann nur noch ca. 160 mal das hier:

5EC 8 FE 00 00 00 00 00 00 00


aber der gewünschte Inhalt fehlte......weiß aber noch nicht, warum.
Tachy
500 kW - overdrive
Beiträge: 1396
Registriert: 7. Aug 2011 13:16
Wohnort: Sulzburg-Laufen, Markgräflerland
Kontaktdaten:

Re: OBD2 - ELM327 - Linux

Beitrag von Tachy »

Das Zeug kommt mir auch elend bekannt vor:

http://www.canbushack.com/blog/index.php

da wart ihr doch auch schon dran....

Ich glaube wir sind der Sache schon ziemlich auf der Spur.
Tachy
500 kW - overdrive
Beiträge: 1396
Registriert: 7. Aug 2011 13:16
Wohnort: Sulzburg-Laufen, Markgräflerland
Kontaktdaten:

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitrag von Tachy »

ich habe eben vier Sequenzen für vier einzelne Felder auf je einem DashDAQ-Screen aus den Logs extrahiert und habe wohl den Code gefunden, der die Ausgabe in 5ec konfiguriert. Ich poste das nachher alles mal rein.
Tachy
500 kW - overdrive
Beiträge: 1396
Registriert: 7. Aug 2011 13:16
Wohnort: Sulzburg-Laufen, Markgräflerland
Kontaktdaten:

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitrag von Tachy »

Also, ich habs raus, wie der DashDAQ seine Werte anfordert!

Anhand der Felder für Ladestrom und -spannung schreibt und liest der DashDAQ folgendes:

Code: Alles auswählen

49,547 7E4      8 06 2C FE 43 69 43 68 00      (Eingabe: Konfiguration für Anforderung Ladestrom/Spannung)
49,557 7EC      8 02 6C FE AA AA AA AA AA   (Ausgabe, OK oder so)

49,563 7E4      8 03 AA 04 FE 00 00 00 00 (Eingabe)
49,589 5EC      8 FE 00 00 00 00 00 00 00 (Ergebnis mit Werten, ca. 160 mal)
Byte 2+3 enthalten dann die beiden Werte (0 deshalb, weil er hier nicht angesteckt war)

Das habe ich auch ohne DashDAQ nachstellen können. Am Ladekabel hängend lieferte 5EC dann auch brav:

Code: Alles auswählen

5EC      8 FE 43 70 00 00 00 00 00
Außentemperatur müsste so gehen (die zweite EIngabe nimmt er nicht, wahrscheinlich müssen Eingabe 1 und 2 ganz schnell hintereinander gesendet werden):

Code: Alles auswählen

27,761 7E4      8 10 08 2C FE 43 69 43 68 (Eingabe 1)
27,763 7EC      8 30 00 14 AA AA AA AA AA  (OK?)

27,764 7E4      8 21 80 1F 00 00 00 00 00 (Eingabe 2)
27,777 7EC      8 02 6C FE AA AA AA AA AA (OK?)

27,796 7E4      8 03 AA 04 FE 00 00 00 00  (Eingabe 3, Anforderung der Werte)
27,840 5EC      8 FE 00 00 5B 00 00 00 00   Ergebnis wird ca. 160 mal geliefert, hier: 0x5B in Byte 3.
mikeljo
111 kW - voll elektrisch
Beiträge: 458
Registriert: 23. Sep 2011 18:35
Wohnort: Kaiserslautern
Kontaktdaten:

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitrag von mikeljo »

Hi,

funktioniert!
Tachy hat geschrieben:

Code: Alles auswählen

7E4      8 06 2C FE 43 69 43 68 00      (Eingabe: Konfiguration für Anforderung Ladestrom/Spannung)
7EC      8 02 6C FE AA AA AA AA AA   (Ausgabe, OK oder so)

Code: Alles auswählen

7E4      8 03 AA 04 FE 00 00 00 00 (Eingabe)
5EC      8 FE 4A 6F 00 00 00 00 00 [Ausgabe 160mal]
Wobei es sich um Byte 1 (Ladestrom * 0,2) und Byte 2 (Ladespannung * 2) handelt.
@Tachy: wir beginnen bei 0 (Null) zu zählen. :)
Die '8' ist ja auch kein Datenbyte, sondern gibt die Anzahl der folgenden Bytes an.

Ich habe da diese beiden Befehle direkt hintereinander gesendet (abstand 10ms):

Code: Alles auswählen

7E4      8 10 08 2C FE 43 69 43 68
7E4      8 21 80 1F 00 00 00 00 00
und dann mit

Code: Alles auswählen

7E4      8 03 AA 04 FE 00 00 00 00
Diese Werte bekommen:

Code: Alles auswählen

5EC      8 FE 4A 6F 64 00 00 00 00
Das ergibt dann:

Code: Alles auswählen

Strom: 0x4A * 0,2 = 14,8A
Spannung: 0x6F * 2 = 222V
Temperatur: (0x64 / 2) - 40 = 10°C
Das sieht doch schon mal gut aus.
Wobei mich die 222V stören. Ich hab an der Steckdose 230V. Wo verschwinden die 8V? Ich glaub eher das evtl. auch noch ein Offset dazu kommt. Wie bei der Temperatur.
Strom und Temperatur stimmen soweit.

Ich werds mal zu mark schicken. Mal sehn wie man das so eingebaut bekommt.

Bye
mikeljo
Tachy
500 kW - overdrive
Beiträge: 1396
Registriert: 7. Aug 2011 13:16
Wohnort: Sulzburg-Laufen, Markgräflerland
Kontaktdaten:

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitrag von Tachy »

Hallo Michael,

welchen der beiden Kommandos hast Du denn jetzt als erstes gesendet?

7E4 8 06 2C FE 43 69 43 68 00 (fordert Strom/Spannung an)

7E4 8 10 08 2C FE 43 69 43 68 (fordert Außentemperatur an)

..wobei zum zweiten (Außentemperatur) ja noch:

7E4 8 21 80 1F 00 00 00 00 00

dazugehört...

Bin jetzt etwas verwirrt...
Tachy
500 kW - overdrive
Beiträge: 1396
Registriert: 7. Aug 2011 13:16
Wohnort: Sulzburg-Laufen, Markgräflerland
Kontaktdaten:

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitrag von Tachy »

Temperatur der Hochvolt-Batterie auslesen geht so:

Code: Alles auswählen

30,918 7E4      8 10 08 2C FE 43 4F 43 69 
30,923 7EC      8 30 00 14 AA AA AA AA AA 

30,924 7E4      8 21 43 68 00 00 00 00 00 
30,937 7EC      8 02 6C FE AA AA AA AA AA 

30,953 7E4      8 03 AA 04 FE 00 00 00 00 
30,989 5EC      8 FE 30 26 71 00 00 00 00   (Byte 2 ist es (0x30) => Einheit 1°C, Offset +40 => 8°C )
@Michael, die Bytes zähle ich bei sowas immer ab 1, die Bits ab 0 ;) RScott hat auch ab 1 gezählt.


..und hier die Temperatur des Kühlungskreislaufs für die Leistungselektronik:

Code: Alles auswählen

08,360 7E4      8 10 08 2C FE 43 69 43 68 
08,367 7EC      8 30 00 14 AA AA AA AA AA 

08,367 7E4      8 21 1C 43 00 00 00 00 00 
08,377 7EC      8 02 6C FE AA AA AA AA AA 

08,396 7E4      8 03 AA 04 FE 00 00 00 00 
08,431 5EC      8 FE 17 71 37 00 00 00 00 
15 °C (Byte 4 , 0x37, Einheit 1°C, Offset +40)
mikeljo
111 kW - voll elektrisch
Beiträge: 458
Registriert: 23. Sep 2011 18:35
Wohnort: Kaiserslautern
Kontaktdaten:

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitrag von mikeljo »

Hi,

als erstes dies hier:

Code: Alles auswählen

7E4      8 06 2C FE 43 69 43 68 00
wenn dann das:

Code: Alles auswählen

7E4      8 03 AA 04 FE 00 00 00 00
gesendet wird, kommt das:

Code: Alles auswählen

5EC      8 FE 4A 6F 00 00 00 00 00
zurück.

Dann habe ich diese beiden Befehle direkt hintereinander gesendet (abstand 10ms):

Code: Alles auswählen

7E4      8 10 08 2C FE 43 69 43 68
7E4      8 21 80 1F 00 00 00 00 00
und dann mit

Code: Alles auswählen

7E4      8 03 AA 04 FE 00 00 00 00
Diese Werte bekommen:

Code: Alles auswählen

5EC      8 FE 4A 6F 64 00 00 00 00
Bye
mikeljo
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast