Echtzeit-Simulation Simulieren mit Kernkraft

Ausführung eines Simulationsmodells in Echtzeit lassen die Entwicklungszeit und -kosten senken.
Ausführung eines Simulationsmodells in Echtzeit lassen die Entwicklungszeit und -kosten senken.

Durch die Ausführung eines Simulationsmodells in Echtzeit lassen sich Hardware-Prototypen weitestgehend ersetzen. Aber: Je detaillierter das Modell ist, desto höher ist auch das Risiko der CPU-Überlastung auf dem Echtzeitrechner. Durch simultane Ausführung kann das Risiko gesenkt werden.

Die Hardware-in-the-Loop-Simulation, kurz: HIL, ist der Schlüssel zur Simulation eines Streckenmodells in Echtzeit. Allerdings stellt das hohe Rechenanforderungen an den Echtzeit-Rechner. Aber zum Glück gibt es Mehrkern-Rechner, auf denen die Simulation simultan auf mehreren Kernen ausgeführt werden kann. Dabei wird das Modell in Segmente unterteilt und diese parallel auf einem Mehrkernrechner ausgeführt. Durch dieses Verteilen der Rechenlast auf mehrere Kerne wird die Echtzeit-Performance verbessert – innerhalb eines Zeitschrittes kann mehr Code ausgeführt werden.

Anhand eines Elektrofahrzeugmodells beschreibt dieser Artikel den Workflow für „Concurrent Execution“ mit Simulink Real-Time und einem Speedgoat Dual-Core Target Computer (Bild 1).

Zuerst wird das Modell auf einem Single-Core-Rechner ausgeführt, um eine Baseline-Messung der Echtzeit-Performance zu erhalten. Anschließend wird das Modell für die Verwendung mehrerer Kerne konfiguriert und eine Simulation mit einer Concurrent Execution ausgeführt. Ein Vergleich der Einzel- und Mehrkern-Simulationsergebnisse zeigt, ob das Risiko einer CPU-Überlastung besteht.

Das detaillierte Streckenmodell

In diesem Beispiel wird ein Elektrofahrzeugmodell eingesetzt, das mit Simulink, SimDriveline, SimElectronics und Simscape (Bild 2) modelliert wurde. Das Modell wird am Testeingang mit einem US06-Fahrzyklus stimuliert. Das Streckenmodell besteht aus dem Bediener- und Power-Management-Subsystem sowie aus Batterie, Elektroantrieb und Fahrzeugmodell. Ziel ist es, die Ausführung dieses Streckenmodells auf dem HIL-Simulator durchzuführen, sodass ein Steuergerät mit dem Simulator verbunden und dessen Performance getestet werden kann.

Zuerst wird das Elektrofahrzeugmodell auf einem Einzelkern-Echtzeitrechner ausgeführt und die Ausführungszeit automatisch ermittelt, d.h. die für die Echtzeitausführung des Modells benötigte Berechnungszeit. Diese Berechnungszeit wird als Baseline für den Vergleich von Einzel- und Mehrkern-Ausführung genutzt. Um das Modell für Simulink Real-Time zu konfigurieren, muss wie folgt vorgegangen werden:

  • Solver- und Sample Time auswählen; in diesem Fall der diskrete Solver und Ts = 0,001.
  • Einstellen des System target file in den Configuration Parameters > Code Generation: slrt.tlc.
  • Unter Configuration Parameters > Code Generation > Verification > Code Profiling: Aktivieren der Option „Measure task execution time“ und Auswahl der Speicheroption „All measurement and analysis data“.

Anschließend wird das Modell compiliert und automatisch auf den Echtzeitrechner übertragen. Die Simulationsdauer der Echtzeitsimulation beträgt 10 s. Mit den Befehlen aus dem Listing wird ein Profiling-Bericht basierend auf den Simulationsdaten erstellt. Der Profiling-Bericht zeigt eine Zusammenfassung der Modellausführungszeit (Bild 3).

Für das Baseline-Modell werden während der Codegenerierung alle Blöcke in einer einzigen Task zusammengefasst. Im Profiling-Bericht resultiert das in der Anzeige von zwei Tasks: Der Timer Interrupt und die Base Rate. Die rechte Seite des Berichtes zeigt an, dass die durchschnittliche Ausführungszeit für das Modell 0,948 ms beträgt, während der Timer Interrupt, der die Modellausführung auslöst, ca. 0,003 ms benötigt. Das Ausführungsprofil zeigt, dass die Tasks sequenziell ausgeführt werden (Bild 4).

Die gesamte Ausführungszeit ist die Summe der benötigen Zeiten des Timer Interrupt und des Modells, in diesem Beispiel 0,948 ms + 0,003 ms = 0,951 ms. Bei einer Sample Time von 1 ms werden bei diesem Modell entsprechend 95 % der CPU in Anspruch genommen.

Änderungen der Modelldynamik, die sich auf die Ausführungszeit des Modells auswirken, werden entsprechend zu einer CPU-Überlastung und einem Stopp der Simulation führen. Um das zu verhindern, kann Concurrent Execution eingesetzt werden.