Automatische Codegenerierung Modell-zu-Text-Transformation für die Echtzeitimplementierung in heterogenen Systemumgebungen

Funktionsumfang und Vernetzungsgrad mechatronischer Systeme steigen rasant – und stellen hohe Herausforderungen an deren Embedded Software. Für deren Entwicklung bietet sich automatische Codegenerierung an: Mit der Low-Cost-Plattform LoRra und der Open-Source-CAE-Software Scilab / Xcos lassen sich hier viel Zeit und Kosten sparen.

Anbieter zum Thema

Die automatische Generierung von Steuergeräteprogrammen aus Modellen wird zu einem immer wichtigeren Bestandteil des Entwicklungsprozesses. Kern dieses Beitrags ist die Konzeption und Realisierung des automatischen Codegenerators der Entwicklungsplattform LoRra , welcher aus Modellen der domänenübergreifend einsetzbaren Open-Source-CAE-Software Scilab / Xcos modularen, flexibel einsetzbaren und für die Echtzeitimplementierung auf einem Mikrocontroller geeigneten C-Code generiert.
Die automatische Generierung von Steuergeräteprogrammen aus Modellen wird zu einem immer wichtigeren Bestandteil des Entwicklungsprozesses. Kern dieses Beitrags ist die Konzeption und Realisierung des automatischen Codegenerators der Entwicklungsplattform LoRra , welcher aus Modellen der domänenübergreifend einsetzbaren Open-Source-CAE-Software Scilab / Xcos modularen, flexibel einsetzbaren und für die Echtzeitimplementierung auf einem Mikrocontroller geeigneten C-Code generiert.
(Bild: gemeinfrei / Pixabay )

Eine wesentliche Herausforderung für innovative Unternehmen besteht heutzutage darin, stetig komplexer werdende Produkte immer schneller zur Serienreife zu entwickeln. Um die hieraus resultierenden wachsenden Anforderungen zu erfüllen, wird immer mehr Hard- und Software und technische Systeme integriert. Kern der entstehenden eingebetteten mechatronischen Systeme sind die Steuergeräte mit den auf ihnen implementierten intelligenten Funktionen zur Signalverarbeitung. Aufgrund des rasant steigenden Funktionsumfangs und Vernetzungsgrades entstehen so immer komplexere Softwarekomponenten.

Um auch kleinen und mittleren Unternehmen (KMU) ein wettbewerbsfähiges Angebot mechatronischer Produkte zu ermöglichen, wurde im Rahmen eines EU-geförderten Forschungsprojektes an der Ostfalia eine durchgängige, hochautomatisierte Low-Cost Rapid-Control-Prototyping-Entwicklungsplattform (LoRra) entwickelt. Im Niedersächsischen Zukunftslabor Mobilität wird diese zur Auslegung intelligenter Funktionen eingesetzt und an die Projektpartner verbreitet.

Rapid Control Prototyping mittels LoRra-Entwicklungsplattform

Rapid Control Prototyping (RCP) ist eine durchgängige, verifikationsorientierte Methodik zur Entwicklung komplexer Steuergerätefunktionen (z. B. Regelungen, Steuerungen, etc.) [1]. Sie wird erfolgreich in der Automobil- und Luftfahrtindustrie eingesetzt und ermöglicht durch den konsequenten Einsatz von Modellen bereits in frühen Entwicklungsstadien ein Testen der Funktion [2].

Der gesamte Prozess wird durch Model-in-the-Loop- (MiL-), Software-in-the-Loop- (SiL-) und Hardware-in-the-Loop- (HiL-)Simulationen begleitet. Er lässt sich in die Prozessschritte Modellbildung, Analyse und Synthese, Automatisierte Codegenerierung, Automatisierte Implementierung und Onlineexperiment untergliedern [3]. Ausgangspunkt bildet hierbei die Simulation des funktionalen Verhaltens (z. B. beschrieben durch ein Blockschaltbildmodell) in Kombination mit einer Simulation der Umgebung (z. B. der Regelstrecke).

