En este trabajo se muestran los primeros resultados obtenidos en el desarrollo del sistema FzController. Se expone el desarrollo software de un sistema que, no sólo permite el control en tiempo real de cualquier planta o proceso mediante un dispositivo de adquisición de datos, sino que constituye una herramienta de apoyo a la investigación, a la docencia y al desarrollo de controladores difusos. El sistema además presenta una herramienta para que el usuario pueda implementar sus propios operadores difusos en Java Script, VBScript, o Delphi Script.
El módulo de generación o síntesis del código generado para Autómatas Programables (PLC) (que cumplan con el Estándar de programación IEC-61131-3) represemta su característica más distintiva.
|
|
| Concepción general del sistema FzController |
| Existen dos métodos básicos para implementar sistemas difusos, el exacto y el aproximado, cada uno con sus ventajas y desventajas.
Método exacto : El método exacto se basa en hacer un estudio de la forma que adopta el conjunto difuso ante cada uno de los operadores de implicación. Lo que se hace es una representación paramétrica de los conjuntos difusos inferidos. Este método tiene como inconveniente que hay que hacer un cálculo previo de las expresiones paramétricas de los conjuntos difusos antes de implementar el controlador.
Método aproximado : Al utilizar este método no hay que hacer ningún cálculo previo ya que se discretiza el universo de definición de cada una de las variables del consecuente en un número de puntos predefinido. Este es un método más lento desde el punto de vista computacional y la precisión está dada por la cantidad de puntos de discretización. Hay que llegar a una solución de compromiso entre la velocidad computacional y la exactitud. Tiene la ventaja de poder trabajar con mayor cantidad de operadores de implicación ya que no necesita hacer un estudio previo de las expresiones parametrizadas de los conjuntos difusos. [1] Tanto los operadores de implicación, agregación y desfusificación actúan sobre cada uno de los elementos de los vectores obtenidos como resultado del proceso de discretización.
Para la implementación del sistema FzController se emplea el método aproximado por su versatilidad y la no dependencia de un estudio previo de la geometría de los conjuntos difusos. |
|
| Editor del sistema. |
Cuando se diseña un controlador difuso el primer paso es seleccionar la estructura del controlador que se va a implementar. En este caso el sistema FzController permite trabajar controladores de tipo Sugeno y de tipo Mamdani que son las estructuras clásicas que tiene un controlador basado en lógica difusa.
El editor del sistema permite seleccionar el tipo de controlador (Sugeno o Mamdani) y definir las variables lingüísticas del mismo. Una vez seleccionado el controlador se definen los operadores lógicos del mismo.
En el editor del sistema se agregan las variables lingüísticas del controlador y se describe el universo de definición de la misma así como la etiqueta lingüística. |

Editor del sistema |
Editor de propiedades del sistema |
| Tabla de operadores que tiene el sistema FzController Implementado por defecto |
Operadores conjunción
(Conectivo AND) |
t-normas:
Mínimo, Producto de Hamacher, Producto, Producto de Einstein, Diferencia Acotada, Producto Drástico |
Operadores de disyunción (Conectivo OR) |
s-normas:
Máximo, Suma de Hamacher, Suma Acotada, Suma de Einstein, Suma Algebraica, Suma Drástica |
Operadores de Implicación |
Diene, Dubois and Prade, Mizumoto, Goguen, Golden, Lukasiewicz
Además de las t-normas y s-normas anteriores. |
Operadores de agregación |
t-normas:
Mínimo, Producto de Hamacher, Producto, Producto de Einstein, Diferencia Acotada, Producto Drástico
s-normas:
Máximo, Suma de Hamacher, Suma Acotada, Suma de Einstein, Suma Algebraica, Suma Drástica |
Métodos de desdifusificación |
Centro de gravedad, Bisector, Media de máximos, Máximo menor, Máximo mayor, Suma de picos ponderada. |
Operadores implementados por defecto el sistema FzController. |
| |
Editor de variables |
|
Editor de variables del sistema FzController |
El editor de variables permite editar las funciones de pertenencia de cada una de las variables lingüísticas definidas en el sistema. Mediante el editor de propiedades del sistema se modifican, de manera muy sencilla, cada uno de los parámetros de las funciones de pertenencia o conjuntos difusos definidos en cada una de las variables
El sistema FzController tiene implementado por defecto funciones de pertenencia de tipo Trapezoidal ( en su caso particular funciones triangulares ), Curva S, Curva Z, Curva Pi, Campana de Gauss, tipo puntuales ( Para el caso de un controlador con una estructura de tipo Sugeno ). Se está trabajando en la implementación de funciones de pertenencia definidas por el usuario mediante expresiones matemáticas o mediante un vector. |
| Editor de reglas |
Editor de reglas del sistema FzController |
La base de reglas de un controlador difuso contiene la información o conexión lógica entre las variables lingüísticas de entrada y de salida del sistema. El sistema FzController trabaja con reglas de tipo MISO ( Multiple Inputs, Single Output ). Permite agregar de manera sencilla y sin cometer errores de sintaxis las reglas del controlador. |
| |
| Editor de operadores definidos por el usuario |
Una de las características distintivas del sistema FzController es la posibilidad que le brinda al usuario de definir sus propios operadores difusos. |
Editor de operadores definidos por el usuario del sistema FzController |
El usuario no sólo puede trabajar con los operadores más comúnmente empleados sino que puede implementar sus propios operadores, probar la respuesta del sistema y hacer las correcciones que entienda necesario.
El editor de operadores definidos por el usuario presenta una interfaz gráfica que le permite al usuario, empleando el lenguaje de programación “Delphi Script” , “Visual Basic Script” o “Java Script” implementar sus propios operadores así como comprobar las sintaxis del código y evaluar el operador. Se recomienda al usuario del sistema implementar sus propios operadores en el lenguaje “Delphi Script” o “Java Script” para obtener una mayor velocidad de cómputo.
Es importante destacar que el usuario del sistema debe tener unos conocimientos mínimos de programación para implementar sus propios operadores. |
| |
| Visualización gráfica de las Reglas y proceso de inferencia |
|
Visualización gráfica de las reglas y el proceso de inferencia |
Una vez que el controlador ha sido diseñado es importante estudiar el comportamiento del mismo. La visualización del grado de activación de cada una de las reglas para un determinado vector de entradas constituye sin dudas una herramienta muy importante en el análisis del comportamiento del controlador diseñado. Existen algunos sistemas que implementan esta herramienta como el MATLAB y otros que aún no la tienen implementada como en el XFuzzy.
Cuando el usuario del sistema implementa sus propios operadores, no sólo puede analizar el comportamiento del mismo mediante el editor de operadores, sino que puede analizar la repercusión en la respuesta del controlador analizando gráficamente el proceso de inferencia. Mediante un exhaustivo análisis del proceso de inferencia se puede corregir el operador diseñado para garantizar la respuesta deseada del sistema |
| |
| Representación gráfica de la respuesta del sistema. Superficie de control |
Visualización de la superficie de control |
El sistema Fzcontroller permite la visualización gráfica de la respuesta del sistema controlado mediante la superficie de control o mediante curva de relación de entradas/salidas.
Al igual que el análisis gráfico del proceso de inferencia el análisis de la superficie de control constituye una importante herramienta en el estudio del comportamiento del sistema. La superficie de control muestra todos los posibles valores de respuesta del sistema ante cualquier combinación de las entradas. Por ejemplo una superficie de control muy suave sin cambios bruscos del vector normal a la curva indicaría que la señal de control sería poco oscilatoria y ante un cambio pequeño en los valores de entrada, la salida del sistema tendría cambios pequeños. |
| |
| Módulo de control en tiempo real |
Es importante cuando se diseña un controlador para una planta o proceso comprobar los resultados obtenidos no sólo a nivel de simulación sino con una planta real. El módulo de control en tiempo real que se ha desarrollado tiene como propósito realizar control sobre la planta real a modo experimental, con el objetivo de mejorar el controlador diseñado antes de realizar sus síntesis para un PLC.
Para interactuar con la planta o proceso se emplea una tarjeta de adquisición de datos.
Aquí se vuelve a poner de manifiesto la característica abierta del sistema ya que permite trabajar con cualquier dispositivo de adquisición de datos. El trabajo con la tarjeta de adquisición de datos se realiza mediante una librería de enlace dinámico (dll) que puede programar el propio usuario final del sistema. |
Módulo de control en tiempo real
|
En el módulo de control en tiempo real se realiza también el acondicionamiento de las señales que consiste en realizar el proceso de filtrado, ajuste de escala, u obtener nuevas señales como resultado de una transformación u operación matemática de las señales leídas directamente del proceso.
El sistema FzController permite aplicar algoritmos de filtraje, ajuste de escala, función de derivación, función de error y función de integración a las señales leídas del proceso físico o enviadas al proceso mediante el dispositivo de adquisición de datos. |
| |
| Generación automática para código Autómatas programables Industriales y lenguajes de alto nivel |
| |
En la actualidad la mayoría de las aplicaciones industriales, que se han desarrollando, empleando lógica difusa o sistemas difusos se han implementado empleando autómatas programables (PLC) [7,8] con módulos de procesamiento difuso o diseños hardware a la medida. Con este módulo se pretende, empleando un autómata programable industrial, poder implementar tantos controladores difusos como se quiera sin la necesidad de incorporar un módulo adicional de procesamiento difuso. Para ello el sistema es capaz de generar el código del controlador en texto estructurado y empleando funciones del estándar IEC 61131-3.
La norma IEC 61131-3 [9] tiene un gran impacto en el mundo del control industrial y éste no se restringe al mercado convencional de los PLC´s. El uso de IEC 61131-3 proporciona numerosos beneficios para usuarios/programadores. Los beneficios de la adopción de este estándar son varios, dependiendo de las áreas de aplicación: control de procesos, integrador de sistemas, educación, programación, mantenimiento, instalación, entre otros. IEC 61131-3 es el resultado del gran esfuerzo realizado por 7 multinacionales a los que se añaden muchos años de experiencia en el campo de la automatización industrial. El estándar constituye las especificaciones de la sintaxis y semántica de un lenguaje de programación (texto estructurado) , incluyendo el modelo de software y la estructura del lenguaje. El lenguaje Texto estructurado (ST) es un lenguaje de alto nivel con orígenes en el Ada, Pascal y ´C´; puede ser utilizado para codificar expresiones complejas e instrucciones anidadas; este lenguaje dispone de estructuras para bucles (REPEAT-UNTIL; WHILE-DO), ejecución condicional (IF-THEN-ELSE; CASE), funciones (SQRT, SIN, etc.).
El código generado hace uso de una biblioteca de funciones, en la que se implementan todos los operadores y funciones de pertenencia con los que trabaja el sistema. Esta biblioteca de funciones es de libre distribución y aunque emplea el estándar IEC 61131-3 habría que compilarla para cada entorno de programación.
|
| |
Es importante tener en cuenta que para la implementación de sistemas de control difuso empleando autómatas programables hasta ahora había que incorporar un módulo de procesamiento difuso. Estos módulos normalmente suelen ser costosos y se encuentran limitados en cuanto al número de funciones de pertenencias y operadores entre otros. Los módulos de procesamiento difusos, que se han venido comercializando hasta el momento, realizan un procesamiento muy rápido y no consumen tiempo del ciclo de SCAN de las CPU porque son unidades de procesamiento independientes. El código implementado con el FzController sí consume tiempo de ciclo de SCAN debido a que es una implementación software lo cual debe ser tenido en cuenta por el programador del sistema. |
|
La introducción de este módulo en el sistema, que representa su característica distintiva fundamental con respecto a los sistemas conocidos, brinda las siguientes ventajas en la implementación de sistemas de control aplicando lógica difusa en autómatas programables:
- Cantidad no limitada de operadores y conjuntos difusos que se pueden emplear.
- Versatilidad del código generado.
- Posibilidad de implementar tantos controladores como quiera siempre que las limitaciones de la CPU y el ciclo de SCAN lo permitan.
- Menor coste económico.
- Posibilidad de implementar sistemas de control difusos en plantas que estén ya operativas sin necesidad de realizar nuevas inversiones.
- Menor tiempo de desarrollo de las aplicaciones finales.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |