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?
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?
Antworten:
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:
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.
Eine ähnliche experimentelle Methode wie die Antwort von hauptmech, die ich am College erhalten habe:
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.
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.
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.
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.
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.
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 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.
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.01sec
) Zeit für 20secs
als 3
x- 2000
Matrix)Es gibt einen schnelleren Ansatz namens Ziegler-Nichols :