How to generate own new Block in X2C #1

By:

Hallo Zusammen, ich bin Ruo Yi. In den letzten Beiträgen habe wir über den Aufbau der kostengünstigen modellbasierten Regelungsplattform und die Erstellung von X2C-Modellen gesprochen. Heute gehen wir auf eine die Frage ein, wie man eigne neue Blöcke in X2C generieren?

Wie vorher erläutert, ist die offene Software X2C der modellbasierte Werkzeug für die kostengünstige Regelungsplattform. X2C bietet eine gute Alternative zu SIMULINK für die modellbasierte Regelung und Generierung von C-Code. Aber diese Software hat auch manche Nachteile, die normalerweise offene Softwares charakterisieren. Dies erhöht die Schwierigkeit der Verwendung und erschwert den Einstieg in diese Software. Im folgenden wird zuerst der Stand der Software vorgestellt. Dann wird die Durchführung der Generierung neuer Blöcke erläutert.

1. Status von X2C

X2C ist eine Erweiterung zu Xcos und dient bei der Implementierung einer modellbasierten Regelung dazu, die Regelung mit grafischen Modellen aufzubauen und den entsprechenden C-Code zur Kompilierung automatisch zu generieren. Um die Generierung des C-Codes durchzuführen, dürfen nur die Blöcke aus der Bibliothek von X2C zum Aufbauen des Modells verwendet werden. Das ist eine große Beschränkung bei der Verwendung von X2C, da die Anzahl der verfügbaren Blöcken in X2C im Vergleich zu SIMULINK viel kleiner ist. Die ursprüngliche Blockbibliothek von X2C ist in vier Kategorien unterteilt: Basic, General, Math und Control. Es gibt insgesamt sechsundsechzig Blöcke, die für mathematische Berechnungen und grundlegende Regelungen wie z.B. einfache PID-Regelung verwendet werden können. In Bild 1 ist der Katalog „Control“ in X2C dargestellt.

Bild 1: Blockbibliothek in X2C

Zur Generierung einfacher Signale wie Gleitsinus oder zum Umsetzen einer grundlegenden Regelung wie PID-Regelung kann man mit den bestehenden Blöcken realisieren. Aber für eine komplexere Anregungsgröße wie z.B. ein PRBS-Signal oder Regelung sind diese Blöcke nicht mehr ausreichend. Insbesondere für die in meiner Arbeit zu implementierende adaptive aktive Schwingungsdämpfung stehen keine Blöcke zur Verfügung. Um mit diesem Problem zu umgehen, müssen Benutzer benötigte Blöcke über das Block-Generationstool „BlockGenerator.jar“ selbst generieren. Dies bildet eine große Schwierigkeit für Leute, die keine Erfahrung mit Programmierung haben. Außerdem handelt sich das Block-Generationstool eigentlich um ein Entwicklertool, welches nicht für Nutzer gedacht ist. Entsprechend sind die Schritte zur Generierung eines eigenen Blocks in der Dokumentation nicht detailliert erklärt. Dies erhöht die Schwierigkeit beim Erstellen von neuen Blöcken weiter. Darüber hinaus gibt es sehr wenige Foren und Beiträge über X2C im Internet. In den gefundenen wenigen Beiträgen über X2C geht es nur darum, ein Modell mit den bestehenden Blöcken aufzubauen. Daher muss man für die Generierung neues Blocks viel Arbeit investieren.

Ein anderer nicht benutzerfreundlicher Punkt von X2C liegt darin, dass die Parameter von Blöcke nur mit Konstanten eingestellt werden können. Das heißt, X2C-Blöcke können nicht wie bei SIMULINK Variablen aus dem „workspace“ einlesen und verarbeiten. Dies ist unpraktisch für die Eingabe großer Datenmengen in einen Block. Manchmal kann die Eingabe eines großen Vektors mit z.B. tausend Elementen in ein Lookup-Table zum Absturz der Software führen.

2. Generierung neuer Blöcke

Um die bestehende Blockbibliothek in X2C um Blöcke zur Identifikation und aktiven adaptiven Schwingungsdämpfung zu erweitern, muss man zuerst einen Weg für die Generierung eigener Blöcke finden. Dazu wurde Kontakt mit der Firma Linz Center of Mechatronics GmbH aufgenommen. Es ist hier angemerkt, dass Herr Stefan Fragner von X2C dieser Arbeit bei der Generierung neuer Blöcke stetige Unterstützung geboten und dafür eine detaillierte Anleitung zur Generierung Projekt-spezifischer Blöcke in X2C geschrieben hat. Diese Anleitung kann man jetzt in der Dokumentation in der neuesten Version des X2C-Pakets finden, das am 13.04.2018 unter „Nightly builds“ zum Herunterladen veröffentlicht wird. Auf der Grundlage der Dokumentation werden in den folgenden Abschnitten Schritte zur Generierung eigenes Blocks ausführlich erklärt, wobei auch Ergänzung anhand der meinen eigenen Erfahrung vorgenommen wird.

2.1 Grundlegende Einstellung des X2C-Block-Generators

Der erste Schritt bei der Erstellung eines externen projektspezifischen X2C-Blocks ist die Erstellung der Grundstruktur mit dem X2C-Blockgenerator. Der X2C-Blockgenerator kann durch Ausführen der Datei „BlockGenerator.jar“ in <X2CRoot>/System/Java/ gestartet werden. Nach der Ausführung öffnet sich der X2C-Blockgenerator in Form der in Bild 2 dargestellten GUI. Die GUI ist in zwei Teile unterteilt. Die linke Seite ist der Teil für „Block Parameters“. Hierbei werden alle Parameter zur Generierung eines Blocks in der Bibliothek in X2C eingestellt. Die rechte Seite ist der Teil für „Implementation“. Dabei werden Parameter für die Implementierung der Blockfunktion eingestellt.

Bild 2: X2C-BlockGenerator

Da die Inhalte dieses Teil noch viel ist, beende ich diesen Beitrag an dieser Stelle. Die restliche Inhalte werde ich in dem nächsten Beitrag weiter erklären.

(To be continued)

Nächster Beitrag:

How to generate own new Block in X2C #2


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.