¿Cuáles son las buenas estrategias para afinar los lazos PID?

Intentaré ampliar un poco mi experiencia para aquellos que puedan estar interesados. Creo que el problema es que tenemos mucha teoría de control que es algo inaccesible (y a veces no útil) y luego tenemos reglas generales que hacen suposiciones sobre los sistemas que a menudo son inexactas.

Estabilidad

Hablemos primero de por qué los lazos de control se vuelven inestables. Para esta discusión voy a suponer un sistema lineal. Informalmente esto significa que si su señal de control es una onda sinusoidal a una frecuencia determinada entonces su salida observada está en la misma frecuencia y si usted cambia la amplitud de su sistema de control su salida responde en la misma proporción. Esta suposición es una buena aproximación para muchos sistemas del mundo real y nos permite mirar diferentes frecuencias de forma aislada.

Si usted mira la ruta de control tiene un punto de ajuste, su controlador PID, su sistema (aka «Planta»), y luego su sensor. Imagine un punto de ajuste fijo y una onda sinusoidal de su sensor (esto es igual a una perturbación del mundo real en el sensor, retroalimentado). En un sistema inestable, su retroalimentación hace que el bucle de control amplifique el error en lugar de reducirlo, de manera que a medida que el tiempo aumenta su amplitud. La razón por la que esto sucede es debido a un retraso, o para esta frecuencia en particular, un cambio de fase entre la entrada y la salida. Para una frecuencia determinada podemos observar ese desplazamiento en bucle abierto (es decir, sin realimentación) y la amplitud de la salida y cuando dibujamos todo eso en un gráfico obtenemos algo así como un diagrama de Bode. Si tenemos una situación en este gráfico de bucle abierto en la que el error sigue amplificándose, entonces tenemos un sistema inestable. Si el retardo es inferior a la mitad de la longitud de onda o la ganancia es inferior a x1, el sistema será estable. En la práctica queremos algún margen desde ese punto (margen de ganancia y margen de fase) que es la razón por la que verá este «retroceso» en muchos de los métodos manuales/heurísticos.

El principal problema con esos métodos manuales es que está volando a ciegas y está casi garantizado que obtendrá un sistema de control pobre.

También tenga en cuenta que el significado P, I y D está relacionado con lo que su sensor está midiendo y qué control está aplicando. Un error común en los controladores construidos en casa es que la gente piense que están aplicando P cuando en realidad no es así. Los controladores de motor a menudo tienen un bucle de posición, corriendo sobre un bucle de velocidad corriendo sobre un bucle de par. (Una cascada)

Bien, pero ¿cómo nos ayuda esto?

El primer punto que me gustaría hacer es que si usted está construyendo su propio controlador PID también debe construir una forma de medir la respuesta de bucle abierto. Haz un barrido de frecuencia en la entrada de tu controlador y mide la salida del sensor con la retroalimentación desconectada. Entonces podrás dibujar el diagrama de Bode de lazo abierto y ver por qué tu sistema es estable y ser capaz de intercambiar los distintos controles. También es útil medir la respuesta en lazo cerrado y puedes hacerlo con cualquier sistema haciendo un barrido de frecuencia de tu punto de ajuste mientras el lazo está cerrado. Ambas cosas no son tan difíciles y no requieren un gran conocimiento teórico.

Si usted simplemente está ajustando los controles sin ninguna comprensión de lo que está pasando bajo el capó no será capaz de optimizar su sistema. Construir alguna intuición sobre estos sistemas no es tan difícil. Por ejemplo, la ganancia proporcional no tiene ningún efecto sobre la fase, sino que simplemente aumenta la ganancia de bucle abierto en todas las frecuencias. Así que lo que estás haciendo cuando aumentas la ganancia proporcional en todos esos métodos de sintonización manual es encontrar la frecuencia donde la fase va a -180. Vea esto para tener alguna idea más sobre el impacto de los diversos controles en su respuesta de frecuencia.

Muy a menudo conseguir el mejor rendimiento de bucle cerrado implica ajustar el sistema y no sólo las ganancias del controlador. Lo que quieres es hacer que el sistema sea lo más «rígido» posible. Esto le permitirá aumentar los parámetros de control y obtener el mejor ancho de banda de lazo abierto y cerrado. En mi experiencia en aplicaciones de control de motores la ganancia proporcional es la que debe hacer la mayor parte del «trabajo» y el integrador el «resto». No creo que necesites un término D en absoluto. Tener un filtro de paso bajo y un filtro notch ayuda mucho en situaciones en las que puedes tener alguna resonancia mecánica, pero establecerlos sin un Bode Plot es muy difícil (la frecuencia de oscilación que observas en lazo cerrado puede ser diferente a la de lazo abierto).

Si la seguridad es una preocupación (motores muy potentes o un sistema que podría ser destruido por el motor fuera de control) necesitas poner algunos límites antes de empezar a sintonizar (por ejemplo, límite de corriente, error máximo de posición) para proteger el sistema. A continuación, es necesario obtener algún tipo de sensación para el rango de los parámetros. Si tu retroalimentación tiene 40 cuentas por rotación o 4000 cuentas por rotación tus parámetros serán un factor de 100 para un sistema dado. Mi enfoque sería encontrar primero un rango en el que tengas alguna mala capacidad de control y luego aumentar desde ahí empezando con P y luego con I (aunque de nuevo estás volando a ciegas). Retroceder crea este margen de estabilidad.

Más allá del bucle cerrado

El bucle cerrado intenta sacar el error del sistema. Siempre va a tener un rendimiento algo limitado. Lo que quieres hacer es minimizar el error que ve tu controlador de lazo cerrado y una forma de hacerlo es a través de una técnica llamada feed forward. En el feed-forward vas alrededor del controlador y conduces un comando directamente al sistema. Un ejemplo de esto sería la aceleración de avance. Si se conoce la constante de par del motor y se conoce la carga, se puede saber la cantidad de corriente que se necesita para obtener una determinada aceleración de la carga. Simplemente tomas la aceleración de entrada del comando, la multiplicas por una constante y la añades al comando de accionamiento del controlador. Básicamente estás haciendo lo que se necesitaría para conducir el sistema si no hubiera un controlador y cuanto más te acerques, menos error tendrá que sacar tu bucle y mejor funcionará tu sistema. Hace una gran diferencia en la práctica.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *