CarCode Müller ElmCan® ELM327® ________________________________________________________________ Fahrzeug-Diagnose der zweiten Generation (OBD-2, EOBD) ( © Gerhard Müller, Stand 10.06.2007, jegliche unautorisierte Verwendung wird strafrechtlich verfolgt) Interface zwischen OBD-2/EOBD Fahrzeug-Diagnosestecker und Computer - ElmCan® - SER mit IC ELM327® V1.1 – für seriellen Anschluß - ElmCan® - USB mit IC ELM327® V1.1 – für USB-Anschluß - ElmCan® II - USB mit IC ELM327® V1.2 – für USB-Anschluß - ElmCan® - BT mit IC ELM327® V1.1 – für Bluetooth-Anschluß - ElmCan® - Bausatz mit IC ELM327® V1.1 – nur für seriellen Anschluß Diese Dokumentation beschreibt alle bisher erschienenen Versionen des IC ELM327® und der mit diesem Interpreter-Chip bisher erschienenen ElmCan® Interfaces und Bausätze. (Inhaltsverzeichnis siehe letzte Seite) (unter Verwendung eines Datenblattes der Firma Elm Electronics Kanada, in autorisierter Übersetzung) Ende 2002 wurde von CarCode Müller erstmalig in Europa der OBD-ProtokollInterpreterchip ELM323 vorgestellt und eingeführt, der Grundlage eines DatenübertragungsInterfaces zwischen Fahrzeugen mit genormter OBD2/EOBD Diagnoseschnittstelle und einem PC/Laptop für ISO-Protokolle nach 9141 und 14230 ist. Gleichzeitig wurden auch die IC ELM320 und ELM322 für die SAE J1850 Protokolle PWM und VPW angeboten. Der ELM327® ist nun der Nachfolger dieser Chips und vereint in sich alle Funktionen und somit Protokolle seiner Vorgänger sowie zusätzlich das inzwischen auch für OBD zugelassene CAN-Protokoll (ISO 15765). Auch der ELM327® wird wieder exklusiv von CarCode Müller vorgestellt und eingeführt. Der ELM327® basiert auf den Erfahrungen von Tausenden von Anwendern seiner Vorgänger. In meinen Artikeln in der Zeitschrift Elektor 10-12/2002 über Fahrzeug-Diagnosesysteme der zweiten Generation (OBD-2) wurde bereits darauf hingewiesen, daß aufgrund einer EURichtlinie alle ab dem 01. Januar 2001 zugelassenen Neufahrzeuge mit Otto-Motor mit einer einheitlichen Diagnose-Schnittstelle versehen sein müssen. Der einheitliche Stecker kann vier verschiedene Protokolle mit Varianten (somit insgesamt 9 verschiedene Protokolle) zur Verfügung stellen, von denen in Europa hauptsächlich das ISO Protokoll verwendet wird. Inzwischen wenden die Hersteller auch zunehmend das CAN-Protokoll an. Sowohl diese Protokolle als auch der abweichende Spannungspegel schließen eine direkte Verbindung des Fahrzeug-Diagnose-Steckers mit dem seriellen Port eines Computers aus. Inzwischen erfaßt die EU-Richtlinie auch Pkw mit Selbstzündermotor (Diesel) ab TypPrüfung 2003 oder Zulassungsdatum 01. Januar 2004. Selbst Nutzfahrzeuge sollen ab 1. Oktober 2005 OBD-2 haben. Darüber hinaus wurde als weiteres OBD2-Protokoll das CANProtokoll zugelassen. Weltweit haben Kfz-Hersteller bekundet, daß sie bis spätestens 2008 nur noch das CAN-Protokoll für neue Fahrzeuge verwenden werden. Diesen Bedingungen und auch Erfahrungen mit den ELM Chips ELM320/322/323 sowie Forderungen der Anwender trägt der Hersteller mit dem neuen ELM327® IC Rechnung. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 2 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Mit der hier vorgestellten Applikation soll eine einfache Möglichkeit dargestellt werden, über ein Interface einen PC, einen Laptop oder PDA zur Fahrzeug-Diagnose verwenden zu können. Das Interface basiert auf einem vorprogrammierten Embedded Microchip der Firma Elm Electronics, dem ELM327®. Dieser IC mit 28 Anschlüssen benötigt nur wenige externe Bauteile, um die OBD-Signale zu interpretieren und sie in Standard ASCII-Zeichen zu übersetzen. Damit kann jeder PC, Laptop oder PDA mit serieller Schnittstelle und einem Terminal-Programm benutzt werden. Unter Verwendung eines geeigneten RS232/USBAdapters ist auch der Anschluß an USB möglich. Darüber hinaus kann sich ein erfahrener Programmierer ein komfortabeles Diagnose-Programm selbst schreiben. Die zur Zeit vorliegenden Schaltungen mit dem ELM327® sind für Fahrzeugsysteme mit 12 Volt Bordspannung konzipiert. Bei Nutzfahrzeugen kann die Bordspannung auch 24 Volt haben. Die derzeitigen Interfaces dürfen daher für Nutzfahrzeuge nicht verwendet werden. Die zwar äußerlich gleiche Diagnosebuchse bei 24 Volt Systemen soll einen unterbrochenen Mittelsteg besitzen, so daß übliche 12 Volt Diagnosestecker mit durchgehendem Mittelsteg nicht hineinpassen. Der ELM327® wurde ebenso wie seine Vorgängertypen speziell für Hobby-Anwender entwickelt, um preiswert Zugang zu einem OBD2/EOBD-System zu erhalten. Die in den Vorgängertypen noch nicht vorhandenen Funktionen wie RS232-Handshaking, variabele Baudraten usw. sind jetzt implementiert. Weiterhin kann dieser IC nicht nur für das 10,4 kHz ISO 9141-2 Protokoll und die Derivate KWP2000 Fast sowie KWP2000 Slow (ISO 14230-4) bei einer schnelleren Baudrate von jetzt 38400 am seriellen Ausgang verwendet werden, sondern auch für die beiden anderen möglichen Protokolle VPW und PWM, für die es vormals nur separate ICs der Firma Elm Electronics (ELM320, ELM322) gab. Zusätzlich unterstützt der ELM327® jetzt das CAN-Protokoll (500 kbps und 250 kbps mit 11 Bit und 29 Bit IDs). Blockdiagramm des ELM327® Leistungs-Beschreibung ELM327® Niedrige Leistung aufnehmendes CMOS Design, Quarz-kontrollierte Genauigkeit, ISO 91412 und ISO 14230-4 Protokolle, J1850-Potokolle PWM und VPW, CAN-Protokolle nach ISO 15765-4, konfigurierbar mit AT-Befehlen, Standard ASCII-Zeichen Ausgang, vier stromstarke LED Treiberausgänge, A/D-Wandler, Memory Option, Hochgeschwindigkeit RS232 Schnittstelle gepuffert usw., einsetzbar als Diagnose-Fehlercode-Ausleser, FahrzeugScantool und für Lehrzwecke. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 3 ________________________________________________________________ Bild Anschluss Die Anschlußpins des ELM327® sind im Folgenden beschrieben. MCLR (Pin 1) Master Clear Schmitt-Trigger Eingang, aktiviert bei niedrigem Eingang. Wenn nicht verwendet, soll dieser Pin an logisch hoch (Vcc) angeschlossen werden. Vmearure (Pin 2) Spannungseingang zum A/D-Wandler (0 bis 5 Volt), Kalibrierung des A/D-Wandlers durch AT-Befehl möglich. Die Versorgungsspannung des ELM327® soll nicht überschritten werden, um Schäden des Chips zu meiden. Falls nicht verwendet, an VDD oder VSS anschließen. J1850Volts (Pin 3) J1850 Bus Plus Spannungskontrolle Ausgang, hoch 8 Volt, tief 5 Volt. 8 Volt sind für J1850 VPW erforderlich und 5 Volt für J1850 PWM. Wird dieses in einer Schaltung nicht benötigt, kann dieser Anschluß offen bleiben. J1850Bus+ (Pin 4) J1850 Bus Plus Treiber Ausgang, aktiv hoch. Dieses Signal muß nicht für die Buslinie verwendet werden (wie es auch beim ELM320 der Fall war), da ein separater J1850 Bustreiber-Ausgang an Pin 14 zur Verfügung steht. Memory (Pin 5) Memory-Option Eingang, speichert das zuletzt erfolgreich verbundene Protokoll. Bei Eingang hoch ist die Funktion eingeschaltet und bei Eingang niedrig ausgeschaltet bei jedem Einschalten oder Reset des Chips. Die Funktion kann auch jederzeit durch die ATM1 bzw. ATM0 Befehle kontrolliert werden. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 4 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Baud Rate (Pin 6) Eingang zur Einstelloption der Baudrate, bei hohem Eingang 38400 Baud und bei niedrigem Eingang 9600 Baud bei jedem Einschalten oder Reset des Chips. LineEnd (Pin 7) Dieser Eingang wird zur Auswahl des standardmäßigen Zeilenschaltungs-Modus (LF Linefeed) nach dem Einschalten oder einem System-Reset benutzt. Ist der Eingang hoch, werden vom ELM327® gesendete Zeilen mit Wagenrücklauf (CR - Carriage Return) und Zeilenschaltung (LF - Linefeed) abgeschlossen. Bei niedrigem Eingang werden Zeilen nur mit CR abgeschlossen. Dieses Verhalten kann durch Senden eines ATL0- oder ATL1-Befehls geändert werden (siehe Abschnitt über AT-Befehle). VSS (Pin 8) Die Schaltkreis-Masse wird an diesen Pin angeschlossen. Es ist der negativste Punkt in der Schaltung. XTAL1 (Pin 9) und XTAL2 (Pin 10) Zwischen diesen beiden Pins wird ein Kristallquartz mit 4,00 MHz angeschlossen. Üblicherweise werden je ein Quartz-Ladekondensator (typisch 27 pF) zwischen jeden Pin und Schaltungsmasse (VSS) geschaltet. Anmerkung: Der ELM327 ist nicht für einen externen Oszillator vorgesehen, er erwartet einen an diese Pins angeschlossenen Quartz. Verwendung eines externen Oszillators wird nicht empfohlen. VPWIn (Pin 11) Die OBD-Daten des VPW-Protokolls werden über diesen Pin mit dem Logikpegel hoch zugeführt, entsprechend dem aktiven Status der J1850-Bus+ Linie. Bei inaktivem Bus liegt niedriger Logikpegel an. Es wird ein Schmitt-Trigger verwendet, deshalb muß das OBD Signal nicht gepuffert werden, um die Transientenzeiten der internen CMOS-Schaltungen zu minimieren. Der Schmitt-Trigger kontrolliert die Signalflanken. ISOIn (Pin 12) Die OBD-Daten der ISO-Protokolle ISO9141 und ISO14230 werden über diesen Pin mit dem Logikpegel niedrig zugeführt, entsprechend dem aktiven Status der OBD K-Linie. Es wird ein Schmitt-Trigger verwendet, deshalb muß das OBD Signal nicht gepuffert werden, um die Transientenzeiten der internen CMOS-Schaltungen zu minimieren. Der Schmitt-Trigger kontrolliert die Signalflanken. PWMIn (Pin 13) Die OBD-Daten des PWM-Protokolls werden über diesen Pin mit dem Logikpegel niedrig zugeführt, entsprechend dem aktiven Status der J1850-Bus+ Linie. Bei inaktivem Bus liegt hoher Logikpegel an. Es wird ein Schmitt-Trigger verwendet, deshalb muß das OBD Signal nicht gepuffert werden, um die Transientenzeiten der internen CMOS-Schaltungen zu minimieren. Der Schmitt-Trigger kontrolliert die Signalflanken. J1850Bus- (Pin 14) J1850 Bus Minus Treiber Ausgang, aktiv hoch für J1850 PWM Anwendungen. Bei Nichtverwendung kann der Ausgang offen bleiben. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 5 ________________________________________________________________ RTS (Pin 15) Eingang aktiv niedrig RTS (Request To Send), Bereitschaftsfrage. Dieser im aktiven Zustand niedrige Eingang kann zur Prozeßunterbrechung, um einen neuen Befehl zu senden, verwendet werden. Im Normalfall hoch kann der Eingang auf niedrig gesetzt werden, bis die Busy-Linie (Pin 16) meldet, daß der ELM327® nicht mehr länger beschäftigt (busy) ist. Der Eingang hat einen Schmitt-Trigger zur Signalformung. Busy (Pin 16) Ausgang aktiv hoch, wenn Busy Verarbeitung. In diesem Zustand ist der ELM327® also mit der Befehlsverarbeitung beschäftigt, bei Pegel niedrig nicht. RS232Tx (Pin 17) Dies ist der RS232 Sende- oder Datenausgangs-Pin. Der Signalpegel ist kompatibel zu den meisten Interface ICs und es steht ein ausreichender Stromfluß zur Verfügung, um als Interface nur einen PNP Transistor zu verwenden, falls gewünscht. RS232Rx (Pin 18) Das RS232 Sendesignal eines Computers kann an diesen Pin direkt angeschlossen werden, solange ein strombegrenzender Widerstand (typisch etwa 47 kΩ) in Reihe geschaltet ist. (Interne Schutzdioden leiten die Eingangsströme sicher zu den Versorgungsanschlüssen und schützen den ELM327®.) Interne Signal-Inversion und Schmitt-Trigger Wellenformbearbeitung sorgen für die notwendige Signal-Behandlung. Der Signalpegel ist kompatibel mit den meisten Interface ICs. VSS (Pin 19) Die Schaltkreis-Masse wird an diesen Pin angeschlossen. Es ist der negativste Punkt in der Schaltung. VDD (Pin 20) Dieser Pin dient zur positiven Spannungsversorgung und sollte die höchste Spannung in der Schaltung führen. Interne Schaltungen innerhalb des Chips sorgen für ein Reset-Verhalten des Mikroprozessors bei Einschaltung der Versorgungsspannung, so daß kein externes ResetSignal benötigt wird. Weitere Informationen enthält die Tabelle über elektrische Daten. ISOK (Pin 21) und ISOL (Pin 22) Dies sind die aktiv-hoch Ausgangssignale, die zum Treiben des OBD Bus (ISO 9141 und ISO 14230) verwendet werden unter Benutzung von externen NPN Transistoren. Die Datenübertragung erfolgt normalerweise nur über die K Linie, aber die Standards erfordern, daß die L Linie ebenfalls implementiert ist, um den Bus ordnungsgemäß zu initialisieren. Da bei neueren Fahrzeugen die L Linie nicht mehr benötigt wird, kann Pin 22 offen bleiben. Näheres siehe unter dem Abschnitt über die Beispiel-Applikation. CANTx (Pin 23) Aktiv hoch CAN Sende-Ausgang. Diese Leitung muß mit einem CAN Tranceiver verbunden werden. Erfolgt dieses nicht, kann durch Verbindung zu einem existierenden CAN-System dieses System gefährdet werden. Näheres siehe unter dem Abschnitt über die BeispielApplikation. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 6 CarCode Müller ElmCan® ELM327® ________________________________________________________________ CANRx (Pin 24) Aktiv hoch CAN Empfangs-Eingang. Diese Leitung muß mit einem CAN Tranceiver verbunden werden. Erfolgt dieses nicht, kann durch Verbindung zu einem existierenden CAN-System dieses System gefährdet werden. Näheres siehe unter dem Abschnitt über die Beispiel-Applikation. LED Treiber Ausgänge (Pins 25, 26, 27 und 28) Diese vier Pins führen niedrigen Pegel, wenn der ELM327® RS232- oder OBD-Daten sendet oder empfängt, und haben sonst hohen Pegel. Diese Ausgänge sind ausreichend dimensioniert, um die meisten LED's direkt über strombegrenzende Widerstände zu treiben. Falls nicht verwendet, sollen diese Pins offen bleiben. (RS232 Rx – Pin 25, RS232 Tx – Pin 26, OBD Rx – Pin 27, OBD Tx – Pin 28) Grenzwerte des IC ELM327® Lagertemperatur -65 °C bis +150 °C Umgebungstemperatur unter Spannung -40 °C bis +85 °C Spannung an VDD in Relation zu VSS 0 bis +7,5 V Spannung an jedem anderen Pin in Relation zu VSS -0,3 V bis (VDD + 0,3 V) Anmerkung: Überschreitung der obigen Werte kann zur Schädigung des IC führen. Die Werte stellen nur Auslegungs-Richtwerte dar. Es wird nicht empfohlen, den IC an diesen Grenzen zu betreiben. Elektrische Charakteristika Soweit nicht besonders gekennzeichnet, beziehen sich alle Werte auf den Betrieb bei 25 °C und 5 Volt Spannungsversorgung. Weitere Information siehe unter Anmerkung 1) unten. Charakterika Minimum Typisch Maximum Einheit Versorgungsspannung, VDD 4,5 VDD Anstiegsrate 0,05 Mittlere Stromversorgung, IDD Eingang Grenz-Spannung 5,5 9,0 1,0 Schmitt-Trigger steigend Eingangsgrenzen fallend Ausgang niedrige Spannung Ausgang hohe Spannung Reset Spannung A/D Wandler Zeit RS232 Baudrate 5,0 1,3 3,0 1,4 0,3 4,6 4,07 4,2 7 38400 4,59 500000 Bemerkung V V/ms siehe Anmerkung 2 mA siehe Anmerkung 3 V alle außer Schmitt Eingänge siehe Anmerkung 4 V V V V V msec Baud Strom (Senke) = 10 mA Strom (Quelle) = 10 mA siehe Anmerkung 5 siehe Anmerkung 6 Anmerkungen: 1. Dieser integrierte Schaltkreis wird unter Verwendung des PIC18F248/2840 von Microchip Technology Inc. als Core-Embedded Microcontroller hergestellt. Weitere Spezifikationen siehe unter http://www.microchip.com 2. Dieser spezifizierte Wert muß zur korrekten Reset-Funktion bei Spannung-Ein eingehalten werden. Das ist bei den üblichen Spannungsquellen gewährleistet, kann aber bei langsam ändernden Versorgungsspannungen wie direkter Anschluß an Solarzellen oder einigen Ladeschaltungen nicht gegeben sein. 3. Nur IC, ohne Lastströme. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 7 ________________________________________________________________ 4. Die Pins 1, 11, 12, 13, 15 und 18 haben interne Schmitt-Trigger zur WellenformAnpassung. ® 5. Die typische Breite des Busy Ausgangsimpulses während der ELM327 Befehle interpretiert, Spannung mißt, skaliert und das Ergebnis einer Mittelwert-Messung bei 38400 Baud überträgt. 6. Nominale Datentransferrate, wenn der empfohlene 4,00 MHz Quartz als ReferenzFrequenz benutzt wird. Daten werden zum und vom ELM327® mit 8 Datenbits, kein Paritätsbit und 1 Stopbit (8N1) gesendet. Ab Version V1.2 ist der ELM327® für maximal 500 kiloBaud ausgelegt. Der ELM327® besteht aus einem 300 Mil Plastik DIP-Gehäuse. Es ist ebenfalls eine 300 MIL SOIC Version verfügbar. Übersicht Im Folgenden wird die Verwendung des ELM327® beschrieben, um möglichst viele Daten vom Fahrzeug zu erhalten. Einigen Anwendern werden die folgenden Informationen zu kompliziert sein, während sie für andere nicht umfassend genug sind. Beginnend mit der Erläuterung, wie mit dem IC vom PC aus kommuniziert werden kann, wird anschließend erklärt, wie mit AT-Befehlen die Optionen geändert werden können, und schließlich, wie der ELM327® zum Auslesen von Fehlercodes (und ihrer Löschung) benutzt werden kann. Für fortgeschrittene Anwender gibt es ebenfalls Abschnitte über die Anwendung der programmierbaren Funktionen dieses Produkts. Die Verwendung des ELM327® ist nicht so kompliziert, wie es zunächst erscheinen mag. Viele Anwender werden vielleicht nie einen AT-Befehl, eine Justierung von Zeitüberschreitungen oder eine Änderung von Kopfbytes benutzen müssen. Für die Meisten ist nur ein PC oder PDA mit einem Terminal-Programm wie HyperTerminal oder Zterm erforderlich und die Kenntnis von einem oder zwei OBD-Befehlen, die im Folgenden erklärt werden. Für Windows-Vista empfehlen wir das freie Terminalprogramm ComPortTerminal von WGSoft. Kommunikation mit dem ELM327® Dem ELM327® liegt eine Standard-RS232 serielle Datenverbindung zu Grunde, um mit dem Anwender zu kommunizieren. Die Datenrate ist 38400 Baud mit 8 Datenbits, keinem Paritybit, einem Stopbit und keinem Handshaking (oft bezeichnet als 38400 8N1), wenn die Pins 15 und 16 des ELM327® nicht benutzt werden. Es ist möglich, auf die bei den VorläuferELM-Chips verwendete Baudrate von 9600 zu wechseln. Die Version V1.2 und höher des ELM327® unterstützt Datenraten bis zu 500 kiloBaud. Ebenfalls kann jetzt Handshaking benutzt werden, wenn die Schaltung entsprechend konzipiert ist. Alle Antworten des IC sind mit einem einzigen Wagenrücklaufzeichen (Carriage Return, CR) abgeschlossen und optional auch mit einem Zeilenwechsel (Line Feed, LF). Stellen Sie sicher, daß Ihre Software entsprechend konfiguriert ist. Ist der ELM327® richtig angeschlossen und eingeschaltet, leuchten zunächst die vier Ein/Ausgangs-LED sequentiell auf als Lampen- und Funktionstest und anschließend wird die Meldung ELM327 v1.1 > Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 8 CarCode Müller ElmCan® ELM327® ________________________________________________________________ ausgegeben. Zusätzlich zur Identifikation der Version des IC bedeutet die Ausgabe dieser Zeichen, daß die Computerverbindungen und deren Konfiguration in Ordnung sind. An dieser Stelle hat jedoch noch keine Kommunikation mit dem Fahrzeug stattgefunden und der Status der Fahrzeugverbindung ist noch unbekannt. Das oben gezeigte „>“ - Zeichen ist der ELM327® Eingabe-Prompt. Es bedeutet, daß sich das Gerät im Wartezustand befindet und zur Annahme von Zeichen über den RS232-Port bereit ist. Vom Computer gesendete Nachrichten können entweder zur internen Verwendung im ELM327® bestimmt sein oder zur Bearbeitung und Weiterleitung an den OBD-Bus. Der ELM327® kann schnell feststellen, wohin die empfangenen Zeichen zu leiten sind, indem er nach Empfang der Nachricht die Zeichenkette analysiert. Befehle zur internen Verwendung im ELM327® beginnen immer mit den Zeichen „AT“ wie bei Modems zur Konfiguration üblich, während Befehle für den OBD-Bus nur die ASCII-Codes für hexadezimale Digits (0 bis 9 und A bis F) enthalten dürfen. Egal ob ein interner „AT“-Typ-Befehl oder eine hexadezimale Zeichenkette für den OBDBus, alle Nachrichten an den ELM327® müssen mit dem CR-Zeichen (Hex „0D“) abgeschlossen sein, bevor sie ausgeführt werden. Die einzige Ausnahme besteht beim Empfang einer nicht kompletten Zeichenkette ohne CR-Zeichen. In dem Fall unterbricht eine interne Zeitschaltung die unvollständige Nachricht nach etwa 20 Millisekunden und der ELM327® gibt ein einzelnes Fragezeichen „?“ aus zum Zeichen, daß der Eingang nicht verstanden und auch nicht ausgeführt wurde. Nachrichten, die vom ELM327® nicht verstanden werden (Syntax-Fehler), werden immer mit einem einzelnen Fragezeichen „?“ beantwortet. Das sind unvollständige Nachrichten, fehlerhafte AT-Befehle oder fehlerhafte hexadezimale Zeichenketten. Aber das ist kein Indikator dafür, ob die Nachricht vom Fahrzeug verstanden wurde oder nicht. Beachten Sie, daß der ELM327® ein Protokoll-Interpreter ist, der nicht die Richtigkeit von OBDNachrichten prüft. Er stellt nur sicher, daß eine gerade Anzahl von Hex-Digits sortiert in Bytes empfangen und zum OBD-Port gesendet werden, und er weiß nicht, ob die zum Fahrzeug gesendete Nachricht richtig ist. Unvollständige oder falsch verstandene Nachrichten können auch auftreten, wenn der angeschlossene Computer versucht, zum ELM327® zu senden, bevor dieser bereit ist, den nächsten Befehl zu erhalten, wenn keine Handshake-Signale zur Datenflußkontrolle benutzt werden. Um einen Datenüberlauf zu verhindern, sollte der Anwender in diesem Fall immer auf das Prompt-Zeichen („>“) warten, bevor der nächste Befehl eingegeben wird. Zum Schluß noch einige allgemeine Konventionen: Der ELM327® unterscheidet keine GroßKlein-Schreibung, „ATZ“ ist daher gleich „atz“ oder gleich „AtZ“. Das Gerät ignoriert sowohl Leertaste-Zeichen (Space) als auch Kontroll-Zeichen wie z.B. Tab, LineFeed usw. in der Eingabe, so daß diese zur besseren Lesbarkeit überall benutzt werden können. Schließlich bewirkt ein einzelnes Wagenrücklauf-Zeichen (CR) die Wiederholung des zuletzt vom ELM327® empfangenen Befehls und vereinfacht es damit, Abfragen von dynamischen Daten wie z.B. Motorumdrehungen zu tätigen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 9 ________________________________________________________________ AT-Befehle Mehrere Parameter des ELM327® können geändert werden, um sein Verhalten anzupassen. Diese müssen nicht unbedingt geändert werden, bevor mit dem Fahrzeug kommuniziert werden kann, aber gelegentlich möchte der Anwender die Konfiguration ändern, um z.B. das Zeichen-Echo auszuschalten, den Timeout-Wert anzupassen oder die Kopf-Adresse zu ändern. Um dies zu tun, müssen interne AT-Befehle verwendet werden. Alle, die noch mit PC-Modems gearbeitet haben, werden die AT-Befehle als Standard zur internen Konfiguration von Modems kennen. Der ELM327® benutzt die gleiche Methode, in dem er immer auf Nachrichten vom PC achtet, die mit dem Zeichen “A“ gefolgt vom Zeichen “T“ beginnen. Bei Erhalt dieser Zeichenfolge werden die folgenden Zeichen zur internen Konfiguration oder als „AT-Befehl“ interpretiert und ausgeführt, wenn sie mit einer Zeilenschaltung (Enter oder CR) abgeschlossen sind. Der ELM327® antwortet darauf normalerweise mit den Zeichen ’OK’ zur Bestätigung, daß der Befehl ausgeführt wurde und der Anwender darüber informiert ist. Einige der folgenden Befehle können Zahlen als Argumente zum Setzen interner Werte beinhalten. Dieses sind immer hexadezimale Zahlen, die in der Regel paarweise zu verwenden sind. Die hexadezimale Umrechnungstabelle im nächsten Abschnitt mag zur Interpretation der Werte nützlich sein. Es sollte auch beachtet werden, daß die Ein/AusgabeBefehle die typische Notation als Zahl (1 oder 0) besitzen. Es folgt eine Zusammenstellung aller AT-Befehle, die von der aktuellen Version des ELM327® erkannt werden, in alphabetischer Reihenfolge. AL [Erlaube lange Nachrichten] Die Standard OBD-2 Protokolle begrenzen die Anzahl der Datenbytes auf sieben, die der ELM327® normalerweise auch zum Senden und Empfangen verwendet. Ist AL gewählt, gestattet der ELM327® das Senden von acht Datenbytes und eine unbegrenzte Anzahl von Empfangsbytes. Der Grundwert ist AL Aus und NL An. AR [Automatisches Setzen der Empfänger-Adresse] Antworten vom Fahrzeug werden dann erkannt und vom ELM327® angezeigt, wenn die intern gespeicherte Empfänger-Adresse mit der Adresse übereinstimmt, an die die Nachricht gesendet wird. Ist der Auto-Empfänger Modus aktiviert, dann wird der Wert für die Empfänger-Adresse aus den aktuellen Kopfbytes gewählt und automatisch erneuert, wenn sich die Kopfbytes ändern. Der Wert für die Empfänger-Adresse wird aus dem ersten Kopfbyte bestimmt. Zeigt sich, daß die Nachricht physikalische Adressierung verwendet, wird das dritte Kopfbyte als Empfänger-Adresse verwendet. Anderenfalls (bei funktionaler Adressierung) wird das zweite Kopfbyte, erhöht um den Wert 1, verwendet. Auto-Empfang ist die Grundeinstellung. AT0, AT1 und AT2 [Adaptives Timing aus (0) oder ein (1) bzw. (2)] Beim Erhalt von Antworten vom Fahrzeug wartet der ELM327® traditionell die Zeit ab, die mit dem AT ST hh Befehl als Antwortzeit gesetzt wurde. Zur Sicherstellung, daß der IC mit einer großen Zahl unterschiedlicher Fahrzeuge sicher arbeitet, wurde dieser Wert konservativ (langsam) gesetzt. Obwohl er konfigurierbar ist, haben viele Anwender nicht die Möglichkeit oder Erfahrung, einen besseren Wert zu bestimmen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 10 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Die neue adaptive Zeitfunktion kann die aktuellen Antwortzeiten des angeschlossenen Fahrzeugs messen, sie lernen und die entsprechenden Einstellungen machen, um den Zeitwert zu verringern (es werden jedoch weiterhin die mit AT ST hh gemachten maximalen Werte verwendet). Im Ergebnis verdoppeln oder verdreifachen sich die Datenraten gegenüber den vorherigen Versionen. Die Grundeinstellung ist Adaptives Timing ein (1). AT2 ist eine etwas aggressivere Form von AT1 bei der Berechnung des Zeitverhaltens. BD [OBD Receive Buffer Dump] Alle vom ELM327® gesendeten oder empfangenen Nachrichten sind zeitweise in zwölf Speicherstellen, genannt OBD-Puffer, gespeichert. Es kann vorkommen, daß eine BusInitialisierung nicht erfolgreich ist oder die OBD Rx LED flackert vielleicht, aber es wird nichts an die RS232 Verbindung gesendet. In diesen Fällen kann es von Vorteil sein, lediglich zu sehen, was auf der OBD-Seite ankommt. Dieser Befehl zeigt den gesamten OBD-Puffer (Buffer) Inhalt als ein Längenbyte gefolgt von 12 anderen Datenbytes. Da nicht alle Datenbytes relevant sein müssen und eventuell mehr als 12 in den Puffer passende Bytes gesendet wurden, sollte der Wert des Längenbytes zuerst überprüft werden, bevor die Datenbytes interpretiert werden. Ist der AL Befehl aktiviert und wird eine lange Nachricht erhalten, gibt es keine Möglichkeit, die erweiterten Bytes zu erhalten. Es werden nur die ersten 12 Bytes in diesem Buffer gespeichert. Daher ist es wichtig, zunächst das erste Byte, das Längenbyte, zu untersuchen. BI [Umgehe (Bypaß) die Initialisierung und werde aktiv] Dieser Befehl sollte mit Vorsicht verwendet werden. Er aktiviert ein Protokoll ohne jegliche Initialisierung oder Handshaking. Die Initialisierung wird normalerweise zur Validierung des Protokolls verwendet und ohne dies können unvorhersehbare Ergebnisse auftreten. Der Befehl sollte nicht für allgemeine OBD-Anwendungen benutzt werden und wurde nur zur Verfügung gestellt, um ECU Simulatoren oder Training-Anwendungen herstellen zu können. BRD hh [versuche Baudraten Divisor hh] Dieser Befehl wird zum zeitweisen Einstellen des RS232 Baudraten-Teilers (Divisor) auf den mit hh übergebenen hexadezimalen Wert verwendet. Die aktuelle Baudrate (in kbps) ist 4000 geteilt durch diesen Divisor. Zum Beispiel würde eine Einstellung von 115,2 kbps einen Divisor von 4000 / 115,2 = 35 erfordern. In hexadezimaler Schreibweise ist 35 gleich 23, was der zu sendende Wet für hh ist. (Der vollständige Befehl würde dann AT BRD 23 lauten.) Da nicht alle RS232 Interfaces die Baudraten unterstützen, die der ELM327® liefern kann, wurde ein Mechanismus eingebaut, der die Baudrate automatisch auf den vorherigen Wert zurücksetzt, wenn Probleme auftauchen. Das funktioniert folgendermaßen: Der Anwender sendet einen Befehl zum Ändern der Baudrate und der ELM327® antwortet mit dem üblichen „OK“ gefolgt von einem Carriage Return (CR) Zeichen und, falls eingestellt, einem Line Feed (LF) Zeichen. Danach wartet ein interner Timer 75 Millisekunden, um sicherzustellen, daß der korrespondierende Computer ausreichend Zeit zum Ändern auf die neue Baudrate hat. Der ELM327® sendet dann seine Identifizierungsnachricht (AT I) mit der neuen Baudrate und wartet weitere 75 Millisekunden auf eine Antwort des korrespondierenden Computers. Wurde die AT I Nachricht fehlerfrei empfangen, muß der korrespondierende Computer nur ein Carriage Return (CR) Zeichen senden, das der ELM327® mit „OK“ bestätigt, um die neue Baudrate beizubehalten. Sieht der korrespondierende Computer Fehler (oder schlimmer: gar nichts), erfolgt keine Antwort und es wird auf die alte Baudrate zurück geschaltet. Läuft der Timer ohne eine erhaltene Antwort ab, wird ebenfalls auf die vorherige Baudrate zurück geschaltet. Beachten Sie, daß dieser Befehl aufgrund der geringen Antwortzeiten nicht von Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 11 ________________________________________________________________ Hand verwendet werden kann, sondern nur in einem Computerprogramm. Soll die Baudrate von Hand geändert werden, kann dies durch Ändern von PP 0C erfolgen. Die neue Baudrate bleibt erhalten bei Anwendung des Default-Wert Befehls (AT D) und auch beim Warmstart-Befehl (AT WS). Sie überlebt aber nicht einen Hardware-Reset (Versorgungsspannung ein/aus oder AT Z Befehl). Wird AT Z in der Software verwendet, sollte es auf AT WS geändert werden. BRT hh [Baudraten Timeout] Damit kann die Timeout Zeit des Timers im BRD Befehl eingestellt werden. T = hh * 5 msec. Grundwert ist 0F. CAF0 und CAF1 [CAN Automatische Formatierung aus (0) oder ein (1)] Diese Befehle bestimmen, ob der ELM327® bei der Formatierung gesendeter und empfangener CAN Daten assistieren soll. Ist die CAN Automatische Formatierung eingeschaltet (CAF1), generiert der IC Formatierungsbytes (PCI) beim Senden und entfernt sie beim Empfangen. Das bedeutet, daß OBD-Anfragen wie gewohnt (01 00 usw.) eingegeben werden können, ohne Beachtung der zusätzlichen Bytes, die CAN-Systeme benötigen. Mit Formatierung Ein werden die zusätzlichen, nicht verwendeten Bytes am Ende, die in einem Frame empfangen werden, entfernt und nur die relevanten Daten gezeigt. Ist die CAN Automatische Formatierung aus (CAF0), zeigt der ELM327® alle erhaltenen Datenbytes mit keiner Änderung außer der üblichen Konvertierung in ASCII-Zeichen. Es werden keine Bytes versteckt und keine hinzugefügt. Ähnlich müssen beim Senden einer Datenabfrage ohne Formatierung die erforderlichen zusätzlichen Datenbytes, genau wie sie gesendet werden sollen, eingegeben werden. Der ELM327® übernimmt keine weitere Formatierung außer dem Zufügen von Füllbytes, damit die erforderlichen 8 Bytes gesendet werden können. Damit sind Operationen in Systemen möglich, die nicht die PCI-Bytes benutzen, wie es ISO 15765-4 tut. Gelegentlich werden lange (Multi-Frame) Antworten vom Fahrzeug zurückgegeben. Um bei deren Analyse zu helfen, extrahiert der Auto-Format Modus die Gesamtlänge der Daten und gibt sie in einer Zeile aus. Anschließend wird jedes Segment der Nachricht mit der Segmentnummer (ein einziges hexadezimales Digit) am Beginn der Zeile mit einem Doppelpunkt (:) als Separator ausgegeben. Es können ebenfalls die Zeichen „FC:“ am Beginn der Zeile ausgegeben werden, wenn Maske und Filter geändert wurden. Das ist eine Flußkontroll-Nachricht, die der ELM327® als Antwort auf mehrzeilige Nachrichten sendet. Flußkontroll-Nachrichten werden vom ELM327® automatisch in Reaktion auf eine „First Frame“ Antwort gesendet, solange die CFC Einstellung an ist, unabhängig vom gewählten CAF1 oder CAF0 Modus. Ein anderer Nachrichtentyp (RTR, Remote Transfer Abfrage) wird automatisch im CAF1 Modus entfernt, da er keine Daten enthält und nicht von den Diagnose-Standards unterstützt wird. Ist Autoformatierung Aus (CAF0), wird RTR ausgegeben, wenn ein „Remote Transfer Abfrage“ Frame empfangen wurde. Beachten Sie, daß das Einschalten der Header-Anzeige (mit AT H1) das Formatieren CAF1 erhaltener Daten überschreibt und alle erhaltenen Bytes wie im CAF0 Modus angezeigt werden, genau wie sie erhalten wurden. Nur die ausgegebenen Daten sind betroffen, wenn sowohl CAF1 und H1 Modus aktiviert wurde, bei den gesendeten Daten wird das PCI Byte Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 12 CarCode Müller ElmCan® ELM327® ________________________________________________________________ weiterhin erzeugt und Füllbytes werden weiterhin hinzugefügt. Auto-Format Ein (CAF1) ist die Grundeinstellung des ELM327®. CF hhh [setzt den CAN ID Filter auf hhh] Der CAN Filter arbeitet zusammen mit der CAN Maske zur Bestimmung, welche Informationen vom Empfänger akzeptiert werden. Bei jeder erhaltenen Nachricht werden die eintreffenden CAN ID Bits mit den CAN Filter Bits verglichen, wenn das Masken-Bit auf „1“ steht. Treffen die relevanten Bits zu, wird die Nachricht akzeptiert und vom ELM327® verarbeitet, anderenfalls wird die Nachricht ignoriert. Die drei Nibbles des CAN Filter Befehls vereinfachen das Setzen von Filtern bei 11 Bit ID CAN Systemen. Es werden nur die 11 rechten Bits der verfügbaren Nibbles genutzt und das höchstsignifikante Bit wird ignoriert. Die Daten werden jedoch intern als 4 Bytes gespeichert und der Befehl fügt für die anderen Bytes führenden Nullen hinzu. Weitere Details siehe unter CM-Befehlen. CF hh hh hh hh [setzt den CAN ID Filter auf hhhhhh] Mit diesem Befehl können alle 4 Bytes (aktuell 29 Bits) des CAN Filters auf einmal gesetzt werden. Die 3 höchstsignifikanten Bits werden immer ignoriert und können jeden Wert enthalten. Beachten Sie, daß dieser Befehl auch zur Eingabe eines 11 Bit ID Filters genutzt werden kann, da er intern an gleicher Stelle gespeichert wird. Die Eingabe von AT CF 00 00 0h hh ist somit exakt das Gleiche wie die Eingabe des kürzeren AT CF hhh Befehls. CFC0 und CFC1 [CAN Fluß-Controlle aus (0) oder ein (1)] In der Grundeinstellung führt der ELM327® automatisch einen Zähler mit, wenn eine CAN Abfrage gesendet wurde und eine „First Frame“ Nachricht als Antwort empfangen wird, was als „Fluß-Kontroll“ Nachricht bezeichnet wird. Dies ist als Teil des ISO 15765-4 Protokolls erforderlich und interessiert den Anwender normalerweise wenig. Wird der ELM327® jedoch experimentell in einem Nicht-OBD-System Art verwendet, kann es notwendig werden, diese Fluß-Kontroll Nachrichten mit AT CFC0 abzuschalten. Die Grundeinstellung ist also CFC1 – Flußkontrolle an. Beachten Sie, daß während des Monitorings (AT MA, MR oder MT) niemals FlußkontrollNachrichten gesendet werden, egal wie die CFC Option gesetzt ist. CM hhh [setzt die CAN ID Maske auf hhh] In einem CAN System können jederzeit sehr viele Nachrichten transportiert werden. Zur Begrenzung auf die den ELM327® betreffenden Nachrichten muß ein Filtersystem zum Ausfiltern der relevanten von all den anderen Nachrichten vorhanden sein. Dies wird mit Filtern erreicht, die im Verbund mit Masken arbeiten. Eine Maske ist eine Gruppe von Bits, die dem ELM327® sagen, welche Bits in einem Filter relevant sind und zutreffen müssen und welche ignoriert werden können. Eine zutreffende Kondition wird durch Setzen des Maskenbits auf „1“ signalisiert, während eine „Ignoriere“ Kondition mit Setzen des Bits auf „0“ erzeugt wird. Diese drei Digit Version des CM-Befehls wird zur Erzeugung von MaskenWerten für 11 Bit ID Systeme verwendet, das höchstsignifikante Bit wird immer ignoriert. Beachten Sie, daß intern eine allgemeine Speicherstelle für die 29 Bit und 11 Bit Masken verwendet wird, so daß es möglich ist, den folgenden Befehl (CM hh hh hh hh) auch für 11 Bit Masken zu verwenden, falls die extra Tipparbeit nicht stört. Die Werte sind rechts justiert, daher müssen 5 führende Nullen gefolgt von den drei Masken Bytes verwendet werden. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 13 ________________________________________________________________ CM hh hh hh hh [setzt CAN ID Maske auf hhhhhhhh] Mit diesem Befehl werden Masken-Werte für 29 Bit ID Systeme zugewiesen. Siehe dazu die Beschreibung oben unter dem CM hhh Befehl, die außer der Länge identisch ist. Beachten Sie, daß die von Ihnen im ersten Digit vorgegebenen drei höchstsignifikanten Bits ignoriert werden. CP hh [setzt CAN Prioritäts Bits auf hh] Dieser Befehl wird zum Setzen der 5 höchstsignifikanten Bits in einem 29 Bit CAN ID Wort verwendet. Die anderen 24 Bits werden mit dem AT SH Befehl gesetzt. Einige Systeme verwenden mehrere dieser 5 Bits zur Zuweisung eines Prioritätswertes einer Nachricht. Daher wurde dieser Befehl so genannt. Alle Bits, die über die 5 erforderlichen Bits hinausgehen, werden ignoriert und nicht im ELM327® gespeichert, es werden nur die übergebenen 5 niedrigst-signifikanten Bits verwendet. Der Grundwert für diese Prioritätsbits ist 0x18 (Hex). CS [zeigt den CAN Status] Das CAN Protokoll erfordert das Führen einer Statistik über die Anzahl der übertragenen und empfangenen Fehler. Tritt eine signifikante Anzahl auf, kann das Gerät Offline gehen, um nicht die anderen Daten auf dem Bus zu stören. Es könnte sich sowohl um einen Hardwareals auch Software-Fehler handeln. Der AT CS Befehl zeigt sowohl den Wert des Tx Fehlerzählers als auch des Rx Fehlerzählers an. Sollte der Transmitter aus sein (Zähler größer als FF), wird OFF ausgegeben anstelle der Fehlerzahl. CV dddd [Calibriere die Voltzahl auf dd.dd Volt] Der vom ELM327® mit dem AT RV Befehl dargestellte Spannungswert kann mit diesem Befehl kalibriert werden. Der Befehl benötigt immer 4 Digits ohne Dezimalzeichen. Das Dezimalzeichen wird automatisch zwischen dem zweiten und dritten Digit angenommen. Zur Nutzung dieser Kalibrierfunktion verwendet man ein Voltmeter mit ausreichender Genauigkeit zum Ablesen der aktuellen Spannung. Gibt der ELM327® zum Beispiel permanent 12.2V aus, wenn aktuell 11.99 Volt gemessen werden, dann gibt man AT CV 1199 ein und das Gerät kalibriert sich selbst auf die eingegebene Voltzahl. Wegen der Rundung wird dann 12.0V ausgegeben. Wird eine Testspannung von weniger als 10 Volt verwendet, darf die führende Null nicht vergessen werden. 9.02 Volt müssen als AT CV 0902 eingegeben werden. D [setzt alles auf Default] Dieser Befehl setzt alle Optionen auf ihren Default-Wert oder die „Werkseinstellungen“, wie sie hier beschrieben werden. Dadurch kann mit unterschiedlichen Einstellungen experimentiert werden und schnell mit einem einzigen Befehl auf die Grundeinstellung wieder zurück gestellt werden. Zusammengefaßt sind diese Default-Werte: E ist Ein, H ist Aus und M, B, L sind entsprechend dem Spannungszustand der Beschaltung von Pins 5 bis 7 gesetzt. Der ’NO DATA’ Zeitüberschreitungswert hat seinen Default-Wert und die Zeit zwischen den BusHaltenachrichten hat ebenfalls den Default-Wert wie die Baudrate. Schließlich sind die Kopfbytes auf ihre vorgeschriebenen Werte für OBDII Operationen gesetzt und die AntwortAdressen sind entsprechend angepaßt. Das zuletzt gespeicherte Protokoll wird verwendet, möglicherweise mit Schließung eines anderen gerade verwendeten Protokolls. Wenn der Bus initialisiert ist, bleibt er aktiv. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 14 CarCode Müller ElmCan® ELM327® ________________________________________________________________ DM1 [Monitor für DM1] Das SAE J1939 Protokoll verbreitet periodisch Fehlercodes, wenn sie entdeckt werden, mit Diagnostic Mode 1 (DM1) Nachrichten. Dieser Befehl stellt den ELM327® auf kontinuierliche Überwachung für diesen Nachrichtentyp ein mit dem geforderten MultiSegment Protokoll-Transport. Beachten Sie, daß eine Kombination von Masken und Filtern einen ähnlichen Effekt haben könnte, aber keine mehrzeiligen Nachrichten erkennen würde. Der DM1 Befehl enthält die zusätzliche Logik für mehrzeilige Nachrichten. Dieser Befehl ist nur bei verwendetem CAN Protokoll (A, B oder C) verfügbar zur J1939 Formatierung. Bei allen anderen Konditionen gibt er einen Fehler zurück. DP [zeige das aktuelle Protokoll] Im Automatik-Modus kann der ELM327® selbsttätig das OBD-Protokoll des Fahrzeugs bestimmen, zu dem er eine Verbindung aufnimmt (… hoffentlich, es gibt immer wieder Fahrzeuge, die abweichende Standards verwenden). Beim Verbindungsaufbau zum Fahrzeug meldet der ELM327® nicht das gefundene Protokoll, da der Anwender diese Information zum Lesen oder Löschen von Fehlercodes usw. nicht benötigt. Gelegentlich möchte man aber den Protokolltyp kennen. Mit dem DP Befehl wird das im ELM327® ausgewählte Protokoll angezeigt, egal ob es gültig ist oder nicht. Ist die Automatik-Option ebenfalls angewählt, wird das Protokoll mit dem vorangestellten Wort „AUTO“ angezeigt. Beachten Sie, daß die aktuellen Namen im Klartext angezeigt werden und nicht die Nummern, die beim Protokoll-Einstell Befehl benutzt werden. DPN [zeige das aktuelle Protokoll numerisch] Der DPN Befehl entspricht dem DP Befehl, nur daß die Ausgabe in numerischen Zeichen wie bei AT SP oder AT TP erfolgt. Im Auto-Modus ist ein A vorangestellt, also z.B. A3. Dieser Befehl erleichtert das Schreiben von Software für den ELM327®. E0 und E1 [Echo Aus (0) oder Ein (1)] Diese Befehle bestimmen, ob am RS232 Port empfangene Zeichen zurück zum HostComputer übertragen werden (Echo) oder nicht. Um den Verkehr am RS232 Bus zu entlasten, kann es wünschenswert sein, das Echo mit dem Befehl ATE0 abzuschalten. Der Default-Wert ist E1 (Echo Ein). FC SM h [Fluß-Controlle setze Modus auf h] Dieser Befehl bestimmt, wie der ELM327® auf die erste Frame Nachricht antwortet, wenn automatische Fluß-Kontroll Antworten aktiviert ist. Das übergebene einzelne Digit h kann entweder ‚0’ (der Standardwert) für vollständig automatische Antworten, ‚1’ für vollständig Anwender definierte Antworten oder ‚2’ für Anwender definierte Datenbytes in der Antwort sein. Weitere vollständige Details und Beispiele stehen im Abschnitt Änderung Fluß-Kontroll Nachrichten. FC SH hhh [Fluß-Controlle setze Header auf …] Die Kopfbytes (Headerbytes) oder genauer gesagt die ‚CAN ID’ für die CAN Fluß-Kontroll Nachrichten können mit diesem Befehl gesetzt werden. Es werden nur die 11 rechtsstehenden der verfügbaren Bits verwendet – das meist signifikante Bit wird immer entfernt. Dieser Befehl betrifft momentan nur den Fluß-Kontroll Modus 1. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 15 ________________________________________________________________ FC SH hhhhhhhh [Fluß-Controlle setze Header auf …] Dieser Befehl wird zum Setzen der Header (oder ‚CAN ID’) Bits von 29 Bit CAN ID Systemen verwendet. Da die 8 Nibbels 32 Bits definieren, werden davon nur die rechtsstehenden 29 Bits verwendet – die meist signifikanten drei Bits werden immer entfernt. Dieser Befehl betrifft momentan nur den Fluß-Kontroll Modus 1. FC SD [1-5 Bytes] [Fluß-Controlle setze Daten auf …] Mit diesem Befehl können die in einer CAN Fluß-Kontroll Nachricht gesendeten Datenbytes gesetzt werden. Die aktuelle Software-Version erlaubt nur die Definition von ein bis fünf Datenbytes, wobei der Rest der Datenbytes in der Nachricht automatisch auf das Default CAN Filterbyte gesetzt wird. Die mit diesem Befehl übergebenen Daten werden nur im FlußKontroll Modus 1 und 2 verwendet. H0 und H1 [Header (Kopf) Aus (0) oder Ein (1)] Diese Befehle kontrollieren, ob die zusätzlichen Kopf-Informationen in den Antworten vom Fahrzeug gezeigt werden sollen oder nicht. Die Kopf-Informationen sind die vom System extra hinzugefügten Bytes, die mehr Informationen über die OBD-Nachricht enthalten können als die reinen Header-Bytes. Sie enthalten Informationen darüber, an wen die Nachricht adressiert wurde, woher sie ist und welche Priorität sie hat. Die ersten OBDII Systeme (J1850, ISO 9141 usw.) fügten immer drei zusätzliche Bytes am Beginn der Nachricht an (Header) und ein weiteres abschließendes Prüfbyte nach den Datenbytes. Das CAN System (ISO 15765-4) verwendet eine unterschiedliche Anzahl von Bytes (Prüf-Digits, PCI Bytes), aber fügt weiterhin die gleichen Informationstypen an die Nachrichten an. Als einzige Ausnahme zeigt die aktuelle Version nicht den CAN Datenlängen Code (DLC), den CRC oder die speziellen J1850 IFR Bytes an. Letztere werden von manchen Protokollen als Bestätigung zum Erhalt einer Nachricht gesendet. Diese zusätzlichen Bytes sind normalerweise vom ELM327® für den Anwender versteckt (die Grundeinstellung ist H0 – Kopfbytes aus). Um diese weiteren Informationen zu sehen, kann der Anwender mit dem ATH1 Befehl das Kopffeld einschalten. Der Default Wert ist H0 (Header Aus). I [Identifiziere dich selber] Mit diesem Befehl identifiziert sich der Chip selber, in dem er die Produktions ID wie beim Start ausgibt (dies ist z.Zt. ‚’ELM327 v1.2’). Eine Software kann dies benutzen, um festzustellen, um welchen Chip es sich handelt, ohne den gesamten IC zurücksetzen zu müssen. IB 10 [setzt die ISO Baudrate auf 10400] Mit diesem Befehl wird die ISO 9141-2 und ISO 14230-4 Daten-Baudrate auf den Grundwert von 10.400 Baud zurückgesetzt. IB 96 [setzt die ISO Baudrate auf 9600] Auf Wunsch vieler Anwender wurde dieser Befehl aufgenommen, um die Baudrate für ISO 9141-2 und ISO 14230-4 Protokolle (Nummern 3, 4 und 5) auf 9.600 Baud einzustellen und damit Anforderungen beim Initialisierungs-Datenaustausch realisieren zu können. Der Befehl kann daher für Experimente mit einigen Fahrzeugen nützlich sein. Es kann zu jeder Zeit auf die normale Baudrate von 10.400 Baud mit dem Befehl IB 10 zurückgestellt werden. IFR 0, IFR 1 und IFR 2 [IFR Kontrolle] Das J1850 Protokoll kennt ein sog. In-Frame Response (IFR) Byte, das nach jeder Nachricht gesendet wird, gewöhnlich um den richtigen Empfang der Nachricht anzuzeigen. Der Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 16 CarCode Müller ElmCan® ELM327® ________________________________________________________________ ELM327® generiert und sendet dieses Byte automatisch für Sie in der Grundeinstellung. Mit diesem Befehl kann dieses Verhalten geändert werden. Der AT IFR 0 Befehl unterbindet das Senden aller IFRs, während AT IFR 2 immer das Senden des IFR Bytes erzwingt, egal ob die Kopfbytes es erfordern oder nicht. Der AT IFR 1 Befehl setzt auf das automatische Senden von IFRs zurück, wie es vom „K“ Bit des Kopfbytes bestimmt wird. AT IFR 1 ist die Grundeinstellung. IFR H und IFR S [IFR vom Header (Kopf) oder Source (Quelle)] Der gesendete Wert in dem J1850 In-Frame Response (IFR) Byte ist normalerweise der gleiche Wert, der als Source (oder Tester) Adressbyte gesendet wird, der im Kopf der Anfrage war. Gelegentlich ist es jedoch wünschenswert, einen anderen Wert zu verwenden, und hierfür sind diese Befehle vorgesehen. Wird der Befehl AT IFR S gesendet, verwendet der ELM327 den Wert, der als Source Adresse (Adresse des Testers) definiert ist, anstelle des Wertes, der in den Kopfbytes gesendet wurde. Das ist normalerweise F1, kann aber mit PP 06 geändert werden. Meistens ist dies unnötig und der Befehl AT IFR S sollte daher mit Vorsicht verwendet werden. Der Befehl AT IFR H setzt den IFR Byte-Wert wieder auf den in den Kopfbytes gelieferten Wert zurück. AT IFR H ist die Grundeinstellung. IIA hh [setzt die ISO Initialisierungs Adresse auf hh] Die ISO 9141-2 und ISO 14230-4 Normen bestimmen, daß zu Beginn einer Sitzung mit einer ECU die Initialisierungs-Sequenz auf eine bestimmte Adresse ($33) gelenkt wird. Zum Experimentieren kann die langsame 5 Baud Sequenz mit diesem Befehl auf eine andere Adresse gelenkt werden. Soll zum Beispiel die Initialisierung der ECU mit Adresse $7A erfolgen, dann senden Sie einfach folgenden Befehl: >AT IIA 7A Der ELM327® verwendet dann diese Adresse bei den Protokollen 3 oder 4. Der Adress-Wert wird jedem Reset- oder Default-Befehl auf $33 zurück gesetzt. KW0 und KW1 [Key Word Prüfung aus (0) oder ein (1)] Der ELM327® sucht spezielle Bytes (Key Words genannt) während der ISO 9141-2 und ISO 14230-4 Initialisierungs-Sequenz. Werden diese Bytes nicht gefunden, dann ist die Initialisierung fehlgeschlagen (es erscheint „UNABLE TO CONNECT“ oder vielleicht „BUS INIT: ...ERROR“). Das ist der Fall bei nicht OBD-2 kompatibelen oder vielleicht älteren ECUs. Soll experimentiert werden, aber der ELM327® nicht die Byte-Werte in den Key Words prüfen, kann dies abgeschaltet werden mit: >AT KW0 Dann sucht der IC nur nach irgendwelcher Antwort, aber nicht nach dem aktuellen Wert in der Antwort. Damit kann eine Verbindung in einer sonst „unmöglichen“ Situation erfolgen. Das normale Verhalten kann mit dem Befehl AT KW1 zurück erlangt werden, der Grundeinstellung. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 17 ________________________________________________________________ Zu erwähnen ist, daß der ELM327® weiterhin mit KW2 antwortet, wie vorgeschrieben in den Standards, er schaut nur nicht mehr auf den Wert. L0 und L1 [Linefeeds (Zeilenschaltung) Aus (0) oder Ein (1)] Ob der ELM327® ein Zeilenschaltungszeichen nach jedem Wagenrücklauf (CR) überträgt oder nicht, wird mit dieser Option kontrolliert. Wird ATL1 gegeben, wird das Zeilenschaltungszeichen generiert und bei ATL0 nicht. Der Anwender wird diese Option eingeschaltet haben bei Verwendung eines Terminalprogramms, aber ausgeschaltet bei Verwendung eines Anwendungsprogramms, da dieses weitere Zeichen die Übertragung vom Fahrzeug verlangsamt. Die Grundeinstellung wird vom Spannungslevel am Pin 7 bestimmt, wenn der IC zurückgesetzt wird (Versorgungsspannung Ein oder ATZ) oder die DefaultWerte eingestellt werden (ATD). M0 und M1 [Memory aus (0) oder ein (1)] Der ELM327® besitzt internen, nicht-flüchtigen Speicher, in dem das zuletzt verwendete Protokoll behalten wird, sogar bei ausgeschalteter Stromversorgung. Das ist vorteilhaft, wenn oft ein bestimmtes Protokoll verwendet wird, da dieses dann das erste beim Einschalten des IC ist. Diese Speicherfunktion wird mit dem AT-Befehl M1 eingeschaltet oder vom Spannungslevel an Pin 5, der bei hohem Spannungslevel die Speicherfunktion einschaltet. Ist die Memory-Funktion aktiviert, wird jedesmal, wenn der ELM327® ein gültiges OBDProtokoll findet, dieses Protokoll gespeichert und wird zum neuen Grundwert. Ist die Memory-Funktion nicht aktiviert, startet der ELM327® immer mit dem zuletzt gespeicherten Protokoll, egal was in vorherigen Sitzungen benutzt wurde. Wird der ELM327® in Fällen benutzt, in denen immer wieder ein anderes Protokoll vorkommt, ist es besser, die Memory-Funktion auszuschalten und dann den Befehl AT SP 0 zu verwenden. Der SP 0 Befehl setzt den ELM327® zum Start in den Automatik-Protokoll Modus, der in unbekannten Umgebungen am nützlichsten ist. Der IC besitzt diese Werkseinstellung bei Auslieferung. Wenn jedoch nur ein Fahrzeug vorhanden ist, das immer wieder gescannt werden soll, ist der Speicherbefehl zum Speichern dieses FahrzeugsProtokolls am sinnvollsten. Wie schon angemerkt, wird die Grundeinstellung der Memory-Funktion vom Spannungslevel an Pin 5 beim Start oder IC-Reset bestimmt. Ist der Pin 5 an hohem Spannungspegel angeschlossen, dann ist der Grundwert der Memory-Funktion Speicher Ein, bei niedrigem Spannungslevel Speicher Aus. MA [Monitor Alle Nachrichten] Die Verwendung dieses Befehls versetzt den ELM327® in einen Bus Beobachtungsmodus, in dem er alle Nachrichten anzeigt, die er auf dem OBDII Bus sieht. Dies geschieht undefiniert solange, bis es durch eine Aktivität am RS232 Eingang gestoppt wird oder den RTS Pin. Um die Beobachtung (das Monitoring) zu beenden, kann ein einzelnes Zeichen gesendet werden, um dann zu warten, bis der ELM327® mit dem Prompt-Zeichen (’>’) antwortet. Alternativ kann der RTS Eingang auf niedrigen Spannungslevel gesetzt werden, um das Gerät auch so zu unterbrechen. Dieses Warten auf das Prompt-Zeichen ist erforderlich, da die Antwortzeit nicht vorhersehbar ist wegen der Abhängigkeit des IC von seiner augenblicklichen Beschäftigung während des Interrupts. Ist er z.B. mitten in der Ausgabe einer Zeile, wird die Zeile zunächst vervollständigt, bevor er in den Befehlsstatus geht und das Prompt-Zeichen ausgibt. Wartet er hingegen einfach auf Eingänge, kehrt er augenblicklich zurück. Das Zeichen, das den Beobachtungsstatus stoppt, wird immer verworfen und beeinträchtigt nicht die folgenden Befehle. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 18 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Im CAN Modus zeigt MA alle Nachrichten, die Filter und Maske passieren, wenn sie gesetzt wurden. Wurden keine gesetzt, versucht der ELM327® alle Nachrichten anzuzeigen, die auf dem CAN Bus laufen. Beachten Sie, daß dieser Befehl als eine Zugabe zu betrachten ist und mit Vorsicht benutzt werden sollte. Im Bus Beobachtungsstatus sendet der ELM327® keine periodischen „BusWachhalte“-Nachrichten, so daß, wenn der Bus vor Eingabe dieses Befehls initialisiert wurde, es möglich ist, daß die Fahrzeugverbindung abbricht und neu initialisiert werden muß. Der ELM327® wird den Verbindungsverlust nicht merken und muß möglicherweise mit einem ATSW00 oder einem ATZ Befehl zurückgesetzt werden. MP hhhh [Monitor für PGN hhhh] Die AT MA, MR und MT Befehle sind sehr nützlich, wenn ein spezielles Byte im Kopf einer typischen OBD Nachricht gesucht wird. Beim SAE J1939 Protokoll ist es jedoch oft wünschenswert, die Multi-Byte Parameter Gruppen Nummern (oder PGNs) zu überwachen, die im Kopf oder in den Datenbytes erscheinen können. Der MP Befehl ist ein spezieller Befehl für J1939 zur Suche nach Antworten auf eine bestimmte PGN Abfrage und folgt Multi-Segment Erscheinungen von ihnen. Die aktuelle Version des ELM327® stellt keine Möglichkeit zur Einstellung der ersten zwei Digits der PGN zur Verfügung – sie werden immer als 00 angenommen. Dem DM2 PGN wurde zum Beispiel der Wert 00FECB zugewiesen (siehe SAE J1939-73). Zur Überwachung aller DM2 Nachrichten kann der Befehl AT MP FECB gegeben werden, da der ELM327® immer annimmt, daß der PGN zwei Nullen (00) vorangestellt ist. Der Befehl ist nur verfügbar, wenn für J1939 Formatierung ein CAN Protokoll (A, B oder C) gewählt ist. Unter allen anderen Konditionen gibt er einen Fehler zurück. Beachten Sie, daß diese Version nur Antworten zeigt, auf die die Kriterien zutreffen, nicht jedoch Antworten auf Abfragen nach Informationen. MR hh [Monitor nur Receiver hh] Dieser Befehl versetzt den ELM327® ebenfalls in den Monitor Modus, zeigt jedoch nur Nachrichten, die an die mit hh bestimmte Hexadresse gesendet wurden. Dies sind Nachrichten, die diesen Wert im zweiten Byte eines traditionellen 3-Byte OBD-Headers haben oder in den Bits 8 bis 15 bei 29 Bit CAN oder in den Bits 8 bis 10 in einer 11 Bit CAN Nachricht. Jegliche RS232 Aktivität (einzelnes Zeichen) beendet das Monitoring ebenso wie beim MA Befehl. MT hh [Monitor nur Transmitter hh] Ein weiterer Monitor Befehl, der nur Nachrichten zeigt, die an die Transmitter-Adresse hh gesendet wurden. Dies sind Nachrichten, die diesen Wert im dritten Byte eines traditionellen 3-Byte OBD-Headers haben oder in Bits 0 bis 7 bei CAN Systemen. Wie beim MA und MR Monitor-Modus unterbricht jede RS232 Aktivität (einzelnes Zeichen) das Monitoring. NL [Normal Länge (7 Byte) Nachrichten] Bei Verwendung des NL Modus werden alle gesendeten und empfangenen Nachrichten auf die Standard 7 Datenbyte Länge begrenzt, ähnlich wie bei den ELM320/322/323 Chips. Für längere Nachrichten ist der AL Befehl zu verwenden. Die Grundeinstellung ist NL Ein. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 19 ________________________________________________________________ Bei den KWP Protokollen können jedoch längere Nachrichten abhängig vom eingebetteten Längenwert z.B. bei 4 Byte Headern verwendet werden. PC [Protokoll schließen] Es kann Situationen geben, in denen man das Protokoll stoppen (schließen) möchte. Vielleicht wird nicht die automatische Protollsuche verwendet und es soll manuell ein Pritokoll aktiviert und deaktiviert werden, vielleicht möchte man die Wachhalte-Nachrichten stoppen oder es liegen andere Gründe vor. Der PC Befehl wird in diesen Fällen zur Erzwingung einer Protokoll-Beendigung benutzt. PP hh OFF [schalte Prog. Parameter hh OFF (Aus)] Dieser Befehl schaltet den programmierbaren Parameter Nummer hh ab. Jeglicher mit dem Befehl PP hh SV gesetzte Wert wird nicht mehr verwendet und es treten wieder die Werkseinstellungen in Kraft. Die Zeit bis zum Eintreten des neuen Parameterwertes hängt vom Parametertyp ab. Weitere Informationen über Typen stehen im Abschnitt Programmierbare Parameter. Anmerkung: Der Befehl ‚PP FF OFF’ ist ein Sonderfall, der alle programmierbaren Parameter gleichzeitig abschaltet, als ob jeder mögliche Parameter mit PP hh OFF einzeln abgeschaltet worden ist. Es ist möglich, einige Programmierbare Parameter so zu ändern, daß es schwierig oder sogar unmöglich wird, weiter mit dem ELM327® zu kommunizieren. In solchen Fällen gibt es einen Hardware Reset zum Zurücksetzen aller Programmierbarer Parameter auf einmal. Verbinden Sie einen Jumper mit Schaltung Masse auf Pin 28 und halten ihn dort während des Einschaltens (Spannungsversorgung ein) bis die RS232 Receive LED anfängt zu blinken (das bedeutet, daß alle Pps abgeschaltet wurden). Jetzt entfernen Sie den Jumper und lassen den IC damit nun normal hochfahren. Beachten Sie, daß der PP Reset sehr schnell erfolgt. Ist der Jumper länger als ein paar Sekunden im Eingriff und die RS232 Receive LED blinkt nicht, entfernen Sie den Jumper und versuchen es erneut. Es kann ein Kontaktproblem gegeben haben. Diese Funktion ist nur in den Versionen ab v1.2 verfügbar und nicht in früheren Versionen des ELM327®. PP hh ON [schalte Prog. Parameter hh ON (Ein)] Dieser Befehl aktiviert den programmierbaren Parameter Nummer hh. Bei Aktivierung wird der mit dem Befehl PP hh SV voreingestellte Wert anstelle des werksseitigen Wertes verwendet. Man beachte, daß alle programmierbaren Parameterwerte werksseitig auf ‚FF’ gesetzt sind, so daß das Aktivieren eines programmierbaren Parameters ohne vorherige Wertzuweisung zu unvorhersehbaren Ergebnissen führen kann. Die Zeit bis zum Eintreten eines neuen Parameterswertes ist von dessen Typ abhängig. Weitere Informationen über Typen stehen im Abschnitt Programmierbare Parameter. Anmerkung: Der Befehl ‚PP FF ON’ ist ein Sonderfall, der alle programmierbaren Parameter gleichzeitig einschaltet. PP xx SV yy [Program. Parameter xx setzen auf Value (Wert) yy] Mit dem Befehl wird dem programmierbaren Paramter Nummer xx der Wert yy zugewiesen. Das System kann diesen Wert aber erst verwenden, wenn der programmierbare Parameter aktiviert ist. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 20 CarCode Müller ElmCan® ELM327® ________________________________________________________________ PPS [Programmierbare Parameter Summary (Übersicht)] Mit diesem Befehl wird der gesamte Bereich der aktuellen programmierbaren Parameter angezeigt (selbst wenn sie noch nicht implementiert sind). Jeder wird als PP Wert angezeigt, gefolgt von Semikolon und dem zugewiesenen Wert. Dann folgt ein Digit – entweder ‚N’ oder ‚F’ zum Zeichen, daß es aktiviert (N, ON) oder deaktiviert (F, OFF) ist. R0 und R1 [Antworten aus (0) oder ein (1)] Diese Befehle kontrollieren die automatische Ausgabe der Antworten durch den ELM327®. Sind Antworten ausgeschaltet, wartet der ELM327® auf keinerlei Reaktion des Fahrzeugs nach einer gesendeten Abfrage und kehrt sofort in den Wartestatus für weitere RS232 Befehle zurück. Dies ist verwendbar, wenn mit dem ELM327® blinde Befehle in einer Nicht-OBDAnwendung gesendet werden sollen oder in einer ECU Simulation in einer Lernumgebung. Es wird nicht empfohlen, diesen Befehl sonstwie zu verwenden, da ein Fahrzeug Schwierigkeiten bekommen kann, wenn es ein Bestätigungsbyte erwartet und dies niemals bekommt. Die Grundeinstellung ist R1 (Antworten Ein).. RV [Lese (Read) Eingangsspannung Volt] Mit diesem Befehl wird die Spannung an Pin 2 gelesen und in einen numerischen Wert umgewandelt. Die aktuelle Spannung an Pin 2 darf die Versorgungsspannung des ELM327® nicht übersteigen (normalerweise 0 bis 5 Volt). Es wird grundsätzlich angenommen, daß der Eingang zur zu messenden Spannung über einen 47 Kilo-Ohm und 10 Kilo-Ohm Widerstandsteiler (mit dem 10 Kilo-Ohm Widerstand von Pin 2 zu Vss) erfolgt und daß die ELM327® Versorgungsspannung 5 Volt beträgt. Damit kann die Messung einer Eingangsspannung von bis zu 28 Volt erfolgen mit einer nicht kalibrierten Genauigkeit von typisch etwa 2 %. SH yzz [Setzt den Header auf yzz] Erläuterung siehe unter SH xx yy zz. SH xx yy zz [Setzt den Header auf xx yy zz] Dieser Befehl gestattet es dem Anwender, die Werte zu kontrollieren, die als die drei Kopfbytes (Header) in einer Nachricht gesendet werden. Diese Bytes haben normalerweise zugewiesene Werte und müssen nicht verändert werden, aber es kann Situationen geben, wo es gewünscht wird, diese Werte zu verändern. Dies trifft insbesondere beim Experimentieren mit physikalischen Adressierungen zu. Der Wert der hexadezimalen Digits xx wird für das erste oder Prioritäts/Typ-Byte verwendet, yy für das zweite oder Empfänger-/Ziel-Byte und zz für das dritte oder Sender-/Quell-Byte. Diese bleiben bestehen, bis sie geändert werden oder auf ihre Default-Werte mit den Befehlen ATD, ATWS oder ATZ zurückgesetzt werden. Die Standard Kopfbyte-Werte sind für Fahrzeuge mit ISO 9141 Protokoll 68 6A F1, während sie für ISO 14230 (KWP2000) Cn 33 F1 sind, wobei n die Anzahl der Datenbytes der Nachricht repräsentiert. Beachten Sie, daß der Anwender niemals das Längenbyte bei ISO 14230 Systemen setzen muß, da dies automatisch vom ELM327® vorgenommen wird. Dieser Befehl war bereits in den ELM32x implementiert und erlaubt das Experimentieren mit den Kopfbytes, wobei die periodischen „Wachhalte“-Nachrichten nicht tangiert werden. Dazu kann jeweils ein eigener Satz von Kopfbytes für die periodischen „Wachhalte“-Nachrichten und die Standard Abfragen verwendet werden. Dies geschieht zunächst durch eine Zuweisung von Kopfbytes (oder dem Belassen der Default-Werte) und daran anschließender Initialisierung des OBDII Bus. Welche Kopfbytes auch immer zur Initialisierung des OBDII Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 21 ________________________________________________________________ Bus verwendet werden, diese werden für alle weiteren periodischen „Wachhalte“-Nachrichten verwendet, bis der IC zurückgesetzt wird (oder mit ATSW00 abgeschaltet werden). Die Verwendung von ATSH nach der Bus Initialisierung betrifft nur die folgenden Abfragen und hat keinen Effekt auf die periodischen „Wachhalte“-Nachrichten. Beim ELM327® kann er nun für alle Protokolle verwendet werden, egal ob J1850, ISO 9141, ISO 14230 oder ein CAN System. Das CAN System benutzt diese drei Bytes zum Füllen der Bits 0 bis 23 des ID-Wortes in einem 29 Bit ID oder verwendet nur die 11 rechtsstehenden Bits bei einem 11 Bit CAN ID. Die weiteren 5 Bits für ein 29 Bit System werden vom AT CP Befehl zur Verfügung gestellt, da sie sich selten ändern. Die Eingabe eines 11 Bit ID Wortes (Header) erfordert normalerweise das Hinzufügen führender Nullen (z.B. AT SH 00 07 DF), aber ist nicht notwendig. Dafür kann die Variante des SH Befehls (SH yzz), die 3 Digits akzeptiert, verwendet werden. Der ELM327® nimmt also auch Eingaben von 3 Digits und benutzt intern die 11 rechtsstehenden Bits, fügt führende Nullen hinzu und speichert es an den Header Speicherorten. T SH 7DF ist zum Beispiel ein gültiger Befehl und verwendbar beim Arbeiten mit 11 Bit CAN Systemen. Er wird aktuell als Header-Bytes 00 07 DF intern gespeichert. Beim Zuweisen von Werten für die Kopfbytes der KWP Protokolle (4 und 5) muß sorgfältig beim Setzen des ersten (xx) Wertes vorgegangen werden. Der ELM327® fügt immer die Nummer der Datenbytes für Sie ein, aber wie das getan wird, hängt von der Werten ab, die Sie bestimmen. Wenn das zweite Digit des ersten Kopfbytes (xx) etwas anderes als 0 (Null) ist, dann nimmt der ELM327® an, daß Sie den Längenwert an diesem Punkt einfügen möchten. Mit anderen Worten, die Übergabe eines eines Längenwertes im ersten Kopfbyte veranlaßt den ELM327® zur Verwendung von traditionellen drei Byte-Headern, in denen die Länge im ersten Byte gespeichert ist. Wird der Wert 0 für das zweite Digit des ersten Kopfbytes übergeben, dann nimmt der ELM327® an, daß der hierfür Wert 0 bleiben soll und ein viertes Kopf-(Längen)-Byte in die Nachricht eingefügt wird. Das entspricht zwar nicht dem ISO 14230-4 OBD Standard, wird aber von vielen KWP2000 Systemen für (nicht-OBD) Übertragung verwendet und kann daher beim Experimentieren nützlich sein. SP h [Setzt Protokoll auf h] Dieser Befehl setzt den ELM327® intern auf das Arbeiten mit dem Protokoll „h“ und sichert es als Grundwert. Dieses Protokoll wird dann unabhängig von der Einstellung mit AT M0/M1 gespeichert. Zur Zeit gibt es folgende gültige Protokolle: 0 – Automatic 1 – SAE J1850 PWM (41,6 kBaud) 2 – SAE J1850 VPW (10,4 kBaud) 3 – ISO 9141-2 (5 Baud Init, 10,4 kBaud) 4 – ISO 14230-4 KWP (5 Baud Init, 10,4 kBaud) 5 – ISO 14230-4 KWP (Fast Init, 10,4 kBaud) 6 – ISO 15765-4 CAN (11 Bit ID, 500 kBaud) 7 – ISO 15765-4 CAN (29 Bit ID, 500 kBaud) 8 – ISO 15765-4 CAN (11 Bit ID, 250 kBaud) 9 – ISO 15765-4 CAN (29 Bit ID, 250 kBaud) Die Einstellung Automatic (Protokoll 0) ist eine spezielle Einstellung, die den ELM327® veranlaßt, automatisch alle Protokolle zu probieren auf der Suche nach einem gültigen Protokoll. Die Suche beginnt mit Protokoll 1 und geht sequentiell weiter, bis ein Modus Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 22 CarCode Müller ElmCan® ELM327® ________________________________________________________________ korrekt initialisiert ist. Ist beim Finden eines gültigen Protokolls die Memory-Funktion eingeschaltet, dann wird dieses Protokoll gespeichert und wird zum neuen Startpunkt. Wurde so gespeichert, dann ist die automatische Suche weiterhin eingeschaltet und wenn der ELM327® beim nächsten Mal keine Verbindung zu dem gespeicherten Protokoll bekommt, sucht er wiederum weiter, aber jetzt beginnend von diesem Startpunkt. Ist ein anderes Protokoll (außer Automatic) mit diesem Befehl gewählt (z.B. AT SP 3), dann ist dieses Protokoll der Grundwert und das einzige Protokoll, das der ELM327® benutzt. Fehler bei der Verbindung in dieser Situation führen zu den von den anderen ELM-Chips bekannten Antworten wie BUS INIT: … ERROR und es wird kein anderes Protokoll mehr versucht. Dies ist von Vorteil, wenn das Fahrzeug nur ein bekanntes Protokoll unterstützt. SP Ah [Setzt Protokoll auf Auto, h] Diese Version des SP Befehls erlaubt die Einstellung eines Start (Grundwert) Protokolls, während weiterhin die Möglichkeit besteht, automatisch nach einem gültigen Protokoll bei fehlgeschlagener Verbindung mit dem Grundwert zu suchen. Hat Ihr Fahrzeug zum Beispiel ISO 9141-2, aber Sie möchten gelegentlich den ELM327® für andere Fahrzeuge verwenden, wählen Sie AT SP A3 und das Grundprotokoll ist immer 3 mit der Möglichkeit, nach anderen zu suchen. Es darf dabei nicht vergessen werden, die Memory-Funktion auszuschalten, denn sonst wird ein anderes Protokoll der neue Grund- oder Startwert. Der SP Befehl sichert das Protokoll auch, wenn die Memory-Funktion ausgeschaltet ist. Bei der Eingabe kann A und h umgekehrt sein, d.h. AT SP A3 kann auch als AT SP 3A eingegeben werden. SR hh [Setzt die Empfänger Adresse auf hh] Abhängig von der Applikation mag es für den Anwender wünschenswert sein, die Adresse zu bestimmen, an die der ELM327® antworten soll. Mit diesem Befehl wird der AR Modus abgeschaltet und zwingt den IC, nur noch Antworten für die Adresse hh zu akzeptieren. Vorsicht mit dieser Einstellung, da abhängig von der gewählten Adresse eine Nachricht (bestätigt mit einer IFR) akzeptiert werden kann, die ursprünglich für ein anderes Modul vorgesehen war. ST hh [Setzt Timeout auf hh] Nach dem Senden einer Abfrage wartet der ELM327® eine bestimmte Zeit, bevor festgestellt wird, daß vom Fahrzeug keine Antwort kommt (die ’NO DATA’ Antwort). Selbst wenn eine Antwort kommt, wartet der ELM327® diese Zeitspanne ab, um sicherzustellen, daß keine weiteren Antworten kommen. Abhängig von der Applikation (und der Priorität der Abfrage) mag der Anwender diese Zeitüberschreitungs-Periode modifizieren wollen, um mehr oder weniger Zeit zu erlauben. Mit dem ST Befehl ist das möglich. Die aktuell benutzte Zeit, bevor eine Zeitüberschreitung auftritt, ist (ungefähr) 4 Millisekunden mal dem Bytewert des übergegebenen hexadezimalen Arguments. Die Verwendung des Wertes FF ergibt damit eine maximale Zeit von ungefähr 1020 ms. Beachten Sie, daß das Setzen des Wertes 00 (Null) nicht erlaubt ist. Dieser wird intern auf den Grundwert hexadezimal 32 (dezimal 50) entsprechend dem Zeitüberschreitungswert 200 ms gesetzt. SW hh [Setzt Wakeup (Wachhaltung) auf hh] Ist einmal eine Verbindung zum Fahrzeug hergestellt, muß es alle paar Sekunden einen Datenfluß geben, damit die Verbindung nicht wieder „einschläft“. Der ELM327® generiert automatisch Dummy „Wachhalte“-Nachrichten, um die Verbindung aufrecht zu erhalten, Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 23 ________________________________________________________________ wenn der Anwender keinerlei Daten abfragt. Die Antworten zu diesen WachhalteNachrichten werden immer ignoriert und nicht angezeigt. Die Zeit zwischen den periodischen Nachrichten kann in Schritten von 20 ms mit dem AT SW hh Befehl justiert werden, wobei hh ein hexadezimaler Wert zwischen 00 und FF ist. Die maximale Zeit wird mit dem hexadezimalen Wert FF (oder dezimal 255) erreicht und beträgt 5,12 Sekunden. Der Grundwert ist 7D (oder dezimal 125), was 2,5 Sekunden zwischen den Nachrichten entspricht. Beachten Sie, daß ein Wert von 00 (Null) als besonderer Fall betrachtet wird und mit Vorsicht benutzt werden sollte. Es wird zum Abbruch aller periodischen Nachrichten intern verwendet und sagt dem ELM327® intern, daß der Bus nicht länger aktiv ist. Dies kann nützlich sein, wenn das Fahrzeug eine Zeitüberschreitung hat (vielleicht bei Verwendung des ATMA Befehls) und der Anwender möchte den ELM327® darüber informieren, ohne einen vollständigen Reset durchzuführen. Der folgende Kommunikationsversuch mit dem Fahrzeug nach einen ATSW00 Befehl führt zu einer neuen Initialisierungs Sequenz des ELM327®. TP h [(Try) Versuche Protokoll h] Dieser Befehl ist identisch zum SP Befehl, nur wird das gewählte Protokoll nicht sofort im internen Speicher gesichert und verändert so nicht die Grundeinstellung. Das kann beim Experimentieren hilfreich sein. Beachten Sie, daß bei eingeschalteter Memory-Funktion (AT M1) das neue Protokoll bei erfolgreicher Verbindung gespeichert wird. TP Ah [(Try) Versuche Protokoll h mit Auto] Dieser Befehl ist ähnlich dem SP Ah Befehl, nur das gewählte Protokoll ist lediglich temporär und wird nicht im internen nicht-flüchtigen Speicher (EEPROM) gespeichert. Das gewählte Protokoll wird versucht und, wenn die Initialisierung fehlschlägt, geht der ELM327® automatisch sequentiell durch alle Protokolle zum Verbindungsversuch. WM xx yy zz aa [bb | bb cc] [Setzt Wachhalte Nachricht (Wakeup Message)] Dieser Befehl gestattet das Überschreiben der internen (Grundwerte) Einstellungen für die Wachhalte Nachricht (manchmal auch als periodische Leerlauf-Nachricht bezeichnet). Der Anwender muß drei Kopfbytes (Header, xx yy zz) vorgeben und mindestens ein Datenbyte (aa). Die aktuelle Version akzeptiert ein, zwei oder drei Datenbytes, wie oben gezeigt. Das Prüfsummen-Byte muß nicht übergeben werden, das erzeugt der ELM327® automatisch. Die so erzeugte Nachricht wird periodisch mit der vom AT SW Befehl gesetzten Datenrate gesendet. Der ELM327® gibt niemals Antworten auf diesen Sendebefehl aus. Die mit diesem Befehl zugewiesenen Byte-Werte beeinflussen nicht andere Werte von anderen Befehlen (AT SH) und haben keinen Effekt auf die Übertragung normaler OBD Abfrage-Nachrichten. WS [Warm Start] Dieser Befehl verursacht einen kompletten Software-Reset des ELM327® ähnlich dem ATZ Befehl, aber ohne den Lampentest der LED’s. Anwender können dies zum schnellen Zurücksetzen verwenden. Z [Setzt alles zurück] Dieser Befehl verursacht einen kompletten Reset des Chips, als ob die Spannungsversorgung ab und wieder angeschaltet würde. Alle Einstellung kehren zu ihren Grundwerten (Default) Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 24 CarCode Müller ElmCan® ELM327® ________________________________________________________________ zurück und der Chip wird in den Leerlaufmodus versetzt, in dem er auf Zeichen vom RS232 Bus wartet. @1 [zeigt die Hersteller-Zeichen] Dieser Befehl zeigt die Hersteller-eigenen Identifikationszeichen, die eine bestimmte Version eines Herstellers bezeichnen. Die folgende Übersicht zeigt alle Befehle des aktuellen ELM327®. Zum besseren Verständnis wurden diese in vier Gruppen angeordnet, ohne eine Bedeutung zu haben, wie diese genutzt werden sollten – es dient nur zur Klarheit. Die Zusammenstellung mag beim Experimentieren mit dem IC nützlich sein. Übersicht ELM327® AT Befehle Allgemein: BRD hh – versuche Baudraten Divisor hh BRT hh – setze BRD Timeout D – setzt alles auf Default-Werte E1/0 – Echo Ein/Aus I – zeigt die Identifikations-Zeichen L1/0 – Zeilenschaltung Ein/Aus WS – Warmstart Z – setzt alles zurück <CR> - wiederholt letzten Befehl J1850 spezifisch: IFR 0/1/2 – IFR aus, auto oder ein IFR H/S – IFR-Wert von Header oder Quelle ISO spezifisch: IB 10 – setzt ISO Baudrate auf 10400 IB 96 – setzt ISO Baudrate auf 9600 IIA hh – setzt ISO (slow) Init Adresse auf hh KW0/1 – Key Word Prüfung aus oder ein SW hh – setzt Wachhaltezeit (hh * 20 ms) WM xx yy zz aa [bb | bb cc] - setzt Wachhalte-Nachricht CAN spezifisch: CAF1/0 – CAN autom. Formatierung Ein/Aus CF hhh – setzt CAN ID Filter auf hhh CF hh hh hh hh – setze CAN ID Filter CFC1/0 – CAN Flußkontrolle Ein/Aus CM hhh – setzt CAN ID Maske auf hhh CM hh hh hh hh – setzt CAN ID Maske CP hh – setzt CAN Priorität CS – zeigt CAN Status DM1 – (J1939) Monitor für DM1 Nachrichten FC SM h - setzt Fluß-Kontroll Modus auf h FC SH hhh – setzt Fluß-Kontroll Header auf hhh FC SH hh hh hh hh – setzt Fluß-Kontroll FC SD [1 bis 5 DatenBytes] – setzt Fluß-Kontroll Header auf hhhhhhhh Daten auf […] OBD allgemein AL – erlaubt >7 Byte Nachrichten AT0/1/2 – adaptives Timing aus, ein, restr. BI – Beipaß Initialisierung H1/0 – Header Ein/Aus MA – Monitor Alles MT hh – Monitor Transmitter PC – Protokoll Ende SH xyz – Setze Header SP h – Setze Protokoll ST hh – Setze Timeout SR hh – Setze Receive Adresse hh TP Ah – Versuche Protokoll AR – automatisch Receive BD – OBD Speicher Dump DP – zeigt akt. Protokoll DPN – zeigt akt. Protokoll numerisch M1/0 – Memory Ein/Aus MR hh – Monitor Receiver NL – Normal lange Nachrichten R1/0 – Antworten Ein/Aus SH xx yy zz – Setze Header SP Ah – Setze Protokoll TP h – Versuche Protokoll Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 25 ________________________________________________________________ Verschiedenes CV dddd – Kalibriere Spannung RV – Lese Spannung PP xx ON/OFF – aktiviere/deaktiviere programmierbaren Parameter xx PP FF ON/OFF – aktiviere/deaktiviere alle programmierbaren Parameter PP xx SV yy – setze Wert yy für programmierbaren Parameter xx PPS – Ausgabe PP Übersicht @1 – Zeige Hersteller Zeichen Batterie-Spannung lesen Bevor zum OBD-Teil gekommen wird, soll an einem Beispiel gezeigt werden, wie ATBefehle benutzt werden. Es wird vorausgesetzt, daß der ElmCan® Bausatz fertig zusammengebaut ist oder ein Fertiggerät zur Verfügung steht. Die Schaltung besitzt einen Anschluß zum Lesen der Fahrzeug-Batteriespannung, dessen Funktion Sie nützlich finden werden. Beim Blick in die AT-Befehlsliste finden Sie einen RV Befehl (Read Voltage). Diesen Befehl müssen Sie verwenden. Stellen Sie zunächst sicher, daß das Prompt-Zeichen vorhanden ist (das ist das “>“ Zeichen). Geben Sie dann “AT“ gefolgt von “RV“ ein und drücken Sie Enter: >at rv 12.6V > Beachten Sie, daß wir hier keine Großbuchstaben zur Eingabe verwendet haben. Dem ELM327® ist es egal, ob Sie Groß- oder Kleinbuchstaben oder gar eine Mischung daraus verwenden. Außerdem haben wir hier ein Leerzeichen zwischen AT und RV benutzt, das nur zur besseren Lesbarkeit dient. Dem ELM327® ist es auch egal, ob und wieviele Leerzeichen zwischen AT und RV benutzt werden. In der Werkseinstellung hat der ELM327® eine Genauigkeit von etwa 2%. Das ist meist ausreichend. Soll die Genauigkeit höher sein, ist eine Kalibrier-Möglichkeit mit dem Spannungs-Kalibrier-Befehl gegeben. Zum Ändern der internen Kalibier-Konstante, muß die augenblickliche Batterie-Spannung genauer bekannt sein, als sie der ELM327® anzeigt. Mit vielen qualifizierten DigitalVoltmetern kann das erreicht werden., jedoch sollte die Genauigkeit verifiziert werden, bevor irgendwelche Änderungen vorgenommen werden. Vielleicht zeigt also Ihr angeschlossenes Multimeter 12,47 Volt an und Sie möchten, daß der ELM327® das auch anzeigt. Kalibrieren Sie daher einfach auf diese Spannung mit dem CV Befehl: >at cv 1247 OK > An diesem Punkt wird der interne Wert geändert und der ELM327® weiß, daß die derzeitige aktuelle Eingangsspannung 12,47 V ist. Der Dezimalpunkt (US-Notation) soll beim CV Befehl nicht mit eingegeben werden, da der IC weiß, daß er zwischen dem 2. und 3. Digit sein muß. Zur Überprüfung der Änderung lesen Sie die Spannung nochmals: >at rv 12.5V > Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 26 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Der ELM327® rundet die Messung immer auf eine Dezimalstelle, so daß 12,47 V tatsächlich als 12,5 V angezeigt werden. Beachten Sie, daß die zweite Dezimalstelle immer intern und zu Berechnungen verwendet wird, aber niemals angezeigt wird. Der ELM327® kann mit jeder verfügbaren Referenzspannung kalibriert werden, beachten Sie aber, daß der CV Befehl immer 4 Zeichen für die eingegebene Spannung erwartet. Wird eine 9 Volt Batterie als Referenz verwendet und der Wert ist aktuell 9,32 Volt, dann muß eine führende Null zur Kalibrierung des IC verwendet werden: >at cv 0932 OK > Andere AT-Befehle werden in der gleichen Art verwendet. Geben Sie einfach die Buchstaben A und T ein, gefolgt von dem gewünschten Befehl und den eventuell zu diesem Befehl erforderlichen Parameter und drücken Sie dann Enter. Leerzeichen können, so oft Sie zur Lesbarkeit dienen sollen, eingegeben werden, da sie vom ELM327® nicht beachtet werden. Bus Initialisierung Der ELM327® sucht sich im Auto-Modus automatisch unter 9 möglichen Protokollen bzw. Protokollvarianten das im Fahrzeug vorhandene Protokoll aus. Die Reihenfolge der abgefragten Protokolle entspricht der unter dem AT Befehl SP gezeigten Liste, deren Anfangspunkt entsprechend der augenblicklichen Konfiguration des Chips unterschiedlich sein kann. Es ist ebenfalls möglich, ein Protokoll gezielt auszuwählen. Standards wie ISO 9141-2 und ISO 14230-4 (KWP2000) benötigen eine Initialisierung des Fahrzeug-Bus bevor eine Kommunikation erfolgen kann. ISO 9141 hat hierzu eine kurze Phase (2 bis 3 Sekunden mit 5 Baud), während ISO 14230 dieses und eine schnellere Alternative bietet. In jedem Fall muß die Kommunikation mindestens alle fünf Sekunden stattfinden, um den Bus „am Leben“ zu erhalten. Der ELM327® übernimmt diese Bus-Initialisierung und diese „Lebenserhaltung“ automatisch ohne Zutun des Anwenders. Der ELM327® unternimmt die Bus-Initialisierung erst bei der Sendung des ersten OBD-Befehls in sequentieller Reihenfolge der Liste. Während dieses automatischen Initialisierungs-Prozesses erscheint folgende Meldung: SEARCHING Wenn eine der Initialisierungsmethoden erfolgreich war, erfolgt die Antwort "OK". Wenn dies aber fehlschlägt, erscheint nur eine Fehlermeldung. Häufig vorkommender Fehler ist es, die Zündung nicht einzuschalten, bevor versucht wird, mit dem Fahrzeug „zu sprechen“. Einmal initialisiert, hält der ELM327® den Bus am Leben, ohne daß der Anwender eingreifen muß. An den installierten LED kann alle fünf Sekunden bei einem ISO-Protokoll eine „Dummy“-Nachricht erkannt werden, die den Bus am Leben erhält, wenn sonst keine weiteren Nachrichten gesendet werden. Da der RS232-Eingang die höchste Priorität innerhalb des ELM327® hat, ist es vorstellbar, daß eine Kombination fehlerhafter Eingaben den Chip einen Wachruf verpassen lassen, aber dies ist sehr unwahrscheinlich. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 27 ________________________________________________________________ In der Grundeinstellung sendet der ELM327® alle 3 Sekunden eine Wachhalte-Nachricht, aber dies kann mit dem AT SW Befehl eingestellt werden. Der Inhalt der WachhalteNachricht kann ebenfalls mit dem AT WM Befehl eingestellt werden. Normalerweise muß der Anwender aber keine dieser Einstellungen vornehmen, da die Grundeinstellungen mit fast allen Systemen arbeiten. Ist die Auto Option ausgeschaltet, sehen Sie eine Nachricht ähnlich dieser: BUS INIT: … Die drei Punkte erscheinen nur bei der langsamen Initialisierung, bei der schnellen Initialisierung gibt es keine drei Punkte (KWP2000 slow oder KWP2000 fast): Die untere Skizze zeigt einen Überblick über den automatischen Initialisierungs-Prozeß unter der Annahme, daß die automatische Initialisierung ohne festgelegten Startpunkt aus einer vorherigen Initialisierung mit Memory-Funktion stattfindet. Abhängig von der Konfiguration durch AT-Befehle des ELM327® oder seiner letzten Verwendung kann der Eintrittspunkt an anderer Stelle liegen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 28 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Anforderung zur Bus-Initialisierung Versuch mit PWM Initialisierung Versuch mit langsamer ISO Initialisierung ja Antwo rt erhalte KWP oder ISO ? Bus initialisiert, weiter mit Befehlen nein Versuch mit VPW Initialisierung nein Versuch mit schneller ISO Initialisierung ja positive Antwort erhalten ja ja Keep-Alive Header setzen ja positive Antwort erhalten positi ve Antwo Bus initialisiert, weiter mit Befehlen nein nein Bus initialisiert, weiter mit Befehlen Versuch mit CAN Initialisierung 500 kB ja positive Antwort erhalten 11 Bit ID oder Bus initialisiert, weiter mit Befehlen nein Bus initialisiert, weiter mit Befehlen Versuch mit CAN Initialisierung 250 kB ja positive Antwort erhalten 11 Bit ID oder Bus initialisiert, weiter mit Befehlen nein Bus initialisiert, weiter mit Befehlen Ausgabe: ERROR Initialisierung des Bus Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 29 ________________________________________________________________ Wachhalte-Nachrichten Nach dem Aufbau einer ISO 9141 oder ISO 14230 Verbindung müssen periodisch Daten zur Aufrechterhaltung der Verbindung gesandt werden. Werden die üblichen Abfragen und Antworten gesendet, ist das ausreichend, aber gelegentlich müssen Nachrichten versendet werden, um den Abbruch der Verbindung durch fehlenden Datenverkehr innerhalb einer Zeitspanne zu vermeiden. Diese periodischen Nachrichten nennen wir Wachhalte-Nachrichten. Sie erhalten die Verbindung am Leben und verhindern den Rückfall in den Leerlauf- oder Schlaf-Modus. Mitunter findet man auch die Bezeichnung Leerlauf-Nachrichten. Der ELM327® erzeugt und sendet diese Nachrichten automatisch, wenn sonst kein Datenverkehr erkennbar ist. Sie müssen sich daher um nichts kümmern. Besteht eine Verbindung, können Sie aber am periodischen Flackern der LEDs sehen, daß der ELM327® diese Nachrichten sendet. Wollen Sie den Inhalt dieser Nachrichten sehen, vollziehen Sie einen Buffer Dump. Beachten Sie, daß der ELM327® niemals die Antworten auf diese Wachhalte-Nachrichten anzeigt. Die Normen bestimmen, daß bei keiner Aktivität innerhalb von 5 Sekunden die Verbindung geschlossen werden kann. Um dies zu verhindern, sendet der ELM327® in der Grundeinstellung eine Wachhalte-Nachricht nach 3 Sekunden ohne Bus-Aktivität. Dieses Zeitintervall ist programmierbar, falls etwas anderes gewünscht wird. Siehe dazu unter dem AT SW Befehl. Wie beim ELM323 erlaubt der ELM327® dem Anwender den Inhalt der zu sendenden Wachhalte-Nachricht zu ändern. Dazu senden Sie dem ELM327® einfach mit dem AT WM Befehl die zu ändernde Nachricht. Sollen z.B. die Daten-Bytes 44 55 mit den Kopf-Bytes gesetzt auf 11 22 33 gesendet werden: >AT WM 11 22 33 44 55 Von da ab enthält jede vom ELM327® gesendete Wachhalte-Nachricht den Inhalt wie oben. Sie können dies so oft machen wie gewünscht. Es muß nur immer die komplette Nachricht übergeben werden, das heißt, drei Kopf-Bytes gefolgt von einem, zwei oder drei Daten-Bytes. Sie brauchen sich nicht um die Prüfsumme zu kümmern, da diese automatisch für Sie angehängt wird. OBD-Befehle Wenn die am RS232-Bus empfangenen Bytes nicht mit den Buchstaben „A“ und „T“ beginnen, wird angenommen, daß es sich um Befehle für den OBD-Bus handelt. Die Bytes werden dann getestet, um sicherzustellen, daß es sich um richtige Paare hexadezimaler Digits handelt, und die hexadezimalen Digits werden zum Senden zu einzelnen Bytes zusammengestellt. Man erinnere sich jedoch, daß keine Prüfung auf Richtigkeit der OBDBefehle erfolgt - Daten werden so weitergesandt, wie sie empfangen wurden. OBD-Befehle werden tatsächlich als Datenpaket zum Fahrzeug gesandt. Die Standards verlangen, daß jede Nachricht drei Kopf-Bytes und eine Fehler-Checksumme bzw. bei CANProtokollen einen spezifischen Header enthält. Der ELM327® fügt diese Header und Prüfsummen automatisch ohne Zutun des Anwenders ein. Diese Standard-Werte für die Kopf- Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 30 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Bytes (Header-Bytes) sind in den meisten Fällen ausreichend, können aber geändert werden (siehe Abschnitt über Fortgeschrittene Datenaufnahme). Um die Zusatz-Bytes einer vom Fahrzeug empfangenen Nachricht zu sehen, kann der interne ATH1 Befehl verwendet werden. Gelegentlich haben Fahrzeuge mehr als ein Modul, das auf Anfragen antwortet, daher ist es nützlich zu sehen, welches Modul geantwortet hat. Dazu schaltet man die Anzeige von Zusatz-Bytes ein und bestimmt das dritte Byte der Antwort. Dies ist die Adresse des Absenders. Die meisten OBD-Befehle für das Fahrzeug haben eine Länge von ein oder zwei Bytes, aber einige können drei oder mehr Bytes lang sein. Der ELM327® kann sieben Datenbytes senden entsprechend 14 hexadezimalen Digits, was nach den Standards der maximal erlaubten Zahl entspricht. Der ELM327® kann aber jetzt auch bei Verwendung des AT AL-Befehls 8 Datenbytes senden und eine unbegrenzte Byte-Anzahl empfangen. Versuche, eine ungerade Anzahl von Digits oder zu viele zu senden, führen zu einem Syntax-Fehler - der gesamte Befehl wird verworfen und ein einzelnes Fragezeichen angezeigt. Für den gesamten Datenaustausch mit dem ELM327® werden hexadezimale Digits verwendet, da dieses Datenformat in den relevanten SAE und ISO Standards benutzt wird. Es ist konsistent zu den Modus Abfragelisten und ist das meist benutzte Format zur Darstellung der Ergebnisse. Mit etwas Praxis ist es nicht sehr schwer, mit Hex-Werten umzugehen, aber viele möchten eine Umrechnungstabelle oder einen Rechner neben sich liegen haben. Alle Anwender müssen jedoch die Werte in irgendeiner Art und Weise bearbeiten (Bytes zusammenziehen und durch 4 teilen, um U/min zu bekommen; durch 2 teilen, um Grad Zündvoreilung zu bekommen usw.), so daß eine Software hilfreich ist, die all das übernimmt. Hexadezimale Umrechnung Dez. Hex. Dez. 0 00 10 1 01 11 2 02 12 3 03 13 4 04 14 5 05 15 6 06 16 7 07 17 8 08 18 9 09 19 usw. Hex. 0A 0B 0C 0D 0E 0F 10 11 12 13 Dez. 20 21 22 23 24 25 26 27 28 29 Hex. 14 15 16 17 18 19 1A 1B 1C 1D Dez. 30 31 32 33 34 35 36 37 38 39 Hex. 1E 1F 20 21 22 23 24 25 26 27 Als Beispiel zum Senden eines Befehls zum Fahrzeug, nehmen wir an, daß A6 (oder dezimal 166) der gewünschte Befehl ist. In diesem Fall tippt der Anwender den Buchstaben A, dann die Zahl 6 und drückt dann die Enter-Taste CR. Diese drei Zeichen (A6+CR)würden über den RS232-Bus zum ELM327® gesendet werden. Der ELM327® speichert die Zeichen, sobald sie empfangen wurden, und wenn das dritte Zeichen (CR) empfangen wird, prüft er die beiden anderen. Er stellt fest, daß es beide normale Hex-Digits sind, und konvertiert sie zu einem Byte-Wert (der dezimale Wert ist 166). Es werden drei Kopf-Bytes und ein Prüfsummen-Byte hinzugefügt und insgesamt fünf Bytes würden zum Fahrzeug gesendet werden (bei CAN unter Verwendung des 11 oder 29 Bit ID). Beachten Sie, daß das CR-Zeichen nur ein Signal für den ELM327® ist und niemals zum Fahrzeug gesendet wird. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 31 ________________________________________________________________ Nach Sendung eines Befehls hört der ELM327® den OBD-Bus auf für ihn bestimmte Antworten ab. Wenn eine Nachrichten-Adresse zutrifft, werden die empfangenen Bytes zu dem entsprechenden hexadezimalen Paar von ASCII-Zeichen konvertiert und über den RS232-Port an den Anwender oder die Software geschickt. Nachrichten ohne zutreffende Adresse werden ignoriert, sind aber mit dem AT BD Befehl zur Ansicht verfügbar. Statt Kontrollzeichen zu senden, die von den meisten Terminals nicht lesbar sind, werden die Digits als Zahlen und Buchstaben gesendet (z.B. das Hex-Digit „A“ wird als dezimaler Wert 65 und nicht als 10 gesendet). Der ELM327® wartet auf an ihn adressierte Nachrichten, bis in der mit dem Befehl AT ST gesetzten Zeit keine Antwort erfolgt. Solange Nachrichten empfangen werden, wird dieser Timer zurückgesetzt. Beachten Sie, daß der IC immer irgendwie antwortet, selbst wenn mit „NO DATA“ geantwortet wird, daß keine an ihn adressierten Daten vorliegen. Mit dem Fahrzeug „sprechen“ Der ELM327® kann nicht direkt mit dem Fahrzeug verbunden werden, sondern benötigt eine Schaltung, wie das im Abschnitt „Applikation“ beschriebene ElmCan®. Ist eine derartige Schaltung vorhanden, wird lediglich ein Terminalprogramm erforderlich, um Bytes mit dem ELM327® zum Fahrzeug zu senden oder zu empfangen. Die SAE Standards bestimmen, daß jede zum Fahrzeug gesendete Byte-Gruppe einem bestimmten Format entsprechen muß. Das erste Byte (genannt „Mode“) beschreibt immer den abgefragten Datentyp, während das zweite, dritte usw. die aktuelle Information bezeichnet (genannt „Parameter Identifikation“ oder kurz PID Zahl). Die Modes und PIDs sind detailliert in den SAE Normen J1979 (ISO 15031-5) beschrieben und können um weitere vom Fahrzeug-Hersteller spezifierte PIDs ergänzt werden. Normalerweise ist man nur mit den neun Diagnose Test Modes konfrontiert, die in J1979 beschrieben sind, obwohl es Erweiterungsmöglichkeiten gibt, die ebenfalls in den fortgeschriebenen Normen festgelegt sind.. Beachten Sie, daß nicht alle diese Modes von jedem Fahrzeug unterstützt werden müssen, sie sind es oft nicht. Die neun Modes sind: 01 : zeige aktuelle Daten 02 : zeige Freeze Frame Daten 03 : zeige Diagnose Fehlercodes 04 : lösche Fehlercodes und gespeicherte Werte 05 : Test Resultate, Lambda-Sensoren 06 : Test Resultate, nicht kontinuierlich überwacht 07 : zeige anstehende Fehlercodes 08 : spezieller Kontroll Mode 09 : Abfrage von Fahrzeug-Informationen Die in Mode 02 genannten „Freeze Frame“ Daten, sind Daten, die im Fahrzeug-Modul gespeichert werden, wenn ein Fehler auftritt und ebenfalls ein Fehlercode gespeichert wurde. Freeze Frame Daten sind also ein Schnappschuß der Situation beim Fehlereintritt. Innerhalb jedes Mode ist die PID 00 normalerweise dafür reserviert, die in dem Mode unterstützten PIDs anzuzeigen. Mode 01, PID 00 muß von allen Fahrzeugen unterstützt werden und kann wie folgt abgefragt werden: Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 32 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Stellen Sie sicher, daß der ELM327® ordnungsgemäß mit dem Fahrzeug verbunden ist und eingeschaltet ist. Die meisten Fahrzeuge antworten nicht, wenn die Zündung nicht eingeschaltet ist.. Also schalten Sie die Zündung ein, starten aber den Motor nicht. Geben Sie am Prompt den Mode 01 PID 00 Befehl ein: >01 00 Wurde der Bus zum ersten Mal angesprochen, erscheint die Initialisierungs-Nachricht SEARCHING… während der ELM327® das gültige Protokoll des Fahrzeugs automatisch sucht, gefolgt von der Antwort, die wie folgt aussehen kann: 41 00 BE 1F B8 10 Die 41 00 bedeutet eine Antwort (4) von einer Mode (1) Frage mit PID 00 (eine Mode 2, PID 00 Frage wird mit 42 00 beantwortet usw.). Die nächsten vier Bytes (BE, 1F, B8 und 10) repräsentieren die abgefragten Daten, in diesem Fall ein Bitmuster mit den unterstützten PIDs in diesem Mode (1 = unterstützt, 0 = nicht unterstützt). Obwohl diese Information für den gelegentlichen Anwender wenig aussagt, dient es doch dem Nachweis, daß die Verbindung zum Fahrzeug arbeitet und der Fahrzeug-Datenbus für das angeschlossene Diagnosesystem initialisiert wurde. Ein weiteres Beispiel fragt die aktuelle Kühlwassertemperatur des Motors (Engine Coolant Temperature, ECT) ab. Das ist PID 05 im Mode 01 und kann wie folgt erfragt werden: >01 05 Die Antwort wäre: 41 05 7B Dies zeigt eine Mode 1 Antwort (41) von PID 05 mit dem Wert 7B. Hexadezimal 7B konvertiert zu Dezimal ergibt 7 x 16 + 11 = 123. Das ist die aktuelle Temperatur in Grad Celsius mit einem Null Offset-Wert (40), um Temperaturen unterhalb Null Grad darstellen zu können. Zur Konvertierung muß also 40 von dem erhaltenen Wert abgezogen werden, dann ist die Temperatur 123 - 40 = 83 °C. Ein anderes Beispiel zeigt eine Abfrage über den Fahrzeug-Konformitätsstatus, den das Fahrzeug erfüllt. Das ist PID 1C im Mode 01, so daß am Prompt einzugeben ist: >01 1C Eine typische Antwort wäre: 41 1C 01 Der Rückgabe-Wert (01) zeigt, daß das Fahrzeug den OBDII Standards (nach ARB Kalifornien) entspricht. Die z.Zt. definierten Antworten sind: 01 : OBDII (California ARB) 02 : OBD (Federal EPA, amerikan. Umweltbehörde) 03 : OBD und OBDII 04 : OBD I 05 : nicht geeignet, den OBD-Anforderungen zu entsprechen 06 : EOBD (Europa) Ein letztes Beispiel zeigt die Abfrage der Motor-Umdrehungen (der Motor ist gestartet und läuft). Das ist PID 0C im Mode 01, so daß die Eingabe am Prompt ist: >01 0C Eine typische Antwort: 41 0C 1A F8 Der aktuell zurückgegebene Wert (1A F8) ist ein zwei Byte Wert, der in einen dezimalen Wert konvertiert werden muß, um verwendbar zu sein. Konvertiert ergibt das 6904, was für Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 33 ________________________________________________________________ die Drehzahl ziemlich hoch erscheint. Grund ist, die Drehzahl wird in Anteilen von ¼ Drehzahl übertragen. Sie muß daher durch 4 geteilt werden, so daß das Ergebnis (6904 / 4 = 1726) plausibel erscheint. Einige Modes können Antworten über mehrere Zeilen hervorrufen, so z.B. 09, das, wenn der Mode unterstützt wird, die Fahrgestellnummer anzeigt. Der ELM327® versucht in diesen Fällen alle Antworten darzustellen, solange er ausreichend Zeit dafür hat. Es sind Situationen denkbar, in denen das Fahrzeug zu schnell antwortet und Zeilen verloren gehen können. Näheres unter Mehrzeilen-Antworten. Dies zeigt hoffentlich, wie typische Anfragen vonstatten gehen. Es ist nicht als Beschreibung aller möglichen Modes und PIDs gedacht - diese Informationen können vom SAE (http://www.sae.org), vom Fahrzeug-Hersteller, vom ISO (http://iso.org) oder von diversen anderen Quellen im Internet erhalten werden. Mehrzeilige Antworten Gelegentlich muß ein Fahrzeug mit mehr Informationen antworten, als in einer einzigen Nachricht enthalten sein können. In diesen Fällen antwortet es mit mehreren Zeilen, die zu einer vollständigen Nachricht zusammengefaßt werden müssen. Ein Beispiel solch einer Abfrage ist die Fahrgestell-Nummer (Mode 09, PID 02). Das ist oft eine mehrzeilige Antwort, die zusammengefaßt werden muß. In solchen Situationen müssen Sie aufpassen, daß alle Antworten erhalten wurden und in der richtigen Reihenfolge vorliegen, bevor die komplette Übertragung angenommen wird. Die aktuelle Antwort hat üblicherweise ein Byte, das die Datensequenz anzeigt und dabei hilft. Hier ist ein Beispiel eines typischen SAE J1850 Fahrzeugs: >0902 49 02 01 00 00 00 31 49 02 02 44 34 47 50 49 02 03 30 30 52 35 49 02 04 35 42 31 32 49 02 05 33 34 35 36 Beachten Sie, daß OBD2-kompatibele Fahrzeuge nicht unbedingt diese Informationen anzeigen müssen. Viele ältere Fahrzeuge tun es nicht, aber neuere Fahrzeuge tun es in der Regel. Falls Ihr Fahrzeug diese Abfrage nicht unterstützt, wird lediglich „NO DATA“ angezeigt. Die ersten zwei Bytes (49 und 02) in jeder Zeile der obigen Antwort zeigen keine FahrzeugInformationen. Sie bedeuten lediglich, daß dies eine Antwort auf eine 09 02 Abfrage ist. Das nächste Byte in jeder Zeile zeigt die Reihenfolge, in der die Daten zusammengefaßt werden müssen. Dies ergibt also unter Weglassung der ersten 00 Bytes: 31 44 34 47 50 30 30 52 35 35 42 31 32 33 34 35 36 Diese Hex-Digits konvertiert mit einer ASCII-Tabelle ergibt die folgende Fahrgestellnummer: 1D4GP00R55B123456 Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 34 CarCode Müller ElmCan® ELM327® ________________________________________________________________ CAN-Systeme zeigen diese Information in einer leicht abgewandelten Art an. Hier ist eine typische Antwort von einem CAN-Fahrzeug: >0902 014 0: 49 02 01 31 44 34 1: 47 50 30 30 52 35 35 2: 42 31 32 33 34 35 36 CAN-Formatierung blieb eingeschaltet (die Grundeinstellung), so daß die Daten einfacher zu lesen sind. Bei eingeschalteter Formatierung werden die Reihenfolge-Nummern mit einem Doppelpunkt (:) gezeigt, wie hier 0:, 1:, 2: usw. CAN-Systeme fügen diese Nummern hinzu, die von 0 bis F reichen und sich dann wiederholen, um das Zusammenfügen der Daten ähnlich wie bei J1850 zu erleichtern. Die erste Zeile dieser Antwort gibt an, daß 014 Bytes an Informationen folgen. Hexadezimal 014 ist 20 dezimal, was mit den 6 + 7 + 7 Bytes in den drei Zeilen übereinstimmt. Fahrgestellnummern haben in der Regel 17 Zeichen, wie erhalten wir diese also aus 20 Digits? Die zweite gezeigte Zeile beginnt mit den bekannten 49 02 als Antwort auf eine 09 02 Abfrage. Diese sind also nicht Teil der Fahrgestellnummer. CAN fügt gelegentlich ein drittes Byte der Antwort an. Dieses Byte (01) zeigt die Anzahl der Daten in der Antwort. Hier also 1, da die Fahrgestellnummer nur einmal vorhanden ist und daher die Daten nur einmal vorkommen. Dies dritte Byte kann ignoriert werden. Die übrig gebliebenen 17 Datenbytes sind also die Fahrgestellnummer, die der Einfachheit halber identisch zu dem ersten Beispiel ist. Was bleibt, ist die Konvertierung in ASCII, um sie ebenso lesen zu können wie zuvor. Ein letztes Beispiel zeigt eine andere Art mehrzeiliger Antworten, die auftreten kann, wenn zwei oder mehr Steuergeräte gleichzeitig auf eine Abfrage antworten. Im Folgenden ist eine typische Antwort auf eine 01 00 Abfrage: >01 00 41 00 BE 3E B8 11 41 00 80 10 80 00 Das ist ohne ein Paar mehr Informationen schwierig zu entziffern. Wir müssen die KopfBytes (Header) einschalten, um zu sehen, wer hier sendet: >at h1 OK >01 00 48 6B 10 41 00 BE 3E B8 11 FA 48 6B 18 41 00 80 10 80 00 C0 Wenn wir jetzt den Header analysieren, sehen wir, daß das dritte Byte mit 10 das MotorSteuergerät zeigt und auch in der zweiten Zeile mit 18 das Getriebe-Steuergerät antwortet. Dieser Antwort-Typ tritt häufig auf und man sollte darauf vorbereitet sein. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 35 ________________________________________________________________ In einem letzten Beispiel wird gezeigt, wie ähnliche Nachrichten gelegentlich in einem CAN System ‚gemixt’ sein können. Wir fragen nach der Kalibrier-ID (09 04) des Fahrzeuges und bekommen folgende Antwort: >09 04 013 0: 49 04 01 35 36 30 1: 32 38 39 34 39 41 43 013 0: 49 04 01 35 36 30 2: 00 00 00 00 00 00 31 1: 32 38 39 35 34 41 43 2: 00 00 00 00 00 00 00 Das ist verwirrend. Die erste Gruppe (die 013, 0:, 1:) scheint Sinn zu machen, aber die folgende ist konfus. Warum sind dort zwei Segmente Nummer 2? Zu welcher ECU gehören Sie? Die einzige Möglichkeit, dies herauszufinden, ist, die Abfrage mit eingeschalteten Kopfbytes zu wiederholen. >AT H1 OK >09 04 7E8 10 13 49 04 01 35 36 30 7E9 10 13 49 04 01 35 36 30 7E8 21 32 38 39 34 39 41 43 7E8 22 00 00 00 00 00 00 31 7E9 21 32 38 39 35 34 41 43 7E9 22 00 00 00 00 00 00 00 Diesmal ist die Reihenfolge etwas anders (das ist ein echtes Beispiel), aber es gibt wieder 6 Antwortzeilen wie zuvor. Beim Betrachten der ersten Digits stellt man fest, daß einige mit 7E8, andere mit 7E9 anfangen. Das sind die speziellen CAN IDs, die die ECU#1 und ECU#2 repräsentieren. Das Einordnen der ECU's ergibt: 7E8 10 13 49 04 01 35 36 30 7E8 21 32 38 39 34 39 41 43 7E8 22 00 00 00 00 00 00 31 und 7E9 10 13 49 04 01 35 36 30 7E9 21 32 38 39 35 34 41 43 7E9 22 00 00 00 00 00 00 00 Damit kann die Nachricht richtig eingeordnet werden. Dazu sehen wir uns das Byte nach den CAN ID an. Es wird als PCI Byte bezeichnet und wird zur Bezeichnung des folgenden Datentyps verwendet. In diesem Fall beginnt das PCI Byte entweder mit 1 (für einen ersten Frame) oder mit 2 (für einen folgenden Frame). Die zweite Hälfte des PCI Bytes zeigt die Reihenfolge, in der die Information angeordnet ist (d.h. die Segment Nummer). In diesem Fall sind die Segment Nummern bereits in Reihe, wäre das nicht der Fall, hätten sie geordnet werden müssen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 36 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Normalerweise können mehrzeilige Antworten so relativ logisch entziffert werden, aber es ist etwas Erfahrung nötig. Diese kleine Einführung soll anhand einiger schwieriger Beispiele geholfen haben. Haben Sie weiterhin Probleme, dann hilft nur der Kauf der Standards und deren Studium. Interpretation von Fehlercodes Die häufigste Verwendung des ELM327® wird im Auslesen von Fehlercodes (Diagnostic Trouble Code, DTC) bestehen. Dies erfordert mindestens, daß eine Mode 03 Abfrage gemacht wird. Aber zunächst sollte man feststellen, wie viele Fehlercodes z.Zt. gerade gespeichert sind. Dazu dient eine Mode 01 PID 01 Abfrage, wie folgt: >01 01 Eine typische Antwort wäre: 41 01 81 07 65 04 Die 41 01 signalisiert uns die Antwort auf die Abfrage und das erste Datenbyte (81) ist das Ergebnis, das wir suchen. Eindeutig werden nicht 81 (Hex) bzw. 129 (Dezimal) Fehlercodes vorhanden sein, wenn das Fahrzeug noch einigermaßen funktioniert. Tatsächlich erfüllt das Byte eine Doppelfunktion. Das höchstwertige Bit wird benutzt, um anzuzeigen, ob die Störungslampe (Malfunction Indicator Lamp, MIL oder „Check Engine“) von einem Code der Module - wenn es mehrere Module gibt - eingeschaltet ist. Die anderen 7 Bits beinhalten die aktuelle Zahl der gespeicherten Fehlercodes. Um die Zahl der gespeicherten Fehlercodes zu bestimmen , muß man daher 128 (oder 80 Hex) von der Zahl abziehen, wenn diese größer als 128 ist, anderenfalls kann die Zahl der gespeicherten Codes direkt bestimmt werden. Die obige Antwort zeigt also an, daß ein Fehlercode gespeichert ist und daß dieser zum Einschalten der Störungslampe (MIL) geführt hat. Die restlichen Bytes der Antwort geben Auskunft über die Typen der Tests, die von dem jeweiligen Modul unterstützt werden (siehe hierzu die entsprechenden Informationen in der Norm SAE J1979). Mit Modulen sind hier die verschiedenen Steuergeräte gemeint, die in einem Fahrzeug vorhanden sein können. Dies sind vielleicht neben dem Motorsteuergerät ein ABS-Steuergerät, eines für Airbags oder auch sonstige. In diesem Beispiel gab es nur eine Antwortzeile. Wenn jedoch Fehlercodes in mehreren Modulen gespeichert wären, gäbe es jeweils eine Antwortzeile. Zur Bestimmung des die Fehlercode-Zahl meldenden Moduls könnte man mit dem Befehl ATH1 die Kopf-Information einschalten und mit dem dritten Byte der drei Kopf-Bytes die Adresse des Moduls erhalten. Nach der Bestimmung der Fehlercode-Anzahl ist der nächste Schritt, die aktuellen Fehlercodes mit einer Mode 03 Abfrage abzufragen: >03 Eine Antwort könnte sein: 43 01 33 00 00 00 00 Die „43“ in obiger Antwort zeigt lediglich, daß es sich um eine Mode 03 Antwort handelt. Die anderen 6 Bytes müssen paarweise gelesen werden, um die Fehlercodes zu bestimmen. Das ergibt somit 0133, 0000 und 0000. Beachten Sie, daß gemäß den SAE Standards die Antwort mit 00 (Nullen) aufgefüllt werden muß - 0000 ist kein aktueller Fehlercode. Wie bei der Abfrage der Anzahl der Fehlercodes hat das höchstwertige Bit auch hier eine besondere Bedeutung. Am einfachsten kann die folgende Tabelle helfen, die Bedeutung des ersten Bit zu interpretieren: Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 37 ________________________________________________________________ 1. Digit Ersatz 0 1 2 3 4 5 6 7 8 9 A B C D E F Bedeutung P0 Antrieb Codes - SAE definiert P1 Antrieb Codes - Hersteller definiert P2 Antrieb Codes - SAE definiert P3 Antrieb Codes - unverbindlich definiert C0 Chassis Codes - SAE definiert C1 Chassis Codes - Hersteller definiert C2 Chassis Codes - Hersteller definiert C3 Chassis Codes - reserviert für Zukunft B0 Karosserie Codes - SAE definiert B1 Karosserie Codes - Hersteller definiert B2 Karosserie Codes - Hersteller definiert B3 Karosserie Codes - reserviert für Zukunft U0 Netzwerk Codes - SAE definiert U1 Netzwerk Codes - Hersteller definiert U2 Netzwerk Codes - Hersteller definiert U3 Netzwerk Codes - reserviert für Zukunft Tabelle 1 Fehlercode Umwandlung Das erste Hex-Digit (1. Spalte) wird durch die zwei Zeichen in der zweiten Spalte ersetzt. In unserem Beispiel (0133) würde also das erste Digit (0) durch P0 zu ersetzen sein und der angezeigte Wert 0133 wird zu P0133, was der Code für „Lambdasonden-Schaltkreis langsames Antwortverhalten“ ist. In weiteren Beispielen müßte die Antwort D016 zu U1016 und 1131 zu P1131 interpretiert werden. Gibt es Codes, die von mehr als einem Modul gespeichert wurden oder gibt es mehr als drei gespeicherte Codes im gleichen Model, würde die obige Antwort aus mehren Zeilen bestehen. Wie bereits darauf hingewiesen, muß zur Bestimmung des jeweiligen Moduls eventuell die Kopf-Information mit dem ATH1 Befehl eingeschaltet werden. Weitere Informationen stehen im Abschnitt Mehrzeilige Antworten. Löschen von Fehlercodes Der ELM327® ist ohne weiteres in der Lage, Diagnose Fehlercodes zurück zu setzen, da dies nur eines Mode 04 Befehls bedarf. Die Konsequenzen sollten jedoch vor dem Senden dieses Befehls bedacht werden, da mehr als nur ein Zurücksetzen der Fehlerlampe (MIL) geschieht. Tatsächlich bewirkt der Mode 04 Befehl nach den OBD-Normen - das Zurücksetzen der Anzahl der Fehlercodes - das Löschen aller Fehlercodes - das Löschen aller gespeicherten Freeze Frame Daten - das Löschen des Fehlercodes, der Freeze Frame initialisierte - das Löschen der Lambdasonden Testdaten und - das Löschen der Mode 06 und 07 Testresultate - als auch das Löschen temporärer Korrekturwerte-Tabellen Das Löschen all dieser Informationen ist keine Eigenart des ELM327®; es geschieht auch jedesmal, wenn irgendein anderes Scantool benutzt wird, um Fehlercodes zu löschen, da von den Standards so gewollt. Der Datenverlust kann dann dazu führen, daß das Fahrzeug anschließend für kurze Zeit unbefriedigend läuft, während es sich in den folgenden Fahrzyklen selbst wieder kalibriert. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 38 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Um das unbeabsichtigte Löschen der gespeicherten Informationen zu verhindern, schreibt die SAE Spezifikation vor, daß vor dem Absenden eines Mode 04 Befehls eine Sicherheitsabfrage zu erfolgen hat („Sind Sie sicher?“), da alle Information sofort verloren sind, wenn der Befehl ausgeführt wurde. Wir erinnern uns, daß der ELM327® nicht den Inhalt der Nachrichten überprüft, so daß er von sich aus keine Sicherheitsabfrage generieren kann. Das ist die Aufgabe einer Software, die für den ELM327® geschrieben wurde. Wie ausgeführt, muß nur ein Mode 04 Befehl zum Löschen der Fehlercodes gegeben werden. Die Antwort 44 bedeutet, daß die Anfrage ausgeführt wurde, die Informationen gelöscht wurden und die Fehlerlampe ausgeschaltet wurde. Einige Fahrzeuge können einen besonderen Status erfordern (z.B. Zündung ein, Motor steht), bevor sie auf einen Mode 04 Befehl antworten. Das ist alles über das Löschen von Fehlercodes. Nochmals Vorsicht, um nicht unbeabsichtigt 04 zu senden. Schnell-Anleitung zum Auslesen von Fehlercodes Wenn Sie Ihren ELM327® längere Zeit nicht benutzt haben und Sie keine Anwendersoftware haben, ist es vielleicht nicht notwendig, dieses komplette Datenblatt durchzulesen, wenn die „Check Engine“ Lampe (MIL) eventuell aufleuchtet. Am Einfachsten ist natürlich die Verwendung einer Anwendersoftware für ELM327®, die den Umgang vereinfacht. Aber es geht zur Not auch ohne nur mit einem normalen Terminalprogramm wie z.B. Hyperterminal, Zterm, ptelnet oder ähnlichem. Verbinden Sie die ELM327® Schaltung mit dem Fahrzeug und dem PC oder PDA und konfigurieren Sie die serielle Verbindung auf 38.400 Baud, 8 Datenbits, kein Parity-Bit, ein Stopp-Bit und kein Handshaking (Flußkontrolle). Im Folgenden steht eine schnelle Prozedur, die in solchen Fällen hilfreich sein kann („>“ ist das ELM327® Prompt Zeichen). Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 39 ________________________________________________________________ Verbindung mit HyperTerminal, Zterm o.ä., 38400 8N1 und kein Handshake Zündung EIN, aber Motor AUS >ATZ zum Rücksetzen des IC und Antwortkontrolle >0100 zur Antwortkontrolle des Fahrzeugs >0101 Abfrage wieviel Codes vorhanden (zweites Digit des dritten Bytes) >03 Abfrage der Codes Ignoriere erstes Byte und lese die anderen in Paaren. Hilfe in der Tabelle. Fehlerursache beseitigen! >04 Fehlercodes löschen Protokoll Auswahl Die aktuelle Version des ELM327® unterstützt verschiedene unterschiedliche OBDProtokolle. Als Anwender brauchen Sie sich wahrscheinlich nie darum zu kümmern, da die Werkseinstellung eine automatische Protokollsuche vornimmt. Beim Experimentieren kann jedoch der Wunsch nach einer Protokoll-Auswahl Möglichkeit bestehen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 40 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Wenn Sie wissen, daß Ihr Fahrzeug ein bestimmtes Protokoll unterstützt, dann möchten Sie den ELM327® vielleicht auf dieses Protokoll einstellen. Wissen Sie z.B., daß Ihr Wagen das SAE J1850 VPW Protokoll hat, dann sehen Sie in der untenstehenden Liste nach und verwenden den „Set Protocol“ AT Befehl: >AT SP 2 OK Von da an ist dies das Standard-Protokoll auch nach erneutem Einschalten des IC oder AT D Befehls. Zur Überprüfung fragen Sie den ELM327® nach dem aktuellen Protokoll: >AT DP SAE J1850 VPW Was aber, wenn Ihr Freund nun ein Fahrzeug mit ISO 9141-2 Protokoll hat? Wie verwenden Sie den ELM327® für dieses Protokoll? Es gibt mehrere Möglichkeiten …. Eine Möglichkeit ist das Ändern der Protokoll-Auswahl auf automatische Suche bei Fehler mit dem aktuellen Protokoll: >AT SP A2 OK >AT DP AUTO, SAE J1850 VPW Jetzt beginnt der ELM327 immer mit Protokoll 2, aber beginnt die automatische Suche, wenn eine Verbindung mit Protokoll 2 fehlschlägt, wie es bei einem Verbindungsversuch mit dem Wagen Ihres Freundes der Fall sein würde. Beachten Sie aber, daß bei eingeschalteter Memory-Funktion das neue Protokoll des Wagens Ihres Freundes bei Verbindung zum neuen Standard wird, aber Ihr Protokoll wieder gefunden wird, wenn Sie mit Ihrem Wagen verbinden. Vielleicht haben Sie die Memory-Funktion abgeschaltet (Pin 5 auf 0 Volt gesetzt) und den IC mit AT SP 2 nur auf das Protokoll Ihres Wagens konfiguriert. Da Sie nicht AT SP A2 verwendet haben, sucht das Interface nicht nach einem anderen Protokoll, wenn Sie z.B. nicht die Zündung eingeschaltet haben. Beim Scannen Ihres Wagens wäre das von Vorteil. Zum Verbinden mit dem Wagen Ihres Freundes müßten Sie den „Try Protocol“ Befehl benutzen. Wissen Sie dieses, geben Sie ein: >AT TP 3 OK Ist das nur eine Vermutung, dann geben Sie ein: >AT TP A3 OK und es werden die anderen Protokolle geprüft, wenn Protokoll 3 fehlschlägt. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 41 ________________________________________________________________ Im Allgemeinen ist es für den Anwender die beste Lösung, die Memory-Funktion eingeschaltet zu haben (Pin 5 auf 5 Volt gesetzt) und die „Auto“ Option zu wählen (am Einfachsten mit dem AT SP 0 Befehl). Nach der ersten Protokoll-Suche wird das Protokoll Ihres Wagens zum Standard und wird so jedesmal als erstes genommen. Wird das Interface dann bei einem anderen Wagen verwendet, tritt nur eine geringere Verzögerung zur Suche eines anderen Protokolls auf. Protokoll Beschreibung 0 Automatisch 1 SAE J1850 PWM (41,6 kBaud) 2 SAE J1850 VPW (10,4 kBaud) 3 ISO 9141-2 (5 Baud Init) 4 ISO 14230-4 (5 Baud Init) 5 ISO 14230-4 (Fast Init) 6 ISO 15765-4 CAN (11 Bit ID, 500 kBaud) 7 ISO 15765-4 CAN (29 Bit ID, 500 kBaud) 8 ISO 15765-4 CAN (11 Bit ID, 250 kBaud) 9 ISO 15765-4 CAN (29 Bit ID, 250 kBaud) Tabelle Protokolle OBD Nachrichten Formate Bisher wurde nur der Inhalt von OBD-Nachrichten diskutiert und wir haben andere Teile wie Kopf-Bytes (Header) und Prüfsumme nur gestreift, die alle Datenpakete mehr oder weniger verwenden. On-Board-Diagnosesysteme sind sehr flexibel konzipiert, um vielen Geräten eine Kommunikation untereinander zu ermöglichen. Um Nachrichten zwischen Geräten zu versenden, müssen Informationen über den Typ der Information, über das Ziel-Gerät und vielleicht auch über das sendende Quell-Gerät hinzugefügt werden. Zusätzlich ist die Wichtigkeit der Nachricht von Bedeutung, da die Information über die Kurbelwellen-Position für einen laufenden Motor sicherlich wichtiger ist als die Anzahl der Fehlercodes. Daher wird den Nachrichten auch eine Priorität zugewiesen. Die Informationen über Priorität, den vorgesehenen Empfänger und den Sender werden vom Empfänger sogar vor dem eigentlichen Inhalt der Nachricht benötigt. Um dies sicherzustellen, werden diese Informationen in den ersten Kopf-Bytes (Header) von OBD-Systemen übermittelt. Daher also der Name Kopf-Bytes oder Header. Bild 3 unten zeigt eine typische OBD Nachrichten Struktur, wie sie von SAE J1850, ISO 9141-2 und ISO 14230-4 Normen verwendet wird. Sie wenden drei Kopf-Bytes für Priorität, Empfänger (Receiver) und Sender (Transmitter). Beachten Sie, daß Empfänger auch als „Ziel-Adresse (ZA)“ oder englisch „Target Address (TA)“ und Sender auch als „Quell-Adresse (QA)“ oder englisch (Source Address (SA)“ bezeichnet werden. Ein anderer Gesichtspunkt ist, daß bei jeder gesendeten Nachricht Übertragungsfehler auftreten können und die erhaltenen Daten dann falsch interpretiert würden. Zur Fehlererkennung benutzen die verschiedenen Protokolle Prüfungsarten für die erhaltenen Daten, meist einfach als eine Summen-Berechnung implementiert, d.h., eine Gesamtsumme wird vom Empfänger beim Verarbeiten einer Nachricht hinzugezogen. Diese wird mit der vom Sender erhaltenen Gesamtsumme verglichen und wenn sie nicht übereinstimmen, liegt ein Fehler vor. Diese Gesamtsumme wird Prüfsumme (englisch checksum) oder CRC Byte Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 42 CarCode Müller ElmCan® ELM327® ________________________________________________________________ genannt und als letztes Byte der Nachricht versendet. Wird ein Fehler gefunden, halten die verschiedenen Protokolle unterschiedliche Korrektur-Mechanismen vor. Die OBD Daten-Bytes werden so normalerweise innerhalb der Nachricht eingeschlossen mit Header Bytes am Anfang und einem Prüfsummen-Byte am Ende. Die J1850, ISO 9141-2 und ISO 14230-4 Protokolle verwenden grundsätzlich die gleiche Struktur mit 3 Kopf-Bytes, 7 Daten-Bytes und einem Prüfsummen-Byte, wie in Bild 3 unten gezeigt. Priorität TA SA Empfänger Sender 3 Kopf-Bytes Bis zu 7 Daten-Bytes Prüfsumme Bild 3 Eine OBD Nachricht Das ISO 15765-4 (CAN) Protokoll verwendet eine sehr ähnliche Struktur, der HauptUnterschied besteht nur in der Struktur des Headers. CAN Kopf-Bytes werden nicht als solche bezeichnet, sondern sie werden stattdessen ID Bits genannt. Der ursprüngliche CAN Standard definiert 11 ID Bits und die späteren Standards erlauben jetzt 29 insgesamt. ID Bits (11 oder 29) PCI 7 Daten-Bytes Prüfsumme Bild 4 Eine CAN OBD Nachricht Der ELM327® zeigt diese Daten normalerweise nicht an, wenn er nicht mit dem Header EIN Befehl (AT H1) zur Anzeige gezwungen wird. Damit werden alle 3 Kopf-Bytes und das einzelne Prüfsummen-Byte bei J1850, ISO 9141 und ISO 14230 Protokollen angezeigt. Bei den CAN-Protokollen werden jedoch stattdessen die ID Bits (gesendet als hexadezimale Digits) und das sogenannte PCI Byte am Beginn einer Nachricht angezeigt. Der ELM327® zeigt bei CAN-Systemen nicht die Prüfsummen-Information an, auch zeigt er nicht die IFR Bytes bei J1850. Möchten Sie mehr über PCI und IFR erfahren, wird empfohlen, sich die relevanten Normen von ISO oder SAE zu beschaffen, da dies den hier vorliegenden Rahmen sprengen würde. Es wird nie erforderlich sein, die Kopf-Bytes zu konfigurieren oder die Prüfsumme zu berechnen, da der ELM327® das automatisch für Sie erledigt. Die Kopf-Bytes können jedoch justiert werden, wenn dies für fortgeschrittene Anwendung wie physikalische Adressierung erforderlich sein sollte. IC zurücksetzen Es kann vorkommen, daß der ELM327® scheinbar außer Kontrolle geraten ist, und der Wunsch besteht, ihn zurückzusetzen. Bevor wir weiter die Modifizierungen anhand der vielen möglichen Parameter erklären, ist hier vielleicht ein Einschub über einen Neustart des IC sinnvoll. Vielleicht sollte der IC gerade den Datenbus überwachen und es fliegen seitenweise Daten über den Bildschirm, oder der IC antwortet mit NO DATA, obwohl er vorher gearbeitet hatte. Daher hier ein paar Tips zur Hilfe. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 43 ________________________________________________________________ Der ELM327® kann jederzeit von einer Aufgabe mit einem einzigen Tastendruck auf der Tastatur unterbrochen werden. Teil seiner normalen Arbeitsweise ist die Prüfung auf erhaltene Zeichen und wenn er solch ein Zeichen erkannt hat, stoppt der IC seine Arbeit bei nächster Gelegenheit. Das bedeutet meist, daß er das Senden der aktuellen Zeile fortführt, dann unterbricht, das Prompt-Zeichen sendet und auf Eingaben vom Anwender wartet. Die Unterbrechung geschieht oft nicht sofort, da zunächst der RS232 Puffer geleert wird und deren Inhalt zuvor ausgegeben wird. Ebenso muß das Terminal-Programm die Zeichen zunächst ausgeben, bis der Prompt erscheint. Sind die Probleme gravierender und man erinnert sich nicht mehr, wodurch sie entstanden sein könnten (vielleicht wurden Timer justiert, Kopf-Bytes geändert oder mit dem CAN-Filter experimentiert), kann der IC auf die Grundwerte (Default) zurückgesetzt werden mit dem AT D Befehl: >AT D OK Das ist oft ausreichend, kann aber gelegentlich unerwartete Resultate bringen. Dies etwa wenn die Verbindung mit einem bestimmten Protokoll bestand, aber das gespeicherte Standard-Protokoll ein anderes war. In dem Fall schließt der ELM327® die aktuelle Verbindung und setzt das Protokoll auf das Default Protokoll, wie ihm geheißen wurde. Wenn AT D nicht das erwartete Ergebnis bringt, muß zu etwas drastischerem gegriffen werden wie das komplette Zurücksetzen des IC. Dazu gibt es zwei Wege. Der erste Weg ist ein kompletter Hardware-Reset wie beim erstmaligen Einschalten (Spannung ein). Es ist der gleiche Befehl wie bei den älteren ELM IC's: >AT Z Es dauert etwa eine Sekunde, bis der IC alles initialisiert und den Test der vier LED mit dem sequentiellen Aufleuchten durchgeführt hat. Ist das nicht erforderlich, gibt es für den ELM327® einen Warmstart-Befehl: >AT WS Damit wird der gleiche Software Reset wie beim AT Z Befehl durchgeführt, aber nicht der Lampentest, so daß dieser Befehl etwas schneller abgearbeitet werden kann. Fortgeschrittene Datenabfrage – Setzen der Kopfbytes Der ELM327® enthält die besten Funktionen aus den aktuellen Versionen der VorläuferChips ELM320, ELM322 und ELM323. So benutzte die alte Version 1.0 des ELM323 ein festes Format des Nachrichtenkopfes, so daß nur ein Datentyp (die vorgeschriebenen emissions-relevanten Informationen) abgefragt werden konnte. Seit der Version 2.0 des ELM323 konnten die Kopfbytes vom Anwender spezifiziert werden, um den direkten Zugriff auf einen großen Teil weiterer Daten zu bekommen. Dies ist mit dem ELM327® ebenfalls möglich. Beachten Sie, daß nur die OBDII Diagnose Codes vorgeschrieben sind, so daß nicht alle Fahrzeuge diese erweiterten Möglichkeiten unterstützen und einige tun es auch nicht. Die den meisten Leuten bekannten emissions-relevanten Diagnose Fehlercodes sind im SAE J1979 Standard (ISO 15031-5) beschrieben und sind eigentlich ein spezieller Fall der vom Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 44 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Standard J2178-4 erlaubten Modi, der den Informationstransfer nach der sogenannten „funktionalen Adressierungsart“ bereit stellt. Für die obligatorische OBDII Diagnose erfolgen Abfragen aktuell an die funktionale Adresse 6A (für ISO 9141) oder 33 (für ISO 14230), egal welcher Prozessor (Steuergerät) im Fahrzeug für diese Funktion zur Beantwortung der Anfrage zuständig ist. Theoretisch können verschiedene Prozessoren auf eine einzelne funktionale Abfrage antworten, jeder mit seinem Anteil an eigenen Daten. Um Informationen über diese OBDII Erfordernisse hinaus zu bekommen, muß entweder die funktionale oder die physikalische „Adresse“ des ECU bekannt sein. Jedes Steuergerät antwortet auch auf seine physikalische Adresse. Die physikalische Adresse eines Steuergerätes ist einmalig in einem Fahrzeug, mit ihr wird jedes Steuergerät identifiziert. Man kann so spezielle Abfragen für ein bestimmtes Steuergerät durchführen. Zum Erhalt solcher Abfragen müssen die Daten in den Kopf-Bytes geändert werden. Nehmen wir z.B. an, daß Sie den für die Motorkühlung zuständigen Prozessor nach der aktuellen Kühlmitteltemperatur abfragen wollen und Sie wissen nicht seine physikalische Adresse. Nach Durchsicht des J2178 Standards stellen Sie fest, daß das Kühlmittel die funktionale Adresse 48 hat. J2178 sagt Ihnen zudem, daß das Prioritäts-Byte für Ihren J1850 VPW Wagen A8 ist. Wenn man dies mit dem Wissen verbindet, daß der ELM327® keine InFrame Antworten unterstützt (er erlaubt nur die Nachrichtentypen 8 bis 15), und daß ein Scantool normalerweise Adresse F1 besitzt, so kann entschieden werden, die drei Kopfbytes auf A8 48 und F1 zusetzen. Dies geschieht mit dem Header Befehl SH, der dann so aussieht: >AT SH A8 48 F1 OK Diese drei so bestimmten Kopfbytes bleiben im Eingriff, bis sie durch einen weiteren AT SH Befehl geändert werden, oder bis zu einem Reset oder bis zum Befehl AT D. Wenn der Standard Auto Receive Modus beim Setzen der Kopfbytes aktiv ist, stellt der ELM327® die Empfangsadresse entsprechend ein. Da das erste Byte bestimmt, daß es sich um eine funktionale Adresse handelt, wird die Empfangsadresse bei ISO 9141 Systemen automatisch auf die Funktionsadresse plus eins (49) gesetzt. Bei ISO 14230 Systemen wird die physikalische Adresse des Senders (F1) als Empfangsadresse benutzt. Nach dem Setzen der Kopfbytes (Header) muß nur noch die sekundäre ID für die Kühlmitteltemperatur (10) am Prompt übergeben werden. Wenn die Anzeige der Kopfbytes abgeschaltet ist, kann das Ergebnis so aussehen: >10 10 2E Die Antwort auf ID 10 ist in diesem Fall Byte 2E, die 10 wird als Echo auf die Abfrage zurückgegeben.. Es kann sein, daß bei Abfragen niedriger Priorität nicht sofort eine Antwort erscheint, was zu einem „NO DATA“ Resultat führt. In diesen Fällen können Sie den Wert für die Zeitüberschreitung höher setzen, vielleicht sogar beginnend mit dem Maximum (mit AT ST FF). Viele Fahrzeuge unterstützen diese zusätzliche Adressierungsmethode nicht. Die Verwendung des im Standard J2190 beschriebenen, physikalischen Adressierungsmodus ist meist ein identischer Prozeß und die andere Möglichkeit, Daten zu erhalten. Der hauptsächliche Unterschied ist, daß die physikalische Adresse des Gerätes, das angesprochen werden soll, bekannt ist (es ist immer das dritte Byte jeder zu diesem Gerät gesandten Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 45 ________________________________________________________________ Nachricht) anstatt der funktionalen Adresse. Es wird dabei gezielt nur ein Steuergerät abgefragt, während es bei der funktionalen Adressierung eine Gruppe sein kann. Ist die physikalische Adresse nicht bekannt, kann eine Zeitlang der Bus mit eingeschalteten KopfBytes (AT H1) abgefragt werden und so viel über die Absende-Adresse (das dritte Byte im Header) gelernt werden. Ist diese Adresse so bekannt, verwendet man sie im zweiten Byte der Kopf-Bytes der Abfrage. Die physikalische Adressierung wird von Standards wie SAE J2190 zum Erhalt vieler Fahrzeug-Informationen benutzt. Viele dieser Details (wie PID Nummern etc.) sind jedoch gut gehütetes Geheimnis der Hersteller, das sie nicht teilen möchten. CarCode Müller gibt solche Informationen ebenfalls nicht weiter und verwendet sie allenfalls in den kommerziellen Software-Programmen. Bei der physikalischen Adressierung ist noch zu beachten, daß es Modi gibt, die das kontinuierliche Senden von Daten veranlassen und den ELM327® ununterbrochen Antworten senden lassen, wenn der Zeitüberschreitungswert des ELM327® höher als die Zeit zwischen den Antworten gesetzt ist. In diesen Fällen kann das Senden eines einzelnen Zeichens wie beim Monitor All Modus den Datenstrom unterbrechen. Fortgeschrittene Experimentierer sind sich bewußt, daß der ISO 14230 Standard festlegt, daß das erste Kopfbyte immer die Länge des Datenfeldes beinhaltet. Der ELM327® berechnet automatisch diese sechs Bits und fügt sie in jede Nachricht ein, egal was Sie in der KopfDefinition bestimmen. Er ändert jedoch nicht die zwei meist-signifikanten Bits des ersten Kopfbytes. Ebenso wird mitunter nach dem zusätzlichen Längenbyte gemäß dem ursprünglichen ISO 14230 Standard gefragt. Der ELM327® unterstützt nur die Anforderungen der ISO 14230-4 mit drei Byte Header, die kein zusätzliches Längenbyte kennen. Schließlich sei noch angemerkt, daß die bei der Bus Initialisierung verwendeten Kopfbytes erhalten bleiben für die folgenden „Keep-Alive“ Nachrichten, egal welche Werte anschließend mit dem AT SH Befehl gesetzt werden. Diese gleichen Kopfbytes sind auch diejenigen, die für die „Starte Kommunikation“ Nachricht verwendet werden, die vom ELM327® bei einer schnellen Initialisierung generiert werden. Diese Eigenschaft ist zum Experimentieren mit den Kopfbytes nach einer Verbindung vorgesehen, kann aber zu Irritationen führen, wenn erst versucht wird, die Kopfbytes zu ändern und dann der Bus initialisiert werden soll. Die Initialisierung schlägt dann fehl. Solange Sie nicht mit Ihrem Fahrzeug vertraut sind, wird empfohlen, erst einen einfachen Befehl (z.B. 01 00) zu senden und dann zu versuchen, die Kopfbytes zu ändern. Die Adressierung mit den CAN-Protokollen (ISO 15765-4) ist in manchen Dingen ähnlich. Nehmen wir zuerst den 29 Bit Standard. Der ELM327® teilt die 29 Bits in ein CAN PrioritätsByte und 3 Kopf-Bytes ein, wie wir es kennen. Das folgende Bild zeigt, wie diese vom ELM327® aufgeteilt und verwendet werden. >AT CP vv vv >AT SH xx yy zz x x y y zz nur 5 Bits Setzen eines 29 Bit CAN ID vv xx yy zz Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 46 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Der CAN Standard bestimmt, daß das Prioritäts-Byte (vv im Diagramm) immer 1B ist. Die Verwendung eines separaten Befehls zum Setzen dieser Prioritäts-Bits ist nur ein kleiner Nachteil, da sie selten zu ändern sind. Das nächste Byte (xx) beschreibt den Nachrichtentyp und wird für funktionale Adressierung auf hexadezimal DB gesetzt und für physikalische Adressierung auf DA. Die nächsten zwei Bytes entsprechen den vorherigen Beschreibungen, (yy) ist der Empfänger oder Ziel-Adresse und (zz) ist der Sender oder Quell-Adresse. Bei funktionalen Diagnose-Abfragen ist der Empfänger immer 33 und der Sender ist F1. Jenen die schon mit SAE J1939 gearbeitet haben, wird diese Kopf-Struktur bekannt sein. J1939 ist ein Standard für Lastkraftwagen und Busse. Wir verwenden eine etwas abgewandelte Terminologie, aber es gibt direkte Parallelen zwischen den in J1939 verwendeten Kopfbytes und der Byte-Gruppierung des ELM327®. Obwohl der ELM327® nicht offiziell beansprucht, zu J1939 kompatibel zu sein, nehmen wir gerne Hinweise an, die den ELM327® besser dafür verwendbar machen. Experimentierer seien darauf hingewiesen, daß Auto-Formatierung (Zugabe von PCI Bytes) und das Senden von FlußkontrollNachrichten per Default beim ELM327® eingeschaltet ist. Sie werden zum Senden von J1939 Nachrichten beides abschalten müssen (AT CAF0 und AT CFC0). Das letzte zu beschreibende Kopfbytes-Format wird in 11 Bit CAN Systemen verwendet. Es wird ebenfalls Prioritäts/Adress-Struktur benutzt, aber verkürzt auf drei Nibbles anstatt drei Bytes. Der ELM327® verwendet die gleichen Befehle zum Setzen dieser Werte wie den anderen Headern, außer daß nur die 11 letzt-signifikanten Bits der Header-Bytes verwendet werden und die anderen ignoriert werden. Es wird schnell lästig, sechs Digits einzugeben, wenn nur drei erforderlich sind. Daher gibt es dazu eine eigene Kurz-Version des AT SH Befehls, der nur drei hexadezimale Digits akzeptiert. Intern arbeitet er mit der Auffüllung von zusätzlichen Nullen. >AT SH xx yy zz xx yy zz 11 Bit ID Der 11 Bit CAN Standard macht typischerweise funktionale Abfragen (ID/Header = 7DF), aber erhält physikalische Antworten (7En). Bei eingeschalteten Headern ist es einfach, die Adressen der antwortenden Module kennenzulernen. Verwenden Sie dann diese Adressen, wenn eine physikalische Adressierung gewünscht wird. Sind die Kopf-Bytes eingeschaltet, könnten Sie z.B. nach einer 01 00 Abfrage folgende Antwort sehen: >01 00 7E8 06 41 00 BE 3F B8 13 00 Die 7E8 zeigt, daß Steuergerät Nr. 1 antwortete. Um direkt zu diesem Steuergerät zu sprechen, müssen Sie nur den Header auf den entsprechenden Wert setzen (es ist hier 7E0, siehe ISO 15765-4 für weitere Informationen). Von da an können Sie direkt mit dem Steuergerät unter Verwendung seiner physikalischen Adresse sprechen: >AT SH 7E0 OK Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 47 ________________________________________________________________ >01 05 7E8 03 41 05 46 00 00 00 00 Die Anzeige der Header macht natürlich auf die Dauer konfus, so daß Sie sie dann abschalten. Diese Informationen sind nur als Startpunkt zu betrachten. Weitere Informationen können wir nicht geben und verweisen bei ernsthaften Programmieraufgaben auf die einschlägigen Normen. Bus Überwachung Einige Fahrzeuge nutzen den OBD Bus zur Informationsübertragung während des normalen Fahrzeugbetriebs für einen vielfältigen Informationsaustausch zwischen den einzelnen Steuergeräten (oder Knoten). Aus diesem Datenverkehr läßt sich viel lernen, wenn man zu diesen Fahrzeugen verbinden kann und die Inhalte dieser Nachrichten entziffert. Andere Fahrzeuge können vielleicht nicht initialisiert werden und senden stattdessen kontinuierlich Informationen. Der einzige Weg diese Daten zu lesen ist, alles Gesendete zu überwachen und die verwendbaren Daten herauszuziehen. Um den OBD Bus zu untersuchen, muß der ELM327® in den „Monitor All“ Modus durch Senden des Befehls AT MA mit einem Terminal-Programm versetzt werden. Nach Erhalt dieses Befehls zeigt der IC kontinuierlich auf dem OBD Bus gesehene Informationen an unabhängig von der Sende- oder Empfangsadresse. Beachten Sie, daß die periodische „Wachhalte“-Nachricht in diesem Modus nicht gesendet wird, so daß der Bus sich in kurzer Zeit „schlafen legen“ kann. Der Monitor-Modus kann nur über das Senden eines einzelnen Zeichens über die RS232Verbindung zum ELM327® gestoppt werden oder durch Anlegen eines niedrigen Logikpegels an den RTS Pin des IC. Ein beliebiges Zeichen (egal ob anzeigbar oder nicht) unterbricht den IC und setzt ihn in den Befehls-Modus zurück, in dem er auf Eingaben wartet. Beachten Sie, daß das gesendete Zeichen verworfen wird und keinen Effekt auf folgende Befehle hat. Die Antwortzeit des ELM327® auf ein gesendetes Unterbrechungszeichen hängt von der augenblicklichen Aktivität des ELM327® ab. Der IC beendet immer vorher den laufenden Task (z.B. Ausgabe einer Zeile), bevor er wieder auf Eingänge wartet, so daß immer auf das Prompt-Zeichen „>“ gewartet werden sollte, bevor weitere Befehle gesendet werden können. Ein unerwartetes Ergebnis kann auftreten, wenn die Auto-Protokollsuche eingeschaltet ist und der ELM327® den Bus überwachen soll, obwohl kein Datenverkehr auf dem Bus stattfindet. In dem Fall kann der ELM327® unerwartet ein anderes Protokoll suchen. Beachten Sie auch, daß die ISO 9141 und ISO 14230 Protokolle bei der Überwachung ähnlich aussehen, so daß der ELM327 beim Suchen bei ISO 9141 stoppt, obwohl das Protokoll ISO 14230 ist. Ist die automatische Suche ein, kann das korrigiert werden, jedoch erst bei der ersten OBD Abfrage. Wenn die Kopfdaten (Header-Bytes) nicht angezeigt werden, AT MA also nur den Inhalt der Nachrichten zeigt und nicht die Sende- und Empfangsadressen, muß vor Eingabe des AT MA Befehls mit AT H1 die Anzeige von Kopfdaten eingeschaltet werden. Wenn der „Monitor All“ Befehl zu viele Daten zeigt, was er sicherlich bei einem CAN System tun wird, können Sie den angezeigten Daten-Umfang begrenzen. Wenn Sie z.B. nur Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 48 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Nachrichten des Steuergerätes mit der Adresse 10 sehen wollen, können Sie folgendes eingeben: >AT MT 10 Damit würden dann nur Nachrichten mit einer 10 im dritten Byte des Headers angezeigt. Die Verwendung des Befehls bei 11 Bit CAN Systemen kann zunächst etwas verwirrend sein. Erinnern Sie sich an die Art, in der der ELM327® alle Header Bytes speichert. Ein 11 Bit CAN ID wird aktuell als die letzt-signifikanten 11 Bits in der 3 Byte Kopf-Speicherstelle gespeichert. Er speichert 3 Bits in der Empfänger Adress-Stelle und die verbleibenden 8 Bits an der Sender Adress-Stelle. In diesem Beispiel haben wir alle Nachrichten vom Sender 10 zur Anzeige angefragt, so daß alle 11 Bit CAN IDs, die mit 10 enden, angezeigt werden (z.B. x10). Ein anderer nützlicher Monitor-Befehl ist AT MR, der spezifische Adressen im mittleren Byte des Headers sucht. Sie verwenden diesen Befehl zur Anzeige aller Daten, die an eine bestimmte Adresse gesendet werden. Wenn Sie also Nachrichten, die z.B. an das Steuergerät 10 gesendet werden, sehen wollen, dann geben Sie ein: >AT MR 10 Damit würden nur Nachrichten mit einer 10 im zweiten Byte des Headers angezeigt. Die Verwendung dieses Befehls bei 11 Bit CAN Systemen braucht einige weitere Erläuterungen. Es ist hilfreich, die hexadezimale Zahl „10“ zunächst als binäre Nummer „0001 0000“ darzustellen. Das ist die Nummer, die der ELM327® intern gegen die eingehenden zweiten Bytes der Nachrichten prüft. Außerdem werden alle 11 Bit CAN IDs im Header-Speicher mit ihren Daten rechts-orientiert gespeichert. Der ELM327® berücksichtigt das und verwendet nur 3 Bits vom zweiten Header-Byte und 8 Bits vom dritten Byte für alle 11 Bit CAN Nachrichten. Der Rest wird ignoriert. In diesem Fall prüft der ELM327® ein Byte auf Übereinstimmung in der zweiten Position, nimmt dazu aber nur die drei meist rechtsstehenden Bits, die alle Null sind (000). Alle Nachrichten beginnend mit 0 als dem ersten Digit werden mit AT MR 10 aktuell angezeigt. Sollen alle CAN Nachrichten beginnend mit 2 gesucht werden, muß der Befehl AT MR 02 genommen werden und bei 7xx z.B. der Befehl AT MR 07. Bei den ELM327® Vorläuferchips ELM 320, ELM322 und ELM323 bestand die Möglichkeit, daß OBD Nachrichten verloren gingen, wenn eine vorangegangene Nachricht auf der RS232 Verbindung wiederholt gesendet wurde. Das lag an der Tatsache, daß die alten ELM SingleTask Microprozessoren waren und deren Hardware keinen Puffer für OBD Daten im Hintergrund besaß, während sie mit anderen Tasks beschäftigt waren. Beginnt eine OBD Nachricht während des Sendens des IC zum RS232 Bus, konnten mehrere Bytes verloren gehen und es wurde möglicherweise eine „<DATA ERROR“ Nachricht angezeigt. Normalerweise stellen die ECUs Zehntel Millisekunden zwischen den Nachrichten zur Verfügung und es gab daher selten ein Problem. Der neue ELM327® hat nun eine höhere Baudrate und internen Puffer. Für den Fall, daß die sehr hohe Datenrate z.B. auf dem CANBus den ELM327® trotzdem noch überfordern kann und DATA ERRORs erscheinen, kann die RS232 Datenmenge durch Abschalten von Zeilenschaltungen (LF – Linefeed) entlastet werden. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 49 ________________________________________________________________ CAN Nachrichten und Filterung Die ELM327® Monitor-Befehle (AT MA, MR und MT) funktionieren gewöhnlich sehr gut mit den langsameren Protokollen J1850, ISO 9141 und ISO 14230. Die CAN Systeme stehen auf einem anderen Blatt, da sie in der Regel einen enormen Datenverkehr aufweisen. Der relativ kleine Puffer von 256 Bytes, den der ELM327® zum Senden benutzt, kann schnell voll sein, wenn Daten mit 500 kbps ankommen und mit 38,4 kbps abgehen. Um den Umfang der vom ELM327® gesehenen Daten zu reduzieren, hat das interne CAN Modul einen Filter, das zum Passieren nur von Nachrichten mit bestimmten ID Bits genutzt werden kann. Ein Wertebereich genannt Maske kann übergeben werden, der aussagt, welche Bits relevant sind. Nehmen wir als Beispiel eine Applikation an, mit der 29 Bit CAN Diagnose Nachrichten überwacht werden sollen, wie der ELM327® es tut. Definitionsgemäß werden diese Nachrichten an Adresse F1 (ein Diagnosegerät) gesendet. Aus der ISO 15765-4 wissen wir, daß der ID Teil der Antwort folgende Form haben muß: 18 DA F1 xx wobei xx die Adresse des die Nachricht sendenden Moduls ist. Zur Anwendung des Filters geben Sie irgendwas für den unbekannten Teil ein, Sie sehen gleich warum. Der Befehl zum Setzen des CAN Filters ist AT CF… >AT CF 18 DA F1 00 Wie soll der ELM327® die beiden letzten Nullen ignorieren? Das geschieht mit der Maske. Die Maske besteht aus Bits, die dem ELM327® erzählen, welche Bits des Filters relevant sind. Ist das Masken-Bit 1, dann ist dies Filter-Bit relevant und muß übereinstimmen. Ist es 0, dann wird das Filter-Bit ignoriert. Alle Bits in der obigen Nachricht sind relevant außer den letzten zwei Digits. Um die Maske für dieses Beispiel zu setzen, verwenden Sie den CAN Masken-Befehl wie folgt: >AT CM 1F FF FF 00 Wenn Sie möchten, konvertieren Sie hexadezimal zu binär, um zu sehen, was gemacht wurde. Die 11 Bit CAN IDs werden in gleicher Weise verwendet. Zur Erinnerung: Sie werden intern in den ganz rechten 11 Bits der Stelle gespeichert, die für 29 Bit CAN verwendet wird. Das muß beim Zusammenstellen eines Filters oder einer Maske beachtet werden. Als Beispiel nehmen wir an, daß alle Nachrichten mit 6 als dem ersten Digit der 11 Bit ID angezeigt werden sollen. Wir müssen einen Filter für 6 erstellen: >AT CF 00 00 06 00 Das 11 Bit ID ist in den letzten drei Stellen gespeichert, so daß die 6 erscheint wie gezeigt. Jetzt machen wir dies Digit mit der folgenden Maske relevant: >AT CM 00 00 0F 00 Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 50 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Das System verwendet nur die 11 rechts-stehenden Bits in diesem Fall, so können wir faul sein und wie gezeigt das F verwenden. Das erste Bit von F wird ignoriert und es wird behandelt, als ob wir eine 7 eingegeben hätten. Tatsächlich kann es nervig werden, wenn wir immer mit 11 Bit CAN Systemen umgehen müssen. Der ELM327® bietet daher kürzere Versionen der CF und CM Befehle. Es muß nur folgendes eingegeben werden: >AT CF 600 und >AT CM F00 für obiges Beispiel. Die Befehle arbeiten intern mit dem zusätzlichen Einfügen von 00 für Sie. Wie bei den vollen acht Digit Versionen werden nur die 11 letzt-signifikanten (rechts stehenden) Digits benutzt, so daß Sie sich nicht um das erste Bit kümmern müssen. Mit etwas Übung sind diese Befehle leicht zu beherrschen. Beginnen Sie mit der Eingabe von Filter- und Masken-Werten und verwenden Sie dann einen Befehl wie AT MA, um das Resultat zu sehen. Der ELM327® weiß, daß Sie Filterung versuchen und verbindet die Effekte mit beiden Befehlen (er tut es für MR und für MT gleichermaßen). Die MA, MR und MT Befehle haben zudem bei Anwendung den Vorteil, daß der ELM327® ruhig bleibt und keine Erkennungs- oder Fehler-Signale sendet, so daß der Bus während dessen nicht behelligt wird. Beachten Sie, daß bei gesetztem Filter dieser für alle CAN Nachrichten verwendet wird. So können Standard OBD Abfragen mit NO DATA beantwortet werden. Haben Sie Probleme, setzen Sie alles auf die Default Werte zurück. CAN Nachrichten Formate Der ISO 15765-4 Standard definiert verschiedene Nachrichten-Typen, die in Diagnosesystemen vorkommen können. Zur Zeit werden hauptsächlich folgende vier Typen benutzt: SF – der einzelne Frame FF – der erste Frame (in einer mehrfach Frame Nachricht) CF – der fortlaufende Frame FC – der Flußkontroll Frame Die Einzel-Frame Nachricht hat Platz für bis zu 7 Datenbytes und das sogenannte PCI (Protocol Control Information) Byte. Das PCI Byte ist immer das erste Byte von allen und enthält die Anzahl der folgenden Datenbytes. Wenn die CAN Auto-Formatierungs-Option angeschaltet ist (CAF1), dann erzeugt der ELM327® dieses Byte für Sie beim Senden und entfernt es beim Empfangen. Sind jedoch die Kopf-Bytes eingeschaltet, sehen Sie es immer. Ist Auto-Formatierung ausgeschaltet (mit CAF0), wird erwartet, daß Sie alle zu sendenden Datenbytes vorgeben. Das sind für Diagnosesysteme das PCI Byte und die Datenbytes. Der ELM327 fügt jedoch für Sie extra Füllbytes (Wert 00) ein, um sicherzustellen, daß acht Datenbytes gesendet werden (da dieser Parameter in dieser Version des ELM327® nicht einstellbar ist). Sie müssen dafür nicht die (Allow Long) AT AL Option verwenden, da der IC dies für Sie überschreibt. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 51 ________________________________________________________________ Eine Erste Frame Nachricht besagt, daß eine mehrfach Frame Nachricht am Senden ist und sagt dem Empfänger, wie viele Datenbytes zu erwarten sind. Die Längen-Beschreibung ist limitiert auf 12 Bits und so können maximal 4095 Bytes mit dieser Methode gesendet werden. Fortlaufende Frame Nachrichten werden nach der Ersten Frame Nachricht gesendet, um die restlichen Daten zu übertragen. Jede Fortlaufende Frame Nachricht enthält ein einzelnes HexDigit „Sequenz Nummer“, das beim Zusammenfügen der Daten hilft. Es wird erwartet, daß bei einer verstümmelten oder nochmals gesendeten Nachricht die Reihenfolge einiger Pakete nicht mehr stimmt. Dies aber nicht mehr als bei 16 Paketen. Wie vorher schon gezeigt, ist die Fahrgestellnummer (VIN) ein typisches Beispiel einer Mehrfach-Frame Antwort: >0902 014 0: 49 02 01 31 44 34 1: 47 50 30 30 52 35 35 2: 42 31 32 33 34 35 36 In diesem Beispiel ist die Zeile beginnend mit 0: die Erste Frame Nachricht. Die Länge (014) wird aktuell vom ELM327® aus der Nachricht extrahiert und in einer separaten Zeile wie gezeigt ausgegeben. Nach der Ersten Frame Zeile folgen zwei Fortlaufende Frames (1: und 2:). Um mehr Details über das genaue Formatieren kennenzulernen, können Sie die Abfrage einmal wie oben und einmal mit Kopf-Bytes ein (AT H1) machen. Das wird die PCI Bytes zeigen, die aktuell mit diesen Komponenten der gesamten Nachricht gesendet werden. Der Flußkontroll Frame interessiert Sie nomalerweise nicht. Wenn eine Erste Frame Nachricht als Teil einer Antwort gesendet wird, muß der ELM327® dem Absender einige technische Dinge mitteilen wie die Länge der Verzögerung zwischen Fortlaufenden Frames usw. Diese sind im ISO 15765-4 Standard definiert und nicht vom Anwender veränderbar. Das Einzige, was man machen kann, ist, das Senden von Flußkontroll Nachrichten gänzlich zu unterbinden (AT CFC0). Das kann beim Experimentieren mit verschiedenen CAN Systemen erforderlich sein. Wird beim Monitoring ein Flußkontroll Frame erhalten, so wird dieser Zeile ein „FC:“ bei der Anzeige vorangestellt. Das hilft bei der Dekodierung der Information. Es gibt einen letzten Nachrichten-Typ, über den manchmal berichtet wird, der aber nicht von den Diagnose Standards unterstützt wird. Der Bosch CAN Standard erlaubt die Übertragung von Daten-Abfragen ohne das Senden irgendwelcher Daten in der Abfrage Nachricht. Zur Sicherstellung, daß die Nachricht als solche erkannt wird, setzt der Sender ein bestimmtes Flag in dieser Nachricht, das RTR Bit, das von jedem Empfänger gesehen wird. Der ELM327® beachtet dieses Flag oder Null Datenbytes und kann melden, daß ein RTR gefunden wurde. Dies wird mit den RTR Zeichen anzeigt an der Stelle, an der normalerweise Daten erscheinen. Dieses aber nur, wenn Auto-Formatierung aus ist oder Header ein ist. Wird ein CAN System mit einer falsch gewählten Baudrate überwacht, kann RTS gezeigt werden. Beachten Sie, daß das CAN System aufgrund mehrerer Fehler-Erkennungsmethoden sehr robust ist Während der normalen Datenübertragung sieht man daher kaum irgendwelche Fehler. Beim Bus Monitoring können jedoch Fehler gesehen werden, insbesondere bei falsch gesetzter Baudrate. Treten Fehler auf, gibt der ELM327® alle Bytes (egal wie CAF usw. gesetzt sind) gefolgt von der Meldung <RX ERROR aus. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 52 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Änderung Fluß-Kontroll Nachrichten ISO 15765-4 (CAN) stellt nur 8 Datenbytes je Datenpaket zur Verfügung. Es gibt natürlich viele Fälle, in denen Daten mit mehr als 8 Bytes gesendet werden müssen und CAN berücksichtigt das, in dem die Daten in Segmente zerlegt werden und vom Empfänger wieder zusammengefügt werden. Um eine mehrzeilige Nachricht zu senden, sendet der Transmitter in einem CAN System eine ‚Erste Frame’ Nachricht und wartet dann auf Antwort vom Empfänger. Diese Antwort, ‚FlußKontroll’ Nachricht genannt, enthält Informationen über das Zeitverhalten der Nachricht usw. und muß gesendet werden, bevor der Transmitter mehr Daten senden kann. Der Antwort-Typ ist für ISO 15765-4 genau definiert und ändert sich nie. Der ELM327® sendet diese ISO 15765-4 Fluß-Kontroll Nachricht automatisch für Sie, solange die CAN Fluß-Kontroll Option aktiviert ist (CFC1), was der Werkseinstellung entspricht. Mehrere Anwender baten um mehr Flexibilität für die Daten in der Fluß-Kontroll Nachricht und mit Version 1.1 haben wir dem Rechnung getragen. Um die vom ELM327® gesendeten Fluß-Kontroll Nachrichten zu ändern, müssen Sie die Fluß-Kontroll ‚Modes’ ändern. Der Default Fluß-Kontroll Modus hat die Nummer ‚0’.Beim Experimentieren kann jederzeit auf die automatischen Fluß-Kontroll Antworten (für ISO 15765-4) zurückgeschaltet werden mit folgendem Befehl: >AT PC SM 0 OK Damit werden die Antworten sofort auf ihre Grundeinstellung zurückgesetzt. Mode 1 ist für die komplette Kontrolle über die Fluß-Kontroll Nachrichten vorgesehen. Zur Verwendung definieren Sie den CAN ID (Header, Kopf) und die Datenbytes, die als Antwort auf eine Erste Frame Nachricht gesendet werden sollen. Wird versucht, diesen Mode vor der Definition der dieser Werte zu setzen, erhält man einen Fehler: >AT FC SM 1 ? Erst müssen Header und Daten gesetzt werden: >AT FC SH 7E8 OK >AT FC SD 00 11 22 OK Dann kann der Mode gesetzt werden: >AT FC SM 1 OK Von da an wird jede erhaltene Erste Frame Nachricht mit Ihrer eigenen Nachricht beantwortet. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 53 ________________________________________________________________ Der letzte zur Zeit unterstützte Mode gestattet dem Anwender das Setzen der zu sendenden Datenbytes aber nicht der ID Bits. Die ID Bits (Header Bytes) im Mode 2 werden auf die von der Erste Frame Nachricht erhaltenen Werte gesetzt ohne jegliche Änderung. Zur Verwendung von Mode 2 werden erst die Datenbytes definiert und dann der Mode aktiviert: >AT FC SD 00 11 22 OK >AT FC SM 2 OK Für die meisten Anwender wird es kein Bedürfnis geben, diese Fluß-Kontroll Nachrichten zu verändern, da die Grundwerte mit dem Standard CAN OBD arbeiten. Nur für den Fall des Experimentierens sind diese speziellen AT Befehle gedacht. FC Mode 0 1 ELM327 liefert ID Bits Datenbytes - Anwender liefert - ID Bits Datenbytes 2 ID Bits Datenbytes Fluß-Kontroll Mode Nummern Programmierbare Parameter Der ELM327® enthält mehrere programmierbare Speicherstellen, die die Daten selbst bei Abschalten der Versorgungsspannung behalten. Bei jedem Einschalten des IC werden diese Speicherstellen gelesen und als Grundeinstellungen verwendet für zum Beispiel Art der Anzeige der Header (Kopfbytes) oder wie oft Weck-Nachrichten gesendet werden. Die Einstellungen oder Parameter können vom Anwender jederzeit mit einfachen Befehlen geändert werden. Die Programmierbaren Parameter Befehle werden genau wie die anderen AT Befehle benutzt, jedoch benötigt jeder zwei Schritte, um aktiv zu werden. Damit ist etwas Sicherheit gegen zufällige ungewollte Eingaben gegeben. Die Tabelle enthält die aktuell unterstützten Programmierbaren Parameter dieser Version des ELM327®. Als Beispiel zur Verwendung der Programmierbaren Parameter nehmen wir die erste Zeile (Anzeige der Kopfbytes, Header). Bei laufendem ELM327® und Verwendung von AT H1 zum Einschalten der Header möchten Sie auf die Grundeinstellung zurückschalten. Dazu verändern Sie einfach den Wert von PP 01: >AT PP 01 SV 00 OK Dies hat den mit PP 01 verbundenen Wert geändert, aber noch nicht aktiviert. Dazu wird eingegeben: >AT PP 01 ON OK Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 54 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Kennen Sie den aktuellen Status der Programmierbaren Parameter nicht, dann können Sie einfach den PPS Befehl zum Anzeigen aller Parameter verwenden. Für obiges Beispiel kann folgendes angezeigt werden: >AT PPS 00:FF F 04:FF F 08:FF F 0C:FF F 10:FF F 14:FF F 18:FF F 1C:FF F 20:FF F 24:FF F 28:FF F 1C:FF F 01:00 N 05:FF F 09:FF F 0D:FF F 11:FF F 15:FF F 19:FF F 1D:FF F 21:FF F 25:FF F 29:FF F 2D:FF F 02:FF F 06:FF F 0A:FF F 0E:FF F 12:FF F 16:FF F 1A:FF F 1E:FF F 22:FF F 26:FF F 2A:FF F 2E:FF F 03:FF F 07:FF F 0B:FF F 0F:FF F 13:FF F 17:FF F 1B:FF F 1F:FF F 23:FF F 27:FF F 2B:FF F 2F:FF F Man sieht, daß PP 01 nun den Wert 00 zeigt und aktiviert ist (eiN). Da der Typ ‚D’ ist, wird es nicht aktiviert, bis der AT D Befehl gegeben wurde oder der ELM327 einen Reset erhalten hat. Ein letztes Beispiel zeigt, wie man das CAN Filter Byte ändern kann. Einige Systeme verwenden ‚AA’ als Wert für ungenutzte CAN Bytes, während der ELM327® ‚00’ als Grundwert verwendet. Um das Verhalten des ELM327® zu ändern, ändert man einfach PP 26: >AT PP 26 SV AA OK >AT PP 26 ON OK Wiederum ist PP 26 vom Typ ‚D’, so daß die Änderung oben erst mit dem AT D Befehl oder dem Reset des ELM327® aktiviert wird. Ein Vorsichtshinweis beim Experimentieren: Die meiste ELM-Systeme Software erwartet ein bestimmtes Antwortverhalten des ELM327® und Sie können die Software ‚abschießen’, wenn das geändert wird. Wenn zum Beispiel der CAN Datenlängen Code mit PP 29 aktiviert wird, erwartet die meiste Software, daß die ELM327® Header kein einzelnes Digit dort haben, wo der DLC Code angezeigt wird. Daher wird es Probleme mit kommerzieller Software geben, wenn DLC eingeschaltet ist. Ein anderes Beispiel ist das Ändern des Wagenrücklauf Zeichens (CR). Das ist das einzige vom ELM327® erkannte Zeichen, das nach Übergabe des Befehls eine Aktion auslöst. Wird es geändert, hat die Software mit Sicherheit Probleme und schlimmer noch: Wenn der dafür gesetzte Wert vergessen wurde, kann es den IC unbrauchbar machen. Experimentieren Sie daher mit allergrößter Vorsicht mit diesem Wert. Die Programmierbaren Parameter bieten die Möglichkeit, den ELM327® an eigene Applikationen anzupassen. Sie bieten allerdings auch die Möglichkeit, eklatante Fehler zu machen. Befassen Sie sich vorher ausführlich mit jeder Änderung, die Sie machen wollen und Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 55 ________________________________________________________________ seien Sie sich sicher, sie verstanden zu haben. Haben Sie sich ‚verrannt’, vergessen Sie nicht den folgenden Befehl, der alles ausschaltet: >AT PP FF OFF Ab ELM327® Version 1.2 steht auch ein Hardware-Reset zur Verfügung (siehe dazu unter PP in den AT Befehlen oben). Hier eine Liste der aktuell implementierten Programmierbaren Parameter: Nummer Beschreibung 00 AT MA ausführen nach Kaltstart oder Reset 01 Anzeige Kopfbytes (Header, AT H1 Einstellung) 02 Erlaube lange Nachrichten (AT AL Einstellung) 03 NO DATA (AT ST) Zeit (Einstellung = Wert x 4,096 msek) Setzt den AT Grundwert (adaptives Timing) 04 06 07 09 0A 0C 0D 10 11 13 OBD Quell Adresse (Source, Tester), nicht bei J1939 Protokollen Letztes Protokoll bei automatischer Suche Zeichen Echo (AT E1 Einstellung) Zeilenvorschub Zeichen (LF, LineFeed) RS232 Baudraten Divisor, wenn Pin 6 = 1 (Rate in kbps = 4000/Wert) Um z.B. 500 kbps zu erhalten, verwende 4000/500 = 08 Hier einige typische Baudraten und deren zugehöriger Divisor: Baudrate (kbps) PP 0C Wert hexadezimal (dezimal) 19,200 D0 (208) 38,400 68 (104) 57,600 45 (69) 115,200 23 (35) 230,400 11 (17) 500,000 08 (8) Der PP 0C Wert darf dem ELM327® nur als hexadezimal Wert übergeben werden. Die gezeigten dezimalen Werte dienen nur zum Verständnis. Wagenrücklauf Zeichen (CR, Carriage Return) J1850 Spannungs-Wartezeit (Einstellung = Wert x 4,096 msek) J1850 Unterbrechungs-Signal Monitor (liefert BUS ERROR wenn Unterbrechungs-Signal Grenzdauer überschritten) Autom. Suchzeit-Dauer zwischen Protokoll 1 und 2 (Einstellung = Wert x 4,096 msek) Wert Default Typ 00 = Ein FF = Aus 00 = Ein FF = Aus 00 = Ein FF = Aus 00 bis FF FF (Aus) FF (Aus) FF (Aus) 32 (205 msek) 00 (Ein) F1 R 00 = Ein FF = Aus 00 bis FF D D D I R 01 bis 0C 00 = Ein FF = Aus 00 bis FF 08 bis FF 09 00 (Ein) 0A 68 (38,400) D R 00 bis FF 00 bis FF 0D 00 (53 msek) 00 (Ein) R I 00 = Ein FF = Aus 00 bis FF 32 (205 msek) R P D I (siehe Hinweis 3) Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 56 CarCode Müller ElmCan® ELM327® ________________________________________________________________ 16 ISO Baudrate (AT IB Einstellung) 17 ISO Wachhalte-Nachrichten Rate (AT SW Einstellung, Einstellung = Wert x 20,48 msek) Autom. Suchzeit-Dauer zwischen Protokoll 4 und 5 (Einstellung = Wert x 4,096 msek) 18 24 CAN autom. Formatierung (AT CAF1 Einstellung) 25 CAN autom. Fluß-Kontrolle (AT CFC1 Einstellung) 26 29 CAN Filterbyte CAN Datenlängen-Code (DLC) anzeigen bei Anzeige Kopfbytes (Header) 2B 2C 2D 2E 2F Protokoll A (SAE J1939) CAN Baudraten Divisor. Der ELM327® setzt die durch diesen Wert bestimmte CAN Baudrate (Rate in kbps = 500/Wert). Beispiel: Setzen dieses PP auf 19 (das ist dezimal 25) erhält eine Baudrate von 500/25 = 20 kbps. Protokoll B (USER1) CAN Protokoll Optionen. Jedes Bit in dieser Byte-Kontrollfunktion hat folgende Bedeutung: b7: Transmit ID Länge, 0 = 29 Bit ID, 1 = 11 Bit ID b6: Daten Länge, 0 = feste 8 Bytes, 1 = variabele DLC b5: Receive ID Länge, 0 = wie bei b7 gesetzt, 1 = beide 11 Bit und 29 Bit b4: reserviert für zukünftige Erweiterungen, bei 0 lassen b3: reserviert für zukünftige Erweiterungen, bei 0 lassen b2, b1 und b0 bestimmen die Daten Format Optionen wie folgt: b2 b1 b0 Daten Format 0 0 0 kein 0 0 1 ISO 15765-4 0 1 0 SAE J1939 andere Kombinationen reserviert für die Zukunft. Beachten Sie, daß b7 das Most-Significant-Bit (msb) und b0 das Lower-Significant-Bit (lsb) ist. Der Default-Wert 80 kann z.B. als Binärwert 11100000 gezeigt werden, so daß 11 Bit ID, variable DLC etc. gemeint sind. Protokoll B (USER1) Baudraten Divisor. Siehe Beschreibung unter PP 2B. Protokoll C (USER2) CAN Protokoll Optionen. Siehe Beschreibung unter PP 2C. Protokoll C (USER2) Baudraten Divisor. Siehe Beschreibung unter PP 2B. 00 = 96 FF = 10 00 bis FF 00 bis FF 00 = Ein FF = Aus 00 = Ein FF = Aus 00 bis FF 00 = Ein FF = Aus 01 bis 40 00 bis FF FF (10,4 K) 92 (2,99 sek) 00 (keine Dauer) 00 (Ein) 00 (Ein) 00 FF (Aus) R D I D D D D (siehe Hinweis 3) 02 (250 kbps) R E0 R (11100000) 01 bis 40 00 bis FF 04 (125 kbps) 80 R R (10000000) 01 bis 40 0A (50 kbps) R Hinweise: 1. Die System „Default“ Werte werden mit dem AT PPS Befehl nicht angezeigt. Alle System „Default“ Werte sind intern gespeichert und für den Anwender nicht sichtbar. 2. Der „Typ“ bestimmt, wann ein Programmierbarer Parameter aktiv ist. Bei „I“ ist er das sofort, bei „R“ wird er nur aktiv, wenn ein Reset erfolgte (ATZ, AT WS) oder nach Versorgungsspannung aus/ein. Der „D“ Typ wird nach Wiederherstellung der Default-Werte (mit AT D, AT Z, AT WS oder Spannung aus/ein) aktiv und „P“ nur nach Versorgungsspannung aus/ein oder AT Z. 3. Diese Änderungen betreffen nur die letzte Version des IC. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 57 ________________________________________________________________ Fehlermeldungen Gibt es Hardware- oder Datenprobleme, kann der ELM327® mit folgenden kurzen Nachrichten antworten. Einige Meldungen werden bei der automatischen Protokollsuche unterdrückt und sind nur sichtbar, wenn nicht im Auto-Mode. Hier ist eine kurze Beschreibung jeder Meldung: BUFFER FULL Der ELM327® enthält einen internen 256 Byte RS232 Übertragungspuffer, so daß OBD Nachrichten schnell erhalten, gespeichert und zum Computer oder PDA mit einer konstanten Rate gesendet werden. Gelegentlich (besonders bei CAN Systemen) füllt sich der Puffer schneller, als er geleert wird. Er wird eventuell voll und es können keine Daten mehr gespeichert werden, sie sind verloren. Wird eine BUFFER FULL Meldung erhalten und 9600 Baud werden verwendet, sollte auf 38400 Baud gewechselt werden. Erscheint dann immer noch eine BUFFER FULL Meldung, sollte die Filter Option (MR, MT, CF und CM AT-Befehle) verwendet werden. BUS BUSY Der ELM327® versucht, einen Mode Befehl zu senden oder den Bus zu initialisieren, aber er erkennt zuviel Aktivität, um eine Nachricht einzufügen. Es kann sein, daß der Bus tatsächlich sehr beschäftigt ist, aber oft ist es auf Verdrahtungsprobleme zurückzuführen, die einen permanent aktiven Eingang an OBDIn erzeugen. Tritt dies bei Ihren ersten Versuchen mit dem ELM327® auf, prüfen Sie die Spannungspegel am OBD Eingang, es ist wahrscheinlich ein Verdrahtungsproblem. BUS ERROR Es gab ein allgemeines Problem. Dies liegt meistens an der Erkennung eines ungültigen Signals (ein langer Impuls etc.) oder an einem Verdrahtungsfehler. Beachten Sie, daß einige Fahrzeuge während des Startprozesses lange Impulse generieren können und daher diese Meldung bei einer normalen Initialisierung erscheinen kann, wenn Monitor Alles (zeige alles an, AT MA) eingeschaltet ist. CAN ERROR Das CAN System hat Schwierigkeiten beim Initialisieren, Senden oder Empfangen. Oft liegt es einfach an einer nicht bestehenden Verbindung zu einem CAN System, wenn versucht wird, eine Nachricht zu senden. Aber es kann auch sein, daß das System auf ein falsches Protokoll gesetzt wurde oder die Datenrate nicht übereinstimmt. Wie bei BUS ERROR kann ein CAN ERROR auch bei Verdrahtungsproblemen auftauchen.. Wird ein Selbstbau ELM327® Interface zum ersten Mal verwendet, prüfen Sie bitte dann den CAN Schaltteil. FB ERROR Bedeutet, daß ein Rückführungs-Fehler („FeedBack“, FB) auftrat. Wenn die K-Linie zuerst angesprochen wird, erfolgt eine Prüfung, ob das Signal zu OBDIn zurückgeführt wird. Wenn das nicht geschieht, wird diese Meldung erzeugt. Überprüfen Sie die Verdrahtung eines Selbstbau-Interfaces bevor Sie weitermachen mit den ersten Versuchen Ihres SelbstbauInterfaces. DATA ERROR Es gab eine Antwort vom Fahrzeug, aber die Information war nicht korrekt oder konnte nicht bearbeitet werden. Im Fall der Bus-Initialisierung bedeutet das, daß die Formatierungs-Bytes Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 58 CarCode Müller ElmCan® ELM327® ________________________________________________________________ nicht den Erwartungen entsprachen und Initialisierung nicht stattfand. Im Normalbetrieb bedeutet das, daß die Antwort für eine richtige Nachricht zu wenig Bytes enthielt, was auftreten kann, wenn das Signal während des Transports unterbrochen wurde. <DATA ERROR Das Resultat der Fehler-Prüfsumme entsprach nicht den Erwartungen, was auf einen Datenfehler in der Zuleitung deutet (der ELM327® zeigt weiterhin, was er erhalten hat). Möglicherweise traten Rauschstörungen auf oder es gab ein Schaltkreis-Problem. Versuchen Sie, den Befehl erneut zu senden. NO DATA Der IC wartete die mit dem Befehl AT ST gesetzte Zeit ab und es gab daraufhin keine Antwort vom Fahrzeug. Es kann sein, daß das Fahrzeug keine Daten anbieten kann, da keine Informationen gespeichert sind, daß der abgefragte Mode nicht unterstützt wird oder daß es auf einen höher priorisierten Ausgang wartet und in der gesetzten Zeit nicht antworten kann. Bei einem CAN System kann der Filter so gesetzt sein, daß Daten ignoriert werden. Versuchen Sie mit AT ST die Zeitspanne zu justieren, um sicher zu sein, daß Sie ausreichend Antwortzeit bewilligt haben. Bei CAN Systemen stellen Sie die Default Werte des Filters wieder her. <RX ERROR Beim Empfang von CAN Daten wurde ein Fehler bemerkt. Dies erscheint üblicherweise nur beim Monitoring des CAN Bus und beim Setzen einer falschen Baudrate. Versuchen Sie ein anderes Protokoll. UNABLE TO CONNECT Der ELM327® hat alle verfügbaren Protokolle durchprobiert und kann kein kompatibeles finden. Das kann auftreten, weil Ihr Fahrzeug ein nicht unterstütztes Protokoll verwendet oder einfach, weil die Zündung nicht eingeschaltet war. Prüfen sie alle Verbindungen und die Zündung und versuchen Sie es nochmals. ? Das ist die Standard Antwort für einen auf dem RS232-Bus mißverstandenen Befehl. Üblicherweise handelt es sich meist um einen Tippfehler. Applikation Bausatz Der SAE Standard J1962 bestimmt, daß alle OBD-2 kompatibelen Fahrzeuge einen Standard Stecker in der Nähe des Fahrersitzes haben müssen, dessen Form und Kontaktbelegung dem Bild entspricht. Die Schaltung, die hier beschrieben wird, dient zum Anschluß an diesen Stecker ohne jegliche Modifizierungen am Fahrzeug. Bild OBD2/EOBD-Stecker Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 59 ________________________________________________________________ Das mitgelieferte OBD/DB9-Kabel des ElmCan® Bausatzes oder des Fertiggerätes besitzt den erforderlichen männlichen J1962 Stecker zum Anschluß an die entsprechende FahrzeugSteckerbuchse und einen DB9-Stecker zum Anschluß an das Interface. Die für die genormten Protokolle erforderlichen Leitungen (OBD-Pin 2, 4, 5, 6, 7, 10, 14, 15 und 16) sind damit verbunden. Die Schaltung auf dem folgenden Bild zeigt, wie der ELM327® typischerweise benutzt wird. Die Schaltspannung kommt vom Fahrzeug über die OBD Pins 16 und 5 und wird nach einer Schutzdiode und geringer Filterung dem 5 Volt Regler zugeführt. Es wurde berichtet, daß einige Fahrzeuge keinen Pin 5 haben. In dem Fall kann Pin 4 + 5 verbunden werden. Der Ausgang dieses Regulators speist mehrere Punkte in der Schaltung und eine LED zur visuellen Kontrolle auf Vorhandensein einer Spannung. Die Spannung benutzt der ELM327® außerdem zur kalibrierbaren Anzeige der Fahrzeug-Batteriespannung. Wegen des bei CANProtokollen möglichen höheren Strombedarfs wird statt des alternativ einsetzbaren 78L05 im TO-92 Gehäuse der µA7805 im TO-220 Gehäuse geliefert, der für höhere Ströme ausgelegt ist. Für beide Typen sind jedoch Montagemöglichkeiten auf der Platine des Bausatzes vorhanden. Im Fertiggerät ist grundsätzlich die verstärkte Ausführung verwendet worden. Beachten Sie die Anschlüsse des µA7805 TO-220, die am Ende dieser Unterlagen unter Schaltzeichen gezeigt sind. In der oberen linken Ecke der Schaltung ist der CAN Schaltungsteil gezeigt, der für den Bausatz einen Microchip MCP2551 verwendet. Einen vergleichbaren Chip verwendet das Fertiggerät. Diese Transceiver-Chips garantieren eine optimale Datenintegrität auf dem CAN Bus. Die Verbindungen zum Fahrzeug (OBD Pin 2 und 10) übertragen die J1850-Protokolle PWM und VPW, die Verbindungen (OBD Pin 6 und 14) die CAN-Protokolle. Die verbleibenden zwei Verbindungen zum Fahrzeug (OBD Pin 7 und 15) sind für die zwei Datenlinien, die in den Standards ISO 9141 und ISO 14230 beschrieben sind. Zur Erfüllung der Normen kontrolliert der ELM327® beide Linien durch die gezeigten NPN Transistoren, deren PullupWiderstand an deren Kollektoren liegt. Der 510 Ohm Wert für diese Widerstände ist in den Normen spezifiziert, ein größerer Wert würde nur die Schwellzeit erhöhen und die Schaltung inoperabel machen. Ein kleinerer Wert könnte die Schaltung zerstören, daher sollte man möglichst nahe bei 510 Ohm bleiben. Obwohl viele Fahrzeuge mit den ISO-Protokollen 9141 und 14230 die L-Linie nicht mehr brauchen, ist sie hier vorhanden. Sie diente bei älteren Fahrzeugen nur zur Initialisierung, die Daten werden über die K-Linie übertragen. Sie gehen zu Pin 12 des IC, nachdem sie durch den Spannungsteiler R20/R21 reduziert wurden. Der Schaltungsteil für die beiden J1850 Protokolle PWM und VPW verwendet den einstellbaren Spannungsregler 317L, um die für PWM erforderlichen 8 Volt bzw. für VPW erforderlichen 5 Volt bereitzustellen, was über die Widerstände von Pin 3 des IC geschaltet wird. Die beiden Ausgänge benutzen die Treiber der Q1/Q2-Kombination für den Plus-Bus und Q3 für den Minus-Bus. Die Spannungs-Meßschaltung für den ATRV-Befehl besteht aus dem an Pin 2 des IC in der Schaltung gezeigten Teils. Die beiden Widerstände teilen einfach die Spannung auf einen für den ELM327® unschädlichen Level und die Kondensatoren filtern Rauschen heraus. Im Werkszustand erwartet der ELM327® das hier verwendete Widerstands-Teilungsverhältnis. Bei anderen Spannungsbereichen könnten die Widerstände entsprechend geändert werden und müssen dann mit ATCV kalibriert werden. Der ELM327® kann jedoch nicht mehr als 99,9 Volt anzeigen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 60 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Ein sehr einfaches RS232-Interface ist an Pin 17 und 18 des ELM327® angeschlossen. Die erfolgten Änderungen am ELM327® bewirken, daß problemlos auch ein serieller Treiber-IC wie z.B. MAX232 oder ein USB-Konverter angeschlossen werden könnten. Dies ist beim Fertiggerät der Fall. Die RS232 Anschlüsse sind für einen 9-poligen seriellen Stecker gezeigt. Beim 9-poligen Stecker werden Anschlüsse 2 (RxD), 5 (SG) und 3 (TxD) verwendet. RS232-Daten vom Computer sind im Gegensatz zu der üblichen Schaltung der alten ELM über den inventierenden Transistor an Pin 18 des IC angeschlossen, da der Eingang des ELM327® entsprechend geändert wurde..Der Widerstand 4,7 Kilo-Ohm gestattet Spannungsschwankungen im Ausmaß der Versorgungspegels bei gleichzeitigem Schutz des ELM327®. Das Senden von RS232-Daten geschieht über den gezeigten PNP Transistor, angeschlossen an Pin 17. Dieser Transistor erlaubt das Pendeln der Ausgangsspannung zwischen +5 Volt und der negativen Spannung gespeichert am 0,1 µF Kondensator, der von der TxD-Linie des Computers geladen wird. Obwohl eine einfache Verbindung, ist es für diese Anwendung sehr effektiv. Beachten Sie, daß Pin 5, 6 und 7 über Jumper an VDD angeschlossen sind, so daß - die Memory-Option eingeschaltet ist, - die Baudrate auf 38400 Baud eingestellt ist und - bei jeder Sendung eines Wagenrücklauf-Zeichens (CR) defaultmäßig ein Zeilenschaltungszeichen (LF) gesendet wird. Siehe dazu auch weiter unten zur Information über die Jumper. Die vier LEDs an Pin 25 bis 28 dienen zur Visualisierung der Schaltkreis-Aktivitäten. Alle LED besitzen getrennte Vorwiderstände für die jeweiligen Tx und Rx LEDs für RS232 und OBD. Sie sind nicht notwendig, aber eine willkommene Hilfe beim Experimentieren. Der zwischen Pin 9 und 10 geschaltete Quarz ist schließlich ein üblicher 4,0 MHz Quarz. Die 27 pF Quarz-Ladekondensatoren sind hier nur als typisch gezeigt und können andere Werte je nach Spezifikation des Quarzes haben. Die Quarz-Frequenz ist kritisch und darf nicht geändert werden. Damit ist die Schaltung vollständig beschrieben. Prüfen Sie vor dem Zusammenbau die Vollständigkeit der Teile. Identifizieren Sie die Widerstände anhand der Farbringe: 100 Ω - braun/schwarz/braun 240 Ω - rot/gelb/braun 470 Ω - gelb/violett/braun 510 Ω - grün/braun/braun 2,2 kΩ - rot/rot/rot 4,7 kΩ - gelb/violett/rot 10 kΩ - braun/schwarz/orange 22 kΩ - rot/rot/orange 47 kΩ - gelb/violett/orange 100 kΩ - braun/schwarz/gelb Der letzte Ring kodiert die Toleranz des Widerstandes in %. Sie können die Widerstände natürlich auch mit einem Multimeter (Ohm-Messung) bestimmen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 61 ________________________________________________________________ Beachten Sie die Polung der Dioden und LED, siehe Hinweise unten unter Schaltzeichen. Verwechseln Sie nicht die DB9-Printstecker. Der weibliche Stecker ist für die RS232-Seite, der männliche für die OBD-Seite. Die drei Jumper (J4 bis 6) für M, B und L müssen unbedingt wie unten gezeigt gesteckt sein: Die Jumper-Drähte J1 bis J3 werden aus abgekniffenen, überstehenden Drähten der Widerstände oder ähnlichem entsprechend dem Aufdruck der Platine gesetzt und verlötet. ELM327 M B L Bild Jumper-Grundstellung Die Schaltung soll nicht ohne gesteckte Jumper betrieben werden. Die Stellung entspricht den AT-Befehlen M0/M1 (Grundstellung M1), IB10/IB96 (Grundstellung ist IB10) und L0/L1 (Grundstellung ist L1). Bei gewünschter Einstellung M0, IB96 oder L0 ist jeweils eine Drahtbrücke anstelle der Jumperleisten einzulöten, wie beispielsweise für M unten gezeigt: ELM327 M B L Bild Jumperstellung für besondere Anwendungen ACHTUNG: In Platinen-Revision A wurden diese Jumper geändert. Es werden dabei 3 x 3 Stiftleisten eingelötet und die Jumper-Grundstellung bleibt jedoch wie beim obersten Bild „Jumper-Grundstellung“ gezeigt. Für besondere Anwendungen wird hingegen keine Drahtbrücke gesetzt, sondern die Jumper wie unten gezeigt umgesetzt. ELM327 M B L Bild Platinen-Rev. A, Jumperstellung für besondere Anwendungen Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 62 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Nach dem Einsetzen des IC ELM327® zum Abschluß des Aufbaues testen Sie die Schaltung durch Anlegen einer 9 Volt Spannung von einer 9V-Blockbatterie mit Plus an OBD-Pin 16 und Minus an OBD-Pin 5. Beim Einschalten der Spannung sollten die LED L1 bis L4 der Reihe nach kurz aufblinken und die LED L5 Dauerlicht zeigen. Dies sollte nun auch beim Senden des Befehls ATZ mit einem Terminal-Programm wie z.B. Hyperterminal erfolgen, wenn auch das serielle Kabel mit einem Computer verbunden wurde und das TerminalProgramm auf 8N1, 38400 Baud, keine Flußkontrolle konfiguriert wurde. Die Schaltung ist nun einsatzbereit. Fertiggeräte ElmCan® Die Fertiggeräte sind in SMD-Technik aufgebaut und können daher eine wesentlich kleinere Platine verwenden. Die Schaltung ist größtenteils identisch, d.h., es findet ebenfalls ein verstärkter Spannungskonstanter Verwendung und es sind ebenfalls Jumper zur Einstellung bei besonderen Anwendungen vorhanden, die jedoch aus Platzgründen als Lötpunkte ausgeführt sind. Der im Bausatz mit Transistoren aufgebaute RS232-Teil besteht im Fertiggerät aus einem MAX232 IC. Es werden die gleichen Anschlußkabel verwendet wie beim Bausatz. Bild Platine ElmCan-SER Fertiggerät Bild Platine ElmCan-USB Fertiggerät Für die USB Versionen des ElmCan® Interfaces sind zum Betrieb mitgelieferte USB Treiber erforderlich, deren Installation hier im Anhang erklärt ist. Die ElmCan®-I USB Version arbeitet wie die serielle Version mit einer Baudrate von 38.400 kbps, die ElmCan®-II USB Version arbeitet mit bis zu 500.000 kbps. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 63 ________________________________________________________________ Die Installation der ebenfalls erhältlichen ElmCan® Bluetooth Version ist auch im Anhang hier geschildert. Jumper Sollen die Jumper umkonfiguriert werden, muß das Gehäuse geöffnet werden. An jeder Längsseite des Gehäuses befinden sich je zwei Schlitze im Bereich der Gehäude-Trennfuge. In diese Schlitze wird die Klinge eines passenden Schraubenziehers eingeführt und der Schraubenzieher leicht gedreht, so daß das Gehäuse aufspringt. Wenden Sie bitte dazu keine Gewalt an und entfernen Sie die Gehäusehälften dann vorsichtig voneinander, um die durchgesteckten LED nicht zu beschädigen. Jumper J4 Der 16-polige OBD2-Fahrzeugstecker am Fahrzeug führt an Pin 4 Fahrzeug-Masse und an Pin 5 Signal-Masse. Laut OBD2-Normen sollte keine Spannungsdifferenz zwischen Fahrzeug-Masse und Signal-Masse auftreten. Der einzuführende Diagnosestecker soll gemäß Normen außerdem längere Pins für 4 + 5 aufweisen, so daß beim Einstecken eines Diagnosegerätes zuerst Masse verbunden wird. (Manche Anwender bemängeln den Stecker wegen der beiden hervorstehenden Pins, das ist aber so gewollt.) Erfahrungsgemäß können einzelne Fahrzeuge Probleme bereiten, wenn nur die nach den Normen eigentlich ausreichende Signal-Masse mit dem Diagnosegerät verbunden ist. Ist das der Fall, kann mit Jumper 4 durch Setzen eines Lötpunktes zur Überbrückung Pin 4 und Pin 5 verbunden werden. Bild Platinenausschnitt Jumper 4 Überprüfen Sie anschließend die Kabelverbindung anhand der folgenden Skizze (DB9 Pin 1 + 2).. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 64 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Jumper L, B, M Diese Jumper sind im Auslieferungszustand geschaltet wie in der Jumper-Grundeinstellung beim Bausatz gezeigt . Wird für besondere Anwendungen eine Änderung gewünscht, müssen die im Bild unten gezeigten Leiterbahnen aufgetrennt werden und entsprechende Lötpunkte zur Überbrückung gesetzt werden. Hier Leiterbahn auftrennen und Lötpunkte zur Überbrückung setzen. ACHTUNG: Zur Vermeidung von Kurzschlüssen in der Schaltung überprüfen Sie die Änderung anhand des Schaltplanes unten z.B. mit einem Multimeter, bevor Sie die Schaltung mit Spannung beaufschlagen. Zum Öffnen des ElmCan® Gehäuses führen Sie die Klinge eines passenden Schraubenziehers nacheinander in jede der zwei Schlitze an jeder Seite ein und drehen den Schraubenzieher leicht, bis die Gehäuseverriegelung aufspringt (siehe Bild unten). Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 65 ________________________________________________________________ Bild Bestückung Bausatz Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 66 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Bild Schaltplan Bausatz Anhang Stückliste Bausatz Bezeichnung U1 U2 U3 U4 Q1, Q3, Q5, Q6, Q7, Q9 Q2, Q4, Q8 D1 Anzahl 1 1 1 1 6 3 1 Bauteil ELM327® MCP2551 78L05 LM317L NPN Transistor 2N3904 o.ä. PNP Transistor 2N3906 o.ä. Diode 1N4001 Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 67 ________________________________________________________________ D2, D3, D4, D5 L1, L3 L2, L4 L5 R32, R33 R5 R1, R2, R3, R4, R27, R28, R29, R30 R17, R19 R16, R18 R6, R7, R14, R15, R23, R26, R31 R8, R9, R11, R13, R22, R24, R25, R35 R10, R21 R20, R34 R12 C3, C4 C1, C2, C5, C6, C7 C8, C9 X1 Platine ElmCan IC-Sockel 28 DB9M DB9F OBD2-Kabel RS232-Kabel Jumper-Stifte Jumper Schutztasche CD-ROM 4 2 2 1 2 1 8 2 2 7 8 Diode 1N4148 LED 3mm rot LED 3mm gelb LED 3mm grün Widerstand 100 Ω Widerstand 240 Ω Widerstand 470 Ω Widerstand 510 Ω Widerstand 2,2 kΩ Widerstand 4,7 kΩ Widerstand 10 kΩ 2 2 1 2 5 2 1 1 1 1 1 1 1 9 3 1 1 Widerstand 22 kΩ Widerstand 47 kΩ Widerstand 100 kΩ Kondensator 27 pF Kondensator 0,1 mF 50V Kondensator 560 pF Quartz 4,00 MHz Platine IC-Sockel für ELM327® DB9 Printstecker männlich DB9 Printstecker weiblich OBD/DB9-Kabel DB9M/DB9F-Kabel Jumper-Stifte 3 x 3 Jumper Tasche CD-ROM alle Widerstände ¼ Watt. ACHTUNG: Die Bausätze wurden von Menschen zusammengestellt, Fehler können daher vorkommen. Prüfen Sie bitte vor dem Zusammenbau alle Teile auf Vollständigkeit. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 68 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Schaltzeichen Transistoren Bild: 2N-Typen Bild: BC-Typen Bedruckung der ElmScan- und ElmTest-Platinen zeigt 2N-Typen. Bei Verwendung von BCTypen müssen diese um 180° gedreht eingesetzt werden, da Emitter und Kollektor vertauscht sind. NPN-Transistor: PNP-Transistor: µA7805 TO-220: Diode, LED Bedruckung der ElmCan-Platine zeigt für Dioden und LED das Schaltsymbol, ein (+)Zeichen oder ein (A) bzw. ein (K). Kathode ist bei Dioden ein Ring, bei LED das kurze Bein. Bild: Fertiger Bausatz (hier ohne IC-Sockel) Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 69 ________________________________________________________________ Bezugsquellen/Lieferanten CarCode Müller Schulze-Delitzsch-Str. 7 30938 Burgwedel Tel. 05139/896834 Fax 05139/896835 [email protected] www.obd-2.de CarCode eShop www.CarCode-eShop.de www.obd-2.de/eShop/index.php Konformität Alle CarCode Müller Produkte erfüllen die gesetzlichen Bestimmungen nach CE und RoHS. Entsorgungshinweis Alle CarCode Müller Produkte entsprechen den §§ 4, 5 und 7 des Elektro- und Elektronikgerätegesetzes vom 16.03.2005. Die Entsorgung des Interfaces über den normalen Hausmüll ist nicht zulässig. Der Vertrieb oder CarCode Müller, Schulze-Delitzsch-Str. 7, DE30938 Burgwedel nehmen die Interfaces zur Behandlung gemäß § 11 oder § 12 Elektro- und Elektronikgerätegesetz kostenlos zurück. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 70 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Anhang für ElmCan®-USB Treiber-Installation Für die USB-Version des ElmCan® muß vor Verwendung der entsprechende auf der CD mitgelieferte USB-Treiber auf dem Computer installiert sein. Ein USB-Stack (USBUnterstützung des Betriebssystems) ist erst ab Windows-98 verfügbar. Voraussetzung ist also Windows-98 und höher. Treiber für 64-Bit sind auf Anfrage verfügbar. Treiber für WinCE und Linux/Unix befinden sich ebenfalls auf der CD. Treiber für andere Betriebssysteme fragen Sie bitte bei CarCode Müller an. Aktuelle Treiber werden auf der ElmCan® UpdateSeite veröffentlich, für die der Anwender eine Zugangsberechtigung erhalten hat. Den folgenden Text können Sie bis zum Punkt „Treiber-Konfiguration“ überspringen, wenn Sie unsere neue Treiberinstallationsmethode für Windows2000, XP und höher verwenden, die wir als Datei EC-USB.zip bzw. EC-USB.exe ab 22. März 2006 zur Verfügung stellen. Neue Versionen der ScanMasterELM-OEM Software werden diese Installationsmethode bereits integrieren. Damit haben wir eine wesentliche Vereinfachung der Treiberinstallation erreichen können, da nun die Treiber ohne angeschlossenes ElmCan-USB vorinstalliert werden und dann beim Anschluß des ElmCan-USB sofort zur Verfügung stehen, ohne daß der langwierige Vorgang des Windows Hardware-Assistenten ablaufen muß. Wie bei Windows sonst üblich, startet beim Einstecken unbekannter Hardware der Plug-andPlay Hardware-Wizard (-Assistent). Das anzuschließende Gerät muß dazu betriebsbereit (eingeschaltet) sein, wie Sie es beim Anschluß z.B. eines neuen Druckers oder ähnlichem kennen. So geschieht es auch beim erstmaligen Anschluß des ElmCan®-USB. Das ElmCan®USB ist betriebsbereit, wenn die Power-LED leuchtet, das Interface also Betriebsspannung über den OBD2-Stecker des Fahrzeugs bekommt. ElmCan®-II USB erfolgt die Spannungsversorgung des USB-Teils hingegen über das USB Kabel vom angeschlossenen Computer, so daß zur Installation über den Wizard keine andere Stromquelle erforderlich ist. Alternativ können Sie das ElmCan®-USB dazu auch mit einer anderen 12VGleichstromquelle versorgen, wenn kein Fahrzeug verfügbar ist. Tun Sie das bitte nur im Ausnahmefall, da keine Garantie beim Anlegen einer Spannung an einen falschen Kontakt des ElmCan®-USB übernommen werden kann. Idealerweise verwenden Sie dazu das Netzteil ZUB-NT von CarCode Müller, ansonsten muß Plus-12V= an Kontakt 16 am OBD2-Stecker des OBD2-Kabels liegen und Minus-12V= an Kontakt 5 liegen. Achtung: Die Kontaktnummerierung des OBD-Steckers ist bei jeweiligem Blick auf die Kontakte spiegelverkehrt zur OBD-Buchse. Blick auf die Kontakte des OBD2-Steckers (OBD2-Kabel) Startet der Wizard nicht automatisch nach einer Wartezeit, wurde bereits früher schon ein USB-Seriell-Treiber auf Ihrem Computer installiert. Deinstallieren Sie diesen bitte vorher unter Einstellungen/Software (siehe auch weiter unten Deinstallieren). Gehen Sie nicht auf die automatische Suchfunktion im Wizard, sondern klicken Sie manuelle Suche an und geben Sie das Verzeichnis USB der eingelegten CD als Suchort an. Je nach Ihrem Betriebssystem können Sie auch das entsprechende Unterverzeichnis 98-ME für Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 71 ________________________________________________________________ Windows98 oder WindowsME anwählen oder W2K-XP für Windows2000 oder WindowsXP. Der Hardware-Wizard installiert nun automatisch den richtigen Treiber. Treiber-Konfiguration Überprüfen Sie anschließend die erfolgreiche Installation im Geräte-Manager. Öffnen Sie im Geräte-Manager Anschlüsse (COM und LPT) und klicken Sie mit der rechten Maustaste auf USB Serial Port zum Öffnen des Kontextmenüs Eigenschaften wie oben. Es erscheint das folgende Fenster, in dem die dort gezeigten Einstellungen zu verwenden sind, wenn Sie den ELM327 ® Chip im Standard-Modus betreiben. Bei Verwendung älterer ELMSoftware muß eventuell 9600 Baud (Bps, Bits per second) eingestellt werden. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 72 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Zur Feststellung und – falls erforderlich – zur Änderung der COM-Port Nummer klicken Sie auf den Advanced Button. Es erscheint das Fenster wie unten. Lassen Sie die anderen Einstellungen bei ihren Grund- oder Werkseinstellungen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 73 ________________________________________________________________ Mit dem Button Defaults kann erforderlichenfalls wieder auf die Werkseinstellungen zurückgesetzt werden. Zur Überprüfung der Versionsnummern der installierten Treiber können Sie die Lasche Treiber im Eigenschaftenfenster anwählen. Es wird das Bild auf der folgenden Seite gezeigt. Zur Untersuchung der USB-Umgebung Ihres Computers können Sie auch das Programm „usbview.exe“ verwenden, das sich im USB-Verzeichnis Ihrer CD befindet. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 74 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Mit dem Button Treiberdetails können Sie sich weitere Informationen über die einzelnen Dateien des verwendeten USB-Treibers anzeigen lassen. Das kann erforderlich werden, wenn Sie den Support bei Problemen konsultieren möchten. Markieren Sie dazu die jeweilige Datei zur Anzeige der Versionsinformation. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 75 ________________________________________________________________ Zum Deinstallieren des Treibers verwenden Sie das Windows-Startmenü Einstellungen Software und wählen den FTDI-Treiber: Klick auf Button Ändern/Entfernen deinstalliert den Treiber von Ihrem System. Der USBAnschlußstecker muß dazu entfernt werden. Diese Meldung fordert Sie dazu auf: Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 76 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Anhang für ElmCan®-Bluetooth Einführung Die Bluetooth Drahtlos Technologie ist eine Funktechnologie für kurze Reichweiten. Mit der Bluetooth Drahtlos Technologie können Signale über kurze Strecken zwischen Telefonen, Computern und anderen Geräten übertragen werden und damit die Kommunikation und Synchronisation von Geräten vereinfachen. Es ist ein globaler Standard, der – Leitungen und Kabel zwischen stationären und mobilen Geräten ersetzt, – Daten- und Sprachkommunikation vereinfacht, – die Möglichkeit von ad hoc Netzwerken bietet und eine ultimative Synchronisierung aller persönlichen Geräte gestattet. Die Bluetooth Drahtlos Technologie umfaßt Hardware, Software und interoperative Anforderungen. Neben der Befreiung von Kabeln stellt die Bluetooth Drahtlos Technologie eine universelle Brücke zu existierenden Daten-Netzwerken, ein peripheres Interface und die Möglichkeit zur Bildung kleiner privater ad hoc Gruppen von verbundenen Geräten abseits von festen Netzwerk-Infrastrukturen zur Verfügung. Bluetooth Funk verwendet eine schnelle Erkennungsmethode und Frequenzwechsel Schema, um die Verbindung auch in gestörten Funkumgebungen robust zu machen. Der Standard umfaßt auch stärkere weiter reichende Geräte zur Verwendung in drahtlosen Netzen. Ein Bluetooth Gerät, das die „Master“ Rolle spielt, kann mit bis zu 7 Geräten kommunizieren, die die „Slave“ Rolle spielen. Es können zu jeder Zeit Daten zwischen einem Master und einem Slave übertragen werden, aber der Master schaltet schnell von Slave zu Slave in einer Round-Robin Art. Diese Gruppen von bis zu 8 Geräten (1 Master und 7 Slaves) werden Piconet genannt. Jedes Gerät kann eine Abfrage zur Verbindungssuche mit anderen Geräten machen und jedes Gerät kann so konfiguriert werden, daß es auf solche Anfragen antwortet. Gerätepaare können eine sichere Verbindung aufnehmen, indem sie einen gemeinsamen vom Anwender eingegebenen Schlüssel lernen. Ein Gerät, das nur mit einem sicheren Gerät kommunizieren möchte, kann die Erkennung der Identität des anderen Gerätes verschlüsseln. Sichere Geräte können die über Funk versendeten Daten verschlüsseln, so daß sie nicht abgehört werden können. Das Protokoll arbeitet im lizenzfreien ISM Band bei 2,45 GHz. Um Interferenzen mit anderen Protokollen im 2,45 GHz Band zu vermeiden, teilt das Bluetooth Protokoll das Band in 79 Kanäle und wechselt die Kanäle bis zu 1600-mal pro Sekunde. Die Versionen 1.1 und 1.2 erreichen Datenraten von 723,1 kbits/s. Bluetooth unterscheidet sich von Wi-Fi, als daß letzteres eine höhere Datenrate und größere Distanzen abdeckt, aber teuerere Hardware und höheren Strombedarf benötigt. Sie verwenden den gleichen Frequenzbereich, aber arbeiten mit unterschiedlichem Multiplexing Schemen. Während Bluetooth ein Kabelersatz für einen weiten Anwendungsbereich ist, ist Wi-Fi nur ein Ersatz für Local Area Network (LAN) Zugang. Grob gesagt ist Bluetooth drahtloses USB und Wi-Fi ist drahtloses Ethernet. Die folgenden Seiten beschreiben die Bluetooth Verbindung zwischen dem OBD-2 Interface ElmCan®-BT und einem Computer, Laptop, Pocket-PC (PDA) oder Smartphone mit entweder eingebautem Bluetooth oder nachgerüstetem Bluetooth-Dongle. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 77 ________________________________________________________________ BluePort Das BluePort ist ein Klasse 1 Bluetooth Funk Modem mit 2,4 GHz RF Keramik Chip Antenne und einem High Power Transceiver (100m/330ft). Das Modul ist Bluetooth Version 1.1 kompatibel und wird direkt mit dem ElmCan® verbunden. Das ElmCan® wird damit zum ElmCan®-BT. Die aktuelle Reichweite kann aufgrund der Umgebungsbedingungen variieren. Die Spannungsversorgung erfolgt über das ElmCan® Interface. Das Modul ist daher erst betriebsbereit, wenn auch das ElmCan® über den Anschluß am Fahrzeug-Diagnosestecker mit Spannung versorgt wird. Maximale Stromaufnahme ist 40 Milliampere und 1 Milliampere bei Standby Betrieb. Soll das BluePort für andere Zwecke verwendet werden, kann es an ein externes Netzteil für 5V= angeschlossen werden (Mittelpunkt +, außen -). Das BluePort hat zwei Status-LED. Die grüne LED zeigt den BluePort Gerätestatus an, die gelbe LED den Status den Sende- und Empfangszustand. Die Tabelle zeigt die Zustände der grünen LED: BluePort Geräte Status Blinkrate grüne LED Konfigurierung Schnell, 10-mal pro Sekunde Bootup, Remote Konfigurierung 2-mal pro Sekunde Suchmodus/Leerlauf 1-mal pro Sekunde Verbunden Dauerlicht Die gelbe LED zeigt den physikalischen Status der TX und RX Datenleitung mit gestreckter Pulsweite zur besseren Visualisierung. Die gelbe LED blinkt, wenn Daten über die Kontakte 2 und 3 gesendet oder empfangen werden. Das BluePort ist für den Betrieb mit dem ElmCan® und der OBD-2 Diagnoseanwendung auf PC, Laptop, PDA oder Smartphone konfiguriert. Es verwendet hierzu das sog. Bluetooth Serial Port Profile (SPP) und erzeugt einen virtuellen COM Port auf dem Client. Da das BluePort für einen weiten Anwendungsbereich sowohl durch DIP-Schalter als auch durch Hayes AT-Befehle konfiguriert werden kann, muß die Konfiguration des Lieferzustandes unbedingt beibehalten werden, um einen ordnungsgemäßen Betrieb mit dem ElmCan® Interface zu gewährleisten, das damit zum ElmCan®-BT geworden ist. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 78 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Die DIP-Schalter am Boden des BluePort müssen folgende Stellung haben: Die Werkseinstellungen können mit DIP-Schalter 1 wie folgt wieder hergestellt werden: – DIP-Schalter 1 auf ON stellen – Spannungsversorgung einschalten (LED an) und – DIP-Schalter zweimal von ON nach OFF schalten. Darüber hinaus müssen die internen Jumper im BluePort wie folgt stehen: Soll das BluePort für andere Anwendungen konfiguriert werden, beachten Sie bitte die separate Dokumentation des BluePort, die nicht nur die weitere Erklärung der DIP-Schalter und Jumper umfaßt, sondern auch die Möglichkeit zur Konfiguration der Firmware über ein ASCII-Terminalprogramm wie HyperTerminal bei Bluetooth-Verbindung oder serieller Verbindung zum BluePort. Es stehen hierzu über 20 verschiedene Konfigurationsbefehle zur Verfügung. Bluetooth Installation Egal ob Sie Bluetooth mit einem PC/Laptop oder PDA bzw. Smartphone mit Windows-CE oder Windows-Mobile verwenden wollen, zur Installation muß immer das ElmCan®-BT mit dem BluePort betriebsbereit sein. Das bedeutet, am ElmCan® Interface leuchtet dauerhaft die Power-LED und am BluePort blinkt die Power-LED im Bereitschaftstakt (siehe Tabelle oben). Dazu verbinden Sie das OBD-2 Kabel mit dem Diagnosestecker des Fahrzeugs und dem ElmCan®. Das BluePort ist an der anderen Seite des ElmCan® angesteckt. Bei den meisten Fahrzeugen muß dazu die Zündung nicht eingeschaltet sein. Der FahrzeugCopyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 79 ________________________________________________________________ Diagnosestecker führt auch bei ausgeschalteter Zündung die erforderliche Versorgungsspannung. Steht Ihnen zur Installation kein OBD2-Fahrzeug zur Verfügung, ist es für einen versierten Techniker auch möglich, mit einer 9V-Blockbatterie die Versorgungsspannung über Pin 16 (+) und Pin 5 (-) des OBD2-Steckers am OBD2-Kabel zuzuführen, um die Installation von Bluetooth durchzuführen. Auf dem Computer, Laptop, PDA oder Smartphone muß eine Bluetooth-Software, der sog. Bluetooth-Stack, vorhanden sein. Das ist bei Geräten mit eingebauter Bluetooth-Hardware immer der Fall. Bei Computern/Laptops ohne Bluetooth wird dies meist einfach mit einem sog. Bluetooth-Dongle, der in eine freie USB-Buchse gesteckt wird, nachgerüstet. Die Bluetooth Hardware des Computers muß die gleiche Reichweite (Class 1) haben, wie das BluePort des ElmCan®-BT, um die volle mögliche Reichweite des BluePort ausnutzen zu können. Die Bluetooth Software auf dem Computer muß das Serial Port Profile (SPP) unterstützen können. Anschließend wird die mitgelieferte Bluetooth Software installiert oder sie war bei Computern mit Windows-XP und Service-Pack 2 und höher schon vorhanden. Computer-Software installieren Überspringen Sie diesen Part, wenn der Computer bereits Bluetooth installiert hat. Am Beispiel der WIDCOMM Bluetooth Software zeigen wir die Installation: Nach dem Start der Setup-Datei beginnt die Installationsroutine. Klicken Sie Next für weitermachen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 80 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Lesen und akzeptieren Sie die Lizenzbedingungen. Klicken Sie Next für weitermachen. Die Software wird in dem vorgeschlagenen Ordner installiert. Klicken Sie Next für weitermachen. Die Installation beginnt. Klicken Sie Install für weitermachen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 81 ________________________________________________________________ Während der Installation erscheint eine Notiz über die Treiber Signatur. Klicken Sie auf OK für weitermachen. Die Installation wird dann fortgesetzt. Ist der Bluetooth USB-Dongle nicht bereits in den USB-Port gesteckt, erscheint diese Warnung. Stecken Sie den Dongle in eine beliebige USB Buchse und klicken Sie dann OK. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 82 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Die Installation ist nun beendet. Klicken Sie Finish. Der Computer muß jetzt neu gestartet werden, damit die Änderungen wirksam werden. Bluetooth Konfiguration Bevor Sie Bluetooth auf dem Computer verwenden können, müssen einige Erstkonfigurationen gemacht werden. Doppelklicken Sie dazu auf das neue Bluetooth Symbol auf dem Desktop. Das Konfigurations-Dialogfenster erscheint. Klicken Sie Next zum weitermachen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 83 ________________________________________________________________ Geben Sie Ihrem Computer einen Namen, wählen Sie den Computer-Typ und klicken Sie Next zum weitermachen. Zum Konfigurieren der Bluetooth Dienste klicken Sie Next. Wählen Sie die Dienste, die Sie benötigen. Für das BluePort wird nur der Bluetooth Serial Port benötigt. Nur dieser Dienst wird hier beschrieben. Bei Bedarf lesen Sie für die anderen Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 84 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Dienste in der Software-Dokumentation nach. Klicken Sie Next zum weitermachen. Der gewählte Dienst wird installiert. Anschließend erscheint wieder der Konfigurations-Assistent. Klicken Sie Skip (überspringen) zum weitermachen. Glückwunsch, die Installation ist beendet. Klicken Sie Finish zum Beenden des Installationsprogramms. Wird mit dem Bluetooth-Dongle eine andere Software mitgeliefert z.B. von Toshiba, dann läuft die Installation der Bluetooth Software ähnlich ab. Konfiguration des BluePort (ElmCan-BT) Überspringen Sie diesen Schritt, wenn Sie Windows-XP mit Service-Pack 2 oder höher haben. Siehe dazu Konfiguration des BluePort (ElmCan-BT) mit Windows Bluetooth Stack weiter unten. Bei diesem Beispiel wurde der Toshiba Bluetooth Stack verwendet. Bei einem anderen Bluetooth Stack ist der Ablauf ähnlich. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 85 ________________________________________________________________ Starten Sie Bluetooth-Einstellungen von dem neuen Symbol Bluetooth-Umgebung auf dem Desktop oder von dem Symbol rechts auf der Startleiste. Klicken Sie auf Neue Verbindung. Der Assistent zum Einrichten einer neuen Bluetooth Verbindung erscheint. Klicken Sie Weiter. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 86 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Die in Reichweite befindlichen Bluetooth Geräte werden gesucht. Zur Erkennung müssen diese Geräte betriebsbreit, also eingeschaltet (mit Spannung versorgt) sein. In diesem Beispiel wurden 3 Geräte gefunden. Markieren Sie das ElmCan®-BT und klicken Sie Weiter. Das ElmCan®-BT ist so konfiguriert, daß von einigen Bluetooth Stacks der Schlüssel selbst erkannt werden kann. Wird zur Eingabe des Schlüssels aufgefordert, dann geben Sie 1234 ein. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 87 ________________________________________________________________ Die Konfiguration ist abgeschlossen, dem ElmCan®-BT wurde in diesem Beispiel der COMPort 40 zugewiesen. Die COM-Port Nummern reichen bis zu 64. Die zugewiesene COM-Port Nummer muß später in der OBD-2 Software eingestellt werden, wenn diese Software den COM-Port nicht selbsttätig findet. Klicken Sie Weiter. Klicken Sie Weiter. Mit Fertig stellen ist der Vorgang abgeschlossen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 88 CarCode Müller ElmCan® ELM327® ________________________________________________________________ In den Bluetooth-Einstellungen erscheint nun das ElmCan®-BT. Sie können die Ansicht ändern: Mit rechter Maustaste auf den Eintrag können Sie mit dem ElmCan®-BT verbinden oder trennen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 89 ________________________________________________________________ Mit Details oder dem Menüpunkt Einstellungen für ... sehen Sie die Informationen unten: Konfiguration des BluePort (ElmCan®-BT) mit Windows Bluetooth Stack Windows-XP mit Service-Pack 2 und höher enthält bereits einen Bluetooth Stack. Das ElmCan®-BT muß betriebsbereit sein, damit die Konfiguration vorgenommen werden kann. Gehen Sie zu Start --> Einstellungen --> Systemsteuerung --> Netzwerk- und Internetverbindungen und wählen Sie Bluetooth-Geräte. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 90 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Das Bluetooth-Geräte Fenster erscheint. Drücken Sie Hinzufügen. Der Assistent startet. Drücken Sie Weiter. Bluetooth-Geräte in Reichweite werden gesucht. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 91 ________________________________________________________________ Alle gefundenen Bluetooth-Geräte in Reichweite werden angezeigt. ElmCan®-BT markieren und Weiter drücken. Schlüssel 1234 eingeben und Weiter drücken. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 92 CarCode Müller ElmCan® ELM327® ________________________________________________________________ ElmCan®-BT wird installiert. ElmCan-BT ist installiert und kann über COM3 verwendet werden, drücken Sie Fertig stellen. Im Bluetooth-Geräte Fenster erscheint das ElmCan®-BT nun als betriebsbereit. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 93 ________________________________________________________________ Ist das ElmCan®-BT im Bluetooth-Geräte Fenster markiert, können seine Eigenschaften angesehen werden: Der serielle Anschluß (SPP = Serial Port Profile) ist bei diesem Beispiel als COM5 verfügbar. Die COM-Port Nummer kann bei Ihnen anders sein. Maximal sind Com-Port Nummern bis 64 möglich. Die COM-Port Nummer muß in der verwendeten OBD-2 Software eingestellt sein. Dies geschieht bei manchen OBD-2 Programmen automatisch, bei anderen muß es von Hand eingestellt werden. Je nach verwendetem Bluetooth Stack kann die vom ElmCan®-BT zugewiesene COM-Port Nummer von Hand geändert werden. Haben Sie Probleme mit Ihrer OBD-2 Software, können Sie ebenso wie bei den ElmCan®Seriell oder ElmCan®-USB Interfaces mit Hyperterminal eine ASCII Terminalverbindung zum ElmCan®-BT aufbauen und die Verbindungen Computer – Interface bzw. Interface – Fahrzeug testen. Siehe oben in der ElmCan® Hardware-Dokumentation über TerminalBefehle (AT-Befehle bzw. hexadezimale OBD-2 Befehle). Hyperterminal muß die COMEinstellungen 8N1, keine Flußkontrolle, 38.400 Baud haben. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 94 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Installation für Pocket-PC (PDA) und Smartphones (Windows-CE bzw. Windows-Mobile) Prüfen Sie, ob Ihr Gerät über Bluetooth verfügt und SPP unterstützt. Weiterhin ist eine mit ActiveSync auf dem mobilen Gerät aufgespielte OBD-2 Software für ElmCan® erforderlich. Bluetooth muß auf dem mobilen Gerät aktiviert sein und das ElmCan®-BT ist betriebsbereit. Starten Sie dann den Bluetooth Manager. Hier zunächst für PDA, Windows-CE: Tippen Sie Neu, um das ElmCan®-BT zu installieren. Die Installation beginnt: 1. 2. 3. Aktivieren Sie Bluetooth Gerät durchsuchen, markieren Sie das gefundene ElmCan®-BT, tippen Sie Weiter und warten Sie auf den gefundenen Dienst. 4. 5. 6. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 95 ________________________________________________________________ Markieren Sie den gefundenen Dienst (SPP = Serial Port Profile), markieren Sie Verschlüsselte Verbindung verwenden und tippen Sie Weiter und dann Fertig. 7. 8. 9. ® Das ElmCan -BT erscheint nun im Bluetooth Manager. Doppel-Tippen oder langer Tippdruck zum Aufruf des Kontextmenüs und dort Verbinden wählen verbindet das ElmCan®-BT (Bild 9 mit Details). 10. 11. 12. Zwei grüne Pfeile zeigen ein verbundenes ElmCan®-BT an. Das Kontextmenü Status und Lasche Aktive Verbindungen zeigen weitere Informationen. 13. 14. 15. Bei nicht verbundenem ElmCan®-BT können über das Kontextmenü die Eigenschaften abgerufen werden (Bild 13.). Zum Entfernen gehen Sie zum Menü Extras / Gekoppelte Geräte, markieren das ElmCan®-BT und tippen Entfernen. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 96 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Im Folgenden wird die Installation auf einem Smartphone mit Windows-Mobile gezeigt: Gehen Sie auf Start --> Einstellungen --> Verbindungen und starten Sie Bluetooth. 1. 2. 3. Bluetooth ist eingeschaltet, bei Lasche Geräte tippen Sie auf Neue Partnerschaft. Bluetooth Geräte in Reichweite werden gesucht... 4. 5. 6. Hier wurden 2 Bluetooth Geräte gefunden. Markieren Sie ElmCan®-BT, tippen Sie auf Weiter und geben Sie im folgenden Screen den Schlüssel 1234 für das ElmCan®-BT ein. Tippen Sie dann auf Weiter. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. CarCode Müller ElmCan® ELM327® Seite 97 ________________________________________________________________ 7. 8. 9. Wählen Sie Serieller Anschluß und tippen Sie Fertig. Das ElmCan®-BT ist nun in der Geräteliste. Tippen Sie Lasche COM-Anschlüsse und dort auf Neuer ausgehender Anschluß. 10. 11. 12. In dem darauf folgenden Screen wählen Sie eine freie COM-Port Nummer (hier im Beispiel COM2) und aktivieren Sie Sichere Verbindung. Tippen Sie Fertig. Unter der Lasche Sicherheit können Sie die Einstellung verifizieren. Die Konfiguration des ElmCan®-BT ist damit beendet. Beachten Sie, daß in der OBD-2 Software für PPC der entsprechende COMPort einzustellen ist, wie er in der Konfiguration oben festgelegt wurde. Copyright 2007 by CarCode Müller, alle Rechte vorbehalten. Seite 98 CarCode Müller ElmCan® ELM327® ________________________________________________________________ Inhaltsverzeichnis Einführung ELM Chips und ELM327 Leistungsbeschreibung ELM327 Pin-Beschreibung ELM327 Elektrische Charakteristika Übersicht Kommunikation mit dem ELM327 AT-Befehle Übersicht ELM327 AT-Befehle Batterie-Spannung lesen Bus Initialisierung Wachhalte-Nachrichten OBD-Befehle Mit dem Fahrzeug „sprechen“ Mehrzeilige Antworten Interpretation von Fehlercodes Löschen von Fehlercodes Schnell-Anleitung zum Auslesen von Fehlercodes Protokoll Auswahl OBD Nachrichten Formate IC Zurücksetzen Fortgeschrittene Datenabfrage, Setzen der Kopfbytes Bus Überwachung CAN Nachrichten und Filterung CAN Nachrichten Formate Änderung Fluß-Kontroll Nachrichten Programmierbare Parameter Fehlermeldungen Applikation Bausatz ElmCan Applikation Fertiggeräte ElmCan Jumper J4 Jumper L,B,M Schaltplan Stückliste Bausatz Schaltzeichen Bezugsquellen Konformität Entsorgungshinweis Anhang USB-Treiber Installation Anhang ElmCan Bluetooth Installation 1 2 3 6 7 7 9 24 25 26 29 29 31 33 36 37 38 39 41 42 43 47 49 50 52 53 57 58 62 63 64 66 66 68 63 69 69 70 76 Copyright 2007 by CarCode Müller, alle Rechte vorbehalten.