UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA DEPARTAMENTO DE ELECTRÓNICA Alternativas de Solución de Proyecto de Titulación “Simulación y Diagrama 3D de Control y Supervisión de un Sistema Diesel-Generador-Motor-Hélice” Presentado por: ROL USM: Profesor guía: Fecha: Michael Silva Muñoz 2621003-8 Sr. Alejandro Suárez Sotomayor 23/05/2011 Proyecto de Titulación INTRODUCCIÓN En el presente documento se darán a conocer las alternativas de solución consideradas para llevar a cabo el Proyecto “Simulación y Diagrama 3D de Control y Supervisión de un Sistema Diesel-Generador-Motor-Hélice”, concentrándose en cómo se logrará supervisar la simulación del sistema mediante una interfaz hombre máquina (HMI). Dicha simulación se considerará entonces, como disponible en una aplicación Matlab, radicando el problema en cómo ingresar/exportar datos a este esquema desde/hacia otra aplicación que implemente la HMI, como se muestra en el diagrama de la Figura 1. Sistema en Matlab HMI PC Usuario Figura 1. Diagrama de Flujo de Datos Matlab – HMI - Usuario ALTERNATIVAS DE SOLUCIÓN Se revisarán tres aplicaciones que permiten confeccionar una HMI, y que tienen la propiedad de poder intercambiar datos con Matlab: LabView mediante Simulation Interface Toolkit, Fix Dmacs mediante conexión DDE y LabView mediante conexión DDE. Como no existe una fuente de información que compare explícitamente las alternativas, se desarrollará en la exposición de cada una de ellas, un resumen de las características principales de la aplicación, el procedimiento base detallado que se necesitaría para poder realizar la conexión entre Matlab y la HMI (Con el fin de poder analizar con mayor autoridad cada alternativa), y las conclusiones respecto de las ventajas y desventajas que ofrece cada una de las opciones. 1 Proyecto de Titulación ALTERNATIVA N°1: LABVIEW MEDIANTE SIMULATION INTERFACE TOOLKIT LabView es una herramienta diseñada especialmente para monitorizar, controlar, automatizar y realizar cálculos complejos de señales analógicas y digitales capturadas a través de tarjetas de adquisición de datos, puertos serie y GPIBs (Buses de Intercambio de Propósito General). Es un lenguaje de programación de propósito general, como es el Lenguaje C o Basic, pero con la característica que es totalmente gráfico, facilitando de esta manera el entendimiento y manejo de dicho lenguaje para el diseñador y programador de aplicaciones tipo SCADA (Supervisory Control And Data Adquisition). Incluye librerías para la adquisición, análisis, presentación y almacenamiento de datos, GPIB y puertos serie, además de otras prestaciones, como la conectividad con otros programas, por ejemplo de cálculo, y en especial Matlab, que es la aplicación que se le daría en este proyecto. Está basado en la programación modular, lo que permite crear tareas muy complicadas a partir de módulos o sub-módulos mucho más sencillos. Además estos módulos pueden ser usados en otras tareas, con lo cual permite una programación más rápida y provechosa [1]. Conexión Simulink a LabView mediante Simulation Interface Toolkit [2] La herramienta Simulation Interface Toolkit (SIT) de LabView, permite construir una interfaz de usuario para un modelo realizado en Simulink. Esto lo lleva a cabo al generar automáticamente un código LabView, lo cual se logra configurando primero el modelo Simulink para realizar la comunicación, y luego creando en LabView un host VI (Instrumento Virtual) que automáticamente llama, corre e interactúa con dicho modelo. Para configurar el modelo en Simulink se deben seguir los siguientes pasos: 1. Guardar los archivos Simulink (.mdl) y LabView (.VI). (Ej. sinewave.mdl y Sine Wave.VI). 2. Abrir Matlab y verificar que la ventana de comandos muestra el siguiente mensaje: STARTING THE SIT SERVER ON PORT 6011 SIT SERVER STARTED 2 Proyecto de Titulación Simulation Interface Toolkit automáticamente instalará el SIT Server, por lo que si este mensaje no se ve, la Toolkit no ha sido correctamente instalada. 3. Abrir Simulink desde la ventana de comandos de Matlab. 4. Seleccionar File >> Open y abrir el archivo .mdl (Siguiendo el ejemplo, abrir el archivo sinewave.mdl). El modelo de la simulación debería parecerse al siguiente diagrama: Figura 2. Ejemplo de diagrama Simulink para simulación 5. En la figura 2, se ha incorporado un bloque llamado SignalProbe. Este bloque debe ser puesto en la capa superior del diagrama de simulación, para que pueda ser encontrado por la librería NI SIT Blocks de LabView. 6. Configurar los parámetros de simulación seleccionando Simulation >> Simulation Parameters. En la ayuda LabView Simulation Interface Toolkit Help puede encontrarse la forma de cambiar estos parámetros desde la HMI. 7. Guardar el modelo Simulink. Al completar los pasos de configuración del modelo Simulink, se está en condiciones de crear la interface en LabView, manteniendo toda la potencia operacional que otorga Matlab para la simulación. Para ello se debe seguir el siguiente procedimiento: 3 Proyecto de Titulación 1. Abrir LabView y crear un nuevo VI (Instrumento Virtual). 2. Poner en el Panel Frontal (HMI de LabView) los controles necesarios para la simulación (En el ejemplo, podría ser dos perillas para establecer la amplitud y frecuencia de una onda sinusoidal de la simulación). 3. Poner los Waveform Chart (Gráficos en LabView) para observar las señales que se quieren analizar en la simulación. Para el caso de la onda sinusoidal, el eje Y podría representar la amplitud de la onda, y X tiempo, con lo que se tendría un Panel Frontal como el de la Figura 3: Figura 3. Ejemplo de HMI en LabView para la simulación de una onda sinusoidal 4. Se pueden crear asignaciones entre el VI y el modelo Simulink,. Para ello, se debe seleccionar desde el VI, Tools >>SIT Connection Manager. 5. En la categoría Model and Host, seleccionar Simulation Environment bajo Host Execution. El Host Execution es la máquina en la cual el servidor SIT está corriendo. Para seleccionar Real Time Target o Driver VI en el Local Host, primero se debe convertir el modelo Simulink a DLL, antes de crear las asignaciones. 4 Proyecto de Titulación 6. En Current Model, seleccionar Browse y luego el archivo .mdl en el cual está la simulación. (Ej. sinewave.mdl). 7. En Project Directory, seleccionar Browse u luego la carpeta en la cual se desea contener el proyecto (VI). Idealmente, esta debería ser la misma carpeta en la cual el modelo está localizado. 8. En Category List, seleccionar Mappings para mostrar la hoja de asignaciones. La tabla de asignaciones actuales muestra los controles e indicadores que se han creado antes en el Panel Frontal. Esta hoja se utilizará para mapear los ítems del Panel Frontal al modelo Simulink, como se observa en la Figura 4. Figura 4. Tabla de Asignaciones de ítems de Panel Frontal a modelo Simulink 9. Seleccionar el Control que se desea mapear, desde la tabla Current Mappings, y hacer click en el botón Change Mappings. Esto abrirá el cuadro de diálogo Specify Parameters, donde se podrá configurar dicho control (Ej: Abrir el cuadro de diálogo del control de Frecuencia para la Señal sinusoidal). 10. En el cuadro de diálogo del control, seleccionar el Control a configurar seleccionando archivo.mdl >> archivo.VI, y presionar OK (Ej. sinewave.mdl >> Sine Wave >>Frecuency). 5 Proyecto de Titulación 11. Repetir los pasos 9 y 10 para mapear todos los controles e indicadores que se desea comunicar entre Simulink y LabView. 12. Presionar el botón OK para cerrar el cuadro de diálogo SIT Connection Manager y generar el código de diagrama de bloques para el VI. Los controles que permiten manejar la simulación (Model Controls) aparecen automáticamente en el panel frontal como se observa en la Figura 5. Figura 5. Panel Frontal de LabView que incorpora controles para simulación en Simulink 13. Al observar el diagrama de bloques, se observa que el SIT generó un código LabView. En este código no se debe cambiar ningún elemento que tenga etiqueta verde. 6 Proyecto de Titulación Al completar la configuración de la HMI en LabView, la simulación se encuentra lista para ser comandada desde el Panel Frontal. De acuerdo al ejemplo que se ha desarrollado, los controles de Frecuencia y Amplitud pueden ser usados para cambiar la señal sinusoidal de salida. El procedimiento aquí descrito no requiere MathWorks Real Time Workshop (RTW). Este VI usa Simulink para correr la simulación. También podría utilizarse SIT junto con RTW para construir el modelo en una aplicación dll, donde la simulación corre por si sola. En este caso, se necesitaría Simulink y RTW para construir el modelo en un archivo dll, y configurar la interfaz de usuario. Para aplicaciones prototipo, se puede correr el modelo dll in LabView Real Time para obtener entradas y salidas en tiempo real. Ventajas y Desventajas de la alternativa De acuerdo a lo antes expuesto, la alternativa de diseñar la HMI mediante SIT de LabView presenta las siguientes características: - Como LabView y Matlab pueden funcionar en ambiente Windows, el proyecto podría realizarse en ambiente Windows, el cual es muy amigable al usuario. - La configuración de la HMI es simple. No se necesita ser experto en programación, sino que sólo seguir el procedimiento antes expuesto. - Existe bastante información en la WEB respecto de cómo se utiliza SIT para comunicar LabView con Matlab. - Esta alternativa está sujeta a la disponibilidad que se tenga de LabView y en especial de su aplicación Simulation Interface Toolkit, puesto que ya se dispone de Simulink de Matlab. 7 Proyecto de Titulación ALTERNATIVA N°2: FIX DMACS MEDIANTE CONEXIÓN DDE Proficy HMI/SCADA - Fix es una poderosa solución HMI/SCADA diseñada por Intellution, basada en una arquitectura Cliente/Servidor, que provee visualización de los procesos, adquisición de datos y control y supervisión de procesos de manufactura y producción. Fix ofrece un motor SCADA robusto, con varias opciones de conectividad, arquitectura abierta, altamente escalable y con modelo de red distribuida. Es usado en una amplia gama de aplicaciones en diversas industrias, y puede ser utilizado para aplicaciones simples como una típica HMI que captura y muestra datos, hasta complejas aplicaciones SCADA como el manejo de lotes de producción, alarmas y control en tiempo real [1]. Conexión DDE entre Matlab y FIX DMACS [3] La conexión entre Matlab y Fix DMACS aquí expuesta se realiza mediante conexión DDE. La conexión DDE (Dynamic Data Exchange) es un método de comunicación que usa memoria compartida para intercambiar datos entre aplicaciones en ambiente Windows, que permite el intercambio de datos en tiempo real. Los programas que tienen la posibilidad de trabajar con esta conexión son muy versátiles al momento de necesitar algún componente de otro software, como lo son Fix y Matlab en el caso de este proyecto, ya que se pueden utilizar la potencia matemática de Matlab en conjunto con la potencia de interfaz con el usuario de FIX. La idea es poder manejar la simulación en Matlab desde una HMI FIX, de modo que Fix envía comandos a Matlab vía DDE, este los procesa y los envía de nuevo a Fix con DDE, para que este los despliegue en forma amigable al usuario. Este procedimiento se realiza en forma cíclica y continúa durante todo el proceso de simulación, o al menos hasta que se defina una interrupción deseada en el algoritmo. Los programas que soportan el DDE utilizan la sintaxis ATI, que se refiere a Application Topic Item. El ATI es un formato estándar de identificación de la información DDE y la descripción de la sintaxis es: =Application|Topic!Item. La “Application” es el nombre de la aplicación DDE donde se encuentran los datos, el cual en muchas aplicaciones corresponde al nombre del programa. “Topic” es el nombre del grupo de datos a leer, y generalmente corresponde al nombre del archivo. El “Item” representa la estructura de los datos a transferir, y su nombre depende de la aplicación. En el caso de Matlab el formato ATI podría ser: 8 Proyecto de Titulación =MATLAB|ENGINE!Z En el siguiente ejemplo se muestra la programación realizada para la comunicación DDE entre FIX y Matlab, con el objetivo de incorporar un Bloque de Control Difuso (Disponible en Matlab pero no en FIX) para el control de temperatura. La programación en FIX se realiza con el Lenguaje de Comandos, el cual es una herramienta para automatizar operaciones a través de una serie de instrucciones, como se muestra en la Figura 6: Figura 6. Programación en FIX para comunicación DDE con Matlab El código muestra la declaración de la variable #RETRIEVE como una cadena de caracteres y #RESULTADO como una variable numérica. La variable #RETRIEVE se utiliza debido a que FIX recibe los datos en forma de cadena de caracteres. La instrucción GETVAL carga en la variable #RETRIEVE el dato enviado por Matlab llamado Z. En STRTONUM se convierte la cadena de caracteres en un valor numérico. Finalmente con SETVAL se coloca el valor numérico en #RESULTADO en el punto de la base de datos que en el ejemplo está definido con FIX:DATO_RECIBIDO_DE_MATLAB.F_CV. Con el GOTO se vuelve a ejecutar de nuevo la petición de datos. La Figura 7 muestra la programación en Matlab para generar el enlace: 9 Proyecto de Titulación %Inicialización de Variables b=0; %Se cargan todas las variables del Controlador Difuso a=readfis(‘temperarura’); while~=100 %Inicializa el canal para la conversación con FIX chan=ddeinit(‘dmdde’,‘data’); %Solicita el dato a FIX data=ddereq(chan,‘fix.DATO_ENVIADO_A-MATLAB.f_cv’); b=data; %Retardo para cargar dato en memoria pause(.1) %Finaliza conversación rc=ddeterm(chan); %Evaluación del Control Difuso Z=exp(b); end Figura 7. Código Matlab para establecer comunicación DDE con FIX La programación en Matlab se realiza en este caso en un archivo de instrucciones con extensión *.m, el cual se encarga de establecer la comunicación DDE y ejecuta la función que implementa el controlador difuso (Se supone esta función ha sido previamente diseñada). El código consta de una parte de inicialización de variables, una para cargar las variables de controlador difuso con la instrucción “readfis”, y luego de un ciclo continuo que realiza la petición de los datos a FIX. El formato ATI para FIX es: La “Application” es ‘dmdde’, el “Topic” es ‘data’ y el “Item” es el nombre en la base de datos de FIX. Una vez realizadas las programaciones en Matlab y FIX, se está en condiciones de ejecutar la aplicación que implementa el controlador difuso, relacionando en tiempo real las potencialidades de cada software. En este caso, FIX utiliza las herramientas matemáticas en el desarrollo de un controlador difuso dado por Fuzzy Logic ToolBox, mientras que Matlab aprovecha la capacidad de adquisición y manejo de datos que ofrece un programa SCADA. 10 Proyecto de Titulación Ventajas y Desventajas de la alternativa De acuerdo a lo antes expuesto, la alternativa de diseñar la HMI mediante Fix Dmacs presenta las siguientes características: - Como Fix Dmacs y Matlab pueden funcionar en ambiente Windows, el proyecto podría realizarse en este ambiente que es muy amigable al usuario. - Los códigos que permiten comunicar la HMI con Matlab requieren de conocimientos de de ambos lenguajes de programación (Fix y Matlab), lo que podría ralentizar su implementación. - La información que existe en la WEB respecto de cómo realizar una conexión DDE entre Matlab y Fix es reducida o difícil de encontrar. - Esta alternativa está sujeta a la disponibilidad que se tenga de Fix Dmacs, puesto que ya se dispone de Matlab. 11 Proyecto de Titulación ALTERNATIVA N°3: LABVIEW MEDIANTE CONEXIÓN DDE Las características principales del ambiente LabView han sido descritas en la Alternativa N°: LabView mediante Simulation Interface Toolkit. A continuación se verá cómo se realiza la conexión entre LabView y Matlab mediante conexión DDE Conexión Matlab a LabView mediante conexión DDE [4] En esta aplicación LabView será la interfaz de comunicación con el usuario HMI y capturará los datos desde Matlab de manera análoga a como lo haría para un sistema real mediante una tarjeta de adquisición, mientras que Matlab, simulará a la planta (Conexión Diesel-GeneradorMotor-Hélice), junto con su controlador, la instrumentación y la tarjeta de adquisición de datos. Como se vio en la alternativa anterior, Windows proporciona la herramienta DDE (Intercambio Dinámico de Datos), el cual se trata de un protocolo de comunicación entre aplicaciones que permite establecer un diálogo entre ellas, que puede constar de datos o incluso comandos para su ejecución. Dicho protocolo organiza a las aplicaciones en dos grupos: la aplicación cliente será la encargada de realizar una determinada petición (la ejecución de algún comando o el traspaso de algún tipo de datos), mientras que la otra aplicación actuará como servidor, recibiendo las peticiones del cliente y actuando en consecuencia. Las dos aplicaciones utilizadas, LabView y Matlab aceptan este protocolo. Una opción es escoger LabView para actuar como cliente y a Matlab como servidor, con la consideración de que la función de este último será aceptar las peticiones del usuario a través de la HMI, para proporcionar los que se obtengan de la simulación. Con esto, según [4], se evita todo tipo de programación especial en Matlab. En cuanto a la programación en LabView, se muestra como ejemplo (Ver figura 8) el código empleado para requerir a Matlab la estimación de un sistema a partir de unos datos previamente grabados en un fichero de disco con formato ASCII. 12 Proyecto de Titulación Figura 8. Diagrama LabView para requerir servicios de Matlab En primer lugar es necesario abrir un canal de comunicaciones para advertir a Windows que se va a emplear DDE. Para la apertura se indica a Windows el nombre y tópico del servicio que se va a solicitar (Éstos dependen del programa servidor y se obtienen de los manuales del software. En este caso son Matlab y Engine). A cambio, Windows proporciona un handle o número de canal (De forma que varias aplicaciones puedan usar distintos servicios a la vez) que deberá ser empleado en todas las comunicaciones posteriores. Una vez abierto el canal ya se pueden enviar comandos para ser ejecutados (función EXEC), o peticiones de transferencia de datos (función REQST). Ambas funciones aceptan como entrada un literal que contendrá el comando a ser ejecutado (Tal como lo escribiría un usuario en la ventana de Matlab) o bien, en el caso de una petición de transferencia de datos, el nombre del dato que se desea recibir. Un caso especial es el dato matriz EnsgStringResult, de tipo string, que contiene la salida por pantalla que ha producido el último comando ejecutado vía DDE. Finalmente, es necesario cerrar el canal para liberar memoria y no dejar saturado el sistema. Ventajas y Desventajas de la alternativa De acuerdo a lo antes expuesto, la alternativa de diseñar la HMI mediante LabView con conexión DDE a Matlab presenta las siguientes características: 13 Proyecto de Titulación - Como LabView y Matlab pueden funcionar en ambiente Windows, el proyecto podría realizarse en este ambiente que es muy amigable al usuario. - La configuración de la comunicación se realiza mediante programación gráfica en LabView, pero además se requiere conocer los comandos para iniciar la conexión DDE, lo que podría ralentizar si implementación. - Existe información suficiente en la WEB respecto de cómo utilizar las módulos DDE de LabView y de Matlab por separado, pero reducida en cuanto a la conexión específica entre ambos software. - Esta alternativa está sujeta a la disponibilidad que se tenga de LabView, puesto que ya se dispone de Matlab. CONCLUSIONES Se han presentado tres alternativas de solución que permiten establecer una comunicación entre un sistema modelado en Matlab y una aplicación que implemente una HMI, revisando sus características principales, sus procedimientos básicos para establecer la conexión, y en base a ellos determinar las ventajas y desventajas de cada opción. Con la información presentada en este documento, el paso próximo en el avance de este proyecto, consiste en evaluar cual alternativa es la que conviene desarrollar, determinando que cualidades o defectos son más o menos relevantes al momento de tomar la decisión, y que calificación logra cada alternativa en cada uno de dichos tópicos. 14 Proyecto de Titulación REFERENCIAS [1] Henry Mendiburu Díaz, “Sistemas Scada”, enlace http://www.galeon.com/hamd/pdf/scada.pdf [2] Página Web de National Instruments Developer Zone, enlace http://zone.ni.com/devzone/cda/tut/p/id/3057 [3] Panayotis S. Tremante M., Mercedes Torres R., José Alonso S., “Conexión DDE entre Matlab y Fix Dmacs (Software de supervisión, control y adquisición de datos – SCADA) para un controlador difuso”, Departamento de Electrónica y Control, Escuela de Ingeniería Eléctrica, Universidad Central de Venezuela. [4] Antonio Manuel Lázaro, “Contribución a la Caracterización Automática de Funciones de Transferencia en Presencia de Ruido. Conversión Continua-Continua”, Departament d'Enginyeria Electrónica, Universitat Politécnica de Catalunya 15