Implementación de D (diferenciación) en PID

8

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:

Ahoraloqueentiendoesquesrepresenta"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.

    
pregunta spp

1 respuesta

1

Tengo 3 puntos para compartir:

1-Te diré por qué la gente se mete con el término D a la mitad del signo, PID = P + I + D pero, D = kd * (error-error), y en el control de posición si te aproximas al punto de ajuste, siempre olderror es < error, por lo que el término D será negativo y, por lo tanto, disminuirá la salida y evitará el rebasamiento.

2-En cuanto al tiempo, no divida ni use el tiempo. ya que está usando el microcontrolador integrado, simplemente haga una constante de tiempo y cancele desde todas las ecuaciones: por ejemplo, use una interrupción de temporizador para generar una constante de tiempo de 1 ms y llame a su función interna.

3-Por qué estás usando PID para el control de velocidad, el 90% del tiempo PI es suficiente en el control de velocidad, ya que D es más bien un control de aceleración.

Espero que ayude

    
respondido por el ElectronS

Lea otras preguntas en las etiquetas