CTM: PID Tutorial Page 1 of 8 Tutorial de controladores PID Introduccion El controlador de 3 terminos Las caracteristicas de los controladores P, I y D Problema Ejemplo Respuesta de Lazo Abierto al escalon Control Proporcional Control Proporcional - Derivativo Control Proporcional-Integrativo Control Proporcional-Integrativo-Derivativo Consejos generales para el disenho de una controlador PID Introduccion En este tutorial se mostraran las caracteristicas de los controladores proporcionales (P), integrativos (I) y derivativos (D). Se mostrara tambien en forma basica como utilizarlos para obtener la respuesta deseada. Para el efecto, se considerara el siguiente sistema realimentado: Planta: Un sistema a ser controlado Controlador: provee la excitacion para la planta; esta disenhado para controlar el comportamiento del sistema El controlador de tres terminos La funcion de transferencia de un controlador PID posee la siguiente forma: Kp = ganancia proporcional http://www.ing.una.py/APOYO/CONTROL%20CON%20SCILAB/PID/PID.html 03/11/2010 CTM: PID Tutorial Page 2 of 8 KI = ganancia integral Kd = ganancia derivariva Inicialmente, se vera el modo en que el controlador PID trabaja en un sistema de lazo cerrado, utilizando el esquema mostrado mas arriba. La variable (e) representa el error, es decir, la diferencia entre la entrada de referencia (R) y la salida medidad del sistema (Y). Esta senhal de error (e) se envia al controlador PID, donde el mismo computa tanto la derivada como la integran de esta senhal. La senhal (u) a la salida del controlador es igual a (Kp) por el error mas (Ki) por la integral del error mas (Kd) por la derivada del error. La senhal (u) se envia a la planta, para obtener asi una nueva salida (Y). Esta nueva salida (Y) se envia nuevamente al sensor para calcular la nueva senhal de error (e). El controlador toma esta nueva senhal y calcula nuevamente la integral y la derivada del mismo. Las caracteristicas de los controladores P, I, y D Un controlador proporcional (Kp) tendra el efecto de reducir el tiempo de crecimiento y reducira (pero no elimina) el error de estado estable. Un control integrativo (Ki) tendra el efecto de eliminar el error de estado estable, pero sin embargo podria empeorar la respuesta transitoria. Un control derivativo (Kd) tendra el efecto de aumentar la estabilidad del sistema al disminuir el sobrepico, mejorando la respuesta transitoria. Los efectos de cada uno de los controladores Kp, Kd, y Ki en un sistema de lazo cerrado estan resumidos en la tabla que se presenta debajo. Controlador T. Crecimiento Kp Disminuye Ki Disminuye Kd Poco cambio Sobrepico T. Establecimiento Error Estado Estable Aumenta Poco cambio Disminuye Aumenta Aumenta Elimina Disminuye Disminuye Poco cambio Notese que estas correlaciones podria no ser exactamente precisas, ya que el efecto de cada controlador sera dependiente de los otros. Por este motivo, la tabla mostrada solo debe ser utilizada como referencia para determinar los valores de Ki, Kp y Kd. Problema Ejemplo Supongase un sistema compuesto por una masa, un resorte y un amortiguador. La ecuacion que modela el sistema es http://www.ing.una.py/APOYO/CONTROL%20CON%20SCILAB/PID/PID.html 03/11/2010 CTM: PID Tutorial Page 3 of 8 (1) Tomando la transformada de Laplace de la ecuacion (1) La funcion de transferencia entre el desplazamiento X(s) y la entrada F(s) sera entonces Sea M = 1kg b = 10 N.s/m k = 20 N/m F(s) = 1 Reemplazando estos valores en la funcion de transferencia arriba, tenemos La meta en este caso es mostrar como cada uno de los parametros Kp, Ki y Kd contribuyen a obtener: Tiempo de crecimiento rapido Minimo sobrepico Eliminacion de error de estado estable Respuesta de lazo abierto al escalon Se vera, inicialmente la respuesta de lazo abierto al escalon. Para esto, se creara un nuevo archivo script "pdi1.sce" y se incluira en el mismo el siguiente codigo: // se define la variable s=poly(0,"s"); // definicion de los polinomios numerador y denominador num=poly([1],"s","coeff"); den=poly([20 10 1],"s","coeff"); // se define el sistema basado en los polinomios [sistema1]=syslin('c',num/den); // intervalo de tiempo t=0:0.005:2; // respuesta a funcion escalon [y X]=csim("step",t,sistema1); plot2d(t,y); Al ejecutar el script por medio del comando http://www.ing.una.py/APOYO/CONTROL%20CON%20SCILAB/PID/PID.html 03/11/2010 CTM: PID Tutorial Page 4 of 8 -->exec('pdi1.sce') se obtendra el grafico que se muestra. La ganacia DC de la funcion de transferencia de la planta es igual a 1/20, de modo tal que el valor final de la salida para una entrada unitaria sera 0.05. Esto corresponde a un error de estado estable de 0.95, lo que en realidad es bastante grande. Puede apreciarse tambien que el tiempo de crecimiento es aproximadamente igual a un segundo, con un tiempo de establecimiento de 1.5 segundos aproximadamente. Procederemos ahora a disenhar un controlador que reduzca el tiempo de crecimiento y el tiempo de establecimiento, al mismo tiempo que elimina el error de estado estable. Control Proporcional De la tabla presentada con anterioridad, se ve que el controlador proporcional (Kp) reduce el tiempo de crecimiento, aumenta el sobrepico y reduce el error de estado estable. La funcion de transferencia de lazo cerrado del sistema presentado con la inclusion de un controlador proporcional sera: Sea la ganancia (Kp) igual a 300. En el archivo script, la definicion del numerador debera ser modificada: Kp=300; num=poly([Kp],"s","coeff"); den=poly([20+Kp 10 1],"s","coeff"); El grafico obtenido en este caso al ejecutar el archivo sera: http://www.ing.una.py/APOYO/CONTROL%20CON%20SCILAB/PID/PID.html 03/11/2010 CTM: PID Tutorial Page 5 of 8 El grafico muestra como el comtrolador proporcional reduce tanto el tiempo de crecimiento y el error de estado estable, mientras aumenta el sobrepico y disminuye ligeramente el tiempo de establecimiento. Control Proporcional - Derivativo Analizaremos ahora el control PD. De la tabla mostrada arriba, se recuerda que el cotrolador derivativo (Kd) reduce tanto el sobrepico como el tiempo de establecimiento.La funcion de transferencia de lazo cerrado del sistema con el controlador PD incluido sera entonces: Sea Kp igual a 300 y sea Kd igual a 10. El archivo script debera ser modificado como se muestra: // Inclusion de un controlador PD Kp=300; Kd=10; num=poly([Kd Kp],"s","coeff"); den=poly([20+Kp 10+Kd 1],"s","coeff"); [sistema3]=syslin('c',num/den); [y X]=csim("step",t,sistema3); plot2d(t,y); http://www.ing.una.py/APOYO/CONTROL%20CON%20SCILAB/PID/PID.html 03/11/2010 CTM: PID Tutorial Page 6 of 8 Este grafico muestra que la parte derivativa del controlador reduce tanto el sobrepico como el tiempo de establecimiento, con poca influencia en el tiempo de crecimiento y el error en estado estable. Control Proporcional Integrativo Antes de analizar el controlador PID propiamente dicho, nos detendremos en un controlador del tipo PI. De la tabla, puede verse que un controlador integral (Ki) disminuye el tiempo de crecimiento, aumenta tanto el sobrepico como el tiempo de establecimiento, y elimina el error de estado estable. Para el sistema dado, la funcion de transferencia de lazo cerrado con la adicion del controlador sera: Establecemos Kp = 30, y Ki =70. Las modificaciones en el archivo script seran las siguientes: // Inclusion de un controlador PI Kp=30; Ki=70; num=poly([Kp Ki],"s","coeff"); den=poly([Ki 20+Kp 10 1],"s","coeff"); [sistema4]=syslin('c',num/den); [y X]=csim("step",t,sistema4); plot2d(t,y); El grafico obtenido: http://www.ing.una.py/APOYO/CONTROL%20CON%20SCILAB/PID/PID.html 03/11/2010 CTM: PID Tutorial Page 7 of 8 Se ha reducido la ganacia proporcional (Kp) debido a que el controlador integrativo tanbien reduce el tiempo de crecimiento y aumenta el sobrepico al igual que el controlador proporcional (doble efecto). La respuesta de arriba muestra como el controlador integral elimino el error en estado estable. Controlador Proporcional, Integrativo y Derivativo Ahora, trabajaremos sobre el controlados PID propiamente dicho. La funcion de transferencia de lazo cerrado, en este caso sera: Luego del proceso de ensayo y error (facilmente implementable gracias a SCILAB), las ganancias Kp=350, Ki=300, y Kd=50 proveen la respuesta deseada. Para verificar esto, incluya las siguientes lineas en el archivo: // Inclusion de un controlador PDI Kp=350; Ki=300; Kd=50; num=poly([Ki Kp Kd],"s","coeff"); den=poly([Ki 20+Kp 10+Kd 1],"s","coeff"); [sistema5]=syslin('c',num/den); [y X]=csim("step",t,sistema5); plot2d(t,y); http://www.ing.una.py/APOYO/CONTROL%20CON%20SCILAB/PID/PID.html 03/11/2010 CTM: PID Tutorial Page 8 of 8 Asi, se ha obtenido un sistema sin sobrepico, con rapido tiempo de establecimiento y crecimiento, y sin error de estado estable. Consejos generales para el disenho de un controlador PDI En el proceso de determinar un controlador PID con SCILAB para un sistema dado, los siguientes pasos son utiles para obtener una respuesta deseada. 1. 2. 3. 4. 5. Ontemga la respuesta la lazo cerrado y determine las caracteristicas a ser mejoradas Agregue un control proporcional para mejorar el tiempo de crecimiento Agregue un control derivativo para mejorar el sobrepico Agregue un control integrativo para eliminar el error de estado estable Ajuste cada una de las ganancias Kp, Ki, y Kd hasta que se obtenga la respuesta deseada. Utilice para esto la tabla de referencia. Finalmente, debe tenerse en cuenta que no es necesario implementar los 3 controladores en todo caso. Por ejemplo, sin un controlador PI ofrece una buena respuesta, no es necesario adicionar el control derivativo. Debe mantenerse el controlador lo mas simple posible. http://www.ing.una.py/APOYO/CONTROL%20CON%20SCILAB/PID/PID.html 03/11/2010