Modelica vs Simulink

Bei der physikalischen Modellierung und Simulation von technischen Systemen kommt häufig die Frage auf: Modelica oder Simulink? Diese Frage wollen wir durch Betrachten der grundlegenden Unterschiede und anhand eines einfachen Beispiels beantworten.

Felix Brandl

Felix Brandl

|

March 27, 2023

Modelica vs Simulink

©TLK Energy

Geschichte von Simulink und Modelica

Simulink ist eine vom Unternehmen MathWorks entwickelte signalflussbasierte Modellierungs- und Simulationsumgebung innerhalb des Softwarepakets Matlab, welche Anfang der 1990er Jahre veröffentlicht wurde. Durch stetige Weiterentwicklung ist Simulink heutzutage der de-facto Industrie-Standard für die Modellierung und Simulation von Reglern und signalbasierten Systemen jeglicher Art.

Modelica ist eine Mitte der 1990er Jahre entwickelte gleichungsbasierte Modellierungssprache für physikalische Systeme. Sie wird seit 2000 von der Modelica-Association als Open-Access Standard weiterentwickelt und findet in verschiedenen Simulationsprogrammen Anwendung. Die bekanntesten kommerziellen Programme, die Modelica verwenden, sind Dymola, SimulationX, Wolfram SystemModeler, Modelon Impact und MapleSim. Es gibt mit OpenModelica auch eine recht ausgereifte Open-Source-Alternative.

Gemeinsamkeiten von Simulink und Modelica

Sowohl mit Simulink als auch Modelica lassen sich dynamische Systeme als differential-algebraische-Gleichungssysteme (DAE) modellieren und simulieren. Simulink wird dabei in Matlab ausgeführt und Modelica in einer geeigneten Entwicklungsumgebung, wie z.B. Dymola. Für beide Varianten steht eine grafische Oberfläche zur Verfügung, in der komplexe Systeme als Netzwerk einzelner, miteinander verbundener Komponenten modelliert werden können. Hierbei lassen sich die einzelnen Komponenten wiederverwenden und in Sub-Systemen oder Teil-Modellen strukturieren. Diese Komponenten-basierte Modellierung erhöht die Übersichtlichkeit und Anwenderfreundlichkeit beim Modellieren komplexer Systeme.

Der Unterschied zwischen Simulink und Modelica liegt in der Definition der einzelnen Komponenten und besonders in der Kommunikation zwischen ihnen. Simulink nutzt hierfür einen signalflussbasierten bzw. kausalen Ansatz, wohingegen Modelica einen gleichungsbasierten bzw. akausalen Ansatz verwendet.

Signalflussbasierte Modellierung – Simulink

In der signalflussbasierten Modellierung erfolgt, wie der Name vermuten lässt, die Verbindung der einzelnen Komponenten durch Signale. Diese Signale werden zwischen den Komponenten ausgetauscht, wobei jede feste Eingangs- (Inputs) und Ausgangssignale (Outputs) hat.  Innerhalb einer Komponente erfolgt die Berechnung der Outputs aus den bekannten Inputs durch explizite Zuweisungen und Operationen. Diese Art der Berechnung ähnelt allgemeinen Programmiersprachen wie Python oder C++. Die Richtung des Signalflusses ist somit innerhalb einer Komponente immer eindeutig vorgeben und kann nicht geändert werden.

Die Signalverbindungen zwischen den Komponenten definieren explizite Zuweisungen zwischen den Inputs und Outputs verschiedener Komponenten (Input2 ∶= Output1). Aufgrund dieser Tatsache sind bei der Verbindung von mehr als einem Input-Output-Paar einige Besonderheiten zu beachten. Es ist beispielsweise möglich, dass ein Output parallel mit mehreren Inputs verbunden ist, da alle Inputs in diesem Fall das gleiche Signal erhalten. Andersherum ist es nicht möglich, mehrere Outputs mit einem Input zu verbinden, da hier definiert werden muss, wie die Signale miteinander interagieren. Dies muss zwangsläufig durch eine zusätzliche Komponente erfolgen.

