Einfache Integration von FIBEX in eigene AnwendungenFIBEX (Field Bus Exchange Format) ist ein XML-basiertes Format zur Beschreibung komplexer, Message-basierter Kommunikationssysteme, wie z.B. Fahrzeug-Bordnetzwerke. Mit Hilfe der FIBEX Import-DLL können FIBEX-XML Dateien auf einfache Weise in eigene Software-Anwendungen integriert werden. FIBEX-FormatDer FIBEX-Standard ist ein multiprotokoll-fähiges Format zum Austausch von Daten in nachrichtenorientierten Kommunikationssystemen z.B. in Fahrzeugnetzwerken. Das FIBEX XML-Format kann für den Export von Bordnetzdatenbanken bzw. für den Import in die unterschiedlichsten Tools bei der Entwicklung von Fahrzeugnetzwerken verwendet werden. Es unterstützt derzeit die Netzwerkprotokolle FlexRay™, CAN, MOST und LIN. Von der Auslegung kompletter Cluster bis hin zur Definition auf Bit-Ebene können alle relevanten Informationen für die Beschreibung von Fahrzeugnetzwerken mit dem FIBEX-Format definiert werden. Die Netzwerke werden dabei, unter anderem, in die Teilbereiche (Bild 1) Cluster, ECU, Channel, Gateway, Controller, Frames, Signale und Coding unterteilt. |
![]() |
| Bild 1 . FIBEX V 2.0 Modell |
Viele Wege führen nach ROMDer FIBEX-Standard definiert die einzelnen Netzwerke und Netzwerk-Elemente sowie die zwischen Ihnen bestehenden möglichen Referenzen. Ein Cluster im Sinne von FIBEX definiert dabei ein Netzwerk mit spezifischen Netzwerkparametern, eine ECU stellt ein elektronisches Steuergerät mit definierter Funktionalität (Functions) sowie Sende- und Empfangsbotschaften (Frames) dar, die ihrerseits die Signale enthalten, die zwischen den einzelnen Steuergeräten ausgetauscht werden sollen. Wie aus Bild 1 unschwer zu erkennen ist, gibt es dabei verschiedene Wege, um zum gleichen Ziel zu kommen. So können Signale z.B. entweder über die Input/Ouput-Ports oder über die Signal-Instanz bzw. Signalgruppe mit dem darüber liegendem Frame referenziert werden. Für den Anwender ist es dabei nicht immer leicht den Überblick zu behalten geschweige denn den richtigen Weg zu finden, auf dem er die für ihn relevanten Informationen erhalten kann. Funktionen der FIBEX Import-DLLDie FIBEX Import-DLL ist eine 32-Bit Dynamic Link Library (DLL) für Windows®, die die Integration von FIBEX XML Dateien in eigene Programme wesentlich erleichtert. Mit Hilfe der FIBEX Import-DLL können FIBEX XML Dateien gelesen und sämtliche in FIBEX definierten Bereiche (Cluster, ECUs, Frames etc.) für FlexRay™, CAN, MOST und LIN extrahiert werden. Für jeden Bereich ist dabei eine eigene Funktion mit definierter Parameter-Struktur vorhanden. In FIBEX definierte FlexRay Cluster-Parameter können mit Hilfe der Funktion fxGetCHI extrahiert und in eine Registerdefinition z.B. für einen FlexRay Communication Controller (Bosch ERay®, MFR4300) umgesetzt werden. Sind nicht die einzelnen Teilbereiche von Interesse, sondern eine komplett hierarchisch aufgebaute Baumstruktur, bestehend aus Steuergeräten, Sende-, Empfangsbotschaften, Signalen und Signalelementen (Codings), steht hierfür die Funktion fxGetTree zur Verfügung, Mit Hilfe dieser Funktion lässt sich eine vereinfachte FIBEX-Struktur aufbauen, die für die allermeisten Fälle ausreicht. Mit der Funktion fxValidate kann eine FIBEX-Datei "Offline" validiert werden. Die dafür nötigen Schema-Dateien müssen dabei in einem definierten lokalen Arbeitsverzeichnis liegen. Sprachabhänge Einträge, z.B. alle mit "de" (deutsch) gekennzeichneten Informationen eines bestimmten Elementes, lassen sich mit der Funktion fxGetDescription einfach extrahieren. |
fxInit(); ... fxGetSignalGroups(); |
| Bild 2 . Funktionsaufrufe der FIBEX Import-DLL |
Einsatz der FIBEX Import-DLLIm folgenden wird gezeigt, wie mit 4 Funktionsaufrufen eine komplette FIBEX-Datei eingelesen und interpretiert werden kann: Schritt 1: FIBEX Import-Dll initialisieren. |
// Init Dll with License-Key lRet = fxInit("xxyyzz"); if (lRet != 0) { MessageBox(L"Invalid License"); } |
| Schritt 2: FIBEX-Datei einlesen |
// Load Fibex-File lRet = fxLoadFibexFile(cFile, READ_ALL); if (lRet != 0) { szTmp.Format(L"Error: %d",lRet); MessageBox(szTmp); } |
| Schritt 3: FIBEX-Datei in Baumstruktur einlesen, die visuelle Darstellung bleibt dem Anwender vorbehalten. |
// Get TreeRoot fyTreeRoot *pTreeRoot = NULL; lRet = fxGetTree(&pTreeRoot); if (lRet != 0) { szTmp.Format(L"Error: %d",lRet); MessageBox(szTmp); } //ECUs dwNumEcus = pTreeRoot->dwNumEcus; pEcu = pTreeRoot->pFirstEcu; while (dwNumEcus--) { //ECU Name szECUName = (LPWSTR)pEcu->szShortName;
//Channels dwNumChannels = pEcu->dwNumChannels; pChannel = pEcu->pFirstChannel; while (dwNumChannels--) { // Channel Name szChannelName = (LPWSTR)pChannel->szShortName;
// Tx Frames dwNumTxFrames = pChannel->dwNumTxFrames; pTxFrame = pChannel->pFirstTxFrame; while (dwNumTxFrames--) { // Frame Name szFrameName = (LPWSTR)pTxFrame->szShortName;
// Tx Signals dwNumSignals = pTxFrame->dwNumSignals; pSignal = pTxFrame->pFirstSignal; while (dwNumSignals--) { // Signal Parameters szSignalName = (LPWSTR)pSignal->szShortName; szSignalUnit = (LPWSTR)pSignal->szUnit; dwStartBit = pSignal->dwStartBit; dwBitSize = pSignal->dwBitSize; dOffset = pSignal->dOffset; dFactor = pSignal->dFactor; // ..... // ..... // .....
//Next Signal pSignal++; } //Next Tx Frame pTxFrame++; } //Next Channel pChannel++; } //Next ECU pEcu++; } |
| Schritt 4: Speicher freigeben |
// Free memory lRet = fxFreeMemory(); if (lRet != 0) { szTmp.Format(L"Error: %d",lRet); MessageBox(szTmp); } |
FIBEX SpezialiätenDie FIBEX Import-DLL berücksichtigt auch viele der in FIBEX enthaltenen spezifischen Details. So werden beispielsweise nicht nur Frames sondern auch Sub-Frames mit dazugehörigem Multiplexer eingelesen und berücksichtigt. Auch Mehrfach-Übertragungen von FlexRay Frames mit identischem Inhalt, definiert in den FIBEX "absolute Timings", sowie herstellerspezifische FIBEX-Implementationen berücksichtigt die FIBEX Import-DLL automatisch. So werden z.B. auch nichtreferenzierte Signalgruppen anhand eines intelligenten Suchalgorithmus den richtigen Signalen zugewiesen. ZusammenfassungDer vorliegende kurze Artikel beschreibt, wie mit Hilfe der FIBEX Import-DLL auch ohne detaillierte XML-Kenntnisse und spezifische FIBEX Expertise komplexe FIBEX-Dateien gelesen und deren Inhalt dargestellt bzw. interpretiert werden kann. Mitgelieferte Beispiel in C, C++, C#, VB und VB.Net erleichtern die Integration in eigene Programme.
|





