Modelica Association: FMI

Bisheriger/interner Bezeichner: FMI

Herstellerinformationen

Hersteller

Webseite

Produktname

Version

Modelica Association

https://fmi-standard.org/

Functional Mock-up Interface

1.0, 2.0, 3.0

Kategorien

MDL 🛈

APL 🛈

BAN 🛈

BMA 🛈

SVC 🛈

DGN 🛈

FIU 🛈

EES 🛈

FCT 🛈

DBG 🛈

IMG 🛈

AUDIO 🛈

ENVSIM 🛈

ENVCOM 🛈

✓

✓

✓

Plattform

Betriebssystem

Unterstützung

Windows

✓

Linux

✓

Ports

Besonderheiten

Das Functional Mock-up Interface (FMI-Standard) ist ein Standard für den Austausch und die Simulation von Functional Mock-up Units (FMUs). Mit ecu.test lassen sich FMUs testen und validieren.

FMU-Simulation mit ecu.test

Für die Simulation von FMUs nutzt ecu.test die Bibliothek FMPy. Unterstützt werden sowohl 64-Bit- als auch 32-Bit-FMUs. Für die Verwendung von 32-Bit-FMUs ist ein 64-Bit-Wrapper erforderlich, der über die FMPy-GUI hinzugefügt werden kann.

Schritte zur Integration von 32-Bit-FMUs:

  1. FMPy installieren und die FMPy-GUI starten.

  2. 32-Bit-FMU öffnen: File > Open

  3. 64-Bit-Wrapper hinzufügen: Tool > Add Remoting > Windows 32-bit on Windows 64-bit

Info

Für „ModelExchange“-FMUs wird standardmäßig der Solver „CVode“ von FMPy verwendet.

Konfiguration des Simulationsmodells

Als Modelldatei kann entweder eine FMU (*.fmu) oder eine PythonFMU-kompatible Python-Datei (*.py) verwendet werden. Bei Python-Dateien erzeugt ecu.test beim Konfigurationsstart automatisch eine temporäre PythonFMU.

Zugriff auf Signale und Parameter

Mit ecu.test lassen sich Signale und Parameter einer FMU lesen, schreiben und aufzeichnen. Die Stimulation skalarer Testgrößen ist ebenfalls möglich.

Info

Einschränkungen:

  • Testgrößen mit mehr als 2 Dimensionen werden nicht unterstützt.

  • „Clock“-Signale (ab FMI 3.0) werden im Modellzugriffsreiter nicht angezeigt. Sie werden ausschließlich intern für die Kommunikation gemäß des Layered Standard for Network Communication (FMI-LS-BUS) verwendet.

  • „structuralParameter“ (ab FMI 3.0) sind nicht schreibbar.

Im FMI-Standard wird zwischen kontinuierlichen und diskreten Signalen unterschieden:

Diskrete Signale

Wertänderungen erfolgen nur zu Event-Zeitpunkten des Lösers.

Kontinuierliche Signale

Werte werden über den gesamten Zeitbereich aktuell gehalten.

ecu.test verarbeitet Wertänderungen bei der Stimulation von Eingängen der FMU intern über eine Abtastfrequenz (Kommunikationsschrittweite). Bei diskreten Eingängen werden externe Events (Input-Events) getriggert, um Wertänderungen auch außerhalb von Löser-Events zu setzen.

Simulation mehrerer FMUs (Co-Simulation)

Für die gleichzeitige Simulation mehrerer FMUs ist eine sogenannte Container FMU erforderlich. Das Open-Source-Projekt FMPy bietet hierfür Unterstützung:

Die Container FMU kann wie eine normale FMU als Modelldatei verwendet werden.

FMU-Lebenszyklus

Ablauf beim Arbeiten mit FMUs:

  1. Konfiguration starten: FMU wird entpackt nach

    • Windows: %TEMP%/ecu.test_FMI/<Portname>

    • Linux: /tmp/ecu.test_FMI/<Portname>

    Alternativ kann das Zielverzeichnis über die Umgebungsvariable ECUTEST_FMI_TEMPDIR angepasst werden, sodass die FMU nach %ECUTEST_FMI_TEMPDIR%/<Portname> entpackt wird.

  2. Simulation starten: Laden der DLL (.so unter Linux) via fmi2Instantiate.

  3. Simulieren: Während des Testfalls wird die Modellzeit bei schrittweiser Ausführung (siehe Zeitverhalten) durch Testschritte mit Zeitbezug vorangetrieben (z.B. Wait, oder Lesen/Schreiben mit aktivierter Zeitoption).

  4. Simulation stoppen: Entladen der FMU via fmi2FreeInstance.

  5. Konfiguration stoppen: Für die Simulation temporär erzeugte Dateien werden bereinigt.