Durch die expliziten Zuweisungen besteht ein fester, kausaler Zusammenhang innerhalb und zwischen den Komponenten, weshalb dieser Ansatz auch als kausale Modellierung bezeichnet wird. Durch Verbinden der Inputs und Outputs verschiedener Komponenten entsteht aus den einzelnen expliziten Operationen das gewünschte Gesamtmodell als Gleichungssystem. Der Solver kann das Gleichungssystem durch sukzessives Anwenden der einzelnen Operationen numerisch auswerten und damit Lösungen des modellierten Differentialgleichungssystems berechnen.

Gleichungsbasierte Modellierung – Modelica

Die gleichungsbasierte Modellierung definiert Gleichungen anstelle von expliziten Operationen. Das Besondere daran ist, dass Gleichungen keine feste Berechnungsreihenfolge vorgeben.

Das ist der entscheidende Unterschied zur signalflussbasierten Modellierung (Simulink), da dort die Berechnungsreihenfolge durch den Signalfluss fest vorgegeben ist. Im Detail: Durch explizite Operationen wird einer Variable ein Wert aufgrund eines definierten Ausdrucks zugewiesen. Dieser Ausdruck kann seinerseits lediglich Variablen verwenden, die vor der Zuweisung bekannt (zugewiesen) sind. Deshalb ist, wie in klassischen Algorithmen, die Berechnungsreihenfolge fest vorgegeben. Eine Veränderung der Berechnungsreihenfolge, aufgrund einer Änderung der gesuchten Variable, erfordert zwangsläufig eine Anpassung der Zuweisungen.

Gleichungen hingegen definieren lediglich die Gleichheit zweier Ausdrücke. Die Reihenfolge der Gleichungen spielt hierbei keine Rolle, da das Gleichungssystem zunächst als Ganzes betrachtet wird. Die Festlegung der Berechnungsreihenfolge erfolgt erst durch Definition einiger Variablen als feste (bekannte) Randbedingung. Dieser Ansatz bietet den Vorteil, dass eine Gleichung nur einmal definiert werden muss, um einen Zusammenhang mehrerer Variablen festzulegen. Sie kann ohne Anpassung oder manuelle Umstellung wiederverwendet werden, obwohl sich die gesuchte Variable ändert.

Da es in der gleichungsbasierten Modellierung keine explizite Zuweisung zwischen den Variablen in einer Komponente gibt, spricht man hier nicht von Inputs und Outputs, sondern von Konnektoren. Sie definieren Variablen als Schnittstellen zwischen verschiedenen Komponenten. Beim Verbinden von Konnektoren werden anstatt expliziter Zuweisungen (Input2 ∶= Output1) Gleichungen erzeugt (Kirchhoff’sche Knotenregel), die Teil des Gleichungssystems sind. Hierbei ist es möglich, beliebig viel Konnektoren von beliebig vielen Komponenten zu verbinden.

Das Gleichungssystem kann anschließend durch symbolische Umformung in einen kausalen Zusammenhang gebracht und von einem Solver gelöst werden. Dieser Vorgang geschieht bei Modelica automatisiert im Hintergrund und der Nutzer bekommt davon nichts mit. Da auf oberster Modellierungsebene kein klarer kausaler Zusammenhang zwischen den Variablen vorliegt, wird dieser Ansatz auch als akausale (nicht-kausale) Modellierung bezeichnet.

Modelica vs Matlab Simulink – Wofür eignet sich was?

Wofür eignet sich Matlab Simulink?

Die signalflussbasierte Modellierung in der Matlab-Erweiterung Simulink eignet sich besonders für die Modellierung von Systemen, bei denen die kausalen Zusammenhänge eindeutig sind und sich nicht ändern, z.B. Regler oder bei Systemen, die auf Signalen basieren. Diese können direkt übernommen werden, was dem Nutzer ein hohes Maß an Kontrolle bietet. Dies ist bei gleichungsbasierten Modellen nicht möglich, da die Überführung in den kausalen Zusammenhang automatisiert abläuft und unter Umständen zu ungewünschten Interpretationen führen kann.

Wofür eignet sich Modelica?

Im Gegensatz zur signalflussbasierte Modellierung eignet sich die gleichungsbasierte Modellierung mit Modelica besonders für physikalische Systeme. Diese lassen sich oft besser als allgemeine mathematische Zusammenhänge zwischen verschiedenen Größen beschreiben (z.B. Energiebilanz). Deren Lösungsreihenfolge hängt von der jeweiligen Verschaltung ab, ohne dass sich die grundlegenden Gleichungen selbst ändern. Für eine signalflussbasierte Modellierung müssten solche Systeme zunächst vom Nutzer in eine Verschaltung explizierter Zuweisung zwischen Inputs und Outputs überführt werden. Das Überführen kann ein hohes Maß an Aufwand für den Nutzer bedeuten und sorgt für einige Fehlerquellen.

Beispiel eines einfachen physikalischen Systems – RC-Glied

Ein einfaches Beispiel soll die Unterschiede zwischen Modelica und Simulink für den Nutzer bei der Modellierung von physikalischen Systemen verdeutlichen. Ziel ist es, die sich zeitlich ändernde Temperatur einer heißen Stahlkugel bei konstanter Umgebungstemperatur zu simulieren.

Vereinfacht kann das Beispiel als eine thermische Kapazität mit der zeitabhängigen Temperatur (TC), die einen Wärmestrom (Qflow) an die Umgebungsluft (TL) abgibt, dargestellt werden. Die beiden physikalischen Phänomene: Temperaturänderung einer thermischen Kapazität und konvektive Wärmeübertragung, lassen sich durch die folgenden Gleichungen beschreiben:

Temperaturänderung einer Kapazität: $${Q_{flow}}(t) = C \cdot \frac{dT_C}{dt}$$

Wärmetransport durch Konvektion: $${Q_{flow}}(t) = \alpha \cdot A \cdot (T_L(t) - T_C(t))$$

Modellierung in Modelica

In Modelica können die beiden Gleichungen in jeweils eigenen Komponenten (Widerstand und Kapazität) implementiert werden. Das Gesamtsystem besteht dann aus den zusammengeschalteten Komponenten plus einer weiteren für die Temperaturrandbedingung (Umgebungsluft).

In der grafischen Darstellung sind die einzelnen Komponenten und damit die physikalischen Bestandteile (Kapazität und Konvektion) des Modells und deren Zusammenhang auf einen Blick zu erkennen. Dies ist besonders bei komplexen Systemen vorteilhaft, da einzelne Modell-Bestandteile einfach zu identifizieren und zu verändern sind. Die grafische Repräsentation eines Systemmodells entspricht der Physik und nicht dem Signalfluss.

Modellierung in Simulink

Um das gleiche Modell in Simulink zu erstellen, müssen zunächst die beiden einzelnen Gleichungen zu einer Modellgleichung zusammengesetzt werden. Hierbei entstehen eine lineare-differentielle Gleichung 1. Ordnung, mit der Zeitkonstante T und der Verstärkung K. Besonders bei physikalischen Systemen, wie Fluidströmungen, kann dieser Prozess sehr aufwendig sein. Die Modellgleichung lautet wie folgt:

$$y(t) + T \cdot \frac{dy}{dt} =K \cdot u(t) → T_C(t)+\frac{C}{\alpha \cdot A} \cdot \frac{dT_C}{dt}=T_L(t)$$

Die Modellierung in Simulink erfolgt durch Nachbilden der Gleichung als Verschaltung einfacher mathematischer Zusammenhänge (Multiplikation, Addition, Integration, …).

Die grafische Darstellung ist hier auch deutlich abstrakter, da anders als in Modelica, die Komponenten nicht anhand der einzelnen physikalischen Bestandteile, sondern anhand der Gesamtmodellgleichung erstellt werden. Zusätzlich sind die einzelnen Größen der Grundgleichungen in der Zeitkonstanten T und Verstärkung K zusammengefasst, was ein späteres Identifizieren erschwert.

