Sto implementando un controller PID per il controllo della velocità del motore. Ho finito con l'implementazione del controllo PI e funziona perfettamente per me. Nella specifica mi è stato detto di implementare una tecnica di filtraggio usando la seguente equazione per la parte D:
Ora quello che ho capito fino ad ora, è quello che generalmente s
rappresenta "dx/dt"
il tasso di cambio di errore, ma qui posso metterlo in relazione con il tasso di cambio di feedback. Td/N
serve a limitare l'output del guadagno complessivo (spero di aver capito bene). Ora per rappresentare questo in termini di codice C, ho provato il seguente modo:
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;
Bene, i risultati aggiungendo D non sono quelli che ho previsto. Voglio solo sapere se ho implementato correttamente l'equazione della porzione D? Sto commettendo degli errori nella mia comprensione delle basi della differenziazione?
NOTA: non sono libero di modificare il ricalcolo di kp, ti, td in quanto proviene direttamente dal VFD.