Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
SGBD-Generator
Hinweis: Dieses Dokument dient als Anleitung für das Handling von UDS-Jobs. Es hat kei-
nesfalls Lastenheftcharakter. Ein Bezugnehmen auf die Inhalte dieser Anleitung bei der Ent-
wicklung und Umsetzung von Fahrzeugdiagnose ist nicht zulässig. Hierfür sind die entspre-
chenden Diagnose-Lastenhefte zu verwenden.
Version 1.19
Stand: 14.05.2009
Status: freigegeben
Autor: Andreas Schandl, Fa. ESG
Ablage: Anleitung_STATUS_STEUERN_UDS_V1.19.doc
Umfang: 27
Historie
Version Stand Autoren Änderung
0.10 10.01.2006 T. Müller Ersterstellung
0.20 16.01.2006 T. Müller Ergänzungen/ Änderungen
0.21 13.02.2006 T. Müller Ergänzungen/ Änderungen
0.22 31.03.2006 T. Müller Überarbeitung: Tabellen
0.30 20.04.2006 T. Müller “BITFIELD“ für Bitauswertungen hinzu
0.40 29.05.2006 T. Müller Service $31 und $2F hinzu
0.41 01.06.2006 T. Müller Definierte Datentypen
0.52 12.08.2006 T. Müller Erweiterung Service $31
0.53 13.11.2006 T. Müller Überarbeitung
0.54 04.12.2006 T. Müller Tipps für Ediabas Toolset hinzugefügt
0.56 23.03.2007 T. Müller Erweiterungen
0.57 03.05.2007 T. Müller Kapitel „Kombinieren von Services“ hinzu
1.00 10.06.2007 T. Müller Allgemeine Überarbeitung
ZEDIS und SGBD-Generator Seite 2 von 27
Inhaltsverzeichnis
1 Einleitung .......................................................................................................................................4
3 Definierte Datentypen....................................................................................................................7
4 Definition Resultnamen.................................................................................................................8
1 Einleitung
Im Rahmen des Feedforwardprozess Diagnose werden zur L6 erstmalig Diagnosejobs, die
sich aufgrund ihrer Funktion in allen zukünftigen Baureihen befinden, in Form von Diagno-
seaufträgen standardisiert vorgegeben. Alle Diagnoseumfänge, die für die Produktion und
den Service benötigt werden und durch die Standardjobs beschrieben sind, werden in der
Diagnosedatenbank definiert. Diese steuergerätespezifischen Umfänge werden mit Hilfe
des Webclients der Diagnosedatenbank für jedes Steuergerät zusammengestellt und in
den SGBD-Generator importiert.
Nach dem Import der Daten in den SGBD-Generator sind die Umfänge in der Tabelle
“SG_Funktionen“ sichtbar und können von dem Anwender noch ergänzt werden.
Die in der Tabelle definierten Umfänge werden von fünf speziellen Standardjobs genutzt.
Gelbe Felder sind für den User nicht editierbar.
Zusätzlich zu den Diagnoseaufträgen können in der Diagnosedatenbank noch Fehlerorte
und Fehlertexte (DTC’s) eingepflegt und zugeordnet werden. Diese Umfänge werden zu-
sätzlich zu den Diagnoseaufträgen beim Import der Daten in den SGBD-Generator in die
Standardtabelle “FOrtTexte“ importiert.
In diesem Dokument wird beschrieben, wie diese fünf Standardjobs aufgerufen und steu-
ergerätespezifische Anpassungen in der Tabelle “SG_Funktionen” durchgeführt wer-
den. Es stehen folgende fünf zusätzliche Standardjobs zur Verfügung.
Die Beschreibung der Jobs und der Standardtabelle “SG_Funktionen“ befindet sich in
den folgenden Kapiteln. Die genaue Definition der einzelnen Diagnose-Service befindet
sich in der der ISO 14229.
Die oben aufgeführten Jobs benutzten die Tabelle “SG_Funktionen“.
2 Tabelle ”SG_Funktionen”
Die oben aufgelisteten Jobs benötigen zur Laufzeit die Standardtabelle
“SG_Funktionen“ die sich nach dem Import der Diagnosedaten in den SGBD-Generator
in der Gruppe “SG Funktionen“ (siehe: Abbildung 1: Formular “SG Funktionen“ im SGBD-
Generator) befindet. Die Tabelle “SG_Funktionen“ besteht aus folgenden Spalten.
Spaltendefinition:
Hinweis: Die Spalte SG_ADR wird zurzeit von den Standardjobs nicht ausgewertet!
3 Definierte Datentypen
Datentyp Länge Wertebereich
char 1 Byte signed (default): -128 bis+127
unsigned: 0 bis +255
int 2 Byte signed (default): -32768 bis +32767
unsigned: 0 bis +65535
long 4 Byte signed (default): -2147483648 bis +2147483647
unsigned: 0 bis +4294967295
float *) 4 Byte intel float (default), Little Endian
Motorola float, Big Endian
einfache Genauigkeit
double 8 Byte intel double (default), Little Endian
Motorola double, Big Endian
doppelte Genauigkeit
string dynamisch 0-255 Zeichen
Hex0: String Enderkennung
string[n] **) max. 255 Byte 1 ≤ n ≤ 255
n = Anzahl der Bytes
data[n] **) max. 255 Byte 1 ≤ n ≤ 255
n = Anzahl der Bytes
*) Es dürfen nur Datentypen benutzt werden, die auch vom Steuergerät unterstützt wer-
den. In der Regel können nur wenige Steuergeräte Float-Zahlen verarbeiten.
**) Beim Datentyp „string“ kann optional die Stringlänge angegeben werden. Falls keine
Stringlänge angegeben wurde, wird als Endezeichen „0x00“ erwartet.
Der Datentyp „data“ erfordert zwingend eine Längenangabe.
4 Definition Resultnamen
Jeder Ergebnisname beginnt mit "STAT_". Es gibt vier verschiedene Ergebnistypen (Se-
mantiken). Der Ergebnistyp wird durch die Einheit festgelegt.
• Analoge Ergebnisse enden mit _WERT und sind vom Datentyp char, int, long, flo-
at, double, string oder data.
Die Results _EINH und _INFO werden automatisch erzeugt.
Sonderfälle:
o Beim Datentyp string wird zusätzlich das Result _TEXT erzeugt.
Im Result _TEXT wird das Ergebnis in Textform ausgegeben.
o Beim Datentyp data wird zusätzlich das Result _DATA erzeugt.
Im Result _DATA wird das Ergebnis in hexadezimaler Darstellung ausgege-
ben (Bsp.: _DATA= 05 07 06 1A FF …).
Das Result _WERT ist in diesen beiden Fällen leer und wird mit “0“ befüllt
(_WERT=0).
• Digitale Ergebnisse (EINHEIT = "0/1") dürfen nicht mit _WERT enden und sind
vom Datentyp char, int oder long wobei nur "0" oder "1" erlaubt sind.
Das Result _INFO wird automatisch erzeugt.
• Diskrete Ergebnisse (EINHEIT = "0-n") dürfen nicht mit _WERT enden und sind
vom Datentyp char, int oder long. Dem Ergebnisnamen wird die umgerechnete De-
zimalzahl des Antworttelegramms zugeordnet.
Die Results _EINH, _TEXT und _INFO werden automatisch erzeugt.
• HEX Ergebnisse (EINHEIT = "HEX") enden mit _WERT und sind vom Datentyp
char, int oder long.
Die Results _EINH und _INFO werden automatisch erzeugt.
Ergebnistabelle:
RESULTNAME EINHEIT L/H DATENTYP MASKE NAME MUL DIV ADD INFO
Tabelle „TAB_RAD“:
WERT TEXT
Argument 1: “ARGUMENT_SPALTE“
• Hier wird der Name der Spalte eingetragen, aus der das 2. Argument benutzt wer-
den soll. Aus der Tabelle “SG_Funktionen“ können die Spalten “ARG“, “ID“
oder “LABEL“ ausgewählt werden.
Argument 2: “STATUS“
• Hier wird der Wert, aus der im 1. Argument gewählten Spalte, eingetragen werden.
Z.B “DID“=0xD001
Der Saugdruck soll aus einem Motorsteuergerät ausgelesen werden. Dazu sind drei ver-
schiedene Jobaufrufe möglich.
a: Dem Job wird ein Argument aus der Spalte “ARG“ übergeben
apiJob("<SGBD-Name>","STATUS_LESEN","ARG;IPSAU","")
b: Dem Job wird ein Argument aus der Spalte “ID“ übergeben
apiJob("<SGBD-Name>"," STATUS_LESEN ","ID; 0xD002","")
c: Dem Job wird ein Argument aus der Spalte “LABEL“ übergeben
apiJob("<SGBD-Name>"," STATUS_LESEN ","LABEL; MAP_MES","")
Tabelle „SG_Funktionen“:
Der Job kann wie folgt aufgerufen werden. Wenn das Steuergerät richtig antwortet, dann
werden die Results automatisch erzeugt. (Siehe Beispiel )
5.1.1.2 Beispiel 2: Auslesen von mehreren Data-Identifier (DID) aus dem Steuergerät
Mit dem Job “STATUS_LESEN“ ist es auch möglich mehrere Data-Identifier und somit
mehrere Ergebnisse mit einem Jobaufruf aufzurufen. Die Anzahl der DID’s die durch einen
Jobaufruf abgefragt werden können, sind bei den Steuergeräten unterschiedlich. Die ma-
ximale Anzahl der DIDs die aufgerufen werden können, legt jeder Entwickler für sein Steu-
ergerät im Feld “Konstanten“ im SGBD-Generator fest.
Defaulteinstellung: unsigned char MAX_ARGUMENT_STATUS_LESEN = 5;
Tabelle „SG_Funktionen“:
Der Service $22 erlaubt dem Tester mehrere Ergebnisse mit einem Data-Identifier abzu-
rufen. Das bedeutet, dass ein DID zum Steuergerät geschickt wird und das Steuergerät
mehrere Ergebnissätze zurückgeben kann.
Die einzelnen Results, die vom Steuergerät geliefert werden, müssen in einer Subtabelle
definiert sein. Der Name der Subtabelle wird in der Spalte “RES_TABELLE“ in der Tabelle
“SG_Funktionen“ eingetragen. Die Reihenfolge der Results darf nicht vertauscht wer-
den.
STAT_ FL_LINKS_EIN =1
STAT_ FL_LINKS_EIN_INFO = Fernlicht links 1=EIN, 0=AUS
STAT_ FL_RECHTS_EIN =0
STAT_ FL_RECHTS_EIN_INFO = Fernlicht rechts 1=EIN, 0=AUS
STAT_ AL_LINKS_EIN =0
STAT_ AL_LINKS_EIN_INFO = Abblendlicht links 1=EIN, 0=AUS
STAT_ AL_RECHTS_EIN =1
STAT_ AL_RECHTS_EIN_INFO = Abblendlicht rechts 1=EIN, 0=AUS
Tabelle „SG_Funktionen“:
RES_TABELLE
DATENTYP NAME MUL DIV ADD SG_ADR SERVICE ARG_TABELLE
- - - - - - 22 - RES_0xD020
Tabelle „RES_0xD020“:
RESULTNAME EINHEIT L/H DATENTYP MASKE NAME MUL DIV ADD INFO
Fernlicht links:
STAT_FL_LINKS_EIN 0/1 - INT - - - - -
1=EIN; 0=AUS
Fernlicht rechts:
STAT_FL_RECHTS_EIN 0/1 - INT - - - - -
1=EIN; 0=AUS
Abblendlicht links:
STAT_AL_LINKS_EIN 0/1 - INT - - - - -
1=EIN; 0=AUS
Abblendlicht rechts:
STAT_AL_RECHTS_EIN 0/1 - INT - - - - -
1=EIN; 0=AUS
In diesem Beispiel wird für jedes Result der Datentyp “INT“ benutzt. Wenn viele Status
von einem Steuergerät abgerufen werden sollen, können die Anzahl der Datenbytes ver-
ringert werden, wenn der Datentyp “BITFIELD“ benutzt wird (siehe 5.1.2.2 ).
5.1.2.2 Beispiel 2: Auslesen von Lichtstatus mit Hilfe des Datentyps “BITFIELD“
Durch die Verwendung des Datentyps “BITFIELD“ in der Spalte “DATENTYP“ in der Ta-
belle SG_Funktionen können mehrere Status in einem Byte (oder mehreren Bytes) aus-
gewertet werden. Die Maske zum Ausmaskieren wird in der Subtabelle in der Spalte
“Maske“ angegeben. Bei diskreten (0-n) und digitalen (0/1) Ergebnissen sind 1, 2 oder 4
Byte erlaubt. Ist ein Diagnoseauftrag als Bitfield deklariert, werden alle darin enthaltenen
Argumente/Results als Bitfield behandelt. Darüber hinaus dürfen keine weiteren Argumen-
te/Results angelegt werden.
Tabelle „SG_Funktionen“:
NAME
DATENTYP MUL DIV ADD SG_ADR SERVICE ARG_TABELLE RES_TABELLE
BITFIELD RES_0xD020 - - - - 22 - -
Tabelle „RES_0xD020“:
RESULTNAME EINHEIT L/H DATENTYP MASKE NAME MUL DIV ADD INFO
Fernlicht links:
STAT_FL_LINKS_EIN 0/1 - INT 0x0001 - - - -
1=EIN; 0=AUS
Fernlicht rechts:
STAT_FL_RECHTS_EIN 0/1 - INT 0x0002 - - - -
1=EIN; 0=AUS
Schlusslicht:
STAT_SL 0-n - INT 0x0030 TAB_SL - - -
siehe Subtabelle
Abblendlicht rechts:
STAT_AL_RECHTS_EIN 0/1 - INT 0x0100 - - - -
1=EIN; 0=AUS
*1) *2)
Tabelle „TAB_SL“:
WERT TEXT
Zum Beispiel kann durch senden eines bestimmten Data-Identifier (DID) eine Nummer ins
Steuergerät geschrieben werden.
Achtung:
Das Steuergerät kann den Zugriff auf verschiedene Data-Identifier einschränken oder ganz
untersagen (nur zum Lesen definierte Data-Identifier durch den Zulieferer oder Fahrzeug-
hersteller).
Argument 1: “ARGUMENT_SPALTE“
• Hier wird der Name der Spalte eingetragen, aus der das 2. Argument benutzt wer-
den soll. Aus der Tabelle “SG_Funktionen“ können die Spalten “ARG“, “ID“
oder “LABEL“ ausgewählt werden.
Argument 2: “STATUS“
• Hier wird der Wert, aus der im 1. Argument gewählten Spalte, eingetragen werden.
Z.B “DID“=0xD001
Argument 3: “WERT“
• Hier wird der Wert eingegeben, der an das Steuergerät zum Steuern übergeben
werden den soll. Z.B “Nr“=1234567
Tabelle „SG_Funktionen“:
ARG_TABELLE
DATENTYP NAME MUL DIV ADD SG_ADR SERVICE RES_TABELLE
- - - - - - 2E ARG_0xD030 -
Tabelle „ARG_0xD030“:
ARG EINHEIT L/H DATENTYP MASKE NAME MUL DIV ADD MIN MAX INFO
Hinweis:
• Wenn ein Aufruf ein oder mehrere Argumente besitzt, dann befinden sich die Ar-
gumente in einer Subtabelle.
• Beim Service $2E muss mindestens ein Eintrag in der Argumententabelle vorhan-
den sein. Ein Aufruf ohne ein Argument ist nicht zulässig.
Argument 1: “AUSWAHL_SPIEGEL“
• Mit dem Argument wird der Spiegel ausgewählt, der verfahren werden soll.
Mögliche Eingaben: “1“= Fahrerspiegel oder “0“= Beifahrerspiegel
Argument 2: “RICHTUNG_SPIEGEL“
• Mit dem Argument wird die Richtung festgelegt.
Mögliche Eingaben: “rechts“, “links“, “oben“ oder “unten“
Argument 3: “ANSTEUER_ZEIT“
• Mit dem Argument wird die Ansteuerzeit in ms festgelegt.
Tabelle „SG_Funktionen“:
ARG_TABELLE
DATENTYP NAME MUL DIV ADD SG_ADR SERVICE RES_TABELLE
- - - - - - 2E 0xD040 -
Tabelle „ARG_0xD040“:
ARG EINHEIT L/H DATENTYP MASKE NAME MUL DIV ADD MIN MAX INFO
1=Fahrerspiegel,
AUSWAHL_SPIEGEL 0/1 - INT - - - - - - -
0=Beifahrerspiegel
0x01=rechts, 0x02=links,
RICHTUNG_SPIEGEL 0-n - INT - TAB_SP_RI - - - - -
0x03=oben, 0x04= unten
Tabelle „TAB_SP_RI“:
WERT TEXT
0x01 rechts
0x02 links
0x03 oben
0x04 unten
Hinweis:
• Beim Aufruf von diskreten Argumenten kann der Eintrag aus der Spalte “TEXT“
oder der Eintrag aus der Spalte “WERT“ übergeben werden.
Beispielaufruf:
Tabelle „TAB_SP_RI“:
WERT TEXT
0x01 rechts
0x02 links
0x03 oben
0x04 unten
Die einzelnen Argumente, die dem Steuergerät geliefert werden müssen, werden in einer
Subtabelle definiert. Der Name der Subtabelle wird in der Spalte “ARG_TABELLE“ in der
SG_Funktionen eingetragen.
Argument 1: “ARGUMENT_SPALTE“
• Hier wird der Name der Spalte eingetragen, aus der das 2. Argument benutzt wer-
den soll. Aus der Tabelle “SG_Funktionen“ können die Spalten “ARG“, “ID“
oder “LABEL“ ausgewählt werden.
Argument 2: “STATUS“
• Hier wird der Wert, aus der im 1. Argument gewählten Spalte, eingetragen werden.
Z.B “RID“=0xA001
Argument 3: “STEUERPARAMETER“
• RoutineControlOptionRecord. Mögliche Eingaben:
o STR: Routine starten
o STPR: Routine stoppen
o RRR: Ergebnisse vom Steuergerät abfragen
Argument 4: “WERT“
• Hier wird der Wert eingegeben, der an das Steuergerät zum Steuern übergeben
werden soll. Dieses Argument wird nur benötigt, wenn in der Subtabelle ein Parame-
ter definiert ist.
Tabelle „SG_Funktionen“:
- - - - - - 31 - -
STAT_SUCHLAUF_EIN = 1
STAT_BEST_AM_SENDER = SENDER_A
STAT_BEST_FM_WERT = 96,65
STAT_BEST_FM_WERT_EINH = kHz
STAT_BEST_AM_WERT = 88,50
STAT_BEST_AM_WERT_EINH = kHz
Tabelle „SG_Funktionen“:
RES_TABELLE
DATENTYP NAME MUL DIV ADD SG_ADR SERVICE ARG_TABELLE
INT - - - - - 31 - RES_0xA055
Tabelle „RES_0xA055“:
DATEN-
RESULTNAME STR STPR RRR EINHEIT L/H MASKE NAME MUL DIV ADD INFO
TYP
0=Suchlauf aus,
STAT_SUCHLAUF_EIN - - + 0/1 - INT - - - - -
1=Suchlauf ein
Gibt den Namen des
STAT_BEST_AM_SENDER - - + 0-n - STRING - - - - - besten AM Sender
zurück
STAT_BEST_FM_WERT - + + kHz - INT - - 100 - Wert FM Sender
Eine Besonderheit des Jobs “STEUERN_ROUTINE“ ist, dass für jeden Steuerparameter
(STR, STPR, RRR) einzelne Results definiert werden können. Somit können unterschiedli-
che Results für Start, Stop oder beim Abfragen von Results definiert werden. Die Definition
erfolgt in der jeweiligen Subtabelle. In dieser Tabelle befinden sich immer alle Results, die
zu einer ID gehören. Die Auswahl der einzelnen Results wird festgelegt, indem die Spalten
STR, STPR, RRR mit einem “-“ oder “+“ befüllt werden.
Dabei gilt:
“-“: Das Argument/Result wird beim Aufruf der ID mit dem jeweiligen Steuerparame-
ter nicht benutzt
“+“: Das Argument/Result wird beim Aufruf der ID mit dem jeweiligen Steuerparame-
ter benutzt
Die einzelnen Argumente, die dem Steuergerät geliefert werden müssen, werden in einer
Subtabelle definiert. Der Name der Subtabelle wird in der Spalte “ARG_TABELLE“ in der
SG_Funktionen eingetragen.
Um den Standardjob “STEUERN_IO“ aufzurufen, müssen vier Argumente übergeben wer-
den.
Argument 1: “ARGUMENT_SPALTE“
• Hier wird der Name der Spalte eingetragen, aus der das 2. Argument benutzt wer-
den soll. Aus der Tabelle “SG_Funktionen“ können die Spalten “ARG“, “ID“
oder “LABEL“ ausgewählt werden.
Argument 2: “STATUS“
• Hier wird der Wert, aus der im 1. Argument gewählten Spalte, eingetragen werden.
Z.B “DID“=0xD001
Argument 3: “STEUERPARAMETER“
• ControlOptionRecord. Mögliche Eingaben:
o RCTECU: ReturnControlToECU
o RTD: ResetToDefault
o FCS: FreezeCurrentState
o STA: ShortTermAdjustment
Argument 4: “WERT“
• Hier wird der Wert eingegeben, der an das Steuergerät zum Steuern übergeben
werden soll. Z.B. “Drehzahl“= 2300 1/min
apiJob("<SGBD-Name>"," STEUERN_IO","ARG;
DREHZAHL_VORGEBEN;STA;2300","")
STAT_IST_DREHZAHL_WERT = 2312
STAT_IST_DREHZAHL_EINH = 1/min
STAT_ FL_LINKS_INFO = Aktuelle Drehzahl in 1/min
Tabelle „SG_Funktionen“:
Tabelle „ARG_0xD080“:
ARG EINHEIT L/H DATENTYP MASKE NAME MUL DIV ADD MIN MAX INFO
Motordrehzahl
DREHZAHL 1/min - INT - - 1 1 0 800 6000
Eingabe in 1/min
Tabelle „RES_0xD080“:
RESULTNAME EINHEIT L/H DATENTYP MASKE NAME MUL DIV ADD INFO
Aktuelle Drehzahl in 1/
STAT_IST_DREHZAHL_WERT 1/min - INT - - - - -
min
Argument 1: “BLOCK_NR“
• Hier wird die Nummer des Blockes angegeben, der ausgelesen werden soll. Erlaub-
ter Bereich 0 – 255.
Argument 2: “NEU_DEFINIEREN“
• Wird “JA“ oder “YES“ eingegeben, dann wird der Block im SG gelöscht und neu
ins SG geschrieben. Wird “NEIN“ oder “NO“ eingegeben, dann wird der Block im
SG nicht gelöscht und nicht geschrieben.
Anschließend wird der Block gelesen.
Argument 3: “ARGUMENT_SPALTE“
• Hier wird der Name der Spalte eingetragen, aus der das 2. Argument benutzt wer-
den soll. Aus der Tabelle “SG_Funktionen“ können die Spalten “ARG“, “ID“
oder “LABEL“ ausgewählt werden.
Argument 4: “STATUS“
• Hier wird der Wert, aus der im 1. Argument gewählten Spalte, eingetragen werden.
Z.B “DID“=0xD001
apiJob("<SGBD-Name>"," STATUS_BLOCK_LESEN","1;YES;ID;
0xD002;0xD003","")
Tabelle „SG_Funktionen“:
Bei diesem Aufruf werden die angeforderten Werte der Identifierer im Steuergerät bereit-
gestellt und können anschließend mit dem JOB “STATUS_BLOCK_LESEN“ ausgelesen
werden.
Der Aufruf sieht wie folgt aus:
Bei Auswahl einer der UDS-Standardjobs in der Jobauswahl wird in der Job-Info auf die Tabelle
SG_Funktionen verwiesen. Mit Doppelklick wird die Tabelle SG_Funktionen in der Tabelleninfo ange-
wählt.
1. Doppelklick
1. Doppelklick
2. Der Eintrag im
Eingabefeld wird
automatisch befüllt.
Diese Funktion ist für die Spalten “ARG“, “ID“ und “LABEL“ implementiert.
1. Doppelklick
E-Mail: referenz@bmw.de
https://gis.bmw.com