Kompilierung von Linux-FMUs mit Dymola

FMUs eigenen sich hervorragend, um großangelegte Simulationsstudien auf Rechenclustern durchzuführen. Da Rechencluster typischerweise mit Linux arbeiten, müssen auch die FMUs für Linux kompiliert sein. Wir zeigen, wie man mit Hilfe von Dymola cross-compilierte Linux-FMUs erzeugen kann.

Stefan Rauscher

Stefan Rauscher

|

December 8, 2022

FMU für Linux

©zannagap / 123RF.com

Was bedeuten FMI und FMU?

Das Functional Mock-Up Interface (FMI) ist eine standardisierte Schnittstelle, die den Austausch von Modellen zwischen verschiedenen Simulationswerkzeugen ermöglicht. Functional Mock-Up Units (FMUs) sind kompilierte Modelle, die dem FMI-Standard entsprechen. Ein in Dymola erzeugtes Modell kann beispielsweise als FMU exportiert werden und in Simulink zum Test von Reglern genutzt werden.

Linux-FMUs mit Windows erzeugen?

FMUs liegen typischerweise in Form von kompiliertem („übersetztem“) Code vor¹. FMUs sind damit, ähnlich zu den bekannten Executables (.exe), ausführbare Programme, die an ein bestimmtes Betriebssystem gebunden sind. Eine in Windows kompilierte FMU kann nur in Windows und nicht in Linux ausgeführt werden. Linux würde die Windows-FMU nicht „verstehen“. Um mit Dymola eine Linux-FMU zu erzeugen, musste die FMU bisher in Linux erzeugt werden. Das heißt, dass eine Linux-Distribution und eine Linux-Version von Dymola erforderlich war.

Seit Version 2022 unterstützt Dymola die sogenannte Cross-Compilation. Die Cross-Compilation erlaubt es in Windows FMUs zu kompilieren, die sowohl in Windows als auch in Linux ausgeführt werden können. Das erhöht die Benutzerfreundlichkeit erheblich.

Installationsanleitung für die Cross-Compilation in Dymola

Auch wenn Dymola die Cross-Compilation seit Version 2022 nativ unterstützt, müssen vor der ersten Benutzung zusätzliche Programme installiert werden:

  • Zunächst muss das Windows-Subsystem for Linux (WSL) installiert werden. Dazu wird die Eingabeaufforderung als Administrator ausgeführt und der folgende Befehl ausgeführt:
    wsl --install -d Ubuntu
    Der PC muss anschließend neu gestartet werden. Hier findest du weitere Information zur Installation von WSL.
  • Nach dem Neustart sollte sich WSL in Form einer Eingabeaufforderung automatisch öffnen. Sollte sich WSL nicht automatisch öffnen, muss es händisch gestartet werden. Beim erstmaligen Start von WSL wird der Benutzer dazu auffordern, ein Konto und ein Passwort anzulegen (Hinweis: Das Passwort wird nicht in der Kommandozeile dargestellt).
  • In WSL müssen mehrere Pakete installiert werden. Dazu werden die folgenden Befehle nacheinander ausgeführt:
    sudo apt update
    sudo apt upgrade
    sudo apt install gcc g++ zip dos2unix

    Das WSL-Fenster kann nach der erfolgreichen Ausführung der Befehle geschlossen werden.
  • Abschließend kann der Cross-Compiler getestet werden. Dazu wird Dymola gestartet und unter Simulation\Setup\Compiler Tab der Linux cross-compiler ausgewählt. Mit Verify Compiler wird der Funktionstest des Cross-Compilers ausgeführt:
  • Ein erfolgreicher Test wird von Dymola wie folgt bestätigt (Wichtig: Der Compiler muss anschließend wieder auf die ursprüngliche Einstellung zurückgesetzt werden!):

Wenn du anstelle der abgebildeten Nachricht eine Fehlmeldung bekommst, kann es sein, dass WSL keine Schreibrechte hat. Um WSL Schreibrechte zu gewähren, muss die wsl.conf-Datei bearbeitet werden:

  • Die Datei wsl.conf in WSL öffnen:
    sudo vim /etc/wsl.conf
  • Durch Eingabe des Buchstabens i wird der Bearbeitungsmodus aktiviert. Der folgende Text muss in die Datei geschrieben werden:
    [automount]
    options = "metadata"
  • Anschließend kann der Bearbeitungsmodus durch das Drücken von Esc beendet und die Datei mit Hilfe des Befehls
    :wq
    gespeichert und geschlossen werden. Danach muss der PC neu gestartet werden.

Für weitere Informationen sei auf die Bedienungsanleitung von Dymola verwiesen.

Kompilieren einer Linux-FMU

Um eine Linux-FMU zu erstellen, muss im Export FMU Fenster (Simulatation\Translate\FMU) die Option Cross compile for Linux ausgewählt werden:

Wenn man die FMU anschließend öffnet (FMUs sind als .zip-Dateien verpackt), sieht man im binaries-Verzeichnis drei Ordner:

Daran erkennt man, dass die FMU für 32-bit und 64-bit-Windows (win32 und win64) sowie 64-bit-Linux (linux64) kompiliert wurde. Die FMU kann damit in Windows sowie in 64-bit-Linux ausgeführt werden.

¹ Ausnahme: Sogenannte Source-Code-FMUs. Source-Code-FMUs werden nicht kompiliert, sondern liegen in Form von C-Code vor. Source-Code-FMUs sind damit nicht an ein Betriebssystem gebunden.

Stefan Rauscher

M.Sc.

Stefan Rauscher

Simulation & Optimization

TLK Energy

Stefan Rauscher hat an der RWTH Aachen Maschinenbau mit der Vertiefungsrichtung Energietechnik studiert. Er arbeitet seit 2018 bei der TLK Energy und hat sich seitdem intensiv mit der Simulation, Regelung und Optimierung von thermischen Systemen auseinandergesetzt. Er leitet außerdem regelmäßig Schulungen zur Simulation von thermischen Systemen mit der Modellbibliothek TIL.

Weitere Blogbeiträge: