Estoy implementando un controlador PID para el control de velocidad del motor. Ya terminé de implementar el control PI y funciona perfectamente bien para mí. En la especificación me han dicho que implemente una técnica de filtrado utilizando la siguiente ecuación para la parte D:
Ahora, lo que entiendo hasta ahora, es que generalmente s
representa "dx/dt"
lo 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 la salida de ganancia general (espero haberlo hecho bien). Ahora para representar esto en términos de código C, probé de la siguiente manera:
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 al agregar D no son lo que he predicho. Solo 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 diferenciación?
NOTA: No estoy en libertad de cambiar el recalculado de kp, ti, td ya que proviene directamente del VFD.