Entwicklung einer Plattform zur modellbasierten Regelung auf Basis eines Einplatinencomputers und offenen Softwaretools #5 Erstellen und Ausführen von X2C-Modellen

By:

Hallo Zusammen! Ich bin Ruo Yi. Im letzten Beitrag haben wir über die Inbetriebnahme des BeagleBone Black gesprochen.  In der Tat handelt es sich in dem letzten Beitrag eher um die Vorbereitung für die Inbetriebnahme des Mikrocomputers. Wenn man den Mikrocomputer zur Implementierung der modellbasierten Regelung betreiben möchte, ist das vorliegende Beitrag relevant.

Zur Implementierung der modellbasierten Regelung nimmt die offene Software X2C eine zentrale Rolle ein. Man kann mit X2C nicht nur Regelungen mit grafischen Blöcken aufbauen, sondern auch C-Code automatisch generieren. Außerdem bietet X2C eine „Scope“- Funktion zur Messdatenüberwachung. Obwohl eine allgemeine ausführliche Anleitung für die Konfiguration von X2C in der Software-Dokumentation vorhanden ist, muss man noch an einigen Stellen spezielle Einstellungen vornehmen, die in der Dokumentation leider nicht beschrieben werden. Deswegen wird die Konfiguration von X2C für eine modellbasierte Regelung basierend auf der X2C-Dokumentation  in den folgenden Abschnitten beschrieben. Für weitere Informationen sind auf X2C-Dokumentation und die Vorarbeit von Maxwell verwiesen.

X2C_logo

Ein typisches X2C-Modell ist in Bild 1 dargestellt. Es besteht aus zwei Teilen, einer ist das durch Blöcke zusammengebautes Modell und der andere beinhaltet die Funktionsmodule. Das Vorgehen kann in folgende Schritte zusammengefasst werden:

  1. Modell einrichten;
  2. Das Modell über das Funktionsmodul „transform Model and push to Communicator“ in Communicator übertragen;
  3. C-Code über das Funktionsmodul „Communicator“ generieren;
  4. C-Code durch Software Code Composer Studio kompilieren;
  5. Die kompilierten „app“ und „MLO“ Dateien auf die SD-Karte kopieren und das BBB von SD-Karte booten;
  6. Das BBB mit dem X2C-Modell über „Communicator“ verbinden und damit in Echtzeit steuern und Messdaten überwachen.

X2C-Modell

Bild 1: X2C-Modell

Im folgende wird jeder Schritt kurz erklärt.

Einrichten des X2C-Modells

Das Einrichten eines X2C-Modell wird über die Software Xcos, die in Scilab integriert ist, durchgeführt. Um ein neues X2C-Modell einzurichten, kann man entweder das Modell aus einem leeren Diagramm oder basierend auf einem Demo-Modell, die X2C im Software-Paket anbietet, aufbauen. Zur Erleichterung der Konfiguration des X2C Modells bietet X2C elf Demo-Modelle für verschiedene Mikrocontroller bzw. Mikrocomputer. Für das BBB stehen zwei Demo-Modelle zur Verfügung. Es wird empfohlen, ein neues X2C-Modell basierend auf einem Demo-Modell aufzubauen. Damit kann man viel Arbeit für die Konfiguration der I/O-Schnittstellen sparen.

So kann man z.B. das Demo-Modell im Demo-Ordner „Sweepy_AM355x_BeagleBoneBlack“ öffnen. In diesem Demo-Modell sind bereits vier Onboard-LEDs, vier digitale Eingänge, vier digitale Ausgänge, sieben analoge Eingänge und drei PWM-Ausgänge vom BBB implementiert und können bei Bedarf genutzt werden. Es sei hier angemerkt, dass nicht benötigte Blöcke so weit wie möglich entfernt werden sollen. Denn je mehr Eingangs- und Ausgangsblöcke im Modell sind, desto langsamer ist die Übertragung der Messdaten vom BBB zum PC.

Bei der Auswahl der Blöcke sollte man darauf achten, dass man für eine erfolgreiche C-Code-Generierung nur Blöcke aus der Bibliothek von X2C verwenden darf. Ansonsten führt dies zur einer fehlgeschlagenen Generierung des C-Codes. Außerdem muss jeder Block ein eindeutiges „Block Label“ haben, sonst taucht eine Fehlermeldung bei der Übertragung des Modells in „Communicator“ auf. Im X2C kann man für jeden Block den Datentyp wie z.B. „16 Bit Fixed Point“ und „32 Bit Floating Point“ über das Parameterfeld auswählen. Beim Verbinden der Blöcke muss der eingehende Datentyp dem des Blocks entsprechen. Falls der geforderte Datentyp nicht wählbar, steht Blöcke zur Konvertierung der Datentypen zur Verfügung.

Übertragen des X2C-Modells in „Communicator“

„Communicator“ ist ein Modul mit vielfältigen Funktionen. Bild 2 zeigt das Dialogbox vom „Communicator“. Über die Funktionen „Connect to target“ und „X2C-Codes“ kann Verbindung zwischen dem BBB und dem PC hergestellt und C-Code generiert werden. Außerdem kann man über die Funktion „Scope“ die Messdaten überwachen. Um die Änderung im Modell rechtzeitig zu aktualisieren, wird es empfohlen, dass man vor der Ausfühung von „Communicator“ immer „transform Model and push to Communicator“ doppelklickt.

Communicator

Bild 2: X2C Communicator

Code-Generierung

Zur Generierung von C-Codes kann man einfach die Funktion „Create code“ vom „Communicator“ klicken, dann werden die C-Codes automatisch im Unterordner „X2C-Codes“ generiert.

Kompilieren

Damit das BBB das X2C-Modell implementieren kann, muss der generierte C-Code in eine ausführbare Datei kompiliert werden. Hierbei dient die Software Code Composer Studio zum Kompilieren des C-Codes. Eine allgemeine Anleitung für die Verwendung von Code Composer Studio ist in X2C-Dokumentation geschrieben. Nachdem man das Symbol „Build“ geklickt hat, wird der Code automatisch kompiliert. Gleichzeitig werden die ausführbaren „app“ und „MLO“-Dateien in den Unterordner „SD-bin“ generiert. Darüber hinaus sollte man vor dem Kompilieren auf die folgenden zwei Stellen achten:

  • „GlobalDefines.h“  (Siehe Bild 3)

Diese Header-Datei befindet sich im Unterordner „inc“ unter dem Verzeichnis vom X2C-Modell. In dieser Header-Datei werden alle wichtige Parameter zur Implementierung wie z.B. Abtastzeit und PWM-Frequenz definiert. Für eine richtige Kompilierung muss man diese Parameter nach eigenen Bedürfnissen manuell konfigurieren. Wenn man z.B. die Abtastzeit in X2C-Modell über das Block „Clock“ einstellt, muss man auch die Abtastzeit in „GlobalDefines.h“ entsprechend ändern. Sonst wird die Einstellung der Abtastzeit in X2C-Modell nicht richtig kompiliert.

GlobalDefines

Bild 3: GlobalDefines.h

  • Predefined Symbole

Diese Option befindet sich in Project->Build->ARM Compiler. Man kann hier die Größe des Speicherplatzes der Funktion „Scope“ einstellen. Dabei ist die Einheit Byte.

Erstellen der Verbindung

Zur Erstellung einer Verbindung zwischen dem BBB und dem PC muss man Schnittstellen für Signalübertragung einstellen. Eine Verbindung z.B. über Ethernet ist in die folgenden Schritte unterteilt:

  1. Statische IP-Adresse für eine Ethernet-Verbindung im BBB und im PC einstellen;
    Eine Anleitung für die Einstellung der IP-Adresse für Linux und Windows kann man in Configuring the BeagleBone Black’s Ethernet Port for SSH Access finden.
  2. IP-Adresse des BBB in „Communicator“ einstellen;
    Über die Funktion „setup“ kann man die eingestellte IP-Adresse des BBB eingeben. Darüber hinaus muss man die IP-Adresse in der Datei „main.c“ im Unterordner „src“ unter dem Verzeichnis vom X2C-Modell entsprechend ändern, indem man IP_BYTE 1 bis IP_BYTE4 der IP-Adresse des BBB zuordnet. Die Zuordnung der IP-Adresse ist in Bild 4 dargestellt.
  3. BBB mit PC verbinden
    Hierbei muss das BBB zuerst mit dem PC über ein Ethernet-Kabel verbunden, dann mit Spannung versorgt und gleichzeitig von der SD-Karte gebootet werden. Nachdem man die Option „Connect to target“ klickt, ist eine Verbindung erstellt.
    IP-Adresse

Bild 4: Zuordnung der IP-Adresse

Wenn die Verbindung erstellt ist, kann man die Parameter von den Blöcken online ändern und dadurch den Zugriff auf die Regelung haben. Außerdem kann man Ein-und Ausgänge von allen Blöcken über die Funktion „Scope“ beobachten und speichern.

Messdatenerfassung und Speicherung

Nachdem man die Funktion „Scope“ geklickt hat, erscheint eine Benutzeroberfläche zur Messdatenbeobachtung (siehe Bild 5). Hier kann man die zu beobachtenden Messgrößen auswählen. Die Messdauer hängt von dem Speicherplatz, „Sample time factor“, „Sample time“ und der Anzahl der beobachteten Kanäle ab. Das Verhältnis kann durch die Formel

ScopeMessung

dargestellt werden. Dabei ist N_{mess} die Anzahl der beobachteten Kanäle und B_{data} die Byteanzahl des Datentyps. Es sei hier angemerkt, dass die Größe vom Speicherplatz nicht in X2C eingestellt wird, sondern über Code Composer Studio. Dies wird in dem Abschnitt über Kompilieren erklärt. Im „Scope“ können die aufgezeichneten Daten entweder als MATLAB- oder Scilab-Skript exportiert werden. Dabei sind die Daten über Ethernet vom BBB auf den PC übertragen. Die Zeit für die Übertragung ist je nach der Anzahl der I/O-Schnittstellen im X2C-Modell unterschiedlich. Je mehr die I/O-Schnittstellen in X2C-Modell sind, desto länger ist die Übertragungszeit.

ScopeFenster

Bild 5: Scope-Funktion

Nun ist die Inbetriebnahme der Regelungsplattform fertig. Nach der vorgenannten Anleitung kann man einfaches Modell mit den in X2C zur Verfügung stehenden Blöcken aufbauen und ausführen. Aber für eine praktische Anwendung wie aktive Schwingungsdämpfung reicht die bisherige Arbeit noch nicht. In den folgenden Beiträgen werden ich euch zuerst das Grundprinzip und die gängigsten Methoden der Schwingungsdämpfung vorstellen. Dann folgt eine Software-Implementierung der ausgewählten Regelalgorithmen.

Also, sehen wir uns in dem nächsten Beitrag:)

Letzter Beitrag:

Entwicklung einer Plattform zur modellbasierten Regelung auf Basis eines Einplatinencomputers und offenen Softwaretools #4 Inbetriebnahme des BeagleBone Black

Nächster Beitrag:

Methoden der aktiven Schwingungsdämpfung #1 Allgemeine Vorstellung


Schreibe einen Kommentar

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