URL dieses Beitrags:

Lesezeichen bei Google setzen Link auf Facebook teilen
Fachartikel vom 06/11/2013

Fallstudie für datengestützte Modellierung und Entwurf von Steuerungen

Steuerung eines Motors mithilfe von Modellen

Die Abstimmung einer Steuerung auf einen physikalischen Prototypen oder einer Anlagenhardware kann unsichere Betriebsbedingungen und eine Beschädigung der Hardware zur Folge haben. Ein zuverlässigerer Ansatz besteht darin, ein Anlagenmodell zu erstellen und dessen Verhalten zu simulieren, um die Steuerung unter verschiedenen Betriebsmodi prüfen zu können. Damit lassen sich Was-wäre-wenn-Szenarien risikofrei durchspielen.

Wenn sich das Anlagenmodell nicht mithilfe theoretischer Grundlagen beziehungsweise Informationen zu dessen Verhalten erstellen lässt, kann das Modell alternativ auf Basis von Messungen bestimmter Ein-/Ausgabegrößen entwickelt werden. Für den Entwurf einer einfachen Steuerung kann ein lineares Modell niedriger Ordnung bereits ausreichend sein. Die detaillierte Analyse und der Entwurf einer Steuerung mit höheren Anforderungen hingegen erfordert ein detailgetreueres und möglicherweise nichtlineares Modell. Anhand einer einfachen Steuerung für einen Gleichstrommotor zeigt dieser Artikel, wie ein Anlagenmodell aus Ein-/Ausgabe-Daten identifiziert wird, wie dieses Modell für den Entwurf einer Steuerung eingesetzt wird und wie die Steuerung schließlich implementiert werden kann. Der Workflow enthält die folgenden Schritte: Erfassen der Daten, Identifizieren von linearen und nichtlinearen Anlagenmodellen, Entwerfen und Simulieren von Feedbacksteuerungen und Implementieren dieser Steuerungen auf Embedded Mikroprozessoren für Echtzeittests.

Der Gleichstrommotor: Ziele beim Entwurf der Steuerung

Bild: MathWorks
Lupe
Bild 1: Arduino-Platine an einen Gleichstrommotor angeschlossen. (Bild: MathWorks)

Das physikalische System ist ein Gleichstrommotor, der mithilfe eines Motortreibers an eine Arduino-Uno-Platine angeschlossen ist (Bild1). Es soll eine Feedbacksteuerung entworfen werden, damit dieser Motor eine Referenzposition nachverfolgen kann. Die Steuerung erzeugt auf Basis von Referenzdaten für die Motorposition das entsprechende Spannungssignal. Bei Anlegen dieser Spannung an den Motor erzeugt dieser das Drehmoment, das die Drehung der Motorwelle bewirkt. Mittels eines Potentiometers wird der der Drehwinkel der Motorwelle gemessen.

Der Motortreiber auf dem IC steigert die Stromstärke und kann den Motor in beide Richtungen antreiben. Anhand der Positionsdaten des Motors, die über einen analogen Eingang auf der Arduino-Platine erfasst werden, erfolgt die Fehlerberechnung zwischen den Referenz- und Ist-Daten (der Steuerungseingabe). Das Spannungssignal (die Steuerungsausgabe) wird als PWM-Signal über zwei analoge Ausgänge auf der Platine an den Treiber-IC weitergeleitet, der den Motor mit den entsprechenden Antriebsströmen versorgt. Die Steuerung muss das System stabil halten und für eine schnelle Nachverfolgung der Referenzpunkte sorgen, bei gleichzeitiger Minimierung von Positionsfehlern und des Überschwingens.

Erfassen und Verarbeiten der Daten

Bild: MathWorks
Bild 2: Simulink-Blockbibliothek: Hardware-Target zur Verwendung mit Arduino-Hardware. (Bild: MathWorks)

Für Verbindung des Host-PCs mit der Arduino-Platine wird mit Simulink eine Exe-Datei generiert, die auf der Hardware ausgeführt wird. Bild 2 zeigt die Simulink-Bibliothek für die Arduino-Hardware. Zur Datenerfassung sendet die Arduino-Platine Spannungssignale an den Motor und misst die resultierenden Motorwinkel, die in ein Simulink-Modell eingespeist werden. Ein zweites Simulink-Modell stellt die Kommunikation zwischen Host-Computer und der Arduino-Platine her, um Spannungssignale zu senden beziehungsweise Winkeldaten zu empfangen. In dem Modell, das auf der Arduino-Uno-Platine (Bild 3) ausgeführt wird, liest der Matlab-Funktionsblock Voltage Command To Pins Signale vom seriellen Anschluss aus und leitet die Spannungssignale an die entsprechenden analogen Ausgänge weiter. Für die Kommunikation zwischen Host-Computer und Arduino-Platine wird ein serielles Kommunikationsprotokoll verwendet. Das CreateMessage-Subsystem erstellt ein serielles Signal aus den Motorpositionsdaten, die über die analogen Eingänge auf der Platine erfasst werden.

Die Echtzeitanwendung wird einfach mit der Befehlsfolge Tools > Run on Target Hardware > Run aus dem Modell generiert. Damit lassen sich nun die Eingabe-/Ausgabedaten mit dem Modell, das auf dem Host-Computer ausgeführt wird, erfassen. Mit verschiedenen Spannungsprofilen wird sodann das System angeregt und es werden die resultierenden Positionsdaten dokumentiert. Am Ende der Simulation generiert die Signal-Logging-Funktion in Simulink ein Objekt, das alle protokollierten Signale als Zeitreihenobjekte enthält. Anschließend werden die erfassten Daten für die Schätzung und Validierung aufbereitet. Mit den folgenden Befehlen konvertieren wir die Daten in iddata-Objekte, um sie in das System-Identification-Tool der System-Identification-Toolbox zu importieren. Für die Validierung des Modells werden zwölf Datensätze ausgewählt, um eine adäquate Anregung des Systems zu gewährleisten und eine ausreichende Datenmenge zur Verfügung zu stellen.

Entwickeln von Anlagenmodellen anhand experimenteller Daten

Bild: MathWorks
Bild 3: Simulink-Modell, das auf dem Arduino-Board ausgeführt wird. (Bild: MathWorks)

Das Entwickeln von Anlagenmodellen mithilfe von Methoden zur Systemidentifikation erfordert einen Kompromiss zwischen Modellzuverlässigkeit und Modellierungsaufwand. Je genauer das Modell sein soll, desto höher ist der Aufwand und die Rechenzeit. Das Ziel ist, das einfachste Modell zu ermitteln, das die Systemdynamik angemessen erfassen kann. Der typische Workflow für die Systemidentifikation sieht wie folgt aus: Zunächst wird ein einfaches lineares System abgeschätzt; anschließend wird ein detaillierteres, nicht lineares Modell bestimmt, das den Motor genauer abbildet und das nichtlineare Verhalten erfasst. Während das lineare Modell für die meisten Anwendungen eines Steuerungsentwurfs ausreicht, ermöglicht das nichtlineare Modell genauere Simulationen des Systemverhaltens und einen Steuerungsentwurfs in einem breiten Spektrum von Betriebspunkten.

Lineare Systemidentifikation

