C5: OBD2 Basteleien
Zitat:Original von Zaphod
Nein, das ist fest einprogrammiert - leider nicht änderbar! Dagegen!

Man könnte das Display ja rausdremeln und ein eigenes vom Aruino angesteuertes einbauen Zwink Die meldungen kann ja vom Bus gelesen werden.

Spiegelschrift wär doch auch möglich. So vonwegen Hud Zwink
  Zitieren
Zitat:Original von Zaphod
Nein, das ist fest einprogrammiert - leider nicht änderbar! Dagegen!


Heulen Heulen Heulen
  Zitieren
sehr schön Birger! Das macht Laune mit dem Teil, richtig?


Habe heute mal versucht noch etwas aus dem Datenstrom zu filtern.
Mir ist es gelungen den Gong anzusteuern, aber das Problem an der Sache: beim Nächsten Zündungszyklus ging es nicht mehr Motzen


Das original Window Valet eröffnet ja ein Konfigurations Menü über die Reset Taste in Verbindung mit der Tür Unlock Taste.
Ich habe mir das mal auf dem Bus angeschaut:

Tür per FOB öffnen und reinsetzen. Tür zuziehen, Schlüssel nicht im Zündschloß.

Der Datenbus ist relativ schnell ruhig.

Druck auf die Reset Taste bringt folgende einzelne Meldung auf dem Bus:
A8 A9 60 90 EB 01 (und 48 als CRC)

kann man zig mal drücken, es kommt jedesmal diese Meldung.
Ich bin der Meinung das man damit schon eine einfach Konfiguration durchführen kann.

Die anderen Tasten vom DIC reagrieren nicht bei ausgeschalteter Zündung!

Dummerweise hatte ich in Erinnerung das man beim original Window Valet "lock" drücken soll.....
Aber egal, es geht auch mit lock.....

Reset drücken und dann sofort "lock" ergibt folgende Sequenz:

A8 A9 60 90 EB 01 (48)
8A C5 A0 A0 22 (13)
8A C5 A0 20 22 (DA)

warum machen die das so?
Einfach um zu vermeiden das man versehentlich das Konfig. Menü startet wenn man auf Reset drückt.
Tür Lock/Unlock und Reset drückt man eigentlich nicht hintereinander....
Ich habe auch festgesteltl das es egal ist ob man RESET gedrückt hält oder nicht wenn man auf "lock" drückt. Das Ergebnis ist das gleiche.
  Zitieren
Zitat:Ich hab vergessen, heute Lotto zu spielen - 85 Millionen im Jackpot.
Das hätte für eine Weile dumme Ideen gereicht

Micha, hätte für 1000 Best.-Automaten in der Grundausstattung ausgereicht sich vor Lachen auf dem Boden wälzen
  Zitieren
habe hier aktuell einen Mitschnitt von einer kleinen Runde mit meiner C5 und versuche rauszufinden wie das IPC an seine Daten kommt.
Das IPC wird ja nicht ständig nach dem Drehzahlwert oder der Geschwindigkeit fragen.....
Das kommt als Broadcast Nachricht vom Steuergerät.
Um das genauer zu erkennen bin ich mal ein Stück mit konstanter Drehzahl/Geschwindigkeit gefahren.

Grübel....
  Zitieren
Da kann ich evtl. weiterhelfen...
Meine Session heute bestand darin, einzelne Messages vom plappernden Bus zu lesen, also nicht auf Anfrage.
Dieser Code hier:

Code:
# Code für Arduino Mega, Serial1=ELM

char buffer[128] ; int a = 0; int b = 0; int pointer = 0; int zchn = 0;

void setup() {
   Serial.begin(9600); Serial1.begin(9600); // Serialports konfigurieren
   Serial1.print("ATZ"); Serial1.print((char)13);  delay(500);
   Serial1.print("ATL0"); Serial1.print((char)13); delay(500);
   Serial1.print("ATH1"); Serial1.print((char)13); delay(500);
   Serial1.print("ATFD"); Serial1.print((char)13); delay(500);
   Serial1.print("ATE0"); Serial1.print((char)13); delay(500);
   Serial1.flush();
   Serial1.print("ATMTB0"); Serial1.print((char)13); delay(500);
   Serial.println("ready...");
}

