Está en la página 1de 18

Control de Procesos 2

Control Difuso

2017
Objetivos

1. Análisis del controlador difuso usando la herramienta FIS Editor de


MatLab
2. Usar la herramienta Simulink de MatLab para simular el control de nivel
en un deposito utilizando un controlador difuso más un controlador
integral

Fundamento teórico

Tradicionalmente los procesos industriales han sido controlados utilizando


técnicas de control convencional. Sin embargo, debido al incremento en la
complejidad de los procesos y a que éstos muchas veces son mal definidos por
un modelo matemático debido al comportamiento no lineal que pueda existir,
las técnicas anteriores pueden presentar deficiencias para mantener bajo
control al proceso y optimizar su funcionamiento. Un medio alternativo lo
representan los algoritmos de control basados en lógica difusa, que
últimamente ha surgido como una herramienta útil para el control de procesos
industriales. La lógica difusa es una generalización de la lógica clásica en
donde existe una transición continua entre lo falso y lo verdadero que mediante
principios matemáticos puede servir para modelar información basada en
grados de membresía o pertenencia. Estos algoritmos pueden simularse y son
susceptibles de implementarse fácilmente en computadoras personales. Para
caracterizar el comportamiento de un proceso es necesario conocer el
funcionamiento del mismo, lo cual permite formular las reglas difusas que
describen las metas de control en términos de la relación de las entradas con
las salidas

Consideremos un proceso de nivel donde la función del controlador difuso será


controlar el nivel. Para diseñar este controlador es necesario analizar el
comportamiento de la variable del proceso, las variables que nos permiten
hacer este análisis son el error (e) y a la variación del error (de).

Definición de las variables utilizadas

SP: Setpoint o valor de nivel deseado


PV: Variable del proceso o valor del nivel medido
OUT: Posición de la válvula de control
Error: e=SP – PV
Variación del error: de=error actual- error anterior

La lógica consiste en cambiar la posición de la válvula OUT según el


comportamiento de e y de. Vamos a considerar los siguientes casos

a) Si PV<SP entonces el error es positivo, e>0

2
 Si PV está disminuyendo entonces el error está aumentando, por
lo tanto de>0. Esto implica que debemos de abrir bastante la
válvula, es decir OUT>0
 Si PV está aumentando entonces el error está disminuyendo, por
lo tanto de<0, Esto implica que debemos de abrir poco la
válvula, es decir OUT>0

b) Si PV>SP entonces el error es negativo, e<0

 Si PV está disminuyendo entonces el error es menos negativo lo


cual quiere decir que el error está aumentando, por lo tanto de>0.
Esto implica que debemos de cerrar poco la válvula, es decir
OUT<0
 Si PV está aumentando entonces el error es más negativo lo cual
quiere decir que el error está disminuyendo, por lo tanto de<0,
Esto implica que debemos de cerrar bastante la válvula, es decir
OUT<0

c) Si PV = SP entonces el error es cero, por lo tanto no se debe modificar


la posición de la válvula

3
Procedimiento

1. Funciones de Membresía

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, Mamdani o Sugeno, se debe acceder al


menú File/ New FIS/ Mamdani

Figura 2. Elección del modelo Mamdani

4
c) El controlador difuso tendrá dos variables de entrada y una variable de
salida. Para aumentar una variable de entrada 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 la 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

Figura 4. Definición de los nombres de las variables de entrada y salida

5
e) Para definir los rangos de las variables de entrada y salida,
seleccionamos cada variable y en Range escribimos el rango
correspondiente. Considerar un rango de -1 a 1 para cada variable

Figura 5. Definición de los rangos de las variables de entrada y salida

f) Cada una de las variables de entrada será clasificada en 5 categorías,


las cuales se representan por medio de las funciones de membresía.
Para crear estas funciones, primero seleccionamos la variable error (e),
luego eliminamos las funciones de membresía actuales con
Edit/Remove All MFs. Ingresamos al menú Edit/Add MFs y en Number
of MFs seleccionamos 5 y presionamos OK
Para grabar el archivo entramos a File/Export/To Workspace y le
damos el nombre difuso, entramos a File/Export/To file y le damos el
mismo nombre

6
Figura 6. Creación de las funciones de membresía de la variable error (e)

