20.05.2011, 15:50
Den CarPC kann man ja immer noch betreiben und die Arduino Boards nutzem um die Daten dafür auf zu bereiten.
C5: OBD2 Basteleien
|
20.05.2011, 15:50
Den CarPC kann man ja immer noch betreiben und die Arduino Boards nutzem um die Daten dafür auf zu bereiten.
20.05.2011, 15:53
Steuerungen auslösen generell ist dank ELM kein Problem - die Frage ist immer, wie tief man eingreifen will.
Einfache Dinge wie Zentralverriegelung auf/zu oder Fenster hoch/runter, oder auch mal den Tacho irgend einen Wert anzeigen lassen ist easy. Ob man sich allerdings bis zum Getriebe vorarbeiten kann, bezweifle ich. Beim 7er BMW (E38) gab es z.B. 3 Bussysteme, die über eine Art Firewall voneinander getrennt waren. Soweit ich mich erinnere, hab es den Multimedia-Bus, and dem auch die Komfort-Systeme (Klima, Festerheber) hingen, dann den Powertrain-Bus, mit Getriebe, Motorsteuerung und ABS als Teilnehmer, und den Security-Bus für Airbag und ähnliches. Nur ein Bus für alles bei der C5 wäre etwas krass - wenn der eine Störung hätte, ging nichts mehr. Der OBD2-Stecker hat auch mehrere getrennte Bussysteme anliegen, also nicht nur OBD2/CAN und OBD2/J1850.
20.05.2011, 15:57
Würde es helfen die Datenkommunikation einer Software die das bereits über ODB2 kann mit zu lesen?
HPTuners kann bereits auf das Getriebesteuergerät zugreifen und dort die Gänge direkt anwählen. Auch der Wandler Lockup läßt sich damit steuern. Machen "unsere" Tuner beim Prüfstand auch so.
20.05.2011, 17:36
Zitat:Original von CustosOnLinux Die Frage ist - macht er das über den J1850-Bus am OBD2-Stecker oder über einen anderen Bus, der auch an diesem Stecker anliegt? Da wäre noch die K-Leitung mit diesem komischen KWP2000-Protokoll: Link Wikipedia Zitat:KWP2000, eine Abkürzung für Key-Word-Protokoll 2000, ist ein verbreitetes Protokoll für Automobilelektronik, das in der ISO 14230 definiert wird. Es war ursprünglich ausschließlich zur Diagnose von Steuergeräten gedacht, siehe auch bei Fahrzeugdiagnosesystem. Einige Dienste des KWP2000-Protokolls werden heute allerdings auch dafür verwendet, neue Software in Steuergeräte zu laden (Reprogrammierung). Der ELM überträgt das nicht, zumindest nicht bei der C5. Bei neueren Fahrzeugen wird KWP2000 aber wohl ebenfalls über den CAN-Bus übertragen, und wäre damit evtl. via ELM erreichbar. Generell würde ich aber sagen: Schaden kann's nicht, da mit mitlauschen wäre sicher sehr interessant!
20.05.2011, 18:37
Zitat:ODBII auslesen ist die eine Sache, auf dem Bus tatsächlich Steuerungen auszuführen aber eine ganz andere. Wenn Ihr das tatsächlich hinbekommt, kann ich nur gratulieren. Matthias, das geht schon Michael, ich war vor kurzem beim Werner Moll und wir haben gemeinsam das Bussystem der C5 in den Unterlagen angeschaut. Hängt alles an einem Faden! Das ist ja das krasse...... Am BCM-Kabelbaum hängt so ein Stecker mit einer Mehrfachbrücke wo alle Busteilnehmer ankommen und kurzgeschlossen werden (s.g. Star-Connector, siehe unten). Der Gemeinsame geht dann an die OBD2 Buchse. Bei der C5 übernimmt das PCM ja auch die Steuerung des Getriebe-Automaten. Man darf nicht vergessen, das Bussystem ist von 1997, da war OBD2 gerade mal 1 1/2 Jahre bei GM in Benutzung. Zitat:Würde es helfen die Datenkommunikation einer Software die das bereits über ODB2 kann mit zu lesen?@CustosOnLinux auf jeden Fall! EDIT: der Star Connector
20.05.2011, 18:45
Aus dem eSi:
The following modules communicate on the class 2 serial data circuit: Body Control Module (BCM) Electronic Brake Control Module (EBCM) Electronic Suspension Control (ESC) HVAC with CJ2 Sensing and Diagnostic Module (SDM) Instrument Panel Cluster (IPC) Driver Door Module (DDM) Passenger Door Module (PDM) Seat Control Module (SCM) with AAB Powertrain Control Module (PCM) Radio Remote Control Door Lock Receiver (RCDLR) Some electrical system components are directly connected to and controlled by their system control module. Others systems accomplish the control functions by sharing data information with other system control modules on the serial data circuit to execute various vehicle functions. All system data information from sensors, switches, etc. can be monitored by any system module that is connected to the serial data circuit. Communications between each system control module is accomplished by sending a digitally coded message consisting of specific information. Communicating data information with other system control modules on the same serial data circuit, either input information or specific program information, provides more accurate and reliable computer system control functions. All system control modules on the same serial data circuit use a communication process similar to a telephone system, where enormous amounts of information can be exchanged on a single data wire. The serial data circuit is used to communicate information between each system control module. Each system control module is assigned a specific recognition code, called a source ID. This code is used to identify which module is communicating on the serial data circuit. When a message is sent out on the serial data circuit , the recognition code will identify which particular module sent the message. These messages contain specific information, or commands, a system control module requires to function properly.
20.05.2011, 18:49
Zitat:Der OBD2-Stecker hat auch mehrere getrennte Bussysteme anliegen, also nicht nur OBD2/CAN und OBD2/J1850. Bei der C5? ich sehe im OBD2 Stecker nur den Class 2 Bus und einen Entertainment Bus (wahrscheinlich wo der Wechsler dran hängt) alle anderen sind unbelegt bei der C5.
21.05.2011, 21:51
So, ich war heute (2x) am Auto und habe Versuche am OBD2 Bus durchgeführt.
Beim ersten mal hatte ich Probleme mit meinem Atmel Board - keine synchronisation mit dem Bus möglich, also wieder nach Hause gefahren und später dann ein anderes Board mitgenommen. Wie eingangs beschrieben benutze ich als Terminalprogramm auf dem PC das H-Term und als Interface das selbstgebaute ELM322 Board. Beides zusammen an die Diagnosebuchse und schon ging es los..... die Daten rasen über den Bildschirm Der ELM322 gestattet einen Monitorbetrieb, d.h. er zeigt alle Daten die auf dem Bus anliegen ungefiltert an. Man versetzt ihn dazu mit Hilfe von AT Befehlen in diesen Modus (siehe Michaels Beispiel oben) Zunächst sagen wir dem ELM322 mit dem Befehl AT H1 das auch der Kopf (Header) eines jeden Datensatzes angezeigt wird. Damit erkennen wir wer Absender und wer Empfänger der Daten/Nachricht/Kommandos ist Mit AT MA starten wir den Monitormodus Schnell wird klar das man so nicht weiter kommt, es sind zuviele Daten die da runtersausen.... Mit dem Befehl AT MR xx können wir die Daten derart filtern das nur Nachrichten angezeigt werden die für den Busteilnehmer xx bestimmt sind. Oder mit dem Befehl AT MT xx nur Nachrichten die vom Teilnehmer xx abgesendet wurden. Fangen wir mal mit dem Instrumenten Cluster (IPC) und dem DIC (Driver Info Display) an! Das hat laut Michaels Tabelle weiter oben die Adresse 96 bzw 60h (ELM322 möchte Hexwerte!) AT MT 60 zeigt uns ab jetzt nur noch Nachrichten an die vom IPC auf den Bus gesendet werden. Umschaltung Imperial/Metrisch gefällig? IPC sendet für imperial: A8 EB 60 84 67 und für metrische Anzeige: A8 EB 60 04 41 Das können wir mit dem ELM322 auch machen! Dazu geben wir dem ELM322 "die Identität" des IPCs mit dem Kommando AT SH AT SH A8 EB 60 A8 EB 60 ist der s.g. Header der Nachricht. A8 habe ich noch nicht 100% entschlüsselt, EB ist der Empfänger und 60 der Absender (hier IPC) Nach diesem AT Kommando AT SH A8 EB 60 sendet der ELM322 bei jedem Datensatz ein A8 EB 60 vorne weg und erscheint somit auf dem Bus als regulärer Teilnehmer! gesagt getan wir geben im H-Term 84 67 ein (siehe Daten für imperial) sofort schaltet das IPC und das Klimaanlagenbedienteil auf imperial um nun geben wir im H-Term 04 41 ein (siehe Daten metrische Anzeige) sofort schaltet das IPC und das Klimaanlagenbedienteil wieder auf metrisch zurück Hiermit haben wir quasi von Außerhalb ins Geschehen eingegriffen. Zusammengefasst: wenn wir Absender, Empfänger und den Datensatz kennen, können wir mit dem ELM322 diese Nachrichten nachbilden. Vorteil des einfachen Corvette C5 Datenbusses: der "echte" Teilnehmer merkt nicht das ein Clone an seiner Stelle unter seinem Namen mitsendet. ich bin dann einen Schritt weiter gegangen. Was passiert wenn wir das Fenster auf der Beifahrerseite öffnen und schließen? Das geht ja auch von der Fahrerseite aus. Das Türmodul Fahrerseite hat laut Michas Tabelle die Adresse 160 bzw A0h. Also filtern wir wieder mit AT MT A0 die Daten und schauen uns an was am Bus anliegt. Fenster runter: 8A CA A0 81 26 36 Fenster rauf 8A CA A0 82 26 E2 Wir setzen den Header vom ELM322 mit AT SH 8A CA A0 auf den eben gelesen Header und senden einfach mal 81 26 Zack, Fenster fährt komplett runter (komplett weil express down) würden wir sofort nochmals 81 26 senden würde es stehen bleiben. und wieder rauf: 82 26 na nu..... das Fenster fährt nur ein paar cm und bleibt dann stehen...... auf dem Bus habe ich zuvor beobachtet das 8A CA A0 82 26 E2 zig mal hintereinader gesendet wird und zwar solange wie wir den Finger auf dem Fensterheber-Taster halten. Das machen wir genauso, 82 26 wird fortlaufend für 5-10 sec gesendet. Fenster ist wieder ganz oben Tür auf und Tür zu ist leider nicht so trivial! Da funkt uns die Alarmanlage dazwischen. Wir dürfen auf keinen Fall so tun als ob der BEfehl zum entriegeln der Tür vom Türmodul kommt! Das geht nicht..... das gibt sofort Alarm! Wir müssen so tun als ob der Entriegelbefehl vom Keyles Entry Empfänger stammt - das ist sehr wichtig! ich prüfe noch ob gleichzeitig auch eine Info an die Security gesendet wird das jetzt "legal" entriegelt wird. Hier aber schon mal die Daten die ich aufgenommen habe: Tür auf mit FOB: CA C4 B0 10 22 07 75 (nach der ersten Betätigung) CA C4 B0 10 00 07 98 (nach der zweiten Betätigung -> Beifahrerseite geht auf - und jeder weiteren Betätigung) Tür zu mit FOB CA C4 B0 90 00 07 58 wir sehen hier das B0 der Absender ist und das ist laut Michas Liste das Keyles Entry, bzw der Funk-Empfänger im kofferraum Der Empfänger auf dem Bus ist C4 und das ist laut Tabelle die Security. ich habe das jetzt nicht probiert, da ich zuvor schon zig mal den Alarm ausgelöst hatte weil ich versuchte die per FOB verriegelte Tür von innen zu öffnen. Die Nachbarn waren schon stinkig ich werde die Tage weiter machen, dann aber mit abgezogenem Hupenrelais Und hier noch etwas vom IPC: Anfragen auf dem Bus (IPC sendet) für: Öldruck A9 4A 60 11 07 Kühlmittel 89 48 60 10 53 Getrieböl E9 3A 60 10 C6 Reifendruck vorne CB E4 60 11 10 A5 und hinten CB E4 60 11 30 22 Bitte bedenken, solche Anfragen haben im Gegensatz zum Umstellen der Einheiten eine Antwort zur Folge! Die kommt auch prompt. Mal exemplarisch fürs Getriebeöl: wir senden E9 3A 60 10 C6 Die sofort folgende Antwort lautet: C8 3B 10 10 46 63 dritte von links ist 10, das ist das PCM als Absender! 10 46 63 ist die eigentliche Antwort Tja und jetzt? Auf dem DIC stand 30°C bzw 86°F Das muss man also noch umrechnen..... das soll erst mal für heute genügen! ich hoffe ich habe bei den ganzen Zahlen keine Dreher reingebaut. Alles hier geschriebene habe ich an meiner 02er C5 probiert, gehe aber davon aus das es für alle Baujahre gültig ist. Eine Frage noch an Michael: wenn ich das fahrerseitige Fenster bediene, sehe ich absolut keine Reaktion auf dem Datenbus! Ich könnte mit den heute gewonnen Informationen ein Window Valet aufbauen, aber leider nur für die Beifahrerseite. Hast Du eine Ahnung wie man das Driver Door Modul dazu bekommt das Fenster zu bewegen?
21.05.2011, 22:02
Zitat:Original von Thomas V Bisher noch nicht, hast Du mal versucht, den gleichen Code wie von der Beifahrerseite zu senden? Daß da kein Bustraffic ist, ist eigentlich fast logisch - warum sollte das Modul über den Bus mit sich selbst reden? Mit Deinem ganzen Text hast Du mich gerade ganz heiß gemacht - bin kurz davor, die Vette hochzuholen und auch etwas zu basteln. Hier ist übrigens meine "Gerätschaft" zum experimentieren: Links das 4x20-Zeichen-Display, rechts ein Arduino Mega (weil er 4 seriellen Schnittstellen hat), darauf ein Ethernet-Board (kann damit über ein Kabel an einen 12V-Accesspoint gehen, und OBD2-Werte vom iPhone aus lesen). Rechts unten ein Pegelwandler von TTL (5V) auf RS232-Normpegel (12V). Da kommt momentan auch mein OBD2-Kabel dran, weil dieses (noch) keinen TTL-RS232-Ausgang hat...
21.05.2011, 22:07
Hier ein Bild von einem Arduino Pro, was ein normaler Arduino aber ohne USB-Schnitstelle ist.
Links davon ein WLAN-Shield, was obendrauf passt: So sieht es aus, wenn man es zusammensteckt - hier ist noch ein Relaisboard obendrauf: Das ist mein kleinster Arduino, das 1CHF-Stück hat den gleichen Durchmesser wie 1Eur. Die Elektronik wird auf den Prozessor huckepack draufgelötet, das sollte man aber nur mit etwas Übung angehen... |
Möglicherweise verwandte Themen... | |||||
Thema | Verfasser | Antworten | Ansichten | Letzter Beitrag | |
neues Projekt: OBD2 fun | Thomas V | 152 | 46.637 |
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 |