PID-Regler-Simulator für Robotik-Regelungssysteme
Stimme P-, I- und D-Verstärkung ab und visualisiere Sprungantwort, Fehler, Sättigung und Störungen im interaktiven PID-Simulator.
- Kategorie
- Regelungstechnik
- Zeitaufwand
- 60–120 Min.
- Plattform
- Browser · Arduino
01 / Hier starten
Einführung
PID-Regelung steckt überall in der Robotik: Raddrehzahl, Fahrtrichtung, Gelenkposition und Balancesysteme beruhen auf Rückkopplung. Dieses Projekt macht den Regler zum sichtbaren Experiment. Ändere eine Verstärkung, störe die Strecke und verknüpfe die Kurve mit dem Code für Arduino oder Mikrocontroller.
Live lab / Deterministic sampled control loop
PID controller simulator
Drive a second-order plant toward a setpoint. Tune each gain, inject a load, and watch response, error, and control effort in real time.
Three stacked plots share a scrolling time axis: measured output against the setpoint line, tracking error around zero, and control effort inside the shaded actuator-limit band.
- Setpoint
- 1.00
- Measured
- 0.000
- Error
- 1.000
- Control
- 0.000
- Overshoot
- 0%
- Steady-state error
- 1.000
Keyboard: focus the plots, then use Space to run/pause, N to step, R to reset, G to toggle the load, and F for full screen.
Steuerung
Der Simulator bietet Sollwert, P-, I- und D-Verstärkung, Abtastintervall, Aktorbegrenzung und Störgröße. Synchronisierte Diagramme zeigen Sollwert, Messwert, Fehler und Stellgröße. Zurücksetzen löscht den Reglerspeicher, damit Versuche vergleichbar bleiben.
Theorie
Ein Regler mit Rückkopplung berechnet den Fehler als Sollwert minus Messwert. Der P-Anteil reagiert sofort, der I-Anteil sammelt bleibende Fehler auf und der D-Anteil antwortet auf die Änderungsgeschwindigkeit. Ihre Summe wird zum Stellsignal.
Die Regelgüte ist durch die Strecke begrenzt. Zu langsame Abtastung verbirgt Bewegung; Ansteuerung über die Aktorgrenze hinaus verursacht Sättigung; verrauschte Messungen machen einen ungefilterten D-Anteil instabil. Abstimmen ist daher ein Experiment mit Regler und System zugleich.
Algorithmus
- Messwert in festem Intervall lesen und Fehler berechnen.
- Begrenztes Integral mit dem echten Zeitschritt aufintegrieren.
- Differenzial aus Messwert oder Fehler schätzen und sinnvoll filtern.
- Die drei gewichteten Anteile summieren und auf den Aktorbereich begrenzen.
- Befehl ausgeben, vorherige Abtastung speichern und Kennzahlen erfassen.
- Integral und Verlauf zurücksetzen, wenn sich Regelmodus oder Strecke stark ändern.
Quellcode
Diese Implementierung enthält einen einfachen Anti-Windup:
float updatePid(float setpoint, float measured, float dt) {
const float error = setpoint - measured;
const float derivative = (error - previousError) / dt;
const float candidateIntegral = integral + error * dt;
const float raw = kp * error + ki * candidateIntegral + kd * derivative;
const float output = constrain(raw, outputMin, outputMax);
if (raw == output) integral = candidateIntegral;
previousError = error;
return output;
}
Produktionsregler legen zusätzlich das Verhalten bei ungültigen Messungen, Zeitgeberüberläufen, Moduswechseln und Aktorfehlern fest.
Annahmen und Unterschiede zur Hardware
Die Strecke hier ist ein sauberes Modell zweiter Ordnung mit bekannter Masse, Dämpfung und Verzögerung, die du per Schieberegler setzt — kein echter Motor mit Reibung, Totzone, drehzahlabhängigem Drehmoment und warm werdendem Treiber. Die Abtastung ist konstruktionsbedingt fest, sodass der D-Anteil gutmütig bleibt; auf einem Arduino verzerren delay() oder andere blockierende Arbeiten das Intervall, und der D-Anteil reagiert falsch, obwohl die Verstärkungen gleich sind. Aktorsättigung ist als harte Begrenzung mit Anti-Windup modelliert, ein physisches System kennt zusätzlich Stromgrenzen, Spannungseinbrüche und Wärme, die die Grenze im Betrieb verschieben. Stimme hier die Form ab und verifiziere auf Hardware, wo die Strecke nur näherungsweise bekannt ist.
Schaltplan
Der Rückführungssensor meldet den echten Ausgang; er ersetzt keine Strombegrenzung und keinen Hardware-Not-Aus. Der Regler vergleicht den Sollwert mit dem aufbereiteten Sensormesswert und treibt den Aktor über eine PWM-Stufe an, die für die Last bemessen ist.
Geführte Experimente
Über Überschwingen zu lesen ist nicht dasselbe, wie es gezielt zu erzeugen. Jedes Experiment dauert wenige Minuten und isoliert genau einen Effekt.
1. Kritische Verstärkung finden
Setze Ki und Kd auf null. Erhöhe Kp, bis der Ausgang mit konstanter Amplitude schwingt — weder wachsend noch abklingend. Notiere diese Verstärkung (Ku) und die Schwingungsperiode (Tu).
Diese zwei Zahlen genügen für eine erste Abstimmung:
| Regler | Kp |
Ki |
Kd |
|---|---|---|---|
| PID (klassisch) | 0.6 Ku |
1.2 Ku / Tu |
0.075 Ku Tu |
| PID (ohne Überschwingen) | 0.2 Ku |
0.4 Ku / Tu |
0.066 Ku Tu |
Gib sie ein und vergleiche. Die klassische Zeile ist aggressiv und überschwingt 20–40 %; die zweite landet ohne Überschwingen und braucht länger. Keine ist „richtig“ — es sind verschiedene Antworten auf verschiedene Anforderungen, und genau darum geht es.
2. Integral-Windup sichtbar machen
Setze die Aktorgrenze niedrig — etwa 20 % des Bereichs — und kommandiere dann einen großen Sollwertsprung. Beobachte das Stellgrößendiagramm: Es sättigt sofort und bleibt dort, während das Integral Fehler aufintegriert, die es nicht umsetzen kann. Erreicht der Ausgang endlich den Sollwert, entlädt sich die gespeicherte Wirkung, und das System schießt weit darüber hinaus.
Erhöhe nun die Aktorgrenze und wiederhole mit denselben Verstärkungen. Das Überschwingen verschwindet weitgehend. Am Regler hat sich nichts geändert — das ist die Lektion. Windup ist eine Eigenschaft des Zusammenspiels von Regler und sättigendem Aktor, nicht der Verstärkungen.
3. Beweisen, dass Totzeit — nicht Rauschen — den Kreis tötet
Erhöhe das Abtastintervall schrittweise bei festen Verstärkungen. Die Antwort wird schlechter, lange bevor das Diagramm verrauscht aussieht: Das Überschwingen wächst, dann erscheint Schwingung, dann wird es instabil.
| Abtastintervall | Was du bei sonst guter Abstimmung siehst |
|---|---|
| 5 ms | Sauber, wie abgestimmt |
| 20 ms | Etwas mehr Überschwingen |
| 50 ms | Sichtbares Nachschwingen |
| 100 ms | Dauerschwingung |
| 200 ms | Instabil |
Darum verbessert das Entfernen eines delay() aus der Roboterschleife das Folgen oft stärker als jede Abstimmung. Veraltete Information kann keine Verstärkung retten.
4. Dem Differenzial Rauschen geben
Erhöhe die Störgröße bei Kd gleich null und erhöhe dann Kd. Die Stellgrößenspur wird zackig, lange bevor der Ausgang es wird — du siehst, wie Differenzierung hochfrequente Anteile verstärkt, genau wie sie muss.
Dieses Verhalten lässt viele schließen, D sei nutzlos, und sie setzen es auf null. Die echte Lösung liegt weiter vorn: Messung filtern oder den D-Anteil selbst filtern.
Was du beobachten solltest
| Einstellung | Erwartete Form | Wenn du etwas anderes siehst |
|---|---|---|
Nur Kp, niedrig |
Steigt langsam, bleibt unter dem Sollwert | — |
Nur Kp, hoch |
Überschwingt, klingt ab | Wachsende Schwingung heißt: über Ku |
Kp + Kd |
Schneller Anstieg, wenig Überschwingen, kleiner bleibender Offset | Zackige Stellgröße heißt: D verstärkt Rauschen |
Kp + Ki |
Erreicht den Sollwert exakt, langsamer | Überschießen heißt: Windup oder zu viel Ki |
| Volles PID | Schnell, minimales Überschwingen, kein Offset | — |
Der bleibende Offset mit P und D, aber ohne I ist es wert, einmal gezielt erzeugt zu werden. Er zeigt am klarsten, wozu der Integralanteil da ist: P-Wirkung braucht einen Fehler ungleich null, um überhaupt etwas zu stellen, und parkt daher zwangsläufig etwas zu kurz.
Umsetzung auf Hardware
Hier gefundene Verstärkungen sind ein Startpunkt, keine Übertragung. Was sich perfekt überträgt, ist das Verfahren; was sich nicht überträgt, sind die Zahlen, denn sie beschreiben diese Strecke.
| Dieses Labor | Echter Roboter |
|---|---|
| Abtastintervall ist exakt | Jitter, außer du misst dt und übergibst es |
| Strecke ist ein sauberes Modell zweiter Ordnung | Reibung, Totzone, drehzahlabhängiges Drehmoment |
| Aktorgrenze ist eine harte Klemmung | Zusätzlich Stromgrenzen, Spannungseinbruch und Wärme |
| Kein Sensorrauschen, außer du fügst es hinzu | Immer Rauschen, selten gaußförmig |
| Strecke ändert sich nie | Batteriespannung, Last und Temperatur ändern sie |
Die letzte Zeile stiftet in der Praxis am meisten Verwirrung. Eine Abstimmung, die mit frischen Zellen perfekt ist, wird mit leeren träge, weil derselbe Befehl nun weniger Drehmoment erzeugt. Das ist kein Versagen der Methode — Verstärkungen sind Eigenschaften der Strecke, und die Strecke hat sich bewegt. Die professionellen Antworten sind ein unterlagerter Drehzahlkreis oder Gain-Scheduling. Arbeite PID-Regler abstimmen für das komplette Verfahren durch und bringe es dann ins Linienfolger-Labor, wo die Strecke sich wehrt.
Hardware-Checkliste
Bauteile
- Mikrocontroller mit stabilem Zeitgeber
- Messtechnisch erfasste Strecke wie DC-Motor oder Servo
- Encoder, Potenziometer oder anderer Rückführungssensor
- Leistungstreiber für den Aktor
- Geregelte Spannungsversorgung und Not-Aus
Den Graphen erkunden
Wo dieser Simulator verwendet wird
Die Projekte, Lernpfade und Tutorials, die auf diesem Labor aufbauen.
Weiterbauen
Ressourcen herunterladen
Nutze diese Referenzen auf der Seite, während du das Projekt durcharbeitest. Herunterladbare Projektpakete kommen erst hinzu, wenn ihr Quellcode und ihre Version veröffentlicht sind.
Häufige Fragen
Häufig gestellte Fragen
Womit beginne ich beim Abstimmen?
Beginne mit Integral- und Differenzialverstärkung null. Erhöhe die Proportionalverstärkung, bis die Antwort schnell, aber schwingend ist, und füge dann D-Dämpfung hinzu. Die Integralverstärkung kommt zuletzt und nur bei bleibender, wiederholbarer Regelabweichung. Faustregel: P bringt Schnelligkeit, D reduziert Überschwingen und I beseitigt die bleibende Abweichung — in dieser Reihenfolge, einzeln.
Wie verhindere ich Überschwingen beim PID-Regler?
Überschwingen kommt meist von zu viel P- oder I-Wirkung. Senke zuerst die Proportionalverstärkung und erhöhe dann die Differenzialverstärkung, um die Annäherung zu dämpfen. Tritt Überschwingen erst auf, nachdem der Aktor an seine Grenze stößt, ist Integral-Windup die Ursache — dann klemme den Integralanteil statt der Verstärkung.
Warum schwingt mein PID-Regelkreis?
Dauerschwingung bedeutet fast immer: Proportionalverstärkung zu hoch für den Kreis oder Differenzialanteil zu schwach zur Dämpfung. Halbiere etwa die Proportionalverstärkung und füge D-Anteil hinzu. Schwingung kann auch von einem zu langsamen oder unregelmäßigen Regelintervall kommen, das den D-Anteil unzuverlässig macht.
Was ist Integral-Windup und wie verhindere ich es?
Windup entsteht, wenn der Aktor sättigt — Motor bei voller Drehzahl, Ventil ganz offen — der aufintegrierte Fehler aber weiter wächst, sodass der Regler beim Vorzeichenwechsel stark überschießt. Verhindere es mit Clamping (Integration stoppen, solange der Ausgang sättigt) oder Back-Calculation (Integral über die Differenz aus angefordertem und geliefertem Ausgang abbauen).
Wie schnell muss eine PID-Schleife laufen?
Die Schleife sollte mehrfach schneller abtasten als das System, das sie regelt, und zwar in konstantem Intervall. Vermeide lange blockierende Verzögerungen auf dem Mikrocontroller: Eine variable oder langsame Schleife ändert die wirksamen I- und D-Anteile, auch wenn die Verstärkungen gleich bleiben — eine häufige versteckte Ursache schlechter Abstimmung.
Kann ich PID nur mit P- und D-Anteil nutzen?
Ja. PD-Regelung (ohne Integral) ist üblich, wenn eine kleine bleibende Abweichung zulässig ist und Windup vermieden werden soll; PI-Regelung (ohne Differenzial) passt zu verrauschten Signalen, bei denen ein D-Anteil Rauschen verstärken würde. Nutze nur die Anteile, die das Problem braucht, statt immer volles PID.
Was unterscheidet manuelles Abstimmen von Ziegler–Nichols?
Manuelles Abstimmen stellt eine Verstärkung nach der anderen ein und beobachtet die Antwort — intuitiv und lernsicher. Ziegler–Nichols ist eine formelbasierte Methode, die Verstärkungen aus dem Punkt der Dauerschwingung ableitet; sie ist schneller, aber oft aggressiv, sodass das Ergebnis meist ein Startpunkt für die Handabstimmung ist.
Weiterführende Literatur
Quellen
Maßgebliche Quellen, um tiefer einzusteigen als das begrenzte Lernmodell dieses Simulators.