capÍtulo iv resultados de la investigaciÓn control de

48
52 CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN Corresponde a este capítulo describir a profundidad las fases o etapas de que constó la construcción del CONTROL DE TEMPERATURA BASADO EN LOGICA DIFUSA CON INTERFASE DE ALTO NIVEL, se diferencian siete etapas que a su vez constituyeron sub etapas. Se hace omisión de aquellas incidencias que no revisten importancia de fondo limitándose solo a describir aquellas fases o etapas fundamentales y determinantes en el desarrollo de esta investigación. Primera Fase. Diseño Ensamblaje y Descripción de la Tarjeta de control. La tarjeta de control es el producto de hardware terminado y ensamblado en sus componentes electrónicos. La tarjeta de control ó Pc Board, como se ha denominado, se ordenó construir especialmente para este proyecto según diseño y especificaciones de los autores. Consta, entre otros elementos, de un termostato que contiene un resistor que se calienta por excitación de voltaje, un potenciómetro y un termistor. El resistor es el elemento que genera calor y el cual debe ser regulado, el termistor es el componente que censa la temperatura del mismo.

Upload: others

Post on 18-Jul-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

52

CAPÍTULO IV

RESULTADOS DE LA INVESTIGACIÓN

Corresponde a este capítulo describir a profundidad las fases o etapas

de que constó la construcción del CONTROL DE TEMPERATURA BASADO

EN LOGICA DIFUSA CON INTERFASE DE ALTO NIVEL, se diferencian

siete etapas que a su vez constituyeron sub etapas. Se hace omisión de

aquellas incidencias que no revisten importancia de fondo limitándose solo a

describir aquellas fases o etapas fundamentales y determinantes en el

desarrollo de esta investigación.

Primera Fase. Diseño Ensamblaje y Descripción de la Tarjeta de control.

La tarjeta de control es el producto de hardware terminado y

ensamblado en sus componentes electrónicos. La tarjeta de control ó Pc

Board, como se ha denominado, se ordenó construir especialmente para

este proyecto según diseño y especificaciones de los autores. Consta, entre

otros elementos, de un termostato que contiene un resistor que se calienta

por excitación de voltaje, un potenciómetro y un termistor. El resistor es el

elemento que genera calor y el cual debe ser regulado, el termistor es el

componente que censa la temperatura del mismo.

Page 2: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

53

El resistor, activado por una fuente de pulso modulado en amplitud

(PULSE WIDTH MODULATED, PWM), calienta el termistor adjunto. Por

medio de un potenciómetro se configura la temperatura final deseada

(SETPOINT), y el termistor mide la temperatura actual.

La tarjeta se diseñó para tres modos de funcionamiento básicos:

a. Modo de control manual: en este modo el usuario puede controlar la

temperatura del resistor configurando manualmente el ciclo de

calentamiento (DUTY CYCLE) del resistor PWM.

b. Modo de control proporcional: en este modo la tarjeta de control

determina la diferencia entre la temperatura actual y la temperatura

deseada (SETPOINT), este valor es llamado Error de Temperatura

(TE), este valor es enviado por el cable serial al Fuzzy Tech. Este

utiliza sus algoritmos de lógica difusa para asignar el Duty Cycle

apropiado al caso.

c. Modo de control proporcional derivativo: en este modo la tarjeta de

control determina el Error de Temperatura (TE) y además la diferencia

de éste en cada intervalo de tiempo. Estos dos valores son enviados

al Fuzzy Tech por medio de la interface serial para que este asigne el

Duty Cycle correspondiente.

La figura 5, ilustra el diseño de la tarjeta de control La tarjeta de control

contiene los siguientes componentes:

- Baquelita perforada.

- Potenciómetro para el control de temperatura

Page 3: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

54

- Potenciómetro de control para el ciclo de calentamiento.

- Display de tres dígitos.

- Conector para corriente directa de 2.5 mm.

- Conector DB-9 para RS-232.

- Seis diodos emisores de luz sencillos.

- Interruptor de reinicialización (RESET)

- Interruptores de inicio (START) y alto (STOP).

- Resistor y Termistor.

- Transistor de potencia.

- Diodo emisor de luz señalizador de encendido.

- Base para el microcontrolador PIC16C71.

Figura 5. Tarjeta de Control. Circuito electrónico.

Page 4: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

55

Para prevenir un sobrecalentamiento, si la temperatura del resistor

excede los 75 grados centígrados, el sistema de detiene y el led que indica

no operación se enciende.

Hasta este momento el control difuso para la tarjeta de control reside

íntegramente en el FuzzyTech MP – Explorer instalado en el PC. Por medio

del mencionado software se controla la temperatura que se aplicará al

resistor.

El FuzzyTech MP-Explorer simplifica el diseño de estrategias de control

ya que provee una fácil e intuitiva interfaz para resolver problemas de control;

además reduce el tiempo de desarrollo y permite a los diseñadores producir

prototipos de control en menor tiempo que cuando se usan métodos de

control convencional.

Protocolo de comunicación de la tarjeta de control.

La tarjeta de control se comunica con el FuzzyTech-MP Explorer por

medio de un cable serial a una velocidad de 9600 baudios, 8 bits de datos,

un bit de parada y sin paridad. Todas las variables de entrada y salida deben

cumplir estos requerimientos de comunicación. En el menú OPCIONES, item

TERMINAL, se pueden configurar los parámetros antes mencionados.

Al entablar una comunicación serial el software exige el siguiente

protocolo: Cada variable de entrada se leerá en formato de punto flotante

ASCII, el nombre de la variable nunca será transferido, las variables de

entrada son enviadas en orden alfabético, cada valor termina con un carácter

EOF (ctrl-z, o el código 26 en ASCII). Por ejemplo si las variables de entrada

Page 5: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

56

son ALFA, BETA, GAMMA los valores serán transmitidos de la siguiente

manera,

<valor de ALFA><EOF><valor de BETA><EOF><valor de GAMMA>

Las variables de salida siguen el mismo protocolo.

Las reglas de comunicación son las siguientes:

a. La transmisión serial es hecha una vez cada 0.5 segundos.

b. Si una señal de recibo no es percibida, la siguiente transmisión

repetirá el paquete.

c. Tres fallos consecutivos en la comunicación son suficientes para

romper el enlace. En este caso en el display aparecerá SER,

indicando que espera reestablecer la comunicación serial.

d. Se presiona el botón STOP de la tarjeta de control mientras se

soluciona el problema de comunicación.

Definición de los modos de funcionamiento.

a. Modo de funcionamiento proporcional: Es el modo de

funcionamiento por defecto. Usando una entrada proporcional

representa el modo más simple para desarrollar una estratega de

control.

En el modo proporcional, la tarjeta de control produce como valor de

entrada el Error de Temperatura, TE, el cual representa la diferencia

entre la temperatura deseada y la temperatura actual. La tarjeta de

control envía este valor al software mediante la interfaz serial.

Page 6: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

57

TE = TFinal – TPresente

El FuzzyTech retorna como salida el ciclo de calentamiento (Duty

Cycle). Esta señal gobierna el porcentaje de tiempo que la tarjeta de

control aplica potencia al resistor PWM.

b. Modo de funcionamiento Proporcional Derivativo: en este modo la

tarjeta de control produce dos valores de entrada, el Error de

Temperatura (TE) y la diferencia por intervalo de tiempo de dicho

Error (dTE/dt).

La temperatura de entrada (TE) representa el valor proporcional y la

diferencia del error en cada intervalo de tiempo representa el valor

derivativo.

TE = TFinal – TPresente

dTE/dt = TEn – T En - 1 tn – tn-1

La tarjeta de control calcula TE cada 0.5 segundos.

El FuzzyTech retorna una salida, el ciclo de calentamiento (Duty

Cycle).

Para habilitar el modo de funcionamiento proporcional derivativo

presione el interruptor RESET mientras mantiene presionado el

interruptor START. En el display aparecerá Pd indicando que se

activado el modo proporcional derivativo. Para abortar este modo de

funcionamiento presione el interruptor RESET.

Page 7: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

58

c. Modo de funcionamiento manual: este modo de funcionamiento

ilustra como los humanos naturalmente operan un sistema de

control, basándose en sus decisiones y sentidos.

Este modo permite controlar manualmente el ciclo de calentamiento

(Duty Cycle) para que sea el operador humano el que controle la

temperatura, de esta manera se comprende como actúa el control

difuso.

La Tabla 1, resume las reglas que manualmente usaría un ser humano

para controlar el ciclo de calentamiento de la tarjeta de control.

Tabla 1. Resumen de reglas humanas para el control del ciclo de calentamiento Si Temperatura Presente es Cantidad de Calor a

aplicar Lejana de la temperatura final Entonces

Use Potencia Alta

Cercana a la temperatura final Entonces Use

Potencia media

Coincide con la temperatura final Entonces Use

Potencia baja (sólo para mantenerla)

Sobrepasó la temperatura final Entonces Use

Desconectar la

Potencia

.

Segunda Fase. Fusificación de los valores de entrada.

La fusificación es el proceso de conversión del valor de entrada, Error

de Temperatura (TE), a una entrada expresada en Términos Lingüísticos.

La figura 6, muestra un diagrama en bloques de los tres pasos básicos

a seguir en una estrategia de control difusa.

Page 8: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

59

Figura 6. Tres elementos básicos del control fuzzy.

En el proceso de fusificación el FuzzyTech-MP Explorer convierte el

valor de entrada (TE) en un valor expresado en Términos Lingüísticos

basado en una función de membresía. La referida función asocia un grado de

membresía en el rango de uno a cero, ambos inclusive, con respecto a la

temperatura. En la figura 7 se muestra la función de membresía con los

términos lingüísticos CALIENTE, EN EL PUNTO, FRESCO y FRIO.

Figura 7 Función de Membresía

Fusificación Regla Base

Defusificación Entradas

Términos Lingüísticos

Salidas Difusas

Valores Físicos

Control Fuzzy

Implementación en PC (Explorer)

Función de membresía para los términos asociados con TE Calient En Fresco Frio

1

.3

.125

3 -6 - +20 ºC

Grado de Membresía

Page 9: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

60

Como puede observarse, TE = 3 ºC posee un grado de membresía 0.3

en el término lingüístico FRESCO y 0.125 en el término lingüístico EN

PUNTO.

En el mismo orden de ideas, CALIENTE tiene un grado de membresía

cero en TE = 3 ºC. De esta manera todos los posibles valores de TE tendrá

lgún grado de membresía en cada uno de los términos lingüísticos que

expresan la variable. Allí reside el calificativo de difusa que posee la

estrategia de control.

Tercera fase. Fijación de criterios de la regla base para el control

de temperatura.

Basándose en los criterios lógicos naturales del ser humano la tabla 2

nos expresa la regla base para el CONTROL DE TEMPERATURA

FUNDAMENTADO EN LÓGICA DIFUSA o proyecto desarrollado. Esta regla

se introdujo al FuzzyTech para su procesamiento.

Regla Uno: Si el término lingüístico de entrada es Frío, entonces el Duty

Cycle es ALTO.

Regla Dos: Si el término lingüístico de entrada es Fresco, entonces el Duty

Cycle es MEDIO.

Regla Tres: Si el término lingüístico de entrada es En Punto, entonces el

Duty Cycle es POCO.

Regla Cuatro: Si el término lingüístico de entrada es Caliente, entonces el

Duty Cycle es CERO.

Page 10: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

61

Tabla 2. Regla base del proyecto..

Regla base

Regla Error de

Temperatura (TE)

Ciclo de Calentamiento (Duty Clycle)

1 Si Frio Entonces ALTO

2 Si Fresco Entonces MEDIO

3 Si En Punto Entonces POCO

4 Si Caliente Entonces CERO

Estas reglas significan que el grado de calentamiento dependerá del grado

de pertenencia que el Error de Temperatura (TE) tenga dentro de cada

término lingüístico que lo define.

Cuarta fase. Defusificación para producir los valores del ciclo de

calentamiento (Duty Cycle).

El FuzzyTech utiliza una función de membresía de salida para

