Академический Документы
Профессиональный Документы
Культура Документы
CONTROL FUZZY
Diseo Controlador
NOMBRES:
Tema: Control Difuso Resultados de Aprendizaje Se puede comprobar que el uso del comando Fuzzy de manera directa nos facilita la implementacin del controlador difuso, ya que permite la edicin directa de entrada, salidas y reglas. Adems en cualquiera de los 2 casos de diseo presentado del controlador, la salida de la planta resulto obtener un resultado ptimo. Se pudo apreciar la sencillez en la implementacin del sistema, ya que al describir el comportamiento del controlador mediante reglas, no es necesario realizar una modelizacin exacta. Esta caracterstica lo hace particularmente apropiado para sistemas no lineales, cuya modelizacin por los mtodos tradicionales suele ser compleja y demorosa. Descripcin del Problema Desarrollar una funcin en MATLAB que permita realizar el control difuso PD, adems Realizar la Grfica de la superficie de control. Teniendo los siguientes conjuntos difusos, determinados para el sistema del pndulo invertido.
Marco Terico Control Fuzzy La palabra "fuzzy" se utiliza para describir los trminos que o bien no se conocen bien o no lo suficientemente claras. Para poder realizar un buen anlisis de lo que es el control fuzzy se podr decir que el control fuzzy esta compuesta por fusificacin, mecanismos de inferencias y defusificacin. La Fusificacin: Es la que nos permite Calcular el grado de pertenencia de cada conjunto difuso (Valor lingstico). Dentro del caso del pndulo invertido tendremos por ejemplo: eGN, ePN. Inferencia Difusa: Es el Conjunto difuso implicado de cada regla ejemplo Error GN PN Z PP GP GN GP GP GP PP Z PN GP GP PP Z PN Z GP PP Z PN GN PP PP Z PN GN GN GP Z PN GN GN GN
If error es Z AND cambio de error es PP then u es PN Tendremos que: Error: Z Cambio Error: PP =0,5 =0,5 =0,5 Defusificacin: Es el cambio de cada elemento del conjunto difuso a un solo nmero o valor. La defusificacin viene dada por la siguiente frmula
Procedimiento A continuacin se podr verificar los cdigos de los programas que nos permitirn realizar el diseo del controlador PD para el pndulo invertido
PROGRAMA PARA OBTENER EL CONTROLADOR function ucrisp=fuzzyc(e,ce) %Declaracin de la funcin %Calculo de controlador difuso para el pndulo invertido %Ecuaciones que siguen la forma caractersticas del error y de la variacin %del error %error ez=0*(e<=-pi/4)+(4/pi*e+1)*(e>-pi/4&e<=0)+(4/pi*e+1)*(e>0&e<=pi/4)+0*(e>pi/4) egn=1*(e<=-pi/2)+(-4/pi*e-1)*(e>-pi/2&e<=-pi/4)+0*(e>-pi/4) epn=0*(e<=-pi/2)+(4/pi*e+2)*(e>-pi/2&e<=-pi/4)+(-4/pi*e)*(e>pi/4&e<=0)+0*(e>0) epp=0*(e<=0)+(4/pi*e)*(e>0&e<=pi/4)+(4/pi*e+2)*(e>pi/4&e<=pi/2)+0*(e>pi/2) egp=0*(e<=pi/4)+(4/pi*e-1)*(e>pi/4&e<=pi/2)+1*(e>pi/2) %variacion de error cez=0*(ce<=-pi/8)+(8/pi*ce+1)*(ce>-pi/8&ce<=0)+(8/pi*ce+1)*(ce>0&ce<=pi/8)+0*(ce>pi/8) cegn=1*(ce<=-pi/4)+(-8/pi*ce-1)*(ce>-pi/4&ce<=-pi/8)+0*(ce>-pi/8) cepn=0*(ce<=-pi/4)+(8/pi*ce+2)*(ce>-pi/4&ce<=-pi/8)+(-8/pi*ce)*(ce>pi/8&ce<=0)+0*(ce>0) cepp=0*(ce<=0)+(8/pi*ce)*(ce>0&ce<=pi/8)+(8/pi*ce+2)*(ce>pi/8&ce<=pi/4)+0*(ce>pi/4) cegp=0*(ce<=pi/8)+(8/pi*ce-1)*(ce>pi/8&ce<=pi/4)+1*(ce>pi/4) %Creacin de vectores de error y de la variacin del error ev=[egn epn ez epp egp] cev=[cegn cepn cez cepp cegp] %matriz de certeza de la base de reglas = h h=ev'*cev %reas de cada conjunto difuso es necesario obtener los centros ya que estos nos permiten realizar la defuzificacin areas= 20*(h-(h.*h)/2) centros=[20 20 20 10 0; 20 20 10 0 -10; 20 10 0 -10 -20; 10 0 -10 -20 -20; 0 -10 -20 -20 -20]; ucnum=sum(sum(areas.*centros)) ucden=sum(sum(areas)) uc=ucnum/ucden ucrisp=uc
end
En el bloque de MATLAB Function se encuentra el controlador y en el bloque de Mod_Pendulo podemos observar que a partir de la siguiente ecuacin 1 es necesaria armar el diagrama de bloques e ingresarla dentro de un Subsystem
Por lo tanto tendremos que el diagrama de bloques nos queda de la siguiente manera
Una vez realizado lo antes dicho, mandamos a correr el diagrama de bloque completo y podremos observar la respuesta del controlador. Una de las herramientas potentes que posee el MATLAB es que podemos resolver cualquier problema de Control Fuzzy ingresando en la pantalla inicial el comando Fuzzy y tendremos enseguida la siguiente ventana que se nos va abrir
Para poder ingresar los valores de error y la variacin de error es necesario 2 entradas por lo tanto procedemos a agregar
En consecuencia procedemos a editar las entradas, los valores de las salidas y asi mismo las reglas
Una vez de que ya se hayan ingresado todas las reglas procedemos a exportar el archivo, lo guardamos con cualquier nombre, y para poderlo usar es necesario ingresar lo siguiente en consola
Una vez que observamos que se cargo el archivo .fis realizamos el siguiente diagrama de bloques
Dentro de lo planteado tambin nos pide a lo que se refiere la curva de control a continuacin podremos visualizar el cdigo del programa que permitir obtener dicha grfica POGRAMA PARA OBTENER SUPERFICIE DE CONTROL clear all puntos=32 %Puntos de la malla [e,ce]=meshgrid(-pi/2:pi/puntos:pi/2,-pi/4:pi/2/puntos:pi/4) [a,b]=size(e) for i=1:1:a for j=1:1:b f(i,j)=Cont_pendulo(e(i,j),ce(i,j)); end end mesh(e,ce,f) Anlisis de Resultados Para los valores del error y de la variacin del error que se observa se obtendrn las grficas de las salidas del sistema
8. Primera grfica variacin e la posicin y la segunda grfica representa la posicin del pndulo
Si ejecutamos el controlador con el comando fuzzy de MATLAB y se corre el diagrama de bloques del grafico 7 tendremos que :
9. Primera grfica variacin e la posicin y la segunda grfica representa la posicin del pndulo
Se puede observar que en ambos casos llega a la posicin deseada, demostrando que el controlador difuso cumple con su funcin de manera exitosa para el pndulo invertido. Para poder visualizar la superficie de control mandamos a correr el programa anterior definido y podremos observar
Bibliografa http://noticias.espe.edu.ec/controlinteligente/control-difuso/