Víctor M. Alfaro
Sistemas dinámicos heterogéneos
Modelado, simulación y optimización con Modelica
Dr. Víctor M. Alfaro Departamento de Automática Escuela de Ingeniería Eléctrica Universidad de Costa Rica San José, COSTA RICA
[email protected]
Web: http://pidplanet.wordpress.com/ Correo:
[email protected]
Sistemas dinámicos heterogéneos: Modelado, simulación y optimización con Modelica © 2014-2016 Víctor M. Alfaro Versión del 21 de julio de 2016
Esta obra está bajo una licencia Creative Commons Reconocimento-NoComercialSinObraDerivada 3.0 Costa Rica. http://creativecommons.org/licenses/by-nc-nd/3.0/cr/
Se reproducen partes de la documentación del lenguaje Modelica y del código de los componentes de su biblioteca estándar, bajo la licencia Modelica License Version 2 (19.nov.2008). https://www.modelica.org/licenses/ModelicaLicense2 .
ii
Prefacio El lenguaje Modelica, se ha constituido como el formalismo estándar para modelar y simular sistemas físicos heterogéneos. Esta aceptación se debe, principalmente, a que en su concepción y desarrollo, participan miembros tanto de la academia, como de la industria. Esta estrecha colaboración, a hecho que Modelica no sea solo un lenguaje adecuado para la docencia, investigación y experimentación académica con modelos de sistemas dinámicos, si no que también ha sido aceptado como un formalismo apropiado, para la solución de problemas dinámicos heterogéneos complejos en muchas industrias. En la actualidad, existen programas de acceso libre para computadoras digitales, como OpenModelica y JModelica.org, que han alcanzado ya un grado de desarrollo que los hace apropiados para el modelado, la simulación y la optimización, de los modelos Modelica, en una forma eficiente. Estos dos entornos son utilizados en este trabajo, para mostrar el uso del modelado con Modelica. Hay disponibles también programas comerciales de modelado y simulación con Modelica ya consolidados, y utilizados ampliamente en muchas industrias (aeronáutica, automotriz, de procesos, energía). Entre estos se encuentra Wolfram SystemModeler, el cual será empleado en este trabajo junto con su enlace a Mathematica. Varios de los entornos Modelica comerciales, también proveen versiones con capacidades reducidas gratuitas de sus productos. Uno que puede ser atractivo para los estudiantes es, SimulationX Student Edition. En la elaboración de este documento con pdfL ATEX y la clase memoir, y para el trabajo con los modelos Modelica en MS Windows (Vista, 7, 8.1 y 10), se hace uso combinado de laslistadas siguientes de software libre, y de algunas de sus versiones anteriores, en herramientas orden alfabético: iii
• Draw de LibreOffice 5.1.2, http://www.libreoffice.org/, • Dymola Demo Version 2016, http://www.3ds.com/products-services/ catia/products/dymola/trial-version/ , • JabRef 3.5, http://jabref.sourceforge.net/, • JModelica.org 1.17, http://www.jmodelica.org/, • Microsoft Visual C++ 2010 Express, http://www.visualstudio.com/en-u s/ products/visual-studio-express-vs.aspx , • MiKTEX 2.9, http://miktex.org/ • Notepad++ 6.9.2, http://notepad-plus-plus.org/, • OpenModelica 1.9.6, https://openmodelica.org/, • PySimulator 0.61, https://github.com/PySimulator/PySimulator/, • Python 2.7.3 (instalado por JModelica.org), https://www.python.org/, • Phyton(x,y) 2.7.6 (distribución Python instalada por PySimulator), https:// code.google.com/p/pythonxy/ , • SimulationX Student Edition 3.7, https://www.simulationx.com/, • Sumatra PDF 3.1.1, http://blog.kowalczyk.info/software/sumatrapdf/ free-pdf-reader-es.html , • Texstudio 2.11.0 , http://www.texstudio.org/, • TextMaths 0.42 (extensión para LibreOffice), http://roland65.free.fr/texmaths/install.html ,
• las bibliotecas y paquetes Python adicionales, instalados por JModelica.org, y • las bibliotecas y paquetes Python adicionales, instalados por PySimulator. Todos estos programas de acceso libre, así como sus correspondientes licencias de uso, están disponibles en las direcciones web indicadas. También se han empleado los programas: • Wolfram SystemModeler 4.1, http://www.wolfram.com/system-modeler/?source=nav ,
con el compilador Microsoft Visual C++ 2010 Express, y iv
• Wolfram Mathematica 10.2, http://www.wolfram.com/mathematica/?source=nav .
Se ha incorporado a este trabajo el uso de los programas de Wolfram Research, principalmente porque la Universidad de Costa Rica, dispone de licencias de campus de SystemModeler y Mathematica, para toda la comunidad universitaria (estudiantes, docentes e investigadores). Se espera que este documento permita “suavizar”, a los recién llegados al mundo la curva de aprendizaje de este formalismo para el modelado y la simulación de los sistemas dinámicos heterogéneos; y que a los ya inmersos en el, les proporcione ejemplos adicionales y material de comparación del uso de los ambientes de desarrollo empleados. Para esto, el material se ha organizado en cinco partes, de la siguiente manera:
de Modelica ,
• Parte I: Introducción - Sistemas dinámicos En el Capítulo 1 se presenta una reseña histórica del desarrollo de los lenguajes de simulación dinámica y en particular de Modelica; en el Capítulo 2 se presentan las relaciones constitutivas de los elementos básicos de algunos sistemas físicos. • Parte II: El lenguaje Modelica y su biblioteca estándar La forma en que los elementos físicos son representados por los componentes Modelica, se presenta en el Capítulo 3. Las características principales del lenguaje Modelica, su sintaxis, funciones y el formalismo utilizado, especialmente la herencia y el proceso de conexión entre componentes, se describen en el Capítulo 4; mientras que los componentes disponibles en las bibliotecas que conforman la “biblioteca estándar” Modelica, se presentan en el Capítulo 5. La forma en que el modelo Modelica es solucionado numéricamente, se presenta en el Capítulo6, mientras que los códigos para resolver los problemas de optimización, se describen en el Capítulo 7. • Parte III: Uso del software libre OpenModelica y JModelica.org En el Capítulo 8, se muestran los subsistemas que conforman OpenModelica y se introduce su uso para elaborar y simular los modelos Modelica. Mediante el uso de ejemplos de distintos dominios físicos, en el Capítulo 9 se ilustra el modelado con Modelica, tanto mediante ecuaciones, como utilizando diagramas de interconexión de componentes, con el OMEdit de OpenModelica. v
La creación de cuadernos electrónicos interactivos empleando Modelica y el OMNotebook, se describe en el Capítulo10. En el Capítulo 11, se introduce JModelica.org, particularmente su integración con Python para resolver problemas de optimización. La formulación de los problemas de optimización (control óptimo y ajuste de parámetros) y su solución con JModelica.org, se ilustra en el Capítulo 12. En el Capítulo 13 se muestra el uso de PySimulator, para simular modelos Modelica y para el despliegue gráfico de los resultados de las simulaciones realizadas, por ejemplo, con OpenModelica. La forma en que los modelos Modelica pueden ser intercambiados entre diferentes ambientes de simulación, utilizando la norma FMI, se describe en el Capítulo 14. • Parte IV: Uso de Wolfram SystemModeler y Mathematica La utilización de SystemModeler se introduce en el Capítulo 15, la cual se amplía en el Capítulo 16, al modelado y simulación de modelos Modelica de varias dominios físicos. En este se incluye la exportación de modelos Modelica usando la FMI. El enlace entre SystemModeler y Mathematica, se utiliza en el Capítulo 17 para sistematizar el análisis del comportamiento de los sistemas simulados. • Parte V: Versiones gratuitas de programas comerciales En el Capítulo 18 se hace una descripción breve del uso y las capacidades de la versión demostrativa de Dymola, mientras que en el Capítulo 19 se hace lo mismo, con la versión para estudiantes de SimulationX. Las partes I y II pretenden ser lo más generales posibles y que sus capítulos se lean en secuencia, mientras que las partes III y IV pueden considerarse que están “en paralelo”. Si se desea utilizar solo software libre, basta revisar los capítulos de la parte III. Si se tiene acceso al software de Wolfram Research y se desea hacer uso de solo este, entonces pueden revisarse los capítulos de la parte IV. La parte V sirve de complemento, para evaluar el funcionamiento y las capacidades, aunque limitadas, de las versiones gratuitas de varios entornos comerciales de programación y simulación con Modelica. Es importante indicar, que los ejemplos de uso de Mathematica que se presentan, se relacionan exclusivamente con la utilización de su enlace con SytemModeler, por lo que el uso de otras funciones de Mathematica, están fuera del alcance de este trabajo. vi
En lo posible, se tratará de ampliar y actualizar este documento, en una forma más o menos frecuente. Por lo tanto, se recomienda verificar cual es su versión más reciente, en la página web: http://pidplanet.wordpress.com/modelica/
Esta es la versión del 21 de julio de 2016. Incluye revisión general, ejemplos adicionales con OpenModelica. Versiones anteriores: 2016 (may.7, ene.16), 2015 (ago.8, abr.23, ene.26), 2014 (nov.1, oct.2, set.17)
vma.
vii
´Indice general I Introducción - Sistemas dinámicos
1
1 Introducción 1.1 Lenguajes de simulación . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.1 Evolución histórica . . . . . . . . . . . . . . . . . . . . . . 5 1.1.2 Desarrollo de Modelica . . . . . . . . . . . . . . . . . . . . 7 1.2 Modelica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3
1.3 Modelado Sistemas dinámicos 1.4 . . . . . . . . .. ..... . .. ..... . .. .. .. . . .. .. .. .. .. .. .. .. .. .. .. .. . 108 1.4.1 Desarrollo del modelo . . . . . . . . . . . . . . . . . . . . 10 1.4.2 Variables del modelo . . . . . . . . . . . . . . . . . . . . . 12 1.5 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 Elementos básicos de los sistemas físicos 15 2.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2 Sistemas eléctricos . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3 Sistemas hidráulicos . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.4 Sistemas mecánicos con elementos que se desplazan . . . . . . . . 21 2.5 Sistemas mecánicos con elementos que giran . . . . . . . . . . . . 23 2.6 Sistemas térmicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.7 Conversión de variables . . . . . . . . . . . . . . . . . . . . . . . . 26 2.8 Variables de los sistemas físicos . . . . . . . . . . . . . . . . . . . 29 2.9 Interconexión de los elementos . . . . . . . . . . . . . . . . . . . . 30
2.10 heterogéneos 2.11 Sistemas Bibliografía . . . . . . . ..... . .. .. . .. . .. ..... . .. .. .. .. .. .. . . .. .. . . .. .. . 3331 ix
II El lenguaje Modelica y su bibli oteca están dar
35
3 Componentes en Modelica 37 3.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.2 Variables de potencial y de flujo . . . . . . . . . . . . . . . . . . . 37 3.3 Definición de los conectores y puertos en Modelica . . . . . . . . . 39
3.4 Componentes. .Modelica .. 3.5 Bibliografía . . . . . .de . . los . . elementos . . . . . . . físicos . . . . . .. .. . .. . .. .. . . .45
43
4 El lenguaje Modelica 47 4.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2 Fundamentos de Modelica . . . . . . . . . . . . . . . . . . . . . . 49 4.2.1 Estructura de un modelo Modelica . . . . . . . . . . . . . . 50 4.2.2 Clases especializadas . . . . . . . . . . . . . . . . . . . . . 51 4.2.3 Convención para los nombres . . . . . . . . . . . . . . . . 52 4.2.4 Números enteros y de punto flotante . . . . . . . . . . . . . 53 4.2.5 Valores lógicos y cadenas de caracteres . . . . . . . . . . . 53 4.2.6 Operadores y funciones matemáticas . . . . . . . . . . . . . 53 4.2.7 Arreglos (vectores y matrices) . . . . . . . . . . . . . . . . 54 4.2.8 Operadores que generan un evento . . . . . . . . . . . . . . 57 4.2.9 Operadores noEvent y smooth . . . . . . . . . . . . . . . 58 4.2.10 Constantes, parámetros y variables . . . . . . . . . . . . . . 59
4.2.11 las variables. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 60 4.2.12 Inicialización Comentarios ydedescripciones 60 4.2.13 Ecuaciones del modelo . . . . . . . . . . . . . . . . . . . . 61 4.2.14 La ecuación terminate . . . . . . . . . . . . . . . . . . . 64 4.2.15 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.2.16 Declaraciones . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.2.17 Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.2.18 Conectores y conexiones . . . . . . . . . . . . . . . . . . . 68 4.2.19 Construcción de registros . . . . . . . . . . . . . . . . . . . 69 4.2.20 Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.2.21 Extensión o ampliación de los modelos . . . . . . . . . . . 72 4.2.22 Estructura jerárquica de los modelos . . . . . . . . . . . . . 72 4.3 Secuencia para la simulación de un modelo Modelica . . . . . . . . 76 4.4 Modelado no causal versus modelado causal con base en bloques . . 77 4.5 Modelado con base en componentes Modelica . . . . . . . . . . . . 81 4.5.1 Los componentes . . . . . . . . . . . . . . . . . . . . . . . 81 4.5.2 4.5.3
Definición un componente 83 La ecuacióndeconnect . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. . 84 x
4.6 Modelos Optimica . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.7 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5 Biblioteca de componentes Modelica 89 5.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 5.2 Biblioteca estándar Modelica . . . . . . . . . . . . . . . . . . . . . 90 5.2.1 Biblioteca Modelica.Blocks . . . . . . . . . . . . . . . . 92 5.2.2 Biblioteca Modelica.ComplexBlocks . . . . . . . . . . . 93 5.2.3 Biblioteca Modelica.Constants . . . . . . . . . . . . . . 93 5.2.4 Biblioteca Modelica.Electrical . . . . . . . . . . . . . 96 5.2.5 Biblioteca Modelica.Fluid . . . . . . . . . . . . . . . . . 98 5.2.6 Biblioteca Modelica.Magnetic . . . . . . . . . . . . . . 98 5.2.7 Biblioteca Modelica.Mechanics . . . . . . . . . . . . . . 99 5.2.8 Biblioteca Modelica.SIunits . . . . . . . . . . . . . . . 102 5.2.9 Biblioteca Modelica.Thermal . . . . . . . . . . . . . . . 103 5.2.10 Identificación de los conectores de los componentes Modelica 103 5.3 Otras bibliotecas incluidas en OpenModelica . . . . . . . . . . . . 104 5.4 Incorporación de bibliotecas externas en OpenModelica . . . . . . . 107 5.5 Bibliotecas de componentes adicionales para SytemModeler . . . . 109 5.6 Bibliografía . . . . . . . . . . . . . . . . . . . . . . ........ 110 6 Solución numérica del modelo 111 6.1 Introducción . . . . . . . . . . . . . . . . . . ............ 111 6.2 Cantidad de ecuaciones requeridas para la inicialización del modelo 112 6.3 Solución de un conjunto de DAE implícitas . . . . . . . . . . . . . 113 6.3.1 El DASSL (“Differential/Algebraic System Solver”) . . . . 113 6.3.2 Índice diferencial del modelo DAE . . . . . . . . . . . . . 115 6.3.3 Modelos con un índice diferencial alto . . . . . . . . . . . . 115 6.4 Simulación con Assimulo . . . . . . . . . . . . . . . . . . . . . . . 121 6.5 Bibliografía . . . . . . . . . . . . . . . . . . . . . . ........ 121 7 Optimización de sistemas dinámicos 7.1 Introducción . . . . . . . . . . . . . . . . . . ............ 7.1.1 Optimización dinámica . . . . . . . . . . . . . . . . . . . . 7.1.2 Optimización estática . . . . . . . . . . . . . . . . . . . .
123
123 123 . 124
7.2 Algoritmos de. optimización .. .. .. .. .. .. .. .. . . 126 . . 125 7.3 Bibliografía . . . . . . . . . . . .de . . JModelica.org ....... xi
III Uso del software libre OpenModelica y JModelica.org
127
8 Introducción a OpenModelica 129 8.1 Introducción . . . . . . . . . . . . . . . . . . ............ 129 8.2 OpenModelica Shell (OMS) . . . . . . . . . . . . . . . . . . . . . 130 8.2.1 Sesión de simulación interactiva en el OMS . . . . . . . . . 130
Instrucciones en el OMS . . . . . . . . .. .. .. . . .............. . 132 8.3 8.2.2 OpenModelica Connection Editor.(OMEdit) 135 8.3.1 Crear un modelo nuevo o abrir uno existente . . . . . . . . 138 8.3.2 Escritura del modelo . . . . . . . . . . . . . . . . . . . . . 142 8.3.3 Ejecución de la simulación . . . . . . . . . . . . . . . . . . 143 8.3.4 Vista de resultados . . . . . . . . . . . . . . . . . . . . . . 144 8.3.5 Cambiar los parámetros y volver a simular . . . . . . . . . 146 8.3.6 Creación de experimentos . . . . . . . . . . . . . . . . . . 148 8.3.7 Modelado gráfico . . . . . . . . . . . . . . . . . . . . . . . 149 8.3.8 Exportar e importar modelos Modelica . . . . . . . . . . . 160 8.4 OpenModelica Notebook Editor (OMNotebook) . . . . . . . . . . . 161 8.5 Optimización con OpenModelica . . . . . . . . . . . . . . . . . . . 163 8.6 Bibliografía . . . . . . . . . . . . . . . . . . . . . ......... 165 9 Modelado y simulación con OpenModelica 9.1 Introducción . . . . . . . . . . . . . . . . . . ............
169
169
9.2 Sistemas eléctricos . . . . .. .. . . .. .. .. .. .. .. .. .. . . .. . . . . .. .. .. .. . . .. 170 9.2.1 Circuito RLC. .serie 170 9.2.2 Circuito RLC paralelo . . . . . . . . . . . . . . . . . . . . 181 9.2.3 Efecto de la temperatura sobre la resistencia eléctrica . . . . 182 9.2.4 Rectificador de onda completa . . . . . . . . . . . . . . . . 185 9.3 Sistemas mecánicos con elementos que se desplazan . . . . . . . . 188 9.3.1 Sistema con masa, resorte y amortiguador . . . . . . . . . . 188 9.3.2 Sistema mecánico “libre” . . . . . . . . . . . . . . . . . . . 189 9.4 Sistemas mecánicos con elementos que giran . . . . . . . . . . . . 194 9.4.1 Sistema con volante, resorte y amortiguador giratorios . . . 194 9.4.2 Máquina giratoria desbalanceada . . . . . . . . . . . . . . . 196 9.4.3 Péndulo con amortiguamiento . . . . . . . . . . . . . . . . 198 9.5 Sistemas hidráulicos . . . . . . . . . . . . . . . . . . . . . . . . . 200 9.5.1 Sistema hidráulico con un tanque . . . . . . . . . . . . . . 200 9.5.2 Sistema hidráulico con dos tanques en serie . . . . . . . . . 203 9.5.3 Sistema hidráulico con dos tanques interconectados . . . . . 205 9.5.4 9.5.5
Sistema hidráulico conválvulas un recipiente esférico 208 Sistema con tanques, y tuberías . . . . . .. .. .. .. . .. . . . 212 xii
9.6
9.7
9.8
9.9 9.10
9.5.6 Medición del caudal por las tuberías . . . . . . . . . . . . . 218 9.5.7 Parámetros de los componentes hidráulicos . . . . . . . . . 219 9.5.8 Declaración del fluido en los componentes del sistema . . . 222 Sistemas térmicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 9.6.1 Sistema con dos cámaras térmicas . . . . . . . . . . . . . . 223 9.6.2 Horno eléctrico . . . . . . . . . . . . . . . . . . . . . . . . 225 Modelado y simulación de ecosistemas . . . . . . . . . . . . . . . . 228 9.7.1 Estimación del crecimiento demográfico de Costa Rica . . . 229 9.7.2 Evolución de una epidemia . . . . . . . . . . . . . . . . . . 229 9.7.3 Modelo Lotka-Volterra para presa y predador . . . . . . . . 233 Sistemas de control . . . . . . . . . . . . . . . . . . . . . . . . . . 236 9.8.1 Control de velocidad de un motor de corriente continua . . . 237 9.8.2 Sistemas de control en diagramas de bloques . . . . . . . . 240 9.8.3 Sistema de control digital . . . . . . . . . . . . . . . . . . 243 9.8.4 Control mediante realimentación lineal en el estado . . . . . 245 9.8.5 Control óptimo de tiempo mínimo . . . . . . . . . . . . . . 248 9.8.6 Sistema de control inicialmente en un punto de equilibrio . . 252 9.8.7 Autosintonía de controladores . . . . . . . . . . . . . . . . 255 9.8.8 Dinámica inversa . . . . . . . . . . . . . . . ........ 260 Sistemas heterogéneos . . . . . . . . . . . . . . . . . . . . . . . . 266 9.9.1 Con componentes eléctricos, mecánicos, térmicos, ... . . . . 266 Bibliografía . . . . . . . . . . . . . . . . . . . . . . ........ 268
10 Cuadernos interactivos con OMNotebook 271 10.1 Introducción . . . . . . . . . . . . . . . . . . ............ 271 10.2 Desarrollo de un cuaderno electrónico interactivo . . . . . . . . . . 272 10.3 Bibliografía . . . . . . . . . . . . . . . . . . . . . . ........ 277 11 Introducción a JModelica.org 279 11.1 Introducción . . . . . . . . . . . . . . . . . . ............ 279 11.2 Intérprete interactivo de Python PyLab . . . . . . . . . . . . . . . . 281 11.3 Compilación del modelo Modelica a FMU . . . . . . . . . . . . . . 282 11.4 Optimización con JModelica.org . . . . . . . . . . . . . . . . . . . 284 11.5 JModelica.org Plot GUI . . . . . . . . . . . . . . . . . . . . . . . . 287 11.6 Funciones no disponibles en JModelica 1.17 . . . . . . . . . . . . . 288 11.7 Bibliografía . . . . . . . . . . . . . . . . . . . . . . ........ 289 12 Compilación, simulación y optimización con JModelica.org
12.1 . . . . . . . . . .y. optimización ..... . . .. .. .. .. . .. .. .. .. . . . . . 293 12.2 Introducción Algoritmos de. .simulación . . 293 xiii
293
12.3 Proceso de compilación y carga del modelo . . . . . . . . . . . . . 294 12.3.1 Compilación del modelo . . . . . . . . . . . . . . . . . . . 294 12.3.2 Carga de los objetos FMU y JMU . . . . . . . . . . . . . . 296 12.3.3 Transferencia del modelo a un problema de optimización . . 296 12.4 Compilación de modelos a una FMU y su simulación . . . . . . . . 297 12.4.1 Modelo Modelica . . . . . . . . . . . . . . . . . . . . . . . 297 12.4.2 Compilación a FMU, simulación y resultados . . . . . . . . 298 12.4.3 Cambio de parámetros del modelo . . . . . . . . . . . . . . 299 12.4.4 Sistema de control de un motor de corriente continua . . . . 305 12.4.5 Sistema de control PID de procesos con tiempo muerto . . . 308 12.5 Problemas de optimización . . . . . . . . . . ............ 310 12.5.1 Compilación del Modelo Optimica a JMU y optimización . 310 12.5.2 Control óptimo de tiempo mínimo . . . . . . . . . . . . . . 311 12.5.3 Optimización de los parámetros de un controlador PI . . . . 313 12.6 Bibliografía . . . . . . . . . . . . . . . . . . . . . ......... 318 13 Visualización, simulación y análisis con PySimulator 319 13.1 Introducción . . . . . . . . . . . . . . . . . . ............ 319 13.2 Importación de un archivo de resultados . . . . . . . . . . . . . . . 320 13.3 Importación de modelos FMU . . . . . . . . . . . . . . . . . . . . 323 13.4 Bibliografía . . . . . . . . . . . . . . . . . . . . . ......... 326 14 Compartiendo modelos Modelica por medio de la FMI 329 14.1 Introducción . . . . . . . . . . . . . . . . . . ............ 329 14.2 Exportando e importando FMU . . . . . . . . . . . . . . . . . . . . 332 14.2.1 De OpenModelica a JModelica.org . . . . . . . . . . . . . 332 14.2.2 De JModelica.org a OpenModelica . . . . . . . . . . . . . 335 14.3 Verificación de las compilaciones a FMU . . . . . . . . . . . . . . 340 14.3.1 FMU generadas por OpenModelica . . . . . . . . . . . . . 340 14.3.2 FMU generadas por JModelica.org . . . . . . . . . . . . . . 343 14.4 Bibliografía . . . . . . . . . . . . . . . . . . . . . ......... 345
IV Uso de Wolfram SystemModeler y Mathematica 15 Introducción al Wolfram SystemModeler 15.1 Introducción . . . . . . . . . . . . . . . . . . ............ 15.2 SystemModeler Model Center . . . . . . . . . . . . . . . . .
347 349
349 . . . 352
15.2.1 . . 356 15.2.2 Elaborar Escritura un delmodelo modelonuevo . . . . .o. abrir . . uno . . . . existente . . . . . .. .. .. .. .358 xiv
15.3 SystemModeler Simulation Center . . . . . . . . . . . . . . . . . . 360 15.3.1 Ejecución de la simulación . . . . . . . . . . . . . . . . . . 361 15.3.2 Vista de los resultados . . . . . . . . . . . . . . . . . . . . 362 15.4 Modelado gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 15.5 Enlace con Mathematica . . . . . . . . . . . . . . . . . . . . . . . 376 15.6 Bibliografía . . . . . . . . . . . . . . . . . . . . . . ........ 377 16 Modelado y simulación con Modelica y SystemModeler 379 16.1 Introducción . . . . . . . . . . . . . . . . . . ............ 379 16.2 Sistemas eléctricos . . . . . . . . . . . . . . . . . . . . . . . . . . 380 16.2.1 Circuito RLC serie . . . . . . . . . . . . . . . . . . . . . . 380 16.2.2 Circuito RLC paralelo . . . . . . . . . . . . . . . . . . . . 391 16.2.3 Efecto de la temperatura sobre la resistencia eléctrica . . . . 394 16.2.4 Rectificador de onda completa . . . . . . . . . . . . . . . . 395 16.3 Sistemas mecánicos con elementos que se desplazan . . . . . . . . 398 16.3.1 Sistema con masa, resorte y amortiguador . . . . . . . . . . 398 16.3.2 Sistema mecánico “libre” . . . . . . . . . . . . . . . . . . . 401 16.4 Sistemas mecánicos con elementos que giran . . . . . . . . . . . . 404 16.4.1 Sistema con volante, resorte y amortiguador giratorios . . . 404 16.4.2 Máquina giratoria desbalanceada . . . . . . . . . . . . . . . 406 16.4.3 Péndulo con amortiguamiento . . . . . . . . . . . . . . . . 408 16.5 Sistemas hidráulicos . . . . . . . . . . . . . . . . . . . . . . . . . 410
16.5.1 con unentanque 16.5.2 Sistema Sistema hidráulico con dos tanques serie . .. ....... ... .. .. .. . .. .. .. . . . 410 412 16.5.3 Sistema con dos tanques interconectados . . . . . . . . . . 415 16.5.4 Sistema hidráulico con un recipiente esférico . . . . . . . . 417 16.6 Sistemas térmicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 16.6.1 Sistema con dos cámaras térmicas . . . . . . . . . . . . . . 421 16.6.2 Horno eléctrico . . . . . . . . . . . . . . . . . . . . . . . . 424 16.7 Modelado y simulación de ecosistemas . . . . . . . . . . . . . . . . 426 16.7.1 Estimación del crecimiento demográfico de Costa Rica . . . 427 16.7.2 Evolución de una epidemia . . . . . . . . . . . . . . . . . . 428 16.7.3 Modelo Lotka-Volterra presa y predador . . . . . . . . . . . 431 16.8 Sistemas de control . . . . . . . . . . . . . . . . . . . . . . . . . . 435 16.8.1 Control de velocidad de un motor de corriente continua . . . 435 16.8.2 Sistemas de control en diagramas de bloques . . . . . . . . 439 16.8.3 Sistema de control digital . . . . . . . . . . . . . . . . . . 443 16.8.4 Control mediante realimentación lineal en el estado . . . . . 445 16.8.5 de tiempo mínimo . . . . . de equilibrio . . . . . . .448 16.8.6 Control Sistema óptimo de control inicialmente en .un. . punto . 452 xv
16.9 Sistemas heterogéneos . . . . . . . . . . . . . . . . . . . . . . . . 455 16.9.1 Con componentes eléctricos, mecánicos, térmicos, ... . . . . 455 16.10Importación y exportación de modelos funcionales . . . . . . . . . 457 16.10.1 El “Systems Biology Markup Language” . . . . . . . . . . 458 16.10.2 Exportación de FMU . . . . . . . . . . . . . . . . . . . . . 459 16.10.3 Importación de FMU . . . . . . . . . . . . . . . . . . . . . 461 16.11Bibliografía . . . . . . . . . . . . . . . . . . . . .
.........
462
17 Wolfram SystemModeler Link y Mathematica 463 17.1 Introducción . . . . . . . . . . . . . . . . . . ............ 463 17.2 Análisis de los modelos Modelica con Mathematica . . . . . . . . . 466 17.3 Bibliografía . . . . . . . . . . . . . . . . . . . . . ......... 467
V Versiones gratuitas de programas comerciales
471
18 Dymola Demo Version 473 18.1 Introducción . . . . . . . . . . . . . . . . . . ............ 473 18.2 Capacidad de la versión demostrativa . . . . . . . . . . . . . . . . . 474 18.2.1 Circuitos eléctricos . . . . . . . . . . . . . . . . . . . . . . 474 18.2.2 Sistemas mecánicos . . . . . . . . . . . . . . . . . . . . . 478 18.2.3 Sistemas térmicos . . . . . . . . . . . . . . . . . . . . . . 478 18.2.4 Sistemas hidráulicos . . . . . . . . . . . . . . . . . . . . . 479 18.3 Determinación del número de ecuaciones permitidas . . . . . . . . 480 18.3.1 Sistemas de primer orden en serie . . . . . . . . . . . . . . 480 18.3.2 Circuito RC múltiple . . . . . . . . . . . . ......... 481 18.4 Bibliotecas Modelica en Dymola Demo . . . . . . . . . . . . . . . 482 18.5 Bibliografía . . . . . . . . . . . . . . . . . . . . . ......... 482 19 SimulationX Student Edition 485 19.1 Introduction . . . . . . . . . . . . . . . . . . ............ 485 19.2 Prueba de los modelos . . . . . . . . . . . . . . . . . . . . . . . . 488 19.2.1 Circuitos eléctricos . . . . . . . . . . . . . . . . . . . . . . 488 19.2.2 Sistemas mecánicos . . . . . . . . . . . . . . . . . . . . . 492 19.2.3 Sistemas térmicos . . . . . . . . . . . . . . . . . . . . . . 495 19.2.4 Sistemas hidráulicos . . . . . . . . . . . . . . . . . . . . . 496 19.2.5 Verificación de los límites del modelo . . . . . . . . . . . . 498 19.3 Otras capacidades . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 19.4 Bibliografía . . . . . . . . . . . . . . . . . . . . . ......... 501
xvi
Parte I
Introducción - Sistemas dinámicos
1
1 Introducci´on modélico, ca 1. adj. Que sirve o puede servir de modelo.
DRAE1
Seis son los componentes principales de este trabajo: 1. el modelado matemático de los sistema dinámicos heterogéneos (compuestos por elementos de múltiples dominios físicos), 2. su simulación digital, 3. la optimización de alguna de sus caracteModelica , y la conjugación de todos los puntos anteriores, rísticas, 4. el5. lenguaje utilizando: el software libre OpenModelica y JModelica.org, y 6. Wolfram SystemModeler y Mathematica. Un complemento es el estudio de las versiones gratuitas de Dymola (demo) y SimulationX (Student Edition). Para el modelado y la simulación de los modelos Modelica, empleando ya sean entornos de software libre o los programas de Wolfram, se hará uso en lo posible de los mismos sistemas. Esto permitirá analizar en forma comparativa, las similitudes y diferencias entre los entornos de simulación utilizados, así como validar los resultados obtenidos con los mismos. El estudio del comportamiento de los sistemas dinámicos, es parte esencial de las ciencias y de todas las ramas de la ingeniería. Esto involucra su modelado matemático y la simulación de este. Particularmente para los sistemas complejos, el modelado y su simulación, son las herramientas utilizadas con preferencia, para su análisis y diseño. El modelo matemático describe en forma aproximada mediante ecuaciones, al sistema dinámico. La simulación resuelve el modelo con la finalidad de predecir el 1 Diccionario
de la lengua española, http://www.rae.es/recursos/diccionarios/drae
3
4
1 Introducción
Figura 1.1: Sistemas dinámicos heterogéneos 2 , es el formalismo utilizado comportamiento del sistema real. El lenguaje Modelica® para combinar el desarrollo del modelo, con su simulación. En ocasiones, se piensa que en cada una de las áreas de especialización que conforman la ingeniería, solo se requiere estudiar los sistemas que aparentan tener una afinidad natural con cada una de ellas. Por ejemplo, que los estudiantes de ingeniería eléctrica solo requieren estudiar los sistemas eléctricos y electrónicos, que los de ingeniería mecánica, los sistemas mecánicos, neumáticos y similares, y así con las demás especialidades. Sin embargo, lo cierto es que los sistemas dinámicos reales, son una combinación de elementos pertenecientes a diferentes dominios físicos y por lo tanto, son sistemas dinámicos heterogéneos, tal como se ilustra en la figura 1.13 . Lo anterior, hace que sea necesario utilizar técnicas de modelado y simulación digital, que contemplen las características heterogéneas de los sistemas físicos. Por ejemplo, para el modelado de sistemas dinámicos lineales simples, se puede hacer uso del concepto de red generalizada (Alfaro, 1991), para aplicar una misma metodología de análisis a los diferentes elementos que constituyen el sistema, con base en el uso de sus transvariables y pervariables, las relaciones constitutivas de los elementos y las leyes de conservación. Por otra parte, la simulación de los sistemas dinámicos, dominada a mediados del siglo pasado por el uso de las computadoras analógicas es, desde hace tiempo, una de las aplicaciones más importantes de las computadoras digitales. Una forma inicial de modelar y simular los sistemas físicos, fue utilizando sistemas análogos, esto es, mecanismos que se comportaban de la misma forma que los sistemas a estudiar. Los simuladores dinámicos analógicos primero fueron mecáni2 Modelica
Association, http://www.Modelica.org
3 © Windpower Monthly, Tim Donahey Show, Tellepsin Industrial, Lund
pers, IT Confict, LLC Company, MIRA, Ltd.
Hasley, HQ Free Wallpa-
1.1. Lenguajes de simulación
5
cos (Bush, 1931) y luego electrónicos (Ragazzini et al., 1947). El sistema se modelaba en término de ecuaciones diferenciales ordinarias (ODE - “ordinary differential equations”). En las computadoras analógicas electrónicas, las ecuaciones diferenciales del modelo primero se escalaban en tiempo y en magnitud, y luego se “programaban” interconectando componentes electrónicos (integradores, sumadores, potenciómetros y generadores de señal). Las variables estaban representadas por las tensiones eléctricas en el circuito. Los simuladores digitales, iniciaron su aparición en los años 60 del siglo pasado para las grandes computadoras (“mainframes”), pasando luego a las computadoras “personales” de escritorio y han continuado evolucionado a la par del desarrollo tecnológico de estas. La simulación digital de los sistemas dinámicos, requiere de algoritmos de integración numérica. En la actualidad, hay una amplia variedad de programas, comerciales y de uso libre, que implementan ambientes de simulación dinámica , que utilizan diferentes lenguajes o “metodologías” para el modelado y la simulación de los sistemas dinámicos.
1.1 Lenguajes de simulación Para ser eficiente, la simulación digital debe hacer uso de herramientas o lenguajes vez de los lenguajes de programación de propósito general.
de simulación, en
1.1.1 Evolución histórica En respuesta a los problemas que existían con la utilización de los lenguajes de programación de uso general, para la solución numérica de los sistemas dinámicos, IBM desarrolló el “Digital Simulation Language - 90” (DSL-90) para las computadoras IBM-7090 y luego, el “Continuos System Modeling Program” (System/360 CSMP) (IBM Corporation, nd; Speckhart y Green, 1976 ). De ahí en adelante, se han desarrollado una cantidad importante de programas, “lenguajes” y ambientes de simulación dinámica. Los programas de simulación usualmente se clasifican en programas de simulación continua, en los cuales el modelo evoluciona en forma “continua” en el tiempo, y programas de simulación discreta, en los cuales el modelo solo se evalúa en los instantes en que hay un cambio de estado. Los hay también, que permiten la simulación de sistemas híbridos, que combinan componentes continuos y discretos. En forma similar, a la utilizada para elaborar los diagramas de simulación implementados en las computadoras analógicas, se han desarrollado herramientas gráficas
6
1 Introducción
de modelado y simulación mediante diagramas de bloques , como Simulink® integrado con MATLAB® (The MathWorks, Inc.) y VisSim™ (Visual Solutions). El modelado mediante el uso de diagramas de bloques, es adecuado para la simulación de sistemas en los que lo que hay, son señales que fluyen por ellos. Como por ejemplo, para los sistemas de control lineales, donde sus componentes están representados por funciones de transferencia. Por otra parte, también hay programas de simulación de aplicación a áreas específicas de la ingeniería, como Spice (University de California en Berkeley) para circuitos eléctricos y electrónicos, Adams (MSC Software Corporation) para sistemas mecánicos tridimensionales, gPROMS® (Process Systems Enterprice Limited) para el modelado de procesos industriales, y otros (Åström et al., 1998). En el uso de los lenguajes de simulación de sistemas dinámicos con base en procedimientos, se considera importante la forma en que se “ordenan” las ecuaciones del modelo, insistiéndose en que estas deben seguir una secuencia de “causa y efecto” (Franks, 1972). Sin embargo, tal relación de entrada a salida en los elementos físicos reales, no necesariamente existe. La interconexión entre los mismos, no implica un “orden” entre sus variables. Una forma diferente de modelado, es el que considera al sistema dinámico como la interconexión de varios subsistemas. Se establecen los modelos de estos subsistemas, con base en la aplicación de las leyes de conservación (de la masa, la energía, la cantidad de movimiento, o de los componentes) y se toma en cuenta la forma en que los subsistemas entredel si, sistema, en los terminales de interconexión. lo modelo físico anterior constituye elinteractúan el cual puede verse como laTodo forma en que se restringe la evolución de sus variables. Este procedimiento conduce normalmente, a que el modelo esté constituido por un conjunto de ecuaciones algebraico diferenciales implícitas . Otra forma de representar un sistema, es mediante el uso de las gráficas de enlace (“bond graphs”) ideadas por Paynter (1961), donde los nodos son los componentes y las ramas representan el flujo (bidireccional) de energía entre ellos. 20-Sim (Controllab Products) es uno de los programas más conocidos, para simular sistemas dinámicos utilizando gráficas de enlace. Dymola (“Dynamic Modeling Language”) desarrollado porElmqvist (1978), fue uno de los primeros esfuerzos en el desarrollo de un lenguaje eficiente para el modelado físico. Sin embargo, su capacidad para modelar sistemas “grandes”, estaba limitada inicialmente, por la capacidad de memoria de los computadores de esa época. La ampliación de la velocidad y de la capacidad de memoria y almacenamiento de las computadoras, permitió el desarrollo de otros lenguajes de simulación como Omola y ObjectMath, y su aplicación a procesos industriales complejos (Åström et al., 1998).
1.1. Lenguajes de simulación
7
1.1.2 Desarrollo de Modelica En setiembre de 1996, se forma el grupo inicial para el desarrollo de un nuevo lenguaje de modelado orientado a objetos y un año después, se publica la primera definición del lenguaje Modelica®, Modelica 1.0 (Elmqvist, 2014). En febrero de 2000 se forma la Modelica Association4 , para promover el uso del lenguaje Modelica y eldedelasuespecificación biblioteca de componentes La versión actual de Modelica, estándar. es la 3.3, del 9 de mayo de 2012 (Modelica Association, 2012). Una diferencia importante, entre los programas de simulación con base en el desarrollo de diagramas de bloques y flujo de señales con una causalidad bien definida (“al estilo de Simulink®”) y los lenguajes de simulación con base en ecuaciones (orientado a objetos) como Modelica es que, en estos últimos, la descripción es no causal y solo establece la relación entre las variables del proceso (cómo es que estas están restringidas). Otro aspecto importante de Modelica, es que permite el modelado gráfico a partir de la interconexión de componentes predefinidos. En los capítulos siguientes se presentarán, en forma breve, las variables y las relaciones constitutivas de los elementos básicos de varios dominios físicos, procediéndose posteriormente, a presentar ejemplos de su modelado y simulación con el lenguaje Modelica, empleando el ambiente de modelado y simulación OpenModelica desarrollado por el Open Source Modelica Consortium (OSMC)5 . Este incluye un diagramas de interconexión de componentes. editor gráfico se para construirlalos 6 , mantenido por También presentará utilización del ambiente JModelica.org Modelon AB7 , no solo para la simulación de los modelos Modelica, sino principalmente, para la solución de problemas de optimización. Otra aplicación libre, que incorpora una implementación parcial de la biblioteca Modelica, es Xcos8 incluida en Scilab. Herramientas comerciales de Modelica son: CyDesign Studio9 , Dymola (“Dynamic modeling laboratory”)10 , LMS Imagine.Lab11, MapleSim12, SimulationX13 , 4 https://www.modelica.org/ 5 https://openmodelica.org/ 6 http://www.jmodelica.org/ 7 http://www.modelon.com/ 8 http://www.scilab.org/scilab/features/xcos 9 http://cydesign.com/cydesign-studio/ 10 http://www.3ds.com/ 11 http://www.plm.automation.siemens.com/en_us/products/lms/imagine-lab/
index.shtml 12 http://www.maplesoft.com/products/maplesim/index.aspx 13 http://www.itisim.com/simulationx/system-simulation/
8
1 Introducción
Vertex14 y Wolfram SystemModeler15 . De entre estas últimas, en la Parte IV se presentará la utilización de Wolfram SystemModeler (Model Center y Simulation Center ), y la de su enlace con Mathematica (WSMLink). Además, se analizarán las capacidades de las versiones con capacidades limitadas (demostrativos, de evaluación, o versiones “para estudiantes”) gratuitas, de algunas de las herramientas comerciales citadas.
1.2 Modelica Modelica es un lenguaje de programación orientado a objetos, con base en el modelado mediante ecuaciones (Fritzson et al., 2004). Los programas Modelica se desarrollan a partir de una descripción del sistema utilizando ecuaciones, en vez de instrucciones de asignación, permitiendo un modelado no causal de sistemas no lineales heterogéneos (el modelo incluye componentes de diferentes dominios físicos). Permite la construcción de modelos, para la descripción del comportamiento continuo y discreto de sistemas dinámicos complejos. Aunque su mayor fortaleza radica en la capacidad de implementar un modelado no causal, también es posible formular el modelo mediante bloques causales. Además, incorpora una biblioteca de componentes de diversos dominios físicos, permitiendo al usuario concentrarse en utilizarlos, estableciendo la forma en que estos se relacionan en su sistema, en vez de en la descripción de los fenómenos que ocurren en cada uno de ellos.
1.3 Sistemas dinámicos Se considerará que un sistema dinámico como el ilustrado en la figura 1.2, consiste de un conjunto de subsistemas interconectados entre si, en el cual se desea analizar el comportamiento de las variables (propiedades) asociadas a el. Un sistema está compuesto entonces, por un conjunto de elementos de diversa naturaleza, cuyo comportamiento e interrelación se desea estudiar. Se dice que el sistema es dinámico, porque una o más de sus características ( variables) cambian con el tiempo. Este estará compuesto porelementos que almacenan, disipan o transforman energía, o que se relacionan con otras cantidades que definan el estado del sistema y los flujos entre sus componentes. 14 http://cydesign.com/cyvertex/ 15 http://www.wolfram.com/system-modeler/
1.3. Sistemas dinámicos
9
Figura 1.2: Componentes de un sistema dinámico Los elementos del sistema intercambian variables (información) entre si, por medio de sus terminales. A su vez, el sistema interactúa con elmedio externo, por medio de los terminales de conexión que atraviesan la frontera, la cual define qué pertenece al sistema (lo que se desea estudiar) y que no. Para el estudio del sistema dinámico, se requiere un modelo matemático, el cual es una descripción aproximada del mismo. En este, las relaciones entre las variables (distancias, velocidades, fuerzas, tensiones y corrientes eléctricas, flujos de material, temperaturas, poblaciones, capital), están expresadas en forma matemática (mediante ecuaciones) (Ljung y Glad, 1994). Un experimento será el procedimiento
para obtener información del sistema, realizando algún tipo de cambio en las variables, parámetros u otra condición del mismo. Como por lo general no es posible experimentar con el sistema real, lasimulación digital, será el “experimento” realizado con el modelo matemático del sistema que se desea estudiar. El deseo o la necesidad de realizar la simulación de un modelo dinámico, puede ser srcinada no solo por la imposibilidad de experimentar con un proceso real, por su costo, escala de tiempo u otra razón, pero también porque el sistema real podría no existir todavía. En este último caso, la simulación del modelo (prototipo) del sistema, se emplea como parte del desarrollo (diseño) del mismo. El análisis de los resultados de la simulación (experimento hecho con el modelo), debe tomar en cuanta las limitaciones que pudiera tener el modelo utilizado, para representar el sistema real bajo estudio. No debe olvidarse, que este es solo una representación aproximada del fenómeno que se desea estudiar. En forma natural, el modelado de los sistemas dinámicos heterogéneos, conduce aalgebraic obtener equations”). un conjuntoPor de ecuaciones algebraico diferenciales (DAE - “differential lo tanto, el modelo del sistema dinámico a “simular”, será
10
1 Introducción
un conjunto de ecuaciones algebraico diferenciales implícitas no lineales, de la forma general dx(t ) , x(t ), z(t ), u(t ), t , dt y(t ) = G (x(t ), z(t ), t ) , x(t0 ) = x0 , dx(t0 ) = x0 , dt 0=F
(1.1) (1.2) (1.3) (1.4)
donde x (t ), es el vector de las variables endógenas que aparecen derivadas en las ecuaciones, z(t ), el vector de las variables endógenas que no aparecen derivadas, u(t ), el vector de los estímulos exógenos, yy(t ) el vector de las variables de interés y por lo tanto el de las “variables medidas”. Las condiciones iniciales de las variables x(t ) y de sus derivadas sonx0 (t ) y x0 (t ), respectivamente.
1.4 Modelado Para, por ejemplo, analizar el comportamiento de un sistema físico en varios escenarios (con diferentes conjuntos de parámetros o estímulos); optimizar sus características o comportamiento, respecto a una determinada función de costo; o diseñar un sistema de control para el, se requiere de un modelo dinámico que lo represente en estos estudios.
1.4.1 Desarrollo del modelo Para la obtención del modelo matemático de un sistema, con el fin de experimentar con el (realizar simulaciones), se pueden seguir dos caminos diferentes (Fritzson, 2004, 2015): • Modelado deductivo: Aplicando las leyes naturales que gobiernan los fenómenos que tienen efecto en el sistema, se deduce el modelo. Este es un modelo analítico o físico. • Modelado inductivo: A partir de un conjunto de datos experimentales obtenidos del sistema (observaciones), se ajusta un modelo matemático a los mismos. Este es un modelo experimental. En el modelado físico de un sistema y su simulación, se ejecutan las siguientes etapas:
1.4. Modelado
11
1. Se analizan las variables involucradas en el sistema, y se determinan las que son de interés. 2. Se establecen las relaciones constitutivas de los elementos del sistema. 3. Se aplican las leyes de conservación (energía, masa, cantidad de movimiento) para establecer las ecuaciones del sistema. 4. Se identifican los parámetros en el conjunto de ecuaciones del sistema. 5. Se establece el modelo (ecuaciones, parámetros, estímulos, variables que se desean observar). 6. Se selecciona el procedimiento de solución del modelo. 7. Se verifica el modelo simulado con respecto a las ecuaciones constitutivas del sistema. 8. Se valida el modelo respecto al sistema que representa, si este existe. Por su parte, en el modelado experimental de un sistema, se realizan las siguientes etapas: 1. Se realiza una prueba con el sistema a modelar. 2. Se selecciona la estructura del modelo para representarlo. 3. Se ajustan los parámetros del modelo, para reproducir los datos de la prueba. 4. Se valida el modelo, utilizando datos de otra prueba experimental con el sistema. Para el desarrollo del modelo matemático de un sistema complejo, es conveniente realizar un modelado modular . Esto es, formar el modelo (complejo) del sistema, como la interconexión de los modelos (sencillos) de sus partes. Las partes del sistema, están modeladas por ecuaciones que describen su comportamiento, sin preocuparse por la forma en que estas se resolverán. Las relaciones ente las partes, están descritas por ecuaciones de conexión, sin que se establezca su causalidad. No están definidas en función de “entradas” y “salidas”. Las leyes que gobiernan los fenómenos que ocurren en el sistema físico, establecen las relaciones entre sus variables, mientras que las interconexiones entre sus subsistemas, la forma cómo estas se comparten (Willems, 2007). modelo claramente el comportamiento del sistema, aunque la soluciónEldel mismomostrará pueda presentar dificultades.
12
1 Introducción
En el proceso de modelado de un sistema físico, siempre estará presente el conflicto entre la complejidad del modelo y su precisión. Esto afecta tanto el tiempo requerido para el desarrollo del modelo, como el de su solución (simulación). Al analizar los resultados de las simulaciones hechas con el modelo, deben tenerse siempre en cuenta las suposiciones y simplificaciones hechas en su desarrollo. Esto es, las limitaciones del mismo para reproducir, en forma fidedigna, el comportamiento del sistema que representa.
1.4.2 Variables del modelo El modelo estará constituido por un conjunto de ecuaciones que relacionan información de diversos tipos: lasconstantes (θK ) que son cantidades que no solo no cambian con el tiempo sino que, por lo general, se consideran independientes del sistema; los parámetros (θP ) que si bien se mantienen constantes durante un experimento (simulación), definen las características particulares del sistema y en muchos casos, son ajustados (parámetros de diseño) de manera de lograr un determinado objetivo con el sistema; y las variables (θV ) que evolucionan en función de la variable independiente tiempo (t ). Dentro del conjunto de variables θV , algunas dependerán del comportamiento anterior del sistema (su historia), denominadas estados (θX ) y cuya evolución estará determinada por ecuaciones diferenciales (aparecen derivadas en el modelo). Otras, las variables instantáneas (θZ ), cuyo valor en un instante determinado solo depende ecuaciodel valor de otras variables en ese mismo instante, estarán determinadas por nes algebraicas. Además, los estímulos ( θU ) son las variables consideradas como las “entradas” al sistema, e incluyen aquellas que son generadas o que pueden manipularse ( θU ), denominadas usualmente como variables de entrada , y otras que si bien afectan al sistema, no se pueden modificar, a las que se les llama perturbaciones (θD ). Del conjunto de variables {θX , θZ , θU }, las que son de interés serán llamadas también variables de salida (θY ), o variables “medidas”. El objetivo de la experimentación con el modelo (proceso de simulación), será determinar entonces, cómo los estímulos θU afectan las variables de interés θY , en un sistema con un determinado conjunto de parámetros θP .
1.5 Bibliografía Alfaro, V. M. (1991). La Red generalizada. Ingeniería, 1(2):37–52.
1.5. Bibliografía
13
Åström, K. J., Elmqvist, H., y Mattsson, S. E. (1998). Evolution of continuos-time modeling and simulation. En The 12th European Simulation Multiconference (ESM’98). junio 16-19, Manchester, UK. Bush, V. (1931). The Differential Analizer: A new machine for solving differential equations. Journal of Franklin Institute, 212:447–488. Elmqvist, H. (1978). A Structures Model Lenguage for Large Continuos Systems . PhD thesis, Department of Automatic Control, Lund Institute of Technology, Lund, Sweden. Elmqvist, H. (2014). Modelica Evolution - From my Perspective. En 10th International Modelica Conference, páginas 17–26. marzo 10-12, Lund, Sweden. Franks, R. G. E. (1972). Modeling and Simulation in Chemical Engineering . John Wiley & Sons, Inc. Hoboken, NJ, USA. Fritzson, P. (2004). Principles of Object-Oriented Modeling and Simulation with Modelica 2.1. Institute of Electrical and Electronic Engineers, Inc. Piscataway, NJ, USA. Fritzson, P. (2015). Principles of Object-Oriented Modeling and Simulation with Modelica 3.3 - A Cyber-Physical Approach. Institute of Electrical and Electronic Engineers, Inc. Piscataway, NJ, USA. Fritzson, P., Engelson, V., Idebrant, A., Aronsson, P., Lundvall, H., Bunus, P., y Nyström, K. (2004). Modelica - A Strongly Typed System Specification Language for Safe Engineering Practice. En SimSAFE Conference. octubre 15-17, Karlskoga, Sweden. IBM Corporation (n.d.). System/360 Continuos System Modeling Progr am, User Manual H20-0372. White Plains, NY, USA. Ljung, L. y Glad, T. (1994). Modeling of dynamic systems . P T R Prentice Hall, Englewood Cliffs, New Jersey, USA. Modelica Association (2012). Modelica - A Unified Object-Oriented Language for Systems Modeling, Language Specification Version 3.3 . Linköping, Sweden. Paynter, H. M. (1961). Analysis and Design of Engineering Systems. The MIT Press, Cambridge, Mass., USA. Ragazzini, Randall, circuits. R. H., y Proc. Russell, F. A. (1947). Analisys of problems in dynamicsJ.byR.,electronic IRE, 35:444–452.
14
1 Introducción
Speckhart, F. H. y Green, W. L. (1976). A Guide to Using CSMP - The Continuos System Modeling Program, a Program for Simulating Physical Systems. PrenticeHall, Inc. Englewood Cliffs, NJ, USA. Willems, J. C. (2007). The Behavioral Approach to Open and Interconnected Systems. IEEE Control Systems Magazine, 27(6):46–99.
2 Elementos b´asicos de los sistemas f´ısicos Se presentan aquí, las variables y las relaciones constitutivas de los elementos básicos, de varios sistemas de diferente dominio físico, sin pretender entrar en el detalle de la derivación de las mismas.
2.1 Introducción Considérese primero el elemento generalizado mostrado en la figura 2.1, como una representación de cualquier elemento físico. El elemento generalizado tiene dos terminales, denotados como 2 y 1, por medio de los cuales interactúa con el medio que lo circunda (otros elementos y el “medio ambiente”). La conexión entre los terminales de los elementos, hace que estos compartan información, sus variables. Figura 2.1: Elemento generalizado de dos terminales
15
16
2 Elementos básicos de los sistemas físicos
En el elemento se tendrán dos tipos de variables generalizadas, que son funciones del tiempo (Alfaro, 1991; Shearer et al., 1971): • La transvariable v (t ), que será aquella variable que se especifica como una diferencia entre los valores en los terminales del elemento, o entre un terminal de este y un punto de referencia. Esta es la variable “a través del elemento”. Se requieren dos puntos para su medición. • La pervariable f (t ), que será aquella variable que tiene el mismo valor en cada terminal del elemento. Esta es la variable que “fluye por el elemento”. Se requiere solo un punto para su medición. En cada dominio físico, se definirá cuales son la transvariable y la pervariable, y las relaciones entre ellas en sus elementos básicos. Esto también permitirá, definir cuales variables constituyen losestados de estos sistemas. En la figura 2.2 se muestra una adaptación del Tetraedro de estados de Paynter (1961), en el cual se muestran, además de la transvariable y la pervariable, laintegral de la transvariable x (t ) y la integral de la pervariable h(t ). La transvariable v21 (t ) = v 2 (t ) − v1 (t ) y su integral x21(t ) = x 2 (t ) − x1 (t ), corresponden a las diferencias algebraicas entre los valores de estas variables en los terminales del elemento. La transvariable de un terminal (1 o 2) del elemento (v1 (t ), v2 (t )) y su integral ( x1 (t ), x2 (t )), son medidas respecto a un punto o “terminal” de referencia. La pervariable f (t ) y su integral h (t ), son las mismas en los dos terminales del elemento. Los trayectos entre la pervariable y la transvariable en el tetraedro, indicarán las relaciones existentes entre ellas, permitiendo determinar la relación constitutiva de un elemento determinado. Como se ha indicado antes, por definición . d h(t )
f (t ) =
dt
,
. d x21 (t ) v21 (t ) = .
dt
(2.1) (2.2)
Además, del tetraedro de la figura 2.2, se tienen las siguientes relaciones .
h(t ) = A v21 (t ),
.
x21 (t ) = T f (t ),
. D f (t ). v21 (t ) =
(2.3) (2.4) (2.5)
17
2.1. Introducción
Figura 2.2: Tetraedro de Paynter
Combinando (2.3) y (2.1) se obtiene, que d v21(t ) A = f (t ), (2.6) dt la cual es la relación constitutiva de los elementos almacenadores de energía “tipo A”, aquellos cuya variable de estado es su transvariable. Ejemplos de elementos tipo A son el capacitor eléctrico, la masa, el volante y el capacitor hidráulico. De (2.6) se obtiene que 1 t v21 (t ) = f (τ )dτ + v21 (to ), (2.7) A
to
donde v 21(to ) es el estado inicial del elemento tipo A. Si se combinan ahora (2.4) y (2.2) se obtiene, que d f (t ) = v 21 (t ), (2.8) dt la cual es la relación constitutiva de los elementos almacenadores de energía “tipo T”, aquellos cuya variable de estado es su pervariable. Por ejemplo, el inductor eléctrico y el resorte, son elementos tipo T. De (2.8) se obtiene que T
f (t ) =
1
T
t
to
v21 (τ )dτ + f (to ),
(2.9)
18
2 Elementos básicos de los sistemas físicos
Figura 2.3: Elementos eléctricos donde f (to ) es el estado inicial del elemento tipo T. Finalmente, (2.5) es la relación constitutiva de loselementos disipadores de energía “tipo D” . Esta es una relación algebraica, por lo tanto, los elementos tipo D no tienen un estado asociado a ellos. Elementos que disipan energía son, por ejemplo, el resistor eléctrico, y los orificios y las válvulas en los sistemas hidráulicos. Existirán también fuentes ideales de transvariable y de pervariable, así como eletransformadores de variables dentro de un mismo dominio físico y elementos mentos transductores, que lo hacen entre variables de diferente dominio.
Todas las expresiones anteriores, que relacionan la transvariable y la pervariable en un elemento, son no causales esto es, no establecen una relación de causa a efecto o de entrada a salida. Si bien la representación de los elementos y sus relaciones dentro de un sistema, son no causales, a nivel de un experimento con el sistema, se pueden considerar como “entradas” al mismo, a los estímulos aplicados y a los cambios de los estados iniciales o parámetros, y como “salidas”, a aquellas de sus variables que se desean observar, las “variables de interés” que son medidas.
2.2 Sistemas eléctricos Los elementos básicos de los sistemas eléctricos son: el capacitor, el inductor y el 2.3.
resistor, mostrados en la figura
En los elementos de los sistemas pervariable eléctricos, lala transvariable es la diferencia de corriente eléctrica (i) por ellos.
tensión (v21 ) entre sus terminales y la
19
2.3. Sistemas hidráulicos
• Capacitor eléctrico ideal La relación constitutiva del capacitor es C
dv21(t ) = i (t ), v021 , dt
(2.10)
donde v 021 es la diferencia de tensión inicial en el capacitor. El capacitor, almacena energía en función de la diferencia de tensión entre sus terminales, energía de campo eléctrico. • Inductor eléctrico ideal La relación constitutiva del inductor es L
di(t ) = v21 (t ), i0 , dt
(2.11)
donde i 0 es la corriente inicial por el inductor. El inductor, almacena energía en función de la corriente por el, energía de campo magnético. • Resistor eléctrico ideal La relación constitutiva del resistor es v21 (t ) = Ri(t ).
(2.12)
El resistor disipa energía. En los sistemas eléctricos la capacitancia C del capacitor está dada en F, la inductancia L del inductor en H, la resistencia R del resistor en Ω, la diferencia de tensión v21 en V y la corriente i en A. La unidad del tiempo t es s.
2.3 Sistemas hidráulicos Los elementos básicos de los sistemas hidráulicos son: eltanque de almacenamiento, la tubería larga y la restricción hidráulica, los cuales se muestran en la figura 2.4. En los elementos de los sistemas hidráulicos, la transvariable es la diferencia de presión (P21 ) entre sus extremos y la pervariable la razón de flujo volumétrico
través de ellos.
( Q) a
20
2 Elementos básicos de los sistemas físicos
Figura 2.4: Elementos hidráulicos • Capacitor hidráulico ideal (tanque) La relación constitutiva de un tanque cilíndrico vertical y abierto a la atmósfera es dH (t ) = Q(t ). A (2.13) dt Como la presión absoluta en el fondo del tanque es (2.14)
P2 (t ) = ρ gH (t ) + P0 ,
su valor relativo respecto a la presión atmosféricaP0 (de referencia), es P20 (t ) = P2 (t ) − P0 = ρ gH (t ).
(2.15)
Utilizando (2.13) y (2.15), la relación constitutiva del tanque se puede escribir como A dP20 (t ) Cf = Q(t ), C f = , P0 , (2.16) ρ g 20 dt 0 es la presión relativa inicial en el fondo del tanque. donde P20 Este capacitor hidráulico, almacena energía en función de la presión diferencial (relativa a la atmosférica). • Inductor hidráulico ideal (tubería larga) La presión diferencial entre los extremos de la tubería, ejerce una fuerza que acelera el fluido dentro de esta, según la ecuación A [P2 (t ) − P1 (t )] = AP21 (t ) = ρ AL
1 dQ(t ) . dt
A
(2.17)
de donde se obtiene la relación constitutiva del inductor hidráulico Q(t ) ρL If d = P21 (t ), I f = , Q0 , A dt
(2.18)
21
2.4. Sistemas mecánicos con elementos que se desplaza n
siendo Q 0 es el caudal inicial por la tubería. El inductor hidráulico, almacena energía en función del caudal a través de el. • Resistor hidráulico ideal (orificio, válvula) Se considerarán como resistores hidráulicos, aquellos elementos que ponen resistencia al flujo de un fluido, ocasionando de presión. Una restricción (orificio, válvula) insertada en una tubería,una es caída un resistor hidráulico. La caída de presión a través de un orificio, ocasionada por el flujo de un fluido está dada, en forma aproximada, por la relación P21 (t ) = a 0 Q(t ) |Q(t )| , a0 =
1 2 2 ρC A , 2 d 0
(2.19)
la cual también se expresa como R f Q(t ) =
signo{P21(t )} |P21(t )|.
(2.20)
En el ámbito lineal, (2.20) se puede aproximar por la relación Rf Q(t ) = P21 (t ).
(2.21)
En la restricción hidráulica se disipa energía. En los sistemas hidráulicos la diferencia de presión P21 está dada en Pa y el caudal volumétrico Q en m3 s−1 . La capacitancia C f del capacitor hidráulico está dada en m3 Pa−1 , la inductancia I f del inductor hidráulico en Pa s /(m3 /s) y la resistencia (lineal) R f del resistor hidráulico en Pa/(m3 /s). La unidad del tiempo t es s.
2.4 Sistemas mecánicos con elementos que se desplazan Los elementos básicos de los sistemas mecánicos, cuyos componentes se desplazan en forma longitudinal son: lamasa, el resorte y el amortiguador, los cuales se muestran en la figura 2.5. La masa solo tiene un punto móvil, se considera concentrada en un punto, mientras que los dos extremos del resorte y del amortiguador son móviles, estos se “estiran” o “encogen” longitudinalmente. En estos elementos, la transvariable es la diferencia de velocidades (V21) entre sus extremos pervariable la fuerza ( F respecto ) por ellos. Como la posición y velocidad de lay la masa, deben determinarse a un puntosedeindica, referencia.
22
2 Elementos básicos de los sistemas físicos
Figura 2.5: Elementos mecánicos que se desplazan • Masa ideal La relación constitutiva de la masa es m
dV20 (t ) 0, = F (t ), V20 dt
(2.22)
donde V200 es la velocidad inicial de la masa. La masa almacena energía en función de su velocidad, energía cinética. • Resorte ideal Las relaciones constitutivas del resorte son 1
F (t ) = X21 (t ),
(2.23)
1 dF (t ) = V21 (t ), F 0 , k dt
(2.24)
k
donde F 0 es la fuerza inicial por el resorte. El resorte almacena energía en función de la fuerza, energía potencial. • Amortiguador ideal La relación constitutiva del amortiguador es F (t ) = bV21 (t ).
El amortiguador disipa energía.
(2.25)
2.5. Sistemas mecánicos con elementos que giran
23
Figura 2.6: Elementos mecánicos que giran La diferencia de desplazamientos X21 , entre los extremos de los elementos mecánicos que se desplazan, está dada por dX21(t ) 0, = V21 (t ), X21 dt
(2.26)
0 es el desplazamiento relativo inicial. En el caso de la masa, su posición y donde X21 velocidad son mediadas respecto al punto de referencia ( X20 (t ), V20(t )). En los sistemas mecánicos con elementos que se desplazan, la cantidad de materia m de la masa está dada en kg, la constante de rigidez k del resorte en Nm −1 , el coeficiente de amortiguamiento b del amortiguador en Nm −1 s, la diferencia de desplazamiento X20,1 en m, la diferencia de velocidades V20,1 en ms −1 y la fuerza F en N. La unidad del tiempo t es s.
2.5 Sistemas mecánicos con elementos que giran Los elementos básicos que giran en los sistemas mecánicos son: la masa giratoria o el resorte giratorio y el amortiguador giratorio, los cuales se muestran en la figura 2.6. El eje del volante es rígido (sus dos extremos tienen el mismo desplazamiento angular y giran a la misma velocidad), mientras que los extremos del eje del resorte y los del amortiguador, pueden tener diferente desplazamiento angular y girar a diferente velocidad. En estos elementos, la transvariable es la diferencia de velocidades angulares
volante,
ω21 ) entre sus extremos y la pervariable el par ( T ) por ellos. En forma similar a lo (que ocurre con la masa de los sistemas mecánicos con elementos que se desplazan,
24
2 Elementos básicos de los sistemas físicos
en el caso del volante, su posición y velocidad angular deben determinarse respecto a un eje de referencia. • Volante ideal La relación constitutiva del volante es J dω20 (t ) = T (t ), ω200 , dt
(2.27)
0 donde ω20
es la velocidad angular inicial del volante. El volante almacena energía cinética en función de su velocidad angular. • Resorte giratorio ideal Las relaciones constitutivas del resorte giratorio son 1
T (t ) = θ21 (t ),
(2.28)
1 dT (t ) = ω21 (t ), T 0 , K dt
(2.29)
K
donde T 0 es el par inicial por el. El resorte giratorio almacena energía potencial en función del par. • Amortiguador giratorio ideal La relación constitutiva del amortiguador giratorio es T (t ) = B ω21 (t ).
(2.30)
El amortiguador giratorio disipa energía. La diferencia de desplazamientos angulares θ 21 , entre los extremos de los elementos mecánicos que giran, está dada por dθ21 (t ) 0, = ω21 (t ), θ21 dt
(2.31)
0 es el desplazamiento angular relativo inicial. donde θ21 En los sistemas mecánicos que giran, el momento de inercia J del volante está dado en Nms2 , la constante de rigidez K del resorte giratorio en Nmrad −1 , el coeficiente de amortiguamiento B del amortiguador giratorio en Nmrad −1 s, la diferencia
θ 20,1 en rad, la diferencia de velocidades angulares ω 21 en de −1 radsposiciones y el parangulares T en Nm. La unidad del tiempo t es s.
25
2.6. Sistemas térmicos
Figura 2.7: Elementos térmicos
2.6 Sistemas térmicos En los sistemas térmicos, puede haber almacenamiento y transmisión de calor. Esta última puede ser por conducción, convección o radiación. Los elementos de los sistemas térmicos son: el capacitor térmico y el resistor térmico, los cuales se muestran en la figura 2.7. En los sistemas térmicos la transvariable es la diferencia de temperatura ( T21) y la pervariable el flujo de calor (q). La diferencia de temperatura en el capacitor térmico, debe tomarse respecto a una de referencia. • Capacitor térmico ideal La relación constitutiva del capacitor térmico es 0, Ct dT20 (t ) = q(t ), T20 dt
(2.32)
donde T200 es la diferencia de temperatura inicial del capacitor térmico. El capacitor térmico almacena energía en función del incremento de temperatura. La capacitancia térmica de un material está dada por Ct = C p m,
(2.33)
donde C p es su capacidad calorífica y m su masa. • Resistor térmico ideal La relación constitutiva del resistor térmico es T21 (t ) = Rt q(t ).
El resistor térmico disipa energía.
(2.34)
26
2 Elementos básicos de los sistemas físicos
En el caso de la transmisión de calor por conducción en un material sólido, su resistencia térmica es L Rt = , (2.35) σc A
donde σc es la conductividad térmica del material,A su área normal a la dirección del flujo de calor y L su largo (grosor) en la dirección del flujo de calor. Para la transmisión de calor por convección, la resistencia térmica es 1 Rt =
Ch A
,
(2.36)
donde Ch es el coeficiente global de transferencia de calor. Si la resistencia térmica del resistor es alta, se dice que este es un aislante, pero si esta es baja, se dice más bien que el material es un buen conductor térmico. En los elementos térmicos la capacitancia Ct del capacitor térmico está dada en JK−1 , la resistencia Rt del resistor térmico en KW −1 , la diferencia de temperatura T20,1 en K y el flujo de calor q en W. La unidad del tiempo t es s.
2.7 Conversión de variables En los sistemas físicos, también están presentes elementos que permiten modificar la relación entre las variable en sus terminales, dentro de un mismo dominio físico. Hay otros, que permiten convertir las variables de un dominio físico a otro.
Transformadores ideales Se denominará como transformador a un elemento que modifica la relación entre las pervariables y transvariables en sus terminales, sin cambiar su dominio físico. Elementos de este tipo son el transformador eléctrico, la palanca mecánica, el conjunto de engranes y otros, mostrados en la figura 2.8. • Transformador eléctrico ideal Si no hay pérdidas de energía en el transformador, se cumple que las potencias en el arrollado primario y el arrollado secundario del transformador son iguales, por lo que v21 (t )ia (t ) = −v43 (t )ib (t ), (2.37) que se puede escribir como v43 (t ) = − ia (t ) = n , v21 (t ) ib (t )
(2.38)
27
2.7. Conversión de variables
Figura 2.8: Elementos de conversión donde n es la relación de transformación. Si n > 1, es un transformador elevador de tensión, mientras que sin < 1, es un transformador reductor de tensión. • Sistema de engranes ideal En un transformador mecánico giratorio ideal, sin pérdidas de energía, se tiene que de donde se obtiene que
ω20 (t )Ta (t ) = −ω10 (t )Tb (t ),
(2.39)
Ta (t ) ω10 (t ) =− = n, ω20 (t ) Tb (t )
(2.40)
donde n es la relación de engranes. Si n > 1 es un incrementador de velocidad de rotación, mientras que si n < 1, es un reductor de velocidad de rotación.
Transductores ideales Un transductor, será un elemento que convierte las variables de un dominio físico en las de otro. Por ejemplo, un motor eléctrico es un transductor electromécanico, convierte energía eléctrica en energía mecánica, mientras que un conjunto compuesto por una turbina y unengenerador eléctrico transforma energía mecánica, hidráulica, eólica o de otra forma, energía eléctrica.
28
2 Elementos básicos de los sistemas físicos
Figura 2.9: Transductor electromecánico
Figura 2.10: Transductor generalizado
En el transductor electromecánico ideal mostrado en la figura2.9, se tiene que la energía eléctrica (en sus terminales eléctricos) y la energía mecánica (en el eje) son iguales. Se cumple entonces que v21 (t )i(t ) = −ω30 (t )T (t ).
(2.41)
Transductor generalizado El transductor generalizado “Tipo N”, es un elemento ideal de cuatro terminales, el cual se muestra en la figura 2.10. Las relaciones entre las transvariables y pervariables en el, cumplen con las siguientes relaciones v43 (t ) = Nv21 (t ),
−1
f b (t ) = f a (t ), N v43 (t ) f b (t ) = −v21 (t ) fa (t ),
(2.42) (2.43) (2.44)
N v 43 /v21 , que donde la constantea del deben seresequivalentes las transductor de fa / f b . y cuyas unidades serán las de
2.8. Variables de los sistemas físicos
29
Cuadro 2.1: Transvariables, pervariables y sus integrales, de los diferentes sistemas físicos Sistema
Transvariable v(t )
Pervariable Integral de la Integral de la f (t ) transvariable x (t ) pervariable h (t )
Corriente i Ligamento Carga q de flujo λ Hidráulico Caudal Q C antidad de Volumen V movimiento de presión Γ Mecánico que Diferencia de Fuerza F Diferencia de Cantidad de se desplaza velocidad V desplazamiento X movimiento p Mecánico Diferencia de Par T Diferencia de Cantidad de que gira velocidad desplazamiento m ovimiento angular ω angular θ angular h Térmico Diferencia de Flujo de − Calor H temperatura T calor q Eléctrico
Diferencia de tensión v Diferencia de presión P
Si el dominio físico de las variables en los terminales 2 y 1, es el mismo que el de las variablesentonces en los terminales 4 y 3, la constanteN es adimensional y el elemento se denominará “transformador”. En ningún caso, (2.42) a (2.44) establecen una causalidad o relación de entrada a salida, entre las variables en los dos conjuntos de terminales del transductor.
2.8 Variables de los sistemas físicos Con base en las definiciones de las secciones anteriores, en el cuadro 2.1 se presenta el resumen de las variables asociadas con los sistemas físicos descritos ( Alfaro, 1991). En estos, con la excepción de los sistemas hidráulicos y térmicos, el flujo de potencia entrando a un elemento es P (t ) = f (t )v21 (t ).
(2.45)
Un tratamiento detallado de los sistemas físicos y de los elementos generalizados, se presenta enelementos Shearer et de al. los (1971).
30
2 Elementos básicos de los sistemas físicos
(a) Capacitor e inductor eléctricos
(b) Capacitor e inductor interconectados
Figura 2.11: Interconexión de dos elementos
2.9 Interconexión de los elementos Se han presentado las características de los elementos de diferentes dominios físicos, donde cada uno de ellos representa un fenómeno determinado. Las relaciones constitutivas de estos elementos, no establecen una causalidad (relación entrada a salida) de las variables en el mismo. Supóngase que se tiene el capacitor eléctrico y el inductor eléctrico, mostrados en la figura 2.11a En la sección 2.2 se presentaron las relaciones constitutivas de estos dos elementos, las cuales son dvC (t ) = iC (t ), vC0 , dt diL (t ) L = v L (t ), i0L . dt
C
(2.46) (2.47)
Por el momento, se tienen cuatro variables θCL = {vC , iC , vL , iL } y dos ecuaciones, (2.46) y (2.47). Si estos dos elementos son interconectados como se ilustra en la figura 2.11b, debido a esta interconexión se establecen dos ecuaciones adicionales: • Las transvariables (“variables de potencial”) en el punto de interconexión, son iguales vC (t ) = v L (t ).
(2.48)
31
2.10. Sistemas heterogéneos
• La suma de las pervariables (“variables de flujo”) en el punto de interconexión, es cero iC (t ) + iL (t ) = 0.
(2.49)
Por lo tanto, el modelo del circuito eléctrico de la figura 2.11b es C dvC (t ) = iC (t ), vC0 , dt diL (t ) L = v L (t ), iL0 , dt vC (t ) = v L (t ),
(2.50) (2.51)
(2.52) (2.53) Ahora se tienen cuatro variables y cuatro ecuaciones. Además, el estado inicial del sistema está definido, {vC0 , i0L }. El modelo está completamente determinado. Como se verá más adelante, pasar del modelo del sistema, dado en este caso por (2.50) a (2.53), a su modelo Modelica, se hace en forma directa. Si se deseara resolver el modelo de este circuito eléctrico, empleando una simulación mediante bloques causales (con conexiones de entrada y salida definidas), se deberá partir de un “diagrama de bloques” con elementos de integración (integradores), similar al mostrado en la figura 2.12. La relación entre este diagrama y el circuito de la figura 2.11b, ya no es evidente. iC (t ) + iL (t ) = 0.
2.10 Sistemas heterogéneos Los sistemas físicos, generalmente integral elementos de diferentes dominios físicos, por lo se encuentran denominaciones para referirse a ellos, como sistemas electrohidráulicos, electromecánicos, electroquímicos, electrotérmicos, híbridos (con referencia a vehículos), termofluídicos, o mecatrónicos. Un ejemplo simple de un sistema heterogéneo, es un motor eléctrico y en particular, el motor de corriente continua mostrado en la figura 2.13. El motor en si es un transductor electromecánico. Convierte energía eléctrica en energía mecánica. En este sistema, las variables eléctricas son la tensiónVa (t ) y la corrientei a (t ) en el circuito de armadura, y la fuerza contra electromotriz Vm (t ). Las variables mecánicas son la velocidad de rotación ω (t ) del motor y el par T (t ) producido por este. Además, se considerará un par TL (t ) opuesto por la carga conectada al eje del motor. Las ecuaciones que modelan el motor eléctrico son: • En el circuito eléctrico ia (t ) La d = Va (t ) − Ra ia (t ) − Vm (t ), dt
(2.54)
32
2 Elementos básicos de los sistemas físicos
Figura 2.12: Diagrama de bloques del circuito eléctrico capacitor e inductor de la figura 2.11b
Figura 2.13: Motor eléctrico de corriente continua
33
2.11. Bibliografía
• En la parte mecánica J
dω (t ) = T (t ) − Bω (t ) − TL (t ), dt
(2.55)
• La fuerza contra electromotriz en el motor Vm (t ) = Ke ω (t ),
(2.56)
T (t ) = Kt ia (t ).
(2.57)
• El par producido por el motor
Sustituyendo (2.56) en (2.54) y (2.57) en (2.55), se obtiene: dia (t ) = Va (t ) − Ra ia (t ) − Ke ω (t ), dt dω (t ) J = Kt ia (t ) − Bω (t ) − TL (t ), dt
La
(2.58) (2.59)
Los parámetros del motor sonθm = {Ra , La , J, B, Ke , Kt }, con la resistenciaRa del circuito de armadura enΩ, la inductanciaLa del circuito de armadura en H, la inercia Jendel motor en coeficiente de fricción viscosa del motor K kgm, /srotor ) y la del Nmrotor s, ladel constante de la el fuerza contra electromotriz en V/(Brad constante e
Kt del par del motor en Nm A −1 . En el
sistema de unidades SI, Ke = Kt = K . Las variables en el sistema del motor eléctrico incluyen: la corriente eléctrica i a en A, la tensión de armadura Va en V y la velocidad de rotación ω en rads−1 . El par opuesto por la carga es TL en Nm. Como se verá más adelante, el lenguaje Modelica permite modelar y simular, sistemas que combinan diferentes dominios físicos, como el del ejemplo anterior, con gran facilidad (Clauß y Beater, 2002; Beater y Clauß, 2003).
2.11 Bibliografía Alfaro, V. M. (1991). La Red generalizada. Ingeniería, 1(2):37–52. Disponible en: http://revistas.ucr.ac.cr/index.php/ingenieria/article/view/7578/7242. Beater, P. y Clauß, C. (2003). Multidomain Systems: Pneumatic, Electronic, and Mechanical Subsystems for a Pneumatic Drive Modeled with Modelica. En 3rd International Modelica Conference. noviembre 3-4, Linköping, Sweden.
34
2 Elementos básicos de los sistemas físicos
Clauß, C. y Beater, P. (2002). Multidomain Systems: Electronic, Hydraulic, and Mechanical Subsystems for an Universal Testing Machine Modeled with Modelica. En 2nd International Modelica Conference. marzo 18-19, Oberpfaffenhofen, Germany. Paynter, H. M. (1961). Analysis and Design of Engineering Systems. The MIT Press, Cambridge, Mass., USA. Shearer, J. L., Murphy, A. T., y Richardson, H. H. (1971). Introduction to System Dynamics. Addisson-Wesley Publishing Company, Inc., Reading, Mass., USA.
Parte II
El lenguaje Modelica y su biblioteca estándar
35
3 Componentes Modelica para representar a los elementos de los sistemas f´ısicos 3.1 Introducción En el cuadro 2.1 de la sección 2.8 se presentaron las transvariables y las pervariables, así como sus integrales, asociadas con diferentes sistemas físicos. Se presentará aquí en forma breve, la transición del elemento físico al componente Modelica que lo representa. En la sección 4.5, se verá la definición de los componentes Modelica con más detalle.
3.2 Variables de potencial y de flujo En la figura 3.1a se muestra un componente genérico de dos terminales en Modelica. En este hay dos variables: la variable de flujo f (t ), que pasa por el componente (es igual en ambos terminales), y la variable de potencial p 21(t ) = p2 (t ) − p1 (t ) a
(a) Variables de un componente
(b) Interconexión de dos componentes
Figura 3.1: Variables y conexión de componentes 37
38
3 Componentes en Modelica
través del componente (es diferente en cada terminal). Estas dos variables están relacionadas, por la ecuación general p21 (t ) = h( f (t )).
(3.1)
Según la definición anterior, la variable de flujo por el componente, tiene el mismo significado las pervariables por los elementosque físicos, y la variablea de potencial a través delque componente, el mismo significado la transvariable través de los elementos físicos. Para determinar, si la selección natural de las variables de flujo y potencial de los componentes, son las pervariables y trasvariables en los elementos de los sistemas físicos vistas anteriormente, se debe tomar en consideración lo que ocurre cuando dos o más componentes, se conectan entre si por sus terminales, como se muestra en la figura 3.1b, en forma similar al análisis de la conexión del capacitor y el inductor, hecho en la sección 2.9. Al interconectar los terminales de dos (o más) componentes, se tienen dos ecuaciones de conexión, que establecen restricciones entre las variables de los componentes: 1. La suma de todas las variables de flujo en el terminal de conexión es cero f 1 (t ) + f 2 (t ) + · · · = 0.
(3.2)
2. Todas las variables de potencial en el terminal de conexión son iguales p12 (t ) = p 22 (t ) = · · · .
(3.3)
Si consideramos que las variables de flujo de los componentes son las pervariables de los sistemas físicos de las secciones 2.2 a 2.6, la primera condición equivale a que: en los sistemas eléctricos, la suma de corrientes en un nodo es cero; en los sistemas mecánicos, la suma de fuerzas (pares) en un punto (eje) sin masa es cero; en los sistemas hidráulicos (fluidos incompresibles), la suma los caudales en la interconexión de tuberías es cero; y en los sistemas térmicos, la suma de los flujos de calor en un punto es cero. Todas las condiciones anteriores, están dadas por las leyes de conservación que gobiernan cada uno de los sistemas físicos. Las leyes de conservación de la carga eléctrica, la cantidad de movimiento, la masa y el calor. Por lo tanto, la variable de flujo de los componentes, corresponderá a la pervariable de los elementos de los sistemas físicos. Si se físicos, toman ahora las variables deequivale potenciala que: iguales a lassistemas transvariables de los sistemas la segunda condición en los eléctricos, las
39
3.3. Definición de los conectore s y puertos en Modelica
Cuadro 3.1: Variables de potencial y de flujo, para los componentes de los diferentes dominios físicos Dominio físico
Variable de potencial p(t )
Variable de flujo f (t )
Eléctrico Hidráulico (líquidos) Fluídico (líq. y gases) Mecánico que desplaza Mecánico que gira Térmico
Diferencia de tensión V Corriente i Diferencia de presión P Flujo volumétrico Q v Diferencia de presión P Flujo de masa Q m Dif. desplazamiento X Fuerza F Dif. desplazamiento angular θ Par T Diferencia de temperatura T Flujo de calor q
tensiones eléctricas en el nodo de conexión son iguales; en los sistemas hidráulicos, que la presión en el punto de conexión de las tuberías son iguales; y en los sistemas térmicos, las temperatura en el punto de unión de dos materiales son iguales, lo cual también concuerda con lo establecido por las leyes que gobiernan estos sistemas. En los sistemas mecánicos con elementos que se desplazan (o giran), esta segunda condición equivale a que en el punto de unión, las velocidades de desplazamiento longitudinal (o las velocidades angulares) de los elementos son iguales. Esto es correcto, pero es insuficiente para definir completamente el comportamiento de los sistemas mecánicos. No basta establecer que en el punto de conexión. las velocidades son iguales. Las restricciones geométricas impuestas por la conexión, hacen necesario establecer que los desplazamientos lineales (o angulares) son también iguales. Debido lo anterior, para los sistemas mecánicos, se tomará como variable de potencial, la integral de la transvariable correspondiente (desplazamiento longitudinal y desplazamiento angular). En el cuadro 3.1 se listan las variables de potencial y de flujo, empleadas para definir los componentes Modelica de los diferentes dominios físicos (Modelica Association, 2012).
3.3 Definición de los conectores y puertos en Modelica Para la interconexión de los componentes entre si, se deben definir los terminales de conexión o conectores, y las variables (de potencial y flujo) que residen en ellos. Engeneral Modelica, las declaraciones de los conectores de los componentes, son de la forma
40
3 Componentes en Modelica
connector ConectorDominioFisico variabl eTipoPote ncial p; flow variableT ipoFlujo f; en d ConectorDominioFisico;
En el conector hay una variable de potencial tipo “variableTipoPotencial” y una variable de flujo tipo “variableTipoFlujo” (definida con el prefijoflow). Las definiciones básicas, deson los(Modelica conectoresAssociation, de los componentes dominios físicos en Modelica, 2013): de los diferentes • Conector eléctrico (“borne”) connector Pi n "Pi n of an ele ctr ica l com pon ent" Modelica .SIunits. Voltage v"Pot ent ial at th e pi n"; flow Modelica.SIu nits.Curr ent i"Cur ren t flo win g int o th e pin" ; en d Pin;
• Conector magnético connector MagneticPort "Gener ic mag net ic por t" SI.Magn eticPote ntial V_m"Magn eti c pot ent ial at th e po rt" ; flow SI.Magneti cFlux Phi "Magn eti c fl ux flo win g in to th e port" ; en d MagneticPort;
• Conector fluídico (líquidos o gases) connector FluidPort "Inte rfa ce fo r qua si on e - dimensional flu id flo w in a pip ing net wor k( incompr essible or com pre ssi ble , on e or mo re ph as es , on e or mo re substances ) " replac eable packa geMedium = Modelica.Media.Interfaces. PartialMedium "Medi um mode l"; flow Medium.MassF lowRate m_fl ow"Ma ss fl ow ra te fr om th e con nec tio n poi nt in to th e com pon ent" ; Medium.A bsoluteP ressure p"Therm ody nam ic pre ssu re in th e connec tion poin t" ; stre am Medium.S pecificE nthalpy h_outf low "Specific the rmo dyn amic ent hal py clo se to th e con nec tio n po int if m_fl ow < 0" ; stre am Medium. MassFrac tion Xi_out flow [ Medium.nXi ] "Inde pen den t mix tur e ma ss fra cti ons m_ i/m cl ose to th e con nec tio n poi nt if m_f low < 0" ; stre am Medium. ExtraPro perty C_out flow [ Medium.nC ]
3.3. Definición de los conectore s y puertos en Modelica
"Prop ert ies c_ i/m i f m_ fl ow < 0" ; en d FluidPort;
41
clo se to th e con nec tio n poi nt
En la mayoría de los diferentes dominios físicos, la definición del conector de sus componentes, involucra solamente variables de potencial y de flujo. Sin embargo, esto no es suficiente para describir el flujo bidireccional de materia y otras cantidades específicas, en los procesos hidráulicos y químicos. Como se puede notar en la definición de los conectores de los elementos fluídicos anterior, esta incluye también variables de tipo stream. Las variables stream describen una cantidad que es transportada por una variable de flujo. Si existen variables stream, el conector debe tener solo una variable tipo flow. • Conector mecánico (“brida”) connector Flange_a " ( left ) 1D transl ational flang e ( flange ax is di re ct ed IN TO cu t pl an e, e. g. fr om le ft to ri gh)t" SI.Pos ition s "Abso lut e pos iti on of fla nge" ; flow SI.F orc e f "Cu t for ce dir ect ed in to fla nge" ; en d Flange_a;
• Conector mecánico giratorio connector Flange_a " 1 - dim . rot ati ona l fla nge of a sha ft ( fill ed squa re icon) " SI.An gle phi "Abso lut e rot ati on ang le of fla nge" ; flow SI.To rque tau "Cu t tor que in th e fla nge"; en d Flange_a;
• Conector térmico partial connector HeatPort "The rm al po rt fo r 1- dim. hea t trans fer" Modelica .SIunits. Temperatur e "Port T temper ature" ; flow Modelica.S Iunits.He atFlowRat e Q_flo "Hea w t fl ow ra te ( pos iti ve if flo win g fr om out sid e in to th e com pon ent )"; en d HeatPort;
Para tener mayor claridad en los listados de código Modelica anteriores y los incluidos tomados la bibliotecacon Modelica (ver el capítulo 5), asecontinuación, han omitido las notas directamente (annotation)derelacionadas el despliegue grá-
42
3 Componentes en Modelica
fico (Placement) del icono asociado y con la información html Documentation ( )a mostrar cundo se seleccione “View Documentation” en un icono. Los conectores anteriores llevan a la definición de los puertos de los componentes. Algunos ejemplos de estos, son los siguientes (Modelica Association, 2013): • Puerto eléctrico (modelo parcial)1 partial model OnePort "Comp one nt wi th tw o ele ctr ica l pin s p an d n an d cu rr en t i fr om p t o n" SI.Vol tage v "Vol tag e dro p bet wee n th e tw o pi ns ( = p. v - n. v) " ; SI.Cur rent i "Cu rr en t fl ow in g fr om pi n p to pi n n" ; Positi vePin p "Posit ive pin ( po te nt ia l p. v > n. v fo r pos iti ve vol tag e dr op )v" ; Negati vePin n "Negat ive pin"; equation v = p. v - n.v; 0 = p. i + n.i; i = p.i; en d OnePort;
• Puerto mecánico rígido (modelo parcial) partial model PartialRigid "Rig id con nec tio n of tw o transl ational 1D flang es" SI.Pos ition s "Abs olu te pos iti on of cen ter of com pon ent ( s = flange_a.s + L /2 = flange_b.s - L /2 ) " ; parameter SI.Le ngth L( start = 0 ) " Leng th of comp onen t , fr om le ft fla nge to ri ght fla nge ( = flange_b.s - flange_a.s ) " ; Flang e_a flang e_a "Left fla nge of tran sla tio nal component" ; Flang e_b flang e_b "Righ t fla nge of tra nsl atio nal component" ; equation flange_a.s = s - L / 2 ; flange_b.s = s + L / 2 ; en d PartialRigid;
• Puerto mecánico giratorio (modelo parcial) 1 Ver la
sección 4.5.2.
3.4. Componentes Modelica de los elementos físicos
43
partial model PartialCompliant "Part ial mod el fo r th e com pli ant con nec tio n of tw o rot ati ona l- dim 1 . shaf t flanges" Modelica. SIunits. Angle phi_r ( elstart = 0 ) "Relative rotat ion angl e ( = flange_b.phi - flange_a.phi ) " ; Modelica. SIunits.T orque tau"Torq ue betwe en flang es ( = flange_b.tau ) " ; Flang e_a onal flangcompo e_a "Le ft ; fla nge of com pli ant 1 - dim. rotati nent" Flang e_b flang e_b "Rig ht fla nge of com pli ant -1 dim. rotati onal compo nent"; equation phi_rel = flange_b.phi - flange_a.phi; flange_b.tau = tau; flange_a.tau = -tau; en d PartialCompliant;
• Puerto térmico (modelo parcial) partial model Element1D "Part ial he at tra nsf er ele men t wi th tw o Hea tPo rt con nec tor s th at do es no t sto re ene rgy" Modelica .SIunits.H eatFlowRa te Q_flo "He w at fl ow ra te fr om port_a - > por t_b" ; Modelica. SIunits.Te mperatureD ifference dT "port_a.T - port_b.T" ; public HeatPo rt_a port_ a; HeatPo rt_b port_ b; equation dT = port_a.T - port_b.T; port_a.Q_flow = Q_flow; port_b.Q_flow = -Q_flow; en d Element1D;
Los modelos parciales (“incompletos”), son la base para definir otros que extienden sus características. Estos no pueden ser utilizados dentro de un diagrama de interconexión de componentes.
3.4 Componentes Modelica de los elementos físicos Con base en los puertos, se definen los componentes que representan a los elementos de los diferentes dominios físicos. Algunos ejemplos, son (Modelica Association, 2013): • Inductor eléctrico
44
3 Componentes en Modelica
mo d el Inductor "Ide al line ar electr ical induc tor" extends Interfaces.OnePort ( i ( start = 0 ) ) ; parameter SI.Indu ctance L( start = 1 ) "Inductance" ; equation L * de r( i ) = v ; en d Inductor;
• Masa que se desplaza mo d el Mass "Slid ing ma ss wi th ine rti a" parameter SI.M ass m( mi n = 0, sta rt = 1 ) "Ma ss of th e slidi ng mass"; parameter StateSele ct stateS elect = StateSelect.default "Pr io ri ty to use s an d v as st at es"; extends Translational.Interfaces.PartialRigid (L = 0 , s ( start = 0, stateS elect = stateSelect ) ) ; SI.Vel ocity v( start = 0, stateS elect = stateSelect ) "Abs olu te vel oci ty of com pon ent" ; SI.Acce leration (a start = 0 ) "Abso lute acceler ation of component" ; equation v = de r( s ) ; a = de r( v ) ; m * a = flange_a.f + flange_b.f; en d Mass;
• Resorte giratorio mo d el Spring "Line ar 1D rot ati ona l spr ing" extends Modelica.Mechanics.Rotational.Interfaces. PartialCompliant; parameter SI.RotationalS pringCons tant (final c mi n = 0 , start = 100000.0 ) "Spri ng const ant"; parameter SI.Angl e phi_r el0 = 0 "Unstretc hed sprin g angle" ; equation ta u = c * (phi_rel - phi_rel0 ) ; en d Spring;
• Resistor térmico mo d el ThermalResistor "Lump ed therm al eleme nt transpo rting he at wit hou t sto rin g it" extends Interfaces.Element1D; parameter Modelica.SIunits. ThermalRes istance "Constant R
45
3.5. Bibliografía
therm al resist ance of equation dT = R * Q_flow; en d ThermalResistor;
mater ial" ;
Los modelos de los componentes, extienden ( extends) los modelos parciales (partial ) depuertos, los puertos. De estaa manera, componentes propiedades de los los cuales su vez seloshan definido enheredan función todas de loslas conectores. Esto permite realizar un modelado jerarquizado. Se establece un “árbol genealógico” de clases, donde los objetos de una clase heredan las propiedades de su clase “progenitora”, esta a su vez los de la suya, y así en orden ascendente. Un cambio en una de las propiedades de una clase, es heredado (transmitido) inmediatamente a todos los objetos descendientes de la misma.
3.5 Bibliografía Modelica Association (2012). Modelica - A Unified Object-Oriented Language for Systems Modeling, Language Specification Version 3.3 . Linköping, Sweden. Modelica Association (2013).Modelica Standard Library 3.2.1. Linköping, Sweden.
4 El lenguaje Modelica En este capítulo se describen las características básicas del lenguaje Modelica, sin pretender entrar en todos los detalles del mismo. Para profundizar en las características de Modelica, se recomienda consultar su especificación (Modelica Association, 2012), el libro de Tiller (2001), los libros de Fritzson (2004, 2011, 2015b) y en particular, el libro de Tiller (2014) que está disponible en la web1 . También está disponible en la web2 la versión en español del primer libro de Fritzon (Fritzson, 2015a).
4.1 Introducción Modelica es un lenguaje orientado a objetos para modelar y simular, sistemas heterogéneos no lineales complejos, esto es, sistemas que incluyen, por ejemplo, componentes mecánicos, eléctricos, hidráulicos, de control continuo o secuencial, procesos, y sistemas de transmisión de energía eléctrica, entre otros. La programación del modelo Modelica de un sistema dinámico, puede hacerse a dos niveles diferentes de abstracción: • En el primero, o bajo, el modelo se expresa utilizando las ecuaciones que se han desarrollado a partir de las relaciones constitutivas de los elementos del sistema y de las relaciones entre estos, determinadas por la topología del sistema a modelar, utilizando un editor de texto. • En el segundo, o alto, el modelo del sistema se elabora mediante la interconexión de componentes prediseñados representados por un icono y disponibles 1 http://book.xogeny.com/ 2 http://liu.diva-portal.org/smash/get/diva2:853769/FULLTEXT01.pdf
47
48
4 El lenguaje Modelica
normalmente en bibliotecas, utilizando un editor gráfico. Cada uno de estos iconos representa un fenómeno, mayoritariamente físico, cuyas ecuaciones se han embebido en el mismo. Las clases y sus herederos, forman la base de un modelado jerarquizado. Los enlaces entre los terminales de los componentes, corresponden a las conexiones físicas entreUnlosmodelo elementos del sistema. Modelica es unadescripción matemática declarativa del sistema a simular (no establece el procedimiento exacto a seguir). Las características del sistema dinámico, se declaran por medio de ecuaciones diferenciales, algebraicas y discretas. Además, permite el modelado gráfico de los sistemas, por medio de la interconexión de componentes de diferente naturaleza física (representados por iconos), por medio de sus terminales. El modelo del sistema lo constituye un diagrama de interconexión de objetos. Este diagrama es un “esquemático”, consistente de componentes interconectados. Cada componente tiene conectores que describen sus posibles interconexiones con otros componentes. Los diagramas de interconexión pueden representar ya sea un circuito eléctrico, un circuito hidráulico, un sistema térmico, un diagrama de bloques, un sistema de control heterogéneo (el controlador junto con el proceso controlado), o una máquina de estados digital, ente otros. Las características y el valor de los parámetros de los componentes, se especifican utilizando la “ventana de configuración” del componente. A manera introductoria, o como “ejemplo motivador”, del modelado con base en ecuaciones con Modelica, supóngase que se desea analizar el comportamiento de un sistema dinámico, modelado por la ecuación diferencial de segundo orden d2 y(t ) dy(t ) + 2ζ ωn + ωn2 y(t ) = ωn2 Ku(t ), dt 2 dt
(4.1)
ante un estímulo tipo escalón u (t ) = 2 para t ≥ 0,2 s, cuyos parámetros son K = 2,5, ωs = 10,0 rad−1 y ζ = 0,40. En Modelica se tiene la funciónder , derivada de primer orden (d/dt ), por lo que (4.1) debe escribirse, utilizando la variable auxiliar x (t ), como x(t ) =
d y(t ) , dt
dx(t ) + 2ζ ωn x(t ) + ωn2 y(t ) = ωn2 Ku(t ). dt
(4.2) (4.3)
El textoecuaciones, del “programa” utilizando es (modelo) Modelica, para realizar la simulación deseada,
4.2. Fundamentos de Modelica
49
m od el SistemaSegundoOrden // Ejemp lo introd uctorio parameter Real K = 2 .5 "ganancia" ; parameter Real wn = 10.0 "frecuen cia natur al"; parameter Real z = 0 .4 "raz´on amortig uamient o" ; Real x ( start = 0, fix ed = tr ue) ; Real y ( start = 0, fix ed = tr ue) "respuesta" ; Real u "est´ımulo" ; equation u = if ti me > = 0 .2 then 2 else 0; x = de r( y ) ; de r( x ) + 2 * z * wn * x + w n ^ 2 * y = w n ^ 2 * K * u ; annotation( experiment ( StartTime = 0, StopT ime = 2.0, Tolerance = 1 e - 006, Inter val = 0.005 ) ) ; en d SistemaSegundoOrden;
De la descripción anterior del problema a resolver, se hace evidente la diferencia en la forma en que se puede establecer el modelo Modelica empleando ecuaciones, respecto a la que se debe utilizar en los lenguajes en que se hace uso deinstrucciones de asignación. El código escrito en Modelica, no representa un conjunto de instrucciones a ejecutar en forma secuencial. Es una declaración que describe el sistema dinámico que se desea simular, en término de sus variables y las relaciones existentes entre estas. Por lo tanto, esta descripción debe ser compilada y convertida en un conjunto de instrucciones (ecuaciones) posible de ser resuelto numéricamente. El ordenelenmodelo, que se definen parámetros y variables, y luego las ecuaciones que constituyen no tienelos ninguna relevancia. En la figura 4.1, se muestran el estímulo aplicado y la respuesta del sistema simulado, para el intervalo de tiempo 0 ≤ t ≤ 2 ,0 s, obtenidos con el ambiente de modelado y simulación OMEdit. Más adelante, se verá la forma en que el modelo es escrito y el uso de los ambientes gráficos OMEdit de OpenModelica, y Model Center y Simulation Center de SytemModeler, para realizar el modelado, la simulación y el despliegue de las variables. También se verá el uso de JModelica.org, junto con un interprete interactivo en Python, para realizar la simulación y la optimización de los modelos Modelica.
4.2 Fundamentos de Modelica Como lo es en todo lenguaje de programación para computadoras digitales, los programas (modelos) Modelica deben cumplir con ciertas convenciones de notación, sintaxis y ejecución. un emplea lenguajeuna dedescripción modelado yno simulación sistemas orientadoModelica a objetos,esque causal deldesistema condinámicos base en ecua-
50
4 El lenguaje Modelica
Figura 4.1: Comportamiento del sistema de segundo orden ciones. Su entidad básica es la clase. Los objetos son miembros de las clases. Los objetos interactúan entre si, por medio de los conectores. Se describen adelante las principales características del lenguaje Modelica, con base en la Versión 3.3 de su especificación M ( odelica Association, 2012)
4.2.1 Estructura de un modelo Modelica La estructura general, de la lista de instrucciones de un modelo Modelica, es mo d el NombreModelo; constant .. . // declar aci´ on de las con sta nte s parameter .. . // declar aci´ on d e lo s pa r´ ametros .. . // declar aci´ on de var iab les ( con condic iones initial equation // sec ci´on optat iva .. . equation // con jun to de ecu aci one s de l mod elo .. . en d NombreModelo;
inici ales )
La declaración de una clase, se inicia con la palabra claveclass o model, seguida del nombre de la clase. El programa puede definir una clase (class ), un modelo) o(model ), una función (function ), un conector (connector ), un registro (record un bloque (block ).
4.2. Fundamentos de Modelica
51
Las palabras clave model y class son equivalentes e intercambiables. Las clases connector, record, block y function, tienen propiedades especiales. La declaración de una clase, crea un “nombre tipo” en Modelica, que hace posible declarar variables de este tipo, conocidas como objetos o miembros de la clase. Definida una clase, los objetos son miembros de la clase, heredan sus características y propiedades, a los cuales se accede con la notación punto (.). El objeto se crea precediendo el nombre de la variable con el nombre de la clase (tipo). Cada objeto puede utilizarse como un “registro”, que hereda todos los atributos de la clase. La declaración de un objeto de una clase la “crea”. Se reserva memoria para el y se inicializan sus variables. Se establece una jerarquía de clases , de manera que las variables de una clase son objetos (“hijos”, herederos) de una clase de mayor nivel y las de esta, son a su vez objetos de una clase de un nivel aún mayor. La declaración de la clase (modelo, función, etc.) termina con la palabra clave end seguida del nombre dado a esta. En el modelo Modelica, la primera parte es la sección de declaraciones de las constantes, parámetros y variables, con base en el “tipo” de información que almacenan, ya sean estos tipos básicos ( Real, Integer, Boolean, ...), o de una clase definida (Voltage, Inductance, Mass, Force, ...). La palabra clave equation, separa la sección de declaraciones de la de ecuaciones, en la que se establece el comportamiento de las variables del sistema simulado. Cada línea de declaración y cada ecuación, se termina con un punto y coma (;).
4.2.2 Clases especializadas El block es una clase con una causalidad definida. Esta es similar a la clase model, con la restricción que todas las variables de un conector de unblock, deben llevar el prefijo input o output. La clase connector, se utiliza para establecer la estructura de los puntos de interfaz (conexión), de un componente. La function es una clase que puede ser llamada. Los paquetes (package) solo pueden contener declaraciones de clases y constantes. Estos proveen una manera de agrupar definiciones relacionadas y de encapsular bibliotecas en una forma jerarquizada. Además, evitan el conflicto entre nombres de definiciones, ya que estos estarán precedidos por el nombre del paquete (notación punto).
52
4 El lenguaje Modelica
Estos permiten que los elementos del paquete sean importados, utilizando import. Se puede importar el paquete “completo”, o una o más definiciones en particular e incluso, estas se pueden renombrar: import import
nombrePaquete; nombrePaquete.nombreDefinicion;
import
nuevoNombre
= nombrePaquete.nombreDefinicion;
Similar a los paquetes es eloperator, pero este solo puede contener declaraciones de funciones.
4.2.3 Convención para los nombres En Modelica existe una convención no forzada de uso general, para la asignación de los identificadores (nombres) de las clases, variables, constantes, parámetros y otros elementos: • Los nombres de las clases o tipos, excepto los de las funciones, siempre empiezan con mayúscula. • Los nombres de las variables empiezan con minúscula, excepto los que son de solo una letra. • Los nombres formados por varias palabras, tienen cada palabra iniciada con mayúscula, con la palabra inicial siguiendo las reglas anteriores. A esta forma de declarar los nombres, se le denomina “tipo camello”. • El símbolo de subrayado, solo se usa al final del nombre para indicar un subíndice o superíndice. • Los nombres predefinidos para los objetos de conexión ( connector) en los modelos, son p (positivo) y n (negativo), en los componentes eléctricos, o variantes de nombres terminados con a o b para indicar los lados opuestos de un componente, como por ejemplo flange_a (izquierdo) y flange_b (derecho), en los sistemas mecánicos. Los nombres son sensibles al uso de las mayúsculas y pueden contener cualquier numero de letras y números. Solo restringido el como uso deidentificadores. las palabras clave reservadas de Modelica, las cuales noestá pueden utilizarse
4.2. Fundamentos de Modelica
53
4.2.4 Números enteros y de punto flotante Los números enteros (Integer), son secuencias de dígitos decimales en el ámbito que va desde -2147483648 hasta +2147483647 (para una implementación en complemento de dos de 32 bits). Los números en punto flotante ( Real), se expresan como números decimales o −, una secuencia incluyendo un punto (optativo) yformados seguidospor (en+forma optativa) por de undígitos indicador de exponente (E,decimal o e),+ o − y uno o más dígitos decimales como potencias de 10. El ámbito recomendado corresponde a los números de punto flotante IEEE de precisión doble±( 2.225073858572014E-308 a ±1.7976931348623157E+308).
4.2.5 Valores lógicos y cadenas de caracteres Los identificadores lógicos (Boolean) pueden tener valortrue (cierto) o false (falso). Las cadenas de caracteres ( String) aparecen encerrados ente comillas dobles (”) y pueden incluir en forma directa cualquier símbolo alfanumérico, excepto las comillas dobles (”) y la barra diagonal invertida (\). Se pueden representar algunos caracteres especiales dentro de una cadena, precediéndolos por una barra diagonal invertida: \’, \", \?, \\, \n (“new line”), \r (“return”), \t (“horizontal tab”). Se utiliza el símbolo + para concatenar las cadenas de caracteres.
4.2.6 Operadores y funciones matemáticas En Modelica, las ecuaciones, las asignaciones y las declaraciones, contienen expresiones con operadores, entre los que se incluyen: • elevar a una potencia: ^ , • multiplicación y división, ymultiplicación y divisiónde arreglos (elemento por elemento): ∗ / .∗ ./, • suma y resta, y suma y resta de arreglos (elemento por elemento): + −, • relaciones: < <= > >= == <>, • negación unitaria: not , • “y” lógico: and , • “o” lógico: or ,
54
4 El lenguaje Modelica
• ámbito de arreglos: expDe:expHasta, expDe:exPaso:expHasta, • construcción de arreglos: {exp1...}, [exp1...], {exp1...; exp2...}, [exp1...; exp2...], • acceso a elementos de un arreglo: arr[indice], • acceso a propiedades de un elemento: var.pro, • llamado a funciones: funNombre(argumentos). La evaluación de las expresiones aritméticas sigue las reglas usuales, donde los operadores de mayor precedencia se evalúan primero y donde se obedecen las leyes de conmutación y asociación. Las funciones disponibles incluyen: abs(v), sign(v), sqrt(v), exp(v), log(v), log10(v); sin(v), cos(v), tan(v), asin(v), acos(v), atan(v), atan2(x,y), sinh(v), cosh(v), tanh(v). Las siguientes funciones producen un “evento” (si no están dentro de una instrucción when): div(x,y), mod(x,y), rem(x,y), ceil(x), floor(x), integer(x). Si se desea que esto no suceda, se les puede aplicar la función noEvent. Se utiliza la función derivada der(exp1) (d/dt ), para la escritura de las derivadas de las variables en las ecuaciones. Se dispone también del tiempo “tiempo muerto” con la funcióndelay(exp1,L) o, si se quiere establecer una cota al tiempo muerto, con delay(exp1,L,Lmax).
4.2.7 Arreglos (vectores y matrices) Un arreglo se puede considerar como una colección de variables, todas del mismo tipo. En Modelica los arreglos son multidimensionales y rectangulares. Los escalares pueden considerarse arreglos de cero dimensiones. Por su parte, los vectores son un arreglo de una dimensión y las matrices arreglos de dos dimensiones. En Modelica no existen “vectores fila” o “vectores columna” y no se pude distinguir entre ellos, ya que los vectores tienen solo una dimensión. Si se desea una diferenciación de este tipo, están disponibles las matrices columna y las matrices fila, que son sus correspondientes equivalentes de dos dimensiones. El número de dimensiones de un arreglo es fijo, no se puede cambiar en el transcurso de la ejecución del programa. Sin embargo, el tamaño de las dimensiones del arreglo se puede calcular durante la ejecución. Los arreglos se pueden definir de dos formas diferentes, como se muestra adelanCt corresponde al parámetro de sustitución para la clase de te. estas, la del definición losEn elementos arreglo (Boolean, Integer, Real, String, tipos de enumeración). La
4.2. Fundamentos de Modelica
55
cota superior de la dimensión (n, m) debe ser tipo entero o el nombre E para los enumerados o lógicos. Los dos puntos (:) indican que la cota superior de las dimensiones es desconocida. Declaración de los arreglos: • Ct x; , escalar (dim-0), • Ct[n] x; o Ct x[n];, vector (dim-1) de n elementos, • Ct[E] x; o Ct x[E];, vector con índice mediante enumeración tipo E, • Ct[n,m] x; o Ct x[n,m];, matriz (dim-2) de nxm elementos, • Ct[1] x; o Ct x[1];, vector (dim-1) representando un escalar, • Ct[1,1] x; o Ct x[1,1];, matriz (dim-2) representando un escalar, • Ct[n,1] x; o Ct x[n,1];, matriz (dim-2) de una columna con n elementos, • Ct[1,m] x; o Ct x[1,m];, matriz (dim-2) de una fila con m elementos, • Ct[n1,n2,...,nk]x; o Ct x[n1,n2,...,nk];, arreglo (dim-k). Algunos constructores de arreglos particulares son: • identity(n), devuelve una matriz identidad nxn , • diagonal(v), devuelve una matriz cuadrada diagonal, con los elementos del vector v en la diagonal, • zeros(n1,n2,...), devuelve un arreglon 1xn2xn3x... lleno de “ceros”, • ones(n1,n2,...), devuelve un arreglon 1xn2xn3x... lleno de “unos”, • fill(s,n1,n2,...), devuelve un arreglo n1xn2xn3x... con todos los elementos iguales al escalar o arreglo s, • linespace(x1,x2,n), devuelve un vector de n elementos linealmente espaciadoa entre x 1 y x 2, incluyendo los valores extremos,n ≥ 2. Formación (acceso a los elementos) de los arreglos, vectores y matrices: • array(A, B, C ), devuelve un arreglo formado por su argumentos, todos estos deben ser del mismo tamaño y del mismo tipo, • vec = {1,2,3,...},
56
4 El lenguaje Modelica
• mat = {{11,12,13,...},{21,22,23,...},{...}}, • A[i,j], elemento i,j del arreglo A, • A[:,j], devuelve un vector con todos los elementos de la columnaj del arreglo A, • A[i,:], devuelve un vector con todos los elementos de la filai del arreglo A. Funciones de álgebra vectorial: • transpose(A), permuta las primeras dos dimensiones del arreglo A, • outerProduct(v1,v2), devuelve el producto v1 * traspuesta(v2), • symetric(A), devuelve una matriz cuyos elementos de la diagonal y sobre esta, son los correspondientes a la matriz A, y cuyos elementos debajo de la diagonal se hacen iguales a los que están sobre la diagonal de A. • cross(v1,v2), devuelve el producto cruz de v1 con v2, • La igualdad A=B, la asignación A:=B, y la suma y resta C:= A+/-B de escalares, vectores, matrices y arreglos, están definidas elemento por elemento y requieren que size(A)=size(B), • La multiplicación C:=s*A de un escalar, vector, matriz, o arreglo A, por un escalar s , está definida elemento por elemento, • La división C:=A/s de un escalar, vector, matriz, o arreglo A, por un escalars, está definida elemento por elemento, • La multiplicación elemento por elemento, de dos arreglos A y B, es C:= A.*B, • La división elemento por elemento, de dos arreglos A y B, es C:= A./B, • La multiplicación C:=A*B de dos vectores (v) o matrices (q), esta definida para los casos: v[n]*v[n]=escalar, v[n]*q[n,m]=v[m], q[n,m]*v[m]=v[n], q[n,m]*q[m,p]=m[n,p], • La elevación a una potencia, elemento por elemento C:=A.^B, requiere que A o B sean escalares, o que size(A)=size(B). Funciones operadores de “reducción”: • min(A), devuelve el elemento más pequeño del arreglo A,
4.2. Fundamentos de Modelica
57
• min(x1,x2), devuelve el menor entre los escalares x1 y x2, • max(A), devuelve el elemento más grande del arreglo A, • max(x1,x2), devuelve el mayor entre los escalares x1 y x2, • sum(A), devuelve la suma escalar de todos los elementos del arreglo A, • product(A), devuelve la multiplicación escalar de todos los elementos del arreglo A. Otras funciones: • ndims(A), devuelve el número de dimensiones del arreglo A, • size(A), devuelve un vector de largo ndims(A) conteniendo los tamaños de las dimensiones del arreglo A, • size(A,i), devuelve el tamaño de la dimensión i del arreglo A, • vector(A), devuelve un vector con todos los elementos del arreglo A, • matrix(A), devuelve una matriz con las dos primeras dimensiones del arreglo A.
4.2.8 Operadores que generan un evento Existen eventos temporales, que ocurren en un instante determinado (se conoce el instante en que se producen) y eventos de estado , generados por un cambio en la condición de una variable, de los cuales no se conoce con antelación en que instante ocurrirán. Los operadores relacionados con eventos son: initial() (ocurre al inicio de la simulación), terminal() (al finalizar una simulación exitosa), noEvent(expr) (hace que la expresión “expr” se tome en forma literal, no generando un evento), smooth(p,expr) (para p > 0, regresa la expresión real “expr” e indica que esta es diferenciable p veces), sample(inicio,periodoMuestreo) (genera eventos instantáneos cada “periodoMuestreo” a partir de “inicio”), pre(y) (regresa el “límite por la izquierda” de “y” en un evento),edge(b) (b and not pre(b)), change(v) (v<>pre(v)), reinit(x,exp) (dentro de una cláusula when reinicializa “x” con “expr”). La función clock genera eventos temporales (“tictac” de reloj) y la función sample muestrea una variable continua, proveyendo una variable con valor solo en
instantes determinados (discreta), en sincronía con un reloj.
58
4 El lenguaje Modelica
4.2.9 Operadores noEvent y smooth El operador noEvent(expr) hace que la expresión real “expr” se tome en forma literal, en vez de generar funciones de cruce. Se debería utilizar el operador smooth(p,expr) en vez del operador noEvent, sin embargo smooth no garantiza que no se produzcan eventos, por lo que se debe noEvent utilizar dentro de smooth Cuando hay un cambio de valor. en una relación Real, por ejemplo var > num , la integración del modelo se detiene y se genera un evento. El cambio del valor de la relación solo puede ocurrir en un evento, por lo que las relaciones Real inducen un evento (de estado o tiempo). La relación que genera el evento cambia su valor antes de que el modelo se evalúe en el instante del evento, por lo que se requiere un mecanismo de búsqueda de raíces, para determinar un intervalo de tiempo pequeño donde la relación cambia de valor. Por ejemplo, si el modelo incluye la relación var2 = if var 1 > vM ax then vMax else var1;
durante la simulación se evalúa siempre la misma rama de la ecuación if . La integración se detiene en el momento en que var 1 − vMax cruce por cero. La expresión cambia entre false y true. En el instante del evento, se selecciona la rama correcta de la relación y la integración se reanuda. Los métodos de integración continua de orden n ≥ 1 requieren ecuaciones del modelo continuas y diferenciables hasta el orden n . Para que las relaciones se tomen en forma literal y no se genere un evento, estas deben incluirse dentro de un operador noEvent. En muchos de los ejemplos mostrados posteriormente, se utilizarán expresiones de la forma general .. . valorEstimulo .. .
= if ti me > = tiempoEsc alon
valo r1 else valor0;
para representar un cambio tipo escalón en una variable en un instante específico, usualmente en el estímulo aplicado (“fuente”). En este caso, se conoce el instante (“tiempoEscalon”) en que se produce el evento, la discontinuidad en la variable. Este es un evento temporal. El procedimiento de solución numérica del modelo, puede establecer con antelación la ocurrencia del evento. Al ejecutarse la simulación, el modelo se resuelve desde el instante inicial (“Start Time”) hasta el instante tiempoEscal´ on y luego se reinicia desde este instante, hasta
59
4.2. Fundamentos de Modelica
el instante final (“Stop Time”).
4.2.10 Constantes, parámetros y variables El nombre de las variables, inicia con una letra, seguida por letras y números, según se detalló en la sección 4.2.3. Las variables pueden ser numéricas, con un valor real (Real), entero (Integer) o complejo (Complex), cadenas de caracteres (String) o representar un valor lógico (Boolean). Las cantidades cuyo valor nunca cambia son constantes. Estas se definen utilizando constant para asignarles su nombre y valor. Por ejemplo: constant constant
Real g = 9.8; // acelera ci´ on de la gr av ed ad Real pi = 3.141593;
Las cantidades cuyos valores pueden variar, de una simulación a otra, pero permanecen contantes durante ella (son especificadas por anticipado), son parámetros y se define utilizando parameter. Por ejemplo: parameter parameter
Real areaTanque = 25.15; // are ´ a del Real R = 5 , L = 0. 1 0, C = 2;
tan que , m^2
Los parámetros que son de un mismo tipo, pueden listarse en una misma declaración. Las variables (nombre) junto con su tipo (real, entero, etc.), deben definirse en la parte inicial del programa. Esta definición puede incluir su valor inicial (en t = t0 ) o start. Por ejemplo: velocidadMasa
Real ( start
= 0, fix ed = tr ue) ;
Las variables que son de un mismo tipo, pueden listarse en una misma declaración. Los atributos que se pueden especificar para las variables del tipoReal incluyen: quantity= , texto que describe lo que la variable representa;start= x.xx, valor inicial (sugerido o fijo) de la variable; fixed=, false si el valor inicial es solo una ''
''
x.xx, “sugerencia” o true , si elmax= valorx.xx inicial debepermitido tomarse tal como seunit= indica; min=, unidavalor permitido mínimo; , valor máximo; ' '
''
60
4 El lenguaje Modelica
des físicas; displayunit= es desplegado.
''
''
, unidades físicas en las que el valor de la variable
4.2.11 Inicialización de las variables Antes de que se realice cualquier operación con el modelo Modelica, es necesario asignar valores iniciales a todas las variables en el modelo (inicialización). En esta etapa incluso las derivadas (der(exp1)), son consideradas variables algebraicas desconocidas. Los valores preseleccionados sugeridos para las variables son: • variables numéricas: cero, • variables de cadenas de caracteres: cadena vacía “”, • variables lógicas: falsas, • variables enumeradas: valor mínimo . En forma predeterminada, los valores de las constantes y de los parámetros son fijos (fixed =true ), pero los valores iniciales s( tart) de las variables son solo una “sugerencia” de su valor inicial (fixed =false ), a menos que se declaren como = startExp, fixed =true). fijosPor (start lo tanto, los atributosstart y fixed definen las condiciones iniciales de las variables. Los valores iniciales de las variables son utilizados para resolver el “problema de valor inicial” (inicialización), utilizando las ecuaciones del modelo. De ser necesario, se pueden dar condiciones iniciales adicionales en el segmentoinitial equation, que son evaluadas solamente al establecer el punto inicial de la simulación. El atributo nominal, permite establecer un valor “nominal” para la variable (no hay ningún valor preestablecido para este), que puede ser utilizado en análisis posteriores, como por ejemplo para el escalamiento del modelo. Las variables locales de una función, tienen un valor no especificado, a menos que se establezca explícitamente.
4.2.12 Comentarios y descripciones En los programas Modelica hay dos tipos de “comentarios”. Los comentarios de descripciones (que no son realmente comentarios) y los comentarios al definición código del oprograma (modelo).
61
4.2. Fundamentos de Modelica
• Los comentarios de definici´on , son descripciones que acompañan la definición del modelo, las constantes, los parámetros y las variables. Estos son tomados en cuenta por el ambiente de programación con Modelica, para uso posterior. Estrictamente hablando, estos no son “comentarios”, son parte de la declaración del sistema simulado. ' '
''
Los comentarios de definición, permiten introducir una descripción o definición de, por ejemplo, un parámetro o una variable. • Hay comentarios al código, al final de una línea, // texto de comentario (el texto hasta el final de la línea). Este es ignorado por el compilador. Una línea de comentario en el modelo, se inicia con // . • También hay comentarios al código de varias líneas. El siguiente texto que puede abracar varias líneas /* texto de comentario */ es ignorado, incluyendo las terminaciones de línea. Los comentarios no se pueden anidar (texto de comentario dentro de otro texto de comentario).
4.2.13 Ecuaciones del modelo Modelica unasignación, lenguaje que se fundamenta en eldeuso de ecuaciones, en vez de enumeracionesesde como otros lenguajes programación. A diferencia de la mayoría de los lenguajes de programación, donde el símbolo = significa asignación, esto es, que el resultado de la evaluación de la expresión a su derecha se asigna a la variable indicada a su izquierda, en Modelica, el símbolo = significa igualdad, la expresión a su izquierda es igual a la expresión a su derecha. El símbolo de igualdad establece una ecuación. El símbolo para una asignación en Modelica es := . Las ecuaciones establecen una relación no causal entre las variables. El modelado no causal es una forma de modelado declarativo, fundamentado en el uso de ecuaciones en vez de asignaciones. Las ecuaciones no especifican cuales variables son “entradas”, ni cuales son “salidas”. En contraste, en los enunciados de asignación, el flujo de la información está establecido, la variable al lado izquierdo del símbolo de asignación, son siempre salidas (resultados), y las variables a la derecha son siempre entradas (datos para las expresiones a evaluar). La causalidad en los modelos con base en ecuaciones, no está especificada y solo se establece hasta que conjunto de ecuaciones se resuelva. Existen varios tiposelde “ecuaciones”:
62
4 El lenguaje Modelica
Figura 4.2: Péndulo
• Las ecuaciones “normales” de igualdad del modelo, se establecen en las secciones equation, incluyendo ecuaciones de conexión c( onnect). • Las ecuaciones de declaración, forman parte de la declaración de constantes, parámetros y variables. • Las ecuaciones de modificación , son utilizadas para modificar un atributo de una clase, como establecer un valor inicial. • Las ecuaciones iniciales , especificadas en la sección initial equation, o como ecuaciones de atributo, son utilizadas para resolver el aproblema del de “valor inicial” (las condiciones iniciales de las variables), previo la ejecución la simulación. El modelo Modelica debe estar bien determinado para poder solucionarlo. El (incógnitas), debe ser igual al número de ecuaciones . En este sentido, se cuentan como “ecuaciones” tanto las ecuaciones como tal, como los enunciados de asignación. La palabra reservada equation, indica el inicio de la sección correspondiente a las ecuaciones del modelo. Dado que el modelo del sistema está constituido por un conjunto de ecuaciones algebraico diferenciales, en muchas aparecerá la derivada de una variable ( var). En Modelica esta se denota por der(var). En las simulaciones con Modelica, todas las variables son funciones de la variable independiente tiempo (time), el cual tiene unidades de segundo (s). La variabletime está disponible en todos los modelos.
número de variables
Por ejemplo, el con movimiento del péndulo de la figura 4.2, puede modelarse en coordenada polares las ecuaciones
4.2. Fundamentos de Modelica
dθ (t ) = ω (t ), dt dω (t ) = −mg sin(θ (t )), mL dt y en coordenadas cartesianas con las ecuaciones dVx (t ) 1 m = − x(t )T (t ), dt L dVy (t ) 1 m = − y(t )T (t ) − mg, L dt d x(t ) Vx (t ) = , dt d y(t ) Vy (t ) = , dt x2 (t ) + y2 (t ) = L 2 .
63
(4.4) (4.5)
(4.6) (4.7) (4.8) (4.9) (4.10)
El correspondiente modelo Modelica para la simulación del péndulo, en el primer caso es .. . equation de r( posAng ) = velAng; m * L * de r( velAng ) = -m * g * si n( posAng ) ; .. .
y en el segundo .. . equation m * de r( velX ) = -po s X / L * ten; m * de r( velY ) = ( - posY / L * te n) - m * g ; velX = de r( posX ) ; velY = de r( posY ) ; po s X ^ 2 + po sY ^ 2 = L ^ 2 ; .. .
El primer modelo, tiene dos variables {posAng (θ (t )), velAng (ω (t ))}, las cuales aparecen derivadas, y dos ecuaciones diferenciales para determinarlas. El segundo modelo, tiene cinco variables {posX (x(t )), posY (y(t )), velX (Vx (t )), velY (Vy (t )), ten (T (t ))}, de las cuales cuatro aparecen derivadas (aunque no todas
son estados), y cinco ecuaciones para su determinación. De las cinco ecuaciones,
64
4 El lenguaje Modelica
cuatro son diferenciales y una es una ecuación algebraica no lineal. Esta última, corresponde a una restricción física del sistema, la cual establece una relación no lineal entre dos de sus variables. En este segundo modelo, pareciera que la tensión ( ten(t)) en el cable del péndulo no está definida. Sin embargo, el modelo está completamente determinado (tiene cinco variables y cinco ecuaciones), de manera que la tensión en el cable del péndulo se obtiene, al resolver el modelo.
4.2.14 La ecuación terminate Aunque la ejecución de la simulación, normalmente está controlada por el intervalo de tiempo especificado para la solución del modelo, se puede utilizar la “ecuación” terminate para finalizarla bajo otra condición. Generalmente, la ecuación terminate se utiliza para proveer un criterio adecuado para finalizar la simulación, en vez de hacerlo en un tiempo específico, y devolver al usuario una indicación de la razón de la detención de la simulación. Una forma de utilizar esta ecuación es .. . when condicionTerminal then terminate( text o explic ativo en d wh en;
' '
);
.. .
4.2.15 Algoritmos Los algoritmos (algorithm) son secuencias de instrucciones, que se ejecutan en orden y pueden estar insertados en una sección de ecuaciones. algorithm .. . ( otr a palab ra clav ) e
Dentro de una sección algorithm no se puede utilizar la ecuación de igualdad (=), ni ninguna otra forma de ecuación. Un algoritmo, es una sección del código del programa que permanece junta y cuyos enunciados se ejecuta en el orden en que se han estipulado. El operador de “asignación” en los enunciados de un algoritmo es:=. El enunciavar:= exp1 exp1 a la derecha del símbolo :=, se evalúa do queen la var expresión y el resultado se, indica almacena .
4.2. Fundamentos de Modelica
65
Las expresiones de asignación dentro de un algoritmo, incluido como parte del modelo, pueden utilizar como “entradas externas” (a la derecha de la declaración de asignación) variables definidas en la sección de ecuaciones. A su vez, las variables a las que el algoritmo les asigne un valor (variables a la izquierda de la declaración de asignación) son las “salidas del algoritmo” y pueden utilizarse en las ecuaciones del modelo. En el caso de asignaciones dentro de un algoritmo, que involucran el llamado a una función, los resultados devueltos por la función se guardan como ( vout1,vout2,... ) : = nombreFunc ( vin1,vin2,... ) ;
4.2.16 Declaraciones Las declaraciones son construcciones imperativas permitidas en las secciones secuenciales (algoritmos). • Declaraciones de asignación (:=): varRef
: = ex p;
La expresión exp es evaluada y el resultado es almacenado en la variable varRef. • Declaración de “interrupción” (instrucción break): La declaración break pone fin a la ejecución de la declaración del lazo while o for más interna que la contenga. La ejecución continúa después delwhile o el for. Solo se puede utilizar dentro de unwhile o for, dentro de una sección algorithm. • Declaraciones condicionales (ecuaciones if ): La sintaxis de una declaración if es: if exp1 then .. . elseif exp2 then .. . else .. . en d if ;
La condicional en un enunciado if o elseif, debe ser una expresiónexpresión lógica escalar.
66
4 El lenguaje Modelica
Como en Modelica el número de ecuaciones no puede cambiar durante la simulación, si la ecuación if está incluida en una sección equation, el número de ecuaciones en cada una de sus cláusulas, debe ser el mismo. • Declaraciones repetitivas (ecuaciones de lazo for ): La sintaxis de una declaración for es: fo r indices .. . en d fo r;
loop
fo r in d in exp1 loop .. . en d fo r;
En una instrucciónfor , exp1 debe ser un vector. fo r i in 1 : 10 loop .. . en d fo r; fo r x in 2 .5 : 0 .5 : 15 loop .. . en d fo r;
Las instruccionesfor pueden ser anidadas (tener varios índices). • Declaraciones “cuando” (ecuaciones when): La sintaxis de una declaración when es: when exp1 then .. . elsewhen exp2 then .. . end whe n;
La expresión condicional en un enunciado when o elsewhen, debe ser una expresión lógica discreta escalar o vectorial. wh en {v a r > 5, sample ( 8 .5 ) , v a r < 2 5 } th en y : = ...; .. . end whe n;
4.2. Fundamentos de Modelica
67
Las declaraciones when, no se pueden anidar ni utilizar dentro de una función o una declaración if , for o while. • Declaración “salir” (enunciado return): Solo se puede utilizar dentro de las funciones. • Declaraciones “mientras” (ecuaciones de lazo while): La sintaxis de una declaración while es: while exp1 loop .. . end whil e;
En una ecuación while, exp1 debe ser una expresión lógica escalar. Esta es evaluada y si es cierta, todos los enunciados enmarcados dentro de la ecuación while se ejecutan, excepto si se encuentra un enunciadobreak o un enunciado return. Si exp1 es falsa, la ejecución continúa después de la ecuación while.
4.2.17 Funciones Las funciones (function) contienen un procedimiento algorítmico, a ser ejecutado cuando se les llama. Los parámetros son especificados con la palabra claveinput y los resultados con la palabra clave output. Es posible asignar valores predeterminados, tanto a las entradas como a las salidas, cuando se declaran. function nombreFunc input tipo X1 vin1; // var iab les de ent rad a input Real vin2; input tipo X2 vin3 : = ...; // ent rad a co n val or pre dete rmi nado .. . output tip oY vout 1; // var iab les de sal ida output Real vout2; output tipo Y2 out 3: = ...; // sal ida co n val or pred ete rmin ado .. . protected .. . // variab les local es algorithm .. . .. . en d nombreFunc;
68
4 El lenguaje Modelica
El llamado a una función se hace como ( vout1,vout2,... ) = nombreFunc ( vin1,vin2,... ) ; .. . vout = nombreFunc2 ( vin11,vin12,... ) ; .. . re s = otraVar * nFunc3 ( vinZ1,vinZ2 ) ; // nFu nc3
dev uel ve 1 res ult ado
donde vinX son los valores de entrada (parámetros) yvoutY los resultados (salidas), devueltos por la funciónnombreFuncXX. El orden relativo en que se declaran los parámetros de entrada es importante, ya que este determina el orden en que se asocian los parámetros de la llamada de la función, con los parámetros formales de la función. También es importante el orden en que se declaran las salidas, ya que este establece la relación entre las variables que reciben los resultados en el llamado de la función, cuando la función regresa más de un resultado. Cuando la función devuelve más de un resultado, para poder utilizarlos todos y no solo el primero, debe hacerse el llamado a la función al lado derecho de una ecuación o asignación, colocando entre paréntesis al lado izquierdo de la ecuación o asignación, la lista de las variables que reciben los resultados. Se puede utilizar el enunciado return para terminar el llamado de la función en ejecución. Este solo se puede utilizar dentro de una sección algorithm de la función. Una función puede ser recursiva, esto es, incluir un llamado a si misma para resolverse, terminando el proceso recursivo en el llamado a una función con una solución directa.
4.2.18 Conectores y conexiones Las conexiones entre los terminales (conectores) de los componentes, se efectúan con una ecuación de conexión (connect) cuya sintaxis es: connect ( refTerminal1
, refTerminal2 ) ;
La ecuación de conexión toma las referencias a dos conectores (objetos de la clase connector). En forma optativa, las referencias a los conectores pueden ser vectores. En este caso, las dimensiones de los dos vectores deben coincidir. La conexión la pareja de elementos de los vectores con el mismo índice, se establece comoentre una conexión escalar.
69
4.2. Fundamentos de Modelica
Las variables conectadas por ecuaciones de conexión, componen un conjunto de Un conjunto de conexión puede contener ya sea, solo variables de flujo (pervariables) o variables de potencial (transvariables). Cada conexión se utiliza para generar ecuaciones para las variables de flujo y las de potencial de los terminales. De igualdad para las variables de potencial, vp1=vp2=...=vpn, y de suma cero para las variables de flujo, vf1+vf2+...+vfn=0.
conexión.
Las ecuaciones de conexión solo se pueden utilizar en una sección equation.
4.2.19 Construcción de registros La declaración de un registro (record) es de la forma record procesoInfo //regi stro parameter Real proVar1; parameter Real proVar2; .. . parameter Real proVarn; en d procesoInfo; record procesoXYZ proVar1 = xx , proVar2 = yy , .. . proVarn = zz ) ;
gen´ eri co de un pro ces o
= procesoInfo ( // inform aci´ on partic ular
en d procesoXYZ;
Un registro puede contener constantes, parámetros y variables, pero no ecuaciones. Permiten agrupar información de diferente tipo.
4.2.20 Notas Las notas (annotation) no son parte del lenguaje Modelica, pero son utilizadas para indicar en el modelo, información asociada a un componente, con mucha frecuencia relacionada con el despliegue gráfico de un icono en un diagrama de conexión. Su sintaxis es: annotation( notas ) ;
donde notas es una lista de indicaciones separada por comas. Por ejemplo, la posición del icono de un capacitor, en un circuito eléctrico: .. . Modelica.El
ectrical.A
nalog.Basic
.Capacitor
capaci tor1 ( C = 0.01,
70
4 El lenguaje Modelica
( start = 0, fix ed = tru e)) ann ota tio n(Placement ( visible = true , transfo rmation ( srcin = {20,30 } , ext ent = {{- 10 , - 10 } , { 10,10 } } , rot ati on = -90 ) ) );
o las coordenadas de los extremos de los tramos de la línea de conexión, entre dos elementos de este mismo circuito .. . connect ( resistor1.n ,inductor1.p ) annot ation( Line ( points { { -40,60 } , { - 29.9777 ,60 } , { - 29.9777 ,59.9553 } , { - 29.9777, 59.9553 }})) ;
=
Este tipo de notas es creado y leído por el editor para el modelado gráfico. Las notas también pueden ser utilizadas para embeber en el programa, las condiciones en que se debe efectuar la simulación ( experiment) con el modelo, como por ejemplo: .. . annotation( experiment ( StartTime .. .
= 0, StopT ime = 1 .4 ) ) ;
La nota Documentation permite incluir un texto descriptivo del modelo, en formato html, el cual se desplegará en el navegador de documentación, cuando se seleccione con el botón derecho del apuntador “View Documentation”, sobre el nombre del modelo en el navegador de bibliotecas. La “documentación” de un modelo podría ser, por ejemplo mo d el CircuitoElectricoDiagrama "Circu ito el´ ect ric o de eje mpl o" .. . annotation( Documentation ( info = "
Eje mpl o de l mod ela do gr afi ´ co , media nte la interco nexi´ on de compon entes de la biblio teca Modeli ca.El ectric al .
" , revis ions = "
V1.0 201 4.may o.2 3 i> po r vm a li>
" ) ) ; en d CircuitoElectricoDiagrama;
la cual se desplegará como se muestra en la figura 4.3 para el caso de OpenModelica y en la figura 4.4 para SystemModeler. El formato (.Format) y la estructura (.Structure) que se deben utilizar, para la de la documentación html de un componente o modelo, se describen en elaboración la guía del usuario Modelica.UserGuide.Conventions.Documentation.
4.2. Fundamentos de Modelica
Figura 4.3: OpenModelica - Despliegue de las documentación asociada a un modelo
Figura 4.4: SytemModeler - Despliegue de las documentación asociada a un modelo
71
72
4 El lenguaje Modelica
El uso o atención que se le de, a lo indicado en las notas ( annotation) de un modelo, dependerá del compilador utilizado.
4.2.21 Extensión o ampliación de los modelos Una característica importante de Modelica, es la herencia de las propiedades de las clases. Una manera de emplear esta característica, es extendiendo o ampliando un modelo con el enunciado extends. Este permite reutilizar la definición de un modelo e incorporarle nuevas características, o modificar algunas de las suyas. La inclusión en un modelo, de la instrucción .. . extends .. .
NombreModeloOriginal;
incorpora en el nuevo modelo la definición completa del modelo NombreModeloOriginal.mo. Esto es, en nuevo modelo hereda todas las características de este. Partiendo del modelo incorporado, el nuevo lo amplia con sus características particulares. En forma alternativa, la inclusión en un modelo de la instrucción .. . extends .. .
NombreModeloOriginal ( nobreParam = nuevoValor
, ...) ;
incorpora en el nuevo modelo la definición completa del modelo NombreModeloOriginal.mo, pero modifica el valor asignado srcinalmente a algún parámetro, en el ejemplo, al parámetro nombreParam. La posibilidad de incluir en la definición de un modelo, las características de otro u otros (se puede utilizar más de una instrucción extends), permite construir modelos complejos, a partir de otros más simples.
4.2.22 Estructura jerárquica de los modelos Como se ha indicado, dentro de las declaraciones de un modelo, se puede hacer uso de uno previamente definido, para crear uno nuevo más complejo. Se pueden crear objetos que son instancias de otros más simples. Por ejemplo, si se desea simular un sistema formado por dos procesos de primer orden en serie, primer orden, comose puede definir primero el “modelo genérico” de un proceso de
4.2. Fundamentos de Modelica
73
Figura 4.5: Respuesta de dos sistemas de primer orden en serie m od el SisPrimerOrden "Sist ema de pri mer ord en" parameter Real K = 1 .0 "Ganancia" ; parameter Real T = 1 .0 "Const ant e de tie mpo"; Real u , y( start = 0.0, fix ed = tr ue) ; equation T * de r( y ) + y = K * u ; en d SisPrimerOrden;
y luego el del sistema formado por los dos procesos en serie, como m od el SisPrimerOrdenSerie2 // Do s si st em as de pr im er or de n en se ri e SisPrim erOrden Sis1 (1K = 2. 5, T = 5 ) , Sis 12 ( K = 2 , T = 2 ) ; equation Sis11.u = if ti me > = 0 .5 then 2 else 0; Sis12.u = Sis11.y; annotation( experiment ( StartTime = 0, StopT ime = 40 , Tolerance = 1 e - 06, Inter val = 0.08 ) ) ; en d SisPrimerOrdenSerie2;
En el modelo SisPrimerOrdenSerie2, los objetos Sis11 y Sis12 son dos instancias diferentes del modelo SisPrimerOrden. Las curvas de respuesta de los sistemas de primer orden en serie, para los parámetros establecidos en el modelo, se muestran la figura 4.5.hacer la conexión en Como segundo ejemplo, considérese ahoraenque se desea
74
4 El lenguaje Modelica
paralelo, de dos procesos compuestos cada uno de ellos, por dos sistemas de primer orden en serie. Con base en el modelo SisPrimerOrden, se define la conexión de dos de estos en serie como mo d el Sis2POSerie // Con exi on en se rie ( 2 Sis PO ) SisPrim erOrden Sis1 (1K = 1 , T = 1 ) , Sis 12 ( K = 1 , T = 1 ) ; Real u , y( start = 0, fix ed = tr ue) ; equation u = Sis11.u; Sis12.u = Sis11.y; y = Sis12.y; en d Sis2POSerie;
La conexión en paralelo, de dos modelos Sis2POSerie compitiendo entre si, es mo d el Sis2SerieParalelo // Conex i´ on en pa ra le lo de do s pr oc es os co n do s si st em as de // pri mer or den en ser ie Sis2PO Serie SisSe r1 ( Sis11.K = 10, Sis11 .T = 20, Sis12 .K = 2 , Sis12.T = 5 ) , Sis Ser 2( Sis11.K = 4, Sis 11. T = 2, Sis 12. K = 1.2 5, Sis12 .T = 0 .5 ) ; Real u, y; equation u = if ti me > = 0 .5 then 2 else 0; SisSer1.u = u ; SisSer2.u = u ; y = SisSer1.y - SisSer2.y; annotation( experiment ( StartTime = 0, StopT ime = 150, Tolerance = 1 e - 06, Interv al = 0.15 ) ) ; en d Sis2SerieParalelo;
Los objetos SisSer1 y SisSer2 en el modelo Sis2SeriParalelo, son dos instancias del objeto Sis2POSerie, las cuales a su vez, incluyen objetos que son instancias de SisPrimerOrden. La estructura jerárquica de los objetos en el modelo Sis2SerieParalelo, se muestra en la figura 4.6. Para los valores de los parámetros del ejemplo, la competencia entre una dinámica lenta y una rápida con una ganancia menor, da como resultado que la salida del sistema presente características de “respuesta inversa”, esto es, que la respuesta inicial en laevoluciona figura 4.7. en sentido contrario a como lo hace finalmente, tal como se aprecia
4.2. Fundamentos de Modelica
Figura 4.6: Objetos del modelo Sis2SerieParalelo
Figura 4.7: Respuesta del proceso con dos sub sistemas en competencia
75
76
4 El lenguaje Modelica
Figura 4.8: Etapas para la solución de un modelo Modelica
4.3 Secuencia para la simulación de un modelo Modelica En la figura 4.8, se muestran las etapas en que se ejecuta la solución y simulación, de un modelo Modelica. Mediante el editor gráfico o el de texto, se desarrolla el modelo Modelica (programa fuente). Este es verificado (sintaxis, clases, conexiones, etc.) y “traducido” a un “modelo extendido”, constituido por un conjunto de ecuaciones diferenciales y algebraicas, las cuales son analizadas y optimizadas (reducción a un mínimo), para obtener un conjunto de ecuaciones “ordenadas” según el flujo de información (en la secuencia correcta para su solución). El modelo se compila a código C y se enlaza a la “rutina de solución” numérica de las ecuaciones, para su solución (simulación). El valor de los parámetros y los valores iniciales estimados (o fijos) de las variables, son tomados de la definición del modelo, así como el control de la simulación (tiempo inicial, tiempo paso, método solución). Los resultados de lafinal, simulación son un de conjunto de funciones del tiempo, que se
77
4.4. Modelado no causal versus modela do causal con base en bloques
Figura 4.9: Circuito eléctrico pueden desplegar gráficamente, imprimir, o almacenar en un archivo. La conversión del modelo Modelica DAE srcinal, al modelo extendido en términos de ODE, se requiere para garantizar que en el modelo Modelica, se puedan utilizar los elementos antes de declararlos y que estos no dependan del orden en que son declarados.
4.4 Modelado no causal versus modelado causal con base en bloques Modelica permite un modelado no causal empleando ecuaciones. El orden correcto de las mismas para su solución, lo establece el compilador. Considérese el circuito eléctrico mostrado en la figura 4.9. Se desea determinar la evolución de la tensión en el capacitor C1 , cuando se aplica una tensión constante Vf . Por inspección, se obtiene que las ecuaciones que modelan este circuito eléctrico son: diL (t ) = V f − R1 iL (t ) − Vc (t ), dt dVc (t ) 1 = iL (t ) − Vc (t ). C1 dt R2 L1
(4.11) (4.12)
El programa para simular el modelo dado por (4.11) y (4.12) en Modelica es: m od el CircuitoElectrico
"Circu ito
el´ ectrico"
78
4 El lenguaje Modelica
import Modelica.SIunits. * ; parameter Resist ance R1 = 10 "resi tor R1"; parameter Resist ance R2 = 10 0 "resis tor R2"; parameter Capaci tance C1 = 0.01 "capac itor C1"; parameter Induct ance L1 = 1 .0 "induc tor L1"; Volta ge Vf "fuente" ; Volta ge Vc( start = 0, fi xed = tr ue) "tensi´on cap aci tor"; Curre nt Il( start = 0, fi xed = tr ue) "corrie nte induc tor"; equation Vf = if ti me > = 0.05 then 10 else 0; L1 * de r( Il ) = Vf - R1 * Il - Vc ; C1 * de r( Vc ) = Il - Vc / R2; annotation( experiment ( StartTime = 0, StopT ime = 1 .4 ) ) ; en d CircuitoElectrico;
Como se puede apreciar, la escritura del modelo del circuito eléctrico es directa. Las ecuaciones en Modelica, se han escrito en forma idéntica al modelo obtenido para el circuito. Posteriormente se verá como emplear los componentes predefinidos en la biblioteca estándar Modelica, utilizando ecuaciones de conexión (connect) o directamente en forma gráfica, mediante la conexión de iconos de los componentes que representan los elementos que componen el sistema. Si se deseara realizar la simulación del modelo del circuito de la figura 4.9, mediante un diagrama de interconexión de bloques, el modelo debe expresarse como un conjunto de ecuaciones de estado y de salida explícitas (modelo causal), de la forma dx(t ) = f (x(t ), u(t ), t ) , dt y(t ) = g (x(t ), u(t ), t ) ,
(4.13) (4.14)
donde x es el vector de los estados,u el de las entradas y y el de las salidas. Entonces, (4.11) y (4.12) deben manipularse para rescribirse primero como: iL (t ) =
1
t
1
L1 0
[V f − R1 iL (τ ) − Vc (τ )] dτ ,
t
Vc (t ) =
C1 0
iL (τ ) −
1 R2
Vc (τ )
dτ .
(4.15) (4.16)
Su implementación con un diagrama de bloques, se muestra en la figura 4.10. En este diagrama, cada bloque tiene una o más entradas y una salida, su causalidad está claramente definida. Como se puede observar en el diagrama de bloques, este muestrala forma en que se efectúan los cálculos . Sin embargo, la forma
los elementos del circuito están interconectados no es evidente. El diagramaendeque simulación no refleja la topología
4.4. Modelado no causal versus modela do causal con base en bloques
79
Figura 4.10: Diagrama de interconexión de bloques del sistema simulado. Además, el valor de los parámetros de los elementos, en unos casos es introducido en forma directa, pero en otros, como su inverso. Las curvas de respuesta obtenidas con los dos procedimientos, se muestran en la figura 4.11. En la figura de la izquierda (a) se muestra la respuesta del modelo con el conjunto de ecuaciones y en la figura de la derecha (b), la obtenida con el diagrama de interconexión de bloques. La simulación mediante el uso de diagramas de bloques, tiene como limitación inherente, que el flujo de información en cada bloque es unidireccional, esta va de las entradas hacia la salida. Por esta razón, muchas veces no es posible representar un elemento físico mediante un bloque simple. También puede suceder que en la elaboración del diagrama de bloques, aparezcan lazos algebraicos que deben “romperse” de alguna Por sumanera. parte, en Modelica el modelo está constituido por un conjunto de ecuacio-
80
4 El lenguaje Modelica
Figura 4.11: Curvas de respuesta del circuito de la figura 4.9 nes algebraico diferenciales implícitas no causales, de la forma F
dx(t ) , x(t ), z(t ), u(t ), t = 0, dt
(4.17)
y tal vez también, por un conjunto de ecuaciones de la forma y(t ) = G (x(t ), z(t ), t ) , (4.18) donde x (t ), es el vector de las incógnitas (variables) que aparecen derivadas en las ecuaciones, z(t ), el vector de las incógnitas que no aparecen derivadas,y(t ) el vector de las variables de interés (variables “medidas”) y u(t ) el vector de los estímulos aplicados. Por lo tanto, las ecuaciones del modelo del circuito eléctrico de la figura 4.9, se puede escribir en Modelica, también como mo d el CircuitoElectrico2 .. . equation // tensi on ´ de la fu en te Vf = if ti me > = 0.05 then 10 else 0.0; // an ali ´ sis de ten sio nes ( ma ll a) Vf - R1 * Il - L1 * de r( Il ) - Vc = 0; // an alisis ´ de corrie ntes ( nodo ) Il - V c / R 2 - C1 * de r( Vc ) = 0; .. . en d CircuitoElectrico2;
4.5. Modelado con base en compone ntes Modelica
81
El modelado de un sistema, expresado como un conjunto de de ecuaciones que relacionan las variables dentro del mismo, no establece cuales de ellas se consideran “entradas” o “salidas”. La relación entre lo que interesa declarar como estímulos (entradas) al sistema y las variables cuyo comportamiento se desea analizar (salidas), se establece hasta que el modelo se resuelve.
4.5 Modelado con base en componentes Modelica En Modelica, las clases tienen como base ecuaciones. Los componentes son objetos de las clases. Estas clases tienen definidas una interfaz o puerto de conexión, denominados conectores, para compartir la información entre los componentes y el “medio externo”. Los componentes están interconectados por un mecanismo de conexión, que puede visualizarse en un diagrama de conexión.
4.5.1 Los componentes Cada componente o elemento, está definido en forma independiente para poder ser reutilizado. Su definición incluye sus ecuaciones, las variables locales y las variables de conexión que se pueden utilizar. Un componente puede contener internamente, otros componentes conectados, formándose un modeloestá jerarquizado. Cada componente representado por un icono con terminales (por ejemplo un componente eléctrico como un capacitor o un resistor, o un componente mecánico como una masa o un amortiguador). La conexión entre los componentes se realiza en el diagrama, por medio de lineas que unen los terminales de conexión. Estas lineas representan una conexión física como un cable eléctrico, una unión mecánica, una unión de tuberías, u otra. La interconexión entre los componentes del sistema puede ser una conexión no causal (como en el modelado de sistemas físicos, en los cuales no se establece una dirección para el flujo de información), o una conexión causal (como en los diagramas de bloques, con un flujo de señales en una dirección específica), tal como se muestra en la figura 4.12. Con la excepción de los ejemplos del modelado de un sistema mediante un diagrama de bloques (funciones de transferencia), en los demás, las interconexiones entre los componentes de un sistema serán no causales. Cada componente, tiene asociada unavariable que fluye por el (pervariable), esta es la misma en ambos terminales, y una variable de potencial (transvariable) en cada terminal.
82
4 El lenguaje Modelica
Figura 4.12: Interconexión no causal y causal entre componentes Figura 4.13: Interconexión de los terminales de los componentes
sistema Al combinar varios componentes conenctándolos entre si, para formar un interconectado, estos interactúan por medio de sus terminales compartiendo variables
(información) (Willems, 2010). Considérese por ejemplo la interconexión de tres componentes, tal como se muestra en la figura 4.13. La unión de los terminales de los componentes en un punto (nodo), implica que: 1. Todas las transvariables (“variables de potencial”)son iguales , v12 (t ) = v 22 (t ) = v 32 (t ), 2. La suma de todas las pervariab les (“variables de flujo”) es cero, f1 t f2 t f3 t 0. ( )+
( )+
( )=
83
4.5. Modelado con base en compone ntes Modelica
4.5.2 Definición de un componente Considérese por ejemplo la definición del componente capacitor eléctrico. Se utilizará Pin , que es una clase connector empleada para especificar los terminales externos de los componentes eléctricos. En Modelica están definidas las unidades Voltage (tensión eléctrica en V) y Current (corriente eléctrica en A). Ambas son del type Voltage type Current
tipo Real.
= Real ( unit = " V ") ; = Real ( unit = " A ") ;
Definición del terminal de los componentes eléctricos
La clase connector Pin contiene dos variables, la tensión Voltage, la transvariable, y la corriente Current (flow), la pervariable. connector Pi n Vol tag e v; flow curr ent i; en d Pin;
Con base en el terminal (Pin) se define el componente de dos terminales. partial model TwoPin Pi n p, n; Vol tag e v; cur ren t i; equation v = p. v - n.v; 0 = p. i + n.i; i = p.i; en d TwoPin;
El modelo anterior es “parcial” ( partial model), o sea, que no está completamente especificado. Esto permite que un modelo parcial, pueda ser reutilizado como base para definir el modelo “completo” de otros componentes. Ahora, utilizando el componente general de dos terminales ( TwoPin), se define el capacitor eléctrico mostrado en la figura 4.14, estableciendo las ecuaciones entre sus variables, tensiónv y corriente i , sus relaciones constitutivas. El modelo del capacitor, se define “extendiendo” el modelo parcial (extends TwoPins). m od el Capacitor
"Idea l Capaci tor"
84
4 El lenguaje Modelica
Figura 4.14: Componente: capacitor eléctrico ideal
extends TwoPin; parameter Real C ( unit = " F ") ; equation C * de r( v ) = i ; en d Capacitor;
Durante la simulación, se resuelve la ecuación constitutiva del capacitor, determinándose las variablesv e i, en función de la variable independiente tiempotime ( ).
4.5.3 La ecuación
connect
ecuaLa interconexión de los componentes de un sistema se establecen por medio de ciones de conexión, cuya sintaxis es connect ( terminalElemento1
, terminalElemento2)
La ecuación de conexión recibe la referencia a dos conectores (instancias de una clase connector), que son directamente componentes de una clase de conexión, o que son propiedades de un componente que no es conector, y se accede a ellos utilizando la notación punto. En la figura 4.15 se muestra el “diagrama de conexión” del circuito eléctrico presentado en la sección 4.4. En el se han identificado los terminales positivos ( p) y negativos (n) de los componentes eléctricos. El programa de simulación de este circuito, utilizando ecuaciones de conexión es: mo d el CircuitoElectrico_conec import Modelica.Electrical.Analog.Basic. *; import Modelica.Electrical.Analog.Sources. *; Resis tor R1( R = 10 ) ; Resis tor R2( R = 10 0) ; Capaci tor C1( C = 0.01 ) ; Induc tor L1( L = 1 .0 ) ;
4.5. Modelado con base en compone ntes Modelica
85
Figura 4.15: Diagrama de conexión del circuito eléctrico Gro und g; StepVo ltage Vf( V = 10, start Time = 0.05 ) ; initial equation C1.v = 0; L1.i = 0; equation connect ( Vf. p, R1. p) ; connect ( R1. n, L1. p) ; connect ( L1. n, R2. p) ; connect ( L1. n, C1. p) ; connect ( Vf .n, g. p) ; connect ( R2 .n, g. p) ; connect ( C1 .n, g. p) ; annotation( experiment ( StartTime en d CircuitoElectrico_conec;
= 0, StopT ime = 1 .4 ) ) ;
En el modelo anterior, la conexión múltiple connect ( L1.n,R2.p ) ; connect ( L1.n,C1.p ) ;
implica que L1.n.v =R2.p.v, L1.n.v =C1.p.v,
esto es que L1.n.v =R2.p.v =C1.p.v (las “variables de ‘potencial”, tensiones eléctricas en este caso, son iguales), y también que
86
4 El lenguaje Modelica
L1.n.i +R2.p.i +C1.p.i =0 (la suma de las “variables de flujo”, corrientes
eléctricas en este caso, es cero).
4.6 Modelos Optimica Optimica es una extensión de Modelica, que permite definir 2007, un problema de optimización, para lo cual introduce nuevos elementos (Åkesson, 2008; Åkesson et al., 2010): • La clase especializada optimization. La clase optimization corresponde a un problema de optimización dinámica o estática. En la definición actual de Optimica, se supone que el problema de optimización definido por la clase optimization se resuelve “fuera de línea”, Esto es, la solución del problema de optimización involucra la simulación del modelo del sistema, pero no es posible resolver el problema de optimización durante las simulación del modelo (“en línea”). La construcción del problema de optimización Optimica, solo es válida dentro de la clase optimization. • Atributos la clase optimization: objective, startTime, finalTime y staticpara . El atributo objective define la funcional de costo a optimizar, startTime el inicio de la simulación, finalTime el final del intervalo de simulación y static (preseleccionada false) indica que la clase define un problema de optimización estática (en contraposición con la suposición preestablecida, que se trata de un problema de optimización dinámica). • Los atributos free e initialGuess para los elementos tipo Real. En Modelica los parámetros del modelo son fijos, sin embargo en Optimica es posible definirlos (al igual que a las variables de entrada, como en el caso de los problemas de control óptimo) como “libres”, con el atributo free. Junto con la definición de que un parámetro en particular se considera libre, se tiene el atributo initialGuess, para permitir dar una estimación inicial de su valor (punto de inicio de la búsqueda del valor óptimo). En el caso de las variables, el atributo initialGuess provee una estimación para todo el intervalo de simulación.
4.7. Bibliografía
87
Las variables o parámetros declarados free (libres), son los modificados por el algoritmo de solución, para la optimización de la funcional (o función) de costo. De manera preestablecida, todas las variables y parámetros del modelo tienen el atributo free=false, a menos que este explícitamente se declare como free=true. • Una función para acceder al valor de una variable en un instante específico. El nombre de la función es igual al de la variable y tiene solo un argumento, el instante en que se evalúa la variable. • Una sección constraint. En Modelica el modelo incluye la sección equation con las ecuaciones dinámicas y en forma optativa, la sección initial equation con las ecuaciones de las condiciones iniciales. Ahora, se tiene una sección adicional de ecuaciones, la sección constraint, para definir las ecuaciones de las restricciones del problema de optimización. La sección constraint, solo se permite dentro de la clase optimization. • Restricciones de desigualdad. Dentro de la sección constraints es posible establecer restricciones mediante ecuaciones de desigualdad, igualdad o puntuales (en determinado instante). • Notas ( annotation), que adicionan información complementaria relacionadas con el algoritmo de solución. Al ser Optimica una extensión de Modelica, la escritura de los problemas de optimización, puede hacer uso de todos los elementos del lenguaje Modelica. Como se verá más adelante, la definición del problema de optimización, junto con las restricciones dinámicas entre las variables del sistema (el modelo heterogéneo), se pueden describir en un solo archivo dentro de la clase optimization.
4.7 Bibliografía Åkesson, J. (2007). Languages and Tools for Optimization of Large-Scale Systems . PhD thesis, Department of Automatic Control, Lund University, Lund, Sweden. Åkesson, J. (2008). Optimica - An Extention of Modelica Supporting Dynamic Optimization. En 6th International Modelica Conference, páginas 57–66. marzo 3-4, Bielefeld, Germany.
88
4 El lenguaje Modelica
Åkesson, J., Årzén, K.-E., Gäfvert, M., Bergdahl, T., y Tummescheir, H. (2010). Modeling and optimization with Optimica and JModelica.org - Languages and tools for solving large-scale dynamic optimization problems. Computers & Chemical Engineering, 34:1737–1749. Fritzson, P. (2004). Principles of Object-Oriented Modeling and Simulation with Modelica 2.1.
NJ, USA.
Institute of Electrical and Electronic Engineers, Inc. Piscataway,
Fritzson, P. (2011). Introduction to Modeling and Simulation of Technical and Physical Systems with Modelica. Institute of Electrical and Electronic Engineers, Inc. Piscataway, NJ, USA. Fritzson, P. (2015a). Introducción al modelado y simulación de sistemas técnicos y físicos con Modelica. Linköping: Linköping University Electronic Press. Disponibel en http://liu.diva-portal.org/smash/record.jsf?pid=diva2% 3A853769&dswid=-3673 . Fritzson, P. (2015b). Principles of Object-Oriented Modeling and Simulation with Modelica 3.3 - A Cyber-Physical Approach. Institute of Electrical and Electronic Engineers, Inc. Piscataway, NJ, USA. Modelica Association (2012). Modelica - A Unified Object-Oriented Language for Systems Modeling, Language Specification Version 3.3 . Linköping, Sweden. Tiller, M. (2001). Introduction to Physical Modeling with Modelica . Kiuwer Academic Publishers. Norwell, Mass., USA. Tiller, M. (2014). Modelica by Example. http://book.xogeny.com/. Willems, J. C. (2010). Terminals and Ports. IEEE Circuits and Systems Magazine , Fourth quarter:8–26.
5 Biblioteca de componentes Modelica Una de las principales ventajas de Modelica, es la construcción gráfica de modelos conectando componentes de diferentes dominios físicos. En estos diagramas o “modelos gráficos”, cada elemento físico está representado por un icono o componente. Las líneas entre los componentes, corresponden a las conexiones físicas entre ellos, por ejemplo, un cable eléctrico o una conexión mecánica. Las variables en los puntos de conexión describen la interacción entre los componentes y el comportamiento de cada componente está descrito por sus ecuaciones.
heterogéneos,
5.1 Introducción Los sistemas dinámicos físicos son heterogéneos, esto es, incluyen elementos en los que ocurren fenómenos de características muy diversas. Un sistema puede describirse como un conjunto de subsistemas que interactúan entre si, los cuales a su vez resultan de la interconexión de componentes más simples. En Modelica, las clases y la herencia de sus propiedades, permiten definir componentes mediante un modelado jerarquizado y desarrollar bibliotecas “especializadas” de componentes que comparten un conjunto de características (propiedades, variables) comunes. Los elementos de estas bibliotecas, pueden utilizarse tanto en los modelos desarrollados utilizando ecuaciones, como en los desarrollados en forma gráfica, mediante la interconexión de losde componentes predefinidos y representados en el modelo (esquemático o diagrama interconexión), por un icono. 89
90
5 Biblioteca de componentes Modelica
5.2 Biblioteca estándar Modelica La biblioteca “Modelica Standard Library” (Modelica Association, 2013) llamada simplemente Modelica®, está formado por un conjunto de bibliotecas de componentes, entre las que se incluye: Modelica.Blocks • para - bloques salida, continuos, discretos y lógicos, elaborar modelos causalesentrada mediante diagramas de bloques.
• Modelica.ComplexBlocks - bloques entrada salida para señales complejas. • Modelica.ComplexMath - funciones para matemática con variables complejas. • Modelica.Constants - constantes matemáticas y físicas (e, π , c , ...). • Modelica.Electrical - modelos de los componentes eléctricos y electrónicos analógicos y digitales, y de máquinas eléctricas. • Modelica.Fluid - componentes de redes de flujo termofluícas, recipientes, tuberías, válvulas y accesorios, utilizando cualquier fluido de la biblioteca Modelica.Media. • Modelica.Icons - descripción de los iconos para uso general. • Modelica.Magnetic - modelos de componentes electromagnéticos, máquinas asíncronas y sincrónicas. • Modelica.Math - funciones matemáticas comunes y operaciones con matrices. • Modelica.Mechanics - modelos de los componentes mecánicos tridimensionales y de una dimensión que se desplazan o giran. • Modelica.Media - definición de las propiedades del agua, el aire, varios gases ideales y otros fluidos. • Modelica.SIUnits - definiciones de los nombres y unidades SI (ISO 311992, ISO 1000-1992). • Modelica.StateGraph - componentes de máquinas de estados. • yModelica.Thermal - componentes de los fenómenos térmicos, flujo de calor otros.
5.2. Biblioteca estándar Modelica
91
Figura 5.1: Diagrama de simulación de un motor de corriente continua • Modelica.Utilities - manejo de listados de instrucciones. Otra biblioteca disponible es • ModelicaReference - documentación sobre las palabras clave, los operadores, las anotaciones y la gramática del lenguaje Modelica. A manera de ejemplo del uso de los componentes de la biblioteca Modelica, en la figura 5.1 se muestra el diagrama de simulación, del motor de corriente continua mostrado anteriormente en la figura 2.13. En este diagrama, se combinan componentes del dominio eléctrico (Modelica.Electrical ), mecánico (Modelica.Mechanics) y de bloques de señales (Modelica.Blocks). Este es un sistema heterogéneo mecatrónico. Los parámetros del motor son: Ra = 2 ,25 Ω, La = 0 ,20 H, J = 0 ,050 kgm 2 , B = 0,010 Nm s y K = Ke = 0,0675 V/(rad/s) = Kt = 0,0675 NmA −1 . El motor está detenido y en el instante t = 5 s se aplica una tensión constante Va = 24 V. El motor se acelera hasta alcanzar la velocidad de rotación ω = 60 rads −1 . Un par de carga TL = −0,050 Nm se aplica en t = 50 s y el motor pierde velocidad. La curva de velocidad de rotación del motor se muestra en la figura 5.2.
92
5 Biblioteca de componentes Modelica
Figura 5.2: Velocidad de rotación del motor de corriente continua
A continuación se verán con mayor detalle, algunas de las bibliotecas de elementos, incluidas en la biblioteca Modelica, aunque no se listan ni se muestran todos los componentes disponibles en cada una de ellas.
5.2.1 Biblioteca Modelica.Blocks Esta incluye componentes con entradas y salidas definidas (bloques), agrupados en las bibliotecas: • Modelica.Blocks.Continuos Bloques integadores, funciones de transferencia (cociente de polinomios en s, primer y segundo orden) y controladores (PI, PID). • Modelica.Blocks.Discrete Bloques de muestreo, retenedores (orden cero y primer orden) y funciones de transferencia (cociente de polinomios en z). • Modelica.Blocks.Logical Bloques de compuertas (And, Or, Xor, ...), desigualdad (>, ≥ , < , ≤, ..), interruptor, histéresis y controladores de dos posiciones (“OnOff”). • Modelica.Blocks.Math Bloques de operaciones matemáticas (suma, resta, multiplicación, división), funciones trigonométricas (seno, coseno, tangente), máximo, mínimo, valor absoluto y raíz. Modelica.Blocks.MathBoolena • Bloques de operaciones matemáticas con variables lógicas.
5.2. Biblioteca estándar Modelica
93
• Modelica.Blocks.MathInter Bloques de operaciones matemáticas con variables enteras. • Modelica.Blocks.Nonlinear Bloques limitadores, retardos, zona muerta y aproximaciones de Pade. • Modelica.Blocks.Routing Bloques multiplexores y demultiplexores. • Modelica.Blocks.Sources Bloques de fuentes tipo pulso, escalón, rampa, seno y coseno. Cada bloque tiene por lo menos un terminal de entrada cuya variable es u (“input”) y un terminal de salida cuya variables es y (“output”). En la figura 5.3 se muestran algunos de los bloques disponibles.
5.2.2 Biblioteca
Modelica.ComplexBlocks
Contiene bloques (entrada salida) para operar sobre variables complejas, agrupados en las bibliotecas: • Modelica.ComplexBlocks.ComplexMath Bloques para operaciones matemáticas (suma, ganancia, multiplicación), funciones trigonométricas (seno, coseno, tangente), logaritmo, raíz. • Modelica.ComplexBlocks.Sources Bloques de fuentes tipo escalón, constante, fasor. En la figura 5.4 se muestran algunos de los bloques disponibles.
5.2.3 Biblioteca
Modelica.Constants
En esta biblioteca se definen los valores de las constantes empleadas usualmente en ingeniería. .. . // Mathem atical consta nts fina l const ant Real e = Modelica.Math.exp ( 1 .0 ) ; fina l const ant Real pi = 2 * Modelica.Math.asin ( 1 .0 ) ; // 3.141592653 58979; fina l const ant Real D2 R = p i / 18 0 "Deg ree to Rad ian"; fina l const ant Real R2 D = 18 0 / pi "Rad ian to Deg ree"; fina l const ant Real gamma = 0.5772156649015329 "Euler_constant" ;
94
5 Biblioteca de componentes Modelica
Figura 5.3: Algunos componentes de la bibliotecaModelica.Blocks
95
5.2. Biblioteca estándar Modelica
Figura 5.4: Algunos componentes de la biblioteca Modelica.ComplexBlocks .. . // Con sta nts of nat ure fina l const ant SI.Vel ocity c = 299792458 "Sp ee d of li gh t in vacuum" ; fina l const ant SI.Acceler ation g_n = 9.806649999999999 "Stan dar d acc eler ati on of gra vit y on ea rth" ; fina l const ant Real G (final unit = "m3/ ( kg.s2 ) " ) = 6.6742e - 01 1 "Newtonia n const ant of gravit ation" ; fina l const ant SI.Farada yConstan t F= 96485.33990000001 "Faraday con stan t , C/mol"; fina l const ant Real h (final unit = "J.s" ) = 6.6260693e - 03 4 "Planck const ant"; fina l const ant Real k (final unit = "J/K" ) = 1.3806505e - 02 3 "Boltzman n const ant"; fina l const ant Real R (final unit = " J /( mo l .K) " ) = 8.314472 "Mol ar ga s con sta nt"; fina l const ant Real sigma (final unit = " W /( m2 .K 4) " ) = 5.6704e - 00 8 "Stefan - Boltz mann const ant";
96
5 Biblioteca de componentes Modelica
fina l const ant Real N_ A(final unit = "1/mol" ) = 6.0221415e + 02 3 "Avogadr o const ant"; fina l const ant Real mue_0 (final unit = "N/A2" ) = 4 * pi * 1 e - 00 7 "Magne tic const ant"; fina l const ant Real epsilon_0 (final unit = "F/m" ) = 1 / ( mu e_ 0 * c * c ) "Electr ic const ant"; fina l const ant NonSI.Temperat ure_degC T_zer o= -273.15 .. . "Absolut e zer o temper ature";
5.2.4 Biblioteca
Modelica.Electrical
Esta incluye los elementos eléctricos agrupados en las bibliotecas: • Modelica.Electrical.Analog Componentes eléctricos y electrónicos analógicos como resistores, capacitores, transformadores, diodos, transistores, fuentes y medidores. • Modelica.Electrical.Digital Componentes eléctricos digitales y compuertas, convertidores. • Modelica.Electrical.Machines Máquinas eléctricas, motores sincrónicos y asíncronos, y motores y generadores de corriente continua. • Modelica.Electrical.MultiPhase Componentes eléctricos de dos y tres fases, estrella, delta, resitor, capacitor, inductor, transformador, fuentes y sensores. • Modelica.Electrical.QuasiStationary Componentes eléctricos de sistemas monofásicos en estado estacionario, resistor, capacitor, inductor, medidores y fuentes de tensión y corriente; sistemas trifásicos. • Modelica.Electrical.Spice3 Componentes del simulador Berkeley SPICE3, elementos RLC, fuentes, fuentes controladas, transistores. En los componentes eléctricos las variables en los terminales de conexión son p (positivo) y n (negativo). tensión corriente identifican como de En lay figura 5.5ysesemuestran algunos los componentes eléctricos disponibles.
5.2. Biblioteca estándar Modelica
Figura 5.5: Algunos componentes de la biblioteca Modelica.Electrical
97
98
5 Biblioteca de componentes Modelica
5.2.5 Biblioteca Modelica.Fluid Incluye componentes para el modelado de sistemas termofluídicos, agrupados en las bibliotecas (Casella et al., 2006): • Modelica.Fluid.System Propiedades del sistema (System). • Modelica.Fluid.Vesels Tanques abiertos y cerrados. • Modelica.Fluid.Pipes Tuberías estáticas y dinámicas. • Modelica.Fluid.Machines Sistemas de bombeo. • Modelica.Fluid.Valves Válvulas de apertura controlada o “todo nada”. • Modelica.Fluid.Fittings Codos y orificios. • Modelica.Fluid.Sources Fuente medio ambiente, fuente de caudal. • Modelica.Fluid.Sensors Indicadores de presión, temperatura caudal (volumétrico, masa) y densidad. • Modelica.Fluid.Dissipation Funciones de transferencia de calor ( ...HeatTransfer) y pérdida de presión (...PressureLoss). En la figura 5.6 se muestran algunos de los componentes disponibles para los sistemas fluídicos.
5.2.6 Biblioteca Modelica.Magnetic Incluye los componentes electromagnéticos agrupados en las bibliotecas: • Modelica.Magnetic.FluxTubes Convertidor electromagnético, reluctancia, reluctancia con fuga, materiales magnéticos, fuente de fuerza magnetomotriz, fuente de flujo magnético, medidores de potencial y flujo magnético
5.2. Biblioteca estándar Modelica
99
Figura 5.6: Algunos componentes de la bibliotecaModelica.Fluid • Modelica.Magnetic.FundamentalWabe Convertidor electromagnético (monofásico y multifase), máquina asíncrona (jaula de ardilla, anillo deslizante) , máquina sincrónica (imanes permanentes, con excitación) En la figura 5.7 se muestran algunos de los componentes disponibles para los sistemas electromagnéticos.
5.2.7 Biblioteca
Modelica.Mechanics
Incluye los componentes mecánicos agrupados en las bibliotecas: • Modelica.Mechanics.Multibody Elementos tridimensionales como cuerpos, uniones, fuerzas y sensores. Cadamecánicos elemento tiene una animación predeterminada.
100
5 Biblioteca de componentes Modelica
Figura 5.7: Algunos componentes de la bibliotecaModelica.Magnetic • Modelica.Mechanics.Rotational Elementos mecánicos unidimensionales que giran, como inercia, engranes, frenos, resorte giratorio, fricción, embrague y par. • Modelica.Mechanics.Traslational Elementos mecánicos unidimensionales que se desplazan, como masa, resorte, amortiguador, fuerza y medidores. En los elementos mecánicos que de desplazan, las variables en los terminales son el desplazamiento y la fuerza, y en los elementos que giran el desplazamiento ángulo y el par. Los terminales se identifican como flange_a (izquierdo) y flange_b (derecho). En la figura 5.8 se muestran algunos de los componentes mecánicos disponibles.
5.2. Biblioteca estándar Modelica
Figura 5.8: Algunos componentes de la biblioteca Modelica.Mechanical
101
102
5 Biblioteca de componentes Modelica
5.2.8 Biblioteca Modelica.SIunits En esta biblioteca se define las unidades de las variables físicas, con base en la norma ISO 31-1992. Algunas de estas son: .. . type Time = Real (final quantity = "Time" , final unit = " s ") ; type Length = Real (final quantity = "Length" , final unit = " m ") ; type Area = Real (final quantity = "Area" , final unit = "m2" ) ; type Volume = Real (final quantity = "Volume" , final unit = "m3" ) ; type Velocity = Real (final quantity = "Velocity" , final unit = "m/s" ) ; type Acceleration = Real (final quantity = "Acceleration" , final unit = "m/s2" ) ; type Angle = Real (final quantity = "Angle" , final unit = "rad" , displayUnit = "deg" ) ; type AngularVelocity = Real (final quantity = "AngularVelocity" , final unit = "rad/s" ) ; type AngularAcceleration = Real (final quantity = "AngularAcceleration" , final unit = "rad/s2" ) ; type Period = Real (final quantity = "Time" , final unit = " s ") ; type Frequency = Real (final quantity = "Frequency" , final unit = "Hz" ) ; type Voltage = ElectricPotential; type ElectricPotential = Real (final quantity = "ElectricPotential" , final unit = " V ") ; type Current = ElectricCurrent; type Capacitance = Real (final quantity = "Capacitance" , final unit = " F ", mi n = 0 ) ; type Inductance = Real (final quantity = "Inductance" , final unit = " H ") ; type Resistance = Real (final quantity = "Resistance" , final unit = "Ohm" ) ; type ElectricCurrent = Real (final quantity = "ElectricCurrent" , final unit = " A ") ; type Height = Length ( mi n = 0 ) ; type Mass = Real ( quantity = "Mass" , final unit = "kg" , mi n = 0 ) ; type Density = Real (final quantity = "Density" , final unit = "kg/m3" , displa yUnit = "g/cm3" , mi n = 0 .0 ) ; type Inertia = MomentOfInertia; type MomentOfInertia = Real (final quantity = "MomentOfInertia" , final unit = "kg.m2" ) ; type Force = Real (final quantity = "Force" , final unit = " N ") ; type Torque = Real (final quantity = "Torque" , final unit = "N.m" ) ; type Momentum = Real (final quantity = "Momentum" , final unit = "kg.m/s" ) ;
5.2. Biblioteca estándar Modelica
103
type Pressure = Real (final quantity = "Pressure" , final unit = "Pa" , displa yUnit = "bar" ) ; type Energy = Real (final quantity = "Energy" , final unit = " J ") ; type Power = Real (final quantity = "Power" , final unit = " W ") ; type MassFlowRate = Real ( quantity = "MassFlowRate" , final unit = "kg/s" ) ; type VolumeFlowRate = Real (final quantity = "VolumeFlowRate" , final unit = "m3/s" ); type Temperature = ThermodynamicTemperature; type ThermodynamicTemperature = Real (final quantity = "ThermodynamicTemperature" , final unit = " K ", mi n = 0.0, start = 288. 15, nomin al = 30 0, displa yUnit = "degC" ) "Absolut e temper ature ( use type Temperat ureDiffer ence for relat ive temper atures) " annotation( absoluteValue = tr ue) ; .. .
5.2.9 Biblioteca Modelica.Thermal Incluye los componentes de los sistemas térmicos agrupados en las bibliotecas: • Modelica.Thermal.FluidHeatFlow Tubería (aislada, con calefacción), válvula, medidores de presión, temperatura, caudal, fuente de presión, caudal. • Modelica.Thermal.HeatTransfer Capacitor y resistor térmico, conductor térmico, radiador, medidores de temperatura, flujo de calor, condiciones ambiente (temperatura, flujo de calor). En la figura 5.9 se muestran algunos de los componentes disponibles para los sistemas térmicos.
5.2.10 Identificación de los conectores de los componentes Modelica Como se puede notar en las figuras de las secciones anteriores, los conectores de los componentes da cada domino físico, tienen una forma y color determinado. Además, uno está relleno (positivo, izquierdo, a, entrada) y el otro no (negativo, derecho, b, salida). Por ejemplo, los conectores de los componentes eléctricos son cuadrados azules; los de los componentes hidráulicos son círculos azules entre un cuadrado; los componentes magnéticos tienen conectores cuadrados anaranjados; los de los componentes mecánicos que se desplazan son cuadrados verdes y los de los componentes mecánicos giranen círculos grises;ylos bloquesentienen conectores formacomponentes. de triángulo, azulesque grandes las entradas pequeños la salida; y así losendemás
104
5 Biblioteca de componentes Modelica
Figura 5.9: Algunos componentes de la bibliotecaModelica.Thermal
5.3 Otras bibliotecas incluidas en OpenModelica En la sección anterior se describieron las bibliotecas de componentes, que forman la biblioteca Modelica. Esta es parte integral del lenguaje Modelica. Existen otras bibliotecas de componentes para el lenguaje Modelica, tanto comerciales como de uso libre. Muchas de estas últimas están incorporadas en el OpenModelica Connection Editor (OMEdit). Para acceder a ellas en el OMEdit, se puede mostrar el listado desplegable con la opción del menú [File][SystemLibraries] (ver la descripción del OMEdit en la sección 8.3). El OMEdit incluye las siguientes bibliotecas: • ADGenKinetics (“Implementation of generalized kinetics for modeling bio-
5.3. Otras bibliotecas incluidas en OpenModelica
105
chemical reaction networks”)1 . • ADMSL (“ADMSL is the Algorithmically Differentiated (AD) version of a part of the Modelica standard package Modelica.Electrical.Analog.Basic.”). • Annex60 (“Library with models for building energy and control systems”). • BioChem (“Package for biochemical modeling and simulation”). • BondLib (“Modelica library for Bond Graph modeling”). • BrineProp (“Media models for p-h-T-rho-eta properties of aqueous solutions of multiple salts and gases”). • Buildings (“Library with models for building energy and control systems”). • ComplexLib (“Library for steady-state analysis of AC circuits within phasor domain”). • ExtendedPetriNets (“Library to model timed, stochastic Petri nets and state transition diagrams”). • FCSys (“Library of equation-based, object-oriented (EOO) models of proton exchange membrane fuel cells (PEMFCs)”). • FCSysTest (“Library to test components of FCSys”). • HelmholtzMedia (“Data and models of real pure fluids (liquid, two-phase and gas)”). • IndustrialControlsystems (“Provides a set of continuous and discrete control systems”). • InstantaneousSymmetricalComponents (“Sensors”). • LinearMPC (“Library for model-based predictive controllers with linear process models”). • ModelicaDEVS (“Discrete Event Systems Library according to the DVS formalism”). • ModelicaRefrence (“Reference to Modelica keywords”). 1 Las descripciones en ingles de las bibliotecas, han sido tomadas directamente del texto desplegado
seleccionado la opción [View Documentation] en cada una de ellas.
106
5 Biblioteca de componentes Modelica
• ModelicaTest (“Library to test components of package Modelica”). • Modelica_DeviceDrives (“A collection of drivers interfacing hardware like input devices, communication devices, shared memory, analog-digital converters and else”). • Modelica_EnergyStorages (“Contains models with different complexity for simulating of electric energy storages like batteries (single cells as well as stacks) interacting with loads, battery management systems, loads and charging devices”). • Modelica_LinearSystems2 (“Analysis, Synthesis and Modeling of Continuous and Discrete Linear Systems”). • Modelica_StateGraph2 (“Provides components to model discrete event, reactive and hybrid systems in a convenient way with deterministic hierarchical state diagrams. Is inspired by Grafcet/Sequential Function Charts (SFC), Statecharts, Safe State Machines (SSM) and Mode Automata, and utilizes Modelica as action language”). • Modelica_Synchronous (“Basic synchronous input/output control blocks that are triggered by clocks”). • MotorcycleDynamics (“This library model complexes phenomenons that they characterize the vehicles dynamics with two wheels”). • NeuralNetworks. • Noise (“An open Library for the Generation of Stochastic Signals in Modelica”). • ObjectStab (“A Modelica Library for Power System Stability Studies”). • OpenHydraulics (“Provides components describing 1-dimensional fluid flow in hydraulic circuits”). • Physiolibrary (“Physiological domains library”). • PlanarMechanics (“A planar mechanical library for didactical purposes”). • PowerFlow (“Provides basic models and a general connector for the electrical side of power plant systems”). • PowerSystems (“Isinintended model electricalmode”). power systems at different levels of detail both transienttoand steady-state
5.4. Incorporación de bibliotecas externas en OpenModelica
107
• QCalc (“Modelica units based on quantity calculus”). • RealTimeCoordinationLibrary (“Provides components to model real-time, reactive, hybrid and, asynchronous communicating systems in a convenient way with statecharts”). • Servomechanisms. • Spot (“Provides components to model power systems both in transient and steady-state mode”). • SpotExamples. • SystemDynamics (“Provides components to model mass and information flows in continuous-time systems using the System Dynamics methodology”). • ThermoPower (“For the dynamic modelling of thermal power plants and energy conversion systems”). • VehicleInterfases (“Interface definitions and architectures for vehicle system modeling”).
5.4 Incorporación de bibliotecas externas en OpenModelica Como se ha indicado, el editor OMEdit de OpenModelica, incluye la biblioteca de componentes estándar Modelica y las bibliotecas listadas en la sección 5.3. En adición a estas, están disponibles también bibliotecas de componentes para Modelica, desarrolladas principalmente por grupos de investigación en instituciones académicas, que son distribuidas con licencia de “software libre”. Si se desea hacer uso de una de estas bibliotecas, esta debe “instalarse” en el editor. Para esto debe seleccionarse, dentro de la ventana desplegada con las opciones del menú [Tools][Options], la correspondiente a “Libraries”, mostrada en la figura 5.10, y se agregar a la lista de “User Libraries” la trayectoria (“path”) de su ubicación. Debe tenerse en cuenta que OpenModelica, es un entorno de modelado y simulación con Modelica, que está en desarrollo permanente y que por lo tanto, no hay garantía cualquier biblioteca, funcionenque correctamente con el. incluidas las de la biblioteca estándar Modelica,
108
5 Biblioteca de componentes Modelica
Figura 5.10: OMEdit - Incorporación de bibliotecas de componentes externas
5.5. Bibliotecas de componentes adiciona les para SytemModel er
109
Figura 5.11: Bibliotecas de distribución libre para SystemModeler
5.5 Bibliotecas de componentes adicionales para SytemModeler En la sección 5.2 se describieron las bibliotecas de componentes Modelica, de las cuales la mayoría están incluidas en SystemModeler. Estas son parte integral del lenguaje Modelica. Wolfram distribuye otras bibliotecas de componentes Modelica para SystemModeler2 , tanto comerciales3 como gratuitas4 . Para instalar cualquiera de estas bibliotecas, una vez descargas en la computadora (son archivos con extensión .sma), se “abren” para su instalación con la opción del menú [File][Open] NombreBiblioteca.sma. En la figura 5.11 se muestran los troncos del árbol de componentes de las bibliotecas de acceso libre, cuyas descripciones generales son5 : • BioChem 2 http://www.wolfram.com/system-modeler/libraries/ 3 Hydraulic, SmartCooling. 4 BioChem, ModelPlug, PlanarMechanicsStandard, SystemDynamics. 5 Las descripcion es en inglés de las bibliotecas, se han tomado directamente del texto desplegado seleccionando [View][Documentation..] en cada una de ellas.
110
5 Biblioteca de componentes Modelica
“The BioChem library is an extendable, general purpose Modelica library for modeling, simulation, and visualization of biological and biochemical systems. The library is designed to be used together with Wolfram SystemModeler, which enables several extra features such as systems biology markup language (SBML) import and export.” • PlanarMechanicsStandard “A planar mechanical library for didactical purposes” • SystemDynamics “The SystemDynamics library is designed as a graphical library for modeling mass and information flows in a continuous-time system using Prof. Jay Forrester’s System Dynamics metaphor. Two separate and independent versions of this library had srcinally been created by Dr. Stefan Fabricius and by Prof. François Cellier and his students. These have now been merged into a single version that has furthermore been enhanced as well. System Dynamics offers a fairly low-level graphical interface, not much different from a block diagram. The fact that continuous systems contain differential equations is hidden from the user by talking about levels, i.e., quantities that can accumulate (state variables), and rates, i.e., quantities that influence the accumulation and/or depletion of levels (state derivatives). The System Dynamics is widely used especially by researchers in the life sciencesmodeling and socialmetaphor sciences.” Estas tres bibliotecas de componentes Modelica, también están disponibles en OpenModelica (ver el listado de bibliotecas en la sección 5.3).
5.6 Bibliografía Casella, F., Otter, M., Proelss, K., Richter, C., y Tummescheit, H. (2006). The Modelica Fluid and Media library for modeling of incompressible and compressible thermo-fluid pipe networks. En 5th International Modelica Conference. septiembre 4-5, Vienna, Austria. Modelica Association (2013).Modelica Standard Library 3.2.1. Linköping, Sweden.
6 Soluci´on num´erica del modelo El problema que presenta la solución del problema del valor inicial y la simulación de los modelos Modelica, es mucho más complejo que el correspondiente a la solución de los modelos constituidos por un conjunto de ecuaciones diferenciales explícitas.
6.1 Introducción En el lenguaje Modelica, el modelo a simular está constituido por lo general por un conjunto de ecuaciones algebraico diferenciales implícitas (DAE), de la forma dx(t ) , x(t ), z(t ), u(t ), t , dt y(t ) = G (x(t ), z(t ), t ) , 0=F
(6.1) (6.2)
con condiciones iniciales x(t0 ) = x0 , (6.3) dx(t0 ) = x0 , (6.4) dt donde las dimensiones de los vectores x , z , y y u , son n , m , p y q respectivamente. Las funciones F (de dimensión n + m) son normalmente no lineales, mientras que las funciones G (de dimensión p) por lo general son lineales. Los modelos constituidos por un conjunto de ecuaciones algebraico diferenciales (DAE), resultan en forma natural, del estudio de muchos sistemas físicos. Estos tienen la capacidad de permitir representar sistemas más complejos, que los que se
pueden representar con unrequiere conjunto ecuaciones diferenciales ordinarias (ODE). Sin embargo, su solución unde tratamiento especial. 111
112
6 Solución numérica del modelo
6.2 Cantidad de ecuaciones requeridas para la inicialización del modelo Para resolver un modelo dado por un conjunto de n ecuaciones diferenciales explícitas (ODE), hay n estados, se requieren exactamente n condiciones adicionales, los n valores de los estados en t = t0 . Sin el conocimiento del conjunto completo de estados iniciales, el modelo no está completamente definido y problema del valor inicial tiene un número infinito de soluciones. El valor inicial de las variables dadas por ecuaciones algebraicas, se obtiene en función de valor inicial de los estados. En el caso de un modelo DAE, en donde el vector de las variables que aparecen derivadas (posibles estados) es de dimensión n y el vector de las variables que no aparecen derivadas es de dimensión m , se tienen n + m incógnitas para el problema de simulación. Sin embargo, para el problema de inicialización de la simulación del modelo DAE, esto es, para el establecimiento de las condiciones iniciales de la simulación, se tienen n incógnitas adicionales, correspondientes al valor inicial de las derivadas de los posibles estados. Por lo tanto se requiere encontrar el valor de 2 n + m variables (Mattsson et al., 2002). Si por ejemplo se tiene un modelo dado por las ecuaciones f1 f2 ( ( de de r r( ( varX1 varX2 ) ), , va va rX rX 1, 1, va va rX rX 2, 2, va va rZ, rZ, f3 ( va rX 1, va rX 2, var Z ) = 0;
va ) va rU rU ) = = 0; 0;
durante la simulación se deben encontrar dos variables varX1 y varX2 (n = 2) que aparecen derivadas,se supone que son variables de estado, y una variablevarZ (m = 1), que no aparece derivada, para una variable de entrada varU conocida. En el proceso de inicialización del modelo se requiere determinar los valores de varX1, varX2, varZ, der(varX1) y der(varX2), en t = t0 . Por lo tanto, deben proveerse dos ecuaciones adicionales para resolver el problema del valor inicial (2n + m = 5). Usualmente el valor inicial de las variables que aparecen derivadas se conoce, pero no necesariamente el valor de todas sus derivadas en el instante inicial. En ese caso, debe proveerse el valor inicial de otras variables, o incluso establecer “ecuaciones iniciales” (solo utilizadas al momento de la inicialización del modelo), para la solución del problema de valor inicial. Un caso especial y común, es el de la inicialización en estado estacionario . El sistema parteson de cero un punto de equilibrio estable, por“en lo reposo”). tanto todas las derivadas desimulado las variables (el sistema está inicialmente
6.3. Solución de un conjunto de DAE implíc itas
113
6.3 Solución de un conjunto de ecuaciones algebraico diferenciales implícitas Sin perder generalidad, supóngase primero que se tiene un modelo representado por el conjunto de ecuaciones diferenciales ordinarias explícitas (ODE), de la forma estándar dx(t ) = f(x(t ), t ), x(t0 ) = x0 . (6.5) dt Para su solución numérica, se dispone de una gran variedad de métodos de integración del tipo “Runge-Kutta” y también del tipo predictor corrector (Ralston, 1965; Chapra y Canale, 2011). Aunque usualmente el punto de partida de la solución de ( 6.5), se especifica indicando el valor de los estados iniciales x0 , podría requerirse una mayor flexibilidad en el establecimiento de la condición en que se encuentra el sistema, al momento de iniciar la simulación. Podría desearse partir de un punto de equilibrio (estado estacionario), especificando x0 = 0 como condición inicial. Entonces, los valores iniciales de los estados x0 se obtendrían de la solución de f(x(t0 ), t0 ) = 0. Si ahora el modelo está representado más bien, por el conjunto de ecuaciones algebraico diferenciales implícitas (DAE), de la forma dx(t ) dx(t0 ) , x(t ), t = 0, x(t0 ) = x0 , = x0 , dt dt
F
(6.6)
deben analizarse los problemas encontrados para su solución. Los modelos con base en ecuaciones diferenciales ordinarias, son un caso particular de los representados por ecuaciones algebraico diferenciales, por lo que es posible aplicar en algunas oportunidades, los códigos de integración numérica utilizados para resolverlos. En particular, se han aplicado los métodos utilizados para resolver conjuntos de ecuaciones diferenciales ordinarias “rígidos” (modelos de sistemas con dinámicas muy diferentes, unas rápidas y otras lentas). Los problemas encontrados con la aplicación de estos métodos, a la solución de los conjuntos de ecuaciones algebraico diferenciales implícitas, especialmente con la estimación del error de la solución y el control del paso de integración, son analizados en detalle por Petzold (1982b).
6.3.1 El DASSL (“Differential/Algebraic System Solver”) Debido a la necesidad de resolver modelos de la forma (6.6), los cuales resultan del modelado de el unacódigo gran variedad sistemas físicos1982a). (electrónicos, mecánicos y otros), se desarrolló numéricodeDASSL P( etzold,
114
6 Solución numérica del modelo
El código DASSL, toma la idea de Gear (1971) de reemplazar las derivadas en (6.6) por una aproximación de diferencias, y luego resolver las ecuaciones resultantes para el instante t k empleado el método de Newton. En el caso del método de Gear, utilizando un paso de integración ∆tk , (6.6) se aproxima por la expresión F
xk − xk−1 , xk , tk ∆tk
= 0,
(6.7)
cuya solución con el método de Newton, en la iteración i -ésima es xki+1 = x ik −
∂F 1 ∂F + ∂ x ∆tk ∂ x
−1
F
xki ,
x ki − xk−1 , tk . ∆tk
(6.8)
En vez de aproximar las derivadas por una diferencia retrógrada de primer orden como en (6.7), el código DASSL utiliza una formula de diferencias retrógradas (BDF) de orden q variable, con q desde uno hasta cinco. Ahora, la aproximación de (6.6) en el código DASSL es F
1
q
∑ α j xk− j , xk , tk
∆tk j=0
= 0.
(6.9)
En cada paso de integración, el orden q del método y el paso de integración ∆tk , se seleccionan con base en el comportamiento de la solución. Como la velocidad de convergencia del método de Newton, depende de cuan exacta es la estimación inicial x 0k de la solución de f (..., tk ) = 0, el DASSL la estima evaluando un polinomio que interpola, en el instante t k , las soluciones calculadas en los últimos i + 1 instantes (tk−1 , tk−2 , ..., tk−i−1 ). La estimación inicial dexk se obtiene evaluando la derivada de este polinomio ent k . Una vez determinado x k0 , se emplea el método de Newton para determinarx k . El control del paso de integración (variable) y los criterios de convergencia utilizados en el método, se detallan en Petzold (1982a). Por lo tanto, el DASSL es uncódigo con control del paso y del orden . Uno de los problemas que surgen al momento de la solución de un conjunto de ecuaciones algebraico diferenciales implícitas, y que no está presente en la solución de un conjunto de ecuaciones diferenciales ordinarias explícitas, es que no hay una forma trivial de obtener todas las condiciones iniciales para x y x . Usualmente, se conocen todos las condiciones iniciales de las variables, x0 , pero no necesariamente x0 . Una todos los valores iniciales de las derivadas de las variables, los elementos de opción del código DASSL, permite determinar los valores iniciales de x , utilizando 0 el método de diferencias y una estimación de x0 . retrogradas de Euler y el método de Newton, a partir de x
6.3. Solución de un conjunto de DAE implíc itas
115
Una implementación del código DASSL, es el método de simulación preseleccionado en OpenModelica (OMShell, OMEdit) y también en Wolfram SystemModeler (Simulation Center).
6.3.2 Índice diferencial del modelo DAE di ), de un modelo representado por ecuaciones algebraico diEl índice diferencial ferenciales implícitas((DAE) dado por (6.6), es el número mínimo de derivadas analíticas requeridas, para expresarlo como un conjunto de ecuaciones diferenciales ordinarias explícitas (ODE), de la forma:
F x (t ), x(t ), t = 0, dF (x (t ), x(t ), t ) ∂ F(·) ∂ F(·) ∂ F(·) = x (t ) + x (t ) + = 0, dt ∂x ∂ x ∂t .. .
(6.10)
ddi F (x (t ), x(t ), t ) = 0, dt di que puede ser resuelto para x (t ), solo en términos de x(t ) y t (Petzold, 1989). Esto indica que, para obtener x (t ) en forma explícita, es necesario derivar F (·) di veces. El índice diferencial indica el grado de dificultad de la solución del DAE. Un modelo dado por un conjunto de ecuaciones diferenciales ordinarias explícitas (ODE), tiene un índice diferencial cero. Los modelos dados por conjuntos de ecuaciones algebraico diferenciales implícitas (DAE) de índice diferencial uno, ocurren con frecuencia y son los que se puede resolver con el código DASSL. En ocasiones, el modelado matemático de los sistemas físicos, puede dar como resultado que este tenga un índice diferencial alto, para los cuales no hay códigos de solución disponibles. Se requiere entonces, que el código de solución del modelo incorpore alguna forma de manipulación o técnica de reducción del índice , para bajarlo a 1 o a 0 ( Cellier y Elmqvist, 1993; Fábián et al., 2001; Takamatsu y Iwata, 2008). OpenModelica utiliza unaselección dinámica de estados (Mattsson et al., 2000), como método preestablecido para la reducción del índice diferencial del modelo.
6.3.3 Modelos con un índice diferencial alto El índice del modelo, depende como estenga que este sido expresado. causa paradiferencial que este resulte ser alto, es que de el modelo másha variables derivadasUna (el
116
6 Solución numérica del modelo
(a) Entradas independientes
(b) Entrada común
Figura 6.1: Sistema de dos tanques sistema tenga más elementos almacenadores de energía), que la cantidad de estados necesarios para definirlo completamente. En la figura 6.1a se muestra un sistema compuesto de dos tanques, cuyas bases se encuentran al mismo nivel. Cada tanque es alimentado por una bomba hidráulica independiente y ambos descargan al medio ambiente, a través de su respectiva válvula. Este sistema tiene dos almacenadores de energía, los dos tanques. El sistema es de segundo orden. Se supondrá que todas las tuberías son suficientemente amplias y cortas, como para pérdidas presión en ellas. El modelo del despreciar sistema de las tanques, estádedado por las siguientes ecuaciones: dH1 (t ) = Qe1 (t ) − Qs1 (t ), dt dH2 (t ) = Qe2 (t ) − Qs2 (t ), A2 dt
A1
ρg Qs1 (t ) = H1 (t ), R1 ρg Qs2 (t ) = H2 (t ), R2 Qe (t ) = Q e1 (t ) + Qe2 (t ), Qs (t ) = Q 11 (t ) + Q12 (t ).
(6.11) (6.12) (6.13) (6.14) (6.15) (6.16)
Para el ejemplo, se han considerado los siguientes parámetros: A 1 = 2 m 2 , A 2 = 4 m2 , Rv1 = 25000 Pa/(m3 /s), Rv2 = 50000 Pa/(m3 /s), ρ = 1020,408 kgm−3 , y g = 9,80 m s−2 . Condiciones inicialesH10 = H20 = 0 y caudales de las bombas hidráulicas Qe1 (t ) = Q e2 (t ) = 1 m3 s−1
< 150 s. para para 5 s
117
6.3. Solución de un conjunto de DAE implíc itas
Figura 6.2: Sistema de dos tanques con entradas independientes, 1m3 s−1 .. . equation Qe 1 = if ti me > Qe 2 = if ti me > A1 * de r( H1 ) = A2 * de r( H2 ) = Qs 1 = df * g / Qs 2 = df * g / Qe = Qe 1 + Qe2; Qs = Qs 1 + Qs2; .. .
5 an d ti me < 15 0 then 1 else 5 an d ti me < 15 0 then 1 else Qe 1 - Qs1; Qe 2 - Qs2; R v 1 * H1 ; R v 2 * H2 ;
Qe1 = Qe2 =
0; 0;
El modelo incluye ocho ecuaciones, para determinar las ocho variables ( H1 , H 2 , modelos está bien definido y los resultados de su simulación se muestran en la figura 6.2 . Cada conjunto (tanque - válvula) es un sistema de primer orden independiente, que evoluciona según su constante de tiempo. En el modelo hay dos variables que aparecen derivadas ( H1 , H2 ). Con base en esto, el algoritmo de solución supone que el sistema es de segundo orden (tiene dos estados), tal como efectivamente lo es. Además, este está constituido por ecuaciones diferenciales y algebraicas explícitas, cuyo índice diferencial es 0. Ahora, en vez de usar dos bombas hidráulicas independientes con un caudal de
Qe1 , Qe2 , Qs1 , Qs2 , Qe , Qs ). El
1,0 m33 ss−−11, cada una, seaempleará una solacomo bomba hidráulica una capacidad de 2,0 m alimentado los dos tanques, se muestra en con la figura 6.1b.
118
6 Solución numérica del modelo
Por lo tanto, parece razonable escribir el modelo como: .. . equation Qe = if ti me > 5 an d ti me < 15 0 then 2 else 0; A1 * de r( H1 ) = Qe 1 - Qs1; A2 - Qs2; Qs 1 * = de dfr( H2 * g) /= RQe v 12 * H1 ; Qs 2 = df * g / R v 2 * H2 ; Qe = Qe 1 + Qe2; Qs = Qs 1 + Qs2; .. .
Sin embargo, este modelo está indeterminado. Tiene solo siete ecuaciones y hay ocho incógnitas. Hace falta una ecuación. Como se aprecia en la figura6.1b, los fondos de los dos tanques están conectados entre si en la descarga de la bomba, por lo tanto, las presiones en los fondos de los tanques son iguales ( P1 (t ) = ρ gH1 (t ) = P2 (t ) = ρ gH2 (t ), lo que implica que H1 (t ) = H2 (t ). Agregando esta ecuación al modelo se tiene .. . equation Qe = if ti me > A1 * de r( H1 ) = A2 * de r( H2 ) = Qs 1 = df * g / Qs 2 = df * g / Qe = Qe 1 + Qe2; Qs = Qs 1 + Qs2; H2 = H1 ; .. .
5 an d ti me < 15 0 then 2 else 0; Qe 1 Qe 2 Rv1 Rv2
* *
Qs1; Qs2; H1 ; H2 ;
Este es simulado y las variables resultantes se muestran en la figura 6.3. El algoritmo de solución del modelo tuvo que resolver ahora un problema más complejo. Por un lado, este tiene dos ecuaciones diferenciales, lo que parece indicar que el sistema es de segundo orden, con dos estados H1 (t ) y H2 (t ). Sin embargo, estos dos estados están relacionados por la ecuación algebraica H1 (t ) = H2 (t ), por lo tanto no son independientes. Solo existe un estado. Por otro lado, se provee solo una ecuación para determinar Q e1 (t ) y Q e2 (t ). En este caso, el índice diferencial del modelo es 2 y el algoritmo de solución del modelo tuvo que reducirlo. Como se aprecia en curvasen deforma la figura 6.3, a pesar que losasíniveles en ambos tanques evolucionan en las el tiempo idéntica, no lo hacen los caudales de
6.3. Solución de un conjunto de DAE implíc itas
Figura 6.3: Sistema de dos tanques con una entrada común, 2m3 s−1
119
Qe = Qe1 + Q e2 =
entrada y salida de estos. Se puede apreciar que, a partir de t = 150 s, cuando se apaga la bomba hidráulica, hay una transferencia de fluido del tanque 2 al 1. El índice diferencial del modelo se puede reducir analíticamente, reformulando el modelo. Derivando la ecuación H1 (t ) = H 2 (t ) con respecto al tiempo, se obtiene que dH1 (t )/dt = dH2 (t )/dt . Entonces (Qe1 (t ) − Qs1 (t ))/A1 = ( Qe1 (t ) − Qs1 (t ))/A2 . Incluyendo en el modelo esta ecuación y eliminando una de las ecuaciones diferenciales, el modelo, queda expresado como: .. . equation Qe = if ti me > 5 an d ti me < 15 0 then 2 else 0; A1 * de r( H1 ) = Qe 1 - Qs1; Qs 1 = df * g / R v 1 * H1 ; Qs 2 = df * g / R v 2 * H2 ; Qe = Qe 1 + Qe2; Qs = Qs 1 + Qs2; H2 = H1 ; ( Qe 2 - Qs 2) / A2 = (Qe 1 - Qs 1) / A 1; .. .
El modelo es ahora de primer orden e incluye dos ecuaciones algebraicas para determinar Q e1 (t ) y Q e2 (t ). El índice diferencial del modelo ahora es 1.
120
6 Solución numérica del modelo
Figura 6.4: Comportamiento del tanque equivalente
Los resultados de la simulación de este modelo, son idénticos a los mostrados en la figura 6.3. Si se hace uso del concepto de elementos generalizados, descrito en la capítulo 2 y en particular el modelado de los elementos de los sistemas hidráulicos de la sección 2.3, la red generalizada del sistema de los dos tanques con una sola bomba de alimentación (figura6.1b), está constituida por dos capacitores hidráulico en paralelo (los tanques) y dos resistores hidráulicos en paralelo (las válvulas). Por lo tanto, para el caso de ejemplo, su equivalente es un sistema con un solo tanque con un área trasversalA = 6 m2 y una válvula a la descarga, con una resistencia R = 16666,67 Pa/(m3 /s). El comportamiento de este sistema de tanque y válvula equivalente , se muestra en la figura 6.4, el cual es idéntico al mostrado en los gráficos de la fila superior de la figura 6.3. Si se modela un sistema con elementos de energía dependientes, como lo sería un circuito eléctrico con capacitores en paralelo (o inductores en serie), representando cada elemento por una ecuación diferencial (una “variable de estado”), cuando en realidad solo existe un estado asociado al elemento almacenador de energía equivalente, el modelo tendrá un índice diferencial alto. Debe recordarse que el número de estados (variables que aparecen derivadas en el modelo) necesarios para modelar un sistema físico, es igual al número de almacenadores de energía independientes que este tenga.
6.4. Simulación con Assimulo
121
6.4 Simulación con Assimulo La simulación del modelo dinámico en JModelica.org, se realiza con el paquete Assimulo1 , para resolver conjuntos de ecuaciones diferenciales ordinarias (ODE) y ecuaciones algebraico diferenciales (DAE). Este incorpora varios códigos de solución, de un solo paso (Euler explícito e implícito, Randau 5DAE, Runge-Kutta de 4° orden, ...) y de pasos múltiples (CVode, IDA, ODASSL, ...). El método preseleccionado es Sundials2 CVode (Hindmarsh y Serban, 2012), el cual es un algoritmo de paso múltiple de orden variable y de paso variable, para resolver ecuaciones diferenciales.
6.5 Bibliografía Cellier, F. E. y Elmqvist, H. (1993). Automated Formula Manipulation Supports Object-Oriented Continuous-System Modeling.IEEE Control Systems, 13(2):28– 38. Chapra, S. y Canale, R. P. (2011). Métodos numéricos para ingenieros . McGrawHill/Interamericana, S.A. de C.V., México, D.F., México, 6ta edición. Fábián, van Beek, D. A., y Rooda, J. E. (2001). Index Reduction and DisconMathematical and Computer ModetinuityG.,Handling using Substitute Equations. lling of Dynamical Systems , 7(2):173–187. Gear, C. W. (1971). Simultaneous Numerical Solution of Differential/Algebraic Equations. IEEE Transactions on Circuit Theory, 18 (1):89–95. Hindmarsh, A. C. y Serban, R. (2012). User Documentation for CVODE v2.7.0 . Mattsson, S. E., Elmqvist, H., Otter, M., y Olsson, H. (2002). Initialization of Hybrid Differential-Algebraic Equations in Modelica 2. En 2nd International Modelica Conference. marzo 18-19, Oberpfaffenhofen, Germany. Mattsson, S. E., Olsson, H., y Elmqvist, H. (2000). Dynamic Selection of States in Dymola. En Modelica Workshop 2000, páginas 61–67. octubre 23-34, Lund, Sweden. 1 http://www.jmodelica.org/assimulo 2 http://computation.llnl.gov/casc/sundials/main.html
122
6 Solución numérica del modelo
Petzold, L. R. (1982a). A description of DASSL: A differential/algebraic system solver. Reporte técnico SAND82-8637, Sandia National Laboratories, Livermore, California, USA. Petzold, L. R. (1982b). Differential/Algebraic Equations are not ODE’s.SIAM Journal on Scientific and Statistical Computing , 3 (3):367–384. Petzold, L. R. (1989). Recent developments in the numerical solution of differential/algebrai systems. Computer Methods in Applied Mechanics and Engineering , 75:77–89. Ralston, A. (1965). A First Course in Numerical Analysis . McGraw-Hill, Inc., Kögakusha, Co., Ltd., Tokyo, Japan. Takamatsu, M. y Iwata, S. (2008). Index reduction for differential-algebraic equations by substitution method. Linear Algebra and its Applications , 429:2268– 2277.
7 Optimizaci´on de sistemas din´amicos Con frecuencia es necesario optimizar1 el funcionamiento, o alguna característica de un sistema dinámico. El diseño de los sistemas de control óptimo y la calibración de modelos (estimación de parámetros), constituyen problemas de optimización particulares. Esta necesidad implica la definición de un problema de optimización, que involucra al modelo del sistema dinámico, la función objetivo a optimizar y las posibles restricciones en las variables o parámetros del sistema, que deben respetarse. Modelica ofrece ladeextensión Optimica la sección 4.6, para la con definición del problema optimización, con descrita sistemasen heterogéneos modelados Modelica.
7.1 Introducción Habiéndose desarrollado el modelo Modelica del sistema, se debe formular el problema de optimización, ya sea esta dinámica o estática.
7.1.1 Optimización dinámica Un problema de optimización dinámica, involucra el modelo dinámico del sistema y el planteamiento de las especificaciones de la optimización. 1 “buscar la mejor manera de realizar una actividad”, Dicciona rio de la lengua española, 22 .a edición, 2001
123
124
7 Optimización de sistemas dinámicos
Sea un sistema S (x, z, u, t ) cuyo modelo dinámico (restricciones dinámicas entre las variables) está expresado como dx(t ) , x(t ), z(t ), u(t ), t , dt y(t ) = G (x(t ), z(t ), t ) , t ∈ [t0 , t f ], 0=F
(7.1) (7.2)
con condiciones iniciales (que pueden ser fijas o “libres”) x(t0 ) = x0 ,
dx(t0 ) = x0 , dt
(7.3)
y una especificación de la optimizaciónO (q), dada por la funcional de costo (objetivo) J (q, [t0 , t f ]), dependiente del conjunto de q variables (u(t )) o parámetros variables (θ ) del sistema, sujeta al conjunto de m restricciones no lineales gm´ın ≤ g(q) ≤ gm´ax,
(7.4)
y posibles cotas en las variables (o parámetros) qm´ın ≤ q ≤ qm´ax.
(7.5)
El problema de optimización dinámica, puede establecerse como encontrar el conjunto de las n variables o parámetrosqo tal que .
J (qo , [t0 , t f ]) = m´ınn J (q, [t0 , t f ]) = q∈R
m´ınn M(x(t f ), q) +
q∈R
tf
t0
L (x(t ), z(t ), q, t ) dt ,
(7.6) sujeta a las restricciones impuestas por el modelo dinámico7.1) ( a (7.3) y a las de las variables o parámetros a optimizar (7.4) y (7.5). La función objetivo (7.6) puede incorporar una funcional de costo tipo integral (término de Lagrange) y una función de costo dependiente del tiempo final (término de Mayer). El intervalo para la optimización[t0 , t f ] puede ser fijo o libre. El problema de optimización se resolverá como unaminimización de la funcional de costo, por lo que el problema de maximizar una función objetivo, debe establecerse como el de minimizar su valor negativo.
7.1.2 Optimización estática El problema de optimización estática , puede derivarse de un modelo dinámico del sistema estado estacionario, en condiciones de equilibrio (determinado haciendo iguales aencero todas las derivadas de las variables).
7.2. Algoritmos de optimización de JModelica. org
125
En este caso, el modelo estático (restricciones entre las variables en estado estacionario) del sistema Ss (xs , zs , us , ts ) está expresado como 0 = F (0, xs , zs , us , ts ) , ys = G (xs , zs , ts ) , Os (qs ),
y la especificación de la optimización
(7.7) (7.8)
está dada por la función de costo
J (qs , ts ), dependiente del conjunto deqs valores de variables (us ) o parámetros variables (θ ) del sistema, sujeta al conjunto de m restricciones no lineales
gsm´ın ≤ g(qs ) ≤ gsm´ax,
(7.9)
y posibles cotas en los valores de las variables o parámetros qsm´ın ≤ qs ≤ qsm´ax.
(7.10)
El problema de optimización estática, puede establecerse como encontrar el conjunto de los n valores de las variables o parámetros qos tal que .
Js (qos , ts ) =
m´ın Js (qs , ts ),
qs ∈Rn
(7.11)
sujeta a las restricciones impuestas por el modelo estático (7.7) y (7.8) y a las de los valores de las variables o parámetros a optimizar (7.9) y (7.10). En este caso, todas las ecuaciones son algebraicas y las variables son puntuales, definidas en el punto de operación y el instante t s en que se realiza la optimización (para los sistemas variantes en el tiempo).
7.2 Algoritmos de optimización de JModelica.org JModelica.org incluye dos algoritmos para resolver el problema de optimización dinámica planteado (Åkesson et al., 2009). El algoritmo preseleccionado es un método de optimización simultanea, donde los perfiles de las variables de entrada y de los estados, son aproximados por polinomios de orden n (“direct collocation method”), equivalente a un método Runge-Kutta implícito de ordenn . El problema se transforma en un problema de programación no lineal, que se resuelve con el código Ipopt. Este método requiere que el modelo a optimizar no contenga discontinuidades, como las introducidas por las instrucciones if o when. El otromethod”) es un algoritmo optimización múltiples intervalos (“directesmultiple shooting (Rantil etdeal., 2009), en eldecual el intervalo de solución dividido
126
7 Optimización de sistemas dinámicos
en un determinado número de segmentos. Las condiciones iniciales en cada segmento se introducen como variables a optimizar, se agregan restricciones de igualdad en el inicio de cada segmento, de manera de garantizar la continuidad de las variables de estado y se simula el problema dinámico en cada segmento en forma independiente. La simulación es invocada por el algoritmo de optimización que se encarga de modificar las variables (variables o parámetros del proceso) de optimización. Se utiliza el algoritmo de simulación SUNDIALS, que incluye varios métodos de integración, junto con el método de optimización scipy_slsqp (“sequential quadratic programming algorithm”). Los bloques de optimización son incorporados en JModelica.org, utilizando CasADi (Andersson et al., 2011). Esta en una herramienta de software de diferenciación automática, para la solución numérica de problemas de optimización en general y de control óptimo en particular, con base en gradiente (Andersson, 2013; Andersson et al., 2014).
7.3 Bibliografía Åkesson, J., Bergdahl, T., Gäfvert, M., y Tummescheir, H. (2009). Modeling and Optimization with Modelica and Optimica Using the JModelica.org Open Source Platform. En 7th International Modelica Conference, páginas 29–38. septiembre 20-29, Como, Italy. Andersson, J. (2013). A General-Purpose Software Framework for Dynamic Optimization. PhD thesis, Arenberg Doctoral School, KU Leuven, Belgium. Andersson, J., Åkersson, J., Casella, F., y Diehl, M. (2011). Integration of CasADi and JModelica.org. En 8th International Modelica Conference, páginas 218–231. marzo 20,22, Dresden, Germany. Andersson, J., Gillis, J., y Diehl, M. (2014). v1.9.0+355.c535d00.
User Documentation for CasADi
Rantil, J., Åkersson, J., Führer, C., y Gäfvert, M. (2009). Multiple-Shooting Optimization using the JModelica.org Platform. En7th International Modelica Conference, páginas 757–764. setiembre 20-22, Como, Italy.
Parte III
Uso del software libre OpenModelica y JModelica.org
127
8 Introducci´on a OpenModelica De entre las implementaciones “libres” del lenguaje Modelica, la de mayor difusión es OpenModelica, desarrollada por el Open Source Modelica Consortium (OSMC), con sede en el Departamento de Computadoras y Ciencias de la Información de la Universidad de Linköping, Suecia(Fritzson et al., 2005).
8.1 Introducción Se hará adelante, una breve descripción de las herramientas de programación y simulación provistas por OpenModelica, con base en su Manual para los usuarios de la versión 1.9.6 (Open Source Modelica Consortium, 2016). El instalador de OpenModleica (Windows, Linux, Mac) se puede descargar desde el sitio web del OSMC1 y su ejecución es expedita. Las demostraciones de su uso, se harán empleando la instalación en MS Windows. OpenModelica es una implementación del lenguaje Modelica compuesta de varios “subsistemas”, entre los que se destacan: un compilador del lenguaje Modelica (intérprete de Modelica, compilación a código C y enlace a las rutinas de solución de sistemas de ODE o DAE)OpenModelica Compiler (OMC); un intérprete interactivo, OpenModelica Shell (OMS); un editor de los modelos en modo texto y gráfico, OpenModelica Connector Editor (OMEdit); un editor de documentos interactivos, OpenModelica Notebook (OMNotebook); y una herramienta de optimización dinámica (OMOptim); entre otros. 1 https://openmodelica.org/
129
130
8 Introducción a OpenModelica
8.2 OpenModelica Shell (OMS) Una sesión interactiva para la ejecución de instrucciones Modelica, o la simulación de un modelo Modelica previamente desarrollado, se puede realizar utilizando el OMShell, disponible en el menú de aplicaciones de Windows [OpenModelica][OpenModelica Shell]. abre la ventana delinstrucciones. intérprete interactivo y muestra el indicador de la línea paraEste la introducción de las
8.2.1 Sesión de simulación interactiva en el OMS Aunque en el OMS se pueden ejecutar las instrucciones en Modelica “línea por línea”, interesa aquí solo presentar la simulación de un modelo ya elaborado. En la línea de entrada, se dan las siguientes instrucciones: 1. Cargar la biblioteca Modelica, desde el menú de OMS con [File][Load Modelica Library]; >> loadModel(Modelica)
2. Cargar el modelo a simular, desde el menú de OMS con [File][Open] (seleccionar el archivo del modelo); >> loadFile(NombreModelo.mo)
3. Mostrar el listado de instrucciones del modelo, con >> list(NombreModelo) Tal como se muestra en la figura 8.1, para el caso del modelo descrito en el archivo SisElec01_e.mo, el cual corresponde a un circuito eléctrico RLC serie. La simulación y el despliegue de la respuesta se realiza con las siguientes instrucciones: 1. Simular el modelo (si el intervalo de simulación está definido en el modelo), con >> simulate(NombreModelo)
o (si se debe especificar el intervalo de simulación), con >> simulate(NombreModelo, stopTime=tf)
2. El despliegue de cualquiera de las variables (var) del modelo respecto al tiempo, se obtiene con >> plot(var)
8.2. OpenModelica Shell (OMS)
131
Figura 8.1: OMS - inicio y carga del modelo
Tal como (Vc) se muestra en laen figura 8.2 para capacitor se muestra la figura 8.3. el circuito RLC, cuya tensión en el La expresión general de la instrucción para simular un modelo es >> simulate(NombreModelo[,startTime=rti][,stopTime=rtf] [,numberOfIntervals=ini][,outputInterval=roi][,method=smet] [,tolerance=rto][,fixedStepSize=rdt][,outputFormat=sof])
Se pueden desplegar simultáneamente varias variables, con la instrucción >> plot({var1, var2, ... }) ,
y también dibujar un “plano de fase” (diagramas “Y-X”), empleando la instrucción >> plotParametric(varX, varY)
como se muestra en la figura 8.4, para el oscilador amortiguado no lineal de Van der Pol 2 (1889 - 1959), con λ = 0,3 y condiciones iniciales (X0 = 1, Y0 = 1). El OMShell se cierra desde el menú con [File][Exit]. Los instruccionesplot(var) y plotParametric(varX, varY) admiten, entre otros, los siguientes argumentos optativos: title= “” - texto del título del gráfico 2 http://www.ieeeghn.org/wiki/index.php/Balthasar_Van_der_Pol
132
8 Introducción a OpenModelica
Figura 8.2: OMS - simulación y despliegue de respuesta xLabel= “time” - leyenda para el eje X yLabel= “” - leyenda para el eje Y curveWidth=1 - ancho de curva (1, 2, ...) curveStyle=1 - estilo de la curva: 1 sólida, 2 a trazos, 3 a puntos, ... legendPosition=“top” - left, right, top, bottom, none.
Además, la ventana del gráfico incluye un menú de opciones para guardarlo en un archivo, imprimirlo y modificar la apariencia de la figura, como incluir o no la cuadrícula del fondo del gráfico. En particular, la opción “Setup” despliega una ventana de configuración de la figura que permite cambiar, por ejemplo, el color, grosor y estilo del trazo, establecer el título y las leyendas de los ejes, el contenido y ubicación de las leyendas, y otras características, tal como se muestra en la figura 8.5. Cuando se ejecuta la instrucción simulate, los resultados son guardados en el archivo NombreModelo_res.mat. El formato .mat es el predefinido para el archivo de resultados. Este archivo se puede procesar posteriormente con otros programas, como MATLAB® o PySimulator (ver el capítulo13).
8.2.2 Instrucciones en el OMS Algunas de las instrucciones disponibles en el OMS, incluyen:
8.2. OpenModelica Shell (OMS)
Figura 8.3: OMPlot - curva de respuesta Figura 8.4: OMPlot - plano de fase (oscilador de van der Pol)
133
134
8 Introducción a OpenModelica
Figura 8.5: OMPlot - configuración de las características de la figura • cd() - obtiene la ruta del directorio de trabajo, • cd(dirX) - cambia el directorio de trabajo a dirX, • clear() - elimina todas las instrucciones ejecutadas con anterioridad, • clearVariables() - borra todas las variables definidas, • list(nombreModelo) - lista las instrucciones el modelo nombreModelo, • loadFile(nombreModelo) - carga el modelo ModelicanombreModelo (con extensión .mo ), • loadModel(nombreClase) - carga un modelo o paquete, • plot(var, ...) - muestra las curvas de respuesta de las variable ( var, ...) en función del tiempo (time), • plotParametric(varX, varY) - dibuja el plano de fase varY vs varX, ...) - simula el modelo, con parámetros opta• simulate(nombreModelo, tivos sobre el control de la simulación.
8.3. OpenModelica Connection Editor (OMEdit )
135
Figura 8.6: OMEdit - Ventana principal
8.3 OpenModelica Connection Editor (OMEdit) La interfaz para la edición de los modelos en OpenModelica, OMEdit (Asghar et al., 2011), está disponible en el menú de aplicaciones de Windows [OpenModelica] [OpenModelica Connection Editor], cuya interfaz de usuario se muestra en la figura 8.6. La “ventana principal” de OMEdit incluye, los menús desplegables (File, Edit, View, Simulation, FMI, Export, Tools, Help), lasbarras de herramientas (File, Edit, View, Shapes, Simulatiom, ModelSwitcher), y las ventanas de navegación (Search, Libraries, Documentation, Variables, Messages). Las ventanas de navegación se pueden colocar en la columna izquierda, o en la columna derecha. Además, la de los mensajes del compilador se puede colocar también en el área inferior. La distribución de las ventanas de navegación, una vez elaborada, se puede guardar para sesiones futuras, seleccionado desde el menú [Tools][Options][General] Preserve User’s GUI Customizations (ver la figura8.7). Modelado Se dispone de tresgráfica “áreas de trabajo”:Bienvenida (“Welcome”), deling”), y Respuesta (“Plotting”), seleccionables en el menú inferior(“Modere-
136
8 Introducción a OpenModelica
Figura 8.7: OMEdit - Opciones de configuración cho. OMEdit permite la creación, edición y ejecución (simulación y despliegue de variables) de los modelos Modelica, ya sea mediante un listado de instrucciones (programación en texto), o en forma gráfica (programación mediante un diagrama de interconexión). Seleccionando en el menú [Tools][Options], se despliega la ventana de configuración del editor, mostrada en la figura8.7. Esta permite adecuar algunas características del OMEdit (especialmente visuales), a las preferencias del usuario. En la columna derecha de OMEdit, se muestra el árbol de bibliotecas (“Libraries”) componentes disponibles. Lade biblioteca Modelica (“Modelica Standard Library”), descrita en la sección 5.2,
8.3. OpenModelica Connection Editor (OMEdit )
Figura 8.8: OMEdit - Biblioteca Modelica
137
138
8 Introducción a OpenModelica
forma parte integral del lenguaje Modelica y se muestra (parcialmente) en la figura 8.8. Esta incluye componentes de diferentes dominios (bloques, eléctrico, mecánico, etc.), agrupados por categorías expansibles, en las cuales cada elemento está representado por su icono, tal como se muestra en la figura 8.9, para el caso de los componentes analógicos “básicos” de los sistemas eléctricos. El modelado gráfico, como se ilustrará más adelante, se realiza “arrastrado” desde las bibliotecas al diagrama del modelo, los iconos de los componentes requeridos para su interconexión. Colocando el apuntador sobre una entrada (tronco, rama u “hoja”) del árbol de bibliotecas, se puede acceder a la información correspondiente, mediante el menú desplegable con su botón derecho y seleccionando [View Documentation]. La información es desplegada en la ventana de navegación “Documentation”, como se muestra en la figura 8.10 para la biblioteca Modelica.
8.3.1 Crear un modelo nuevo o abrir uno existente El archivo de un modelo (clase, conector, registro, etc.) nuevo, se crea seleccionando en el menú [File][New Modelica Class], o pulsando el icono “New Modelica Class”, con lo cual se despliega la ventana de entrada mostrada en la figura 8.11. En la casilla “Name” se escribe el nombre del modelo nuevo. El archivo de un modelo (biblioteca) existente, se abre seleccionando en el menú [File][Open Model/Library File(s)], o pulsando el icono “Open Model/Library File(s)”, con lo cual se despliega una ventana para la búsqueda y la selección del archivo del modelo. Dentro del área de trabajo para el modelado (“Modeling”), el modelo nuevo (existente) se puede crear (ver) en modo texto [Modelica Text View], o enmodo diagrama de interconexión [Diagram View], si este se ha elaborado mediante la conexión gráfica de componentes. Los modelos elaborados mediante un listado de instrucciones, no tienen una representación gráfica (diagrama). Por su parte, los modelos elaborados mediante un diagrama de interconexión, tendrán un programa, creado automáticamente por el editor, en el cual se incluyen las instrucciones para el despliegue del diagrama y las ecuaciones de interconexión determinadas a partir de este. Se tomará ejemplo demostrar el uso deen OMEdit, circuito introducido en como la sección 4.4 ypara mostrado nuevamente la figurael8.12, cuyoeléctrico modelo
8.3. OpenModelica Connection Editor (OMEdit )
Figura 8.9: OMEdit - Biblioteca de elementos eléctricos (Electrical)
139
140
8 Introducción a OpenModelica
Figura 8.10: OMEdit - Navegador de documentación
Figura 8.11: OMEdit - Modelo nuevo
8.3. OpenModelica Connection Editor (OMEdit )
141
Figura 8.12: Circuito eléctrico
está dado por las ecuaciones diL (t ) = V f − R1 iL (t ) − Vc (t ), dt dVc (t ) 1 = iL (t ) − Vc (t ). C1 dt R2 L1
(8.1) (8.2)
Se creará un modelo nuevo con el nombre “CircuitoElectrico”. Posteriormente este modelo se guardará en el archivo CircuitoElectrico.mo, con la opción del menú [File][Save], o pulsando el icono “Save” y seleccionando la carpeta para guardarlo. En forma automática, OMEdit crea la línea de cabecera y la de terminación del modelo como m od el CircuitoElectrico en d CircuitoElectrico;
El modelo del sistema a simular, puede declararse utilizando uno de los siguientes procedimientos: 1. Mediante el conjunto de ecuaciones determinadas para el mismo. 2. Utilizando los componentes correspondientes disponibles en la biblioteca Modelica (u otra) y empleando la ecuación connect para establecer las conexiones entre los componentes. 3. Interconectando directamente en forma gráfica los iconos de los componentes, para crear un diagrama de interconexión. En el Capítulo 9, se presentarán en detalle los diferentes procedimientos para definir losOMEdit modelos, en“programar” varios dominios físicos.simularlo Aquí, solo se ilustrásuencomportamiento. forma breve, el uso de para el modelo, y analizar
142
8 Introducción a OpenModelica
Cuando se abre el archivo de un modelo Modelica con OMEdit, este revisa la sintaxis del mismo. Si encuentra un error, lo reporta y no abre el modelo. Esto pudiera suceder, si el modelo fue creado fuera del OMEdit. En este caso, se deberá editar (corregir) con un editor de texto externo, antes de abrirlo con OMEdit. La revisión sintáctica, también la hace al momento de guardar un modelo en un archivo, ya sea por indicación del usuario, o porque lo hace en forma automática (si la opción “Enable Auto Save” está activada (la ventana [Tools][Options] - General). Esto garantiza que los modelos guardados con OMEdit, por lo menos son correctos en su sintaxis.
8.3.2 Escritura del modelo Seleccionando en la ventana para el modelado (“Modeling”), el modo de vista como programa de texto [Modelica Text View], se escriben las ecuaciones que describen el modelo. Para el circuito eléctrico del ejemplo, los parámetros sonR1 = 10 Ω, R2 = 100 Ω, C1 = 0,01 F y L 1 = 1 H; las condiciones iniciales Vc0 = 0 V e i 0L = 0 A; y la tensión de la fuente V f = 10 V para t ≥ 0,05 s. La definición de los parámetros y las ecuaciones del modelo, (4.11) y (4.12), se pueden escribir como se muestra en la figura 8.13. La definición del modelo Modelica, inicia con la línea conteniendo la palabra model seguida del nombre asignado al mismo, CircuitoElectrico en este caso. La primera contiene las adefiniciones de las constantes , los parámetros las variables (sisección estas corresponden un estado, posiblemente se establecen tambiény sus condiciones iniciales) utilizadas en el modelo. Cada línea de definición se termina con un punto y coma. La palabra equation, separa la sección de las definiciones de la sección con las ecuaciones del modelo. Cada ecuación se termina con un punto y coma. El modelo puede incluir una nota a( nnotation) sobre las condiciones en que se efectuará el “experimento” (experiment(...)) con el modelo, esto es, su simulación. El modelo se termina con una línea conteniendo la palabraend, seguida del nombre del modelo y terminada con un punto y coma. El editor de texto utiliza diferentes colores para destacar la palabras reservadas, los comentarios, las funciones y otros elementos del programa. La consistencia del modelo, se puede verificar seleccionando en el menú el icono “Check Model”. Para el modelo de ejemplo, esta verificación indica: Check of CircuitoElectrico completed successfully. Class CircuitoElectrico has 3 equation(s) and 3 variable(s).
8.3. OpenModelica Connection Editor (OMEdit )
143
Figura 8.13: OMEdit - Modelado en “modo texto” 1 of these are trivial equation(s).
Debe recordarse que en Modelica, el modelo debe estar “balanceado”, esto es, que debe tener el mismo número de variables y de ecuaciones, para que pueda resolverse.
8.3.3 Ejecución de la simulación Antes de ejecutar la simulación, deben establecerse los parámetros para su control, seleccionando el icono “Simulation Setup” (Control de la simulación) mostrado en la figura 8.14. Este despliega la ventana de parámetros de la simulación, mostrada en la figura 8.15. En ella se establecen parámetros generales [General] como el intervalo de tiempo de la simulación, con eltiempo inicial (“Start Time”), normalmente cero, y el tiempo final (“Stop Time”); 1,4 segundos para el ejemplo utilizado; elmétodo de integración (solución) del modelo, el dassl es el método predeterminado; o de salida [Output] como el número total de intervalos de la salida (“Number of Intervals”), 500 es la cantidad predeterminada; y otras opciones. la opción “Save tará”Sienseelselecciona modelo, por ejemplo comosimulation settings inside model”, esta se “ano-
144
8 Introducción a OpenModelica
Figura 8.14: OMEdit - Barra de herramientas de la simulación annotation( experiment ( StartTime = 0, StopT ime = 1.4, Tolerance = 1 e - 00 6, Inter val = 0.0028 ) ) ;
La simulación se puede iniciar desde esta ventana pulsando el botón “Simulate”. Una vez establecidos los parámetros de la simulación, si estos no requieren de un cambio, el programa se puede ejecutar directamente desde la barra de herramientas, con el icono “Simulate” (ver la figura 8.14). La “simulación” incluye la verificación del modelo (consistencia, sintaxis, condiciones iniciales), su compilación y su ejecución. Durante este proceso se abre la ventana que muestra los mensajes de avance del proceso.
8.3.4 Vista de resultados Si la simulación no presenta errores, al final de la misma OMEdit cambia automáticamente a la vista de resultados (“Ploting”), mostrada en la figura 8.16. Esta presenta el área para mostrar los gráficos, de las variables seleccionadas en el navegador de variables (“Variables Browser”). El árbol de componentes y variables del modelo, se despliega en la navegador de variables (“Variables Browser”), mostrado en la figura8.17. En este aparecen los parámetros de los componentes con su valor, unidades y descripción (comentarios de definición), las variables con su condición inicial, unidades y descripción, y la variable independiente del modelo tiempo (time), con su valor final. Para mostrar las variables en función del tiempo en forma gráfica, basta marcar la casilla a su izquierda, tal como se muestra en la figura 8.16, para la tensión Vc a través del capacitorC1 . Se puede mostrar la evolución (gráficos “X-t”) varias“ventana variablesgráfica” en un mismo gráfico, o en gráficos independientes, abriendo unadenueva con el
8.3. OpenModelica Connection Editor (OMEdit )
Figura 8.15: OMEdit - Control de la simulación
145
146
8 Introducción a OpenModelica
Figura 8.16: OMEdit - Vista de resultados icono “New Plot Window”. También se puede mostrar un plano de fase (gráficos “Y-X”) con el icono “New Parametric Plot Window”, mostrados en la figura8.18. Cada gráfico tiene una pestaña de selección para navegar entre ellos. Además, es posible, mostrarlos en un “mosaico”, en el tamaño y disposición deseada, tal como se ilustra más adelante en la figura 8.19. En esta se muestra por separado, la evolución de la tensión Vc a través del capacitor (Plot: 1), la corriente Il por el inductor (Plot: 2) y el plano de fase Il(Vc) (Parametric Plot: 1). La evolución en el tiempo de las variables del modelo simulado, está almacenada en un archivo con el nombre NombreModelo_res.mat y guardado en la carpeta temporal C:\user\AppData\Local\Temp\OpenModelica\OMEdit. Este puede ser utilizado con otros programas, que abran archivos con formato .mat.
8.3.5 Cambiar los parámetros y volver a simular La primer vez que se ejecuta la simulación del modelo, se emplean los parámetros establecido en el. Si se desea, el valor de estos se pueden modificar en el navegador de variables (figura 8.17) y de luego realizar la simulación(figura con estos nuevos parámetros con el icono “Re-simulate” la barra de herramientas 8.18).
8.3. OpenModelica Connection Editor (OMEdit )
Figura 8.17: OMEdit - Navegador de variables
Figura 8.18: OMEdit - Barra de herramientas de despliegue gráfico
147
148
8 Introducción a OpenModelica
Figura 8.19: OMEdit - Figuras “X-t” y “Y-X”
También se puede volver a simular el modelo, seleccionando “Re-simulate” en el menú que se despliega con el botón derecho del apuntador, sobre el nombre del modelo en el navegador de variables. En adición a los parámetros, también es posible volver a simular el modelo utilizando otros tiempos de control de la simulación. Estos se pueden modificar en la ventana de opciones desplegada seleccionado el icono “Re-simulate Setup” de la barra de herramientas. Los cambios hechos para realizar las nuevas simulaciones del modelo, no afectan los parámetros de los componentes, ni los tiempos de control u otras características de la simulación, definidos inicialmente.
8.3.6 Creación de experimentos Cuando se realiza una nueva simulación, ya sea cambiando algún parámetros o condición inicial en el modelo, o utilizando la opción de volver a simular (“Re-simulate”), las nuevas curvas de comportamiento de las variables, sustituyen a las anteriores, de manera que en el despliegue gráfico, se muestran solamente el comportamiento de las variables obtenido en la última simulación. Sin embargo, con frecuencia es necesario analizar el comportamiento del modelo con, por ejemplo, diferentes conjuntos de parámetros y comparar los resultados desplegándolos en una misma figura. Lo que se quiere, es realizar varios “experimentos” con Para el mismo esto, modelo. los resultados de cada experimento deben almacenarse en un archivo
8.3. OpenModelica Connection Editor (OMEdit )
149
Figura 8.20: OMEdit Nombre del archivo para almacenar los resultados
separado. El nombre del archivo de resultados, se indica en el campo “Result File” de la pestaña [Output] de la ventana abierta con la opción “Simulation Setup” del menú, tal como se muestra en la figura 8.20. En el caso de un cambio de los parámetros y la vuelta a simular del modelo (sin cambiar el valor srcinal de los parámetros en el modelo), la ventana de ajustes de la simulación para introducir el nombre del nuevo archivo de resultados, se puede abrir con la opción “Re-simulate Setup” del menú. Como ejemplo, el comportamiento de la tensiónVc en el capacitorC1 , del circuito eléctrico de la figura 8.12, con C1 ∈ {0,01 F , 0,025 F, 0,005 F}, tres experimentos, se muestra en la figura 8.21.
8.3.7 Modelado gráfico En el modelo gráfico o diagrama de interconexión, cada icono representa a un elemento líneas física. que conectan los terminales de los(terminales), componentes, correspondenfísico. a una Las conexión Las variables en la interfaz describen
150
8 Introducción a OpenModelica
Figura 8.21: OMEdit - Comparación de los resultados de tres experimentos la interacción entre los componentes y el comportamiento de cada componente está descrito por sus ecuaciones. Se simulará ahora el mismo circuito de la figura8.12, pero mediante un diagrama de interconexión, utilizando componentes de la biblioteca Modelica. Para esto se requiere seleccionar, en el área de trabajo de modelado (“Modeling”), el modo de vista como diagrama de interconexión [Diagram View]. Expandiendo la biblioteca Modelica, se arrastran con el apuntador al área del diagrama y se sueltan en ella, uno a uno, los iconos de los siguientes componentes: • Modelica.Electrical.Analog.Basic: Ground, Resistor (2), Capacitor e Inductor, • Modelica.Electrical.Analog.Sources: StepVoltage, los cuales se muestran en la figura 8.22. Utilizando facilidades pueden mover, las alinear y rotar.de edición gráfica, los iconos de los componentes se
8.3. OpenModelica Connection Editor (OMEdit )
151
Figura 8.22: OMEdit - Componentes para el modelo Interconexión de los componentes
El modo de conexión se habilita (deshabilita), con el botón en el menú “Connect/Unconnect Mode”. En el modo de conexión, cuando el cursor del apuntador (“ratón”) se posiciona sobre el terminal de un componente, este cambia de ser una flecha (apuntar y seleccionar) a un símbolo + (guía de interconexión). Se debe presionar una vez el botón izquierdo del apuntador para inicial la conexión, luego llevar el enlace (un “cable eléctrico” en el circuito simulado), moviendo el puntero hasta el terminal del componente con que se quiere conectar, y volver a presionar el botón izquierdo para completar la conexión. Se puede mostrar una cuadrícula guía de fondo con la opción “Grid Lines” del menú y variar la escala (“Zoom In” (+), “Zoom Out” (-)), para facilitar la elaboración del diagrama. Además, se pueden cambiar las dimensiones de la “hoja de dibujo”, localizando el cursor sobre el área de dibujo y abriendo “Properties” de la hoja (“Extent”, dimensiones; “Grid”, cuadrícula), con la el ventana botón derecho del apunta-
152
8 Introducción a OpenModelica
Figura 8.23: OMEdit - Interconexión de los componentes
dor. Todos los terminales ( p y n, en los diagramas eléctricos) de cada componente, deben estar conectados a un terminal de otro componente, según corresponda a la topología del sistema que se desea simular. Aunque en el diagrama final, debido a la distribución de los elementos y sus conexiones, pudiera parecer que se ha hecho alguna conexión entre las lineas de interconexión de dos o más componentes, este es solo un “efecto óptico” (una línea de interconexión oculta a las demás), ya que debe existir una línea independiente por cada conexión, tal como se muestra en la figura 8.23. Interconexiones válidas entre componentes
Las conexiones, solo se pueden realizar entre los conectores correspondientes a componentes del mismo tipo (con conectores de la misma clase). Supóngase que se han colocado en el diagrama de interconexión componentes eléctricos, mecánicos que se desplazan y térmicos, y que se han realizado las conexiones entre los terminales de los componentes del mismo dominio físico, tal como se muestra en la figura 8.24. Si se realiza una verificación del estado del modelo hasta ese momento (“Check Model”), esta indica que no hay errores. Se hace ahora una conexión entre el conector de un componente eléctrico y el de un componente mecánico, como se muestra en la figura 8.25. Aunque pareciera que la conexión es aceptable, porque el diagramadel muestra entreesta los indica terminales interconectados, al realizar una verificación estadouna dellínea modelo, que
8.3. OpenModelica Connection Editor (OMEdit )
153
Figura 8.24: OMEdit - Conexiones permitidas entre componentes (eléctrico - eléctrico, mecánico - mecánico, térmico - térmico)
Figura 8.25: OMEdit - Conexiones no permitidas entre componentes (eléctrico - mecánico) existe una ecuación connect entre componentes incompatibles. Las variables en los dos terminales conectados son diferentes (variables eléctricas tensión y corriente {v, i}, variables mecánicas fuerza y desplazamiento {f, s}). Lo mismo sucedería si se trata de realizar una conexión, por ejemplo entre el terminal de un componente mecánico y el deflujo uno térmico mecánicos fuerza y desplazamiento{f, s}, variables térmicas de calor(variables y temperatura {Q_flow, T}),
154
8 Introducción a OpenModelica
Figura 8.26: OMEdit - Conexiones no permitidas entre componentes (mecánico térmico) tal como se muestra en la figura 8.26. Parámetros de los componentes
Cada componente utilizado en el diagrama, tiene asociado un menú de parámetros, al que sedel accede pulsandoodos veces el botón izquierdo del con este del sobre el icono componente, seleccionado el componente conapuntador, el botón izquierdo apuntador y luego desplegando el menú de opciones presionando el botón derecho y seleccionando “Parameters”. En este, se introduce los valores de los parámetros correspondientes al componente seleccionado, tal como se muestra en la figura 8.27 para la fuente de tensión stepVoltage1. El diagrama del circuito simulado del ejemplo, con los parámetros introducidos, se muestra en la figura 8.28. Es evidente la similitud del diagrama de interconexión desarrollado con el el circuito eléctrico a simular, mostrado en la figura 8.12. El programa creado en forma automática por el editor, a partir del diagrama de interconexión desarrollado (figura8.28), es: mo d el CircuitoElectricoDiagrama Modelica. Electrical. Analog.Bas ic.Resistor resis tor1 ( R = 10 ) annotation( Placement ( visible = tr ue , transfo rmation ( srcin = { -60,80 } , ext ent = {{- 10 , - 10 } , { 10,10 } } , rotation = 0 ) ) ); Modelica.Electrical.Analog.Sources.StepVoltage stepvoltage1 ( V = 10, start Time = 0.05 )
8.3. OpenModelica Connection Editor (OMEdit )
Figura 8.27: OMEdit - Menú de parámetros de un componente
annotation( Placement ( visible = tr ue , transfo rmation ( srcin = { -80,60 } , ext ent = {{- 10 , - 10 } , { 10,10 } } , rotation = -90 ) ) ); Modelica. Electrical. Analog.Bas ic.Inductor induc tor1 ( L = 1) annotation( Placement ( visible = tr ue , transfo rmation ( srcin = { -30,80 } , ext ent = {{- 10 , - 10 } , { 10,10 } } , rotation = 0 ) ) ); Modelica. Electrical. Analog.Bas ic.Resistor resis tor2 ( R = 10 0) annotation( Placement ( visible = tr ue , transfo rmation ( srcin = { -10,60 } , ext ent = {{- 10 , - 10 } , { 10,10 } } , rotation = -90 ) ) ); Modelica.Electrical.Analog.Basic.Capacitor capacitor1 ( C = 0.01 ) annot ation( Placement ( visible = tr ue , transformation ( srcin = {10,60 } , ext ent = { { -10 , - 10 } , { 10,10 } } , rotat ion = -90 ) ) ); Modelica. Electrical .Analog.Bas ic.Ground groun d1 annotation( Placement ( visible = tr ue , transfo rmation ( srcin = { -80,30 } , ext ent = {{- 10 , - 10 } , { 10,10 } } , rotation = 0 ) ) ); equation connect ( capacitor1.n ,ground1.p ) annota tion(Line ( points = { { 10,50 } , { 10,40.0587 } , { - 80.1173 ,40.0587 } , { - 80.1173 ,40.0587 }})) ;
155
156
8 Introducción a OpenModelica
Figura 8.28: OMEdit - Diagrama de interconexión connect ( resistor2.n ,ground1.p ) ann ota tio n(Line ( points = { { -10,50 } , { - 10,40.0587 } , { - 80.1173 ,40.0587 } , { - 80.1173 ,40.0587 }})) ; connect ( inductor1.n ,capacitor1.p ) annota tion(Line ( points = { { -20,80 } , { 10.081 ,80 } , { 10.081 ,69. 771} , { 10.081 ,6 9 .771}})) ; connect ( inductor1.n ,resistor2.p ) annot ation( Line ( points = { { -20,80 } , { - 10.081 ,80 } , { - 10.081 , 69.50579 999999999} , { - 10.081 , 69.505799999 99999 }})) ; connect ( stepvoltage1.n ,ground1.p ) annota tion(Line ( points = { { -80,50 } , { - 80,40.0587 } , { - 79.852 ,40.0587 } , { - 79.852 ,40.0587 }})) ; connect ( resistor1.n ,inductor1.p ) annot ation( Line ( points = { { -50,80 } , { - 39.5281 ,80 } , { - 39.5281 , 79.58669999999 999 }, { - 39.5281 , 79.58669 999999999}})) ; connect ( stepvoltage1.p ,resistor1.p ) ann ota tio n(Line ( points = { { -80,70 } , { - 80,80.1173 } , { - 69.771 ,80.1173 } , { - 69.771 ,80.1173 }})) ; annotation( Icon ( coordinateSystem ( extent = {{- 100, - 10 0 } ,
8.3. OpenModelica Connection Editor (OMEdit )
157
{ 100,100 } } , preserv eAspectR atio = tr ue , initia lScale = 0. 1, gr id = {1 ,1 } ) ), Dia gra m( coordinateSystem ( extent = { { -100, - 10 0 } , { 100,100 } } , preserve AspectRa tio = tr ue , initialScale = 0. 1, gri d = {1 ,1 } ) ), experiment ( StartTime = 0, StopTi me = 1. 2, Toler ance = 1 e - 00 6 ) ) ; en d CircuitoElectricoDiagrama;
Si se eliminan las anotaciones para la creación del diagrama de interconexión, el programa anterior se reduce a: m od el CircuitoElectricoDiagrama Modelica. Electrical. Analog.Bas ic.Resistor resis tor1 ( R = 10 ) ; Modelica.Electrical.Analog.Sources.StepVoltage stepvoltage1 ( V = 10, start Time = 0.05 ) ; Modelica. Electrical. Analog.Bas ic.Inductor induc tor1 ( L = 1) ; Modelica. Electrical. Analog.Bas ic.Resistor resis tor2 ( R = 10 0) ; Modelica.Electrical.Analog.Basic.Capacitor capacitor1 ( C = 0.01 ) ; Modelica. Electrical .Analog.Bas ic.Ground groun d1; equation connect ( capacitor1.n ,ground1.p ) ; connect ( resistor2.n ,ground1.p ) ; connect ( inductor1.n ,capacitor1.p ) ; connect ( inductor1.n ,resistor2.p ) ; connect ( stepvoltage1.n ,ground1.p ) ; connect ( resistor1.n ,inductor1.p ) ; connect ( stepvoltage1.p ,resistor1.p ) ; annotation( experiment ( StartTime = 0, StopT ime = 1.2, Tolerance = 1 e - 00 6 ) ) ; en d CircuitoElectricoDiagrama;
La primera parte del programa, corresponde a la declaración de los elementos con el valor de sus parámetros y la segunda, a las ecuaciones de interconexión entre los terminales de los elementos mediante el uso de la ecuación connect. En los iconos de los elementos eléctricos en Modelica, los terminales “p” son cuadrados azules rellenos y los terminales “ n” cuadrados azules sin relleno. Al comparar las ecuaciones del modelo con el diagrama de la figura 8.28, se aprecia fácilmente que cada una de las ecuaciones connect, corresponde al “cable eléctrico” que conecta uno de los terminales de un componente del circuito, con uno de los terminales de otro, según lo establece la topología del circuito. Las conexiones entre los componentes, especifican las interacciones entre estos. En cada terminal de conexión (conector), residen las variables (variables de potencial y de yflujo) que describen la interacción. En los elementos eléctricos estas son corriente tensión.
158
8 Introducción a OpenModelica
Por ejemplo, la ecuación de conexión connect ( resistor1.n ,inductor1.p
);
establece dos ecuaciones en el punto de conexión (nodo) entre el resistor R1 y el capacitor C1 . establece que las tensiones (variables )dey la potencial) dosdeterminales son Una iguales (resistor1.n.v=inductor1.p.v otra, queen la los suma corrientes (variables de flujo) en el nodo es cero (resistor1.n.i+inductor1.p.i=0). Si se hace un verificación del diagrama de interconección (“Check Model”) esta indica: Check of CircuitoElectricoDiagrama completed successfully. Class CircuitoElectricoDiagrama has 39 equation(s) and 39 variable(s). 24 of these are trivial equation(s).
El número de variables y ecuaciones es ahora, sustancialmente mayor, al de las del modelo desarrollado mediante las ecuaciones de definición de los elementos y la topología del circuito. Esto se debe a que, en los modelos elaborados mediante un diagrama de interconexión de componentes, por un lado se generan como mínimo dos ecuaciones por cada conexión de dos terminales (igualdad de las variables de potencial y suma igual a cero de las variables de flujo), y por otro, a que se tiene acceso no solo a las variables de cada componente, sino también a los valores de las variables uno de sus constitutivas conectores, así a las otras variables que hayan sido definidas,en encada las ecuaciones decomo los componentes. Continuando con el desarrollo de la simulación, si se ejecuta el programa, se recibe el siguiente mensaje de parte del compilador: Warning: The initial conditions are not fully specified. Use +d=initialization for more information. ,
ya que no se han indicado, en forma explícita, los estados iniciales. El valor inicial preestablecido en Modelica para las variables reales es cero. Como en este caso, los estados iniciales soniL = 0 y Vc = 0, los resultados son correctos. Sin embargo, si se desea atender el mensaje de advertencia, o los estados iniciales no son cero, estos deben indicarse en el programa como: Modelica.Electrical.Analog.Basic.Inductor inductor1 ( L = 1 , i( start = 0, fi xed = tr ue)) Modelica.Electrical.Analog.Basic.Capacitor capacitor1 ( C = 0. 01, v ( start = 0, fix ed = tru e))
Al final las de la corrida cuya de simulación al modo de resultados, para seleccionar variables evolución elseeditor desea pasa observar.
8.3. OpenModelica Connection Editor (OMEdit )
159
Figura 8.29: OMEdit - Curvas de respuesta y navegador de variables Cuando la simulación se realiza interconectando componentes de la biblioteca Modelica, se tiene acceso a las variables de potencial (transvariables v en los circuitos eléctricos), en cada uno de los conectores (p y n) para cada uno de los componentes, a la variable de flujo (pervariablei en los circuitos eléctricos) fluyendo del terminalp n al como a la diferencia entre las variables de potencial entre ambos terminales - n.v ). (p.v, así Como se muestra en la figura 8.29, para el circuito eléctrico del ejemplo, se ha deseado comparar en un gráfico (Plot:1) las diferencias de tensión a través de la fuente (stepVoltage1.v), el capacitor (capacitor1.v), el inductor (inductor1.v) y el resistor 1 (resitor1.v); y en otro gráfico (Plot:2) las corrientes por el capacitor (capacitor1.i), el inductor (inductor1.i) y el resistor 2 ( resistor2.i). Los gráficos de la respuesta se pueden imprimir (“Print”) o guardar (“Save”) como una imagen en un archivo (.png, .svg, .bmp). Se puede seleccionar una parte del gráfico para ampliarlo (“Zoom”). Además, cuando el cursor del apuntador está sobre el gráfico, indica las coordenadas (X, Y) de su posición, pudiéndose emplear para determinar los valores de un punto específico sobre una curva, como se muestra en la figura 8.30. La vista completa de un gráfico se restablece seleccionado “Maximize”, del menú desplegado con el botón derecho del apuntador. La cuadrícula de fondo de la figura, se puede mostrar pulsando los botones del
menú o “Detailedtipo Grid”, o eliminar pulsando el botón “No Grid”. usado en El“Gid” color (“Color”), de trazo (“Pattern”) y grosor (“Thickness”)
160
8 Introducción a OpenModelica
Figura 8.30: OMEdit - Ampliación del gráfico y cursor de medición
las curvas de respuesta, así como las leyendas de los ejes (“Vertical Axis Title”, “Horizontal Axis Title”), título (“Plot Title”) y otras caracteríticas de las figuras, se pueden seleccionar con la opción del menú “Setup”, mostrado en la figura 8.5 .
8.3.8 Exportar e importar modelos Modelica El OMEdit permite modelar con Modelica un sistema dinámico, simularlo y ver los resultados. Cada vez que el modelo Modelica es simulado con OMEdit, este es extendido, compilado y luego resuelto numéricamente. Como se indicó en la sección 8.3.4, en cada simulación se crea un archivo con los resultados en formato .mat, el cual puede ser utilizado por otros programas para su despliegue gráfico. El asunto pendiente es, cómo hacer para simular el modelo desarrollado en OpenModelica con otro programa de simulación y cómo ejecutar en OpenModelica un modelo elaborado con otra herramienta. 3 desarrollada en el proLa interfaz estándar FMI (“Funtional Mockup Interface”) 3 https://www.fmi-standard.org/start
8.4. OpenModelica Notebook Editor (OMNotebo ok)
161
yecto ITEA 2 - 07006 (MODELISAR Consortium, 2010), permite intercambiar (importar, exportar) modelos de simulación extendidos ente aplicaciones diferentes. Un componente que se adhiere a esta interfaz, se denomina FMU (“Funtional Mockup Unit”). Una FMU es un archivo compactado (en formato zip) con extensión .fmu, que contiene el archivo de descripción (en formato xml - “eXtensible Markup Language”) en que se definen las variables del modelo, el modelo extendido (todas las ecuaciones del modelo como funciones en C) y otros archivos. El OMEdit permite ambas acciones, con las opciones del menú [FMI][Export FMU] y [FMI][Import FMU]. Una vez elaborado el modelo ( NombreModelo.mo) con OMEdit, este se puede “exportar” como una FMU (NombreModelo.fmu). Un mensaje del compilador indicará la dirección del archivo generado. El archivo .fmu, puede ser “importado” por otra aplicación, por ejemplo el PySimulator (ver el capítulo 13), y como ya está compilado, solo requiere ser simulado. Esto hace que el análisis de los resultados sea mucho más expedito. Finalmente, el OMEdit se cierra desde el menú con [File][Quit], o con el botón [X] de la barra de redimensionamiento de su ventana principal.
8.4 OpenModelica Notebook Editor (OMNotebook) El editor de los modelos expresados como texto o como diagramas gráficos OMEdit, provee interfaz interactiva para realizar el modelado, la simulación y el despliegue de una las variables con Modelica, de los sistemas dinámicos heterogéneos que se desean analizar. Como se ha indicado, los modelos (“programas”) Modelica desarrollados, se pueden guardar en un archivo NombreModelo.mo, para su uso posterior y este puede contener “comentarios” sobre el mismo, sus parámetros, condiciones de uso y otros aspectos, como guía para un posible otro usuario. Sin embargo, esto normalmente no es suficiente, especialmente si el modelo se ha desarrollado con fines didácticos, como por ejemplo, para ilustrar las características de algún proceso o sistema. Por otra parte, no es práctico incluir como comentarios en el modelo, explicaciones extensas sobre, por ejemplo, los resultados de la simulación o el análisis de casos. Esto requiere de un texto explicativo que acompañe al programa. Si bien es posible utilizar un documento explicativo anexo al modelo, es más práctico e ilustrativo, si la descripción, el modelo y los resultados, están todos contenidos en un solo documento interactivo. Esta ha sido la motivación para el desarrollo del cuaderno DrModelica, una herramienta al., 2003). didáctica para la enseñanza del lenguaje Modelica (Lengquist-Sandelin et
162
8 Introducción a OpenModelica
Figura 8.31: OMNotebook - Ventana de edición Los cuadernos DrModelica y DrControl (Torabzadeh-Tari et al., 2011), este último desarrollado para la enseñanza del control automático, han sido elaborados utilizando el editor de cuadernos electrónicos interactivos de OpenModelica (OMNotebook) (Fernström et al., 2006). El OMNotebook está disponible en el menú de aplicaciones de Windows [OpenModelica][OpenModelica Notebook], el cual abre en forma predeterminada, el cuaderno DrModelica. Para crear un cuaderno electrónico interactivo nuevo, se selecciona la opción [New] del menú [File], abriéndose la ventana de edición mostrada en la figura 8.31. Esta incluye los menús desplegables (File, Edit, Cell, Format, Insert, Window, Help) y la barra de herramientas (New, Open, Save, Print, Undo, Redo, Cut, Copy, Paste, Find, EditSketchImage, Image, Link, Sketch, Evaluate, EvaluateAllCells, MoveCellsUp, MovesCellsDown, MoveSelectedCells, Quit). Los cuadernos electrónicos to, texto y programas Modelica. interactivos, permiten integrar en el mismo documen-
8.5. Optimización con OpenModelica
163
Al igual que los libros, reportes y otros documentos, los cuadernos electrónicos interactivos pueden incluir: título, autor, secciones y subsecciones, párrafos de texto y otros “componentes”. En el contexto de los cuadernos desarrollados con el OMNotebook, estos componentes son llamadosceldas. Las celdas de texto se insertan con la opción del menú [Cell][Add Textcell]. El formato de cada celda se establece con [Format][Styles]{Title, Author, ..., Section, Subsection, ..., Text, ...}. Las celdas que corresponden a una ventana de instrucciones Modelica, se introducen con la opción del menú [Cell][Add Inputcell]. Estas celdas pueden contener, por ejemplo, un modelo, o instrucciones de simulación o despliegue gráfico, tal como si esta fuera la venta de entrada de instrucciones del OMShell. Con la opción del menú [Cell][Add Latexcell], se incluyen celdas latex en las cuales se pueden incluir ecuaciones utilizando instrucciones LATEX. La creación de un cuaderno electrónico interactivo, se cubrirá con más detalle en el capítulo 10.
8.5 Optimización con OpenModelica Los problemas de optimización dinámica con OpenModelica, involucran el desarrollo del modelo con Modelica y el del problema de optimización con la extensión Optimica de Modelica (Åkesson, 2008). Existen tres formas de realizar las optimizaciones con OpenModelica: 1. Optimización dinámica con OpenModelica y IpOpt. 2. Optimización dinámica con OpenModelica, exportando el problema a CasADi. 3. Optimización estática con OpenModelica yOMOptim, variando elvalor de los parámetros. IpOpt emplea el algoritmo IPOPT (“Interior Point OPTimizer”)4 (Wätcher, 2002, 2009) para resolver el problema general de optimización no lineal con restricciones, utilizando un método de búsqueda de punto interior (Forsgren et al., 2002).
Optimización del esfuerzo de control Como ejemplo del uso de OpenModelica para resolver un problema de control óptimo, considérese el siguiente problema: 4 https://projects.coin-or.org/Ipopt
164
8 Introducción a OpenModelica
Se desea transferir el sistema (integrador doble) dx1 (t ) = x 2 (t ), dt dx2 (t ) = u(t ), dt
(8.3) (8.4)
desde el estado inicialx0 = (−2, 2 ) hasta el srcen (0, 0), con el esfuerzo de control restricción |u(t )| ≤ 1. La funcional de costo a optimizar (minimizar), es entonces
u(t ) mínimo, sujeto a la
J (x, u) =
∞
0
x21 (t ) + x22 (t ) + u2 (t )
dt .
(8.5)
Esta implica: 1. hacer tender a cero tanto a x1 como a x2 (llevarlas al srcen), y 2. minimizar el esfuerzo de control u (t ). El modelo del sistema es mo d el IntegradorDoble // Mode lo - integr ador dobl e Real x1 ( start = -2, fix ed = tr ue) ; Real x2 ( start = 2, fix ed = tr ue) ; input Real u ; equation de r( x1 ) = x2 ; de r( x2 ) = u ; en d IntegradorDoble;
El problema de optimización, se plantea como una extensión del modelo del sistema. En este, se incorporan al modelo del sistema, la funcional de costo ( cost) y las restricciones del problema (constraint). Como el objetivo de la optimización será siempre, minimizar el valor final de la funcional de costo, si esta es una integral, esta se establece en el problema como una ecuación diferencial (definiendo la derivada de la funcional de costo). El programa Modelica del problema de optimización es optimi zation ContOpt iUmino m( objective = cost ) // Optimi zaci´ o n - con tro l opt ´ imo de esf uer zo de con tro l ınimo m´ extends IntegradorDoble; Real cost ( start = 0, fix ed = tr ue) ; equation de r( cost ) = x1^2 + x2^2 + u^2; constraint ab s( u ) < = 1; en d ContOptiUminom;
165
8.6. Bibliografía
En OpenModelica, los problemas de optimización Optimica, se deben guardar en archivos con extensión.mo , pero no se pueden crear ni abrir con OMEdit. Deben crearse utilizando otro editor de texto. El problema se puede resolver en forma interactiva utilizando el OMShell, o elaborando un cuadernillo electrónico con el OMNotebook. En el OMShell, se pueden cargar los modelos Modelica y Optimica, utilizando directamente la instrucciónloadFile( NombreModelo.mo ), si se ha cambiado el directorio de trabajo, al en que se encuentran los archivos a utilizar, o mediante la opción del menú [File][Open] La secuencia de instrucciones en el OMShell, para la solución del problema de optimización planteado, se listan en la figura 8.32. Estas incluyen seleccionar la opción para utilizar el compilador de Optimica, cargar el archivo del modelo del sistema y cargar el archivo con la definición del problema de optimización. La instrucción optimize(NombreProblemaOptimizacion), realiza de optimización. Luego, utilizando las instrucciones plotParametric y plot, se despliegan las curvas de las variables como se muestra en la figura 8.33 (el movimiento en el plano de fase (x2 (t ) vs. x1 (t )), las curvas dex1 (t ) y x2 (t ), el esfuerzo de control u (t ) óptimo y el valor de la funcional de costo cost(t ). La características de las figuras (color y grosor de las líneas, leyendas), se han editado en la ventana desplegada con la opción “Setup”, del menú de cada una de ellas. Como se aprecia en las figuras, el sistema parte del punto inicial (-2, 2) y llega rápidamente al srcen (0, 0). El esfuerzo de control se mantiene constante en el valor -1, por aproximadamente 1,25 s, tendiendo luego a cero. Cambia de signo por un intervalo de tiempo pequeño, debido a que los estados han cruzado el eje cero. A partir de t ≈ 4 s el valor de los estados y del control tienen un efecto casi despreciable sobre el valor final de la funcional de costo. ''
''
8.6 Bibliografía Åkesson, J. (2008). Optimica - An Extention of Modelica Supporting Dynamic Optimization. En 6th International Modelica Conference, páginas 57–66. marzo 3-4, Bielefeld, Germany. Asghar, S. A., S., Torabzadeh-Tari, M., Source Fritzson, P., Pop,Graphic A., Sjölund, M., P., Vasaiely, P., Tariq, y Schamai, W. (2011). An Open Modelica Editor Inte-
166
8 Introducción a OpenModelica
Figura 8.32: OMShell - Solución del problema de optimización
8.6. Bibliografía
167
Figura 8.33: OpenModelica - Control óptimo, esfuerzo de control mínimo grated with Electronic Notebook and Interactive Simulation. En 8th International marzo 20-22, Dresden, Germany.
Modelica Conference, páginas 739–747.
Fernström, A., Axelsson, I., Fritzson, P., Sandholm, A., y Pop, A. (2006). OMNotebook - Interactive WYSIWYG Book Software for Teaching Programming. En Workshop "Developing Computer Science Education - How Can It Be Done? marzo 10, Linköping, Sweden. Forsgren, A., Gill, P. E., y Wright, M. H. (2002). Interior Methods for Nonlinear Optimization. SIAM Review, 44(4):525–597. Fritzson, P., Aronsson, P., Lundvall, H., Nyström, K., Pop, A., Saldamli, L., y Bro-
168
8 Introducción a OpenModelica
man, D. (2005). The OpenModelica Modeling, Simulation, and Development Environment. En 46th Conference on Simulation and Modelling of the Scandinavian Simulation Society (SIMS2005). octubre 13-14, Trondheim, Norway. Lengquist-Sandelin, E.-L., Monemar, S., Fritzson, P., y Bunus, P. (2003). DrModelica - An Interactive Tutoring Enviroment for Modelica. En 3rd International Modelica Conference. Noviembre 4-6, Linköping, Sweden. MODELISAR Consortium (2010).Funtional Mock-up Interface for Model Exchange, 1.0 edición. Enero 26.
Open Source Modelica Consortium (2016). OpenModelica User’s Guide, Release v1.10.0-dev-16-g147b297. March 15. Torabzadeh-Tari, M., Sjölund, M., Pop, A., y Fritzson, P. (2011). DrControl - An Interactive Course Material for Teaching Control Engineering. En 8th International Modelica Conference, páginas 801–811. marzo 20-22, Dresden, Germany. Wätcher, A. (2002). An Interior Poin t Algorithm for Large-Scale Nonlinear Optimization with Application in Process Engineering . PhD thesis, Carnegie Mellon University, Pittsburgh, Pennsylvania, USA. Wätcher, A. (2009). Short Tutorial: Getting Started with Ipopt in 90 Minutes. En Dagstuhl Seminar 09061 - Combinatorial Scientific Computing. febrero 1-6, Wadern, Germany.
9 Modelado y simulaci´on con OpenModelica En los capítulos anteriores, se han presentado las características principales del lenguaje Modelica y se ha introducido el uso del entorno de modelado y simulación OpenModelica. Estos, constituyen una de las formas más adecuadas para el modelado y simulación de los sistemas dinámicos, especialmente cuando estos son heterogéneos (que incorporan características de diferentes dominios físicos).
9.1 Introducción Utilizando diferentes ejemplos, por lo general simples, se presentará el modelado y la simulación de sistemas de diferente naturaleza, ya sea empleando el modelado mediante un conjunto ecuaciones; utilizando componentes de la biblioteca Modelica, y de otras, y la ecuación de conexión; o directamente mediante un modelado gráfico, utilizando diagramas de interconexión. El modelado de los diferentes sistemas, se enfrentará entonces de tres formas diferentes. Una, determinando las ecuaciones que describen su comportamiento dinámico. Aunque este pareciera ser el procedimiento “tradicional”, se hará uso de las capacidades del lenguaje Modelica, evitando una programación en “diagrama de bloques”. Excepto para aquellos casos en que en forma deliberada, se desee ilustrar el uso de los bloques (con una o más entradas y una salida) disponibles en la biblioteca Modelica. Otra forma, será mediante el uso de los componentes disponibles en las diferentes bibliotecas Modelica. Utilizando ecuaciones de conexión entre sus terminales (ecuaciones connect), determinadas a partir de la topología del sistema. Y la tercera, y adelainterconexión cual se le dará énfasis, empleando será el modelado mediante diagramas gráficos demayor componentes, el OMEdit. 169
170
9 Modelado y simulación con OpenModelica
Figura 9.1: Circuito RLC serie
Para la simulación de los diferentes sistemas, se establecerán los parámetros de los componentes, la mayoría de las veces arbitrarios, y se mostrarán algunas de las posibles curvas de comportamiento de sus variables, sin pretender hacer una análisis exhaustivo del mismo.
9.2 Sistemas eléctricos Como se vio en la sección 5.2.4, la biblioteca Modelica incorpora una variedad importante de componentes, para el modelado de los sistemas eléctricos y electrónicos. Además, las bibliotecas PowerFlow, PowerSystems y Spot, contienen componentes paraMediante el modelado de sistemas de transmisión deuso energía eléctrica. ejemplos sencillos, se ilustrará el de algunos de estos.
9.2.1 Circuito RLC serie Como ejemplo de un sistema eléctrico simple, considérese el “circuito RLC en serie” mostrado en la figura 9.1. Los estados de este circuito, son la diferencia de tensión Vc (t ) a través del capacitor y la corriente i L (t ) por el inductor. Por inspección, se pueden determinar las ecuaciones de estado este circuito, dadas por las siguientes expresiones: dVc (t ) = iL (t ), dt d iL (t ) L = V f (t ) − R iL (t ) − Vc (t ). dt
C
(9.1) (9.2)
El valor los parámetros de los elementos del circuito para la simulación del ejemplo son:de R = 60 Ω, L = 1,0 H y C = 0,0001 F. La tensión de la fuente V f = 10
171
9.2. Sistemas eléctricos
V y se aplicará en el instante t = 0,01 s. Los estados iniciales son iL (0) = 0 A y Vc (0) = 0 V.
Simulación empleando las ecuaciones constitutivas de los elementos
Utilizando (9.1) y (9.2) y los valores de los parámetros establecidos, el programa Modelica para determinar la tensión a través del capacitor y la corriente por el inductor es: m od el SisElec01_e "Circ uito el´ ect ric o RL C ser ie" // Mod elo co n ba se en las ecu aci one s de l cir cui to import Modelica.SIunits. * ; parameter Resis tance R = 60.0; parameter Capaci tance C = 0.0001; parameter Induc tance L = 1.0; Volta ge Vf "fuente" ; Volta ge Vc( start = 0, fi xed = tr ue) "tensi´on capac itor"; Curre nt Il( start = 0, fi xed = tr ue) "corrie nte induc tor"; equation Vf = if ti me > = 0.01 then 10 else 0.0; C * de r( Vc ) = Il ; L * de r( Il ) = Vf - R * Il - Vc ; annotation( experiment ( StartTime = 0. 0, StopT ime = 0 .2 ) ) ; en d SisElec01_e;
citorEn (Vcla).figura 9.2 se muestra la curva de respuesta de la tensión a través del capaEn el programa, se han “importado” (import) los componentes de la biblioteca Modelica.SIunits.*, por lo que las definiciones para el tipo de elemento y sus unidades de acuerdo con el sistema internacional de unidades (SI), están disponibles para hacer las declaraciones de los parámetros y las variables. De esta manera por ejemplo, R y Vc no son simplemente un parámetro y una variable reales, tal como se declararon en el programa introductorio presentado en la sección 4.4. Estos tienen ahora un significado físico. Mediante las líneas del programa import Modelica.SIunits. * ; parameter Resis tance R = 60.0; .. . Volta ge Vc( start = 0, fi xed = tr ue) "tensi´on capac itor";
se indica que el parámetro R es del tipo Resistance (Real, unit = Ohm ) con ''
''
''
''
Vc es del tipo Voltage (Real, unit = V ) un valor deinicial 60 Ω es y que cuyo valor cero.la variable
172
9 Modelado y simulación con OpenModelica
Figura 9.2: Tensión en el capacitor y navegador de variables Como se aprecia en el navegador de variables mostrado en la figura9.2, todos los parámetros y las variables aparecen listados con su valor (condición inicial para las variables) y unidades correspondientes. Además, también se ve como los “comentarios de definición” empleados la sección declaraciones, son utilizados como las descripciones mostradas en el en navegador dede variables. La declaración del significado físico de los parámetros y variables, tiene una importancia adicional. Esto permite verificar laconsistencia física del modelo definido. Esto es, que todos los términos de una ecuación tengan las mismas unidades. El programa de simulación en Modelica del circuito RLC serie, también se puede haber escrito de la siguiente manera: mo d el SisElec01_einc import Modelica.SIunits. * ; parameter Resis tance R = 60.0; parameter Capaci tance C = 0.0001; parameter Induc tance L = 1.0; Vo lt ag e V f, Vr, Vl ; Volta ge Vc( start = 0, fi xed = tr ue) ; Curre nt Il( start = 0, fi xed = tr ue) ; equation Vf = if ti me > = 0.01 then 10 else 0.0; Vr = R * Il ; Vl = L * de r( Il ) ;
173
9.2. Sistemas eléctricos
C * de r( Vc ) = Il ; Vc = Vf - Vr - Vl ; en d SisElec01_einc;
en el cual todas las ecuaciones del modelo son consistentes. Además, el modelo tiene cinco incógnitas y cinco ecuaciones. Por el contrario, si la última ecuación se hubiera escrito como .. . Vc = Vf - Vr - Il ; .. .
el compilador dará una alerta indicando que al resolver el problema del valor inicial no pudo verificar si el modelo es consistente. También advertirá que las condiciones iniciales del modelo están sobre determinadas. Warning: The initial conditions are over specified. Use +d=initialization for more information. Warning: It was not possib le to determine if the initialization problem is consistent, because of not evaluable parameters during compile time: Vc = 0.0 (if time >= 0.01 then 10.0 else 0.0 = 0.0) Como parte del modelo, se ha utilizado la ecuación condicional if , para estable-
cer los instantes en que la tensión de la fuente de alimentación cambia (eventos de tiempo), .. . Vf = if ti me > = 0.01 .. .
then
10 else 0.0;
La variable time (tiempo), no se ha declarado en forma explicita, porque esta está predefinida en todos los modelos Modelica. Sección de “ecuaciones iniciales”
En los modelos anteriores, las condiciones iniciales de los estados se incluyeron como parte de su definición. Para tener mayor flexibilidad con el establecimiento de las condiciones iniciales de los estados, o para incluir ecuaciones que deban resolverse solo una vez, antes de realizar la simulación del modelo, se pueden definir parámetros con el valor de las condiciones iniciales, e incluir la sección initial equation para asignarlos a los estados. Por ejemplo:
174
9 Modelado y simulación con OpenModelica
mo d el SisElce01_eic .. . parameter Volta ge Vc_i c = 0; parameter Curre nt Il_i c = 0; .. . Volta ge Vc "tensi´on capac itor"; Curre nt Il "corrien te induc tor"; initial equation Vc = Vc_ic; Il = Il_ic; equation .. . en d SisElce01_eic;
Extensión de los modelos
Supóngase que el modelo del circuito eléctrico del ejemplo, se ha escrito como mo d el SisElec01_enic import Modelica.SIunits. * ; parameter Resis tance R = 60.0; parameter Capaci tance C = 0.0001; parameter Induc tance L = 1.0; Volta ge Vf "fuente" ; Volta ge Vc( start = 0 ) ; Curre nt Il( start = 0 ) ; equation Vf = if ti me > = 0.01 then 10 else 0.0; C * de r( Vc ) = Il ; L * de r( Il ) = Vf - R * Il - Vc ; annotation( experiment ( StartTime = 0, StopT ime = 0.2, Tolerance = 1 e - 06, Interv al = 0.0004 ) ) ; en d SisElec01_enic;
Si se compara este modelo con el escrito inicialmente para este circuito, se nota que la única diferencia entre ambos, es que ahora las condiciones iniciales de los estados son simples “estimaciones” (fixed=false). Este modelo puede reutilizarse “extendiéndolo” ( extends) de la siguiente manera mo d el SisElec01_ext extends SisElec01_enic; initial equation Vc = 5; Il = -0.02; en d SisElec01_ext;
9.2. Sistemas eléctricos
175
Figura 9.3: Respuestas con las nuevas condiciones iniciales El nuevo modelo permite hacer uso del modelo SisElec01_enic.mo, modificando solamente el valor de las condiciones iniciales. Como estas están indicadas dentro de la sección initial equation, estas se toman como valores fijos. La instrucción extends, inserta en el nuevo modelo el código del modelo que se “extiende” (se amplía con características nuevas o se modifican algunas de las ya definidas). La tensión a través del capacitor y la corriente por el inductor, con las nuevas condiciones iniciales, se muestran en la figura 9.3. El modelo se puede reutilizar fácilmente también con parámetros diferentes, extendiéndolo con modificaciones, como por ejemplo m od el SisElec01_np extends SisElec01_eic ( R = 5 0, C = 0.0 00 2, L = 1 .5 ) ; annotation( experiment ( StartTime = 0, StopT ime = 0.4, Tolerance = 1 e - 06, Inter val = 0.0008 ) ) ; en d SisElec01_np;
En este caso se extendió el modelo SisElec01_eic.mo que tiene definidas como parámetros y fijas, las condiciones iniciales. Además, se debió ampliar el tiempo final de la simulación, debido al nuevo comportamiento del circuito. En la figura 9.4, se pueden comparar las respuestas obtenidas con los dos conjuntos parámetros.de variables es posible modificar los valores de los parámetros En de el navegador
176
9 Modelado y simulación con OpenModelica
Figura 9.4: Respuestas con dos conjuntos de parámetros diferentes Figura 9.5: Terminales de interconexión, de los elementos del circuito RLC serie
y de las condiciones iniciales, si estas se han establecido también como parámetros, y volver a realizar la simulación, (“Re-simulate”) sin necesidad de volver a compilar el modelo. El control de la simulación (tiempos y otras características), se puede modificar seleccionando el icono “Re-simulate setup” (ver la figura 8.18). Simulación utilizando la ecuación connect
En la figura 9.5 se muestra nuevamente el circuito RLC serie, en el cual se han idenp n tificado los terminales los elementoseléctricos que lo forman. Se hará uso ahora deylosdecomponentes predefinidos en la bibliote-
9.2. Sistemas eléctricos
177
ca Modelica.Electrical.Analog.Basic: Resistor, Capacitor, Inductor y Ground, y el Modelica.Electrical.Analog.Sources.StepVoltage. Con base en estos y utilizando la ecuación connect para realizar la conexión entre los componentes, el programa de simulación de este circuito sería el siguiente. m od el SisElec01_c "Circ uito el´ ect ric o RL C ser ie" // Mod elo co n ba se en la int erco nexon i´ de su s ele men tos import Modelica.Electrical.Analog. * ; Basic.R esistor R1 ( R = 60.0 ) ; Basic.C apacito r C1 ( C = 0.0001 ) ; Basic.I nductor L1 ( L = 1 .0 ) ; Basic.G round g; Sources. StepVolt age Vf ( V = 10, startT ime = 0.01 ) ; initial equation C1.p.v = 0; L1.p.i = 0; equation connect ( Vf.p,R1.p ) ; connect ( R1.n,L1.p ) ; connect ( L1.n,C1.p ) ; connect ( C1.n,g.p ) ; connect ( Vf.n,g.p ) ; annotation( experiment ( StartTime = 0, StopT ime = 0 .2 ) ) ; en d SisElec01_c;
En la primera parte del programa, se definen los elementos utilizados junto con sus parámetros: un resistor (R1), un capacitor (C1), un inductor (L1), un punto de referencia o “tierra” (g) y una fuente de tensión (Vf). En la segunda, utilizando una sección de initial equation, se definen las ecuaciones que establecen las condiciones iniciales. En la tercera parte, se hace uso de la ecuación de conexiónconnect, para definir la topología del circuito, según se muestra en la figura 9.5. Modelado gráfico
Para modelar el circuito RLC serie del ejemplo, se utilizan los componentes “básicos” de la biblioteca Modelica.Electrical.Analog.Basic (Ground, Resistor, Capacitor, Inductor), y la fuente de tensión Modelica.Electrical.Analog. Sources.StepVoltage. Empleando el editor de conexiones de OpenModelica (OMEdit), se puede elaborar la “programación gráfica” del circuito simulado, tal como se ilustra en la figura 9.6. de los parámetros de los componentes, especifican abriendo la “ventanaEldevalor parámetros del componente” de cada uno deseellos, presionado dos veces el
178
9 Modelado y simulación con OpenModelica
Figura 9.6: Diagrama de simulación del circuito RLC serie (SisElec01_or.mo)
botón izquierdo del apuntador mientras este se encuentra sobre el icono que lo representa. A manera de ejemplo, la ventana para introducir la capacitancia del capacitor, se muestra en la figura 9.7. En la figura 9.8 se muestra la curva de respuesta de la corriente por el inductor. Se puede comprobar fácilmente, que las respuestas obtenidas con los tres programas anteriores, son idénticas. Procesamiento de las variables
En los programas Modelica elaborados mediante el uso de diagramas de interconexión, se tiene acceso a todas las variables en los terminales (conectores) de los componentes para su despliegue gráfico, seleccionándolas en el navegador de variables. Sin embargo, si se desea utilizar alguna de estas variables para realizar, por ejemplo algún tipo de cálculo, esta debe “medirse”. En la biblioteca Modelica.Electrical.Analog.Sensors, se cuenta con medidores de corriente, tensión y potencia. Para calcular la energía almacenada en el capacitor, se ha adicionado al circuito un vatímetro (Modelica.Electrical.Analog.Sensors.PowerSensor ), como se muestra en la figura 9.9. El vatímetro tiene un par de terminales para medir la corriente y otro par para medir la tensión. La potencia es integrada (Modelica.Blocks.Continouos.Integrator ) para calcular la energía almacenada. El 9.10 vatímetro incorpora un voltímetro y un amperímetro. estos,2)eny la la figura se muestra la variación de la tensión (Plot: 1), la Utilizando corriente (Plot:
9.2. Sistemas eléctricos
Figura 9.7: Ventana de parámetros del Capacitor
Figura 9.8: Corriente por el inductor
179
180
9 Modelado y simulación con OpenModelica
Figura 9.9: Cálculo de la energía almacenada en el capacitor
potencia (Plot: 3) en el capacitor. La energía almacenada en el capacitor (Plot: 4) es la salida del integrador. Además, empleando el cursor de medición sobre el gráfico de la energía, se determinó que la energía total almacenado es Etotal = 0,0050 J. La energía almacenada en el capacitor (valor final de la integral de la potencia entrado al capacitor), también se puede determinar incluyendo en el diagrama un indicador de variables reales Modelica.Blocks.Interaction.Show.RealValue (realvalue1) y conectándolo a la salida del integrador con la instrucción .. . connect ( energia_capacitor.y .. .
, realvalue1.numberPort ) ;
El valor determinado esEtotal n = 0,004982 J. El modelo gráfico desarrollado (SisElec01_o.mo), también se puede abrir y simular utilizando el OMShell. Al igual que el OMEdit, este guardará las variables resultado de la simulación, en el archivo SisElec01_o_res.mat, en un directorio temporal. El archivo de resultados se puede abrir con el PySimulator ( [File][Open Results File ...] ), para el despliegue de las variables de interés.
181
9.2. Sistemas eléctricos
Figura 9.10: Variables en el capacitor Figura 9.11: Circuito RLC paralelo
9.2.2 Circuito RLC paralelo Considérese ahora el “circuito RLC en paralelo”, mostrado en la figura 9.11. Los estados en este circuito son la tensión Vc (t ) a través del capacitor y la corriente i L (t ) por el inductor. Las ecuaciones de estado de este circuito son entonces dVc (t ) 1 = I f (t ) − Vc (t ) − iL (t ), (9.3) R dt diL (t ) L = Vc (t ). (9.4) dt En forma similar al caso del circuito RLC en serie, se hará la simulación de este circuito utilizando dos procedimientos diferentes. En el primero, empleando las C
ecuaciones circuito en para escribir directamente componentesdeldefinidos la biblioteca Modelica. el modelo y después, utilizando los
182
9 Modelado y simulación con OpenModelica
Los parámetros del circuito para el ejemplo son: R = 200 Ω, L = 1,0 H, C = 0,0001 F, I f = 2 A (a partir de t = 0,02 s), i L (0) = 0 A y Vc (0) = 0 V. Simulación empleando las ecuaciones constitutivas de los elementos
Utilizando (9.3) y (9.4) y los valores de los parámetros establecidos, el programa Medelica para determinar la tensión a través del capacitor y la corriente por el inductor es: mo d el SisElec02_e "Circ uito el´ ect ric o RL C par ale lo" // Mod elo co n ba se en las ecu aci one s de l cir cui to import Modelica.SIunits. * ; parameter Resis tance R = 200.0; parameter Capaci tance C = 0.0001; parameter Induc tance L = 1.0; Curre nt If "fuente" ; Volta ge Vc( start = 0, fi xed = tr ue) "tensi´on cap aci tor"; Curre nt Il( start = 0, fi xed = tr ue) "corrie nte induc tor"; equation If = if ti me > = 0.02 then 2 else 0.0; C * de r( Vc ) = If - V c / R - Il ; L * de r( Il ) = Vc ; annotation( experiment ( StartTime = 0. 0, StopT ime = 0.30 ) ) ; en d SisElec02_e;
Modelado gráfico
El “programa” de simulación elaborado con el OMEdit (SisElec02_o.mo), se muestra en la figura 9.12. En este, se ha incluido un amperímetro y un voltímetro, los cuales si bien no son indispensables en este caso, sirven para ilustrar el uso de otros componentes disponibles. En la figura 9.13 se muestra la curva de la corriente por el inductor, obtenida con los dos programas,Il (roja) con el primero y la corriente medida con el amperímetro (azul) con el segundo. Tal como debería ser, las dos curvas son idénticas. Nótese que en este caso, se han desplegado en la misma figura, las curvas de respuesta obtenidas con dos modelos diferentes del mismo sistema, SisElec02_e.mo y SisElec02_o.mo. Los resultados de todos los modelos simulados, se encuentran disponibles en el navegador de variables.
9.2.3 Efecto de la temperatura sobre la resistencia eléctrica En loseléctricos ejemplosideales, de las secciones 9.2.1 y 9.2.2 anteriores, ha hecho de resistores con una resistencia constante. Sin se embargo, el uso componente
9.2. Sistemas eléctricos
Figura 9.12: Diagrama de simulación del circuito RLC paralelo
Figura 9.13: Corriente por el inductor
183
184
9 Modelado y simulación con OpenModelica
Figura 9.14: Ventana de parámetros del componenteResistor eléctrico de la biblioteca Modelica.Electrical.Analog.Basic, permite tomar en consideración el efecto de la temperatura sobre el valor de su resistencia. Resistor
La resistencia del componente está dada por la relación R = R re f
donde:
1 + α Thp − Tre f
,
(9.5)
• R - resistencia del componente, • Rre f resistencia a la temperatura Tre f , • Thp - temperatura del puerto de calentamiento, • Tre f temperatura de referencia (preestablecida como 300,15 K). La ventana de parámetros del resistor se muestra en la figura 9.14. También está disponible el componenteHeatingResistor, cuya resistencia depende de la temperatura del puerto por el cual disipa calor al medio (ver el ejemplo de la sección 9.6.2).
9.2. Sistemas eléctricos
185
Figura 9.15: Rectificador de onda completa
9.2.4 Rectificador de onda completa En la figura 9.15 se muestra el diagrama de simulación, de un rectificador eléctrico de onda completa, que utiliza cuatro diodos ideales. Se desea que la salida del rectificador sea de 24 Vcc. Este incluye los siguientes componentes: Modelica.Blocks.Sources.BooleanStep Modelica.Electrical.Analog.Basic.Capacitor Modelica.Electrical.Analog.Basic.Ground Modelica.Electrical.Analog.Basic.Resistor Modelica.Electrical.Analog.Ideal.IdealDiode (4) Modelica.Electrical.Analog.Ideal.IdealClosingSwitch Modelica.Electrical.Analog.Ideal.IdealTransformer Modelica.Electrical.Analog.Sources.SineVoltage El modelo del circuito del rectificador es unmodelo híbrido, ya que mezcla com-
ponentes continuos con elementos discretos. El diodo es un componente discreto, ya que si conduce o no, depende de que se cumpla una condición. Si el diodo no conduce (está “off”), no fluye corriente por el y la tensión a través suyo es negativa. Si el diodo conduce (está “on”), la corriente fluye y la caída de tensión a través de el es cero. El diodo ideal es implementado con el siguiente código (Modelica Association, 2013): m od el IdealDiode
"Idea l diod e"
186
9 Modelado y simulación con OpenModelica
extends Modelica.El ectrical.An alog.Inter faces.OnePo rt; parameter Modelica.SIunits .Resistan ce Ron (final mi n = 0 ) = 1 e - 00 5 "Forwa rd stat e- on differ ential resist ance ( closed diod e resist ance) " ; parameter Modelica .SIunits. Conductanc e Goff (final mi n = 0 ) = 1 e - 00 5 "Backwa rd stat e- off conduc tance ( open ed diod e conductance ) " ; parameter s.Voltage Vkne(final e mi n = 0 ) = 0 "Forwar dModelica.SIunit thres hold volta ge" ; extends Modelica.Electrical.Analog.Interfaces. ConditionalHeatPort; Boole an off( start = tr ue) "Switch ing stat e"; protected Real s ( start = 0 , final unit = " 1 ") "Auxil iary varia ble for act ual pos iti on on th e ide al dio de char act eri stic" ; // s = 0 : kne e poin t / / s < 0 : bel ow kn ee po in t, dio de con duc tin g / / s > 0 : abo ve kn ee po in t, dio de loc kin g constant Modelica .SIunits. Voltage unitVo ltage= 1 annotation( HideResult = tr ue) ; constant Modelica .SIunits. Current unitCu rrent= 1 annotation( HideResult = tr ue) ; equation of f = s < 0 ; v = s * unitCurrent * (i f of f then 1 else Ro n) + Vknee; i = s * unitVoltage * (i f of f then Goff else 1 ) + Goff * Vknee; LossPower = v * i ; .. . en d IdealDiode;
La fuente de alimentación es de 110 V, 60 Hz, la relación de transformación del transformador es n = 6 ,25, la capacitancia del filtro C = 0,001 F y la carga es resistiva, con una resistenciaR = 100 Ω. La ventana de parámetros de la fuente de alimentación se muestra en la figura 9.16. Las señales de entrada (en el secundario del transformador) y salida (en la carga) del rectificador, se muestran en la figura9.17. El valor medio de la tensión en la carga es de 24 V. El capacitor utilizado en el rectificador, tiene una capacitancia C = 0, 001 F. Se puede disminuir el “rizado” de la tensión en la carga, aumentado esta capacitancia. C = 0 ,1 F la tensión en la carga sería la mostrada en la Por ejemplo, figura 9.18. si se utiliza
9.2. Sistemas eléctricos
Figura 9.16: Ventana de parámetros del componente SineVoltage
Figura 9.17: Tensiones en el rectificador de onda completa
Figura 9.18: Tensión en la carga utilizando C = 0,1 F
187
188
9 Modelado y simulación con OpenModelica
Figura 9.19: Sistema mecánico con elementos que se desplazan
9.3 Sistemas mecánicos con elementos que se desplazan En la sección 5.2.7 se describieron algunos de los componentes incluidos en la biblioteca Modelica, para modelar sistemas mecánicos con elementos que se desplazan en una dirección sobre un plano, que giran sobre su eje, o que son de tres dimensiones. Los sistemas mecánicos cuyos elementos se desplazan, se modelan con los componentes de la bibliotecaModelica.Mechanics.Traslational.
9.3.1 Sistema con masa, resorte y amortiguador Considérese por ejemplo, el sistema mecánico con una masa, un resorte y un amortiguador, mostrado en la figura9.19, en donde se aplica una fuerza a la masa. Un modelo para este sistema, está dado por las ecuaciones: m
dV (t ) = Fi (t ) − Fb (t ) − Fk (t ), dt d X (t ) V (t ) = , dt d X (t ) Fb (t ) = b , dt Fk (t ) = k X (t ).
(9.6) (9.7) (9.8) (9.9)
Los parámetros del sistema para el ejemplo son: m = 36 kg, k = 1 Nm−1 y b = 1 −1 Nsm aplicada es Fi =son 5 NX para 2 ≤ t ≤ 30s y Fi = 0 N para todo otro (0) = 0 m y V (0) = 0 m s−1 . instante.. La Lasfuerza condiciones iniciales
9.3. Sistemas mecánicos con elementos que se desplaza n
189
Simulación empleando las ecuaciones constitutivas de los elementos
Utilizando (9.6) a (9.9) y los valores de los parámetros establecidos, el programa Modelica para determinar la posición y la velocidad de la masa es: m od el SisMec01_ext
"Sist ema
mec´ ani co ma sa res ort e amor tig uad or"
// Mod ela do co n ba se en la s rel aci one s cons tit uti vas import Modelica.SIunits. * ; parameter Mas s m = 2 "masa" ; parameter Real k = 1 "consta nte resor te"; parameter Real b = 1 "coef . amorti guador"; Forc e fuerzaA plicad a"fuerz a aplic ada"; Force fuerzaResorte ,fuerzaA mortiguador ; Posit ion posic ion( start = 0, fix ed = tr ue) "posici´on ma sa" ; Veloc ity veloci dad( start = 0, fix ed = tr ue) "veloc idad mas a"; equation m * de r( velocidad ) = fuerzaAplicada - fuerzaAmortiguador - fuerzaResorte; velocidad = de r( posicion ) ; fuerzaAplicada = if ti me > = 2 an d ti me < = 30 then 5 else 0; fuerzaAmortiguador = b * velocidad; fuerzaResorte = k * posicion; annotation( experiment ( StartTime = 0. 0, StopT ime = 60.0, Tolerance = 1 e - 00 6 ) ) ; en d SisMec01_ext;
En la figura se ymuestra el aplicada). comportamiento del sistema mecánico (posición y velocidad de la9.20 maza, la fuerza Modelado gráfico
El “programa” de simulación elaborado con el OMEdit para modelar y simular el sistema mecánico de la figura 9.19 (SisMec01_o.mo), se muestra en la figura 9.21. En este se han utilizado los componentes mecánicos Fixed, Mass, Spring, Damper contenidos en la biblioteca Modelica.Mechanics.Traslational.Components, la fuerza tipo escalón Modelica.Mechanics.Traslational.Sources.ForceStep y el medidor Modelica.Mechanics.Traslational.Sensors.RelSpeedSensor . En la figura 9.22 se muestran las curvas de posición y velocidad de la masa, para 0 ≤ t ≤ 30 s, tomadas de un punto de conexión (flange_b) del medidor de velocidad.
9.3.2 Sistema mecánico “libre” En este ejemplo,unel resorte conjunto mecánico de la figura 9.23,entre está si. compuesto por una masa cilíndrica, y un amortiguador, conectados
190
9 Modelado y simulación con OpenModelica
Figura 9.20: Posición y velocidad de la masa, y la fuerza aplicada
Figura 9.21: Diagrama de simulación del sistema mecánico
9.3. Sistemas mecánicos con elementos que se desplaza n
191
Figura 9.22: Posición y velocidad de la masa Figura 9.23: Conjunto mecánico
Un extremo del amortiguador se ha fijado a la pared y el otro, a un extremo de la masa. El extremo libre de la masa está sujeto a una placa con ruedas que se desliza sin fricción por el piso (se supone que la masa de la placa es despreciable). La masa cilíndrica junto con el amortiguador, se encuentran en la parte interna de un resorte, cuyos extremos están sujetos uno a la pared y el otro a la placa. La longitud de la masa cilíndrica es Lm . La longitud del amortiguador Lb (t ) puede variar desde L bmin hasta L bmax = 2Lmin cuando está extendido. Por lo tanto la longitud del resorte es L k (t ) = L m + Lb (t ). Cuando no está sometido a ninguna fuerza, el resorte tiene una longitud L ko . El diagrama para la simulación de este conjunto con Modelica, se muestra en la figura 9.24. Fixed, de En este seModelica.Mechanics.Translational.Components han empleado los componentes Mass, Spring, Damper la biblioteca . y
192
9 Modelado y simulación con OpenModelica
Figura 9.24: Diagrama de interconexión del conjunto mecánico
Los parámetros del componenteMass (masa), son su masa m en kg y su longitud en m. Por su parte los parámetros del componente Spring (resorte), son su constante k (c) en Nm −1 y su longitud sin estiramiento (s_real0). El único parámetro del componente Damper (amortiguador), es su constante de amortiguamiento b (d) en Nsm−1 . Para el ejemplo se utilizarán los siguientes parámetros: masa ( m = 20 kg, L =
L
−1
−1
20 cm), resorte (c = 10inicialmente Nm , s_real0 = 50 cm), amortiguador (d = 10 Ns m ). El conjunto se encuentra en reposo. En la figura 9.25, se muestra el diagrama esquemático de este sistema con la indicación de las distancias, respecto a la pared de referencia, de los extremos de los componentes y del centro de masa de la masa cilíndrica. Primero se “arma” el conjunto, con el amortiguador con la longitud más corta entre sus extremos, indicando flange_b.s(start =0.2, fixed =true) como una condición inicial del modelo. El comportamiento del conjunto mecánico, a partir de estas condiciones, se muestra en la figura 9.26. Como se puede ver en esta figura, la solución del problema de valor inicial determinó que el centro de masa (c.m.) de la masa cilíndrica, se encuentra a 30 cm de la pared y que la longitud inicial del resorte es 40 cm (se ha comprimido 10 cm). La fuerza ocasionada por compresión del resorte, hace que este se estire hasta alcanzar su longitud normal de 50 cm. Para un segundo caso, el conjunto de arma con el amortiguador “estirado” (a su longitud máxima). Para cambiar la posición inicial del extremo del amortiguador conectado a laesto, masabasta flange_b.s(start =0.4, fixed =true).
9.3. Sistemas mecánicos con elementos que se desplaza n
Figura 9.25: Diagrama de interconexión del conjunto mecánico
0 = 20 cm) Figura 9.26: Comportamiento del conjunto mecánico f(bb
193
194
9 Modelado y simulación con OpenModelica
Figura 9.27: Comportamiento del conjunto mecá0 = 40 cm) nico ( fbb
Como se observa en la figura 9.27, el centro de la masa cilíndrica, se encuentra ahora inicialmente a 50 cm de la pared y la longitud inicial del resorte es 60 cm (se ha estirado 10 cm). Luego de “soltar” el conjunto, este alcanza el mismo punto de equilibrio que en el caso anterior. Se puede confirmar fácilmente, que si se especifica como posición inicial del extremo del amortiguadorflange_b.s(start =0.3, fixed =true), el conjunto no experimentará ningún movimiento, ya que el resorte no estará inicialmente, ni comprimido ni estirado.
9.4 Sistemas mecánicos con elementos que giran Los sistemas mecánicos cuyos elementos giran, se modelan con los componentes de la biblioteca Modelica.Mechanics.Rotational.
9.4.1 Sistema con volante, resorte y amortiguador giratorios En la figura 9.28 se muestra un sistema mecánico simple cuyos elementos giran. Una masa giratoria (volante), está conectada a una barra (resorte giratorio) y a un amortiguador giratorio.
195
9.4. Sistemas mecánicos con elementos que giran
Figura 9.28: Sistema mecánico que gira
Figura 9.29: Diagrama de simulación de un sistema mecánico que gira Los parámetros del sistema son: inercia del volante J = 10 kgm 2 , constante del resorte K = 10 Nm rad−1 y coeficiente del amortiguador B = 5 Nm rad−1 s−1 . Se aplica un par tipo escalón T = −10 Nm, al eje libre del volante, en t = 2 s. Se desea ver como cambia la velocidad de rotación de los dos ejes del sistema. El diagrama Modelica para simular este sistema, se muestra en la figura 9.29. En este diagrama se ha utilizado los siguientes componentes: Modelica.Mechanics.Rotational.Components.Fixed Modelica.Mechanics.Rotational.Components.Inertia Modelica.Mechanics.Rotational.Components.Spring Modelica.Mechanics.Rotational.Components.Damper Modelica.Mechanics.Rotational.Sensors.SpeedSensor Modelica.Mechanics.Rotational.Sources.TorqueStep
(2)
196
9 Modelado y simulación con OpenModelica
Figura 9.30: Velocidades de rotación en el sistema mecánico giratorio En la figura 9.30 se muestra la velocidad de rotación en los dos extremos del resorte giratorio. El extremo conectado al volante ( medidor_1.flang_b) empieza a girar primero e inicialmente más rápido, que el extremo conectado al amortiguador (medidor_2.flange_b ). Después de aproximadamente un minuto, los dos ejes −1 velocidad de rotación y estas permanecen constantes ( ω1 (t ) = alcanzan la misma ω 2 (t ) = 2 rads ).
9.4.2 Máquina giratoria desbalanceada Se tiene una máquina giratoria (motor eléctrico, compresosr, turbina, u otra) cuyo rotor está desbalanceado. El diagrama de la máquina se muestra en la figura 9.31 (Speckhart y Green, 1976). La masa total de la máquina esM . El rotor tiene una masa desbalanceadam, cuyo centro de masa está a una distancia r del centro del rotor. La máquina se ha montado sobre un soporte, compuesto por un resorte equivalente (k) y un amortiguador (b). Se tomará como posición de referencia, la posición de la máquina detenida descansando sobre el soporte. La ecuación del movimiento de la máquina esta dada por la expresión 2 x(t ) x(t ) M d 2 +bd + kx(t ) = fm (t ), dt dt
(9.10)
9.4. Sistemas mecánicos con elementos que giran
197
Figura 9.31: Máquina giratoria desbalanceada
donde la fuerza producida por la masa desbalanceada es 2
fm (t ) = mr ω
sen(ω t ). Producto del desbalance del rotor, se transmite al piso una fuerza ft p (t ) = kx (t ) + b
dx(t ) . dt
(9.11) (9.12)
Los parámetros de la máquina son: M = 50 kg, m = 0,10 kg, r = 0, 05 m, k = 25 Nm −1 y b = 4 Nsm −1 . La velocidad nominal de rotación de la máquina es de 1200 revoluciones por minuto (ω = 125, 66 rads−1 ) y en el arranque, la máquina se acelera en forma constante, de tal manera que tarde 10 s en alcanzarla. El programa de simulación de la máquina desbalanceada con Modelica, es m od el SisMec04MaqDesb parameter Real M = parameter Real m = parameter Real b = parameter Real k = parameter Real r =
"Maqui na girato ria desbala nceada" 50 "masa tot al"; 0 .1 "masa desbala nceada"; 4 "amortiguador" ; 25 "resorte" ; 0.05;
198
9 Modelado y simulación con OpenModelica
(a) Desplazamiento de la máquina
(b) Fuerza transmitida al piso
Figura 9.32: Comportamiento de la máquina desbalanceada durante el arranque Real w, f m, ft p; Real po s( start = 0, fix ed = tr ue) ; Real ve l( start = 0, fix ed = tr ue) ; equation w = if ti me < 10 then 12.567 * time else 125.67; M * de r( ve l) + b * ve l + k * po s = fm ; ve l = de r( po s) ; fm = m * r * w ^ 2 * si n( w * time ) ; ft p = k * po s + b * vel; annotation( experiment ( StartTime = 0, StopT ime = 120, Tolerance = 1 e - 00 6, Inter val = 0.02 ) ) ; en d SisMec04MaqDesb;
El comportamiento de la máquina, durante los primeros dos minutos de operación, se muestra en la figura 9.32. El desplazamiento máximo de la máquina durante el arranque es de +8 mm/-7 mm y en estado estacionario este es de +0,35 mm/-0,30 mm (figura 9.32a). La fuerza transmitida al piso en estado estacionario, producto del desbalance de la máquina, es de +0,055 N/-0,045 N (figura 9.32b).
9.4.3 Péndulo con amortiguamiento En el desarrollo realizado en la sección 4.2.13, para obtener los modelos del péndulo de la figura 4.2, se consideró que el aire no ofrecía ninguna resistencia al movimiento del péndulo. Se supondrá ahora que la fuerza de resistencia del aire, es proporcional a la El velocidad del péndulo. pénduloangular amortiguado se muestra en la figura 9.33 y su modelo está dado por
9.4. Sistemas mecánicos con elementos que giran
199
Figura 9.33: Péndulo con amortiguamiento
las siguientes ecuaciones: ω (t ) = J
d θ (t ) , dt
dω (t ) = −Tm (t ) − Tb (t ), dt Tm (t ) = L Fm (t ) = L m g sin (θ (t )), Tb (t ) = L Fb (t ) = L b ω (t ), J = m L2 .
(9.13) (9.14) (9.15) (9.16) (9.17)
que se pueden rescribir como ω (t ) = m L2
d θ (t ) , dt
dω (t ) + L m g sin(θ (t )) + L b ω (t ) = 0. dt
(9.18) (9.19)
Los parámetros utilizados en el ejemplo son: masa m = 1 kg, largo L = 1 m y coeficiente de fricción con el aire b = 0,75 kgm s−1 . El modelo Modelica del péndulo amortiguado es m od el DampedPendulum " P´ endul o amorti guado" import Modelica.Constants.pi; constant Real g = 9.80 "gravedad" ;
200
9 Modelado y simulación con OpenModelica
parameter Real L = 0.50 "largo" ; parameter Real m = 1 "masa" ; parameter Real b = 0.75 "fricci´o n "; parameter Real posAngic = 0.75 * pi "posici´on ini cia l"; parameter Real velAngic = 0 "velocid ad inici al"; Real posAn g , velAng; initial equation posAng velAng = = posAngic; velAngic; equation velAng = de r( posAng ) ; m * L ^ 2 * de r( velAng ) + L * m * g * si n( posAng ) + L * b * velAng = 0; annotation( experiment ( StartTime = 0, StopT ime = 10 , Tolerance = 1 e - 06, Interv al = 0.02 ) ) ; en d DampedPendulum;
En la figura 9.34 se puede comparar la repuesta del péndulo sin fricción, caso (a), con la obtenida cuando se considera la resistencia del aire, caso (b). Como se aprecia en el plano de fase, en el caso ideal (sin fricción con el aire), el péndulo se mantiene oscilando en forma indefinida. Si la fuerza de fricción con el aire es tomada en consideración, el péndulo alcanza un punto de equilibrio con velocidad angular velang ( ) y posición angular (posAng) cero, La oscilación del péndulo es amortiguada, hasta que este se detiene.
9.5 Sistemas hidráulicos La simulación de los sistemas hidráulicos, mediante la interconexión de componentes de la biblioteca Modelica, hace uso de los “equipos” (tanques, válvulas, tuberías) modelados en la biblioteca Modelica.Fluid y de los fluidos (aire, agua, gases) de la biblioteca Modelica.Media.
9.5.1 Sistema hidráulico con un tanque En la figura 9.35 se muestra un proceso hidráulico simple, compuesto por un tanque de área transversal A, con la parte superior abierta a la atmósfera y una válvula de descarga al medio ambiente, de constante Kv . Haciendo un balance volumétrico del fluido en el tanque, las ecuaciones del modelo de este sistema son: A
dH (t ) = Qe (t ) − Qs (t ), dt Qs (t ) = Kv
ρ gH (t ).
(9.20) (9.21)
9.5. Sistemas hidráulicos
Figura 9.34: Comportamiento del péndulo
201
202
9 Modelado y simulación con OpenModelica
Figura 9.35: Sistema hidráulico simple
Se desea analizar como varía el nivel del líquido en el tanque, que está inicialmente vacío, si el caudal de entrada Qe (t ) = 0 ,25 m3 s−1 para 5 s ≤ t ≤ 150 s y Qe (t ) = 0 para cualquier otro instante. El fluido es agua (ρ = 1000 kg m−3 ) y los parámetros del sistema para la simulación son: área transversal del tanqueA = 2 m2 , constante de la válvulaKv = 0,002062 y la aceleración de la gravedad g = 9, 8 m s−2 . El nivel del líquido está dado en m. El programa de simulación con Modelica es mo d el SisHidra01_e "Siste ma hidr´ aulico - un tan que" // V´alv ula no lin eal constant Real g ( unit = "m/s2" ) = 9.8; parameter Real A ( unit = "m2" ) = 2 " area ´ tanque" ; parameter Real df ( unit = "kg/m3" ) = 1000 "densid ad flui do"; parameter Real Kv = 0.002062 "const ant e v´ alvula" ; Real H ( unit = " m ", sta rt = 0, fix ed = tr ue) "nivel" ; Real Qe ( unit = "m3/s" ) "caud al entra da"; Real Qs ( unit = "m3/s" ) "caud al sali da"; equation Qe = if ti me > 5 an d ti me < 15 0 then 0.25 else 0; A * de r( H ) = Qe - Qs ; Qs = if noEvent ( H >= 0 ) th en Kv * sqrt ( df * g * H ) el se 0; ; annotation( experiment ( StartTime = 0, StopT ime = 20 0) ) ; en d SisHidra01_e;
En este ejemplo, además de los comentarios de definición, se han establecido las variables, las cuales se desplegarán en la columna “Unit” del navegador de variables. En la figura 9.36 se muestra la variación del nivel del fluido en el tanque, así como los caudales de entrada y salida del mismo. En el instante t = 5 s, el caudal de entrada pasa de cero a 0,25 m 3 s−1 y el tanque empieza a llenarse. El fluido se acumula en el tanque y el nivel del líquido en el unidades (unit) de las
mismo su vez que(Q el (caudal de descarga (salida) aumente. El sistemaaumenta, alcanza elhaciendo punto dea equilibrio s t ) = Q e (t )) cuando el nivel del líquido
203
9.5. Sistemas hidráulicos
Figura 9.36: Variables del sistema hidráulico simple H 0 = 1,5 m.
A partir del punto de equilibrio, cuando el caudal de entrada se hace nuevamente cero, el tanque se vacía rápidamente. Debido a que la válvula de descarga es no lineal, las características dinámicas del proceso cuando el tanque se está llenado, son diferentes de cuando este se está vaciando.
9.5.2 Sistema hidráulico con dos tanques en serie Se dirá que dos sistemas están en serie, si la salida del primero es la entrada del segundo. En este caso, la causalidad entrada a salida está bien definida. Un sistema de este tipo, es el compuesto por dos tanques abiertos a la atmósfera con su correspondiente válvula de descarga, colocados en dos niveles diferentes, donde el tanque más elevado descarga en el segundo, tal como se muestra en la figura 9.37. Los datos para la simulación son: fluido (ρ = 1000 kg m−3 ); áreas de los tanques A1 = 2 m 2 , A 2 = 4 m 2 ; constantes de las válvulas Kv1 = 0,002062, K v2 = 0,001786; aceleración de la gravedadg = 9, 8 m s−2 ; niveles H1 y H2 en m; y caudal de entrada Qe (t ) = 0,25 m3 s−1 para 5 s ≤ t ≤ 450 s. El programa Modelica para simular este sistema es m od el SisHidra02_e
"Siste ma hidr´ aulico
- do s tan que s en ser ie"
204
9 Modelado y simulación con OpenModelica
Figura 9.37: Sistema de dos tanques en serie
/ / V´alvul as no linea les constant Real g ( unit = "m/s2" ) = 9.80; parameter Real A1 ( unit = "m2" ) = 2 " ar ´ ea tan que 1"; parameter Real A2 ( unit = "m2" ) = 4 " ar ´ ea tan que 2"; parameter Real df ( unit = "kg/m3" ) = 1000 "densid ad flui do"; parameter Real Kv 1 = 0.002062 "const ant e v´ alv ula 1"; parameter Real Kv 2 = 0.001786 "const ant e v´ alv ula 2"; Real H1 ( unit = " m ", sta rt = 0, fix ed = tr ue) "niv el 1" ; Real H2 ( unit = " m ", sta rt = 0, fix ed = tr ue) "niv el 2" ; Real Qe ( unit = "m3/s" ) "caud al entra da"; Real Qs 1( unit = "m3/s" ) "cau dal sal ida 1"; Real Qs 2( unit = "m3/s" ) "cau dal sal ida 2"; equation Qe = if ti me > 5 an d ti me < 45 0 then 0.25 else 0; A1 * de r( H1 ) = Qe - Qs1; A2 * de r( H2 ) = Qs 1 - Qs2; Qs 1 = if noEvent ( H1 >= 0 ) th en Kv 1 * sqrt ( df * g * H1 ) el se 0; Qs 2 = if noEvent ( H2 >= 0 ) th en Kv 2 * sqrt ( df * g * H2 ) el se 0; annotation( experiment ( StartTime = 0, StopT ime = 60 0) ) ; en d SisHidra02_e;
En la figura 9.38 se muestra la variación de los niveles del fluido en los tanques y de los caudales, para 0 ≤ t ≤ 600 s. En el estado de equilibrio, con Q e (t ) = 0,25 m3 s−1 constante, los niveles en los tanques son H10 = 1,5 m y H20 = 2,0 m. Para mantenerQs2 (t ) = Qs1 (t ) = Qe (t ), H2 (t ) debe ser mayor que H1 (t ), ya que Kv2 < Kv1 . En este sistema hidráulico la causalidad es clara. El primer tanque tiene una “variable de entrada” ( Qe (t )) y “variables de salida” ( H1 (t ), Qs1 (t )). Por su parte, el segundo tanque tiene una variable de entrada (Qs1 (t ) que depende de H1 (t )) y varia), Q s2 (t )). blesSidesesalida (Hel2 (tconjunto define de parámetros del grupo de componentes hidráulicos
9.5. Sistemas hidráulicos
205
Figura 9.38: Comportamiento del sistema de tanques en serie (tanque, válvula) como θ p = {A, Kv }, se tiene que las variables en el sistema están dadas por relaciones de la forma H1 (t ) = f1 (θ p1 , Qe (t )), Qs1 (t ) = f2 (θ p1 , Qe (t )), H2 (t ) = f3 (θ p2 , Qs1 (t )), = f 5 (θ p1 , θ p2 , Qe (t )), Qs2 (t ) = f4 (θ p2 , Qs1 (t )) = f6 (θ p1 , θ p2 , Qe (t )).
(9.22) (9.23) (9.24) (9.25)
Aunque es evidente de la figura 9.37, es importante hacer notar aquí, en contraposición con lo que se verá en el sistema de la siguiente sección, que las variables del primer tanque, no dependen de las variables ni de los parámetros del segundo tanque, pero que las variables del segundo tanque si dependen de las variables y parámetros del primero.
9.5.3 Sistema hidráulico con dos tanques interconectados Considérese el en sistemas de9.39. dos tanques, con sus bases al mismo nivel y conectados como seahora ilustra la figura
206
9 Modelado y simulación con OpenModelica
Figura 9.39: Sistema de dos tanques en serie Las ecuaciones que modelan el comportamiento dinámico en los dos tanques, son dH1 (t ) = Qe1 (t ) − Q12 (t ), dt dH2 (t ) A2 = Qe2 (t ) + Q12 (t ) − Qs2 (t ), dt Q12 (t ) = signo(H1 (t ) − H2 (t ))Kv1 ρ g |H1 (t ) − H2 (t )|, A1
Qs2 (t ) = Kv2
ρ gH2 (t ).
(9.26) (9.27) (9.28) (9.29)
En forma compacta, el conjunto de ecuaciones anteriores se puede escribir como {H1 (t ), H2 (t ), Q12 (t ), Qs2 (t )} = f (θ p1 , θ p2 , Qe1 (t ), Qe2 (t )) ,
(9.30)
evidenciando que todas las variables del sistema, dependen de los estímulos aplicados y de los parámetros de ambos tanques. Los datos para la simulación son: fluido (ρ = 1000 kg m−3 ); áreas de los tanques A1 = 2 m 2 , A 2 = 4 m 2 ; constantes de las válvulas Kv1 = 0,002062, Kv2 = 0,001786; aceleración de la gravedad g = 9, 8 m s−2 ; niveles H1 y H2 en m; caudales de entrada Qe1 (t ) = 0,25 m 3 s−1 para 5 s ≤ t ≤ 700 s y Q e2 (t ) = 0,40 m 3 s−1 para 700 s ≤ t ≤ 1800 s. Las áreas transversales de los tanques y la apertura de las válvulas, son las mismas que en el sistemas de dos tanques en serie de la sección 9.5.2. El programa Modelica para simular este sistema, es mo d el SisHidra04_e // Sis tem a hid r´ aulico - do s tanqu es interco nectado s / / V´alvul as no linea les constant Real g ( unit = "m/s2" ) = 9.80; parameter Real A1 ( unit = "m2" ) = 2 " ar ´ ea tan que 1";
9.5. Sistemas hidráulicos
207
Figura 9.40: Comportamiento de dos tanques interconectados parameter Real parameter Real parameter Real parameter Real Real H1 ( unit = Real H2 ( unit =
A2 ( unit = "m2" ) = 4 " ar ´ ea tan que 2"; df ( unit = "kg/m3" ) = 1000 "densid ad flui do"; Kv 1 = 0.002062 "const ant e v´ alv ula 1"; Kv 2 = 0.001786 "const ant e v´ alv ula 2"; " m ", sta rt = 0, fix ed = tr ue) "niv el 1" ; " m ", sta rt = 0, fix ed = tr ue) "niv el 2" ;
Real Qe 1( unit = "m3/s" ) "cau dal ent rad a 1"; Real Qe 2( unit = "m3/s" ) "cau dal ent rad a 2"; Real Q1 2( unit = "m3/s" ) "c au da l de 1 a 2" ; Real Qs 2( unit = "m3/s" ) "cau dal sal ida 2"; equation Qe 1 = if ti me > 5 an d ti me < 70 0 then 0.25 else 0; Qe 2 = if ti me > 70 0 an d tim e < 18 00 then 0.395 else 0; A1 * de r( H1 ) = Qe 1 - Q12; A2 * de r( H2 ) = Qe 2 + Q1 2 - Qs2; Q1 2 = if noEvent ( H1 - H2 >= 0 ) th en Kv 1 * sqrt ( df * g * (H1 - H2 ) ) el se -Kv 1 * sqrt ( df * g * (H2 - H1 ) ) ; Qs 2 = if noEvent ( H2 >= 0 ) th en Kv 2 * sqrt ( df * g * H2 ) else 0; annotation( experiment ( StartTime = 0, StopT ime = 2000 ) ) ; en d SisHidra04_e;
En la figura 9.40 se muestra la variación de los niveles del fluido y de los caudales en los dos tanques. Se puede analizar el comportamiento del sistema en tres intervalos de tiempo: 1. Para 5 s ≤ t ≤ 700 s, Q e1 (t ) > 0 y Q e2 (t ) = 0, y por lo tanto siempre H1 (t ) >
208
9 Modelado y simulación con OpenModelica
Figura 9.41: Sistema hidráulico con un tanque esférico
H2 (t ). En el punto de equilibrio para Q e1 (t ) = 0,25 m 3 s−1
y Q e2 = 0, H 201 = 2 m (obviamente igual al nivel necesario en el sistema con los dos tanques en serie, con los mismos parámetros y condiciones de caudal), pero H101 = 3,50m. 2. En el intervalo 700 s ≤ t ≤ 1800 s, Qe1 (t ) = 0 y Qe2 (t ) > 0. Inicialmente H1 (700) > H 2 (700) ( Q12 > 0), por lo que H2 aumenta mientras que H1 disminuye, hasta que se hace ligeramente inferior a H 2 , entonces Q12 se vuelve “negativo”, es,segundo se invierte el sentido de flujo los dosaumentan tanques. Ahora el líquido esto va del tanque al primero, losentre dos niveles (con nuevo punto de equilibrio. Evidentemente en este nuevo punto de equilibrio, el nivel en los dos tanques es igual (H102 (t ) = H202(t ) = 5 m).
H1 (t ) < H2 (t )) hasta que se alcanza un
3. Finalmente para 1800 s ≤ t ≤ 2000 s, Qe1 (t ) = 0 y Qe2 (t ) = 0. Los tanques se vacían, los niveles del fluido en los mismos disminuyen, conH1 (t ) > H2 (t ) siempre, hasta que ambos llegan a cero.
9.5.4 Sistema hidráulico con un recipiente esférico En el sistema hidráulico de la figura 9.41, el recipiente es una esfera de radio R abierta a la atmósfera en la parte superior. La tubería de llenado está conectada a la parte más alta del recipiente y la de descarga, junto con una válvula, a la parte inferior del mismo. El volumen V del líquido en la esfera, en función del nivel H , es (Rivera, 2007) V (H (t )) =
π
3
H 2 (t ) [3R − H (t )] ,
(9.31)
209
9.5. Sistemas hidráulicos
Por su parte, el área de la superficie del líquido es A(H (t )) = π H (t ) [2R − H (t )] ,
(9.32)
de manera que un diferencial de volumen en la superficie del líquido, sería dV (H (t )) = A(H (t ))dH (t ) = π H (t ) [2R − H (t )] dH (t ).
(9.33)
La variación del volumen de líquido en el recipiente, está dado por la expresión (balance volumétrico) dV (H (t )) = Qe (t ) − Qs (t ). (9.34) dt De (9.34), y (9.31) o (9.33), se obtiene el siguiente modelo para este sistema: Qe (t ) − Qs (t ) dH (t ) = , dt π H (t ) [2R − H (t )] Qs (t ) =Kv Xv
(9.35) (9.36)
ρ gH (t ).
donde, para el ejemplo, se tiene: ρ - densidad del fluido, ρ = 1000 kgm−3 , g - aceleración de la gravedad, g = 9,8 m s−2 , H - nivel de fluido en el recipiente, m, Kv - constante de la válvula de descarga, Kv = 0,001, Qe - caudal de entrada, m 3 s−1 , Qs - caudal de salida, m 3 s−1 , R - radio del recipiente esférico, R = 2,0 m, Xv - apertura de la válvula de descarga (0 a 1).
El modelo Modelica para la simulación de este sistema, es m od el Esfera_e "Sis tem a co n tan que esferico" ´ import Modelica.Constants.pi; constant Real g = 9 .8 "gravedad" ; parameter Real d = 1000 "densid ad flui do"; parameter Real R = 2 "radi o esfer a"; parameter Real Kv = 0.001 "con st. v´ alvula" ; parameter Real Xv = 0.01 "aper tur a v´ alvula" ; parameter Real Ht = 2 * R "ni vel m´ aximo" ; parameter Real Vt = 4 * pi * R ^ 3 / 3 "volu men Real Qe, Qs, H, V, Hp, Vp; initial equation de r( H ) = 0; equation
m´ aximo" ;
210 Qe = if ti me > de r( H ) = (Qe Qs = Kv * Xv * V = pi / 3 * H // Niv el y vol Hp = 10 0 * H / Vp = 10 0 * V /
9 Modelado y simulación con OpenModelica
2 then 0 .1 else 0.00028; Qs ) / ( pi * H * (2 * R - H ) ) ; sqrt ( d * g * H ) ; ^ 2 * (3 * R - H ) ; ume n en por cen taj e H t; V t;
when Vp >= 99.99 then terminate( "Esfera llena" ) ; en d wh en; annotation( experiment ( StartTime = 0, StopT ime = 360, Tolerance = 1 e - 06, Interv al = 0.05 ) ) ; en d Esfera_e;
En este modelo se han incluido ecuaciones de declaración , para el cálculo del nivel máximo Ht y el volumen máximo (total)Vt del líquido en la esfera. Para el primer análisis, el sistema está en un punto estacionario, con la válvula de descarga abierta solo un 1 %, de manera que el caudal de salida sea muy pequeño. El caudal de entrada inicialmente es Q e = 0,00028 m3 s−1 (el requerido para que el nivel sea un 2%) y se cambia a Q e = 0,10 m3 s−1 en t = 0,10 s. La simulación se detendrá cuando la esfera esté llena al 99,99 % del volumen total. La variación del nivel y de la cantidad de líquido en el recipiente, se muestran en la figura 9.42. Como el caudal de salida es muy pequeño, con relación al de entrada, y casi no se ve afectado por el nivel del líquido, el volumen del líquido almacenado en la esfera aumenta en forma lineal, mientras que la variación del nivel muestra claramente la característica no lineal del recipiente esférico. En el modelo se indicó el intervalo para la simulación como StopTime = 360 s. Sin embargo, la simulación terminó en t = 341,29 s, con el siguiente mensaje por parte del compilador: stdout | info | Simulation call terminate() at time 341.285050 Message : Esfera llena ya que en ese instante, Vp = 99,99%.
Para analizar el comportamiento dinámico del sistema, a partir de un nivel determinado, ante un incremento en el caudal de entrada equivalente al 5% del caudal inicial y con la válvula de descarga abierta al 50%, el modelo Modelica anterior se modificó de la siguiente manera mo d el Esfera_en "Sis tem a co n tan que esferico" ´ import Modelica.Constants.pi; constant Real g = 9 .8 "gravedad" ; parameter Real d = 1000 "densid ad flui do"; parameter Real R = 2 "radi o esfer a";
9.5. Sistemas hidráulicos
211
Figura 9.42: Nivel y volumen del fluido en la esfera
parameter Real Kv = 0.001 "con st. v´ alvula" ; parameter Real Xv = 0.01 "aper tur a v´ alvula" ; parameter Real Ht = 2 * R "nive l maxim o"; parameter Real Vt = 4 * pi * R ^ 3 / 3 "volu men m´ aximo" ; parameter Real Qe i = 0.00885 "cau dal par a el niv el ini cia l" ; Real Qe, Qs, H, V, Hp, Vp; initial equation de r( H ) = 0; equation Qe = if ti me > 5 then 1.05 * Qe i else Qei; de r( H ) = (Qe - Qs ) / ( pi * H * (2 * R - H ) ) ; Qs = Kv * Xv * sqrt ( d * g * H ) ; V = p i / 3 * H ^ 2 * (3 * R - H ) ; // Niv el y vol ume n en por cen taj e Hp = 10 0 * H / H t; Vp = 10 0 * V / V t; annotation( experiment ( StartTime = 0, StopT ime = 2500, Tolerance = 1 e - 06, Inter val = 1 ) ) ; en d Esfera_en;
En partiendo la figura 9.43 muestra el cambio del3 nivel −1 y del volumen de fluido en la esfera, de Hse 0 = 80% ( Qei = 0,885 m s ).
212
9 Modelado y simulación con OpenModelica
Figura 9.43: Nivel y volumen, H0 = 80%, ∆Qe = 5 %
Como resultado del incremento del caudal de entrada, el volumen del líquido almacenado en la esfera aumenta un 7,32% y el nivel un 10,11%. El comportamiento dinámico del sistema en ese punto (80%), muestra una ganancia K = 1833,67 m /(m3 /s) y que el tiempo requerido para que el cambio en el nivel alcance el 63,2% del cambio total t 63,2 % = 537,79 s .
9.5.5 Sistema con tanques, válvulas y tuberías El modelado de los sistemas hidráulicos anteriores, no presenta gran dificultad. Sin embargo, si el sistema incorpora más componentes y además, se desea reflejar de mejor manera por ejemplo las relaciones entre los caudales y presiones en el sistema, mediante un modelado más apegado a la realidad, su desarrollo puede requerir de un gran esfuerzo. Considérese por ejemplo el sistema de tanques, con válvulas y tuberías de interconexión, mostrado en la figura 9.44. Las bases de los taques se encuentra a diferente altura sobre el nivel de referencia. Se deben incluir en el modelo las características de las tuberías y válvulas de interconexión. Las válvulas que interconectan el tanque Tq1 con el Tq2 , V12 y la que conecta este con el tanque Tq3 , V23 están completamente abiertas. La válvula de entrada de líquido V1 y la de descarga V2 , tienen un operador eléctrico e inicialmente están completamente cerradas. Los tanques inicialmente están parcialmente llenos. En vez los de establecer las de ecuaciones requeridas paraenelparticular modeladolos deldesistema, se emplearán componentes la biblioteca Modelica, la biblio-
9.5. Sistemas hidráulicos
213
Figura 9.44: Diagrama del sistema de tanques, válvulas y tuberías
Figura 9.45: Modelo del sistema de tanques, válvulas y tuberías con Modelica teca Modelica.Fluid. En la figura 9.45 se muestra en diagrama de conexión del modelo con Modelica, desarrollado con el editor gráfico de OMEdit. Este se ha elaborado utilizando los siguientes componentes: Modelica.Blocks.Math.Add (2) Modelica.Blocks.Math.Constant (2) Modelica.Blocks.Sources.Ramp (4) Modelica.Fluid.Pipes.StaticPipe (4) Modelica.Fluid.Sources.FixedBoundary (2) Modelica.Fluid.System Modelica.Fluid.Valves,ValveLinear (4) Modelica.Fluid.Vessels.OpenTank (3)
Por simplicidad, todos los tanques son iguales, lo mismo que las válvulas y el diámetro de todas lasdeltuberías. Los parámetros sistema son:
214
9 Modelado y simulación con OpenModelica
• Fluido, agua, • Tanques, altura T qh1 = T qh2 = T qh3 = 10 m, • Tanques, área transversal T qA1 = T qA2 = T qA3 = 2 m2 , • Tanques, diámetro de las bocas para la conexión de las tuberías 0,50 m (todas a nivel de la base), • Tuberías, diámetro nominal 0,50 m, • Tuberías, longitud L 12 = L23 = L30 = 10 m • Tubería, longitud L 01 = 100 m, • Válvulas, caudal nominal a 100% de apertura Qn = 0,20 m3 s−1 , • Válvulas, caída de presión nominal a 100% de apertura ∆Pn = 800 Pa, • Válvulas, V 12 y V 23 manuales, abiertas 100%, • Válvulas, V 1 y V 2 con operador eléctrico, tiempo total del recorrido de apertura o cierre 100 s, inicialmente cerradas, • Elevaciones, descarga a nivel de referencia, suministro a 18 m de altura, • Elevaciones, bases de tanques N T q1 = 6 m, N T q2 = 4 m, N T q3 = 2 m, • Niveles iniciales del fluido en los tanques, HT q1o = 1 m, HT q2o = 3 m, HT q3o = 5 m. La secuencia de operación del sistema, es la siguiente: 1. t = 0, H T q1o = 1 m, H T q2o = 3 m, H T q3o = 5 m, 2. 0 ≤ t < 10 s, V 1 y V 2 cerradas, 3. t = 10 s, se inicia la apertura de V 1, de 0 al 90% (tarda 90 s), 4. t = 250 s, se inicia el cierre de V 1, de 90% al 0 (tarda 90 s), 5. t = 3610 s, se inicia la apertura de V 2, de 0 al 60% (tarda 60 s), 6. t = 4000 s, se inicia el cierre de V 2, de 60% al 0 (tarda 60 s), 7. t ≥ 4060 s, V 1 y V 2 cerradas.
9.5. Sistemas hidráulicos
215
A continuación se lista el programa Modelica, creado automáticamente por el editor, para simular este sistema. Se han introducido en el los parámetros particulares del sistema. Los demás parámetros de los componentes Modelica, se han dejado en su valor predeterminado en la biblioteca. Para tener),mayor claridadcon dellacódigo, se han eliminado indicacionesy (annotation relacionadas ubicación de los iconos todas de loslas componentes con el trazo de las conexiones entre ellos. m od el Hidra3T4Vcydamb replac eable packa ge Medium = Modelica.Media.Water. Constant PropertyL iquidWate r constr ainedby Modelic a.Media . Interfaces.PartialMedium; Modelica. Fluid.Ves sels.OpenT ank tanqu e_1 (redecla re packa ge Medium = Med ium, heig ht = 10, cross Area = 2, nPo rts = 2 , level_start = 1, portsD ata = {Modelica.Fluid.Vessels. BaseClasses.VesselPortsData ( diameter = 0 .5 ) ,Modelica. Fluid.Vessels.BaseClasses.VesselPortsData ( diameter = 0 .5 ) } ); Modelica. Fluid.Pip es.StaticP ipe tuberi a_01 (redeclar e packa ge Medium = Med ium, leng th = 10 0, diame ter = 0. 5, heigh t_ab = -12 ) ; Modelica. Fluid.Val ves.ValveL inear valvul (redecla a_1 re packa ge Medium = Med ium, dp_nom inal = 800, m_flow_ nominal = 0 .2 ) ; Modelica. Fluid.Sour ces.FixedB oundary sumini stro (redeclare package Medium = Mediu m , nPorts = 1 ) ; Modelica. Blocks.Ma th.Add apertu ra_v1; Modelica .Blocks.S ources.Ram p rampa_ cv1 ( height = -0.9, duration = 90, start Time = 25 0) ; Modelica. Fluid.Val ves.ValveL inear valvul a_12 (redeclar e packa ge Medium = Med ium, dp_nom inal = 800, m_flow_ nominal = 0 .2 ) ; Modelica. Blocks.So urces.Cons tant cons ( kt = 1 ) ; Modelica. Fluid.Pip es.StaticP ipe tuberi a_12 (redeclar e packa ge Medium = Med ium, leng th = 10, diame ter = 0. 5, height _ab = -2 ) ; Modelica. Fluid.Ves sels.OpenT ank tanqu e_3 (redecla re packa ge Medium = Med ium, heig ht = 10, cross Area = 2, level_ start = 5, nPo rts = 2, portsD ata = {Modelica.Fluid.Vessels. BaseClasses.VesselPortsData ( diameter = 0 .5 ) ,Modelica.Fluid. Vessels.BaseClasses.VesselPortsData ( diameter = 0 .5 ) } ); Modelica. Fluid.Pip es.StaticP ipe tuberi a_23 (redeclar e packa ge Medium = Med ium, leng th = 10, diame ter = 0. 5, height _ab = -2 ) ; Modelica. Fluid.Pip es.StaticP ipe tuberi a_30 (redeclar e packa ge Medium = Med ium, leng th = 10, diame ter = 0. 5, height _ab = -2 ) ; Modelica. Fluid.Val ves.ValveL inear valvul (redecla a_2 re packa ge
216
9 Modelado y simulación con OpenModelica
Medium = Mediu m , dp_nominal = 800, m_flow_ nominal = 0 .2 ) ; Modelica. Fluid.Sour ces.FixedB oundary desca (redecla rga re packa ge Medium = Med ium, nPort s = 1 ) ; Modelica. Fluid.Ves sels.OpenT ank tanqu e_2 (redeclar e packa ge Medium = Mediu m , height = 10, cross Area = 2, nPo rts = 2 , level_start = 3, portsD ata = {Modelica.Fluid.Vessels. BaseClasses.VesselPortsData ( diameter = 0 .5 ) ,Modelica.Fluid. Vessels.BaseClasses.VesselPortsData ( diameter = 0 .5 ) }e);packa ge Modelica. Fluid.Valv es.ValveL inear valvul a_23 (redeclar Medium = Mediu m , dp_nominal = 800, m_flow_ nominal = 0 .2 ) ; Modelica. Blocks.So urces.Cons tant const ant1 ( k = 1) ; Modelica .Blocks.M ath.Add apertu ra_v2; Modelica .Blocks.So urces.Ram p rampa_ cv2 ( height = -0.6, duration = 60, startT ime = 4000 ) ; Modelica .Blocks.So urces.Ram p rampa_ av1 ( height = 0.9, duration = 90, startT ime = 10 ) ; Modelica .Blocks.So urces.Ram p ramp_ av2 ( height = 0.6, duration = 60, startT ime = 3610 ) ; inner Modelica.Flu id.Syste m syste m; equation connect ( valvula_12.port_a ,tanque_1.ports [ 2 ] ) ; connect ( constant1.y ,valvula_23. opening ); connect ( const. y ,valvula_12.openin ) g ; connect ( ramp_av2.y ,apertura_v2.u1 ) ; connect ( rampa_av1.y ,apertura_v1.u1 ) ; connect ( rampa_cv2.y ,apertura_v2.u2 ) ; connect ( rampa_cv1.y ,apertura_v1.u2 ) ; connect ( apertura_v2.y ,valvula_2.o pening ); connect ( apertura_v1.y ,valvula_1.o pening ); connect ( tuberia_30.port_b ,descarga.ports [ 1 ] ); connect ( valvula_2.port_b ,tuberia _30.port_a ); connect ( valvula_2.port_a ,tanque_3.por [ts 2 ] ); connect ( tuberia_23.port_b ,tanque_3.ports [ 1 ] ); connect ( valvula_23.port_b ,tuberia_2 3.port_a ); connect ( valvula_23.port_a ,tanque_2.ports [ 2 ] ) ; connect ( tuberia_12.port_b ,tanque_2.ports [ 1 ] ); connect ( valvula_12.port_b ,tuberia_1 2.port_a ); connect ( tuberia_01.port_b ,tanque_1.ports [ 1 ] ); connect ( valvula_1.port_b ,tuberia _01.port_a ); connect ( suministro.ports [ 1 ] ,valvula_1.port_a ) ; connect ( tuberia_23.port_a ,valvula_2 3.port_b ); connect ( valvula_23.port_a ,tanque_2.ports [ 2 ] ) ; connect ( tuberia_12.port_a ,valvula_1 2.port_b ); annotation( experiment ( StartTime = 0, StopT ime = 7000, Tolerance = 1 e - 00 6 ) ) ; en d Hidra3T4Vcydamb;
La verificación del modelo indica: Check of Hidra3T4Vocydamb completed successfully.
9.5. Sistemas hidráulicos
217
Figura 9.46: Niveles y caudales en el sistema de tanques, válvulas y tuberías Class Hidra3T4Vocydamb has 473 equation(s) and 473 variable(s). 175 of these are trivial equation(s).
Podría pensarse que el número de ecuaciones que forman este modelo es muy alto, comparación con con base la cantidad de ecuaciones de los modelos escritosenanteriormente, en las ecuaciones constitutivas de los hidráulicos elementos. Sin embargo, es importante hacer notar que en la biblioteca Modelica.Media, el estado del fluido en cualquier punto del sistema, está representado por dos variables: presión absoluta y entalpía. Además, contempla ecuaciones para calcular otras variables. Las propiedades del fluido incluyen: presión absoluta, temperatura, densidad, energía interna, entalpía y fracción de masa. En la figura 9.46 se muestran como cambian los niveles del fluido en los tanques, la apertura de las válvulas V 1 y V 2 y los caudales por todas las válvulas. Cuando se abre V 1, el nivel en el tanque 1 aumenta rápidamente, el nivel en el tanque 2 lo hace más lento y el nivel en el tanque 3, todavía más lento. Cuando se cierra la válvula V 1, el nivel en el tanque 1 empieza a decrecer, mientras que los niveles de los tanques 2 y 3 continúan subiendo, hasta que se alcanza un nuevo punto de equilibrio. Dada la diferencia entre las elevaciones de las bases de los tanques, se sabe que en cualquier punto de equilibrio, con caudales cero por las válvulas, H T q3 = H T q2 + H T q + m. 2m = Cuando1se 4abre V 2, el nivel en el tanque 3 disminuye rápidamente, el nivel en
218
9 Modelado y simulación con OpenModelica
Figura 9.47: Medición de los caudales en un sistema hidráulico el tanque 2 lo hace más lento y el nivel en el tanque 1, todavía más lento. Cuando se cierra la válvula V 2, el nivel en el tanque 1 empieza a subir, mientras que los niveles de los tanques 2 y 3 continúan descendiendo, hasta que se alcanza otro punto de equilibrio (HT q1o = 1,2 m, H T q2o = 3,2 m, H T q3o = 5,2 m). El modelado gráfico de los sistemas termofluídicos, combina los componentes de la biblioteca Modelica.Fluid, con los fluidos (“medios”), cuyas propiedades están definidas en la biblioteca Modelica.Media (Elmqvist et al., 2003; Casella et al., 2006).
9.5.6 Medición del caudal por las tuberías
Para tener acceso directo a las variables en los sistemas hidráulicos, como densidades, temperaturas, razones de flujo volumétrico o de masa, y otras, se pueden incorporar en el modelo, algunos de los componentes que representan dispositivos de medición disponibles en la biblioteca Modelica.Fluid.Sensors. Para determinar el caudal de entrada o salida de los taques, el caudal por las tuberías, se hará uso del medidor Modelica.Fluid.Sensors.VolumeFlowRate. En la figura 9.47 se muestra el diagrama de interconexión, de una versión reducida del sistema hidráulico utilizado en la sección anterior. Los parámetros del nuevo sistema, son los mismos del sistema srcinal. En este modelo, se han incorporado tres medidores de caudal: por la tubería de entrada al tanque 2 (medCaudal_1), por la tubería que interconecta el tanque 2 con el 3 (medCaudal_2) y por la tubería de descarga del tanque 3 (medCaudal_3). Si se verifica el modelo con la opción del menú Check Model , esta indica: “Check of SisHidra2Tmedcaudal completed successfully. Class SisHidra2Tmedcaudal has 377 equation(s) and 377 variable(s). 148 of these are trivial equati on(s). ”
9.5. Sistemas hidráulicos
219
Figura 9.48: Niveles de líquido en los tanques, apertura de válvulas y caudales por las tuberías La variación de los niveles del líquido en los tanques y los caudales por las tuberías, cuando se manipula la apertura de las válvulas 1 y 2, se muestra en la figura 9.48.
9.5.7 Parámetros de los componentes hidráulicos Los componentes OpenTank, StaticPipe, ValveLinear, ValveDiscrete, Pump y ControlledPump, entre otros, contenidos en las bibliotecas agrupadas en la biblioteca Modelica.Fluid, permiten describir con bastante detalle, las características de estos elementos. Componente Modelica.Fluid.Vessels.OpenTank
Los parámetros de este componente incluyen: la altura de las paredes (m), el área trasversal (m2 ), el nivel inicial del líquido (m), los parámetros del medio ambiente y otros Además, aunque normalmente se supone que todas las conexiones de las tuberías a la pared de un tanque están a nivel “cero” (el nivel del piso o del fondo del tanque), el componente OpenTank permite especificas para las conexiones (“ports”): su cantidad (nPorts ), su diámetro (diameter) y su elevación (height) respecto al nivel del fondo del tanque.
220
9 Modelado y simulación con OpenModelica
Figura 9.49: Elevación de la conexión de una tubería a un tanque
Figura 9.50: Sistema de tanques con tuberías a diferente nivel Considerando el tanque de la figura 9.49, la presión absoluta en la “boca” de una conexión de tubería, está dada por la ecuación Px (t ) = ρ g m´ax{0, H (t ) − H px } + Pa .
(9.37)
Entonces, si el nivel de líquido en el tanque, en algún momento está por debajo de la conexión de una tubería, por esta no puede salir fluido del tanque, solo puede entrar. En el ejemplo siguiente, se tienen los dos tanques cilíndricos verticales mostrados en la figura 9.50, los cuales están interconectados por una tubería cuyos extremos no se encuentran al mismo nivel. Además, el segundo tanque tiene otra tubería para descargar a un embalse. En este sistema, las paredes de los tanques miden Ht 1 = Ht 2 = 10 m, y sus áreas transversales A 1 = A 2 = 2 m2 ; la tubería entre los dos tanques está conectada en el tanque 1 a Hp11 = 5 m de altura y en el tanque 2 a Hp12 = 1 m, y mide L 1 = 20 m de largo; la tubería de descarga del tanque 2 está conectada a Hp22 = 2 m y mide L2 =
d 1 = d2 = m de largo; diámetroHde=las10tuberías cm; los dos tanques de se 100 encuentran a unaelelevación m sobreesel nivel del25 embalse. 0
9.5. Sistemas hidráulicos
221
Figura 9.51: Diagrama de simulación del sistema de dos tanques
Figura 9.52: Nivel del líquido en los tanques y caudales por las tuberías El diagrama de simulación (SisHidra2T1pL) de este sistema en Modelica, se muestra en la figura 9.51. En la figura 9.52 se muestran las curvas de los niveles del fluido en los dos tanques (H1 (t ), H2 (t )) y el caudal de líquido por la tubería de interconexión entre estos (Q12 (t )) y por la tubería de descarga del tanque 2 ( Q20(t )), para cuatro condiciones iniciales (H10 , H20 ) diferentes, las cuales se explican por si solas. Componente Modelica.Fluid.Pipes.StaticPipe
Este parámetros: (m), diámetro (m),ylaotros. diferenciacomponente de elevacióntiene entrecomo sus extremos (m),sulalongitud rugosidad de su la pared interna
222
9 Modelado y simulación con OpenModelica
Componente Modelica.Fluid.Valves.ValveIncompresible
Mientras que el modelo del componente ValveLinear es muy simple, representa a una válvula lineal cuyos parámetros son el caudal y la caída de presión a apertura completa, el componente ValveIncompresible, además del caudal y la caída de presión nominales, tiene como parámetro el coeficiente de flujo ( Av , Kv o Cv ), y la 1 para característica de flujo cuadrática o isoporcentual), de entre otros. Este la válvula, utilizando las(lineal, ecuaciones de dimensionamiento la norma ISA modela S75.1 fluidos incompresibles.
Componente Modelica.Fluid.Machines.Pump
Este representa una bomba centrífuga, cuyos parámetros incluyen la velocidad nominal de rotación, su curva característica nominal (presión de descarga versus caudal), dada como una ecuación lineal, cuadrática o polinomial. Si la velocidad de rotación de la bomba es variable, el modelo utiliza los datos nominales y las ecuaciones de afinidad, para determinar las características de flujo a cualquier otra velocidad. Además, provee la conexión al eje de la bomba, al cual se le puede acoplar una unidad motriz.
9.5.8 Declaración del fluido en los componentes del sistema El fluido modelosencon componentes de la biblioteca.Modelica.Fluid, puede ser uno deenloslosdefinidos la biblioteca Modelica.Media Esta última provee las definiciones de las interfaces para los diferentes fluidos y los modelos de las propiedades y características termodinámicas, de algunos como: aire, agua, gases ideales y ejemplos de fluidos incompresibles. Además, provee las bases para definir el modelo de un fluido incompresible nuevo. Entre los modelos de los gases se encuentran, por ejemplo, el del cloro, hidrógeno, helio, oxido nitroso, dióxido nitroso, metano, monóxido de carbono, acetileno, propano, butano, vapor de agua y oxígeno. En todos los ejemplos de las secciones anteriores, el fluido utilizado fue agua. Este se declara dentro del modelo como .. . replac eable packa geMedium = Modelica.Media.Water. Constant PropertyLi quidWater constra inedby Modelic a.Media . Interfaces.PartialMedium; .. . 1 Instrument Society of America - ISA S75.1 “Flow Equations for Sizing Control Valves”
9.6. Sistemas térmicos
223
Figura 9.53: Sistema de cámaras con aislamiento térmico
y luego, en cada uno de los componentes fluídicos utilizados, se asigna al medio del componente. Por ejemplo para un tanque con .. . Modelica. Fluid.Ves sels.OpenT ank tank (redeclar e pack age Medium Mediu m , height = 10, cross Area = 2, .. . ) ; .. .
=
9.6 Sistemas térmicos Los sistemas en los que se almacena, transfiere y disipa calor, se pueden modelar con los componentes de la bibliotecaModelica.Thermal.
9.6.1 Sistema con dos cámaras térmicas En la figura 9.53 se muestra un sistema compuesto por dos cámaras cerradas, cuyas paredes tienen aislamiento térmico. Se inyecta calor a una razón qe (t ) solo a la cámara 1. El aislante de la pared entre las dos cámaras tiene una resistencia térmica Rt 12 y las paredes exteriores de la cámara 1 y la 2 Rt 10 y Rt 20, respectivamente. El interior de las cámaras, se encuentra inicialmente a temperatura ambiente. Se desea investigar cómo varían las temperaturas interiores de las cámaras y los flujos de calor entre ellas y desde estas al medio ambiente, cuando se aplica calor a la primera. El diagrama de simulación con Modelica, para este sistema térmico, se muestra en la figura 9.54. En el se ha utilizado los siguientes componentes: Modelica.Blocks.Sources.Step Modelica.Thermal.Fluid.HeatTransfer.Celcius.FixedTemperatura
224
9 Modelado y simulación con OpenModelica
Figura 9.54: Diagrama de simulación del sistema de cámaras con aislamiento térmico
Modelica.Thermal.Fluid.HeatTransfer.Celcius.TemperaturaSensor (2) Modelica.Thermal.Fluid.HeatTransfer.Components.HeatCapacitor (2) Modelica.Thermal.Fluid.HeatTransfer.Components.ThermalResistor (3) Modelica.Thermal.Fluid.HeatTransfer.Sources.PrescribedHeatFlow
Los parámetros del sistema son: capacitancias térmicas de las cámaras Ct 1 = Ct 2 = 10 JK −1 , resistencias térmicas de las paredes aisladas R t 12 = 5 K W−1 , R t 10 = Rt 20 = 20 KW −1 , temperatura inicial de las cámaras T10 = T20 = 20 ◦ C, temperatura ambiente T0 = 20 ◦ C, flujo de calor de entrada q e (t ) = 2 W para t ≥ 10 s En la figura 9.55 se muestran las temperaturas en las cámaras, el flujo de calor entre las cámaras y los flujos de calor de estas al medio ambiente. A partir de que se aplica el cambio en el flujo de calor de entrada, el sistema tarda aproximadamente 1200 s (≈ 20 min) en alcanzar el nuevo punto de equilibrio. Las temperaturas de las cámaras aumentan desde los 20 ◦C iniciales hasta T1o = 43,2 ◦ C ,7 ◦ C. En el nuevo estado estacionario, los flujos de calor sonqo12 = 0,89 W, yqoT2o==137 ,11 W y q 0 = 0,89 W (qo = qo , q o + qo = q ). 10
20
20
12
10
20
e
9.6. Sistemas térmicos
225
Figura 9.55: Temperaturas y flujos de calor en las cámaras con aislamiento térmico Figura 9.56: Horno eléctrico
9.6.2 Horno eléctrico En la figura 9.56 se muestra un horno eléctrico con aislamiento térmico. Este conjuga componentes eléctricos y térmicos. La tensión de la alimentación eléctrica es variable y se ajustará de manera de calentar el horno en dos etapas. Para la simulación de este horno con Modelica, se ha elaborado el diagrama de interconexión mostrado en la figura 9.57, en el que se ha utilizado los siguientes componentes:. • Calentador eléctrico Modelica.Electrical.Analog.Basic.HeatingResistor Modelica.Electrical.Analog.Basic.Ground Modelica.Electrical.Analog.Sources.TableVoltage
• Horno Modelica.Thermal.HeatTransfer.Celcius.FixedTemperature
226
9 Modelado y simulación con OpenModelica
Figura 9.57: Diagrama de simulación de un horno eléctrico Modelica.Thermal.HeatTransfer.Celcius.TemperatureSensor Modelica.Thermal.HeatTransfer.Components.HeatCapacitor Modelica.Thermal.HeatTransfer.Components.ThermalResistor
Se desea calentar el horno desde la temperatura ambiente (28 ◦C) hasta 100 ◦C incrementando la tensiónV f de la fuente en una rampa. Una vez alcanzada esta temperatura, se incrementará la tensión de la alimentación eléctrica para llevarlo hasta 200 ◦C. Se mantendrá el horno a esta temperatura por aproximadamente 5 min y luego se apagará la alimentación eléctrica, dejando que el horno se enfríe en forma natural. Para lograr lo anterior, la tensión de la alimentación eléctrica debe ser: 1. t ≤ 10 s, V f = 0 V, 2. 10 s ≤ t ≤ 40 s, en una rampa de 30 s, V f va de 0 V a 19,3 V, 3. 40 s < t ≤ 770 s, V f = 19,3 V, 4. 770 s < t ≤ 800 s, en una rampa de 30 s, V f va de 19,3 V a 29,55 V, 5. 800 s < t ≤ 2300 s, V f = 29,55 V, 6. t > 2300 s, V = 0 V.
227
9.6. Sistemas térmicos
Cuadro 9.1: Perfil de la tensión de la alimentación eléctrica
Tiempo, s V f , V 0 10 40 770
0 0 19,30 19,30
800 2300 2300 3500
29,55 0 0
Figura 9.58: Ventana de parámetros del componenteTableVoltage Como alimentación eléctrica se emplea el componente TableVoltage de la biblioteca Modelica.Electrical.Analog.Sources. Esta fuente proporciona una tensión eléctrica por medio de la interpolación lineal de los datos de una matriz, cuya primera columna corresponde a los tiempos y la segunda a los valores de la tensión. Para este ejemplo, los valores de esta matriz se listan en el cuadro 9.1. En la figura 9.58, se muestra la ventana para la introducción de los parámetros de esta fuente. El resistor eléctrico, representado por el componente HeatingResistor delabiblioteca Modelica.Electrical.Analog.Basic, disipa el calor producido al medio externo por el terminal heatingresistor.heatPort, y su resistencia depende de la temperatura según la ecuación R = R re f
1 + α Thp − Tre f
.
(9.38)
228
9 Modelado y simulación con OpenModelica
Figura 9.59: Comportamiento del horno eléctrico La transferencia de calor del resistor eléctrico al horno, está dada por la ecuación connect(heatingresistor1.heatPort, heatcapacitor1.port). Otros parámetros del horno son: resistor eléctrico R = 10 Ω, α = 0,0001
K−1 ,
Tre f = 295,15 K (20 ◦C); capacitor térmico horno Ct = 100 JK −1 , resistor térmico Rt = 2 K W−1 ; temperatura ambiente Ta = 28 ◦ C.
Los perfiles de la tensión eléctrica aplicada al resistor eléctrico y de la temperatura en el horno, se muestran en la figura 9.59. El ciclo completo de calentamiento y enfriamiento del horno, dura aproximadamente una hora.
9.7 Modelado y simulación de ecosistemas En ingeniería se entiende que un sistema dinámico, es cualquier sistema físico cuyas variables evolucionan en el tiempo. Sin embargo, el término dinámica de sistemas (“System Dynamics”) se emplea para describir la creación de los modelos y las simulaciones realizadas por los economistas. Este enfoque sistémico fue introducido por Forrester (1971), para el estudio de los sistemas dinámicos que describen las políticas corporativas, la interacción entre poblaciones, el desarrollo de las áreas urbanas, la contaminación ambiental, la económicos. producción derealizar alimentos otrossistemas En vez de un ymodelado en término de ecuaciones diferenciales y estados,
9.7. Modelado y simulación de ecosi stemas
229
el sistema está descrito por niveles (“levels”), cuyos valores se ven afectados por las (“rates”). Los niveles pueden ser por ejemplo: la población, el dinero, el inventario y el conocimiento. Las tasas pueden ser tasas de entrada como: la natalidad, las ganancias, el contagio de un virus (infección) y el aprendizaje; o tasas de salida como: las defunciones, los gastos y el olvido, entre otras. Una aplicación de la dinámica de sistemas es la dinámica mundial , donde se
tasas
destacan los modelos globales World2 (Forrester) y World3 (Meadows). La lista de niveles de un modelo mundial debe incluir, por lo menos: la población, la contaminación, la utilización de recursos, la inversión de capital, la fuerza laboral y la producción de alimentos (Cellier, 2008). La biblioteca que contiene los componentes para estas simulaciones, incluyendo los modelos World2 y World3, esSystemDynamics. Además provee varios “escenarios” para realizar las simulaciones.
9.7.1 Estimación del crecimiento demográfico de Costa Rica Un ejemplo sencillo de la utilización de la biblioteca SystemDynamics, se muestra en la figura 9.60. Este diagrama de simulación con Modelica, permite estimar el crecimiento de una población (variable de nivel). Se considera la tasa de natalidad, la tasa de defunciones y la migración (variables de flujo). En este caso, hay que abrir primero la bibliotecaSystemDynamics con la opción del menú [File][System Libraries][SystemDynamics]. En el diagrama se han utilizados los siguientes componentes: Modelica.Blocks.Math.Add SystemDynamics.Auxiliary.Gain (3) SystemDynamics.Levels.Level SystemDynamics.Rates.Rate_1 (3) SystemDynamics.Sources.Sink SystemDynamics.Sources.Source (2) Para estimar el desarrollo demográfico de Costa Rica se ha tomado como población actual 4 600 000 habitantes. Las tasas anuales estimadas por cada mil habitantes son: 16 nacimientos, 4 muertes y 0,5 migrantes (tasa neta). La figura 9.61 muestra la proyección de la población, estimándose que dentro de 20 años, Costa Rica tendrá aproximadamente 5 900 000 habitantes.
9.7.2 Evolución de una epidemia La población total en una localidad donde hay una epidemia por un virus contagioso, está dividida en tres grupos: • En riesgo - personas sanas susceptibles de enfermarse,
230
9 Modelado y simulación con OpenModelica
Figura 9.60: Diagrama para la simulación demográfica
Figura 9.61: Estudio demográfico
9.7. Modelado y simulación de ecosi stemas
231
• Enfermos - personas enfermas con el virus, • Recuperados - personas curadas e inmunes al virus. El comportamiento de estos grupos de personas, está dado por las siguientes relaciones: (t ) = −k1 pEnRie sgo pEn f ermas , d pEnRiesgo dt
(9.39) d pRecuperadas(t ) = k 2 pEnfermas , (9.40) dt d pEn f ermas(t ) = k 1 pEnRie sgo pE n f ermas − k2 pEnfermas . (9.41) dt Para el ejemplo se considerará una población total de 700 personas y una condición inicial (al detectarse la epidemia) de pEnriesgo (0) = 620, pEnfermas (0) = 10 y pRecuperadas (0) = 70. La velocidad de disminución de la enfermedad y la velocidad de recuperación de los enfermos, están dados por las constantes k 1 = 0,001 y k 2 = 0,072. Modelado con ecuaciones
El programa para analizar el comportamiento de la epidemia con Modelica, utilizando (9.41) a (9.41), es m od el Epidemia // Evolu ci´ on de las pob lac ion es en un a epi dem ia constant Real k1 = 0.001 "disminuci´on enf erm eda d"; constant Real k2 = 0.072 "recuperaci´on enf erm os"; Real pEnRiesgo ( start = 62 0, fixe d = tr ue) ; Real pEnfermas ( start = 10, fix ed = tr ue) ; Real pRecuperadas ( start = 70, fix ed = tr ue) ; equation de r( pEnRiesgo ) = -k1 * pEnRiesgo * pEnfermas; de r( pEnfermas ) = k1 * pEnRiesgo * pEnfermas - k2 * pEnfermas; de r( pRecuperadas ) = k2 * pEnfermas; annotation( experiment ( StartTime = 0, StopT ime = 100, Tolerance = 1 e - 006, Inter val = 0 .2 ) ) ; en d Epidemia;
La evolución de la epidemia durante 100 días, se muestra en la figura 9.62. Al inicio de la epidemia, el número de personas enfermas aumenta rápidamente, hasta alcanzar un máximo de poco más de 400 personas enfermas en el día 11. A partir ahí, el número enfermos disminuye y paralaelepidemia. día 100, todas las personas se hande recuperado y sonde inmunes al virus, terminando
232
9 Modelado y simulación con OpenModelica
Figura 9.62: Evolución de una epidemia
Figura 9.63: Epidemia - Diagrama de interconexión de componentes Simulación utilizando la biblioteca SytemDynamics
El diagrama de interconexión de componentes de la biblioteca SystemDynamics, utilizado para analizar el comportamiento de la epidemia, se muestra en la figura 9.63. En el escenario anterior, afortunadamente todas las personas infectadas por el virus se recuperaron. ahora que lamentablemente solo el 90% de las se recuperan (hayConsidérese un 10 % de fallecidos). Se tomará una población inicial de personas 1000 personas, donde
9.7. Modelado y simulación de ecosi stemas
233
Figura 9.64: Epidemia grave - Diagrama de simulación 999 están sanos y aparece una persona enferma. El diagrama de simulación de esta nueva situación, se muestra en la figura 9.64. En este se han utilizado los siguientes componentes: SystemDynamics.Auxiliary.Constant (3) SystemDynamics.Auxiliary.Gain (4) SystemDynamics.Auxiliary.Prod_2 SystemDynamics.Levels.Level (4) SystemDynamics.Rates.Rate_1 (5) SystemDynamics.Sources.Sink (2) SystemDynamics.Sources.Source (1)
Ahora, al final de los 100 días, termina la epidemia, 900 personas se han recuperado pero hay 100 fallecidos, tal como se muestra en las curvas de evolución de la epidemia en la figura 9.65.
9.7.3 Modelo Lotka-Volterra para presa y predador Si en un mismo sistema ecológico viven dos especies, estas pueden relacionarse entre si de diferentes maneras (Engel, 1978) 1. Depredación: La especie A (predadora) se alimenta de la especie B (presa). 2. Competencia: Las especies A y B compiten por el mismo recurso. 3. Simbiosis: La especie en alguna forma de la especie B, pero al mismo tiempo estimulaAsudepende crecimiento.
234
9 Modelado y simulación con OpenModelica
Figura 9.65: Epidemia grave - Evolución de las poblaciones involucradas El modelo de Lotka-Volterra para la relación entre dos especies, de las cuales una es la presa y la otra su predador, es: d pPresa = pPresa ( a1 − a2 pPredad or), dt
d pPredad or = − pPredad or ( b1 − b2 pPresa), dt
(9.42) (9.43)
donde: pPresa - población de la especie cazada, pPredad or - población de la especie cazadora, a1 - razón de crecimiento natural de las presas, si no hubiera predadores, a2 - razón de caza de las presas por parte de los predadores, b1 - razón de muerte natural de los predadores, si no hay presas para cazar, b2 - razón de aumento de los predadores debido al alimento cazado.
Para la simulación se han seleccionado los siguientes parámetros: población inicial (10 predadores y 5 presas); a 1 = 1,50, a 2 = 0,25, b 1 = 2,50 y b 2 = 0,20. El modelo Modelica es: mo d el LotkaVolterra "Model o pres a - predador" parameter Real a1 = 1.50 "natali dad pres as";
235
9.7. Modelado y simulación de ecosi stemas
Figura 9.66: Evolución de las poblaciones presa y predador parameter parameter
Real a2 = 0.25 "disminuci´on pre sas" ; Real b1 = 2.50 "mortali dad predad ores";
parameter Real b2 = 0.20 "increme nto predad ores"; Real pEsp1 ( start = 5, fi xed = tr ue) "Presas" ; Real pEsp2 ( start = 10, fix ed = tr ue) "Predadores" ; equation de r( pEsp1 ) = pEsp1 * (a1 - a2 * pEsp2 ) ; de r( pEsp2 ) = -pEsp2 * (b1 - b2 * pEsp1 ) ; annotation( experiment ( StartTime = 0, StopT ime = 20 , Tolerance = 1 e - 06, Inter val = 0.01 ) ) ; en d LotkaVolterra;
La evolución de las dos especies se muestra en la figura 9.66. Además, en la figura 9.67 se muestra el plano de fase del comportamiento de las dos especies, el cual es un ciclo límite. Los puntos de equilibrio de (9.42) y (9.43) están dados por las siguientes expresiones: b1 , b2
(9.44)
pPredad or o = a1 . a2
(9.45)
pPresao =
236
9 Modelado y simulación con OpenModelica
Figura 9.67: Plano de fase de las poblaciones presa y predador Para los parámetros del ejemplo, el punto de equilibrio corresponde a 12,5 presas (si esto fuera posible) y 6 predadores, el cual se indica en la figura 9.67. Como las poblaciones iniciales escogidas para el ejemplo son 5 presas (menos que las del punto de equilibrio) y 10 predadores (más que las del punto de equilibrio), este se encuentra en el cuarto cuadrante. En ese punto el alimento (presas) es muy poco y la cantidad de predadores decrece rápidamente, pasando el sistema al tercer cuadrante. Al disminuir significativamente los cazadores (predadores), aumenta rápidamente la población de presas y el sistema pasa al segundo cuadrante. La gran cantidad de alimento estimula el crecimiento de la población de cazadores y el sistema pasa al primer cuadrante, lo cual trae como consecuencia que disminuya otra vez el alimento y el sistema regresa al cuarto cuadrante, repitiéndose nuevamente el ciclo estable.
9.8 Sistemas de control Áreas que requieren del modelado de sistema heterogéneos y que hacen un uso intensivo de la simulación, análisis y elModelica.Blocks diseño de los sistemas de control. La biblioteca estándarson de el componentes y la biblioteca indepen-
9.8. Sistemas de control
237
Figura 9.68: Sistema de control de velocidad del motor de corriente continua diente Modelica_LinearSystems22 , proveen bloques de funciones de transferencia, controladores y otros componentes, para simular sistemas representados mediante diagramas de bloques, o para integrar los elementos del sistema de control con el proceso controlado heterogéneo, formado por componentes de otras bibliotecas.
9.8.1 Control de velocidad de un motor de corriente continua En la figura 5.1 se presentó el diagrama de simulación Modelica del motor de corriente continua de la figura 2.13. Ahora se incorporarán los elementos necesarios para el control de su velocidad de rotación, tal como se ilustra en la figura 9.68. En el diagrama de simulación se utilizan los siguientes componentes: 1. Motor de corriente continua • Componentes eléctricos Modelica.Electrical.Analog.Basic.EMF Modelica.Electrical.Analog.Basic.Ground Modelica.Electrical.Analog.Basic.Inductor Modelica.Electrical.Analog.Basic.Resitor
• Componentes mecánicos Modelica.Mechanics.Rotational.Components.Damper 2 DLR Institute of System Dynamics and Control, Alemania
238
9 Modelado y simulación con OpenModelica
Modelica.Mechanics.Rotational.Components.Inertia
2. Sistema de control • Elemento de medición (sensor transmisor) Modelica.Mechanics.Rotational.Sensors.SpeedSensor
• Controlador Modelica.Blocks.Continuous.PI Modelica.Blocks.Math.Feedback Modelica.Blocks.Sources.Step
• Elemento final de control Modelica.Electrical.Analog.Sources.SignalVoltage
3. Perturbación de carga Modelica.Mechanics.Rotational.Sources.TorqueStep
El diagrama de simulación de la figura 9.68, incorpora componentes no causales eléctricos y mecánicos, y bloques causales. En este(posición, sistema existen por angular, lo tanto tres dominio variables mecánicas velocidad par),dominios: en el rotoreldel motor ydelalas carga; el dominio de las variables eléctricas (tensión y corriente eléctrica), en el circuito de armadura y la alimentación del motor; y el dominio de las “señales de control” (valor deseado, error, señal o esfuerzo de control). Por lo tanto, en el sistema varios compones cumplen la función de “interfaz” de conversión entre las diferentes dominios. El medidor de velocidad (SpeedSensor) provee el valor de la variable controlada, la velocidad de rotación del motor (señal realimentada) al sistema de control. Por lo tanto conecta los componentes mecánicos con los de control mediante las ecuaciones connect ( tacometro.flange connect ( tacometro.w
, rotor.flange_b) ;
, comparador_error.u2 ) ;
La fuente de energía (SignalVoltage) provee la tensión de alimentación al motor, de conformidad con la señal de eléctricos control queutilizando le envía el los componentes de control con los lascontrolador. ecuaciones Esta conecta
239
9.8. Sistemas de control
Figura 9.69: Controlador proporcional e integral (PI)
connect ( PI. y,
signalvo ltage1. )v;
connect ( Ra. p,
signalvo ltage1. )p;
En el motor eléctrico se realiza la conversión de la energía eléctrica en energía mecánica (EMF). Así que conecta los componentes eléctricos con los mecánicos empleando las ecuaciones connect ( La. n,
emf. p) ;
connect ( rotor.flange_a
, emf.flange) ;
Se utilizará el controlador con un algoritmo de control proporcional e integral (PI), mostrado en la figura 9.69, cuya señal de salida está dada por la ecuación u(s) = K p
1 1 1 + Ti s e(s) = K p 1 + Ti s [r(s) − y(s)],
(9.46)
donde K p es la ganancia proporcional del controlador,Ti la constante de tiempo integral, e (s) el error, r (s) el valor deseado,y (s) la señal realimentada y u (s) la señal de salida. En el diagrama de bloques de la figura 9.69 y en (9.46), se ha empleado la notación utilizada normalmente en los textos de teoría de control, para designar a las variables de un sistema de control realimentado. Es importante distinguir ahora, entre esta notación y la utilizada en los bloques Modelica. En Modelica, todas las entradas a un bloque, son denominadas con la letra “u” y la salida de un bloque, con la letra “y”. La implementación del controlador proporcional e integral con Modelica, se realiza utilizando el bloque de un comparador ( Modelica.Blocks.Math.Feedback ) y el bloque de un algoritmo de control PI (Modelica.Blocks.Continuos.PI ), tal como se muestra en la figura 9.70. La ecuación del comparador es y=u1-u2 y la del PI y=k(Ts+1)/(Ts)u. En el .
.
bloque PI,delasegundo. ganancia del controlador esk = K p y el tiempo integralT = Ti que tiene unidades
240
9 Modelado y simulación con OpenModelica
Figura 9.70: Diagrama Modelica para un controlador PI
Por lo tanto, la entrada del valor deseado r es feedback1.u1, la entrada de la señal realimentada y es feedback1.u2, el error e es la salida del comparador feedback1.y, la entrada al algoritmo PI es PI.u, y la señal de salida del controlador u PI.y. La conexión entre los dos bloques la establece la ecuación de conexión connect(feedback1.y, PI.u). La asignación de variables y la conexión entre los bloques la hace automáticamente el editor gráfico, al elaborarse el diagrama de interconexión del sistema simulado. Los parámetros del motor son: Ra = 2 ,25 Ω, La = 0 ,20 H, J = 0 ,050 kgm 2 , B = 0,010 Nm s y K = Ke = 0,0675 V/(rad/s) = Kt = 0,0675 NmA −1 . Los parámetros del algoritmo de control proporcional integral (PI) son: K p = 0,50 = 2,0 s. y Ti El motor se encuentra inicialmente detenido. En el instante t = 5 s se introduce el valor deseado de la velocidad de rotación del motor ωr = 62,80 rads −1 . Posteriormente en t = 40 s, se aplica una perturbación (par de carga) TL = −0,15 Nm. En la figura 9.71 se muestra el valor deseado (r) y el valor real (y) de la velocidad del motor, para 0 ≤ t ≤ 70 s. Además, se muestra la señal de salida del controlador (u). Al darse el cambio en el valor deseado, el sistema de control lleva el motor a la velocidad indicada (ωr = 62,80 rads −1 ) sin error permanente. Además, cuando se presenta el par perturbador, que produce un descenso en la velocidad de rotación del motor, el sistema de control toma la acción correctiva necesaria, para llevar la velocidad de rotación del motor de regreso a su valor deseado.
9.8.2 Sistemas de control en diagramas de bloques Una forma “tradicional” de efectuar la simulación de los sistemas dinámicos, es utidiagramas de bloques . En estos, por lo general, algunos de los bloques relizando presentan la función de transferencia de los componentes del sistema simulado. Por
241
9.8. Sistemas de control
Figura 9.71: Sistema de control de velocidad del motor de corriente continua lo tanto, se trata usualmente de la utilización de una aproximación lineal, e incluso de orden reducido, de sistemas que por lo general son no lineales. Sin embargo, en muchas ocasiones esta metodología es de utilidad. Por ejemplo, cuando se ha obtenido un modelo lineal para representar al proceso controlado en los estudios de control. En la figura 9.72 se muestra el diagrama de bloques realizado con Modelica, de un lazo de control realimentado PID, para un proceso de segundo orden más tiempo muerto. En este se utilizan los siguientes componentes: Modelica.Blocks.Continuous.LimPID Modelica.Blocks.Continuous.SecondOrder Modelica.Blocks.Nonlinear.FixedDelay Modelica.Blocks.Math.Add Modelica.Blocks.Sources.Step (2)
El modelo del proceso controlado es de la forma P(s) = 2 ωn2 K e , s + 2ζ ωn s + ωn2 −Ls
(9.47)
242
9 Modelado y simulación con OpenModelica
Figura 9.72: Sistema de control PID con ganancia K = 1, frecuencia natural ωn = 2 rads −1 , razón de amortiguamiento ζ = 2 (sobre amortiguado) y tiempo muerto aparente L = 0,5 s. La biblioteca Modelica.Blocks.Continuous incluye tres bloques de control: los algoritmos básicos proporcional e integral ( PI) y proporcional, integral y derivativo estándar con filtro derivativo (PID), los cuales operan directamente sobre su entrada (la señal de error), y el bloque LimPID. El algoritmo de control del bloque Modelica.Blocks.Continuous.LimPID, es proporcional, integral y derivativo (PID) de dos grados de libertad. Este bloque incluye el comparador de error, limitadores de la señal de salida y prevención del desbordamiento de la acción integral, tal como se describe en Åström y Hägglund (1995). Este será el utilizado en este ejemplo. Los parámetros para el controlador utilizado son: K p = 1,25, Ti = 1, 20 s, Td = 0,30 s, β = 0,50 y γ = 0. Estos corresponden, en la ventana de parámetros del bloque LimPID, a: k , Ti, Td , wp y wd , respectivamente. En la figura 9.73 se muestra el comportamiento de la variable controlada y de la señal de salida del controlador, ante un cambio en el valor deseado ∆r = 10 % (en t = 1 s), seguido posteriormente de un cambio en la perturbación ∆ d = 5% (en t = 15 s). Como las señales del gráfico se han seleccionado como las salidas de los diferentes bloques, estas están identificadas como nombreBloque.y, esto es, como la propiedad “y” (salida) del bloque. Bloques para representar al proceso controlado
Las bibliotecas de bloques agrupadas en la biblioteca Modelica.Blocks proveen una gran variedad de bloques continuos, discretos, no lineales y de operaciones matemáticas, queenpueden utilizarse para representar el modelo, del proceso controlado por ejemplo, el diagrama de bloques de un sistema de control.
9.8. Sistemas de control
243
Figura 9.73: Comportamiento del sistema de control PID
Algunos bloques Integrator - integralson: (K ). Derivative - derivada “real” (K , T ). FirstOrder - función de transferencia de primer orden ( K , T ). SecondOrder - función de transferencia de segundo orden (K , ζ , ωn ). TransferFuncion - función de transferencia, cociente de dos polinomios. FixedDelay - tiempo muerto fijo (L). PadeDelay - aproximación de Padé del tiempo muerto ( L, n , m ).
9.8.3 Efecto del periodo de muestreo en un sistema de control digital Supóngase que se tiene un controlador digital, para el control de un proceso simple. Se desea investigar el efecto que pudiera tener el periodo de muestreo utilizado en equipo de control digital, sobre el comportamiento del sistema de control. En la figura 9.74 se muestra el control proporcional de un proceso de segundo orden de polo doble. En este se incluye un “muestreador” (convertido A/D) y un “retenedor decontrolador orden cero”con (convertidor como los puntos de conexión (entrada y salida), del el procesoD/A), controlado.
244
9 Modelado y simulación con OpenModelica
Figura 9.74: Diagrama del sistema de control digital Los componentes usados son: Modelica.Blocks.Continuous.FirstOrder (2) Modelica.Blocks.Discrete.Sampler Modelica.Blocks.Discrete.ZeroOrderHold Modelica.Blocks.Math.Feedback Modelica.Blocks.Math.Gain Modelica.Blocks.Sources.Step La ganancia del modelo del proceso esK = 1 y las constantes de tiempoT = 10 s.
K p = 4. El controlador ganancialas En la figuratiene 9.75una se muestran respuestas del sistema de control, ante un cam-
bio escalón en el valor deseado ∆ r = 5% aplicado en t = 5 s, con dos periodos de muestreo (∆T ∈ {0,1 s, 5,0 s}). Se utilizará el mismo periodo de muestreo en el muestreador y en el retenedor de orden cero. Las curvas mostradas en la parte superior de la figura, corresponden al periodo de muestreo ∆T = 0,1 s (rápido) y las de la parte inferior, a ∆T = 5,0 s (lento). Es evidente como, al disminuirse la velocidad de muestreo (incrementando su periodo), a valores inapropiados para la dinámica del modelo del proceso controlado simulado, se deteriora el comportamiento del sistema de control. La respuesta inicial es más lenta (tiene un mayor tiempo de levantamiento y un mayor tiempo al pico), el sobrepaso máximo aumenta, el sistema es más oscilatorio (disminuye el amortiguamiento), y tarda más en estabilizarse (el tiempo de asentamiento aumenta). Como era de esperase, el cambio en el periodo de muestreo no afecta el valor del error permanente del sistema de control El controlador es el mismo en ambos casos, la diferencia en el comportamiento dinámico utilizado. del sistema de control se debe, exclusivamente, al periodo de muestreo
245
9.8. Sistemas de control
Figura 9.75: Comportamiento de la variable controlada con dos periodos de muestro distintos
Figura 9.76: Realimentación lineal en el estado
9.8.4 Control mediante realimentación lineal en el estado El diagrama de bloques de un esquema de control por realimentación lineal de los estados, se muestra en la figura 9.76. El proceso controlado está dado por las ecuaciones de estado y salida x (t ) = Ax(t ) + bu(t ), y(t ) = cT x(t )
(9.48) (9.49)
y la ley de control en el estado, por u(t ) = kT x(t ) + kr r(t ).
(9.50)
Las ganancias de realimentación en k, se ajustan para lograr el comportamiento kr para obtener un error permadinámicos ganancia de valor deseado nente igualdeseado a cero, ayunlacambio escalón en el valor deseado.
246
9 Modelado y simulación con OpenModelica
Figura 9.77: Diagrama de interconexión del control por realimentación lineal de los estados Para el ejemplo, el proceso controlado es el sistema diferencial de segundo orden d2 y(t ) dy(t ) +3 + 2y(t ) = 2u(t ), dt 2 dt
(9.51)
cuyo modelo en variables de estado es x = −02 −13 x(t ) + 02 u(t ), y(t ) = 1 0 x(t ).
(9.52) (9.53)
Las especificaciones de diseño son: M p ≤ 10%, t a5 % ≤ 1,5s y e pro = 0. Para cumplir con estas especificaciones se requiere k r = 8,0 y kT = [7,0 0,90]. El diagrama de simulación del sistema de control con Modelica, se muestra en la figura 9.77. En este se han utilizado los siguientes bloques: Modelica.Blocks.Continuous.StateSpace Modelica.Blocks.Math.Add Modelica.Blocks.Math.Feedback Modelica.Blocks.Math.Gain Modelica.Blocks.Math.MultiSum Modelica.Blocks.Sources.Step (2) La entrada y la salida del bloque Modelica.Blocks.Continuous.StateSpace
(planta) vectores, el cual representa a un modelo en variables de estado con nx estados, son nu entradas y ny salidas. Las dimensiones de las matrices que deben darse
9.8. Sistemas de control
247
Figura 9.78: Parámetros del bloque StateSpace como parámetros son: A(nx,nx), B(nx,nu), C(ny,nu) y D(ny,nu), tal como se muestra en la ventana de parámetros de la figura 9.78. El bloque Modelica.Blocks.Math.MultiSum (vector_K) tiene una entrada vectorial con nu elementos y una salida escalar, la cual es una combinación lineal de las señales de entrada, dada por la ecuación y(t ) = k 1 u1 (t ) + k2 u2 (t ) + · · · + knu unu (t ).
(9.54)
Debe recordarse que en Modelica todas las entradas a un bloque se identifican con la letra “u” y la salida con la letra “y”. Las variables en el sistema de control, a un cambio escalón del magnitud 10% en el valor deseado, seguido de un cambio de magnitud -5% en la perturbación, se muestra en la figura 9.79. Como observa, el sistema cumple con las especificaciones dadas para la respuesta del se servo control.
248
9 Modelado y simulación con OpenModelica
Figura 9.79: Variables del sistema de control realimentado en el estado Las curvas de respuesta también muestran dos características inherentes al control realimentado en el estado, tal como se ha implementado: 1. existe un error permanente ante un cambio escalón en la perturbación; 2. se produce un salto brusco grande en la señal de control, ante un cambio escalón en el valor deseado. Estas dos características están en conflicto, ya que ambas dependen dekr , pero el salto a la salida del controlador en forma directa, mientras que el error permanente a un cambio en la perturbación, lo es en forma inversa. Además, si se desea reducir el error permanente ante el cambio en la perturbación, modificando el valor dekr , pero manteniendo siempre un error cero a un cambio en el valor deseado, deberán calcularse de nuevo las ganancias enk, lo cual tiene como consecuencia, un cambio en las características dinámicas del lazo de control.
9.8.5 Control óptimo de tiempo mínimo El objetivo de la teoría de control óptimo, es determinar la señal de control (ley de que haga que un sistema o proceso controlado, satisfaga las restricciones físicas impuestas y que al mismo tiempo, optimice (minimice o maximice) algún criterio de desempeño utilizado para evaluarlo (Kirk, 1970).
control)
de control óptimomínima típicos yson el esfuerzo problemadedecontrol tiempomínimo. mínimo, el de errorProblemas final mínimo, el de energía el de
249
9.8. Sistemas de control
Se considerará que el modelo matemático del proceso controlado, es de la forma dx(t ) = f(x(t ), u(t ), t ), (9.55) dt donde x(t ) es el vector de estados del proceso, u(t ) el vector de control y que, por lo general, las funciones f(·) son no lineales. El problema de control de tiempo mínimo, consiste en determinar la ley de control óptima u∗ (t ), que permite llevar al sistema desde una condición inicial dada ( x0 ), a una condición objetivo específica, en un tiempo mínimo. La funcional de costo a optimizar en este caso, es entonces Jt =
tf
t0
dt = t f − t0 .
(9.56)
Supóngase para el ejemplo, que se desea determinar la ley de control u (t ), con la restricción |u(t )| ≤ 1, que transfiera al sistema (integrador doble) dx1 (t ) = x 2 (t ), dt dx2 (t ) = u(t ), dt
(9.57) (9.58)
desde cualquier estado inicial (x01 , x 02 ) hasta el srcen, en un tiempo mínimo. La solución de este problema es bien conocida y dada por (Kirk, 1970):
u∗ (t ) =
−1, +1, −1, +1, 0,
para x(t ) S (x(t )) > 0, para x(t ) S (x(t )) < 0, para x(t ) S (x(t )) = 0 y x 2 (t ) > 0, para x(t ) S (x(t )) = 0 y x 2 (t ) < 0, para x(t ) = 0,
(9.59)
donde la función o curva de conmutación S (x(t )) es 1 (9.60) 2 Esta ley de control obedece al principio del control “bang-bang”, que establece que para sistemas lineales invariantes en el tiempo, con limitaciones en el esfuerzo de control, el control óptimo para obtener una respuesta de tiempo mínimo, corresponde a utilizar el esfuerzo de control extremo (máximo, mínimo, o una combinación de estos), durante el intervalo de operación. .
S (x(t )) = x 1 (t ) + x2 (t ) |x2 (t )| .
El programa paramínimo la simulación con Modelica, del sistema de control con una ley de control de tiempo es
250
9 Modelado y simulación con OpenModelica
mo d el ControlOptimo "Con tro l opt ´ imo de Real x1 ( start = 0, fix ed = tr ue) ; Real x2 ( start = 2, fix ed = tr ue) ; Real u, S; equation S = x1 + 0 .5 * x2 * ab s( x2 ) ; if S > 0 then
tie mpo
m´ ınimo"
u = -1; elseif S < 0 then u = 1; else u = 0; en d if ; de r( x1 ) = x2 ; de r( x2 ) = u ; when ab s( x1 ) < 0.0 1 an d ab s( x2 ) < 0.0 1 then terminate( "Alca nza do el ori gen") ; en d wh en; annotation( experiment ( StartTime = 0, StopT ime = 10 , Tolerance = 1 e - 00 6, Inter val = 0.01 ) ) ; en d ControlOptimo;
Tomando en consideración que el tiempo total que tarda el sistema en ir desde el estado inicial hasta el srcen, depende precisamente del punto de partida, en vez de ejecutar simulaciones controladas por el intervalo de tiempo de la simulación, en este caso se ha utilizado la instrucción terminate, de manera que la corrida de simulación se ha alcanzado eldel srcen (contranscurrido el criterio de(ver convergencia ,01), independientemente |x1 | < 0,01 ytermina |x2 | < 0cuando tiempo la sección 4.2.14). Esto último contribuye también a evitar problemas en la solución numérica, en la vecindad del srcen, si el intervalo de simulación excede considerablemente al tiempo requerido para arribar al mismo. Enel plano de fase (x1 , x2 ) de la figura 9.80, se muestran las trayectorias x2 (x1 (t )) del sistema, para seis puntos de partida (condiciones iniciales) distintas. Partiendo de cualquier estado inicial en el plano ( x1 , x 2 ) se emplea el valor extremo de la señal de control (+1 o − 1 según corresponda) y el sistema evoluciona hasta arribar a la curva de conmutación. En ese punto, el signo de la señal de control se invierte y el sistema sigue sobre la curva de conmutación hasta el srcen. Para los estados iniciales que se encuentran sobre la curva de conmutación, el sistema evoluciona siguiendo sobre esta hasta el srcen. El caso particular de la evolución de los estados y el control, a partir del punto inicial (x01 = 0, x 02 = 2), se muestra en la figura 9.81. EnStopTime el modelo,=se10 había el tiempo paraapreciar la corrida defigura simulación como . Sinestablecido embargo, tal como sefinal puede en la 9.81,
9.8. Sistemas de control
251
Figura 9.80: Plano de fase del control óptimo de tiempo mínimo
esta terminó antes de los 5 s. La solución del problema de control óptimo indica que, partiendo del punto inicial (x01 = 0, x20 = 2), el tiempo mínimo para que el sistema alcance el srcen es de 4,82 s, tal como se deprende del mensaje dado por el compilador: stdout | info | Simulation call terminate() at time 4.818427 Message : Alcanzado el origen
La simulación al cumplirse el criterio de convergencia utilizado para ejecutar la ecuaciónterminó, terminate.
252
9 Modelado y simulación con OpenModelica
Figura 9.81: Evolución de los estados y el control para (x10 = 0, x20 = 2)
9.8.6 Sistema de control inicialmente en un punto de equilibrio Se desea controlar el nivel del líquido en el taque 2, del sistema de tanques en serie presentado en la sección 9.5.2, manipulando el caudal de entrada al tanque 1. Para esto, se ha adicionado un transmisor electrónico del nivel (LT) del líquido del tanque 2, un controlador de nivel (LIC) y una válvula de control neumática (LV) para variar el caudal del fluido que entra al tanque 1, tal como se muestra en la figura 9.82. El algoritmo de control del controlador es proporcional e integral (PI) cuya salida está dada por la ecuación
u(t ) = K p e(t ) +
1
Ti 0
∞
e(t )dt
= K p [r (t ) − y(t )] +
1
Ti 0
∞
[r(t ) − y(t )]dt .
(9.61) Las señales del sistema de control Y( , R , E , U ) están dadas en porcentaje (de 0% a 100%). El ámbito de medición del transmisor de nivel es de 0 a 5 m (ganancia del transmisor de nivel Kt = 20%m −1 ) y el caudal máximo por la válvula de control 0,40 m3 s−1 (constante de la válvula de control Kvc = 0,0040m3 s−1 / %). Estos y los demás parámetros del sistema (tanque y válvula), se listan en la sección de declaraciones del modelo. Los parámetros del controlador se han seleccionada arbitrariamente (pero asegurando la estabilidad del sistema de control), como K p = 0,75 y Ti = 60 s. sistemaRse=encuentra en reposo, con el nivel en el tanque 2 en el valorEldeseado 50% (2,5inicialmente m) y en el instante t = 20 s este se cambia al 60% (un
9.8. Sistemas de control
253
Figura 9.82: Sistema de control de nivel incremento del 10%). Luego, en t = 800 s se incrementa la apertura de la válvula de salida del tanque 2 en un 10%. El modelo Modelica para la simulación de los tanques con su sistema de control, es: m od el SisControlPI2T // Con tro l PI, sis tem a hid aul r´ ico de do s tan que s en ser ie constant Real g = 9.80; parameter Real A1 = 2 " ar ´ ea tan que 1, m^2"; parameter Real A2 = 4 " ar ´ ea tan que 2, m^2"; parameter Real df = 1000 "densi dad fluid o"; parameter Real Kv 1 = 0.0020 "const ant e v´ alv ula 1"; parameter Real Kv 2 = 0.0015 "const ant e v´ alv ula 2"; parameter Real Kt = 20 "const ant e tra nsm iso r niv el H2" ; parameter Real Kv c = 0.0040 "const ant e v´ alvu la cont rol"; parameter Real Kp = 0.75 "ganan cia propor cional contro lador" ; parameter Real Ti = 60 "tiempo integ ral cont rola dor , s" ; Real H1 "ni ve l 1, m"; Real H2 "ni ve l 2, m"; Real Qe " caud al ent rad a , m^3/s"; Real Qs 1 "cau dal sal ida 1, m^3 /s"; Real Qs 2 "cau dal sal ida 2, m^3 /s"; Real Jiae ( start = 0, fix ed = tr ue) ; Real R, E, U, Y, U i, U p;
254
9 Modelado y simulación con OpenModelica
Modelica .Blocks.So urces.Ste p step( height R startTime = 20 ) ; Modelica .Blocks.So urces.Ste p step( height D startTime = 80 0) ; initial equation de r( H1 ) = 0; de r( H2 ) = 0;
= 10, offs et = 50 , = 0.10,
de r( Ui ) = 0; equation // tanqu es A1 * de r( H1 ) = Qe - Qs1; A2 * de r( H2 ) = Qs 1 - Qs2; Qs 1 = Kv 1 * sign ( H1 ) * sqrt ( df * g * ab s( H1 ) ) ; Qs 2 = Kv 2 * (1 + stepD.y ) * sqrt ( df * g * ab s( H2 ) ) ; // tra nsm iso r de niv el Y = Kt * H2 ; // val or des ead o R = stepR.y; // con tro lad or PI E = R - Y; Up = Kp * E ; de r( Ui ) = Kp * E / T i; U = Up + Ui ; // val vul a de con tro l Qe = Kv c * U ; annotation( experiment ( StartTime = 0, StopT ime = 1400, Tolerance = 1 e - 00 6 ) ) ; en d SisControlPI2T;
En el instante inicial solo se conoce el valor deseado (R) del nivel del fluido y que el sistema se encuentra en estado estacionario. Por lo tanto, debe resolverse el problema del valor inicial, para encontrar tanto el nivel del líquido en los dos tanques, como las demás variables del sistema de control, en ese punto de equilibrio. Para esto, se ha establecido en el programa Modelica anterior, el valor deseado con un corrimiento inicial (“offset”) del 50 % .. . Modelica .Blocks.So startTime = 20 ) ; .. .
urces.Ste p step( height R
y el conjunto de ecuaciones iniciales .. . initial equation de r( H1 ) = 0; de r( H2 ) = 0;
= 10, offs et = 50 ,
9.8. Sistemas de control
255
Figura 9.83: Comportamiento del sistema de control de nivel de r( Ui ) = 0; .. .
que establecen que el sistema se encuentra inicialmente, en un punto de equilibrio. La variación de los niveles en los tanques, así como de las variables del sistema de control, ante el cambio en el valor deseado y la perturbación, se muestran en la figura 9.83. Como se aprecia en la figura 9.83 y con más detalle en la figura 9.84, la solución del problema del valor inicial, determinó el valor de las variables en el punto de operación correspondiente al valor deseado R = 50% ( H2 = 2,5m). Esto incluye el valor de la salida del controlador PI, necesaria para mantener el sistema en equilibrio.
9.8.7 Autosintonía de controladores Dentro de la biblioteca estándar de Modelica, existen bloques para la simulación de los modelos del proceso controlado, por ejemplo FirstOrder, SecondOrder y FixedDelay, y de los controladores, como PI , PID y LimPID, entre otros. Si bien estosde controladores son adecuados para la mayoría de los estudios decocontrol, carecen algunas características encontradas en las implementaciones
256
9 Modelado y simulación con OpenModelica
Figura 9.84: Variables en el punto de equilibrio inicial (R = 50%)
merciales, de los controladores con un algoritmo de control proporcional, integral y derivativo (PID). 3 (Bonvini y LeLa biblioteca de bloques Modelica “Industrial Control Systems” va, 2012), incluida en OpenModelica4 , provee versiones “más realistas” y con características similares a las de los controladores PID industriales. Esta incluye las bibliotecas de componentes: Logical [ Logical Operations, Comparisons, Counters, Timers], MathOperations [IntegerType, RealType], LinearSystems [Continuous, Discrete], Controllers [P, I, D, PI, PD, PID, Blocks, Logical, Digital, AutoTuning], y Applications, algunos de los cuales se muestran en la figura 9.85. Los terminales de interconexión (entradas y salidas) disponibles en los bloques de los controladores de esta biblioteca, se describen en la figura 9.86. En adición a las entradas estándar del valor deseado (SP) y la señal realimentada (PV), provee entradas para el corrimiento de la señal de salida (BIAS), la operación en modo de 3 Bonvini, M. y Leva, A. (2010-2012), Modelica Industrial Control Systems Library (version 1.0), Dipartamento di Elettronica e Informacione, Politecnico di Milano, Italia. 4 Cargar la biblioteca con la opción del menú [File][System Libraries] IndustrialControlSystems.
257
9.8. Sistemas de control
Figura 9.85: Algunos componentes de la biblioteca Modelica Industrial Control Systems
Figura 9.86: Conectores del bloque del controlador PID
seguimiento de una señal (TR, TS) y para realizar la autosintonía del controlador (ATreq). En el caso del controlador con un algoritmo de control proporcional, integral y derivativo, este es de dos grados de libertad (PID de 2GdL), cuya ecuación es
CS(s) = K p b SP(s) − PV (s) +
1 Ti s
[SP(s) − PV (s)] +
Td s [c SP(s) − PV (s)] . Td /Ns + 1
(9.62) El diagrama de bloques de su implementación, se muestra en la figura 9.87. Como se aprecia, este incluye la prevención del “desboque” del modo integral, la suma de la desviación de la señal salida, cambio de al modo de una señal externa y la limitación delderango de el variación la señaldedeseguimiento salida.
258
9 Modelado y simulación con OpenModelica
Figura 9.87: Diagrama de bloques del controlador PID de dos grados de libertad (IndustrialControlSystems.Controllers.PID )
Autosíntonía de un controlador PI
Muchos de los esquemas de autosintonía incluidos en los controladores PID comerciales, tienen como base para la identificación del proceso controlado, un sistema de control realimentado con un relé, tal como lo introdujeron Åström y Hägglund (1984). Sin embargo, en el caso de los bloques de controladores PI con autosintonía [ATPIrelayNCdigital , ATPIrelayNCmixedMode] de la biblioteca Industrial ControlSystems, estos utilizan un relé en serie con un integrador, de manera que la señal de control, en vez de llegar a tener la forma de un “tren de pulsos”, será como un “diente de sierra” (Leva y Bonvini, 2011; Leva et al., 2012). Por lo tanto y debido a la inclusión del integrador, el sistema de control en vez de oscilar a la frecuencia a la cual la fase del proceso controlado es −π , lo hará a la frecuencia ωox a la cual su fase es −π /2. El esquema de diseño ajuste del controlador, es el de una autosíntonía con base en un margen de fase de φmo , en la cual los nuevos parámetros del algoritmo de
259
9.8. Sistemas de control
control proporcional e integral (PI), se determinan como Kp = Ti =
Pox
tan(φm ) , 1 + tan2 (φm )
tan (φm ) ωox
con Pox =
(9.63) (9.64)
,
π 2a , 8d
(9.65)
donde d es la amplitud del relé y a la amplitud de la oscilación permanente de la señal de control (Leva y Bonvini, 2011). Para la aplicación de los controladores con autosintonía, considérese el proceso cuyo modelo está dado por la función de transferencia P(s) =
2 (10s + 1)(5s + 1)(s + 1)
,
(9.66)
con las constantes de tiempo en segundos. Este proceso se controlará con un controlador con un algoritmo de control proporcional e integral. Los parámetros de ajuste iniciales del controlador, seleccionados en forma arbitraria pero asegurándose que mantienen el sistema de control estable, son K p = 0,40 y Ti = 20,0 s. El diagrama de bloques del sistema de control, se muestra en la figura 9.88. Este incluye los siguientes componentes:
IndustrialControlSystems.Controllers.AutoTuning.ATPIrelayNCdigital Modelica.Blocks.Math.Add Modelica.Blocks.Continuous.FirstOrder (3) Modelica.Blocks.Sources.BooleanExpression Modelica.Blocks.Sources.Step (2)
El controlador es digital con un periodo de muestreo de 0,1 s y el criterio de diseño, para la autosintonía, es φmo = 45°. Los parámetros del algoritmo de control PI, resultado de la autosintonía son K po = 0,66 y Tio = 8,23 s. En la figura 9.89 se muestra el comportamiento del sistema de control durante la etapa inicial (con los parámetros arbitrarios), luego la etapa de autosintonía y finalmente, las respuesta tanto a un cambio en el valor deseado como en la perturbación, con los parámetros del ajuste nuevos. Para verificar el funcionamiento del método de autosintonía, se evaluó la robustez de sistemas de listan control obtenidos con diferentes criterios de diseño (φmolos ), los cuales se enresultantes, el cuadro 9.2.
260
9 Modelado y simulación con OpenModelica
Figura 9.88: Sistema de control PI con autosíntonía Cuadro 9.2: Autosintonía - φmo [°] Parámetros del controlador 30 e índices de robustez 35 40 45 50 55 60
Kp
0,47 0,54 0,60 0,66 0,72 0,77 0,81
Ti [s]
4,75 5,76 6,90 8,23 9,81 11,75 14,25
φm [°]
30,94 35,90 41,07 46,10 50,92 55,86 60,97
Am
5,30 6,45 7,33 7,90 8,23 8,52 8,80
Como se aprecia de los resultados, todos los controladores diseñados tienen la robustez (margen de faseφm ) establecida como deseada (criterio de diseño).
9.8.8 Dinámica inversa Muchos de los esquemas de control, a lazo abierto y a lazo cerrado, como el control anticipativo o el control con modelo interno (IMC), utilizan en alguna forma el inverso del modelo del proceso controlado. Supóngase por ejemplo que se tiene un proceso P (p) en el cual, y(t ) = P (p)u(t ),
(9.67)
donde u (t ) es la señal de entrada, y (t ) la señal de salida y p el operador diferencial. Si se desea que la señal de salida del proceso tenga un perfil determinado y (t ) = yr (t ), el problema se reduce a determinar cual debe ser la forma requerida de la señal de entrada u (t ) para lograrlo. la figura se muestra el diagrama de bloques con los elementos necesarios paraEn obtener que9.90 la salida del proceso P(p) tenga un determinado perfil. En este,
261
9.8. Sistemas de control
Figura 9.89: Respuesta del sistema de control PI con autosíntonía Figura 9.90: Generación de una trayectoria de salida deseada Fg (p) es el generador de la trayectoria deseada y R (p) el elemento de “control” para generar la señal de comando de entrada u (t ) requerida.
Como ahora y(t ) = P (p)R(p)yr (t ),
(9.68)
para lograr que y (t ) = yr (t ), se requiere que P(p)R(p) = 1 ⇒ R(p) = P −1 (p).
(9.69)
262
9 Modelado y simulación con OpenModelica
Por lo tanto, se requiere que elemento de comando R(p) sea idéntico al inverso del proceso P (p) y para implementarlo, es necesario contar con un modelo del proceso. Para que el modelo inverso se pueda utilizar, este debe ser estable y tener una solución única. Modelo lineal
Considérese primero que, para el proceso que posiblemente sea no lineal, se ha determinado un modelo lineal representado por la función de transferencia Pm (s). Los parámetros de este modelo se han obtenido en el punto de operación normal del proceso. Como este modelo puede contener términos que no se puedan invertir y que además sea una función de transferencia estrictamente propia, este se expresará como Pm (s) = Pm− (s)Pm+ (s),
(9.70)
donde Pm− (s) incluye su ganancia y los términos que se pueden invertir yPm+ (s) los que no se pueden invertir. Entonces, la unidad de comando se seleccionará como R(s) = Pm−−1 (s)Fm (s),
(9.71)
donde Fm (s) es la función de transferencia de un “filtro” de la forma 1 Fm (s) = (T f s + 1)n , (9.72) cuya constante de tiempo T f se escoge lo menor posible y su orden n tal que la función de transferencia de la unidad de comando (9.71) sea propia. En el caso ideal, en que el modeloPm (s) sea perfecto y completamente invertible, esto es que Pm− (s) = P (s), Pm+ (s) = 1, (9.73) la salida del proceso será y(t ) = Fm (s)yr (s). (9.74) Tómese como ejemplo el proceso subamortiguado cuya función de transferencia, es 4 P(s) = , K = 4, ζ = 0,25, ωn = 0,20 s−1 . (9.75) 25s2 + 2,5s + 1 Se desea determinar cual debe ser su entrada u(t ) de manera que su señal de salida y(t ) sea igual a la respuesta y r (t ) de un sistema de primer orden dado por la ecuación diferencial Td
yr (t ) + yr (t ) = Kr us (t ), Kr = 5, T = 10 s, dt
(9.76)
263
9.8. Sistemas de control
Figura 9.91: Respuesta del proceso y comportamiento deseado
donde u s (t ) es un escalón unitario. Por lo tanto, el generador del perfil de la señal deseada es 5 yr (s) = Fg (s)us (s) = u (s), (9.77) 10s + 1 s La respuesta del proceso a un cambio escalón unitario y la respuesta de “referencia” o deseada, se muestran en la figura 9.91. La función de transferencia de la unidad de comando requerida, es entonces R(s) =
25 s2 + 2,5s + 1 , T f = 0,1 s. 4(T f s + 1)2
(9.78)
En la figura 9.92 se muestra el modelo Modelica utilizado para generar la señal de referencia deseada y la unidad de comando. El comportamiento del proceso, logrado con la dinámica inversa, se muestra en la figura 9.93, el cual es prácticamente idéntico al de referencia. En la implementación “clásica” de la dinámica inversa utilizada anteriormente, si los parámetros del proceso cambian, es necesario modificar la función de transferencia de la unidad de comando. Además, el procedimiento utiliza un modelo lineal (aproximación) del proceso. Si en la ecuación del proceso y(t ) = P (p)u(t ),
(9.79)
la señal de entrada u (t ) es conocida y la señal de salida y (t ) es desconocida, al desarrollar la dinámica inversa del proceso, se tiene que u(t ) = P −1 (p)y(t ),
(9.80)
264
9 Modelado y simulación con OpenModelica
Figura 9.92: Dinámica inversa - Modelo Modelica para las pruebas
Figura 9.93: Dinámica inversa Respuesta obtenida
por lo que la señal de salida y (t ) pasa a ser conocida y debe determinarse la señal de entrada u (t ) que ahora es desconocida. Si el modelo del proceso está implementado en Modelica como un conjunto de ecuaciones algebraico diferenciales (DAE), al redefinir la entrada como la salida y la salida como la entrada, el modelo de la dinámica inversa sigue siendo un conjunto de ecuaciones algebraico diferenciales y puede ser resuelto utilizando los algoritmos utilizados para la solución de este tipo de modelos. Como en un modelo Modelica implementado utilizando bloques, no es posible conectar el terminal de la señal de salida de un bloque al terminal de la señal de salida de otro bloque (ya que solo se permite conectar el terminal de la señal de salida bloque inversa al terminal la señal entrada de uno o más bloques), para generardelaun dinámica de undebloque en de forma “automática”, se utiliza el bloque
9.8. Sistemas de control
265
Figura 9.94: Dinámica inversa utilizando el bloque InverseBlockContraints Modelica.Blocks.Math.InverseBlockConstraints .
Este bloque tiene dos entradas (u1, u2 ) y dos salidas (y1, y2), y sus únicas ecuaciones son y1 = y2 y u1 = u2. Por lo tanto, el terminal de la señal de salida del filtro requerido para que la inversa del modelo sea propia y el terminal de la señal de salida del modelo del proceso, se pueden conectar a los terminales de las señales de entrada de este bloque y el terminal de la señal de entrada del modelo y el de la del proceso, a sus terminales de las señales de salida, tal como se muestra en la figura 9.94. Las ecuaciones de este modelo Modelica, son m od el DinamicaInversa .. . equation connect ( step1.y , GeneradorYr.u ) ; connect ( GeneradorYr.y , Filtro.u ,) ; connect ( Filtro.y , inverseBlockConstr aints1.u1 ); connect ( DinamicaInversa.y , inverseBlockConst raints1.u2 ); connect ( DinamicaInversa.u , inverseBlockConst raints1.y2 ); connect ( Proceso. u , inverseBlockCons traints1.y1 ); en d DinamicaInversa;
El comportamiento logrado con la nueva dinámica inversa se muestra en la figura 9.95. Modelo no lineal
Usualmente el diseño del sistema de control de un proceso no lineal, tiene como base un modelo lineal del mismo obtenido en un punto de operación. Por lo tanto, para garantizar la estabilidad del sistema de control en todos los punto de operación, es necesario incluir restricciones de robustez en su diseño, reduciéndose así el comportamiento que se pueda obtener, o considerar el operación, diseño conpara baseobtener en un conjunto de modelos lineales obtenidos en varios puntos de varios con-
266
9 Modelado y simulación con OpenModelica
Figura 9.95: Dinámica inversa - señale de referencia deseada y respuesta lograda juntos de parámetros de ajuste del controlador y desarrollar un procedimiento para el cambio automático entre estos. En los esquemas de control que utilizan la inversa del modelo lineal del proceso, si este es modelado en Modelica, la inversa del modelo lineal puede reemplazarse por la inversa del modelo no lineal y luego diseñarse el resto de los componentes del sistema de control, de manera que este se comporte satisfactoriamente en todo su ámbito de operación.
9.9 Sistemas heterogéneos Una de las principales características de Modelica, es la posibilidad de modelar sistemas heterogéneos, combinado componentes de su biblioteca estándar.
9.9.1 Sistema con componentes eléctricos, mecánicos, térmicos y de bloques En la figura 9.96 se muestra el diagrama de interconexión de un motor eléctrico de corriente continua, similar al de la sección 2.10. Se han adicionado al modelo del motor, la generación de calor en el arrollado de armadura y su disipación al medio, a través de la carcasa del motor. El eje del motor está acoplado a una carga mecánica giratoria, por medio a un reductor de modelo velocidad. En este se utilizan los siguientes componentes:
267
9.9. Sistemas heterogéneos
Figura 9.96: Sistema con componentes eléctricos, mecánicos, térmicos y de bloques • Bloques ( Modelica.Blocks.) – Sources.Constant const (k =10) – Sources.Pulse fuenteParCarga (amplitude =-0.2, period =240, offset =0, startTime =180)
– Sources.Step fuenteTension (height =24, startTime =10)
• Componentes eléctricos (Modelica.Electrical.Analog. ) – Basic.HeatingResistor motorRa (R_ref =2.25, alpha = 0.05, T_ref =298.15)
– Basic.Ground ref_ele – Basic.Inductor motorLa (L =0.2) – Basic.EMF emf (k =0.0675) – Sources.SignalVoltage alimentacionMotor
• Componentes mecánicos (Modelica.Mechanics.Rotational. ) – Components.Damper damper1 (d =0.01) – Components.Fixed ref_mec
– Components.IdealGear reductorVelocidad(ratio =3)
268
9 Modelado y simulación con OpenModelica
– Components.Inertia cargaInercia (J =0.001) – Components.Spring barraTransmision (c =1) – Components.Inertia motorInercia (J =0.05) – Sensors.SpeedSensor medidorVelocidadCarga – Sensors.SpeedSensor medidorVelocidadMotor – Sources.Torque cargaPar
• Componentes térmicos (Modelica.Thermal.HeatTransfer. ) – Components.ThermalConductor thermalconductor1 (G =25) – Components.Convection convection1 – Celsius.TemperatureSensor termometroArrollado – Celsius.TemperatureSensor termometroCarcasa – Celsius.FixedTemperature temperaturaAmbiente (T =25) – Components.HeatCapacitor carcasa (C =1000, T(start =298.15))
– Components.HeatCapacitor arrollado (C =100, T(start =298.15)
El motor está inicialmente en reposo y en t = 10 s se arranca con una tensión de alimentación constante. Posteriormente, a partir de t = 180 s, se le aplica un par de carga que varía en forma periódica. En la figura 9.97 se muestran las curvas de velocidad de rotación del motor y de la carga, durante el tiempo que dura el arranque y durante la variación del par de carga. Además, se muestra la variación de la temperatura del arrollado del motor y de la de su carcasa.
9.10 Bibliografía Åström, K. J. y Hägglund, T. (1984). Automatic tuning of simple regulators with specification on phase and amplitude margins. Automatica, 20(5):645–651. Åström, K. J. y Hägglund, T. (1995). PID Controllers: Theory, Design and Tuning . Instrument Society of America, Research Triangle Park, NC, USA. Bonvini, M. y Leva, A. (2012). A Modelica Library for Industrial Control Systems. 9th International Modelica Conference, páginas 477–484. September 3-5, MuEn nich, Germany.
9.10. Bibliografía
269
Figura 9.97: Velocidades de rotación y temperaturas del motor de corriente continua Casella, F., Otter, M., Proelss, K., Richter, C., y Tummescheit, H. (2006). The Modelica Fluid and Media library for modeling of incompressible and compressible thermo-fluid pipe networks. En 5th International Modelica Conference. septiembre 4-5, Vienna, Austria. Cellier, F. E. (2008). World3 in Modelica: Creating System Dynamics Models in the Modelica Framework. En 6th International Modelica Conference , páginas 393– 400. marzo 3-4, Bielefeld, Germany. Elmqvist, H., Tummescheit, H., y Otter, M. (2003). Object-Oriented Modeling of Thermo-Fluid Systems. En 3rd International Modelica Conference . noviembre 3-4, Linköping, Sweden. Engel, A. B. (1978). Elementos de biomatemática . The General Secretariat of the Organization of American States, Washington, D.C., USA. Forrester, J. W. (1971). Counterintituive Behavior of Social Systems. Technology Review, 73(3):52–68. Kirk, D. E. (1970). Optimal Control Theory - An introduction . Prentice-Hall, Inc. Englewood Cliffs, NJ, USA. Leva, A. y Bonvini, M. (2011). Efficient simulation of autotuning PI controllers. En 8th International Modelica Conference
Germany.
, páginas 56–63. March 20-22, Dresden,
270
9 Modelado y simulación con OpenModelica
Leva, A., Bonvini, M., y Maggio, M. (2012). Object-oriented modelling of industrial PID controllers. En IFAC Conference on Advanced in PID Control (PID’12) . March 28-30, Brescia, Italy. Modelica Association (2013).Modelica Standard Library 3.2.1. Linköping, Sweden. Rivera, D. (2007). An introduction to Mechanistic Models and Contr ol theory. En SAMSI Challenges in Dynamic Treatment Regimes and Multistage DecisionMaking. June, 18-20, Research Triangle, Park, NC, USA. Speckhart, F. H. y Green, W. L. (1976). A Guide to Using CSMP - The Continuos System Modeling Program, a Program for Simulating Physical Systems. PrenticeHall, Inc. Englewood Cliffs, NJ, USA.
10 Cuadernos interactivos con OMNotebook El objetivo de este capítulo es presentar, mediante el desarrollo parcial de un cuaderno electrónico interactivo, el uso del editor de cuadernos electrónicos interactivos de OpenModelica, el OMNotebook, introducido brevemente en la sección8.4.
10.1 Introducción Los cuadernos electrónicos interactivos desarrollados con el OMNotebook de OpenModelica, están compuestos por un conjunto deceldas. Estas forman el árbol (tronco y ramas) del documento. Esto es, que una celda puede contener a su vez otras celdas. La estructura de las celdas, se muestra al margen derecho del documento. Las celdas se clasifican como celdas de texto (“Textcell”), celdas de instrucciones (“Inputcell”), celdas LATEX(“Latexcell”), o celdas de agrupación (“Groupcell”). • Las celdas de texto contienen los párrafos de texto, ecuaciones y figuras. Cada una tiene un estilo propio que puede ser: título (“Title”), sub título (“Subtitle”), autor (“Author “), sección (“Section”), sub sección (“Subsecction”), texto (“Text”). Estas últimas permiten introducir enlaces a otros cuadernos electrónicos. Además, se puede seleccionar el formato (fuente, tamaño, destacado, color), de las celdas de texto. • Las celdas de instrucciones proveen una “ventana” para incluir el listado de un modelo Modelica, con su sintaxis destacada, así como instrucciones al compilador. La evaluación de la [Evaluate] celda se efectúa con las teclas [Shift]+[Enter], [Shift]+[Intro] o con el icono de la barra de herramientas. 271
272
10 Cuadernos interactivos con OMNotebook
Se pueden evaluar todas las celdas del cuaderno en una sola acción, con el icono [EvaluateAllCells] de la barra de herramientas. Los resultados de la evaluación de la celda, son mostrados inmediatamente después de esta. Estos pueden ocultarse, pulsando dos veces el botón izquierdo del apuntador, sobre la marca lateral derecha de la celda. El resultado la evaluación de una celdao más (instrucción Modelica), puede ser por ejemplo, de el despliegue gráfico de una variables. • Las celdas latex permiten incluir texto y ecuaciones con instrucciones de formato LATEX, que son desplegadas cuando la celda se evalúa. • Las celdas de agrupación mantienen juntas un grupo de celdas. El grupo de celdas se puede “abrir”, mostrando todas las celdas del grupo, o “cerrar”, en cuyo caso solo se muestra la primera. Dentro del documento hay un cursor de celda y un cursor de texto. La celda “activa”, se muestra con una línea horizontal gruesa bajo esta y se selecciona pulsando una vez dentro de esta, con el botón izquierdo del apuntador. Dentro de las celdas de texto, el cursor se muestra como una línea vertical delgada. Las opciones de los menús desplegables, se detallan en el Manual para los usuarios de OpenModelica (Open Source Modelica Consortium, 2016).
10.2 Desarrollo de un cuaderno electrónico interactivo Como tema para el cuaderno electrónico interactivo de ejemplo, desarrollado con el editor OMNotebook, se tomará el análisis del comportamiento de los sistemas dinámicos de primer y segundo orden.
Introducción Una vez abierto el OMNotebook, con la opción [New] del menú [File], se iniciará el desarrollo del cuaderno, introduciendo celdas de texto ([Cell][Add Texcell]) y definiendo el estilo de estas como título, autor, sección, subsección y texto, tal como se muestra en la figura 10.1 Las celdas de texto contendrán los párrafos descriptivos del tema tratado en el cuaderno, así como las figuras y ecuaciones necesarias. Para la introducción de los listados de los modelos y la ejecución de las instrucciones cell]) en Modelica, deben introducirse celdas de instrucciones ([Cell][Add Input-
10.2. Desarrollo de un cuaderno electrónico interactivo
273
Figura 10.1: Estructura preliminar del cuaderno en OMNotebook
Sistemas de primer orden Como parte del análisis presentado, se emplearán sistemas de primer orden, cuya función de transferencia es K P(s) = , (10.1) Ts+1 donde K es la ganancia y T la constante de tiempo. La ecuación diferencial del sistema dado por (10.1) es T
dy(t ) + y(t ) = Ku (t ). dt
(10.2)
El interés es permitir al lector “experimentar” con los sistemas expuestos. Por ejemplo, que en el caso de los sistemas de primer orden, observe el efecto de un cambio en la ganancia o en la constante de tiempo del modelo. mostrar el modelo yalternadas el comportamiento del sistema, se incluirán tres Para celdas de instrucciones, con las dedinámico texto correspondientes, para incluir
274
10 Cuadernos interactivos con OMNotebook
Figura 10.2: Simulación del sistema de primer orden el modelo, la instrucción de simulación y la de despliegue gráfico, como se muestra en la figura 10.2. Cada una de las celdas de instrucción se evalúa, seleccionándola primero y luego presionado las teclas [Shift]+[Intro]. El resultado de las evaluaciones se muestra en la figura 10.3. El lector puede cambiar los parámetros (K , T ) del modelo, y si fuera necesario, los tiempos de control de la simulación, y observar inmediatamente el efecto que estos tienen sobre la respuesta del sistema. Para esto, debe ir a la celda con el modelo y cambiar los parámetros ( K , T ) a los valores que se desee y volver a evaluar las tres celdas. Si se modifica sustancialmente el valor la constante(de tiempo del modelo, pudiera ser necesario adecuar el tiempo final de de la simulación StopTime) para la la curva de respuesta se observe en forma
10.2. Desarrollo de un cuaderno electrónico interactivo
275
Figura 10.3: Comportamiento del sistema de primer orden
adecuada. El despliegue gráfico de la respuesta, se ha hecho utilizando la configuración predeterminada de la instrucciónplot. Este se puede modificar empleando las opciones descritas en la sección 8.2. Un ejemplo de esto, se muestra en la figura 10.4. Tambiéncon se la pueden de la figura, utilizando el menú desplegado opciónmodificar “Setup”,las delcaracterísticas menú de la ventana del gráfico.
276
10 Cuadernos interactivos con OMNotebook
Figura 10.4: Despliegue gráfico personalizado
Sistemas de segundo orden Para el análisis de los sistemas de segundo orden, se considerará el sistema dado por la ecuación diferencial de segundo orden general d2 y(t ) dy(t ) + 2ζ ωn + ωn2 y(t ) = ωn2 Ku(t ), dt 2 dt
(10.3)
donde K es la ganancia, ωn la frecuencia natural y ζ la razón de amortiguamiento. El modelo del sistema de segundo orden incluido en una celda de instrucciones del cuaderno, se lista en la figura 10.5. En la figura 10.6 se muestran las celdas con las instrucciones, para la simulación del modelo y para el despliegue gráfico de la trayectoria Y(X) del sistema libre, a partir de una condición inicial dada (plano de fase). K , ω n , ζ ) del modelo y El usuario podrá experimentar variando losyparámetros observar su efecto sobre la respuesta temporal el plano de (fase del sistema.
10.3. Bibliografía
277
Figura 10.5: Modelo del sistema de segundo orden El cuaderno incluirá además del texto descriptivo correspondiente, la simulación de un circuito eléctrico RLC, utilizando componentes de la biblioteca Modelica y la ecuación connect. El cuaderno electrónico interactivo de ejemplo, Análisis de los sistemas de primer y segundo orden con Modelica , se proporciona como un anexo a este libro, en el archivo omnbSistemas1y2ord.onb y debe ser abierto para su “lectura”, con el OMNotebook de OpenModelica. Este está disponible en la página web: http://pidplanet.wordpress.com/modelica/ . Además del cuaderno interactivo anterior, en la misma página Web está disponible el cuaderno Solución de un problema de control óptimo con Modelica (archivo omnbControlOptimo.onb), en el cual se describe la solución del problema de control óptimo (esfuerzo de control mínimo), presentado en la sección 8.5.
10.3 Bibliografía Open Source Modelica Consortium (2016). OpenModelica User’s Guide, Release v1.10.0-dev-16-g147b297. March 15.
278
10 Cuadernos interactivos con OMNotebook
Figura 10.6: Plano de fase (Y-X) del sistema de segundo orden
11 Introducci´on a JModelica.org JModelica.org (Åkesson, 2007) es un entorno de código abierto para la compilación, simulación, optimización y análisis de modelos Modelica. Este es el resultado de una investigación realizada en el Departamento de Control Automático de la Universidad de Lund, Suecia1 . En la actualidad, es desarrollado y mantenido por Modelon AB, Lund, Suecia2 . La descripción de su uso, se hace con base en elManual del usuario de la versión 1.16 para Windows (Modelon AB, 2014).
11.1 Introducción El instalador para MS Windows se encuentra disponible en el sitio Web de JModelica.org3 . En este, también están los códigos fuente para realizar la compilación e instalación para Linux y Mac OS X. JModelica.org utiliza como base, el lenguaje Modelica para el modelado de sistemas heterogéneos y su extensión Optimica para la formulación de los problemas de optimización. Provee un compilador para los modelos Modelica (en archivos con extensión .mo) y otro para los problemas de optimización Modelica/Optimica (en archivos con extensión .mop). Además, para la interacción con el usuario, JModelica.org depende de intérpretes interactivos en Python. 1 http://www.control.lth.se/ 2 http://www.modelon.com/ 3 http://www.jmodelica.org/
279
280
11 Introducción a JModelica.org
La interfaz Python de JModelica.org permite interaccionar con los modelos Modelica y Optimica, y está constituida por los siguientes paquetes: • PyModelica - Compila el código Modelica y Optimica a una FMU (“Functional Mock-up Unit”) y a una JMU (“JModelica.org Model Unit”). • PyFMI Realiza la simulación de los modelos que han sido compiladospara a una FMU, la- manipulación de los parámetros y proporciona los resultados el despliegue gráfico. • PyJMI - Resuelve los problemas de optimización, con base en una JMU. La simulación del modelo dinámico, es hecha con los algoritmos de solución de EDO y DAE de Assimulo4 y SUNDIALS5 . JModelica.org exporta e importa objetos FMU (Andersson et al., 2011), de conformidad con el estándar FMI (“Funtional Mock-up Interface”). Ver el capítulo 14. Una JMU se guarda como un archivo comprimido con un formato específico de JModelica.org. Este incorpora todos los archivos requeridos para cargar y trabajar con el modelo compilado en JModelica.org. En el caso de las FMU el modelo es convertido a EDO, mientras que en el caso de las JMU, el modelo es convertido a DAE. En el caso de las simulaciones dinámicas, se recomienda el uso de objetos FMU. Las Para JMUlason utilizadoscon en el la solución de los problemas de optimización. interacción usuario, JModelica.org proporciona tres interfaces distintas: Python (intérprete interactivo de instrucciones en Python), IPython (intérprete interactivo de instrucciones en Python, con el formato del código destacado) y PyLab (IPython junto con PyLab para el cálculo numérico y el despliegue gráfico). Se recomienda utilizar el intérprete interactivo de instrucciones Python PyLab. Se puede utilizar el intérprete interactivo PyLab, para introducir las instrucciones Python una por una, sin embargo, usualmente es más conveniente elaborar un archivo de texto con lalista de instrucciones de alto nivel (“script”) requeridas. Como JModelica.org no incorpora un editor de texto para “programar” las listas de instrucciones, se requiere uno como Notepad++6 , Python IDLE7 , u otro similar, para hacerlo. Los intérpretes interactivos están disponibles en el menú de aplicaciones de Windows [JModelica.org]. 4 http://www.jmodelica.org/assimulo 5 http://computation.llnl.gov/casc/sundials/main.html 6 http://notepad-plus-plus.org/ 7 https://docs.python.org/2/library/idle.html
281
11.2. Intérprete interactivo de Python PyLab
Figura 11.1: Interfaz del usuario en Python PyLab
11.2 Intérprete interactivo de Python PyLab La interfaz del usuario del intérprete PyLab de Python, se muestra en la figura 11.1. Una vez abierta, se puede verificar cual es el directorio de trabajo actual con las instrucciones In[1]: import os In[2]: os.getcw d()
y cambiarlo por el en que residen los modelos a simular, usando In[3]: os.chdir(
'
trayectoria_directorio_de_trabajo
'
8
)
La interfaz en Python PyLab, es un módulo de Matplotlib que combina las capacidades matemáticas de numpy9 , con las de las funciones para el despliegue gráfico de variables de pyplot. Esto proporciona un ambiente interactivo, al estilo MATLAB®. Numpy es una biblioteca Python, para trabajar con arreglos multidimensionales (ndarray). Matplotlib es una biblioteca Python, para el despliegue gráfico de variables en dos dimensiones. Las instrucciones son muy similares a las de MATLAB, como por 8 http://matplotlib.org/ 9 http://www.numpy.org/
282
11 Introducción a JModelica.org
ejemplo: figure( ), plot( ), subplot( ), xlabel( ), axis( ), y las utilizadas para la especificación de las características del trazo gráfico, las cuales se emplearan para el despliegue de las variables resultantes de la simulación. El texto a desplegar, puede contener expresiones matemáticas en LATEX, si se encierra entre dos símbolos $ (’$ expresi´ on $’). PyLab combina numpy y pyplot, en un solo espacio para el trabajo interactivo, permitiendo utilizar las funciones de estos módulos, con solo nombrarlas. Sin embargo, para la elaboración de las listas de instrucciones Python, se recomienda mantenerlos en espacios separados, “importándolos“ al intérprete con las instrucciones: import nu mpy as np y import matpl otlib.pyplo
t as plt
Por lo tanto, el acceso a las funciones de estos módulos, se hará utilizando la notación punto , por ejemplo t = npy.arange(0, 10.1, 0.1) , o la instrucción plt.plot(t, varX, c=’r’, lw=2, label = ’Variable X(t)’) . Esta será la forma en que se utilizarán los módulos Python, en los programas de este trabajo.
11.3 Compilación del modelo Modelica a FMU JModelica.org permite tanto exportar como importar FMU versiones 1.0 y 2.0, para intercambio de modelos (FMU-ME, “model exchange”), así como para cosimulación (FMU-CS, “co-simulation”). Como un primer ejemplo del uso de JModelica.org, se utilizará el circuito eléctrico presentado en la sección 4.4, cuyo modelo Modelica se ha guardado en el archivo CircuitoEectrico.mo. El procedimiento incluye siguientes pasos: 1. Importar la función de compilación de JModelica.org (compile_fmu). 2. Indicar el nombre del archivo del modelo (.mo). 3. Realizar la compilación y asignar el nombre a la FMU. 4. Importar la FMU. 5. Ejecutar la simulación del modelo compilado. 6. Obtener las variables de interés y realizar su despliegue gráfico.
283
11.3. Compilación del modelo Modelica a FMU
El listado de instrucciones Python para su compilación a FMU, simulación y despliegue de los resultados (archivoCircuitoElectricojm.py), es: # Compil aci´ on y si mu la cion ´ del modelo # inicial izaci´ on from pymodelica import compile_fmu
Circuit oElectr ico.mo
from pyfmi import load_fmu import matpl otlib.pyplo t as plt # compil aci´ on a F M U fmu _na me = comp ile _fm u( "CircuitoElectrico" cirel ec = load_ fmu(fmu_nam e)
, "CircuitoElectrico.mo"
)
# simula ci´ on de la FM U y ob te nc i´ on de res ult ado s simr es = cirel ec.simulate(final _time=1.40 ) vc = si mr es[ "Vc" ]; il = si mr es[ "Il" ] ; t = si mr es ["time" ] # gr afi ´ cos de la s res pue sta s plt.figure(1) plt.subplot(1,2,1) plt.plot(t,vc,c= " b ",lw=2,label= "$V_c(t)$" ) plt.legend(loc=0) plt.xlabel( "Tie mpo (s)") plt.grid(True) plt.subplot(1,2,2) plt.plot(t,il,c= " r ",lw=2,label= "$i_L(t)$" ) plt.legend(loc=0) plt.xlabel( "Tie mpo (s)") plt.grid(True) plt.tight_layout() plt.show()
Este se ejecuta con la instrucción In[xx]
execfile ( CircuitoElectricojm.py '
'
)
En la figura 11.2 se muestran las curvas de la tensión a través del capacitor y la corriente por el inductor, en la ventana gráfica de Matplotlib. Esta incluye un menú de navegación, desplazamiento, ampliación y reducción, configuración y guardado del gráfico en un archivo (png, eps, svg, pdf, ...). Los resultados de la simulación, son guardados en un archivo de texto nombranombreProgramaPy_result.txt, el cual puede ser utilizado para desplegar las do curvas de respuesta, empleando la interfaz gráfica Plot GUI (ver la sección 11.5).
284
11 Introducción a JModelica.org
Figura 11.2: JModelica/Matplotlib - Variables del circuito eléctrico
11.4 Optimización con JModelica.org Para la solución del problema de optimización, JModelica.org provee tres algoritmos: 1. Optimización dinámica de un modelo dado por DAE con CasADi. 2. Optimización sin derivadas de un modelo dado por ODE con una FMU. 3. Optimización dinámica de un modelo dado por ADE utilizando una JMU. El algoritmo 1 es el algoritmo preseleccionado. Resuelve problemas de control óptimo y de estimación de parámetros. Utiliza CasADi para las derivadas e Ipopt para la solución del problema no lineal. El algoritmo 2 resuelve problemas de optimización y calibración de modelos con base en una FMU. Utiliza el algoritmo Nelder-Mead sin derivadas. El modelo puede haber sido exportado como una FMU, utilizando JModelica.org u otra herramienta. El algoritmo 3 resuelve problemas de optimización de parámetros y calibración de modelos con una JMU. Utiliza CppAD para el cálculo de las derivadas e Ipopt para la solución del problema no lineal resultante. El modelo no debe contener discontinuidades. CasADiy (Andersson, 2013) en es una herramienta de software para la optimización en general el control óptimo particular.
285
11.4. Optimización con JMode lica.org
El problema del esfuerzo de control mínimo Como ejemplo introductorio al uso de JModelica.org para resolver un problema de optimización, control óptimo en este caso, se empleará el mismo problema planteado en la sección 8.5 y resuelto utilizando OpenModelica. Se desea transferir el sistema (integrador doble) dx1 (t ) = x2 (t ), dt dx2 (t ) = u(t ), dt
(11.1) (11.2)
desde el estado inicialx0 = (−2, 2 ) hasta el srcen (0, 0), con el esfuerzo de control restricción |u(t )| ≤ 1. La funcional de costo a optimizar (minimizar) es entonces
u(t ) mínimo, sujeto a la
J (x, u) =
∞
0
x21 (t ) + x22 (t ) + u2 (t )
dt .
(11.3)
El modelo para la optimización escrito en Optimica (extensión de Modelica), es optimi zation ContOp tiUminj m( objective = cost ( finalTime ) , startTime = 0.0, finalTime = 10 ) // Mode lo - con tro l opt ´ imo de esf uer zo de con tro l ınimo m´ Real x1 ( start = -2, fix ed = tr ue) ; Real x2 ( start = 2, fix ed = tr ue) ; Real cost ( start = 0, fix ed = tr ue) ; input Real u ; equation de r( x1 ) = x2 ; de r( x2 ) = u ; de r( cost ) = x1^2 + x2^2 + u^2; constraint ab s( u ) < = 1; en d ContOptiUminjm;
Como de indica en la primera línea del programa, el modelo se define como un problema de optimización ( optimization) y debe guardarse en un archivo con extensión .mop (extensión de Optimica). En este ejemplo, el archivo Optimica es ContOptiUminjm.mop. Este contiene las ecuaciones que definen el modelo del sistema y la especificación para la optimización: la funcional de costo (cost) y las restricciones del problema (constraint ) si las hubiera.
286
11 Introducción a JModelica.org
El problema de la optimización se resuelve siempre como un problema de minimización, por la que la funcional de costo debe estructurarse, de manera que el óptimo sea su valor mínimo. Si la funcional de costo ( cost) es una integral, el valor a optimizar es su valor final (cost(finalTime)) y esta se incorpora en el modelo como una ecuación diferencial (definiendo la derivada de la funcional de costo igual a su integrando). El listado de instrucciones Python para compilar el modelo, ejecutar la optimización con restricciones y mostrar los resultados, es (archivo ContOptiUminjm.py) # Co nt ro l opt ´ imo de esf uer zo de con tro l ınimo m´ from pymodelica import compile_jmu from pyjmi import JMUModel import matpl otlib.pyplo t as plt # co mp il ar y ca rg ar el mo de lo coumjmu=compile_jmu( "ContOptiUminjm" , "ContOptiUminjm.mop" copt=JMUModel(coumjmu) # eje cut ar la opti miz acio n´ optres=copt.optimize() # result ados x1=optres[ x1 ] x2=optres[ x2 ] '
'
'
'
u=optres[ u ] ju=optres[ cost ] t=optres[ time ] '
'
'
'
'
'
# gr aficos ´ plt.figure(1) plt.subplot(2,2,1) plt.plot(x1,x2,lw=2) plt.xlabel( $x_1(t)$ ) plt.ylabel( $x_2(t)$ ) plt.grid(True) plt.subplot(2,2,2) plt.plot(t,x1,c= r ,lw=2,label= $x_1$ ) plt.plot(t,x2,c= g ,lw=2,label= $x_2$ ) plt.legend(loc=0) plt.xlabel( Tie mpo (s) ) plt.grid(True) plt.ylabel( $x_1(t) $, $x_2(t)$ ) plt.xlabel( Tie mpo (s) ) plt.subplot(2,2,3) plt.plot(t,u,c= m ,lw=2) plt.grid() '
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
)
11.5. JModelica.org Plot GUI
287
plt.ylabel( u(t) ) plt.xlabel( Tie mpo (s) ) plt.subplot(2,2,4) plt.plot(t,ju,c= k ,lw=2) plt.grid() plt.ylabel( J(t) ) plt.xlabel( Tie mpo (s) ) '
'
'
'
'
'
'
'
'
'
plt.tight_layout() plt.show()
El modelo se compila a una JMU ( yyy=compile_jmu(’xxx’,’xxx.mop’ ) con el compilador de Optimica, se importa ( zzz=JMUModel(yyy)), luego se resuelve el problema de optimización (resultoptim=zzz.optimize() ) y se recuperan los resultados para su análisis y despliegue gráfico. Los resultados de la optimización se muestran en la figura 11.3: el movimiento en el plano de fase ( x2 (t ) vs. x1 (t )), las curvas de x1 (t ) y x2 (t ), el esfuerzo de control u(t ) óptimo y el valor de la funcional de costo J (t ). Estos se pueden comparar con los obtenidos para el mismo problema en la sección 8.5, utilizando el OMShell de OpenModelica.
11.5 JModelica.org Plot GUI Como parte del entorno de JModelica.org, se dispone de la interfaz gráfica Plot GUI paraEsta visualizar resultados una simulación. es unalos aplicación en de Python y está disponible en el menú de aplicaciones de Windows [JModelica.org] [plot-GUI]. La ventana principal de Plot GUI se muestra en la figura 11.4. El menú de Plot GUI incluye las opciones File (Open, Save, Exist), Edit (Add Plot, Clear Plot, Axis/Labels, Lines/Legens), View (Grid, Move, Zoom, Resize) y Help. Con la opción del menú [File][Load] se carga el archivo de resultados de una simulación u optimización (.txt) creado por JModelica.org. Para el ejemplo se utilizará el archivo CircuitoElectricojm_res.txt, con los resultados de la simulación del circuito eléctrico, realizada en la sección 11.3. Una vez abierto el archivo, en la columna izquierda se muestra el árbol de constantes, parámetros y variables, del cual se seleccionan las que se desee desplegar. Ya sea varias variables en un solo gráfico o en varios. Áreas adicionales para los gráficos (“plot”) se agregan con la opción del menú [Edit][Add Plot]. Seleccionando del menú [Edit][Axis/Label], se abre la ventana de configuración mostrada la figura paraextremos establecer a desplegar como título o en los ejes, yen cambiar los11.5, valores de las las leyendas ejes.
288
11 Introducción a JModelica.org
Figura 11.3: JModelica.org - Control óptimo, esfuerzo de control mínimo El grosor, color, tipo de trazo y marcas de las líneas, se pueden establecer seleccionado en el menú [Edit][Lines/Legend], con lo que se despliega la ventana de opciones mostrada en la figura 11.6. Cuando se tienen varios gráficos, la distribución de los mismos se puede establecer seleccionado la pestaña de cada uno de ellos y relocalizándolos, tal como se muestra en la figura 11.7. Cada uno de los gráficos, se puede guardar en forma individual en un archivo (.png, .eps, .pdf, ...), seleccionado [File][Save].
11.6 Funciones no disponibles en JModelica 1.17 Las limitaciones persistentes en la versión 1.17 de JModelica.org, están descritas en el capítulo 10 del Manual del usuario (Modelon AB, 2014). En este se incluyen las funciones que no se pueden incluir en los modelos. A partir de la versión 1.16, JModelica.org da soporte a la función delay (tiempo muerto).
11.7. Bibliografía
289
Figura 11.4: JModelica.org Plot GUI - ventana principal
11.7 Bibliografía Åkesson, J. (2007). Languages and Tools for Optimization of Large-Scale Systems . PhD thesis, Department of Automatic Control, Lund University, Lund, Sweden. Andersson, C., Åkersson, J., Führer, C., y Gäfvert, M. (2011). Import and Export of Funcitonal Mock-up Units in JModelica.org. En 8th International Modelica Conference, páginas 329–338. marzo 20-22, Dresden, Germany. Andersson, J. (2013). A General-Purpose Software Framework for Dynamic Optimization. PhD thesis, Arenberg Doctoral School, KU Leuven, Belgium. Modelon AB (2014). JModelica.org User Guide: Version 1.16 . Lund, Sweden.
290
11 Introducción a JModelica.org
Figura 11.5: Plot GUI - opciones para “Axis and Labels”
11.7. Bibliografía
Figura 11.6: Plot GUI - opciones para “Lines and Legends”
291
292
11 Introducción a JModelica.org
Figura 11.7: Plot GUI - arreglo de gráficos
12 Compilaci´on, simulaci´on y optimizaci´on con JModelica.org En el capítulo 11 se introdujo el uso de JModelica.org para compilar los modelos Modelica a una FMU y el uso del paquete Matplotlib de Python, para desplegar los resultados de la simulación del modelo. Ahora, se mostrará con más detalle el desarrollo de los “programas” (las listas de instrucciones de alto nivel) en Python, para sistematizar la operación de JModelica.org, Matplotlib y Optimica, con el fin de simular y optimizar sistemas heterogéneos modelados con Modelica (Modelon AB, 2014).
12.1 Introducción Con JModelica.org se pueden crear tres tipos de objetos: los modelos FMU (FMUModel), los modelos JMU (JMUModel) y los problemas de optimización (OptimizationProblem). Como se indicó en la sección8.3.8, también se puede utilizar OpenModelica para compilar los modelos Modelica a objetos FMU.
12.2 Algoritmos de simulación y optimización JModelica.org utiliza el paquete Python Assimulo1 para resolver ecuaciones diferenciales ordinarias (ODE) y ecuaciones algebraico diferenciales (DAE). Assimulo incluye métodos de solución de paso fijo y de paso variable. El método preseleccionado es el Sundials CVode2 , el cual es un método de paso múltiple varia1 http://www.jmodelica.org/assimulo 2 http://computation.llnl.gov/casc/sundials/description/description.html
293
294
12 Compilación, simulación y optimización con JModelica.org
ble y de orden variable, que incluye fórmulas de Adams-Moulton para problemas no rígidos y de diferenciación hacia atrás (BDF) para problemas rígidos.
12.3 Proceso de compilación y carga del modelo Tal en la sección 11.2, se utilizará intérprete para Pythoncomo PyLabseymostró se establecerá primero el directorio deeltrabajo con interactivo las instrucciones In[1]: import os In[2]: os.chdir( trayectoria_directorio_de_trabajo '
'
)
En adelante, se supondrá que se ha establecido el directorio de trabajo, donde residen tanto los archivos de los modelos Modelica, como los de las listas de instrucciones Python para su compilación y simulación. Las instrucciones de alto nivel pueden ser introducidas en forma interactiva en PyLab, o mediante su inclusión en listas de instrucciones, empleando un editor de texto.
12.3.1 Compilación del modelo Compilación a una FMU
Los componentes FMU pueden ser compilados como una FMU-ME (“model exchage”) para el intercambio de modelos, o como modelos FMU-CS (“co-simulation”) para una cosimulación, los cuales contienen también el algoritmo para su solución. La compilación de un modelo Modelica a una FMU-ME, se realiza con las siguientes instrucciones: # Compil aci´ on a FM U-ME ve rs io n 1. 0 # imp ort ar el com pil ado r from pymodelica import compile_fmu from pyfmi import load_fmu # co mp il ar y ca rg ar el mo de lo nombr eFMU = compil e_fmu( modeloModelica mi F MU = lo a d _ fm u ( n o m b re F M U ) '
'
, modeloArchivo.mo '
'
)
Los parámetros preestablecidos para el compilador son:target - compilar como FMU-ME y version - FMU 1.0. Para al compilar el modelo como una FMU 2.0, se debe incluir como opción en el llamado compilador, el parámetro version = ’2.0’ .
295
12.3. Proceso de compilación y carga del mode lo
Para la compilación de un modelo Modelica a una FMU-CS, se utilizan las siguientes instrucciones: # Compil aci´ on a un a F MU-C S ve rs io n 1. 0 # imp ort ar el com pil ado r from pymodelica import compile_fmu from pyfmi
import
load_fmu
# co mp il ar y ca rg ar el mo de lo nombr eFMU = compil e_fmu( modeloModelica tar get = cs ) m iF MU = lo a d _ fm u ( n o m br e F M U ) '
'
'
, modeloArchivo.mo '
'
,
'
Si la compilación es exitosa, se crea el archivo nombreFMU.fmu en el directorio de trabajo. Compilación a una JMU
Los objetos JMU son creados con JModelica.org, para su utilización en problemas de optimización. Las instrucciones para la compilación de un modelo Modelica a una JMU, son: # Compil aci´ on a un a J MU # imp ort ar el com pil ado r from pymodelica import compile_jmu from pyfmi import load_jmu # co mp il ar y ca rg ar el mo de lo nombr eJMU = compil e_jmu( modeloModelica m iJ MU = lo a d _ jm u ( n o m br e J M U ) '
'
, modeloArchivo.mo '
'
)
Con esto se crea el archivo nombreJMU.jmu en el directorio de trabajo. Opciones del compilador
Los parámetros de la llamada del compilador FMU se pueden desplegar con la instrucción help(compiler_fmu) y los correspondientes a la del compilador JMU con help(compiler_jmu). Los parámetros para la compilación a una FMU son: compil e_fmu(clas s_na me , file_ name=[], compi ler= auto , tar get= me , ve rs io n= 1 . 0 , compile r_optio ns=[], compil e_to=. , compile_log_level = warning , separate _proces s=True, jvm_arg s = ) '
'
'
'
'
'
' '
'
'
'
'
296
12 Compilación, simulación y optimización con JModelica.org
con las opciones: compiler={’auto’, ’modelica’, ’optimica’} target={’me’, ’cs’, ’me+cs’} version={’1.0’, ’2.0’}
Los parámetros para la compilación a una JMU son: compil e_jmu(clas s_na me , file_n ame=[], compi ler= auto , com pil er_ optio ns=[], compil e_to= . , com pile _log _le vel = warning , separate _proces s=True, jvm_a rgs =) '
'
'
'
'
'
' '
con las opciones: compiler={’auto’, ’modelica’, ’optimica’}
12.3.2 Carga de los objetos FMU y JMU Los modelos precompilados como una FMU (creados con JModelica.org u otro compilador) y como una JMU (compilados con JModelica.org), pueden cargarse en la interfaz interactiva Python de JModelica.org, para su simulación y optimización (esto último solo con los JMU), con las siguientes instrucciones: # Ca rg ar un mo de lo FM U from pyfmi import load_fmu mi F MU
= lo a d _ fm u (mo d e l o F M U . fm u ) '
'
# Ca rg ar un mo de lo JM U from pyfmi import load_jmu mi J MU = lo a d _ jm u (mo d e l o J M U . jm u ) '
'
12.3.3 Transferencia del modelo a un problema de optimización Un problema de optimización se puede convertir a la claseOptimizationProblem, con las siguientes instrucciones: # Transfe rencia a Optimiza tionProb lem # imp ort ar el com pil ado r from pymodelica import transfer_optimization_problem # com pil ar el mod elo m i O p t M o d e l = t r a n s f e r _ o p t i m i z a t i o n _ p r o b l emodeloModelica m( modeloArchivo.mo ) '
'
'
'
,
12.4. Compilación de modelos a una FMU y su simulación
297
Figura 12.1: Diagrama de simulación del circuito RLC serie
12.4 Compilación de modelos a una FMU y su simulación Se empleará como ejemplo, el circuito eléctrico RLC serie presentado en la sección 9.2.1, cuyo diagrama de interconexión elaborado con OpenModelica, se muestra nuevamente en la figura 12.1.
12.4.1 Modelo Modelica Se hará una copia del modelo creado con OpenModelica y se eliminaran todas las anotaciones para el despliegue gráfico del diagrama de interconexión, ya que solo son necesarias para su dibujo. El modelo Modelica reducido (guardado en el archivo SisElec01jm_o.mo), es m od el SisElec01jm_o "Circ uito el´ ect ric o RL C ser ie" Modelica. Electrical. Analog.Bas ic.Inductor induc tor ( L = 1 , i( start = 0, fix ed = tr ue)) ; Modelica. Electrical. Analog.Bas ic.Resistor resis (tor R = 60 ) ; Modelica.E lectrical. Analog.Sour ces.StepVol tage fuente_ tension ( V = 10, start Time = 0.01 ) ; Modelica. Electrical .Analog.Bas ic.Ground tierr a; Modelica. Electrical. Analog.Bas ic.Capacito r capaci tor ( C = 0.0 00 1, v( start = 0, fix ed = tr ue)) ; Modelica.Electrical.Analog.Sensors.PowerSensor medidor_potencia ; Modelica. Blocks.Con tinuous.In tegrator energia _capacit or; equation connect ( resistor.n , inductor.p ) ; connect ( energia_capacitor.u , medidor_potencia.power ) ; connect ( inductor.n , medidor_potencia.pc ) ;
298
12 Compilación, simulación y optimización con JModelica.org
connect ( capacitor.p , medidor_potencia.pv ) ; connect ( m e d i d or _ p o t e n c i a . n v , c a p a c i t o r).;n connect ( m e d i d or _ p o t e n c i a . n c , c a p a c i t o r).;p connect ( capacitor.n , tierra.p) ; connect ( tierra.p , fuente_tension.n ) ; connect ( fuente_tension.p , resistor.p) ; en d SisElec01jm_o;
12.4.2 Compilación a una FMU, simulación y despliegue de resultados Con la ejecución del archivo Pythonjm_initFMU.py In[x]:
execfile ( jm_initFMU.py '
'
)
se cargará el compilador y el módulo de funciones gráficas. Las instrucciones incluidas en este archivo son: # Inicial izaci´ on de JMo del ica.o rg par a la com pil aci on ´a # archi vo: jm_in itFMU.py from pymodelica import compile_fmu from pyfmi import load_fmu import matpl otlib.pyplo t as plt
FMU
La compilación del modelo Modelica, la simulación del objeto FMU creado, la obtención de los resultados de la simulación y su despliegue gráfico, se realizan ejecutando las instrucciones en el archivoSisElec01_jm_o.py, con la instrucción '
In[y]: execfile ( SisElec01_jm_o.py
'
)
el cual contiene el siguiente listado de instrucciones Python # Compil aci´ on a un a FM U y si mu la cion ´ de Sis Ele c01j m_o.m o # archi vo: SisEle c01jm_o.py fmu_name=compile_fmu( "SisElec01jm_o" , "SisElec01jm_o.mo" ) cirelec=load_fmu(fmu_name) # simula ci´ on d e l a FM U simres=cirelec.simulate(final_time=0.2) # val ore s de la s var iab les Vc=simres[ "medidor_potencia.voltageSensor.v" Ic=simres[ "medidor_potencia.currentSensor.i" Wa=simres[ "medidor_potencia.power" ] Ju=simres[ "energia_capacitor.y" ] t=simres[ "time" ]
] ]
12.4. Compilación de modelos a una FMU y su simulación
# gr afi ´ cos de la s res pue sta s plt.figure(1) plt.subplot(2,2,1) plt.plot(t,Vc,c= b ,lw=2,label= plt.legend(loc=0) plt.subplot(2,2,2) '
'
'
'
'
'
plt.plot(t,Ic,c= plt.legend(loc=0) r plt.subplot(2,2,3) plt.plot(t,Wa,c= g plt.legend(loc=0) plt.xlabel( Tie mpo plt.subplot(2,2,4) plt.plot(t,Ju,c= k plt.legend(loc=0) plt.xlabel( Tie mpo plt.tight_layout() plt.show() '
'
'
,lw=2,label= ,lw=2,label=
'
'
'
299
$V_c$ ) '
'
$I_c$ ) Potencia
'
)
, $t$ [s] ) '
'
'
'
,lw=2,label= u Energ´ıa ) '
, $t$ [s] )
El gráfico de las curvas de respuesta se muestra en la figura 12.2, las cuales se pueden comparar con las obtenidas con OpenModelica y mostradas en la figura 9.10. La ejecución de la simulación sisr es=modelfmu.simu
late(final_t
ime=tt.t)
incluye varios argumentos de entrada: start_time=0.0, instante de inicio de la simulación, final_time=tt.t, instante final de la simulación (debe indicarse), input(), variables de entrada ( nombres y matrices de valores o funciones), algorithm=’AssimuloFMIAlg’ , options=[solver=’CVode’, ...]. El argumento de salida (sisres) es un objeto que contiene todas las variables resultado de la simulación, así como el vector de tiempo ( time). Se accede a cada una de ellas utilizando como clave, su nombre en el modelo Modelica.
12.4.3 Cambio de parámetros del modelo Como ya se ha compilado el modelo Modelica a un objeto FMU, el estudio de casos (efecto de cambios en los parámetro del modelo), puede hacerse en forma muy rápida.
300
12 Compilación, simulación y optimización con JModelica.org
Figura 12.2: Variables en el capacitor Análisis de un circuito eléctrico
Los parámetros iniciales del circuito eléctrico simulado son: R = 60 Ω, L = 1 H y C = 0,0001 F. Se desea comparar las respuestas obtenidas con estos parámetros, con las que se obtienen si los parámetros son: R = 100 Ω, L = 1,50 H y C = 0,0002 F. Las instrucciones para cambiar los parámetros del modelo y simularlo de nuevo, son: # Ca mb io de pa r´ ametro s del mode lo SisElec 01jm_o.mo # archi vo: SisElec 01jm_npa ram.py # ca rg ar de nu ev o el FMU cirelec=load_fmu(fmu_name) # no mb re de los pa r´ ametros pnombre=[ resistor.R , inductor.L , # obt ene r parame ´ tro s act ual es ( ge t pvalor=cirelec.get(pnombre) print "Parametr os inici ales:" '
'
'
'
' ' '
capacitor.C )
'
]
301
12.4. Compilación de modelos a una FMU y su simulación
fo r i in ran ge (0, 3) : print pnombre[i], " = ", pva lor[i ] # va lo re s nu ev os de lo s pa ametros r´ pvalor[0]=100 pvalor[1]=1.50 pvalor[2]=0.0002
# ca mb ia se r tlo s pa r´ ame tro s ( cirelec. (pnombre ,pvalor)
se t
' '
)
# nu eva sim ula ci´ on de l FM U simres=cirelec.simulate(final_time=0.2) Vc=simres[ "medidor_potencia.voltageSensor.v" Ic=simres[ "medidor_potencia.currentSensor.i" Wa=simres[ "medidor_potencia.power" ] Ju=simres[ "energia_capacitor.y" ] t=simres[ "time" ] # gr afi ´ cos de la s res pue sta s nue vas plt.figure(1) plt.subplot(2,2,1) plt.plot(t,Vc,c= b ,ls= -- ,lw=2,label= plt.legend(loc=0) plt.subplot(2,2,2) plt.plot(t,Ic,c= r ,ls= -- ,lw=2,label= plt.legend(loc=0) plt.subplot(2,2,3)
] ]
'
'
'
'
'
$V_{c2}$
'
)
'
'
'
'
'
$I_{c2}$
'
)
plt.plot(t,Wa,c= g ,ls= -- ,lw=2,label= Potencia2 ) plt.legend(loc=0) plt.subplot(2,2,4) plt.plot(t,Ju,c= k ,ls= -- ,lw=2,label= u Energ´ı a 2 ) plt.legend(loc=0) plt.tight_layout() plt.show() '
'
'
'
'
'
'
'
'
'
'
'
que se ejecuta con la instrucción In[z]:
'
execfile ( SisElec01jm_nparam.py
'
)
El gráfico de las nuevas curvas de respuesta, junto con las anteriores, se muestra en la figura 12.3. Plano de fase de un sistema de segundo orden
Se utilizará ahora el sistema de segundo orden4.1), ( presentado en la sección4.1, cuyo modelo Modelica, se ha modificado de la siguiente forma (guardado en el archivo SistemaSegundoOrden.mo):
302
12 Compilación, simulación y optimización con JModelica.org
Figura 12.3: Efecto del cambio de los parámetros
mo d el SistemaSegundoOrden parameter Real K = 2 .5 "gana ncia est´ atica" ; parameter Real wn = 10.0 "frecuen cia natur al"; parameter Real z = 0 .2 "raz´on amortig uamient o" ; parameter Real x1ic = -2 "condici´on ini cia l x1"; parameter Real x2ic = 2 "condici´on ini cia l x2"; Real x1 ( start = x1 ic, fixe d = tr ue) ; Real x2 ( start = x2 ic, fixe d = tr ue) ; equation de r( x1 ) = x2 ; de r( x2 ) = - 2 * z * wn * x2 - w n ^ 2 * x1 ; en d SistemaSegundoOrden;
Se desea analizar el comportamiento de los estados ( x1 , x 2 ) en el plano de fase, para cuatro casos: sobre amortiguado ζ( = 2,5), críticamente amortiguado (ζ = 1,0), sub amortiguado (ζ = 0,25) y oscilatorio (ζ = 0,0), a partir de varias condiciones iniciales diferentes. El listado de instrucciones Python para compilar el modelo, simularlo con las diferentes condiciones iniciales y razones de amortiguamiento, y desplegar los cuatro planos de fase, es:
12.4. Compilación de modelos a una FMU y su simulación
303
# Pl an o de fa se de un si st em a de se gu nd o or de n from pymodelica import compile_fmu from pyfmi import load_fmu import matpl otlib.pyplo t as plt # con dic ion es ini cia les (5 ) x1i cv=[-0 .2 5, 0, -0 .7 5, -1 , 1] x2 ic v=[- 10, 12 , 0, 10 , 5] # raz one s de amo rtig uam ient o (4 ) zv=[ 2. 5, 1, 0. 25, 0] # compil aci´ on a un a F MU fmu_name=compile_fmu( "SistemaSegundoOrden" "SistemaSegundoOrden.mo" )
,
# simu lacion ´ , cam bio de param ´ et ro s y graficos ´ plt.close( "all" ) plt.figure(1) fo r j in ran ge (4): ztxt= st r (zv[j]) subplot(2,2,j+1) plt.axis([-1.5,1.5,-15,15]) fo r i in ran ge (5): coptm=load_fmu(fmu_name) # cam bio con dic ion es ini cia les coptm. se t ( x1ic ,x1icv[i]) '
'
coptm. se t ( x2ic ,x2icv[i]) # ca mb io ra z´ on de amor tigu ami ento coptm. se t ( z ,zv[j]) # simula ci´ on de l FM U simres=coptm.simulate(final_time=5) # val ore s de la s var iab les vX1=simres[ "x1" ] vX2=simres[ "x2" ] t=simres[ "time" ] # pl an o de fas e plt.plot(vX1,vX2,lw=2) plt.hold(True) plt.text(0.9,12., r $\z et a = $ +ztxt) plt.xlabel( r $X_1$ ) plt.ylabel( r $X_2$ ) plt.grid(True) plt.tight_layout() plt.show() ' '
'
'
'
'
'
'
'
'
Los planos de fase obtenidos, se muestran en la figura 12.4. En ellos se aprecia claramente, efecto que tiene la razón de amortiguamiento, sobre el comportamiento dinámico delelsistema.
304
12 Compilación, simulación y optimización con JModelica.org
Figura 12.4: Planos de fase, sistema de segundo orden
12.4. Compilación de modelos a una FMU y su simulación
305
Figura 12.5: Sistema de control de velocidad del motor de corriente continua
12.4.4 Sistema de control de un motor de corriente continua En la sección 9.8.1 se presentó el modelado y simulación del sistema de control de la velocidad de rotación de un motor de corriente continua, utilizando OMEdit (OpenModelica). Ahora se utilizará JModelica.org para comparar las respuestas del sistema de control, con tres conjuntos diferentes de parámetros del controlador PI. El diagrama de interconexión del motor, la carga y su sistema de control, se muestra en la figura 12.5. El valor deseado, la señal realimentada y la señal de salida del controlador están en% (varían de 0 a 100%). El ámbito de medición del transmisor de velocidad es de 0 a 200 rads −1 y el de actuación de la fuente de alimentación de 0 a 100 V. El modelo Modelica del sistema de control es m od el SisControlPIMotordcjm Modelica.Electrical.Analog.Sources.SignalVoltage signalvoltage1; Modelica. Electrical .Analog.Bas ic.Ground ref_e le; Modelica. Electrical. Analog.Bas ic.Inductor ( LLa = 0 .2 ) ; Modelica.M echanics.Ro tational.S ources.Torq ueStep Torqu e_L ( offsetTorque = 0, startT ime = 60, stepTo rque = -0.25 ) ; Modelica.Mechanics.Rotational.Components.Damper friccion ( d = 0.01 ) ; Modelica.Mechanics.Rotational.Components.Inertia rotor ( J = 0.0 5, ph i( fixed = tr ue , sta rt = 0 ) , w( fixed = tr ue , start = 0 ) ) ; Modelica. Electrical .Analog.Ba sic.EMF emf ( k = 0.0675 ) ; Modelica. Electrical. Analog.Bas ic.Resistor ( RRa = 2.25 ) ; Modelica .Blocks.M ath.Gain k_tran smisor ( k = 0 .5 ) ;
306
12 Compilación, simulación y optimización con JModelica.org
Modelica.M echanics.Ro tational.Se nsors.Speed Sensor tacom etro; Modelica .Blocks.M ath.Gain k_act uador ( k = 1) ; Modelica .Blocks.So urces.Ste p valor_d eseado ( height = 50 , startTime = 5 ) ; Modelica .Blocks.Ma th.Feedba ck compara dor_erro r; Modelica .Blocks.Co ntinuous. PI (PI T = 5 , k = 0 .5 ) ; Modelica. Blocks.Non linear.Li miter sal_co ntrol ( uMax = 100, uMin = 0Blocks.Non ); Modelica. linear.Li miter transm isor ( uMax = 100, uMin = 0 ) ; equation connect ( friccion.flange_b , ref_mec.flange) ; connect ( Torque_L.flange , rotor.flange_a) ; connect ( k_actuador.y , signalvoltage1.v ) ; connect ( sal_control.y , k_actuador.u) ; connect ( PI. y, sal_co ntrol.u) ; connect ( comparador_error.y , PI.u ); connect ( valor_deseado.y , comparador_error.u1 ) ; connect ( transmisor.y , comparador_error.u2 ) ; connect ( k_transmisor.y , transmisor.u) ; connect ( tacometro.flange , rotor.flange_b) ; connect ( tacometro.w , k_transmisor.u ) ; connect ( signalvoltage1.n , ref_ele.p) ; connect ( emf .n, ref_e le.p) ; connect ( rotor.flange_b , friccion.flange_a ) ; connect ( emf.flange , rotor.flange_a ) ; connect ( La. n, emf. p) ; connect ( Ra. p, signalv oltage1 .p ); connect ( La. p, Ra. n) ; // an no ta ti on( experiment ( StartTime = 0, StopT ime = 120, Tolerance = 1 e - 06, Inter val = 0.24 ) ) ; en d SisControlPIMotordcjm;
Los parámetros del controlador PI serán: (K p , Ti ) ∈ {(0,50, 5,0 s), (0,75, 2,5 s), (1,25, 2 ,0 s)}. El listado de instrucciones Phyton para compilar el modelo, realizar la simulación y mostrar los resultados con los tres conjuntos de parámetros, es # Compil aci´ on y si mu la cion ´ de SisContr olPIMoto rdcjm.mo # co nt ro l PI co n tr es co nj un to s de paametros r´ lsv=[ -- , - , -. ] '
'
'
'
'
'
# pa r´ ame tro s de l con tro lad or PI Kpv=[0 .50, 0.7 5, 1.25 ] Ti v=[5 .0, 2. 5, 2.0 ] pinpa=[ PI.k , PI.T ] pivp a=[1, 1] '
'
'
'
12.4. Compilación de modelos a una FMU y su simulación
# compil aci´ on a F M U fmu_name=compile_fmu( "SisControlPIMotordcjm" "SisControlPIMotordcjm.mo" )
,
# aju ste de l con tro lad or y sim ula ci´ on fo r i in ran ge (0,3): cpimdc=load_fmu(fmu_name) # pa r´ ametro s del contro lador pivpa[0]=Kpv[i] pivpa[1]=Tiv[i] cpimdc. se t (pinpa,pivpa) # sim ula ci´ on de l FM U simres=cpimdc.simulate(final_time=120) # val ore s de la s var iab les vR=simres[ "valor_deseado.y" ] vD=simres[ "Torque_L.tau" ] vY=simres[ "transmisor.y" ] vU=simres[ "sal_control.y" ] t=simres[ "time" ] # gr ´ afi cos de la s res pue sta s if i==0: plt.figure(1) plt.subplot(2,1,1) plt.plot(t,vR,c= r ,ls=lsv[i],lw=2,label= Va lor des ead o [%] ) plt.plot(t,vY,c= b ,ls=lsv[i],lw=2,label= Vel oci dad mot or [%] ) '
'
'
' '
'
' '
plt.plot(t,vU,c= g ,ls=lsv[i],lw=2,label= Sali da contro lador [%] ) plt.legend(loc=0) plt.subplot(2,1,2) plt.plot(t,vD,c= m ,ls=lsv[1],lw=2,label= Tor que de ca rg a, $T _L$ ) plt.legend(loc=0) plt.xlabel( Tie mpo [s] ) plt.grid(True) plt.subplot(2,1,1) plt.plot(t,vR,c= r ,ls=lsv[i],lw=2) plt.plot(t,vY,c= b ,ls=lsv[i],lw=2) plt.plot(t,vU,c= g ,ls=lsv[i],lw=2) plt.grid(True) plt.tight_layout() plt.show() '
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
Los resultados de la simulación se muestran en la figura 12.6.
307
308
12 Compilación, simulación y optimización con JModelica.org
Figura 12.6: Sistema de control de velocidad del motor de corriente continua
12.4.5 Sistema de control PID de procesos con tiempo muerto
En la sección 9.8.2 se modelo, mediante un diagrama de interconexión de componentes de bloques, el sistema de control PID de un proceso de segundo orden con tiempo muerto, y se simuló con OpenModelica. A partir de la versión 1.16, JModelica.org soporta la función delay, por lo que es posible la simulación de modelos con el desarrollado para este sistema de control. Al programa Modelica del sistema de control, mostrado en la figura 9.72, se le han eliminado las notas relacionadas con el despliegue del modelo en forma gráfica, reduciéndose a: mo d el SisControlPIDSOMTMjm Modelica.Blocks.Continuous.SecondOrder secondorder1 ( w = 2 , D = 2 ) ; Modelica.Blocks.Nonlinear.FixedDelay fixeddelay1 ( delayTime = 0 .5 ) ; Modelica .Blocks.M ath.Add add1; Modelica. Blocks.Con tinuous.L imPID PID ( k = 1. 25, Ti = 1.2, yMax = 50 , Td = 0. 3, wp = 0 .5 ) ; Modelica .Blocks.So urces.Ste p perturb acion ( height = 5 ,
309
12.4. Compilación de modelos a una FMU y su simulación
startTime = 15 ) ; Modelica .Blocks.S ources.Ste p valor_d eseado ( height startTime = 1 ) ; equation connect ( valor_deseado.y , PID.u_s) ; connect ( perturbacion.y , add1.u1) ; connect ( PID .y, add1. u2) ;
= 10 ,
connect fixeddelay1.y , PID.u_m) connect ( ( add1. y , secondorder1.u );; connect ( secondorder1.y , fixeddelay1.u) ; annotation( experiment ( StartTime = 0. 0, StopT ime = 30.0, Tolerance = 1 e - 00 6 ) ) ; en d SisControlPIDSOMTMjm;
El listado de instrucciones Python para la compilación, simulación y despliegue de las variables del sistema de control es: # Compil aci´ on y si mu la cion ´ del modelo SisCont rolPIDSO MTMjm.mo # inicial izaci´ on from pymodelica import compile_fmu from pyfmi import load_fmu import matpl otlib.pyplo t as plt # compil aci´ on a un a F MU fmu _na me = comp ile _fm u( "SisControlPIDSOMTMjm" , "SisControlPIDSOMTMjm.mo" ) cirel ec = load_ fmu(fmu_nam e) # simula ci´ on de l FM U simr es = cirel ec.simulate(final R = si mr es[ "valor_deseado.y" ] D = si mr es[ "perturbacion.y" ] Y = si mr es[ "fixeddelay1.y" ] U = si mr es[ "PID.y" ] t = si mr es[ "time" ]
_time =
30.0 )
# gr afi ´ cos de la s res pue sta s plt.figure(1) plt.plot(t,R,c= b ,lw=2,ls= -- ,label= $r(t)$ ) plt.plot(t,D,c= r ,lw=2,ls= -. ,label= $d(t)$ ) plt.plot(t,Y,c= g ,lw=2,ls= - ,label= $y(t)$ ) plt.plot(t,U,c= m ,lw=2,ls= : ,label= $u(t)$ ) pl t.axi s([0 ., 30 ., -1 ., 15 .]) plt.legend(loc=0) plt.ylabel( Varia bles [%] ) plt.xlabel( Tie mpo , $t$ [s] ) plt.grid(False) plt.tight_layout() plt.show() ' '
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
' '
310
12 Compilación, simulación y optimización con JModelica.org
Figura 12.7: Comportamiento del sistema de control PID
Las curvas de de respuesta del sistema ante un cambio escalón enfigura el valor deseado, seguido un cambio escalón de en control, la perturbación, se muestran en la 12.7, las cual se pueden comparar con las mostradas en la figura 9.73 obtenidas con OpenModelica.
12.5 Problemas de optimización Los problemas de optimización dinámica definidos con Optimica, se resuelven en forma predeterminada en JModelica.org, compilándolos a JMU y luego realizando la optimización.
12.5.1 Compilación del Modelo Optimica a JMU y optimización Las instrucciones Python para la solución del problema de optimización, son .. . # imp ort ar la fun ci´ on de com pil acio´n from pymodelica import compile_jmu
311
12.5. Problemas de optimización
from pyjmi import JMUModel .. . # co mp il ar el mo de lo a JM U prbopt=compile_jmu( "ModeloOptimica" , "ModeloOptimica.mop"
)
# ca rga de l mod elo optmo=JMUModel(prbopt) # sol uci on ´ de l pro ble ma de opt imi zacoi´ n optres=optmo.optimize() .. .
12.5.2 Control óptimo de tiempo mínimo En la sección 9.8.5 se resolvió el problema de llevar un sistema, que es un integrador doble, desde cualquier condición inicial hasta el srcen, en un tiempo mínimo, utilizando OpenModelica. En ese caso, se empleó la curva de conmutación para el control, determinada como solución del problema. Este mismo problema se resolverá ahora, como un problema de control óptimo (de tiempo mínimo), utilizando JModelica.org. El modelo Optimica del problema es optimi zation
Control Optimoj m(
objective = finalTime , startTime = 0.0, finalTime ( free =true ,min = 1,initialGuess = 10 ) ) // Co nt ro l opt ´ imo de tie mpo m´ ınimo Real x1 ( start = 0, fix ed = tr ue) ; Real x2 ( start = 2, fix ed = tr ue) ; input Real u ( free =true , mi n = - 1, ma x= 1 ) ; equation de r( x1 ) = x2 ; de r( x2 ) = u ; constraint x1 ( finalTime ) = 0; x2 ( finalTime ) = 0; en d ControlOptimojm;
La función de costo, es el tiempo total requerido para la trayectoria desde la condición inicial al srcen ( objective=finalTime) y se declara como una variable “libre” (finalTime(free=true,min=1,initialGuess=10)). El esfuerzo de control solo puede tomar valores entre -1 y 1, y las restricciones son x1(finalTime)=0 y x2(finalTime)=0 (el sistema debe para llegarsolucionar al srcen). el problema es El listado de instrucciones Phyton
312
12 Compilación, simulación y optimización con JModelica.org
# Co nt ro l opt ´ imo de tie mpo m´ ınimo from pymodelica import compile_jmu from pyjmi import JMUModel import matpl otlib.pyplo t as plt # co mp il ar y ca rg ar el mo de lo coptjmu=compile_jmu( "ControlOptimojm" , "ControlOptimojm.mop"
)
copt=JMUModel(coptjmu) # re so lv er el pr ob le ma de co nt ro loptimo ´ optres=copt.optimize() # result ados x1=optres[ x1 ] x2=optres[ x2 ] u=optres[ u ] t=optres[ time ] topt=optres[ finalTime Jt=topt[-1] '
'
'
'
'
'
'
'
'
'
]
# gr aficos ´ plt.figure(1) plt.subplot(1,2,1) plt.plot(x1,x2,lw=2) plt.xlabel( $x_1(t)$ ) plt.ylabel( $x_2(t)$ ) plt.xli m(-0.2, 2.2) '
'
'
'
plt.yli m(-1.7, 2.2) plt.grid(True) plt.subplot(2,2,2) plt.plot(t,x1,c= r ,lw=2,label= $x_1$ ) plt.plot(t,x2,c= g ,lw=2,label= $x_2$ ) plt.legend(loc=0) plt.xlabel( Tie mpo (s) ) plt.grid(True) plt.ylabel( $x_1(t) $, $x_2(t)$ ) plt.xlabel( Tie mpo (s) ) plt.subplot(2,2,4) plt.plot(t,u,c= m ,lw=2) plt.grid() plt.ylabel( u(t) ) plt.xlabel( Tie mpo (s) ) plt.tight_layout() plt.show() '
'
'
'
'
'
'
'
'
'
'
'
'
'
'
' '
'
'
'
# Va lo r de l ınd ´ ice de cos to print "Tie mpo min imo ( opt imo) =
" , Jt,
"s."
El movimiento en el plano de fase, la evolución de las variables y el esfuerzo
12.5. Problemas de optimización
313
Figura 12.8: Control óptimo - tiempo mínimo Figura 12.9: Sistema de control realimentado
de control requerido, se muestran en la figura 12.8 y el valor de la función de costo (tiempo mínimo para llegar al srcen), partiendo de las condiciones iniciales del ejemplo, es: Tiempo minimo (optimo) = 4.82832047953 s.
La respuesta obtenida con JModelica.org, resolviendo un problema de control óptimo de tiempo mínimo, se puede comparar con las obtenidas con OpenModelica para el mismo caso, utilizando la curva de conmutación óptima para el esfuerzo de control, mostradas en las figuras 9.80 y 9.81.
12.5.3 Optimización de los parámetros de un controlador PI En la figura 12.9, se muestra el diagrama de bloques general de un sistema de control realimentado.
314
12 Compilación, simulación y optimización con JModelica.org
En este, el proceso controlado está representado por la función de transferencia P(s) =
2 (10s + 1)(5s + 1)(2s + 1)
,
(12.1)
y el controlador (con un algoritmo de control proporcional e integral), por la función de transferencia C(s) = K p 1 + 1 . (12.2)
Ti s
Se desea obtener el conjunto de parámetros θ c = {K p , Ti } del controlador, que optimiza la integral del error absoluto, ante un cambio en el valor deseado (óptimos IAE para el servo control). La función de costo a optimizar, es entonces JIAE =
∞
0
|e(t )| dt ,
(12.3)
para un cambio ∆r. Se tomará, como estimación inicial de los parámetros del controlador,K p = 0,50 y Ti = 8,0 s. El modelo Modelica para simular el sistema de control, es mo d el SisControlcPIp3ordjm parameter Real K1 = 1; parameter Real K2 = 1; parameter Real K3 = 2; parameter Real T1 = 10 ; parameter Real T2 = 5; parameter Real T3 = 2; parameter Real Kp = 0.50; parameter Real Ti = 8.0; Real x1 ( start = 0, fix ed = tr ue) ; Real x2 ( start = 0, fix ed = tr ue) ; Real x3 ( start = 0, fix ed = tr ue) ; Real Ui ( start = 0, fix ed = tr ue) ; Real Jiae ( start = 0, fix ed = tr ue) ; Real R, Y, E, U, U p; Modelica .Blocks.So urces.Ste p step( height R equation // proce so T1 * de r( x1 ) = ( - x1 ) + K1 * U ; T2 * de r( x2 ) = ( - x2 ) + K2 * x1 ; T3 * de r( x3 ) = ( - x3 ) + K3 * x2 ; Y = x3 ; // contr ol
= 1, start Time = 1 ) ;
315
12.5. Problemas de optimización
R = stepR.y; E = R - Y; Up = Kp * E ; de r( Ui ) = Kp * E / T i; U = Up + Ui ; //in dic e de cos to de r( Jiae ) = ab s( E ) ; en d SisControlcPIp3ordjm;
Con los parámetros iniciales del controlador, el valor de la funcional de costo es 15,69. Los parámetros óptimos del controlador, se determinarán con JModelica.org utilizando el algoritmo de optimización simplex Nelder-Mead (Lagarias et al., 1998). Para esto, debe definirse la evaluación de la funcional de costo como una función Python y guardarla en un archivo con el mismo nombre que esta. En este caso, las instrucciones para evaluar la funcional de costo, son
JIAE =
# fu nc io na l de co st o IA E de f iaefcostcPIp3ord(x): from pyfmi import load_fmu # ca rg ar el mo de lo mo de l = l oa d _ f m u (../SisControlcPIp3ordjm.fmu '
'
)
# nu ev os pa r´ ametros mo de l .se t ( Kp ,x[0]) mo de l .se t ( Ti ,x[1]) '
'
'
'
# sim ula ci´ on de l mod elo simr es = mode l.simulate(start_
time=0. 0, final_ time =
200.0 )
# res ult ado s de la sim ula ci´ on ji ae = sim res[ "Jiae" ] ob j = ma x(jiae) return ob j
La carga del modelo debe escribirse en la forma mo d el
= l oa d _ f mu (../NombreModelo.fmu '
'
)
para que los resultados intermedios, sean almacenados en un subdirectorio del directorio de trabajo. El listado de optimización, es:instrucciones Python para compilar el modelo a FMU y realizar la
316
12 Compilación, simulación y optimización con JModelica.org
# Optimiz aci´ on de l con tro l PI (cPIp3 ord) from pyfmi import load_fmu from pyjmi.optimization import df o import matpl otlib.pyplo t as plt # pa r´ ametro s inici ales xic=[0 .50, 8.0 ] # cot xlb=[ # cot xub=[
as eri ore s 0.1,inf0.1] as sup eri ore s 100, 100]
# optimiz aci´ on xopt,fopt, nite r ,nfevals ,opsoltime = dfo.fmin( "iaefcostcPIp3ord.py" ,xstart=xic,lb=xlb,ub=xub, alg=1,nbr_ cores=2,x_to l=1e-3, f_to l=1e-2) print
'
Par´ame tro s opt ´ imo s = , xo pt '
En el llamado a la función de optimización dfo.fmin3 , se tienen las siguientes variables y parámetros de control: 1. Argumentos de entrada (con los valores presestablecidos entre paréntesis) • nombre del archivo de la función objetivo, • xstart - vector estimación inicial de los parámetros, • • • • • • • • • • •
lb - ( =None) vector de cotas inferiores de los parámetros, ub - ( =None) vector de cotas superiores de los parámetros, alg - ( =None) algoritmo de optimización (1
- Nelder-Mead simplex),
nbr_cores - (=None) número de núcleos del procesador (solo si se usa
el método Nelder-Mead), x_tol - ( =1e-06) criterio de convergencia en los parámetros, f_tol - ( =1e-6) criterio de convergencia en la función de costo, max_iters - (=1000), max_fevals - ( 10000), disp - ( =True), debug - ( =False), plot - ( =False),
3 Mayor información sobre los parámetros del llamado, se puede obtener con la ayuda, help(dfo.fmin) .
In[hh]
12.5. Problemas de optimización
317
Figura 12.10: Comportamiento del sistema de control inicial y del optimizado • plot_conv - (=False). 2. Resultados • xopt - vector de parámetros óptimos, • fopt - valor mínimo de la función de costo, • niter - número de iteraciones efectuadas, • nfevals - número de evaluaciones de la función de costo hechas, • opsoltime - tiempo de ejecución de la optimización. De la optimización se obtiene que los parámetros óptimos son K po = 1,15 y Tio = o = 10,74. 18,30 s y el valor mínimo de la funcional de costo es JIAE En la figura 12.10 se muestra el comportamiento del sistema de control PI del proceso orden,decon losintegral parámetros iniciales del controlador y con los optimizadosde contercer el criterio error JIAE , para un cambio en el valor deseado.
318
12 Compilación, simulación y optimización con JModelica.org
12.6 Bibliografía Lagarias, J. C., Reeds, J. A., Wright, M. H., y Wright, P. E. (1998). Convergence propieties of the Nelder-Mead simplex algorithm in low dimensions. SIAM Journal on Optimization, 9:112–147. Modelon AB (2014). JModelica.org User Guide: Version 1.16. Lund, Sweden.
13 Visualizaci´on, simulaci´on y an´alisis con PySimulator Se presentará aquí el uso del PySimulator1 (Pfeiffer et al., 2012) desarrollado por el German Aeroespace Center (DLR)2 , Linder Höhe, Cologne, Alemania, como una alternativa para mostrar los resultados de las simulaciones hechas con el OMEdit y el OMS, así como para simular modelos desarrollados y exportados por ellos como FMU. El PySimulator está disponible solo para Windows.
13.1 Introducción El PySimulator, desarrollado en Phyton, provee un ambiente gráfico para la simulación y análisis de los modelos Modelica. El programa de instalación del PySimulator, instala la distribución de Python Phyton(x,y)3 si no lo está ya, y todas las módulos y paquetes adicionales necesarios. La ventana principal del PySimulator se muestra en la figura 13.1. Esta incluye los menú desplegables (File, Simulate, Plugins, Help) y una barra de iconos para la apertura de archivos (Open Model in OpenModelica, ... Dymola, ... SimulationX, ... FMUSimulator, ... FMUSimulatorDLR, Open ResultFile). Al lado izquierdo de la ventana principal, está el “navegador de variables”, al centro el despliegue de los gráficos y al lado derecho, una columna de iconos que permite abrir nuevas “pestañas” de gráficos y adicionar (o eliminar) a cada una de ellas, filas y columnas de “ventanas gráficas”, según se desee. En la figura 13.2 se 1 https://github.com/PySimulator/PySimulator/ 2 http://www.dlr.de/dlr/en/desktopdefault.aspx/tabid-10002/ 3 https://code.google.com/p/pythonxy/
319
320
13 Visualización, simulación y análisis con PySimulator
Figura 13.1: PySimulator - Ventana principal muestra la ventana gráfica con cuatro sub gráficos, para los cuales se pueden seleccionar en el navegador de variables, las que se desee desplegar en cada uno de ellos. El PySimulator se integra muy bien con OpenModelica, sin embargo, pueden presentarse problemas entre la instalación del PySimulator y la de JModelica.org, debido a conflictos entre las instalaciones Python que hace cada uno de ellos.
13.2 Importación de un archivo de resultados En el OMShell (OMS), utilizando la instrucción plot() se pueden desplegar las variables resultado de una simulación en función del tiempo, una o varias a la vez, en una ventana gráfica. Además, con la instrucción plotParametric() se puede mostrar una variable en función de otra (plano de fase). Por su parte, en el área de vista de resultados (“Ploting”) del OMEdit, se pueden tener múltiples gráficos en función del tiempo (X(t)) y planos de fase (Y(X)), cada uno su propia “ventana”, identificados por una posible, que todosenellos se muestren formando un mosaico en pestaña. una solaTambién ventana. es Las dimensio-
13.2. Importación de un archiv o de resultados
321
Figura 13.2: PySimulator - Ventana con múltiples sub gráficos nes y la distribución de cada figura en el mosaico, se puede ajustar libremente. Sin embargo, cada ventana en este mosaico conserva su barra de opciones. Los resultados de la simulación del modelo NombreModelo.mo con el OMShell o el OMEdit, se almacenan en el archivoNombreModelo_res.mat, el cual se puede abrir en el PySimulator con la opción del menú [File][Open Result File], para su despliegue gráfico. Como un ejemplo, en la figura 13.3 se muestra el despliegue gráfico con PySimulator, de los resultados de la simulación del circuito eléctrico de la sección 8.3.7. Otro ejemplo, es la simulación del sistema de control PID de la sección 9.8.2. Se ha importado el archivo de resultados SisControl05PIDSOMTM_res.mat. En la ventana principal del PySimulator de la figura 13.4 se muestra a la derecha el navegador de variables, para seleccionar las que se desea mostrar, y en la pantalla gráfica el valor deseado (valor_deseado.y), la variable controlada (fixeddelay.y), la perturbación (perturbacion.y) y la salida del controlador (PID.y). Esta misma información, pero desplegada en dos gráficos diferentes en una columna, muestradeenresultados la figura .mat 13.5. son archivos de datos. Lo único que PySimulator Losse archivos
322
13 Visualización, simulación y análisis con PySimulator
Figura 13.3: PySimulator - Variables del circuito eléctrico
Figura 13.4: Variables del sistema de control PID en el PySimulator
13.3. Importación de modelos FMU
323
Figura 13.5: Comportamiento del sistema de control PID
puede hacer con ellos, es desplegarlos en las diferentes ventanas gráficas.
13.3 Importación de modelos FMU En la sección 8.3.8, se indicó que el OMEdit puede exportar los modelos como FMU. Estos pueden ser a su vez importados en el PySimulator con la opción del menú [File][Open Model][FMUSimulatorDLR...]4 o pulsando el icono “FMU DLR”, con lo cual se abre la ventana para la selección del archivo a importar. Una vez abierto el modelo, este debe ser simulado con la opción del menú [Simulate], que abre la ventana para el control de la simulación. En esta se selecciona los tiempos (inicial, final) de la simulación, el algoritmo de solución y su control, y otras opciones. La simulación se efectúa presionado el “botón” [Run]. Una vez terminada esta, la ventana de control se debe cerrar con [Close], para proceder al despliegue gráfico de los resultados. 4 Se recomienda usar esta opción, en vez de FMUSimulator
324
13 Visualización, simulación y análisis con PySimulator
Figura 13.6: Llenado de un tanque por gravedad
Sistema hidráulico Considérese el diagrama de simulación de un sistema de llenado por gravedad de un tanque, OMEdit,enelelcual se muestra en la (agua), figura 13.6. Los elaborado parámetroscon incluidos modelo son: fluido tanque ( HT = 2,5 m, área transversal A = 2,0 m 2 , inicialmente vacío H 0 = 0, diámetro la conexión de la tubería d = 0,50 m), tubería de llenado (longitud L = 100 m, diámetro d = 0,50 m, diferencia de elevación entre sus extremos∆Hab = 20 m), válvula de llenado (caudal nominal Q vmn = 6,0 kgs −1 con una caída de presión ∆Pn = 100000 Pa). Para el llenado del tanque, en el instantet = 10 s se inicia la apertura de la válvula de entrada, a una velocidad tal que se tarden 60 s para que esté completamente abierta, se esperan 300 s (5 minutos), y luego se cierra la válvula, un poco más despacio, de manera que se tarden 120 s en cerrarla. Una vez desarrollado el modelo en el OMEdit, este se exporta como un FMU y luego se importa dentro del FMUSimulatorDLR en el PySimulator. Para ejecutar la simulación en el PySimulator, se definen los tiempos de simulación, como se muestra en la figura 13.7 y se efectúa la misma presionado [Run]. En esta ventana se muestra también el avance de la simulación e información sobre la misma. Una vez finalizada, se puede cerrar la ventana de control. Utilizando eldenavegador de gráficas. variables, se seleccionar las que se dese desplegar y la organización las ventanas
13.3. Importación de modelos FMU
325
Figura 13.7: Ventana de control de la simulación En la figura 13.8 se muestra el nivel en el tanque, el perfil de apertura de la válvula y el caudal por ella. Una facilidad al usar PySimulator para simular un modelo precompilado como FMU, es que se pueden cambiar los parámetros que se desee del modelo y correr la simulación nuevamente. Por ejemplo, tal como se muestra en la figura 13.9, se puede cambiar el perfil de apertura y cierre de la válvula de llenado y ver como afecta esto al nivel del fluido en el tanque. Es posible cambiar cualquiera de los parámetros del tanque, la tubería de llenado oestudio la válvula, y volver a ejecutar la simulación. Como el modelo está compilado, el de casos puede realizarse en forma expedita.
326
13 Visualización, simulación y análisis con PySimulator
Figura 13.8: Variación del nivel y el caudal de llenado
13.4 Bibliografía Pfeiffer, A., Hellerer, M., Hartweg, S., Otter, M., y Reiner, M. (2012). PySimulator A Simulation and Analysis Environment in Phyton with Plugin Infraestructure. En 9th International Medelica Conference, páginas 523–526. setiembre 3-5, Munich, Germany.
327
13.4. Bibliografía
Figura 13.9: Cambio de parámetros del sistema
14 Compartiendo modelos Modelica por medio de la Interfaz de modelos funcionales (FMI) Se ha indicado antes que el editor OMEdit de OpenModelica, permite exportar e importar modelos FMU, así como que PySimulator también los puede importar. Por su parte, el editor del SystemModeler de Wolfram, el cual se describe en los capítulos 15 y 16, permite exportar e importar FMU. Se pretende aquí dar más detalles sobre la norma “ Functional Mockup Interface” 2.01 (“Interfaz de modelos funcionales”), utilizada para compartir modelos entre plataformas de simulación digital y verificar la creación de las FMU por parte de OpenModelica y JModelica.org.
14.1 Introducción El desarrollo de la FMI, fue iniciado por Daimler AG, con el fin de mejorar el intercambio de modelos de simulación entre los proveedores y los fabricantes. El srcen de esta norma se remonta al proyecto europeo ITEA 2 MODELISAR, desarrollado entre el año 2008 y el año 2011, en el que participaron 29 compañías, principalmente de la industria automovilística. De este proyecto surgió la interfaz estándar abierta FMI, como un medio conveniente para el intercambio de modelos entre ambientes de simulación diferentes, incluyendo herramientas Modelica y no Modelica, de los socios del proyecto. La versión 1.0 de la norma FMI, fue publicada en enero de 2010. En esta primera versión, la definición de la FMI para compartir los modelos estaba separada de la FMI para cosimulación (MODELISAR Consortium, 2010). 1 https://www.fmi-standard.org/start
329
330
14 Compartiendo modelos Modelica por medio de la FMI
Este desarrollo inicial fue tomado como un proyecto abierto, por la Modelica Association, para continuar su desarrollo junto con los miembros de MODELISAR y otros participantes. La versión 2.0 (actual) de la norma, fue publicada en julio de 2014. En esta se define tanto la FMI para compartir los modelos dinámicos, como la FMI para su cosimulación (Modelica Association, 2014). Una lista de las más de 70 herramientas de simulación que soportan, o tienen programado dar soporte, a la FMI (versiones 1.0 o 2.0) se encuentra en la dirección electrónica https://www.fmi-standard.org/tools . De estas, varias han pasado la prueba cruzada de importar y exportar, entre las que se encuentran : • Amesim, Siemens PLM Software2 . Ambiente de simulación para el análisis de sistemas mecatrónicos multidomio. • CATIA, Dessault Systèmes3 . Plataforma para el diseño de productos. • Dymola (“Dynamic Modeling Laboratory”), Dessault Systèmes4 . Ambiente Modelica para modelado y simulación. • FMI Toobox for MATLAB/Simulink, Modelon 5 . Enlaza MATLAB/Simulink con otras herramientas de simulación. • JModelica.org, Modelon6 . Ambiente Modelica “open source”. • Silver, QTronic7 . Desarrollo de controles para la industria automovilística. • SimulationX, ITI8 . Plataforma Modelica. La interfaz FMI, es una herramienta estándar que soporta el intercambio y la cosimulación de modelos dinámicos, utilizando una combinación de archivos XML y de código C compilado. Un componente que se adhiere al estándar FMI es una FMU (“Functional Mockup Unit”). La interfaz separa la descripción de la información de las variables en la FMU, en un archivo XML, de la funcionalidad del modelo, en código C o binario. 2 http://www.plm.automation.siemens.com/en_us/products/lms/imagine-lab/index.shtml 3 http://www.3ds.com/products-services/catia/ 4 http://www.3ds.com/products-services/catia/products/dymola 5 http://www.modelon.com/products/fmi-toolbox-for-matlab 6 http://www.jmodelica.org/ 7 http://www.qtronic.com/en/silver.html 8 http://www.itisim.com/simulationx/system-simulation/introduction-to-simulationx/
14.1. Introducción
331
Figura 14.1: FMI para intercambio de modelos
Figura 14.2: FMI para cosimulación
Una FMU es un archivo compactado (*.fmu), que contiene el archivo XML de la descripción del modelo (descripcionModelo.xml ) y la implementación del modelo en código fuente o binario (modelo.dll). También puede incluir información adicional. La relación entre la FMU y la herramienta de simulación, en el caso de la FMI para el intercambio de modelos, se ilustra en la figura 14.1. La FMU para compartir el modelo incluye la importación y exportación de modelos con bloques causales, ecuaciones diferenciales, algebraicas y discretas, con eventos temporales y de estado. La comunicación entre la FMU y el algoritmo de solución incluye: información para la inicialización, las variables derivadas, señales de entrada y salida, variables al interior y de los de eventos. El ambiente modelado genera código C del modelo de un sistema dinámico, que pueda ser utilizado por otro ambiente de modelado y simulación. Si el código C generado describe un sistema continuo, este es resuelto con los algoritmos de solución del ambiente en que es utilizado. En la FMI para cosimulación, la relación ente la FMU y la herramienta de simulación, se ilustra en la figura 14.2. En las FMU para una cosimulación, en adición a la información del modelo, la FMU incluye el algoritmo de solución, denominado como el “esclavo” de una herramienta “maestra”, que es el ambiente para la cosimulación. La FMU para cosimulación puede utilizarse para crear un archivo ejecutable (maestro), que se enlaza con una biblioteca DLL (esclavo), contiendo al modelo y el algoritmo de solución. En este caso, la interfaz acopla las herramientas de simulación en un ambiente de cosimulación. El intercambio de información entre los subsistemas, se restringe a puntos discretos de comunicación. En el intervalo entre estos, los subsistemas son resueltos en controla forma independiente por la cadaentre rutinalosdesubsistemas solución individual. El algoritmo maestro el flujo de información y la sincronización
332
14 Compartiendo modelos Modelica por medio de la FMI
de los algoritmos de solución esclavos Una FMU puede implementar incluso ambas interfaces, intercambio de modelos y cosimulación. Dado que el desarrollo de la FMI fue iniciado por Daimler, no es de extrañar, que 9. a esta se hayan adherido ya la mayoría de los principales fabricantes de automóviles El uso de la interfaz, incrementa la flexibilidad para el intercambio de modelos entre herramientas de simulación diferentes, reduce el esfuerzo para el desarrollo de modelos reutilizables y permite compartir modelos entre compañías, con un esfuerzo de integración menor.
14.2 Exportando e importando FMU Se utilizarán algunos sistemas de ejemplo, para mostrar el uso de la norma FMI, en el intercambio de modelos dinámicos, entre plataformas de simulación Modelica. Se supondrá que dos personas,usuarias fanáticas de Modelica, desean comparar los resultados de algunos modelos que han desarrollado, sin tener que proporcionarse entre ellas, el archivo fuente del modelo. Sin embargo, una de ellas solo utiliza OpenModelica (UsoOmo), mientras que la otra trabaja solo con JModelica.org (UsoJmo).
14.2.1 De OpenModelica a JModelica.org En OpenModelica/OMEdit - exportar FMU Considérese el diagrama de interconexión del circuito eléctrico mostrado en la figura 14.3, el cual se ha desarrollado con el OMEdit de OpenModelica. Este modelo se ha guardado en el archivo CircuitoElectricoDiagrama.mo. Los parámetros del modelo se indican en el diagrama de interconexión. El modelo es simulado en el OMEdit. En el instante t = 0,05 s, la tensión de la fuente stepvoltage1 pasa de 0 V a 10 V. El comportamiento de la tensión V( c ) a través del capacitor1 y la corriente (IL ) por el inductor1 para 0 ≤ t ≤ 1,4 s, se muestra en la figura 14.4. En esta, también se muestra el plano de fase de la tensión Vc vs la corriente IL ., Usando la opción [FMI] [Export FMU] del menú del OMEdit, se crea (“exporta”) la FMU del modelo, al archivoCircuitoElectricoDiagrama.fmu. Para compartir el modelo, UsoOmo envía por correo electrónico este archivo (.fmu) a UsoJmo. 9 BMW, Mini, Daimler, Ford, Chrysler, Fiat, GM, Jaguar Land Rover, Nissan, Renault, Toyota, Volkswagen, Audi, Hyundai, KIA, Honda, Isuzu, Suzuki, Peugeot Citroën, TATA y Volvo, a marzo de 2014.
14.2. Exportando e importando FMU
Figura 14.3: Diagrama de interconexión del circuito eléctrico
Figura 14.4: OpenModelica/OMEdit- Comportamiento del circuito eléctrico
333
334
14 Compartiendo modelos Modelica por medio de la FMI
En JModelica.org/Python - importar FMU
Ahora, UsoJmo ha recibido el archivo fmu que le envió UsoOmo. La FMU se importa y simula en Python, utilizando el paquete PyFMI de JModelica.org, con las instrucciones: .. . nombre Modelo = load_ fmu( nombreFMU.fmu ) resul tsim = nombreM odelo.simula te(final_tim .. . '
'
e = xx.xx)
Para simular el circuito eléctrico con JModelica.org, se debe importar la FMU, ejecutar la simulación, obtener las variables de interés y graficar su comportamiento. Para esto, se utilizará la interfaz pylab de Python, y se ejecutará el programa # Simula ci´ on de un a FM U (Circu itoE lect rico Diag rama) # inicial izaci´ on from pyfmi import load_fmu import matpl otlib.pyplo t as plt # ca rg ar el FMU cirele cdia = load_ fmu("CircuitoElectricoDiagrama.fmu" ) # simula ci´ on de l FM U simr es = cirele cdia.simulat e(final_time=1.40 ) vc = si mr es[ "capacitor1.v" ] il = si mr es[ "inductor1.i" ] t = si mr es[ "time" ] # gr afi ´ cos de la s res pue sta s plt.figure(1) plt.subplot(2,2,1) plt.plot(t,vc,c= r ,lw=2) plt.ylabel( r $V_c(t) [V]$ ) plt.xlabel( Tie mpo , t [s] ) plt.grid(False) plt.subplot(2,2,3) plt.plot(t,il,c= b ,lw=2) plt.ylabel( r $i _L(t) $ [A] ) plt.xlabel( Tie mpo , t [s] ) plt.grid(False) plt.subplot(1,2,2) plt.plot(il,vc,c= g ,lw=2) plt.ylabel( r $V_c(t) [V]$ ) plt.xlabel( r $i _L(t) $ [A] ) plt.grid(True) plt.tight_layout() '
'
'
'
'
'
'
'
'
'
'
'
'
plt.show()
'
'
'
'
'
335
14.2. Exportando e importando FMU
Figura 14.5: JModelica.org/Python- Comportamiento del circuito eléctrico
gráficas generadas, se muestran en la figura Estas con Las las obtenidas con OpenModelica mostradas en la14.5. figura 14.4.se pueden comparar En el desarrollo del programa Phyton anterior, se supusieron conocidos los nombres de las variables de interés (capacitor1.v, inductor1.i). En el caso en que no se conozcan los nombres asignados a las variables en el modelo, estos se pueden obtener con las instrucciones In [x1]: In [x2]:
varli st = cirele cdia.get_model_ varli st.items()
variable()
El “diccionario” de variables obtenido, para el circuito eléctrico del ejemplo, se lista en la figura 14.6.
14.2.2 De JModelica.org a OpenModelica Se desea ahora analizar con JModelica.org el comportamiento y la estabilidad de un ecosistema, en Lotka-Volterra el cual hay dos para especies que compiteninterespecífica por el mismo recurso. El modelo una competencia entre dos pobla-
336
14 Compartiendo modelos Modelica por medio de la FMI
Figura 14.6: JModelica.org/Python- Lista de variables del modelo
337
14.2. Exportando e importando FMU
ciones, es: Poblac1 (t ) a12 Poblac2 (t ) dPoblac1 (t ) = r1 Poblac1 (t ) 1 − , − dt K1 K1 Poblac2 (t ) a21 Poblac1 (t ) dPoblac2 (t ) = r2 Poblac2 (t ) 1 − − , K2 K2 dt
(14.1) (14.2)
donde: • Poblac1 , Poblac2 - poblaciones de las especies, • r1 , r 2 - tasas de crecimiento, • K1 , K2 - población máxima de las especies que soporta el ecosistema, consideradas en forma independiente, • a12, a 21 - coeficientes de competencia. Los datos para el análisis son: • a12 = 0,40 ( 1,0), a 21 = 0,25 ( 2,5), • K1 = 200, K2 = 100, • Poblacion01 = 25, Poblacion02 = 75, • r1 = 1,25, r 2 = 2,75. En JModelica.org/Python - simular y compilar a FMU
El modelo Modelica, desarrollado con un editor de texto es: m od el LotkaVolterraCompetencia "Model o Lotk a- Volte rra para compet encia interes pec´ ıfica" parameter Real r1 = 1.25; parameter Real r2 = 2.75; parameter Real K1 = 200.; parameter Real K2 = 100.; parameter Real a1 2 = 0.40; parameter Real a2 1 = 0.25; Real Poblac1 ( start = 25., fixe d = tr ue) ; Real Poblac2 ( start = 75., fixe d = tr ue) ; equation de r( Poblac1 ) = r1 * Poblac1 * ( 1 - Poblac1/K1 - a1 2* Poblac2/K1 ) ; de r( Poblac2 ) = r2 * Poblac2 * ( 1 - Poblac2/K2 - a2 1* Poblac1/K2 ) ; annotation( experiment ( StartTime = 0, StopT ime = 16 , Tolerance = 1 e - 06, Inter val = 0.032 ) ) ; en d LotkaVolterraCompetencia;
338
14 Compartiendo modelos Modelica por medio de la FMI
El modelo se ha guardado en el archivo LotkaVolterraCompetencia.mo. El programa Python para compilar y simular con JModelica.org, el comportamiento de las dos poblaciones en competencia, es: # Compil aci´ on y si mu la cion(LoktaVolterraCompetencia) ´ # inicial izaci´ on from pymodelica import compile_fmu from pyfmi import load_fmu import matpl otlib.pyplo t as plt # car gar mod elo y com pil ar fmu_n ame = compil e_fmu("LotkaVolterraCompetencia" , "LotkaVolterraCompetencia.mo" ) LVCom pet = load_ fmu(fmu_nam e) # simula ci´ on de l FM U simr es = LVCom pet.simulat e(final_time=16) Po 1 = sim res[ "Poblac1" ] Po 2 = sim res[ "Poblac2" ] t = si mr es[ "time" ] # gr afi ´ cos de la s res pue sta s plt.figure(1) plt.subplot(1,2,1) pl t.plo t(t, Po 1, c= b , ls = - , lw= 2, lab el=u Poblaci´o n 1 ) pl t.plo t(t, Po 2, c= r , ls = - , lw= 2, lab el=u Poblaci´o n 2 ) plt.legend(loc=0) plt.ylabel( u N umer ´ o de indiv iduos ) plt.xlabel( Tiempo ) plt.grid(False) plt.subplot(1,2,2) pl t.plo t(Po 1, Po 2, c= g , l s= - , lw=2 ) plt.ylabel( Pobla cion 2 ) plt.xlabel( Pobla cion 1 ) plt.grid(False) plt.tight_layout() plt.show() '
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
Se realizan dos simulaciones, partiendo de la misma condición inicial: Poblacion01 = 25 y Poblacion02 = 75, mostradas en la figura 14.7: 1. Si los coeficientes de competencia son a12 = 0,40 y a21 = 0, 25, las poblaciones alcanzan un punto de “convivencia” estable: Poblacion1 → 178y Poblacion2 → 56 (líneas continuas en la figura 14.7). 2. Sin embargo, si los coeficientes de competencia se cambian a
a12 = 1 ,0
y
a21 = 2 , 5, el ecosistema se torna inestable: Poblacion1 → 200 (máxima) y Poblacion2 → 0, se extingue (líneas a trazos en la figura 14.7).
339
14.2. Exportando e importando FMU
Figura 14.7: JModelica.org/Python- Comportamiento de los especies en competencia Para que el ecosistema tenga un punto de equilibrio estable, con las dos especies conviviendo, se requiere que: K1 <
K2 a21
y K2 <
K1 . a12
(14.3)
UsoJmo le envía ahora a UsoOmo el archivo LotkaVolterraCompetencia.fmu , junto con los resultados que obtuvo.
En OpenModelica/OMEdit - importar FMU
Ahora, UsoOmo ha recibido el archivo fmu que le envió UsoJmo. Este es importado en el OMEdit de OpenModelica, con la opción del menú [FMI] [Import FMU], que despliega un cuadro de diálogo para su selección. La FMU es importada con el nombre LotkaVolterraCompetencia_me_FMU. Los resultados la simulación, con los parámetros correspondientes al punto de equilibrio estable, sedemuestran en la figura 14.8.
340
14 Compartiendo modelos Modelica por medio de la FMI
Figura 14.8: OpenModelica/OMEdit- Comportamiento de las especies en competencia
14.3 Verificación de las compilaciones a FMU En adición a los ejemplos utilizados en las secciones anteriores, para ilustrar los procedimientos para la exportación e importación de FMU, con OpenModelica y JModelica.org, se verificó el funcionamiento de las FMU creadas por estos dos entornos, de los modelos Modelica desarrollados en el capítulo 9.
14.3.1 FMU generadas por OpenModelica OpenModelica permite exportar las FMU según la norma FMI versión 1.0 o la 2.0. Cuál utiliza, se selecciona con la opción del menú [Tools] [Options] [FMI] Export Version: (1.0, 2.0). Primero se simularon los modelos con el OMEdit y se exportaron a FMU utilizando FMI 2.0. Luego, estas FMU se importaron en el mismo OMEdit, para verificar su funcionamiento y comparar los resultados. los siguientes modelos, la importación de la FMU no presentó ningún error y losPara resultados de las dos simulaciones fueron idénticos:
14.3. Verificación de las compilaciones a FMU
341
• Sistemas eléctricos – SisElec01_e.mo, modelado utilizando ecuaciones, uso de la biblioteca Modelica.SIunits. – SisElec01_c.mo, modelado utilizando la ecuación connect, uso de la biblioteca Modelica.Electrical.Analog. – SisElec01_o.m, modelado utilizando un diagrama de interconexión, uso de la biblioteca Modelica.Electrical.Analog y la biblioteca Modelica.Blocks.Continuos. – SisElec02_e.mo, modelado utilizando ecuaciones, uso de la biblioteca Modelica.SIunits. – SisElec02_o.mo, modelado utilizando un diagrama de interconexión, uso de la biblioteca Modelica.Electrical.Analog.
• Sistemas mecánicos – Sismec01_o.mo, modelado utilizando un diagrama de interconexión, uso de la biblioteca Modelica.Mechanics.Translational. – Sismec01_c.mo, modelado utilizando la ecuación connect, uso de la biblioteca Modelica.Mechanics.Translational. – Sismec03_o.mo, modelado utilizando un diagrama de interconexión,
uso de la biblioteca Modelica.Mechanics.Rotational. – SisMec01_ext.mo, modelado utilizando ecuaciones, uso de la biblioteca Modelica.SIunits. – SisMec04MaqDesb.mo, modelado utilizando ecuaciones. – DampedPendulum.mo, modelado utilizando ecuaciones, uso de la biblioteca Modelica.Constants. • Sistemas hidráulicos – – – –
SisHidra01_e.mo, modelado utilizando ecuaciones. SisHidra02_e.mo, modelado utilizando ecuaciones. SisHidra04_e.mo, modelado utilizando ecuaciones.
Esfera_en.mo, modelado utilizando ecuaciones, uso de la biblioteca Modelica.Constants. – Hidra_3T4Vcydamb.mo, modelado utilizando un diagrama de interco-
nexión, de las bibliotecas Modelica.Fluid.Vessels, .Pipes, .Valves, .Sourcesuso y Modelica.Blocks.Math, .Sources
342
14 Compartiendo modelos Modelica por medio de la FMI
– SisHidra2T1pL.mo, modelado utilizando un diagrama de interconexión, uso de las bibliotecas Modelica.Fluid.Pipes, .Vessels, .System, .Sources, .Valves
• Sistemas térmicos – Sistermic01.mo, modelado utilizando un diagrama de interconexión, uso de la biblioteca Modelica.Thermal.HeatTransfer y la biblioteca Modelica.Block.Sources.
• Otros modelos – – – –
Epidemia.mo, modelado utilizando ecuaciones. LotkaVolterra.mo,
modelado utilizando ecuaciones.
LotkaVolterraCompetencia.mo, modelado utilizando ecuaciones.
Poblacion_cr.mo, modelado utilizando un diagrama de interconexión, uso de la biblioteca Modelica.Blocks.Math y las bibliotecas SystemDynamics.Auxiliary, .Levels, .Rates, .Sources. – Epidemia_bsd.mo, modelado utilizando un diagrama de interconexión, uso de componentes de varias bibliotecas en la biblioteca SystemDynamics.
• Sistemas de control – SisControlPI2t.mo, modelado utilizando ecuaciones, uso de la biblioteca Modelica.Blocks.Sources. – SistemaControlPIMotorDCn.mo, modelado utilizando diagrama de interconexión, uso de las bibliotecas Modelica.Electrical.Analog, Modelica.Mechanics.Rotational, Modelica.Blocks.Math y .Nonlinear.
• Sistemas heterogéneos – SisElc03MotorDCht.mo, modelado utilizando un diagrama de interconexión, uso de componentes de las bibliotecas Modelica.Electrical, Modelica.Mechanics, Modelica.Thermal y Modelica.Blocks.
Sin embargo, los resultados obtenidos con las FMU importadas de los siguientes modelos, no concordaron con los obtenidos srcinalmente: • RectificadorOndaCompleta.mo, modelado utilizando un diagrama de interconexión, uso de la biblioteca Modelica.Electrical.Analog y yladiscretos. biblioteca Modelica.Blocks.Sources. Este combina componentes continuos
14.3. Verificación de las compilaciones a FMU
343
• TestR.mo, modelado mediante un diagrama de interconexión, uso de la biblioteca Modelica.Electrical.Analog y Modelica.Thermal.HeatTransfer. • SisControlPIDSOMTM.mo, modelado mediante diagrama de interconexión, uso de las bibliotecas Modelica.Blocks.Continuos, .Nonlinear, .Math y .Sources. Incluye un tiempo muerto. Como prueba adicional, también se exportaron los modelos que cuyas simulaciones con la FMU no dieron los mismos resultados, haciendo uso de la FMI 1.0. Sin embargo, las diferencias en los resultados persistieron. Como el manual de la versión 1.9.3 de OpenModelica, indica que la importación de las FMU es todavía un “prototipo”, se verificó el comportamiento de las FMU generadas con OpenModelica, utilizando JModelica.org, con el fin de ver si era posible determinar, si el problema se debía a la exportación o a la importación de las FMU con OpenModelica. Los resultados no fueron concluyentes, ya que SisControlPIDSOMTM.fmu se simuló sin problemas y los resultados fueron correctos, RectificadorOndaCompleta.fmu se simuló, pero los resultados no fueron correctos (coincidieron con los mostrados por esta FMU importada en OMEdit), y TestR.fmu no pudo ser importada en JModelica.org.
14.3.2 FMU generadas por JModelica.org Se verificará ahora la funcionalidad deno lasexportó FMU exportadas por JModelica.org, y en particular el de las que OpenModelica correctamente. Nótese que JModelica.org siempre compila primero el modelo Modelica a FMU y luego esta la utiliza para realizar la simulación. Por lo tanto, si la simulación se ejecuta sin errores, la FMU funciona correctamente por lo menos dentro de JModelica.org. Para este análisis, como se indicó, se obtendrán las FMU varios modelos incluyendo aquellos para los cuales, las exportadas por OpenModelica no funcionaron correctamente. Dos de estos modelos ya fueron simulados con JModelica.org en la sección 12.4. El SisElec01_o.mo (SisElec01jm_o.mo)yel SisControlPIMotorDCn.mo (SisControlPIModordc_jm.mo ). Los siguientes modelos fueron compilados a FMU y simulados con JModelica.org. Luego esta FMU fue importada en el OMEdit de OpenModelica y simulada, lo cual se realizó sin errores y los resultados fueron coincidentes: • SisElec01_o.m, • RectificadorOndaCompleta.mo,
344
14 Compartiendo modelos Modelica por medio de la FMI
• SisMec01_o.mo, • SisMec03_o.mo, • TestR.mo, • SistemaControlPIMotorDCn.mo. • SisControlPIDSOMTM.mo. La biblioteca Modelica.Fluid (Modelica.Media) solo está soportada en forma parcial en JModelica.org, por lo que los modelos con componentes de esta no se pueden compilar con el. A partir de la versión 1.16, JModelica.org soporta la función tiempo muerto (delay. El modelo del sistema de control PID de un proceso de segundo orden con tiempo muerto (SisControlPIDSOMTM.mo) compilado a una FMU con JModleica.org, se importo en OpenModelica y los resultados fueron coincidentes. Téngase en cuenta que la FMU de este modelo, exportada por OpenModelica, no reprodujo correctamente los resultados. Una comprobación adicional se realizó utilizando el modelo en el archivo SisElec03MotorDCht.mo, presentado en la sección 9.9.1, en el cual se combinan componentes de varias bibliotecas Modelica (eléctricos, mecánicos, térmicos y de bloques). Ambas FMU, la exportada con OpenModelica y la correspondiente obtenida con JModelica.org, funcionaron correctamente en ambos ambientes. La instalación de JModelica incluye la biblioteca de bloques estándar Modelica, pero ninguna biblioteca externa. Por esa razón, los modelos que hacen uso de bloques de una biblioteca desarrollada por terceros, como la SystemDynamics, no se han compilado con JModelica.org. Es posible sin embargo, desarrollar un modelo que incluya componentes de bibliotecas Modelica no incluidas en JModelica.org, en un ambiente de simulación que los contenga y que tenga la capacidad de exportarlo a una FMU. Este fue el caso de los programa de simulación para estudios demográficos y de evolución de epidemias con bloques de la biblioteca SystemDynamics creados con el OMEdit, los cuales se simularon sin problemas con JModelica.org. Al compartir componentes de una biblioteca, mediante la exportación a FMU, deben verificarse los permisos uso, que las licencias de las bibliotecas incorporados o los programas utilizadosdeotorgan.
14.4. Bibliografía
345
14.4 Bibliografía Modelica Association (2014). Functional Mock-up Interface for Model Exchange and Co-Simulation. Standard, Modelica Association. MODELISAR Consortium (2010).Funtional Mock-up Interface for Model Exchange, 1.0 edición. Enero 26.
Parte IV
Uso de Wolfram SystemModeler y Mathematica
347
15 Introducci´on al Wolfram SystemModeler Uno de los entornos comerciales existentes, para el modelado y la simulación de los sistemas dinámicos heterogéneos con Modelica, es SystemModeler™ 1 de Wolfram Research, Inc, Champaign, Ill, EE.UU2 , disponible para MS Windows, Mac OS X y Linux. La información sobre sus componentes, bibliotecas y guías de uso, se encuentran en el “Documention Center”3 , cuyo menú principal se muestra en la figura 15.1. Se puede acceder a el, con la opción del menú [Help] [Documentation Center].
15.1 Introducción Adelante se dará una descripción breve del entorno de modelado y simulación en SytemModeler, con base en la versión 4.1, utilizando la instalación en MS Windows (Wolfram Research, Inc., 2012a,b, 2016).
Compilador C++ Wolfram SystemModeler requiere de un compilador de C++. En Windows, debe utilizarse el compilador Microsoft Visual C++ 2008 (2010, 2012 o 2013), o la versión gratuita (“Express”) de uno de estos. Si la instalación existente del compilador C++ no es detectada automáticamente por el programa, o ha sido necesaria la instalación de uno de los compiladores compatibles, este debe seleccionarse con la opción del menú [Tools] [Options] “Global” / “Compiler”, que despliega la ventana de selección mostrada en la figura 15.2. 1 http://www.wolfram.com/system-modeler/?source=nav 2 http://www.wolfram.com/ 3 http://reference.wolfram.com/system-modeler/
349
350
15 Introducción al Wolfram SystemModeler
Figura 15.1: SystemModeler - Documentation Center
15.1. Introducción
351
Figura 15.2: SystemModeler - Selección del compilador C++
En esta debe escogerse la versión del compilador instalado y proveerse la trayectoria completa al archivovsvars32.bat. El funcionamiento correcto del compilador seleccionado, puede verificarse pulsando el botón “Verify”.
Componentes principales de SystemModeler Para la interacción con Wolfram SystemModeler se dispone de dos interfaces de usuario gráficas. El Model Center, para elaborar el modelo Modelica y el Simulation Center, para efectuar su simulación y visualizar los resultados. Además, incluye el SystemModeler Link para enlazarse con Mathematica, si este está instalado.
352
15 Introducción al Wolfram SystemModeler
Figura 15.3: Model Center - Ventana principal
15.2 SystemModeler Model Center Seleccionando en el menú de aplicaciones de Windows [Wolfram SystemModeler] [Wolfram SystemModeler 4.1], se abre la “ventana principal” de Model Center, la cual se muestra en la figura 15.3. Este provee una barra de menús desplegables (File, Edit, View, Insert, Tools, Shape, Window, Help), una barra de botones (New Class, Open, Save, ... , Icon View, Diagram View, Text View, View Documentation, Zoom%, Pointer Tool, Connection Line Tool, Validate Class, Simulate Class), el acceso a las bibliotecas de componentes Modelica, el editor de modelos en texto (Text View), el editor de los diagramas de interconexión (Diagram View), el navegador de componentes, y las pestañas para acceder a los visores de parámetros, variables y constantes. Todas las ventanas, excepto de la creación del modelo, pueden colocarse en cualquier ubicación, e incluso hacerse “flotantes”. Con ladeselección del menú [Tools]en[Options...], se despliega de configuración Model Center, mostrada la figura 15.4, en la cual laseventana pueden seleccio-
15.2. SystemModeler Model Center
353
Figura 15.4: Model Center - Ventana de configuración nar algunas opciones de Model Center y otros de aplicación global (SystemModeler). En la columna derecha del Model Center se provee acceso a los ejemplos incluidos y al árbol de bibliotecas de componentes disponibles. La biblioteca Modelica (“Modelica Standard Library”), descrita en el capítulo 5, forma parte integral del lenguaje Modelica y las bibliotecas de componentes de esta incluidas en SystemModeler, se muestran en la figura 15.5. Esta incluye los componentes de diferentes dominios (eléctricos, mecánicos, térmicos, bloques, etc.), agrupados en bibliotecas expandibles, en las cuales cada componente está representado por un icono, tal como se muestra en la figura 15.6 para los componentes eléctricos analógicos “básicos”. Seleccionando un componente de la biblioteca con el apuntador, con el botón derecho se despliega un menú de opciones, desde el cual se puede acceder a la información componente (“View Documentation...”), como se muestra en la figura 15.7 para ladel biblioteca Modelica.
354
Figura 15.5: Model Center - Biblioteca Modelica
15 Introducción al Wolfram SystemModeler
15.2. SystemModeler Model Center
Figura 15.6: Model Center - Biblioteca de componentes eléctricos (“Electrical”)
355
356
15 Introducción al Wolfram SystemModeler
Figura 15.7: Model Center - Visor de documentación
El modelado gráfico, mediante diagramas de interconexión de componentes Modelica, que se ilustrá más adelante, se realizará “arrastrando” el icono de cada uno de los componentes requeridos desde la biblioteca, hasta él área del diagrama del modelo.
15.2.1 Elaborar un modelo nuevo o abrir uno existente El archivo de un modelo (función, conector, registro, etc.) nuevo, se crea seleccionando en el menú [File][New Class...], o pulsando el icono “New Class” en la barra de botones, con lo cual se despliega la ventana de entrada mostrada en la figura 15.8. En la casilla “Name” se escribe el nombre del modelo nuevo. El archivo de un modelo existente, se abre seleccionando en el menú [File][Open], o pulsando el icono “Open”, con lo cual se despliega una ventana para la búsqueda y la selección del archivo del modelo. El modelo nuevo (existente) se puede crear (ver) en modo texto [Modelica Text View], o en modo diagrama de interconexión [Diagram View], si este se ha elaborado
15.2. SystemModeler Model Center
357
Figura 15.8: Model Center - Crear un modelo nuevo
mediante la conexión gráfica de componentes. Los modelos elaborados mediante un listado de instrucciones, no tienen una representación gráfica (diagrama). Por su parte, los modelos elaborados mediante un diagrama de interconexión, tendrán un programa, creado automáticamente por el editor, en el cual se incluyen las notas ( annotation) con las instrucciones para el despliegue de los iconos del diagrama y las líneas que los conectan, y las ecuaciones de interconexión determinadas a partir de este. Como ejemplo el para demostrar la creación Modelica en Model Center, se utilizará circuito eléctrico mostradodeenunlamodelo figura 15.9, cuyo modelo está dado por las ecuaciones diL (t ) = V f − R1 iL (t ) − Vc (t ), dt dVc (t ) 1 C1 = iL (t ) − Vc (t ). R2 dt L1
(15.1) (15.2)
Se creará un modelo nuevo con el nombre “CircuitoElectrico”. Posteriormente este modelo se guardará en el archivo CircuitoElectrico.mo, con la opción del menú [File][Save], o pulsando el icono “Save” y seleccionando la carpeta para guardarlo. En forma automática, el editor de Model Center crea la línea de cabecera y la de terminación del modelo como m od el CircuitoElectrico en d CircuitoElectrico;
358
15 Introducción al Wolfram SystemModeler
Figura 15.9: Circuito eléctrico
El modelo Modelica del sistema a simular, puede declararse utilizando uno de los siguientes procedimientos: 1. Mediante el conjunto de ecuaciones determinadas para el mismo. 2. Utilizando los componentes correspondientes disponibles en la biblioteca Modelica (u otra) y empleando la ecuación connect para establecer las conexiones entre los componentes. 3. Interconectando directamente en forma gráfica los iconos de los componentes, para formar un diagrama de interconexión. En el capítulo 16, se presentarán en detalle los diferentes procedimientos para definir los modelos, en varios dominios físicos. Aquí, solo se ilustrá en forma breve, el uso del Model Center para “programar” el modelo, y el del Simulation Center para simularlo y analizar su comportamiento.
15.2.2 Escritura del modelo En la ventana del editor de texto [Modelica Text View], se escriben las ecuaciones que describen el modelo. Para el circuito eléctrico del ejemplo, los parámetros son: R 1 = 10 Ω, R 2 = 100 Ω, C1 = 0,01 F y L1 = 1 H; las condiciones inicialesVc0 = 0 V e iL0 = 0 A; y la tensión de la fuente V f = 10 V para t ≥ 0,05 s. La definición de los parámetros y las ecuaciones del modelo, (15.1) y (15.2), se pueden escribir como se muestra en la figura 15.10. El editor de texto utiliza diferentes colores para destacar la palabras reservadas, las funciones y otros elementos del programa. La consistencia del modelo, se puede verificar seleccionando en la barra de botones, el el icono “Validate Class”. Para modelo de ejemplo, esta verificación indica:
15.2. SystemModeler Model Center
359
Figura 15.10: Model Center - Modelado en “modo texto”
[1] 10:19:26 AM Validation of model CircuitoElectrico Validation of model CircuitoElectrico completed successfully. The model CircuitoElectrico is globally balanced with 3 equations and 3 variables. 3 of these are non-trivial equations.
Debe recordarse que en Modelica, el modelo debe estar “balanceado”, esto es, que debe tener el mismo número de variables y de ecuaciones, para que pueda resolverse. La prueba de validación del modelo, verifica primero la existencia de errores de sintaxis o semántica y luego, determina el número de ecuaciones, variables y ecuaciones no triviales del modelo. Las bibliotecas de componentes que se “cargan” al iniciar SystemModeler se pueden especificar en la ventana “Options”, desplegada con la opción del menú [Tools][Options] “Global”/“Modelica Libraries”. En esta misma ventana se pueden indicar las trayectorias a otras bibliotecas de componentes Modelica, que se desee adicionar. En este último caso, debe tenerse en cuenta que pudiera ser que estas bibliotecas no funcionen probadas externas, por Wolfram Research.adecuadamente con SystemModeler, si no han sido
360
15 Introducción al Wolfram SystemModeler
Figura 15.11: Simulation Center - Ventana principal
15.3 SystemModeler Simulation Center El botón “Simulate Class” de la barra de botones de Model Center, abre el Simulation Center, compila el modelo y crea un “experimento” para ese modelo. Si el modelo incluye los tiempos y otras características para el control de la simulación, las utiliza. Si los tiempos para el control de la simulación no se han establecido, lo advierte indicando “No experiment annotation found” y pregunta si se desea emplear las opciones preestablecidas. La interfaz del Simulation Center, se muestra en la figura 15.11. Esta provee una barra de menús desplegables (File, Edit, View, Tools, Simulate, Plot, Window, Help) y una barra de botones (New, open, Save, New Y(T) Plot Window, New Y(X) Plot Window, New Subplot, Remove Subplot, Plot Themes, Plot Properties, Animation, Class Documentation). Además, está el navegador de experimentos (“Experiment Browser”), la ventana de los diagramas gráficos y la ventana de mensajes de la simulación (“Build Log”, “Simulation log”, “Messages”). El navegador de experimentos provee pestañas para acceder a las ventanas pa-
15.3. SystemModeler Simulation Cente r
361
ra el control de la simulación (“Settings”), seleccionar las variables de los gráficos (“Plot”), modificar el valor de los parámetros (“Parameters”) y las condiciones iniciales de los estados (“Variables”). Cuando el modelo es compilado, la información correspondiente, parámetros, variables y ajustes de la simulación, se muestran en la columna izquierda del Simulation Center (ver la figura 15.11). De ser necesario, se pueden establecer (si no se ha hecho antes) o cambiar, los tiempos para la simulación (Start Time, Stop Time, Interval Length, Solver - el DASSL está preseleccionado) y otras características, mostradas en a pestaña “Settings”. Las condiciones establecidas para realizar la simulación, pueden incluirse en el modelo con la opción del menú [File][Save Experiment Settings]. Esto puede hacerse en el modelo en uso, o en una extensión del mismo (una copia del modelo, junto con los ajustes establecidos). La incorporación de los nuevos ajustes en el modelo, hace que este se considere modificado, por lo que se debe regresar al Model Center y guardar el modelo modificado, para no perder los ajustes incorporados en el. Se incorporarán como una nota a( nnotation) en el modelo, solo los parámetros de control de la simulación, que se modifiquen con respecto a los valores preestablecidos.
15.3.1 Ejecución de la simulación La simulación se efectúa seleccionando el icono “Simulate” o de la opción del menú [Simulate][Simulate]. Al finalizar la misma, se muestran los mensajes correspondientes en el área de registro de la simulación y se pasa automáticamente a la pestaña “Plot”, de donde se seleccionan las variables a desplegar en los gráficos. El concepto de las simulaciones del modelo en el Simulation Center, es el de que cada una de estas es un experimento. Se pueden cambiar las condiciones en que el experimento se realiza (tiempos, parámetros, condiciones iniciales), guardar los resultados en un archivo y utilizarlos para analizar y comparar, los resultados obtenidos con el conjunto de experimentos realizados. Es posible realizar un nuevo experimento (simulación), con cualquiera de los modelos abiertos en el Model Center, seleccionándolo de la lista en la ventana (“New Experiment”) desplegada con la opción de menú [File][New] y asignándole un nombre al mismo. Los experimentos seExperiment”). pueden guardarLos en que un archivo ([File][Save]) con extensión (“SystemModeler se hayan guardado previamente, se
.sme
362
15 Introducción al Wolfram SystemModeler
Figura 15.12: Simulation Center - Menú de gráficos
pueden abrir ([File][Open]). El modelo en ejecución, también puede ser cerrado ([File][Close]).
15.3.2 Vista de los resultados Bajo la pestaña “Plot” se listan los parámetros y variables del modelo, con sus unidades y descripciones. Marcando la casilla junto al nombre de la variable o parámetro, se seleccionan las que se desee desplegar. Estas se pueden mostrar en un solo gráfico Y(T), en gráficos separados, un gráfico subgráficos, en un plano fase Y(X), las opcionesendeseadas delcon menú de gráficoso mostrado en de la figura 15.12.seleccionado Los resultados de la simulación del circuito eléctrico, se muestran en la figura 15.13. Posicionando el apuntador sobre una figura, con el botón derecho se despliega la ventana de propiedades del gráfico (“Plot Properties”), mostrada en la figura 15.14. Entre las “propiedades” de los gráficos que se pueden seleccionar, están las leyendas de los ejes, el tipo de cuadrícula, y el color, trazo y grosor de las líneas. En la figura 15.15 se muestran gráficas alternativas, cambiando algunas de las propiedades. Los resultados de la simulación (el “experimento” efectuado con el modelo) se pueden guardar en un archivo para su uso posterior, seleccionando en el menú [File][Save As...][SystemModeler Experiment (*.sme)] Los parámetros de los componentes del circuito son: C1 = 0,01 F, L1 = 1,0 H, R1 = 10,0 Ω y R 2 = 100,0 Ω. Los resultados de la simulación se han guardado en el archivo CircuitoElectrico1.sme. Se desea comparar el comportamiento circuito con el obtenido si los componentes tienen los siguientes parámetros: Cdel 1 = 0,02 F, L 1 = 0,50 H, R 1 = 5,0 Ω y
363
15.3. SystemModeler Simulation Cente r
Figura 15.13: Simulation Center - Vista de resultados R2 = 10,0 Ω. Los nuevos resultados se han guardado en trico2.sme.
el archivo CircuitoElec-
Los parámetros del modelo se pueden modificar directamente en el Simulation Center, abriendo la pestaña de parámetros (“Parameters”) del modelo y simularlo nuevamente. Los resultados de los dos experimentos se pueden abrir en el Simulation Center y desplegarse juntos, como se muestra en la figura 15.16, para compararlos. Nótese que, de esta manera, solo se han cambiado los parámetros para realizar un nuevo experimento. Los valores de los parámetros, incluidos en la definición del modelo, no se han alterado. Si en el proceso de “experimentar” con el modelo, se han cambiado varios de sus parámetros, es posible reconstruir el modelo seleccionado en el menú [Simulation][Rebuild], con lo cual se despliega la ventana de “resolución de conflictos”, mostrada en la figura 15.17. En estatodos se puede volvercambios a utilizarentodos los parámetros srcinales del modelo, mantener los últimos el experimento, o utilizar cualquier combina-
364
15 Introducción al Wolfram SystemModeler
Figura 15.14: Simulation Center - Ventana de propiedades del gráfico
Figura 15.15: Simulation Center - Efecto del cambio de propiedades
15.3. SystemModeler Simulation Cente r
Figura 15.16: Simulation Center - Efecto del cambio de parámetros
Figura 15.17: Simulation Center - Parámetros del modelo y del experimento
365
366
15 Introducción al Wolfram SystemModeler
ción entre estos. Si el modelo del sistema simulado es modificado en el Model Center, es necesario utilizar [Simulation][Rebuild], para que los siguientes experimentos utilicen el modelo editado.
15.4 Modelado gráfico
En el modelo gráfico o diagrama de interconexión, cada icono representa a un componente físico. Las líneas que conectan los terminales de los elementos, corresponden a una conexión física. Las variables en la interfaz (terminales), describen la interacción entre los componentes y el comportamiento de cada componente está descrito por sus ecuaciones. Se simulará ahora el mismo circuito de la figura15.9, pero mediante un diagrama de interconexión, utilizando componentes de la biblioteca Modelica. Para esto, en el Model Center se crea un modelo nuevo con el botón “New Class” ([File][New Class]) y se selecciona como área de trabajo de modelado, el modo vista del diagrama de interconexión (Diagram View). Expandiendo la biblioteca Modelica, se arrastran con el apuntador al área del diagrama y se sueltan en ella, uno a uno, los iconos de los siguientes componentes: • Modelica.Electrical.Analog.Basic.Ground {Inductor, Capacitor, Resistor (2)}, • Modelica.Electrical.Analog.Sources.StepVoltage, los cuales se muestran en la figura 15.18. Utilizando las facilidades de edición gráfica, los iconos de los componentes se pueden mover, alinear y rotar. El menú de opciones de abre seleccionado el icono de un componente y presionando el botón derecho del apuntador (“ratón”). Interconexión entre componentes
El modo de conexión se habilita (deshabilita) con el botón en el menú “Connection Line Tool”. En el modo de conexión, cuando el cursor del apuntador se posiciona sobre el terminal de un componente, este cambia de ser un signo + pequeño, a un símbolo + grande (guía de interconexión). Se debe presionar una vez el botón izquierdo del apuntador para inicial la conexión, luego llevar el enlace (un “cable eléctrico” en el circuito simulado), moviendo el puntero hastaizquierdo el terminal componente con que se quiere conectar, y volver a presionar el botón paradel completar la conexión.
15.4. Modelado gráfico
367
Figura 15.18: Simulation Center - Componentes del circuito
Se puede mostrar una cuadrícula guía de fondo con la opción [View][Grid] del menú y variar la escala del diagrama de la lista de porcentajes de amplificación o reducción del diagrama (del 25% hasta 800%), para facilitar su elaboración. Además, se pueden cambiar las dimensiones de la “hoja de dibujo”, localizando el cursor sobre el área de dibujo y abriendo la ventana “Page Sepup” de la hoja (pestaña “Diagram Layer”), con el botón derecho del apuntador. La posición de los iconos pude ajustada a la cuadrícula (menú [Tools][Snap...]). Todos los terminales ( p y n, en los diagramas eléctricos) de cada componente, deben estar conectados a un terminal de otro componente, según corresponda a la topología del sistema que se desea simular. Aunque en el diagrama final, debido a la distribución de los elementos y sus conexiones, pudiera parecer que se ha hecho alguna conexión entre las lineas de interconexión de dos o más componentes, este es solo un “efecto óptico” (una línea de interconexión oculta a las demás), ya que debe existir 15.19. una línea independiente por cada conexión, tal como se muestra en la figura
368
15 Introducción al Wolfram SystemModeler
Figura 15.19: Model Center - Interconexión de los elementos Interconexiones válidas entre componentes
Las conexiones, solo se pueden realizar entre los conectores correspondientes a componentes del mismo tipo (con conectores de la misma clase). Supóngase que se han colocado en el diagrama de interconexión componentes eléctricos, mecánicos que se desplazan y térmicos, y que se han realizado las conexiones entre los terminales de los componentes del mismo dominio físico, tal como se muestra en la figura 15.20. Si se realiza una verificación del estado del modelo hasta ese momento (“Validate Class”), esta indica que no hay errores. Si se trata de hace ahora una conexión entre por ejemplo el conector de un componente eléctrico y el de un componente mecánico, esta no se puede completar. Además, se indica que la conexión es ilegal (las definiciones de los conectores no concuerdan), tal como se muestra en la figura 15.21. Lo mismo sucedería si se trata de realizar una conexión, entre el terminal de un componente mecánico y el de uno térmico Parámetros de los componentes
Cada componente utilizado diagrama, tiene asociado un elmenú parámetros mostrado en la parte inferior,enalelque se accede seleccionando iconodedel componen-
15.4. Modelado gráfico
369
Figura 15.20: Model Center - Conexiones permitidas entre componentes (eléctrico eléctrico, mecánico - mecánico, térmico - térmico)
Figura 15.21: Model Center - Advertencia de una conexión no permitida entre componentes)
370
15 Introducción al Wolfram SystemModeler
Figura 15.22: Model Center - Menú de parámetros de un componente
Figura 15.23: Model Center - Diagrama de interconexión te. En este, se introduce los valores de los parámetros del componente seleccionado, tal como se muestra en la figura 15.22 para la fuente de tensión stepVoltage1. El diagrama del circuito simulado del ejemplo, con los parámetros introducidos, se muestra en la figura 15.23. Es evidente la similitud del diagrama de interconexión desarrollado con el sistema a simular, el circuito eléctrico mostrado en la figura 15.9. Las líneas de interconexión entre componentes del diagrama de la figura 15.23, tienen esquinas en ángulo recto. Estas se pueden cambiar a lineas curvas, seleccionando la línea de interconexión con el botón izquierdo del apuntador, desplegando luego menú de opciones el botónelderecho y seleccionado el “Curved nectionelLine”. Esto da comocon resultado, diagrama mostrado en en la figura 15.24.Con-
15.4. Modelado gráfico
371
Figura 15.24: Model Center - Interconexión de los componentes con líneas curvas
La selección “Right-Angle Connection Line” hace que las líneas de interconexión tengas esquinas en ángulo recto. El área visible del diagrama gráfico, puede imprimirse (menú [File][Print]) o copiarse al portapapeles como una imagen (“Copie View as Image” del menú desplegado con el botón derecho del apuntador sobre el diagrama), para insertarse por ejemplo, en un programa de manejo de figuras. El programa creado en forma interconexión desarrollado (figuraautomática 15.23), es: por el editor, a partir del diagrama de m od el CircuitoElectricoDiagrama "Circu ito el´ ect ric o de eje mpl o" Modelica. Electrical. Analog.Bas ic.Capacito r capaci tor1 ( C = 0.01 ) annotation( Placement ( visible = tr ue , transfo rmation ( srcin = { 0. 0, 50. 0} , ext ent = {{- 10.0, - 10.0 } , { 10. 0, 10. 0} } , rotation = -45 0 ) ) ); Modelica. Electrical .Analog.Bas ic.Ground groun d1 annotation( Placement ( visible = tr ue , transfo rmation ( srcin = { - 80. 0, 10. 0} , ext ent = {{- 10.0, - 10.0 } , { 10. 0, 10. 0} } , rotation = 0 ) ) ); Modelica. Electrical. Analog.Bas ic.Inductor induc tor1 ( L = 1) annotation( Placement ( visible = tr ue , transfo rmation ( srcin = { - 50. 0, 80. 0} , ext ent = {{- 10.0, - 10.0 } , { 10. 0, 10. 0} } , rotation = 0 ) ) ); Modelica. Electrical. Analog.Bas ic.Resistor resis tor1 ( R = 10 ) annotation( Placement ( visible = tr ue , transfo rmation ( srcin = { - 90. 0, 80. 0} , ext ent = {{- 10.0, - 10.0 } , { 10. 0, 10. 0} } , rotation = 0 ) ) ); Modelica. Electrical. Analog.Bas ic.Resistor resis tor2 ( R = 10 0)
372
15 Introducción al Wolfram SystemModeler
annotation( Placement ( visible = tr ue , transfo rmation ( srcin = { - 30. 0, 50. 0} , ext ent = {{- 10.0, - 10.0 } , { 10. 0, 10. 0} } , rotation = -45 0 ) ) ); Modelica.E lectrical.A nalog.Sour ces.StepVol tage stepVo ltage1 ( startTime = 0. 05, V = 10 ) annota tion(Placement ( visible = true , transfo rmation ( srcin = { -110. 0, 50.0 } , ext ent = { { -10.0, - 10.0 } , { 10. 0, 10. 0} } , rot ati on = -90 ) ) ); equation connect ( stepVoltage1.n , ground1.p) annota tion(Line ( visible = true , ori gin = { -100. 0, 26.666 7} , poi nts = {{- 10. 0, 13.333 3} , { - 10.0, - 6.6667 } , { 20.0, - 6.6667 } } , col or = {0, 0, 25 5 } ) ); connect ( stepVoltage1.p , resistor1.p) annota tion(Line ( visible = true , ori gin = { -106.6 667, 73.3332999 9999999} , poi nts = { { -3.3333, - 13.3333 } , { - 3.33 33, 6.6667 } , { 6.66 67, 6.6667 } } , col or = {0, 0, 25 5 } ) ); connect ( resistor2.n , ground1.p) annota tion(Line ( visible = tr ue , srcin = { -46.66 67, 26.6667 } , poi nts = { {16.66 67, 13.333 3} , { 16.6667, - 6.6667 } , { -33.3333, - 6.6667 } } , co lor = { 0, 0, 25 5 } ) ); connect ( inductor1.n , capacitor1.p ) annota tion(Line ( visible = true , ori gin = { -13.3 33, 73.333 } , poi nts = {{- 26.6 67, 6.667 } , { 13.3 33, 6.667 } , { 13.333, - 13.333 } } , col or = {0, 0, 25 5 } ) ); connect ( capacitor1.n , ground1.p) annot ation( Line ( visible = true , ori gin = { -26.6 667, 26.666 7} , poi nts = { { 26.66 67, 13.333 3} , { 26.6667, - 6.6667 } , { -53.3333, - 6.6667 } } , color = {0, 0, 25 5 } ) ); connect ( inductor1.n , resistor2.p ) annota tion(Line ( visible = true , ori gin = { -33.3 333, 73.3332999 9999999} , poi nts = { { -6.66 67, 6.6667 } , { 3.33 33, 6.6667 } , { 3.3333, - 13.3333 } } , color = {0, 0, 25 5 } ) ); connect ( resistor1.n , inductor1.p ) annota tion(Line ( visible = true , ori gin = { -70. 0, 80. 0} , poi nts = {{- 10. 0, 0.0 } , { 10. 0, 0.0 } } , col or = {0, 0, 25 5 } ) ); annotation( Diagram ( coordinateSystem ( extent = {{- 148.5, - 105.0 } , { 148. 5, 105.0 } } , preserv eAspectR atio = tr ue , initia lScale = 0. 1, gr id = {5 , 5} ) ), experi ment( StartTime = 0.0, StopTime = 1.4, NumberO fInterva ls = -1, Algor ithm = "dassl" , Tolerance = 1 e - 00 6 ) ) ; annotation( Documentation ( info = "
Eje mpl o de l mod ela do gr afi ´ co , media nte la interc onexi´ on de compon entes de la biblio teca Model ica.El ectri cal .
" ) ) ; en d CircuitoElectricoDiagrama;
Si se eliminan anotaciones programa anterior las se reduce a: para la creación del diagrama de interconexión, el
373
15.4. Modelado gráfico
m od el CircuitoElectricoDiagrama "Circu ito el´ ect ric o de eje mpl o" Modelica. Electrical. Analog.Bas ic.Capacito r capaci tor1 ( C = 0.01 ) ; Modelica. Electrical .Analog.Bas ic.Ground groun d1; Modelica. Electrical. Analog.Bas ic.Inductor induc tor1 ( L = 1) ; Modelica. Electrical. Analog.Bas ic.Resistor resis tor1 ( R = 10 ) ; Modelica. Electrical. Analog.Bas ic.Resistor resis tor2 ( R = 10 0) ; Modelica.E lectrical. Analog.Sour ces.StepVol tage stepVo ltage1 ( startTime = 0. 05, V = 10 ) ; equation connect ( stepVoltage1.n , ground1.p) ; connect ( stepVoltage1.p , resistor1.p) ; connect ( resistor2.n , ground1.p) ; connect ( inductor1.n , capacitor1.p ) ; connect ( capacitor1.n , ground1.p) ; connect ( inductor1.n , resistor2.p ) ; connect ( resistor1.n , inductor1.p ) ; en d CircuitoElectricoDiagrama;
De forma preseleccionada, el editor de texto del Model Center no despliega las notas de los modelos gráficos. Estas pueden mostrarse (“Expand Annotations”) y ocultarse (“Collapse Annotations”), seleccionado del menú desplegable con el botón derecho del apuntador, la opción correspondiente. La primera parte del programa, corresponde a la declaración de los elementos con el valor de sus parámetros y la segunda, a las ecuaciones de interconexión entre los terminales de los elementos mediante el uso de la ecuación connect. En los iconos de los elementos eléctricos en Modelica, los terminales “p” son cuadrados azules rellenos y los terminales “ n” cuadrados azules sin relleno. Al comparar las ecuaciones del modelo con el diagrama de la figura 15.23, se aprecia fácilmente que cada una de las ecuaciones connect, corresponde al “cable eléctrico” que conecta uno de los terminales de un componente del circuito, con uno de los terminales de otro, según lo establece la topología del circuito. Las conexiones entre los componentes, especifican las interacciones entre estos. En cada terminal de conexión (conector), residen las variables (pervariables y transvariables) que describen la interacción. En los elementos eléctricos estas son corriente y tensión. Por ejemplo, la ecuación de conexión connect ( resistor1.n ,inductor1.p
);
establece dos ecuaciones en el punto de conexión (nodo) entre el resistor R1 y el capacitor C 1 . Una ecuación establece que las tensiones (variables de potencial) en los dos terminales son iguales r( esistor1.n.v = inductor1.p.v) y la otra, que la suma de las corrientes (variables de flujo) entrando al nodo es ceroresistor1.n.i ( + inductor1.p.i = 0).
374
15 Introducción al Wolfram SystemModeler
Si se hace un verificación del diagrama de interconexión (“Validate Class”) esta indica: [2] 02:15:08 PM Validation of model CircuitoElectricoDiagrama Validation of model CircuitoElectricoDiagrama completed successfully. The model CircuitoElectricoDiagrama is globally balanced with 39 equations and 39 variables. 16 of these are non-trivial equations.
El número de variables y ecuaciones es ahora, sustancialmente mayor, al de las del modelo desarrollado mediante las ecuaciones de definición de los elementos y la topología del circuito. Esto se debe a que, en los modelos elaborados mediante un diagrama de interconexión de componentes, por un lado se generan como mínimo dos ecuaciones por cada conexión de dos terminales (igualdad de las variables de potencial y suma a cero de las variables de flujo), y por otro, a que se tiene acceso no solo a las variables de cada componente, sino también a los valores de las variables en cada uno de sus conectores, así como a las otras variables que hayan sido definidas, en las ecuaciones constitutivas de los componentes. Si no se han especificado explícitamente los valores iniciales de los estadosVc( e IL en este ejemplo), el compilador tomará los valores por omisión de Modelica (cero para las variables). Para cada componente, los valores iniciales de las variables, si estos son estimaciones (fixed false) o valores fijos ( fixed true) y si se toman o no como estados, se puede establecer seleccionando el componente y abriendo el visor de variables con la pestaña “Variables”. Cuando la simulación se realiza interconectando componentes de la biblioteca Modelica, se tiene acceso a las variables de potencial (transvariables v en los circuitos eléctricos), en cada uno de los conectores (p y n) para cada uno de los componentes, a la variable de flujo (pervariablei en los circuitos eléctricos) fluyendo del terminalp al n , así como a la diferencia entre las variables de potencial entre ambos terminales (p.v - n.v ). Como se muestra en la figura 15.25, para el circuito eléctrico del ejemplo, se ha deseado comparar en un subgráfico las diferencias de tensión a través de la fuente (stepVoltage1.v), el capacitor ( capacitor1.v), el inductor ( inductor1.v) y el resistor 1 ( resitor1.v); y en otro subgráfico las corrientes por el capacitor (capacitor1.i), el inductor (inductor1.i) y el resistor 2 ( resistor2.i). Es posible tener varios subgráficos, pero todos en una sola columna. Las leyendas de las figuras, así como el color, grosor y trazo de las líneas, y el tipo de cuadrícula de fondo, se pueden seleccionad en la ventana “Plot Properties” (ver la figura desplegada la opción “Properties” del menú desplegado presionado con el 15.14) botón derecho del con apuntador.
15.4. Modelado gráfico
375
Figura 15.25: Simulation Center - Curvas de respuesta y navegador de variables
Los gráficos de la respuesta se pueden imprimir ([File][Print]), o guardar ([File][Export][Plot as Image...]) como una imagen en un archivo (.png, .jpg, .bmp). Se puede seleccionar una parte del gráfico para ampliarlo, marcando la zona con el botón izquierdo del apuntador. Además, manteniendo el cursor del apuntador sobre una de las líneas del gráfico, se mostrará en una ventana emergente, el valor de la variable en ese punto, así como sus valores máximos y mínimos, con los instantes a los que estos ocurren, tal como se muestra en la figura 15.26. Los resultados del “experimento” (.sme) se pueden guardar ([File][Save]) en el archivo nombreModelo.sme, o con otro nombre ([File][Save As...]), para uso poste.mat rior, o exportar en formato o.csv (MS-Excel), importardos dentro de otro programa que (MATLAB) pueda manejar la información en para estosser formatos.
376
15 Introducción al Wolfram SystemModeler
Figura 15.26: Simulation Center - Indicación de valores instantáneos, máximos y mínimos de una variable
15.5 Enlace con Mathematica Los modelos creados en SystemModeler en el Model Center, pueden simularse en el Simulation Center o con Mathematica (Wolfram Research, Inc., 2016). El enlace entre el Simulation Center y Mathematíca utiliza el paquete Wolfram SystemModeler Link (“WSMLink”), el cual se configura la primera vez que se ejecute el SystemModeler, si Mathematica está instalado. SystemModeler se integra con Mathematica, presionando el botón [Mathematica] en el Model Center o en el Simulation Center. Esto permite utilizar el modelo Modelica como el modelo a simular en Mathematica y emplear las capacidades de simulación estudios adicionales con el sistema en estudio.y análisis que esta provee, para realizar Para esto, se debe crear un nuevo cuaderno interactivo de Mathematica, seleccionado en el menú de Mathematica la opción [File][New][Notebook (.nb)]. En el cuaderno interactivo, el enlace entre Mathematica y SystemModeler (WSMLink) se carga con la instrucción In [xx1]:=
Needs [ "WSMLink
"]
Debe recordarse que en los cuadernos interactivos de Mathematica, las instrucciones se evalúan con las teclas [Shift]+[Intro] o [Shift]+[Enter]. El modelo (clase) a simularse, debe estar cargado (abierto) en SystemModeler, para poder llamarlo desde Mathematica. Las instrucciones para la simulación del modelo y el despliegue de las variables son: • Simulación
377
15.6. Bibliografía
In [xx 2]:=
ms im = WSM Sim ula te[ "nombreModelo" ,{t o, tf}]
msim contiene los
resultados de la simulación (objeto WSMSimulationData).
• Nombres de las variables del modelo In [xx3]:= msim[ "VariableNames" ]
• Despliegue gráfico de las variables In [xx4]:=
WSMPlot[msim
,{ "var1" , "var2" , ... }]
Tal como se muestra en la figura 15.27 para el caso del modelo del circuito eléctrico del ejemplo (CircuitoElectrico.mo ). Se muestra también, como se puede comparar el efecto del cambio de un parámetro del sistema, en este caso, tres valores de la resistencia del resistor R 1 , utilizando la instrucción WSMParameterValues.
15.6 Bibliografía Wolfram Research, Inc. (2012a).Wolfram SystemModeler - Getting Started. Champaign, Ill, USA. Wolfram Research, Inc. (2012b).Wolfram SystemModeler - User Guide. Champaign, Ill, USA. Wolfram Research, Inc. (2016). Wolfram SystemModeler Documentation Center. http://reference.wolfram.com/system-modeler/.
378
15 Introducción al Wolfram SystemModeler
Figura 15.27: Mathematica - Simulación de un modelo Modelica
16 Modelado y simulaci´on de sistemas f´ısicos con Modelica y Wolfram SystemModeler En los capítulos anteriores se ha presentado el lenguaje Modelica, el cual es un formalismo apropiado para el modelado de sistemas heterogéneos. También se han presentado los componentes de la biblioteca Modelica, con los cuales se puede realizar un modelado gráfico mediante la interconexión de los componentes que integran el sistema. Además, se introdujo el uso de los componentes de SystemModeler, el Model Center para elaborar el modelo y el Simulation Center para realizar su simulación (Wolfram Research, Inc., 2016).
16.1 Introducción Utilizando diferentes ejemplos, por lo general simples, se presentará el modelado y la simulación de sistemas de diferente naturaleza, ya sea empleando el modelado mediante un conjunto de ecuaciones; utilizando componentes de la biblioteca Modelica, y de otras, y la ecuación de conexión; o directamente mediante un modelado gráfico, utilizando diagramas de interconexión. El modelado de los diferentes sistemas, se enfrentará básicamente en tres formas diferentes. Primero, determinando las ecuaciones que describen su comportamiento dinámico. Aunque este pareciera ser el procedimiento “tradicional”, se hará uso de las capacidades del lenguaje Modelica, evitando una programación en “diagrama de bloques”. Excepto para aquellos casos en que en forma adrede, se desee ilustrar el uso de los bloques (con una o más entradas y una salida) disponibles en la biblioteca Modelica. La segunda forma,Definiendo será mediante el uso dedel lossistema, componentes disponibles las diferentes bibliotecas. la topología mediante el uso deen ecua379
380
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.1: Circuito RLC serie
ciones de conexión entre sus terminales (ecuaciones connect). La tercera, y a la cual se le dará mayor énfasis, será el modelado mediante diagramas gráficos. Para la simulación, se establecerán los parámetros de los componentes, la mayoría de las veces arbitrarios, y se mostrarán algunas de las posibles curvas de comportamiento de las variables del sistema, sin pretender hacer una análisis exhaustivo de su comportamiento.
16.2 Sistemas eléctricos Como sede viocomponentes, en la secciónpara 5.2.4, la biblioteca incorpora unay variedad importante el modelado de Modelica los sistemas eléctricos electrónicos. Mediante ejemplos sencillos, se ilustrará el uso de algunos de estos.
16.2.1 Circuito RLC serie Como ejemplo de un sistema eléctrico simple, considérese el “circuito RLC en serie” mostrado en la figura 16.1. Los estados de este circuito, son la diferencia de tensión Vc (t ) a través del capacitor y la corriente i L (t ) por el inductor. Por inspección, se pueden determinar las ecuaciones de estado este circuito, dadas por las siguientes expresiones: dVc (t ) = iL (t ), dt d iL (t ) L = V f (t ) − R iL (t ) − Vc (t ). dt
C
(16.1) (16.2)
El valor los parámetros de los elementos del circuito para la simulación del ejemplo son:de R = 60 Ω, L = 1,0 H y C = 0,0001 F. La tensión de la fuente V f = 10
16.2. Sistemas eléctricos
381
Figura 16.2: Tensión en el capacitor y pestaña para la selección de variables V y se aplicará en el instante t = 0,01 s. Los estados iniciales son iL (0) = 0 A y Vc (0) = 0 V.
Simulación empleando las ecuaciones constitutivas de los elementos
Utilizando (16.1) y (16.2) y los valores de los parámetros establecidos, el programa Modelica para determinar la tensión a través del capacitor y la corriente por el inductor es: m od el SisElec01_esm // Cir cui to el´ ect ric o RL C ser ie // Mod ela do co n ba se en la s ecu aci one s de l cir cui to import Modelica.SIunits. * ; parameter Resis tance R = 60.0; parameter Capaci tance C = 0.0001; parameter Induc tance L = 1.0; Volta ge Vf "fuente" ; Volta ge Vc( start = 0, fi xed = tr ue) "tensi on capac itor"; Curre nt Il( start = 0, fi xed = tr ue) "corrie nte induc tor"; equation Vf = if ti me > = 0.01 then 10 else 0.0; C * de r( Vc ) = Il ; L * de r( Il ) = Vf - R * Il - Vc ; annotation( experiment ( StopTime = 0.2, NumberO fInterva ls = 50 0) ) ; en d SisElec01_esm;
citorEn (Vcla).figura 16.2 se muestra la curva de respuesta de la tensión a través del capa-
382
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.3: Ventanas del navegador del experimento En el programa, se han “importado” (import) los componentes de la biblioteca Modelica.SIunits.*, por lo que las definiciones para el tipo de elemento y sus unidades de acuerdo con el sistema internacional de unidades (SI), están disponibles para hacer las declaraciones de los parámetros y las variables. De esta manera por ejemplo, R y Vc no son simplemente un parámetro y una variable reales, estos tienen un significado físico. Mediante las líneas del programa import Modelica.SIunits. * ; parameter Resis tance R = 60.0; .. . Volta ge Vc( start = 0, fi xed = tr ue) "tensi´on cap aci tor";
se indica que el parámetro R es del tipo Resistance (Real, unit = Ohm ) con un valor de 60 Ω y que la variable Vc es del tipo Voltage (Real, unit = V ) cuyo valor inicial es cero. Como se aprecia en la figura 16.3, el navegador del experimento provee cuatro pestañas para desplegar la información (Plot, Parameters, Variables, Settings). En estas, los parámetros aparecen listados con su valor y las variables con su condición inicial, ambos junto con sus unidades. Además, también se ve como los “comentarios de definición” empleados en la sección de declaraciones, son utilizados como las descripciones mostradas junto a las variables. El programa de simulación en Modelica del circuito RLC serie, también se puede haber escrito del a siguiente manera: ''
''
''
mo d el SisElec01_eincsm import Modelica.SIunits. * ;
''
383
16.2. Sistemas eléctricos
parameter Resis tance parameter Capaci tance parameter Induc tance Vo lt ag e V f, V r, Vl ; Volta ge Vc( start = 0, Curre nt Il( start = 0, equation
R = 60.0; C = 0.0001; L = 1.0; fi xed = tr ue) ; fi xed = tr ue) ;
Vf me; > = 0.01 then 10 else 0.0; Vr = = Rif *tiIl Vl = L * de r( Il ) ; C * de r( Vc ) = Il ; Vc = Vf - Vr - Vl ; annotation( experiment ( StopTime = 0.2, NumberO fInterva ls = 50 0) ) ; en d SisElec01_eincsm;
en el cual todas las ecuaciones del modelo son consistentes. Además, el modelo tiene cinco incógnitas y cinco ecuaciones. Por el contrario, si la última ecuación se hubiera escrito como .. . Vc = Vf - Vr - Il ; .. .
el compilador indicará que el problema de inicialización es singular. Warning: [:0:0-0:0]Using over-determined solver for initialization. Setting fixed=false to the following variables: Vc, $dummy. Warning: [:0:0-0:0]The initializati on problem is structurally singular, error found sorting equations Il = 0.0; Vc = 0.0; Vf = if greaterThanEqualTime(time, 0.01) then 10.0 else 0.0; Vr = R * Il; Vc = Vf + (-Vr) - Il; for variables { Il, Vc, Vr, Vf }, however the following variables has fixed=true: Il,Vc. Setting some of them to fixed=false might resolve the issue. Como parte del modelo, se ha utilizado la ecuación condicional if , para estable-
cer los instantes en que la tensión de la fuente de alimentación cambia (eventos de tiempo), .. . Vf = if ti me > = 0.01
then
10 else 0.0;
384
16 Modelado y simulación con Modelica y SystemModeler
.. .
La variable time (tiempo), no se ha declarado en forma explicita, porque esta está predefinida en todos los modelos Modelica. Sección de “ecuaciones iniciales”
En los modelos anteriores, las condiciones iniciales de los estados se incluyeron como parte de su definición. Para tener mayor flexibilidad con el establecimiento de las condiciones iniciales de los estados, o para incluir ecuaciones que deban resolverse solo una vez, antes de realizar la simulación del modelo, se pueden definir parámetros con el valor de las condiciones iniciales, e incluir la sección initial equation para asignarlos a los estados. Por ejemplo: mo d el SisElce01_eicsm .. . parameter Volta ge Vc_i c = 0; parameter Curre nt Il_i c = 0; .. . Volta ge Vc "tensi´on capac itor"; Curre nt Il "corrien te induc tor"; initial equation Vc = Vc_ic; Il = Il_ic; equation .. . en d SisElce01_eicsm;
Extensión de los modelos
Supóngase que el modelo del circuito eléctrico del ejemplo, se ha escrito como mo d el SisElec01_enicsm import Modelica.SIunits. * ; parameter Resis tance R = 60.0; parameter Capaci tance C = 0.0001; parameter Induc tance L = 1.0; Volta ge Vf "fuente" ; Volta ge Vc( start = 0 ) ; Curre nt Il( start = 0 ) ; equation Vf = if ti me > = 0.01 then 10 else 0.0; C * de r( Vc ) = Il ;
385
16.2. Sistemas eléctricos
Figura 16.4: Respuestas con las nuevas condiciones iniciales L * de r( Il ) = Vf - R * Il - Vc ; annotation( experiment ( StopTime = 0.2, en d SisElec01_enicsm;
NumberO fInterva ls = 50 0) ) ;
Si se compara este modelo con el escrito inicialmente para este circuito, se nota que la única diferencia entre ambos, es que ahora las condiciones iniciales de los estados son simples “estimaciones” (fixed=false). Este modelo puede reutilizarse “extendiéndolo” ( extends) de la siguiente manera m od el SisElec01_extsm extends SisElec01_enicsm; initial equation Vc = 5; Il = -0.02; en d SisElec01_extsm;
El nuevo modelo permite hacer uso del modelo SisElec01_enicsm.mo, modificando solamente el valor de las condiciones iniciales. Como estas están indicadas dentro de la sección initial equation, estas se toman como valores fijos. La instrucción extends, inserta en el nuevo modelo el código del modelo que se “extiende” (se amplía con características nuevas o se modifican algunas de las ya definidas). La tensión a través del capacitor y la corriente por el inductor, con las nuevas condiciones iniciales, se muestra en la figura 16.4. El modelo se puede reutilizar fácilmente también con parámetros diferentes, ex-
tendiéndolo con modificaciones, como por ejemplo
386
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.5: Respuestas con dos conjuntos de parámetros diferentes mo d el SisElec01_np extends SisElec01_eic ( R = 5 0, C = 0.0 00 2, L = 1 .5 ) ; annotation( experiment ( StartTime = 0, StopT ime = 0.4, Tolerance = 1 e - 06, Interv al = 0.0008 ) ) ; en d SisElec01_np;
En este caso se extendió el modelo SisElec01_eic.mo que tiene definidas como parámetros y fijas, las condiciones iniciales. Además, se debió ampliar el tiempo final de laEnsimulación, debido al nuevocomparar comportamiento del circuito. la figura 16.5, se pueden las respuestas obtenidas con los dos conjuntos de parámetros. Simulación utilizando la ecuación connect
En la figura 16.6 se muestra nuevamente el circuito RLC serie, en el cual se han identificado los terminales p y n de los elementos que lo forman. Se hará uso ahora de los componentes eléctricos predefinidos en la biblioteca Modelica.Electrical.Analog.Basic: Resistor, Capacitor, Inductor y Ground, y el Modelica.Electrical.Analog.Sources.StepVoltage. Con base en estos y utilizando la ecuación connect para realizar la conexión entre los componentes, el programa de simulación de este circuito sería el siguiente. mo d el SisElec_csm // Cir cui to el´ ect ric o RL C ser ie // Mod elo co n ba se en la int erc onexon i´ de su s ele men tos import Modelica.Electrical.Analog. * ; Basic.R esistor R1 ( R = 60.0 ) ;
387
16.2. Sistemas eléctricos
Figura 16.6: Terminales de interconexión, de los elementos del circuito RLC serie
Basic.C apacito r C1 ( C = 0.0001 ) ; Basic.I nductor L1 ( L = 1 .0 ) ; Basic.G round g; Sources. StepVolt age Vf ( V = 10, startT ime = 0.01 ) ; initial equation C1.p.v = 0; L1.p.i = 0; equation connect ( Vf. p, R1. p) ; connect ( R1. n, L1. p) ; connect ( L1. n, C1. p) ; connect ( C1 .n, g. p) ; connect ( Vf .n, g. p) ; annotation( experiment ( StopTime en d SisElec_csm;
= 0.2,
NumberO fInterva ls = 50 0) ) ;
En la primera parte del programa, se definen los elementos utilizados junto con sus parámetros: un resistor (R1), un capacitor (C1), un inductor (L1), un punto de referencia o “tierra” (g) y una fuente de tensión (Vf). En la segunda, utilizando una sección de initial equation, se definen las ecuaciones que establecen las condiciones iniciales. En la tercera parte, se hace uso de la ecuación de conexiónconnect, para definir la topología del circuito, según se muestra en la figura 9.5. Modelado gráfico
Para modelar el circuito RLC serie del ejemplo, se utilizan los componentes “básicos” de la biblioteca Modelica.Electrical.Analog.Basic (Ground, Resistor, Capacitor, Inductor), y Sources.StepVoltage.
la fuente de tensión Modelica.Electrical.Analog.
388
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.7: Diagrama de simulación del circuito RLC serie (SisElec01_orsm.mo )
Empleando el editor de conexiones de SystemModeler Model Center, se puede elaborar la “programación gráfica” del circuito simulado, tal como se ilustra en la figura 16.7. El valor de los parámetros de los componentes, se introduce seleccionándolo con el apuntador y abriendo la pestaña “Parameters”. A manera de ejemplo, en la figura 16.8 se muestran los parámetros del componente fuente_tension (su tensión y el instante a partir del cual se aplica). En la figura 16.9 se muestra la curva de respuesta de la corriente por el inductor. Se puede comprobar fácilmente, que las respuestas obtenidas con los tres programas anteriores, son idénticas. Procesamiento de las variables
En los programas Modelica elaborados mediante el uso de diagramas de interconexión, se tiene acceso a todas las variables en los terminales (conectores) de los componentes para su despliegue gráfico, seleccionándolas en el navegador de variables. Sin embargo, si se desea utilizar alguna de estas variables para realizar, por ejemplo algún tipo de cálculo, esta debe “medirse”. En la bliblioteca Modelica.Electrical.Analog.Sensors, se cuenta con medidores de corriente, tensión y potencia. Para calcular la energía almacenada en el capacitor, se ha adicionado al circuito un vatímetro (Modelica.Electrical.Analog.Sensors.PowerSensor ), como se muestra la figura 16.10. El lavatímetro corrienteen y otro par para medir tensión. tiene un par de terminales para medir la
16.2. Sistemas eléctricos
Figura 16.8: Parámetros de la fuente_tension
Figura 16.9: Corriente por el inductor
389
390
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.10: Cálculo de la energía almacenada en el capacitor La potencia es almacenada. integrada (Modelica.Blocks.Continouos.Integrator ) para calcular la energía El vatímetro incorpora un voltímetro y un amperímetro. Utilizando estos, en la figura 16.11 se muestra la variación de la tensión (Plot Y(T):7), la corriente (Plot Y(T): 8) y la potencia (Plot Y(T):9) en el capacitor. La energía almacenada en el capacitor (Plot Y(T):10) es la salida del integrador. Además, empleando el cursor de medición sobre el gráfico de la energía, se determinó que la energía total almacenado es Etotal = 0,004982 J. Variación de los parámetros del modelo
Los parámetros iniciales del circuito eléctrico son:R = 60 Ω, L = 1 H y C = 0,0001 F y los resultados de esta simulación (experimento 1), se han guardado en el archivo SisElec01_osm 1.sme (“system modeler experiment”). Se desea comparar estas respuestas, con las que se obtienen si los parámetros se cambian a los siguientes valores:R = 100 Ω, L = 1,50 H y C = 0,0002 F. Enlos el Simulation Center se Se selecciona la simulación pestaña de “Parameters” y se hacen cambios requeridos. ejecuta la (experimento del 2) ymodelo los nuevos
16.2. Sistemas eléctricos
391
Figura 16.11: Variables en el capacitor resultados se guardan en el archivoSisElec01_osm 2.sme . Con los archivos de resultados de los dos experimentos abiertos en el Simulation Center, se selección las variables a mostrar en los gráficos y se modifican las propiedades de los mismos, según sea necesario. En la figura 16.12 se muestra el comportamiento del circuito con los dos conjuntos de parámetros.
16.2.2 Circuito RLC paralelo Considérese ahora el “circuito RLC en paralelo”, mostrado en la figura 16.13. Los estados en este circuito son la tensión Vc (t ) a través del capacitor y la corriente i L (t ) por el inductor. Las ecuaciones de estado de este circuito son entonces dVc (t ) 1 = I f (t ) − Vc (t ) − iL (t ), (16.3) R dt diL (t ) L = Vc (t ). (16.4) dt En forma similar al caso del circuito RLC en serie, se hará la simulación de este circuito utilizando dos procedimientos diferentes. En el primero, empleando las ecuaciones del circuito para escribir directamente el modelo y después, utilizando los componentes definidos en la biblioteca Modelica. C
LosF,parámetros del circuito para el ejemplo son: R = 200 Ω, L = 1,0 H, C = 0,0001 I f = 2 A (a partir de t = 0,02 s), i L (0) = 0 A y Vc (0) = 0 V.
392
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.12: Efecto del camio de los parámetros Figura 16.13: Circuito RLC paralelo
Simulación empleando las ecuaciones constitutivas de los elementos
Utilizando (16.3) y (16.4) y los valores de los parámetros establecidos, el programa Medelica para determinar la tensión a través del capacitor y la corriente por el inductor es: mo d el SisElec02_esm // Cir cui to RL C par ale lo // Mod elo co n ba se en las ecu aci one s de l cir cui to import Modelica.SIunits. * ; parameter Resis tance R = 200.0; parameter Capaci tance C = 0.0001;
16.2. Sistemas eléctricos
393
Figura 16.14: Diagrama de simulación del circuito RLC paralelo parameter Induc tance L = 1.0; Curre nt If "fuente" ; Volta ge Vc( start = 0, fi xed = tr ue) "tensi´on capac itor"; Curre nt Il( start = 0, fi xed = tr ue) "corrie nte induc tor"; equation If = if ti me > = 0.02 then 2 else 0.0; C * de r( Vc ) = If - V c / R - Il ; L * de r( Il ) = Vc ; annotation( experiment ( StopTime = 0.3, NumberO fInterva ls = 50 0) ) ; en d SisElec02_esm;
Modelado gráfico
El “programa” de simulación elaborado con el Model CenterSisElec02_osm.mo ( ), se muestra en la figura16.14. En este, se ha incluido un amperímetro y un voltímetro, los cuales si bien no son indispensables en este caso, sirven para ilustrar el uso de otros componentes disponibles. En la figura 16.15 se muestra la curva de la corriente por el inductor, obtenida con Il los doscon programas, con eldebería primeroser, y lalascorriente medida el amperímetro (azul) el segundo.(roja) Tal como dos curvas son con idénticas.
394
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.15: Corriente por el inductor Nótese que en este caso, se han desplegado en la misma figura, las curvas de respuesta obtenidas con dos modelos diferentes del mismo sistema, SisElec02_e.mo y SisElec02_o.mo. Los resultados de todos los modelos simulados, se encuentran disponibles en el navegador de variables.
16.2.3 Efecto de la temperatura sobre la resistencia eléctrica
En los ejemplos de las secciones 16.2.1 y 16.2.2 anteriores, se ha hecho uso de resistores eléctricos ideales, con una resistencia constante. Sin embargo, el componente Resistor de la biblioteca Modelica.Electrical.Analog.Basic, permite tomar en consideración el efecto de la temperatura sobre el valor de su resistencia. La resistencia del componente está dada por la relación R = R re f
donde:
1 + α Thp − Tre f
,
• R - resistencia del componente, • Rre f resistencia a la temperatura Tre f , • Thp - temperatura del puerto de calentamiento, • Tre f temperatura de referencia (preestablecida como 300,15 K). La ventana de parámetros del resistor se muestra en la figura 16.16.
(16.5)
16.2. Sistemas eléctricos
395
Figura 16.16: Parámetros del Resistor eléctrico
Figura 16.17: Rectificador de onda completa
16.2.4 Rectificador de onda completa En la figura 16.17 se muestra el diagrama de simulación, de un rectificador eléctrico de onda completa, que utiliza cuatro diodos ideales. Este incluye los siguientes componentes: Modelica.Blocks.Sources.BooleanStep Modelica.Electrical.Analog.Basic.Capacitor Modelica.Electrical.Analog.Basic.Ground Modelica.Electrical.Analog.Basic.Resistor Modelica.Electrical.Analog.Ideal.IdealDiode (4) Modelica.Electrical.Analog.Ideal.IdealClosingSwitch Modelica.Electrical.Analog.Ideal.IdealTransformer Modelica.Electrical.Analog.Sources.SineVoltage El modelo del circuito del rectificador es unmodelo híbrido, ya que mezcla com-
ponentes continuos con elementos discretos. El diodo es un componente discreto, ya que si conduce o no, depende de que se cumpla una condición. diodo no Si conduce (está “off”),(está no fluye corriente por elfluye y la tensión a través suyoSieselnegativa. el diodo conduce “on”), la corriente y la caída de
396
16 Modelado y simulación con Modelica y SystemModeler
tensión a través de el es cero. El diodo ideal es implementado con el siguiente código (Modelica Association, 2013): mo d el IdealDiode "Idea l diod e" extends Modelica.El ectrical.An alog.Inter faces.OnePo rt; parameter Modelica.SIunits .Resistan ce Ron (final mi n= 0 ) = 1 e - 05 "Forwar d stat e- on differ ential resis tance ( close d diod e resistance ) " ; parameter Modelica .SIunits. Conductanc e Goff (final mi n= 0 ) = 1 e - 05 "Backwar d stat e- off conduc tance ( opene d diod e conduct ance )"; parameter Modelica.SIunit s.Voltage Vkne(final e mi n= 0, sta rt= 0 ) "Forwar d thres hold volta ge" ; extends Modelica.Electrical.Analog.Interfaces. ConditionalHeatPort; Boole an off( start =true) "Switc hing stat e"; protected Real s ( start = 0 , final unit = " 1 ") "Auxil iary varia ble for act ual pos iti on on th e id eal dio de char act eris tic" ; // s = 0 : kne e poin t / / s < 0 : bel ow kn ee po in t, dio de con duc tin g / / s > 0 : abo ve kn ee po in t, dio de loc kin g constant Modelica .SIunits. Voltage unitVo ltage =1 annotation( HideResult =true) ; constant Modelica .SIunits. Current unitCu rrent =1 annotation( HideResult =true) ; equation of f = s < 0 ; v = s * unitCurrent *(if of f then 1 else Ro n) + Vknee; i = s * unitVoltage *(if of f then Goff else 1 ) + Goff * Vknee; LossPower = v * i ; .. . en d IdealDiode;
La fuente de alimentación es de 110 V, 60 Hz, la relación de transformación del transformador es 13,35, la capacitancia del filtro C = 0,005 F y la carga es resistiva, con una resistencia R = 100 Ω. La ventana de parámetros de la fuente de alimentación se muestra en la figura 16.18. Las señales de entrada y salida del rectificador se muestran en la figura 16.19. El valor medio de la tensión en la carga es de 11,55 V. El capacitor utilizado en el rectificador, tiene una capacitancia C = 0, 005 F. Se puede disminuir el “rizado” de la16.20, tensión en la carga, aumentado esta capacitancia, tal como se muestra en la figura utilizando C = 0,05 F.
16.2. Sistemas eléctricos
Figura 16.18: Parámetros del componente SineVoltage
Figura 16.19: Tensiones en el rectificador de onda completa Figura 16.20: Disminución del “rizado” de la tensión, aumentando la capacitancia del filtro
397
398
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.21: Sistema mecánico con elementos que se desplazan
16.3 Sistemas mecánicos con elementos que se desplazan En la sección 5.2.7 se describieron algunos de los componentes incluidos en la biblioteca Modelica, para modelar sistemas mecánicos con elementos que se desplazan en una dirección sobre un plano, que giran sobre su eje, o que son de tres dimensiones. Los sistemas mecánicos cuyos elementos se desplazan, se modelan con los componentes de la bibliotecaModelica.Mechanics.Traslational.
16.3.1 Sistema con masa, resorte y amortiguador Considérese por ejemplo, el sistema mecánico con una masa, un resorte y un amortiguador, mostrado en la figura16.21, en donde se aplica una fuerza a la masa. Un modelo para este sistema, está dado por las ecuaciones: m
dV (t ) = Fi (t ) − Fb (t ) − Fk (t ), dt d X (t ) V (t ) = , dt d X (t ) Fb (t ) = b , dt Fk (t ) = k X (t ).
(16.6) (16.7) (16.8) (16.9)
m = 36 kg, k = 1 Nm−1 y b = 1 −1 parámetros del sistema para NsmLos . La fuerza aplicada es Fi = 5elNejemplo para 2 son: ≤ t ≤ 30s y Fi = 0 N para todo otro
16.3. Sistemas mecánicos con elementos que se desplaza n
399
instante. Las condiciones iniciales son X (0) = 0 m y V (0) = 0 m s−1 . Simulación empleando las ecuaciones constitutivas de los elementos
Utilizando (16.6) a (16.9) y los valores de los parámetros establecidos, el programa Modelica para determinar la posición y la velocidad de la masa es: m od el SisMec01_extsm "Siste ma mec´ anico masa reso rte amorti guador" // Mod elo co n ba se en la s rel aci one s con tit uti vas import Modelica.SIunits. * ; parameter Mas s m = 2 "masa" ; parameter Real k = 1 "consta nte reso rte"; parameter Real b = 1 "coef . amorti guador"; Forc e fuerzaA plicad a"fuerz a aplic ada"; Force fuerzaResorte ,fuerzaA mortiguador ; Posit ion posic ion( start = 0, fix ed =true) "posic ion masa" ; Veloc ity veloci dad( start = 0, fix ed =true) "veloci dad masa"; equation m * de r( velocidad ) = fuerzaAplicada - fuerzaAmortiguador - fuerzaResorte; velocidad = de r( posicion ) ; b * velocidad = fuerzaAmortiguador; k * posicion = fuerzaResorte; fuerzaAplicada = if ti me > = 2 an d ti me < = 30 then 5 else 0; annotation( experiment ( StopTime = 60, NumberOf Interva ls = 1000 ) ) ; en d SisMec01_extsm;
En la figura 16.22 se muestra el comportamiento del sistema mecánico (posición, velocidad y fuerza aplicada). Modelado gráfico
El “programa” de simulación elaborado con el Model Center para modelar y simular el sistema mecánico de la figura 9.19 (SisMec01_o.mo), se muestra en la figura 16.23. En este se han utilizado los componentes mecánicos Fixed, Mass, Spring y Damper contenidos en la biblioteca Modelica.Mechanics.Traslational.Components , la fuerza tipo escalón Modelica.Mechanics.Traslational.Sources.ForceStep y el medidor Modelica.Mechanics.Traslational.Sensors.RelSpeedSensor . En la figura 16.24 se muestran las curvas de posición y velocidad de la masa, para 0 ≤ t ≤ 30 s, tomadas de un punto de conexión ( flange_b) del medidor de velocidad.
400
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.22: Posición y velocidad de la masa y fuerza aplicada Figura 16.23: Diagrama de simulación del sistema mecánico
16.3. Sistemas mecánicos con elementos que se desplaza n
401
Figura 16.24: Posición y velocidad de la masa Figura 16.25: Conjunto mecánico
16.3.2 Sistema mecánico “libre” En este ejemplo, el conjunto mecánico de la figura 16.25, está compuesto por una masa cilíndrica, un resorte y un amortiguador, conectados entre si. Un extremo del amortiguador se ha fijado a la pared y el otro, a un extremo de la masa. El extremo libre de la masa está sujeto a una placa con ruedas que se desliza sin fricción por el piso (se supone que la masa de la placa es despreciable). La masa cilíndrica junto con el amortiguador, se encuentran en la parte interna de un resorte, cuyos extremos están sujetos uno a la pared y el otro a la placa. La longitud de la masa cilíndrica es Lm . La longitud del amortiguador Lb (t ) puede variar desde L bmin hasta L bmax = 2Lmin cuando está extendido. Por lo tanto la longitud del resorte es L k (t ) = L m + Lb (t ). Cuando no está sometido a ninguna fuerza, el resorte tiene una longitud L ko . El 16.26. diagrama para la simulación de este conjunto con Modelica, se muestra en la figura
402
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.26: Diagrama de interconexión del conjunto mecánico
En este se han empleado los componentes Mass, Spring, Damper y Fixed, de la biblioteca Modelica.Mechanics.Translational.Components. Los parámetros del componenteMass (masa) son su masa m en kg y su longitud L en m. Por su parte los parámetros del componente Spring (resorte) son su constante k (c) en Nm −1 y su longitud sin estiramiento (s_real0). El único parámetro del componente Damper (amortiguador), es su constante de amortiguamiento b (d) en Nsm−1 . Para el ejemplo se utilizarán los siguientes parámetros: masa ( m = 20 kg, L = −1
−1
20 cm), resorte (c = 10inicialmente Nm , s_real0 = 50 cm), amortiguador (d = 10 Ns m ). El conjunto se encuentra en reposo. En la figura 16.27, se muestra el diagrama esquemático de este sistema con la indicación de las distancias, respecto a la pared de referencia, de los extremos de los componentes y del centro de masa de la masa cilíndrica. Primero se “arma” el conjunto, con el amortiguador con la longitud más corta entre sus extremos, indicando flange_b.s(start =0.2, fixed =true) como una condición inicial del modelo. El comportamiento del conjunto mecánico, a partir de estas condiciones, se muestra en la figura 16.28. Como se puede ver en esta figura, la solución del problema de valor inicial determinó que el centro de masa (c.m.) de la masa cilíndrica, se encuentra a 30 cm de la pared y que la longitud inicial del resorte es 40 cm (se ha comprimido 10 cm). La fuerza ocasionada por compresión del resorte, hace que este se estire hasta alcanzar su longitud normal de 50 cm. Para un segundo caso, el conjunto de arma con el amortiguador “estirado” (a su longitud máxima). Para cambiar la posición inicial del extremo del amortiguador conectado a laesto, masabasta flange_b.s(start =0.4, fixed =true).
16.3. Sistemas mecánicos con elementos que se desplaza n
Figura 16.27: Diagrama de interconexión del conjunto mecánico
0 = 20 cm) Figura 16.28: Comportamiento del conjunto mecánico ( fbb
403
404
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.29: Comportamiento del conjunto mecá0 = 40 cm) nico ( fbb
Como se observa en la figura 16.29, el centro de la masa cilíndrica, se encuentra ahora inicialmente a 50 cm de la pared y la longitud inicial del resorte es 60 cm (se ha estirado 10 cm). Luego de “soltar” el conjunto, este alcanza el mismo punto de equilibrio que en el caso anterior. Se puede confirmar fácilmente, que si se especifica como posición inicial del extremo del amortiguadorflange_b.s(start =0.3, fixed =true), el conjunto no experimentará ningún movimiento, ya que el resorte no estará inicialmente, ni comprimido ni estirado.
16.4 Sistemas mecánicos con elementos que giran Los sistemas mecánicos cuyos elementos giran, se modelan con los componentes de la biblioteca Modelica.Mechanics.Rotational.
16.4.1 Sistema con un volante y un resorte y un amortiguador giratorios En la figura 16.30 se muestra un sistema mecánico simple cuyos elementos giran. Una masa giratoria (volante), está conectada a una barra (resorte giratorio) y a un amortiguador giratorio.
405
16.4. Sistemas mecánicos con elementos que giran
Figura 16.30: Sistema mecánico que gira
Figura 16.31: Diagrama de simulación de un sistema mecánico que gira Los parámetros del sistema son: inercia J = 10 kgm 2 , constante del resorte K = 10 Nm rad −1 y coeficiente del amortiguador B = 5 Nm rad−1 s−1 . Se aplica un par tipo escalón al eje libre de la inercia T = −10 Nm en t = 2 s. Se desea ver como cambia la velocidad de rotación de los dos ejes del sistema. El diagrama Modelica para simular este sistema, se muestra en la figura 16.31. En este diagrama se ha utilizado los siguientes componentes: Modelica.Mechanics.Rotational.Components.Fixed Modelica.Mechanics.Rotational.Components.Inertia Modelica.Mechanics.Rotational.Components.Spring Modelica.Mechanics.Rotational.Components.Damper Modelica.Mechanics.Rotational.Sensors.SpeedSensor Modelica.Mechanics.Rotational.Sources.TorqueStep
(2)
406
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.32: Velocidades de rotación en el sistema mecánico giratorio En la figura 16.32 se muestra la velocidad de rotación en los dos extremos del resorte giratorio. El extremo conectado a la inercia ( medidor_1.flang_b) empieza a girar primero e inicialmente más rápido, que el extremo conectado al amortiguador (medidor_2.flange_b ). Después de aproximadamente un minuto, los dos ejes alcanzan la misma velocidad de rotación y estas permanecen constantes (ω1 (t ) = ω2 (t ) = 2 rads −1 ).
16.4.2 Máquina giratoria desbalanceada Se tiene una máquina giratoria (motor eléctrico, compresosr, turbina, u otra) cuyo rotor está desbalanceado. El diagrama de la máquina se muestra en la figura 16.33 (Speckhart y Green, 1976). La masa total de la máquina esM . El rotor tiene una masa desbalanceadam, cuyo centro de masa está a una distancia r del centro del rotor. La máquina se ha montado sobre un soporte, compuesto por un resorte equivalente (k) y un amortiguador (b). Se tomará como posición de referencia, la posición de la máquina detenida descansando sobre el soporte. La ecuación del movimiento de la máquina esta dada por la expresión 2 x(t ) x(t ) M d 2 +bd + kx(t ) = fm (t ), dt dt
(16.10)
16.4. Sistemas mecánicos con elementos que giran
407
Figura 16.33: Máquina giratoria desbalanceada
donde la fuerza producida por la masa desbalanceada es 2
fm (t ) = mr ω
sen(ω t ). Producto del desbalance del rotor, se transmite al piso una fuerza ft p (t ) = kx (t ) + b
dx(t ) . dt
(16.11) (16.12)
Los parámetros de la máquina son: M = 50 kg, m = 0,10 kg, r = 0, 05 m, k = 25 Nm −1 y b = 4 Nsm −1 . La velocidad nominal de rotación de la máquina es de 1200 revoluciones por minuto (ω = 125, 66 rads−1 ) y en el arranque, la máquina se acelera en forma constante, de tal manera que tarde 10 s en alcanzarla. El programa de simulación de la máquina desbalanceada con Modelica, es m od el SisMec04MaqDesbsm parameter Real M = 50 "mas a tot al"; parameter Real m = 0 .1 "masa desbala nceada"; parameter Real b = 4 "amortiguador" ; parameter Real k = 25 "resorte" ; parameter Real r = 0.05;
408
16 Modelado y simulación con Modelica y SystemModeler
(a) Desplazamiento de la máquina
(b) Fuerza transmitida al piso
Figura 16.34: Comportamiento de la máquina desbalanceada durante el arranque Real w,fm,ftp; Real po s( start = 0, fix ed =true) ; Real ve l( start = 0, fix ed =true) ; annotation( experiment ( StartTime = 0.0, StopT ime= 120, NumberOfIntervals = - 1, Algori thm= "dassl" , Tolera nce= 1 e - 06 ) ) ; equation w = if ti me < 1 0 then 12.567 * time else 125.67; M * de r( ve l ) + b * ve l + k * po s = fm ; ve l= de r( po s) ; fm = m * r * w ^2 * si n ( w * time ) ; ft p = k * po s + b * vel; en d SisMec04MaqDesbsm;
El comportamiento de la máquina, durante los primeros dos minutos de operación, se muestra en la figura 9.32. El desplazamiento máximo de la máquina durante el arranque es de +8 mm/-7 mm y en estado estacionario este es de +0,35 mm/-0,30 mm (figura 16.34a). La fuerza transmitida al piso en estado estacionario, producto del desbalance de la máquina, es de +0,055 N/-0,045 N (figura 16.34b).
16.4.3 Péndulo con amortiguamiento En el desarrollo realizado en la sección 4.2.13, para obtener los modelos del péndulo de la figura 4.2, se consideró que el aire no ofrecía ninguna resistencia al movimiento del péndulo. Se supondrá ahora que la fuerza de resistencia del aire, es proporcional a la El velocidad del péndulo. péndulo angular amortiguado se muestra en la figura 16.35 y su modelo está dado por
16.4. Sistemas mecánicos con elementos que giran
409
Figura 16.35: Péndulo con amortiguamiento
las siguientes ecuaciones: ω (t ) =
d θ (t ) , dt
(16.13)
dω (t ) mL2 + Lmgsin(θ (t )) + Lbω (t ) = 0. (16.14) dt Los parámetros utilizados en el ejemplo son: masa m = 1 kg, largo L = 1 m y coeficiente de fricción con el aire b = 0,75 kgm s−1 . El modelo Modelica del péndulo amortiguado es m od el DampedPendulumsm " Pendu ´ lo amorti guado" import Modelica.Constants.pi; constant Real g = 9.80 "gravedad" ; parameter Real L = 0 .5 "largo" ; parameter Real m = 1 "masa" ; parameter Real b = 0.75 "fricci´on "; parameter Real posAngic = 1 "posici´on ini cia l"; parameter Real velAngic = 10 "veloci dad inici al"; Real posAn g , velAng; initial equation posAng = posAngic; velAng = velAngic; equation velAng = de r( posAng ) ; m * L ^ 2 * de r( velAng ) + L * m * g * si n( posAng ) + L * b * velAng = 0;
410
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.36: Plano de fase del péndulo con amortiguamiento annotation( experiment ( StopTime en d DampedPendulumsm;
= 10 ) ) ;
En la figura 16.36 se muestra el plano de fase del péndulo amortiguado con difevelAngic rentes puntos de partida ). Como se aprecia en (elposAngic plano de, fase, independientemente del punto de partida del péndulo (posición y velocidad), el péndulo siempre alcanza un punto de equilibrio con velocidad angular (velang) cero y una posición angular ( posAng) cero o múltiplo de 2π . La oscilación del péndulo es amortiguada, hasta que este se detiene.
16.5 Sistemas hidráulicos Se presentarán aquí algunos ejemplos de modelos Modelica de sitemas hidráulicos, formados por la interconexión de tanques y válvulas. Estos se modelarán utilizando ecuaciones.
16.5.1 Sistema hidráulico con un tanque En la figura 16.37 se muestra un proceso hidráulico simple, compuesto por un tanque A, con la parte superior abierta a la atmósfera y una válvula de de área transversal descarga al medio ambiente, de constante Kv .
411
16.5. Sistemas hidráulicos
Figura 16.37: Sistema hidráulico simple
Haciendo un balance volumétrico del fluido en el tanque, las ecuaciones del modelo de este sistema son: dH (t ) = Qe (t ) − Qs (t ), A (16.15) dt Qs (t ) = Kv ρ gH (t ). (16.16)
Se desea analizar como varía el nivel del líquido en el tanque, que está inicialmente vacío, si el caudal de entrada Qe (t ) = 0 ,25 m3 s−1 para 5 s ≤ t ≤ 150 s y Qe (t ) = 0 para cualquier otro instante. El fluido es agua (ρ = 1000 kg m−3 ) y los parámetros del sistema para la simulación son: área transversal del tanqueA = 2 m2 , constante de la válvulaKv = 0,002062 y la aceleración de la gravedad g = 9, 8 m s−2 . El nivel del líquido está dado en m. El programa de simulación con Modelica es m od el SisHidra01_esm // Sis tem a hid r´ aul ico de un tan que // V´alv ula no lin eal constant Real g ( unit = "m/s2" ) = 9.80; parameter Real A ( unit = "m2" ) = 2 " area ´ tanque" ; parameter Real df ( unit = "kg/m3" ) = 1000 "densid ad flui do"; parameter Real Kv = 0.002062 "const ant e v´ alvula" ; Real H ( unit = " m ", sta rt = 0, fix ed = tr ue) "nivel" ; Real Qe ( unit = "m3/s" ) "caud al entra da"; Real Qs ( unit = "m3/s" ) "caud al sali da"; equation Qe = if ti me > 5 an d ti me < 15 0 then 0.25 else 0; A * de r( H ) = Qe - Qs ; Qs = if noEvent ( H >= 0 ) th en Kv * sqrt ( df * g * H ) el se 0; annotation( experiment ( StopTime = 20 0) ) ; en d SisHidra01_esm;
En este ejemplo, además de los comentarios de definición, se han establecido las unidades (unit) de las
navegador de variables.variables, las cuales se desplegarán en la columna “Unit” del
412
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.38: Variables del sistema hidráulico simple En la figura 16.38 se muestra la variación del nivel del fluido en el tanque, así como los caudales de entrada y salida del mismo. En el instante t = 5 s, el caudal de entrada pasa de cero a 0,25 m 3 s−1 y el tanque empieza a llenarse. El fluido se acumula en el tanque y el nivel del líquido en el mismo aumenta, haciendo a su vez que el caudal de descarga (salida) aumente. El sistema alcanza el punto de equilibrio (Qs (t ) = Q e (t )) cuando el nivel del líquido
H 0 = 1,5 m.
A partir del punto de equilibrio, cuando el caudal de entrada se hace nuevamente cero, el tanque se vacía rápidamente. Debido a que la válvula de descarga es no lineal, las características dinámicas del proceso cuando el tanque se está llenado, son diferentes de cuando este se está vaciando.
16.5.2 Sistema con dos tanques en serie Se dirá que dos sistemas están en serie, si la salida del primero es la entrada del segundo. En este caso, la causalidad entrada a salida está bien definida. Un sistema de este tipo, es el compuesto por dos tanques abiertos a la atmósfera con su correspondiente válvula de descarga, colocados en dos niveles diferentes, donde el tanque más elevado descarga en el segundo, tal como se muestra en la figura 16.39. Los datos para la simulación son: fluido (ρ = 1000 kg m−3 ); áreas de los tanques
A1 = 2 m 2 , A 2 = 4 m 2 ; constantes de las válvulas Kv1 = 0,002062, Kv2 = 0,001786;
16.5. Sistemas hidráulicos
413
Figura 16.39: Sistema de dos tanques en serie
aceleración de la gravedadg = 9, 8 m s−2 ; niveles H1 y H2 en m; y caudal de entrada para 5 s ≤ t ≤ 450 s. El programa Modelica para simular este sistema es
Qe (t ) = 0,25 m3 s−1
m od el SisHidra02_esm // Sis tem a hid r´ aul ico , do s tan que s en ser ie // V´alvul as no linea les constant Real g ( unit = "m/s2" ) = 9.80; parameter Real A1 ( unit = "m2" ) = 2 " ar ´ ea tan que 1"; parameter Real A2 ( unit = "m2" ) = 4 " ar ´ ea tan que 2"; parameter Real df ( unit = "kg/m3" ) = 1000 "densid ad flui do"; parameter Real Kv 1 = 0.002062 "const ant e v´ alv ula 1"; parameter Real Kv 2 = 0.001786 "const ant e v´ alv ula 2"; Real H1 ( unit = " m ", sta rt = 0, fix ed = tr ue) "niv el 1" ; Real H2 ( unit = " m ", sta rt = 0, fix ed = tr ue) "niv el 2" ; Real Qe ( unit = "m3/s" ) "caud al entra da"; Real Qs 1( unit = "m3/s" ) "cau dal sal ida 1"; Real Qs 2( unit = "m3/s" ) "cau dal sal ida 2"; equation Qe = if ti me > 5 an d ti me < 45 0 then 0.25 else 0; A1 * de r( H1 ) = Qe - Qs1; A2 * de r( H2 ) = Qs 1 - Qs2; Qs 1 = if noEvent ( H1 >= 0 ) th en Kv 1 * sqrt ( df * g * H1 ) el se 0; Qs 2 = if noEvent ( H2 >= 0 ) th en Kv 2 * sqrt ( df * g * H2 ) el se 0; annotation( experiment ( StopTime = 60 0) ) ; en d SisHidra02_esm;
En la figura 16.40 se muestra la variación de los niveles del fluido en los tanques y de los caudales, para 0 ≤ t ≤ 600 s. En elson estado de equilibrio, con Q e (t ) = 0,25 m3 s−1 constante, los niveles en los tanques H10 = 1,5 m y H20 = 2,0 m. Para mantenerQ s2 (t ) = Qs1 (t ) = Qe (t ), H2 (t )
414
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.40: Comportamiento del sistema de tanques en serie debe ser mayor que H1 (t ), ya que Kv2 < Kv1 . En este sistema hidráulico la causalidad es clara. El primer tanque tiene una “variable de entrada” ( Qe (t )) y “variables de salida” ( H1 (t ), Qs1 (t )). Por su parte, el segundo tanque tiene una variable de entrada (Qs1 (t ) que depende de H1 (t )) y variables de salida (H2 (t ), Q s2 (t )). Si se define el conjunto de parámetros del conjunto (tanque, válvula) como θ p = {A, Kv }, se tiene que las variables en el sistema están dadas por relaciones de la forma H1 (t ) = f1 (θ p1 , Qe (t )), Qs1 (t ) = f2 (θ p1 , Qe (t )), H2 (t ) = f3 (θ p2 , Qs1 (t )), = f 5 (θ p1 , θ p2 , Qe (t )), Qs2 (t ) = f4 (θ p2 , Qs1 (t )) = f6 (θ p1 , θ p2 , Qe (t )).
(16.17) (16.18) (16.19) (16.20)
Aunque es evidente de la figura 9.37, es importante hacer notar aquí, en contraposición con lo que se verá en el sistema de la siguiente sección, que las variables del primer tanque, no dependen de las variables ni de los parámetros del segundo tanque, pero que las variables del segundo tanque si dependen de las variables y parámetros del primero.
415
16.5. Sistemas hidráulicos
Figura 16.41: Sistema de dos tanques en serie
16.5.3 Sistema con dos tanques interconectados Considérese ahora el sistemas de dos tanques, con sus bases al mismo nivel y conectados como se ilustra en la figura 16.41. Las ecuaciones que modelan el comportamiento dinámico en los dos tanques, son dH1 (t ) = Qe1 (t ) − Q12 (t ), dt dH2 (t ) A2 = Qe2 (t ) + Q12 (t ) − Qs2 (t ), dt Q12 (t ) = signo(H1 (t ) − H2 (t ))Kv1 ρ g |H1 (t ) − H2 (t )|, A1
Qs2 (t ) = Kv2
ρ gH2 (t ).
(16.21) (16.22) (16.23) (16.24)
En forma compacta, el conjunto de ecuaciones anteriores se puede escribir como {H1 (t ), H2 (t ), Q12 (t ), Qs2 (t )} = f (θ p1 , θ p2 , Qe1 (t ), Qe2 (t )) ,
(16.25)
evidenciando que todas las variables del sistema, dependen de los estímulos aplicados y de los parámetros de ambos tanques. Este es un modelo no causal. Los datos para la simulación son: fluido (ρ = 1000 kg m−3 ); áreas de los tanques A1 = 2 m 2 , A 2 = 4 m 2 ; constantes de las válvulas Kv1 = 0,002062, K v2 = 0,001786; aceleración de la gravedad g = 9, 8 m s−2 ; niveles H1 y H2 en m; caudales de entrada Qe1 (t ) = 0,25 m 3 s−1 para 5 s ≤ t ≤ 700 s y Q e2 (t ) = 0,40 m 3 s−1 para 700 s ≤ t ≤ 1800 s. Las áreas transversales de los tanques y la apertura de las válvulas, son las mismas que en el sistemas de dos tanques en serie de la sección 9.5.2. El programa Modelica para simular este sistema es m od el SisHidra04_esm
416
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.42: Comportamiento de dos tanques interconectados // Sis tem a hid r´ auli co , dos tanqu es interco nectado s / / V´alvul as no linea les constant Real g ( unit = "m/s2" ) = 9.80; parameter Real A1 ( unit = "m2" ) = 2 "ar ea tan que 1"; parameter Real A2 ( unit = "m2" ) = 4 "ar ea tan que 2"; parameter Real df ( unit = "kg/m3" ) = 1000 "densi dad fluid o"; parameter Real Kv 1= 0.002062 "const ant e val vul a 1" ; parameter Real Kv 2= 0.001786 "const ant e val vul a 2" ; Real H1 ( unit = " m " , sta rt = 0, fi xed =true) "niv el 1" ; Real H2 ( unit = " m " , sta rt = 0, fi xed =true) "niv el 2" ; Real Qe 1( unit = "m3/s" ) "cau dal ent rad a 1"; Real Qe 2( unit = "m3/s" ) "cau dal ent rad a 2"; Real Q1 2( unit = "m3/s" ) "c au da l d e 1 a 2" ; Real Qs 2( unit = "m3/s" ) "cau dal sal ida 2"; equation Qe 1= if ti me > 5 an d ti me < 70 0 then 0.25 else 0; Qe 2= if ti me > 70 0 an d tim e < 18 00 then 0.395 else 0; A1 * de r( H1 ) = Qe 1 - Q12; A2 * de r( H2 ) = Qe 2 + Q1 2 - Qs2; Q1 2 = if noEvent ( H1 - H2 >= 0 ) th en Kv 1* sqrt ( df * g * ( H1 - H2 ) ) el se -Kv 1* sqrt ( df * g * ( H2 - H1 ) ) ; Qs 2 = if noEvent ( H2 >= 0 ) th en Kv 2* sqrt ( df * g * H2 ) el se 0; annotation( experiment ( StopTime = 2000 ) ) ; en d SisHidra04_esm;
En la figura 16.42 se muestra la variación de los niveles del fluido y de los caudales en los dos tanques. Se puede analizar el comportamiento del sistema en tres intervalos de tiempo: 1. Para 5 s ≤ t ≤ 700 s, Q e1 (t ) > 0 y Q e2 (t ) = 0, y por lo tanto siempre H1 (t ) >
417
16.5. Sistemas hidráulicos
Figura 16.43: Sistema hidráulico con un tanque esférico
H2 (t ). En el punto de equilibrio para Q e1 (t ) = 0,25 m 3 s−1
y Q e2 = 0, H 201 = 2 m (obviamente igual al nivel necesario en el sistema con los dos tanques en serie, con los mismos parámetros y condiciones de caudal), pero H101 = 3,50m.
2. En el intervalo 700 s ≤ t ≤ 1800 s, Qe1 (t ) = 0 y Qe2 (t ) > 0. Inicialmente H1 (700) > H 2 (700) ( Q12 > 0), por lo que H2 aumenta mientras que H1 disminuye, hasta que se hace ligeramente inferior a H 2 , entonces Q12 se vuelve “negativo”, es,segundo se invierte el sentido de flujo los dosaumentan tanques. Ahora el líquido esto va del tanque al primero, losentre dos niveles (con nuevo punto de equilibrio. Evidentemente en este nuevo punto de equilibrio, el nivel en los dos tanques es igual (H102(t ) = H202(t ) = 5 m).
H1 (t ) < H 2 (t )) hasta que se alcanza un
3. Finalmente para 1800 s ≤ t ≤ 2000 s, Qe1 (t ) = 0 y Qe2 (t ) = 0. Los tanques se vacían, los niveles del fluido en los mismos disminuyen, con H1 (t ) > H2 (t ) siempre, hasta que ambos llegan a cero.
16.5.4 Sistema hidráulico con un recipiente esférico En el sistema hidráulico de la figura 16.43, el recipiente es una esfera de radio R abierta a la atmósfera en la parte superior. La tubería de llenado está conectada a la parte más alta del recipiente y la de descarga, junto con una válvula, a la parte inferior del mismo. El volumen V del líquido en la esfera, en función del nivel H , es (Rivera, 2007) V (H (t )) =
π
3
H 2 (t ) [3R − H (t )] ,
(16.26)
418
16 Modelado y simulación con Modelica y SystemModeler
Por su parte, el área de la superficie del líquido es A(H (t )) = π H (t ) [2R − H (t )] ,
(16.27)
de manera que un diferencial de volumen en la superficie del líquido, sería dV (H (t )) = A(H (t ))dH (t ) = π H (t ) [2R − H (t )] dH (t ).
(16.28)
La variación del volumen de líquido en el recipiente, está dado por la expresión (balance volumétrico) dV (H (t )) = Qe (t ) − Qs (t ). (16.29) dt De (16.29), y (16.26) o (16.28), se obtiene el siguiente modelo para este sistema: Qe (t ) − Qs (t ) dH (t ) = , dt π H (t ) [2R − H (t )] Qs (t ) =Kv Xv
(16.30) (16.31)
ρ gH (t ).
donde, para el ejemplo, se tiene: ρ - densidad del fluido, ρ = 1000 kg m−3 , g - aceleración de la gravedad, g = 9,8 m s−2 , H - nivel de fluido en el recipiente, m, Kv - constante de la válvula de descarga, Kv = 0,001, Qe - caudal de entrada, m 3 s−1 , Qs - caudal de salida, m 3 s−1 , R - radio del recipiente esférico, R = 2,0 m, Xv - apertura de la válvula de descarga (0 a 1).
El modelo Modelica para la simulación de este sistema, es mo d el Esfera_esm "Sist ema co n tan que esferico" ´ import Modelica.Constants.pi; constant Real g = 9.80 "gravedad" ; parameter Real d = 1000 "densid ad flui do"; parameter Real R = 2 "radi o esfer a"; parameter Real Kv = 0.001 "con st. v´ alvula" ; parameter Real Xv = 0.01 "aper tur a v´ alvula" ; parameter Real Ht = 2 * R "ni vel m´ aximo" ; parameter Real Vt = 4 * pi * R ^ 3 / 3 "volu men Real Q e, Q s, V, H p, Vp ; Real H ; initial equation de r( H ) = 0;
maxi mo";
419
16.5. Sistemas hidráulicos
equation Qe = if ti me > de r( H ) = (Qe Qs = Kv * Xv * V = pi / 3 * H // Niv el y vol Hp = 10 0 * H /
2 then 0 .1 else 0.00028; Qs ) / ( pi * H * (2 * R - H ) ) ; sqrt ( d * g * H ) ; ^ 2 * (3 * R - H ) ; ume n en por cen taj e H t;
Vp 10 0 >= * V99.99 / V t;then when= Vp terminate( "Esfera llena" ) ; end whe n; annotation( experiment ( StopTime en d Esfera_esm;
= 36 0) ) ;
En este modelo se han incluido ecuaciones de declaración , para el cálculo del nivel máximo Ht y el volumen máximo (total)Vt del líquido en la esfera. Para el primer análisis, el sistema está en un punto estacionario, con la válvula de descarga abierta solo un 1 %, de manera que el caudal de salida sea muy pequeño. El caudal de entrada inicialmente es Q e = 0,00028 m3 s−1 (el requerido para que el nivel sea un 2%) y se cambia a Q e = 0,10 m3 s−1 en t = 0,10 s. La simulación se detendrá cuando la esfera esté llena al 99,99 % del volumen total. La variación del nivel y de la cantidad de líquido en el recipiente, se muestran en la figura 16.44. Como el caudal de salida es muy pequeño, con relación al de entrada, y casi no se ve afectado por el nivel del líquido, el volumen del líquido almacenado en la esfera aumenta en forma lineal, mientras que la variación del nivel muestra claramente la característica no lineal del recipiente esférico. En el modelo se indicó el intervalo para la simulación como StopTime = 360 s. Sin embargo, la simulación terminó en t = 341,29 s, con el siguiente mensaje por parte del compilador: [terminate]: Esfera llena Simulation terminated at time 341.287 ya que en ese instante, Vp = 99,99%.
Para analizar el comportamiento dinámico del sistema, a partir de un nivel determinado, ante un incremento en el caudal de entrada equivalente al 5% del caudal inicial y con la válvula de descarga abierta al 50%, el modelo Modelica anterior se modificó de la siguiente manera m od el Esfera_ensm import Modelica.Constants.pi; constant Real g = 9.80 "gravedad" ; parameter Real d = 1000 "densid ad flui do"; parameter Real R = 2 "radi o esfer a";
420
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.44: Nivel y volumen del fluido en la esfera
parameter "contur st.a v´ alvula" parameter Real Real Kv Xv = = 0.001 0 .5 "aper v´ alvula" ; ; parameter Real Ht = 2 * R "ni vel m´ aximo" ; parameter Real Vt = 4 * pi * R ^ 3 / 3 "volu men m´ aximo" ; parameter Real Qe i = 0.0885 "cau dal pa ra el ni vel ini cia l" ; Real Qe, Qs, H, V, Hp, Vp; initial equation de r( H ) = 0; equation Qe = if ti me > 5 then 1.05 * Qe i else Qei; de r( H ) = (Qe - Qs ) / ( pi * H * (2 * R - H ) ) ; Qs = Kv * Xv * sqrt ( d * g * H ) ; V = p i / 3 * H ^ 2 * (3 * R - H ) ; // Niv el y vol ume n en por cen taj e Hp = 10 0 * H / H t; Vp = 10 0 * V / V t; annotation( experiment ( StopTime = 25 00, Inter val = 1 ) ) ; en d Esfera_ensm;
En la figura 16.45 se muestra el cambio del nivel y del volumen de fluido en la 3
1
0 = 80% ( Qei = 0,885 m s− ). esfera, partiendo de Hdel Como resultado incremento del caudal de entrada, el volumen del líquido
16.6. Sistemas térmicos
421
Figura 16.45: Nivel y volumen, H0 = 80%, ∆Qe = 5%
almacenado en la esfera aumenta un 7,32% y el nivel un 10,11%. El comportamiento dinámico del sistema en ese punto (80%), muestra una ganancia K = 1833,67 m /(m3 /s) y que el tiempo requerido para que el cambio en el nivel alcance el 63,2% del cambio total t 63,2 % = 537,37 s .
16.6 Sistemas térmicos Los sistemas en los que se almacena, transfiere y disipa calor, se pueden modelar con los componentes de la bibliotecaModelica.Thermal.
16.6.1 Sistema con dos cámaras térmicas En la figura 16.46 se muestra un sistema compuesto por dos cámaras cerradas, cuyas paredes tienen aislamiento térmico. Se inyecta calor a una razón qe (t ) solo a la cámara 1. El aislante de la pared entre las dos cámaras tiene una resistencia térmica Rt 12 y las paredes exteriores de la cámara 1 y la 2 Rt 10 y Rt 20, respectivamente. El interior de las cámaras, se encuentra inicialmente a temperatura ambiente. Se desea investigar cómo varían las temperaturas interiores de las cámaras y los flujos de calor entre ellas y desde estas al medio ambiente, cuando se aplica calor a la primera. El diagrama de simulación con Modelica, para este sistema térmico, se muestra en laEnfigura el se 16.47. ha utilizado los siguientes componentes:
422
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.46: Sistema de cámaras con aislamiento térmico
Figura 16.47: Diagrama de simulación del sistema de cámaras con aislamiento térmico
423
16.6. Sistemas térmicos
Figura 16.48: Temperaturas y flujos de calor en las cámaras con aislamiento térmico
Modelica.Blocks.Sources.Step Modelica.Thermal.HeatTransfer.Celcius.FixedTemperatura Modelica.Thermal.HeatTransfer.Celcius.TemperaturaSensor (2) Modelica.Thermal.HeatTransfer.Components.HeatCapacitor (2) Modelica.Thermal.HeatTransfer.Components.ThermalResitor (3) Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow
Los parámetros del sistema son: capacitancias térmicas de las cámaras Ct 1 = Ct 2 = 10 J K−1 , resistencias térmicas de las paredes aisladas R t 12 = 5 K W−1 , R t 10 = Rt 20 = 20 KW −1 , temperatura inicial de las cámaras T10 = T20 = 20 ◦ C, temperatura ambiente T0 = 20 ◦ C, flujo de calor de entrada q e (t ) = 2 W para t ≥ 10 s En la figura 16.48 se muestran las temperaturas en las cámaras, el flujo de calor entre las cámaras y los flujos de calor de estas al medio ambiente. A partir de que se aplica el cambio en el flujo de calor de entrada, el sistema tarda aproximadamente 1200 s (≈ 20 min) en alcanzar el nuevo punto de equilibrio. Las temperaturas de las cámaras aumentan desde los 20 ◦C iniciales hasta T1o = 43,2 ◦ C ,7 ◦ C. En el nuevo estado estacionario, los flujos de calor sonqo12 = 0,89 W, yqoT2o==137 ,11 W y q 0 = 0,89 W (qo = qo , q o + qo = q ). 10
20
20
12
10
20
e
424
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.49: Horno eléctrico
Figura 16.50: Diagrama de simulación de un horno eléctrico
16.6.2 Horno eléctrico En la figura 16.49 se muestra un horno eléctrico con aislamiento térmico. Este conjuga componentes eléctricos y térmicos. La tensión de la alimentación eléctrica es variable y se ajustará de manera de calentar el horno en dos etapas. Para la simulación de este horno con Modelica, se ha elaborado el diagrama de interconexión mostrado en la figura 16.50, en el que se ha utilizado los siguientes componentes:. • Calentador eléctrico
425
16.6. Sistemas térmicos
Modelica.Electrical.Analog.Basic.HeatingResistor Modelica.Electrical.Analog.Basic.Ground Modelica.Electrical.Analog.Sources.TableVoltage
• Horno Modelica.Thermal.HeatTransfer.Celcius.FixedTemperature Modelica.Thermal.HeatTransfer.Celcius.TemperatureSensor Modelica.Thermal.HeatTransfer.Components.HeatCapacitor Modelica.Thermal.HeatTransfer.Components.ThermalResistor
Se desea calentar el horno desde la temperatura ambiente (28 ◦C) hasta 100 ◦C incrementando la tensiónV f de la fuente en una rampa. Una vez alcanzada esta temperatura, se incrementará la tensión de la alimentación eléctrica para llevarlo hasta 200 ◦C. Se mantendrá el horno a esta temperatura por aproximadamente 5 min y luego se apagará la alimentación eléctrica, dejando que el horno se enfríe en forma natural. Para lograr lo anterior, la tensión de la alimentación eléctrica debe ser: 1. t ≤ 10 s, V f = 0 V, 2. 10 s ≤ t ≤ 40 s, en una rampa de 30 s, V f va de 0 V a 19,3 V, 3. 40 s < t ≤ 770 s, V f = 19,3 V, 4. 770 s < t ≤ 800 s, en una rampa de 30 s, V f va de 19,3 V a 29,55 V, 5. 800 s < t ≤ 2300 s, V f = 29,55 V, 6. t > 2300 s, V = 0 V. Como alimentación eléctrica se emplea el componente TableVoltage de la biblioteca Modelica.Electrical.Analog.Sources. Esta fuente proporciona una tensión eléctrica por medio de la interpolación lineal de los datos de una matriz, cuya primera columna corresponde a los tiempos y la segunda a los valores de la tensión. Para este ejemplo, los valores de esta matriz se listan en el cuadro 16.1. En la figura 16.51, se muestra la ventana para la introducción de los parámetros de esta fuente. El resistor eléctrico, representado por el componente HeatingResistor delabiblioteca Modelica.Electrical.Analog.Basic, disipa el calor producido al medio externo por el terminal heatingresistor.heatPort, y su resistencia depende de la temperatura según la ecuación R = R re f
1 + α Thp − Tre f
.
(16.32)
426
16 Modelado y simulación con Modelica y SystemModeler
Cuadro 16.1: Per- Tiempo, s fil de la tensión de la alimentación 0 10 eléctrica 40 770 800 2300 2300 3500
Vf , V
0 0 19,30 19,30 29,55 0 0
Figura 16.51: Ventana de parámetros del componenteTableVoltage La transferencia de calor del resistor eléctrico al horno, está dada por la ecuación connect(heatingresistor1.heatPort, heatcapacitor1.port).
Otros parámetros del horno son: resistor eléctrico R = 10 Ω, α = 0,0001 K−1 , Tre f = 295,15 K (20 ◦C); capacitor térmico horno Ct = 100 JK −1 , resistor térmico Rt = 2 K W−1 ; temperatura ambiente Ta = 28 ◦ C. Los perfiles de la tensión eléctrica aplicada al resistor eléctrico y de la temperatura en el horno, se muestran en la figura 16.52. El ciclo completo de calentamiento y enfriamiento del horno, dura aproximadamente una hora.
16.7 Modelado y simulación de ecosistemas En ingeniería se entiende que un sistema dinámico, es cualquier sistema físico cuyas variables evolucionan en el tiempo. Sin embargo, el término dinámica de sistemas (“System Dynamics”) se emplea para describir la creación de los modelos y las simulaciones realizadas por los economistas. Este enfoque sistémico fue introducido por Forrester (1971), para el estudio de los sistemas dinámicos que describen las políticas corporativas, la interacción entre poblaciones, el desarrollo desistemas las áreaseconómicos urbanas, la. contaminación ambiental, la producción de alimentos y otros
16.7. Modelado y simulación de ecosi stemas
427
Figura 16.52: Comportamiento del horno eléctrico En vez de realizar un modelado en término de ecuaciones diferenciales y estados, el sistema está descrito por niveles (“levels”), cuyos valores se ven afectados por las tasas Los niveles ser porser ejemplo: la entrada población, el dinero, el inventasas de tario y(“rates”). el conocimiento. Laspueden tasas pueden como: la natalidad,
las ganancias, el contagio de un virus (infección) y el aprendizaje; o tasas de salida como: las defunciones, los gastos y el olvido, entre otras. Una aplicación de la dinámica de sistemas es la dinámica mundial , donde se destacan los modelos globales World2 (Forrester) y World3 (Meadows). La lista de niveles de un modelo mundial debe incluir, por lo menos: la población, la contaminación, la utilización de recursos, la inversión de capital, la fuerza laboral y la producción de alimentos (Cellier, 2008). La biblioteca que contiene los componentes para estas simulaciones, incluyendo los modelos World2 y World3, esSystemDynamics. Además provee varios “escenarios” para realizar las simulaciones.
16.7.1 Estimación del crecimiento demográfico de Costa Rica Un ejemplo sencillo de la utilización de la biblioteca SystemDynamics, se muestra en la figura de 16.53. diagrama de simulación Modelica,lapermite estimar el crecimiento una Este población (variable de nivel). con Se considera tasa de natalidad,
428
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.53: Diagrama para la simulación demográfica la tasa de defunciones y la migración (variables de flujo). En el diagrama se han utilizados los siguientes componentes: Modelica.Blocks.Math.Add SystemDynamics.Auxiliary.Gain (3) SystemDynamics.Levels.Level SystemDynamics.Rates.Rate_1 (3) SystemDynamics.Sources.Sink SystemDynamics.Sources.Source (2)
Para estimar el desarrollo demográfico de Costa Rica se ha tomado como población actual 4 600 000 habitantes. Las tasas anuales estimadas por cada mil habitantes son: 16 nacimientos, 4 muertes y 0,5 migrantes (tasa neta). La figura 16.54 muestra la proyección de la población, estimándose que dentro de 20 años, Costa Rica tendrá aproximadamente 5 907 000 habitantes.
16.7.2 Evolución de una epidemia La población total en una localidad donde hay una epidemia por un virus contagioso, está dividida en tres grupos: • En riesgo - personas sanas susceptibles de enfermarse,
16.7. Modelado y simulación de ecosi stemas
429
Figura 16.54: Estudio demográfico • Enfermos - personas enfermas con el virus, • Recuperados - personas curadas e inmunes al virus. El comportamiento de estos grupos de personas, está dado por las siguientes relaciones: d pEnRiesgo(t ) = −k1 pEnRie sgo pEn f ermas , (16.33) dt d pRecuperadas(t ) = k 2 pEnfermas , (16.34) dt d pEn f ermas(t ) = k 1 pEnRie sgo pEn f ermas − k2 pEnfermas . (16.35) dt Para el ejemplo se considerará una población total de 700 personas y una condición inicial (al detectarse la epidemia) de pEnriesgo (0) = 620, pEnfermas (0) = 10 y pRecuperadas (0) = 70. La velocidad de disminución de la enfermedad y la velocidad de recuperación de los enfermos, están dados por las constantes k 1 = 0,001 y k 2 = 0,072. Modelado mediante ecuaciones
El programa para analizar el comportamiento de la epidemia con Modelica, es
430
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.55: Evolución de una epidemia
mo d el Epidemiasm // Evolu ci´ on de la s pob lac ion es en un a epi dem ia constant Real k1 = 0.001 "disminuci´on enfer medad" ; constant Real k2 = 0.072 "recuperaci´on enf erm os"; Real pEnRiesgo ( start = 62 0, fixe d = tr ue) ; Real pEnfermas ( start = 10, fixe d = tr ue) ; Real pRecuperadas ( start = 70, fix ed = tr ue) ; equation de r( pEnRiesgo ) = -k1 * pEnRiesgo * pEnfermas; de r( pEnfermas ) = k1 * pEnRiesgo * pEnfermas - k2 * pEnfermas; de r( pRecuperadas ) = k2 * pEnfermas; annotation( experiment ( StopTime = 10 0) ) ; en d Epidemiasm;
La evolución de la epidemia durante 100 días, se muestra en la figura 16.55. Al inicio de la epidemia, el número de personas enfermas aumenta rápidamente, hasta alcanzar un máximo de poco más de 400 personas enfermas en el día 11. A partir ahí, el número enfermos disminuye y paralaelepidemia. día 100, todas las personas se hande recuperado y sonde inmunes al virus, terminado
16.7. Modelado y simulación de ecosi stemas
431
Figura 16.56: Epidemia grave - Diagrama de simulación Simulación utilizando la biblioteca SytemDynamics
En el escenario anterior, afortunadamente todas las personas infectadas por el virus se recuperaron. Considérese ahora que lamentablemente solo el 90% de las personas se recuperan (hay un 10 % de fallecidos). Se tomará una población inicial de 1000 personas, donde 999 están sanos y aparece una persona enferma. El diagrama de interconexión de componentes de la biblioteca SystemDynamics, paraEn analizar situación, se muestra en la figura 16.56. este seesta hannueva utilizado los siguientes componentes: SystemDynamics.Auxiliary.Constant (3) SystemDynamics.Auxiliary.Gain (4) SystemDynamics.Auxiliary.Prod_2 SystemDynamics.Levels.Level (4) SystemDynamics.Rates.Rate_1 (5) SystemDynamics.Sources.Sink (2) SystemDynamics.Sources.Source (1)
Ahora, al final de los 100 días, termina la epidemia, 900 personas se han recuperado pero hay 100 fallecidos, tal como se muestra en las curvas de evolución de la epidemia en la figura 9.65.
16.7.3 Modelo Lotka-Volterra presa y predador Si en un mismo sistema ecológico viven dos especies, estas pueden relacionarse entre si de diferentes maneras (Engel, 1978) 1. Depredación: La especie A (predadora) se alimenta de la especie B (presa).
432
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.57: Epidemia grave - Evolución de las poblaciones involucradas 2. Competencia: Las especies A y B compiten por el mismo recurso. 3. Simbiosis: La especie A depende en alguna forma de la especie B, pero al mismo tiempo estimula su crecimiento. El modelo de Lotka-Volterra para la relación entre dos especies, de las cuales una es la presa y la otra su predador, es: d pPresa = pPresa ( a1 − a2 pPredad or), dt
d pPredad or = − pPredad or ( b1 − b2 pPresa), dt donde: pPresa - población de la especie cazada, pDepredad or - población de la especie cazadora, a1 - razón de crecimiento natural de las presas, si no hubiera predadores, a2 - razón de caza de las presas por parte de los predadores, b1 b2 -
razón los predadores, hay presas para cazar, razón de de muerte aumentonatural de losde predadores debidosialno alimento cazado.
(16.36) (16.37)
16.7. Modelado y simulación de ecosi stemas
433
Figura 16.58: Evolución de las poblacion3s de la especies presa y predador Para la simulación se han seleccionado los siguientes parámetros: población inicial (10 predadores y 5 presas); a 1 = 1,50, a 2 = 0,25, b 1 = 2,50 y b 2 = 0,20. El modelo Modelica es: m od el LotkaVolterrasm // Mod elo pr esa - predador parameter Real a1 = 1 .5 "natali dad presa s"; parameter Real a2 = 0.25 "disminuci´on pre sas" ; parameter Real b1 = 2 .5 "mortalid ad predad ores"; parameter Real b2 = 0 .2 "incremen to predad ores"; Real pEsp1 ( start = 5, fi xed = tr ue) "Presas" ; Real pEsp2 ( start = 10, fix ed = tr ue) "Predadores" ; equation de r( pEsp1 ) = pEsp1 * (a1 - a2 * pEsp2 ) ; de r( pEsp2 ) = -pEsp2 * (b1 - b2 * pEsp1 ) ; annotation( experiment ( StopTime = 20, NumberOf Interva ls = 1000 ) ) ; en d LotkaVolterrasm;
La evolución de las dos especies se muestra en la figura 16.58. Además, en lael figura se muestra el plano de fase del comportamiento de las dos especies, cual es16.59 un ciclo límite.
434
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.59: Plano de fase de las poblaciones presa y predador Los puntos de equilibrio de (16.36) y (16.36) están dados por las siguientes expresiones: b1 , b2 a 1 pPredad oro = . a2 pPresao =
(16.38) (16.39)
Para los parámetros del ejemplo, el punto de equilibrio corresponde a 12,5 presas (si esto fuera posible) y 6 predadores, el cual se indica en la figura 16.59. Como las poblaciones iniciales escogidas para el ejemplo son 5 presas (menos que las del punto de equilibrio) y 10 predadores (más que las del punto de equilibrio), este se encuentra en el cuarto cuadrante. En ese punto el alimento (presas) es muy poco y la cantidad de predadores decrece rápidamente, pasando el sistema al tercer cuadrante. Al disminuir significativamente los cazadores (predadores), aumenta rápidamente la población de presas y el sistema pasa al segundo cuadrante. La gran cantidad alimento estimulaloelcual crecimiento la población que de cazadores el sistema pasa aldeprimer cuadrante, trae comodeconsecuencia disminuyay otra vez
16.8. Sistemas de control
435
Figura 16.60: Sistema de control de velocidad del motor de corriente continua el alimento y el sistema regresa al cuarto cuadrante, repitiéndose nuevamente el ciclo estable.
16.8 Sistemas de control Áreas que requieren del modelado de sistema heterogéneos y que hacen un uso intensivo de la simulación, son el análisis y el diseño de los sistemas de control. La biblioteca estándar de componentes Modelica.Blocks, provee bloques de funciones de transferencia, controladores y otros componentes, para simular sistemas representados mediante diagramas de bloques, o para integrar los elementos del sistema de control con el proceso controlado heterogéneo, formado por componentes de otras bibliotecas.
16.8.1 Control de velocidad de un motor de corriente continua En la figura 5.1 se presentó el diagrama de simulación Modelica del motor de corriente continua de la figura 2.13. Ahora se incorporarán los elementos necesarios para el control de su velocidad de rotación, tal como se ilustra en la figura 16.60. En el diagrama de simulación se utilizan los siguientes componentes: 1. Motor de corriente continua • Componentes eléctricos Modelica.Electrical.Analog.Basic.EMF Modelica.Electrical.Analog.Basic.Ground Modelica.Electrical.Analog.Basic.Inductor
436
16 Modelado y simulación con Modelica y SystemModeler
Modelica.Electrical.Analog.Basic.Resitor
• Componentes mecánicos Modelica.Mechanics.Rotational.Components.Damper Modelica.Mechanics.Rotational.Components.Inertia
2. Sistema de control • Elemento de medición (sensor transmisor) Modelica.Mechanics.Rotational.Sensors.SpeedSensor
• Controlador Modelica.Blocks.Continuous.PI Modelica.Blocks.Math.Feedback Modelica.Blocks.Sources.Step
• Elemento final de control Modelica.Electrical.Analog.Sources.SignalVoltage
3. Perturbación de carga Modelica.Mechanics.Rotational.Sources.TorqueStep
El diagrama de simulación de la figura16.60, incorpora componentes no causales eléctricos y mecánicos, y bloques causales. En este sistema existen por lo tanto tres dominios: el dominio de las variables mecánicas (posición, velocidad angular, par), en el rotor del motor y la carga; el dominio de las variables eléctricas (tensión y corriente eléctrica), en el circuito de armadura y la alimentación del motor; y el dominio de las “señales de control” (valor deseado, error, señal o esfuerzo de control). Por lo tanto, en el sistema varios compones cumplen la función de “interfaz” de conversión entre las diferentes dominios. El medidor de velocidad (SpeedSensor) provee el valor de la variable controlada, la velocidad de rotación del motor (señal realimentada) al sistema de control. Por lo tanto conecta los componentes mecánicos con los de control mediante las ecuaciones connect ( rotor.flange_b
, tacometro.flange ) ;
437
16.8. Sistemas de control
Figura 16.61: Controlador proporcional e integral (PI)
connect ( tacometro.w
, comparador_error.u2 ) ;
La fuente de energía (SignalVoltage) provee la tensión de alimentación al motor, de conformidad con la señal de control que le envía el controlador. Esta conecta los componentes de control con los eléctricos utilizando las ecuaciones connect ( PI. y,
signalVo ltage1. )v;
connect ( signalVoltage1.p
, Ra.p );
En el motor eléctrico se realiza la conversión de la energía eléctrica en energía mecánica (EMF). Así que conecta los componentes eléctricos con los mecánicos empleando las ecuaciones connect ( La. n,
emf. p) ;
connect ( emf.flange
, rotor.flange_a ) ;
Se utilizará el controlador con un algoritmo de control proporcional e integral (PI), mostrado en la figura 16.61, cuya señal de salida está dada por la ecuación u(s) = K p
1
1+
Ti s
e(s) = K p
1
1+
Ti s
[r(s) − y(s)],
(16.40)
donde K p es la ganancia del controlador, Ti la constante de tiempo integral, e(s) el error, r (s) el valor deseado,y (s) la señal realimentada y u (s) la señal de salida. En el diagrama de bloques de la figura 16.61 y en ( 16.40), se ha empleado la notación utilizada normalmente en los textos de teoría de control, para designar a las variables de un sistema de control realimentado. Es importante distinguir ahora, entre esta notación y la utilizada en los bloques Modelica. En Modelica, todas las entradas a un bloque, son denominadas con la letra “u” y la salida de un bloque, con la letra “y”. implementación proporcional e integral con Modelica, se rea-) liza La utilizando el bloquedel decontrolador un comparador ( Modelica.Blocks.Math.Feedback
438
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.62: Diagrama Modelica para un controlador PI
y el bloque de un algoritmo de control PI (Modelica.Blocks.Continuos.PI ), tal como se muestra en la figura 16.62. La ecuación del comparador es y=u1-u2 y la del PI y=k(Ts+1)/(Ts)u. En el bloque PI, la ganancia del controlador esk =. K p y el tiempo integralT =. Ti que tiene unidades de segundo. Por lo tanto, la entrada del valor deseado r es feedback1.u1, la entrada de la señal realimentada y es feedback1.u2, el error e es la salida del comparador feedback1.y, la entrada al algoritmo PI es PI.u, y la señal de salida del controlador u PI.y. La conexión entre los dos bloques la establece la ecuación de conexión connect(feedback1.y, PI.u). La asignación de variables y la conexión entre los bloques la hace automáticamente lado. el editor gráfico, al elaborarse el diagrama de interconexión del sistema simuLos parámetros del motor son: R a = 2,25 Ω , L a = 0,20 H, J = 0,05 kgm 2 , B = 0,01 Nm s y K = Ke = 0,0675 V/(rad/s) = Kt = 0,0675 NmA −1 . Los parámetros del algoritmo de control proporcional integral (PI) son: K p = 0,50 y Ti = 2,0 s. El motor se encuentra inicialmente detenido. En el instantet = 5 s se introduce el valor deseado de la velocidad de rotación del motor ω r = 50 rads −1 . Posteriormente en t = 40 s, se aplica una perturbación (par de carga) TL = −0,15 Nm. En la figura 16.63 se muestra el valor deseado (r) y el valor real (y) de la velocidad del motor, para 0 ≤ t ≤ 70 s. Además, se muestra la señal de salida del controlador (u). Al darse el cambio en el valor deseado, el sistema de control lleva el motor a la velocidad indicada (ωr = 1000 rads −1 ) sin error permanente. Además, cuando se presenta el par perturbador, que produce un descenso en la velocidad de rotación del motor, sistema control toma la acción correctiva para llevar la velocidad de rotación delelmotor dede regreso a su valor deseado.
16.8. Sistemas de control
439
Figura 16.63: Sistema de control de velocidad del motor de corriente continua Creación de submodelos
Los componentes de un modelo se pueden agrupar en un submodelo (bloque), una vez seleccionados con el apuntador, abriendo el menú de opciones con el botón derecho y seleccionando “Transform into New Class”, como se muestra en la figura 16.64 para los componentes mecánicos del sistema de control de la figura 16.60. El sistema de control del motor de corriente directa, se ha reducido a la interconexión de tres bloques (submodelos), mostrada en la figura16.65. En esta también se muestra el contenido de cada uno de los bloques.
16.8.2 Sistemas de control en diagramas de bloques Una forma “tradicional” de efectuar la simulación de los sistemas dinámicos, es utilizando diagramas de bloques . En estos, por lo general, algunos de los bloques representan la función de transferencia de los componentes del sistema simulado. Por lo trata usualmente deque la utilización de una de tanto, orden se reducido, de sistemas por lo general sonaproximación no lineales. lineal, e incluso
440
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.64: Selección de componentes para formar un submodelo Sin embargo, en muchas ocasiones esta metodología es de utilidad. Por ejemplo, cuando se ha obtenido un modelo lineal para representar al proceso controlado en los estudios de control. En la figura 16.66 se muestra el diagrama de bloques realizado con Modelica, de un lazo de control realimentado PID, para un proceso de segundo orden más tiempo muerto. En este se utilizan los siguientes componentes: Modelica.Blocks.Continuous.LimPID Modelica.Blocks.Continuous.SecondOrder Modelica.Blocks.Nonlinear.FixedDelay Modelica.Blocks.Math.Add Modelica.Blocks.Sources.Step (2)
El modelo del proceso controlado es de la forma ωw2 K e−Ls P(s) = 2 , s + 2ζ ωn s + ωn2
(16.41)
con ganancia K = 1, frecuencia natural ωn = 2 rads −1 , razón de amortiguamiento ζ = 2 (sobre amortiguado) y tiempo muerto aparente L = 0,5 s. La biblioteca Modelica.Blocks.Continuous incluye tres bloques de control: los algoritmos básicos proporcional e integral ( PI) y proporcional, integral y deriPID), los cuales operan directamente sobre su vativo filtro derivativo entradaestándar (la señalcon de error), y el bloque( LimPID .
16.8. Sistemas de control
Figura 16.65: Sistema de control reducido y contenido de cada bloque
441
442
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.66: Sistema de control PID El algoritmo de control del bloque Modelica.Blocks.Continuous.LimPID, es proporcional, integral y derivativo (PID) de dos grados de libertad. Este bloque incluye el comparador de error, limitadores de la señal de salida y prevención del desbordamiento de la acción integral, tal como se describe en Åström y Hägglund (1995). Este será el utilizado en este ejemplo. Los parámetros para el controlador utilizado son: K p = 1,25, Ti = 1, 20 s, Td = 0,30 s, β = 0,50 y γ = 0. Estos corresponden, en la ventana de parámetros del bloque LimPID, a: k , Ti, Td , wp y wd ,
respectivamente. En la figura 16.67 se muestra el comportamiento de la variable controlada y de la señal de salida del controlador, ante un cambio en el valor deseado ∆r = 10 % (en t = 1 s), seguido posteriormente de un cambio en la perturbación ∆ d = 5% (en t = 15 s). Como las señales del gráfico se han seleccionado como las salidas de los diferentes bloques, estas están identificadas como nombreBloque.y, esto es, como la propiedad “y” (salida) del bloque. Bloques para representar al proceso controlado
Las bibliotecas de bloques agrupadas en la biblioteca Modelica.Blocks proveen una gran variedad de bloques continuos, discretos, no lineales y de operaciones matemáticas, que pueden utilizarse para representar el modelo, del proceso controlado por ejemplo, en el diagrama de bloques de un sistema de control. Algunos bloques son: Integrator - integral (K ). Derivative - derivada “real” (K , T ).
16.8. Sistemas de control
443
Figura 16.67: Comportamiento del sistema de control PID FirstOrder - función de transferencia de primer orden ( K , T ). SecondOrder - función de transferencia de segundo orden (K , ζ , ωn ). TransferFuncion - función de transferencia, cociente de dos polinomios. FixedDelay - tiempo muerto fijo (L). PadeDelay - aproximación de Padé del tiempo muerto ( L, n , m ).
16.8.3 Efecto del periodo de muestreo en un sistema de control digital Supóngase que se tiene un controlador digital, para el control de un proceso simple. Se desea investigar el efecto que pudiera tener el periodo de muestreo utilizado en el controlador, sobre el comportamiento del sistema de control. En la figura 16.68 se muestra el control proporcional de un proceso de segundo orden de polo doble. En este se incluye un “muestreador” (convertido A/D) y un “retenedor de orden cero” (convertidor D/A), como los puntos de conexión (entrada y salida), del controlador con el proceso controlado. Los componentes usados son: Modelica.Blocks.Continuous.FirstOrder (2) Modelica.Blocks.Discrete.Sampler Modelica.Blocks.Discrete.ZeroOrderHold Modelica.Blocks.Math.Feedback
444
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.68: Diagrama del sistema de control digital
Figura 16.69: Comportamiento de la variable controlada con dos periodos de muestro distintos Modelica.Blocks.Math.Gain Modelica.Blocks.Sources.Step
La ganancia del modelo del proceso esK = 1 y las constantes de tiempoT = 10 s. El controlador tiene una ganancia K p = 4. En la figura 16.69 se muestran las respuestas del sistema de control, ante un cambio escalón en el valor deseado ∆ r = 5 % aplicado en t = 5 s, con dos periodos de muestreo (∆T ∈ {0,1 s , 5,0 s }). Se utilizará el mismo periodo de muestreo en el muestreador y en orden cero. al periodo de muestreo Las curvas deellaretenedor izquierda,decorresponden
∆T = 0 ,1
s
445
16.8. Sistemas de control
Figura 16.70: Realimentación lineal en el estado (rápido) y las de la derecha, a ∆T = 5,0 s (lento). Es evidente como, al disminuirse la velocidad de muestreo (incrementando su periodo), a valores inapropiados para la dinámica del modelo del proceso controlado simulado, se deteriora el comportamiento del sistema de control. La respuesta inicial es más lenta (tiene un mayor tiempo de levantamiento y un mayor tiempo al pico), el sobrepaso máximo aumenta, el sistema es más oscilatorio (disminuye el amortiguamiento), y tarda más en estabilizarse (el tiempo de asentamiento aumenta). Como era de esperase, el cambio en el periodo de muestreo no afecta el valor del error permanente del sistema de control El controlador es el mismo en ambos casos, la diferencia en el comportamiento dinámico del sistema de control se debe, exclusivamente, al periodo de muestreo utilizado.
16.8.4 Control mediante realimentación lineal en el estado El diagrama de bloques de un esquema de control por realimentación lineal de los estados, se muestra en la figura 16.70. El proceso controlado está dado por las ecuaciones de estado y salida x (t ) = Ax(t ) + bu(t ), y(t ) = cT x(t )
(16.42) (16.43)
y la ley de control en el estado, por u(t ) = kT x(t ) + kr r(t ).
(16.44)
Las ganancias de realimentación en k, se ajustan para lograr el comportamiento dinámicos deseadoescalón y la ganancia de valor deseado k r para obtener error permanente cero, a un cambio en el valor deseado.
446
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.71: Diagrama de interconexión del control por realimentación lineal de los estados Para el ejemplo, el proceso controlado es el sistema diferencial de segundo orden d2 y(t ) dy(t ) +3 + 2y(t ) = 2u(t ), dt 2 dt cuyo modelo en variables de estado es x = y(t ) =
0
1
0 u(t ), 2
−2 −3
x(t ) +
1 0 x(t ).
(16.45)
(16.46) (16.47)
Las especificaciones de diseño son: M p ≤ 10%, t a5 % ≤ 1,5s y e pro = 0. Para cumplir con estas especificaciones se requiere k r = 8,0 y kT = [7,0 0,90]. El diagrama de simulación del sistema de control con Modelica, se muestra en la figura 16.71. En este se han utilizado los siguientes bloques: Modelica.Blocks.Continuous.StateSpace Modelica.Blocks.Math.Add Modelica.Blocks.Math.Feedback Modelica.Blocks.Math.Gain Modelica.Blocks.Math.MultiSum Modelica.Blocks.Sources.Step (2)
16.8. Sistemas de control
447
Figura 16.72: Parámetros del bloque StateSpace La entrada y la salida del bloque Modelica.Blocks.Continuous.StateSpace (planta) son vectores, el cual representa a un modelo en variables de estado con nx estados, nu entradas y ny salidas. Las dimensiones de las matrices que deben darse como parámetros son: A(nx,nx), B(nx,nu), C(ny,nu) y D(ny,nu), tal como se muestra en la ventana de parámetros de la figura 16.72. El bloque Modelica.Blocks.Math.MultiSum (vector_K) tiene una entrada vectorial con nu elementos y una salida escalar, la cual es una combinación lineal de las señales de entrada, dada por la ecuación y(t ) = k 1 u1 (t ) + k2 u2 (t ) + · · · + knu unu (t ).
(16.48)
Debe recordarse que en Modelica todas las entradas a un bloque se identifican con la letra “u” y la salida con la letra “y”. Las variables en el sistema de control, a un cambio escalón del magnitud 10% en el valor deseado, seguido de un cambio de magnitud -5% en la perturbación, se muestra en la figura 16.73. Como se observa, el sistema cumple con las especificaciones dadas para la respuesta del servo control. Las curvas de respuesta también muestran dos características inherentes al control realimentado en el estado, tal como se ha implementado: 1. existe un error permanente ante un cambio escalón en la perturbación; 2. se produce un salto brusco grande en la señal de control, ante un cambio escalón en el valor deseado. k r , pero el Estas dos características están en conflicto, ya que ambas dependen de salto a la salida del controlador en forma directa, mientras que el error permanente a un cambio en la perturbación, lo es en forma inversa. Además, si se desea reducir el error permanente ante el cambio en la perturbación, modificando el valor dekr , pero manteniendo siempre un error cero a un cambio en valor deseado, calcularse de nuevo las ganancias k, lode cual tiene comoelconsecuencia, un deberán cambio en las características dinámicas del en lazo control.
448
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.73: Variables del sistema de control realimentado en el estado
16.8.5 Control óptimo de tiempo mínimo El objetivo de la teoría de control óptimo, es determinar la señal de control (ley de que haga que un sistema o proceso controlado, satisfaga las restricciones físicas impuestas y que al mismo tiempo, optimice (minimice o maximice) algún criterio de desempeño utilizado para evaluarlo (Kirk, 1970). Problemas de control óptimo típicos son el problema de tiempo mínimo, el de error final mínimo, el de energía mínima y el de esfuerzo de control mínimo. Se considerará que el modelo matemático del proceso controlado, es de la forma
control)
dx(t ) = f(x(t ), u(t ), t ), dt
(16.49)
donde x(t ) es el vector de estados del proceso, u(t ) el vector de control y que, por lo general, las funciones f(·) son no lineales. El problema de control de tiempo mínimo, consiste en determinar la ley de control óptima u∗ (t ), que permite llevar al sistema desde una condición inicial dada ( x0 ), a una condición objetivo específica, en un tiempo mínimo. La funcional de costo a optimizar en este caso, es entonces Jt =
tf
t0
dt = t f − t0 .
(16.50)
449
16.8. Sistemas de control
Supóngase para el ejemplo, que se desea determinar la ley de control u (t ), con la restricción |u(t )| ≤ 1, que transfiera al sistema (integrador doble) dx1 (t ) = x 2 (t ), dt dx2 (t ) = u(t ),
(16.51) (16.52)
dt desde cualquier estado inicial (x01 , x 02 ) hasta el srcen, en un tiempo mínimo. La solución de este problema es bien conocida y dada por (Kirk, 1970):
u∗ (t ) =
−1, +1, −1, +1, 0,
para x(t ) S (x(t )) > 0, para x(t ) S (x(t )) < 0, para x(t ) S (x(t )) = 0 y x 2 (t ) > 0, para x(t ) S (x(t )) = 0 y x 2 (t ) < 0, para x(t ) = 0,
(16.53)
donde la función o curva de conmutación S (x(t )) es .
1 2
S (x(t )) = x 1 (t ) + x2 (t ) |x2 (t )| .
(16.54)
Esta ley de control obedece al principio del control “bang-bang”, que establece que para sistemas lineales invariantes en el tiempo, con limitaciones en el esfuerzo de control, el control óptimo para obtener una respuesta de tiempo mínimo, corresponde a utilizar el esfuerzo de control extremo (máximo, mínimo, o una combinación de estos), durante el intervalo de operación. El programa para la simulación con Modelica, del sistema de control con una ley de control de tiempo mínimo es m od el ControlOptimosm // Co nt ro l op ti mo de ti em po ınimo m´ Real x1 ( start = 2, fix ed = tr ue) ; Real x2 ( start = 0, fix ed = tr ue) ; Real u, S; equation S = x1 + 0 .5 * x2 * ab s( x2 ) ; if S > 0 then u = -1; elseif S < 0 then u = 1; else u = 0;
450
16 Modelado y simulación con Modelica y SystemModeler
en d if ; de r( x1 ) = x2 ; de r( x2 ) = u ; when ab s( x1 ) < 0.0 1 an d ab s( x2 ) < 0.0 1 then terminate( "Alca nza do el ori gen") ; en d wh en; annotation( experiment ( StopTime = 10 ) ) ; en d ControlOptimosm;
Tomando en consideración que el tiempo total que tarda el sistema en ir desde el estado inicial hasta el srcen, depende precisamente del punto de partida, en vez de ejecutar simulaciones controladas por el intervalo de tiempo de la simulación, en este caso se ha utilizado la instrucción terminate, de manera que la corrida de simulación termina cuando se ha alcanzado el srcen (con el criterio de convergencia |x1 | < 0,01 y |x2 | < 0,01), independientemente del tiempo transcurrido (ver la sección 4.2.14). Esto último contribuye también a evitar problemas en la solución numérica, en la vecindad del srcen, si el intervalo de simulación excede considerablemente al tiempo requerido para arribar al mismo. En el plano de fase (x1 , x2 ) de la figura 16.74, se muestran las trayectorias x2 (x1 (t )) del sistema, para seis puntos de partida (condiciones iniciales) distintas. Partiendo de cualquier estado inicial en el plano ( x1 , x 2 ) se emplea el valor extremo de la señal de control (+1 o − 1 según corresponda) y el sistema evoluciona hasta arribar a la curva de conmutación. En ese punto, el signo de la señal de control se invierte y el sistema sigue sobre la curva de conmutación hasta el srcen. Para los estados iniciales que se encuentran sobre la curva de conmutación, el sistema evoluciona siguiendo sobre esta hasta el srcen. El caso particular de la evolución de los estados y el control, a partir del punto inicial (x01 = 0, x 02 = 2), se muestra en la figura 16.75. En el modelo, se había establecido el tiempo final para la corrida de simulación como StopTime = 10 . Sin embargo, tal como se puede apreciar en la figura 9.81, esta terminó antes de los 5 s. La solución del problema de control óptimo indica que, partiendo del punto inicial (x01 = 0, x20 = 2), el tiempo mínimo para que el sistema alcance el srcen es de 4,82 s, tal como se deprende del mensaje dado por el compilador: Simulation terminated at time 4.81843 [GENERAL]: Simulation stopped at time = 4.81843. [terminate]: Alcanzado el origen
La simulación al cumplirse el criterio de convergencia utilizado para ejecutar la ecuaciónterminó, terminate.
16.8. Sistemas de control
Figura 16.74: Plano de fase del control óptimo de tiempo mínimo
Figura 16.75: Evolución de los estados y el control para (x01 = 0, x 02 = 2)
451
452
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.76: Sistema de control de nivel
16.8.6 Sistema de control inicialmente en un punto de equilibrio Se desea controlar el nivel del líquido en el taque 2, del sistema de tanques presentado en la sección 9.5.2, manipulando el caudal de entrada al tanque 1. Para esto, se ha adicionado un transmisor electrónico del nivel (LT) del líquido del tanque 2, un controlador de nivel (LIC) y una válvula de control neumática (LV) para variar el caudal del fluido que entra al tanque 1, tal como se muestra en la figura 16.76. El algoritmo de control del controlador es proporcional e integral (PI) cuya salida está dada por la ecuación
u(t ) = K p e(t ) +
1
Ti 0
∞
e(t )dt
= K p [r (t ) − y(t )] +
1
Ti 0
∞
[r(t ) − y(t )]dt .
(16.55) Las señales del sistema de control (Y , R , E , U ) están dadas en porcentaje (de 0 a 100%). El ámbito de medición del transmisor de nivel es de 0 a 5 mK(t = 20%m −1 ) y el caudal máximo por la válvula de control 0,40 m 3 s−1 (Kvc = 0,0040m3 s−1 / %) Los parámetros del controlador se han seleccionada arbitrariamente (pero asegurando la estabilidad del sistema de control), como K p = 0,75 y Ti = 60 s. El sistema se encuentra inicialmente en reposo, con el nivel en el tanque 2 en el valor deseado R = 50% (2,5 m) y en el instante t = 20 s este se cambia al 60% (un t = 800 s se incrementa la apertura de la válvula de incremento del 10%). salida del tanque 2 en Luego, un 10%.en
16.8. Sistemas de control
453
El modelo Modelica para la simulación de los tanques con su sistema de control, es: m od el SisControlPI2Tsm // Con tro l PI, sis tem a hid rau lic o de do s tan que s en ser ie constant Real g = 9.80; parameter Real A1 = 2 " ar ´ ea tan que 1, m^2"; parameter Real A2 = 4 " ar ´ ea tan que 2, m^2"; parameter Real df = 1000 "densi dad fluid o"; parameter Real Kv 1 = 0.002 "const ant e v´ alv ula 1"; parameter Real Kv 2 = 0.0015 "const ant e v´ alv ula 2"; parameter Real Kt = 20 "const ant e tra nsm iso r niv el H2" ; parameter Real Kv c = 0.004 "const ant e v´ alvul a contr ol"; parameter Real Kp = 0.75 "ganan cia propor cional contro lador" ; parameter Real Ti = 60 "tiempo integ ral cont rola dor , s" ; Real H1 "ni ve l 1, m"; Real H2 "ni ve l 2, m"; Real Qe " caud al ent rad a , m^3/s"; Real Qs 1 "cau dal sal ida 1, m^3 /s"; Real Qs 2 "cau dal sal ida 2, m^3 /s"; Real R, E, U, Y, U i, U p; Modelica .Blocks.S ources.Ste p step( height R = 10, offs et = 50 , startTime = 20 ) ; Modelica .Blocks.S ources.Ste p step( height D = 0.1, startTime = 80 0) ; initial equation de r( H1 ) = 0; de r( H2 ) = 0; de r( Ui ) = 0; equation // tanqu es A1 * de r( H1 ) = Qe - Qs1; A2 * de r( H2 ) = Qs 1 - Qs2; Qs 1 = Kv 1 * sign ( H1 ) * sqrt ( df * g * ab s( H1 ) ) ; Qs 2 = Kv 2 * (1 + stepD.y ) * sqrt ( df * g * ab s( H2 ) ) ; // tra nsm iso r de ni vel Y = Kt * H2 ; // con tro lad or PI R = stepR.y; E = R - Y; Up = Kp * E ; de r( Ui ) = Kp * E / T i; U = Up + Ui ; // v´alv ula de con tro l Qe = Kv c * U ; annotation( experiment ( StopTime = 14 00, Inter val = 1 ) ) ; en d SisControlPI2Tsm;
454
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.77: Comportamiento del sistema de control de nivel En el instante inicial solo se conoce el valor deseado ( R) y que el sistema se encuentra en estado estacionario. Por lo tanto, debe resolverse el problema del valor inicial, para encontrar tanto el nivel del líquido en los dos tanques, como las demás variables del sistema de control, en ese punto de equilibrio. Para esto, se ha establecido en el programa Modelica anterior, el valor deseado con un corrimiento inicial (“offset”) del 50 % .. . Modelica .Blocks.So startTime = 20 ) ; .. .
urces.Ste p step( height R
= 10, offs et = 50 ,
y el conjunto de ecuaciones iniciales .. . initial equation de r( H1 ) = 0; de r( H2 ) = 0; de r( Ui ) = 0; .. .
que establecen que el sistema se encuentra inicialmente, en un punto de equilibrio. La variación de los niveles en los tanques, así como de las variables del sistema de control, figura 16.77.ante el cambio en el valor deseado y la perturbación, se muestran en la
16.9. Sistemas heterogéneos
455
Figura 16.78: Variables en el punto de equilibrio inicial
Como se aprecia en la figura 16.77 y con más detalle en la figura9.84, la solución del problema del valor inicial, determina el valor de las variables en el punto de operación correspondiente al valor deseado R = 50% ( H2 = 2,5m). Esto incluye el valor de la salida del controlador PI, necesaria para mantener el sistema en equilibrio.
16.9 Sistemas heterogéneos Una de las principales características de Modelica, es la posibilidad de modelar sistemas heterogéneos, combinado componentes de su biblioteca estándar.
16.9.1 Sistema con componentes eléctricos, mecánicos, térmicos y de bloques En la figura 16.79 se muestra el la diagrama interconexión de un motor eléctrico de corriente continua, similar al de secciónde 2.10.
456
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.79: Sistema con componentes eléctricos, mecánicos, térmicos y de bloques Se han adicionado al modelo del motor, la generación de calor en el arrollado de armadura y su disipación al medio, a través de la carcasa del motor. El eje del motor está acoplado a una carga mecánica giratoria, por medio a un reductor de velocidad. En este modelo se utilizan los siguientes componentes: • Bloques ( Modelica.Blocks.) – Sources.Constant const (k =10) – Sources.Pulse fuenteParCarga (amplitude =-0.2, period =240, offset =0, startTime =180)
– Sources.Step fuenteTension (height =24, startTime =10)
• Componentes eléctricos (Modelica.Electrical.Analog. ) – Basic.HeatingResistor motorRa (R_ref =2.25, alpha = 0.05, T_ref =298.15)
– Basic.Ground ref_ele – Basic.Inductor motorLa (L =0.2) – Basic.EMF emf (k =0.0675) – Sources.SignalVoltage alimentacionMotor
• Componentes mecánicos (Modelica.Mechanics.Rotational. )
16.10. Importación y exportaci ón de modelos funcionales
457
– Components.Damper damper1 (d =0.01) – Components.Fixed ref_mec – Components.IdealGear reductorVelocidad(ratio =3) – Components.Inertia cargaInercia(J =0.001) – Components.Spring barraTransmision (c =1) – Components.Inertia motorInercia(J =0.05) – Sensors.SpeedSensor medidorVelocidadCarga – Sensors.SpeedSensor medidorVelocidadMotor – Sources.Torque cargaPar
• Componentes térmicos (Modelica.Thermal.HeatTransfer. ) – Components.ThermalConductor thermalconductor1 (G =25) – Components.Convection convection1 – Celsius.TemperatureSensor termometroArrollado – Celsius.TemperatureSensor termometroCarcasa – Celsius.FixedTemperature temperaturaAmbiente (T =25) – Components.HeatCapacitor carcasa(C =1000, T(start =298.15))
– Components.HeatCapacitor arrollado (C =100, T(start =298.15)
El motor está inicialmente en reposo y en t = 10 s se arranca con una tensión de alimentación constante. Posteriormente, a partir de t = 180 s, se le aplica un par de carga que varía en forma periódica. En la figura 16.80 se muestran las curvas de velocidad de rotación del motor y de la carga, durante el tiempo que dura el arranque y durante la variación del par de carga. Además, se muestra la variación de la temperatura del arrollado del motor y de la de su carcasa.
16.10 Importación y exportación de modelos funcionales Wolfram SystemModeler permite importar y exportar modelos utilizando el SBML (“Systems Biology Markup Language”1 ) y exportar modelos utilizando la FMI (“Functional Mockup Interface”). 1 http://sbml.org/Main_Page
458
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.80: Velocidades de rotación y temperaturas del motor de corriente continua
16.10.1 El “Systems Biology Markup Language”
El SBML es un formato computacional, para representar modelos de sistemas dinámicos que incluyen componentes biológicos, como las reacciones bioquímicas2 . Existen un total de 2813 paquetes de software que leen, escriben o trabajan en algún grado con el SBML. La mayoría de estas son comerciales, entre las que se encuentra el Wolfram SystemModeler. Se puede incorporar al Wolfram SystemModeler la biblioteca gratuita BioChem (ver la sección 5.5), para el modelado, la simulación y visualización de sistemas biológicos y bioquímicos con Modelica. Esta biblioteca se ha diseñado para usarse en conjunto con el Wolfram SystemModeler, permitiendo la importación y exportación de modelos utilizando el SBML. El intercambio de estos modelos, se puede realizar desde el menú principal del SystemModeler Model Center, con las opciones: [File] [Import] SBML ... [File] [Export] SBML ... 2 http://sbml.org/Basic_Introduction_to_SBML 3 Al 25 de junio de 2015.
16.10. Importación y exportaci ón de modelos funcionales
459
16.10.2 Exportación de FMU En el capítulo 14 se describieron las características de la FMI, para el intercambio de modelos Modelica entre diferentes ambientes de simulación. También se mostró el soporte que OpenModelica y JModelica.org, dan a la FMI. El Wolfram SystemModeler Model Center permite exportar los modelos Modelica [File] a FMU[Export] 1.0 conFMU la opción ... del menú Se verificará aquí la funcionalidad de las FMU creadas por SystemModeler. FMU de Wolfram SystemModeler a OpenModelica
Para los modelos listados a continuación, las FMU exportadas por Wolfram SystemModeler, fueron importadas en OpenModelica sin problema. Los modelos utilizados para la verificación fueron: • SisElec01_o.m, diagrama de interconexión. • RectificadorOndacompleta.mo, diagrama de interconexión (se presentaron diferencias en los resultados de la simulación). • SisMec01_o.mo, diagrama de interconexión. • Sismec03_o.mo, diagrama de interconexión. • SisHidra01_esm.mo, ecuaciones. • SisHidra02_esm.mo, ecuaciones. • SisHidra04_esm.mo, ecuaciones. • Esfera_esm.mo, ecuaciones. • Epidemia_bsd.mo, diagrama de inteconexión, biblioteca SystemDynamics. item EpidemiaGravebsd.mo, diagrama de inteconexión, biblioteca SystemDynamics. • SisControlPIMotorDCsm.mo, diagrama de interconexión. • SisControlPIDSOMTM.mo, diagrama de interconexión, incluyendo un componente de tiempo muerto (fixedDelay1 fue exportado con el nombre fixeddelay1). • Siselec03MotorDCht.mo, diagrama de interconexión, sistema heterogéneo.
460
16 Modelado y simulación con Modelica y SystemModeler
Figura 16.81: Comportamiento del sistema de control PID
Con excepción de un modelo (rectificador de onda completa), los resultados obtenidos con la simulación en OpenModelica, de las FMU exportadas por el Wolfram SystemModeler, fueron idénticos a las obtenidas con el modelo Modelica srcinal. Comparado con lo indicado en la sección 14.3.1, sobre las FMU creadas con OpenModelica, la implementación de la FMI (versión 1.0) en el Wolfram SystemModeler parece ser un poco más confiable. Sin embargo, debe tenerse en cuenta que las bibliotecas Modelica.Fluid, .Media, no están disponibles en Wolfram SystemModeler, por lo que los modelos que incluyen este.la interconexión de componentes fluídicos de estas, no pueden ser simulados con FMU de Wolfram SystemModeler a JModelica.org
Ahora, algunas de las FMU creadas para los modelos citados en la sección anterior, se importaron en JModelica.org utilizando el programa load_fmu de la biblioteca pyFMI. Aunque el compilador Modelica de JModelica.org, no da soporte a modelos con tiempo muerto, la utilización de la FMU exportada con Wolfram SystemModeler, permite realizar por ejemplo, la simulación del sistema de control PID de un proceso de segundo orden más tiempo muerto en el modelo de la figura 16.66 . Los resultados de la simulación con JModelica.org de la FMU exportada, se muestran en la figura 16.81. Estos se pueden comparar con los obtenidos con el modelo Modelica simulado con Wolfram SystemModeler. mostrados en la figura16.67. la biblioteca deencomponentes estándar Modelica.JModelica.org Por lo tanto losincorpora modelossolamente Modelica desarrollados OpenModelica y en Wofram
16.10. Importación y exportaci ón de modelos funcionales
461
Figura 16.82: Evolución de la epidemia
System Modeler que incorporan componentes de la biblioteca SystemDynamics, no pueden ser compilados y simulados directamente con JModelica.org. Sin embargo, empleando una FMU creada con un entorno de modelado y simulación que de soporte a esta biblioteca, es posible entonces simular en JModelica un problema de este tipo, como el del desarrollado para el estudio de la evolución de una epidemia. Los resultados de la simulación de la FMU de la epidemia, se muestran en la figura 16.82. Debe recordarse, que es necesario importar la FMU con pyFMI, simularla, recuperar las variables de interés y el vector de tiempo de la simulación y mostrarlas en forma gráfica. Para todo esto debe crearse un pequeño programa (lista de instrucciones en Python). Al utilizar un entorno de modelado y simulación para exportar modelos Modelica a FMU, deben verificarse los permisos otorgados por las licencias de uso correspondientes.
16.10.3 Importación de FMU Se supone que la versión 4.1 del Wolfram SystemModeler Model Center permite importar modelos FMU (FMI 1.0) con la opción del menú [File] [Import] FMU ... Sin embargo, los modelos importados dieron errores al ser simulados. Tanto los exportados como FMU con OpenModelica y JModelica.org, como los obtenidos con el mismo Wolfram SystemModeler. Como los modelos FMU exportados con SystemModeler, funcionan correctamente con OpenModelica, el error FMU incorporado en la versión 4.1.se debe srcinar en el módulo de importación
462
16 Modelado y simulación con Modelica y SystemModeler
16.11 Bibliografía Åström, K. J. y Hägglund, T. (1995). PID Controllers: Theory, Design and Tuning . Instrument Society of America, Research Triangle Park, NC, USA. Cellier, F. E. (2008). World3 in Modelica: Creating System Dynamics Models in the Modelica Framework. En 6th International Modelica Conference , páginas 393– 400. marzo 3-4, Bielefeld, Germany. Engel, A. B. (1978). Elementos de biomatemática . The General Secretariat of the Organization of American States, Washington, D.C., USA. Forrester, J. W. (1971). Counterintituive Behavior of Social Systems. Technology Review, 73(3):52–68. Kirk, D. E. (1970). Optimal Control Theory - An introduction . Prentice-Hall, Inc. Englewood Cliffs, NJ, USA. Modelica Association (2013).Modelica Standard Library 3.2.1. Linköping, Sweden. Rivera, D. (2007). An introduction to Mechanistic Models and Contr ol theory. En SAMSI Challenges in Dynamic Treatment Regimes and Multistage DecisionMaking. June, 18-20, Research Triangle, Park, NC, USA. Speckhart, F. H. y Green, W. L. (1976). A Guide to Using CSMP - The Continuos System Modeling Program, a Program for Simulating Physical Systems. PrenticeHall, Inc. Englewood Cliffs, NJ, USA. Wolfram Research, Inc. (2016). Wolfram SystemModeler Documentation Center. http://reference.wolfram.com/system-modeler/.
17 Wolfram SystemModeler Link y Mathematica El enlace entre Wolfram SystemModeler y Mathematica (WSMLink), se introdujo en la sección 15.5. Ahora se utilizará para sistematizar la simulación y el análisis de algunos modelos Modelica(Wolfram Research, Inc., 2016). El modelo (clase) Modelica (como lista de instrucciones o diagrama de interconexión), que se ha desarrollado con SystemModeler o con otro entorno de programación Modelica, debe estar abierto en el Model Center.
17.1 Introducción
En un cuaderno electrónico interactivo de Mathematica (Notebook), debe establecerse el enlace entre SystemModeler y Mathematica con la instrucción: Needs [ "WSMlink
"]
El modelo Modelica está entonces disponible para su simulación y análisis con Mathematica, utilizando las siguientes instrucciones: • Simulación del modelo (WSMSimulate) mo s im
= W S M S i m u l a t e"nombreModelo" [ ]
mo s im
= W S M S i m u l a t e"nombreModelo" [ ,tfin]
mo s im
= W S M S i m u l a t e"nombreModelo" [ ,{tini,tfin}]
Se puede asignar el nombre del modelo a una variable con 463
464
17 Wolfram SystemModeler Link y Mathematica
nm od = "nombreModelo"
y luego usarla como por ejemplo mo si m = W S M S i m u l a t e [ nm od , tf in ]
Opciones: WSMInitialValues (condiciones iniciales de las variables),WSParameterValues (valores de los parámetros), WSMInputFuncions (valores o expresiones de las variables de entrada). • Información del modelo El resultado de la simulación del modelo, estará almacenada en mosim que es un objeto del tipo WSMSimulationData. mo si m ["VariableNames" ] mo si m ["ParameterNames" ] mo si m ["StateVariables" ] mo si m ["ModelName" ]
• Despliegue gráfico de las variables (WSMPlot) WSMSPlot[ "nombreModelo" ,{ "var1" , "var2" ,...}] WSMSPlot[ "nombreModelo" ,{ "var1" , "var2" ,...},{tini,tfin}] WSMSP lot[{mos im1,
mosim 2}, "var1" { , "var2" , ... }]
La instrucción WSMPlot tiene las mismas opciones que la instrucción Plot: PlotLegend, AxesLabel, GridLines, etc. • Establecer valores para los parámetros y las condiciones iniciales (WSMSetValues) WSMSetValues[ "nombreModelo" ,{p ar 1 -> p1} ] WSMSetValues[ "nombreModelo" ,{p ar 1 -> p1}, {va1 o -> v1 o}, InitialValues]
465
17.1. Introducción
• Propiedades del modelo Listado de instrucciones del modelo Modelica WSMModelData[ "nombreModelo" , "ModelicaText" ]
Diagrama del modelo WSMModelData[ "nombreModelo" , "Diagram" ]
Resumen de ecuciones y variables del modelo WSMModelData[ "nombreModelo" , "Summary" ]
• Simulación y análisis de la sensibilidad del modelo (WSMSimulateSensitivity) mo s im = W S M S i m u l a t e S e n s i t i v i t"nombreModelo" y[ , { "par1" , "par2" ,npor}] mo s im = W S M S i m u l a t e S e n s i t i v i t"nombreModelo" y[ , {tini,tfin},{ "par1" , "par2" ,npor}]
Opciones: WSMInitialValues (condiciones iniciales de las variables),WSParameterValues (valores de los parámetros), WSMInputFuncions (valores o
expresiones de las variables de entrada). mo s im ["SensitivityNames"
]
• Linealización del modelo (WSMLinearize) mo s im
= W S M L i n e a r i z e"nombreModelo" [ ]
mo s im = W S M L i n e a r i z e"nombreModelo" [ ,{{{ "var1" ,v1o}, ...}, {{ "inu1" ,u1o},...}}]
• Determinación de un punto de equilibrio del modelo (WSMFindEquilibrium) WSMFindEquilibrium[
"nombreModelo" ]
WSMFindEquilibrium[ "nombreModelo" ,{{{ "var1" ,v1o}, ...}, {{ "inu1" ,u1o},...}}]
466
17 Wolfram SystemModeler Link y Mathematica
Figura 17.1: SisMec01_osm - Análisis con Mathematica 1/3
WSMFindEquilibrium[
"nombreModelo" ,{ "var1" ==v1o}, ...]
• Hacer una copia del modelo (clase) (WSMCopyClass) nombreM odelo2 =
WSMCop yClass[ "nombreModelo1" ]
17.2 Análisis de los modelos Modelica con Mathematica Mediante el uso de un modelo de ejemplo, se emplearán algunas de las instrucciones anteriores.
Sistema mecánico con masa, resorte y amortiguador Se tomará como primer ejemplo, el sistema mecánico con elementos que se desplazan, presentado en la sección 16.3. En este se han utilizado componentes de la biblioteca Modelica.Mechanics.Traslational. El modelo se simula, se obtiene información del mismo (listado de instrucciones, diagrama de interconexión, variables, parámetros). Se obtiene el gráfico de la respuesta, se varía un parámetro y se muestran las respuestas del sistema. finalmente se hace un análisis de sensibilidad. Algunas de las instrucciones utilizadas y los resultados en Mathematica, se muestran en las figuras 17.1 a 17.3, las cuales forman parte del cuaderno electrónico WSMnb_sismec01-1.nb, suministrado como un anexo.
17.3. Bibliografía
467
Figura 17.2: SisMec01_osm - Análisis con Mathematica 2/3 Además, en la figura 17.4, se muestra el uso de varias opciones para personalizar el gráfico con la instrucción WSMPlot (ver el cuaderno electrónico WSMnb_sismec011.nb).
17.3 Bibliografía Wolfram Research, Inc. (2016). Wolfram SystemModeler Documentation Center. http://reference.wolfram.com/system-modeler/.
468
17 Wolfram SystemModeler Link y Mathematica
Figura 17.3: SisMec01_osm - Análisis con Mathematica 3/3
17.3. Bibliografía
Figura 17.4: SisMec01_osm - Análisis con Mathematica (4)
469
Parte V
Versiones gratuitas de programas comerciales
471
18 Dymola Demo Version En la sección 1.1.2 se hizo referencia a los entornos comerciales para modelar y simular sistemas dinámicos utilizando Modelica. De algunos de estos, están disponibles versiones demostrativas o para uso de estudiantes, con capacidades limitadas, las cuales se pueden descargar de forma gratuita de sus sitios web.
18.1 Introducción Dymola (“Dynamic Modeling Laboratory”) es uno de los entornos comerciales más conocidos, para el modelado y simulación con Modelica de sistemas dinámicos. Ade1 lante se analizarán las capacidades de su versión demostrativa (Demo Version 2016) disponible para Windows (Dessault Systèmes AB, 2013a,b). En la página web de Dassault Systems, se indica que la versión demostrativa (o de prueba), tiene dos limitaciones: 1. que no se pueden simular modelos complejos y 2. que solo se puede llamar una función externa. Sin embargo, no se indica lo que se entiende por un modelo “complejo”. La ventana principal de Dymola se muestra en la figura 18.1. Este incorpora un editor para el modelado Modelica mediante ecuaciones (texto) y otro mediante diagrama de interconexión de componentes (gráfico). Como se aprecia en la figura 18.1, sus componentes y distribución en la interfaz de usuario, es similar a la provista por otras aplicaciones. La vista Modelado (“Modeling”) muestra las opciones del menú y herramientas para el desarrollo de los modelos, mientras que la vista Simulación (“Simulation”), se utiliza para la selección de las variables, su despliegue gráfico y la configuración de las figuras. 1 http://www.3ds.com/products-services/catia/products/dymola/trial-version/
473
474
18 Dymola Demo Version
Figura 18.1: Interfaz del usuario de Dymola
simulaciones, Dymola requiere esté instalado un Al compilador Para C++ realizar (Visual las Studio Express Edition 2008, 2010que o 2012, o MinGW). iniciar el programa, este detectará el compilador disponible. Si no se tiene uno de estos compiladores de C++, debe instalarse.
18.2 Capacidad de la versión demostrativa A continuación, se evaluarán las capacidades de esta versión demostrativa, utilizando algunos de los modelos ya elaborados y simulados anteriormente, con otras herramientas.
18.2.1 Circuitos eléctricos Como primera prueba, se abrió para simulación el archivo SisElecc01_e.mo, el cual corresponde al modelo, mediante ecuaciones, del circuito RLC de la figura 18.2, presentado en la sección 9.2.1 con OpenModelica y en la 16.2.1 con Wolfram SystemModeler. El modelo en el editor de texto de Dymola, se muestra en la figura 18.3.
18.2. Capacidad de la versión demostr ativa
Figura 18.2: Circuito RLC serie
Figura 18.3: Dymola - Modelado mediante ecuaciones (circuito RLC)
475
476
18 Dymola Demo Version
Figura 18.4: Dymola - Circuito RLC, respuestas modelado mediante ecuaciones El modelo se compila sin problemas y las curvas de respuesta se muestran en la figura 18.4. Este es muy simple, ya que consiste de solo tres variables y las correspondientes tres ecuaciones. Este mismo circuito se modelo, utilizando al ecuación connect en las secciones 9.2.1 y 16.2.1, archivo SisElec01_c.mo. Las respuestas obtenidas con este modelo se muestran en la figrua 18.5. Este modelo consiste de cinco ecuaciones connect y dos ecuaciones iniciales. Una verificación de este, con la opción “Check” del menú de Dymola, indica que el sistema de ecuaciones (DAE) generado, contiene 27 variables y 27 ecuaciones. Hasta aquí, no han habido problemas con la simulación de estos ejemplos sencillos con la versión demostrativa de Dymola. Tampoco hubo problemas simulando el mismo circuito, pero modelado mediante un diagrama de interconexión de compoconnect nentes de la biblioteca Modelica.Electrical, consistente de cinco ecuaciones (DAE con 30 variables y 30 ecuaciones). Si embargo, si este se amplia como se muestra en la figura 18.6, no puede ser simulado.
18.2. Capacidad de la versión demostr ativa
Figura 18.5: Dymola- Circuito RLC, respuestas modelado utilizando la ecuación connect
Figura 18.6: Dymola - Modelo ampliado del circuito RLC
477
478
18 Dymola Demo Version
Figura 18.7: Dymola - Modelo del sistema mecánico
Una verificación de este indica “Error: El modelo es muy complejo para la licencia actual. ...”. Este modelo utiliza solo nueve ecuacionesconnect, pero el DAE generado tiene 54 variables y 54 ecuaciones.
18.2.2 Sistemas mecánicos Se verificará ahora, si es posible simular los modelos de sistemas mecánicos, desarrollados anteriormente. En la figura 18.7 se muestra el diagrama de interconexión de componentes de la biblioteca Modelica.Mechanics, ya simulado antes en las secciones 9.3.1 y 16.3.1 (archivo SisMec01_o.mo). Este modelo emplea siete ecuaciones connect y el DAE tiene 34 variables y ecuaciones. Las curvas de la posición y la velocidad de la masa, se muestran en la figura 18.8.
18.2.3 Sistemas térmicos El modelo de las dos cámaras con aislamiento térmico, presentado en las secciones 9.6.1 y 16.6.1 se muestra en la figura 18.9. En este se utilizan siete ecuacionesconnect para interconectar los componentes de la biblioteca Modelica.Thermal. variación de lasambiente, temperaturas de las cámaras, así como entreLaestas y al medio se muestran en la figura 18.10.de los flujos de calor
18.2. Capacidad de la versión demostr ativa
479
Figura 18.8: Dymola - Respuesta del modelo del sistema mecánico
Figura 18.9: Sistema térmico
18.2.4 Sistemas hidráulicos La simulación de los sistemas hidráulicos con uno o dos tanques y sus correspondientes válvulas, modelados mediante ecuaciones en las secciones 9.5.1 y 16.5, se pueden simular sin ningún problema con la versión demostrativa de Dymola, por la poca cantidad de variables y ecuaciones que involucran. Sin embargo, no es posibles simular los elaborados mediante la interconexión de componentes de la biblioteca Modelica.Fluid, ya que aunque contengan pocos componentes y por ende utilizan muy pocas ecuaciones Modelica connect, el número de ecuaciones en el modelo resultante es muy grande, debido a las declaraciones internasgeneradas de estos componentes.
480
18 Dymola Demo Version
Figura 18.10: Respuestas del sistema térmico
Figura 18.11: Respuestas de los sistemas de primer orden en serie
18.3 Determinación del número de ecuaciones permitidas Para tratar de establecer el límite de ecuaciones, que la versión demostrativa de Dymola permite, se realizaron dos pruebas adicionales.
18.3.1 Sistemas de primer orden en serie Se realizó el modelado mediante ecuaciones, de un conjunto de n sistemas de primer orden en serie, dado por la expresión xn (s) =
K
(T s + 1)n
u(s),
(18.1)
con K = 1 y T = 1 s y u (t ) = 1 para t ≥ 1 s. Laysimulación se realizó sincomo problemas hasta nen=la10 (11 ecuaciones: 10 diferenciales una para generar u), tal se muestra figura 18.11.
18.3. Determinación del número de ecuaciones permitidas
481
Figura 18.12: Modelo del circuito con múltiples redes RC El caso con n = 11 (el modelo tendría 12 variables y 12 ecuaciones) ya no se puede simular.
18.3.2 Circuito RC múltiple Ahora se modelará, mediante la interconexión de componentes de la biblioteca Modelica.Electrical, un circuito compuesto con múltiples redes RC. Se encontró que no se puede simular el circuito con hasta cuatro redes RC conectadas a una fuente y un punto de referencia, para lo cual se requieren 13 ecuaciones connect. El límite permitido para el circuito con múltiples redes RC, se muestra en la figura 18.12 (se eliminó el capacitor de la última red RC). Este modelo tiene 12 ecuacionesconnect (DAE con 63 variables y ecuaciones). Todos los resistores tienen una resistenciaR = 10 Ω y los capacitores una capacitancia C = 0,10 F. La tensión de la fuente es V = 10 V para t ≥ 0,25 s. La evolución de las tensiones en los capacitores, se muestran en la figura 18.13.
482
18 Dymola Demo Version
Figura 18.13: Respuesta del del circuito con múltiples redes RC
Aparentemente, 11 o 12 es el límite de ecuaciones (conjunto de ecuaciones diferenciales y algebraicas) o ecuaciones connect, que puede contener el modelo a simular con la versión demostrativa de Dymola. Esto hace que solo sea posible simular sistemas muy simples, tal vez para familiarizarse un poco con el modelado con Modelica y con las características generales de Dymola.
18.4 Bibliotecas Modelica en Dymola Demo En la figura 18.14, se muestra la lista de bibliotecas Modelica que se despliega en Dymola Demo con el menú [File] [Libraries]. Sin embargo, se encontró que, con excepción de las de uso libre, para la gran mayoría de estas bibliotecas no se cuenta con la respectiva licencia de uso.
18.5 Bibliografía Dessault Systèmes AB (2013a).Dymola - Dynamic Modeling Laboratory, User Manual Volume 1. Dessault Systèmes AB (2013b).Dymola - Dynamic Modeling Laboratory, User Manual Volume 2.
18.5. Bibliografía
Figura 18.14: Bibliotecas Modelica listadas en Dymola Demo
483
19 SimulationX Student Edition Otro de los entornos de modelado y simulación con Modelica, disponibles de forma gratuita, es SimulationX Student Edition de ITI GmbH1 . Más adelante, se analizarán las capacidades de la “versión para estudiantes” de SimulationX, con el fin comprobar si provee las capacidades mínimas necesarias para el trabajo con Modelica, por parte de estudiantes de los cursos que incluyen temas relacionados con el modelado, la simulación y el control de sistemas dinámicos.
19.1 Introduction La interfaz de usuario de SimulationX se muestra en la figura 19.1. Como es usual, esta incluye los menús, las barras de herramientas, el listado de bibliotecas de componentes, el área de trabajo para los diagramas de interconexión y otras funcionalidades. El programa proporciona un conjunto de ejemplos, a los cuales se puede acceder por medio del navegador de ejemplos mostrado en la figura 19.2, que se despliega después de la bienvenida al programa. Si se ha desactivado su despliegue al inicio, los modelos de ejemplo se pueden abrir desde la dirección C:\Users\Public\Documents\SimulationX 3.7\Samples (Student Edition). Como su nombre lo indica, la “Student Edition” de SimulationX está enfocada al trabajo académico de los estudiantes y sus capacidades están limitadas. Esta limitación está determinada por los componentes y su cantidad, que se pueden utilizar en los diagramas de interconexión. 1 https://www.simulationx.com/
485
486
19 SimulationX Student Edition
Figura 19.1: Interfaz del usuario de SimulationX
Figura 19.2: Archivos de ejemplo incluidos en SimulationX
19.1. Introduction
487
Figura 19.3: Símbolos de algunos componentes, bibliotecas de SimulationX y estándar de Modelica
Por ejemplo, algunos de los componentes eléctricos (y las cantidades) de la biblioteca Electricity.Analog.Basic que se se pueden utilizar en un mismo modelo, son: Capacitor (3), Conductor (5), Ground (3), Inductor (3), Resistor (5), Transformer (1), ...; de la biblioteca Electricity.Analog.Sensor: CurrentSensor (1), VoltageSensor (1), PowerSensor (1), ...; de la biblioteca Electricity.Analog.Sources: ConstantCurrent (1), ConstantVoltage (1), SignalCurrent (2), Signal.Voltage (2), ..., y así en forma similar, para las otras bibliotecas. El listado completo de los componentes que se puede utilizar y su cantidad máxima, se muestran con la opción del menú [Extras][Options...][Licensing] Student Edition. SimulationX además de incluir, en forma parcial, bibliotecas de componentes de la biblioteca estándar de Modelica, incluye sus propias bibliotecas. Entre estas se encuentran las bibliotecas Signal Blocks , Mechanicas, Power Transmission (1D), Power Transmission (MBS) , Electrical and Electronics, ElectroMachines, Magnetics, Pneumatics, Hydraulics y Thermics, and Heat Transfer. Los símbolos utilizados para los componentes de las bibliotecas de SimulationX, son diferentes a los empleados por la biblioteca estándar de Modelica, tal como se muestra en los ejemplos incluidos en la figura 19.3. Para cada tipo de componente se muestra el icono de SimulationX a la izquierda y el utilizado en la biblioteca estándar de Modelica a su derecha. Además, debe tenerse enson cuenta que los parámetros correspondientes a cada uno de ellos, no necesariamente los mismos.
488
19 SimulationX Student Edition
Figura 19.4: Circuito RLC serie
19.2 Prueba de los modelos Al igual que se hizo en la sección 18.2 con el programa demostrativo de Dymola, se verificará el funcionamiento de algunos de los modelos desarrollados anteriormente, con la versión estudiantil de SimulationX.
19.2.1 Circuitos eléctricos Modelado utilizando ecuaciones
El primer ejemplo utilizado es el circuito eléctrico RLC serie de la figura 19.4 cuyo SisElec01_e.mo modelo está contenido en el archivo Como este es un modelo escrito en modo texto , al. abrirlo este no se despliega automáticamente en el editor de SimulationX. Para acceder al modelo, este debe desplegarse con la opción del menú [Window][New Text Window] . El texto del modelo se muestra en la figura 19.5. A diferencia de otros entornos de simulación con Modelica, en los cuales todas las variables del modelo están disponibles para su despliegue gráfico, una vez resuelto el modelo (simulado), en SimulationX las variables que se desee mostrar en forma gráfica debe seleccionarse antes de la simulación, activando su atributo de transmisión de información ("protocol"), tal como se muestra en la figura 19.5. Previo a efectuar la simulación del modelo, los parámetros para su control se establecen en la ventana “Simulation Control”, desplegada con la opción del menú [Simulation] [Transient Settings] . La simulación del modelo se realiza seleccionando en el menú [Simulation] [Start], con la opción “Start” de la barra de herramientas, o con la tecla de función [F5].
Para desplegar los resultados de la simulación, debe abrirse una ventana de resultados con la opción del menú[Insert][Result Window] . En esta, deben arras-
19.2. Prueba de los modelos
489
Figura 19.5: Modelo SisElec01_e.mo, atributos de la transmisión de información
490
19 SimulationX Student Edition
Figura 19.6: Resultados de la simulación del modelo SisElec01_e.mo
trarse al área de despliegue gráfico, los iconos de atributo activados de las variables que se desea mostrar. Las características de las curvas (colores, grosor, leyendas, etc,), se puede modificar en la barra de propiedades ( [View][Property Bar]) del gráfico, tal como se muestra en la figura 19.6. El modelo del circuito RLC serie se simuló sin ningún inconveniente y los resultados concuerdan con los obtenidos con otros entornos de simulación.
Modelado utilizando un diagrama de interconexión
El diagrama del circuito eléctrico del modelo SisElec01_o.mo se muestra en la figura 19.7. En los diagramas de interconexión, las variables que se desplegarán en forma gráfica, se establecen seleccionando primero el componente y activando luego su “protocol”. Los resultados de la simulación de este circuito, se muestran en la figura 19.8. recordarse, que tal como se indicódeenDymola. la sección 18.2.1, este modelo no se pudoDebe simular con la versión demostrativa
19.2. Prueba de los modelos
491
Figura 19.7: Diagrama de interconexión del circuito del modelo SisElec01_o.mo
Figura 19.8: Resultados de la simulación del modelo SisElec01_o.mo
492
19 SimulationX Student Edition
Figura 19.9: Diagrama de interconexión del sistema mecánico del modelo
Sis-
Mec01_o.mo
19.2.2 Sistemas mecánicos Sistema mecánico con elementos que se desplazan
El diagrama de interconexión del sistema mecánico, con una masa, un resorte y un amortiguador del modelo SisMec01_o.mo, se muestra ne la figura 19.9. Las curvas que describen el cambio de la posición y la velocidad de la masa, después de que se aplica un fuerza al sistema, se despliegan en la figura 19.10. En esta figura se muestra una facilidad interesante y útil de SimulationX. Como estas dos variables tienen unidades y magnitudes diferentes, el gráfico puede tener dos ordenadas con escalas separadas para en cada una independiente. de ellas. Los límites de cada una de estas dos escalas, se pueden establecer forma
19.2. Prueba de los modelos
493
Figura 19.10: Resultados de la simulación del modelo SisMec01_o.mo
Sistema mecánico con elementos que giran El modelo del sistema mecánico con una volante y un resorte y un amortiguador giratorios, se muestra en la figura 19.11. Este sistema se simuló anteriormente con OpenModelica (sección 9.4.1) y con Wolfram SystemModeler (sección16.4). La posición y velocidad del eje izquierdo del resorte giratorio (dadas por el medidor 1), así como las correspondientes a su eje derecho (medidor 2) se muestran en la figura 19.12. La posición del eje derecho “sigue” a la del eje izquierdo. Péndulo amortiguado
En el modelado del péndulo de la figura 19.13, se ha considerado la fricción de este con el aire, de manera que su movimiento se ve amortiguado. Este modelo se simuló con OpenModelica en la sección 9.4.3 y con Wolfram SystemModeler en la sección 16.4.3. Endela fase figura 19.14 se muestra la posición y la del péndulo en el plano (velocidad vs posición) así como suvelocidad evoluciónangular en el tiempo, partiendo
494
19 SimulationX Student Edition
Figura 19.11: Diagrama de interconexión del modelo SisMec03_o.mo
Figura 19.12: Resultados de la simulacióm del modelo SisMec03_o.mo
19.2. Prueba de los modelos
495
Figura 19.13: Péndulo con amortiguamiento
Figura 19.14: Comportamiento del péndulo amortiguado de la condición inicial (posAng0 = 0,75 π , velAng0 = 0,0).
19.2.3 Sistemas térmicos El modelo Modelica del sistema térmico de dos cámaras descrito en las secciones 9.6.1 y 16.6.1, se muestra en la figura 19.15.
496
19 SimulationX Student Edition
Figura 19.15: Diagrama de interconexión del sistema térmico del modelo
Sis-
Term01_o.mo
El cambio en las temperaturas de las dos cámaras, así como los flujos de calor entre estas y al medio ambiente, cuando se aplica un flujo de calor al “cuarto_1”, se muestran en la figura 19.16
19.2.4 Sistemas hidráulicos La biblioteca Hydraulics de SimulationX está orientada al modelado y simulación de sistemas de potencia hidráulica. Circuitos en los que se utiliza aceite como medio e incluyen fuentes, orificios, válvulas, pistones y componentes similares. Sin embargo, la simulación de sistemas de tanques y tuberías con agua u otro fluido, se pueden simular con los componentes de la biblioteca Modelica.Fluid, que en SimulationX se denomina “Modelica Library of 1-dim. thermo-fluid flow models using Modelica.Madia media description”. Considérese el sistema hidráulico de dos tanques interconectados entre si, mostrado en la figura 19.17. Además, el segundo tanque descarga al media externo. v( olumeFlowRate1, volumeFlowRate2) este sistema, se utilizan medidores paraEn determinar el caudal volumétrico del fluido por las tuberías.
19.2. Prueba de los modelos
497
Figura 19.16: Temperaturas y flujos de calor del sistema térmico
Figura 19.17: Sistema hidráulico de dos tanques Una verificación del modelo, indica que este está compuesto por 233 ecuaciones y variables. El fondo del tanque 2 ( opentank1) está a 2 m sobre el sumidero de descarga (boundary) y el piso del tanque 1 ( tank) 2 m sobre el del tanque 2. Las tuberías (pipe, staticpipe1) son de 10 m de longitud y 0,20 m de diámetro. Las condiciones iniciales de los niveles de los fluidos en los tanques son H 10 = 2 m y H10 = 8 m. En la figura 19.18 se muestra el caudal del líquido por las tuberías, así como los niveles en los dos tanques. > H1 (t ) + 2 m, el fluido fluye del tanque 2 al 1 (flujo Inicialmente, como H2el(t )nivel “negativo”), aumentando de fluido en el tanque 1 y disminuyendo el del
498
19 SimulationX Student Edition
Figura 19.18: Caudales y niveles del sistema hidráulico H t
H t
) < 1 (terminan )+ 2 m entonces 2. Cuando se tieneLos quedos2 (tanques fluido fluye delvacíos, tanque 1tanque al 2 (flujo “positivo”). quedandoelcompletamente todo el líquido contenido en los tanques se descarga al sumidero.
19.2.5 Verificación de los límites del modelo En forma simular a como se hizo con Dymola, se utilizaran dos programas de prueba para verificar las limitaciones de la “Student Edition” de SimulationX. Circuito RC múltiple, componentes de SimulationX
Primero se utilizarán los componentes de la biblioteca de componentes eléctricos, propia de SimulationX. Para elaborar el diagrama de interconexión del sistema eléctrico con múltiples combinaciones RC en serie, se empieza por arrastrar los componentes necesarios al área del diagrama. Como se muestra en la figura 19.19, se han arrastrado, además de la fuente de tensión, cinco resistores y tres capacitores, queresistor es el límite permitido licencia para estudiantes. Si se tratada de arrastrar un más (el sexto) opor unlacapacitor
499
19.2. Prueba de los modelos
Figura 19.19: Componentes de la biblioteca eléctrica de SimlationX
Figura 19.20: Circuito RC múltiple, componentes Modelica más (el cuarto), se da un error. En el caso de los capacitores este indica “ Too many instances of type Electricity.Analog.Basic.Capacitor. No license available ”. Circuito RC múltiple, componentes Modelica
La limitación al número de componentes impuesto en la licencia para estudiantes, parece no aplicar al caso de los componentes de la biblioteca Modelica, por lo menos para la versión 3.7 de SimulationX Student Edition. Como se muestra en la figura 19.20, se puede crear un circuito eléctrico más de cinco resistores y más de tres capacitores. La tensión en cada uno de los capacitores, cuando se produce un cambio escalón en la fuente de tensión, se muestra en la figura 19.21. Sistemas de primer orden en serie
Se realizó el modelado mediante ecuaciones, de un conjunto de n sistemas de primer orden en serie, dado por la expresión xn (s) =
K
(T s + 1)n
u(s),
(19.1)
500
19 SimulationX Student Edition
Figura 19.21: Tensiones en los capacitores
Figura 19.22: Respuestas de los sistemas de primer orden en serie
con K = 1 y T = 1 s y u (t ) = 1 para t ≥ 2 s. La simulación se realizó sin problemas hasta n = 15 (16 ecuaciones: 15 diferenciales y una para generar u), tal como se muestra en la figura 19.22. Cuando se simuló el sistema con n = 16 se presentó el siguiente error: “ The maximum number of states was exceeded”.
19.3 Otras capacidades Las pruebas anteriores parecen indicar que SimulationX Student Edition provee, por lo menos, las capacidades mínimas requeridas para ser utilizado como herramienta de simulación, para el análisis de los sistemas dinámicos simples. Podría ser, por lo tanto, adecuado para ser utilizado por los estudiantes de los cursos relacionados con estos temas y otros afines. En adición a las capacidades de SimulationX para el modelado y simulación de sistemas dinámicos heterogéneos con Modelica, utilizando componentes de sus
19.4. Bibliografía
501
propias bibliotecas o de la biblioteca estándar de Modelica, este provee herramientas de análisis adicionales que no han sido exploradas aquí. Por ejemplo, permite la simulación en estado estacionario, determinación de puntos de equilibrio, el análisis de los sistemas lineales (valores propios, polos y ceros) y otras, cuya funcionalidad debe probarse en la versión gratuita para estudiantes. La descripción de todas estas, está detallada en el Manual del usuario (ITI GmbH, 2013).
19.4 Bibliografía ITI GmbH (2013). SimulationX User Manual . ITI GmbH, Dresden, Germany.