Ajustar las ganancias del controlador puede ser difícil, ¿qué estrategias generales funcionan bien para obtener un sistema estable que converja en la solución correcta?
Ajustar las ganancias del controlador puede ser difícil, ¿qué estrategias generales funcionan bien para obtener un sistema estable que converja en la solución correcta?
Respuestas:
Para motores pequeños de bajo par con poco o ningún engranaje, un procedimiento que puede usar para obtener una buena sintonía de referencia es probar su respuesta a una perturbación.
Para ajustar un PID, use los siguientes pasos:
La perturbación que use dependerá del mecanismo al que esté conectado el controlador. Normalmente, alejar el mecanismo con la mano del punto de ajuste y soltarlo es suficiente. Si las oscilaciones crecen más y más, entonces necesita reducir la ganancia de P.
Si configura la ganancia D demasiado alta, el sistema comenzará a vibrar (vibrará a una frecuencia más alta que las oscilaciones de ganancia P). Si esto sucede, reduzca la ganancia de D hasta que se detenga.
Creo que esta técnica tiene un nombre. Lo pondré aquí cuando lo encuentre.
Un método experimental similar a la respuesta de Hauptmech que me enseñaron en la universidad:
El método Ziegler-Nichols es más preciso si puede obtener un número exacto para el período de oscilación. Generalmente causa oscilaciones usando los números "PID clásicos" dados, por lo que no siempre es óptimo.
Para conocer las reglas generales sobre el efecto de cada término en el tiempo de subida, sobreimpulso, tiempo de establecimiento, error de estado estable y estabilidad, consulte la Tabla 1 de "Análisis y diseño del sistema de control PID" , de Li, Ang y Chong en los sistemas de control IEEE Revista.
Embedded.com ha movido mi artículo una vez más, pero aquí es donde está ahora. Esto le muestra tanto cómo escribir un bucle PID (descubrir cómo hacerlo en algo que no sea punto flotante se deja como ejercicio para el lector) y cómo ajustarlo.
La mejor manera depende mucho de tus habilidades. La forma de obtener la mejor sintonía , suponiendo que sea un experto en sistemas de control, es medir la respuesta de la planta ("planta" == "lo que está controlando"), y luego, dependiendo de cómo lo hizo las mediciones extraen un modelo de la planta y diseñan para eso, o simplemente diseñan directamente para las mediciones.
Para ciertas plantas difíciles, descubrirá que nunca podrá realizar mediciones satisfactorias, en cuyo caso tendrá que ir solo con modelos. Esos son raros, pero satisfactorios cuando los haces trabajar.
Sebastian Thrun presentó un algoritmo simple para ajustar PID en su clase "Cómo programar un automóvil robótico". Se llama "twiddle", lo describe aquí .
Twiddle es muy propenso a encontrar mínimos locales, lo que significa que podría obtener un conjunto de tres constantes que están bien, pero que no son óptimas para la situación. El problema de sintonizar las constantes PID es un subconjunto de un problema de búsqueda más general para encontrar ciertos parámetros para maximizar la utilidad (en este caso, minimizar el error del algoritmo PID). Puede buscar otras soluciones generales para este problema, como escalar colinas, recocido simulado, algoritmos genéticos, etc., que podrían terminar encontrando soluciones más óptimas.
A diferencia de las otras dos respuestas, diría que una buena forma manual de ajustar un PID es ignorar el Kd. Entonces comience en 0 y aumente Kp hasta llegar al objetivo, luego aumente Ki para deshacerse del error de estado estacionario.
Kd puede confundir el problema, ya que responde mal al ruido, luego comienza a agregar filtros en su entrada analógica y luego cuestiona qué hace además de ralentizar su control y hacer que todo sea más difícil de resolver ...
Otra cosa que seguramente me confundirá es si la ecuación PID está en la forma estándar o en una forma independiente (paralela en wikipedia). El efecto de Ki parece ser inverso cuando la forma es la forma incorrecta de lo que crees que es. Ambos tipos se utilizan en la automatización, a veces con la opción de cambiar entre ellos.
Sistema de modelado
Por supuesto, el ajuste experimental se puede hacer como se menciona en las otras respuestas, pero si puede definir un modelo dinámico razonable para lo que quiera controlar y puede identificar sus parámetros , debería poder diseñar su controlador basándose en criterios -definido como exceso , tiempo de subida , tiempo de asentamiento , en estado estacionario de error y así sucesivamente.
Incluso hay herramientas en MATLAB que pueden ajustar su controlador para optimizar una combinación de estos criterios, lo que lo hace aún mejor para usar.
Conoce tu controlador
Aprender lo que hace cada parámetro en el controlador PID también es bastante útil. Todos los algoritmos experimentales se basan en este tipo de conocimiento de alguna manera. Si no solo sigue las instrucciones, sino que puede sentirlo usted mismo, puede que le resulte más fácil ajustar su controlador manualmente.
Problemas del mundo real
Existe la posibilidad de que una de estas cosas, entre otras, se interponga en su camino al ajustar su controlador: bobina , frecuencia de muestreo inadecuada , saturación .
Conclusión
Al final, todo depende de lo que realmente pueda hacer con su sistema para obtener algún conocimiento sobre cómo funciona y qué tipo de experimentación se puede hacer. Lo mejor es aprender más sobre los controladores PID y la teoría de control en general, IMO, pero soy parcial :)
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 sistemas que a menudo son inexactos.
Estabilidad
Hablemos primero sobre por qué los bucles de control se vuelven inestables. Para esta discusión asumiré un sistema lineal. Informalmente, esto significa que si su señal de control es una onda sinusoidal a una frecuencia dada, su salida observada está en la misma frecuencia y si cambia la amplitud de su sistema de control, su salida responde a la misma relación. Esta suposición es una buena aproximación para muchos sistemas del mundo real y nos permite observar diferentes frecuencias de forma aislada.
Si observa la ruta de control, tiene un punto de ajuste, su controlador PID, su sistema (también conocido como "Planta") y luego su sensor. Imagine un punto de ajuste fijo y una onda sinusoidal desde su sensor (esto es igual a una perturbación del mundo real en el sensor, realimentada). En un sistema inestable, su retroalimentación hace que el bucle de control amplifique el error en lugar de reducirlo, de modo que a medida que aumenta el tiempo, su amplitud aumenta. La razón por la que esto sucede se debe a un retraso, o para esta frecuencia particular, un cambio de fase entre la entrada y la salida. Para una frecuencia dada, podemos ver ese cambio de bucle abierto (es decir, sin retroalimentación) y la amplitud de la salida y cuando dibujamos todos esos en un gráfico obtenemos algo así como un diagrama de Bode. Si tenemos una situación en este gráfico de bucle abierto donde el error sigue amplificándose, entonces tenemos un sistema inestable. Si el retraso 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 un margen desde ese punto (margen de ganancia y margen de fase), por lo que verá este "retroceso" en muchos de los métodos manuales / heurísticos.
El principal problema con esos métodos manuales es que estás volando a ciegas y tienes la garantía de tener un sistema de control deficiente.
También tenga en cuenta que el significado P, I y D está relacionado con lo que mide su sensor y qué control está aplicando. Un error común en los controladores caseros es que las personas piensen que están aplicando P cuando en realidad no lo están. Los controladores de motor a menudo tienen un circuito de posición, que se ejecuta sobre un circuito de velocidad que se ejecuta sobre un circuito de torque. (Una cascada )
Bien, pero ¿cómo nos ayuda esto?
El primer punto que me gustaría destacar es que si está construyendo su propio controlador PID, también debe construir una forma de medir la respuesta de bucle abierto. Realice un barrido de frecuencia en la entrada de su controlador y mida la salida del sensor con la retroalimentación desconectada. Luego puede dibujar el diagrama de Bode de bucle abierto y ver por qué su sistema es estable y poder intercambiar los diversos controles. También es útil para medir la respuesta de bucle cerrado y puede hacerlo con cualquier sistema haciendo un barrido de frecuencia de su punto de ajuste mientras el bucle está cerrado. Ambos no son tan difíciles y no requieren muchos conocimientos teóricos.
Si simplemente está ajustando los controles sin comprender lo que sucede debajo del capó, no podrá optimizar su sistema. Desarrollar cierta intuición sobre estos sistemas no es tan difícil. Por ejemplo, la ganancia proporcional no tiene efecto en la fase, sino que simplemente aumenta la ganancia de bucle abierto en todas las frecuencias. Entonces, lo que está haciendo cuando aumenta la ganancia proporcional en todos esos métodos de ajuste manual es encontrar la frecuencia donde la fase va a -180. Vea esto para tener una idea más sobre el impacto de los diversos controles en su respuesta de frecuencia.
Muy a menudo, obtener el mejor rendimiento de bucle cerrado implica ajustar el sistema y no solo las ganancias del controlador. Lo que desea es hacer que el sistema sea lo más "rígido" posible. Eso le permitirá aumentar los parámetros de control y obtener el mejor ancho de banda de bucle abierto y cerrado. En mi experiencia en aplicaciones de control de motores, la ganancia proporcional es la que debería 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 de muesca ayuda mucho en situaciones en las que puede tener cierta resonancia mecánica, pero configurarlos sin un diagrama de Bode es muy difícil (la frecuencia de oscilación que observa en circuito cerrado puede ser diferente a la de circuito 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), debe establecer algunos límites antes de comenzar a sintonizar (por ejemplo, límite de corriente, error de posición máxima) para proteger el sistema. Entonces necesita tener algún tipo de sensación para el rango de los parámetros. Si su retroalimentación tiene 40 conteos por rotación o 4000 conteos por rotación, sus parámetros serán un factor de 100 para un sistema dado. Mi enfoque sería encontrar primero un rango en el que tenga poca capacidad de control y luego subir desde allí comenzando con P y luego con I (aunque nuevamente está volando a ciegas). Retroceder crea este margen de estabilidad.
Más allá del circuito cerrado
El ciclo cerrado intenta eliminar el error del sistema. Siempre tendrá un rendimiento algo limitado. Lo que desea hacer es minimizar el error que ve su controlador de circuito cerrado y una forma de hacerlo es a través de una técnica llamada feed forward. En feed-forward, rodeas el controlador y manejas un comando directamente al sistema. Un ejemplo de eso sería la aceleración de avance. Si sabe que la torsión del motor es constante y conoce la carga, puede saber cuánta corriente necesita conducir para obtener una cierta aceleración de la carga. Simplemente toma la aceleración de entrada del comando, multiplícala por una constante y agrégala al comando de manejo del controlador. Básicamente, está haciendo lo que se necesitaría para conducir el sistema si no hubiera un controlador y cuanto más cerca pueda obtener, menos errores tendrá que eliminar su bucle y mejor funcionará su sistema. Hace una gran diferencia en la práctica.
Ziegler-Nichols es un método manual fácil. También existen métodos más robustos, que generalmente se basan en soluciones matemáticas (optimización analítica, iterativa, etc.)
Más allá de eso, google "PID autoajustable" para algunas técnicas automatizadas. Mi favorito es la aplicación de redes neuronales para la sintonización PID.
0.01sec
) 20secs
como una matriz 3
x 2000
)Hay un enfoque más rápido llamado Ziegler – Nichols :
Y en esta imagen demuestran los efectos de los parámetros PID :