Einstellen eines PID Reglers



  • Hallo,

    - Durch aufdampfen von Gold soll die Frequenz eines Quarzes verändert werden.
    - Ein Wolfram Filament dient als Wärmequelle.

    Damit eine gleichmässige Dampfleistung und damit auch eine gleichmässige Frequenzänderung erreicht wird,
    will ich die Leistung mit einem PID Regler steuern.

    Ich glaube, der Code für den PID Regler ist korrekt. Aber beim bestimmen der Parameter (Kp, Ki und Kd) bin ich ratlos.
    Den einzigen Wert den ich sicher bestimmen konnte war PID_Max. Werte über 200.0 zerstören das Filament.

    Mit den Parametern Kp=1.5, Ki=0.8 und Kd= 0.5 geht der PID innerhalb von etwa 2 Sekunden zuerst
    auf fast PID_Max und danach auf fast 0, danach regelt er sauber.

    Ich habe für das bestimmen der Parameter gegoogelt und wurde mit einer Flut von für mich
    unverständlichen Formeln überschwemmt 😞

    Ich wäre also sehr dankbar wenn jemand eine einfache Methode zum bestimmen von Kp, Ki und Kd hätte.

    Hier zur Sicherheit noch der Regler:

    Double TPIDControler::PID (Double actPID)
    {
    	// Config:
    	// <PID_Parameter PID_Kp="1.500" PID_Ki="0.800" PID_Kd="0.500" PID_Max="200.0"/>
    
    	Double kp;
    	Double ki;
    	Double kd;
    	Double maxPid;
    
    	GetConfig (kp, ki, kd, maxPid);
    
    	Double delta = mSetpoint - actPID;
    	if (fabs (delta) > kMinDelta)
    		mI += delta;
    
    	Double p = delta * kp;
    	Double i = mI * ki;
    	Double d = (delta - mLastDelta) * kd;
    
    	mLastDelta = delta;
    
    	Double pid = p + i + d;
    
    	if (pid > maxPid)
    		pid = maxPid;
    	else if (pid < 0)
    		pid = 0;
    
    	MCTraceLib (NULL, eTraceInfo, TFCTX,
    		_T("%.3f;%.3f;%.3f;%.3f;%.3f;%.3f"), mSetpoint, p, i, d, delta, pid);
    
    	return pid;
    }
    

    Besten Dank zum voraus
    Walter



  • du kannst dich nach dem "Faustformelverfahren" richten, das gibt mal grob die Richtung vor, wohin es mit den Werten gehen soll, z.B. https://de.wikipedia.org/wiki/Faustformelverfahren_(Automatisierungstechnik)

    Ganz grob lässt sich sagen:
    ki: Regler "merkt" sich die Abweichung, sodass diese vollständig ausgeregelt werden kann
    kd: reagiert auf schnelle Änderungen - Achtung! kd kann die Stabilität des Systems zerstören, also im Zweifelsfall kleiner als größer ansetzen. Oder gar auf 0 setzen.

    Ansonsten kannst dir ja mal die mathematischen Methoden ansehen. Stimmt schon, ist nicht unbedingt einfach, aber durchaus auch schaffbar wenn man bei Integralen und linearer Algebra nicht nur Bahnhof versteht.
    Kannst ja mal schauen ob du mit Uniskripten zurechtkommst: http://www.acin.tuwien.ac.at/fileadmin/cds/lehre/aut/Archiv/WS1516/AutomatisierungVO.pdf



  • Integralen und linearer Algebra nicht nur Bahnhof versteht

    Vor 44 Jahren habe ich mal was davon gehört aber bis Heute nie wirklich gebraucht 😉

    Den Wikipedia Artikel hatte ich schon gefunden, fiel aber bei den Formeln in Schockstarre.
    Heute habe ich dann weiter nach unten gescrollt und die "Empirische Dimensionierung"
    gefunden, das hilft mir weiter.

    Gruss
    Walter



  • weicher schrieb:

    Integralen und linearer Algebra nicht nur Bahnhof versteht

    Vor 44 Jahren habe ich mal was davon gehört aber bis Heute nie wirklich gebraucht 😉

    Den Wikipedia Artikel hatte ich schon gefunden, fiel aber bei den Formeln in Schockstarre.

    Nur mal so als naive Frage: Wie kommt man, wenn man sich so lange nicht mit derartigem auseinandersetzen musste, in die Verlegenheit, ploetzlich mit solchen Formeln konfrontiert zu werden?



  • Keine Ahnung ob es bei besagter Anwendung relevant ist, aber in der Praxis ist es recht üblich den I-Anteil gegen Windup abzusichern. Auch solltest du vielleicht anschauen ob deine Reglerstrecke linear ist. Überhaupt ist eine Systemidentifikation (wenn sie denn praktisch sinnvoll durchführbar ist) der beste Weg ins Glück.

    https://en.wikipedia.org/wiki/Integral_windup



  • in die Verlegenheit, ploetzlich mit solchen Formeln konfrontiert zu werden?

    So ist das Leben, jeden Tag eine neue Überraschung 😉

    Normalerweise tunen wir die Quarze mit einem Laser, da ist es ganz einfach, jeder Schuss erzeugt direkt eine Änderung der Frequenz.
    Da gibt es nichts zu regeln. Leider funktioniert das nur für Stimmgabel Quarze denn da gibt es an der Spitze
    der Gabeln ein Tuningfeld welches nicht mit den Elektroden auf dem Quarz verbunden ist.
    Man kann also auf diese Tuningfeld ballern ohne dass sich die elektrischen Parameter R und C ändern, es ändert sich nur die Frequenz.

    Anders sieht es bei Hochfrequenten (16MHz) Flächenschwingern aus, da ist die ganze Fläche die Elektrode, wenn man darauf ballert
    dann verändert sich zumindest das C und das würde bedeuten, dass jeder Quarz ein anders C hat.
    Darum wird bei Flächenschwingern durch aufdampfen von Gold auf die Elektrode nur die dicke der Elektrode verändert und das hat
    keinen Einfluss auf das C. Die alten Maschinen welche Quarze nach dieser Methode tunen, regeln die Leistung nicht und wir haben
    starke Hinweise darauf, dass das zu der nicht so berauschenden Ausbeute führt.

    In der Zwischenzeit läuft der Regler aber Zufriedenstellend, er überschiesst zwar beim Einschalten immer noch ein wenig aber da
    das Schiffchen ziemlich träge ist, ist das eigentlich ganz gut. Die Wartezeit auf die Dampfrate (Frequenzänderung) ist jetzt
    etwa 2 Sekunden kürzer als bei den alten Maschinen.


Log in to reply