www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I-Anteil begrenzen


Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir bitte vielleicht jemand erklären, wieso man bei einem Regler 
den I-Anteil begrenzen muss (Antiwindup)?

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei langer Regelabweichung summiert der Integrator das über die ganze 
Zeit auf -> man erhält also bei langen Zeiten / großer Abweichung eine 
riesen Summe. Diese wird mit dem Faktor Ki multipliziert und weiter 
gegeben. Diese Summe verschwindet mit stationärer Genauigkeit nicht mit 
einmal, sondern muss wieder runter summiert werden.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wieso stört es mich, wenn die Summe zu groß ist?

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>und wieso stört es mich, wenn die Summe zu groß ist?

Weil das Abbauen dieser Summe lange dauert! Und in dieser Zeit 
funktioniert der (I)-Regler nicht korrekt.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, dass es zu lange dauert, das ist klar.
Aber wieso funktioniert der I-Regler nicht korrekt?
Kommt eine negative Differenz, dann wird der I-Anteil doch kleiner. 
Klar, nicht klein, aber kleiner!

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab irgendwo gelesen, dass der I-Anteil nur davon läuft, wenn sich 
der Regler in der Stellgrößenbegrenzung befindet. Wieso?

Autor: Slash-N (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Einschwingvorgang dauert viel laenger, als noetig. Das ist zB beim 
Einschalten von Bedeutung. Standardmaessig blockiert man den Integrator 
wenn das Stellglied am Anschlag ist.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die Regelabweichung 0 ist und der aufsummiert Wert im I-Regler 
nicht schwingt der Ist-Wert solange bis der Integrator annähernd 0 
erreicht hat. Diese Ausschwingzeit hängt von der Größe des Wertes im 
Integrator ab.

-> Großer Wert im Integrator = lange Ausschwingzeit = doof

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Slash-N:
was hat das denn mit dem Anschlag zu tun?

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anti Wind Up heisst das Zauberwort, einfach mal die Scuhmaschine 
anschmeissen

|-> e(k)=w(k)-y(k)
|   u(k)=u(k-1)+Ke*[e(k)-z0*e(k-1)]
|   if (u(k)<umin) u(k)=umin
|   if (u(k)<umax) u(k)=umax
|   u(k-1)=u(k)
|-- e(k-1)=e(k)

Autor: Slash-N (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich empfehle eine PC Simulation zu schreiben. Da kann man alle Effekte 
ausprobieren und untersuchen.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ gast:
das was du hast, heißt Stellgrößenbegrenzung, nicht Antiwindup

Autor: Slash-N (/n) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man sollte sowieso bei jedem Projekt das Zeitkonstanten groesser als 
Sekunden hat eine Simulation laufen lassen. Sonst wartet man viel 
zulange.

Autor: Slash-N (/n) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Antiwindup ist noetig, unter anderem auch wegen der 
Stellgroessenbegrenzung. Alle natuerlichen Systeme haben eine 
Stellgroessenbegrenzung.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Slash-N:
ja, genau das versteh ich nicht. Wieso wegen der Stellgrößenbegrenzung. 
Im Internet hab ich folgendes gefunden:
"
Die Ursache des Windup-
Effekts liegt beim I-Anteil des Reglers, da der lang anhaltende 
Regelfehler (z.B. durch physikalische Begrenzung der Stellgröße) am 
Integrationseingang zu (unbegrenzt) hohem bzw. niedrigem Wert des 
Integratorausgangs führt. Der eingeschränkte Stellbereich hat eine 
schwerwiegende Folge für den I-Anteil des Reglers.
"
Frage: wie kann ein lang anhaltender Regelfehler durch die physikalische 
Begrenzung der Stellgröße zustande kommen? Wenn mein Ventil z.B. 70% 
öffnen soll, dann begrenze ich die Stellgröße auf 100% und nicht mehr.
wie kommt man denn in die Stellgrößenbegrenzung?

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beispiel:

Ein Gefäß soll bis zu einer Höhe von 1m gefüllt werden. Dabei ist es 
aber leer. Dein Ventil kann bei voller Öffnung nur 1 ml/s. -> Regler 
will das Ventiel zu 1000% öffnen um den Zulauf zu verschnellern.
Geht aber nicht -> Stellgrößenbegenzung -> I-Anteil des Reglers würde 
explodieren.

Autor: Peter Diener (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das genannte Problem tritt auf, wenn man als Sollwert eine Zahl vorgibt, 
die vom realen System NIE erreicht werden kann. Dannn hat man 
logischerweise IMMER eine Regelabweichung, die dazu führt, dass der 
I-Anteil immer weiter aufintegriert.

Jetzt passieren einige unangenehme Effekte:

Ändert man den Sollwert wieder auf etwas, das erreicht werden kann, 
dauert es ewig, bis der Regler in die richtige Richtung steuert, weil er 
vorher ewig lang in die flasche Richtung aufintegriert hat.

Der zweite unangenehme Effekt tritt vor allem bei embedded Systemen auf, 
bei denen mit geringer Auflösung (z.B. 16 bit) gerechnet wird. Hier kann 
es zum Überlauf der Integrationsvariable kommen, wenn man nicht mit 
saturierten Operationen arbeitet.

Unangenehmer Effekt 3 tritt auf, wenn man in Gleitkommadarstellung auf 
großen Rechnern arbeitet. Angenommen man verwendet eine 64 bit 
Floatingpointdarstellung. Nun integriert der Integrator mit einem großen 
Fehler auf. Das macht er solange, bis die Mantisse die Auflösung für den 
anstehenden Fehler nicht mehr hat. Dann stoppt das weitere 
Aufintegrieren.

Möchte der Integrator jetzt mit einem geringeren Fehler in die andere 
Richtung wieder abintegrieren, passiert nichts, weil auch dafür die 
Auflösung der Mantisse nicht mehr ausreicht.

Beispiel: Auflösung 3 Nachkommastellen.

Regelfehler sei +1;

Das integriert auf bis 9,999 e3, dann geht ihn die Auflösung aus, um +1 
noch aufzulösen und +1 kann nicht weiter addiert werden. Demnach kann 
auch -0,1 nicht mehr addiert werden und der Regler hängt.

Mein Beispiel bezog sich natürlich beispielhaft auf ein Dezimalsystem, 
nicht auf ein Binärsystem, bei dem die Grenzen zum Umschalten des 
Exponenten anders liegen. Natürlich ist in einem 64 bit System die 
Mantisse auch viel länger, das alles war nur als einfach zu verstehendes 
Beispiel gedacht um das Prinzip zu verstehen.


Viele Grüße,

Peter

Autor: Slash-N (/n) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter Diener,

-ich kenn niemanden, der mit float rechnet. Macht auch keinen Sinn. Ich 
rechen solche dinge seit ueber 20 Jahren in Integern und hatte nie ein 
Beduerftnis nach float.

-klar muss man mit gesaettigten Zahlen Rechnen, dh solchen die bei einem 
Overflow kleben bleiben und nicht wrappen.

-longint 32bit sollte in den meisten Faellen genuegen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.