Contents — find the section you need

Change parameters and verify

Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.

Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.

The experiment controls are in English.

Open experiment panel in a new tab

Download reproduction source

Ein kleines, ausführbares Modell erleichtert die Untersuchung von PID-Verstärkungsänderungen und Aktorsättigung. Die Ergebnisse wurden am 7. September 2026 mit Python 3.12.3 berechnet. Es handelt sich um numerische Simulationen, nicht um Messungen oder ein identifiziertes Motormodell.

Modell und Bedingungen

Die Regelstrecke ist \ddot y+2\dot y+y=u. Der Ausgang y und der Regler u sind normiert; die Zeitangabe erfolgt in Sekunden. Anfangsausgang, -geschwindigkeit und -integral sind null. Der Sollwert beträgt 1 ab dem Zeitpunkt null und anschließend 0,4 ab 6 Sekunden. Die Schrittweite beträgt 0,005 Sekunden im Bereich von 0 bis 12 Sekunden, was 2401 Messwerte pro Fall ergibt.

Der Regler ist u=K_pe+K_iI-K_d\dot y_m mit e=r-y_m. Hierbei ist y_m der gemessene Ausgang. Die Ableitung wirkt auf diesen, nicht auf den Sollwert. Die Basisverstärkungen sind K_p=3, K_i=2 und K_d=1. Integration und Differentiation verwenden explizit den Zeitschritt; die Anlage verwendet eine semi-implizite Euler-Integration. Die Prinzipien sind in PID-Grundlagen beschrieben.

Code ausführen

Speichern Sie pid_lab.py in einem leeren Arbeitsverzeichnis und führen Sie den folgenden Code aus. Er benötigt lediglich die Python-Standardbibliothek und überschreibt Ergebnisdateien mit demselben Namen.

python3 --version
python3 pid_lab.py

Es werden die CSV und die Zusammenfassung im JSON-Format erzeugt. Um die Abbildung neu zu generieren, speichern Sie die Datei plot_pid.py im selben Verzeichnis und führen Sie sie aus. Die Darstellung wurde mit Matplotlib 3.6.3 überprüft. Die CSV-Spalten enthalten Szenario, Zeit, Zielwert, Ausgabe, Regelung und Integral.

Vergleich von Verzögerung und Sättigung

Diagram 1 · Use the button to switch views
Simulierte PID-Ausgabe und -Regelung mit 0,4 Sekunden Messverzögerung, einer Regelungsgrenze von 0,8 und bedingter Integration

Die obere Grafik zeigt die Ausgabe, die untere die Regelung. Die schwarze Linie stellt den Zielwert dar. Die Szenariobezeichnungen entsprechen der CSV-Datei, und aw bedeutet Anti-Windup.

Szenario Änderung Ausgabe nach 12 s Integrierter absoluter Fehler
nominal Keine Verzögerung, Regelung auf ±3 begrenzt 0,4008 1,7913
delay_0,4s Messung um 0,4 s verzögert 0,3883 1,8860
limit_0.8_aw Regelung ±0,8, bedingte Integration 0,4003 3,3424
limit_0.8_no_aw Regelung ±0,8, uneingeschränkte Integration 0,6602 5,0996

Der integrierte absolute Fehler wird mittels Links-Rechteck-Integration über 0–12 Sekunden berechnet. Die Einheit ist die normalisierte Ausgabe multipliziert mit Sekunden, nicht der physikalische Positionsfehler in Metern. Überprüfen Sie Schwingungen, Stellkraft und den letzten Messwert.

Anti-Windup erhöht die Aktorleistung nicht

Im Gleichgewichtszustand hat diese Anlage y=u, daher kann ein Regelgrenzwert von 0,8 den Zielwert von 1 nicht erreichen. Wenn sich der Fehler weiter akkumuliert, kann das Integral selbst nach dem Absinken des Zielwerts auf 0,4 einen übermäßigen Eingangswert fordern. Der Code verwirft Integrationen, die zu einer weiteren Sättigung führen würden, und erlaubt Integrationen, die helfen, diese zu vermeiden.

Dies ändert den internen Zustand des Reglers, nicht aber den Motor oder die Versorgungskapazität. Die Erreichbarkeit des Zielwerts ist eine separate Entscheidung.

Ändern Sie jeweils eine Verstärkung

from pid_lab import simulate
for kp in (1., 3., 6.):
    rows = simulate("gain", kp=kp)
    print(kp, max(row[3] for row in rows if row[1] < 6))

Vergleichen Sie den Spitzenwert während des anfänglichen Zielintervalls. Variieren Sie dann nur ki und anschließend nur kd und erfassen Sie dabei auch den maximalen Stellaufwand. Größere Verstärkungen sind nicht generell besser; wiederholen Sie die Vergleiche mit Verzögerung und Sättigung.

Grenzen und weitere Prüfungen

Das Modell schließt Messrauschen, Reibung, Quantisierung, Kommunikationsjitter und Ableitungsfilterung aus. Halbieren Sie den Zeitschritt: Wenn sich die Antwort wesentlich ändert, untersuchen Sie zunächst eine numerische Approximation. Übertragen Sie diese Verstärkungen nicht in Hardware, ohne die Anlage zu identifizieren und die Einheiten und Zeitskalen anzupassen. Fahren Sie mit MPC fort, um die Beschränkungen innerhalb des Regelungsproblems zu untersuchen.

Führen Sie die gleiche Berechnung lokal aus

Extrahieren Sie die vollständige ausführbare Quellcode-ZIP-Datei oder speichern Sie den Einstiegspunkt des Experiments, die generierten Kernel und den ursprünglichen PID-Quellcode in einem Ordner. PID verwendet die Python-Standardbibliothek; Kalman und ICP benötigen NumPy. Die ursprünglichen Befehle zur Grafikerstellung bleiben verfügbar.

python3 experiment.py pid --parameters '{"kp":3,"ki":2,"kd":1,"delay":0,"limit":3,"antiwindup":true}' > result.json

Setzen Sie die Verzögerung auf 0,4 oder den Grenzwert auf 0,8 und vergleichen Sie IAE und die endgültige Ausgabe mit und ohne Anti-Windup.

Code, data and reproduction

The ZIP contains the same computation code as the browser, synthetic data and comparison cases. These are not physical measurements.

Download reproduction package · Instructions (EN/JA) · Files and experiment conditions (JSON)

Extract the ZIP into a new directory, then run:

python3 reproduce.py --experiment pid

This Lab compares 4 cases. PID uses Python’s standard library; Kalman/ICP require NumPy. See the instructions for dependencies and tested versions.

Related reading

Study control with constraintsEinführung in die Regelungstechnik: Modellprädiktive Regelung – Handeln innerhalb von BeschränkungenExplore another aspect of this fieldMPC-Labor – Krümmungsfolge im Horizont und innerhalb der Lenkgrenzen neu lösenExplore another aspect of this fieldPfadverfolgungs-Vergleichs-Labor – PP, APP, RPP, Stanley und MPC unter denselben Bedingungen laufen lassen