Abbildung 1: RCP-Entwicklungsprozess mit High-Cost Lösung und LoRra Ansatz [4]
Abbildung 1: RCP-Entwicklungsprozess mit High-Cost Lösung und LoRra Ansatz [4]
(Bild: Ostfalia Hochschule Wolfenbüttel)

Wie in Abbildung 1 illustriert, wird über den gesamten RCP-Prozess durchgängig eine CAE-Werkzeugkette eingesetzt. Häufig ist hier die Kombination aus Matlab / Simulink und dSPACE eingesetzt, welche den Prozess durchgängig unterstützt. Da mit der Anschaffung und Wartung hohe Kosten verbunden sind, wurde im Rahmen mehrerer Forschungsprojekte an der Ostfalia die kostengünstige Alternative LoRra entwickelt [4]. LoRra basiert auf Low-Cost Soft- und Hardware und ist durch den modularen, flexiblen Aufbau für die Entwicklung von Funktionen verschiedenster Domänen geeignet.

Als zentrale CAE-Umgebung wird das Open-Source-Werkzeug Scilab / Xcos verwendet, welches sich zur Simulation hybride Systeme aus unterschiedlichsten Domänen eig-net [5]. Mit Hilfe der Modellbibliothek können verschiedene zeitkontinuierliche- und diskrete Modellbestandteile wiederverwendet und parametriert werden. Durch den LoRra-Codegenerator, welcher Kernelement dieser Veröffentlichung ist, wird effizienter, auf einer kostengünstigen Zielhardware wie einem Mikrocontroller ausführbarer, C-Code generiert. Über das LoRra-RTI [6] wird dieser Code dann in eine Laufzeitumgebung integriert und mit den Schnittstellen der Zielhardware verknüpft. Auf einem Mik-rocontroller wird dann die Echtzeitsimulation zur Durchführung der Onlineexperimente ausgeführt. Die Mess- und Kalibrieraufgaben während dieser Experimente werden durch das Mensch-Maschine-Interface iGES unterstützt.

Stand des Wissens

Die automatische Codegenerierung ist ein wesentlicher Bestandteil des RCP-Prozesses. Sie führt zu reproduzierbaren Ergebnissen und einer schnellen Umsetzung der im Modell konzipierten und getesteten Funktion. Zudem vermeidet sie zufällige Fehler und kann durch spezielle hardwarenahe Optimierungen heutzutage hoch effizienten Code generieren [7]. Grundlage für die automatische Codegenerierung ist die Modell-zu-Text-Transformation des Funktionsmodells.

In der Automobilindustrie gehören automatische Codegeneratoren inzwischen zu den Standard-Entwicklungswerkzeugen für Steuergerätefunktionen [8]. Auch in der Luft- und Raumfahrt werden häufig Funktionen mit Hilfe automatischer Codegeneratoren entwickelt. Der Markt bietet eine dementsprechend große Auswahl unterschiedlicher Systeme und Lösungsansätze.

In der Industrie ist das CAE-Werkzeug Matlab/Simulink weit verbreitet. Mit den Erweiterungen Simulink Coder und Embedded Coder lassen sich Simulink-Modelle in universell verwendbaren oder zielhardwarespezifisch optimierten Code transformieren [9]. Zusätzlich sind viele zusätzliche Erweiterungen z. B. zur Anbindung der Hardwareperipherie verfügbar. Mit TargetLink bietet die Firma dSPACE zudem einen Leistungs-fähigen Seriencodegenerator, welcher hoch effizienten Code unter Berücksichtigung von zielhardwarespezifischen Optimierungskriterien generiert [10].

