Sie sind auf Seite 1von 16

EDIABAS — STD-INTERFACE-ANBINDUNG

E D IA B A S
Elektronik Diagnose Basissystem

STD-INTERFACE-ANBINDUNG

VERSION 7

Copyright BMW AG, created by Softing AG

IFHSTD.DOC
EDIABAS — STD-INTERFACE-ANBINDUNG

INHALT

INHALT ............................................................................................................ 2

1. Änderungshistorie................................................................................. 3

2. Einführung.............................................................................................. 4
2.1. Über diese Dokumentation ..................................................... 4
2.2. Konventionen.......................................................................... 4
2.3. Besonderheiten, Begriffe, Akronyme ...................................... 5

3. Allgemeines............................................................................................ 6

4. Beschreibung der STD-Schnittstelle ................................................... 8


4.1. Aufstellung der ADS Kommandos .......................................... 9
4.2. Beschreibung der Datenpuffer................................................ 10
4.2.1. Datenpuffer für WRITEDATA()........................................... 10
4.2.2. Datenpuffer für READDATA()............................................. 12
4.3. Zusammenfassung der Zustandsübergänge .......................... 14
4.4. Definitionnen für Zustände und Fehler ................................... 15

A. LITERATURVERZEICHNIS .................................................................... 16

2
EDIABAS — STD-INTERFACE-ANBINDUNG

1. Änderungshistorie

Version 7 Ersterstellung

3
EDIABAS — STD-INTERFACE-ANBINDUNG

2. Einführung

2.1. Über diese Dokumentation

In diesem Dokument ist die Anbindung eines Standard-Interfaces über die erweiterte
Standard-Interface-Schnittstelle und den zugehörigen Standard-Interfacehandler
beschrieben.

2.2. Konventionen

Diese Dokumentation verwendet die folgenden typographischen Konventionen:

Beispiel Beschreibung
SAMPLE.B2V Großschrift kennzeichnet Dateinamen, Register und
Betriebssystemkommandos.
job, string, Fettschrift kennzeichnet Schlüsselwörter und
while Operatoren der Sprachen BEST/2 und BEST/1
sowie der API-Funktionen.
In Beschreibungen der Syntax müssen diese Wörter
wie angegeben geschrieben werden.
ausdruck Kursivschrift kennzeichnet Platzhalter für vom
Programmierer einzutragende Werte, wie z.B.
Dateinamen.
[option] Wörter in eckigen Klammern bedeuten optionale
Angaben.
{ result | Geschweifte Klammern und senkrechte Striche
argument } kennzeichnen Eingaben, von denen jeweils eine
gewählt werden muß, außer wenn sie in eckigen
Klammern steht.
[constant...] job... Drei Punkte, die direkt einem Ausdruck folgen,
kennzeichnen, daß mehrere Ausdrücke der selben
Form folgen können.
hallo="Test"; Diese Schriftart kennzeichnet Beispiele,
Benutzereingaben, Programmausgaben und
Fehlermeldungen.
while() { Eine Spalte oder eine Zeile aus drei Punkten
. kennzeichnet, daß ein Teil eines Beispiels
.} absichtlich weggelassen wurde.

4
EDIABAS — STD-INTERFACE-ANBINDUNG

[1] Verweis auf ein Dokument aus dem


Literaturverzeichnis.

2.3. Besonderheiten, Begriffe, Akronyme

Eine Erklärung der in dieser und allen anderen EDIABAS-Dokumentationen


verwendeten Abkürzungen finden Sie in der Dokumentation "EDIABAS
Benuterhandbuch" im Kapitel "GLOSSAR".

5
EDIABAS — STD-INTERFACE-ANBINDUNG

3. Allgemeines

Im Rahmen des EDIABAS können verschiedene Diagnose-Interfaces für die


Steuergerätekommunikation verwendet werden. Die Anbindung eines Diagnose-
Interfaces an das EDIABAS erfolgt über den zum Interface gehörenden Interface-
Treiber und dem zum EDIABAS gehörenden Interface-Handler IFH. Der IFH setzt
Interface-unabhängige Funktionsaufrufe in Interface-spezifische Funktionsaufrufe
um und gibt diese über den Interface-Treiber an das Interface weiter. Die Funktionen
des IFH werden im EDIABAS auf BEST2-Funktionen abgebildet. Somit kann jede
Funktion des IFH über eine Steuergerätebeschreibungsdatei (SGBD) angesprochen
werden. Auf diese Art wird ein Anwenderprogramm, das über den IFH auf Interface-
Funktionen zugreift, Interface-unabhängig.

