Was sind gute Strategien zum Optimieren von PID-Schleifen?


55

Das Einstellen der Reglergewinne kann schwierig sein. Welche allgemeinen Strategien eignen sich gut, um ein stabiles System zu erhalten, das zur richtigen Lösung konvergiert?


1
Eine Frage, die auf eine spezifischere Frage abzielt, wäre nützlicher. Ansonsten solltest du dir nur den PID- Artikel mit einem Abschnitt über Tuning
ansehen

2
Ich habe immer festgestellt, dass die Optimierung von PIDs sehr stark von den Eigenschaften des Systems abhängt, weshalb ich Auto-Tuning- Systeme nie für schrecklich nützlich befunden habe . Sie eignen sich für einen ersten Durchgang, einen Satz von Parametern mit geringer Leistung, sind jedoch bei weitem nicht optimal, und Sie haben das gleiche Problem mit jeder allgemeinen Strategie, die nicht für die mechanischen, elektrischen und Steuerungsaspekte eines bestimmten Systems optimiert ist.
Mark Booth

Antworten:


66

Bei kleinen Motoren mit niedrigem Drehmoment und geringer oder keiner Getriebeübersetzung können Sie zum Erzielen einer guten Grundeinstellung die Reaktion auf eine Störung prüfen.

Führen Sie die folgenden Schritte aus, um eine PID abzustimmen:

  1. Setzen Sie alle Gewinne auf Null.
  2. Erhöhen Sie die P-Verstärkung, bis die Reaktion auf eine Störung eine stabile Schwingung ist.
  3. Erhöhen Sie die D-Verstärkung, bis die Schwingungen nachlassen (dh kritisch gedämpft).
  4. Wiederholen Sie die Schritte 2 und 3, bis durch Erhöhen der D-Verstärkung die Oszillationen nicht mehr gestoppt werden.
  5. Stellen Sie P und D auf die letzten stabilen Werte ein.
  6. Erhöhen Sie die I-Verstärkung, bis Sie mit der gewünschten Anzahl von Oszillationen zum Sollwert gelangen (normalerweise Null, aber eine schnellere Reaktion ist möglich, wenn Sie ein paar Oszillationen des Überschwingens nicht stören).

Welche Störung Sie verwenden, hängt von dem Mechanismus ab, an den der Controller angeschlossen ist. Normalerweise reicht es aus, den Mechanismus von Hand vom Sollwert wegzubewegen und loszulassen. Wenn die Schwingungen immer größer werden, müssen Sie die P-Verstärkung verringern.

Wenn Sie die D-Verstärkung zu hoch einstellen, beginnt das System zu klappern (es vibriert mit einer höheren Frequenz als die P-Verstärkungsschwingungen). Reduzieren Sie in diesem Fall die D-Verstärkung bis zum Anschlag.

Ich glaube, diese Technik hat einen Namen. Ich werde es hier ablegen, wenn ich es finde.



1
@ Throwback1986, Das ist definitiv nicht Ziegler-Nichols, der nur die P-Verstärkung verwendet und wobei I- und D-Verstärkung dann entsprechend aus der oszillierenden P-Verstärkung und der Oszillationsperiode berechnet werden
dm76

Haben Sie zusätzliche Ratschläge für die Optimierung eines Roboterarms, der mehrere Gelenke hat, die optimiert werden müssen? Beginnen Sie von der Basis und arbeiten Sie nach außen zum Endeffektor oder umgekehrt, oder spielt es überhaupt eine Rolle?
Adamconkey

1
In einem akademischen oder industriellen Umfeld möchten Sie eine ausgefeiltere Kontrollmethode. Für ein hobbiest; Die Schwerkraft wirkt dämpfend. Stimmen Sie daher jedes Gelenk auf den Winkel ab, in dem die Schwerkraft die Motoren am wenigsten beeinträchtigt. Zum Beispiel, wenn der Arm gerade nach oben zeigt, so dass die Schwerkraft auf die Lager und nicht auf den Motor wirkt. Bestellung spielt keine Rolle. Das Hinzufügen eines Feedforward-Gravity-Compensation-Terms zu Ihrer Steuerung ist wahrscheinlich die einfachste Verbesserung (verwenden Sie rekursives Newton-Euler für einen seriellen Arm), wenn Sie nicht die gewünschte Leistung erzielen können.
hauptmech

Das Tool pidtuner.com hat zu besseren Ergebnissen geführt als die Ziegler-Nichols-Methode, die mehrere bekannte Nachteile aufweist. folk.ntnu.no/skoge/publications/2003/tuningPID/more/…
Juan Gonzalez Burgos

13

Eine ähnliche experimentelle Methode wie die Antwort von hauptmech, die ich am College erhalten habe:

  1. Setzen Sie alle Gewinne auf 0.
  2. Erhöhen Sie K d, bis das System schwingt.
  3. Reduzieren Sie K d um den Faktor 2-4.
  4. Setze K p auf ungefähr 1% von K d .
  5. Erhöhen Sie K p, bis die Schwingungen beginnen.
  6. Verringern Sie K p um den Faktor 2-4.
  7. Setze K i auf ungefähr 1% von K p .
  8. Erhöhen Sie K i, bis die Schwingungen beginnen.
  9. Verringern Sie K i um den Faktor 2-4.

Die Ziegler-Nichols-Methode ist genauer, wenn Sie eine genaue Zahl für die Schwingungsperiode erhalten können. Es verursacht im Allgemeinen Schwingungen unter Verwendung der angegebenen "klassischen PID" -Nummern, daher ist es nicht immer optimal.

Allgemeine Regeln zur Auswirkung jedes Terms auf Anstiegszeit, Überschwingen, Einschwingzeit, Dauerzustandsfehler und Stabilität finden Sie in Tabelle 1 von "PID Control System Analysis and Design" von Li, Ang und Chong in IEEE Control Systems Zeitschrift.


2
Kd zuerst? Ich dachte immer, dass es am besten ist, mit Kp zu beginnen.
Rocketmagnet

Ich transkribiere von alten Vorlesungsfolien. Wenn es einen guten Grund gibt, es nicht so zu machen, wäre ich neugierig, es zu hören.
Joe Baker

1
Das ist der Algorithmus, den ich für "Seat of the Pants" -Stimmung befürworte. Sie werden so nah wie möglich dran sein, ohne das System zu modellieren oder dessen Reaktion zu messen. (Modellieren und / oder Messen ist der einzige Weg, wenn Sie wirklich das richtige Tuning benötigen).
TimWescott

Kd zuerst abzustimmen macht für mich keinen Sinn, da in jeder PID, die ich implementiert habe, das Vorzeichen von Kd negativ ist. Es wird verwendet, um das Steuersignal zu reduzieren, wenn sehr große Änderungen der Fehler auftreten, was das System im Wesentlichen dämpft. Wenn Sie nur Kd haben, bewegt sich das System in die entgegengesetzte Richtung, was den Fehler erhöht und das Problem verschärft. Wenn Kd positiv ist, werden Sie den Fehler bei jeder großen Änderung in die richtige Richtung noch schneller ändern lassen und Ihr Ziel überschießen.
Andrew Capodieci

Eigentlich macht es Sinn, zuerst die D-Verstärkung abzustimmen, aber ich gehe davon aus, dass "Erhöhen" der D-Verstärkung bedeutet, den Absolutwert zu erhöhen und nur die Dämpfung zu erhöhen. Das größte Problem bei der D-Verstärkung ist, dass sie hochfrequentes Rauschen verstärkt. Es ist schön, diesen Effekt ohne die P-Verstärkung zu sehen. Sie beginnen also im Wesentlichen damit, nach den Verstärkungen zu suchen, bei denen es sich nicht mehr wie Dämpfung verhält und das Rauschen und verzögerte Fehlersignale zu verstärken beginnt. Ich gehe für Schritt 2 davon aus, dass Sie Ihre Pflanze anstupsen müssen, um zu sehen, ob sie oszilliert.
DrRobotNinja

7

