Hi, hat von euch schon jemand Erfahrung mit einem PID-Regelalgorithmus für Microkontroller sammeln können? Wir haben mit userem Prof eine Differenzengleichung für einen PID Regler hergeleitet, wobei ich da leider noch nicht zum Testen gekommen bin (nur die Spungantwort auf den Oszi angeschaut) Wenn ja wie sieht das bei euch aus ? Vielleicht könnte man mal alle Infos zusammentragen und hier reinstellen(falls Interesse besteht). Grüsse
:
Gesperrt durch Moderator
So bin wieder in Dütschland. hier als Anhang noch mal die Gleichung und das Bild der Sprungantwort. Da ist der PI-Regler zu sehen beim PID wäre halt bei Beginn der Sprung in die maximale(theorethische) Ewigkeit zu sehen. Viel Erfolg beim Testen.
ich weis nicht warum alle sich so krasse formeln "herleiten" vor allem wenn das ergebnis so mies ausschaut... naja kann gut sein, dass du die konstanten nicht richtig gewählt hast... auf jeden fall ist ein klassischer PID regler eigentlich primitiv.. du benötigst eine variable zur integration, die vorherige regelabweichung und die derzeitige regelabweichung..... y=Kp*regelabweichung+Kd*(vorherige regelabweichung - derzeitiger regelabweichung)+Ki*integrationsvariable in jedem zyklus darfst du dann die regelabweichung zur integrationsvariablen dazuaddieren und fertig.. wenn man sich jetzt das ganze überlegt kommt man drauf, dass Kd = Td sein muss also die vorhaltezeit und Ki = 1/Ti also 1/ die nachstellzeit... dann holst du dir noch einige primitive einstell-faustformeln und du bist glücklich ;) billig ist z.b die "open loop method" nach ziegler-nichols das liefert zwar recht beachtliche überschwinger aber kann man dann schon herumprobieren um das ganze zu optimieren... 73
Hi Hans, am Ende zählt das Ergebnis da hast schon Recht. Diese Gleichung wurde halt im Rahmen einer Projektwoche an unserer Technikerschule hergeleitet. Zu Begin stand die Integral/Differenzialgleichung eines PID-Reglers in Form von Operationsverstärkern. Das viele Wege nach Rom führen ist wohl jedem hier klar. Was meinst eigentlich mit Miess? Das dort ist lediglich die Sprungantwort des Reglers ohne Regelstrecke wie der geschlossene Regelkreis aussieht muss ich erst mal testen. Ich habe da keinerlei Erfahrung mit, deshalb der Thread. Gruss
sprungantwort ohne strecke?????? die sprungantwort sollte sich im idealfall vom eingangssprung nicht unterscheiden !!!! das meinte ich mit mies ;) 73
für PI Regler in C: Code: float To=0.00128,Tn=0.001,Kp=0.3; k=messwert; Uk=Kp*(k+(To/Tn-1)+k1)+Uk1; Uk1=Uk; k1=k; ausgabe(Uk); so schlimm ist das auch nicht ^^
@Hans...das k=Messwert stellt in dem Bild dargestellt die Regeldifferenz e dar, diese ist eine Spannung die auf dem AD-Wandler eingelesen(messwert) wird. Da e einfach nur vorgegaukelt wird und von y nicht beeinflusst wird ist der Regler offen und gibt diese Sprungantwort raus.
Hallo, einn PI Regler kann man aber auch einfach so berechnen: y(k) = Kp * e(k) + ((TA/TN) * e (k)) + y (k-1) \ / \ / ------- ------------------------ | | P-Anteil I-Anteil dadurch benötigt man weniger speicher! gruß
@SYD Danke ... ist TA die Zykluszeit zwischen den einzelnen Berechnungen?
Haben die Beteiligten hier nun eine Lösung gefunden? Für PID? Ich bräuchte nämlich hierfür auch eine Lösung! Danke!
Ein PID ist nun etwas dermassen Triviales. Die Welt ist voll davon. Wirf Gurgel an.
J. R. schrieb: > Ich bräuchte nämlich hierfür auch eine Lösung! Allerdings kommst du für diesen Thread mehr als 5 Jahre zu spät.