PID-Regler Kategorie: Programmierung (von krassos - 29.06.2004 17:48) | ||
| ||
Hallo zusammen, ich zerbrech mir schon 'ne ganze Weile den Kopf, wie ich allgemeine Regelaufgaben lösen kann, ohne die klassischen Nachteile eines Zweipunktreglers in Kauf nehmen zu müssen. Ich hab hier mal einen allgemeinen PID-Algorithmus zusammengebastelt, der theoretisch in einer Excel-Simulation gut funktioniert. Praktisch teste ich ihn gerade als allgemeinen Temperaturregler. Die Doppelberechnungen in der function werde ich noch entfernen. Eine Autotuning-Funktion ist noch geplant zur automatischen Berechnung der Regelparameter. Gruss krassos /******************************************************************/ /* PID-Regler */ /* */ /* Author : Andreas Sperling */ /* Vorlage : Andreas Sperling */ /* Versionen : 0.3 */ /* Datum : 29. Juni 2004 */ /* geändert : */ /* Getestet : ja */ /* Benötigt : */ /* */ /******************************************************************/ /* w Sollwert x istwert ta abtastzeit tv vorhaltezeit (D-Anteil) tn nachstellzeit (i-anteil) kp proportionalanteil ********************************************************************** Ansatz zur Realisierung eines Software-PID-Reglers für die CC2 �nderungen, Verbesserungen und Beschleunigungen durchaus erwünscht Der Stellwert ist hier auf 0...500 begrenzt. Diese Begrenzung kann natürlich entfernt werden. */ const two = 2.0; const tree = 3.0; const zero = 0.0; float ea; float es,kd; function pid (int w,int x,float ta,int tv,int tn,float kp) returns float { float e,y;string diff,integral; float diff1,esold; int y1; e = w - x;//regelabweichung esold=es; es = es + ((ea + e) / two); //i-speicher diff1=e-ea; kd = (kd+tv / ta * diff1)/two; if (ta / tn * es)*kp > 500 or (ta / tn * es)*kp < 0 es =esold; y = kp * (e + (ta / tn * es) + kd); if y>500 or y<0 { if y>500 y1=500; if y <0 y1=0; } else y1=y; ea = e; return y1; } | ||
Antwort schreiben Antworten: Re: PID-Regler (von Martin Binder - 2.07.2004 21:37) Re: PID-Regler (von krassos - 2.07.2004 23:09) Re: PID-Regler (von krassos - 3.07.2004 22:32) Re: PID-Regler (von guido - 9.11.2004 18:35) Re: PID-Regler (von krassos - 9.11.2004 18:56) Re: PID-Regler (von guido - 9.11.2004 20:49) Re: PID-Regler (von krassos - 10.11.2004 7:54) Re: PID-Regler (von guido - 10.11.2004 20:21) Re: PID-Regler (von krassos - 11.11.2004 7:48) Re: PID-Regler (von guido - 11.11.2004 19:38) Re: PID-Regler (von krassos - 12.11.2004 19:19) Re: PID-Regler (von guido - 12.11.2004 20:40) Re: PID-Regler (von krassos - 12.11.2004 20:55) Re: PID-Regler (von guido - 14.11.2004 17:06) Re: PID-Regler (von guido - 8.12.2004 19:58) Re: PID-Regler (von krassos - 8.12.2004 22:02) Re: PID-Regler (von guido - 9.12.2004 21:23) Re: PID-Regler (von krassos - 9.12.2004 21:48) Re: PID-Regler (von Guido - 1.03.2005 17:46) Re: PID-Regler (von krassos - 7.03.2005 15:57) Re: PID-Regler (von krassos - 7.03.2005 21:57) Re: PID-Regler (von guido - 10.03.2005 17:37) Re: PID-Regler (von guido - 13.03.2005 14:55) Re: PID-Regler (von krassos - 16.03.2005 21:41) Re: PID-Regler (von krassos - 8.04.2005 17:34) Re: PID-Regler (von Guido - 13.04.2005 21:21) Re: PID-Regler (von krassos - 14.04.2005 5:01) Re: PID-Regler (von Guido - 14.04.2005 19:50) Re: PID-Regler (von guido - 9.11.2004 18:48) |