Embedded.com hat meinen Artikel noch einmal verschoben, aber hier ist, wo es jetzt ist. Dies zeigt Ihnen, wie Sie eine PID-Schleife schreiben (es ist eine Übung für den Leser, herauszufinden, wie Sie eine andere PID-Schleife als Fließkomma erstellen können) und wie Sie sie abstimmen.

PID Ohne einen Doktortitel

Der beste Weg hängt stark von Ihren Fähigkeiten ab. Der Weg, um die beste Abstimmung zu erzielen, ist normalerweise, das Verhalten der Anlage zu messen ("plant" == "das, was Sie steuern") und dann abhängig davon, wie Sie das getan haben Messungen extrahieren ein Modell der Anlage und entwerfen dazu oder entwerfen direkt zu den Messungen.

Bei bestimmten schwierigen Anlagen werden Sie feststellen, dass Sie nie zufriedenstellende Messungen durchführen können. In diesem Fall müssen Sie nur Modelle verwenden. Diese sind selten, aber befriedigend, wenn Sie sie zum Laufen bringen.


5

Sebastian Thrun stellte in seiner Klasse "Programmieren eines Roboterautos" einen einfachen Algorithmus zur PID-Abstimmung vor. Es heißt "Twiddle", er beschreibt es hier .

Twiddle ist sehr anfällig dafür, lokale Minima zu finden - dies bedeutet, dass Sie einen Satz von drei Konstanten finden können, die in Ordnung, aber nicht optimal für die Situation sind. Das Problem des Abstimmens von PID-Konstanten ist eine Teilmenge eines allgemeineren Suchproblems, um bestimmte Parameter zu finden, um den Nutzen zu maximieren (in diesem Fall, um den Fehler des PID-Algorithmus zu minimieren). Sie können nach anderen allgemeinen Lösungen für dieses Problem suchen, wie z. B. Bergsteigen, simuliertes Tempern, genetische Algorithmen usw., die möglicherweise zu optimaleren Lösungen führen.


4

Im Gegensatz zu den beiden anderen Antworten würde ich sagen, dass eine gute manuelle Methode zum Einstellen einer PID darin besteht, die Kd zu ignorieren. Beginnen Sie also bei 0 und erhöhen Sie Kp, bis Sie das Ziel erreichen. Erhöhen Sie dann Ki, um den Fehler im eingeschwungenen Zustand zu beseitigen.

Kd kann das Problem verwirren, da es schlecht auf Rauschen reagiert. Dann fügst du Filter an deinem Analogeingang hinzu und fragst dich, was das alles außer deiner Kontrolle verlangsamt und es schwieriger macht, das Problem zu lösen.

Eine andere Sache, die mich verwirren wird, ist, wenn die PID-Gleichung in der Standardform oder in einer unabhängigen Form (parallel in Wikipedia) vorliegt. Die Wirkung von Ki scheint sich umzukehren, wenn die Form der falsche Weg zu dem ist, was Sie denken. Beide Typen werden in der Automatisierung verwendet, manchmal mit der Option, zwischen ihnen zu wechseln.


4

Systemmodellierung

Natürlich können Sie experimentelle Optimierungen vornehmen, wie in den anderen Antworten erwähnt. Wenn Sie jedoch in der Lage sind, ein angemessenes dynamisches Modell für alles zu definieren, was Sie steuern möchten, und die Parameter identifizieren können , sollten Sie in der Lage sein, Ihren Controller gut zu entwerfen -definierte Kriterien wie Überschwingen , Anstiegszeit , Einschwingzeit , stationärer Fehler und so weiter.

Es gibt sogar Tools in MATLAB , mit denen Sie Ihren Controller optimieren können, um eine Kombination dieser Kriterien zu erreichen, wodurch die Verwendung noch besser wird.

Kennen Sie Ihren Controller

Das Erlernen der Funktionen der einzelnen Parameter im PID-Regler ist ebenfalls sehr hilfreich. Alle experimentellen Algorithmen basieren irgendwie auf dieser Art von Wissen. Wenn Sie nicht nur den Anweisungen folgen, sondern sich auch so fühlen, fällt es Ihnen möglicherweise leichter, Ihren Controller manuell abzustimmen.

