Fahrzeug-Diagnose der zweiten Generation (OBD-2)

Werbung
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
Hardware-Handbuch
OBD-2/EOBD Diagnose-Interface
ElmCan®
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 2
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
J1939 Unterstützung
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
3
4
5
8
9
9
11
30
31
32
35
35
37
40
42
44
45
46
49
50
51
55
56
58
60
61
63
67
70
73
74
75
77
77
79
80
80
80
81
86
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 3
________________________________________________________________
Fahrzeug-Diagnose der zweiten Generation (OBD-2, EOBD)
( © Gerhard Müller, Stand 14.08.2008, jegliche unautorisierte Verwendung wird strafrechtlich verfolgt)
Interface zwischen OBD-2/EOBD Fahrzeug-Diagnosestecker und Computer
- ElmCan® - SER mit IC ELM327® – für seriellen Anschluß
- ElmCan® II - SER mit IC ELM327® – für seriellen Anschluß
- ElmCan® - USB mit IC ELM327® – für USB-Anschluß
- ElmCan® II - USB mit IC ELM327® – für USB-Anschluß
- ElmCan® - BT mit IC ELM327® – für Bluetooth-Anschluß
- ElmCan® II - BT mit IC ELM327® – für Bluetooth-Anschluß
- ElmCan® II - BT-INT mit IC ELM327® – für Bluetooth-Anschluß
- ElmCan® - Bausatz mit IC ELM327® – 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.
(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® wurde wieder exklusiv von CarCode
Müller vorgestellt und eingeführt. Der ELM327® basiert auf den Erfahrungen von Tausenden
von Anwendern seiner Vorgänger. Sein Erfolg führte zu zahlreichen Kopien nicht nur aus dem
asiatischen Raum. Echte ELM327® können an der Kennung identifiziert werden (siehe unter
AT-Befehle).
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 haben nun ab 1.
Oktober 2005 OBD-2. 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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 4
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 Baud (ElmCan®-II mit max. 115200 Baud) 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
9141-2 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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 5
________________________________________________________________
Bild Anschluss
Die Anschlußpins des ELM327® sind im Folgenden beschrieben.
MCLR (Pin 1)
Master Clear Schmitt-Trigger Eingang, aktiviert bei niedrigem Eingang (>2 μsec) Reset des
ELM327®. 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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 6
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. Einstellung auch mit
Programmierbaren Parameter PP 0C.
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. (Siehe auch Pin 19).
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 7
________________________________________________________________
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 und der Chip ist bereit zum
Empfang von ASCII Befehlen und Zeichen.
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. (Siehe auch Pin 8)
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 8
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 CANSystem dieses System gefährdet werden. Näheres siehe unter dem Abschnitt über die
Beispiel-Applikation. Bei Nichtverwendung soll dieser Pin mit logisch hoch (VDD) beschaltet
werden.
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) Pin 28 kann auch zum Abschalten der
Programmierbaren Parameter verwendet werden (siehe dort).
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,3 V 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
Schmitt-Trigger
steigend
Eingangsgrenzen
fallend
Ausgang niedrige Spannung
Ausgang hohe Spannung
Reset Spannung
A/D Wandler Zeit
RS232 Baudrate
5,0
5,5
V/ms
siehe Anmerkung 2
mA
siehe Anmerkung 3
1,3
V
4,0
V
V
V
V
alle außer Schmitt
Eingänge
siehe Anmerkung 4
9,0
1,0
1,0
2,9
1,5
0,3
4,6
4,07
4,2
7
38400
Bemerkung
V
4,59
500000
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 9
________________________________________________________________
3.
4.
5.
6.
ändernden Versorgungsspannungen wie direkter Anschluß an Solarzellen oder einigen
Ladeschaltungen nicht gegeben sein.
Nur IC, ohne Lastströme.
Die Pins 1, 11, 12, 13, 15 und 18 haben interne Schmitt-Trigger zur WellenformAnpassung.
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.
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 (nutzbar in USB Schaltung, bei serieller Schaltung max. 115200).
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. Ersteren sei empfohlen,
stattdessen die Online-Hilfe der entsprechenden Software zu lesen, die für dem ELM327®
geschrieben wurde und verwendet werden soll.
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 10
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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
>
oder eine andere Versionsnummer 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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 11
________________________________________________________________
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.
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ängerAdresse verwendet. Anderenfalls (bei funktionaler Adressierung) wird das zweite Kopfbyte,
erhöht um den Wert 1, verwendet oder der mit SR oder RA Befehl bestimmte Wert. AutoEmpfang ist die Grundeinstellung und wird nicht bei J1939 Formatierung benutzt.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 12
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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.
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. Das J1939 Protokoll
unterstützt kein adaptives Zeitverhalten, Antworten von J1939 verwenden feste Timeouts
gemäß den Normen.
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 Wert 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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 13
________________________________________________________________
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
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, das heißt 75 msec. Ein Wert von 00 ergibt jedoch nicht 0 msec sondern die
maximale Zeit 256 * 5 msec = 1,28 Sekunden.
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. Nachrichten mit
ungültigen PCI Bytes werden ignoriert. Beim Monitoring werden jedoch ungültige PCI Bytes
als '<DATA ERROR' gemeldet, um zu zeigen, daß die Daten für das gewählte Protokoll nicht
gültig sind.
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 14
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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
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 hhhhhhhh]
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 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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 15
________________________________________________________________
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.
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).
CRA hhh [setzt die CAN Rx Adresse auf hhh]
Das Einstellen von CAN Masken und Filtern kann mitunter schwierig werden, so daß dieser
Befehl nützlich sein kann, wenn nur von einer Adresse (z.B. einer CAN ID) Informationen
erhalten werden sollen. Will man z.B. nur Informationen von 7E8 erhalten, sendet man einen
den AT CRA 7E8 Befehl und der ELM327® macht die notwendigen Einstellungen für Maske
und Filter für Sie.
Beachten Sie, daß dieser Befehl die Ausgabe auf nur eine ID beschränkt. Soll hingegen ein
Bereich von IDs erhalten werden, müssen Maske und Filter unabhängig gesetzt werden (siehe
detaillierte Beschreibung im Abschnitt CAN Nachrichten und Filter). Zur Umkehr der mit
dem CRA Befehl gemachten Änderungen senden Sie einfach den Auto Receive Befehl (AT
AR).
CRA hhhhhhhh [setzt die CAN Rx Adresse auf hhhhhhhh]
Dieser Befehl entspricht dem vorherigen Befehl, außer daß er für 29-Bit CAN IDs verwendet
wird anstelle von 11-Bits.
Der Auto Receive Befehl (AT AR) wird ebenfalls zur Umkehr der gemachten Änderungen
verwendet.
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 wegen eines Hardware- oder SoftwareProblems 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 Hardware- als auch Software-Fehler handeln. Der AT
CS Befehl zeigt sowohl den hexadezimalen Wert des Tx Fehlerzählers als auch des Rx
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 16
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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.
D0 und D1 [Anzeige DLC aus (0) oder ein (1)]
Der CAN Standard (ISO 15765-4) erfordert Nachrichten mit 8 Datenbytes, so daß die
Anzeige der Anzahl der Datenbytes (DLC) normalerweise nicht sinnvoll ist. Beim
Experimentieren mit anderen Protokollen kann es jedoch erforderlich werden, die Datenlänge
zu sehen. Die D0 und D1 Befehle kontrollieren die Anzeige der DLC Digits (Header müssen
auch angeschaltet sein, um diese Digits zu sehen). Die Grundeinstellung wird vom
Programmierbaren Parameter PP 29 bestimmt.
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 17
________________________________________________________________
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.
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 18
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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. Möglicherweise
kann auch der CAN Datenlängen Code (DLC) gesehen werden, wenn mit PP 29 entsprechend
eingestellt. Als einzige Ausnahme zeigt die aktuelle Version nicht den CAN 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.3’). 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
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 19
________________________________________________________________
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. Diese Einstellung
beeinflußt nicht den Adress-Wert in den Header-Bytes. Der Adress-Wert wird jedem Resetoder Default-Befehl auf $33 zurück gesetzt.
JE [aktiviert das J1939 ELM Datenformat]
Der J1939 Standard erfordert, daß Parameter Gruppen Nummern (PGN) Abfragen mit
umgekehrter Byte-Reihenfolge als der von uns erwartete Standard „links-nach-rechts“
gesendet werden. Um z.B. die Abfrage nach der Motor-Temperatur (PGN 00FEEE) zu
senden, werden die Bytes aktuell in umgekehrter Reihenfolge (z.B. EE FE 00) gesendet und
der ELM erwartet normalerweise die Bytes in dieser Reihenfolge, um sie zum Fahrzeug zu
senden.
Beim Experimentieren kann das dauernde Umdrehen der Bytes verwirren, so daß ein ELM
Format eingeführt wurde, das diese Arbeit macht. Ist das J1939 ELM (JE) Format aktiviert
und ein J1939 Protokoll gewählt sowie 3 Datenbytes dem ELM zugeführt, dann dreht er die
Reihenfolge der zu senden Bytes um. Zur Abfrage der Motor-Temperatur PGN senden Sie 00
FE EE und nicht EE FE 00. Die 'JE' Art der automatischen Formatierung ist standardmäßig
aktiviert.
JS [aktiviert das J1939 SAE Datenformat]
Der AT JS Befehl deaktiviert die automatische Byte-Umkehr, die der JE Befehl für Sie macht.
Sollen Datenbytes ohne Änderung der Byte-Reihenfolge an das J1939 Fahrzeug gesendet
werden, dann wird JS Formatierung gewählt.
Bei dem Beispiel oben für Motor-Temperatur (PGN 00FEEE) mit Datenformat JS aktiviert
müssen die Bytes als EE FE 00 zum ELM327® gesendet werden (auch als Little-Endian ByteReihenfolge bekannt).
Die 'JS' Art der Datenformatierung ist standardmäßig aus, aber sie war beim ELM327® v1.2
die einzige Art der Formatierung. Wenn also von der Version 1.2 auf spätere Versionen
gewechselt wird, ist das zu beachten.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 20
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
KW [zeige Key Worte]
Bei der Initialisierung der ISO 9141-2 und ISO 14230-4 Protokolle werden zwei spezielle
Bytes (Key Words) dem ELM327® übergeben, deren Werte intern bestimmen, ob eine
bestimmte Protokoll-Variante vom ELM327® unterstützt wird. Sollen die Werte dieser Bytes
angezeigt werden, geben Sie einfach den AT KW Befehl ein.
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.
Zu erwähnen ist, daß der ELM327® weiterhin mit KW2 antwortet, wie vorgeschrieben in den
Standards, er schaut nur nicht mehr auf den Wert. Seien Sie daher vorsichtig bei Verwendung
dieser Befehle, da die üblichen Prüfungen nun nicht mehr gemacht werden. Es könnte
versehentlich ein ISO 9141 oder KWP 2000 Protokoll aktiviert werden.
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 Default-Werte
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 21
________________________________________________________________
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 dem 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.
Ab Version 1.3 des IC werden alle gefundenen Nachrichten ausgegeben, selbst wenn mit
CAF1 die CAN Auto-Formatierung eingeschaltet ist. Die vorige Version 1.2 zeigte keine
ungültigen Nachrichten, wenn die automatische Formatierung eingeschaltet war, aber jetzt
werden alle erhaltenen Nachrichten angezeigt und wenn ein Datenformat scheinbar nicht
richtig ist, wird „<DATA ERROR“ neben den Daten angezeigt.
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. Wurde aber z.B. mit CRA 4B0 die Empfangsadresse gesetzt, dann kann
der AT MA Befehl nur Nachrichten sehen mit dem ID 4B0. Da dies oft nicht gewünscht ist,
müssen Maske und Filter erst mit AT AR zurück gesetzt werden.
Beachten Sie, daß dieser Befehl als eine Zugabe zu betrachten ist und mit Vorsicht benutzt
werden sollte. Im Bus Beobachtungsstatus (MA, MR und MT Befehle) sendet der ELM327®
keine periodischen „Bus-Wachhalte“-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ß (die Nachricht „SEARCHING...“ kann erscheinen). 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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 22
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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 sind.
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.
MP hhhhhh [Monitor für PGN hhhhhh]
Dieser Befehl ist ähnlich dem MP hhhh Befehl, aber erweitert die Anzahl der übergebenen
Bytes um eins, so daß eine volle Kontrolle über die PGN Definition möglich ist. Es wird nicht
vorausgesetzt, daß das Data Page Bit 0 ist wie beim MP hhhh Befehl. Damit können auch
zukünftige Erweiterungen unterstützt werden, wenn zusätzlich definierte PGNs mit gesetztem
Data Page Bit erscheinen sollten. Beachten Sie, daß nur das Data Page Bit in dem
zusätzlichen Byte relevant ist, die reservierten und Priority Bits werden ignoriert.
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.
Beachten Sie, daß bei Verwendung des Befehls mit CAN Protokollen und vorher gesetzten
Maske und Filter (mit CF, CM oder CRA) der MR Befehl nur die vorherigen Werte dieser
Bits überschreibt, die anderen bleiben unverändert. Ist die Empfangsadresse z.B. mit CRA
4B0 gesetzt und es wird MR 02 gesendet, dann ersetzt die 02 die 4 und die CAN Maske/Filter
erlauben nur IDs gleich 2B0. Das ist oft nicht gewünscht, so daß Maske und Filter (mit AT
AR) erst zurückgesetzt werden müssen.
Wie beim AT MA Befehl macht dieser Befehl zunächst eine interne Protokoll-Schließung.
Folgende OBD Anfragen können Nachrichten wie „SEARCHING...“ oder „BUS INIT“ etc.
zeigen, wenn das Protokoll reaktiviert wird.
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.
Beachten Sie, daß bei Verwendung des Befehls mit CAN Protokollen und vorher gesetzten
Maske und Filter (mit CF, CM oder CRA) der MT Befehl nur die vorherigen Werte dieser Bits
überschreibt, die anderen bleiben unverändert. Ist die Empfangsadresse z.B. mit CRA 4B0
gesetzt und es wird MT 20 gesendet, dann ersetzt die 20 die B0 und die CAN Maske/Filter
erlauben nur IDs gleich 420. Das ist oft nicht gewünscht, so daß Maske und Filter (mit AT
AR) erst zurückgesetzt werden müssen.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 23
________________________________________________________________
Wie beim AT MA Befehl macht dieser Befehl zunächst eine interne Protokoll-Schließung.
Folgende OBD Anfragen können Nachrichten wie „SEARCHING...“ oder „BUS INIT“ etc.
zeigen, wenn das Protokoll reaktiviert wird.
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.
Bei den KWP Protokollen können jedoch längere Nachrichten abhängig vom eingebetteten
Längenwert z.B. bei 4 Byte Headern verwendet werden. Beginnend mit Version 1.2 des
ELM327® ist hierbei kein AL Befehl nötig, alle erhaltenen Bytes werden gezeigt.
PC [Protokoll schließen]
Es kann Situationen geben, in denen man das Protokoll stoppen (schließen) möchte. Vielleicht
wird nicht die automatische Protokollsuche verwendet und es soll manuell ein Protokoll
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 Parameterwertes ist von dessen Typ abhängig. Weitere Informationen über Typen
stehen im Abschnitt Programmierbare Parameter.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 24
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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.
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. Eine R0 Einstellung überschreibt immer jede Anzahl von Antwort-Digits, die aus
einer OBD Anfrage resultieren. Die Grundeinstellung ist R1 (Antworten Ein)..
RA hh [setzt die Empfangsadresse auf hh]
Abhängig von der Anwendung kann der Anwender wünschen, manuell die Adresse zu setzen,
auf die der ELM327® antwortet. Mit diesem Befehl wird der AR Modus abgeschaltet und der
IC gezwungen, nur anfragen an die Adresse hh zu akzeptieren. Vorsicht mit dieser
Einstellung, da abhängig vom angegebenen Wert (bestätigt mit einem IFR) eine Nachricht
ursprünglich für ein anderes Modul bestimmt sein kann. Um den RA Filter abzuschalten,
senden Sie ein einfaches AT AR.
Dieser Befehl ist für CAN Protokolle nicht besonders nützlich, da er nur einen Teil der ID
Bits betrifft, was bei den meisten CAN Applikationen nicht ausreicht. Der CRA Befehl ist hier
die bessere Wahl. Außerdem hat der Befehl keine Bedeutung für die Adressen bei den J1939
Protokollen, da die J1939 Routinen dies von den Kopfbyte Werten bekommen, wie in den
SAE Standards festgelegt.
Der RA Befehl ist genau das Gleiche wie der SR Befehl und kann alternativ zu diesem
benutzt werden.
RTR [sende eine RTR Nachricht]
Mit diesem Befehl wird eine spezielle „Remote Frame“ CAN Nachricht gesendet. Dieser
Nachrichten-Typ enthält keine Datenbytes und hat sein Remote Transmission Request (RTR)
Bit gesetzt. Die Kopfdaten und Filter bleiben wie vorher gesetzt (d.h. der ELM327® macht
keine Annahmen, was für ein Format eine Antwort haben wird), daher können Einstellungen
für Maske und Filter erforderlich werden. Dieser Befehl muß mit einem aktiven CAN
Protokoll verwendet werden und gibt einen Fehler zurück, wenn das nicht der Fall ist.
Beachten Sie, daß die CAF1 Einstellung normalerweise die Ausgabe aller RTRs unterdrückt.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 25
________________________________________________________________
Wollen Sie daher Nachrichten beobachten und die RTRs sehen, dann muß die Formatierung
ausgeschaltet werden oder die Header eingeschaltet.
Der ELM327® behandelt ein RTR wie jede andere gesendete Nachricht und wird auf eine
Antwort vom Fahrzeug warten, wenn nicht AT R0 gewählt worden ist.
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 %.
S0 und S1 [Leerzeichen ausgeben ja(1) oder nein(0)]
Mit diesen Befehlen wird bestimmt, ob Leerzeichen in der ECU Antwort enthalten sind oder
nicht.
Der ELM327® zeigt normalerweise ECU Antworten als eine Reihe von hexadezimalen
Zeichen getrennt durch Leerzeichen an, um die Lesbarkeit zu verbessern. Aber Nachrichten
können schneller transportiert werden, wenn jedes dritte Byte (Leerzeichen) entfernt wird.
Das verringert zwar die menschliche Lesbarkeit, kann aber die Datenverarbeitung im
Computer beschleunigen. In der Grundeinstellung sind Leerzeichen an (S1) und diese werden
in jeder Antwort eingefügt.
SH xyz [Setzt den Header auf 00 0x yz]
Die Eingabe von CAN 11 Bit ID Worten (Header) erfordert normalerweise, daß extra
führende Nullen hinzugefügt werden (z.B. AT SH 00 07 DF). Mit diesem Befehl wird es
vereinfacht. Der AT SH xyz Befehl akzeptiert ein drei Digit Argument, nimmt nur die ganz
rechten 11 Bits davon, fügt führende Nullen hinzu und speichert das Ergebnis in der Header
Speicherstelle für Sie. Zum Beispiel ist AT SH 7DF ein gültiger Befehl und nützlich bei der
Arbeit mit 11 Bit CAN Systemen. Er führt zur Speicherung der Header-Bytes als 00 07 DF.
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.
Wurden neue Werte für die Header-Bytes gesetzt, bevor das Fahrzeug-Protokoll bestimmt
wurde, und wenn die Protokollsuche nicht auf Automatik steht (also anderes als Protokoll 0),
dann werden die neuen Werte der Header-Bytes für die erste Anfrage beim Fahrzeug
verwendet. Schlägt diese erste Anfrage fehl, kommt also keine Antwort und die automatische
Protokollsuche ist aktiv, dann sucht der ELM327® weiter nach einem gültigen Protokoll mit
den Standard Werten der Header-Bytes. Wurde ein gültiges Protokoll gefunden, dann haben
die Header-Bytes wieder die Werte, die mit dem AT SH Befehl zugewiesen wurden.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 26
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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
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)
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 27
________________________________________________________________
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)
A – SAE J1939 CAN (29 Bit ID, 250* kBaud)
B – USER1 CAN (11* Bit ID, 125* kBaud)
C – USER2 CAN (11* Bit ID, 50* kBaud)
*Werkseinstellung (vom Anwender veränderbar)
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
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. Beachten Sie, daß
einige Fahrzeuge zu mehreren Protokollen antworten können bei der Suche, es können
verschiedene Antwort-Typen angezeigt werden.
Oft wird der AT SP 0 Befehl zum Rücksetzen der Protollsuche vor Aufnahme einer
Verbindung verwendet. Das funktioniert gut, aber erfordert wie bei jedem ProtokollEinstellbefehl das Schreiben des EEPROM und die dadurch verursachte, unnötige Wartezeit
von etwa 30 msec. Beginnend mit Version 1.3 des ELM327® wird bei einem SP 0 (oder SP A0
oder SP 0A) Befehl nicht mehr zum EEPROM geschrieben, aber der Reset of Protokoll 0
erfolgt weiterhin. Wenn der Wert im internen EEPROM geändert werden soll, ist der neue SP
00 Befehl zu verwenden.
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 28
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
Wie bei SP h speichert ein SP Ah die Protokoll Information selbst bei abgeschalteter Memory
Option (außer bei SP A0 oder SP 0A, die seit v1.3 nicht mehr ein Schreiben auslösen.
Verwenden Sie dafür jetzt SP 00.
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. Zum Abschalten der SR Filterung senden Sie den Befehl AT AR.
Der Befehl ist nicht sehr effektiv bei CAN Protokollen, da er nur einen Teil der ID Bits
überwacht, und das ist bei den meisten CAN Applikationen nicht genug. Der CRA Befehl ist
dafür die bessere Wahl. Der Befehl bewirkt auch nichts bei den Adressen der J1939
Protokolle, da die J1939 Routinen dies von den Header Werten bekommen, entsprechend den
Erfordernissen der SAE Standards.
Der SR Befehl ist das Gleiche wie der RA Befehl und kann alternativ zu diesem verwendet
werden.
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 in Schritten von 4 msec.
Ist das Adaptive Timing aktiviert, dann ist die AT ST Zeit die höchst erlaubte Zeit, selbst
wenn der Adaptiv Algorithmus einen größeren Betrag haben möchte. Meistens ist es
ausreichend, die AT ST Zeit bei Verwendung der Adaptiv-Zeit auf dem Grundwert zu lassen.
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. Der Grundwert kann mit PP 03 geändert werden.
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,
wenn der Anwender keinerlei Daten abfragt. Die Antworten zu diesen Wachhalte-Nachrichten
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 29
________________________________________________________________
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.
V0 und V1 [Variable Datenlänge aus (0) oder ein (1)]
Diese Befehle modifizieren die aktuellen CAN Protokoll Einstellungen, um variable
Datenlängen Nachrichten zu senden, wie es Bit 6 von PP 2C und PP 2E für die Protokolle B
und C macht. Somit kann bei jedem CAN Protokoll und nicht nur B und C mit variablen
Datenlängen Nachrichten experimentiert werden. Der V1 Befehl überschreibt jede ProtokollEinstellung und erzwingt variable Datenlängen Nachrichten. Die Grundeinstellung ist V0 mit
Datenlängen wie bei dem jeweiligen Protokoll bestimmt.
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, ohne die zeitliche Verzögerung wie beim AT Z Befehl.
Werden variable RS232 Baudraten verwendet z.B. mit dem Befehl AT BRD, sollte nicht AT Z
sondern AT WS verwendet werden, da dies nicht die gewählte RS232 Baudrate beeinflußt.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 30
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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)
zurück und der Chip wird in den Leerlaufmodus versetzt, in dem er auf Zeichen vom RS232
Bus wartet. Jede mit dem AT BRD Befehl gesetzte Baudrate geht verloren und der ELM327®
kehrt zu seinem Grundwert der Baudrate zurück.
@1 [zeigt die Hersteller-Zeichen]
Dieser Befehl zeigt die Hersteller-eigenen Identifikationszeichen, die eine bestimmte Version
eines Herstellers bezeichnen.
@2 [zeigt die Geräte Identifikations-Zeichen]
Die mit dem @3 Befehl gespeicherten Geräte Identifikations-Zeichen können mit dem Befehl
AT @2 ausgegeben werden. Alle 12 Zeichen gefolgt von CR (Wagenrücklauf) werden
angezeigt, wenn sie bestimmt wurden. Wurden keine Zeichen definiert, antwortet der @2
Befehl mit einer Fehlermeldung ('?').
@3 cccccccccccc [speichert die Geräte Identifikations-Zeichen]
Mit diesem Befehl werden die Geräte Identifikations-Zeichen gespeichert. Es müssen genau
12 Zeichen gesendet werden und sie können dann anschließend nicht mehr geändert werden.
Es müssen Ascii-Zeichen im Bereich von 00x21 bis 0x5F sein.
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 Wachhalter
KW – zeigt Key Words
CAN spezifisch:
CAF1/0 – CAN autom. Formatierung Ein/Aus
CF hhh – setzt CAN ID Filter auf hhh
CFC1/0 – CAN Flußkontrolle Ein/Aus
CM hhh – setzt CAN ID Maske auf hhh
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 SD [1 bis 5 DatenBytes] – setzt Fluß-Kontroll
Daten auf […]
CF hh hh hh hh – setze CAN ID Filter
CM hh hh hh hh – setzt CAN ID Maske
RTR – sende RTR Nachricht
CRA hhh – setzt CAN Rx Adresse
CRA hhhhhhhh – setzt CAN Rx Adresse
D0/1 – Anzeige DLC aus, ein
FC SH hh hh hh hh – setzt Fluß-Kontroll
Header auf hhhhhhhh
V0/1 – variable DLC aus, ein
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 31
________________________________________________________________
J1939 CAN spezifisch:
DM1 – Monitor für DM1 Nachrichten
JE – verwende J1939 ELM Datenformat
JS – verwende J1939 SAE Datenformat
MP hhhh – Monitor für PGN 0hhhh
MP hhhhhh – Monitor für PGN hhhhhh
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
S0/1 – Leerzeichen aus, ein
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
RA hh – Setzt Empf.-Adresse auf hh
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 ElmCan® 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 wie viele Leerzeichen
zwischen AT und RV benutzt werden.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 32
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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
>
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 den 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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 33
________________________________________________________________
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.
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 Wachhalte-Nachricht
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 34
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
Anforderung zur
Bus-Initialisierung
Versuch mit PWM
Initialisierung
Versuch mit langsamer
ISO Initialisierung
ja
positive
Antwort
erhalten
ja
Antwort
erhalte n
nein
?
Versuch mit VPW
Initialisierung
nein
KWP
oder
ISO ?
Versuch mit schneller
ISO Initialisierung
ja
positive
Antwort
erhalten
ja
ja
Keep-Alive Header
setzen
Bus initialisiert,
weiter mit Befehlen
positive
Antwort
erhalte
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
29 Bit ID
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
29 Bit ID
Bus initialisiert,
weiter mit Befehlen
nein
Bus initialisiert,
weiter mit Befehlen
Ausgabe: ERROR
Initialisierung des Bus
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 35
________________________________________________________________
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 weiter gesandt, 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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 36
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 37
________________________________________________________________
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 spezifizierte PIDs ergänzt werden.
Normalerweise ist man nur mit den neun Diagnose Test Modi 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 Modi von
jedem Fahrzeug unterstützt werden müssen, sie sind es oft nicht. Die neun Modi 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 Modus
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 Modus ist die PID 00 normalerweise dafür reserviert, die in dem Modus
unterstützten PIDs anzuzeigen. Mode 01, PID 00 muß von allen Fahrzeugen unterstützt
werden und kann wie folgt abgefragt werden:
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 38
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 die
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 39
________________________________________________________________
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.
Wenn der ELM327® eine Abfrage sendet, setzt er ebenfalls einen Timer zur Begrenzung der
Zeit, in der er eine Antwort erwartet. Der Timer kann mit dem AT ST Befehl eingestellt
werden. Erfolgt keine Antwort innerhalb der eingestellten Zeit, dann erscheint eine NO DATA
Nachricht, anderenfalls erscheint das Ergebnis wie oben.
Nach der ersten erhaltenen und ausgegebenen Antwort wird der Timer zurückgesetzt und der
ELM327® wartet auf das Eintreffen einer weiteren Antwort. Wenn nichts mehr kommt, wird
jedoch keine NO DATA Ausgabe mehr erfolgen, da ja schon Daten angekommen waren. Bei
solch einem Timeout gibt der IC nur das Prompt-Zeichen aus und wartet auf den nächsten
Befehl vom PC.
Diese Timeout Implementierung bedeutet, daß der ELM327® zweimal länger wartet, als
eventuell erforderlich, um eine einzige Antwort zu erhalten, bevor er zum Prompt zurück
kehrt. Hiergegen konnte man in den früheren Versionen des Chips leider nicht tun.
Mit Version 1.3 gibt es jedoch eine Möglichkeit, wenn die Anzahl der Antworten bekannt ist.
Man kann jetzt dem ELM327® mitteilen, wie viele Antworten erwartet werden, bevor er zum
Prompt zurück kehrt. Mit einen hexadezimalen Digit nach dem OBD Befehl wird angegeben,
wie viele Antworten erwartet werden. Weiß man z.B. daß nur eine Antwort nach der Abfrage
der Motor-Temperatur kommen kann, dann kann man folgendes senden:
>01 05 1
und der ELM327® kehrt unverzüglich zurück nach Erhalt der einen Antwort. Er setzt zwar
noch den internen Timer nach dem Senden der Abfrage, aber wartet nur auf eine Antwort. Er
setzt nicht den Timer und wartet auf eine zweite Antwort und spart damit beträchtlich Zeit.
Der Grundwert für Timeout ist ohne aktiviertes Adaptives Timing 200 msec.
Die Anzahl der übergebenen Antworten kann zwischen 0 und F sein und muß nicht angegeben
werden, ohne Angabe ist es nur etwas langsamer. Beachten Sie, daß die AT R0 Einstellung
jede der Anfrage übergebene Zahl überschreibt. Werden mehr Antworten angegeben als
möglich, macht der ELM327 einen Timeout wie vorher, was aber nicht schädlich ist.
Einige Modi können Antworten über mehrere Zeilen hervorrufen, so z.B. 09, das die
Fahrgestellnummer anzeigt, wenn der Modus unterstützt wird. 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 auch unter Mehrzeilen-Antworten.
Die Abfrage der Fahrgestellnummer erfolgt mit Mode 09 PID 02. Wenn die Anzahl der
Antworten 5 ist, kann man mit folgendem Befehl Zeit sparen:
>09 02 5
Es ist allerdings notwendig zu wissen, wie viele Antworten auf eine bestimmte Anfrage
kommen werden, da die Angabe einer zu geringen Zahl zu Problemen führen kann. Das J1850
PWM Protokoll erwartet beispielsweise, daß jede Antwort mit der sogenannten 'In Frame
Response' (IFR) bestätigt wird. Wird die IFR nicht vom Fahrzeug erhalten, wird versucht, die
Antwort mehrmals zu senden in der Hoffnung, irgendwann ein IFR zu erhalten. Wenn also
nur für eine Antwort abgefragt wird, aber das Fahrzeug sendet 5, dann gibt es Probleme. Es
bleibt daher dem Programmierer vorbehalten, diese Art der Abfrage für sein so optimiertes
Programm zu verwenden. Der normale Anwender wird sich nicht damit belasten wollen.
Ein weiterer Hinweis für eine derart schnelle optimierte Abfrage-Methode betrifft frühe
Versionen des SAE J1979 Standards, der keine öfteren Abfragen als alle 100 msec erlaubte.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 40
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
Das hat sich erst ab Version April 2002 dieses Standards geändert. Bei älteren Fahrzeugen
sollte man also immer bei der alten Methode bleiben.
Dies zeigt hoffentlich, wie typische Anfragen vonstatten gehen. Es ist nicht als Beschreibung
aller möglichen Modi 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 zusammen gefaßt werden müssen.
Ein Beispiel solch einer Abfrage ist die Fahrgestell-Nummer (Mode 09, PID 02). Das ist oft
eine mehrzeilige Antwort, die zusammen gefaß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
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 41
________________________________________________________________
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.
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 42
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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.
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:
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 43
________________________________________________________________
>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:
1. Digit Ersatz
0
1
2
3
4
5
6
7
8
P0
P1
P2
P3
C0
C1
C2
C3
B0
Bedeutung
Antrieb Codes - SAE definiert
Antrieb Codes - Hersteller definiert
Antrieb Codes - SAE definiert
Antrieb Codes - unverbindlich definiert
Chassis Codes - SAE definiert
Chassis Codes - Hersteller definiert
Chassis Codes - Hersteller definiert
Chassis Codes - reserviert für Zukunft
Karosserie Codes - SAE definiert
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 44
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
9
A
B
C
D
E
F
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. Beim CAN Protokoll ISO 15765-4 kommt an der
zweiten Position noch ein Datenbyte hinzu, daß die Anzahl der folgenden Fehlercodes
beinhaltet.
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.
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 45
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 46
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 47
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 48
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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)
A
SAE J1939 CAN (29 Bit ID, 250* kBaud)
B
User1 CAN (11* Bit ID, 125* kBaud)
C
User2 CAN (11* Bit ID, 50* kBaud)
Tabelle Protokolle, *) vom Anwender änderbar
Es ist meist schwierig vorauszusagen, welches Protokoll zuerst versucht werden soll. Man
läßt am besten den ELM327® entscheiden mit der Wahl 0 für den SP oder den TP Befehl.
Senden Sie also:
>AT SP 0
OK
und beim nächsten gesendeten OBD Befehl sucht der ELM327® automatisch. Man sieht eine
“SEARCHING...” Nachricht gefolgt von einer Antwort. Jetzt kann man den ELM327® nach
dem gefundenen Protokoll mit dem Befehl AT DP fragen.
Die ersten Versionen des ELM327® verwendeten die von SAE empfohlene Suchreihenfolge
(Protokoll 1, 2, 3 usw.). Die letzten Versionen modifizieren die Suchreihenfolge anhand der
vorhandenen aktiven Eingänge. Soll nach der SAE J1978 Folge vorgegangen werden, muß
jedes Protokoll mit den SP oder TP Befehlen gewählt werden.
Ein Nachteil bei der automatischen Suche ist, daß der ELM327® keine vorher definierten
Header bei der Suche verwendet. Es werden immer die Standard OBD Header Werte für jedes
Protokoll benutzt, was bei Standard OBD Antworten auch in Ordnung ist, aber beim
Experimentieren frustriert.
Um eigene Header Werte bei der Initialisierung zu benutzen, verwenden Sie daher nicht
Protokoll 0 sondern nur das Ziel-Protokoll (z.B. AT SP n) oder mit erlaubter automatischer
Suche (AT SP An), da der ELM327 immer ein gewähltes Protokoll mit zugewiesenen Headern
versucht bevor er eine automatische Suche mit Default Header Werten macht.
In 99% aller Fälle arbeitet die Suche mit Memory aktiviert (Pin 5 auf 5 Volt) und der 'Auto'
Option (AT SP 0) sehr gut. Nach der ersten Suche ist das gefundene Protokoll der neue
Default (und so immer zuerst versucht) und bei Einsatz mit einem anderen Fahrzeug gibt es
nur einen geringen Zeitverzug.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 49
________________________________________________________________
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
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 50
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
„Header“ Bytes
Datenbytes (insgesamt 8)
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.
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 51
________________________________________________________________
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. Außerdem
beeinflußt der Befehl nicht die Baudrate, die mit AT BRD geändert sein kann. Daher ist dieser
Befehl wichtig, wenn die RS323 Baudrate mit der Software geändert wird.
Jede der oben genannten Methoden sollte beim Zurücksetzen helfen, wenn experimentiert
wurde. Es gibt aber noch den Fall, daß Probleme nach der Änderung von Programmierbaren
Parameter auftauchen. Dann schalten Sie alle Programmierbaren Parameter ab, bzw. setzen
Sie in den Grundzustand mit dem Befehl:
>AT PP FF OFF
Damit haben Sie dann den sog. Werkszustand. Fall jedoch auch dieser Befehl nicht mehr
erkannt wird, bleibt nur noch die Hardware Methode zum Zurücksetzen der PPs. Siehe dazu
den Abschnitt über Programmierbare Parameter.
Fortgeschrittene Datenabfrage – Setzen der Kopfbytes (Header)
Der ELM327® enthält die besten Funktionen aus den aktuellen Versionen der Vorläufer-Chips
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 emissionsrelevanten 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
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 52
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 53
________________________________________________________________
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
xx
yy
zz
nur 5 Bits
Setzen eines 29 Bit CAN ID
vv xx yy zz
29 Bit ID
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 54
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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
>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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 55
________________________________________________________________
Bus Überwachung (Monitoring)
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 ELM327® kann automatisch in den Monitor All Status beim
Start versetzt werden, wenn PP 00 auf den Wert 0 gesetzt wird und aktiviert wird.
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
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 56
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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.
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 57
________________________________________________________________
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.
Am einfachsten kann der Filter mit dem CRA Befehl verwendet werden. Wenn z.B. nur
Nachrichten mit dem CAN ID 7E9 gesehen werden sollen, kann einfach gesendet werden:
>AT CRA 7E9
und der ELM327® setzt diesen internen Wert, so daß nur Nachrichten mit ID 7E9 angezeigt
werden.
Sollen nicht alle 11 oder 29 Bits definiert werden, kann auch ein Wertebereich definiert
werden, aber das erfordert zusätzlich zum Filter auch das Setzen einer 'Maske'.
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 behandelt. 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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 58
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 59
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 60
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 ‚Modi’ ä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 FC 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 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 definierten Nachricht
beantwortet (in diesem Beispiel 7E8 00 11 22).
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 61
________________________________________________________________
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
J1939 Unterstützung
Der SAE J1939 CAN Standard ist ein relativ neues Protokoll, das in vielen Arbeitsmaschinen
(Lastwagen, landwirtschaftliche Geräte, Busse, um einige zu nennen) benutzt wird. Er
verwendet ein Standard CAN (ISO 11898) physikalisches Interface und definiert sein eigenes
Format zur Datenübertragung, obwohl es der ISO 15765 von Automobilen sehr ähnlich ist.
Der ELM327® bietet eine gewisse Unterstützung für den J1939 Standard im Protokoll A.
Protokolle B und C können auch für das J1939 Format gewählt werden mit den
Programmierbaren Parametern 2C und 2E. Obwohl die Standards nicht vollständig unterstützt
werden, ist es ausreichend für die experimentelle Verwendung.
Der Grundwert für die Datenrate des Protokolls A wurde auf 250 kbps gesetzt, wie vom SAE
J1939-11 Standard vorgesehen. Sollte die Applikation eine abweichende Baudrate benötigen,
kann sie mit PP 2B leicht geändert werden.
J1939 Nachrichten verwenden 29 Bit CAN IDs und bis zu 8 Bytes für jede Nachricht (ISO
15765 verwendet immer 8 Bytes). Diagnose mit SAE J1939 ist im J1939-73 Standard
definiert, das aktuelle Daten-Übertragungs-Protokoll ist in J1939-21 beschrieben. Soll viel mit
J1939 gearbeitet werden, empfiehlt es sich, die SAE Dokumente zu beschaffen.
Der ELM327® behandelt die Nachrichten-Versendung in der gleichen Art wie bei anderen
Protokollen. Die Kopfbytes haben vordefinierte Grundwerte (Default) und es müssen nur die
zu sendenden Datenbytes angegeben werden. Soll z.B. eine Abfrage der Motor-Temperatur
gesendet werden (PGN 00FEEE), senden Sie nur die Anfrage wie bei jeder OBD Anfrage
auch:
>00 FE EE
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 62
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
Bei Erhalt dieser Bytes fügt der ELM327® die erforderlichen Kopfbytes (ID) usw. hinzu und
sendet die Abfrage. Er konfiguriert sich auch richtig, um die Antwort empfangen zu können.
Beachten Sie, daß der ELM327 die Kopfbytes (Header) in der Grundstellung auf EC FF F9
setzt für globale Abfragen vom OBD Servicegerät #1. Wird etwas anderes gewünscht, muß
der Header mit dem AT SH Befehl geändert werden.
Ist man vertraut mit dem Standard, wird man bemerken, daß J1939 eine umgekehrte
Reihenfolge für die Datenbytes verwendet. Obiges sollte als EE FE 00 gesendet werden. Das
kann verwirren und so macht der ELM327® das für Sie. Diese Funktion kann jederzeit mit
dem AT JS Befehl abgeschaltet werden.
Alle Antworten auf eine Abfrage werden vom ELM327® ausgegeben, sei es eine einzelne
CAN Nachricht oder eine Mehrzeilen Übertragung, wie im Übertragungsprotokoll J1939-21
definiert. Sind es Mehrzeilen-Antworten, dann behandelt der ELM327® das für Sie
transparent, ohne es zu bemerken. Beachten Sie, daß bei der Übergabe von drei Datenbytes in
der Abfrage der ELM327® vermutet, daß eine PGN Abfrage gesendet wird und dafür
Antworten erwartet werden. Wird etwas anderes als drei Datenbytes gesendet, wird vermutet,
es handele sich um eine allgemeine Abfrage und es wird nur nach Antworten zu einer QuellAdresse gesehen, wie sie im dritten Byte des Header gegeben wurde.
Der SAE J1939 Standard definiert verschiedene Diagnose Nachrichten vor und vergibt dafür
ID Werte. Der erste davon ('DM1' bezeichnet) ist für Fehlercodes definiert, die periodisch
über das CAN Netzwerk verbreitet werden. Da diese immer vorkommen, hält der ELM327®
einen besonderen Befehl dafür vor (genannt DM1). Sollen alle DM1 Nachrichten erhalten
werden, so verwenden Sie einfach:
> AT DM1
und der ELM327® gibt alles aus, was er findet.
Die DM1 Nachricht ist nur eine vordefinierte Nachricht im ELM327®. Für alle anderen
Diagnose Nachrichten müssen Sie die PGN Nummer (in hexadezimal) wissen und danach
fragen mit dem AT MP Befehl. Die DM2 PGN Nummer ist z.B. 65227 oder 00FECB in
hexadezimal. Zur Ausgabe von DM2s muß also gesendet werden:
>AT MP 00FECB
und der IC sucht nach allen Antworten für DM2 Abfragen. Da zur Zeit alle PGNs mit 00
beginnen, ist eine kürzere Version des Befehls einfacher:
>AT MP FECB
und der ELM327® fügt automatisch zwei Nullen für Sie hinzu. Dieser kürzere Befehl ist eine
Erleichterung und entspricht ganz der anderen Version.
Erhaltene Nachrichten werden mit dem J1939 Protokoll in leicht abgewandelter Form
ausgegeben, wenn die automatische Formatierungs-Option (Grundstellung) gewählt ist. In
einem Beispiel setzen wir den IC zurück, setzen dann das Protokoll auf J1939 und schalten
die Anzeige der Header ein. Für diese Schritte sind folgende Befehle erforderlich:
>AT Z
ELM327 v1.3
>AT SP A
OK
>AT DP
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 63
________________________________________________________________
SAE J1939 (CAN 29/250)
>AT H1
OK
Jetzt schalten wir die automatische Formatierung aus und sehen typischerweise folgendes:
>AT CAF0
OK
>AT DM1
18 FE CA 00 40 FF B8 04 03 8A FF FF
18 FE CA 00 40 FF B8 04 03 8A FF FF
18 FE CA 00 40 FF B8 04 03 8A FF FF
Mit irgendeiner Taste kann der Monitoring Modus angehalten werden. Wenn das Prompt
Zeichen wieder erscheint, versuchen wir den gleichen Befehl, aber mit Formatierung an:
>AT CAF1
OK
>AT DM1
6 0FECA 00 40 FF B8 04 03 8A FF FF
6 0FECA 00 40 FF B8 04 03 8A FF FF
6 0FECA 00 40 FF B8 04 03 8A FF FF
Wieder halten wir das Monitoring mit irgendeiner Taste an.
Ist Ihnen der J1939 Standard bekannt, erkennen Sie leicht die Art, wie der ELM327® die
J1939 Daten formatiert. Die 6 am Anfang steht für den Prioritäts-Wert, der als 3 Bit Wert vom
Standard gesetzt wird. Das 0FECA steht für den Identifizierer-Wert vom DM1 PGN, die 0 vor
dem FECA ist das Data Page Bit. Beachten Sie, daß der ELM327 nicht den umgekehrten Bit
Wert ausgibt, wenn Formatierung an ist. Um das zu sehen, muß die Formatierung
ausgeschaltet werden.
Nach 0FECA folgt der Wert 00 für die Quell Adresse. Hier ist er 00 für Motor #1. Wenn der
Datenlängen Code eingeschaltet ist (mit AT D1), erscheint als nächstes ein einzelnes Digit. Da
er aus ist, erscheint nichts. Die letzten 8 Byte stehen für die übertragene Nachricht (sie
stammen nicht von einem Fahrzeug und sind hier nur als Beispiel). Es sind hier 8 Bytes, aber
für jede PGN sind Datenlängen definiert, die zwar oft 8 Bytes lang sind, aber das nicht
müssen.
Das ist eine kurze Beschreibung der ELM327® Unterstützung für den J1939 Standard.
Beachten Sie bitte, es sind nur Grundlagen und es fehlt z.B. die Unterstützung der Adressen
Behandlung aus J1939-81 sowie die umfangreichen Tests der anderen Fahrzeug-Protokolle.
.
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 64
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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
An dieser Stelle wurde die Grundeinstellung für AT H1/H0 geändert, aber noch nicht der
aktuelle Wert der momentanen AT H1/H0 Einstellung. In der 'Typ' Spalte der PP Tabelle kann
man sehen, daß die Änderung erst beim nächsten Gebrauch der Grundwerte wirkt. Das kann
mit einem Reset, einem Spannung Aus/Ein oder mit einem AT D Befehl geschehen.
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 (N bedeutet eingeschaltet und F ist ausgeschaltet):
>AT PPS
00:FF F
04:01 F
08:FF F
0C:68 F
10:0D F
14:FF F
18:00 F
1C:FF F
20:FF F
24:00 F
28:FF F
2C:E0 F
01:00 N
05:FF F
09:00 F
0D:0D F
11:00 F
15:FF F
19:FF F
1D:FF F
21:FF F
25:00 F
29:FF F
2D:04 F
02:FF F
06:F1 F
0A:0A F
0E:FF F
12:FF F
16:FF F
1A:FF F
1E:FF F
22:FF F
26:00 F
2A:3F F
2E:80 F
03:32 F
07:09 F
0B:FF F
0F:FF F
13:32 F
17:92 F
1B:FF F
1F:FF F
23:FF F
27:FF F
2B:02 F
2F:0A F
Man sieht, daß PP 01 nun den Wert 00 zeigt und aktiviert ist (eiN). Da der Typ ‚D’ ist, wird es
nicht wirksam, 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:
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 65
________________________________________________________________
>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® wirksam 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
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, der nur im äußersten
Notfall verwendet werden sollte, da der Eingriff bei unter Spannung stehenden Komponenten
dazu erforderlich ist.
Wenn der ELM327® hochfährt, prüft er, ob ein Jumper (Verbindungsbrücke) zwischen Pin 28
(dem OBD Tx LED Ausgang) und Schaltung Masse (Vss) vorhanden ist. Ist das der Fall,
werden alle PPs abgeschaltet und der IC auf die Werkseinstellungen zurück gesetzt. Verbinden
Sie dazu also Masse (Pin 8 oder 19 des ELM327®, Pin 5 des RS232 Steckers oder einen
anderen Massepunkt der Schaltung) mit einem Jumper-Kabel und halten das andere Ende des
Jumper-Kabels an Pin 28 des ELM327® und schalten dann Versorgungsspannung ein. Wenn
die RS232 Rx LED anfängt, schnell zu blinken, entfernen Sie das Jumper-Kabel und alle PPs
sind abgeschaltet. Verwenden Sie diese Prozedur nur im Notfall und auf eigene Gefahr, da ein
falscher Kontakt zu Schäden führen kann.
Hier ist eine Liste der aktuell implementierten Programmierbaren Parameter. Beachten Sie die
Spalte „Typ“, die anzeigt, wie Änderungen der Programmierbaren Parameter wirken:
● I – tritt sofort in Kraft
● D – tritt in Kraft nach Zurücksetzen auf Default (AT D, AT Z, AT WS MCLR oder
Versorgungsspannung aus/ein
● R – tritt in Kraft nach Reset (AT Z, AT WS, MCLR oder Versorgungsspannung
aus/ein)
● P – braucht einen Versorgungsspannungs-Reset Typ (AT Z, MCLR oder
Versorgungsspannung aus/ein)
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 66
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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)
04
06
Setzt den AT Grundwert (adaptives Timing)
OBD Quell Adresse (Source, Tester), nicht bei J1939
Protokollen
Letztes Protokoll bei automatischer Suche
Zeichen Echo (AT E1 Einstellung)
07
09
0A
0C
0D
10
11
13
16
17
18
24
25
26
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)
ISO Baudrate (AT IB Einstellung)
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)
01
F1
R
00 bis 02
00 bis FF
D
D
D
D
R
01 bis 0C
00 = Ein
FF = Aus
00 bis FF
08 bis FF
09
00
(Ein)
0A
68
(38,400)
I
R
00 bis FF
00 bis FF
0D
00
(53 msek)
00
(Ein)
R
I
00 = Ein
FF = Aus
00 bis FF
00 = 96
FF = 10
00 bis FF
32
(205 msek)
R
P
D
I
(siehe
Hinweis
3)
FF
R
(10,4 K)
ISO Wachhalte-Nachrichten Rate (AT SW Einstellung,
92
D
Einstellung = Wert x 20,48 msek)
(2,99 sek)
Autom. Suchzeit-Dauer zwischen Protokoll 4 und 5
00 bis FF
00
I
(Einstellung = Wert x 4,096 msek)
(keine
Dauer)
CAN autom. Formatierung (AT CAF Einstellung)
00 = Ein
00
D
FF = Aus
(Ein)
CAN autom. Fluß-Kontrolle (AT CFC Einstellung)
00 = Ein
00
D
FF = Aus
(Ein)
CAN Filterbyte
00 bis FF
00
D
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 67
________________________________________________________________
29
2A
2B
2C
2D
2E
2F
CAN Datenlängen-Code (DLC) anzeigen bei Anzeige
Kopfbytes (Header) (AT D0/D1)
00 = Ein
FF = Aus
FF
(Aus)
CAN Fehler Nachrichten (bei Protokollen 6 bis C)
Die Bits von diesem Byte bedeuten:
b7: ISO15765 Datenlänge 0 = jede 1 = 8 Bytes
b6: ISO15765 PCI=00
0 = erlaubt 1 = nicht erlaubt
b5 bis b0: Reserviert für Zukunft, auf 0 setzen
Achtung: b7 ist der MSB und b0 ist der LSB.
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 bis FF
FF
(Aus)
D
01 bis 40
02
(250 kbps)
R
E0
R
00 bis FF
D
(siehe
Hinweis
3)
(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 DefaultWerte (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.
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:
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 68
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 69
________________________________________________________________
<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. Es könnte
auch auftreten bei eingeschaltetem CAN Auto-Formatieren (CAF) und einem System, das
nicht das ISO 15765-4 Format hat. Versuchen Sie, den Befehl erneut zu senden. Wenn es
Rauschstörungen waren, wird es beim zweiten Mal wahrscheinlich richtig übertragen.
LV RESET
Der ELM327® hat einen internen Schaltkreis, der kontinuierlich die 5 Volt
Versorgungsspannung auf akzeptabele Grenzwerte prüft. Ist die Spannung unterhalb des
Grenzwertes wird ein „Brownout Reset“ durchgeführt und der IC macht einen kompletten
Reset und gibt LV RESET aus. Dieser Reset ist der gleiche wie AT Z oder MCLR Reset.
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 oder es wurden nicht
erkannte Nachrichten oder Nachrichten mit Bitfehlern gefunden. Versuchen Sie ein anderes
Protokoll oder eine andere Baudrate.
STOPPED
Wenn eine Protokoll Initialisierung oder Suche durch Erhalt eines RS232 Zeichens oder
niedrigen Pegel am RTS Pin unterbrochen wird, zeigt der ELM327® das Wort STOPPED an,
um anzugeben, warum der OBD Befehl verlassen wurde und zum Prompt Zeichen zurück
gekehrt wurde. Sehen Sie diese Meldung, dann hat irgendetwas den Prozess unterbrochen.
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 70
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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
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.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 71
________________________________________________________________
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.
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 invertierenden 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:
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 72
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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.
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 73
________________________________________________________________
„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
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 74
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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.
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
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 75
________________________________________________________________
Überprüfen Sie anschließend die Kabelverbindung anhand der folgenden Skizze (DB9 Pin 1 +
2)..
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 76
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
Bild Bestückung Bausatz
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 77
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 78
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 79
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 80
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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,
DE-30938 Burgwedel nehmen die Interfaces zur Behandlung gemäß § 11 oder § 12 Elektround Elektronikgerätegesetz kostenlos zurück.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 81
________________________________________________________________
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
oder Windows-Mobile 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® Update-Seite veröffentlicht, für die der Anwender eine Zugangsberechtigung
erhalten hat.
Den folgenden Abschnitte 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. Ab Version 1.6.1 der ScanMasterELM-OEM Software ist diese Installationsmethode
bereits integriert. 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ß.
Für Windows98 bis -ME:
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 82
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 83
________________________________________________________________
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.
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 84
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 85
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 86
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 87
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 88
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 89
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 90
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 91
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 92
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 93
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 94
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 95
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 96
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 97
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 98
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 99
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 100
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 101
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 102
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 103
________________________________________________________________
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 COM-
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 104
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
Einstellungen 8N1, keine Flußkontrolle, 38.400 Baud (beim ElmCan®-II 115.200 Baud)
haben.
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.
Markieren Sie den gefundenen Dienst (SPP = Serial Port Profile), markieren Sie
Verschlüsselte Verbindung verwenden und tippen Sie Weiter und dann Fertig.
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 105
________________________________________________________________
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.
Im Folgenden wird die Installation auf einem Smartphone mit Windows-Mobile gezeigt:
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 106
CarCode Müller
ElmCan® ELM327®
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
CarCode Müller
ElmCan® ELM327®
Seite 107
________________________________________________________________
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 2008 by CarCode Müller, alle Rechte vorbehalten.
Seite 108
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
J1939 Unterstützung
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
3
4
5
8
9
9
11
30
31
32
35
35
37
40
42
44
45
46
49
50
51
55
56
58
60
61
63
67
70
73
74
75
77
77
79
80
80
80
81
86
Copyright 2008 by CarCode Müller, alle Rechte vorbehalten.
Herunterladen