www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PI regler wackelt


Autor: gertro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: drämö (Gast)
Datum:

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

Autor: U.R. Schmitt (Gast)
Datum:

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

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hilft nur eins:
Eine Hexenverbrennung muss her!

Autor: gertro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Heino (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist sicher nicht dein original Code...

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

Autor: Johnny B. (johnnyb)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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??????

Autor: gertro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

Autor: Björn C. (Firma: privat) (blackmore)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein wenig D-Anteil wirkt manchmal Wunder...

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

Autor: natürlisch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Michael H. (michael_h45)
Datum:

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

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.