Mithilfe der iddata-Objekte wird zunächst ein lineares dynamisches Modell der Anlage als zeitkontinuierliche Transferfunktion geschätzt. Für diese Schätzung wird die Anzahl an Polen und Nullstellen angegeben. Die System-Identification-Toolbox bestimmt anschließend automatisch deren Positionen, um die Übereinstimmung mit den ausgewählten Datensätzen zu maximieren. Man startet das System-Identification-Tool mit dem Befehl:
>> ident
Nach Import der Daten werden die Arbeitsdaten ausgewählt, die zur Schätzung des Modells verwendet werden sollen sowie die Validierungsdaten, anhand derer das geschätzte Modell getestet werden soll. Anfänglich lassen sich hierzu dieselben Datensätze verwenden. Weitere Datensätze werden schließlich zur Bestätigung der Ergebnisse herangezogen. Bild 5 zeigt das System-Identification-Tool mit dem importierten Datensatz. Der Datensatz für die Schätzung beruht auf einem Experiment, mit dem das Anregen von Nichtlinearitäten im System vermieden werden sollte. Die geschätzte Transferfunktion für diese Daten ist im Beispiel eine zeitkontinuierliche Transferfunktion mit zwei Polen und ohne Nullstellen.

Mittels ‚Model Output‘ im System-Identification-Tool wird die Simulationsantwort des geschätzten Modells mit den gemessenen Daten verglichen. Die Übereinstimmung zwischen der Reaktion des geschätzten linearen Modells und dem Datensatz für die Schätzung beträgt 93,62 Prozent. Um sicherzustellen, dass die geschätzte Transferfunktion die Motordynamik wirklich abbildet, muss sie mit einem weiteren Datensatz validiert werden. Die Verwendung eines unabhängigen Datensatzes, bei dem der Motor sich ebenfalls linear verhält, zeigt eine Übereinstimmung mit ausreichender Genauigkeit. Die Übereinstimmung ist zwar nicht perfekt, die identifizierte Transferfunktion erfasst die Systemdynamik jedoch auf angemessene Weise. Damit kann diese Transferfunktion verwendet werden, um eine Steuerung für das System zu entwerfen. Darüber hinaus lässt sich auch der Effekt der Unsicherheit des Analgenmodells analysieren. Modelle, die mithilfe der System-Identification-Toolbox generiert wurden, enthalten nicht nur Informationen über Nennparameterwerte, sondern auch über Parameterunsicherheiten, die in einer Parameter-Kovarianzmatrix gekapselt sind. Als Maß für die Zuverlässigkeit des Modells hängt die berechnete Unsicherheit von folgenden Faktoren ab: externen Störungen, die auf das System einwirken nicht modellierte Dynamik des Systems und Menge der gesammelten Daten. Die Unsicherheit lässt sich visualisieren, indem die entsprechenden Auswirkungen zusammen mit der Modellantwort in einem Diagramm dargestellt werden - zum Beispiel mit einem Bode-Diagramm der geschätzten Transferfunktion mit Konfidenzintervall der Standardabweichung.

Nicht lineare Systemidentifikation

Bild: MathWorks
Bild 4: Benutzeroberfläche für die nicht lineare ARX (NLARX)-Modellschätzung. (Bild: MathWorks)

Ein lineares Modell der Motordynamik auf Basis von Daten aus einem linearen Betriebsbereich ist hilfreich beim Entwickeln einer effizienten Steuerung. Mit solch einem Anlagenmodell kann das nichtlineare Verhalten des Motors jedoch nicht erfasst werden. Weitere Datensätze zeigen beispielsweise, dass die Reaktion des Motors bei einem Winkel von erwa 100° in die Sättigung läuft, oder dass der Motor nicht auf kleine Befehlsspannungen reagiert, was möglicherweise an der Trockenreibung liegt. In folgenden Schritt wird ein Modell des Gleichstrommotors mit höherer Genauigkeit bestimmt - ein nichtlineares Modell. Eine nähere Betrachtung der Daten ergibt, dass die Änderung der Reaktion des Motors in Bezug auf die Spannungsänderung nicht linear verläuft. Dieser Trend weist auf ein nicht lineares, Hysterese-ähnliches Verhalten hin. Nichtlineare ARX (NLARX)-Modelle bieten ausreichend Flexibilität und ermöglichen es, ein derartiges Verhalten unter Verwendung vielfältiger nichtlinearer Funktionen, zum Beispiel Wavelets und Sigmoid-Netzwerken, zu erfassen. Weiterhin können solche Modelle Effekte berücksichtigen, die mittels benutzerdefinierten Regressoren zu Nichtlinearitäten des Systems ermittelt wurden. Für die NLARX-Modellierung sind Daten mit einer ausreichenden Informationstiefe hinsichtlich der Nichtlinearitäten erforderlich. Im Beispiel werden drei Datensätze kombiniert, die zur Modellschätzung verwendet werden sollen. Weitere fünf Datensätze werden kombiniert, um einen umfangreicheren, für mehrere Experimente geeigneten Validierungsdatensatz zu erhalten.

Das nichtlineare Modell hatte verschiedene anpassbare Komponenten. Für dieses Beispiel wurden Modellordnungen, Verzögerungen, Typ der nichtlinearen Funktion und die Anzahl der Einheiten in der nicht linearen Funktion angepasst. Weiterhin wurden Regressoren hinzugefügt, die die Sättigung und das Totzonenverhalten darstellen. Nach mehreren Iterationen wurde eine Modellstruktur ausgewählt, die ein Sigmoid-Netzwerk mit paralleler linearer Funktion aufweist und einen Satz von Regressoren als Eingaben verwendete. Die Parameter dieses Modells erreichen nach Abschätzung die bestmöglichen Simulationsergebnisse (Bild 4). Das resultierende Modell hat eine hervorragende Übereinstimmung von >90 Prozent; dies gilt sowohl für die Schätzdaten als auch für die Validierungsdaten. Dieses Modell kann sowohl für die Steuerungsentwicklung als auch für die Analyse und Prognose verwendet werden.

Entwerfen der Steuerung

Nun lässt sich eine PID-Steuerung für das genauere nichtlineare Modell entwerfen. Hierzu wird das geschätzte, nichtlineare Modell an einem relevanten Betriebspunkt linearisiert und anschließend die Steuerung für dieses linearisierte Modell entworfen. Die PID-Steuerung wird abgestimmt und deren Parameter ausgewählt. Die Leistungsfähigkeit dieser Steuerung wird auch anhand des nichtlinearen Modells geprüft. Bild 12 zeigt das Simulink-Modell, mit dem die Simulationsreaktion auf das nicht lineare ARX-Modell ermittelt wird. Anschließend werden die Closed-Loop-Sprungantworten des linearen und nichtlinearen Modells bezüglich einer gewünschten Referenzposition von 60° ermittelt.

Testen der Steuerung auf der Hardware

Bild: MathWorks
Bild 5: Simulink-Modell zum Testen der Steuerung mit dem geschätzten nichtlinearen Modell. (Bild: MathWorks)

Die Steuerung wird schließlich über ein Simulink-Modell und der integrierten Hardwareunterstützung in Simulink auf dem Arduino Uno Board implementiert. Die Steuerung beruht auf dem geschätzten nichtlinearen ARX-Modell, das bezüglich eines ausgewählten Betriebspunktes linearisiert ist. Die Ergebnisse für diese Steuerung zeigen, dass die Hardwareantwort eine hohe Übereinstimmung mit den Simulationsergebnissen aufweist. Ein weiterer Test zeigt, wie gut die Steuerung einen zufälligen Referenzbefehl nachverfolgt. Auch in diesem Fall stimmt das Verhalten der Hardware in einem hohen Maß mit den Werten aus der Simulation überein. Dieses Beispiel ist zwar einfach angelegt, enthält jedoch die wichtigsten Schritte für eine datengestützte Steuerung. Anhand von Ein-/Ausgangsdaten einer bestimmten Hardware wurden mit der System Identification Toolbox verschiedene Modelle des Systems mit unterschiedlicher Genauigkeit konstruiert. Anschließend wurden basierend auf diesen Modellen Steuerung entwickelt und deren Leistungsfähigkeit auf der tatsächlichen Hardware verifiziert.

Autor

Pravallika Vinnakota ist Application Engineer (Post-Sales) bei MathWorks, USA