void loop() {
pointer = 0;
while (zchn != 13) {
    while (Serial1.available() < 1) {}
    buffer[pointer] = Serial1.read();
    zchn = (buffer[pointer]);
    Serial.print("  Buffer "); Serial.print(pointer); Serial.print(" = "); Serial.write(buffer[pointer]); Serial.println();
    if (zchn !=32) pointer++;  }
Serial.println("Message gelesen!"); zchn = 0; pointer = 0;
}

...versetzt den ELM in Bus-Monitoring-Mode, welcher auf Gerät B0h (FB-Empfänger) lauscht.
Drückt man nun eine Taste auf dem Schlüssel (z.B.) "Open", dann erscheint im Serial-Monitor:

Zitat:ready...
Buffer 0 = A
Buffer 1 = 8
Buffer 2 =
Buffer 2 = F
Buffer 3 = F
Buffer 4 =
Buffer 4 = B
Buffer 5 = 0
Buffer 6 =
Buffer 6 = 0
Buffer 7 = 2
Buffer 8 =
Buffer 8 = 8
Buffer 9 = 6
Buffer 10 =
Buffer 10 =

Message gelesen!
Buffer 0 = C
Buffer 1 = A
Buffer 2 =
Buffer 2 = C
Buffer 3 = 4
Buffer 4 =
Buffer 4 = B
Buffer 5 = 0
Buffer 6 =
Buffer 6 = 1
Buffer 7 = 0
Buffer 8 =
Buffer 8 = 2
Buffer 9 = 2
Buffer 10 =
Buffer 10 = 0
Buffer 11 = 8
Buffer 12 =
Buffer 12 = C
Buffer 13 = E
Buffer 14 =
Buffer 14 =

Message gelesen!

Der erste Block nach leeren Werten gefiltert ergibt:

Zitat: Buffer 0 = A
Buffer 1 = 8
Buffer 2 = F
Buffer 3 = F
Buffer 4 = B
Buffer 5 = 0
Buffer 6 = 0
Buffer 7 = 2
Buffer 8 = 8
Buffer 9 = 6

Also: A8FFB00286 im Array.
Das kann man jetzt in einem Programm verwendet, welches genau diese Zeichenfolge erkennt, und dann ggf. eine Reaktion auslöst Idee

Natürlich könnte man Zeile 13 ( Serial1.print("ATMTB0"); ) auch gegen etwas anderes austauschen, z.B. gegen ATMT10, um Nachrichten vom PCM mitzulauschen.
Oder gegen ein ATMA, um ALLES mitzuschneiden, ich weiß aber nicht, ob der Arduino das in der Form schafft, ohne daß der 128 Byte-Inputbuffer überläuft.

Weiteres später, wenn meine Forschungen zum Packet-Mode weiter sind...
  Zitieren
Der Packet Mode...

Mit ATPD kann man dem ELM sagen, er soll die Daten nicht mehr in lesbarer Form liefern, sondern "Roh", d.h. jedes Byte kommt direkt (was dann nicht-lesbare ASCII-Zeichen sind), und ohne LF am Schluß.

Hier ein Beispielprog:
Code:
char buffer[128] ; int a = 0; int b = 0; int pointer = 0;

void setup() {
   Serial.begin(9600); Serial1.begin(9600); // Serialports konfigurieren
   Serial1.print("ATZ"); Serial1.print((char)13);  delay(1000);  
   Serial1.print("ATL0"); Serial1.print((char)13); delay(1000);
   Serial1.print("ATH1"); Serial1.print((char)13); delay(1000);
   Serial1.print("[B]ATPD[/B]"); Serial1.print((char)13); delay(1000);
   Serial1.print("ATE0"); Serial1.print((char)13); delay(1000);
   Serial1.flush();
   Serial1.print("ATMTB0"); Serial1.print((char)13); delay(1000); // elm2usb();
}