Probleme in der realen Welt

Es besteht die Möglichkeit, dass beim Einstellen Ihres Controllers unter anderem eines dieser Dinge auf Ihre Kosten kommt : Windup , unzureichende Abtastrate , Sättigung .

Fazit

Letztendlich hängt alles davon ab, was Sie mit Ihrem System tatsächlich tun können, um ein wenig Wissen darüber zu erhalten, wie es funktioniert und welche Art von Experimenten durchgeführt werden können. Das Beste ist, mehr über PID-Regler und die Regelungstheorie im Allgemeinen zu lernen, IMO, aber ich bin voreingenommen :)


Ich verstehe nicht, warum die Leute immer wieder Heuristiken vorschlagen , um die PID zu optimieren, während wir heutzutage mit zahlreichen automatischen Werkzeugen für die Anlagenidentifikation und das Steuerungsdesign ausgestattet sind, für die kein tiefer theoretischer Hintergrund erforderlich ist. Daumen hoch für diese Antwort dann.
Ugo Pattacini

3

Ich werde versuchen, ein wenig aus meiner Erfahrung für diejenigen, die interessiert sein könnten, zu erweitern. Ich denke, das Problem ist, dass wir eine Menge Kontrolltheorie haben, die etwas unzugänglich (und manchmal nicht nützlich) ist, und dann haben wir Faustregeln, die Annahmen über Systeme machen, die oft ungenau sind.

Stabilität

Sprechen wir zunächst darüber, warum Regelkreise instabil werden. Für diese Diskussion gehe ich von einem linearen System aus. Informell bedeutet dies, dass, wenn Ihr Steuersignal eine Sinuswelle mit einer bestimmten Frequenz ist, Ihr beobachteter Ausgang dieselbe Frequenz hat und wenn Sie die Amplitude Ihres Steuersystems ändern, Ihr Ausgang im selben Verhältnis reagiert. Diese Annahme ist eine gute Annäherung für viele reale Systeme und lässt uns verschiedene Frequenzen isoliert betrachten.

Wenn Sie sich den Regelungspfad ansehen, haben Sie einen Sollwert, Ihren PID-Regler, Ihr System (auch bekannt als "Anlage") und dann Ihren Sensor. Stellen Sie sich einen festen Sollwert und eine Sinuswelle von Ihrem Sensor vor (dies entspricht einer realen Störung am Sensor, die rückgekoppelt wird). In einem instabilen System bewirkt Ihre Rückkopplung, dass der Regelkreis den Fehler verstärkt, anstatt ihn zu verringern, sodass mit zunehmender Zeit Ihre Amplitude zunimmt. Der Grund dafür ist eine Verzögerung oder für diese bestimmte Frequenz eine Phasenverschiebung zwischen dem Eingang und dem Ausgang. Für eine gegebene Frequenz können wir die Verschiebung und Amplitude des Ausgangs im offenen Regelkreis (dh ohne Rückkopplung) betrachten, und wenn wir alle diese Werte in einem Diagramm zeichnen, erhalten wir so etwas wie einen Bode-Plot. Wenn wir in diesem offenen Regelkreis eine Situation haben, in der der Fehler immer stärker wird, dann haben wir ein instabiles System. Wenn die Verzögerung weniger als die Hälfte der Wellenlänge oder die Verstärkung weniger als x1 beträgt, ist das System stabil . In der Praxis wollen wir von diesem Punkt einen gewissen Spielraum (Gewinnspielraum und Phasenspielraum), weshalb Sie dieses "Zurücksetzen" in vielen manuellen / heuristischen Methoden sehen werden.

Das Hauptproblem bei diesen manuellen Methoden besteht darin, dass Sie blind fliegen und mit ziemlicher Sicherheit ein schlechtes Steuerungssystem erhalten.

Denken Sie auch daran, dass die Bedeutung von P, I und D damit zusammenhängt, was Ihr Sensor misst und welche Steuerung Sie anwenden. Ein häufiger Fehler bei selbstgebauten Controllern ist, dass die Leute glauben, sie würden P anwenden, wenn sie es tatsächlich nicht sind. Motorcontroller haben oft eine Positionsschleife, die über eine Geschwindigkeitsschleife läuft, die über eine Drehmomentschleife läuft. (Eine Kaskade )