Das Open-Source CAE-Werkzeug Scilab/Xcos, Nachfolger des im Rahmen des Metal-au-Projektes entwickelten Scicos, verfügt über einen integrierten Codegenerator. Dieser generiert C-Code zur unabhängigen Systemsimulation (sog. Standalone Simulation), welcher z.B. zur Verwendung mit einem Functional Mock-up Interface gedacht ist [11]. Zur Ausführung auf einem Mikrocontroller unter Echtzeitbedingungen ohne manuelle Anpassungen ist dieser aufgrund der Programm- und Speicherstruktur nicht geeignet.

Über Erweiterungen wie z.B. das am Linz Center of Mechatronics entwickelte X2C [12] lässt sich auch aus Xcos-Modellen effizienter, auf Mikrocontrollern ausführbarer Code generieren. Diese Erweiterungen verfügen jedoch nicht über die notwendigen Schnittstellen für eine durchgängige Nutzung im RCP-Prozess. Zur Realisierung einer durch-gängigen Low-Cost RCP-Entwicklungsplattform wurde daher der LoRra-Codegenerator, welcher Kern dieser Veröffentlichung ist, konzipiert und realisiert.

Konzept des LoRra-Codegenerators

Grundlage für den durchgängigen Einsatz in der kostengünstigen RCP-Entwicklungsplattform LoRra ist die effiziente und gleichzeitig flexible Transformation von Xcos-Modellen in Mikrocontroller-geeigneten C-Code. Der generierte Code muss das Modellverhalten korrekt reproduzieren, zugleich wiederverwendbar sein und Schnittstellen zur Integration in eine Echtzeitumgebung aufweisen (z. B. für den Schritt von der SiL- zur HiL-Simulation).

Abbildung 2: Konzept des LoRa-Codegenerators
Abbildung 2: Konzept des LoRa-Codegenerators
(Bild: Ostfalia Hochschule Wolfenbüttel)

Um diese Ziele zu erreichen, wird der LoRra-Codegenerator modular mit offenen Schnittstellen aufgebaut. Abbildung 2 illustriert das Konzept der Codegenerierung. Es wird in atomare Funktionen der einzelnen Blöcke und eine topologische Beschreibung - die Verschaltung der Blöcke miteinander - unterschieden. Ein Block im Modell kann dabei ein Basisblock oder ein Hierarchieblock (bestehend aus einem unterlagerten Modell) sein.

Abbildung 3: Ein- und Ausgänge eines Basisblocks
Abbildung 3: Ein- und Ausgänge eines Basisblocks
(Bild: Ostfalia Hochschule Wolfenbüttel)

Basisblöcke stellen einen atomaren funktionalen Zusammenhang zwischen ihren Ein- und Ausgängen her und lassen sich somit als Operatoren des Modells interpretieren. Abbildung 3 stellt den Zusammenhang dar. Anhand der allgemeinen nichtlinearen Zustandsraumdarstellung eines dynamischen Systems mit den kontinuierlichen Zuständen x, den zeitdiskreten Zuständen z sowie dem Parametervektor r wird der Zusammenhang zwischen den kontinuierlichen Eingängen u und den kontinuierlichen Ausgängen y hergestellt. Bei Aktivierung des Blocks durch einen Ereigniseingang d werden nach Gl. (1) die zeitdiskreten Zustände sowie der Ereignisverzögerungsvektor evz berechnet. Zudem kann hierbei auch eine nicht stetige Änderung der kontinuierlichen Zustände erfolgen. Ein Ereignis di wird jeweils durch eine Impulsfunktion zum Zeitpunkt tE beschrieben [13].

(Bild: Ostfalia Hochschule Wolfenbüttel)

Die Repräsentation der Modelltopologie erfolgt durch einen spezialisierten gerichteten Graphen G≔{V,R,E}. Die durch Knoten V repräsentierten Basisblöcke werden dabei durch reguläre Kanten R und Ereigniskanten E miteinander verknüpft. Durch eine Modell-zu-Text-Transformation wird das Modell in C-Code transformiert. Um die Anforderung der Wiederverwendbarkeit der Ergebnisse zu erfüllen, wird das Ergebnis der Codegenerierung im LoRra-Code-Interface (LCI)-Format gespeichert.