Der IFH besteht aus den zwei Komponenten


· IFH-Master
· IFH-Slave (IFH-DLL)

IFH-Master

Der IFH-Master bildet die Schnittstelle des IFH zum BEST-Interpreter (BIP). Der
Programm-Code des IFH-Master ist statisch an das EDIABAS gebunden. Im IFH-
Master werden alle Interface-Funktionalitäten auf IFH-Funktionen abgebildet.

IFH-Slave

Der IFH-Slave übernimmt die Anbindung an den Interface-Treiber und damit die
Umsetzung auf die spezifische Interface-Funktionalität. Dieser Teil ist Interface-
abhängig. Für jedes Diagnose-Interface existiert ein eigener IFH-Slave (für ein STD-
Interface ist das die XSTD32.DLL). Die Schnittstelle zwischen Master und Slave ist
immer gleich. Auf diese Weise wird durch das Austauschen des IFH-Slave die
Anbindung des EDIABAS an ein anderes Interface ermöglicht. Der Austausch erfolgt
über das dynamische Laden der IFH-DLL.

6
EDIABAS — STD-INTERFACE-ANBINDUNG

EDIABAS (EBAS32.DLL)

BEST-Interpreter
IFH-Schnittstelle

IFH-Master

IFH-DLL-Schnittstelle

IFH-Slave (IFH-DLL)
(XSTD32.DLL) Interface-Treiber-Schnittstelle
(STD-Schnittstelle)

Interface-Treiber
(STD-Interface-Treiber)

Schnittstellen

· IFH-Schnittstelle: Schnittstelle zwischen dem BEST-Interpreter und dem IFH-


Master. Beschreibung siehe [7]

· IFH-DLL-Schnittstelle: Schnittstelle zwischen dem IFH-Master und dem IFH-


Slave. Beschreibung siehe [7].

· Interface-Treiber-Schnittstelle: Interface-spezische Schnittstelle. Die


Beschreibung der STD-Schnittstelle ist Umfang dieses Dokuments.

Der Standard-Interfacehandler für EDIABAS dient der Anbindung von Interfaces an


das Basissystem über eine einfach gestaltete Schnittstelle. Die STD-Schnittstelle
ermöglicht somit Drittherstellern die Anbindung von eigenen Interfaces an EDIABAS.

7
EDIABAS — STD-INTERFACE-ANBINDUNG

4. Beschreibung der STD-Schnittstelle

Zur Beschreibung der STD-Schnittstelle gehören:

· Aufstellung der ADS Kommandos

· Beschreibung der Datenpuffer von READDATA() und WRITEDATA()

· Zusammenfassung der Zustandsübergänge

· Definitionen für Zustände und Fehler

8
EDIABAS — STD-INTERFACE-ANBINDUNG

4.1. Aufstellung der ADS Kommandos

/* ******************************************************************** */
/* ADS - Commands ***************************************************** */
/* ******************************************************************** */
/* Kommandos, die im ersten Byte des Datenpuffers von WRITEDATA( ) */
/* ( (*writedata)[0] ) Verwendung finden. */
/* Neue Kommandos zu Trennung von Send und Receive sind Fett markiert */
/* ******************************************************************** */
#define XRESET 0x01 /* Reset */
#define XWARMSTART 0x02 /* Warmstart */
#define XPOWERSPLY 0x03 /* Spannungsversorgung */
#define XIGNITION 0x04 /* Zündung */
#define XSETPAR 0x05 /* Setzen von Kommunikationsparametern */
#define XSENDTELEGRAM 0x06 /* Senden und Empfangen eines Telegramms*/
#define XREQKEYB 0x07 /* Identifikation */
#define XSETPORT 0x08 /* Ausgang setzen */
#define XGETPORT 0x09 /* Eingang abfragen */
#define XLOOPTEST 0x0A /* Leitungstest */
#define XVERSION 0x0B /* Versionsabfrage */
#define XSENDFREQ 0x0C /* Zyklisch Senden */
#define XREQUFREQ 0x0D /* Zyklische Abfrage */
#define XSTOPFREQ 0x0E /* Anhalten der Zyklischen Verarbeitung */
#define XSETPRGVOLTAGE 0x10 /* Programmierspannung setzen */
#define XSWITCHSIRELAIS 0x11 /* Service Intervall Relais zurücksetzen*/
#define XINTERFACETYPE 0x12 /* Abfrage Interfacetyp */
#define XCLAMPSTATES 0x13 /* Abfrage Klemmenstatus */
#define XSENDTELPREF 0x14 /* Festlegen der Antwortlänge */
#define XSETCONFIG 0x15 /* Konfiguration schreiben */
#define XGETCONFIG 0x16 /* Konfiguration lesen */
#define XSEND_REQUEST 0x17 /* Senden ohne Warten auf Antwort */
#define XRECV_RESPONSE 0x18 /* Auslesen einer empfangenen Antwort */