defusificar los términos lingüísticos. En la figura 8 se ilustra el proceso de

defusificación asociado a los términos lingüísticos que definen la variable

ciclo de calentamiento (Duty Cycle).

En el caso donde TE = 3 ºC, la regla #2 ofrecerá un grado de 0.125 y la

regla #3 un grado de 0.3. La regla # 2 está asociada a un Ciclo de

Calentamiento (Duty Cycle) MEDIO mientras que la regla #3 está asociada a

POCO. Una línea horizontal a la altura de 0.125 intercepta el grado en que el

valor MEDIO es activado y una línea horizontal a la altura de 0.3 intercepta el

Page 11: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

62

grado en que POCO es activado. MEDIO esta representado por ALTURA 2

(Figura 8). Igualmente ALTURA 1 representa el grado en el cual POCO es

activado.

El método del Máximo Central es usado para determinar el valor del

Ciclo de Calentamiento (Duty Cycle). En el caso donde TE = 3 ºC el Duty

Cycle será 46%.

La regla #3 y su inferencia resultante es representada por el área

oscura de la flecha POCO, similarmente ocurre con la regla #3 y el área

oscura de la fecha MEDIO.

El cálculo de defusificación del método del máximo central es el

siguiente:

Duty Cycle = (0.3 x 40%) + (0.125 x 60%) ≈≈ 46% 0.3 x 0.125

Esta regla de inferencia se aplica a cualquier valor de entrada de TE y

genera el correspondiente valor de salida para el Ciclo de Calentamiento

(Duty Cycle), éste es el núcleo del razonamiento difuso.

Para elaborar la regla base es preciso recordar que la tarjeta de control

interactúa con el FuzzyTech-MP Explorer calculando el Error de Temperatura

(TE) y enviándola por el cable serial al computador.

Se llamará a este valor TEMP_ERROR para efectos de la

programación.

Page 12: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

63

Figura 8. Función de membresía para la defusificación del Duty Cycle.

Quinta fase. Estructuración de la regla base.

TE = TEMP_ERROR = TFinal – TPresente

Donde

TFinal = Temperatura Final (SETPOINT)

TPresente = Temperatura actual

La figura 9 ilustra la relación entre TEMP_ERROR y la temperatura presente,

suponiendo un SETPOINT de 60 ºC.

Figura 9. Gráfica de TEMP_ERROR. Fuente: Experimental.

30 20 10 0 -10 -20

20 30 40 50 60 70 80 90

TE, ºC

Temperatura presente, ºC

TE = Temperatura Final – Temperatura Presente Temperatura Final = 60 ºC

Page 13: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

64

La regla base representará el núcleo de la estrategia de control que se

seguirá. El software en todo caso deberá cumplir los pasos de:

- Fusificación: Traduce los valores de entrada en valores lingüísticos por

medio del cálculo de los grados de membresía de cada valor de

entrada. Este proceso constituye la parte IF (SI) de la regla. El

software asigna un grado de membresía a cada valor después de

hacer el cálculo.

- Regla de inferencia: Se determina el grado de validez de la conclusión

(THEN).

- Defusificación: Se traducen los valores de salida a su correspondiente

valor físico.

La tarjeta de control está diseñada para trabajar a temperatura ambiente

(38 ºC).

Asignando nombres a la variables lingüísticas.

La regla base asocia valores de entrada (TEMP_ERROR) generados por

la tarjeta de control a términos lingüísticos.

El primer paso lo constituye la selección de los términos lingüísticos que

limitarán el numero de variables que se utilizarán en la definición de la regla

base. En la medida en que se defina mayor número de términos lingüísticos

se requerirá mayor cantidad de memoria.

En la mayoría de las aplicaciones, el número de términos lingüísticos

oscila entre tres y siete. Menos de dos términos es improcedente ya que

Page 14: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

65

limita demasiado la elección de pertenencia a uno de los dos grupos.

Generalmente los seres humanos manejan tres términos, uno a cada

extremo y uno en el medio. El número de términos rara vez excede de siete

ya que haría la evaluación sumamente complicada y aumentaría demasiado

los requerimientos de memoria. Las variables que poseen un valor central

determinante se manejan mejor con un número impar de términos.

Para determinar el número apropiado de términos para manejar la

temperatura del resistor de la tarjeta de control, no se utilizará la premisa

empírica de que tres términos es la cantidad ideal, sino que profundizaremos

seleccionando cuatro términos lingüísticos para definir con más precisión la

variable de entrada.

Los términos lingüísticos son los siguientes:

- FRIO, cuando TEMP_ERROR exceda de 15 ºC tiene un grado de

pertenencia de 1. Desciende linealmente hasta 0 en 10 ºC.

- FRESCO, cuando TEMP_ERROR este en 10 ºC alcanzará su valor de

pertenencia más alto (1), y desciende linealmente hasta 0 en 5 ºC y 15

ºC.

- EN PUNTO, tiene pertenencia entre 0 ºC y 10 ºC de TEMP_ERROR.

- CALIENTE, cuando TEMP_ERROR oscile entre –5 ºC a 0 ºC tiene un

grado de pertenencia de 1, en 0 ºC comienza a descender linealmente

la pertenencia hasta llegar a 0 en 5 ºC.

La figura 10 ilustra la función de pertenencia de la variable

TEMP_ERROR.

Page 15: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

66

Como se podrá notar los términos lingüísticos son de uso cotidiano y de fácil

comprensión para el diseño de la estrategia de control.

Figura 10. Función de membresía de la variable TEMP_ERROR. Fuente: Experimental

.

Definiendo la regla base.

Cuando se escribieron las condiciones para la estructuración de la regla

base, se utilizó la sentencia IF. THEN.

Para ello FuzzyTech-MP Explorer ofrece una herramienta de estructuración

llamada SPREADSHEET RULE EDITOR. Dicha herramienta se ilustra en la

figura 11.

La regla base quedó definida de la siguiente manera:

a. Si la entrada es FRIO la salida será ALTO.

Page 16: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

67

b. Si la entrada es FRESCO la salida es MEDIO.

c. Si la entrada es EN_PUNTO la salida es BAJO.