Realisierung und Anwendungsbeispiel

Abbildung 4: Ablaufmodell der Codegenerierung
Abbildung 4: Ablaufmodell der Codegenerierung
(Bild: Ostfalia Hochschule Wolfenbüttel)

Die Codegenerierung wird durch das in Abbildung 4 dargestellte Ablaufmodell realisiert. Zunächst erfolgt eine Vorverarbeitung des Modells, bei welcher die Modellstruktur geprüft und optimiert wird. Zudem wird die Berechnungsreihenfolge der Basisblöcke bestimmt. Anschließend erfolgt die Generierung des Funktionscodes für jeden Basisblock sowie die Verknüpfung der generierten Codeblöcke anhand der Modelltopologie. In einer Nachverarbeitung werden in Abhängigkeit der Konfiguration verschiedene Aufgaben ausgeführt. Hier ist z.B. noch eine Optimierung auf Code-Ebene oder die Erstellung einer gesonderten Dokumentation und die Kompilierung des Programms möglich. Resultierend wird ein LCI-Packet erstellt, welches z.B. für SiL-Simulationen wieder in ein Xcos-Modell oder für HiL-Simulationen in eine Echtzeitumgebung eingebettet werden kann.

(Bild: Ostfalia Hochschule Wolfenbüttel)

Zur Verifikation des LoRra-Codegenerators wurden diverse Versuche erfolgreich durchgeführt. Im Rahmen dieser Veröffentlichung wird die Funktion anhand des durchgängigen Anwendungsbeispiels der Drehzahlregelung einer permanent erregten Gleichstrommaschine verdeutlicht. Hierbei wird ein PI-Regler nach Gl. (2) mit Anti-Windup-Struktur verwendet, um die Drehzahl eines Antriebsmotors zu regeln.

Abbildung 5: Funktionsmodell des Anwendungsbeispiels PI-Regler in Xcos
Abbildung 5: Funktionsmodell des Anwendungsbeispiels PI-Regler in Xcos
(Bild: Ostfalia Hochschule Wolfenbüttel)

Abbildung 5 zeigt das Modell dieser Funktion in der Xcos-Umgebung. Der konkrete Versuchsaufbau und detaillierte Auslegungsergebnisse können [14] entnommen werden.

Das Ergebnis der Codegenerierung und der Einbettung in die Echtzeitumgebung wird durch Abbildung 6 illustriert. Das Scheduling erfolgt durch ein Cortex Microcontroller Software Interface Standard (CMSIS) kompatibles Echtzeitbetriebssystem.

Abbildung 6: Ergebnis der automatischen Codegenerierung
Abbildung 6: Ergebnis der automatischen Codegenerierung
(Bild: Ostfalia Hochschule Wolfenbüttel)

Die vom Codegenerator separierten Funktionen zur Initialisierung (PI_Controller_init), zum Lesen der Eingänge (PI_Controller_readInputs), zum Berechnen der Zustandsgrößen und deren Ableitungen sowie der Ausgänge (PI_Controller_calcOutputs / PI_Controller_callIntegrator) und das Schreiben der Hardwareausgänge (PI_Controller_writeOutputs) werden in entsprechender Reihenfolge aufgerufen und führen die notwendigen Schritte zur Integration nach dem expliziten Euler-Verfahren aus.

Abbildung 7 vergleicht die Ergebnisse der Online-Simulation (Messung) mit den Ergebnissen der Offline-Simulation (Simulation) für einen Sollwertsprung auf ndes=100 1/s. Die im oberen Teil dargestellten Verläufe stimmen mit hoher Genauigkeit überein. Dies wird durch die im unteren Teil aufgezeichnete Abweichung zwischen beiden Kurven verdeutlich. Die auftretenden Abweichungen sind durch Messrauschen und das Funktionsprinzip der Drehzahlmessung mittels Encoder erklärbar. Der automatisch generierte Code setzt das Modellverhalten demnach sehr gut um.

