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


von Mirko (Gast)


Angehängte Dateien:

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

von Igor M. (bastel-wastel)


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/Regelungstechnik#PI-Regler

von Matthias L. (Gast)


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

von Mirko (Gast)


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

von Igor M. (bastel-wastel)


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, ...)

von Matthias L. (Gast)


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...

von Igor M. (bastel-wastel)


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 ;-)

von Matthias L. (Gast)


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...

von Igor M. (bastel-wastel)


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 ;-)

von hans (Gast)


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

von Michael L. (Gast)


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

von Mirko (Gast)


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

von hans (Gast)


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/doc2558.pdf

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

von Mirko (Gast)


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

von Michael L. (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.