- 8 August 2022
- 95
- 146
- E-Scooter
- G30D2 STM32 48V
Seit SHU v2.3 gibt es einen deutlich verbesserten Tempomat (CC - Cruise Control). Die Verbesserung resultiert aus der Implementierung eines PID-Reglers (bisher nur P-Regler) und der Möglichkeit, bei aktivem Tempomat negative (Brems-) Ströme zuzulassen (sodass er bergab auch automatisch bremst). Chapeau
und vielen Dank an
Paulederbaus für die Implementierung des PID Reglers und der Aufweitung des Regelbereichs zu negativen Strömen! Damit ist der Scooter nun definitiv "next level" 
Auch wenn mit den Defaultwerten schon ein sehr gutes Reglerverhalten gegeben ist, mag der Eine oder die Andere die Parameter individuell optimieren wollen. Ein mögliches Vorgehen ist hier beschrieben.
Diese Anleitung basiert auf der SHU v2.3.2
Hinweis: Diese Einstellungen betreffen alle Geschwindigkeitsregelungen, auch ohne Tempomat. Speed-Based nutzt das quasi immer und DPC mit aktivem Speed Limit.
Kp = 40, Ki = 60, Kd = 15, Lower limit (negative value) = 40A
Im Folgenden ist das Vorgehen detaillierter beschrieben.
In der SHFW können echte Sprünge nur mit ±1km/h provoziert werden, was zu wenig ist, um eine deutliche Systemreaktion hervorzurufen. Deshalb kannst Du die Funktion „Increase/decrease CC speed with throttle“ nutzen und eine sehr kurze Reaktionszeit (z.B. 200ms) konfigurieren. Damit kannst Du die Sollgeschwindigkeit innerhalb von 1s um 5km/h erhöhen, was einem Sprung immerhin nahe kommt.
Eine Wiederholung der Versuche bei veränderten Randbedingungen ist sinnvoll, um die Robustheit des Reglers unter möglichst vielen Randbedingungen zu testen:
Je nach Reglerverhalten werden die Parameter so lange verändert und erneut die Sprungantwort beobachtet, bis das Reglerverhalten zufriedenstellend ist.
Der Regler ist dann gut eingestellt, wenn er den Sollwert auch bei Störungen schnell einregelt (Performance), dabei aber „ruhig“ ist und nicht schwingt (Robustheit).
Generell gibt es immer einen Performance/Robustheits-Zielkonflikt, d.h. man sucht nach einem bestmöglichen Kompromiss zwischen Performance und Robustheit.
Nun werden wiederholt Sprünge auf den Sollwert gegeben und die Sprungantwort des geschlossenen Regelkreises beobachtet. Dabei ist zu beachten, dass mit einem reinen P-Regler immer eine bleibende Regelabweichung auftritt.
Du beginnst mit einer geringen Verstärkung, also einem eher passiven Regler (Kp = 10). Wiederhole den Versuch mit stufenweise erhöhter Verstärkung [Schrittweite 10] - der Regler wird dabei immer aggressiver. Irgendwann kommst Du eventuell an den Punkt, an dem der Regelkreis schwingt und bei weiterer Erhöhung der Verstärkung sogar instabil wird. Dann hast Du es übertrieben. Eine gute Einstellung ist, wenn ein erkennbares Überschwingen auftritt, das aber schnell abklingt.
Generell hast Du einen gewissen Spielraum: Für eine robuste Einstellung wählst Du ein kleineres Kp, für eine aggressivere möglichst schnelle Regelung ein größeres Kp.
Beginne mit einem kleinen Wert (Ki = 10), das entspricht einem eher trägen Verhalten.
Analog zum Einstellen des P-Anteils führst Du wiederholt Sollwertsprünge durch und schaust Dir die Sprungantwort an. Dabei erhöhst Du stufenweise Ki [Schrittweite 10] und erhöhst damit die Aggressivität des Reglers. Auch für den Integralanteil gilt: Eine zu aggressive Einstellung führt zu ungewollten Schwingungen oder sogar Instabilität.

Falls Du durch die Hinzunahme des D-Anteils noch etwas herausholen möchtest, dann wiederhole das Vorgehen aus den beiden vorherigen Schritten.
Beginne wieder mit einem kleinen Wert (Kd = 5). Diesen Wert erhöhst Du stufenweise, bis Du mit der Performance des Regelkreises zufrieden bist.
Theoretisch bewirkt der D-Anteil auch, dass ein größerer P-Anteil gewählt werden kann, ohne dass das System anfängt zu schwingen. Das heißt: Du kannst mit aktiven PID-Regler nun noch mal den P-Anteil nachjustieren.
Wenn Du möchtest, dass der Tempomat die Geschwindigkeit nicht nur bei gerader und ansteigender Strecke konstant hält, sondern auch bergab, dann kannst Du das über das „Lower limit“ erreichen: Es handelt sich hierbei um den maximalen Bremsstrom, den der Tempomat bei Bergabfahrt stellen kann.
Probiere einfach verschiedene Werte auf verschiedenen Strecken mit unterschiedlichem Gefälle aus
Sonnnige Grüße aus dem wilden Süden
Quelle für Identifikation der Reglerparameter:



Auch wenn mit den Defaultwerten schon ein sehr gutes Reglerverhalten gegeben ist, mag der Eine oder die Andere die Parameter individuell optimieren wollen. Ein mögliches Vorgehen ist hier beschrieben.
Diese Anleitung basiert auf der SHU v2.3.2
Hinweis: Diese Einstellungen betreffen alle Geschwindigkeitsregelungen, auch ohne Tempomat. Speed-Based nutzt das quasi immer und DPC mit aktivem Speed Limit.
Kurzanleitung
- Suche Dir eine Teststrecke aus, die ebene Abschnitte und auch deutliche Steigungen hat. Teste Deine Einstellungen auf allen Abschnitten.
- Beginne mit den kleinstmöglichen Werten: Kp = 1, Ki = 10, Kd = 0
- Erhöhe Kp schrittweise so lange, bis der Regler beherzt eingreift ohne zu schwingen.
- Erhöhe Ki schrittweise so lange, bis die Regelabweichung klein genug ist → fertig
- Wenn Du einen noch sanfteren Reglereingriff bevorzugst, dann erhöhe den Kd-Wert etwas.
- Wenn Du möchtest, dass der Tempomat beim Bergabfahren auch bremst, dann stelle einen sinnvollen Bremsstrom „Lower limit (negative value)“ ein.
Kp = 40, Ki = 60, Kd = 15, Lower limit (negative value) = 40A
Im Folgenden ist das Vorgehen detaillierter beschrieben.
Ausführliche Anleitung und Hintergrundinfos
Vorgehen zur Ermittlung individuell optimierter PID Parameter
Auf gerader Strecke und bei selbst gewählter „Auslegungsgeschwindigkeit“ (z.B. 20km/h) wird bei aktiviertem Regler (Tempomat EIN) ein „Sprung“ auf die Sollgeschwindigkeit gegeben. Es wird dann die „Sprungantwort“ (resultierende Geschwindigkeit) beobachtet, entweder „gefühlt“ mit dem „Popometer“, oder gemessen z.B. mit DarknessBot.In der SHFW können echte Sprünge nur mit ±1km/h provoziert werden, was zu wenig ist, um eine deutliche Systemreaktion hervorzurufen. Deshalb kannst Du die Funktion „Increase/decrease CC speed with throttle“ nutzen und eine sehr kurze Reaktionszeit (z.B. 200ms) konfigurieren. Damit kannst Du die Sollgeschwindigkeit innerhalb von 1s um 5km/h erhöhen, was einem Sprung immerhin nahe kommt.
Eine Wiederholung der Versuche bei veränderten Randbedingungen ist sinnvoll, um die Robustheit des Reglers unter möglichst vielen Randbedingungen zu testen:
- verschiedene Geschwindigkeiten (von Schrittgeschwindigkeit bis High Speed)
- verschiedene Fahrergewichte
- verschiedene Akku-Ladestände
Je nach Reglerverhalten werden die Parameter so lange verändert und erneut die Sprungantwort beobachtet, bis das Reglerverhalten zufriedenstellend ist.
Der Regler ist dann gut eingestellt, wenn er den Sollwert auch bei Störungen schnell einregelt (Performance), dabei aber „ruhig“ ist und nicht schwingt (Robustheit).
Generell gibt es immer einen Performance/Robustheits-Zielkonflikt, d.h. man sucht nach einem bestmöglichen Kompromiss zwischen Performance und Robustheit.
Reglerparameter ermitteln
Proportional-Anteil Kp einstellen
Zunächst wird der Regler als reiner P-Regler betrieben, das heißt I-Anteil und D-Anteil werden deaktiviert: Ki = min, Kd = minNun werden wiederholt Sprünge auf den Sollwert gegeben und die Sprungantwort des geschlossenen Regelkreises beobachtet. Dabei ist zu beachten, dass mit einem reinen P-Regler immer eine bleibende Regelabweichung auftritt.
Du beginnst mit einer geringen Verstärkung, also einem eher passiven Regler (Kp = 10). Wiederhole den Versuch mit stufenweise erhöhter Verstärkung [Schrittweite 10] - der Regler wird dabei immer aggressiver. Irgendwann kommst Du eventuell an den Punkt, an dem der Regelkreis schwingt und bei weiterer Erhöhung der Verstärkung sogar instabil wird. Dann hast Du es übertrieben. Eine gute Einstellung ist, wenn ein erkennbares Überschwingen auftritt, das aber schnell abklingt.
Generell hast Du einen gewissen Spielraum: Für eine robuste Einstellung wählst Du ein kleineres Kp, für eine aggressivere möglichst schnelle Regelung ein größeres Kp.
Integral-Anteil Ki einstellen
Nun wird der Regler als PI-Regler betrieben, d.h. zusätzlich zum zuvor ermittelten Proportional-Anteil Kp wird ein Integral-Anteil Ki hinzugenommen. Der Integral-Anteil sorgt nach einer ersten schnellen Reaktion des P-Anteils dafür, dass der bleibende Regelfehler über die Zeit ausgeglichen wird.Beginne mit einem kleinen Wert (Ki = 10), das entspricht einem eher trägen Verhalten.
Analog zum Einstellen des P-Anteils führst Du wiederholt Sollwertsprünge durch und schaust Dir die Sprungantwort an. Dabei erhöhst Du stufenweise Ki [Schrittweite 10] und erhöhst damit die Aggressivität des Reglers. Auch für den Integralanteil gilt: Eine zu aggressive Einstellung führt zu ungewollten Schwingungen oder sogar Instabilität.
Differential-Anteil Kd einstellen
Für viele praktische Anwendung reicht ein gut eingestellter PI-Regler vollkommen aus. Das heißt: Wenn Du jetzt schon mit der Performance des Reglers zufrieden bist, dann höre einfach auf.
Falls Du durch die Hinzunahme des D-Anteils noch etwas herausholen möchtest, dann wiederhole das Vorgehen aus den beiden vorherigen Schritten.
Beginne wieder mit einem kleinen Wert (Kd = 5). Diesen Wert erhöhst Du stufenweise, bis Du mit der Performance des Regelkreises zufrieden bist.
Theoretisch bewirkt der D-Anteil auch, dass ein größerer P-Anteil gewählt werden kann, ohne dass das System anfängt zu schwingen. Das heißt: Du kannst mit aktiven PID-Regler nun noch mal den P-Anteil nachjustieren.
Was tun wenn…
Beispiele, siehe auch SHFW Anleitung hier:Der Regler reagiert zu langsam auf Änderungen
→ Erhöhe den Kp-Wert, um eine stärkere Reaktion zu erzielen.Die Geschwindigkeit schwingt dauerhaft
→ Reduziere den Kp-Wert, um den Reglereingriff abzuschwächen, und/oder erhöhe den Kd-Wert, um die Reaktion des Reglers zu dämpfen.Der Regler schwingt beim Einregeln stark über
→ Erhöhe den Kd-Wert, um die Dämpfung zu erhöhen und das Überschwingen zu reduzieren.Es gibt eine bleibende Abweichung vom Sollwert
→ Erhöhe den Ki-Wert, um den integralen Ausgleich zu verstärken und den Fehler zu beseitigen.Lower Limit
Steht der Parameter „Lower limit“ auf 0, dann stellt der Tempomat nur positives Drehmoment, d.h. der Tempomat arbeitet auf ebener Strecke und bei Steigungen. Fährst Du jedoch bergab, dann erhöht sich die Geschwindigkeit des Rollers, je steiler, umso mehr. Denn der Tempomat bremst nicht.Wenn Du möchtest, dass der Tempomat die Geschwindigkeit nicht nur bei gerader und ansteigender Strecke konstant hält, sondern auch bergab, dann kannst Du das über das „Lower limit“ erreichen: Es handelt sich hierbei um den maximalen Bremsstrom, den der Tempomat bei Bergabfahrt stellen kann.
Probiere einfach verschiedene Werte auf verschiedenen Strecken mit unterschiedlichem Gefälle aus

Schlusswort
So, jetzt wisst Ihr Bescheid. Macht was draus, ich kann mich nicht um alles kümmern (frei nach
Um Links zu sehen, melde dich bitte an
).Sonnnige Grüße aus dem wilden Süden

Quelle für Identifikation der Reglerparameter:
Um Links zu sehen, melde dich bitte an
Zuletzt bearbeitet: