Desarrollo de laboratorios virtuales con aplicación a la enseñanza del control usando Modelica Carla Martı́n-Villalba, Alfonso Urquı́a y Sebastián Dormido Departamento de Informática y Automática, UNED Juan del Rosal 16, 28040 Madrid, España {carla, aurquia, sdormido}@dia.uned.es Resumen Se propone una metodologı́a para el desarrollo de laboratorios virtuales, que facilita su programación, reutilización y mantenimiento. Se fundamenta en posibilitar que el desarrollador pueda describir completamente el laboratorio virtual empleando el lenguaje de modelado Modelica. Con este fin: (1) se ha propuesto un procedimiento sistemático para adaptar cualquier modelo escrito en Modelica para su uso como modelo interactivo de un laboratorio virtual; y (2) se ha programado una librerı́a en Modelica, denominada VirtualLabBuilder, que permite describir la vista del laboratorio virtual de manera muy versátil y sencilla, y enlazar las variables del modelo con los atributos gráficos y controles de la vista. A partir de la descripción en Modelica del laboratorio virtual, su código ejecutable es generado de manera automática por el entorno de simulación Dymola. Una vez generado dicho código, el laboratorio puede ser ejecutado sin necesidad de disponer del entorno Dymola. En este artı́culo se presenta este nuevo enfoque para el desarrollo de laboratorios virtuales y se ilustra mediante un caso de estudio: el laboratorio virtual de un evaporador industrial. 1. Introducción Un laboratorio virtual es un entorno distribuido de herramientas de simulación y animación, cuyo propósito es realizar la simulación interactiva de un modelo matemático. Los laboratorios virtuales proporcionan un método flexi- ble y amigable para definir los experimentos que se llevan a cabo sobre el modelo, siendo por ello herramientas útiles para la enseñanza. Tı́picamente, la definición de un laboratorio virtual incluye las tres partes siguientes: la introducción, el modelo y la vista. La introducción es la documentación (frecuentemente un conjunto de páginas HTML) donde se exponen los conceptos y fenómenos ilustrados por el laboratorio virtual, se explica cómo experimentar con el laboratorio, y se proponen actividades y ejercicios. La vista es la interfaz entre el usuario y el modelo. Su objetivo es proporcionar una representación visual del comportamiento dinámico del modelo y facilitar las acciones interactivas del usuario sobre aquél. Las propiedades gráficas de los elementos de la vista se enlazan a las variables del modelo, produciendo un flujo bidireccional de información entre la vista y el modelo. Modelica [1] es una lenguaje de modelado orientado a objetos, disponible gratuitamente, que facilita el paradigma de modelado fı́sico. Los modelos se describen matemáticamente por ecuaciones algebraico diferenciales (DAE) y discretas. Modelica facilita una descripción declarativa (no causal) del modelo. Por tanto, el uso de Modelica reduce considerablemente el esfuerzo de modelado y permite una mejor reutilización de los modelos. Modelica está orientado al modelado multidominio. Actualmente existen gran número de librerı́as de componentes gratuitos y comerciales en diferentes dominios [1], incluyendo los dominios eléctrico, mecánico, termo-fluido y fı́sico-quı́mico. Modelica es un lenguaje adecuado para describir el tipo de modelos multidominio empleados en el ámbito del control automático. Sin embargo, ni el lenguaje Modelica ni los entornos de simulación que soportan Modelica (Dymola [2], OpenModelica [3], etc.) posibilitan la simulación interactiva. Por ello, extender las capacidades de Modelica para facilitar la simulación interactiva (es decir, la implementación de laboratorios virtuales) es un campo de investigación abierto. El objetivo del trabajo presentado en este artı́culo es posibilitar la descripción de laboratorios virtuales empleando el lenguaje Modelica. Para conseguir este objetivo, se han completado las dos tareas siguientes: 1. Se ha propuesto una metodologı́a sistemática para transformar cualquier modelo o librerı́a de modelos en Modelica a una formulación adecuada para la simulación interactiva, posibilitando de esta manera que sean usados como modelos de laboratorios virtuales. Esta metodologı́a es susceptible de ser automatizada, si bien por el momento no se ha desarrollado ninguna herramienta software a tal fin. 2. Se ha diseñado y programado una librerı́a en Modelica, denominada VirtualLabBuilder, que contiene modelos de elementos gráficos interactivos (contenedores, formas geométricas animadas y controles interactivos). Estos modelos permiten al usuario componer la vista y enlazar las propiedades visuales de la vista con las variables del modelo. La interfaz gráfica interactiva se genera automáticamente durante el proceso de inicialización del modelo. Los componentes de la librerı́a contienen el código necesario para realizar la comunicación entre la vista y el modelo. 2. Desarrollo de laboratorios virtuales en lenguaje Modelica A continuación, se describe brevemente cada uno de los pasos a seguir para el desarrollo de laboratorios virtuales siguiendo la metodologı́a propuesta. 2.1. Modelo del laboratorio virtual El modelo en Modelica tiene que ser adaptado para la simulación interactiva siguiendo la metodologı́a descrita en [4]. Las variables interactivas pueden escogerse entre las variables de estado, los parámetros y las variables de entrada al modelo. Esencialmente, esta metodologı́a impone que aquellos parámetros y variables de entrada del modelo que quieran hacerse interactivas deben ser redefinidas como variables de estado constantes (es decir, con derivada nula). Asimismo, debe añadirse al modelo el código necesario (cláusulas when) para modificar en tiempo de ejecución el valor de las variables interactivas en respuesta a las acciones del usuario sobre la vista del laboratorio. 2.2. Vista del laboratorio virtual La descripción en Modelica de la vista del laboratorio virtual se realiza extendiendo y conectando los componentes gráficos necesarios de la librerı́a VirtualLabBuilder (véase la Figura 1). La clase Modelica que describe la vista debe ser una subclase de la clase PartialView (véase la Figura 1a). La clase PartialView contiene un componente predefinido: el elemento raı́z para la descripción de la vista. Las clases que describen los componentes gráficos se encuentra dentro de los paquetes InteractiveControls, Drawables y Containers de la librerı́a VirtualLabBuilder (véanse las Figuras 1b, 1c y 1d respectivamente) [4]. Los componentes gráficos deben conectarse por el programador del laboratorio virtual formando una estructura. Las conexiones entre los componentes gráficos determinan la topologı́a de la vista del laboratorio virtual. 2.3. Composición del laboratorio La descripción en Modelica del laboratorio virtual tiene que incluir una instancia de la clase VirtualLab, que se encuentra en la librerı́a VirtualLabBuilder (véase la Figura 1a). El usuario debe proporcionar el nombre de las clases del b) a) c) d) Figura 1: Librerı́a VirtualLabBuilder: a) Estructura general; y clases dentro de los paquetes siguientes: b) InteractiveControls; c) Drawables; y d) Containers. modelo y de la vista. Estas dos clases se han programado en los pasos 2.1 y 2.2 respectivamente. Además, el diseñador del laboratorio debe especificar, escribiendo las ecuaciones necesarias, cómo se conectan las variables de las clases del modelo y de la vista. 2.4. Traducción y ejecución del laboratorio virtual El desarrollador del laboratorio virtual necesita traducir usando Dymola [2] una instancia de la clase Modelica definida en el paso 2.3 a un fichero ejecutable (dymosim.exe). El laboratorio virtual se lanza ejecutando este fichero. 2.5. Generación automática del código y ejecución Al inicio de la ejecución de la simulación, se realizan algunos cálculos para resolver el modelo en el instante inicial. Se evalúan ası́ las secciones iniciales (initial sections) del modelo Modelica que describe el laboratorio. En particular, se ejecutan las secciones iniciales de los objetos gráficos interactivos que componen la clase de la vista y de PartialView. Esta secciones iniciales contienen llamadas a funciones Modelica, que encapsulan llamadas a funciones C externas. Estas funciones C son generadores de código Java. Como resultado, durante la inicialización del modelo, el código Java de la vista se genera automáticamente, se compila y empaqueta en un fichero jar. También se establece automáticamente el procedimiento de comunicación entre la vista y el modelo. Esta comunicación se basa en una arquitectura cliente-servidor: el programa C generado por Dymola [2] es el servidor y el programa Java (que se ha creado automáticamente durante la inicialización del modelo) es el cliente. Una vez se ejecuta el fichero jar, se muestra la vista del laboratorio virtual y se establece la comunicación cliente-servidor. Durante la ejecución de la simulación, hay un flujo bidireccional de información entre la vista y el modelo. Figura 2: Diagrama de la descripción en Modelica de la vista del laboratorio virtual del evaporador. 3. Evaporador Este laboratorio virtual pretente ilustrar el comportamiento dinámico de un evaporador industrial bajo dos estrategias de control diferentes: manual y PID descentralizado. 3.1. Modelo del laboratorio virtual El modelo matemático del evaporador industrial se ha extraı́do de [5]. La entrada de agua se encuentra en la parte baja del evaporador, y la salida de vapor en su parte superior. En el interior del evaporador se encuentra un calentador. Este modelo se ha compuesto usando componentes de JARA 2i [6], una versión de la librerı́a JARA [7] que ha sido adaptada para la simulación interactiva aplicando la metodologı́a propuesta en [4]. 3.2. Vista del laboratorio virtual La descripción Modelica de la vista del laboratorio virtual (véase la Figura 2) genera la interfaz gráfica interactiva mostrada en la Figura 3. La relación entre la descripción en Modelica y la correspondiente interfaz gráfica se explica brevemente a continuación. El modelo Modelica que describe la vista debe extender la clase PartialView, que contiene un elemento gráfico predefinido: root. Al componente root se han conectado tres elementos: mainFrame, dialog y dialog1. Los componentes mainFrame y dialog generan las dos ventanas mostradas en la Figura 3. El componente mainFrame alberga tres contenedores: drawingPanel, panelNorth y panelSouth. El elemento drawingPanel contiene un diagrama animado de la planta. Dicho diagrama se compone usando elementos ubicados en el paquete Drawables de la libre- Figura 3: Vista del laboratorio virtual del evaporador. Figura 4: Evolución temporal del algunas variables seleccionadas del laboratorio virtual del evaporador. rı́a VirtualLabBuilder (véase la Figura 1c). Los contenedores panelNorth y panelSouth albergan controles interactivos. Estos controles interactivos permiten al usuario seleccionar la estrategia de control (manual o automática), cambiar el flujo de entrada de la bomba y el flujo de calor del calefactor cuando se selecciona la estrategia de control manual, cambiar los valores de consigna del volumen de agua y flujo de vapor, modificar los valores de los parámetros y variables del evaporador. Los dos botones situados en la parte superior del elemento mainFrame (véase la Figura 3) permiten al usuario parar y reanudar la simulación y mostrar una ventana con la información sobre el laboratorio virtual. El contenedor dialog1 genera la interfaz gráfica mostrada en la Figura 4. Ese contenedor alberga componentes de la clase PlottingPanel que contiene elementos de la clase Trail. Estos elementos generan trazas que muestran la evolución temporal de algunas variables relevantes del sistema (véase la Figura 4). 3.3. Descripción del laboratorio virtual y ejecución Como se explicó en la Sección 2, el laboratorio en Modelica se traduce a código ejecutable usando Dymola. Cuando se ejecuta el laboratorio virtual, se muestra la vista del laboratorio virtual (véase la Figura 3). La respuesta dinámica del evaporador a un cambio escalón en la consigna del flujo de salida de vapor se muestra en la Figura 4. Este cambio ha sido realizado interactivamente por el usuario del laboratorio virtual en el instante 243 s. El evaporador está operando en modo automático. Los cuatro gráficos siguientes se muestran en la Figura 4: (1) valores del flujo de vapor y su consigna; (2) el flujo de calor generado por la calefacción; (3) el valor del volumen de agua contenido dentro del evaporador, y su valor de consigna; y (4) la tasa de flujo de lı́quido generada por la bomba. 4. Conclusión Se ha propuesto un enfoque novedoso para el desarrollo de laboratorios virtuales usando el lenguaje Modelica, que permite sacar partido de las capacidades de Modelica para el desarrollo y reutilización de modelos, y describir la vista del laboratorio de forma sencilla y versátil. Para ello, se ha propuesto una metodologı́a sistemática para la adecuación de cualquier modelo en Modelica a su empleo en un laboratorio virtual y se ha desarrollado la librerı́a VirtualLabBuilder. Este enfoque se ha aplicado con éxito al desarrollo del laboratorio virtual de un evaporador industrial. Agradecimientos Este trabajo ha sido realizado bajo la subvención del CICYT en el marco del Proyecto DPI2004-01804 y del IV PRICIT bajo el marco del Proyecto S-0505/DPI/0391. Referencias [1] Modelica Association http://www.modelica.org/ website: [2] Dynasim AB, Dymola. User’s Manual, Lund, Sweden, 2006. [3] OpenModelica Project website: http://www.ida.liu.se/ pelab/modelica/ OpenModelica.html [4] Martin, C., Urquia, A., and Dormido, S., An Approach to Virtual-lab Implementation using Modelica, In: Proc. 20th European Simulation and Modelling Conference, 2006, pp. 137–141. [5] Ramirez, W. Computational Methods for Process Simulation, Butterworths Publishers, Boston, 1989. [6] Martin C, Urquia A, Dormido S. JARA 2i - A Modelica Library for Interactive Simulation of Physical-Chemical Processes. In: Proc. European Simulation and Modelling Conference, 2004, pp. 128–132. [7] Urquia, A. and Dormido, S., 2003, Object-Oriented Design of Reusable Model Libraries of Hybrid Dynamic Systems. Mathematical and Computer Modelling of Dynamical Systems, 9(1), pp. 65–118.