void loop() {
pointer = 0;
do {
    while (Serial1.available() < 1) {}
    buffer[pointer] = Serial1.read();
    Serial.print("Buffer Char: "); Serial.print(buffer[pointer]); Serial.print("  Buffer HEX: "); Serial.println(buffer[pointer], HEX);// DEBUG
    delay(100);
    pointer++; }
while (buffer[pointer-1] != 10); // Solange Buffer-Array fuellen, bis Zeilenende erreicht

Serial.println("Message gelesen!");
}

ergibt die Ausgabe:
Code:
Buffer Char:     Buffer HEX: 5
Buffer Char: ¨  Buffer HEX: FFFFFFA8
Buffer Char: ÿ  Buffer HEX: FFFFFFFF
Buffer Char: °  Buffer HEX: FFFFFFB0
Buffer Char:   Buffer HEX: 2
Buffer Char: †  Buffer HEX: FFFFFF86
Buffer Char:   Buffer HEX: 7
Buffer Char: Ê  Buffer HEX: FFFFFFCA
Buffer Char: Ä  Buffer HEX: FFFFFFC4
Buffer Char: °  Buffer HEX: FFFFFFB0
Buffer Char:   Buffer HEX: 10
Buffer Char: "  Buffer HEX: 22
Buffer Char:   Buffer HEX: 8
Buffer Char: Π Buffer HEX: FFFFFFCE

Zeile 1 sagt, aus wievielen Bytes die Nachricht besteht, also 5
Die folgenden 5 Zeilen sind die Message selbst:
A8
FF
B0
02
86

Zeile 7 ist der Anfang der neuen Message, sie besteht also aus 7 Zeichen:
CA
C4
B0
10
22
08
CE

Der Vorteil: Es wird hier nur ein Drittel der Daten übertragen, da das Leerzeichen wegfällt, und jedes Byte nur noch aus einem Zeichen besteht, anstelle von 2 Hex-Zeichen.
Diese Prog ist aber noch ein Trümmerhaufen im Rohbau, und taugt noch überhaupt nichts.
Muß jetzt aber erst mal mein Notebook und die Vette laden dumdidum
  Zitieren
sehr gut Michael!

sowas habe ich heute auch gemacht, allerdings noch klassich mit ELM322 und Notebook

Die 180KB Daten habe ich dann in Exel gepackt und kann schön rumsortieren oder suchen.
Allerdings bisher ohne nennenswerten Erfolg was die Suche nach dem Drehzahl- und Geschwindigkeitssignal angeht.

Wie wird bei der C5 das Speedsignal eigentlich übertragen?
Laut Wiki im Mode 1 PID "0D" ist es direkt in km/h und nur 1 Byte groß..... das kann ja nicht sein.
Meilen doch wohl auch nicht, dann wäre ja die Auflösung nicht mehr 1 km/h
  Zitieren
Zitat:Original von Thomas V
Die 180KB Daten habe ich dann in Exel gepackt und kann schön rumsortieren oder suchen.
Allerdings bisher ohne nennenswerten Erfolg was die Suche nach dem Drehzahl- und Geschwindigkeitssignal angeht.

Ich muß gleich nochmal einkaufen fahren, dann sammle ich auch mal ein paar Daten - woher dürfte das Mode02-Signal denn kommen - BCM oder PCM? Ich schätze mal letzteres?
Werde mal versuchen, eine Weile mit Tempomat und definierter Geschwindigkeit zu fahren, z.B. 80km/, und dann eine Weile 100km/h.
Vielleicht erkennt man was an permanent gleichbleibenden Werten...

Zitat:Wie wird bei der C5 das Speedsignal eigentlich übertragen?
Laut Wiki im Mode 1 PID "0D" ist es direkt in km/h und nur 1 Byte groß..... das kann ja nicht sein.
Meilen doch wohl auch nicht, dann wäre ja die Auflösung nicht mehr 1 km/h

