Estou implementando um controlador PID para controle de velocidade do motor. Terminei de implementar o controle PI e ele funciona perfeitamente para mim. Na especificação, fui instruído a implementar uma técnica de filtragem usando a seguinte equação para a parte D:
Agora, o que entendi até agora, é que s
representa "dx/dt"
geralmente o que corresponde à taxa de mudança de erro, mas aqui posso relacioná-lo com a taxa de mudança de feedback. Td/N
é para limitar a saída de ganho geral (espero que eu entendi direito). Agora, para representar isso em termos de código C, tentei da seguinte maneira:
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;
Bem, os resultados adicionando D não são o que eu previ. Eu só quero saber se eu implementei a equação da porção D corretamente? Estou cometendo algum erro na minha compreensão das matemáticas básicas da diferenciação?
NOTA: Não tenho liberdade para alterar o recálculo do kp, ti, td, pois ele vem diretamente do VFD.