Forum: Fahrzeugelektronik Verständnisfrage zu ISO9141 (K-Line)


von Jens R. (tmaniac)


Angehängte Dateien:

Lesenswert?

So ganz blicke ich mit den "Modes" des ISO9141-Protokolles nicht durch.

Mein OBD K-Line Adapter funktioniert elektrisch wie auch Software mäßig. 
Nur bekomme ich einen Time out wenn ich Werte schneller als 200ms 
Abstand abfrage. Da ich das Ganze im Circuit Tool (Datenauswertung von 
der Rennstrecke) und als Overlay im Onboard-Video nutzen möchte, sind 5 
Werte pro Sekunde e bissl mau.

Aktuell frage ich über den Mode 01 die einzelnen PIDs ab. Genau genommen 
sind es nur TPS (0x0C) und RPM (0x11) zwei Mal pro Sekunde, IAT(0x0F) 
und ECT(0x05) jede zweite Sekunde.

Gibt es vielleicht einen Weg mehrere Bytes am Stück zu lesen?

Auch auf einem OBDlink springen die Werte recht aufgeregt auf und ab. 
Kann es sein, dass das Fahrzeug (Honda BJ 2002) tatsächlich so 
eingeschränkt Kommunikationswillig ist?

von Alexander (alecxs)


Lesenswert?

Naja was haben wir denn da, 10400 baud mit UDS OBD KWP2000 Overhead 
bleiben netto vielleicht 4000 baud also etwa 500 Bytes pro Sekunde. 
Daran kanns nicht liegen.

von Jens R. (tmaniac)


Lesenswert?

Alexander schrieb:
> Naja was haben wir denn da, 10400 baud mit UDS OBD KWP2000 Overhead
> bleiben netto vielleicht 4000 baud also etwa 500 Bytes pro Sekunde.
> Daran kanns nicht liegen.

Ach da schau an. Ehrlich, das mehr als 8 Byte pro Sekunde möglich sind, 
hätte ich jetzt ohne nachrechnen nicht heraus gefunden :-/

Deswegen war meine Frage aber auch auf die Modi bezogen und nicht auf 
die Übertragungsgeschwindigkeit.

von Alexander (alecxs)


Lesenswert?

Dann sollte doch klar sein dass es nicht am Mode liegen kann. Einen 
anderen als Mode 01 gibt es für Sensordaten nicht, falls Du Dich auf die 
OBD2 Generic Modi beziehst.

Vielleicht ist Deine Frage "Gibt es einen Weg mehrere Werte am Stück zu 
lesen"?

Dazu müsstest Du mal mehr über die Software verraten, nicht jeder weiß 
was Du da in Betrieb hast. Auf Deinem Bild sieht man eine VBOX. Das 
sieht nicht so aus als ob Du da selbst etwas an der Software ändern 
kannst.

Wüsste nicht was man da noch überprüfen kann. Wird wohl am Fahrzeug 
liegen.

: Bearbeitet durch User
von Jens R. (tmaniac)


Lesenswert?

Die VBOX hat mit dem OBD nur so viel zu tun, dass sie die ausgelesenen 
Daten via CAN (von meinem Adapter) zu geschickt bekommt.

Aber im Eingangspost hatte ich geschrieben, dass ich neben meinem 
selbstgebauten OBD-Adapter auch ein OBDlink zum Auslesen des Honda S2000 
genommen habe. Und auch dieser liefert keine kontinuierliche Anzeige von 
Drehzahl und so weiter.

Wenn es nur den Mode 01 zum Auslesen der Werte gibt, dann beantwortet 
das meine Frage. Weil in diesem Mode akzeptiert das Auto nur ca alle 
200ms eine Wertabfrage.

von Alexander (alecxs)


Angehängte Dateien:

Lesenswert?

K-Line ist aber nicht gleich CAN, und das OBD2 Protokoll ist auch nicht 
das beste Mittel der Wahl. Leider ist es das einzige mangels 
fahrzeugspezifischer Dokumentation. Mit CAN ginge da sicher mehr.

: Bearbeitet durch User
von Jens R. (tmaniac)


Lesenswert?

Nur hat ein Honda S2000 mit BJ 2002 kein CAN-Bus.
Ich habe nie nach OBD2 gefragt. ISO9141 ist K-Line.

Und die VBOX kann nur CAN-Bus und kein K-Line.

