PID-Entwurf leicht gemacht
Von Murad Abu-Khalaf, MathWorks, Rong Chen, MathWorks, and Arkadiy Turevskiy, MathWorks
Die Abstimmung eines PID-Reglers scheint einfach, muss man doch lediglich drei Werte finden: Die Proportional-, die Integral- und die Differential-Verstärkung. Tatsächlich aber ist die sichere und systematische Ermittlung derjenigen Verstärkungsfaktoren, mit denen ein Regelungssystem optimal arbeitet, eine sehr komplexe Aufgabe. PID-Regler werden traditionell entweder per Hand oder mit regelbasierten Methoden abgestimmt. Die manuelle Abstimmung ist zeitaufwändig und kann, wenn sie direkt an Hardware eingesetzt wird, Schäden verursachen. Regelbasierte Methoden eignen sich nicht für Regelstrecken, die Instabilitäten enthalten oder ohne Zeitverzögerung arbeiten. Die PID-Regelung birgt außerdem besondere Entwurfs- und Implementierungsprobleme wie etwa die Umsetzung zeitdiskreten Verhaltens oder eine geeignete Festkommaskalierung.
Dieser Artikel beschreibt am Beispiel eines Gelenkvierecks eine Methode, die den Entwurf und die Implementierung von PID-Reglern vereinfacht und verbessert. Diese Methode basiert auf den in Simulink® vorhandenen PID Controller-Blöcken und dem PID Tuning-Algorithmus aus Simulink Control Design™.
Das Gelenkviereck: Ziele des Reglerentwurfs
Gelenkvierecke (Abb. 1) kommen in vielen mechanischen Systemen vor. Dazu gehören etwa Radaufhängungen, Aktuatoren für Roboter oder Flugzeugfahrwerke.
Das Regelungssystem besteht aus zwei Elementen: Einer Vorsteuerung (Feedforward) und einer PID-Regelung (Feedback). Die Vorsteuerung invertiert die Regelstreckendynamik – sie steuert den Hauptteil der Bewegung des Mechanismus durch Berücksichtigung seines nichtlinearen Verhaltens. Die Feedback-PID-Regelung dagegen verringert den Positionierungsfehler, der etwa durch Modellierungsunsicherheiten und externe Störungen entsteht. Dieser Artikel konzentriert sich auf den Entwurf der Feedback-PID-Regelung.
Der PID-Regler bildet die Regelabweichung in Form der Differenz zwischen dem gewünschten und dem tatsächlichen Drehwinkel eines der Gelenke und fordert auf deren Grundlage ein Drehmoment an (Abb. 2). Diese Anforderung wird zur Drehmomentanforderung der Feedforward-Vorsteuerung addiert und mit diesem Summensignal wird schließlich der Gleichstrommotor angesteuert, der das Gelenk bewegt. Der Regler muss den Betrieb der Regelstrecke stabilisieren, schnell ansprechen und darf nur wenig überschwingen. Da die Implementierung auf einem Festkommaprozessor mit 16-Bit erfolgen soll, muss er weiterhin zeitdiskret formuliert und seine Verstärkungsfaktoren und berechneten Signale müssen passend skaliert sein.
Konfiguration der geschlossenen Regelschleife und Abstimmung des Reglers
Das Modell der Regelstrecke besteht aus einem in SimMechanics™ modellierten Gelenkviereck und einem in SimElectronics® modellierten Gleichstrommotor. Zur Erzeugung der in Abbildung 2 gezeigten Reglerarchitektur wird einfach ein zeitdiskreter PID Controller-Block aus der Simulink Discrete-Bibliothek eingefügt. Mit dieser fertigen Regelschleife kann die Abstimmung des Reglers bereits beginnen (Abb. 3).
Man öffnet dazu die Dialogbox des PID Controller-Blocks, stellt die Abtastzeit ein und klickt auf „Tune“, worauf sich der PID Tuner öffnet (Abb. 4). Simulink Control Design linearisiert die Regelstrecke am gegenwärtigen Arbeitspunkt und leitet das lineare zeitinvariante (LTI) Regelstreckenmodell ab, das dem PID Controller-Block in dieser Rückkopplungs-Regelschleife präsentiert wird. Die durch die Abtastung entstehende Latenz wird dabei automatisch berücksichtigt. Simulink Control Design erzeugt dann mithilfe einer automatischen Optimierungsmethode die Anfangsverstärkungen des PID-Reglers. Diese Optimierungsmethode ist unabhängig von der Ordnung der Regelstrecke oder Zeitverzögerung und funktioniert sowohl zeitkontinuierlich als auch zeitdiskret.
Abbildung 4 zeigt die Sollwertnachführung der geschlossenen Regelschleife mit diesem PID-Rohentwurf. Ist man mit der Leistung des Reglers zufrieden, werden durch einen Klick auf „Apply“ die P-, I-, D- und N-Verstärkungsfaktoren in der Dialogbox des PID Controller-Blocks aktualisiert. Das Verhalten des Reglerentwurfs lässt sich nun durch Simulation des nichtlinearen Modells und eine Visualisierung der Ergebnisse testen (Abb. 5). Man kann den Reglerentwurf aber auch interaktiv abstimmen. Dazu steht ein Schieberegler zur Verfügung, mit dem man sein Ansprechverhalten verlangsamen oder beschleunigen kann (Abb. 6).
Vorbereitung der Implementierung
Zur Vorbereitung des Reglers auf seine Implementierung auf einem 16-Bit Mikroprozessor wird der Reglerentwurf auf die vom Prozessor unterstützte Festkomma-Arithmetik umgesetzt.
Über den Reiter “Data Types” in der Dialogbox des Blocks werden die für den Festkommaentwurf erforderlichen Einstellungen festgelegt (Abb. 7). Dies geschieht beispielsweise automatisch mit dem Fixed-Point Tool in Simulink. Die Simulation wird nun mit den Festkommaeinstellungen wiederholt, um zu verifizieren, dass sich der Festkommaentwurf möglichst genau so verhält wie das ursprüngliche Modell, in dem die Verstärkungen und Signale durch Fließkommawerte mit doppelter Genauigkeit repräsentiert wurden.
Generierung von Produktionscode
Der PID-Regler ist jetzt bereit für die Implementierung. Als abschließender Schritt wird mit Real-Time Workshop Embedded Coder™ C-Code generiert (Abb. 8). Zum Testen dieses Codes ersetzt man den PID Controller-Block durch den generierten C-Code und führt diesen in der geschlossenen Regelschleife aus. Der Real-Time Workshop Embedded Coder kann hierzu automatisch einen Simulink-Block erzeugen, der den generierten Code aufruft.
Die Simulation kann nun mit genau dem C-Code ausgeführt werden, der später auf dem echten Prozessor laufen wird. Abbildung 9 zeigt, dass die Ergebnisse des generierten Codes nur minimal von denen des mit Double-Werten konfigurierten PID Controller-Blocks abweichen.
Der Code kann also nun auf den Prozessor heruntergeladen und zur Echtzeit-Steuerung des Gelenkvierecks eingesetzt werden.
Veröffentlicht 2009 - 91842v00