Forum: Mikrocontroller und Digitale Elektronik PI regler wackelt


von gertro (Gast)


Lesenswert?

Hallo zusammen,

ich programmiere ein PI regler. das algo läuft aber der Istwer wackelt 
immer. was kann das problem sein? liegt das an parameter oder woran? 
wenn  jemand iene Idee hat bitte einfach geben es wird helfen.
danke

von drämö (Gast)


Lesenswert?

D.h. das System schwingt? Schreib mal ganze Sätze, lies sie hinterher 
nochmal, und stell dir vor du wärst nicht du.

von U.R. Schmitt (Gast)


Lesenswert?

Das ist der Ausgang P3, direkt hinter R5, der hat einen Wackelkontakt.
Kannst Du softwäremäßig auch duch 8fach untersampling beseitigen.

von Olaf (Gast)


Lesenswert?

Laber keinen Unsinn. Ich habe gerade extra einen Hamster geopfert und 
die Eingeweide sagen eindeutig das es an der kalten Loetstelle am 
Eingang liegt!

Olaf

von U.R. Schmitt (Gast)


Lesenswert?

Olaf schrieb:
> Ich habe gerade extra einen Hamster geopfert und
> die Eingeweide sagen eindeutig das es an der kalten Loetstelle am
> Eingang liegt!

Den schönen Hamster -umsonst- Am Eingang liegt doch (Sollwert - 
Istwert)!

von Karl H. (kbuchegg)


Lesenswert?

Da hilft nur eins:
Eine Hexenverbrennung muss her!

von gertro (Gast)


Lesenswert?

drämö schrieb:

 hallo drämö
> .h. das System schwingt? Schreib mal ganze Sätze, lies sie hinterher
>
> nochmal, und stell dir vor du wärst nicht du.

das Problem ist klar. wie du meinst system  das schwingt. Es geht um 
éine digitaler spannungsregler. das algorithmus von PI regler habe ich 
auch hier im Forum gefunden. das programm ist Timergesteuert und alle 
100µs kommt das Interupt.


pi_regler(soll, Ist){

 error= ist - soll;
 esum +=e;
 if (esum < yMin/ ki*ta){
   esum= yMin; }
 if(esum > yMax){
    esum=yMax;}
  yp=kp*e;
  yi=ki*Ta*esum;
 y=yp +yi;
 if(y<yMin){
  y=yMin;}
 if(y>yMax){
  y=yMax;}

return y;
}

ISR(){        alle 100µs

  ADC_Ready()
  Ausgang= pi
  pi_regler();
}

  der Soll ist konstant. der Istwert soll auf 24V geregelt werden. nur 
ih bekomme immer 24,2 oder 24, .... wie kann ich das Problm lösen? 
bitte un Idee
danke

von Karl H. (kbuchegg)


Lesenswert?

gertro schrieb:

> das Problem ist klar. wie du meinst system  das schwingt. Es geht um
> éine digitaler spannungsregler. das algorithmus von PI regler habe ich
> auch hier im Forum gefunden.

Denn geh zu google und such weiter nach PI oder PID Reglern. Dann wirst 
du nämlich draufkommen, dass dieser Reglertyp einzig und alleine mit 
seinen Paramtern kp und ki steht und fällt. Über die wird die 
Regelcharakteristik eingestellt. Und du wirst bei google auch einige 
Seiten finden, dir dir Hilfestellung beim Finden der Regelparameter 
geben. Im Roboternetz (zu finden über google) gibt es da zb eine gute 
Einführung.

> wie du meinst system  das schwingt
Na, schwingen eben.
Die Ausgangsspannung ist zu gering, der Regler dreht den Ausgang mehr 
auf. Schiesst dabei aber über das Ziel hinaus, die Ausgangsspannung wird 
zu hoch. Also dreht er wieder zu. Allerdings dreht er zuviel zu, sodass 
er wieder am Anfangspunkt angelangt ist: die Ausgangsspannung ist zu 
gering. Woraufhin der Regler wieder aufmacht usw. usw. usw.

von Heino (Gast)


Lesenswert?

Das ist sicher nicht dein original Code...

so kann dir doch kein Mensch helfen!!!!!

von Johnny B. (johnnyb)


Lesenswert?

Habe zwar nur Halbwissen was Regler betrifft, aber ein PI-Regler liefert 
doch nie ein konstantes Ausgangssignal, oder liege ich falsch?
Nach meinem Verständnis Schwankt der Ist-Wert immer um den Soll-Wert 
herum, wenn bei guter Dimensionierung auch nur gering.

von U.R. Schmitt (Gast)


Lesenswert?

Außerdem kann ein Regler alleine nicht existieren.
Es gehört immer noch die Sache die geregelt werden soll dazu (Nennt sich 
Regelstrecke). Ohne die und ohne eine Rückkopplung in der Form (Sollwert 
- Istwert) hat man keine Regelung.
Du redest davon das der Istwert pendelt (= schwingt) Der Istwert ist 
aber der Ausgangswert der Regelstrecke. An dem Ausgang des Reglers hast 
Du nur ein Stellwert.
Was willst Du jetzt also genau??????

von gertro (Gast)


Lesenswert?

Karl heinz Buchegger schrieb

danke für die Erklärungen
>
> Die Ausgangsspannung ist zu gering, der Regler dreht den Ausgang mehr
>
> auf. Schiesst dabei aber über das Ziel hinaus, die Ausgangsspannung wird
>
> zu hoch. Also dreht er wieder zu. Allerdings dreht er zuviel zu, sodass
>
> er wieder am Anfangspunkt angelangt ist: die Ausgangsspannung ist zu
>
> gering. Woraufhin der Regler wieder aufmacht usw. usw. usw.

wenn ich Sie gut verstanden habe, muss ich meine Ausgangsspannung höhe 
machen. Im Prinzip kommt die Ausgangsspannung im Bereich 0 bis maxi 33V 
diese Spannung wird duch Wiederständ heruntergeteilt und  und Am 
ADC(0..2,5V). Ich
was kann in den Fall machen? was empfehlen Sie mir?
ich google auch ein bisschen vielleicht finde ich auch was.

sons danke  nochmal

von Karl H. (kbuchegg)


Lesenswert?

gertro schrieb:

> wenn ich Sie gut verstanden habe, muss ich meine Ausgangsspannung höhe
> machen.

Nein.
Du musst dein Kp und dein Ki an deine Regelstrecke anpassen!

Ich hab dir doch schon gesagt wonach du googeln sollst und wo du fündig 
wirst.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

@  gertro (Gast)
> Du musst dein Kp und dein Ki an deine Regelstrecke anpassen!
Und dazu am einfachsten ki erst mal 0 machen und kp langsam hochdrehen, 
bis das Ding anfängt zu schwingen. Dann wieder etwas verringern und den 
Rest dann über ki herausholen.

gertro, du hast wirklich unwahrscheinliches Glück, denn du bist bei 
weitem nicht der Erste, der sowas macht. Und deshalb solltest du Karl 
heinz Bucheggers Ratschläge mal befolgen...

BTW:  error= ist - soll;
Welche Datentypen hast du da?
Poste doch mal deinen kompletten Code.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Und welche last hast du?
10kHz Interruptfrequenz kann schon zu wenig sein je nach dem.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hauke Radtki schrieb:
> 10kHz Interruptfrequenz kann schon zu wenig sein je nach dem.
Oder zuviel, je nach Datentypen der Variablen und der Taktfrequenz...

von Björn C. (Firma: privat) (blackmore)


Lesenswert?

Ohne alles gelesen zu haben - ein Kollege von mir hat mal einen 
Digitalen Regler programmiert, der sich während der Einstellzeit seine 
Parameter selbst sucht und sich dadurch optimiert...

von Thomas (Gast)


Lesenswert?

Ein wenig D-Anteil wirkt manchmal Wunder...

> 10kHz Interruptfrequenz kann schon zu wenig sein je nach dem.
Ja, bei Zentrifugen zur Urananreicherung vielleicht.

von natürlisch (Gast)


Lesenswert?

> Digitalen Regler programmiert, der sich während der Einstellzeit seine
> Parameter selbst sucht und sich dadurch optimiert...

Das ist nicht ganz eindeutig - autotuning oder adaptiv? Die meisten 
Industrieregler haben mittlerweile einen Autotuner (hat sich ein Schwede 
Anfang 80er überlegt).

Für gertros Problem gibt es zwei Mögliche Ursachen: Softwarefehler oder 
Parameter funktionieren nicht.

Da die Stellgröße anscheinend gar nicht ausgewertet wird würde ich die 
Parameter erstmal hintenanstellen. Viel Glück dann noch..

von Michael H. (michael_h45)


Lesenswert?

natürlisch schrieb:
> Für gertros Problem gibt es zwei Mögliche Ursachen:
eher eins... PEBCAC

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.