D-T PID controller in IIR structure with anti wind-up

OP #3542101
Hallo liebe Community,

ich koennte vielleicht mal ein wenig Unterstuetzung gebrauchen. Ich 
versuche derzeit auf einem digitalen signal Prozessor einen PID 
controller in IIR-Filter form zu implementieren.
Das sollte eigentlich einen schoenen PID controller mit low pass Filter 
Verhalten fuer den D-Anteil ergeben.
Meine Frage dazu: Wo muss ich den anti wind-up implementieren, damit das 
Integrieren begrenzt wird.
Wuerde gerne ersteinmal einfachheits halber ein simples I-clamping 
verwenden, sprich mit einer Variablen die fehler Integration ab oder zu 
schalten. Back tracking ist aber auch willkommen. Implementierung sollte 
kein Problem sein, eher die Frage: Wo in meinem IIR filter ist der 
I-Anteil.
D-T Transferfunction gebe ich auch nochmal eben mit:
Bin dankbar fuer jede Hilfe. Eine Gleichung die das Problem beschreibt 
oder aehnliches waere nicht schlecht.

Schoene Gruesse
Gast
Hallo Dominik,

ich bin gerade in meinem Praktikum und habe genau die Gleiche Frage.

es ist schon vielleicht zu weit Weg, aber kannst du mir sagen zur welche 
Lösung bist du eigentlich gekommen?
Gast
Hi Cesar,

die Antwort ist tatsächlich ganz einfach:
Limitiere V0 und du hast den anti wind-up schon fertig.
Da V1, V2, V3 etc jeweils die um z verzögerten Werte sind, werden auch 
diese auf V0 gesetzt und der Integralanteil somit begrenzt.
Hier ein simples Code Beispiel:

#define LIMIT(A, B, C)           ((A < B) ? (B) : (A > C) ? (C) : (A))

/* Voltage loop calculation */
VoltU0 = (B0 * VoltE0) + (B1 * VoltE1) + (B2 * VoltE2) + (A1 * VoltU1) + 
(A2 * VoltU2)

/* Limit voltage loop output */
VoltU0 = LIMIT(VoltU0, DutyCycleMin, DutyCycleMax);

/* Store control loop variables */
VoltU2 = VoltU1;
VoltU1 = VoltU0;
VoltE2 = VoltE1;
VoltE1 = VoltE0;

Hoffe das hilft dir weiter, ansonsten einfach nochmal melden, falls es 
Probleme gibt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.