OK, aber wie hilft uns das?

Der erste Punkt, den ich ansprechen möchte, ist, dass Sie, wenn Sie Ihren eigenen PID-Regler bauen, auch einen Weg finden sollten, um die Antwort des offenen Regelkreises zu messen. Führen Sie einen Frequenz-Sweep am Eingang Ihres Controllers durch und messen Sie den Ausgang des Sensors bei nicht angeschlossener Rückkopplung. Dann können Sie den Open-Loop-Bode-Plot zeichnen und sehen, warum Ihr System stabil ist, und in der Lage sein, die verschiedenen Steuerelemente gegeneinander auszutauschen. Es ist auch nützlich, das Verhalten des geschlossenen Regelkreises zu messen, und Sie können dies mit jedem System tun, indem Sie einen Frequenz-Sweep Ihres Sollwerts durchführen, während der Regelkreis geschlossen ist. Beide sind nicht so schwer und erfordern nicht viel theoretisches Wissen.

Wenn Sie einfach die Steuerung optimieren, ohne zu wissen, was unter der Haube vor sich geht, können Sie Ihr System nicht optimieren. Es ist nicht so schwer, sich ein Bild über diese Systeme zu machen. ZB hat die Proportionalverstärkung keine Auswirkung auf die Phase, sondern erhöht einfach die Open-Loop-Verstärkung über alle Frequenzen. Wenn Sie also bei all diesen manuellen Abstimmungsmethoden die proportionale Verstärkung erhöhen, müssen Sie die Frequenz ermitteln, bei der die Phase auf -180 geht. Sehen Sie sich dies an, um mehr über die Auswirkungen der verschiedenen Regler auf Ihren Frequenzgang zu erfahren.

Oft ist es erforderlich, das System und nicht nur die Controller-Gewinne zu optimieren, um die beste Leistung im geschlossenen Regelkreis zu erzielen. Was Sie wollen, ist, das System so "steif" wie möglich zu machen. Auf diese Weise können Sie die Steuerparameter erhöhen und die beste Bandbreite für offene und geschlossene Regelkreise erzielen. Nach meiner Erfahrung in Motorsteuerungsanwendungen ist die proportionale Verstärkung diejenige, die den größten Teil der "Arbeit" und der Integrator den "Rest" erledigen sollte. Ich glaube, du brauchst überhaupt keinen D-Term. Ein Tiefpassfilter und ein Sperrfilter helfen in Situationen, in denen Sie möglicherweise eine gewisse mechanische Resonanz haben, diese jedoch ohne Bode-Plot einstellen, sehr schwierig (die im geschlossenen Regelkreis beobachtete Oszillationsfrequenz kann sich von der im offenen Regelkreis unterscheiden).

Wenn die Sicherheit ein Problem darstellt (sehr leistungsstarke Motoren oder ein System, das durch den außer Kontrolle geratenen Motor zerstört werden könnte), müssen Sie vor Beginn der Abstimmung einige Grenzwerte festlegen (z. B. Strombegrenzung, maximaler Positionsfehler), um das System zu schützen. Dann müssen Sie ein Gefühl für den Bereich der Parameter bekommen. Wenn Ihr Feedback 40 Zählungen pro Umdrehung oder 4000 Zählungen pro Umdrehung enthält, sind Ihre Parameter für ein bestimmtes System ein Faktor von 100. Mein Ansatz wäre, zuerst einen Bereich zu finden, in dem Sie eine schlechte Steuerbarkeit haben, und dann von dort beginnend mit P und dann mit I (obwohl Sie wieder blind fliegen) hochzufahren. Zurückziehen erzeugt diesen Stabilitätsspielraum.

Jenseits des geschlossenen Kreislaufs

Die geschlossene Schleife versucht, den Fehler aus dem System zu entfernen. Es wird immer eine etwas eingeschränkte Leistung geben. Was Sie tun möchten, ist, den Fehler zu minimieren, den Ihr Closed-Loop-Controller sieht, und eine Möglichkeit, dies zu tun, ist eine Technik, die als Feed-Forward bezeichnet wird. Im Feed-Forward gehen Sie um die Steuerung herum und geben einen Befehl direkt an das System aus. Ein Beispiel dafür wäre die Beschleunigungsvorsteuerung. Wenn Sie die Drehmomentkonstante Ihres Motors kennen und die Last kennen, können Sie ziemlich genau sagen, wie viel Strom Sie zum Fahren benötigen, um eine bestimmte Beschleunigung der Last zu erzielen. Sie nehmen einfach die Befehlseingabebeschleunigung, multiplizieren sie mit einer Konstanten und addieren diese zum Antriebsbefehl der Steuerung. Sie tun im Grunde das, was Sie brauchen, um das System zu betreiben, wenn es keinen Controller gibt. Je näher Sie dem System kommen, desto weniger Fehler muss die Schleife beseitigen, und desto besser arbeitet das System. In der Praxis macht es einen großen Unterschied.


"Nach meiner Erfahrung mit Motorsteuerungsanwendungen ist die proportionale Verstärkung diejenige, die den größten Teil der" Arbeit "und der Integrator den" Rest "erledigen sollte. Ich glaube, Sie brauchen überhaupt keinen D-Term." Ich würde dem für typische Motorsteuerungsanwendungen zustimmen. Das P erledigt die Hauptaufgabe und das I kompensiert langfristige Abweichungen / Fehler. In diesem Fall ist der Quadcopter starken externen Turbulenzen ausgesetzt. Daher ist der D-Term wichtig, um eine schnelle Reaktion zu erzielen. Was den I-Term betrifft, ist er nicht so wichtig, es sei denn, das Quad befindet sich im autonomen Navigationsmodus.
dm76

@ dm76: Die meiste Erfahrung habe ich mit der Motorsteuerung gemacht, und ich gebe diesen Haftungsausschluss ;-) Meine Intuition besagt jedoch, dass in Quadrocopter-Anwendungen immer noch Platz für mich ist und ich denke, wenn P sehr hoch ist, könnte es mit externen Störungen umgehen (genau wie es tut in der Motorsteuerung). Ich müsste mir diese Systeme wirklich genauer ansehen, um etwas Bestimmtes über Quadcopter zu sagen ... Ich denke, dass eine Menge von dem, was ich hier sage, zutrifft (vor allem, wenn Sie im Frequenzbereich abstimmen und das Open-Loop-Verhalten des Systems haben) ).
Guy Sirton

1
@ dm76: Und genau diese "Faustregel" für die PID-Abstimmung führt zu einer sehr mäßigen Leistung bei Motoren und vermutlich auch bei Quadcoptern. Manchmal kann ein gut platzierter Kerbfilter einen Unterschied in der Größenordnung machen ...
Guy Sirton

0

Ziegler-Nichols ist eine einfache manuelle Methode. Es gibt auch robustere Methoden - diese basieren normalerweise auf mathematischen Lösungen (analytische, iterative Optimierung usw.).

Darüber hinaus googeln Sie für einige automatisierte Techniken die "selbstoptimierende PID". Mein Favorit ist die Anwendung neuronaler Netze zur PID-Abstimmung.


0

Wenn Sie einen genauen PID-Koeffizienten haben möchten:

  • Holen Sie sich Ihre statistischen Aktordaten (dh collecting input voltages+ encoder pulsesin einer konstanten frequent ( 0.01sec) Zeit für 20secsals 3x- 2000Matrix)
  • Holen Sie sich die Übertragungsfunktion (TF) Ihres Stellantriebs (mit der Ident- Toolbox in MATLAB).
  • Verwenden Sie abschließend die PIDTool- Toolbox in MATLAB und laden Sie Ihre Transformationsfunktion hoch .

Oder schnell und einfach:

Es gibt einen schnelleren Ansatz namens Ziegler-Nichols : Bildbeschreibung hier eingeben

Und in diesem Bild zeigen PID-Parameter Effekte :
Auswirkungen der PID-Parameter

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.