OBJETIVO:
1. Analisis del controlador difuso usando la herramienta FIS Editor de Matlab
2. Usar la herramienta Simulink de Matlab para simular más un controlador integral.
FUNDAMENTO TEORIO:
• Controladores fuzzy.
Los controladores fuzzy, igual que otros controladores, toman el valor de las variables
de entrada, procesan, y actúan sobre sus salidas a fin de controlar la planta. En fuzzy
control se utilizan sistemas basados en reglas, que emplean fuzzy logic, como elemento
central. Dado su estado, y los valores de las variables de entrada, estos sistemas evalúan
la veracidad de cada regla, y así, toman decisión sobre los cambios a realizar en las
variables de salida. Una vez actualizadas las mismas, estas producirán un cambio sobre
la planta, luego se vuelven a obtener los valores de las variables de entrada,
comenzando un nuevo ciclo. Al utilizar este tipo de resolución de problemas, es
importante observar que lo que se está procesando no son ya ecuaciones, números o
tablas crudas sino, reglas, es decir se procesan cosas tales como:
“SI la temperatura es baja ENTONCES aumente el ciclo de actividad del calefactor”
Tal tipo de procesamiento está mucho más cercano al razonamiento del experto
humano, ya que permite realizar operaciones entre palabras como más bajo, subir un
poquito etc. Este proceso cíclico puede ser dividido en tres grandes partes,
fuzzification, evaluación de reglas y defuzzification.
PROCEDIMIENTO:
a) Para acceder FIS Editor se debe digitar la palabra fuzzy en la línea de comandos,
luego presionar enter.
Figura 1. Menú principal de FIS Editor.
b) Para elegir el modelo a usar,Mandani o Sugeno,se debe accder al menu File/New
Fiss/mandani
Figura 2. Elección del modelo Mamdani
c) El controlador difuso tendra dos variables de etrada y una variable de salida. Para
aumentar una variable de netrada ingresamos a Edit/Add Variable/Input
Figura 3. Adición de una variable de entrada
d) Las variables de entrada son el error (e) y a derivada del error (de), y la variable
de salida es out. Para cambiar los nombres de estas variables, seleccionamos la
variable correspondiente y en name escribimos el nuevo nombre. Para definir los
rangos de las variables de entrada y salida, seccionamos cada variable y en Range
escribimos el rango correspondiente. Considerar un rango de -1 a 1 para cada
variable.
Figura 4. Definición de los nombres de las variables de entrada y salida
e) Para definir los rangos de las variables de netrada y salida,seleccionamos cada
variable y en Range escribimos el rango correspondiente.Considerar un rango de
-1 a 1 para cada variable. Cada una de las variables de entrada sera calsificada en 5
categorias alas cuels se presentan por medio de las funciones de membresia.ara
crear estas fucniones , primero seleccionamos la variable error (e) luego
eliminamos las funciones de membresia actuales con Edit/Remove ALL MFs.
Ingresamos al menu Edit/Add MFs y en Number of MFs selecionamos 5 y
presionamos OK.
Figura 5. Creacion de las funciones demembresia de las variable error (e)
Para grabar el archivo entrmaos a File/Export/To workspace y le damos el nombre
difuso,entramos a File/Export/To file y le damos el mismo nombre.
f) Cambiamos las funciones mf1 y mf5 de trimf a tramf. En la grafica seleccionamos
mf1 y en type seleccionamos trampf. Repetimos el precedimiento para mf5.
Figura 6. Funciones de membresia del error (e)
g) Cabiamos los nombres de las funciones de membresia ,según la aplicación ,de la
siguiente manera.
Mf1 =NL= negative
large
Mf2=NS=negative
small
Mf3=Z=Zero
Mf4=PS=positive
small
Mf5=PL = positive
large
En la grafica seleccionamos mf1 y en Name cambiamos mf1 por NL.Repetimos lo
mismo para otras funciones.
Figura.7 Cambio de los nombres de las funciones de membresia del error ( e)
h) Repetimos los pasos 6,7 y 8 para la variable de entrada derivada del error
(de).Similarmente creamos las 5 funciones de membresía de la variable de salida
Out. Debemos considerar que las 5 funciones son de tipo Trimf y los nombres de
cada una de ellas son los siguientes.
Mf1=CL= Cerrado
largo
Mf2= CS=Cerrado
small
Mf3=Z=Zero
Mf4=OS= Abierto
small
Mf5=OL=Open large
Figura 8.Procedimiento para crear las funciones de membresía de la variable de salida
Out
2. Reglas difusas del modelo:
a) Para poder crear las reglas del modelo se debe acceder al Rule Editor,
haciendo doble click sobre el modelo difuso.
Figura 9. Procedimiento para ingresar las reglas difusas
b) Considerar las siguientes reglas difusas:
Derivada del error (de)
NL NS Z PS PL
NL CL CL CL CS Z
NS CL CL CS Z OS
Error( e) Z CL CS Z OS OL
PS CS Z OS OL OL
PL Z OS OL OL OL
NL: Negative large
NS:Negative small
Z:Zero
PS:Positive small
PL:Positive large
En total se tienen 25 reglas difusas las cuales se leen así:
Si e es NL y de es NL entonces out es CL
Si e es NL y de es NS entonces out es CL
Si e es NL y de es Z entonces out es CL
Si e es NL y de es PS entonces out es CS
Si e es NL y de es PL entonces out es Z
Si e es NS y de es NL entonces out es CL
Y así sucesivamente.
Estas reglas difusas ser ingresadas a Rule editor La primera regla se ingresará así: En e,
de y out seleccionamos NL,NS y CL respetivamente, en la opción Connection elegir and,
luego presionamos en Add rule. Repetimos el mismo procedimiento para las otras
reglas. Para borrar una regla se tiene la opción Delete rule y para cambiar una regla se
tiene la opción Change rule.
Figuras 10. Reglas difusas
3. Método de Defuzzification:
a) Seleccionamos en Defuzzification la opción bisector.
Figura 11. Método de Defuzzitication
Grabar el archivo en File/Export/To Workspace con el nombre difuso, y en File /Export/To
file con el mismo nombre.
b) Ingresar a View/Rules, Luego en input escribir [0.4 0.8] y presionamos enter.
Figura 12. Evaluación de reglas
Completar la siguiente tabla:
e de out
0.4 0.8 0.84
0.4 -0.8 -0.34
0 0 0
-0.4 0.8 0.34
-0.4 -0.8 -0.74
4. Simulación:
a) En la línea de comandos del workspace escribimos simulink. Abrimos una nueva hoja
de trabajo en File/New/Model. Grabamos con el nombre Nivel.
Figura 13. Hojas de trabajos para visualizar la simulación
b) Ingresar a la librería el simulink/sources, y selecciona las opciones Step y Signal
Generator y arrástralas hacia la hoja de trabajo. Configurar el Step de 0 a 1 y
Signal Generator como square, Amplitud 0.5 y frecuencia 0.001 Hz
Figura 14. Configuración de la señal de referencia, formada por una onda cuadrada
superpuesta a un Step
c) Ingresar a la librería del simulink/Math Operations, seleccionar la opción Add y
arrastrar hacia la hoja de trabajo. Repetir el procedimiento luego Ingresamos a la librería
del simulink / continuos y seleccionamos las opciones Derivative, Integrator , Transfer
Fcn y Transport Delay un tiempo muerto de 1.104 segundos y en Transfer Fcn la función
de transferencia del proceso de nivel:
( )
Figura 15. Función de transferencia y tiempo de retardo.
c) Ingresar a la librería Fuzzy Logic Toolbox,seleccionar Fuzzy Logic Controller y
arrastrar hacia la hoja de trabajo.Luego estando en la hoja de trabajo hacer
click Fuzzy logic Controller y arrastrar hacia la hoja de trabajo.Luego estando
en la hoja de trabajo hacer click sobre Fuzzy Logic Controller y poner el
nombre del archivo donde se configuro el controlador difuso.
Figura 16. Fuzzy Logic Controller
d) Ingresar a Simulink/Signal Rounting y seleccionamos la opcion Mux y arrastrar
hacia la hoja de trabajo.Luego ingresar a Simulink/Sink Y seleccionar la opcion
Scope y arrastar hacia la hoja de trabajo.Unir todas los elementos y en la barra
de estados cambiar el tiempo de simulicion a 3000.
Figura 17. Diagrama de bloques del sistema de control Fuzzy
e) Ejecutar la simulacion presionando en PLAY ubicado en la barra de estados,
esperar que se complete el tiempo de ejecucion,luego hacer doble click en
Scope, se debe obtener el siguiente resultado.
Figura 18. Resultado de la simulación