Vergleich Modelica und Simulink – Aufwand zur Modellerstellung, Anpassbarkeit

Die sich ergebene Modellgleichung und auch das Simulationsergebnis sind zwar gleich, jedoch ist der Aufwand für die Erstellung und besonders für spätere Anpassungen und Veränderung des Modells sehr unterschiedlich. Da sich bei Modelica die Grundgleichungen innerhalb der einzelnen Komponenten befinden und lediglich die Konnektoren in Verbindung gebracht werden, lässt sich das gezeigte Beispiel mit sehr geringem Aufwand verändern. Bei Simulink bedarf eine Modellveränderung das erneute Aufstellen der Modellgleichung, was bei physikalischen Modellen mitunter sehr aufwendig sein kann. Deshalb ist für die Modellierung von physikalischen Systemen der gleichungsbasierte Ansatz in Modelica dem signalflussbasierten Ansatz in Simulink in vielen Fällen zu bevorzugen.

Modelica & Simulink kombinieren – Functional Mockup Interface

Jetzt kennen wir die Vor- und Nachteile von Modelica und Simulink und wofür sie geeignet sind, aber können die beiden Ansätze auch miteinander kombiniert werden?
Ja, mit dem Functional Mock-Up Interface (FMI) steht ein offener Standard als Schnittstelle zwischen dynamischen Simulationsmodellen zur Verfügung, den sowohl Simulink als auch alle gängigen Modelica Tools unterstützen. Mithilfe von FMI lassen sich die Vorteile verschiedener Modellierungsansätze miteinander kombinieren. So können beispielsweise bei einem geschlossenen Regelkreis die Vorteiler der signalflussbasierten Modellierung für den Regler und der gleichungsbasierten Modellierung für die Regelstrecke kombiniert werden. Durch die FMI-Schnittstelle können anschließend beide Teil-Modelle zu einem Gesamtmodell verbunden und zusammen simuliert werden.

Modelica vs Simscape

Für Simulink steht seit einiger Zeit mit der Simscape-Toolbox eine Alternative zu Modelica für die Modellierung physikalischer Systeme zur Verfügung. Simscape nutzt wie Modelica einen gleichungsbasierten Modellierungsansatz, jedoch ist Simscape im Gegensatz zu Modelica keine Open-Access Modellierungssprache, sondern eine proprietäre Erweiterung zu Simulink und kann ausschließlich hier verwendet werden.

Da Simscape eine Erweiterung zu Simulink ist, kann Simscape ohne zusätzliche Schnittstelle wie FMI direkt mit Simulink interagieren, was einige Vorteile mit sich bringt. Simulink und Matlab sind beispielsweise mit umfangreichen und gut dokumentierten Toolboxen im Bereich der Optimierung und Datenverarbeitung ausgestattet/erweiterbar und bieten in diesem Bereich eine wesentlich bessere Nutzerfreundlichkeit gegenüber Modelica.

Im Gegensatz dazu hat Modelica aufgrund der längeren Geschichte eine große Nutzerbasis mit vielen speziellen Bibliotheken für die Modellierung physikalischer Systeme. Damit bietet Modelica einen Vorteil gegenüber Simscape, da der Nutzer auf bestehende Modelle zurückgreifen kann. Ein Beispiel hierfür ist unsere TIL Suite, die umfassende Modelle unter anderem für die Modellierung von Kältekreisläufen bietet.

Felix Brandl

M.Sc.

Felix Brandl

Software & Project Engineering

TLK Energy

Felix studierte Maschinenbau an der Fachhochschule in Bielefeld. Seine Hauptfächer waren: Energietechnik und Simulation. In seiner Bachelorarbeit beschäftigte er sich mit CFD-Simulationen und in seiner Masterarbeit mit der Simulation physikalischer Systeme mit Matlab/Simulink. Bei der TLK Energy arbeitet er mit Dymola an der Modellierung und Simulation thermischer Systeme. Zusätzlich beantwortet er Supportfragen zur Simulationsbibliothek TIL Suite.

Weitere Blogbeiträge: