Ich verstehe den integralen Bestandteil des PID-Reglers nicht

12

Ich verstehe den integralen Bestandteil des PID-Reglers nicht. Nehmen wir diesen Pseudocode aus Wikipedia an:

previous_error = 0
integral = 0 
start:
  error = setpoint - measured_value
  integral = integral + error*dt
  derivative = (error - previous_error)/dt
  output = Kp*error + Ki*integral + Kd*derivative
  previous_error = error
  wait(dt)
  goto start

Das Integral wird zu Beginn auf Null gesetzt. Und dann wird der Fehler über die Zeit in die Schleife integriert. Wenn ich eine (positive) Sollwertänderung vornehme, wird der Fehler positiv und das Integral "frisst" die Werte über die Zeit (von Anfang an). Was ich jedoch nicht verstehe, ist, dass wenn sich der Fehler wieder auf Null stabilisiert, der integrale Teil immer noch einen bestimmten Wert hat (integrierte Fehler über die Zeit) und weiterhin zum Ausgabewert des Controllers beiträgt, dies sollte jedoch nicht der Fall sein, denn wenn der Fehler Null ist, Ausgabe von PID sollte auch Null sein, richtig?

Kann mir das bitte jemand erklären?

user561838
quelle

Antworten:

16

Der Hauptzweck des Integralterms besteht darin, den stationären Fehler zu beseitigen. Im Normalfall wird es einen kleinen Fehler im stationären Zustand geben, und das Integral wird hauptsächlich verwendet, um diesen Fehler zu beseitigen. Es ist jedoch wahr, dass, wenn der Fehler 0 wird, das Integral immer noch positiv ist und Sie zum Überschwingen bringt. Nach dem Überschießen beginnt das Integral wieder abzusinken. Dies ist der negative Effekt des Integralterms. Es gibt also immer einen Kompromiss, und Sie müssen den PID-Regler abstimmen, um sicherzustellen, dass das Überschwingen so gering wie möglich ist und der Dauerzustandsfehler minimiert wird. Hier kommt der abgeleitete Begriff ins Spiel. Der abgeleitete Term hilft, das Überschwingen im System zu minimieren.

JuliusG
quelle
8
Ein gutes Beispiel für einen stationären Fehler ist die Reibung in einem Gelenk. Nehmen wir an, Ihr PD-Controller bewegt sich in der Nähe Ihres Zielgelenkwinkels, kann jedoch aufgrund von Reibung nicht ganz dorthin gelangen. Der Begriff "I" wird sich langsam aufbauen und schließlich eine ausreichend große Eingabe erzeugen, um die Reibung zu überwinden.
Ben
2
Ein weiteres Beispiel ist die Lenkungsverzerrung. Wenn sich herausstellt, dass die Lenksteuerung leicht verzerrt ist oder bei Robotern mit Profil eine Spur langsamer als die andere, obwohl der Controller sie auf denselben Wert einstellt, liegt eine Verzerrung vor. Der richtig gesetzte Integralterm korrigiert dies.
ViennaMike
8

Stellen Sie sich vor, Sie richten einen PID-Regler an Ihrem eigenen Arm ein, damit Sie eine Tasse Kaffee direkt vor sich halten können.

  • Das proportionale Element würde Ihre Armstärke in Bezug auf Ihre Handposition steuern, die zu hoch oder zu niedrig ist.
  • Das abgeleitete Element würde diese Stärke basierend darauf anpassen, wie schnell Sie sich bereits bewegt haben, damit Sie Ihr Ziel nicht überschießen.
  • Das integrale Element würde die Auswirkungen der Schwerkraft ausgleichen; Ohne sie würde der Becher dort zum Stillstand kommen, wo die proportionale Kraft der Schwerkraft entsprach.

Es hört sich so an, als ob der Teil des Codes, an dem Sie festhalten, darin besteht, dass das System das Gewicht des Kaffees irgendwie messen muss. Eine Möglichkeit besteht darin, den Positionsfehler über die Zeit zu akkumulieren. Die meisten PID-Regler haben einen zusätzlichen Ausdruck, um eine angemessene Grenze für die Größe des Integralelements anzugeben.

Ian
quelle
2
+1. "Wenn der Fehler Null ist, sollte die Ausgabe der PID auch Null sein, oder?" Selbst wenn sich die Kaffeetasse in der perfekten Position befindet und der Fehler Null ist, muss die Ausgabe der PID eine Aufwärtskraft haben, um die Tasse in Position zu halten.
David Cary