Ich schätze mal auf 01-Abfrage kommt ein Byte zurück, aber beim fahren ein 2-Byte-Wert via Broadcast vom PCM.
Von der Richtung hier sollte der Header also so aussehen:

[??] [FF] [10] und dann eine gleichbleibende Sequenz bei gleichbleibender Geschwindigkeit?
  Zitieren
ich habe gerade in meinem Mitschnitt eine Folge gefunden die von der gefahrenen Geschwindigkeit stammen könnte:
8A 25 28 05 00 xx 03

wobei xx entsprechend meiner Fahrt in etwa mitläuft..... das prüfe ich aber noch ob es plausibel ist.
Kannst ja mal bitte ein Augenmerk drauf legen....
  Zitieren


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  neues Projekt: OBD2 fun Thomas V 152 46.685 06.02.2013, 09:45
Letzter Beitrag: Hughes500
  OBD2 software für C5 smartie 18 9.686 22.09.2005, 16:21
Letzter Beitrag: Jochen

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 38 Gast/Gäste
Forenübersicht
Technikforen
-- C 1 Technikforum
-- C 2 Technikforum
-- C 3 Technikforum
-- C 4 Technikforum
---- C4 ZR-1 Technikforum
-- C 5 Technikforum
---- C5 Z06-Technikforum
-- C 6 Technikforum
---- C6 Z06-Technikforum
---- C6 ZR1-Technikforum
-- C7 Technikforum
---- C7 Z06 Technikforum
-- C8 Diskussionsforum
-- Tuningforum
-- Allgemeines Technikforum
---- OBD2
Other Vette-Stuff
-- Man sieht sich
---- Nachbetrachtungen
---- Stammtische Deutschland
------ Baden-Württemberg
------ Bayern
------ Berlin/Brandenburg
------ Hessen
------ Nordrhein- Westfalen
------ Niedersachsen/HB/HH
------ Rheinland-Pfalz
------ Sachsen
------ Thüringen
------ Schleswig Holstein
---- Stammtische Österreich
------ Wien / St. Pölten
---- Stammtische Schweiz
------ Ostschweiz/Vorarlberg
------ Treffen Schweiz
-- Jäger & Sammler
-- Vettetalk
---- Reiseberichte
-- Corvette-Bilder der Mitglieder
---- Membervideos
-- Sonstige Schöne Vettepics
---- Corvettevideos
-- Vettelady's Corner
-- Wissenswertes & Kurioses
-- Werkstätten & Händler
-- CORVETTE & Parts - For Sale!
---- laufende Auktionen bei EBAY
---- Transporthilfeforum
---- for sale - Alles ohne Corvette!
-- Wanted !
-- Wer weiß was
---- Fragen vor dem Kauf
-- Paragraphen & Pamphlete
Smalltalk und Forumsschnack
-- Über dieses Forum
---- Teammitteilungen
---- In Memoriam
-- Hallo, ich bin's!
-- Motorsport
-- Off Topic
---- Jux & Dallerei
---- Das Club-Forum
---- Don't feed the troll!
-- Glückwunsch- und Grußforum
-- Bits und Bytes
-- Comic-Forum
-- Das Modellautoforum
-- Testforum
Händlerangebote
-- Info-Forum
-- ACP Euskirchen
-- Dyno-Center
-- KTS American Parts
-- Corvetteproject (Molle)
-- Schmidt Revolution
-- NCRS Central Europe
-- IDP-CORVETTE ( INJA )
-- TIKT Performance Parts
-- BG Sportwagen
-- SPEEDSTYLE
-- V8Lounge
-- AVI Schilling & Wendt Assekuranzmakler
-- Autosalon am Park GmbH
-- NCRS Central Europe
-- Hoffmann Classics
-- CCRP Austria
-- RockAuto.com
-- Stingrays-Shop.com
-- corvetteparts.de