Autor Tema: Control PID con anti-windup en PIC y CCSRTOS.  (Leído 38071 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Control PID con anti-windup en PIC y CCSRTOS.
« Respuesta #30 en: 22 de Diciembre de 2009, 01:34:35 »
 ;-) gracias por el dato, muy bueno el sensor.

Saludos
El papel lo aguanta todo

Desconectado garocco

  • PIC10
  • *
  • Mensajes: 16
Re: Control PID con anti-windup en PIC y CCSRTOS.
« Respuesta #31 en: 22 de Diciembre de 2009, 16:17:54 »
Uy, Suky, no me había dado cuenta de que me habías contestado! Muchas gracias. Creo que he logrado comprender el tema de la saturación. Respecto del controlador, estoy teniendo inconvenientes porque tiene un retardo muy grande y una inercia térmica grande también... He realizado varios modelados y el que mejor resultado me ha dado, respecto de la aproximación lograda, es la estimación de la función de transferencia. Es un sistema de segundo orden:

                   0.33 * e^(-30*s)
G(s) = --------------------------------
           (1 + 433*s) (1 + 1650*s)


UUfff,  ya me tiene bastante frustrado... encima cada prueba me lleva mínimo una hora, pues el modelo del horno del Proteus no lo puedo aproximar... Con un PI + antiwindup o con un PID me aparece un sobreimpulso de poco más de un grado (uno hacia arriba y uno hacia abajo). Habrá alguna otra estrategia de control que se use en estos casos? Gracias.

Saludos!
« Última modificación: 22 de Diciembre de 2009, 16:26:38 por garocco »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Control PID con anti-windup en PIC y CCSRTOS.
« Respuesta #32 en: 23 de Diciembre de 2009, 01:53:49 »
El sobrepaso máximo se controla variando el tiempo de muestreo, a menor tiempo de muestreo, menor sobrepaso. El valor del retraso toma importancia según el valor de la constante tau del sistema.

Que sistema térmico tienes? es decir, dices que el control es para una estufa, pero, en donde estas midiendo la temperatura?

Normalmente, el escalón unitario para sacar las variables del sistema es de un 10% a un 20%.

Saludos
El papel lo aguanta todo

Desconectado garocco

  • PIC10
  • *
  • Mensajes: 16
Re: Control PID con anti-windup en PIC y CCSRTOS.
« Respuesta #33 en: 23 de Diciembre de 2009, 10:39:51 »
Gracias MLO_
Te comento mas o menos de que se trata. Es una estufa de cultivo de laboratorio. Es de 50x40x50cm, con doble pared metálica (una externa y otra interna). El termostato original era mecánico y estaba alojado en la parte inferior, junto a las dos resistencias calefactoras. Pensé que como la temperatura que interesa es la del interior de la cámara, lo subí (he hecho pruebas con el sensor abajo y me aparece un offset en la temperatura (mayor temperatura en la cavidad inferior), pero la respuesta es la misma. He aplicado escalones de 20%,30%, 50%, y 100% para ver las repuestas. El muestreo lo hago cada 1 segundo mandando los datos por puerto serie al hiperterminal. Según matlab la ecuación característica es la del post anterior. El retardo es de 30 seg, sistema de segundo orden.
Espero que no me malinterpreten, por eso me gustaría aclarárselo: no ando buscando nada servido, por lo que no pretendo que me armen el código ni nada por el estilo. Simplemente me parece apasionante esto del control de sistemas y me gustaría realmente aprender. He hecho grandes avances con toda la información que encontrado en el foro y con la ayuda de Uds. y espero seguir aprendiendo. Seguramente en algún lugar no he hecho las cosas como la teoría o la práctica lo recomienda, por eso es que no logro hacerlo funcionar como pretendo, pero le voy a ganar por cansancio... jaja
Hoy voy a probar hacer un control por banda proporcional + pi. Vamos a ver como me va.

Saludos.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Control PID con anti-windup en PIC y CCSRTOS.
« Respuesta #34 en: 23 de Diciembre de 2009, 11:57:52 »
Hola.

Hombre, no te preocupes, según lo que veo no quieres nada servido si no hacerlo tu mismo, eso está muy bien.

Respecto a tu proyecto: Es como un horno entonces cierto? me imagino que la cámara es cerrada y que el sensor esta dentro de ella, por ese lado todo va bien. No hemos tocado un tema importante y es el actuador que estas usando, es decir como controlas la tensión de alimentación del horno, se puede hacer por PWM o por control de fase, por que método lo haces tu?

Me parece muy extraño que te de un sistema de segundo orden, normalmente los sistemas térmicos son de 1 orden cuando se trata de hornos. Podrías subir los datos de la adquisición que hiciste? Lo has graficado con otro soft?

Saludos
El papel lo aguanta todo

Desconectado garocco

  • PIC10
  • *
  • Mensajes: 16
Re: Control PID con anti-windup en PIC y CCSRTOS.
« Respuesta #35 en: 23 de Diciembre de 2009, 15:39:53 »
Hola.
El actuador es un triac controlado por un optoacoplador. Inicialmente lo pensé para hacer el control por ángulo de conducción con la intención de ir ajustando el ángulo hasta que pueda compensar "justito las pérdidas" de temperatura. No he dado en la tecla todavía...
Luego, debido a los tiempos de retardo, decidí que podría hacer el control por ciclos enteros. Tomo 100 ciclos, y si dejo conducir solo 10 entonces entrego el 10 porciento de la potencia. Tampoco he logrado que funcione bien, pues cuando el error se hace cero no me da salida. De aquí que el error es suficiente y reacciona,  debido al retardo me cae o sube 0,4 ºc  y a veces más.
Por ahora el que mejor me ha funcionado es el on/off. Defino una banda proporcional y entrego toda la potencia hasta que llega al piso de la banda (lo que me frena el crecimiento de temperatura, y como sigue embalado me llega a unas pocas décimas de la temperatura de setpoint). A partir de allí control on/off. Al principio hace un sobrepico pero despues se estabiliza con un márgen de 0,1 ºc... Pero no me gusta hacer esta aproximación!!!! Debería poder ser más elegante y rigurosa matemáticamente hablando! La verdad es que no me resigno a hacerlo funcionar así...
Aquí te envío las pantallas del matlab:


En esta hice un control on/off para mantener la temeperatura de salida en un valor fijo. Es lo que interpreté de post de Suky acerca de meterle una señal compleja de estímulo para evaluar la respuesta. Se pueden ver dos curvas porque una arranca con un offset por la temperatura ambiente. A la otra le resté este valor constante.


En esta solo apliqué un escalón de 110 W (bah, le metí 220 VCA derecho!). Este se repite con escalones de 20%,30%.50% en los que solo varía Kp.

Te agradezco de antemano cualquier ayuda.
Saludos.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Control PID con anti-windup en PIC y CCSRTOS.
« Respuesta #36 en: 23 de Diciembre de 2009, 15:50:26 »
Tal como muestra esta figura:



Tu sistema es de primer orden, tiene un crecimiento exponencial, por lo que es aplicable el metodo de Ziegler-Nichols para la obtencion de los parametros del sistema. Luego de tener el sistema en tiempo continuo, ya podrías discretizarlo sin ningun problema, teniendo en cuenta el tiempo de muestreo y el orden del retenedor para embeberlo en el uC.

No tienes los datos en algun .dat o en .txt?

Saludos
El papel lo aguanta todo

Desconectado garocco

  • PIC10
  • *
  • Mensajes: 16
Re: Control PID con anti-windup en PIC y CCSRTOS.
« Respuesta #37 en: 23 de Diciembre de 2009, 16:11:53 »
Aquí te envío dos archivos:

Estufa_100.txt tiene la lectura del sensor con muestreo cada 1 segundo.
Estufa_100.txt

Idem, con control on/off. Tiene una columna adicional en la que un 1 indica encendido y un cero apagado. Se aplicaba toda la potencia durante '1' (110w).
Estufa_37g.txt

Saludos.