problema de error de estado estable del regulador PID

4

Estoy trabajando con un controlador PI que regula la temperatura a través de un ciclo de trabajo pwm.

En general, controla bien. Sin embargo, el sistema requiere un cierto ciclo de trabajo mínimo para equilibrar la pérdida de calor. Cuando el PI finalmente lo hace bien, es decir, cuando el error proporcional es cero y el error integral es cero, la salida también va a cero y desactiva el sistema. Luego, el PI comienza a trabajar duro para minimizar el error y se repite.

¿Hay una solución para esto?

Información adicional

El calentador solo puede ir de 0 a 1 máximo de 3 veces por unidad de tiempo (un requisito estricto). Esto causa la frecuencia de onda fija que se ve en el diente.

Aquí está el resumen:

Aquíestáeláreadelproblemaampliadaymarcada.ElIntegralcruzaceroydacomoresultadounasalidaquegime,loqueprovocaungranerroryelpatrónserepite:

Salida PID. Amarillo: Integral, Magenta: Proporcional, Cian: Error, Rojo: Salida.

Puedes ver cuando se produce el gemido proporcional e integral cerca de cero.

La salida PI se pasa a través de un limitador de trabajo y un filtro de señal que da como resultado solo 0 o 1 salidas. Luego se pasa al regulador de frecuencia que no permite más de una transición 0- > 1 en el mismo 1/3 de unidad de tiempo. Esto significa que para una parte del ciclo, la salida del controlador pi se elimina. Sin embargo, la parte integral continúa construyéndose y se compensó en el siguiente período.

    
pregunta MandoMando

4 respuestas

3

Sé exactamente de dónde vienes. El error que está cometiendo es asumir que el término integral cae a cero en estado estable. Este no es el caso y, de hecho, depende en gran medida de los detalles de la implementación.

En primer lugar, entender el término integral en un PID matemático es la integral desde el comienzo del tiempo (o, bueno, el sistema) y no "error en los últimos ciclos". Su implementación de PID o PI no debe hacer que los contribuyentes más antiguos del término integral disminuyan en el peso relativo del término I. Dejame explicar. Al escribir el código del término I, el primer instinto es asumir que el término divergirá, cruzando el tamaño variable y desbordándose, y las personas intentarán solucionarlo utilizando promedios móviles, degradando la ponderación de los valores más antiguos y todo tipo de trucos extraños. . Esto no debería ocurrir en un sistema PI o PID correctamente implementado. En su lugar, simplemente debe calcular I como I = I + Ki * Error.

El término I es el nivel de referencia requerido para mantener el sistema, que usted menciona en su pregunta. Como no sabe cuánto es esto por adelantado, debe permitir que el controlador descubra este valor por sí mismo. Ese, de hecho, es el trabajo del término I El valor Ki debe ser lo suficientemente pequeño para que el controlador converja antes de desbordarse. Algún pensamiento sobre cómo funciona esto en el papel ayudará. Trate de visualizar el proceso, no las condiciones de contorno específicas. Una cosa que debe tener en cuenta es que el término I no se construye a partir del valor absoluto de error. Incluye valores de error tanto positivos como negativos.

Además, imagine la condición en la que el controlador está alcanzando el estado estable. Te darás cuenta de que yo no es necesariamente cero en este punto. De hecho, yo soy la fuerza de control de línea base que mencionas en la pregunta. Si el estado realmente permanece estable, y si el error a partir de aquí es continuamente cero (o cero promediado en el tiempo), el valor de I permanecerá como está.

Ahora, cuando se trata de implementaciones reales, el problema al que se enfrentará es que, incluso con un pequeño I, en el momento en que su sistema alcance el punto de ajuste, es posible que esté saturado. El sistema luego tendrá que errar en la dirección opuesta por un largo tiempo para deshacerse del término que acumuló mientras aún estaba llegando al punto de ajuste. De hecho, me he dado cuenta de que PI y PID funcionan mejor para un solo punto de ajuste, y se degradan cuando tienes que seguir cambiando ese punto por un gran valor. Un gran contribuyente a esto es el hecho de que tengo alta inercia. Es posible ajustar el valor de I para mantener el controlador funcional, pero cuando el propio sistema responde al estímulo lentamente (digamos que está calentando un bloque de metal), la sintonización suele ser difícil. En cambio, lo que puede ayudar es activar solo cuando. El sistema está dentro de un cierto umbral del punto de ajuste. Cuando cambie el punto de ajuste por un valor superior a este umbral, desactive I y desactívelo (use solo el control P / PD) hasta que se acerque al nuevo punto de ajuste. Al hacer esto, agrega otro parámetro ajustable (el umbral), pero hace que la configuración de Ki y el umbral sea más fácil que la configuración de Ki por sí misma para que sea óptima para ambas situaciones.

    
respondido por el Chintalagiri Shashank
1

Parece que no entiendes cómo se supone que funciona el sistema. Si los errores son cero, eso significa que la temperatura está en el punto establecido y la salida debería estar desactivada. Cuando la temperatura cambia (probablemente caiga), habrá errores correspondientes y habrá una salida para corregirla.

