Ich implementiere einen PID-Regler zur Motordrehzahlregelung. Ich bin mit der Implementierung der PI-Steuerung fertig und sie funktioniert für mich einwandfrei. In der Spezifikation wurde mir gesagt, dass ich eine Filtertechnik implementieren soll, indem ich die folgende Gleichung für den D-Teil verwende:
Nun , was ich so weit zu verstehen, ist , dass s
repräsentiert im "dx/dt"
Allgemeinen der mit der Änderungsrate des Fehlers entspricht, aber hier habe ich es mit der Änderungsrate des Feedbacks beziehen kann. Td/N
dient zur Begrenzung der Gesamtverstärkung (ich hoffe, ich habe das richtig verstanden). Um dies nun in Form von C-Code darzustellen, habe ich Folgendes versucht:
s = (CurrentFeedback()-Old_Feedback)*100/(MaxFeedback()); //to calculate the % change in feedback
s = s*1000/sampleTime; //1000 is multiplied because sampleTime is in milliseconds
D = (Td*s)/(1+(s*Td/N));
D = D*KP; //Kp is multiplied as per the standard pid equation.
Old_Feedback = CurrentFeedback();
PID = P+I-D;
Nun, die Ergebnisse durch Hinzufügen von D sind nicht das, was ich vorhergesagt habe. Ich möchte nur wissen, ob ich die D-Teilungsgleichung richtig implementiert habe. Mache ich Fehler in meinem Verständnis der grundlegenden Mathematik der Differenzierung?
HINWEIS: Es steht mir nicht frei, die Neuberechnung von kp, ti, td zu ändern, da diese direkt vom VFD stammt.
quelle
Antworten:
Ich habe 3 Punkte zu teilen:
1-Ich werde Ihnen sagen, warum Menschen mit D-Term-Zwischenzeichen des Vorzeichens herumspielen, PID = P + I + D, aber D = kd * (Fehler-Fehler), und in der Positionssteuerung, wenn Sie sich dem Sollwert nähern, ist immer ein älterer Fehler <Fehler, so dass der D-Term negativ ist, und somit die Ausgabe verringert und das Überschwingen verhindert.
2-In Bezug auf die Zeit nicht teilen oder Zeit verwenden. Da Sie einen eingebetteten Mikrocontroller verwenden, erstellen Sie einfach eine Zeitkonstante und löschen Sie sie aus allen Gleichungen: Verwenden Sie beispielsweise einen Timer-Interrupt, um eine Zeitkonstante von 1 ms zu generieren und Ihre Funktion darin aufzurufen.
3-Warum Sie PID für die Geschwindigkeitsregelung verwenden, 90% der Zeit PI reicht für die Geschwindigkeitsregelung aus, da D hier eher einer Beschleunigungsregelung ähnelt.
Ich hoffe, das hilft
quelle