D-Anteil wirkt sich nicht aus

Gast #1570796
Lesenswert?

Hallo zusammen ich habe einen PID Regler mit einem Atmega128 realisiert. 
Damit regel ich einen Lüfter.

Für die Parameter des Reglers habe ich Kp=4.8 Tn=2 und Tv=0.13 gewählt. 
Mein Problem ist jetzt. Die Sprungantwort des Regelkreises sieht immer 
gleich aus egal ob Tv=0 oder Tv=0.13.

Woran kann das liegen.

Im Anhang mein Code.
Angehängte Dateien:
#1570822
Lesenswert?

PID schrieb:
> Hallo zusammen ich habe einen PID Regler mit einem Atmega128 realisiert.
> Damit regel ich einen Lüfter.
>
> Für die Parameter des Reglers habe ich Kp=4.8 Tn=2 und Tv=0.13 gewählt.
> Mein Problem ist jetzt. Die Sprungantwort des Regelkreises sieht immer
> gleich aus egal ob Tv=0 oder Tv=0.13.
>
> Woran kann das liegen.

Es könnte daran liegen, dass du hier

y = (Kp*e)+(I*esum)+(D*(e-ealt));   //Reglergleichung

dein so schön ausgerechnetes Kd gar nicht benutzt.

Edit: vergiss es. Hab die Berechnung schon gesehen.
Gast #1570836
Lesenswert?

Hallo

was meinst du damit, das weiß ich doch. das Problem ist das D, Kd oder 
Tv nenns wie du lustig bist, sich nicht bemerktbar macht. Ich habe einen 
anderen PID Regler, wenn ich da Tv=0,125 setze, ist der Regelkreis 
schneller, dafür wird die Stellgröße stärker beansprucht.

Danke für deine Antwort.
#1570852
Lesenswert?

PID schrieb:
> ja für D bekomme ich 581 finde ich seltsam

Kd ausgeben lassen und alle anderen Werte, die zur Berechnung benutzt 
werden. Eigentlich sollte 624 raus kommen. Deine Zahlenbereiche sind 
zwar nicht so schlecht, aber ein gewisser Schwund ist bei float Rechnen 
immer drinnen.

Aber sei es wie es sei.
Auch mit 581 sollte sich D*(e-ealt) bemerkbar machen, wenn e von ealt 
abweicht. Daher: diese Werte mitprotokollieren.
#1570877
Lesenswert?

PID schrieb:
> Hi danke für den Tip
>
> also jetzt weiß ich zwar warum der D-Anteil sich nicht bemerktbar macht.
> e ist nämlich gleich ealt
> Warum ist das aber so ???

Weil du es so programmiert hast!

Und das ist auch richtig so: Bei einem PID Regler steht das D für die 
Differenz der Regelabweichung. Und die ist nun mal die Differenz zum 
vorhergehenden Wert.

> Was muss ich ändern ???
Gar nichts. Dein Regler wird auch ohne D Anteil gut funkionieren.
Gast #1570882
Lesenswert?

Sorry aber das ist doch der PID Algorithmus oder habe ich da was 
grundsätzliches Falsch verstanden.
Normal müsste sich doch e nach jedem Zyklus ändern. Dann wäre e nicht 
mehr gleich ealt.

Oder. Danke für eure/deine hilfe.
Gast #1570887
Lesenswert?

>
> Was muss ich ändern ???
>Gar nichts. Dein Regler wird auch ohne D Anteil gut funkionieren.

Stimmt zwar aber ich hatte das ja oben schon erwähnt ich habe noch einen 
andere PID Regler und bei dem Funktioniert es auch. Der Vorteil ich halt 
das der Regelkreis schneller ausgeregelt.

Danke das müsste doch klappen. Bitte.
#1570894
Lesenswert?

PID schrieb:

> Danke das müsste doch klappen. Bitte.