d. Si la entrada es CALIENTE la salida es CERO.

Figura 11. Editor de Regla Base.

Generando la estrategia de control proporcional.

Todas los pasos que a continuación se exponen se ejecutarán en el

FuzzyTech-MP Explorer:

a. Del menú principal se selecciona FILE > NEW para generar un nuevo

sistema de control. La figura 12 presenta el mensaje dado por el

sistema.

Figura 12. Generando nuevo sistema.

Page 17: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

68

b. El sistema despliega la caja de dialogo de Generar Proyecto (Figura

13).

Figura 13. Generar Proyecto.

Inputs LVs: Variables Lingüísticas de Entrada.

Output LVs: Variables Lingüísticas de Salida.

Rule blocks: Bloques de reglas (base).

Input terms/LV: Términos (lingüísticos) de la variable lingüística de

entrada.

Output terms/LV: Términos (lingüísticos) de la variable lingüística de

salida.

c. En el cuadro de diálogo Generar Proyecto, se introduce el número de

variables lingüísticas de entrada y salida así como los respectivos

Page 18: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

69

números de términos lingüísticos asociados. (En el caso particular una

variable de entrada, una de salida y cuatro términos por cada una).

d. Aparecerá el editor de proyectos y la ventana LV (Variables

lingüísticas) (ver Figura 14).

Figura 14. Editor de proyectos y ventana de variables lingüísticas.

e. Se selecciona del menú principal OPTIONS > GLOBAL OPTIONS y

aparecerá el respectivo cuadro de diálogo (Figura 15).

f. Se selecciona como tipo de dato para la variable base Entero de 8

Bits. Esto se debe al hecho que el microcontrolador PIC16C71 que es

la base del proyecto trabaja a 8 Bits de resolución de datos.

Page 19: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

70

