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.