subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link
subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link
subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link
subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link
subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link
subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link
subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link
subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link

Fachartikel

Einfache Integration von FIBEX in eigene Anwendungen

FIBEX (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-Format

Der 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 ROM

Der 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-DLL

Die 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();
fxLoadFibexFile();
fxGetProject();
fxGetClusters();

...

fxGetSignalGroups();
fxFreeMemory();
fxGetDllInfos();
fxGetErrorText();
fxValidate();
fxGetDescription();
fxGetCHI();
fxGetTree();

Bild 2 . Funktionsaufrufe der FIBEX Import-DLL

Einsatz der FIBEX Import-DLL

Im 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äten

Die 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.

Zusammenfassung

Der 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.

 


 

 

Impressum | Kontakt | ©2010 CRST GmbH