Deswegen habe ich ja einen Adapter gebaut.

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Ja sehr verwirrend. K-Line hat aber eigentlich keine Modi, OBD hat die 
Modi? Dein Adapter hängt doch an einer OBD2 Dose... egal.

Dass da ein selbstgebauter Adapter dazwischen hängt war mir entgangen, 
aber Du wirst schon wissen was Du tust. Deine Frage ergibt beim zweiten 
durchlesen nun auch Sinn. Möglicherweise kann man auch direkt über 
K-Line Daten abfragen, wenn man die fahrzeugspezifische Dokumentation 
dazu hat, ähnlich CAN.

von Jens R. (tmaniac)


Lesenswert?

OBD kann nunmal über verschiedene Bussysteme übertragen werden. Neben 
CAN und K-Line gibt es noch einen SAE J1850 Bus. Und alle drei sind je 
nach Belegung an der OBD2-Buchse zu finden.

Naja, ich werde wohl nun doch die Daten analog unabhängig vom OBD direkt 
messen.

Meine ursprüngliche Frage nach mehr Bytes abfragen kam ich, weil ich 
Softwareschnippsel gefunden hatte wo die Leute eben mit einem Request 
mehr als eine einzelne PID abgefragt haben.
Wenn ich das halbwegs richtig verstanden hatte wurden eben mit dem 
abfragen eines PIDs unmittelbar die darauf folgenden quasi mit gelesen. 
Nur hat das bei mir nicht geklappt.

: Bearbeitet durch User
von Dieter S. (ds1)


Lesenswert?

Hast Du schon versucht wie schnell Du PID 0x00 abfragen kannst? PID 0x00 
ist zwar nur die Bitmap der unterstützten PIDs, steht aber sofort zur 
Verfügung. Damit kann man eventuell erkennen ob der von Dir beobachtete 
Timeout von der PID abhängt oder generell auftritt.

Hier hat scheinbar schon mal jemand mit der maximalen Abfragerate bei 
einer Honda ECU experimentiert, ich habe aber auf die Schnelle nicht 
gefunden was dabei heraus kam:

https://github.com/micooke/ArduinoHondaOBD_Extra

von Jens R. (tmaniac)


Lesenswert?

Dieter S. schrieb:
> Hast Du schon versucht wie schnell Du PID 0x00 abfragen kannst? PID 0x00
> ist zwar nur die Bitmap der unterstützten PIDs, steht aber sofort zur
> Verfügung. Damit kann man eventuell erkennen ob der von Dir beobachtete
> Timeout von der PID abhängt oder generell auftritt.

Hab ich tatsächlich noch nicht probiert. Ist aber eine gute Idee :-)

> Hier hat scheinbar schon mal jemand mit der maximalen Abfragerate bei
> einer Honda ECU experimentiert, ich habe aber auf die Schnelle nicht
> gefunden was dabei heraus kam:
>
> https://github.com/micooke/ArduinoHondaOBD_Extra

Je bei ihm hab ich mir auch ein paar Ideen geholt. Auch wenn der Code 
gewöhnungsbedürftig ist. Genau das war die Grundlage meiner Anfrage, 
weil er 16bytes (0x10) mit einmal abfragt.
Mal schauen was die "Nicht-Cabrio-Zeit" so bereit hält :-)

von Dieter S. (ds1)


Lesenswert?

Jens R. schrieb:
>
> Je bei ihm hab ich mir auch ein paar Ideen geholt. Auch wenn der Code
> gewöhnungsbedürftig ist. Genau das war die Grundlage meiner Anfrage,
> weil er 16bytes (0x10) mit einmal abfragt.
>

Wenn ich es richtig verstehe schaltet der Code auf das "Honda" Protokoll 
um und liest dann vermutlich direkt aus dem Speicher. Hier gibt es ein 
paar mehr Details zu dem Protokoll (in "Honda OBD code.docx"):

https://github.com/mr-sneezy/ArduinoHondaOBD1_to_OBD2_BT

Die Frage ist ob das Dein Steuergerät auch kann und wenn ja, ob man dann 
damit schneller auslesen kann.

von Jens R. (tmaniac)


Lesenswert?

Du bist ein Schatz :-)

Genau das ist der Weg punkt der mir in meinen Gedankengängen gefehlt 
hat.
Da der aus deinem ersten Link genau das gleiche Auto aus dem gleichen 
Jahr hat, stehen die Chancen ganz gut, dass ich es ausprobiere. :-D

von Alexander (alecxs)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.