Hinweis für XSEND_REQUEST und XRECV_RESPONSE:

Zusammen mit XSEND_REQUEST werden die zu versendenden Daten


übergeben. Das nachfolgende READDATA() gibt den Status für die
Sendeoperation zurück. Die Auswertung von Steuergeräteadresskollision,
fehlendes Ubat, Speicherüberlauf etc. ist hier möglich. Der Interface-Status für
diesen Kanal ist im 1. Byte des Empfangspuffers von READDATA() enthalten.
Später können hier bei Bedarf noch Zusatzinformationen zum Status im
Nutzdatenanteil untergebracht werden. Zum Auslesen empfangener Antworten
dient das ADS Kommando XRECV_RESPONSE, das mit READDATA() dann die
eigentliche Antwort oder einen späten Fehler wie Timeout im Statusbyte
zurückmeldet.

9
EDIABAS — STD-INTERFACE-ANBINDUNG

4.2. Beschreibung der Datenpuffer

4.2.1. Datenpuffer für WRITEDATA()


Jeder Aufruf von WRITEDATA() enthält einen Datenpuffer mit mindestens 3 Byte.
Diese ersten 3 Byte werden im folgenden als Header bezeichnet. Alle weiteren
Daten werden im folgenden als Nutzdaten bezeichnet.
Genereller Aufbau des Datenpuffers:

Byte 0 1 2 3 .. Max. 64K


brutto
Funktion ADS Kommando Länge des gesamten Datenpuffers Nutzdaten
Wertigkeit Low Byte HighByte
Beispielwert 0x15 0x23 0x01 3 .. 291
(XSETCONFIG) Name\0...Wert\0

Die folgenden ADS Kommandos übergeben lediglich einen Header mit


Längeninformation 3, es werden keine Nutzdaten verwendet:
XRESET
XWARMSTART
XPOWERSPLY
XIGNITION
XREQKEYB
XLOOPTEST
XVERSION
XREQUFREQ
XSTOPFREQ
XINTERFACETYPE

10
EDIABAS — STD-INTERFACE-ANBINDUNG

Die Nutzdaten der folgenden ADS Kommandos entsprechen denen der schon implementierten
ADS-Schnittstelle.

XSETPAR /* Setzen von Kommunikationsparametern */


XSENDTELEGRAM /* Senden und Empfangen eines Telegramms*/
XSETPORT /* Ausgang setzen */
XGETPORT /* Eingang abfragen */
XSENDFREQ /* Zyklisch Senden */
XSETPRGVOLTAGE /* Programmierspannung setzen */
XSWITCHSIRELAIS /* Service Intervall Relais zurücksetzen*/
XCLAMPSTATES /* Abfrage Klemmenstatus */
XSENDTELPREF /* Festlegung der Antwortlänge */
XSETCONFIG /* Konfiguration schreiben */
XGETCONFIG /* Konfiguration lesen */

XSEND_REQUEST /* Senden ohne Warten auf Antwort */

Die Nutzdaten des ADS Kommandos XSEND_REQUEST entsprechen denen


von XSEND_REQUEST. Der Unterschied von XSEND_REQUEST zu
XSENDTELEGRAM liegt im Ergebnis der Verarbeitung, also im Inhalt des
Datenpuffers aus dem abschließenden READDATA(). Siehe Beschreibung
unter “Datenpuffer für READDATA()".