Zusammenfassung und Ausblick

Abbildung 7: Vergleich zwischen Mess- und Simulationsergebnis
Abbildung 7: Vergleich zwischen Mess- und Simulationsergebnis
(Bild: Ostfalia Hochschule Wolfenbüttel)

In diesem Beitrag wurde der auf Open-Source-Software basierende LoRra-Codegenerator für den Einsatz im RCP-Entwicklungsprozess vorgestellt. Anhand des durchgängig modellbasierten RCP-Entwicklungsprozesses für die Funktionsentwicklung eingebetteter Systeme wurde zunächst der generelle Aufbau der Low-Cost-Entwicklungsplattform LoRra vorgestellt, welche das Open-Source-CAE-Werkzeug Scilab / Xcos als zentrales Simulationsinstrument nutzt.

Durch den Stand des Wissens und die Analyse verfügbarer Codegeneratoren wurde aufgezeigt, dass aktuell keine Modell-zu-Text-Transformation existiert, welche sich zum durchgängigen Einsatz in einer Low-Cost-Werkzeugkette welche nicht auf ausgewählte Anwendungen beschränkt ist existiert. Zur Lösung wurde das Konzept des LoRra-Codegenerators, welcher Xcos-Modelle in flexibel nutzbaren C-Code transformiert, vorgestellt und realisiert. Anhand einer Echtzeitsimulation als Anwendungsbeispiel erfolgte eine grundlegende Verifikation der Ergebnisse.

Zukünftige Arbeiten befassen sich mit der weitergehenden Verifikation und Optimierung der Funktion des Codegenerators. Hierzu wird das genutzte Anwendungsbeispiel um Funktionen wie die Kommunikation mit den übergeordneten Modulen Trajektorienfolgeregelung und Routenplanung eines autonomen Fahrzeugs erweitert. Auch eine Erweiterung des Funktionsumfangs im Bereich Dokumentation und die Untersuchung verschiedener Algorithmen zur Optimierung des generierten Codes sind Bestandteil weiterer Forschungen.

Literatur

[1] X. Liu-Henke, S. Jacobitz, S. Scherler, M. Göllner, O. Yarom und J. Zhang, „A Holistic Methodology for Model-based Design of Mechatronic Systems in Digit-ized and Connected System Environments“ in 16th International Conference on Software Technologies, Online Streaming, 06.07.2021 - 08.07.2021, S. 215–223, doi: 10.5220/0010566702150223.
[2] H. Hanselmann, „Beschleunigte Mechatronik- Entwicklung durch Rapid Control Prototyping und Hardware-in-the-Loop- Simulation“, at - Automatisierungstechnik, Jg. 46, Nr. 3, S. 113–119, 1998, doi: 10.1524/auto.1998.46.3.113.
[3] X. Liu-Henke, Mechatronische Entwicklung der aktiven Feder-Neigetechnik für das Schienenfahrzeug RailCab. Düsseldorf, Paderborn: VDI-Verlag, 2005.
[4] S. Jacobitz und X. Liu-Henke, „The Seamless Low-cost Development Platform LoRra for Model based Systems Engineering“ in 8th International Conference on Model-Driven Engineering and Software Development, Valletta, Malta, 25.02.2020 - 27.02.2020, S. 57–64, doi: 10.5220/0008993500570064.
[5] R. Nikoukhah, „A hybrid system formalism for modeling and simulation“ in 2006 IEEE Conference on Computer Aided Control System Design, Munich, Germany, 04.10.2006 - 06.10.2006, S. 1568–1573, doi: 10.1109/CACSD-CCA-ISIC.2006.4776875.
[6] S. Jacobitz und X. Liu-Henke, „A Real-Time Interface for Xcos – Demonstrated on a Battery-management System“ in 2nd Scilab Conference, Berlin, Germany, 2019.
[7] S. Toeppe, D. Bostic, S. Ranville und K. Rzemien, „Automatic code generation requirements for production automotive powertrain applications“ in International Symposium on Computer Aided Control System Design, Kohala Coast, HI, USA, 1999, S. 200–206, doi: 10.1109/CACSD.1999.808648.
[8] F. R. Franco, J. H. Neme, M. M. Santos, J. N. H. da Rosa und I. M. Dal Fabbro, „Workflow and toolchain for developing the automotive software according AU-TOSAR standard at a Virtual-ECU“ in 2016 IEEE 25th International Symposium on Industrial Electronics (ISIE), Santa Clara, CA, USA, 08.06.2016 - 10.06.2016, S. 869–875, doi: 10.1109/ISIE.2016.7745004.
[9] V. Lamberský, J. Križan und A. Andreev, „Generating Code Consistent with Sim-ulink Simulation for Aperiodic Execution on a Target Hardware Powered by a Free RTOS“ in 10th International Conference Mechatronics 2013, Brno, Czech Repub-lic, 2014, S. 95–101, doi: 10.1007/978-3-319-02294-9_13.
[10] H. Hanselmann, „Vom Modell zum Seriencode“, Elektronik automotive, Nr. 3, 2003.
[11] R. Bucher und S. Balemi, „Scilab/Scicos and Linux RTAI - a unified approach“ in IEEE Conference on Control Applications, Toronto, Canada, 2005, S. 1121–1126, doi: 10.1109/CCA.2005.1507281.
[12] G. Grabmair, S. Mayr, M. Hochwallner und M. Aigner, „Model based control de-sign - A free tool-chain“ in 2014 European Control Conference (ECC), Strasbourg, France, 2014, S. 826–831, doi: 10.1109/ECC.2014.6862509.
[13] S. L. Campbell, J.-P. Chancelier und R. Nikoukhah, Modeling and Simulation in Scilab/Scicos with ScicosLab 4.4, 2. Aufl. New York, NY: Springer Sci-ence+Business Media LLC, 2010, doi: 10.1007/978-1-4419-5527-2
[14] S. Jacobitz, M. Göllner, J. Zhang und X. Liu-Henke, „Modellbasierte Entwicklung des Antriebsmoduls für vernetzte fahrerlose Transportfahrzeuge in einem cyber-physischen Labortestfeld“ in Workshop ASIM Fachgruppen STS, GMMS und EDU 2021, Online, 2021.

Dieser Beitrag stammt, mit freundlicher Genehmigung der Autoren, aus dem Tagungsband des ESE Kongress 2021.

* Sven Jacobitz hat an der Ostfalia Hochschule seinen Masterabschluss im Studiengang Systems Engineering erworben. Seit 2017 ist er als wissenschaftlicher Mitarbeiter in der Fachgruppe für Regelungstechnik und Fahrzeugmechatronik unter der Leitung von Frau Prof. Dr.-Ing. Liu-Henke tätig und bearbeitet dort das EU-geförderten Forschungsprojekt LoCoRCP. Im Rahmen seiner Promotion erforscht er RCP Systeme auf Basis von Low-Cost Hard- und Software.

* Frau Prof. Dr.-Ing. Xiaobo Liu-Henke vertritt das Fachgebiet Regelungstechnik und Fahrzeugmechatronik der Fakultät Maschinenbau an der Ostfalia Hochschule. Sie baut die Forschungsschwerpunkte „Fahrzeugmechatronik“ und „Elektromobilität“ kontinuierlich aus. In den letzten sechs Jahren wurden von ihr zehn interdisziplinäre Forschungs- und Industrieprojekte zu o. g. Themen eingeworben.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

(ID:48120478)