www.mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik PI-Regler.OP.Software


Autor: Mirko (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


ich habe für ein Netzteil einen PI-Regler mit einem Operationsverstäker 
aufgebaut.

Nun würde ich gerne diesen PI-Regler in Software umsetzen, auf einem 
Mikrokontroller. Ich habe eine Schaltung angehängt, nach der ich meinen 
PI-Regler aufgebaut habe. Dabei auch die Berechnung von Reglerparametern 
aus den Bauteilewerten.

Im Netz habe ich dann folgendes gefunden, wie man einen PI-regler in 
Software aufbaut.

esum= esum + e
y= Kp * e + Ki  Ta  esum

Meine Frage wäre nun erst einmal, was esum, e und Ta für Werte sind und 
ob diese beiden Zeilen wirklich einen kompletten PI-regler in Software 
ausmachen?

Ist e die Regelabweichung, also Sollwert-Istwert? Aus der Zeichnung 
gesehen
U_ref-U?

Grüße
Mirko

Autor: Igor Metwet (bastel-wastel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
e ist die Regelabweichung (Sollwert - Istwert)
esum ist die Summe aller Abweichungen (I-Anteil -> Abweichung wird mit 
der Zeit vollkommen eliminiert)
Ta ist die Abtastzeit. In deinem Fall die Zeit, die zwischen zwei 
AD-Wandlungen vergeht.

>Ist e die Regelabweichung, also Sollwert-Istwert? Aus der Zeichnung
>gesehen
>U_ref-U?
ja

>ob diese beiden Zeilen wirklich einen kompletten PI-Regler in Software
>ausmachen?

ja. Ist ein kompletter digitaler PI-Regler

edit: Kennst du diese Seite?
http://www.roboternetz.de/wissen/index.php/Regelun...

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Im Netz habe ich dann folgendes gefunden, wie man einen PI-regler in
>Software aufbaut.

>esum= esum + e
>y= Kp * e + Ki  Ta  esum

In Software aufgebaute Regelalgorithmen müssen immer in der z-Ebene 
berechnet werden! Also wird immer eine Differenzengleichung benötigt!

Icgh werd die Diff-gleichung für PI dann mal herleiten. Aber jetzt muss 
ich nochmal kurz weg

Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ta ist die Abtastzeit. In deinem Fall die Zeit, die zwischen zwei
>AD-Wandlungen vergeht

Also wenn ich in meinem Programm die AD-Ports alle 100µs abfrage, also 
die anliegenden Spannungen wandle, wäre Ta=100µs!?


Für esum würde ich dann zu Programmstart einen Startwert geben, 
vermutlich Null am sinnvollsten!?


>In Software aufgebaute Regelalgorithmen müssen immer in der z-Ebene
>berechnet werden! Also wird immer eine Differenzengleichung benötigt!

Warum so kompliziert, wenn die obigen Formeln stimmen oder kann man mit 
den Formel in der Abbildung die Werte nicht richtig berechnen. Ich denke 
eine Feineinstellung wird man vornehmen, wen man das System testet und 
den Regler dann noch ein wenig anpassen.

Grüße
Mirko

Autor: Igor Metwet (bastel-wastel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mirko wrote:
>>Ta ist die Abtastzeit. In deinem Fall die Zeit, die zwischen zwei
>>AD-Wandlungen vergeht
>
> Also wenn ich in meinem Programm die AD-Ports alle 100µs abfrage, also
> die anliegenden Spannungen wandle, wäre Ta=100µs!?

Ja
>
> Für esum würde ich dann zu Programmstart einen Startwert geben,
> vermutlich Null am sinnvollsten!?

Für den Start ist esum = 0 zu setzen

>>In Software aufgebaute Regelalgorithmen müssen immer in der z-Ebene
>>berechnet werden! Also wird immer eine Differenzengleichung benötigt!
>
> Warum so kompliziert, wenn die obigen Formeln stimmen oder kann man mit
> den Formel in der Abbildung die Werte nicht richtig berechnen. Ich denke
> eine Feineinstellung wird man vornehmen, wen man das System testet und
> den Regler dann noch ein wenig anpassen.

Mit den Formeln oben kannst du doch nur die Bauteilwerte für analoge 
Regler berechnen. Diese Werte brauchst du doch aber gar nicht - oder 
willst du einen vorhandenen analogen PI-Regler als digital aufbauen?

In der Praxis läuft es meist auf ein ausprobieren verschiedener 
Regelparameter hinaus. Es gibt aber auch Verfahren, um den Regler 
"optimal" einzustellen. (z.B. nach Hurwitz, Ziegler-Nichols, ...)

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Warum so kompliziert

Weil diese Rechnung halt nicht stimmt. Das ist nur ein Zusammengebastel 
aus dem analogen Bereich! Mehr nicht.
Man kann nicht einfach die (analogen) Formel nehmen und im digitalen 
anwenden!

Ein digitaler PID-Regler ist folgende Formel:
Diese Formel ist im Zeitraster Ta zu rechnen!

u(k) = d0 * e(k) + d1 * e(k-1) + d2 * e(k-2) + (1-c1) * u(k-1) + c1 
*u(k-2)

mit:
          Kr           Ta + Tv   Td + Tv
d0 = --------- * [ 1 + ------- + ------- ]
     1 + Tv/Ta           2*Ti       Ta

        Kr              Ta       2(Td + Tv)
d1 = --------- * [ -1 + ----- + ----------- ]
     1 + Tv/Ta          2*Ti          Ta

        Kr         Td + Tv     Tv
d2 = --------- * [ ------- - ------ ]
     1 + Tv/Ta         Ta     2*Ti

         Tv
c1 = - ------
       Ta + Tv

Kr   : Proportionalitskonstante,
Ti   : Integrationszeitkonstante,
Td   : Differentationszeitkonstante,
Tv   : Realisierungspol für D-Anteil ( => 0)
Ta   : Abtastzeit
u(k) : aktuelle Stellgröße (Reglerausgang)
e(k) : aktuelle Regelabweichung (Reglereingang)
k    : diskretisierte Zeit

>In der Praxis läuft es meist auf ein ausprobieren verschiedener
>Regelparameter hinaus.

Sorry, nimms nicht persönlich: Aber der erste Teil des Nicks sagt vieles 
aus...

Autor: Igor Metwet (bastel-wastel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Sorry, nimms nicht persönlich: Aber der erste Teil des Nicks sagt vieles
>aus...

Natürlich ist es anstrebsam einen Regelkreis im Laplace-Bereich zu 
beschreiben und die Parameter nach aperiodischem-Grenzfall, etc. zu 
optimieren. Das Problem ist aber immer das selbe: Das reale System ist 
nie 100%ig bekannt. Klar kann man das System durch Sprünge analysieren - 
dann muss man aber auch wieder an den Parametern drehen, bis sich das 
gewünschte Verhalten ergibt.

Ein naher bekannter hatte einen Prof., der hat denen in Regelungstechnik 
das Ausprobieren als richtige Methode hingestellt, ganz ohne 
irgendwelche Betrachtungen im Laplace-Bereich oder Z-Trafos für die 
digitalen Filter. Das ist natürlich auch nicht das Wahre. Ich denke aber 
nicht, dass man einen Regler berechnet und dann weiß, dass er genauso 
funktioniert wie er soll.

Mit der Erfahrung von langjährigen Entwicklern, die Regelkreise 
berechnen/einsetzen/auslegen kann ich natürlich nicht mithalten. Man 
kann nicht alles perfekt können - aber mann lernt ja nie aus.

PS: Ich nehme deine Anspielung nicht persönlich, aber: Mein Nick sagt 
überhaupt nix aus ;-)

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mein Nick sagt überhaupt nix aus ;-)

Hihi. Ok.


>Ausprobieren als richtige Methode

Naja, Wir hatten auch entsprechende "empirische" Einstellverfahren..

Aber was ich damit sagen will ist, es sollte zumindest von der 
Implementierung korrekt gemacht werden, auch wenn dann an den Parametern 
"wahllos" herumgedreht wird...

Autor: Igor Metwet (bastel-wastel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Aber was ich damit sagen will ist, es sollte zumindest von der
>Implementierung korrekt gemacht werden, auch wenn dann an den Parametern
>"wahllos" herumgedreht wird...

Full ACK. Hab ich aber auch nicht anders empfohlen ;-)

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da Mirko schon bei einer anderen Quelle gesucht hat
http://www.roboternetz.de/wissen/index.php/Regelungstechnik
sollte er dort einfach weiterlesen!
Der Artikel ist wirklich gut und verständlich.

gruß Hans

Autor: Michael Lenz (hochbett)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Matthias,

>>Warum so kompliziert
> Weil diese Rechnung halt nicht stimmt. Das ist nur ein Zusammengebastel
> aus dem analogen Bereich! Mehr nicht.
> Man kann nicht einfach die (analogen) Formel nehmen und im digitalen
> anwenden!
Da würde es mich mal interessieren, wo Du den großen Unterschied siehst.

Nach meinem Verständnis geht die Differenzengleichung bei schneller 
Abtastung in die zugehörige Differentialgleichung über. Problematisch 
können im Einzelfall höchstens Aliasingeffekte werden.

>>In der Praxis läuft es meist auf ein ausprobieren verschiedener
>>Regelparameter hinaus.

> Sorry, nimms nicht persönlich: Aber der erste Teil des Nicks sagt vieles
> aus...
Stimmt. Das ist ein sehr sympathischer Nick.


Freundliche Grüße
Michael

Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wow, was für eine Diskussion.

>> Sorry, nimms nicht persönlich: Aber der erste Teil des Nicks sagt vieles
>> aus...
>Stimmt. Das ist ein sehr sympathischer Nick.

Das finde ich auch :)

>Mit den Formeln oben kannst du doch nur die Bauteilwerte für analoge
>Regler berechnen. Diese Werte brauchst du doch aber gar nicht - oder
>willst du einen vorhandenen analogen PI-Regler als digital aufbauen?

Für die Formel y= Kp * e + Ki   Ta  esum brauche ich doch die Werte 
für Kp und Ki. Ich habe bereits einen Regler mit einem OP aufgebaut und 
möchte diesen nun durch einen digitalen ersetzen. Dann kann ich doch mit 
den Formeln in der Grafik die Werte für Kp und Ki berechnen!? Oder sehe 
ich das falsch.

Die Internetseite von Robernetz habe ich mir angesehen, da steht steht 
doch genau fast genau die gleiche Zeichung der OP-Schaltung und auch die 
Berechnung der Parameter und auch der Code für die Software-Umsetzung.
Also kann ich doch damit aus meinem analogen PI-Regler einen digitalen 
umsetzen oder stehe ich da irgendwie auf der Leitung?

Das ist auf der Seite doch auch für einen PID einmal durchgeführt...

Mirko

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mirko,

eben weil da Bild und Formel stimmen, dachte ich, du hast den
Artikel schon!
Bei Atmel gibt es auch eine fertige Aplication PID  AVR221
mit c-code.

http://www.atmel.com/dyn/resources/prod_documents/...

Wichtig ist die Einstellung und Optimierung. Dazu ist es sinnvoll
die Hintergründe zu kennen, d.h. was macht welcher Block im Regelkreis.

Habe selber schon Programme so erweitert, daß ich Parameter mit Potis
einstellen konnte und so in der Regelstrecke direktes Optimieren
möglich war. Danach natürlich die werte fix!
Die Formeln sind dann wirklich so einfach wenn man nur Grundschaltungen
verwendet.

gruß hans

Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die Seite hatte ich noch nicht gesehen vorher.

Ich zeile auch nicht darauf ab, das super genau zu berechnen. Bei dem 
analogen regler habe ich das auch Pi Mal Daumen berechnet und dann in 
der fertigen Schaltung die Werte angepasst durch probieren, auch wenn 
das vielleicht nicht die feine englische ist.

Ich werde das mal mit den Formel, die ich als erstes angegeben habe 
probieren und mal schauen, was da so passiert.

Grüße
Mirko

Autor: Michael Lenz (hochbett)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mirko,

wir fangen mal mit der Differentialgleichung des OPV an, daraus müßten 
sich eigentlich die Parameter für einen äquivalenten Digitalregler 
ergeben.


Konvention
- Strompfeile betrachte ich als positiv, wenn sie von links nach rechts 
gehen.
- Ich gehe außerdem davon aus, daß der Kondensator zum Zeitpunkt Null 
ungeladen ist. In einer realen Schaltung stellst Du das sicher, indem Du 
parallel zu R2 und Ci einen großen Widerstand schaltest.


Rechnung
Am invertierenden Eingang herrscht das Potential U_REF.

Daher gilt:
i1(t) = (U-U_REF)(t)/R1
UA(t) = U_REF(t) - R2*i1(t) - 1/C Int(i1(t) dt)

Durch Einsetzen erhältst Du:

UA = U_REF -R2/R1 * (U-U_REF) - 1/(R1 C) Int(U-U_Ref) dt

wobei ich die Abhängigkeit "von t" zur Vereinfachung weglasse.

Durch Differentiation d/dt folgt:

dUA/dt = d/dt U_REF -R2/R1* d/dt(U-U_REF) - 1/(R1 C) (U-U_REF)

Wenn Du jetzt bei allen zeitabhängigen Größen den Differentialquotienten 
dx/dt näherungsweise durch den Differenzenquotienten x(k)-x(k-1) 
ersetzt, kommst Du zu einer Differenzengleichung, die im wesentlichen 
dasselbe macht, wie die analoge Schaltung:

U-U_REF nenne ich zur Vereinfachung jetzt einmal e (für error).

UA(k)-UA(k-1) = U_REF(k)-U_REF(k-1) -R2/R1 (e(k)-e(k-1)) - 1/(R1 C) e(k)



Freundliche Grüße
Michael

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.