Las ganancias del controlador de sintonización pueden ser difíciles, ¿qué general ¿Las estrategias funcionan bien para obtener un sistema estable que converja con la solución correcta?
Comentarios
- Una pregunta dirigida a una pregunta más específica sería más útil. De lo contrario, debería consultar el artículo PID , con una sección sobre ajuste
- I ‘ siempre he encontrado que los PID de ajuste dependen mucho de las características del sistema, por lo que ‘ nunca he encontrado que los sistemas autoajuste sean terriblemente útil. Están bien para una primera pasada, un conjunto de parámetros de bajo rendimiento, pero están lejos de los óptimos, y tendrá el mismo problema con cualquier estrategia general que no esté optimizada. para los aspectos mecánicos, eléctricos y de control de un sistema dado.
Respuesta
Para motores pequeños de bajo par con poco o ningún engranaje, un procedimiento que puede utilizar para obtener una buena sintonía de referencia es sondear su respuesta a una perturbación.
Para ajustar un PID, utilice los siguientes pasos:
- Establezca todas las ganancias en cero.
- Aumente la ganancia P hasta que la respuesta a una perturbación sea una oscilación constante.
- Aumente la ganancia D hasta que las oscilaciones desaparezcan (es decir, está críticamente amortiguado).
- Repita los pasos 2 y 3 hasta que aumentar la ganancia D no detenga las oscilaciones.
- Establezca P y D en los últimos valores estables.
- Aumente la ganancia I hasta que lo lleve al punto de ajuste con el número de oscilaciones deseado (normalmente cero, pero se puede obtener una respuesta más rápida si no le importa un par de oscilaciones de sobreimpulso)
La perturbación que utilice dependerá del mecanismo al que esté conectado el controlador. Normalmente, mover el mecanismo con la mano lejos del punto de ajuste y soltarlo es suficiente. Si las oscilaciones crecen cada vez más, entonces necesita reducir el Ganancia 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 D hasta que se detenga.
Creo que esta técnica tiene un nombre. La pondré aquí cuando la encuentre.
Comentarios
- Suena como Ziegler-Nichols: en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
- @ Throwback1986, esto definitivamente es no Ziegler-Nichols que solo usa la ganancia P y donde Luego, las ganancias I y D se calculan en consecuencia a partir de la ganancia P oscilante y el período de oscilación.
- ¿Tiene algún consejo adicional para sintonizar específicamente un brazo de robot que tiene múltiples articulaciones que necesitan ajuste? ¿Empieza desde la base y trabaja hacia afuera hasta el efector final, o al revés, o incluso importa?
- En un entorno académico o industrial, querrá un método de control más sofisticado. Para un hobbiest; la gravedad tiene un efecto de amortiguación, así que sintonice cada articulación en el ángulo donde la gravedad afecta menos a los motores. Por ejemplo, con el brazo apuntando hacia arriba para que la gravedad actúe sobre los cojinetes y no sobre el motor. El orden no importa. Agregar un término de compensación de gravedad anticipada a su control es probablemente la mejora más fácil (use Newton-Euler recursivo para un brazo en serie) si no puede ‘ obtener el rendimiento que desea.
- La herramienta pidtuner.com me ha dado mejores resultados que el método Ziegler-Nichols, que tiene varios inconvenientes conocidos; folk.ntnu.no/skoge/publications/2003/tuningPID/more/…
Answer
Un método experimental similar a la respuesta de hauptmech que me enseñaron en la universidad:
- Establezca todas las ganancias en 0.
- Aumente Kd hasta que el sistema oscile.
- Reduzca K d por un factor de 2-4.
- Establezca Kp en aproximadamente el 1% de K d .
- Aumente Kp hasta que comiencen las oscilaciones.
- Disminuya Kp por un factor de 2-4.
- Establezca Ki en aproximadamente 1% de Kp .
- Aumente Ki hasta que comiencen las oscilaciones.
- Disminuya Ki en un factor de 2-4.
La El método de Ziegler-Nichols es más preciso si puede obtener un número exacto para el período de oscilación. Por lo general, causa oscilaciones usando el «cla ssic PID «se dan, por lo que no siempre es óptimo.
Para conocer las reglas generales sobre el efecto de cada término en el tiempo de subida, sobreoscilación, tiempo de establecimiento, error de estado estable y estabilidad, consulte la Tabla 1 de «Análisis y diseño del sistema de control PID» , por Li, Ang y Chong en la revista IEEE Control Systems.
Comentarios
- Kd first? Siempre pensé que era mejor comenzar con Kp.
- Yo ‘ estoy transcribiendo diapositivas de conferencias antiguas, si hay ‘ es una buena razón para no hacerlo de esa manera. Yo ‘ tendría curiosidad por escucharlo.
- Eso ‘ es el algoritmo que defiendo para » asiento de los pantalones » tuning. Esto ‘ lo acercará lo más posible sin modelar el sistema ni medir su respuesta. (Modelar y / o medir es el único camino a seguir si realmente necesita el ajuste correcto).
- Ajustar Kd primero no ‘ no tiene ningún sentido para mí , como en cada PID que ‘ he implementado, el signo de Kd es negativo. Se ‘ se utiliza para reducir la señal de control cuando se producen cambios muy grandes en los errores, lo que en esencia amortigua el sistema. Si solo tiene Kd, el sistema se moverá en la dirección opuesta, aumentando el error y agravando el problema. Si Kd es positivo, siempre que ocurra un gran cambio en el error en la dirección correcta, ‘ hará que cambie aún más rápido y sobrepase su objetivo.
- En realidad, ajustar primero la ganancia D tiene algún sentido, pero ‘ m suponiendo que » aumentando » La ganancia D significa aumentar el valor absoluto y ‘ s solo aumenta la amortiguación. El mayor problema con la ganancia D es que amplifica el ruido de alta frecuencia y ‘ es agradable ver ese efecto sin la ganancia P. Por lo tanto, ‘ está esencialmente comenzando por buscar las ganancias en las que deja de comportarse como amortiguación y comienza a amplificar el ruido y las señales de error retrasadas. Yo ‘ m asumiendo que para el paso 2, necesitas pinchar tu planta para ver si oscila.
Respuesta
Embedded.com ha movido mi artículo una vez más, pero aquí es donde está ahora. Esto le muestra cómo escribir un bucle PID (descubrir cómo hacerlo en algo que no sea el 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 el mejor ajuste , asumiendo que eres un experto en sistemas de control, es generalmente medir la respuesta de la planta («planta» == «lo que» estás controlando «), luego, dependiendo de cómo hiciste las medidas, extrae un modelo de la planta y diseña a eso, o simplemente diseña directamente a las medidas.
Para ciertas plantas difíciles, encontrarás que nunca puedes hacer satisfactorias medidas, en cuyo caso hay que ir solo por modelos. Esos son raros, pero satisfactorios cuando los hace funcionar.
Respuesta
Sebastian Thrun presentó un algoritmo simple para ajustar PID en su Clase «Cómo programar un coche robótico». Se llama «twiddle», él lo describe aquí .
Twiddle es muy propenso a encontrar mínimos locales; esto significa que podría llegar a un conjunto de tres constantes que están bien, pero no óptimas para la situación. El problema de ajustar 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, minimizando el error del algoritmo PID) .Puedes buscar otras soluciones generales a este problema, como escalada, recocido simulado, algoritmos genéticos, etc. que podrían terminar encontrando soluciones más óptimas.
Respuesta
En contraste con las otras dos respuestas, diría que una buena forma manual de ajustar un PID es ignorar el Kd. Así que comience en 0 y aumente Kp hasta llegar al objetivo, luego aumente Ki para deshacerse del error de estado estable.
Kd puede confundir el problema ya que responde mal al ruido, luego comienza a agregar filtros en su entrada analógica y luego cuestionar qué hace eso 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 forma independiente (paralela en wikipedia). El efecto de Ki parece invertirse cuando la forma es incorrecta a lo que crees que es. Ambos tipos se utilizan en la automatización, a veces con la opción de cambiar entre ellos.
Respuesta
Modelado del sistema
Por supuesto, se puede realizar un ajuste experimental como se menciona en las otras respuestas, pero si puede definir un modelo dinámico razonable para lo que quiera controlar y sea capaz de identifique sus parámetros , debería poder diseñar su controlador en función de criterios bien definidos, como rebasamiento , tiempo de subida , tiempo de estabilización , constante -estado 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.
Conozca su controlador
Aprender qué es cada parámetro en el El controlador PID también es bastante útil. Todos los algoritmos experimentales se basan de alguna manera en este tipo de conocimiento. Si no solo sigue las instrucciones, sino que puede sentirlo usted mismo, puede que le resulte más fácil sintonizar el 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: windup , frecuencia de muestreo inadecuada , saturación .
Conclusión
Al final, todo depende de lo que realmente puedas hacer con tu sistema para obtener algunos conocimientos sobre cómo funciona y qué tipo de experimentación se puede realizar. Lo mejor es aprender más sobre los controladores PID y la teoría de control en general, en mi opinión, pero estoy sesgado 🙂
Comentarios
- I No ‘ entiendo por qué la gente sigue sugiriendo heurísticas para ajustar el PID, mientras que hoy en día contamos con muchas herramientas automáticas para la identificación de plantas y el diseño de controladores que no ‘ t requiere una base teórica profunda. Aproveche esta respuesta entonces.
Respuesta
Intentaré ampliar un poco mi experiencia para aquellos que puedan estar interesados. Creo que el problema es que tenemos una gran cantidad de teoría de control que es algo inaccesible (y a veces no es útil) y luego tenemos reglas generales que hacen suposiciones sobre los sistemas que a menudo son inexactas.
Estabilidad
Hablemos primero de por qué los bucles de control se vuelven inestables. Para esta discusión, asumiré un sistema lineal . De manera informal, esto significa que si su señal de control es una onda sinusoidal a una frecuencia dada, entonces su salida observada está en la misma frecuencia y si 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 ver 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 de 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, 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 dada, podemos observar 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 Bode Plot . 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 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 algo de 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 métodos es que estás volando a ciegas y tienes prácticamente la garantía de que obtendrás un sistema de control deficiente.
También ten en cuenta que el significado de P, I y D está relacionado con lo que mide tu sensor y qué control estás aplicando. Un error común en los controladores construidos en casa 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 bucle de posición, que corre sobre un bucle de velocidad que corre sobre un bucle de par. (Una cascada )
Está bien, pero ¿cómo nos ayuda esto?
El primer punto que me gustaría señalar es que si está construyendo su propio controlador PID, también debería crear una forma de medir el bucle abierto respuesta. Haga 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 También es útil medir la respuesta del lazo cerrado y puede hacerlo con cualquier sistema haciendo un barrido de frecuencia de su punto de ajuste mientras el lazo está cerrado. Ambos no son tan difíciles y no requieren mucho conocimiento teórico.
Si simplemente está ajustando los controles sin comprender lo que está sucediendo bajo el capó, no podrá para optimizar su sistema. Crear algo de intuición sobre estos sistemas no es tan difícil. P.ej. la ganancia proporcional no tiene ningún efecto sobre la fase, sino que simplemente aumenta la ganancia de bucle abierto en todas las frecuencias. Entonces, lo que está haciendo cuando está aumentando 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 una idea más clara sobre el impacto de los distintos controles en su respuesta de frecuencia.
A menudo, obtener el mejor rendimiento de bucle cerrado implica ajustando el sistema y no solo las ganancias del controlador. Lo que quiere 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 necesite 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 alguna resonancia mecánica, pero configurarlos sin un diagrama de Bode es muy difícil (la frecuencia de oscilación que observa bajo circuito cerrado puede ser diferente al circuito abierto).
Si la seguridad es un problema (motores muy potentes o un sistema que podría ser destruido por el motor fuera de control), debe instalar algunos límites antes de comenzar a sintonizar (por ejemplo, límite de corriente, error de posición máximo) para proteger el sistema. Luego, debe tener algún tipo de percepción del 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á 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 comenzar con P y luego con I (aunque nuevamente está volando a ciegas). Retroceder crea este margen de estabilidad.
Más allá del ciclo cerrado
Circuito cerrado intenta eliminar el error del sistema. Siempre tendrá un rendimiento algo limitado. Lo que quiere 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 hacia adelante . En la retroalimentación, usted da la vuelta al controlador y envía un comando directamente al sistema. Un ejemplo de eso sería la alimentación de aceleración hacia adelante. Si sabe que su «motor» es constante de par y conoce la load, puede decir prácticamente cuánta corriente necesita conducir para obtener una cierta aceleración de la carga. Simplemente tome la aceleración de entrada del comando, multiplíquela por una constante y agréguela al comando de conducción del controlador. Básicamente, está haciendo lo que se necesitaría para manejar el sistema si no hubiera un controlador y cuanto más cerca esté, menos error tendrá que eliminar su bucle y mejor funcionará su sistema. Hace una gran diferencia en la práctica.
Comentarios
- » En mi experiencia en aplicaciones de control de motores, la ganancia proporcional es la que debe ser haciendo la mayor parte del » trabajo » y el integrador el » rest «. No ‘ creo que necesites un término D en absoluto. » Estoy de acuerdo con eso para una aplicación típica de control de motor. La P hace el trabajo principal y la I compensan las desviaciones / errores a largo plazo. Pero aquí, el quadcopter estará sujeto a muchas turbulencias externas, por lo que el término D es importante para obtener una respuesta rápida. para el término I, a menos que el quad esté en modo de navegación autónoma, no es tan crucial.
- @ dm76: La mayor parte de mi experiencia es con el control de motores, y hago ese descargo de responsabilidad 😉 Sin embargo, mi intuición dice que hay ‘ s todavía hay espacio para I en la aplicación de quadcopter y creo que si P es muy alto podría lidiar con perturbaciones externas (al igual que lo hace en el control de motores). Realmente necesitaría echar un vistazo más de cerca a esos sistemas para decir algo definitivo sobre los cuadricópteros …Creo que mucho de lo que digo aquí se aplica (especialmente si sintoniza en el dominio de frecuencia y tiene la respuesta de bucle abierto del sistema).
- @ dm76: Y realmente esos » regla de oro » El ajuste de PID da como resultado un rendimiento muy mediocre en los motores y presumiblemente lo mismo en los cuadricópteros. A veces, un filtro de muesca bien colocado puede hacer una diferencia de orden de magnitud …
Responder
Ziegler-Nichols es un método manual sencillo. También existen métodos más robustos, que generalmente se basan en soluciones matemáticas (analítica, optimización iterativa, etc.)
Más allá de eso, google «PID de autoajuste» para algunas técnicas automatizadas. Mi favorito es la aplicación de redes neuronales al ajuste de PID.
Respuesta
Si desea tener un coeficiente PID preciso:
- Obtenga sus datos estadísticos del actuador (es decir, recolectando voltajes de entrada + pulsos del codificador en una constante con frecuencia (
0.01sec
) tiempo para20secs
como una3
x2000
matriz) - Obtenga la función de transferencia (TF) de su actuador (usando la caja de herramientas Ident en MATLAB).
- Finalmente, use PIDTool caja de herramientas en MATLAB y cargue su función de transformación.
O de una manera rápida y sencilla:
Existe un método más rápido llamado Ziegler – Nichols :