Dann zeig mal, wie du die Protokollierung eingebaut hast.
Die kannst du nur an 3 Stellen einbauen. Überall sonst ist e 
selbstverständlich gleich ealt.
1
ISR (TIMER0_OVF_vect)
2
{
3
  // Regeldifferenz bilden
4
  e = w - x;                                    // aktuelle Regelabweichung bestimmen
5

6
  esum = esum + e;                               // Summe der Regelabweichung aktualisieren  
7
   
8
  y = (Kp*e)+(I*esum)+(D*(e-ealt));   //Reglergleichung 
9

10
  ealt = e;

und ab da ist ealt und e wieder gleich.
Dich interessieren die Werte von e und ealt gleich nachdem e berechnet 
wurde.
#1570956
Lesenswert?

PID schrieb:
> Also ich habe einen breakpoint in die main und einen bei e=w-x und einen
> nach ealt=e;

Na ja
Was erwartest du. Nach ealt = e; haben ealt und e klarerweise denselben 
Wert. Genau das steht ja im Programm. Wenn schon, dann musst du dir ealt 
und e vor dieser Zuweisung ansehen.
Gast #1571763
Lesenswert?

Hallo noch mal

also ich habe e und ealt mal jetzt vor der Zuweisung angeschaut, aber 
komischerweise sind die immer gleich. Kann das daran liegen das der DA 
Wandler zu langsam läuft. Ich weiß echt nicht mehr was ich machen soll. 
Ich bin euch  wirklich mit dank verbunden wenn mir einer sagen würde was 
ich da noch machen kann.


danke
#1571789
Lesenswert?

PID schrieb:
> Hallo noch mal
>
> also ich habe e und ealt mal jetzt vor der Zuweisung angeschaut, aber
> komischerweise sind die immer gleich. Kann das daran liegen das der DA
> Wandler zu langsam läuft.

Das kann an allem möglichen liegen.
zb daran, dass sich der Messwert (und damit der Regelfehler bei 
gleichbleibendem Sollwert) tatsächlich nicht geändert hat.

Der D-Anteil im PID Regler soll ja auch nur dann zum tragen kommen, wenn 
sich eine Änderung im Fehler ergibt. Solange der Fehler konstant ist 
wirkt sich der D-Anteil nicht aus.
Seine Aufgabe ist es einer sprunghaften Änderung des Fehlers etwas 
entgegenzusetzen aber nicht den Fehler auf 0 zu bringen.

> wenn mir einer sagen würde was ich da noch machen kann.

Wie wäre es mit: Verstehen was die einzelnen Teile im PID Regler machen, 
was ihre Aufgabe ist und warum sie benutzt werden.
Also jetzt nicht: Wie soll die Springantwort aussehen. Das ist nur die 
graphische Repräsentierung eines allgemeineren Prinzips. Hat man das 
allegemeinere Prinzip verstanden ergibt sich daraus welche Sprunantwort 
man erwarten kann.
Gast #1572301
Lesenswert?

Hallo

danke für deine Antwort. Ich hatte jetzt beim lesen den Eindruck ich 
habe dich verärgert. Das war bestimmt nicht mein Ziel.

Zu

>Wie wäre es mit: Verstehen was die einzelnen Teile im PID Regler machen,
>was ihre Aufgabe ist und warum sie benutzt werden.

Ich glaube schon, dass ich das Verstanden habe. Ich weiß, dass der 
D-Anteil den Regler schneller macht und nicht den Fehler behebt.
Ich weiß aber auch das bei einer Drehzahlregelung, man den Versuch mit 
PI macht und dann mit PID und sich dann die Ergbnisse vergleichen kann.

Wie bereits oben geschrieben habe ich für die selbe Strecken noch einen 
anderen Regler benutzt. Und da sieht man halt den Unterschied zwischen 
PI und PID Regler. Das ist auch mein Ziel für diesen Versuch den ich 
gerade Versuche zu realiseren.

Trotzdem danke für deine Zeit !!!!

P.S. sorry das ich nicht direkt geantwortet habe, bin leider noch an 
anderen Sachen dran.
#1572353
Lesenswert?

PID schrieb:

> Ich glaube schon, dass ich das Verstanden habe. Ich weiß, dass der
> D-Anteil den Regler schneller macht

Schon.
Aber WARUM macht er den Regler schneller?

Weil er dafür sorgt, dass bei einer Änderung von entweder Sollwert oder 
Istwert, wenn also die Fehlerdifferenz sich verändert, sofort 
gegengesteuert wird. Der P-Regler kann das nicht, weil er nur 
proportional zum Fehler ausregelt. Der I-Regler kann das auch nicht, 
weil da der Fehler sich erst einmal aufsummieren muss, bis das 
Stellglied nennenswert in Bewewgung kommt (dafür kann der wiederrum 
feiner Regeldifferenzen ausregeln)

Das ist wie wenn du einen Stab mit der Hand balancierst.
Neigt sich der Stab nach rechts, dann zuckt deine Hand auch erst mal 
nach rechts, obowhl du noch gar nicht weißt wieviel. Erst dann fängt 
dein Gehirn an, die dann noch verbleibende Regldifferenz auszugleichen. 
Das Zucken ist vergleichbar mit dem D-Anteil.
Bei kleinen Neigungen, kleinen Änderungen des Fehlers, unternimmst du 
kein Zucken und das Gehirn regelt nach. Kommt aber ein Windstoss und 
nimmt der Fehler (die Winkeldifferenz zur Senkrechten) schlagartig zu, 
dann denkst du nicht lange darüber nach, sondern zuckts einfach nach 
rechts.

Jedes der 3 Glieder im P Regler hat gewisse Eigenschaften und Aufgaben. 
Wenn dir die klar sind, ist auch das Verhalten des kompletten Reglers 
verstehbar
Gast #1572578
Lesenswert?

hi

Deine Antworten Ehren dich wirklich. Ich muss auch zugeben so gut hat 
mir das noch kein Prof. erklärt.

Aber das löst nicht mein Problem, warum der D-Anteil sich beim zweiten 
Regler nicht bemerkbar macht. Gleicher Versuch, nur halt ein anderer 
Regler ich denke es muss auf jeden Fall am Programm liegen.

Danke für deine Bemühungen auch wenns mir nicht so richtig geholfen hat.

schönen Abend noch.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren