Das Einstellen der Controller-Verstärkungen kann schwierig sein. Allgemeines Strategien funktionieren gut, um ein stabiles System zu erhalten, das zur richtigen Lösung konvergiert?
Kommentare
- Eine Frage, die auf eine spezifischere Frage abzielt, wäre mehr nützlich. Andernfalls sollten Sie sich nur den Artikel PID mit einem Abschnitt zur Optimierung
- I ‚ ansehen Ich habe immer festgestellt, dass die Optimierung von PIDs sehr stark von den Eigenschaften des Systems abhängt, weshalb ich ‚ nie festgestellt habe, dass Auto-Tuning-Systeme sind schrecklich nützlich. Sie sind für einen ersten Satz von Parametern mit geringer Leistung in Ordnung, aber sie sind weit vom Optimum entfernt, und Sie haben das gleiche Problem mit jeder allgemeinen Strategie, die nicht optimiert ist für die mechanischen, elektrischen und Steuerungsaspekte eines bestimmten Systems.
Antwort
Für Motoren mit kleinem Drehmoment Ein Verfahren, mit dem Sie eine gute Grundlinienabstimmung erzielen können, besteht darin, die Reaktion auf eine Störung zu prüfen.
Um eine PID abzustimmen, führen Sie die folgenden Schritte aus:
- Setzen Sie alle Verstärkungen auf Null.
- Erhöhen Sie die P-Verstärkung, bis die Reaktion auf eine Störung eine stetige Schwingung ist.
- Erhöhen Sie die D-Verstärkung, bis die Schwingungen verschwinden (dh es ist kritisch gedämpft).
- Wiederholen Sie die Schritte 2 und 3, bis durch Erhöhen der D-Verstärkung die Schwingungen nicht mehr gestoppt werden.
- Stellen Sie P und D auf die letzten stabilen Werte ein.
- Erhöhen Sie die I-Verstärkung, bis Sie den Sollwert mit der gewünschten Anzahl von Schwingungen erreicht haben (normalerweise Null, aber eine schnellere Reaktion ist möglich, wenn Sie ein paar Überschwingungsschwingungen nicht stören)
Welche Störung Sie verwenden, hängt von dem Mechanismus ab, an den die Steuerung 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 reduzieren P-Verstärkung.
Wenn Sie die D-Verstärkung zu hoch einstellen, beginnt das System zu klappern (vibriert mit einer höheren Frequenz als die P-Verstärkungsschwingungen). Reduzieren Sie in diesem Fall die D-Verstärkung, bis sie stoppt.
Ich glaube, diese Technik hat einen Namen. Ich werde ihn hier einfügen, wenn ich ihn finde.
Kommentare
- Klingt nach Ziegler-Nichols: en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
- @ Throwback1986, Dies ist definitiv nicht Ziegler-Nichols, der nur die P-Verstärkung verwendet und wo Die I- und D-Verstärkung werden dann entsprechend aus der oszillierenden P-Verstärkung und der Oszillationsperiode berechnet.
- Haben Sie zusätzliche Ratschläge zum Einstellen eines Roboterarms mit mehreren Gelenken, die abgestimmt werden müssen? Beginnen Sie von der Basis aus und arbeiten Sie nach außen zum Endeffektor oder umgekehrt, oder spielt es überhaupt eine Rolle?
- In einem akademischen oder industriellen Umfeld benötigen Sie eine ausgefeiltere Steuerungsmethode. Für einen Hobbiest; Die Schwerkraft wirkt dämpfend. Stellen Sie daher jedes Gelenk in dem Winkel ein, in dem die Schwerkraft die Motoren am wenigsten beeinflusst. Zum Beispiel mit dem Arm gerade nach oben, so dass die Schwerkraft auf die Lager und nicht auf den Motor wirkt. Bestellung spielt keine Rolle. Das Hinzufügen eines Feedforward-Schwerkraftkompensationsterms 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.
- Das Tool pidtuner.com hat mir bessere Ergebnisse gebracht als die Ziegler-Nichols-Methode, die mehrere bekannte Nachteile aufweist. folk.ntnu.no/skoge/publications/2003/tuningPID/more/…
Antwort
Eine ähnliche experimentelle Methode wie die Antwort von hauptmech, die mir am College beigebracht wurde:
- Setzen Sie alle Verstärkungen auf 0.
- Erhöhen Sie K d , bis das System schwingt.
- Reduzieren Sie K d um den Faktor 2-4.
- Setzen Sie K p auf ungefähr 1% von K
d . - Erhöhen Sie K p , bis die Oszillationen beginnen.
- Verringern Sie K
p um den Faktor 2-4.
- Setzen Sie K i auf ungefähr 1% von K
p .
- Erhöhen Sie K i , bis die Oszillationen beginnen.
- Verringern Sie K i um den Faktor 2-4.
Die Die Ziegler-Nichols-Methode ist genauer, wenn Sie eine genaue Zahl für die Schwingungsperiode erhalten können. Sie verursacht im Allgemeinen Schwingungen mit der „cla“ ssic PID „-Nummern angegeben, daher ist es nicht immer optimal.
Allgemeine Regeln für die Auswirkung jedes Terms auf Anstiegszeit, Überschwingen, Einschwingzeit, stationären Fehler und Stabilität finden Sie in Tabelle 1 von „PID Control System Analysis and Design“ von Li, Ang und Chong im IEEE Control Systems Magazine.
Kommentare
- Kd zuerst? Ich habe immer gedacht, dass es am besten ist, mit Kp zu beginnen.
- Ich ‚ transkribiere von alten Vorlesungsfolien, wenn es ‚ ist ein guter Grund, es nicht so zu machen. Ich ‚ wäre neugierig, es zu hören.
- Das ‚ ist der Algorithmus, den ich für “ Sitz der Hose “ Tuning befürworte. ‚ bringt Sie so nah wie möglich heran, ohne das System zu modellieren oder seine Reaktion zu messen. (Modellieren und / oder Messen ist der einzige Weg, wenn Sie wirklich die richtige Abstimmung benötigen.)
- Kd zuerst einstellen ‚ macht für mich keinen Sinn Wie in jeder PID, die ich ‚ implementiert habe, ist das Vorzeichen von Kd negativ. Es wird ‚ verwendet, um das Steuersignal zu reduzieren, wenn sehr große Fehleränderungen auftreten, die das System im Wesentlichen dämpfen. 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 ‚ immer dann, wenn eine große Änderung des Fehlers in die richtige Richtung auftritt, die Änderung noch schneller vornehmen und Ihr Ziel überschreiten.
- Eigentlich macht es zuerst Sinn, die D-Verstärkung abzustimmen, aber ich ‚ gehe davon aus, dass “ “ D-Verstärkung bedeutet Erhöhung des Absolutwerts und ‚ erhöht nur die Dämpfung. Das größte Problem bei der D-Verstärkung besteht darin, dass sie hochfrequentes Rauschen verstärkt und es ‚ schön ist, 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 Rauschen und verzögerte Fehlersignale verstärkt. Ich ‚ gehe davon aus, dass Sie für Schritt 2 Ihre Anlage stupsen müssen, um zu sehen, ob sie schwingt.
Antwort
Embedded.com hat meinen Artikel noch einmal verschoben, aber hier ist er jetzt. Dies zeigt Ihnen sowohl, wie Sie eine PID-Schleife schreiben (herauszufinden, wie Sie sie in etwas anderem als Gleitkomma ausführen, bleibt dem Leser als Übung überlassen) und wie Sie sie einstellen.
Der beste Weg hängt stark von Ihren Fähigkeiten ab. Der Weg, um die beste Abstimmung zu erzielen, vorausgesetzt, Sie sind eine erfahrene Hand des Steuerungssystems, besteht normalerweise darin, die Reaktion der Anlage zu messen („Anlage“ == „das, was Sie“ steuern „). Abhängig davon, wie Sie die Messungen durchgeführt haben, extrahieren Sie dann ein Modell der Anlage und entwerfen Sie es oder entwerfen Sie es direkt auf die Messungen.
Bei bestimmten schwierigen Pflanzen werden Sie feststellen, dass Sie es niemals zufriedenstellend machen können Messungen, in diesem Fall müssen Sie nur Modelle verwenden. Diese sind selten, aber zufriedenstellend, wenn Sie sie zum Laufen bringen.
Antwort
Sebastian Thrun präsentierte einen einfachen Algorithmus zum Einstellen der PID in seinem Klasse „Programmieren eines Roboterautos“. Es heißt „Twiddle“, er beschreibt es hier .
Twiddle ist sehr anfällig dafür, lokale Minima zu finden – das bedeutet, dass Sie Das Problem beim Einstellen von PID-Konstanten ist eine Teilmenge eines allgemeineren Suchproblems, um bestimmte Parameter zu finden, um den Nutzen zu maximieren (drei Konstanten, die in Ordnung, aber nicht optimal für die Situation sind. In diesem Fall wird der Fehler des PID-Algorithmus minimiert. Sie können nach anderen allgemeinen Lösungen für dieses Problem suchen, z. B. Bergsteigen, simuliertes Tempern, genetische Algorithmen usw., die möglicherweise zu optimaleren Lösungen führen.
Antwort
Im Gegensatz zu den beiden anderen Antworten würde ich sagen, dass eine gute manuelle Methode zum Einstellen einer PID darin besteht, den Kd zu ignorieren. Beginnen Sie also bei 0 und erhöhen Sie Kp, bis Sie das Ziel erreichen. Erhöhen Sie dann Ki, um Fehler im eingeschwungenen Zustand zu beseitigen.
Kd kann das Problem verwirren, da es schlecht auf Rauschen reagiert. Dann fügen Sie Filter hinzu auf Ihrem Analogeingang und fragen Sie dann, was dies bewirkt, außer Ihre Kontrolle zu verlangsamen und das Ganze schwieriger zu machen …
Eine andere Sache, die mich verwirren muss, ist, wenn die PID-Gleichung in der Standardform vorliegt oder in einer unabhängigen (parallel in Wikipedia) Form. 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.
Antwort
Systemmodellierung
Natürlich kann die experimentelle Abstimmung wie in den anderen Antworten erwähnt durchgeführt werden, aber wenn Sie in der Lage sind, ein vernünftiges dynamisches Modell für alles zu definieren, was Sie steuern möchten, und Identifizieren der Parameter sollten Sie in der Lage sein, Ihren Controller anhand genau definierter Kriterien wie Überschwingen , Anstiegszeit , Einschwingzeit , konstant -state Fehler und so weiter.
In MATLAB gibt es sogar Tools, mit denen Sie Ihren Controller so einstellen können, dass er für eine Kombination dieser Kriterien optimiert wird, was ihn noch besser macht zu verwenden.
Kennen Sie Ihren Controller
Erfahren Sie, was jeder Parameter in der Der PID-Regler ist ebenfalls sehr hilfreich. Alle experimentellen Algorithmen basieren irgendwie auf dieser Art von Wissen. Wenn Sie nicht nur den Anweisungen folgen, sondern dieses Gefühl auch selbst bekommen, fällt es Ihnen möglicherweise leichter, Ihren Controller manuell einzustellen.
Probleme in der realen Welt
Es besteht die Möglichkeit, dass eines dieser Dinge unter anderem beim Einstellen Ihres Controllers auf den Weg kommt: windup , unzureichende Abtastrate , Sättigung .
Fazit
Am Ende hängt alles davon ab, was Sie tatsächlich mit Ihrem Gerät tun können System, um etwas Wissen darüber zu bekommen, wie es funktioniert und welche Art von Experimenten durchgeführt werden können. Das Beste ist, tatsächlich mehr über PID-Regler und Regelungstheorie im Allgemeinen zu erfahren, IMO, aber ich bin voreingenommen 🙂
Kommentare
- I. ‚ verstehe nicht, warum immer wieder Heuristiken zur Optimierung der PID vorgeschlagen werden, während wir heutzutage mit zahlreichen automatischen Werkzeugen zur Anlagenidentifizierung und zum Reglerdesign ausgestattet sind, die nicht ‚ erfordert keinen tiefen theoretischen Hintergrund. Daumen hoch für diese Antwort.
Antwort
Ich werde versuchen, meine Erfahrungen für diejenigen, die interessiert sein könnten, ein wenig zu erweitern. Ich denke, das Problem ist, dass wir eine Menge Steuerungstheorie haben, die etwas unzugänglich (und manchmal nicht nützlich) ist, und dann haben wir Faustregeln, die Annahmen über Systeme treffen, die oft ungenau sind.
Stabilität
Lassen Sie uns zunächst darüber sprechen, 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 Steuerungssystems ändern, Ihr Ausgang mit demselben 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 Regelpfad ansehen, haben Sie einen Sollwert, Ihren PID-Regler, Ihr System (auch bekannt als) „Pflanze“) 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 zurückgemeldet wird). In einem instabilen System bewirkt Ihre Rückkopplung, dass der Regelkreis den Fehler verstärkt, anstatt ihn so zu reduzieren, dass mit zunehmender Zeit Ihre Amplitude zunimmt. Der Grund dafür ist eine Verzögerung oder für diese bestimmte Frequenz eine Phasenverschiebung zwischen Eingang und Ausgang. Für eine gegebene Frequenz können wir diese Verschiebung und Amplitude des Ausgangs im offenen Regelkreis (dh ohne Rückkopplung) betrachten, und wenn wir alle in einem Diagramm zeichnen, erhalten wir so etwas wie ein Bode-Plot . Wenn wir in diesem Open-Loop-Diagramm eine Situation haben, in der der Fehler immer weiter verstärkt wird, haben wir ein instabiles System. Wenn die Verzögerung weniger als die Hälfte der Wellenlänge oder die Verstärkung kleiner als x1 ist, ist das System stabil . In der Praxis wollen wir ab diesem Punkt einen gewissen Spielraum (Gewinnspanne und Phasenrand), weshalb Sie diesen „Rückzieher“ in vielen manuellen / heuristischen Methoden sehen werden.
Das Hauptproblem bei diesen Handbüchern Methoden sind, dass Sie „blind fliegen und Sie so ziemlich garantiert ein schlechtes Kontrollsystem bekommen.
Denken Sie auch daran, dass die Bedeutung P, I und D mit dem zusammenhängt, was Ihr Sensor misst und Welche Kontrolle wenden Sie an? Ein häufiger Fehler bei selbstgebauten Controllern besteht darin, dass die Leute glauben, sie würden P anwenden, wenn sie es tatsächlich nicht tun. Motorsteuerungen 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 beim Aufbau eines eigenen PID-Reglers auch eine Methode zur Messung des offenen Regelkreises entwickeln sollten Antwort. Führen Sie einen Frequenzdurchlauf am Eingang Ihres Controllers durch und messen Sie den Sensorausgang bei nicht angeschlossener Rückkopplung. Anschließend können Sie das Bode-Diagramm mit offener Schleife zeichnen und sehen , warum Ihr System stabil ist und handeln kann Es ist auch nützlich, die Reaktion des geschlossenen Regelkreises zu messen, und Sie können dies mit jedem System tun, indem Sie einen Frequenzdurchlauf Ihres Sollwerts durchführen, während der Regelkreis geschlossen ist. Beides ist nicht so schwer und erfordert nicht viel theoretisches Wissen.
Wenn Sie einfach die Steuerung optimieren, ohne zu verstehen, was unter der Haube vor sich geht, werden Sie nicht in der Lage sein Es ist nicht so schwer, eine gewisse Intuition über diese Systeme aufzubauen. Z.B. Die Proportionalverstärkung hat keinen Einfluss auf die Phase, sondern erhöht einfach die Open-Loop-Verstärkung über alle Frequenzen. Was Sie also tun, wenn Sie die proportionale Verstärkung bei all diesen manuellen Abstimmungsmethoden erhöhen, ist die Ermittlung der Frequenz, bei der die Phase auf -180 geht. Weitere Informationen zu den Auswirkungen der verschiedenen Steuerelemente auf Ihren Frequenzgang finden Sie unter .
Sehr oft ist es am besten, die beste Leistung im geschlossenen Regelkreis zu erzielen Optimieren Sie das System und nicht nur den Controller. 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 sollte die Proportionalverstärkung den größten Teil der „Arbeit“ und der Integrator den „Rest“ erledigen. Ich glaube nicht, dass Sie überhaupt einen D-Term benötigen. Ein Tiefpassfilter und ein Sperrfilter helfen sehr in Situationen, in denen Sie möglicherweise mechanische Resonanzen haben, aber das Einstellen ohne Bode-Plot ist sehr schwierig (die beobachtete Schwingungsfrequenz) im geschlossenen Regelkreis kann sich von dem 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 einige einsetzen Grenzwerte, bevor Sie mit der Abstimmung beginnen (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 hat, sind Ihre Parameter wird ein Faktor von 100 für ein gegebenes System sein. Mein Ansatz wäre, zuerst einen Bereich zu finden, in dem Sie eine schlechte Steuerbarkeit haben, und dann von dort aus mit P und dann mit I hochzufahren (obwohl Sie wieder blind fliegen). Durch Zurücksetzen wird dieser Stabilitätsspielraum erstellt.
Jenseits der geschlossenen Schleife
Geschlossene Schleife versucht, den Fehler aus dem System zu entfernen. Die Leistung wird immer etwas eingeschränkt sein. Sie möchten den Fehler minimieren, den Ihr Regler sieht, und eine Möglichkeit, dies zu tun, ist eine Technik namens feed vorwärts . In der Vorwärtskopplung gehen Sie um die Steuerung herum und geben einen Befehl direkt an das System weiter. Ein Beispiel hierfür wäre die Beschleunigungskopplung. Wenn Sie wissen, dass Sie die Drehmomentkonstante des Motors wieder kennen und die Last Sie können ziemlich genau sagen, wie viel Strom Sie fahren müssen, um eine bestimmte Beschleunigung der Last zu erhalten. Sie nehmen einfach die Beschleunigung der Befehlseingabe, multiplizieren sie mit einer Konstanten und fügen diese dem Antriebsbefehl der Steuerung hinzu. Sie tun im Grunde das, was nötig wäre, um das System zu steuern, wenn es keinen Controller gäbe. Je näher Sie kommen, desto weniger Fehler muss Ihre Schleife entfernen und desto besser wird die Leistung Ihres Systems. In der Praxis macht dies einen großen Unterschied / p>
Kommentare
- “ Nach meiner Erfahrung in Motorsteuerungsanwendungen sollte die proportionale Verstärkung sein Die meisten “ Arbeiten erledigen “ und der Integrator die “ rest „. Ich ‚ glaube nicht, dass Sie überhaupt einen D-Term benötigen. “ Dem würde ich zustimmen Für typische Motorsteuerungsanwendungen: Das P erledigt die Hauptaufgabe und das I kompensiert langfristige Drift / Fehler. Hier ist der Quadcopter jedoch vielen externen Turbulenzen ausgesetzt, sodass der D-Term wichtig ist, um eine schnelle Reaktion zu erhalten für den I-Term ist es ist nicht so wichtig.
- @ dm76: Der größte Teil meiner Erfahrung ist mit Motorsteuerung, und ich mache diesen Haftungsausschluss 😉 Meine Intuition sagt jedoch, dass es ‚ bietet in Quadcopter-Anwendungen immer noch Platz für I und ich denke, wenn P sehr hoch ist, kann es mit externen Störungen umgehen (genau wie bei der Motorsteuerung). Ich müsste mir diese Systeme wirklich genauer ansehen, um etwas Bestimmtes über Quadcopter zu sagen …Ich denke, dass vieles, was ich hier sage, zutrifft (insbesondere Ihre Abstimmung im Frequenzbereich und die Open-Loop-Antwort des Systems).
- @ dm76: Und wirklich diese “ Faustregel “ Die PID-Abstimmung führt zu einer sehr mittelmäßigen Leistung bei Motoren und vermutlich bei Quadcoptern. Manchmal kann ein gut platzierter Sperrfilter einen Unterschied in der Größenordnung bewirken …
Antwort
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 Google „Self-Tuning PID“ für einige automatisierte Techniken. Mein Favorit ist die Anwendung neuronaler Netze auf die PID-Abstimmung.
Antwort
Wenn Sie einen genauen PID-Koeffizienten wünschen:
- Ruft Ihre statistischen Aktordaten ab (dh sammelt Eingangsspannungen + Encoderimpulse in einer Konstante häufig (
0.01sec
) Zeit für20secs
als3
x2000
Matrix) - Rufen Sie die Übertragungsfunktion (TF) Ihres Stellantriebs ab (mithilfe der Toolbox Ident in MATLAB).
- Verwenden Sie abschließend PIDTool Toolbox in MATLAB und laden Sie Ihre Transformationsfunktion hoch.
Oder auf schnelle und einfache Weise:
Es gibt einen schnelleren Ansatz namens Ziegler-Nichols :