g) Cambiamos las funciones mf1 y mf5 de trimf a trapmf. En la gráfica


seleccionamos mf1 y en Type seleccionamos Trapmf. Repetimos el
procedimiento para mf5

Figura 7. Funciones de membresía del error (e)

7
h) Cambiamos los nombres de las funciones de membresía, 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 gráfica seleccionamos mf1 y en Name cambiamos mf1 por NL.


Repetimos lo mismo para las otras funciones

Figura 8. Cambio de los nombres de las funciones de membresía del error (e)

i) Repetimos los pasos 6, 7 y 8 para la variable de entrada derivada del


error (de)

Figura 9. Procedimiento para crear las funciones de membresía de la variable


de entrada, derivada del error (de)

8
j) Similarmente creamos las 5 funciones de membresía de la variable de
salida Out. Debemos considerar que las cinco funciones son del tipo
Trimf y los nombres de cada una de ellas son los siguientes

mf1=CL=Closed large
mf2=CS=Closed small
mf3=Z=Zero
mf4=OS=Open small
mf5=OL=Open large

Figura 10. 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

9
Figura 11. 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
Z CL CS Z OS OL
(e)
PS CS Z OS OL OL
PL Z OS OL OL OL

NL: negative large CL: closed large


NS: negative small CS: closed small
Z: zero Z: zero
PS: positive small OS: open small
PL: positive large OL: open 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 deben ser ingresadas a Rule editor. La primera


regla se ingresará así: En e, de y out seleccionamos NL, NL y CL
respectivamente, 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

10
Figura 12. Reglas difusas

3. Método de Defuzzification

a) Seleccionamos en Defuzzification la opción bisector

Figura 13. Método de Defuzzification

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 presionar


enter

11
Figura 14. Evaluación de reglas

Completar la siguiente tabla


e de out
0.4 0.8
0.4 -0.8
0 0
-0.4 0.8
-0.4 -0.8

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 15. Hoja de trabajo para realizar la simulación

12
b) Ingresar a la librería del simulink/sources, y seleccionar las opciones
Step y Signal Generator y arrastrarlas 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 16. 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
para formar Add1, Add2, Gain, Gain1, Gain2 y Gain3. Poner Add1 en +-,
Gain en 0.80, Gain1 en 0.85, Gain2 en 0.2 y Gain3 en 2

13
Figura 17. Operadores matemáticos

d) Ingresar a la librería del simulink/Continuos y seleccionar las opciones


Derivative, Integrator, Transfer Fcn y Transport Delay, arrastrar cada una
hacia la hoja de trabajo. Considerar en Transport Delay un tiempo
muerto de 1.104 segundos y en Transfer Fcn la función de transferencia
del proceso de nivel:

0.60571
G( s) 
7.0999s  1

14
Figura 18. Función de transferencia y tiempo de retardo

e) 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 doble click sobre Fuzzy Logic Controller y poner el
nombre del archivo donde se configuro el controlador difuso

15
Figura 19. Fuzzy Logic Controller

f) Ingresar a Simulink/Signal Routing y seleccionar la opción Mux y


arrastrar hacia la hoja de trabajo. Luego ingresar a Simulink/Sink y
seleccionar la opción Scope y arrastrar hacia la hoja de trabajo. Unir
todos los elementos y en la barra de estados cambiar el tiempo de
simulación a 3000

16
Figura 20. Diagrama de bloques del sistema de control Fuzzy

g) Ejecutar la simulación presionado en ► ubicado en la barra de estados,


esperar que se complete el tiempo de ejecución, luego hacer doble click
en Scope, se debe obtener el siguiente resultado

Figura 21. Resultado de la simulación

17
Cuestionario

1. ¿A que se denomina funciones de membrecía?

……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………

2. ¿En qué consiste la Fuzzification?

……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………

3. ¿En qué consiste la Defuzzification?

……………………………………………………………………………………
……………………………………………………………………………………
…………………………………………………………………………………….

4. ¿A que se denomina grado de pertenencia?

……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………

5. ¿A que se denomina universo de discurso?

……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………

6. En el archivo difuso modifique los rangos de las funciones de


membrecía de las variables de entrada y salida, grabar los cambios,
luego ejecutar el archivo nivel y observar los cambios en la respuesta
del sistema

18

También podría gustarte