Ya está creado el marco para la estrategia de control proporcional (sólo

una entrada, ahora se está listo para la asignación de los nombres a las

variables lingüísticas de entrada y salida, y la asignación de los términos

lingüísticos que definirán a cada una de dichas variables.

Figura 15. Cuadro de dialogo de Opciones Globales.

Asignando nombres a las variables lingüísticas de entrada y salida.

a. Se selecciona In1 de la ventana de variables lingüísticas (LV) y se

hace clic derecho sobre ella.

Page 20: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

71

b. Se selecciona del menú contextual que aparecerá la opción Atributos

y se desplegará el cuadro de dialogo Renombrar Variable. (Figura

16).

c. Se asignó el nombre a la variable TEMP_ERROR.

d. El mismo procedimiento se sigue para asignar el nombre a la variable

lingüística de salida Duty_Cycle.

Figura 16. Cuadro de dialogo Renombrar Variable.

Asignando nombres a los términos lingüísticos de entrada.

a. En la ventana LV se hace doble clic sobre TEMP_ERROR para abrir la

función de membresía de la variable. Esta ventana es conocida como

el editor de variable. TEMP_ERROR muestra inicialmente como

términos lingüísticos a term1, term2, term3 y term4 además de la

variable base (Figura 17).

Estos términos lingüísticos serán sustituidos posteriormente por

nombres comunes como se puede apreciar mas adelante, caliente, frio,

en punto, todo a discreción del programador según sea el sistema a

aplicar

Page 21: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

72

Figura 17. Editor de variable.

b. La variable base será expresada en grados Centígrados. Se hace

doble clic sobre Base_Variable y asignamos los valores propios del

proyecto (Figura 18).

Figura 18. Cuadro de dialogo de la Variable Base.

Page 22: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

73

c. Se observa que para los 8 bits de resolución elegidos, el rango de los

valores de código va de 0 a 255. Se asigna Grados_Centigra al

nombre de la variable base.

d. Sobre la sección SHELL VALUES, se transcriben en las casillas de

MIN y MAX los valores límite de Temperatura que la tarjeta de control

envía como señal de entrada. En el caso del proyecto desarrollado la

tarjeta tiene como especificación una valor mínimo de –5 ºC y un valor

máximo de 20 ºC. Sobre dichos valores se hará la interpolación binaria

del resto de las posibles temperaturas.

e. Se hace clic en el botón OK y se procede a asignar los nombres de los

términos lingüísticos de entrada.

f. Se hace doble clic en cada uno de los términos creados originalmente

(term1, term2, term3 y term4) y se sustituyen por los nombres

seleccionados previamente (CALIENTE, EN_PUNTO, FRESCO,

FRIO).

Asignando nombres a los términos lingüísticos de salida.

a. En la ventana LV se hace doble clic sobre Duty_Cycle para abrir la

función de membresía de la variable. Esta ventana es conocida como

el editor de variable. Duty_Cycle muestra inicialmente como términos

lingüísticos a term1, term2, term3 y term4 además de la variable base

(Figura 19).

Page 23: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

74

Figura 19. Editor de variable.

b. La variable base será expresada en Porcentaje. Se hace doble clic

sobre Base_Variable y asignamos los valores propios del proyecto

(Figura 20).

Figura 20. Cuadro de dialogo de la Variable Base.

Page 24: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

75

c. Se observa que para los 8 bits de resolución elegidos, el rango de los

valores de código va de 0 a 255. Se asigna Porcentaje al nombre de

la variable base.

d. Sobre la sección SHELL VALUES, se transcriben en las casillas de

MIN y MAX los valores límite de Porcentaje que la tarjeta de control

interpretará como señal de salida. En el caso del proyecto

desarrollado la tarjeta tiene como especificación un valor mínimo de

0% y un valor máximo de 100%. Sobre dichos valores se hará la

interpolación binaria del resto de los porcentajes del tiempo de

calentamiento (Duty Cycle) posibles.

e. Se hace clic en el botón OK y se procede a asignar los nombres de los

términos lingüísticos de entrada.

f. Se hace doble clic en cada uno de los términos creados originalmente

(term1, term2, term3 y term4) y se sustituyen por los nombres

seleccionados previamente (CERO, BAJO, MEDIO y ALTO).

DEFINIENDO LA REGLA BASE.

a. Se hace doble clic en la sección Bloque de Regla del Editor de

Proyectos. (Figura 21). Aparecerá la hoja de definición de reglas.

Figura 21. Bloque de Regla

Page 25: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

76

b. Se eliminan las reglas sobrantes, dejando sólo las cuatro reglas

elementales (caso particular del proyecto desarrollado). Para eliminar

una regla se selecciona y luego se presiona la tecla DELETE. (Figura

22).

c. Se asigna el valor 1.00 al grado de soporte de las cuatro reglas

principales. Esto se hace con el propósito de indicarle al software que

cada una de las cuatro reglas está totalmente soportada.

d. La regla base debe haber queda estructurada definitivamente según lo

indica la figura 23.

Figura 22. Hoja para edición de reglas

Page 26: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

77

Figura 23. Regla base definitiva

.

Cumplidos todos estos procedimientos se ha concluido con la quinta

fase, estructuración de la regla base. Esta fase representa el punto

fundamental en el desarrollo de una estrategia de control basada en lógica

difusa.

Sexta fase. Selección de la conexión serial y ejecución de la

estrategia de control.

Del menú principal se selecciona OPTIONS > TERMINAL para

desplegar el cuadro de dialogo TERMINAL. Inmediatamente aparecerá un

cuadro como el de la figura 24. En este cuadro se podrá configurar todos los

parámetros de comunicación serial entre el PC y la tarjeta de control.

La rata de transferencia de baudios fue ajustada en la tarjeta de control

a 9.600 baudios por lo cual debe hacerse el mismo ajuste en el FuzzyTech.

Asimismo se debe declarar un bit de parada y el tamaño del buffer

dependerá de la cantidad de memoria disponible en el PC, se recomienda

utilizar el valor por defecto. El puerto serie será seleccionado de acuerdo a la

Page 27: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

78

disponibilidad que se tenga en el equipo. Generalmente se usa el puerto

COM2.

Establecidos ya los parámetros de comunicación se procedió a la

conexión de la tarjeta de control con el PC por medio de un cable RS-232.

Para guardar la estrategia de control se selecciona la opción FILE

>SAVE del menú principal y se procede a colocarle un nombre a la estrategia

de control.

El nombre de la estrategia de control del proyecto desarrollado es

4RULES.FTL. La extensión FTL identifica los archivos “Fuzzy Tech

Language”.

Figura 24. Cuadro de diálogo TERMINAL.

Page 28: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

79

Para iniciar la comunicación serial se selecciona la opción del menú

principal DEBUG > SERIAL LINK, la cual abrirá una ventana llamada Debug:

Serial Link que permitirá visualizar los cambios experimentados por las

variables de entrada y salida. (Figura 25).

Figura 25. Ventana de visualización de variables lingüísticas de entrada y salida

Si la comunicación no es correcta entre la tarjeta de control y el PC se

mostrará un mensaje de error indicando que no se ha establecido la

comunicación correctamente.

Posteriormente se habilita el analizador de curvas del FuzzyTech con la

opción ANALYZER>TIME PLOT, lo cual permitirá seleccionar en un cuadro

de diálogo (Figura 26) cuales son las variables que se desean monitorear

gráficamente. En el caso del proyecto desarrollado se eligieron la variable

TEMP_ERROR y Duty_Cycle para se analizadas sus curvas. Al colocar

todas estas ventanas adecuadamente en la pantalla se está listo para iniciar

la operación de la tarjeta de control.

a. Se presiona el botón RESET de la tarjeta de control para inicializar la

misma en modo proporcional.

Page 29: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

80

b. Se ajusta el SETPOINT a la temperatura a la que se desee estabilizar

el sistema (la tarjeta de control está diseñada para limitar está

configuración entre 40 ºC y 70 ºC).

c. Se presiona el botón START para iniciar la ejecución de la estrategia

de control. Se observará los cambios sucesivos del Duty_Cycle a

medida que la temperatura actual se va aproximando a la temperatura

deseada (SETPOINT).

A medida que se hacen corridas de la estrategia de control se pueden ir

haciendo ajuste en los parámetros de operación que permitan afinar y

optimizar los resultados obtenidos

Las curvas mostradas reflejan la efectividad de utilizar una estrategia de

Figura 26. Cuadro de diálogo de Configuración de gráficas en Tiempo real.

control basada en lógica difusa.

El desarrollo de una estrategia de control para un dispositivo

Proporcional Derivativo constituye un caso de estudio para trabajos

posteriores.

Séptima fase. Independencia de la tarjeta de control.

Page 30: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

81

El primer paso para independizar la tarjeta de control del PC es la

compilación de la estrategia de control para el modelo de PIC deseado, en el

caso del proyecto actual se eligió el PIC16C71.

Para compilar el proyecto se seleccionó del menú principal la opción

COMPILE > to 16CXX, lo cual convertirá la estrategia de control desarrollada

en el FuzzyTech-MP Explorer en un programa fuente en lenguaje

Ensamblador. En el caso particular del proyecto se eligió el nombre

FUZRULES.ASM. Adicionalmente, de manera automática, se genera un

archivo llamado FUZRULES.VAR el cual contiene la declaración de las

variables utilizadas en las rutinas de control.

Para el manejo de la tarjeta de control se desarrolló un programa en

lenguaje Ensamblador llamado STNDALON.ASM el cual maneja los

componentes de la tarjeta de control en modo de funcionamiento manual,

proporcional y derivativo. Este programa carece del núcleo de lógica difusa

que le permita tomar las decisiones pertinentes al control de la temperatura.

A este programa se le incorporó el archivo FUZRULES.ASM para que

asimile la capacidad de control independiente.

El programa definitivo se compiló en formato hexadecimal por

intermedio del software MPLAB, herramienta esta que convierte archivos

ASM a archivos HEX.

El archivo definitivo STNDALON.HEX será bajado al microcontrolador

PIC16C71 por medio del dispositivo de “quemado” de PIC de la Marca

Microchip Technology Inc.

Page 31: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

82

Sin embargo, antes de la independencia es preciso asegurarse que la

estrategia de control esté totalmente entonada, es decir, que responda a las

necesidades y requerimientos del sistema.

Para lograr esto se efectuaron una serie de pruebas del proyecto en modo

Serial Link, para ello se habilitó éste modo de depuración y se presionó el

botón START de la tarjeta de control para comenzar a visualizar el desarrollo

de la estrategia de control. La figura 27 muestra la corrida del proyecto en

modo de depuración con cable serial. Nótese que en la corrida se pueden

monitorear simultáneamente las dos variables lingüísticas con sus

respectivas funciones de membresía y los cambio.

Figura 27. Corrida de la estrategia de control en modo de depuración con cable serial.

Page 32: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

83

graduales que van teniendo los grados de membresía mientras transcurre el

tiempo. Asimismo se puede observar la curva de cada variable y analizar el

comportamiento de cada una.

Todo este conjunto de recursos visuales constituye una poderosa

herramienta de depuración de las estrategias de control y al mismo tiempo

una interfaz de alto nivel para el monitoreo del sistema.

Al presionar el botón STOP de la tarjeta de control se detiene

momentáneamente la ejecución de la estrategia de control y permite al

programador ajustar los valores de las funciones de membresía para redefinir

la estrategia e ir entonando la misma. Luego de múltiples pruebas se elige la

mejor estrategia y se procede a la independencia de la misma en la tarjeta de

control.

Tomando en cuenta que la tarjeta de control se diseño para trabajar con

un oscilador de cristal de 4 megahertz y que al transferir el núcleo de lógica

difusa al PIC16C71, la ejecución del programa en modo STANDALON se

hace relativamente lenta lo cual en algunos casos afecta ligeramente la

ejecución del sistema de control. Una posible solución lo constituiría la

instalación del un cristal de mayor frecuencia de pulsos para acelerar la

operación del circuito. Las especificaciones técnicas del PIC16C71 indican

que puede trabajar a frecuencias de hasta 20 megahertz.

Page 33: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

84

2. ANALISIS DE RESULTADOS

Se pudo demostrar que los fundamentos de la Lógica Difusa son

perfectamente aplicables en la mayoría de las estrategias de control.

También se demostró que los tiempos de repuesta son más rápidos y la

estabilización del sistema mejora notablemente.

Se logró demostrar así mismo que este producto puede ser

implementado en cualquier sistema que requiera un riguroso control de la

variable temperatura y su coste es relativamente bajo.

Page 34: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

85

CONCLUSIONES.

Las estrategias de control convencional son útiles para proyectos a

largo plazo y su desarrollo representa un costo elevado en tiempo y dinero.

La implementación de estrategias de control fundamentadas en lógica difusa

constituye una alternativa para desarrollo rápido y económico de sistemas de

control flexibles y precisos.

Las nuevas tecnologías de programación de PICs hacen el desarrollo

de aplicaciones de control mucho más efectivo ya que permiten depurar en

modo interactivo los parámetros de operación y redefinir con facilidad los

patrones lógicos básicos.

La lógica difusa representa una tendencia de modernización en el área

de programación dejando atrás los conceptos ortodoxos de valor lógico

verdadero o falso y ampliando la gama de posibilidades de decisión,

asemejándose cada día más el esquema de desarrollo a la lógica cotidiana.

La tecnología de software apunta cada día más a la simplificación de los

procesos de desarrollo, facilitando grandemente la elaboración de proyectos

y disminuyendo las dificultades derivadas de la reestructuración y

redefinición de los lineamientos generales del sistema.

Las interfaces de alto nivel brindan un recurso eficiente en el monitoreo

y configuración de estrategias de control permitiendo supervisar en tiempo

Page 35: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

86

real los sucesos que afectan a los sistemas, ofreciendo de esta manera las

bases para inferir nuevos parámetros de funcionamiento.

Los controles de temperatura son circuitos que generalmente manejan

situaciones críticas y riesgosas por lo que se ameritan sistemas de control

que ofrezcan respuestas oportunas ante cambios bruscos en el elemento

controlado. De allí que la lógica difusa ofrece una alternativa de alta calidad

tecnológica para resolver este tipo de problemas. La técnica proporcional

derivativa es sin duda la mejor opción en sistemas de control difusos ya que

combina el poder de los PID convencionales con los avances en tiempo de

respuesta de la lógica difusa.

El diseño de dispositivos de control basados en PIC ha simplificado la

fase de fabricación del hardware de los dispositivos de control, permitiendo al

ingeniero la posibilidad de concentrar mayores esfuerzos en el desarrollo de

las estrategias concretas de software que se integrarán a los prototipos. La

compatibilidad de estos microcontroladores con una gran gama de interfaces

seriales y paralelas ha facilitado la conexión de los dispositivos de control a

sistemas basados en PC lo que agrega el poder de las interfaces de alto

nivel y las herramientas estadísticas que optimizan el análisis de los

resultados.

Page 36: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

87

RECOMENDACIONES

Se hace necesario desarrollar nuevas investigaciones sobre controles

difusos con sistemas derivativos. Para ello se debe proponer como tesis para

próximos semestres este tipo de proyectos.

Profundizar el estudio de la inteligencia artificial en sus diversas fases,

incorporándolo a los pensa de estudio de ingeniería.

Fomentar la integración del desarrollo de trabajos de grado entre las

diversas escuelas de la facultad de ingeniería, ya que muchos de los

fundamentos tecnológicos de este tipo de trabajos es multidisciplinario.

Explotar en mayor grado la herramienta fuzzyTECH adquirida por esta

Universidad (URBE) y promover el desarrollo de sistemas basados en la

misma, tanto a nivel de pre grado como post grado, por ejemplo, en materias

como Inteligencia Artificial se deben proponer proyectos cuya herramienta de

desarrollo sea la antes mencionada.

Implementar tecnologías basadas en lógica difusa en algunos

sistemas de la universidad, tales como, torniquetes de entrada a los bloques,

controles de temperatura ambientales, iluminación, entre otros.

Page 37: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

88

ANEXOS

Page 38: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

89

1. CÓDIGO FUENTE DEL PROGRAMA STNDALON.ASM

;***************************************************************** ;TITULO: Control de Temperatura para prototipo Fuzzy Logic ; ;Este programa permite independizar el prototipo de control de ;de Temperatura, manejando los componentes del mismo. ;Una vez que el algoritmo de control fue probado y entonado ;se compiló automáticamente para el microcontrolador PIC 16C71, en este caso particular. ;El programa compilado fue llamado FUZRULES.ASM y reemplaza básicamente ;la interface serial con el PC. ;En STNDALON.ASM las variables difusas son cargadas llamando las rutinas ;de FUZRULES.ASM. La diferencia entre el SetPoint y la temperatura actual es cargada ;en la variable lingüística lv0_DeltaTemp, entonces la rutina "FourRules" ;es ejecutada. La rutina retorna la variable lingüística de salida ;lv1_DutyCycle. Este valor es usado por el control PWM para calentar el resistor. ; list p=16c71,f=inhx8m ; include "stndalon.h" include "16cxx.h" include "stndalon.var" ; ; push macro movwf WBuffer ;guarda el registro w en el buffer swapf WBuffer ;ahora lo intercambia swapf _status,w ;lee el status movwf StatBuffer ;ahora lo guarda endm ; pop macro swapf StatBuffer,w ;restaura el status movwf _status ; / swapf WBuffer,w ;restaura el registro w endm ; ; org ResetVector

Page 39: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

90

; goto Start ; ; org InterruptVector goto ServiceInterrupts ; include "display.asm" include "keypad.asm" ; Start call ClearRam call InitPorts call InitRTCC call InitAD call init4rules ;inicia el control difuso call StartDisplay call BlankDisplay bsf _ptled bsf _nopled call WhichKey ;lee la línea 1 y devuelve la temperatura btfsc _StopKey ;se presionó stop? goto SetManMode ;configurese en modo manual bsf _fuzled ;cambie el estado del led Fuzzy Logic StartContinue bcf _blankdisplay ConstantCheck btfsc _500mSOver call ServiceHalfSec btfsc _1mSOver call CheckDC btfsc _20mSOver call ServiceKP btfsc _100mSOver call ServiceDisplay goto ConstantCheck ; SetManMode bsf _manled ;enciende el led Modo Manual goto StartContinue ; ; ;Limpia la memoria del PIC desde la dirección 0x0C hasta 0x2F. ClearRam movlw 0x0c ;lee la primera dirección de memoria

Page 40: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

91

movwf _fsr ;la carga en una dirección indirecta CR1 clrf 0 ;hace una limpieza de la dirección indirecta incf _fsr ;incrementa FSR btfss _fsr,5 ;si se configura a 5 bits entonces salta goto CR1 ;sino limpia la siguiente dirección btfss _fsr,4 ;si se configura a 4 bits entonces lo hace goto CR1 ;sino limpia la siguiente dirección return ; InitPorts clrf _portb clrf _porta bsf _ledEn ;desactiva escritura a los leds bsf _tx ;y habilita transmisión alta bsf _rp0 ;selecciona pg1 movlw 3 ;ra0-3 entrada/salida digital movwf _adcon1 ; / movlw B'00000111' ;conf. porta movwf _trisa ; / movlw B'01110001' ;conf. portb movwf _trisb ; / bcf _rp0 ;selecciona pg0 return ; InitRTCC movlw B'11000001' ;interrupción de reloj, divide entre 4 option ;interrupción por un milisegundo movlw .256 - .250 ;interrupciones rtcc movwf _rtcc ;cada milisegundo movlw B'10100000' ;habilita interrpción rtcc movwf _intcon ; / movlw .20 ; movwf _20mStmr ; movlw .5 ; movwf _100mStmr ; movwf _500mStmr return ; ; InitAD movlw B'11000000' ;selecciona reloj RC para a/d movwf _adcon0 ; / return ;

Page 41: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

92

; ServiceInterrupts btfss _rtif ;hay interrupción rtcc? return ;sino entonces retorna de la interrupción push ;salva status del registro w movlw .256 - .250 ;vuelve a cargar rtcc movwf _rtcc bcf _rtif ;limpia bandera de interrupción bsf _1mSOver ;configura bandera para 1 milisegundo decfsz _20mStmr ;resta 20 mS al temporizador goto InterruptEnd ;si no se hace 0 entonces finaliza bsf _20mSOver ;configura bandera para 20 milisegundos movlw .20 movwf _20mStmr decfsz _100mStmr ;resta 100 mS al temporizador goto InterruptEnd ;si no se hace 0 entonces finaliza bsf _100mSOver ;configura bandera para 100 milisegundos movlw .5 movwf _100mStmr decfsz _500mStmr ;resta 500 mS al temporizador goto InterruptEnd ;si no se hace 0 entonces finaliza bsf _500mSOver ;configura bandera para 500 milisegundos movlw .5 movwf _500mStmr ;carga de nuevo el temporizador InterruptEnd pop ;restaura el status al registro w retfie ; ; ServiceKP bcf _20mSOver call GetKey ;service routine for key scan return ; ; ServiceDisplay bcf _100mSOver call CheckPeriod call GetAd ;hace conversión analógico-digital btfsc _FlashHot ;esta activo goto FlashHot ;si es así muestrelo btfsc _Flash0 ;limpie los display goto Flash0 movf lv1_DutyCycle,w ;cargar el valor del Duty Cycle

Page 42: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

93

btfsc _dcled ;está encendido el led del duty cycle? goto LoadDC ;cargar el valor del duty cycle al registro de display movf FinalTemp,w ;Cargar el valor de la temperatura final btfsc _ftled ;está encendido el led temperatura final? goto LoadFT ;cargar el valor de la temperatura final al resgistro ;de display movf PresentTemp,w ;Cargar el valor de la temperatura presente movwf DisplayRegister ;Mostrar el registro de display call Bin8toBcd3 call ShiftLeft4 movlw .5 btfsc _pthalfvalue iorwf accd goto DisplayContinue LoadDC movwf DisplayRegister call Bin8toBcd3 DisplayContinue call Display call CheckDebounce return LoadFT movwf DisplayRegister call Bin8toBcd3 call ShiftLeft4 movlw .5 btfsc _fthalfvalue iorwf accd goto DisplayContinue ; ShiftLeft4 movlw .4 movwf temp ShiftAcccAccd bcf _c rlf accd rlf accc decfsz temp goto ShiftAcccAccd return ; ;

Page 43: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

94

ServiceHalfSec bcf _500mSOver btfss _blankdisplay goto blank bcf _blankdisplay goto HalfSecContinue blank bsf _blankdisplay HalfSecContinue btfsc _manled ;está en modo manual? return ;entonces retorne btfss _starton ;está encendido el circuito? return ;sino salga ;******************************************************************** call FourRules ;ejecute el algoritmo difuso btfsc lv0_DeltaTemp,7 ;eliminar calentamiento previo clrf lv1_DutyCycle ; / ;******************************************************************* return ; ToggleFCLed btfss _fuzled goto FuzLedOn ;encender el led de lógica difusa bcf _fuzled return FuzLedOn bsf _fuzled return ; ; CheckDebounce btfss _debounce ;no debounce then return return btfss _dbover ;dbover? goto setdbover ;no then set flag bcf _dbover ;yes then clr all flags bcf _debounce ; / return setdbover bsf _dbover return ; ; ;El administrador de potencia (PWM) está configurado para un período de 100mS o 10 Hz.

Page 44: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

95

;El ciclo de calentamiento (Duty Cycle) se maneja de 0 a 100% y es chequedo cada ;milisegundo CheckPeriod btfss _starton ;Si está encendido ejecutelo return movf lv1_DutyCycle,w sublw .100 ;Chequea si es mayor a 100 movf lv1_DutyCycle,w btfss _c ;sino omite (salta) movlw .100 ;en caso que si carga 100 (nunca excede) movwf DutyCycle btfsc _z ;chequea si es cero goto DopwmEnd bcf _pwm ;just stop pwm btfss _FlashHot ;si calienta de más apaga el resistor bsf _pwm DopwmEnd movwf lv1_DutyCycle return ; ; CheckDC bcf _1mSOver ;limpia bandera btfss _starton return decfsz DutyCycle ;decrementa el Duty Cycle return ;si no es 0 entonces retorna bcf _pwm return ; Flash0 call StartDisplay ;Inicializa display btfsc _blankdisplay ;display vacio? goto BlankDisplay ;limpia display clrw ;muestra en blanco call DisplayW ;el MSD movlw B'11111101' ;muestra cero en el segundo dígito call DisplayW ; / movlw B'11111100' ;muestra cero en LSD call DisplayW movf AuxDsp,w ;lee valores de los leds andlw B'11111100' ;desplaza a la izquierda dos bits call DisplayW ;muestra SendLast

Page 45: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

96

call EndDisplay return ; BlankDisplay clrw ;muestra cero call DisplayW clrw call DisplayW clrw call DisplayW movf AuxDsp,w andlw B'11111100' call DisplayW goto SendLast ; FlashHot call StartDisplay ;inicializa display btfsc _blankdisplay ;en blanco? goto BlankDisplay ;limpielo movlw B'01101110' ;with Hot call DisplayW movlw B'00111010' ; / call DisplayW movlw B'00011110' ; / call DisplayW movf AuxDsp,w andlw B'11111100' call DisplayW goto SendLast ; ; ; include "ad.asm" include "fuzrules.asm" ; ; end ;

Page 46: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

97

2. Programa fuente FUZRULES.ASM generado por el fuzzyTECH-

MP Explorer.

;------------------------------------------------------------------------------- ;----------------- fuzzyTECH 3.16 MP Explorer --- Preassembler ----------------- ;--- (c) 1994 by Inform Software Corp., 1840 Oak Avenue, Evanston, IL 60201 ---- ;----------- (c) 1994 by INFORM GmbH, Pascalstr. 23, D-52076 Aachen ------------ ;------------------------------------------------------------------------------- ;--------------- code generation date: Tue Jan 09 17:03:04 2001 ---------------- ;------------------------------ project: CONTROLT ------------------------------ ;------------------------------------------------------------------------------- ;------------------ slope term definition (x1, a_s, x3, d_s) ------------------- tpts DW 03400H, 03400H, 03433H, 0340AH DW 03433H, 0340AH, 03466H, 0340AH DW 03466H, 0340AH, 03499H, 0340AH DW 03499H, 0340AH, 034FFH, 03400H ;------------------------ xcom table (defuzzification) ------------------------- xcom DW 03419H, 03466H, 03499H, 034E5H ;--------------------------------- rule table ---------------------------------- rt0 DW 03404H DW 03401H,03401H, 03400H, 03404H DW 03401H,03401H, 03401H, 03405H DW 03401H,03401H, 03402H, 03406H DW 03401H,03401H, 03403H, 03407H ;-------------------------------- initcontrolt --------------------------------- ;initcontrolt init4rules movlw fuzvals + .4 movwf FSR movlw .4 movwf loopcnt movlw 0

Page 47: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

98

initloop movwf 0 incf FSR decfsz loopcnt goto initloop return ;------------------------------------------------------------------------------- ;controlt FourRules movlw fuzvals movwf FSR clrf itptr ;-------------------------------- fuzzification -------------------------------- movlw .4 movwf itcnt movf lv0_DeltaTemp,W movwf crisp call flmss ;---------------------------------- inference ---------------------------------- LD_TBL16 rt0 call Min ;min aggregation ;------------------------------- defuzzification ------------------------------- clrf invalidflags clrf otoffset movlw fuzvals + .4 movwf FSR movlw .4 movwf otcnt call com rlf invalidflags btfsc invalidflags,0 movlw 0x001 movwf lv1_DutyCycle return include "flmss.asm" ;"FLMSS.ASM" include "Min.asm" ;"MIN.ASM" include "com.asm" ;"COM.ASM" include "mpy8_8.asm" ;"MPY8_8.ASM" include "div16_8.asm" ;"DIV16_8.ASM" ;data size knowledge base (bytes):

Page 48: CAPÍTULO IV RESULTADOS DE LA INVESTIGACIÓN CONTROL DE

99

;RAM: 11 0000BH ;ROM: 37 00025H ;TOTAL: 48 00030H ;