Beruflich Dokumente
Kultur Dokumente
E D IA B A S
Elektronik Diagnose Basissystem
STD-INTERFACE-ANBINDUNG
VERSION 7
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
A. LITERATURVERZEICHNIS .................................................................... 16
2
EDIABAS — STD-INTERFACE-ANBINDUNG
1. Änderungshistorie
Version 7 Ersterstellung
3
EDIABAS — STD-INTERFACE-ANBINDUNG
2. Einführung
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
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
5
EDIABAS — STD-INTERFACE-ANBINDUNG
3. Allgemeines
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
7
EDIABAS — STD-INTERFACE-ANBINDUNG
8
EDIABAS — STD-INTERFACE-ANBINDUNG
/* ******************************************************************** */
/* 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 */
9
EDIABAS — STD-INTERFACE-ANBINDUNG
10
EDIABAS — STD-INTERFACE-ANBINDUNG
Die Nutzdaten der folgenden ADS Kommandos entsprechen denen der schon implementierten
ADS-Schnittstelle.
11
EDIABAS — STD-INTERFACE-ANBINDUNG
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
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)
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)
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:
13
EDIABAS — STD-INTERFACE-ANBINDUNG
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
/* ******************************************************************** */
/* 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
[7] IFH-Schnittstellenbeschreibung
16