XRECV_RESPONSE /* Auslesen einer empfangenen Antwort */

Das ADS Kommando XRECV_RESPONSE übergibt keine zusätzlichen


Nutzdaten. Es dient zur Prüfung des Antwortstatus des vorangegangenen
Send-Kommandos XSEND_REQUEST. Zusammen mit XSEND_REQUEST wird die
Funktionalität von XSENDTELEGRAM in getrennten Aufrufen abgebildet.

11
EDIABAS — STD-INTERFACE-ANBINDUNG

4.2.2. Datenpuffer für READDATA()


Jeder Aufruf von READDATA() enthält einen Datenpuffer mit mindestens 3 Byte.
Diese ersten 3 Byte werden im folgenden als Header bezeichnet. Alle weiteren
Daten werden im folgenden als Nutzdaten bezeichnet. Unterschied zum Aufbau des
Datenpuffers von WRITEDATA( ) ist das erste Byte, das anstelle des ADS
Kommandos den Kommunikationsstatus des Interface Treibers enthält. Eine Liste
des Kommunikationsstatus findet sich unter „MFACE - Communication -
Status“.

Genereller Aufbau des Datenpuffers:

Byte 0 1 2 3 .. Max. 64K


brutto
Funktion Comm Status Länge des gesamten Datenpuffers Nutzdaten
Wertigkeit Low Byte HighByte
Beispielwert 0x0C 0x04 0x00 0x1A
(MFACEECULOCKED) SG-Adresse

Die Nutzdaten der folgenden ADS Kommandos entsprechen im Erfolgsfall denen der
schon implementierten STD-Schnittstelle.
XRESET
XWARMSTART
XPOWERSPLY
XIGNITION
XSETPAR
XSENDTELEGRAM
XREQKEYB
XSETPORT
XGETPORT
XLOOPTEST
XVERSION
XSENDFREQ
XREQUFREQ
XSTOPFREQ
XSETPRGVOLTAGE
XSWITCHSIRELAIS
XINTERFACETYPE
XCLAMPSTATES
XSENDTELPREF
XSETCONFIG
XGETCONFIG

12
EDIABAS — STD-INTERFACE-ANBINDUNG

XSEND_REQUEST /* Senden ohne Warten auf Antwort */

Die Antwort auf das ADS Kommando XSEND_REQUEST enthält die aus dem zu
sendenden Telegramm ermittelte Steuergeräteadresse, der der aktuelle IFH-
Kanal zugeordnet ist.
Byte 0 1 2 3
Funktion Comm Status Länge des gesamten Datenpuffers SG-Adresse
Wertigkeit Low Byte HighByte
Beispielwert 0x00 0x04 0x00 0x1A
(MFACE_NOERROR)

Im Fehlerfall ist der folgende Kommunikationsstatus zu den bisher schon in der


STD-Schnittstelle verwendeten hinzugekommen:
MFACEBUFOVRFLOW /* Übergebener Datenpuffer zu groß */

Diese Störung tritt auf, wenn der zum Senden übergebene Datenpuffer die
Verarbeitungskapazität der STD+ Schnittstelle übersteigt. Als Nutzdaten ist,
wie im folgenden Beispiel gezeigt, die Rückgabe der maximalen verarbeitbaren
Puffergröße denkbar.
Byte 0 1 2 3..6
Funktion Comm Status Länge des gesamten Datenpuffers Maximale
Puffergröße
Wertigkeit Low Byte HighByte ULONG
Beispielwert 0x0C 0x04 0x00 0xFFFF
(MFACEBUFOVRFLOW) (64 Kbyte)

XRECV_RESPONSE /* Auslesen einer empfangenen Antwort */

Die Antwort auf das ADS Kommando XRECV_RESPONSE enthält die gleichen
Nutzdaten, die die Verwendung von XSENDTELEGRAM erzeugt. Es ist hier die
Response des Steuergeräts auf den übermittelten Request enthalten.
Die Behandlung von Fehlerzuständen in der Kommunikation richtet sich nach
dem schon in der STD-Schnittstelle implementierten Verhalten.
Mögliche Rückgabewerte der STD+Funktionen:

/* Fehlerwerte der STD+ Funktionen */


#define IRNOERR 0 /* kein Fehler */

13
EDIABAS — STD-INTERFACE-ANBINDUNG

#define IRNOR 1 /* Keine Empfaenger erreichbar */


#define IRTIMS 2 /* Unterbrechung waehrend Senden */
#define IRTIMR 3 /* Unterbrechung waehrend Empfang */
#define IRPROT 4 /* Daten passen nicht in Protokollrahmen */
#define IRINIT 5 /* Fehler bei Initialisierung/ nicht Init. */
#define IREXIT 6 /* Fehler beim Schliessen */
#define IRNODATA 7 /* Keine Daten verfuegbar */
#define IRUNCMD 8 /* Unbekanntes Kommando */
#define IRWRCMD 9 /* Unerlaubtes Kommando */

4.3. Zusammenfassung der Zustandsübergänge

Das folgende Diagramm stellt die Zustandsübergänge für die Verwendung eines
IFH-Kanals dar. Die Verwendung von mehreren IFH-Kanälen ergibt für jeden IFH-
Kanal eine eigene Zustandsmaschine.

INITIALIZEEXT( ) EXITEXT( )

/*

OPENEXT( ) CLOSEEXT( )

IFH-Kanal

READDATAEXT( )

IRWRITEREADY IRREADREADY

W
WR
W RIIITTTE
R ED
E DA
D ATTTA
A A((( )))
A

WRITEDATAEXT( ) GETSTATUSEXT( )

IRBUSY

14
EDIABAS — STD-INTERFACE-ANBINDUNG

4.4. Definitionnen für Zustände und Fehler

**************** Zustaende der STD-Schnittstelle ****************** */

#define IRREADYWRITE 0 /* Schreibebereit */


#define IRREADYREAD 1 /* Lesebereit */
#define IRBUSY 2 /* Busy */
#define IRERROR 3 /* Fehler */
#define IROK 4 /* Ruhezustand */

/* ******************************************************************** */
/* MFACE - Communication - Status ************************************* */
/* ******************************************************************** */
/* Statusmeldung aus dem ersten Byte des Datenpuffers von READDATA( ) */
/* ******************************************************************** */
#define MFACE_NOERROR 0x00
#define MFACEOK 0x01
#define MFACETIMEOUT 0x02
#define MFACECOMMERR 0x03 /* Fehler in der Übertragung */
#define MFACEREJECT 0x04 /* Telegramm zurückgewiesen */
#define MFACEUNKNOWN 0x05
#define MFACENOLOOP 0x06 /* Leitungsprüfung nicht möglich/erfolgreich*/
#define MFACEECOMPORT 0x07 /* Fehler im COM Port */
#define MFACEPORTNAV 0x08
#define MFACECHECKSUM 0x09 /* Checksumme fehlerhaft */
#define MFACEK2BLOCK 0x0A /* Fehler im Kommunikationsprotokoll */
#define ERR_TST_PRESENT 0x0B
#define MFACEBUFOVRFLOW 0x0C /* Übergebener Datenpuffer zu groß */

/*
Zusätzliche Fehler, die nicht separat im gesamten Laufzeitsystem behandelt
werden sollen, können frei definiert in einem eigenen Bereich angelegt
werden. Diese werden dann lediglich als Fehler markiert und direkt über das
Laufzeitsystem zurückgegeben.
*/
/*
if ((mfstatus > MIN_SPECIAL_ERROR) &&
(mfstatus <= MAX_SPECIAL_ERROR))
{
interfCntrl = MSPECIALERR;
mfSpecialError = mfstatus - MIN_SPECIAL_ERROR;
}
*/

15
EDIABAS — STD-INTERFACE-ANBINDUNG

A. LITERATURVERZEICHNIS

[1] EDIABAS: BEST/2 Funktionsreferenz

[2] EDIABAS: Steuergeräte-Simulator

[3] EDIABAS: BEST/1 - Sprache und Interpreter

[4] EDIABAS: Benutzerhandbuch

[5] EDIABAS: BEST/2 - Sprachbeschreibung

[6] EDIABAS: API Benutzerhandbuch

[7] IFH-Schnittstellenbeschreibung

16

Das könnte Ihnen auch gefallen