FMI-Simulationskopplung

Die Kopplung von Simulationsprogrammen zur Laufzeit ist eine effektive Methode, um spezialisierte Simulationsprogramme bzw. Teilmodelle durch externe Funktionalität zu erweitern. Es wäre auch aussichtslos, jegliche Simulationsfunktionalität und alle erdenklichen Modelle in ein gigantisches Simulationsmodell zu integrieren (und so eine eierlegenden Wollmilchsau zu erschaffen :-)). Das hat in der Vergangenheit noch nie gut geklappt. Deswegen gibt es zahlreiche Schnittstellen und Middleware-Programme zur Simulationskopplung.

Viele dieser Schnittstellen sind spezifisch für den Datenaustausch zwischen 2 Tools, oder proprietär und damit einseitig beliebig änderbar (siehe z.B. s-Function Schnittstelle von MATLAB etc.). Aus diesem Grund wurde zwischen 2008 und 2011 in dem mehrjährigen Forschungs- und Entwicklungsprojekt MODELISAR ein neuer, unabhängiger Schnittstellenstandard geschaffen, das Functional Mock-Up Interface (FMI). Seither wurde dieser Standard systematisch weiterentwickelt und um wichtige Funktionalität erweitert.

FMI-Cross-Check Tests

Der FMI-Standard definiert eine Vielzahl von Funktionsschnittstellen, welche vom Simulations-Master angesprochen werden können. Außerdem ist der Inhalt und die Struktur der Modellbeschreibungsdatei modelDescription.xml klar definiert. Die definierte Laufzeitschnittstelle und Modellbeschreibungsschnittstelle muss gleichermaßen korrekt vom Simulationsmodul (der FMU) und dem Simulations-Master angesprochen werden. Beide werden unterschiedlich auf korrekte Funktionalität geprüft.

Da es Aufgrund der sehr vielfältigen Funktionalitäten eines FMI-Berechnungsmodells schwierig ist, klassische Modell-Modell-Vergleiche durchzuführen, wird ein umfangreiches, vergleichendes Testen in einem sogenannten Cross-Check durchgeführt. Dabei werden verschiedene FMUs (aus verschiedenen Simulationsprogrammen exportiert) mit verschiedenen FMI-Masterprogrammen kombiniert. Die so erhaltenen Berechnungsergebnisse enthalten potentiell Fehler aus der FMU und dem Masterprogramm. Stimmen nun viele Ergebnisse von vielen verschiedenen FMU-Master-Kombinationen ausreichend gut überein, so kann man bei den beteiligten FMU-Exportier- und Importier-Tools von einer korrekten Funktionalität ausgehen – zumindest was den getesteten Funktionalitätsumfang betrifft.

Die Ergebnisse diese Vergleichsprüfungen werden online in einem cross-check-Repository gesammelt.

Individuelle FMU Tests

Um zu prüfen, ob ein FMI-Simulationsmodell (FMU) den genormten Anforderungen entspricht, gibt es ein definiertes Prüfverfahren:

  • Einzeltest einer FMU mit einem Prüfskript, welches formale Kriterien prüft und die Modellbeschreibung testet
  • Einzeltest einer FMU mit kontrollierte Ausführung einer Testsimulation unter Verwendung vorgegebener externer Eingangsgrößen

Folgende Prüfskripte/Testprogramme für individuelle FMUs sind verfügbar und führen diese Tests aus:

  • FMU Compliance Checker – Ein Programm (verfügbar für Windows, Linux, MacOS), mit dem eine FMU hinsichtlich korrekt formulierte Schnittstellenbeschreibung und korrekter Funktionsimplementierung geprüft wird.
  • Online FMU Checker – Allows uploading an FMU and analysing it for standard compliance.

Bewertung

Bei den individuellen FMU-Tests werden nur die einfachsten Ausführungsmodi getestet. Bei Co-Simulations-FMUs wird bspw. nur der einfache FMI 1.0 Vorwärts-Schritt-Modus mit konstanten Schrittlängen getestet. Wichtige optionale Funktionen, bspw. die Fähigkeit zum Abspeichern und Zurücksetzen des Laufzeitzustands (eine FMI 2.x Funktionalität), oder die korrekte Anwendung von Ein- und Ausgangsvariableninterpolation (ebenfalls FMI 2.x) werden nicht getestet. Diese sind jedoch bei Modellen mit praxisrelevanter Komplexität mitunter kritisch notwendig, um eine stabile und effiziente Simulation durchführen zu können.

Es bleibt eine Aufgabe für die nächsten Jahre, die existierenden Test-Programme/Skripte dahingehend zu erweitern.

Simulationsmaster-Tests

Zusätzlich zu diesen individuellen Tests wird geprüft, ob diese FMU mit anderen Simulationsmaster-Programmen korrekt funktioniert (daher der Begriff cross-check). Dabei muss ein einfaches Simulationsszenario simuliert werden, wobei die FMU vordefinierte Zeitreihen als Eingangsgrößen übergeben bekommt. Die von der FMU generierten Ausgaben werden mit Referenzergebnissen verglichen.

Ein Beispiel für eine solche Szenario-Validierung ist in folgender Publikation beschrieben:

Nicolai A., Co-Simulations-Masteralgorithmen – Analyse und Details der Implementierung am Beispiel des Masterprogramms MASTERSIM, Qucosa, 2018, https://nbn-resolving.org/urn:nbn:de:bsz:14-qucosa2-319735

Es gibt jedoch noch keine systematischen Prüfkriterien und Testreihen für Simulationsmasterprogramme. Aktuell ist die verfügbare Funktionalität in FMI-Masterprogrammen noch sehr vielfältig und sehr unterschiedlich gut/vollständig implementiert. Dies bleibt ein offenes Feld für die nächsten Jahre, um hier die Genauigkeit von Simulationsergebnissen abzusichern.