1. PID-Regler (engl. PID controller)
Ein Proportional-Integral-Derivativ-Regler (PID-Regler) ist eine gängige Rückkopplungskomponente in industriellen Steuerungssystemen.
[Dieser Unterabschnitt ist einem viel umfangreicheren Artikel entnommen, der unter https://en.wikipedia.org/wiki/PID_controller zu finden ist.]
Der Regler vergleicht einen Messwert aus einem Prozess (in der Regel ein industrieller Prozess) mit einem Referenzsollwert. Die Differenz (oder das "Fehlersignal") wird dann verwendet, um einen neuen Wert für einen manipulierbaren Eingang in den Prozess zu berechnen, der den Prozessmesswert wieder auf den gewünschten Sollwert bringt.
Im Gegensatz zu einfacheren Regelalgorithmen kann der PID-Regler die Prozessausgänge auf der Grundlage des Verlaufs und der Änderungsrate des Fehlersignals anpassen, was eine genauere und stabilere Regelung ermöglicht. (Es lässt sich mathematisch nachweisen, dass eine PID-Regelschleife in Fällen, in denen eine einfache proportionale Regelung entweder einen stationären Fehler aufweisen oder den Prozess zum Schwingen bringen würde, eine genaue, stabile Regelung ergibt).
1.1. Grundlagen des Regelkreises
Intuitiv versucht die PID-Schleife das zu automatisieren, was ein intelligenter Bediener mit einem Messgerät und einem Regelknopf tun würde. Der Bediener würde ein Messgerät ablesen, das den Ausgangsmesswert eines Prozesses anzeigt, und den Drehknopf verwenden, um den Eingang des Prozesses (die "Aktion") anzupassen, bis sich der Ausgangsmesswert des Prozesses auf dem gewünschten Wert auf dem Messgerät stabilisiert.
In der älteren Steuerungsliteratur wird dieser Einstellvorgang als "Rückstellung" bezeichnet. Die Position der Nadel auf dem Messgerät ist eine "Messung", ein "Prozesswert" oder eine "Prozessvariable". Der gewünschte Wert auf dem Messgerät wird als "Sollwert" bezeichnet (auch "Einstellwert" genannt). Die Differenz zwischen der Nadel des Messgeräts und dem Sollwert ist der "Fehler".
Ein Regelkreis besteht aus drei Teilen:
-
Messung durch einen an den Prozess angeschlossenen Sensor (z. B. Encoder),
-
Entscheidung in einem Steuerungselement,
-
Aktion durch ein Ausgabegerät wie z. B. einen Motor.
Wenn der Regler einen Sensor abliest, subtrahiert er diese Messung vom "Sollwert", um den "Fehler" zu ermitteln. Anhand des Fehlers berechnet er dann eine Korrektur der Eingangsvariablen des Prozesses (die "Aktion"), so dass diese Korrektur den Fehler aus der Ausgangsmessung des Prozesses entfernt.
In einer PID-Schleife wird die Korrektur auf drei Arten aus dem Fehler berechnet: Der aktuelle Fehler wird direkt ausgeglichen (Proportional), die Zeit, in der ein Fehler unkorrigiert geblieben ist (Integral), und der zukünftige Fehler wird aus der Änderungsrate des Fehlers über die Zeit vorweggenommen (Derivativ).
Ein PID-Regler kann zur Regelung jeder messbaren Größe verwendet werden, die durch die Beeinflussung einer anderen Prozessgröße beeinflusst werden kann. Er kann zum Beispiel zur Regelung von Temperatur, Druck, Durchfluss, chemischer Zusammensetzung, Geschwindigkeit oder anderen Variablen eingesetzt werden. Ein Beispiel für einen Prozess außerhalb der Industrie, bei dem eine grobe PID-Regelung zum Einsatz kommt, ist die Geschwindigkeitsregelung von Autos.
Einige Regelsysteme ordnen PID-Regler in Kaskaden oder Netzwerken an. Das heißt, ein "Master"-Regler erzeugt Signale, die von "Slave"-Reglern verwendet werden. Eine häufige Situation sind Motorsteuerungen: Oft soll der Motor eine geregelte Drehzahl haben, wobei der "Slave"-Regler (oft in einen Frequenzumrichter eingebaut) die Drehzahl direkt auf der Grundlage eines proportionalen Eingangs steuert. Dieser Slave-Eingang wird vom Ausgang des Master-Reglers gespeist, der auf der Grundlage einer verwandten Variablen regelt.
1.2. Theorie
PID ist nach seinen drei korrigierenden Berechnungen benannt, die alle die kontrollierte Menge ergänzen und anpassen. Diese Additionen sind eigentlich "Subtraktionen" von Fehlern, da die Proportionen normalerweise negativ sind:
Dazu wird die Regelabweichung mit einer (negativen) Konstante P (für "proportional") multipliziert und zur Regelgröße addiert (und die Regelabweichung davon subtrahiert). P ist nur in dem Bereich gültig, in dem der Ausgang eines Reglers proportional zur Regelabweichung des Systems ist. Ist die Regelabweichung gleich Null, dann ist der Ausgang eines Proportionalreglers gleich Null.
Um aus der Vergangenheit zu lernen, wird die Abweichung über einen bestimmten Zeitraum integriert (aufaddiert), dann mit einer (negativen) Konstante I multipliziert (ein Mittelwert gebildet) und zur Regelgröße addiert (die Abweichung wird von ihr subtrahiert). I mittelt die gemessene Abweichung, um die durchschnittliche Abweichung des Prozessausgangs vom Sollwert zu ermitteln. Ein einfaches proportionales System schwingt entweder hin und her um den Sollwert, weil es nichts gibt, um die Abweichung zu beseitigen, wenn es über den Sollwert hinausgeht, oder es schwingt und/oder stabilisiert sich bei einem zu niedrigen oder zu hohen Wert. Indem ein negativer Anteil des durchschnittlichen Fehlers zum Prozesseingang addiert (d. h. ein Teil davon abgezogen) wird, verringert sich immer weiter die durchschnittliche Differenz zwischen dem Prozessausgang und dem Sollwert. Daher wird sich der Prozessausgang einer gut abgestimmten PID-Schleife schließlich auf den Sollwert einpendeln.
Für die Zukunft wird die erste Ableitung (die Steigung der Regelabweichung) nach der Zeit berechnet und mit einer anderen (negativen) Konstante D multipliziert und ebenfalls zur Regelgröße addiert (und die Regelabweichung davon abgezogen). Der Ableitungsterm steuert die Reaktion auf eine Änderung im System. Je größer der Ableitungsterm ist, desto schneller reagiert der Regler auf Änderungen im Ausgang des Prozesses.
Technisch gesehen kann eine PID-Schleife als ein Filter charakterisiert werden, der auf ein komplexes System im Frequenzbereich angewendet wird. Dies ist nützlich, um zu berechnen, ob tatsächlich ein stabiler Wert erreicht wird. Werden die Werte falsch gewählt, kann der Eingang des geregelten Prozesses schwanken und der Ausgang des Prozesses bleibt möglicherweise nie auf dem Sollwert.
1.3. Schleifenabstimmung (engl. loop tuning)
Das Tuning eines Regelkreises ist die Anpassung seiner Regelparameter (Verstärkung/Proportionalbereich, Integralverstärkung/Rückstellung, Ableitungsverstärkung/Rate) an die optimalen Werte für das gewünschte Regelverhalten. Das optimale Verhalten bei einer Prozess- oder Sollwertänderung hängt von der jeweiligen Anwendung ab. Bei einigen Prozessen darf die Prozessvariable nicht über den Sollwert hinausschießen. Bei anderen Prozessen muss der Energieaufwand für das Erreichen eines neuen Sollwerts minimiert werden. Im Allgemeinen ist eine stabile Reaktion erforderlich, und der Prozess darf bei keiner Kombination von Prozessbedingungen und Sollwerten schwanken.
Die Abstimmung von Regelkreisen wird durch die Reaktionszeit des Prozesses erschwert; es kann Minuten oder Stunden dauern, bis eine Sollwertänderung eine stabile Wirkung zeigt. Einige Prozesse weisen einen gewissen Grad an Nichtlinearität auf, so dass Parameter, die unter Volllastbedingungen gut funktionieren, beim Anfahren des Prozesses im Leerlauf nicht funktionieren. In diesem Abschnitt werden einige herkömmliche manuelle Methoden zur Regelkreisabstimmung beschrieben.
Es gibt mehrere Methoden zur Abstimmung einer PID-Schleife. Die Wahl der Methode hängt weitgehend davon ab, ob die Schleife für die Abstimmung "offline" genommen werden kann oder nicht, sowie von der Reaktionsgeschwindigkeit des Systems. Wenn das System offline geschaltet werden kann, besteht die beste Abstimmungsmethode oft darin, das System einer sprunghaften Änderung des Eingangs zu unterziehen, den Ausgang als Funktion der Zeit zu messen und diese Reaktion zur Bestimmung der Regelparameter zu verwenden.
Wenn das System am Netz bleiben muss, besteht eine Abstimmungsmethode darin, zunächst die Werte für I und D auf Null zu setzen. Erhöhen Sie den P-Wert, bis der Ausgang der Schleife schwingt. Dann erhöhen Sie I, bis die Oszillation aufhört. Schließlich erhöhen Sie D, bis die Schleife ihren Sollwert akzeptabel schnell erreicht. Bei einer schnellen PID-Schleifenabstimmung kommt es in der Regel zu einem leichten Überschwingen, um den Sollwert schneller zu erreichen; einige Systeme können jedoch kein Überschwingen akzeptieren.
Parameter | Anstiegszeit (engl. rise time) | Überschwingen | Eingewöhnungszeit (engl. settling time) | Fehler im eingeschwungenen Zustand |
---|---|---|---|---|
P |
Verringerung |
Erhöhung |
Kleine Veränderung |
Verringerung |
I |
Verringerung |
Erhöhung |
Erhöhung |
Eliminieren |
D |
Kleine Veränderung |
Verringerung |
Verringerung |
Kleine Veränderung |
Auswirkungen steigender Parameter
Ziegler-Nichols-Methode, eingeführt von John G. Ziegler und Nathaniel B. Nichols 1942 F
[Ziegler, J. G. und Nichols, N. B. (1942), Optimum Settings for Automatic Controllers, Transactions of the ASME, DOI 10.1115/1.2899060 und link:https://web.archive.org/web/20170918055307/http://staff.guilan.ac.ir/staff/users/chaibakhsh/fckeditor_repo/file/documents/Optimum%20Settings%20for%20Automatic%20Controllers%20(Ziegler%20and%20Nichols ,%201942).pdf[Das Internet-Archiv]
.]. Es beginnt auf die gleiche Weise wie die zuvor beschriebene Methode: Stellen Sie zuerst die I- und D-Verstärkung auf Null und erhöhen Sie dann die P-Verstärkung und setzen Sie die Schleife externen Störungen aus, z. B. indem Sie die Motorachse anklopfen, um sie aus dem Gleichgewicht zu bringen, um die kritische Verstärkung und die Schwingungsperiode zu bestimmen, bis der Ausgang der Schleife zu schwingen beginnt. Notieren Sie die kritische Verstärkung (Kc) und die Schwingungsperiode des Ausgangs (Pc). Passen Sie dann die Steuerelemente P, I und D an, wie in der Tabelle gezeigt:
Steuerungstyp | P | I | D |
---|---|---|---|
P |
.5Kc |
||
PI |
.45Kc |
Pc/1.2 |
|
PID |
.6Kc |
Pc/2 |
Pc/8 |
Nach der Einstellung der Achse überprüfen Sie den folgenden Fehler mit Halscope, um sicherzustellen, dass er den Anforderungen Ihrer Maschine entspricht. Weitere Informationen zu Halscope finden Sie in der HAL-Bedienungsanleitung.
1.4. Automatische PID-Abstimmung
Seit LinuxCNC Version 2.9 unterstützt die pid-Komponente die automatische Abstimmung mit der Relay-Methode Fußnote:[Åström, Karl Johan und Hägglund, Tore (1984), Automation paper Automatic Tuning of Simple Regulators with Specifications on Phase and Amplitude Margins, DOI 10.1016/0005-1098(84)90014-1]. Dies ist ein Ersatz für die jetzt entfernte und veraltete at_pid-Komponente.
Die PID-Komponente verwendet mehrere Konstanten, um den Ausgangswert auf der Grundlage des aktuellen und des gewünschten Zustands zu berechnen. Die wichtigsten Konstanten sind Pgain, Igain, Dgain, bias, FF0, FF1, FF2 und FF3. Alle diese Parameter müssen einen vernünftigen Wert haben, damit sich der Regler richtig verhält.
Bei der derzeitigen Implementierung der automatischen Abstimmung werden zwei verschiedene Algorithmen verwendet, die über den Tune-Type-Pin ausgewählt werden. Ist der Tune-Type gleich Null, wirkt er sich auf Pgain, Igain und Dgain aus, während FF0, FF1 und FF2 auf Null gesetzt werden. Ist der Tune-Type 1, wirkt er sich auf Pgain, Igain und FF1 aus, während Dgain, FF0 und FF2 auf Null gesetzt werden. Hinweis: Bei Typ 1 muss die Skalierung so eingestellt werden, dass die Ausgabe in Benutzereinheiten pro Sekunde erfolgt.
Beim automatischen Tuning eines Motors mit Tune-Typ 0 erzeugt der Algorithmus ein Rechteckwellenmuster, das um den "Bias"-Wert auf dem Ausgangspin des PID-Reglers zentriert ist und sich vom positiven Extrem zum negativen Extrem des Ausgangsbereichs bewegt. Dies kann mit dem HAL Scope von LinuxCNC gesehen werden. Für eine Motorsteuerung, die +-10 V als Steuersignal nimmt, kann dies den Motor für kurze Zeit mit voller Geschwindigkeit in eine Richtung beschleunigen, bevor er angewiesen wird, in die entgegengesetzte Richtung mit voller Geschwindigkeit zu fahren. Stellen Sie sicher, dass auf beiden Seiten der Startposition viel Platz ist, und beginnen Sie mit einem niedrigen "Tune-Effort" -Wert, um die verwendete Geschwindigkeit zu begrenzen. Der Wert tune-effort definiert den extremen output-Wert, der verwendet wird, wenn also tune-effort 1 ist, verschiebt sich der output-Wert während des Tunings von 1 auf -1. Mit anderen Worten, die Extreme des Wellenmusters werden durch den "Tune-Effort" -Pin gesteuert. Ein zu hoher "Tune-Effort" kann den Motortreiber überlasten.
Die Anzahl der Zyklen im Tune-Muster wird durch den Pin tune-cycles gesteuert. Wenn man versucht, die Richtung eines physikalischen Objekts sofort zu ändern (z. B. indem man direkt von einer positiven Spannung zur entsprechenden negativen Spannung im Fall des Motorcontrollers übergeht), ändert sich die Geschwindigkeit natürlich nicht sofort, und es dauert einige Zeit, bis das Objekt langsamer wird und sich in die entgegengesetzte Richtung bewegt. Dies führt zu einer gleichmäßigeren Wellenform auf dem Positionsstift, da die betreffende Achse hin und her schwingt. Wenn die Achse die Zielgeschwindigkeit in der entgegengesetzten Richtung erreicht hat, wechselt der Autotuner erneut die Richtung. Nach mehreren dieser Änderungen wird die durchschnittliche Zeitverzögerung zwischen den "Spitzen" und "Tälern" dieser Bewegungskurve verwendet, um die vorgeschlagenen Werte für "Pgain", "Igain" und "Dgain" zu berechnen und sie in das HAL-Modell einzufügen, das vom PID-Regler verwendet wird. Die automatisch abgestimmten Einstellungen sind nicht perfekt, können aber einen guten Ausgangspunkt für die weitere Abstimmung der Parameter bilden.
FIXME: Der Autor dieser Anleitung hat die automatische Abstimmung mit Tune-Type auf 1 nicht getestet, so dass dieser Ansatz noch dokumentiert werden muss.
Mit diesem Wissen bewaffnet, ist es nun an der Zeit, sich anzuschauen, wie man die Einstellung vornimmt. Nehmen wir an, die fragliche HAL-Konfiguration lädt die PID-Komponente für X, Y und Z wie folgt, wobei benannte Pin-Namen anstelle von "count=3" verwendet werden:
loadrt pid names=pid.x,pid.y,pid.z
Wenn die Komponente stattdessen count=3 verwendet hätte, müssten alle Verwendungen von pid.x, pid.y und pid.z in pid.1, pid.2 bzw. pid.3 geändert werden. Um mit der Einstellung der X-Achse zu beginnen, bewegen Sie die Achse in die Mitte ihres Bereichs, um sicherzustellen, dass sie nirgendwo anstößt, wenn sie sich hin und her bewegt. Sie wollen auch die Achse ferror Grenze (Schleppfehler) zu verlängern, um LinuxCNC akzeptieren die höhere Positionsabweichung während der Abstimmung zu machen. Die sinnvolle ferror Grenze hängt von der Maschine und Setup, aber 1 Zoll oder 20 mm könnten nützliche Ausgangspunkte sein. Als nächstes setzen Sie den anfänglichen tune-effort auf eine niedrige Zahl im Leistungsbereich, z.B. 1/100 der maximalen Leistung, und erhöhen ihn langsam, um genauere Tuningwerte zu erhalten. Weisen Sie dem Wert "tune-mode" den Wert 1 zu. Beachten Sie, dass dadurch der PID-Steuerungsteil deaktiviert wird und der "Bias"-Wert an den Ausgangspin geleitet wird, was zu einer starken Abweichung führen kann. Es könnte eine gute Idee sein, den Motortreiber abzustimmen, um sicherzustellen, dass die Null-Eingangsspannung keine Motordrehung verursacht, oder den bias-Wert für den gleichen Effekt anzupassen. Nachdem Sie tune-mode eingestellt haben, setzen Sie tune-start auf 1, um die automatische Abstimmung zu aktivieren. Wenn alles gut geht, wird Ihre Achse einige Sekunden lang vibrieren und sich hin und her bewegen, und danach werden die neuen Werte für Pgain, Igain und Dgain aktiv sein. Um sie zu testen, ändern Sie tune-mode wieder auf 0. Beachten Sie, dass das Zurücksetzen von tune-mode auf Null zu einem plötzlichen Ruckeln der Achse führen kann, wenn die Achse wieder in die Sollposition gebracht wird, von der sie während des Tunings möglicherweise abgedriftet ist. Zusammenfassend lässt sich sagen, dass dies die halcmd-Anweisungen sind, die Sie für die automatische Abstimmung eingeben müssen:
setp pid.x.tune-effort 0.1
setp pid.x.tune-mode 1
setp pid.x.tune-start 1
# warten, bis die Abstimmung abgeschlossen ist
setp pid.x.tune-mode 0
Ein Skript zu helfen, die automatische Abstimmung ist in der LinuxCNC-Code-Repository als scripts/run-auto-pid-tuner zur Verfügung gestellt. Dies wird sicherstellen, dass die Maschine eingeschaltet ist und bereit zu laufen, referenziert alle Achsen, wenn es nicht bereits getan ist, überprüfen Sie, ob die zusätzlichen Tuning-Pins verfügbar sind, bewegen Sie die Achse zu seinem Mittelpunkt, führen Sie die Auto-Tuning durch und wieder aktivieren Sie die Pid-Controller, wenn es fertig ist. Dieser Vorgang kann mehrmals wiederholt werden.