Vorsicht

Die FMU-DLL (.so unter Linux) wird in den aktuellen Tool Server- bzw. ecu.test-Prozess geladen. Innerhalb der FMU sollten keine Befehle ausgeführt werden, die den Prozess oder die Netzwerkkommunikation beeinflussen, da dies zu einem Kommunikationsabbruch führen kann.

Layered Standard for Network Communication (FMI-LS-BUS)

Der Layered Standard for Network Communication erweitert den FMI 3.0-Standard um die Möglichkeit, komplexe Kommunikationsnetzwerke (z. B. CAN, LIN, FlexRay, CAN FD, CAN XL, Ethernet) zu simulieren. FMI-LS-BUS definiert eine physikalische Signalabstraktion (High-Cut) sowie eine Netzwerkabstraktion (Low-Cut), um detaillierte oder vereinfachte Bussimulationen zu ermöglichen. Via FMI-LS-BUS können Netzwerksignale als Eingangs- und Ausgangsvariablen einer FMU definiert werden.

Info

ecu.test unterstützt aktuell ausschließlich die Netzwerkabstraktion (Low-Cut) für CAN.

Konfiguration:

  • Für jedes Terminal ist in der Testbenchkonfiguration ein separater Port BUSACCESS - CAN 🛈-Port anzulegen und der Bus-Terminal-Name zu konfigurieren. (Bus-Terminals sind in terminalsAndIcons.xml der FMU definiert.)

  • Die zugehörige Bus-Datenbank muss in der Testbenchkonfiguration oder im Tab Buszugriff der Testkonfiguration angegeben werden.

Nach dem Konfigurationsstart werden im Aktionsfenster die zur Verfügung stehenden Busgrößen angezeigt (Tab Buszugriff).

Info

Beim zyklischen Schreiben von Frames oder PDUs basiert die Berechnung des Sendezyklus auf der Echtzeit und nicht auf der Modellzeit. Aus diesem Grund sollte die Simulationsgeschwindigkeit der FMU (siehe Eigenschaften 🛈) auf 1x (Echtzeit) gesetzt werden. Andernfalls ist nicht sichergestellt, dass die Botschaften in Modellzeit dem im Testfall definierten Zyklus entsprechend von der FMU verarbeitet werden.

Layered Standard for XCP (FMI-LS-XCP)

Der Layered Standard for XCP erweitert den FMI 2.0 und 3.0 Standard um die Möglichkeit, die Beschreibung und Implementierung des XCP (Universal Measurement and Calibration Protocol) für FMUs zu definieren. Eine FMU, welche das XCP gemäß FMI-LS-XCP unterstützt, erlaubt den Zugriff auf internal Mess- und Kalibriergrößen.

ecu.test ermöglicht den Zugriff auf Mess- und Kalibriergrößen in FMUs, welche FMI-LS-XCP unterstützen.

Info

Hierfür sind die Tooladapter Modelica Association: FMI und tracetronic: Ethernet erforderlich, außerdem wird das Add-on ecu.test calibration benötigt.

Testbenchkonfiguration:

MODELACCESS-Port

Simulation automatisch starten/stoppen aktivieren

APPLICATION-Port

Bei Verbindungsaufbau Beim Start der Testausführung auswählen

Priorität

Der MODELACCESS-Port muss vor dem APPLICATION-Port gestartet werden und folglich eine kleinere Prio-Zahl aufweisen. Somit wird sichergestellt, dass die FMU zunächst geladen und die Simulation gestartet wird, bevor der APPLICATION-Port auf den dann bereits laufenden XCP-Service zugreifen kann.

Info

Die erforderlichen Werte für die IP-Adresse (Server) und Port (Server) können der modelDescription.xml bzw. der fmi-ls-manifest.xml innerhalb der FMU entnommen werden.

../../../_images/FMI_LS_XCP_TBC.png

Testkonfiguration:

A2L-Datei

Im Tab Steuergeräte muss die A2L-Datei ausgewählt werden, die zuvor in einem manuellen Schritt aus der FMU entpackt wurde.

A2L-Transportschicht

XCP_ON_TCP_IP auswählen

../../../_images/FMI_LS_XCP_TCF.png