Hi, hab eine Frage zur Programmierung eines PI-Reglers. die Software wird irgendwie so aussehen: e = w - x; esum = esum + e; if(esum < -max) esum = -max; if(esum > max) esum = max; y = kp*e + ki*Ta*esum if(y < 0) y = 0; if(y > maxStell) y = maxStell; Ich weiß ich muss esum z.B. über 20 Messwerte bilden, schreibe ich dazu den code in c? Ich glaub die Lösung ist sehr Simpel aber ich steh grad total auf der Leitung, wenn mir kurz wer helfen könnte bitte. MfG Max
@ Max Wildfellner (mo0oxx)
>Wann und wie muss ich esum rücksetzen?
Die wird doch schon begrenzt!
1 | if(esum < -max) |
2 | esum = -max; |
3 | if(esum > max) |
4 | esum = max; |
> weil in dem jetzigen Code würde >esum ja irgendwann den maximalwert der Variable erreichen. Nö. >Ich glaub die Lösung ist sehr Simpel aber ich steh grad total auf der >Leitung, wenn mir kurz wer helfen könnte bitte. Mach de Glotzn off, geeene Fettbemm fressen und orweidn! ;-)
Aber auf unendlich lange Zeit ist esum ja dann dauerhaft 400, aber ich will ja z.B. nur über 20 Messwerte integrieren.
esum wird eigentlich ueber die letzten unendlich vielen Messwerten gebildet. Resp solange wie das Teil schon laeuft... Eigentlich laeuft der Integrator Wertemaessig solange bis der e gleich Null wird. Resp waehrend e ungleich null wird addiert.
Aber ich kann bei einem digitalen System nicht unendlich viele Messwerte speichern ;)
Max W. schrieb: > Aber auf unendlich lange Zeit ist esum ja dann dauerhaft 400, aber ich > will ja z.B. nur über 20 Messwerte integrieren. Ich glaube du verwechselst da was. Du integrierst die Regelabweichung. Die sollte irgendwann ja mal bei 0 landen. Dann wird halt 0 integriert. Dein I-Anteil regelt sich doch selbständig ein. Wichtig ist halt nur das er nicht ins Unermessliche wächst und sättigt wenn du etwas falsch Dimensioniert hast (Anti-Wind-up). Aber das fängst du ja bereits ab. Was auch immer hilft, wenn man den Regler abschaltet, den Integralanteil zu löschen. Dann gibts keine Einschaltüberschwinger.
@Max Wildfellner (mo0oxx) >Aber auf unendlich lange Zeit ist esum ja dann dauerhaft 400, Richitg, dann ist dein I-Anteil in der Begrenzung. > aber ich >will ja z.B. nur über 20 Messwerte integrieren. Kann es sein, dass du einen Integrator mit einem Mittelwert verwechselst? >Aber ich kann bei einem digitalen System nicht unendlich viele Messwerte >speichern ;) Eben darum gibt es ja die Begrezung des I-Anteils. Weil irgendwann mal die Variable überlaufen würde und dein Regler von einem Anschlag auf den anderen schießen würde. Das ist meist nicht so toll.
Max W. schrieb: > Aber ich kann bei einem digitalen System nicht unendlich viele Messwerte > speichern ;) Das tust du auch nicht. Du speicherst die Regelabweichung.
Jo bin schon wieder dabei hatte das ganze irgendwie mit einem digitalem Filter verwechselt. Dank euch
Auch ein einfacher Tiefpass, dessen fruehere Eingabewerte mit einer Gewichtung von 1/e abfallen, benoetigt nur einen einzigen Speicherwert. Die digitalen Filter mit mehr als einem Koeffizienten arbeiten mit Schiebregistern, die sinnvollerweise als Ringbuffer implementiert sind.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.