Cómo ajustar un controlador PID a un proceso no lineal

7

Tengo un proceso térmico no lineal (la radiación no lineal se vuelve más y más presente a medida que aumenta la temperatura) a la que me gustaría sintonizar un controlador PID. Me gustaría controlar la temperatura con la mayor precisión posible.

He planeado dividir el rango de temperatura en N rangos pseudo-lineales (a definir), y para cada uno de estos rangos de temperatura: ajustar un modelo de primer orden con un pequeño paso de temperatura, y calcular los parámetros PID que se ajusten a esto modelo. Los parámetros PID se cambiarían automáticamente dependiendo de la temperatura del proceso *.

Mi problema es el siguiente: considere el punto de control de 70 ° C, por ejemplo. P vatios ya están fluyendo para alcanzar esta temperatura. Inyectaré dP vatio para aumentar la temperatura en 1 ° C. Luego tomaré nota de la constante de tiempo y la ganancia de estado estable será 1 / dP ° C / W. [Por favor, ¿puede tomarse un momento para pensar si esto es correcto?] Finalmente, ajustaré el PID a esa planta para obtener los parámetros para ese rango de temperatura, y pasaré a los otros rangos.

Ahora, supongamos que el proceso alcanza los 70 ° C. Se cargan los nuevos parámetros y se reinicia el contador integral. El error puede ser de 1 ° C, pero la potencia requerida es mucho más que eso para alcanzar los 21 ° C, es seguro que el controlador demandará menos de P vatios. Esto significa que la temperatura bajará mucho antes de que el término integral exija P vatio, y solo entonces el vatio adicional dP llevará eventualmente el proceso a 71 ° C (y seguramente se rebasará). Cuanto mayor es P en comparación con dP, peor se pone.

Parece que los calentadores deberían funcionar con la suma de la salida del controlador y la potencia necesaria para mantenerse a la "temperatura de referencia" actual (por ejemplo, 70 ° C). Pero los controladores disponibles no ofrecen eso, por lo que debe haber otra forma.

¿Qué me estoy perdiendo? ¿Cuál es la forma correcta?

*: es efectivamente Gain Programación .

    
pregunta user42875

3 respuestas

10

¿Cómo ajustar un controlador PID a un proceso no lineal?

No lo haces. Linealiza el proceso, luego hace que el controlador PID funcione en los valores lineales.

Por "linealizar el proceso", no quiero hacer que el proceso en sí sea lineal. Eso generalmente no se puede hacer debido a la física. Sin embargo, puede colocar algo no lineal entre la salida del controlador PID y la entrada del proceso para que la salida PID controle linealmente el proceso desde el punto de vista del controlador PID.

Este linealizador no necesita ser muy preciso ya que está dentro del bucle de realimentación. Su propósito es dar la apariencia de una ganancia aproximadamente constante en todo el rango dinámico de control. Una forma simple y general es una función de tabla lineal por partes. 16 o 32 segmentos suelen ser suficientes para cualquier cosa que no sean procesos altamente no lineales.

El ejemplo más desfavorable que he encontrado fue controlar la corriente a través de un tubo de electrones cambiando la fuerza con la que se accionó el filamento del cátodo. La función de la temperatura del cátodo a la corriente del haz de electrones es altamente no lineal, y el sistema que controla la corriente del filamento del cátodo también fue algo no lineal. En este caso, fue demasiado difícil predecir todo este lío, así que utilicé un procedimiento de calibración durante la producción que recorrió los valores de control del controlador de filamento, medí la corriente del haz para cada uno, luego calculé una tabla de búsqueda de 32 segmentos a partir de eso. Funcionó muy bien, y pudimos sintonizar el controlador PID de corriente de haz para una buena respuesta en todo el rango.

Sin una función de linealización al frente del proceso, debe ajustar el controlador PID para lograr estabilidad en el punto de ganancia incremental más alto del proceso. Esto da como resultado un comportamiento muy amortiguado en otros puntos.

Añadido

Nada en su pregunta actualizada dice nada sobre por qué el método anterior no es una buena idea y es aplicable. Usted dice que está utilizando un controlador analógico. Mi primera reacción es "La década de 1980 ya pasó, no hagas eso". Sin embargo, el controlador PID y el linealizador de plantas pueden ser independientes.

Aparentemente, la entrada de la planta es la potencia y la salida es la temperatura. Mida la temperatura de estado estacionario típica en un rango de niveles de potencia. A partir de eso, puede calcular la función que convierte la "potencia" linealizada en la potencia de entrada real de la planta. El controlador PID analógico presumiblemente está generando un voltaje proporcional a la potencia. Todo lo que tiene que hacer es insertar una caja negra en línea con el voltaje que mide linealmente la conversión del nivel de potencia real.

Normalmente lo haría con un microcontrolador que tiene un A / D incorporado. Hacer esta búsqueda de tabla y la interpolación lineal entre puntos es trivial. Luego emite el resultado de una manera que eventualmente se convierte en voltaje. Dado que la planta es lenta en comparación con un microcontrolador, esto podría ser tan fácil como filtrar y almacenar en búfer una salida PWM. O puedes conducir un D / A directamente, aunque eso no suena como si fuera necesario en este caso.

En consonancia con el tema de la década de 1980 de tu controlador, puedes hacer esto con un A / D, memoria y D / A para esa sensación retro.

En cualquier caso, el controlador PID ahora está controlando efectivamente una planta lineal por lo que sabe, y debería ser posible ajustarla a un buen rendimiento.

Hacer una transformación lineal por partes en la entrada de la planta en un lugar es más fácil que ajustar 3 valores dentro del controlador PID sobre el rango de salida. El último es un kludge, mientras que el primero aborda el problema directamente. También es mucho más fácil medir los datos de la función de linealización que determinar las ganancias de P, I y D en varios puntos. Incluso si hizo eso, todavía tiene problemas transitorios, ya que las ganancias correctas no se aplican inmediatamente a la situación. Una vez más, "ganar programación" es un kludge.

    
respondido por el Olin Lathrop
2

Recuerde que cuando linealiza un modelo, asume efectivamente que el modelo no lineal y = f (x) se reemplaza por y = A * (x-x0) + B. Observe que x0 es el punto de linealización. Cuando introduces rangos para x, terminas con múltiples A, B y x0. De cualquier manera, la entrada a su controlador será el error con respecto al punto de linealización actual. Sin embargo, aún se desplaza la señal de entrada (con B), por lo que incluso si el error es 0 con respecto al punto de linealización actual, seguirá transmitiendo una señal.

En su ejemplo, entonces, incluso si el error es de 0 grados (en el punto de ajuste de 70 grados), el controlador seguirá generando una potencia mayor a 0.

    
respondido por el Pål-Kristian Engstad
2

Un enfoque del control no lineal con controladores PID, un enfoque que se usa ampliamente en la industria, se denomina "programación de ganancias".

El problema del control no lineal se divide en una serie de regiones suficientemente lineales y se utilizan los parámetros apropiados para cada región.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas