J'implémente un contrôleur PID pour le contrôle de la vitesse du moteur. J'ai terminé la mise en œuvre du contrôle PI et cela fonctionne parfaitement bien pour moi. Dans la spécification, on m'a dit d'implémenter une technique de filtrage en utilisant l'équation suivante pour la partie D:
Maintenant, ce que je comprends jusqu'à présent, c'est que s
représente "dx/dt"
généralement ce qui correspond au taux de changement d'erreur, mais ici je peux le relier au taux de changement de rétroaction. Td/N
est pour limiter le gain global de sortie (j'espère que j'ai bien compris). Maintenant, pour représenter cela en termes de code C, j'ai essayé la méthode suivante:
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;
Eh bien, les résultats en ajoutant D ne sont pas ce que j'ai prévu. Je veux juste savoir si j'ai implémenté correctement l'équation de la portion D? Suis-je en train de faire des erreurs dans ma compréhension des mathématiques de base de la différenciation?
REMARQUE: je ne suis pas en mesure de modifier le recalculer le kp, ti, td car il provient directement du VFD.