Estoy implementando un controlador PID para el control de velocidad del motor. He terminado con la implementación del control PI y funciona perfectamente bien para mí. En la especificación se me ha dicho que implemente una técnica de filtrado mediante el uso de la siguiente ecuación para la parte D:
Ahoraloqueentiendoesques
representa"dx/dt"
generalmente que corresponde a la tasa de cambio de error, pero aquí puedo relacionarlo con la tasa de cambio de retroalimentación. Td/N
es para limitar el rendimiento de ganancia general (espero que lo haya hecho bien).
Ahora, para representar esto en términos de código C, intenté lo siguiente:
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;
Bueno, los resultados agregando D no son lo que he predicho. ¿Sólo quiero saber si implementé la ecuación de la porción D correctamente? ¿Estoy cometiendo algún error en mi comprensión de las matemáticas básicas de la diferenciación?
NOTA: no estoy en libertad de cambiar la actualización del kp, ti, td, ya que proviene directamente del VFD.