Un sistema como este, que usa solo P, puede alcanzar el equilibrio, pero no alcanzará la temperatura establecida. Con el agregado, el sistema puede alcanzar el equilibrio y alcanzar la temperatura establecida, pero habrá un desplazamiento constante del término I para mantenerlo allí. Este desplazamiento representa el calor que el sistema está perdiendo constantemente.

Parece que su sistema está funcionando como fue diseñado. Aunque es posible que desee un resultado diferente. El ajuste sin duda se aplica, ya que todos los comentarios son necesarios.

Para aquellos que no entienden bien los sistemas PID, se recomienda encarecidamente el artículo "PID sin un PHD". Busca en el título. El original, que apareció en Embedded Systems Programming, tenía enlaces a las ilustraciones. Para una lectura más conveniente, con las ilustraciones incrustadas, busque uno de los PDF en su lugar.

    
respondido por el gbarry
1

No suena como que generalmente controla bien. Un control de bucle de tipo PI debería dar como resultado un ciclo de trabajo PWM (en estado estable) que es básicamente un valor constante. No debe pasar de cero a un valor grande. Dado que este es un bucle térmico, las constantes de tiempo serán largas y las oscilaciones durarán decenas de segundos. También con los sistemas térmicos, la ganancia de bucle abierto variará, quizás tanto como un orden de magnitud, en función de las condiciones ambientales. Algunas cosas a tener en cuenta para un sistema que tiene alguna carga:

  • La salida de la parte proporcional del bucle nunca será cero.
  • El error general, después de la corrección por la parte proporcional del bucle, tampoco será cero. Como la parte proporcional tiene una ganancia finita, no corregirá totalmente el error.
  • La parte integradora puede tener una ganancia infinita, pero tarda un tiempo infinito en alcanzarla. Por lo tanto, el integrador se utiliza para corregir el error dejado por la parte proporcional, pero solo para bajas frecuencias. Esto significa que la salida del integrador tampoco será nunca cero para la operación en estado estable.

Debe elegir los valores para la ganancia de la parte proporcional y la parte integral para estabilizar el circuito cerrado del sistema. Parece que la ganancia de una o ambas partes es demasiado alta. En la historia de los bucles de estilo PI (D), la elección de estas ganancias se conocía como "Afinación", ya que las personas las elegirían empíricamente de forma iterativa. Con un bucle o sistema térmico, afinar empíricamente el bucle es un trabajo lento.

Comience con solo la parte proporcional del bucle, deshabilite el integrador. Comience con un bajo valor de ganancia para la parte proporcional, tal vez la unidad. Aumentan la ganancia lentamente hasta que vea solo un indicio de oscilación (utilice condiciones ambientales que den como resultado una ganancia máxima para el sistema de circuito abierto). Cuando veas alguna oscilación, reduce la ganancia. Por ejemplo, reducir la ganancia a la mitad es una reducción de 3dB, que si hiciera las cosas con cuidado le daría a su bucle 3dB de margen de ganancia ... no lo suficiente. Usted querrá disparar por 20dB de margen de ganancia.

En algunos sistemas de bajo rendimiento, todo lo que necesita es un bucle proporcional. Tendrá un error que varía con la carga del sistema, pero tal vez sea lo suficientemente bueno. Pero, si no es lo suficientemente bueno, entonces se necesitará una parte integral. Como ahora tiene un sistema estable con la parte proporcional en su lugar, puede comenzar a agregar ganancia a la parte integral. Siga un proceso similar para agregar ganancia al integrador (como lo hizo con la parte proporcional) para encontrar la ganancia máxima estable. Para un sistema térmico, esto llevará días, y es si lo hace bien la primera vez.

Es posible que en algún punto encuentre que, para obtener una respuesta óptima, también necesita agregar una parte derivada al bucle ... aunque con los sistemas térmicos esto no suele ser necesario.

Realmente, sin embargo, las personas que toman en serio compensar las respuestas del bucle del sistema primero escribirán un modelo matemático del sistema. A partir de esto, podrán discernir los polos, ceros y ganancias que existen en el sistema, y la sensibilidad de estos a los cambios en las condiciones ambientales y la carga. Luego, la parte proporcional de compensación requerida y la parte integral se pueden calcular para obtener valores óptimos. Luego, se realizarían simulaciones numéricas, de una manera similar a la de Monte Carlo, para cuidar la variabilidad del sistema. Esta es la única forma práctica de proceder en última instancia. Se ha hecho muy poco "ajuste" empírico, y lo que se hace es un ajuste muy fino.

    
respondido por el gsills
1

Solución

Resulta que me equivoqué con el hecho de que la salida fuera a cero (¿y nadie más vio esto en los gráficos?).

El problema torcido no fue debido a un ajuste subóptimo de P y I. Se debió a que la frecuencia de muestreo era demasiado baja ! Una vez que duplicamos la frecuencia del bucle, la salida se volvió bastante estable. De cualquier manera, gracias por la entrada.

    
respondido por el MandoMando

Lea otras preguntas en las etiquetas