You are on page 1of 420

Sistemas dinmicos heterogneos

Modelado, simulacin y
optimizacin con Modelica

Vctor M. Alfaro

Dr. Vctor M. Alfaro


Departamento de Automtica
Escuela de Ingeniera Elctrica
Universidad de Costa Rica
San Jos, COSTA RICA
Correo: victor.alfaro@ucr.ac.cr
Web: http://pidplanet.wordpress.com/

2014 Vctor M. Alfaro


Versin del 1 de noviembre de 2014

Esta obra est bajo una licencia Creative Commons Reconocimento-NoComercialSinObraDerivada 3.0 Costa Rica.
http://creativecommons.org/licenses/by-nc-nd/3.0/cr/

ii

Prefacio
El lenguaje Modelica, se ha constituido como el formalismo estndar para modelar
y simular sistemas fsicos heterogneos. Esta aceptacin se debe, principalmente, a
que en su concepcin y desarrollo, participan miembros tanto de la academia, como
de la industria.
Esta estrecha colaboracin, a hecho que Modelica no sea solo un lenguaje adecuado para la docencia, investigacin y experimentacin acadmica con modelos de
sistemas dinmicos, si no que tambin ha sido aceptado como un formalismo apropiado, para la solucin de problemas dinmicos heterogneos complejos en muchas
industrias.
En la actualidad existen programas para computadoras digitales de acceso libre,
como OpenModelica y JModelica.org, que han alcanzado ya un grado de desarrollo
que los hace apropiados para el modelado, la simulacin y la optimizacin, 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 tambin programas comerciales de modelado y simulacin con
Modelica ya consolidados y utilizados ampliamente en muchas industrias (aeronutica, automotriz, procesos, energa). Entre estos se encuentra Wolfram SystemModeler,
el cual ser utilizado en este trabajo junto con su enlace a Mathematica
En la elaboracin de este documento en LATEX y para el trabajo con los modelos
Modelica en MS Windows Vista y 7, se han utilizado las siguientes herramientas de
software libre (listadas en orden alfabtico):
Draw de LibreOffice 4.3.3.2, http://www.libreoffice.org/,
JabRef 2.10, http://jabref.sourceforge.net/,
JModelica.org 1.14, http://www.jmodelica.org/,
Microsoft Visual C++ 2010 Express,
http://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx ,

iii

MiKTeX 2.9, http://miktex.org/


Notepad++ 6.6.9, http://notepad-plus-plus.org/,
OpenModelica 1.9.1, https://openmodelica.org/,
PySimulator 0.61, https://github.com/PySimulator/PySimulator/,
Python 2.7.6 (instalado por JModelica.org), https://www.python.org/,
Phyton(x,y) 2.7.6 (distribucin Python instalada por PySimulator),
https://code.google.com/p/pythonxy/,
TeXnicCenter 2.02, http://www.texniccenter.org/,
TextMaths 0.41 (extensin para LibreOffice),
http://roland65.free.fr/texmaths/install.html,
Sumatra PDF 2.5.2,
http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader-es.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, estn disponibles en las direcciones web
indicadas.
Tambin se han empleado los programas:
Wolfram SystemModeler 4.0.1,
http://www.wolfram.com/system-modeler/?source=nav,
con el compilador Microsoft Visual C++ 2010 Express,
Wolfram Mathematica 10.0.1,
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 SystemModeler para los docentes e investigadores y tambin de una licencia de campus
de Mathematica, para toda la comunidad universitaria (estudiantes, docentes e investigadores).
Este documento se ha organizado en cuatro partes, de la siguiente manera:
iv

Parte I Introduccin - Sistemas dinmicos


En el captulo 1 se presenta una resea histrica del desarrollo de los lenguajes
de simulacin dinmica y en particular de Modelica; en el captulo 2 se presentan las relaciones constitutivas de los elementos bsicos de algunos sistemas
fsicos y cmo estos se definen en Modelica.
Parte II El lenguaje Modelica y su biblioteca estndar
La forma en que los elementos fsicos son representados por los componentes Moldeica, se presenta en el captulo 3. Las caractersticas principales del
lenguaje Modelica, su sintaxis, funciones y el formalismo utilizado, especialmente la herencia y el proceso de conexin entre componentes, se describen
en el captulo 4; mientras que los componentes disponibles en las bibliotecas
que conforman la biblioteca estndar Modelica, se presentan en el captulo
5.
La forma en que el modelo Modelica es resuelto numricamente, se presenta en el captulo 6, mientras que los cdigos para resolver los problemas de
optimizacin, se describen en el captulo 7.
Parte III Uso del software libre OpenModelica y JModelica.org
En el captulo 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 fsicos, en el captulo 9 se
ilustra el modelado con Modelica, tanto mediante ecuaciones, como utilizando
diagramas de iterconexin de componentes, con el OMEdit de OpenModelica.
La creacin de cuadernos electrnicos interactivos empleando Modelica y el
OMNotebook, se describe en el captulo 10.
En el captulo 11, se introduce JModelica.org, particularmente su integracin
con Python para resolver problemas de optimizacin.
La formulacin de los problemas de optimizacin (control ptimo y ajuste de
parmetros) y su solucin con JModelica.org, se ilustra en el captulo 12.
En el captulo 13 se muestra el uso de PySimulator, para simular modelos
Modelica y para el despliegue grfico de los resultados de las simulaciones
realizadas, por ejemplo, con OpenModelica.
Parte IV Uso de Wolfram SystemModeler y Mathematica
La utilizacin de SystemModeler se introduce en el captulo 14, la cual se
ampla en el captulo 15 al modelado y simulacin de modelos Modelica de
varias dominios fsicos.
v

El enlace entre SystemModeler y Mathematica, se utiliza en el captulo 16 para


sistematizar el anlisis del comportamiento de los sistemas simulados.
Las partes I y II pretenden ser lo ms generales posibles y que sus captulos se
lean en secuencia, mientras que las partes III y IV pueden considerarse que estn en
paralelo. Si se desea utilizar solo software libre, bastan los captulos de la parte III.
Si se tiene acceso al software de Wolfram Research y se desea hacer uso de solo este,
entonces basta revisar los captulos de la parte IV.
Es importante indicar, que los ejemplos de uso de Mathematica que se presentan,
se relacionan exclusivamente con su enlace con SytemModeler, por lo que la utilizacin de otras funciones de Mathematica, estn fuera del alcance de este trabajo.
En lo posible, se tratar de ampliar y actualizar este documento, en una forma
ms o menos frecuente. Por lo tanto, se recomienda verificar cual es su versin ms
reciente, en la pgina web:
http://pidplanet.wordpress.com/modelica/

Esta es la versin del 1 de noviembre de 2014.


Reestructuracin del contenido, adicin de la parte IV (SystemModeler / Mathematica), adicin de ejemplos, ampliacin de la descripcin de OpenModelica 1.9.1 y
verificacin del funcionamiento de los ejemplos este.
Versiones anteriores: 2014.oct.02 (set.17)

vma.

vi

Indice general
I Introduccin - Sistemas dinmicos

Introduccin
1.1 Lenguajes de simulacin . . .
1.1.1 Evolucin histrica . .
1.1.2 Desarrollo de Modelica
1.2 Modelica . . . . . . . . . . .
1.3 Sistemas dinmicos . . . . . .
1.4 Modelado . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

3
5
5
6
8
8
9

Elementos bsicos de los sistemas fsicos


2.1 Introduccin . . . . . . . . . . . . . . . . . . . . . .
2.2 Sistemas elctricos . . . . . . . . . . . . . . . . . .
2.3 Sistemas hidrulicos . . . . . . . . . . . . . . . . .
2.4 Sistemas mecnicos con elementos que se desplazan
2.5 Sistemas mecnicos con elementos que giran . . . .
2.6 Sistemas trmicos . . . . . . . . . . . . . . . . . . .
2.7 Conversin de variables . . . . . . . . . . . . . . . .
2.8 Variables de los sistemas fsicos . . . . . . . . . . .
2.9 Interconexin de los elementos . . . . . . . . . . . .
2.10 Sistemas heterogneos . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

11
11
14
15
17
19
21
22
25
26
27

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

II El lenguaje Modelica y su biblioteca estndar

31

33
33
33
35

Componentes en Modelica
3.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Variables de potencial y de flujo . . . . . . . . . . . . . . . . . . .
3.3 Definicin de los conectores y puertos en Modelica . . . . . . . . .
vii

3.4

Componentes Modelica de los elementos fsicos . . . . . . . . . . .

39

4 El lenguaje Modelica
4.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Fundamentos de Modelica . . . . . . . . . . . . . . . . . . . .
4.2.1 Estructura de un modelo Modelica . . . . . . . . . . . .
4.2.2 Clases especializadas . . . . . . . . . . . . . . . . . . .
4.2.3 Convencin para los nombres . . . . . . . . . . . . . .
4.2.4 Nmeros enteros y de punto flotante . . . . . . . . . . .
4.2.5 Valores lgicos y cadenas de caracteres . . . . . . . . .
4.2.6 Operadores y funciones matemticas . . . . . . . . . . .
4.2.7 Arreglos (vectores y matrices) . . . . . . . . . . . . . .
4.2.8 Operadores que generan un evento . . . . . . . . . . . .
4.2.9 Operadores noEvent y smooth . . . . . . . . . . . . .
4.2.10 Constantes, parmetros y variables . . . . . . . . . . . .
4.2.11 Inicializacin de las variables . . . . . . . . . . . . . .
4.2.12 Comentarios y descripciones . . . . . . . . . . . . . . .
4.2.13 Ecuaciones del modelo . . . . . . . . . . . . . . . . . .
4.2.14 La ecuacin terminate . . . . . . . . . . . . . . . . .
4.2.15 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . .
4.2.16 Declaraciones . . . . . . . . . . . . . . . . . . . . . . .
4.2.17 Funciones . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.18 Conectores y conexiones . . . . . . . . . . . . . . . . .
4.2.19 Construccin de registros . . . . . . . . . . . . . . . . .
4.2.20 Notas . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.21 Extensin o ampliacin de los modelos . . . . . . . . .
4.3 Secuencia para la simulacin de un modelo Modelica . . . . . .
4.4 Modelado no causal versus modelado causal con base en bloques
4.5 Modelado con base en componentes Modelica . . . . . . . . . .
4.5.1 Los componentes . . . . . . . . . . . . . . . . . . . . .
4.5.2 Definicin de un componente . . . . . . . . . . . . . .
4.5.3 La ecuacin connect . . . . . . . . . . . . . . . . . .
4.6 Modelos Optimica . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

43
43
46
46
47
48
48
49
49
50
53
53
54
55
56
57
59
60
60
62
63
64
64
66
68
69
73
73
73
75
77

5 Biblioteca de componentes Modelica


5.1 Introduccin . . . . . . . . . . . . . . . . . . .
5.2 Biblioteca estndar Modelica . . . . . . . . . .
5.2.1 Biblioteca Modelica.Blocks . . . . .
5.2.2 Biblioteca Modelica.ComplexBlocks
5.2.3 Biblioteca Modelica.Constants . . .

.
.
.
.
.

.
.
.
.
.

79
79
79
81
83
84

viii

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

5.3
5.4
5.5

5.2.4 Biblioteca Modelica.Electrical . . . . . . . . . . . . .


5.2.5 Biblioteca Modelica.Fluid . . . . . . . . . . . . . . . . .
5.2.6 Biblioteca Modelica.Magnetic . . . . . . . . . . . . . .
5.2.7 Biblioteca Modelica.Mechanics . . . . . . . . . . . . . .
5.2.8 Biblioteca Modelica.SIunits . . . . . . . . . . . . . . .
5.2.9 Biblioteca Modelica.Thermal . . . . . . . . . . . . . . .
5.2.10 Identificacin de los conectores de los componentes Modelica
Otras bibliotecas incluidas en OpenModelica . . . . . . . . . . . .
Incorporacin de bibliotecas externas en OpenModelica . . . . . . .
Bibliotecas de componentes adicionales para SytemModeler . . . .

85
86
87
88
89
91
92
93
95
96

Solucin numrica del modelo


6.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Cantidad de ecuaciones requeridas para la inicializacin del modelo
6.3 Solucin de un conjunto de DAE implcitas . . . . . . . . . . . . .
6.3.1 El DASSL (Differential/Algebraic System Solver) . . . .
6.3.2 ndice diferencial del modelo DAE . . . . . . . . . . . . .
6.3.3 Modelos con un ndice diferencial alto . . . . . . . . . . . .
6.4 Simulacin con Assimulo . . . . . . . . . . . . . . . . . . . . . . .

99
99
100
101
101
103
103
109

Optimizacin de sistemas dinmicos


7.1 Introduccin . . . . . . . . . . . . . . . . . .
7.1.1 Optimizacin dinmica . . . . . . . .
7.1.2 Optimizacin esttica . . . . . . . . .
7.2 Algoritmos de optimizacin de JModelica.org

111
111
111
112
113

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

III Uso del software libre OpenModelica y JModelica.org

115

117
117
117
121
125
129
130
131
133
134
144

Introduccin a OpenModelica
8.1 Introduccin . . . . . . . . . . . . . . . . . . . . . .
8.2 OpenModelica Shell (OMS) . . . . . . . . . . . . .
8.3 OpenModelica Connection Editor (OMEdit) . . . . .
8.3.1 Crear un modelo nuevo o abrir uno existente
8.3.2 Escritura del modelo . . . . . . . . . . . . .
8.3.3 Ejecucin de la simulacin . . . . . . . . . .
8.3.4 Vista de resultados . . . . . . . . . . . . . .
8.3.5 Cambiar los parmetros y volver a simular .
8.3.6 Modelado grfico . . . . . . . . . . . . . . .
8.3.7 Exportar e importar modelos Modelica . . .
ix

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

8.4
8.5

OpenModelica Notebook Editor (OMNotebook) . . . . . . . . . . . 145


Optimizacin con OpenModelica . . . . . . . . . . . . . . . . . . . 147

9 Modelado y simulacin con OpenModelica


9.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2 Sistemas elctricos . . . . . . . . . . . . . . . . . . . . . . . .
9.2.1 Circuito RLC serie . . . . . . . . . . . . . . . . . . . .
9.2.2 Circuito RLC paralelo . . . . . . . . . . . . . . . . . .
9.2.3 Efecto de la temperatura sobre la resistencia elctrica . .
9.2.4 Rectificador de onda completa . . . . . . . . . . . . . .
9.3 Sistemas mecnicos con elementos que se desplazan . . . . . .
9.3.1 Sistema con masa, resorte y amortiguador . . . . . . . .
9.3.2 Sistema mecnico libre . . . . . . . . . . . . . . . . .
9.4 Sistemas mecnicos con elementos que giran . . . . . . . . . .
9.4.1 Sistema con volante, resorte y amortiguador giratorios .
9.4.2 Mquina giratoria desbalanceada . . . . . . . . . . . . .
9.4.3 Pndulo con amortiguamiento . . . . . . . . . . . . . .
9.5 Sistemas hidrulicos . . . . . . . . . . . . . . . . . . . . . . .
9.5.1 Sistema hidrulico con un tanque . . . . . . . . . . . .
9.5.2 Sistema hidrulico con dos tanques en serie . . . . . . .
9.5.3 Sistema hidrulico con dos tanques interconectados . . .
9.5.4 Sistema hidrulico con un recipiente esfrico . . . . . .
9.5.5 Sistema con taques, vlvulas y tuberas . . . . . . . . .
9.5.6 Parmetros de los componentes hidrulicos . . . . . . .
9.5.7 Declaracin del fluido en los componentes del sistema .
9.6 Sistemas trmicos . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.1 Sistema con dos cmaras trmicas . . . . . . . . . . . .
9.6.2 Horno elctrico . . . . . . . . . . . . . . . . . . . . . .
9.7 Modelado y simulacin de ecosistemas . . . . . . . . . . . . . .
9.7.1 Estimacin del crecimiento demogrfico de Costa Rica .
9.7.2 Evolucin de una epidemia . . . . . . . . . . . . . . . .
9.7.3 Modelo Lotka-Volterra presa depredador . . . . . . . .
9.8 Sistemas de control . . . . . . . . . . . . . . . . . . . . . . . .
9.8.1 Control de velocidad de un motor de corriente continua .
9.8.2 Sistemas de control en diagramas de bloques . . . . . .
9.8.3 Sistema de control digital . . . . . . . . . . . . . . . .
9.8.4 Control mediante realimentacin lineal en el estado . . .
9.8.5 Control ptimo de tiempo mnimo . . . . . . . . . . . .
9.8.6 Sistema de control inicialmente en un punto de equilibrio
x

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

151
151
152
152
163
164
166
169
169
171
176
176
177
179
181
181
184
187
189
193
199
202
203
203
204
208
209
210
213
215
216
218
221
223
226
229

10 Cuadernos interactivos con OMNotebook


235
10.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
10.2 Desarrollo de un cuaderno electrnico interactivo . . . . . . . . . . 236
11 Introduccin a JModelica.org
11.1 Introduccin . . . . . . . . . . . . . . . .
11.2 Intrprete interactivo de Python PayLab .
11.3 Compilacin del modelo Modelica a FMU
11.4 Optimizacin con JModelica.org . . . . .
11.5 JModelica.org Plot GUI . . . . . . . . . .

.
.
.
.
.

243
243
244
246
247
251

12 Compilacin, simulacin y optimizacin con JModelica.org


12.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.2 Algoritmos de simulacin y optimizacin . . . . . . . . . . . . . .
12.3 Proceso de compilacin y carga del modelo . . . . . . . . . . . . .
12.3.1 Compilacin del modelo . . . . . . . . . . . . . . . . . . .
12.3.2 Carga de los objetos FMU y JMU . . . . . . . . . . . . . .
12.3.3 Transferencia del modelo a un problema de optimizacin . .
12.4 Compilacin de modelos a FMU y simulacin . . . . . . . . . . . .
12.4.1 Modelo Modelica . . . . . . . . . . . . . . . . . . . . . . .
12.4.2 Compilacin a FMU, simulacin y despliegue de resultados
12.4.3 Cambio de parmetros del modelo . . . . . . . . . . . . . .
12.4.4 Sistema de control de un motor de corriente continua . . . .
12.5 Problemas de optimizacin . . . . . . . . . . . . . . . . . . . . . .
12.5.1 Compilacin del Modelo Optimica a JMU y optimizacin .
12.5.2 Control ptimo de tiempo mnimo . . . . . . . . . . . . . .
12.5.3 Optimizacin de los parmetros de un controlador PI . . . .

255
255
255
256
256
258
258
258
259
260
262
265
269
270
270
273

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

13 Visualizacin, simulacin y anlisis con PySimulator


279
13.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
13.2 Importacin de un archivo de resultados . . . . . . . . . . . . . . . 280
13.3 Importacin de modelos FMU . . . . . . . . . . . . . . . . . . . . 282

IV Uso de Wolfram SystemModeler y Mathematica

287

14 Introduccin a SystemModeler
289
14.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
14.2 SystemModeler Model Center . . . . . . . . . . . . . . . . . . . . 291
14.2.1 Elaborar un modelo nuevo o abrir uno existente . . . . . . . 294
xi

14.2.2 Escritura del modelo . . .


14.3 SystemModeler Simulation Center
14.3.1 Ejecucin de la simulacin
14.3.2 Vista de los resultados . .
14.4 Modelado grfico . . . . . . . . .
14.5 Enlace con Mathematica . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

297
299
300
301
304
315

15 Modelado y simulacin con Modelica y SystemModeler


15.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.2 Sistemas elctricos . . . . . . . . . . . . . . . . . . . . . . . .
15.2.1 Circuito RLC serie . . . . . . . . . . . . . . . . . . . .
15.2.2 Circuito RLC paralelo . . . . . . . . . . . . . . . . . .
15.2.3 Efecto de la temperatura sobre la resistencia elctrica . .
15.2.4 Rectificador de onda completa . . . . . . . . . . . . . .
15.3 Sistemas mecnicos con elementos que se desplazan . . . . . .
15.3.1 Sistema con masa, resorte y amortiguador . . . . . . . .
15.3.2 Sistema mecnico libre . . . . . . . . . . . . . . . . .
15.4 Sistemas mecnicos con elementos que giran . . . . . . . . . .
15.4.1 Sistema con volante, resorte y amortiguador giratorios .
15.4.2 Mquina giratoria desbalanceada . . . . . . . . . . . . .
15.4.3 Pndulo con amortiguamiento . . . . . . . . . . . . . .
15.5 Sistemas hidrulicos . . . . . . . . . . . . . . . . . . . . . . .
15.5.1 Sistema hidrulico con un tanque . . . . . . . . . . . .
15.5.2 Sistema con dos tanques en serie . . . . . . . . . . . . .
15.5.3 Sistema con dos tanques interconectados . . . . . . . .
15.5.4 Sistema hidrulico con un recipiente esfrico . . . . . .
15.6 Sistemas trmicos . . . . . . . . . . . . . . . . . . . . . . . . .
15.6.1 Sistema con dos cmaras trmicas . . . . . . . . . . . .
15.6.2 Horno elctrico . . . . . . . . . . . . . . . . . . . . . .
15.7 Modelado y simulacin de ecosistemas . . . . . . . . . . . . . .
15.7.1 Estimacin del crecimiento demogrfico de Costa Rica .
15.7.2 Evolucin de una epidemia . . . . . . . . . . . . . . . .
15.7.3 Modelo Lotka-Volterra presa depredador . . . . . . . .
15.8 Sistemas de control . . . . . . . . . . . . . . . . . . . . . . . .
15.8.1 Control de velocidad de un motor de corriente continua .
15.8.2 Sistemas de control en diagramas de bloques . . . . . .
15.8.3 Sistema de control digital . . . . . . . . . . . . . . . .
15.8.4 Control mediante realimentacin lineal en el estado . . .
15.8.5 Control ptimo de tiempo mnimo . . . . . . . . . . . .
15.8.6 Sistema de control inicialmente en un punto de equilibrio

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

319
319
320
320
331
334
334
337
337
340
343
344
345
348
349
349
352
354
356
361
361
362
366
367
368
371
372
373
377
380
382
385
388

xii

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

16 SystemModeler Link y Mathematica


393
16.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
16.2 Anlisis de los modelos Modelica con Mathematica . . . . . . . . . 396
Bibliografa

401

xiii

Parte I

Introduccin - Sistemas dinmicos

1
Introduccion
modlico, ca
1. adj. Que sirve o puede servir de modelo.
DRAE1
Seis son los componentes principales de este trabajo: 1. el modelado matemtico de
los sistema dinmicos heterogneos (compuestos por elementos de mltiples dominios fsicos), 2. su simulacin digital, 3. la optimizacin de alguna de sus caractersticas, 4. el lenguaje Modelica, y la conjugacin de todos los puntos anteriores,
utilizando: 5. el software libre OpenModelica y JModelica.org, y 6. Wolfram SystemModeler y Mathematica.
Para el modelado y la simulacin 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 simulacin utilizados, as como validar los
resultados obtenidos con los mismos.
El estudio del comportamiento de los sistemas dinmicos, es parte esencial de
todas las ramas de la ingeniera. Esto involucra su modelado matemtico y la simulacin de este.
Particularmente para los sistemas complejos, el modelado y su simulacin, son
las herramientas utilizadas con preferencia, para su anlisis y diseo.
El modelo matemtico describe en forma aproximada mediante ecuaciones, al
sistema dinmico. La simulacin resuelve el modelo con la finalidad de predecir el
comportamiento del sistema real. El lenguaje Modelica2 , es el formalismo utilizado
para combinar el desarrollo del modelo, con su simulacin.
En ocasiones, se piensa que en cada una de las reas de especializacin que conforman la ingeniera, solo se requiere estudiar los sistemas que aparentan tener una
1 Diccionario
2 Modelica

de la lengua espaola, http://www.rae.es/recursos/diccionarios/drae


Association, http://www.Modelica.org

1 Introduccin

Figura 1.1: Sistemas dinmicos heterogneos


afinidad natural con cada una de ellas. Por ejemplo, que los estudiantes de ingeniera elctrica solo requieren estudiar los sistemas elctricos y electrnicos, que los de
ingeniera mecnica, los sistemas mecnicos, neumticos y similares, y as con las
dems especialidades. Sin embargo, lo cierto es que los sistemas dinmicos reales,
son una combinacin de elementos pertenecientes a diferentes dominios fsicos y por
lo tanto, son sistemas dinmicos heterogneos, tal como se ilustra en la figura 1.13 .
Lo anterior, hace que sea necesario utilizar tcnicas de modelado y simulacin
digital, que contemplen las caractersticas heterogneas de los sistemas fsicos.
Por ejemplo, para el modelado de sistemas dinmicos lineales simples, se puede
hacer uso del concepto de red generalizada (Alfaro, 1991), para aplicar una misma
metodologa de anlisis 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 conservacin.
Por otra parte, la simulacin de los sistemas dinmicos, dominada a mediados del
siglo pasado por el uso de las computadoras analgicas es, desde hace tiempo, una
de las aplicaciones ms importantes de las computadoras digitales.
Una forma inicial de modelar y simular los sistemas fsicos, fue utilizando sistemas anlogos, esto es, mecanismos que se comportaban de la misma forma que los
sistemas a estudiar. Los simuladores dinmicos analgicos primero fueron mecnicos (Bush, 1931) y luego electrnicos (Ragazzini et al., 1947). El sistema se modelaba en trmino de ecuaciones diferenciales ordinarias (ODE - ordinary differential
equations).
En las computadoras analgicas electrnicas, las ecuaciones diferenciales del
modelo primero se escalaban en tiempo y en magnitud, y luego se programaban in3

Windpower Monthly, Tim Donahey Show, Tellepsin Industrial, Lund Hasley, HQ Free Wallpapers, IT Confict, LLC Company, MIRA, Ltd.

1.1. Lenguajes de simulacin

terconectando componentes electrnicos (integradores, sumadores, potencimetros y


generadores de seal). Las variables estaban representadas por las tensiones elctricas en el circuito.
Los simuladores digitales, iniciaron su aparicin en los aos 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 tecnolgico de estas.
La simulacin digital de los sistemas dinmicos, requiere de algoritmos de integracin numrica.
En la actualidad, hay una amplia variedad de programas, comerciales y de uso
libre, que implementan ambientes de simulacin dinmica, que utilizan diferentes
lenguajes o metodologas para el modelado y la simulacin de los sistemas dinmicos.

1.1 Lenguajes de simulacin


Para ser eficiente, la simulacin digital debe hacer uso de herramientas o lenguajes
de simulacin, en vez de los lenguajes de programacin de propsito general.

1.1.1

Evolucin histrica

En respuesta a los problemas que existan con la utilizacin de los lenguajes de programacin de uso general, para la solucin numrica de los sistemas dinmicos,
IBM desarroll el Digital Simulation Language - 90 (DSL-90) para las computadoras IBM-7090 y luego, el Continuos System Modelling 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 simulacin dinmica.
Los programas de simulacin usualmente se clasifican en programas de simulacin continua, en los cuales el modelo evoluciona en forma continua en el tiempo, y
programas de simulacin discreta, en los cuales el modelo solo se evala en los instantes en que hay un cambio de estado. Los hay tambin, que permiten la simulacin
de sistemas hbridos, que combinan componentes continuos y discretos.
En forma similar, a la utilizada para elaborar los diagramas de simulacin implementados en las computadoras analgicas, se han desarrollado herramientas grficas
de modelado y simulacin 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 simulacin de sistemas en los que lo que hay, son seales que fluyen por ellos. Como

1 Introduccin

por ejemplo, para los sistemas de control lineales, donde sus componentes estn representados por funciones de transferencia.
Por otra parte, tambin hay programas de simulacin de aplicacin a reas especficas de la ingeniera, como Spice (University de California en Berkeley) para
circuitos elctricos y electrnicos, Adams (MSC Software Corporation) para sistemas mecnicos tridimensionales, gPROMS (Process Systems Enterprice Limited)
para el modelado de procesos industriales, y otros (strm et al., 1998).
En el uso de los lenguajes de simulacin de sistemas dinmicos con base en procedimientos, se considera importante la forma en que se ordenan las ecuaciones
del modelo, insistindose en que estas deben seguir una secuencia de causa y efecto (Franks, 1972). Sin embargo, tal relacin de entrada a salida en los elementos
fsicos reales, no necesariamente existe. La interconexin entre los mismos, no implica un orden entre sus variables.
Una forma diferente de modelado, es el que considera al sistema dinmico como
la interconexin de varios subsistemas. Se establecen los modelos de estos subsistemas, con base en la aplicacin de las leyes de conservacin (de la masa, la energa,
la cantidad de movimiento, o de los componentes) y se considera la forma en que los
subsistemas interactan entre si, en sus terminales de interconexin. Todo lo anterior
constituye el modelo fsico del sistema, el cual puede verse como la forma en que se
restringe la evolucin de sus variables.
Este procedimiento conduce normalmente, a que el modelo est constituido por
un conjunto de ecuaciones algebraico diferenciales implcitas.
Otra forma de representar un sistema, es mediante el uso de las grficas de enlace (bond graphs) ideadas por Paynter (1961), donde los nodos son los componentes y las ramas representan el flujo (bidireccional) de energa entre ellos. 20-Sim
(Controllab Products) es uno de los programas ms conocidos, para simular sistemas
dinmicos utilizando grficas de enlace.
Dymola (Dynamic Modeling Language) desarrollado por Elmqvist (1978), fue
uno de los primeros esfuerzos en el desarrollo de un lenguaje eficiente para el modelado fsico. Sin embargo, su capacidad para modelar sistemas grandes, estaba limitada inicialmente, por la capacidad de memoria de los computadores de esa poca. La
ampliacin de la velocidad y de la capacidad de memoria y almacenamiento de las
computadoras, permiti el desarrollo de otros lenguajes de simulacin como Omola y
ObjectMath, y su aplicacin a procesos industriales complejos (strm et al., 1998).

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 ao despus, se publica la primera definicin
del lenguaje Modelica, Modelica 1.0 (Elmqvist, 2014).

1.1. Lenguajes de simulacin

En febrero de 2000 se forma la Modelica Association4 , para promover el uso del


lenguaje Modelica y el de su biblioteca de componentes estndar.
La versin actual de la especificacin de Modelica, es la 3.3, del 9 de mayo de
2012 (Modelica Association, 2012).
Una diferencia importante, entre los programas de simulacin con base en el
desarrollo de diagramas de bloques y flujo de seales con una causalidad bien definida (al estilo de Simulink) y los lenguajes de simulacin con base en ecuaciones
(orientado a objetos) como Modelica es que, en estos ltimos, la descripcin es no
causal y solo establece la relacin entre las variables del proceso (cmo es que estas
estn restringidas).
Otro aspecto importante de Modelica, es que permite el modelado grfico a partir
de la interconexin de componentes predefinidos.
En las secciones siguientes se presentarn, en forma breve, las variables y las
relaciones constitutivas de los elementos bsicos de varios dominios fsicos, procedindose posteriormente, a presentar ejemplos de su modelado y simulacin con el
lenguaje Modelica, empleando el ambiente de modelado y simulacin OpenModelica desarrollado por el Open Source Modelica Consortium (OSMC)5 . Este incluye un
editor grfico para construir los diagramas de interconexin de componentes.
Tambin se presentar la utilizacin del ambiente JModelica.org6 , mantenido por
Modelon AB7 , no solo para la simulacin de los modelos Modelica, sino principalmente, para la solucin de problemas de optimizacin.
Otra aplicacin libre, que incorpora una implementacin parcial de la biblioteca
Modelica, es Xcos8 incluida en Scilab.
Herramientas comerciales de Modelica son: CyModelica9 , Dymola (Dynamic
modeling laboratory)10 , Simulation X11 y Wolfram SystemModeler12 .
De entre estas ltimas, se presentar la utilizacin de Wolfram SystemModeler
(Model Center y Simulation Center) y de su enlace con Matematica (WSMLink).

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/cymodelica/

10 http://www.3ds.com/

11 http://www.itisim.com/simulationx/system-simulation/
12 http://www.wolfram.com/system-modeler/

1 Introduccin

Figura 1.2: Componentes de un sistema dinmico

1.2 Modelica
Modelica es un lenguaje de programacin orientado a objetos, con base en el modelado mediante ecuaciones (Fritzson et al., 2004).
Los programas Modelica se desarrollan a partir de una descripcin del sistema
utilizando ecuaciones, en vez de instrucciones de asignacin, permitiendo un modelado no causal de sistemas no lineales heterogneos (el modelo incluye componentes
de diferentes dominios fsicos).
Permite la construccin de modelos, para la descripcin del comportamiento continuo y discreto de sistemas dinmicos complejos.
Aunque su mayor fortaleza radica en la capacidad de implementar un modelado
no causal, tambin es posible formular el modelo mediante bloques causales.
Adems, incorpora una biblioteca de componentes de diversos dominios fsicos,
permitiendo al usuario concentrarse en utilizarlos, estableciendo la forma en que estos se relacionan en su sistema, en vez de en la descripcin de los fenmenos que
ocurren en cada uno de ellos.

1.3 Sistemas dinmicos


Se considerar que un sistema dinmico 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.
Se dice que el sistema es dinmico, porque una o ms de sus caractersticas (variables) cambian con el tiempo.
Este estar compuesto por elementos que almacenan, disipan o transforman energa, o que se relacionan con otras cantidades que definan el estado del sistema y los
flujos entre sus componentes.

1.4. Modelado

Los elementos del sistema intercambian variables (informacin) entre si, por medio de sus terminales. A su vez, el sistema interacta con el medio externo, por medio
de los terminales de conexin que atraviesan la frontera, la cual define que pertenece
al sistema y que no.
Para el estudio del sistema dinmico, se requiere un modelo matemtico, el cual
es una descripcin aproximada del mismo. En este, las relaciones entre las variables
(distancias, velocidades, fuerzas, tensiones y corrientes elctricas, flujos de material,
temperaturas, poblaciones, capital), estn expresadas en forma matemtica (mediante
ecuaciones) (Ljung y Glad, 1994).
Un experimento ser el procedimiento para obtener informacin del sistema, realizando algn tipo de cambio en las variables, parmetros u otra condicin del mismo.
Como por lo general no es posible experimentar con el sistema real, la simulacin
digital, ser el experimento realizado en el modelo matemtico del sistema que se
desea estudiar.
El anlisis de los resultados de la simulacin (experimento hecho con el modelo),
debe tomar en cuanta las limitaciones que pudiera tener el modelo utilizado, para
representar el sistema real bajo estudio.
En forma natural, el modelado de los sistemas dinmicos heterogneos, conduce
a obtener un conjunto de ecuaciones algebraico diferenciales (DAE - differential
algebraic equations). Por lo tanto, el modelo del sistema dinmico a simular, ser
un conjunto de ecuaciones algebraico diferenciales implcitas no lineales, de la forma
general


dx(t)
0=F
, x(t), z(t), u(t),t ,
(1.1)
dt
y(t) = G (x(t), z(t),t) ,
(1.2)
x(t0 ) = x0 ,
dx(t0 )
= x0 ,
dt

(1.3)
(1.4)

donde x(t), es el vector de las variables endgenas que aparecen derivadas en las
ecuaciones, z(t), el vector de las variables endgenas que no aparecen derivadas,
u(t), el vector de los estmulos exgenos, y y(t) el vector de las variables de inters
y por lo tanto de las variables medidas. Las condiciones iniciales de las variables
x(t) y de sus derivadas son x0 (t) y x0 (t) respectivamente.

1.4 Modelado
Para la obtencin del modelo matemtico de un sistema, con el fin de experimentar
con el (realizar simulaciones), se pueden seguir dos caminos diferentes (Fritzson,

1 Introduccin

10
2004):

Modelado deductivo: Aplicando las leyes naturales que gobiernan los fenmenos que tienen efecto en el sistema, se deduce el modelo. Este es un modelo
analtico o fsico.
Modelado inductivo: A partir de un conjunto de datos experimentales obtenidos del sistema (observaciones), se ajusta un modelo matemtico a los mismos.
Este es un modelo inductivo.
En el modelado fsico de un sistema, se ejecutan las siguientes etapas:
1. Se analizan las variables involucradas en el sistema, y se determinan las que
son de inters.
2. Se establecen las relaciones constitutivas de los elementos del sistema.
3. Se aplican las leyes de conservacin (energa, masa, cantidad de movimiento).
4. Se identifican los parmetros en el modelo.
5. Se valida el modelo.
Para el desarrollo del modelo matemtico de un sistema complejo, es conveniente
realizar un modelado modular. Esto es, formar el modelo (complejo) del sistema,
como la interconexin de los modelos (sencillos) de sus partes.
Las partes del sistema, estn modeladas por ecuaciones que describen su comportamiento, sin preocuparse por la forma en que estas se resolvern. Las relaciones
ente las partes, estn descritas por ecuaciones de conexin, sin que se establezca su
causalidad. No estn definidas en funcin de entradas y salidas.
Las leyes que gobiernan los fenmenos que ocurren en el sistema fsico, establecen las relaciones entre sus variables, mientras que las interconexiones entre sus
subsistemas, la forma cmo estas se comparten (Willems, 2007).
El modelo mostrar claramente el comportamiento del sistema, aunque la solucin del mismo pueda presentar dificultades.

2
Elementos basicos de los sistemas fsicos
Se presentan aqu, las variables y las relaciones constitutivas de los elementos bsicos, de varios sistemas de diferente dominio fsico, sin pretender entrar en el detalle
de la derivacin de las mismas.

2.1 Introduccin
Considrese primero el elemento generalizado mostrado en la figura 2.1, como una
representacin de cualquier elemento fsico.
El elemento generalizado tiene dos terminales, denotados como 2 y 1, por medio
de los cuales interacta con el medio que lo circunda (otros elementos y el medio ambiente). La conexin entre los terminales de los elementos, hace que estos
compartan informacin, sus variables.
En el elemento se tendrn dos tipos de variables generalizadas, que son funciones
del tiempo (Shearer et al., 1971):
Figura 2.1: Elemento generalizado de dos terminales

11

2 Elementos bsicos de los sistemas fsicos

12
Figura 2.2: Tetraedro de
Paynter

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 travs del elemento. Se
requieren dos puntos para su medicin.
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 medicin.
En cada dominio fsico, se definir cuales son la transvariable y la pervariable,
y las relaciones entre ellas en sus elementos bsicos. Esto tambin permitir, definir
cuales variables constituyen los estados de estos sistemas.
En la figura 2.2 se muestra una adaptacin del Tetraedro de estados de Paynter
(1961), en el cual se muestran, adems de la transvariable y la pervariable, la integral
de la transvariable x(t) y la integral de la pervariable h(t).
La transvariable v21 (t) = v2 (t) v1 (t) y su integral x21 (t) = x2 (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.

2.1. Introduccin

13

Los trayectos entre la pervariable y la transvariable en el tetraedro, indicarn las


relaciones existentes entre ellas, permitiendo determinar la relacin constitutiva de
un elemento determinado.
Como se ha indicado antes, por definicin
. dh(t)
,
f (t) =
dt
. dx21 (t)
v21 (t) =
.
dt

(2.1)
(2.2)

Adems, del tetraedro de la figura 2.2, se tienen las siguientes relaciones


.
h(t) = A v21 (t),
.
x21 (t) = T f (t),
.
v21 (t) = D f (t).

(2.3)
(2.4)
(2.5)

Combinando (2.3) y (2.1) se obtiene que


dv21 (t)
= f (t),
dt

(2.6)

que es la relacin constitutiva de los elementos almacenadores de energa tipo A,


aquellos cuya variable de estado es su transvariable.
Ejemplos de elementos tipo A son el capacitor elctrico, la masa, el volante y el
capacitor hidrulico.
De (2.6) se obtiene que
v21 (t) =

1
A

Z t
to

f ( )d + v21 (to ),

(2.7)

donde v21 (to ) es el estado inicial del elemento tipo A.


Si se combinan ahora (2.4) y (2.2) se obtiene que
T

d f (t)
= v21 (t),
dt

(2.8)

que es la relacin constitutiva de los elementos almacenadores de energa tipo T,


aquellos cuya variable de estado es su pervariable.
Por ejemplo, el inductor elctrico y el resorte, son elementos tipo T.
De (2.8) se obtiene que
1
f (t) =
T

Z t
to

v21 ( )d + f (to ),

(2.9)

2 Elementos bsicos de los sistemas fsicos

14

Figura 2.3: Elementos elctricos


donde f (to ) es el estado inicial del elemento tipo T.
Finalmente, (2.5) es la relacin constitutiva de los elementos disipadores de energa tipo D. Esta es una relacin algebraica, por lo tanto, los elementos tipo D no
tienen un estado asociado a ellos.
Elementos que disipan energa son, por ejemplo, el resistor elctrico, y los orificios y las vlvulas en los sistemas hidrulicos.
Existirn tambin fuentes ideales de transvariable y de pervariable, as como elementos transformadores de variables dentro de un mismo dominio fsico y elementos
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 relacin de causa a efecto
o de entrada a salida.
Si bien la representacin 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 estmulos aplicados y a los cambios de los estados
iniciales o parmetros, y como salidas, a aquellas de sus variables que se desean
observar, las variables de inters que son medidas.

2.2 Sistemas elctricos


Los elementos bsicos de los sistemas elctricos son: el capacitor, el inductor y el
resistor, mostrados en la figura 2.3.
En los elementos de los sistemas elctricos, la transvariable es la diferencia de
tensin (v21 ) entre sus terminales y la pervariable la corriente elctrica (i) por ellos.

2.3. Sistemas hidrulicos

15

Capacitor elctrico ideal


La relacin constitutiva del capacitor es
C

dv21 (t)
= i(t), v021 ,
dt

(2.10)

donde v021 es la diferencia de tensin inicial en el capacitor.


El capacitor, almacena energa en funcin de la diferencia de tensin entre sus
terminales, energa de campo elctrico.
Inductor elctrico ideal
La relacin constitutiva del inductor es
L

di(t)
= v21 (t), i0 ,
dt

(2.11)

donde i0 es la corriente inicial por el inductor.


El inductor, almacena energa en funcin de la corriente por el, energa de
campo magntico.
Resistor elctrico ideal
La relacin constitutiva del resistor es
v21 (t) = Ri(t).

(2.12)

El resistor disipa energa.


En los sistemas elctricos 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 tensin
v21 en V y la corriente i en A. La unidad del tiempo t es s.

2.3 Sistemas hidrulicos


Los elementos bsicos de los sistemas hidrulicos son: el tanque de almacenamiento,
la tubera larga y la restriccin hidrulica, los cuales se muestran en la figura 2.4.
En los elementos de los sistemas hidrulicos, la transvariable es la diferencia de
presin (P21 ) entre sus extremos y la pervariable la razn de flujo volumtrico (Q) a
travs de ellos.

2 Elementos bsicos de los sistemas fsicos

16

Figura 2.4: Elementos hidrulicos


Capacitor hidrulico ideal (tanque)
La relacin constitutiva de un tanque cilndrico vertical y abierto a la atmsfera
es
dH(t)
= Q(t).
(2.13)
A
dt
Como la presin absoluta en el fondo del tanque es
P2 (t) = gH(t) + P0 ,

(2.14)

su valor relativo respecto a la presin atmosfrica P0 (de referencia), es


P20 (t) = P2 (t) P0 = gH(t).

(2.15)

Utilizando (2.13) y (2.15), la relacin constitutiva del tanque se puede escribir


como
A
dP20 (t)
= Q(t), C f =
, P0 ,
(2.16)
Cf
dt
g 20
0 es la presin relativa inicial en el fondo del tanque.
donde P20

Este capacitor hidrulico, almacena energa en funcin de la presin diferencial


(relativa a la atmosfrica).
Inductor hidrulico ideal (tubera larga)
La presin diferencial entre los extremos de la tubera, ejerce una fuerza que
acelera el fluido dentro de esta, segn la ecuacin
 
1 dQ(t)
A [P2 (t) P1 (t)] = AP21 (t) = AL
.
(2.17)
A
dt
de donde se obtiene la relacin constitutiva del inductor hidrulico
If

dQ(t)
L 0
= P21 (t), I f =
,Q ,
dt
A

(2.18)

2.4. Sistemas mecnicos con elementos que se desplazan

17

donde Q0 es el caudal inicial por la tubera.


El inductor hidrulico, almacena energa en funcin del caudal a travs de el.
Resistor hidrulico ideal (orificio, vlvula)
Se considerarn como resistores hidrulicos, aquellos elementos que ponen
resistencia al flujo de un fluido, ocasionando una cada de presin. Una restriccin (orificio, vlvula) insertada en una tubera, es un resistor hidrulico.
La cada de presin a travs de un orificio, ocasionada por el flujo de un fluido
est dada, en forma aproximada, por la relacin
1
P21 (t) = a0 Q(t) |Q(t)| , a0 = Cd2 A20 ,
2

(2.19)

la cual tambin se expresa como


p
R f Q(t) = signo{P21 (t)} |P21 (t)|.

(2.20)

En el mbito lineal, (2.20) se puede aproximar por la relacin


Rf Q(t) = P21 (t).

(2.21)

En la restriccin hidrulica se disipa energa.


En los sistemas hidrulicos la diferencia de presin P21 est dada en Pa y el caudal volumtrico Q en m3 s1 . La capacitancia C f del capacitor hidrulico est dada
en m3 Pa1 , la inductancia I f del inductor hidrulico en Pa s/(m3 /s) y la resistencia
(lineal) Rf del resistor hidrulico en Pa/(m3 /s). La unidad del tiempo t es s.

2.4 Sistemas mecnicos con elementos que se desplazan


Los elementos bsicos de los sistemas mecnicos, cuyos componentes se desplazan
en forma longitudinal son: la masa, el resorte y el amortiguador, los cuales se muestran en la figura 2.5. La masa solo tiene un punto mvil, se considera concentrada en
un punto, mientras que los dos extremos del resorte y del amortiguador son mviles,
estos se estiran o encogen longitudinalmente.
En estos elementos, la transvariable es la diferencia de velocidades (V21 ) entre
sus extremos y la pervariable la fuerza (F) por ellos. Como se indica, la posicin y
velocidad de la masa, deben determinarse respecto a un punto de referencia.

2 Elementos bsicos de los sistemas fsicos

18

Figura 2.5: Elementos mecnicos que se desplazan


Masa ideal
La relacin constitutiva de la masa es
m

dV20 (t)
0
= F(t), V20
,
dt

(2.22)

0 es la velocidad inicial de la masa.


donde V20

La masa almacena energa en funcin de su velocidad, energa cintica.


Resorte ideal
Las relaciones constitutivas del resorte son
1
F(t) = X21 (t),
k
1 dF(t)
= V21 (t), F 0 ,
k dt

(2.23)
(2.24)

donde F 0 es la fuerza inicial por el resorte.


El resorte almacena energa en funcin de la fuerza, energa potencial.
Amortiguador ideal
La relacin constitutiva del amortiguador es
F(t) = bV21 (t).
El amortiguador disipa energa.

(2.25)

2.5. Sistemas mecnicos con elementos que giran

19

Figura 2.6: Elementos mecnicos que giran


La diferencia de desplazamientos X21 , entre los extremos de los elementos mecnicos 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 posicin y


donde X21
velocidad son mediadas respecto al punto de referencia (X20 (t), V20 (t)).
En los sistemas mecnicos 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 N m1 ,
el coeficiente de amortiguamiento b del amortiguador en N m1 s, la diferencia de
desplazamiento X20,1 en m, la diferencia de velocidades V20,1 en m s1 y la fuerza F
en N. La unidad del tiempo t es s.

2.5 Sistemas mecnicos con elementos que giran


Los elementos bsicos que giran en los sistemas mecnicos son: la masa giratoria o
volante, el resorte giratorio y el amortiguador giratorio, los cuales se muestran en
la figura 2.6. El eje del volante es rgido (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
(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 mecnicos con elementos que se desplazan,

2 Elementos bsicos de los sistemas fsicos

20

en el caso del volante, su posicin y velocidad angulares deben determinarse respecto


a un eje de referencia.
Volante ideal
La relacin constitutiva del volante es
J

d20 (t)
0
,
= T (t), 20
dt

(2.27)

0 es la velocidad angular inicial del volante.


donde 20

El volante almacena energa cintica en funcin de su velocidad angular.


Resorte giratorio ideal
Las relaciones constitutivas del resorte giratorio son
1
T (t) = 21 (t),
K
1 dT (t)
= 21 (t), T 0 ,
K dt

(2.28)
(2.29)

donde T 0 es el par inicial por el.


El resorte giratorio almacena energa potencial en funcin del par.
Amortiguador giratorio ideal
La relacin constitutiva del amortiguador giratorio es
T (t) = B21 (t).

(2.30)

El amortiguador giratorio disipa energa.


La diferencia de desplazamientos angulares 21 , entre los extremos de los elementos mecnicos que giran, est dada por
d21 (t)
0
= 21 (t), 21
,
dt

(2.31)

0 es el desplazamiento angular relativo inicial.


donde 21
En los sistemas mecnicos que giran, el momento de inercia J del volante est
dado en Nms2 , la constante de rigidez K del resorte giratorio en N m rad1 , el coeficiente de amortiguamiento B del amortiguador giratorio en N m rad1 s, la diferencia
de posiciones angulares 20,1 en rad, la diferencia de velocidades angulares 21 en
rad s1 y el par T en N m. La unidad del tiempo t es s.

2.6. Sistemas trmicos

21

Figura 2.7: Elementos trmicos

2.6 Sistemas trmicos


En los sistemas trmicos, puede haber almacenamiento y transmisin de calor. Esta
ltima puede ser por conduccin, conveccin o radiacin.
Los elementos de los sistemas trmicos son: el capacitor trmico y el resistor
trmico, los cuales se muestran en la figura 2.7.
En los sistemas trmicos la transvariable es la diferencia de temperatura (T21 )
y la pervariable el flujo de calor (q). La diferencia de temperatura en el capacitor
trmico, debe tomarse respecto a una de referencia.
Capacitor trmico ideal
La relacin constitutiva del capacitor trmico es
Ct

dT20 (t)
0
= q(t), T20
,
dt

(2.32)

0 es la diferencia de temperatura inicial del capacitor trmico.


donde T20

El capacitor trmico almacena energa en funcin del incremento de temperatura.


La capacitancia trmica de un material est dada por
Ct = Cp m,

(2.33)

donde Cp es su calor especfico y m su masa.


Resistor trmico ideal
La relacin constitutiva del resistor trmico es
T21 (t) = Rt q(t).
El resistor trmico disipa energa.

(2.34)

2 Elementos bsicos de los sistemas fsicos

22

En el caso de la transmisin de calor por conduccin en un material slido, su


resistencia trmica es
L
Rt =
,
(2.35)
c A
donde c es la conductividad trmica del material, A su rea normal a la direccin del flujo de calor y L su largo (grosor) en la direccin del flujo de calor.
Para la transmisin de calor por conveccin, la resistencia trmica es
Rt =

1
,
Ch A

(2.36)

donde Ch es el coeficiente global de transferencia de calor.


Si la resistencia trmica del resistor es alta, se dice que este es un aislante, pero
si esta es baja, se dice ms bien que el material es un buen conductor trmico.
En los elementos trmicos la capacitancia Ct del capacitor trmico est dada en
J K1 , la resistencia Rt del resistor trmico en K W1 , 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 Conversin de variables


En los sistemas fsicos, estn presentes elementos que permiten modificar la relacin
entre las variable en sus terminales, dentro de un mismo dominio fsico. Los hay
tambin otros, que permiten convertir las variables de un dominio fsico a otro.

Transformadores ideales
Se denominar como transformador a un elemento que modifica la relacin entre las
pervariables y transvariables en sus terminales, sin cambiar su dominio fsico.
Elementos de este tipo son el transformador elctrico, la palanca mecnica, el
conjunto de engranes y otros, mostrados en la figura 2.8.
Transformador elctrico ideal
Si no hay prdidas de energa 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)

2.7. Conversin de variables

23

Figura 2.8: Elementos de conversin


donde n es la relacin de transformacin.
Si n > 1, es un transformador elevador de tensin, mientras que si n < 1, es un
transformador reductor de tensin.
Sistema de engranes ideal
En un transformador mecnico giratorio ideal, sin prdidas de energa, se tiene
que
20 (t)Ta (t) = 10 (t)Tb (t),
(2.39)
de donde se obtiene que
Ta (t)
10 (t)
= n,
=
20 (t)
Tb (t)

(2.40)

donde n es la relacin de engranes.


Si n > 1 es un incrementador de velocidad, mientras que si n < 1, es un reductor
de velocidad.

Transductores ideales
Un transductor, ser un elemento que convierte las variables de un dominio fsico en
las de otro.
Por ejemplo, un motor elctrico es un transductor electromcanico, convierte
energa elctrica en energa mecnica, mientras que un conjunto compuesto por una
turbina y un generador elctrico transforma energa mecnica, hidrulica, elica o de
otra forma, en energa elctrica.

2 Elementos bsicos de los sistemas fsicos

24
Figura 2.9: Transductor electromecnico

Figura 2.10: Transductor generalizado

En el transductor electromecnico ideal mostrado en la figura 2.9, se tiene que la


energa elctrica (en sus terminales elctricos) y la energa mecnica (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
fb (t) =
fa (t),
N
v43 (t) fb (t) = v21 (t) fa (t),

(2.42)
(2.43)
(2.44)

donde N es la constante del transductor y cuyas unidades sern las de v43 /v21 , que
deben ser equivalentes a las de fa / fb .

2.8. Variables de los sistemas fsicos

25

Cuadro 2.1: Transvariables, pervariables y sus integrales, de los diferentes sistemas


fsicos

Sistema

Transvariable
v(t)

Pervariable
f (t)

Integral de la
transvariable x(t)

Integral de la
pervariable h(t)

Elctrico

Diferencia de
tensin v
Diferencia de
presin P

Corriente i

Carga q

Diferencia de
velocidad V
Diferencia de
velocidad
angular
Diferencia de
temperatura T

Fuerza F

Ligamento
de flujo
Cantidad de
movimiento de
presin
Diferencia de
desplazamiento X
Diferencia de
desplazamiento
angular

Hidrulico

Mecnico que
se desplaza
Mecnico
que gira
Trmico

Caudal Q

Par T

Flujo de
calor q

Volumen V

Cantidad de
movimiento p
Cantidad de
movimiento
angular h
Calor H

Si el dominio fsico de las variables en los terminales 2 y 1, es el mismo que el


de las variables en los terminales 4 y 3, la constante N es adimensional y el elemento
se denominar entonces transformador.
En ningn caso, (2.42) a (2.44) establecen una causalidad o relacin de entrada a
salida, entre las variables en los dos conjuntos de terminales del transductor.

2.8 Variables de los sistemas fsicos


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 fsicos descritos.
En estos, con la excepcin de los sistemas hidrulicos y trmicos, el flujo de
potencia entrando a un elemento es
P(t) = f (t)v21 (t).

(2.45)

Un tratamiento detallado de los elementos de los sistemas fsicos y de los elementos generalizados, se presenta en Shearer et al. (1971).

2 Elementos bsicos de los sistemas fsicos

26

(a) Capacitor e inductor elctricos

(b) Capacitor e inductor interconectados

Figura 2.11: Interconexin de dos elementos

2.9 Interconexin de los elementos


Se han presentado las caractersticas de los elementos de diferentes dominios fsicos,
donde cada uno de ellos representa un fenmeno determinado.
Las relaciones constitutivas de estos elementos, no establecen una causalidad
(relacin entrada a salida) de las variables en el mismo.
Supngase que se tiene el capacitor elctrico y el inductor elctrico, mostrados
en la figura 2.11a
En la seccin 2.2 se presentaron las relaciones constitutivas de estos dos elementos, las cuales son:
dvC (t)
= iC (t), vC0 ,
dt
diL (t)
= vL (t), i0L .
L
dt

(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 interconexin se establecen dos ecuaciones adicionales:
Las transvariables (variables de potencial) en el punto de interconexin, son
iguales
vC (t) = vL (t).

(2.48)

2.10. Sistemas heterogneos

27

La suma de las pervariables (variables de flujo) en el punto de interconexin,


es cero
iC (t) + iL (t) = 0.

(2.49)

Por lo tanto, el modelo del circuito elctrico de la figura 2.11b es


dvC (t)
= iC (t), vC0 ,
dt
diL (t)
= vL (t), i0L ,
L
dt
vC (t) = vL (t),

iC (t) + iL (t) = 0.

(2.50)
(2.51)
(2.52)
(2.53)

Ahora se tienen cuatro variables y cuatro ecuaciones. Adems, el estado inicial


del sistema est definido, {vC0 , i0L }. El modelo est completamente determinado.
Como se ver ms adelante, pasar del modelo del sistema, dado en este caso por
(2.50) a (2.53), a su modelo Modelica, es directa.
Si se deseara resolver el modelo de este circuito elctrico, empleando una simulacin mediante bloques causales (con conexiones de entrada y salida definidas), se
deber partir de un diagrama de bloques con elementos de integracin (integradores), similar al mostrado en la figura 2.12.
La relacin entre este diagrama y el circuito de la figura 2.11b, ya no es evidente.

2.10 Sistemas heterogneos


Los sistemas fsicos, por lo general, integral elementos de diferentes dominios fsicos, por lo se encuentran denominaciones para referirse a ellos como sistemas electrohidrulicos, electromecnicos, electroqumicos, electrotrmicos, hbridos (con referencia a vehculos), termofludicos, o mecatrnicos.
Un ejemplo simple de un sistema heterogneo, es un motor elctrico y en particular, el motor de corriente continua mostrado en la figura 2.13. El motor en si es un
transductor electromecnico. Convierte energa elctrica en energa mecnica.
En este sistema, las variables elctricas son la tensin Va (t) y la corriente ia (t) en
el circuito de armadura, y la fuerza contra electromotriz Vm (t). Las variables mecnicas son la velocidad de rotacin (t) del motor y el par T (t) producido por este.
Adems, se considerar un par TL (t) opuesto por la carga conectada al eje del motor.
Las ecuaciones que modelan el motor son:

2 Elementos bsicos de los sistemas fsicos

28

Figura 2.12: Diagrama de


bloques del circuito elctrico capacitor e inductor de
la figura 2.11b

Figura 2.13: Motor elctrico de corriente continua

2.10. Sistemas heterogneos

29

En el circuito elctrico
La

dia (t)
= Va (t) Ra ia (t) Vm (t),
dt

(2.54)

d (t)
= T (t) B (t) TL (t),
dt

(2.55)

En la parte mecnica
J

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)
= Kt ia (t) B (t) TL (t),
J
dt

La

(2.58)
(2.59)

Los parmetros del motor son m = {Ra , La , J, B, Ke , Kt }, con la resistencia Ra del


circuito de armadura en , la inductancia La del circuito de armadura en H, la inercia
J del rotor del motor en kg m, el coeficiente de friccin viscosa B del rotor del motor
en N m s, la constante Ke de la fuerza contra electromotriz en V/(rad/s) y la constante
Kt del par del motor en N m A1 . En el sistema de unidades SI, Ke = Kt = K.
Las variables en el sistema del motor elctrico incluyen: la corriente elctrica ia
en A, la tensin de armadura Va en V y la velocidad de rotacin en rad s1 . El par
opuesto por la carga es TL en N m.
Como se ver ms adelante, el lenguaje Modelica permite modelar y simular,
sistemas que combinan diferentes dominios fsicos, como el del ejemplo anterior,
con gran facilidad (Clau y Beater, 2002; Beater y Clau, 2003).

Parte II

El lenguaje Modelica y su
biblioteca estndar

31

3
Componentes Modelica para respresentar a
los elementos de los sistemas fsicos
3.1 Introduccin
En el cuadro 2.1 de la seccin 2.8 se presentaron las transvariables y las pervariables,
as como sus integrales, asociadas con diferentes sistemas fsicos.
Se presentar aqu en forma breve, la transicin del elemento fsico al componente Modelica que lo representa. En la seccin 4.5, se ver la definicin de componentes
Modelica con ms detalle.

3.2 Variables de potencial y de flujo


En la figura 3.1a se muestra un componente genrico 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 p21 (t) = p2 (t) p1 (t) a
travs del componente (es diferente en cada terminal).
Estas dos variables estn relacionadas, por la ecuacin general
p21 (t) = h( f (t)).

(a) Variables de un componete

(b) Interconexin de dos componentes

Figura 3.1: Variables y conexin de componentes


33

(3.1)

34

3 Componentes en Modelica

Segn la definicin anterior, la variable de flujo por el componente, tiene el mismo significado que las pervariables por los elementos fsicos, y la variable de potencial a travs del componente, el mismo significado que la transvariable a travs de
los elementos fsicos.
Para determinar, si la seleccin natural de las variables de flujo y potencial de los
componentes, son las pervariables y trasvariables en los elementos de los sistemas
fsicos vistas anteriormente, se debe tomar en consideracin lo que ocurre cuando
dos o ms componentes, se conectan entre si por sus terminales, como se muestra en
la figura 3.1b, en forma similar al anlisis de la conexin del capacitor y el inductor,
hecho en la seccin 2.9.
Al interconectar los terminales de dos (o ms) componentes, se tienen dos ecuaciones de conexin, que establecen restricciones entre las variables de los componentes:
1. La suma de todas las variables de flujo en el terminal de conexin es cero
f 1 (t) + f 2 (t) + = 0.

(3.2)

2. Todas las variables de potencial en el terminal de conexin son iguales


p12 (t) = p22 (t) = .

(3.3)

Si consideramos que las variables de flujo de los componentes son las pervariables de los sistemas fsicos de las secciones 2.2 a 2.6, la primera condicin equivale
a que: en los sistemas elctricos, la suma de corrientes en un nodo es cero; en los
sistemas mecnicos, la suma de fuerzas (pares) en un punto sin masa es cero; en los
sistemas hidrulicos (fluidos incompresibles), la suma los caudales en la interconexin de tuberas es cero; y en los sistemas trmicos, la suma de los flujos de calor en
un punto es cero.
Todas las condiciones anteriores, estn dadas por las leyes de conservacin que
gobiernan cada uno de los sistemas fsicos. Las leyes de conservacin de la carga
elctrica, 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 fsicos.
Si se toman ahora las variables de potencial iguales a las transvariables de los
sistemas fsicos, la segunda condicin equivale a que: en los sistemas elctricos, las
tensiones elctricas en el nodo de conexin son iguales; en los sistemas hidrulicos,
que la presin en el punto de conexin de las tuberas son iguales; y en los sistemas
trmicos, las temperatura en el punto de unin de dos materiales son iguales, lo cual
tambin concuerda con lo establecido por las leyes que gobiernan estos sistemas.

3.3. Definicin de los conectores y puertos en Modelica

35

Cuadro 3.1: Variables de potencial y de flujo, para los componentes de los diferentes
dominios fsicos
Dominio fsico

Variable de potencial p(t)

Variable de flujo f (t)

Elctrico
Hidrulico (lquidos)
Fludico (lq. y gases)
Mecnico que desplaza
Mecnico que gira
Trmico

Diferencia de tensin V
Diferencia de presin P
Diferencia de presin P
Dif. desplazamiento X
Dif. desplazamiento angular
Diferencia de temperatura T

Corriente i
Flujo volumtrico Qv
Flujo de masa Qm
Fuerza F
Par T
Flujo de calor q

En los sistemas mecnicos con elementos que se desplazan (giran), esta segunda
condicin equivale a que en el punto de unin, las velocidades de desplazamiento
longitudinal (velocidades angulares) de los elementos son iguales. Esto es correcto,
pero es insuficiente para definir completamente el comportamiento de los sistemas
mecnicos. No basta establecer que en el punto de conexin. las velocidades son
iguales. Las restricciones geomtricas impuestas por la conexin, hacen necesario
establecer que los desplazamientos lineales (angulares) son tambin iguales.
Debido lo anterior, para los sistemas mecnicos, 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 de los diferentes dominios fsicos.

3.3 Definicin de los conectores y puertos en Modelica


Para la interconexin de los componentes entre si, se deben definir los terminales de
conexin o conectores, y las variables (de potencial y flujo) que residen en ellos.
En Modelica, las declaraciones de los conectores de los componentes, son de la
forma general
connector C o n e c t o r D o m i n i o F i s i c o
variableTipoPotencial p;
flow variableTipoFlujo f ;
end C o n e c t o r D o m i n i o F i s i c o ;

3 Componentes en Modelica

36

En el conector hay una variable de potencial tipo variableTipoPotencial y una


variable de flujo tipo variableTipoFlujo (definida con el prefijo flow).
Las definiciones bsicas, de los conectores de los componentes de los diferentes
dominios fsicos en Modelica, son (Modelica Association, 2013):
Conector elctrico (borne)
connector Pin " Pin of an electrical component "
M o d e l i c a . S I u n i t s . V o l t a g e v " Potential at the pin " ;
flow M o d e l i c a . S I u n i t s . C u r r e n t i " Current flowing into the
pin " ;
end Pin ;

Conector magntico
connector MagneticPort " Generic magnetic port "
S I . M a g n e t i c P o t e n t i a l V_m " Magnetic potential at the port " ;
flow SI.MagneticFlux Phi " Magnetic flux flowing into the
port " ;
end MagneticPort ;

Conector fludico (lquidos o gases)


connector FluidPort " Interface for quasi one - dimensional
fluid flow in a piping network ( incompressible or
compressible , one or more phases , one or more
substances ) "
replaceable package Medium = M o d e l i c a . M e d i a . I n t e r f a c e s .
PartialMedium " Medium model " ;
flow M e d i u m . M a s s F l o w R a t e m_flow " Mass flow rate from the
connection point into the component " ;
M e d i u m . A b s o l u t e P r e s s ur e p " Thermodynamic pressure in the
connection point " ;
stream M e d i u m . S p e c i f i c E n t h a l py h_outflow " Specific
thermodynamic enthalpy close to the connection point
if m_flow < 0 " ;
stream M e d i u m . M a s s F r a c t i o n Xi_outflow [ Medium.nXi ]
" Independent mixture mass fractions m_i / m close to the
connection point if m_flow < 0 " ;
stream M e d i u m . E x t r a P r o p e r t y C_outflow [ Medium.nC ]
" Properties c_i / m close to the connection point
if m_flow < 0 " ;
end FluidPort ;

3.3. Definicin de los conectores y puertos en Modelica

37

En la mayora de los diferentes dominios fsicos, la definicin 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 especficas, en los procesos hidrulicos y qumicos.
Como se puede notar en la definicin de los conectores de los elementos fludicos anterior, esta incluye tambin 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 mecnico (brida)
connector Flange_a " ( left ) 1 D translational flange ( flange
axis directed INTO cut plane , e. g. from left to right ) "
SI.Position s " Absolute position of flange " ;
flow SI.Force f " Cut force directed into flange " ;
end Flange_a ;

Conector mecnico giratorio


connector Flange_a " 1 - dim. rotational flange of a shaft
( filled square icon ) "
SI.Angle phi " Absolute rotation angle of flange " ;
flow SI.Torque tau " Cut torque in the flange " ;
end Flange_a ;

Conector trmico
partial connector HeatPort " Thermal port for 1 - dim.
heat transfer "
M o d e l i c a . S I u n i t s . T e m p e r a t u r e T " Port temperature " ;
flow M o d e l i c a . S I u n i t s . H e a t F l o w R a t e Q_flow " Heat flow rate
( positive if flowing from outside into the component ) " ;
end HeatPort ;

Para tener mayor claridad en los listados de cdigo Modelica anteriores y los
incluidos a continuacin, tomados directamente de la biblioteca Modelica (ver el captulo 5), se han omitido las notas (annotation) relacionadas con el despliegue grfico (Placement) del icono asociado y con la informacin html (Documentation) a
mostrar cundo se seleccione View Documentation en un icono.
Los conectores anteriores llevan a la definicin de los puertos de los componentes.

3 Componentes en Modelica

38

Algunos ejemplos de estos, son los siguientes (Modelica Association, 2013):


Puerto elctrico (modelo parcial)1
partial model OnePort " Component with two electrical pins p
and n and current i from p to n "
SI.Voltage v " Voltage drop between the two pins
( = p.v - n.v ) " ;
SI.Current i " Current flowing from pin p to pin n " ;
PositivePin p " Positive pin ( potential p.v > n.v for
positive voltage drop v ) " ;
NegativePin n " Negative pin " ;
equation
v = p.v - n.v ;
0 = p.i + n.i ;
i = p.i ;
end OnePort ;

Puerto mecnico rgido (modelo parcial)


partial model PartialRigid " Rigid connection of two
translational 1 D flanges "
SI.Position s " Absolute position of center of component
( s = flange_a.s + L /2 = flange_b.s - L /2 ) " ;
parameter SI.Length L ( start = 0 ) " Length of component ,
from left flange to right flange ( = flange_b.s
- flange_a.s ) " ;
Flange_a flange_a " Left flange of translational
component " ;
Flange_b flange_b " Right flange of translational
component " ;
equation
flange_a.s = s - L / 2;
flange_b.s = s + L / 2;
end PartialRigid ;

Puerto mecnico giratorio (modelo parcial)


partial model PartialCompliant " Partial model for the
compliant connection of two rotational 1 - dim. shaft
flanges "
M o d e l i c a . S I u n i t s . A n g l e phi_rel ( start = 0 ) " Relative
rotation angle ( = flange_b.phi - flange_a.phi ) " ;
1 Ver

la seccin 4.5.2.

3.4. Componentes Modelica de los elementos fsicos

39

M o d e l i c a . S I u n i t s . T o r q ue tau " Torque between flanges


( = flange_b.tau ) " ;
Flange_a flange_a " Left flange of compliant 1 - dim.
rotational component " ;
Flange_b flange_b " Right flange of compliant 1 - dim.
rotational component " ;
equation
phi_rel = flange_b.phi - flange_a.phi ;
flange_b.tau = tau ;
flange_a.tau = - tau ;
end PartialCompliant ;

Puerto trmico (modelo parcial)


partial model Element1D " Partial heat transfer element with
two HeatPort connectors that does not store energy "
M o d e l i c a . S I u n i t s . H e a t F l o w R a t e Q_flow " Heat flow rate from
port_a - > port_b " ;
M o d e l i c a . S I u n i t s . T e m p e r a t u r e D i f f e r e n c e dT " port_a.T
- port_b.T " ;
public
HeatPort_a port_a ;
HeatPort_b port_b ;
equation
dT = port_a.T - port_b.T ;
port_a.Q_flow = Q_flow ;
port_b.Q_flow = - Q_flow ;
end Element1D ;

Los modelos parciales (incompletos), son la base para definir otros que extienden
sus caractersticas. Estos no pueden ser utilizados dentro de un diagrama de interconexin de componentes.

3.4 Componentes Modelica de los elementos fsicos


Con base en los puertos, se definen los componentes que representan los elementos
de los diferentes dominios fsicos. Algunos ejemplos, son (Modelica Association,
2013):
Inductor elctrico
model Inductor " Ideal linear electrical inductor "
extends Interfaces.OnePort ( i ( start = 0 ) ) ;
parameter SI.Inductance L ( start = 1 ) " Inductance " ;

3 Componentes en Modelica

40
equation
L * der ( i ) = v ;
end Inductor ;

Masa que se desplaza


model Mass " Sliding mass with inertia "
parameter SI.Mass m ( min = 0 , start = 1 ) " Mass of the
sliding mass " ;
parameter StateSelect stateSelect = S t a t e S e l e c t . d e f a u l t
" Priority to use s and v as states " ;
extends T r a n s l a t i o n a l . I n t e r f a c e s . P a r t i a l R i g i d ( L = 0 ,
s ( start = 0 , stateSelect = stateSelect ) ) ;
SI.Velocity v ( start = 0 , stateSelect = stateSelect )
" Absolute velocity of component " ;
SI.Acceleration a ( start = 0 ) " Absolute acceleration of
component " ;
equation
v = der ( s ) ;
a = der ( v ) ;
m * a = flange_a.f + flange_b.f ;
end Mass ;

Resorte giratorio
model Spring " Linear 1 D rotational spring "
extends M o d e l i c a . M e c h a n i c s . R o t a t i o n a l . I n t e r f a c e s .
PartialCompliant ;
parameter S I . R o t a t i o n a l S p r i n g C o n s t a n t c ( final min = 0 ,
start = 100000 .0 ) " Spring constant " ;
parameter SI.Angle phi_rel0 = 0 " Unstretched spring
angle " ;
equation
tau = c * ( phi_rel - phi_rel0 ) ;
end Spring ;

Resistor trmico
model ThermalResistor " Lumped thermal element transporting
heat without storing it "
extends I n t e r f a c e s . E l e m e n t 1 D ;
parameter M o d e l i c a . S I u n i t s . T h e r m a l R e s i s t a n c e R " Constant
thermal resistance of material " ;
equation
dT = R * Q_flow ;

3.4. Componentes Modelica de los elementos fsicos

41

end ThermalResistor ;

Los modelos de los componentes, extienden (extends) los modelos parciales


(partial) de los puertos. De esta manera, los componentes heredan todas las propiedades de los puertos, los cuales a su vez se han definido en funcin de los conectores.
Esto permite realizar un modelado jerarquizado. Se establece un rbol genealgico 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.

4
El lenguaje Modelica
En este captulo se describen las caractersticas bsicas del lenguaje Modelica, sin
pretender entrar en todos los detalles del mismo.
Para profundizar en las caractersticas de Modelica, se recomienda consultar
su especificacin (Modelica Association, 2012), el libro de Tiller (2001), los libros
de Fritzson (2004, 2011) y en particular, el libro de Tiller (2014) que est disponible
en la web1 .

4.1 Introduccin
Modelica es un lenguaje orientado a objetos para modelar y simular, sistemas heterogneos no lineales complejos, esto es, sistemas que incluyen, por ejemplo, componentes mecnicos, elctricos, hidrulicos, de control continuo o secuencial, procesos,
y sistemas de transmisin de energa elctrica, entre otros.
La programacin del modelo Modelica de un sistema dinmico, puede hacerse a
dos niveles diferentes de abstraccin.
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 topologa del sistema a modelar,
utilizando un editor de texto.
En el segundo, o alto, el modelo del sistema se elabora mediante la interconexin
de componentes prediseados y disponibles normalmente en bibliotecas, utilizando
un editor grfico, donde cada uno de estos representa un fenmeno, mayoritariamente
fsico, 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 fsicas
entre los elementos del sistema.
1 http://book.xogeny.com/

43

4 El lenguaje Modelica

44

Un modelo Modelica es una descripcin matemtica declarativa del sistema a simular (no establece el procedimiento exacto a seguir). Las caractersticas del sistema
dinmico, se expresan en forma declarativa por medio de ecuaciones diferenciales,
algebraicas y discretas.
Adems, permite el modelado grfico de los sistemas, por medio de la interconexin de componentes de diferente naturaleza fsica (representados por iconos), por
medio de sus terminales. El modelo del sistema lo constituye un diagrama de interconexin de objetos.
Este diagrama es un esquemtico, consistente de componentes interconectados.
Cada componente tiene conectores que describen sus posibles interconexiones con
otros componentes.
Los diagramas de interconexin pueden representar ya sea un circuito elctrico,
un circuito hidrulico, un sistema trmico, un diagrama de bloques, un sistema de
control heterogneo (el controlador junto con el proceso controlado), o una mquina
de estados digital, ente otros.
Las caractersticas y el valor de los parmetros de los componentes, se especifican
utilizando la ventana de configuracin del componente.
A manera introductoria, o como ejemplo motivador, del modelado con base en
ecuaciones con Modelica, supngase que se desea analizar el comportamiento de un
sistema dinmico, modelado por la ecuacin diferencial de segundo orden
d2 y(t)
dy(t)
+ 2 n
+ n2 y(t) = n2 Ku(t),
2
dt
dt

(4.1)

ante un estmulo tipo escaln u(t) = 2 para t 0,2 s, cuyos parmetros son K = 2,5,
s = 10,0 rad1 y = 0,40.
En Modelica se tiene la funcin der, derivada de primer orden (d/dt), por lo que
(4.1) debe escribirse, utilizando la variable auxiliar x(t), como
x(t) =

dy(t)
,
dt

dx(t)
+ 2 n x(t) + n2 y(t) = n2 Ku(t).
dt

(4.2)
(4.3)

El texto del programa (modelo) Modelica, para realizar la simulacin deseada,


utilizando ecuaciones, es
model S i s t e m a S e g u n d o O r d e n
// Ejemplo introductorio
parameter Real K = 2 .5 " ganancia " ;
parameter Real wn = 10 .0 " frecuencia natural " ;
parameter Real z = 0 .4 " razon amortiguamiento " ;

4.1. Introduccin

45

Figura 4.1: Comportamiento del sistema de segundo orden


Real x ( start = 0 , fixed = true ) ;
Real y ( start = 0 , fixed = true ) " respuesta " ;
Real u " estimulo " ;
equation
u = if time >= 0 .2 then 2 else 0;
x = der ( y ) ;
der ( x ) + 2 * z * wn * x + wn ^ 2 * y = wn ^ 2 * K * u ;
annotation ( experiment ( StartTime = 0 , StopTime = 2 .0 ,
Tolerance = 1 e - 006 , Interval = 0 .005 ) ) ;
end S i s t e m a S e g u n d o O r d e n ;

De la descripcin 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 de instrucciones
de asignacin.
El cdigo escrito en Modelica, no representa un conjunto de instrucciones a ejecutar en forma secuencial. Es una declaracin que describe el sistema dinmico que
se desea simular, en trmino de sus variables y las relaciones existentes entre estas.
Por lo tanto, esta descripcin debe ser compilada y convertida en un conjunto de
instrucciones (ecuaciones) posible de ser resuelto numricamente.
El orden en que se definen los parmetros y variables, y luego las ecuaciones que
constituyen el modelo, no tiene ninguna relevancia.
En la figura 4.1 se muestran el estmulo aplicado y la respuesta del sistema simulado.

4 El lenguaje Modelica

46

Ms adelante, se ver la forma en que el modelo es escrito y el uso de los ambientes grfico OMEdit de OpenModelica, y Model Center y Simulation Center de
SytemModeler, para realizar el modelado, la simulacin y el despliegue de las variables.

4.2 Fundamentos de Modelica


Como lo es en todo lenguaje de programacin para computadoras digitales, los programas (modelos) Modelica deben cumplir con ciertas convenciones de notacin,
sintaxis y ejecucin.
Modelica es un lenguaje de modelado y simulacin de sistemas dinmicos orientado a objetos, que emplea una descripcin no causal del sistema con base en ecuaciones. Su entidad bsica es la clase. Los objetos son miembros de las clases. Los
objetos interactan entre si, por medio de los conectores.
Se describen adelante las principales caractersticas del lenguaje Modelica, con
base en la Versin 3.3 de su especificacin (Modelica Association, 2012)

4.2.1

Estructura de un modelo Modelica

La estructura general, de la lista de instrucciones de un modelo Modelica, es


model NombreModelo ;
constant ... // declaraci
o n de las constantes
parameter ... // declaraci
o n de los par
a metros
... // declaraci
o n de variables ( con condiciones iniciales )
initial equation // secci
o n optativa
...
equation // conjunto de ecuaciones del modelo
...
end NombreModelo ;

La declaracin de una clase, se inicia con la palabra clave class o model, seguida del nombre de la clase.
El programa puede definir una clase (class), un modelo (model), una funcin
(function), un conector (connector), un registro (record) o un bloque (block).
Las palabras clave model y class son equivalentes e intercambiables.
Las clases connector, record, block y function, tienen propiedades especiales.
La declaracin 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 caractersticas y propiedades, a los cuales se accede con la notacin punto (.).

4.2. Fundamentos de Modelica

47

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 declaracin de un objeto de una clase la crea. Se reserva memoria para el y
se inicializan sus variables.
Se establece una jerarqua 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 an mayor.
La declaracin de la clase (modelo, funcin, etc.) termina con la palabra clave
end seguida del nombre dado a esta.
En el modelo Modelica, la primera parte es la seccin de declaraciones de las
constantes, parmetros y variables, con base en el tipo de informacin que almacenan, ya sean estos tipos bsicos (Real, Integer, Boolean, ...), o de una clase
definida (Voltage, Inductance, Mass, Force, ...).
La palabra clave equation, separa la seccin de declaraciones de la de ecuaciones, en la que se define el comportamiento de las variables del sistema simulado.
Cada lnea de declaracin y cada ecuacin, se termina con un punto y coma (;).

4.2.2

Clases especializadas

El block es una clase con una causalidad definida. Similar a la clase model, con la
restriccin que todas las variables de un conector de un block, deben llevar el prefijo
input o output.
La clase connector, se utiliza para establecer la estructura de los puntos de
interfaz (conexin), 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. Adems, evitan el conflicto entre nombres de
definiciones, ya que que estos estarn precedidos por el nombre del paquete (notacin
punto).
Estos permiten que los elementos del paquete sean importados, utilizando import.
Se puede importar el paquete completo, o una o ms definiciones en particular e
incluso, estas se pueden renombrar:
import nombrePaquete ;
import n o m b r e P a q u e t e . n o m b r e D e f i n i c i o n ;
import nuevoNombre = n o m b r e P a q u e t e . n o m b r e D e f i n i c i o n ;

4 El lenguaje Modelica

48

Similar a los paquete es el operator, pero este solo puede contener declaraciones de funciones.

4.2.3

Convencin para los nombres

En Modelica existe una convencin no forzada de uso general, para la asignacin de


los identificadores (nombres) de las clases, variables, constantes, parmetros y otros
elementos.
Los nombres de las clases o tipos, excepto los de las funciones, siempre empiezan con mayscula.
Los nombres de las variables empiezan con minscula, excepto los que son de
una sola letra. Los nombres formados por varias palabras, tienen cada palabra
iniciada con mayscula, con la palabra inicial siguiendo la regla anterior.
El smbolo de subrayado, solo se usa al final del nombre para indicar un subndice o superndice.
Los nombres predefinidos para los objetos de conexin (connector) en los
modelos, son p (positivo) y n (negativo), en los componentes elctricos, 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 mecnicos.
Los nombres son sensibles al uso de las maysculas y pueden contener cualquier
numero de letras y nmeros.
Solo est restringido el uso de las palabras clave reservadas de Modelica, las
cuales no pueden utilizarse como identificadores.

4.2.4

Nmeros enteros y de punto flotante

Los nmeros enteros (Integer), son secuencias de dgitos decimales en el mbito


que va desde -2147483648 hasta +2147483647 (para una implementacin en complemento de dos de 32 bits).
Los nmeros en punto flotante (Real), se expresan como nmeros decimales
formados por + o , una secuencia de dgitos incluyendo un punto decimal (optativo)
y seguidos (en forma optativa) por un indicador de exponente (E, o e), + o y uno o
ms dgitos decimales como potencias de 10. El mbito recomendado corresponde a
los nmeros de punto flotante IEEE de precisin doble (2.225073858572014E-308
a 1.7976931348623157E+308).

4.2. Fundamentos de Modelica

4.2.5

49

Valores lgicos y cadenas de caracteres

Los identificadores lgicos (Boolean) pueden tener valor true (cierto) o false (falso).
Las cadenas de caracteres (String) aparecen encerrados ente comillas dobles
() y pueden incluir en forma directa cualquier smbolo alfanumrico, excepto las
comillas dobles () y la barra diagonal invertida (\).
Se pueden representar algunos caracteres especiales dentro de una cadena, precedindolos por una barra diagonal invertida: \, \", \?, \\, \n (new line), \r (return),
\t (horizontal tab).
Se utiliza el smbolo + para concatenar las cadenas de caracteres.

4.2.6

Operadores y funciones matemticas

En Modelica, las ecuaciones, las asignaciones y las declaraciones, contienen expresiones con operadores, entre los que se incluyen:
elevar a una potencia: ^,
multiplicacin y divisin, y multiplicacin y divisin de arreglos (elemento por
elemento): / . ./,
suma y resta, y suma y resta de arreglos (elemento por elemento): + ,
relaciones: < <= > >= == <>,
negacin unitaria: not,
y lgico: and,
o lgico: or,
mbito de arreglos: expDe:expHasta, expDe:exPaso:expHasta,
construccin 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).

4 El lenguaje Modelica

50

La evaluacin de las expresiones aritmticas sigue las reglas usuales, donde los
operadores de mayor precedencia se evalan primero y donde se obedecen las leyes
de conmutacin y asociacin.
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 estn dentro de una instruccin 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 funcin noEvent.
Se utiliza la funcin derivada der(exp1) (d/dt), para la escritura de las derivadas
de las variables en las ecuaciones.
Se dispone tambin del tiempo tiempo muerto con la funcin delay(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 coleccin de valores, todos 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 dimensin 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 dimensin. Si se desea una diferenciacin de este tipo, estn disponibles las matrices columna y las matrices fila, que
son sus correspondientes equivalentes de dos dimensiones.
El nmero de dimensiones de un arreglo es fijo, no se puede cambiar en el transcurso de la ejecucin del programa. Sin embargo, el tamao de las dimensiones del
arreglo se puede calcular durante la ejecucin.
Los arreglos se pueden definir de dos formas diferentes, como se muestra adelante. En estas, la definicin Ct corresponde al parmetro de sustitucin para la clase de
los elementos del arreglo (Boolean, Integer, Real, String, tipos de enumeracin). La
cota superior de la dimensin (n, m) debe ser tipo entero o el nombre E para los enumerados o lgicos. Los dos puntos (:) indican que la cota superior de las dimensiones
es desconocida.
Declaracin 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 enumeracin tipo E,
Ct[n,m] x; o Ct x[n,m];, matriz (dim-2) de nxm elementos,

4.2. Fundamentos de Modelica

51

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 arreglo n1xn2xn3x... lleno de ceros,
ones(n1,n2,...), devuelve un arreglo n1xn2xn3x... 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 x1 y x2, incluyendo los valores extremos, n 2.
Formacin (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 tamao y del mismo tipo,
vec = {1,2,3,...},
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 columna j del arreglo A,
A[i,:], devuelve un vector con todos los elementos de la fila i del arreglo A.
Funciones de lgebra vectorial:
transpose(A), permuta las primeras dos dimensiones del arreglo A,

4 El lenguaje Modelica

52

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 estn sobre la diagonal de A.
cross(v1,v2), devuelve el producto cruz de v1 con v2,
La igualdad A=B, la asignacin A:=B, y la suma y resta C:= A+/-B de escalares, vectores, matrices y arreglos, estn definidas elemento por elemento y
requieren que size(A)=size(B),
La multiplicacin C:=s*A de un escalar, vector, matriz, o arreglo A, por un
escalar s, est definida elemento por elemento,
La divisin C:=A/s de un escalar, vector, matriz, o arreglo A, por un escalar s,
est definida elemento por elemento,
La multiplicacin elemento por elemento, de dos arreglos A y B, es C:= A.*B,
La divisin elemento por elemento, de dos arreglos A y B, es C:= A./B,
La multiplicacin 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 elevacin 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 reduccin:
min(A), devuelve el elemento ms pequeo del arreglo A,
min(x1,x2), devuelve el menor entre los escalares x1 y x2,
max(A), devuelve el elemento ms 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 multiplicacin escalar de todos los elementos del
arreglo A.
Otras funciones:

4.2. Fundamentos de Modelica

53

ndims(A), devuelve el nmero de dimensiones del arreglo A,


size(A), devuelve un vector de largo ndims(A) conteniendo los tamaos de
las dimensiones del arreglo A,
size(A,i), devuelve el tamao de la dimensin 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
condicin de una variable, de los cuales no se conoce con antelacin en que instante
ocurrirn.
Los operadores relacionados con eventos son: initial() (ocurre al inicio de
la simulacin), terminal() (al finalizar una simulacin exitosa), noEvent(expr)
(hace que la expresin expr se tome en forma literal, no generando un evento),
smooth(p,expr) (para p > 0, regresa la expresin real expr e indica que esta es
diferenciable p veces), sample(inicio,periodoMuestreo) (genera eventos instantneos cada periodoMuestreo a partir de inicio), pre(y) (regresa el lmite
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 clusula when reinicializa x con
expr).

4.2.9

Operadores noEvent y smooth

El operador noEvent(expr) hace que la expresin real expr se tome en forma


literal, en vez de generar funciones de cruce.
Se debera 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
utilizar noEvent dentro de smooth.
Cuando hay un cambio de valor en una relacin Real, por ejemplo var > num,
la integracin del modelo se detiene y se genera un evento. El cambio del valor de
la relacin solo puede ocurrir en un evento, por lo que las relaciones Real inducen
un evento (de estado o tiempo). La relacin que genera el evento cambia su valor
antes de que el modelo se evale en el instante del evento, por lo que se requiere un
mecanismo de bsqueda de races, para determinar un intervalo de tiempo pequeo
donde la relacin cambia de valor.

4 El lenguaje Modelica

54
Por ejemplo, si el modelo incluye la relacin
var2 = if var1 > vMax then vMax else var1 ;

durante la simulacin se evala siempre la misma rama de la ecuacin if. La integracin se detiene en el momento en que var1 vMax cruce por cero. La expresin
cambia entre false y true. En el instante del evento, se selecciona la rama correcta
de la relacin y la integracin se reanuda.
Los mtodos de integracin 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 utilizarn expresiones
de la forma general
...
valorEstimulo = if time >= tiempoEscalon valor1 else valor0 ;
...

para expresar un cambio tipo escaln en una variable en un instante especfico, usualmente en el estmulo 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 solucin numrica del modelo, puede establecer con antelacin la ocurrencia del evento.
Al ejecutarse la simulacin, el modelo se resuelve desde el instante inicial (Start
Time) hasta el instante tiempoEscal
on y luego se reinicia desde este instante, hasta
el instante final (Stop Time).

4.2.10

Constantes, parmetros y variables

El nombre de las variables, inicia con una letra, seguida por letras y nmeros, segn
se detall en la seccin 4.2.3.
Las variables pueden ser numricas, con un valor real (Real), entero (Integer)
o complejo (Complex), cadenas de caracteres (String) o representar un valor lgico
(Boolean).
Las cantidades cuyo valor nunca cambia son constantes. Estas se definen utilizando constant para asignarles su nombre y valor.
Por ejemplo:
constant Real g = 9 .8 ; // aceleraci
o n de la gravedad

4.2. Fundamentos de Modelica

55

constant Real pi = 3 .141593 ;

Las cantidades cuyos valores pueden variar, de una simulacin a otra, pero permanecen contantes durante ella (son especificadas por anticipado), son parmetros y
se define utilizando parameter.
Por ejemplo:
parameter Real areaTanque = 25 .15 ; //
a rea del tanque , m ^2
parameter Real R = 5 , L = 0 .10 , C = 2;

Los parmetros que son de un mismo tipo, pueden listarse en una misma declaracin.
Las variables (nombre) junto con su tipo (real, entero, etc.), deben definirse en la
parte inicial del programa. Esta definicin puede incluir su valor inicial (en t = t0 ) o
start.
Por ejemplo:
velocidadMasa Real ( start = 0 , fixed = true ) ;

Las variables que son de un mismo tipo, pueden listarse en una misma declaracin.
Los atributos que se pueden especificar para las variables del tipo Real 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
sugerencia o true, si el valor inicial debe tomarse tal como se indica; min= x.xx,
valor permitido mnimo; max= x.xx, valor permitido mximo; unit= ' ' ' ', unidades fsicas; displayunit=' ' ' ', unidades fsicas en las que el valor de la variable
es desplegado.

4.2.11

Inicializacin de las variables

Antes de que se realice cualquier operacin con el modelo Modelica, es necesario


asignar valores iniciales a todas las variables en el modelo (inicializacin). En esta etapa incluso las derivadas (der(exp1)), son consideradas variables algebraicas
desconocidas.
Los valores preseleccionados sugeridos para las variables son:
variables numricas: cero,
variables de cadenas de caracteres: cadena vaca ,
variables lgicas: falsas,

4 El lenguaje Modelica

56
variables enumeradas: valor mnimo.

En forma predeterminada, los valores de las constantes y de los parmetros son


fijos (fixed = true), pero los valores iniciales (start) de las variables son solo una
sugerencia de su valor inicial (fixed = false), a menos que se declaren como
fijos (start = startExp, fixed =true).
Por lo tanto, los atributos start y fixed definen las condiciones iniciales de las
variables.
Los valores iniciales de las variables son utilizados para resolver el problema de
valor inicial (inicializacin), utilizando las ecuaciones del modelo. De ser necesario,
se pueden dar condiciones iniciales adicionales en el segmento initial equation,
que son evaluadas solamente al establecer el punto inicial de la simulacin.
El atributo nominal, permite establecer un valor nominal para la variable (no
hay ningn valor preestablecido para este), que puede ser utilizado en anlisis posteriores, como por ejemplo para el escalamiento del modelo.
Las variables locales de una funcin, tienen un valor no especificado, a menos
que se establezca explcitamente.

4.2.12

Comentarios y descripciones

En los programas Modelica hay dos tipos de comentarios. Los comentarios de


definicin o descripciones (que no son realmente comentarios) y los comentarios al
cdigo del programa.
Los ' 'comentarios de definici
on'', son descripciones que acompaan la
definicin del modelo, las constantes, los parmetros y las variables. Estos son
tomados en cuenta por el ambiente de programacin con Modelica, para uso
posterior. Estrictamente hablando, estos no son comentarios, son parte de la
declaracin del sistema simulado.
Hay comentarios al cdigo, al final de una lnea, // texto de comentario
(el texto hasta el final de la lnea). Este es ignorado por el compilador.
Tambin hay comentarios al cdigo de varias lneas. El siguiente texto que
puede abracar varias lneas /* texto de comentario */ es ignorado, incluyendo las terminaciones de lnea.
Los comentarios no se pueden anidar (texto de comentario dentro de otro texto
de comentario).

4.2. Fundamentos de Modelica

4.2.13

57

Ecuaciones del modelo

Modelica es un lenguaje que se fundamenta en el uso de ecuaciones, en vez de enumeraciones de asignacin, como otros lenguajes de programacin.
A diferencia de la mayora de los lenguajes de programacin, donde el smbolo =
significa asignacin, esto es, que el resultados de la expresin a su derecha se asigna
a la variable indicada a su izquierda, en Modelica, el smbolo = significa igualdad, la
expresin a su izquierda es igual a la expresin a su derecha. El smbolo de igualdad
establece una ecuacin. El smbolo para una asignacin en Modelica es :=.
Las ecuaciones establecen una relacin 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
asignacin, el flujo de la informacin est establecido, la variable al lado izquierdo del smbolo de asignacin, 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 el conjunto de ecuaciones se resuelva.
Existen varios tipos de ecuaciones:
Las ecuaciones normales de igualdad del modelo, se establecen en las secciones equation, incluyendo ecuaciones de conexin (connect).
Las ecuaciones de declaracin, forman parte de la declaracin de constantes,
parmetros y variables.
Las ecuaciones de modificacin, son utilizadas para modificar un atributo de
una clase, como establecer un valor inicial.
Las ecuaciones iniciales, especificadas en la seccin initial equation, o
como ecuaciones de atributo, son utilizadas para resolver el problema del valor inicial (las condiciones iniciales de las variables), previo a la ejecucin de
la simulacin.
El modelo Modelica debe estar bien determinado para poder solucionarlo. El
nmero de variables (incgnitas), debe ser igual al nmero de ecuaciones. En este sentido, se cuentan como ecuaciones tanto las ecuaciones como tal, como los
enunciados de asignacin.
La palabra reservada equation, indica el inicio de la seccin correspondiente a
las ecuaciones del modelo.

4 El lenguaje Modelica

58
Figura 4.2: Pndulo

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 variable time
est disponible en todos los modelos.
Por ejemplo, el movimiento del pndulo de la figura 4.2, puede modelarse en
coordenada polares con las ecuaciones
d (t)
= (t),
dt
d (t)
mL
= mg sin( (t)),
dt

(4.4)
(4.5)

y en coordenadas cartesianas con las ecuaciones


1
dVx (t)
= x(t)T (t),
dt
L
dVy (t)
1
m
= y(t)T (t) mg,
dt
L
dx(t)
,
Vx (t) =
dt
dy(t)
Vy (t) =
,
dt
x2 (t) + y2 (t) = L2 .
m

(4.6)
(4.7)
(4.8)
(4.9)
(4.10)

El correspondiente modelo Modelica para la simulacin del pndulo, en el primer


caso es

4.2. Fundamentos de Modelica

59

...
equation
der ( posAng ) = velAng ;
m * L * der ( velAng ) = -m * g * sin ( posAng ) ;
...

y en el segundo
...
equation
m * der ( velX ) = - posX / L * ten ;
m * der ( velY ) = ( - posY / L * ten ) - m * g ;
velX = der ( posX ) ;
velY = der ( posY ) ;
posX ^ 2 + posY ^ 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 determinacin. De las cinco ecuaciones,
cuatro son diferenciales y una es una ecuacin algebraica no lineal. Esta ltima, corresponde a una restriccin fsica del sistema, la cual establece una relacin no lineal
entre dos de sus variables.
En este segundo modelo, pareciera que la tensin (ten(t)) en el cable del pndulo no est definida. Sin embargo, el modelo est completamente determinado (tiene
cinco variables y cinco ecuaciones), de manera que la tensin en el cable del pndulo
se obtiene, al resolver el modelo.

4.2.14

La ecuacin terminate

Aunque la ejecucin de la simulacin, normalmente est controlada por el intervalo


de tiempo especificado para la solucin del modelo, se puede utilizar la ecuacin
terminate para finalizarla bajo otra condicin.
Generalmente, la ecuacin terminate se utiliza para proveer un criterio adecuado para finalizar la simulacin, en vez de hacerlo en un tiempo especfico, y devolver
al usuario una indicacin de la razn de la detencin de la simulacin.
Una forma de utilizar esta ecuacin es
...
when condicionTerminal then
terminate ( `` texto explicativo ' ' ) ;

4 El lenguaje Modelica

60
end when ;
...

4.2.15

Algoritmos

Los algoritmos (algorithm) son secuencias de instrucciones, que se ejecutan en


orden y pueden estar insertados en una seccin de ecuaciones.
algorithm
...
( otra palabra clave )

Dentro de una seccin algorithm no se puede utilizar la ecuacin de igualdad


(=), ni ninguna otra forma de ecuacin.
Un algoritmo, es una seccin del cdigo del programa que permanece junta y
cuyos enunciados se ejecuta en el orden en que se han estipulado.
El operador de asignacin en los enunciados de un algoritmo es :=. El enunciado var:= exp1, indica que la expresin exp1 a la derecha del smbolo :=, se evala
y el resultado se almacena en var.
En el caso de asignaciones dentro de un algoritmo, que involucran el llamado a
una funcin, los resultados devueltos por la funcin 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 asignacin (:=):
varRef : = exp ;

La expresin exp es evaluada y el resultado es almacenado en la variable varRef.


Declaracin de interrupcin (instruccin break):
La declaracin break pone fin a la ejecucin de la declaracin del lazo while
o for ms interna que la contenga. La ejecucin contina despus del while o
el for. Solo se puede utilizar dentro de un while o for, dentro de una seccin
algorithm.

4.2. Fundamentos de Modelica

61

Declaraciones condicionales (ecuaciones if):


La sintaxis de una declaracin if es:
if exp1 then
...
elseif exp2 then
...
else
...
end if ;

La expresin condicional en un enunciado if o elseif, debe ser una expresin lgica escalar.
Como en Modelica el nmero de ecuaciones no puede cambiar durante la simulacin, si la ecuacin if est incluida en una seccin equation, el nmero
de ecuaciones en cada una de sus clusulas, debe ser el mismo.
Declaraciones repetitivas (ecuaciones de lazo for):
La sintaxis de una declaracin for es:
for indices loop
...
end for ;
for ind in exp1 loop
...
end for ;

En una instruccin for, exp1 debe ser un vector.


for i in 1 : 10 loop
...
end for ;
for x in 2 .5 : 0 .5 : 15 loop
...
end for ;

Las instrucciones for pueden ser anidadas (tener varios ndices).


Declaraciones cuando (ecuaciones when):
La sintaxis de una declaracin when es:

4 El lenguaje Modelica

62
when exp1 then
...
elsewhen exp2 then
...
end when ;

La expresin condicional en un enunciado when o elsewhen, debe ser una


expresin lgica discreta escalar o vectorial.
when { var > 5 , sample ( 8 .5 ) , var < 25 } then
y : = ... ;
...
end when ;

Las declaraciones when, no se pueden anidar ni utilizar dentro de una funcin


o una declaracin if, for o while.
Declaracin salir (enunciado return):
Solo se puede utilizar dentro de las funciones.
Declaraciones mientras (ecuaciones de lazo while):
La sintaxis de una declaracin while es:
while exp1 loop
...
end while ;

En una ecuacin while, exp1 debe ser una expresin lgica escalar.
Esta es evaluada y si es cierta, todos los enunciados enmarcados dentro de la
ecuacin while se ejecutan, excepto si se encuentra un enunciado break o un
enunciado return.
Si exp1 es falsa, la ejecucin contina despus de la ecuacin while.

4.2.17

Funciones

Las funciones (function) contienen un procedimiento algortmico, a ser ejecutado


cuando se les llama.
Los parmetros son especificados con la palabra clave input y los resultados con
la palabra clave output.
Es posible asignar valores predeterminados, tanto a las entradas como a las salidas, cuando se declaran.

4.2. Fundamentos de Modelica

63

function nombreFunc
input tipoX1 vin1 ; // variables de entrada
input Real vin2 ;
input tipoX2 vin3 : = ... ; // entrada con valor predeterminado
...
output tipoY vout1 ; // variables de salida
output Real vout2 ;
output tipoY2 out3 : = ... ; // salida con valor predeterminado
...
protected
... // variables locales
algorithm
...
...
end nombreFunc ;

El llamado a una funcin se hace como


( vout1 , vout2 , ... ) = nombreFunc ( vin1 , vin2 , ... ) ;
...
vout = nombreFunc2 ( vin11 , vin12 , ... ) ;
...
res = otraVar * nFunc3 ( vinZ1 , vinZ2 ) ; // nFunc3 devuelve 1 resultado

donde vinX son los valores de entrada (parmetros) y voutY los resultados (salidas),
devueltos por la funcin nombreFuncXX.
El orden relativo en que se declaran los parmetros de entrada es importante, ya
que este determina el orden en que se asocian los parmetros de la llamada de la
funcin, con los parmetros formales de la funcin.
Tambin es importante el orden en que se declaran las salidas, ya que este establece la relacin entre las variables que reciben los resultados en el llamado de la
funcin, cuando la funcin regresa ms de un resultado.
Cuando la funcin devuelve ms de un resultado, para poder utilizarlos todos
y no solo el primero, debe hacerse el llamado a la funcin al lado derecho de una
ecuacin o asignacin, colocando entre parntesis al lado izquierdo de la ecuacin o
asignacin, la lista de las variables que reciben los resultados.
Se puede utilizar el enunciado return para terminar el llamado de la funcin
en ejecucin. Este solo se puede utilizar dentro de una seccin algorithm de la
funcin.

4.2.18

Conectores y conexiones

Las conexiones entre los terminales (conectores) de los componentes, se efectan


con una ecuacin de conexin (connect) cuya sintaxis es:

4 El lenguaje Modelica

64
connect ( refTerminal1 , refTerminal2 ) ;

La ecuacin de conexin 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 conexin entre la pareja de elementos de los vectores con el mismo ndice, se establece
como una conexin escalar.
Las variables conectadas por ecuaciones de conexin, componen un conjunto de
conexin. Un conjunto de conexin puede contener ya sea, solo variables de flujo
(pervariables) o variables de potencial (transvariables).
Cada conexin 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.
Las ecuaciones de conexin solo se pueden utilizar en una seccin equation.

4.2.19

Construccin de registros

La declaracin de un registro (record) es de la forma


record procesoInfo // registro gen
e rico de un proceso
parameter Real proVar1 ;
parameter Real proVar2 ;
...
parameter Real proVarn ;
end procesoInfo ;
record procesoXYZ = procesoInfo ( // informaci
o n particular
proVar1 = xx ,
proVar2 = yy ,
...
proVarn = zz ) ;
end procesoXYZ ;

Un registro puede contener constantes, parmetros y variables, pero no ecuaciones. Permiten agrupar informacin de diferente tipo.

4.2.20

Notas

Las notas (annotation) no son parte del lenguaje Modelica, pero son utilizadas para
indicar en el modelo, informacin asociada a un componente, con mucha frecuencia
relacionada con el despliegue grfico de un icono en un diagrama de conexin. Su
sintaxis es:

4.2. Fundamentos de Modelica

65

annotation ( notas ) ;

donde notas es una lista de indicaciones separada por comas.


Por ejemplo, la posicin del icono de un capacitor, en un circuito elctrico:
...
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . C a p a c i t o r capacitor1 ( C = 0 .01 ,
( start = 0 , fixed = true ) ) annotation ( Placement ( visible =
true , transformation ( origin = { 20 ,30 } , extent = { { -10 , - 10 } ,
{ 10 ,10 } } , rotation = - 90 ) ) ) ;

o las coordenadas de los extremos de los tramos de la lnea de conexin, entre dos
elementos de este mismo circuito
...
connect ( resistor1.n , inductor1.p ) annotation ( Line ( points =
{ { - 40 ,60 } ,{ - 29 .9777 ,60 } ,{ - 29 .9777 ,59 .9553 } ,{ - 29 .9777 ,
59 .9553 } } ) ) ;

Este tipo de notas es creado y ledo por el editor de modelado grfico.


Las notas tambin pueden ser utilizadas para embeber en el programa, las condiciones en que se debe efectuar la simulacin (experiment) con el modelo, como
por ejemplo:
...
annotation ( experiment ( StartTime = 0 , StopTime = 1 .4 ) ) ;
...

La nota Documentation permite incluir un texto descriptivo del modelo, en formato html, el cual se desplegar en el navegador de documentacin, cuando se seleccione con el botn derecho del apuntador View Documentation, sobre el nombre
del modelo en el navegador de bibliotecas.
La documentacin de un modelo podra ser, por ejemplo
model C i r c u i t o E l e c t r i c o D i a g r a m a " Circuito electrico de ejemplo "
...
annotation ( Documentation ( info = " < html >
<p > Ejemplo del modelado grafico , mediante la interconexion de
componentes de la biblioteca <tt > Modelica.Electrical </ tt >. </ p >
</ html > " , revisions = " < html >
<ul >
<li > <i > V1.0 2014 .mayo.23 </i > por vma </ li >
</ ul >
</ html > " ) ) ;
end C i r c u i t o E l e c t r i c o D i a g r a m a ;

4 El lenguaje Modelica

66
Figura 4.3: OpenModelica
- Despliegue de las documentacin asociada a un
modelo

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 elaboracin de la documentacin html de un componente o modelo, se describen
en la gua del usuario Modelica.UserGuide.Conventions.Documentation.
El uso o atencin que se le de, a lo indicado en las notas (annotation) de un
modelo, depender del compilador utilizado.

4.2.21

Extensin o ampliacin de los modelos

Una caracterstica importante de Modelica, es la herencia de las propiedades de las


clases.
Una manera de emplear esta caracterstica, es extendiendo o ampliando un modelo con el enunciado extends. Este permite reutilizar la definicin de un modelo e
incorporarle nuevas caractersticas, o modificar algunas de las suyas.
La inclusin en un modelo, de la instruccin
...
extends N o m b r e M o d e l o O r i g i n a l ;
...

incorpora en el nuevo modelo la definicin completa del modelo NombreModeloOriginal.mo. Esto es, en nuevo modelo hereda todas las caractersticas de este.
Partiendo del modelo incorporado, el nuevo lo amplia con sus caractersticas particulares.

4.2. Fundamentos de Modelica

67

Figura 4.4: SytemModeler


- Despliegue de las documentacin asociada a un
modelo

En forma alternativa, la inclusin en un modelo de la instruccin


...
extends N o m b r e M o d e l o O r i g i n a l ( nobreParam = nuevoValor , ... ) ;
...

incorpora en el nuevo modelo la definicin completa del modelo NombreModeloOriginal.mo, pero modifica el valor asignado originalmente a algn parmetro, en
el ejemplo, al parmetro nombreParam.
La posibilidad de incluir en la definicin de un modelo, las caractersticas de
otro u otros (se puede utilizar ms de una instruccin extends), permite construir
modelos complejos, a partir de otros ms simples.

68

4 El lenguaje Modelica

Figura 4.5: Etapas para la solucin de un modelo Modelica

4.3 Secuencia para la simulacin de un modelo Modelica


En la figura 4.5, se muestran las etapas en que se ejecuta la solucin y simulacin, de
un modelo Modelica.
Mediante el editor grfico o el de texto, se desarrolla el modelo Modlica. Este
es traducido a un modelo extendido, constituido por un conjunto de ecuaciones
diferenciales y algebraicas, las cuales son analizadas y optimizadas, para obtener un
conjunto de ecuaciones ordenadas segn el flujo de informacin (en la secuencia
correcta para su solucin). El modelo se compila a cdigo C y se enlaza al solucionador numrico de ecuaciones, para su solucin (simulacin).
El valor de los parmetros y los valores iniciales estimados (o fijos) de las variables, son tomados de la definicin del modelo, as como el control de la simulacin
(tiempo inicial, tiempo final, paso, mtodo de solucin).
Los resultados de la simulacin son un conjunto de funciones del tiempo, que se
pueden desplegar grficamente, imprimir, o almacenar en un archivo.

4.4. Modelado no causal versus modelado causal con base en bloques

69

Figura 4.6: Circuito elctrico


La conversin del modelo Modelica DAE original, al modelo extendido en trminos 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 solucin, lo establece el compilador.
Considrese el circuito elctrico mostrado en la figura 4.6. Se desea determinar
la evolucin de la tensin en el capacitor C1 , cuando se aplica una tensin constante
Vf .
Por inspeccin, se obtiene que las ecuaciones que modelan este circuito elctrico
son:
diL (t)
= V f R1 iL (t) Vc (t),
dt
dVc (t)
1
C1
= iL (t) Vc (t).
dt
R2
L1

(4.11)
(4.12)

El programa para simular el modelo dado por (4.11) y (4.12) en Modelica es:
model CircuitoElectrico
// Circuito electrico

4 El lenguaje Modelica

70

import Modelica.SIunits. * ;
parameter Resistance R1 = 10 " resitor R1 " ;
parameter Resistance R2 = 100 " resistor R2 " ;
parameter Capacitance C1 = 0 .01 " capacitor C1 " ;
parameter Inductance L1 = 1 .0 " inductor L1 " ;
Voltage Vf " fuente " ;
Voltage Vc ( start = 0 , fixed = true ) " tension capacitor " ;
Current Il ( start = 0 , fixed = true ) " corriente inductor " ;
equation
Vf = if time >= 0 .05 then 10 else 0;
L1 * der ( Il ) = Vf - R1 * Il - Vc ;
C1 * der ( Vc ) = Il - Vc / R2 ;
annotation ( experiment ( StartTime = 0 , StopTime = 1 .4 ) ) ;
end CircuitoElectrico ;

Como se puede apreciar, la escritura del modelo del circuito elctrico es directa.
Las ecuaciones en Modelica, se han escrito en forma idntica al modelo obtenido
para el circuito.
Posteriormente se ver como emplear los componentes predefinidos en la biblioteca estndar Modelica, utilizando ecuaciones de conexin (connect) o directamente
en forma grfica, mediante la conexin de iconos de los componentes que representan
los elementos que componen el sistema.
Si se deseara realizar la simulacin del modelo del circuito de la figura 4.6, mediante un diagrama de interconexin de bloques, el modelo debe expresarse como un
conjunto de ecuaciones de estado y de salida explcitas (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:
1 t
[V f R1 iL ( ) Vc ( )] d ,
L1 0

Z 
1 t
1
iL ( ) Vc ( ) d .
Vc (t) =
C1 0
R2
iL (t) =

(4.15)
(4.16)

Su implementacin con un diagrama de bloques, se muestra en la figura 4.7. En


este diagrama, cada bloque tiene una o ms entradas y una salida, su causalidad est
claramente definida.
Como se puede observar en el diagrama de bloques, este muestra la forma en que
se efectan los clculos. Sin embargo, la forma en que los elementos del circuito estn interconectados no es evidente. El diagrama de simulacin no refleja la topologa

4.4. Modelado no causal versus modelado causal con base en bloques

71

Figura 4.7: Diagrama de interconexin de bloques

del sistema simulado. Adems, el valor de los parmetros 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.8. 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 interconexin de bloques.
La simulacin mediante el uso de diagramas de bloques, tiene como limitacin
inherente, que el flujo de informacin en cada bloque es unidireccional, esta va de las
entradas hacia la salida. Por esta razn, muchas veces no es posible representar un
elemento fsico mediante un bloque simple. Tambin puede suceder que en la elaboracin del diagrama de bloques, aparezcan lazos algebraicos que deben romperse
de alguna manera.
Por su parte, en Modelica el modelo est constituido por un conjunto de ecuacio-

4 El lenguaje Modelica

72

Figura 4.8: Curvas de respuesta del circuito de la figura 4.6


nes algebraico diferenciales implcitas no causales, de la forma


dx(t)
, x(t), z(t), u(t),t = 0,
F
dt

(4.17)

y tal vez tambin, 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 incgnitas (variables) que aparecen derivadas en las
ecuaciones, z(t), el vector de las incgnitas que no aparecen derivadas, y(t) el vector
de las variables de inters (variables medidas) y u(t) el vector de los estmulos
aplicados.
Por lo tanto, las ecuaciones del modelo del circuito elctrico de la figura 4.6, se
puede escribir en Modelica, tambin como
model CircuitoElectrico2
...
equation
// tensi
o n de la fuente
Vf = if time >= 0 .05 then 10 else 0 .0 ;
// an
a lisis de tensiones ( malla )
Vf - R1 * Il - L1 * der ( Il ) - Vc = 0;
// an
a lisis de corrientes ( nodo )
Il - Vc / R2 - C1 * der ( Vc ) = 0;
...
end CircuitoElectrico2 ;

4.5. Modelado con base en componentes Modelica

73

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 conexin, denominados conectores, para compartir la informacin entre componentes y el medio
externo. Los componentes estn interconectados por un mecanismo de conexin,
que puede visualizarse en un diagrama de conexin.

4.5.1

Los componentes

Cada componente o elemento, est definido en forma independiente para poder ser
reutilizado. Su definicin incluye sus ecuaciones, las variables locales y las variables
de conexin que se pueden utilizar.
Un componente puede contener internamente, otros componentes conectados,
formndose un modelo jerarquizado.
Cada componente est representado por un icono con terminales (por ejemplo un
componente elctrico como un capacitor o un resistor, o un componente mecnico
como una masa o un amortiguador). La conexin entre los componentes se realiza en
el diagrama, por medio de lineas que unen los terminales de conexin. Estas lineas
representan una conexin fsica como un cable elctrico, una unin mecnica, una
unin de tuberas, u otra.
Cada componente, tiene asociada una variable que fluye por el (pervariable), esta
es la misma en ambos terminales, y una variable de potencial (transvariable) en cada
terminal.
Al combinar varios componentes conenctndolos entre si, para formar un sistema
interconectado, estos interactan por medio de sus terminales compartiendo variables
(informacin) (Willems, 2010).
Considrese por ejemplo la interconexin de tres componentes, tal como se muestra en la figura 4.9. La unin de los terminales de los componentes en un punto (nodo), implica que:
1. Todas las transvariables (variables de potencial) son iguales,
v12 (t) = v22 (t) = v32 (t),
2. La suma de todas las pervariables (variables de flujo) es cero,
f 1 (t) + f 2 (t) + f 3 (t) = 0.

4.5.2

Definicin de un componente

Considrese por ejemplo la definicin del componente capacitor elctrico.

4 El lenguaje Modelica

74
Figura 4.9: Interconexin de los terminales de los componentes

Se utilizar Pin, que es una clase connector empleada para especificar los terminales externos de los componentes elctricos.
En Modelica estn definidas las unidades Voltage (tensin en V) y Current
(corriente en A). Ambas son del tipo Real.
type Voltage = Real ( unit = " V " ) ;
type Current = Real ( unit = " A " ) ;

Definicin del terminal de los componentes elctricos


La clase connector Pin contiene dos variables, la tensin Voltage, la transvariable, y la corriente Current (flow), la pervariable.
connector Pin
Voltage v ;
flow current i ;
end Pin ;

Con base en el terminal (Pin) se define el componente de dos terminales.


partial model TwoPin
Pin p , n ;
Voltage v ;
current i ;
equation
v = p.v - n.v ;
0 = p.i + n.i ;
i = p.i ;
end TwoPin ;

4.5. Modelado con base en componentes Modelica

75

Figura 4.10: Componente: capacitor elctrico ideal

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 elctrico mostrado en la figura 4.10, estableciendo las ecuaciones entre
sus variables, tensin v y corriente i, sus relaciones constitutivas.
El modelo del capacitor, se define extendiendo el modelo parcial (extends TwoPins).
model Capacitor " Ideal Capacitor "
extends TwoPin ;
parameter Real C ( unit = " F " ) ;
equation
C * der ( v ) = i ;
end Capacitor ;

Durante la simulacin, se resuelve la ecuacin constitutiva del capacitor, determinndose las variables v e i, en funcin de la variable independiente tiempo (time).

4.5.3

La ecuacin connect

La interconexin de los componentes de un sistema se establecen por medio de ecuaciones de conexin, cuya sintaxis es
connect ( terminalElemento1 , terminalElemento2 )

La ecuacin de conexin recibe la referencia a dos conectores (instancias de una


clase connector), que son directamente componentes de una clase de conexin,
o que son propiedades de un componente que no es conector, y se accede a ellos
utilizando la notacin punto.
En la figura 4.11 se muestra el diagrama de conexin del circuito elctrico
presentado en la seccin 4.4. En el se han identificado los terminales positivos (p) y

4 El lenguaje Modelica

76

Figura 4.11: Diagrama de conexin del circuito elctrico


negativos (n) de los componentes elctricos.
El programa de simulacin de este circuito, utilizando ecuaciones de conexin
es:
model C i r c u i t o E l e c t r i c o _ c o ne c
import M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . * ;
import M o d e l i c a . E l e c t r i c a l . A n a l o g . S o u r c e s . * ;
Resistor R1 ( R = 10 ) ;
Resistor R2 ( R = 100 ) ;
Capacitor C1 ( C = 0 .01 ) ;
Inductor L1 ( L = 1 .0 ) ;
Ground g ;
StepVoltage Vf ( V = 10 , startTime = 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 = 0 , StopTime = 1 .4 ) ) ;
end C i r c u i t o E l e c t r i c o _ c o n e c ;

En el modelo anterior, la conexin mltiple

4.6. Modelos Optimica

77

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 son iguales),
y tambin que
L1.n.i +R2.p.i +C1.p.i =0 (la suma de las variables de flujo es cero).

4.6 Modelos Optimica


Esta es una extensin de Modelica, que permite definir un problema de optimizacin, para lo cual introduce nuevos elementos (kesson, 2007, 2008; kesson et al.,
2010):
La clase especializada optimization.
La clase optimization corresponde a un problema de optimizacin dinmica
o esttica.
En la definicin actual de Optimica, se supone que el problema de optimizacin
definido por la clase optimization se resuelve fuera de lnea, Esto es, la
solucin del problema de optimizacin involucra la simulacin del modelo del
sistema, pero no es posible resolver el problema de optimizacin durante las
simulacin del modelo (en lnea).
La construccin del problema de optimizacin Optimica, solo es vlida dentro
de la clase optimization.
Atributos para la clase optimization: objective, startTime, finalTime
y static.
El atributo objective define la funcional de costo a optimizar, startTime
el inicio de la simulacin, finalTime el final del intervalo de simulacin y
static (preseleccionada false) indica que la clase define un problema de
optimizacin esttica (en contraposicin con la suposicin preestablecida, que
se trata de un problema de optimizacin dinmica).
Los atributos free e initialGuess para los elementos tipo Real.
En Modelica los parmetros 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.

4 El lenguaje Modelica

78

Junto con la definicin de que un parmetro en particular se considera libre,


se tiene el atributo initialGuess, para permitir dar una estimacin inicial
de su valor (punto de inicio de la bsqueda del valor ptimo). En el caso de
las variables, el atributo initialGuess provee una estimacin para todo el
intervalo de simulacin.
Las variables o parmetros declarados free (libres), son los modificados por
el algoritmo de solucin, para la optimizacin de la funcional (o funcin) de
costo.
De manera preestablecida, todas las variables y parmetros del modelo tienen el atributo free=false, a menos que este explcitamente se declare como
free=true.
Una funcin para acceder al valor de una variable en un instante especfico.
El nombre de la funcin es es igual al de la variable y tiene solo un argumento,
el instante en que se evala la variable.
Una seccin constraint.
En Modelica el modelo incluye la seccin equation con las ecuaciones dinmicas y en forma optativa, la seccin initial equation con las ecuaciones
de las condiciones iniciales. Ahora, se tiene una seccin adicional de ecuaciones, la seccin constraint, para definir las ecuaciones de las restricciones
del problema de optimizacin.
La seccin constraint, solo se permite dentro de la clase optimization.
Restricciones de desigualdad.
Dentro de la seccin constraints es posible establecer restricciones mediante ecuaciones de desigualdad, igualdad o puntuales (en determinado instante).
Notas (annotation), que adicionan informacin complementaria relacionadas con el algoritmo de solucin.
Al ser Optimica una extensin de Modelica, la escritura de los problemas de
optimizacin, puede hacer uso de todos los elementos del lenguaje Modelica.
Como se ver ms adelante, la definicin del problema de optimizacin, junto con
las restricciones dinmicas entre las variables del sistema (el modelo heterogneo),
se pueden describir en un solo archivo dentro de la clase optimization.

5
Biblioteca de componentes Modelica
Una de las principales ventajas de Modelica, es la construccin grfica de modelos
heterogneos, conectando componentes de diferentes dominios fsicos.
En estos diagramas o modelos grficos, cada elemento fsico est representado
por un icono o componente. Las lneas entre los componentes, corresponden a las conexiones fsicas entre ellos, por ejemplo, un cable elctrico o una conexin mecnica.
Las variables en los puntos de conexin describen la interaccin entre los componentes y el comportamiento de cada componente est descrito por sus ecuaciones.

5.1 Introduccin
Los sistemas dinmicos fsicos son heterogneos, esto es, incluyen elementos en los
que ocurren fenmenos de caractersticas muy diversas.
Un sistema puede describirse como un conjunto de subsistemas que interactan
entre si, los cuales a su vez resultan de la interconexin de componentes ms 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 caractersticas (propiedades, variables) comunes.
Los elementos de estas bibliotecas, pueden utilizarse tanto en los modelos desarrollados utilizando ecuaciones, como en los desarrollados en forma grfica, mediante la interconexin de los componentes predefinidos y representados en el modelo
(esquemtico o diagrama de interconexin), por un icono.

5.2 Biblioteca estndar 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:
79

5 Biblioteca de componentes Modelica

80

Modelica.Blocks - bloques entrada salida, continuos, discretos y lgicos,


para elaborar modelos causales mediante diagramas de bloques.
Modelica.ComplexBlocks - bloques entrada salida para seales complejas.
Modelica.ComplexMath - funciones para matemtica con variables complejas.
Modelica.Constants - constantes matemticas y fsicas (e, , c, ...).
Modelica.Electrical - modelos de los componentes elctricos y electrnicos analgicos y digitales, y de mquinas elctricas.
Modelica.Fluid - componentes de redes de flujo termoflucas, recipientes,
tuberas, vlvulas y accesorios, utilizando cualquier fluido de la biblioteca
Modelica.Media.
Modelica.Icons - descripcin de los iconos para uso general.
Modelica.Magnetic - modelos de componentes electromagnticos, mquinas asncronas y sincrnicas.
Modelica.Math - funciones matemticas comunes y operaciones con matrices.
Modelica.Mechanics - modelos de los componentes mecnicos tridimensionales y de una dimensin que se desplazan o giran.
Modelica.Media - definicin 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 mquinas de estados.
Modelica.Thermal - componentes de los fenmenos trmicos, flujo de calor
y otros.
Modelica.Utilities - manejo de listados de instrucciones.
Otra biblioteca disponible es
ModelicaReference - documentacin sobre las palabras clave, los operadores,
las anotaciones y la gramtica del lenguaje Modleica.

5.2. Biblioteca estndar Modelica

81

Figura 5.1: Diagrama de simulacin de un motor de corriente continua


A manera de ejemplo del uso de los componentes de la biblioteca Modelica, en la
figura 5.1 se muestra el diagrama de simulacin, del motor de corriente continua mostrado anteriormente en la figura 2.13. En este diagrama, se combinan componentes
del dominio elctrico (Modelica.Electrical), mecnico (Modelica.Mechanics)
y de bloques de seales (Modelica.Blocks).
Los parmetros del motor son: Ra = 2,25 , La = 0,20 H, J = 0,05 kg m2 , B =
0,01 N m s y K = Ke = 0,02 V/(rad/s) = Kt = 0,02 N m A1 .
El motor est detenido y en el instante t = 5 s se aplica una tensin constante Va =
24 V. El motor se acelera hasta alcanzar la velocidad de rotacin = 1200 rad s1 .
Un par de carga TL = 0,02 N m se aplica en t = 2200 s y el motor pierde velocidad.
La curva de velocidad de rotacin del motor se muestra en la figura 5.2.
A continuacin se vern 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,

5 Biblioteca de componentes Modelica

82
Figura 5.2: Velocidad
de rotacin del motor
de corriente continua

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, histresis y controladores de dos posiciones (OnOff).
Modelica.Blocks.Math
Bloques de operaciones matemticas (suma, resta, multiplicacin, divisin),
funciones trigonomtricas (seno, coseno, tangente), mximo, mnimo, valor
absoluto y raz.
Modelica.Blocks.MathBoolena
Bloques de operaciones matemticas con variables lgicas.
Modelica.Blocks.MathInter
Bloques de operaciones matemticas con variables enteras.
Modelica.Blocks.Nonlinear
Bloques limitadores, retardos, zona muerta y aproximaciones de Pade.
Modelica.Blocks.Routing
Bloques multiplexores y demultiplexores.

5.2. Biblioteca estndar Modelica

83

Figura 5.3: Algunos componentes de la biblioteca Modelica.Blocks


Modelica.Blocks.Sources
Bloques de fuentes tipo pulso, escaln, rampa, seno y coseno.
Cada bloque tiene por lo menos un terminal de entrada cuya variables 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

5 Biblioteca de componentes Modelica

84
Figura 5.4: Algunos componentes de la biblioteca
Modelica.ComplexBlocks

Bloques para operaciones matemticas (suma, ganancia, multiplicacin), funciones trigonomtricas (seno, coseno, tangente), logaritmo, raz.
Modelica.ComplexBlocks.Sources
Bloques de fuentes tipo escaln, 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


ingeniera.
...
// Mathematical constants
final constant Real e = Modelica.Math.exp ( 1 .0 ) ;
final constant Real pi = 2 * Modelica.Math.asin ( 1 .0 ) ;
// 3 .14159265358979 ;
final constant Real D2R = pi / 180 " Degree to Radian " ;
final constant Real R2D = 180 / pi " Radian to Degree " ;
final constant Real gamma = 0 .5772156649015329
" Euler_constant " ;
...
// Constants of nature

5.2. Biblioteca estndar Modelica

85

final constant SI.Velocity c = 299792458 " Speed of light in


vacuum " ;
final constant SI.Acceleration g_n = 9 .806649999999999
" Standard acceleration of gravity on earth " ;
final constant Real G ( final unit = " m3 / ( kg.s2 ) " ) = 6 .6742e - 011
" Newtonian constant of gravitation " ;
final constant SI.FaradayConstant F = 96485 .33990000001
" Faraday constant , C / mol " ;
final constant Real h ( final unit = " J.s " ) = 6 .6260693e - 034
" Planck constant " ;
final constant Real k ( final unit = " J / K " ) = 1 .3806505e - 023
" Boltzmann constant " ;
final constant Real R ( final unit = " J / ( mol.K ) " ) = 8 .314472
" Molar gas constant " ;
final constant Real sigma ( final unit = " W / ( m2.K4 ) " ) =
5 .6704e - 008 " Stefan - Boltzmann constant " ;
final constant Real N_A ( final unit = " 1/ mol " ) = 6 .0221415e + 023
" Avogadro constant " ;
final constant Real mue_0 ( final unit = " N / A2 " ) =
4 * pi * 1 e - 007 " Magnetic constant " ;
final constant Real epsilon_0 ( final unit = " F / m " ) =
1 / ( mue_0 * c * c ) " Electric constant " ;
final constant N o n S I . T e m p e r a t u r e _ d e g C T_zero = - 273 .15
" Absolute zero temperature " ;
...

5.2.4

Biblioteca Modelica.Electrical

Esta incluye los elementos elctricos agrupados en las bibliotecas:


Modelica.Electrical.Analog
Componentes elctricos y electrnicos analgicos como resistores, capacitores, transformadores, diodos, transistores, fuentes y medidores.
Modelica.Electrical.Digital
Componentes elctricos digitales y compuertas, convertidores.
Modelica.Electrical.Machines
Mquinas elctricas, motores sincrnicos y asncronos, y motores y generadores de corriente continua.
Modelica.Electrical.MultiPhase
Componentes elctricos de dos y tres fases, estrella, delta, resitor, capacitor,
inductor, transformador, fuentes y sensores.

5 Biblioteca de componentes Modelica

86

Modelica.Electrical.QuasiStationary
Componentes elctricos de sistemas monofsicos en estado estacionario, resistor, capacitor, inductor, medidores y fuentes de tensin y corriente; sistemas
trifsicos.
Modelica.Electrical.Spice3
Componentes del simulador Berkeley SPICE3, elementos RLC, fuentes, fuentes controladas, transistores.
En los componentes elctricos las variables en los terminales de conexin son
tensin y corriente y se identifican como p (positivo) y n (negativo).
En la figura 5.5 se muestran algunos de los componentes elctricos disponibles.

5.2.5

Biblioteca Modelica.Fluid

Incluye componentes para el modelado de sistemas termofludicos, 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
Tuberas estticas y dinmicas.
Modelica.Fluid.Machines
Sistemas de bombeo.
Modelica.Fluid.Valves
Vlvulas 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 presin, temperatura caudal (volumtrico, masa) y densidad.
Modelica.Fluid.Dissipation
Funciones de transferencia de calor (...HeatTransfer) y prdida de presin
(...PressureLoss).

5.2. Biblioteca estndar Modelica

87

Figura 5.5: Algunos componentes de la biblioteca Modelica.Electrical


En la figura 5.6 se muestran algunos de los componentes disponibles para los
sistemas fludicos.

5.2.6

Biblioteca Modelica.Magnetic

Incluye los componentes electromagnticos agrupados en las bibliotecas:


Modelica.Magnetic.FluxTubes
Convertidor electromagntico, reluctancia, reluctancia con fuga, materiales magnticos, fuente de fuerza magnetomotriz, fuente de flujo magntico, medidores
de potencial y flujo magntico

5 Biblioteca de componentes Modelica

88

Figura 5.6: Algunos componentes de la biblioteca Modelica.Fluid


Modelica.Magnetic.FundamentalWabe
Convertidor electromagntico (monofsico y multifase), mquina asncrona
(jaula de ardilla, anillo deslizante) , mquina sincrnica (imanes permanentes,
con excitacin)
En la figura 5.7 se muestran algunos de los componentes disponibles para los
sistemas electromagnticos.

5.2.7

Biblioteca Modelica.Mechanics

Incluye los componentes mecnicos agrupados en las bibliotecas:


Modelica.Mechanics.Multibody
Elementos mecnicos tridimensionales como cuerpos, uniones, fuerzas y sensores. Cada elemento tiene una animacin predeterminada.
Modelica.Mechanics.Rotational
Elementos mecnicos unidimensionales que giran, como inercia, engranes, frenos, resorte giratorio, friccin, embrague y par.

5.2. Biblioteca estndar Modelica

89

Figura 5.7: Algunos componentes de la biblioteca


Modelica.Magnetic

Modelica.Mechanics.Traslational
Elementos mecnicos unidimensionales que se desplazan, como masa, resorte,
amortiguador, fuerza y medidores.
En los elementos mecnicos 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 mecnicos disponibles.

5.2.8

Biblioteca Modelica.SIunits

En esta biblioteca se define las unidades de las variables fsicas, 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 " ) ;

90

5 Biblioteca de componentes Modelica

Figura 5.8: Algunos componentes de la biblioteca Modelica.Mechanical

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 A n g u l a r A c c e l e r a t i o n = Real ( final quantity =
" A n g u l a r A c c e l e r a t i o n " , final unit = " rad / s2 " ) ;
type Period = Real ( final quantity = " Time " , final unit = " s " ) ;
type Frequency = Real ( final quantity = " Frequency " , final unit =

5.2. Biblioteca estndar Modelica

91

" 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 " , min = 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 ( min = 0 ) ;
type Mass = Real ( quantity = " Mass " , final unit = " kg " , min = 0 ) ;
type Density = Real ( final quantity = " Density " , final unit =
" kg / m3 " , displayUnit = " g / cm3 " , min = 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 " ) ;
type Pressure = Real ( final quantity = " Pressure " , final unit =
" Pa " , displayUnit = " 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 = T h e r m o d y n a m i c T e m p e r a t u r e ;
type T h e r m o d y n a m i c T e m p e r a t u r e = Real ( final quantity =
" T h e r m o d y n a m i c T e m p e r a t u r e " , final unit = " K " , min = 0 .0 ,
start = 288 .15 , nominal = 300 , displayUnit = " degC " )
" Absolute temperature ( use type T e m p e r a t u r e D i f f e r e n c e for
relative temperatures ) " annotation ( absoluteValue = true ) ;
...

5.2.9

Biblioteca Modelica.Thermal

Incluye los componentes de los sistemas trmicos agrupados en las bibliotecas:


Modelica.Thermal.FluidHeatFlow
Tubera (aislada, con calefaccin), vlvula, medidores de presin, temperatura,
caudal, fuente de presin, caudal.

5 Biblioteca de componentes Modelica

92
Figura 5.9: Algunos componentes
de la biblioteca
Modelica.Thermal

Modelica.Thermal.HeatTransfer
Capacitor y resistor trmico, conductor trmico, 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 trmicos.

5.2.10

Identificacin 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 fsico, tienen una forma y color determinado. Adems,
uno est relleno (positivo, izquierdo, a, entrada) y el otro no (negativo, derecho, b,
salida).
Por ejemplo, los conectores de los componentes elctricos son cuadrados azules;
los de los componentes hidrulicos son crculos azules entre un cuadrado; los componentes magnticos tienen conectores cuadrados anaranjados; los de los componentes
mecnicos que se desplazan son cuadrados verdes y los de los componentes mecnicos que giran crculos grises; los bloques tienen conectores en forma de tringulo,
azules grandes en las entradas y pequeos en la salida; y as los dems componentes.

5.3. Otras bibliotecas incluidas en OpenModelica

93

5.3 Otras bibliotecas incluidas en OpenModelica


En la seccin 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 estn incorporadas en el OpenModelica Connection Editor (OMEdit).
Para acceder a ellas en el OMEdit, se puede mostrar el listado desplegable con
la opcin del men [File][SystemLibraries] (ver la descripcin del OMEdit en la
seccin 8.3).
El OMEdit incluye las siguientes bibliotecas:
ADGenKinetics (Implementation of generalized kinetics for modeling biochemical reaction networks)1
Annex60 (Library with models for building energy and control systems).
BioChem (Package for biochemical modeling and simulation).
BondLib (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).
1 Las descripciones en ingles de las bibliotecas, han sido tomadas directamente del texto desplegado

seleccionado la opcin [View Documentation] en cada una de ellas.

5 Biblioteca de componentes Modelica

94

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).
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).

5.4. Incorporacin de bibliotecas externas en OpenModelica

95

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 (Is intended to model electrical power systems at different levels of detail both in transient and steady-state mode).
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 Incorporacin de bibliotecas externas en


OpenModelica
Como se ha indicado, el editor OMEdit de OpenModelica, incluye la biblioteca de
componentes estndar Modelica y las bibliotecas listadas en la seccin 5.3.
En adicin a estas, estn disponibles tambin bibliotecas de componentes para
Modelica, desarrolladas principalmente por grupos de investigacin en instituciones
acadmicas, que son distribuidas con licencia de software libre.
Si se desea hacer uso de una de estas bibliotecas, esta debe instalarse en el
editor.

5 Biblioteca de componentes Modelica

96
Figura 5.10: OMEdit - Incorporacin de bibliotecas
de componentes externas

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 ubicacin.
Debe tenerse en cuenta que OpenModelica, es un entorno de modelado y simulacin con Modelica, que est en desarrollo permanente y que por lo tanto, no hay
garanta que cualquier biblioteca, incluidas las de la biblioteca estndar Modelica,
funcionen correctamente con el.

5.5 Bibliotecas de componentes adicionales para


SytemModeler
En la seccin 5.2 se describieron las bibliotecas de componentes Modelica, de las
cuales la mayora estn incluidas en SystemModeler. Estas son parte integral del
lenguaje Modelica.
Wolfram distribuye otras bibliotecas de componentes Modelica para SystemModeler2 , tanto comerciales3 como gratuitas4 .
2 http://www.wolfram.com/system-modeler/libraries/
3 Hydraulic,
4 BioChem,

SmartCooling.
ModelPlug, PlanarMechanicsStandard, SystemDynamics.

5.5. Bibliotecas de componentes adicionales para SytemModeler

97

Figura 5.11: Bibliotecas de distribucin libre para SystemModeler


Para instalar cualquiera de estas bibliotecas, una vez descargas en la computadora
(son archivos con extensin .sma), se abren para su instalacin con la opcin 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
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
5 Las

descripciones en ingls de las bibliotecas, se han tomado directamente del texto desplegado
seleccionando [View][Documentation..] en cada una de ellas.

98

5 Biblioteca de componentes Modelica


The SystemDynamics library is designed as a graphical library for modeling
mass and information flows in a continuous-time system using Prof. Jay Forresters System Dynamics metaphor. Two separate and independent versions
of this library had originally been created by Dr. Stefan Fabricius and by Prof.
Franois 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 modeling metaphor is widely used especially by researchers in the life sciences and social sciences.

Estas tres bibliotecas de componentes Modelica, tambin estn disponibles en


OpenModelica (ver el listado de bibliotecas en la seccin 5.3).

6
Solucion numerica del modelo
El problema que presenta la solucin del problema del valor inicial y la simulacin
de los modelos Modelica, es mucho ms complejo que el de los modelos constituidos
por un conjunto de ecuaciones diferenciales explcitas.

6.1 Introduccin
En el lenguaje Modelica, el modelo a simular est constituido por lo general por un
conjunto de ecuaciones algebraico diferenciales implcitas (DAE), de la forma

dx(t)
0=F
, x(t), z(t), u(t),t ,
dt
y(t) = G (x(t), z(t),t) ,


(6.1)
(6.2)

con condiciones iniciales


x(t0 ) = x0 ,
dx(t0 )
= x0 ,
dt

(6.3)
(6.4)

donde las dimensiones de los vectores x, z, y y u, son n, m, p y q respectivamente.


Las funciones F (de dimensin n + m) son normalmente no lineales, mientras que las
funciones G (de dimensin 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 fsicos. Estos
tienen la capacidad de permitir representar sistemas ms complejos, que los que se
pueden representar con un conjunto de ecuaciones diferenciales ordinarias (ODE).
Sin embargo, su solucin requiere un tratamiento especial.
99

100

6 Solucin numrica del modelo

6.2 Cantidad de ecuaciones requeridas para la


inicializacin del modelo
Para resolver un modelo dado por un conjunto de n ecuaciones diferenciales explcitas (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 nmero infinito de soluciones.
El valor inicial de las variables dadas por ecuaciones algebraicas, se obtiene en
funcin 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 dimensin n y el vector de las variables que no
aparecen derivadas es de dimensin m, se tienen n + m incgnitas para el problema
de simulacin.
Sin embargo, para el problema de inicializacin de la simulacin del modelo
DAE, esto es, para el establecimiento de las condiciones iniciales de la simulacin,
se tienen n incgnitas adicionales, correspondientes al valor inicial de las derivadas
de los posibles estados. Por lo tanto se requiere encontrar el valor de 2n + m variables (Mattsson et al., 2002).
Si por ejemplo se tiene un modelo dado por las ecuaciones
f1 ( der ( varX1 ) , varX1 , varX2 , varZ , varU ) = 0;
f2 ( der ( varX2 ) , varX1 , varX2 , varZ , varU ) = 0;
f3 ( varX1 , varX2 , varZ ) = 0;

durante la simulacin se deben encontrar dos variables varX1 y varX2 (n = 2) que


aparecen derivadas, se supone que son variables de estado, y una variable varZ (m =
1), que no aparece derivada, para una variable de entrada varU conocida.
En el proceso de inicializacin 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 inicializacin del modelo), para la
solucin del problema de valor inicial.
Un caso especial y comn, es el de la inicializacin en estado estacionario. El
sistema simulado parte de un punto de equilibrio estable, por lo tanto todas las derivadas de las variables son cero (el sistema est inicialmente en reposo).

6.3. Solucin de un conjunto de DAE implcitas

101

6.3 Solucin de un conjunto de ecuaciones algebraico


diferenciales implcitas
Sin perder generalidad, supngase primero que se tiene un modelo representado por
el conjunto de ecuaciones diferenciales ordinarias explcitas (ODE), de la forma estndar
dx(t)
= f(x(t),t), x(t0 ) = x0 .
(6.5)
dt
Para su solucin numrica, se dispone de una gran variedad de mtodos de integracin del tipo Runge-Kutta y tambin del tipo predictor corrector (Ralston,
1965; Chapra y Canale, 2011).
Aunque usualmente el punto de partida de la solucin de (6.5), se especifica
indicando el valor de los estados iniciales x0 , podra requerirse una mayor flexibilidad
en el establecimiento de la condicin en que se encuentra el sistema, al momento
de iniciar la simulacin. Podra desearse partir de un punto de equilibrio (estado
estacionario), especificando x0 = 0 como condicin inicial. Entonces, los valores
iniciales de los estados x0 se obtendran de la solucin de f(x(t0 ),t0 ) = 0.
Si ahora el modelo est representado ms bien, por el conjunto de ecuaciones
algebraico diferenciales implcitas (DAE), de la forma


dx(t0 )
dx(t)
, x(t),t = 0, x(t0 ) = x0 ,
= x0 ,
(6.6)
F
dt
dt
deben analizarse los problemas encontrados para su solucin.
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 cdigos de integracin numrica utilizados para resolverlos. En particular, se han aplicado los mtodos utilizados para
resolver conjuntos de ecuaciones diferenciales ordinarias rgidos (modelos de sistemas con dinmicas muy diferentes, unas rpidas y otras lentas). Los problemas
encontrados con la aplicacin de estos mtodos, a la solucin de los conjuntos de
ecuaciones algebraico diferenciales implcitas, especialmente con la estimacin del
error de la solucin y el control del paso de integracin, 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 una gran variedad de sistemas fsicos (electrnicos, mecnicos y otros),
se desarroll el cdigo numrico DASSL (Petzold, 1982a).

102

6 Solucin numrica del modelo

El cdigo DASSL, toma la idea de Gear (1971) de reemplazar las derivadas en


(6.6) por una aproximacin de diferencias, y luego resolver las ecuaciones resultantes
para el instante tk empleado el mtodo de Newton.
En el caso del mtodo de Gear, utilizando un paso de integracin tk , (6.6) se
aproxima por la expresin


xk xk1
(6.7)
F
, xk , tk = 0,
tk
cuya solucin con el mtodo de Newton, en la iteracin i-sima es




i
F
1 F 1
i+1
i
i xk xk1
xk = xk
+
,tk .
F xk ,
x tk x
tk

(6.8)

En vez de aproximar las derivadas por una diferencia retrgrada de primer orden como en (6.7), el cdigo DASSL utiliza una formula de diferencias retrgradas
(BDF) de orden q variable, con q desde uno hasta cinco.
Ahora, la aproximacin de (6.6) en el cdigo DASSL es
!
1 q
(6.9)
F
j xk j , xk , tk = 0.
tk j=0
En cada paso de integracin, el orden q del mtodo y el paso de integracin tk ,
se seleccionan con base en el comportamiento de la solucin.
Como la velocidad de convergencia del mtodo de Newton, depende de cuan
exacta es la estimacin inicial xk0 de la solucin de f (...,tk ) = 0, el DASSL la estima
evaluando un polinomio que interpola, en el instante tk , las soluciones calculadas en
los ltimos i + 1 instantes (tk1 , tk2 , ..., tki1 ). La estimacin inicial de xk se obtiene
evaluando la derivada de este polinomio en tk . Una vez determinado xk0 , se emplea el
mtodo de Newton para determinar xk .
El control del paso de integracin (variable) y los criterios de convergencia utilizados en el mtodo, se detallan en Petzold (1982a).
Por lo tanto, el DASSL es un cdigo con control del paso y del orden.
Uno de los problemas que surgen al momento de la solucin de un conjunto de
ecuaciones algebraico diferenciales implcitas, y que no est presente en la solucin
de un conjunto de ecuaciones diferenciales ordinarias explcitas, 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
todos los valores iniciales de las derivadas de las variables, los elementos de x0 . Una
opcin del cdigo DASSL, permite determinar los valores iniciales de x , utilizando
el mtodo de diferencias retrogradas de Euler y el mtodo de Newton, a partir de x0
y una estimacin de x0 .

6.3. Solucin de un conjunto de DAE implcitas

103

Una implementacin del cdigo DASSL, es el mtodo de simulacin preseleccionado en OpenModelica (OMShell, OMEdit) y tambin en Wolfram SystemModeler
(Simulation Center).

6.3.2

ndice diferencial del modelo DAE

El ndice diferencial (di), de un modelo representado por ecuaciones algebraico diferenciales implcitas (DAE) dado por (6.6), es el nmero mnimo de derivadas analticas requeridas, para expresarlo como un conjunto de ecuaciones diferenciales ordinarias explcitas (ODE), de la forma:

F x (t), x(t),t = 0,

F()
F()
dF (x (t), x(t),t) 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 trminos de x(t) y t (Petzold, 1989).
Esto indica que, para obtener x (t) en forma explcita, es necesario derivar F()
di veces.
El ndice diferencial indica el grado de dificultad de la solucin del DAE.
Un modelo dado por un conjunto de ecuaciones diferenciales ordinarias explcitas (ODE), tiene un ndice diferencial cero.
Los modelos dados por conjuntos de ecuaciones algebraico diferenciales implcitas (DAE) de ndice diferencial uno, ocurren con frecuencia y son los que se puede
resolver con el cdigo DASSL.
En ocasiones, el modelado matemtico de los sistemas fsicos, puede dar como
resultado que este tenga un ndice diferencial alto, para los cuales no hay cdigos
de solucin disponibles. Se requiere entonces, que el cdigo de solucin del modelo incorpore alguna forma de manipulacin o tcnica de reduccin del ndice, para
bajarlo a 1 o a 0 (Cellier y Elmqvist, 1993; Fbin et al., 2001; Takamatsu y Iwata,
2008).
OpenModelica utiliza una seleccin dinmica de estados (Mattsson et al., 2000),
como mtodo preestablecido para la reduccin del ndice diferencial del modelo.

6.3.3

Modelos con un ndice diferencial alto

El ndice diferencial del modelo, depende de como es que este ha sido expresado. Una
causa para que este resulte ser alto, es que el modelo tenga ms variables derivadas (el

6 Solucin numrica del modelo

104

(a) Entradas independientes

(b) Entrada comn

Figura 6.1: Sistema de dos tanques


sistema tenga ms elementos almacenadores de energa), 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 independiente
y ambos descargan al medio ambiente, a travs de su respectiva vlvula.
Este sistema tiene dos almacenadores de energa, los dos tanques. El sistema es
de segundo orden. Se supondr que todas las tuberas son suficientemente amplias y
cortas, como para despreciar las prdidas de presin en ellas.
El modelo del sistema de tanques, est dado por las siguientes ecuaciones:
dH1 (t)
= Qe1 (t) Qs1 (t),
dt
dH2 (t)
A2
= Qe2 (t) Qs2 (t),
dt
g
Qs1 (t) =
H1 (t),
R1
g
Qs2 (t) =
H2 (t),
R2
Qe (t) = Qe1 (t) + Qe2 (t),
A1

Qs (t) = Q11 (t) + Q12 (t).

(6.11)
(6.12)
(6.13)
(6.14)
(6.15)
(6.16)

Para el ejemplo, se han considerado los siguientes parmetros: A1 = 2 m2 , A2 =


4 m2 , Rv1 = 25000 Pa/(m3 /s), Rv2 = 50000 Pa/(m3 /s), = 1020,408 kg m3 , y g =
9,80 m s2 . Condiciones iniciales H10 = H20 = 0 y caudales de las bombas Qe1 (t) =
Qe2 (t) = 1 m3 s1 para 5 s < t < 150 s.
Las ecuaciones en Modelica para la simulacin de este sistema son:

6.3. Solucin de un conjunto de DAE implcitas

105

Figura 6.2: Sistema de dos tanques con entradas independientes, Qe1 = Qe2 =
1m3 s1

...
equation
Qe1 = if time > 5 and time < 150 then 1 else 0;
Qe2 = if time > 5 and time < 150 then 1 else 0;
A1 * der ( H1 ) = Qe1 - Qs1 ;
A2 * der ( H2 ) = Qe2 - Qs2 ;
Qs1 = df * g / Rv1 * H1 ;
Qs2 = df * g / Rv2 * H2 ;
Qe = Qe1 + Qe2 ;
Qs = Qs1 + Qs2 ;
...

El modelo incluye ocho ecuaciones, para determinar las ocho variables (H1 , H2 ,
Qe1 , Qe2 , Qs1 , Qs2 , Qe , Qs ). El modelos est bien definido y los resultados de su
simulacin se muestran en la figura 6.2 .
Cada conjunto (tanque - vlvula) es un sistema de primer orden independiente,
que evoluciona segn su constante de tiempo.
En el modelo hay dos variables que aparecen derivadas (H1 , H2 ). Con base en
esto, el algoritmo de solucin supone que el sistema es de segundo orden (tiene dos
estados), tal como efectivamente lo es. Adems, este est constituido por ecuaciones
diferenciales y algebraicas explcitas, cuyo ndice diferencial es 0.
Ahora, en vez de usar dos bombas independientes con un caudal de 1,0 m3 s1
cada una, se emplear una sola bomba con una capacidad de 2,0 m3 s1 , alimentado
a los dos tanques, como se muestra en la figura 6.1b.

6 Solucin numrica del modelo

106

Por lo tanto, parece razonable escribir el modelo como:


...
equation
Qe = if time >
A1 * der ( H1 ) =
A2 * der ( H2 ) =
Qs1 = df * g /
Qs2 = df * g /
Qe = Qe1 + Qe2 ;
Qs = Qs1 + Qs2 ;
...

5 and
Qe1 Qe2 Rv1 *
Rv2 *

time < 150 then 2 else 0;


Qs1 ;
Qs2 ;
H1 ;
H2 ;

Sin embargo, este modelo est indeterminado. Tiene solo siete ecuaciones y hay
ocho incgnitas. Hace falta una ecuacin.
Como se aprecia en la figura 6.1b, los fondos de los dos tanques estn 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 ecuacin al modelo se tiene
...
equation
Qe = if time >
A1 * der ( H1 ) =
A2 * der ( H2 ) =
Qs1 = df * g /
Qs2 = df * g /
Qe = Qe1 + Qe2 ;
Qs = Qs1 + Qs2 ;
H2 = H1 ;
...

5 and
Qe1 Qe2 Rv1 *
Rv2 *

time < 150 then 2 else 0;


Qs1 ;
Qs2 ;
H1 ;
H2 ;

Este es simulado y las variables resultantes se muestran en la figura 6.3.


El algoritmo de solucin del modelo tuvo que resolver ahora un problema ms
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 estn relacionados por la ecuacin algebraica H1 (t) = H2 (t), por lo
tanto no son independientes. Solo existe un estado. Por otro lado, se provee solo una
ecuacin para determinar Qe1 (t) y Qe2 (t).
En este caso, el ndice diferencial del modelo es 2 y el algoritmo de solucin del
modelo tuvo que reducirlo.
Como se aprecia en las curvas de la figura 6.3, a pesar que los niveles en ambos
tanques evolucionan en el tiempo en forma idntica, no lo hacen as los caudales de

6.3. Solucin de un conjunto de DAE implcitas

107

Figura 6.3: Sistema de dos tanques con una entrada comn, Qe = Qe1 + Qe2 =
2m3 s1
entrada y salida de estos.
Se puede apreciar que, a partir de t = 150 s, cuando se apaga la bomba, hay una
transferencia de fluido del tanque 2 al 1.
El ndice diferencial del modelo se puede reducir analticamente, reformulando
el modelo.
Derivando la ecuacin H1 (t) = H2 (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 ecuacin y eliminando una de las ecuaciones diferenciales, el modelo, queda expresado como:
...
equation
Qe = if time > 5 and time < 150 then 2 else 0;
A1 * der ( H1 ) = Qe1 - Qs1 ;
Qs1 = df * g / Rv1 * H1 ;
Qs2 = df * g / Rv2 * H2 ;
Qe = Qe1 + Qe2 ;
Qs = Qs1 + Qs2 ;
H2 = H1 ;
( Qe2 - Qs2 ) / A2 = ( Qe1 - Qs1 ) / A1 ;
...

El modelo es ahora de primer orden e incluye dos ecuaciones algebraicas para


determinar Qe1 (t) y Qe2 (t). El ndice diferencial del modelo ahora es 1.

108

6 Solucin numrica del modelo

Figura 6.4: Comportamiento del tanque equivalente

Los resultados de la simulacin de este modelo, son idnticos a los mostrados en


la figura 6.3.
Si se hace uso del concepto de elementos generalizados, descrito en la captulo
2 y en particular el modelado de los elementos de los sistemas hidrulicos de la
seccin 2.3, la red generalizada del sistema de los dos tanques con una sola bomba de
alimentacin (figura 6.1b), est constituida por dos capacitores hidrulico en paralelo
(los tanques) y dos resistores hidrulicos en paralelo (las vlvulas).
Por lo tanto, para el caso de ejemplo, su equivalente es un sistema con un solo
tanque con un rea trasversal A = 6 m2 y una vlvula a la descarga, con una resistencia R = 16666,67 Pa/(m3 /s).
El comportamiento de este sistema de tanque y vlvula equivalente, se muestra
en la figura 6.4, el cual es idntico al mostrado en los grficos de la fila superior de
la figura 6.3.
Si se modela un sistema con elementos de energa dependientes, como lo sera un
circuito elctrico con capacitores en paralelo (o inductores en serie), representando
cada elemento por una ecuacin diferencial (una variable de estado), cuando en
realidad solo existe un estado asociado al elemento almacenador de energa equivalente, el modelo tendr un ndice diferencial alto.
Debe recordarse que el nmero de estados (variables que aparecen derivadas en
el modelo) necesarios para modelar un sistema fsico, es igual al nmero de almacenadores de energa independientes que este tenga.

6.4. Simulacin con Assimulo

109

6.4 Simulacin con Assimulo


La simulacin del modelo dinmico 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 cdigos de solucin, de un solo paso (Euler explcito e
implcito, Randau 5DAE, Runge-Kutta de 4 orden, ...) y de pasos mltiples (CVode,
IDA, ODASSL, ..).
El mtodo preseleccionado es Sundials2 CVode (Hindmarsh y Serban, 2012), el
cual es un algoritmo de paso mltiple de orden variable y de paso variable, para
resolver ecuaciones diferenciales.

1 http://www.jmodelica.org/assimulo

2 http://computation.llnl.gov/casc/sundials/main.html

7
Optimizacion de sistemas dinamicos
Con frecuencia es necesario optimizar1 el funcionamiento, o alguna caracterstica de
un sistema dinmico.
El diseo de los sistemas de control ptimo y la calibracin de modelos (estimacin de parmetros), constituyen problemas de optimizacin particulares.
Esta necesidad implica la definicin de un problema de optimizacin, que involucra al modelo del sistema dinmico, la funcin objetivo a optimizar y las posibles
restricciones en las variables o parmetros del sistema, que deben respetarse.
Modelica ofrece la extensin Optimica descrita en la seccin 4.6, para la definicin del problema de optimizacin, con sistemas heterogneos modelados con
Modelica.

7.1 Introduccin
Habindose desarrollado el modelo Modelica del sistema, se debe formular el problema de optimizacin, ya sea esta dinmica o esttica.

7.1.1

Optimizacin dinmica

Un problema de optimizacin dinmica, involucra el modelo dinmico del sistema y


el planteamiento de las especificaciones de la optimizacin.
Sea un sistema S (x, z, u,t) cuyo modelo dinmico (restricciones dinmicas entre
las variables) est expresado como


dx(t)
, x(t), z(t), u(t),t ,
(7.1)
0=F
dt
y(t) = G (x(t), z(t),t) , t [t0 ,t f ],
(7.2)
1 buscar

la mejor manera de realizar una actividad, Diccionario de la lengua espaola, 22.a edi-

cin, 2001

111

7 Optimizacin de sistemas dinmicos

112

con condiciones iniciales (que pueden ser fijas o libres)


x(t0 ) = x0 ,

dx(t0 )
= x0 ,
dt

(7.3)

y una especificacin de la optimizacin O(q), dada por la funcional de costo (objetivo) J(q, [t0 ,t f ]), dependiente del conjunto de q variables (u(t)) o parmetros variables
( ) del sistema, sujeta al conjunto de m restricciones no lineales
gmn g(q) gmax ,

(7.4)

y posibles cotas en las variables (o parmetros)


qmn q qmax .

(7.5)

El problema de optimizacin dinmica, puede establecerse como encontrar el


conjunto de las n variables o parmetros qo tal que


Z tf
.
o
J(q , [t0 ,t f ]) = mnn J(q, [t0 ,t f ]) = mnn M(x(t f ), q) +
L (x(t), z(t), q,t) dt ,
qR

qR

t0

(7.6)
sujeta a las restricciones impuestas por el modelo dinmico (7.1) a (7.3) y a las de las
variables o parmetros a optimizar (7.4) y (7.5).
La funcin objetivo (7.6) puede incorporar una funcional de costo tipo integral
(trmino de Lagrange) y una funcin de costo dependiente del tiempo final (trmino
de Mayer).
El intervalo para la optimizacin [t0 ,t f ] puede ser fijo o libre.
El problema de optimizacin se resolver como una minimizacin de la funcional
de costo, por lo que el problema de maximizar una funcin objetivo, debe establecerse como el de minimizar su valor negativo.

7.1.2

Optimizacin esttica

El problema de optimizacin esttica, puede derivarse de un modelo dinmico del


sistema en estado estacionario, en condiciones de equilibrio (determinado haciendo
iguales a cero todas las derivadas de las variables).
En este caso, el modelo esttico (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 ) ,

(7.7)
(7.8)

7.2. Algoritmos de optimizacin de JModelica.org

113

y la especificacin de la optimizacin Os (qs ), est dada por la funcin de costo


J(qs ,ts ), dependiente del conjunto de qs valores de variables (us ) o parmetros variables ( ) del sistema, sujeta al conjunto de m restricciones no lineales
gsmn g(qs ) gsmax ,

(7.9)

y posibles cotas en los valores de las variables o parmetros


qsmn qs qsmax .

(7.10)

El problema de optimizacin esttica, puede establecerse como encontrar el conjunto de los n valores de las variables o parmetros qos tal que
.
Js (qos ,ts ) = mnn Js (qs ,ts ),
qs R

(7.11)

sujeta a las restricciones impuestas por el modelo esttico (7.7) y (7.8) y a las de los
valores de las variables o parmetros 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 operacin y el instante ts en que se realiza la optimizacin
(para los sistemas variantes en el tiempo).

7.2 Algoritmos de optimizacin de JModelica.org


JModelica.org incluye dos algoritmos para resolver el problema de optimizacin dinmica planteado (kesson et al., 2009).
Uno es un mtodo de optimizacin 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 mtodo Runge-Kutta implcito de orden n. El
problema se transforma en un problema de programacin no lineal, que se resuelve
con el cdigo Ipopt.
El otro es un algoritmo de optimizacin de mltiples intervalos (direct multiple
shooting method) (Rantil et al., 2009), en el cual el intervalo de solucin es dividido
en un determinado nmero 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 dinmico en cada segmento en forma independiente. La simulacin es invocada por el algoritmo de optimizacin que se encarga
de modificar las variables (variables o parmetros del proceso) de optimizacin. Se
utiliza el algoritmo de simulacin SUNDIALS, que incluye varios mtodos de integracin, junto con el mtodo de optimizacin scipy_slsqp (sequential quadratic
programming algorithm).

114

7 Optimizacin de sistemas dinmicos

Los bloques de optimizacin son incorporados en JModelica.org, utilizando CasADi (Andersson et al., 2011b). Esta en una herramienta de software de diferenciacin automtica, para la solucin numrica de problemas de optimizacin en general y de control ptimo en particular, con base en gradiente (Andersson, 2013;
Andersson et al., 2014).

Parte III

Uso del software libre


OpenModelica y JModelica.org

115

8
Introduccion a OpenModelica
De entre las implementaciones libres del lenguaje Modelica, la de mayor difusin
es OpenModelica, desarrollada por el Open Source Modelica Consortium (OSMC),
con sede en el Departamento de Computadoras y Ciencias de la Informacin de la
Universidad de Linkping, Suecia (Fritzson et al., 2005).

8.1 Introduccin
Se har adelante, una breve descripcin de las herramientas de programacin y simulacin provistas por OpenModelica, con base en su Manual para los usuarios de
la versin 1.9.1 (Open Source Modelica Consortium, 2014).
El instalador de OpenModleica (Windows, Linux, Mac) se puede descargar desde
el sitio web del OSMC1 y su ejecucin es expedita. Las demostraciones de su uso, se
harn empleando la instalacin en MS Windows.
OpenModelica es una implementacin del lenguaje Modelica compuesta de varios subsistemas, entre los que se destacan: un compilador del lenguaje Modelica
(de Modelica a cdigo C) OpenModelica Compiler (OMC); un intrprete interactivo, OpenModelica Shell (OMS); un editor grfico de los modelos, OpenModelica
Connector Editor (OMEdit); un editor de documentos interactivos, OpenModelica
Notebook (OMNotebook); y una herramienta de optimizacin dinmica (OMOptim);
entre otros.

8.2 OpenModelica Shell (OMS)


Una sesin interactiva para la ejecucin de instrucciones Modelica, o la simulacin de un modelo Modelica previamente desarrollado, se puede realizar utilizando el OMShell, disponible en el men de aplicaciones de Windows [OpenModelica][OpenModelica Shell].
1 https://openmodelica.org/

117

8 Introduccin a OpenModelica

118
Figura 8.1: OMS - inicio y
carga del modelo

Este abre la ventana del intrprete interactivo y muestra el indicador de la lnea


para la introduccin de las instrucciones.
Aunque en el OMS se pueden ejecutar las instrucciones en Modelica lnea por
lnea, interesa aqu solo presentar la simulacin de un modelo ya elaborado.
En la lnea 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 elctrico RLC
serie.
La simulacin y el despliegue de la respuesta se realiza con las siguientes instrucciones:
1. Simular el modelo (si el intervalo de simulacin est definido en el modelo),
con
>> simulate(NombreModelo)
o (si se debe especificar el intervalo de simulacin), con
>> simulate(NombreModelo, stopTime=tf)

8.2. OpenModelica Shell (OMS)

119

Figura 8.2: OMS - simulacin y despliegue de respuesta

Figura 8.3: OMPlot - curva


de respuesta

2. El despliegue de cualquiera de las variables (var) del modelo respecto al tiempo, se obtiene con
>> plot(var)
Tal como se muestra en la figura 8.2 para el circuito RLC, cuya tensin en el
capacitor (Vc) se muestra en la figura 8.3.
La expresin general de la instruccin 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 simultneamente varias variables, con la instruccin
>> plot({var1, var2, ... }),
y tambin dibujar un plano de fase (diagramas Y-X), empleando la instruccin
>> plotParametric(varX, varY)

120

8 Introduccin a OpenModelica

Figura 8.4: OMPlot - plano


de fase (oscilador de van
der Pol)

como se muestra en la figura 8.4, para el oscilador amortiguado no lineal de van der
Pol 2 , con = 0,3 y condiciones iniciales (X0 = 1, Y0 = 1).
El OMShell se cierra desde el men con [File][Exit].
Los instrucciones plot(var) y plotParametric(varX, varY) admiten, entre
otros, los siguientes argumentos optativos:
title= - texto del ttulo del grfico
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 slida, 2 a trazos, 3 a puntos, ...
legendPosition=top - left, right, top, bottom, none.
Adems, la ventana del grfico incluye un men de opciones para guardarlo en
un archivo, imprimirlo y modificar la apariencia de la figura, como incluir o no la
cuadrcula del grfico.
En particular, la opcin Setup despliega una ventana de configuracin de la
figura que permite cambiar, por ejemplo, el color, grosor y estilo del trazo, establecer
el ttulo y las leyendas de los ejes, el contenido y ubicacin de las leyendas, y otras
caractersticas, tal como se muestra en la figura 8.5.
Cuando se ejecuta la instruccin simulate, los resultados son guardados en el
archivo NombreModelo_res.mat. El formato .mat es el predefinido para el archivo
2 http://www.ieeeghn.org/wiki/index.php/Balthasar_Van_der_Pol

8.3. OpenModelica Connection Editor (OMEdit)

121

Figura 8.5: OMPlot - configuracin de las caractersticas de la figura


de resultados. Este archivo se puede procesar posteriormente con otros programas,
como MATLAB o PySimulator (ver el captulo 13).

8.3 OpenModelica Connection Editor (OMEdit)


La interfaz para la edicin de los modelos en OpenModelica, OMEdit (Asghar et al.,
2011), est disponible en el men de aplicaciones de Windows [OpenModelica]
[OpenModelica Connection Editor], cuya pantalla inicial se muestra en la figura 8.6.
La ventana principal de OMEdit incluye, los mens desplegables (File, Edit,
View, Simulation, FMI, XML, Tools, Help), las barras de herramientas (File, Edit,
View, Shape, Simulatiom, Plot, ModelSwitcher), y las ventanas para la navegacin
(Search, Libraries, Documentation, Variables, Messages).
Las ventanas de navegacin se pueden colocar en la columna izquierda, o en
la columna derecha. Adems, la de los mensajes del compilador se puede colocar
tambin en el rea inferior.
La distribucin de las ventanas de navegacin, una vez elaborada, se puede guardar para sesiones futuras, seleccionado desde el men [Tools][Options][General] Pre-

122

8 Introduccin a OpenModelica

Figura 8.6: OMEdit - Ventana principal


serve Users GUI Customizations (ver la figura 8.7).
Se dispone de tres reas de trabajo: Bienvenida (Welcome), Modelado (Modeling), y Respuesta grfica (Plotting), seleccionables en el men inferior derecho.
OMEdit permite la creacin, edicin y ejecucin (simulacin y despliegue de variables) de los modelos Modelica, ya sea mediante un listado de instrucciones (programacin en texto), o en forma grfica (programacin mediante un diagrama de
interconexin).
Seleccionando en el men [Tools][Options], se despliega la ventana de configuracin del editor, mostrada en la figura 8.7. Esta permite adecuar algunas caractersticas
del OMEdit (especialmente visuales), a las preferencias del usuario.
En la columna derecha de OMEdit, se muestra el rbol de bibliotecas (Libraries) de componentes disponibles.
La biblioteca Modelica (Modelica Standard Library), descrita en la seccin 5.2,
forma parte integral del lenguaje Modelica y se muestra (parcialmente) en la figura
8.8.
Esta incluye componentes de diferentes dominios (bloques, elctrico, mecnico,
etc.), agrupados por categoras expandibles, en las cuales cada elemento est repre-

8.3. OpenModelica Connection Editor (OMEdit)

Figura 8.7: OMEdit - Opciones de configuracin

123

124

Figura 8.8: OMEdit - Biblioteca


Modelica

8 Introduccin a OpenModelica

8.3. OpenModelica Connection Editor (OMEdit)

125

sentado por su icono, tal como se muestra en la figura 8.9, para el caso de los componentes analgicos bsicos de los sistemas elctricos.
El modelado grfico, como se ilustrar ms adelante, se realiza arrastrado desde las bibliotecas al diagrama del modelo, los iconos de los componentes requeridos
para su interconexin.
Colocando el apuntador sobre una entrada (tronco, rama u hoja) del rbol de
bibliotecas, se puede acceder a la informacin correspondiente, mediante el men
desplegable con su botn derecho y seleccionando [View Documentation]. La informacin es desplegada en la ventana de navegacin 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 bsqueda y la seleccin 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 en modo diagrama
de interconexin [Diagram View], si este se ha elaborado mediante la conexin grfica de componentes.
Los modelos elaborados mediante un listado de instrucciones, no tienen una representacin grfica (diagrama). Por su parte, los modelos elaborados mediante un
diagrama de interconexin, tendrn un programa, creado automticamente por el editor, en el cual se incluyen las instrucciones para el despliegue del diagrama y las
ecuaciones de interconexin determinadas a partir de este.
Se tomar como ejemplo para demostrar el uso de OMEdit, el circuito elctrico
introducido en la seccin 4.4 y mostrado nuevamente en la figura 8.12, cuyo modelo
est dado por las ecuaciones
diL (t)
= V f R1 iL (t) Vc (t),
dt
1
dVc (t)
= 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 opcin del

126
Figura 8.9: OMEdit - Biblioteca de elementos elctricos (Electrical)

8 Introduccin a OpenModelica

8.3. OpenModelica Connection Editor (OMEdit)

Figura 8.10: OMEdit - Navegador de documentacin

Figura 8.11: OMEdit - Modelo nuevo

127

128

8 Introduccin a OpenModelica

Figura 8.12: Circuito


elctrico

men [File][Save], o pulsando el icono Save y seleccionando la carpeta para guardarlo.


En forma automtica, OMEdit crea la lnea de cabecera y la de terminacin del
modelo como
model CircuitoElectrico
end 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 ecuacin connect para establecer las conexiones entre los componentes, o
3. interconectando directamente en forma grfica los iconos de los componentes,
para formar un diagrama de interconexin.
En el captulo 9, se presentarn en detalle los diferentes procedimientos para
definir los modelos, en varios dominios fsicos. Aqu, solo se ilustr en forma breve,
el uso de OMEdit para programar el modelo, simularlo y ver su respuesta.
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 revisin sintctica, tambin la hace al momento de guardar un modelo en un
archivo, ya sea por indicacin del usuario, o porque lo hace en forma automtica (si
la opcin Enable Auto Save est activada (la ventana [Tools][Options] - General).

8.3. OpenModelica Connection Editor (OMEdit)

129

Figura 8.13: OMEdit - Modelado en modo texto


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 de


texto [Modelica Text View], se escriben las ecuaciones que describen el modelo.
Para el circuito elctrico del ejemplo, los parmetros son R1 = 10 , R2 = 100 ,
C1 = 0,01 F y L1 = 1 H; las condiciones iniciales Vc0 = 0 V e i0L = 0 A; y la tensin
de la fuente V f = 10 V para t 0,05 s.
La definicin de los parmetros y las ecuaciones del modelo, (4.11) y (4.12), se
pueden escribir como se muestra en la figura 8.13.
La definicin del modelo Modelica, inicia con la lnea conteniendo la palabra
model seguida del nombre asignado al mismo, CircuitoElectrico en este caso.
La primera seccin contiene las definiciones de las constantes, los parmetros y
las variables (si estas corresponden a un estado, posiblemente se establecen tambin
sus condiciones iniciales) utilizadas en el modelo. Cada lnea de definicin se termina
con un punto y coma.

8 Introduccin a OpenModelica

130

Figura 8.14: OMEdit - Barra de herramientas de la simulacin


La palabra equation, separa la seccin de las definiciones de la seccin con las
ecuaciones del modelo. Cada ecuacin se termina con un punto y coma.
El modelo puede incluir una nota (annotation) sobre las condiciones en que se
efectuar el experimento (experiment(...)) con el modelo, esto es, su simulacin.
El modelo se termina con una lnea conteniendo la palabra end, 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 verificacion indica:
Check of CircuitoElectrico completed successfully.
Class CircuitoElectrico has 3 equation(s) and 3 variable(s).
1 of these are trivial equation(s).
Debe recordarse que en Modelica, el modelo debe estar balanceado, esto es,
que debe tener el mismo nmero de variables y de ecuaciones, para que pueda resolverse.

8.3.3

Ejecucin de la simulacin

Antes de ejecutar la simulacin, deben establecerse los parmetros para su control,


seleccionado el icono Simulation Setup mostrado en la figura 8.14. Este despliega
la ventana de parmetros de la simulacin, mostrada en la figura 8.15.
En ella se establecen parmetros generales [General] como el intervalo de tiempo
de la simulacin, con el tiempo inicial (Start Time), normalmente cero, y el tiempo
final (Stop Time); 1,2 segundos para el ejemplo utilizado; el mtodo de integracin

8.3. OpenModelica Connection Editor (OMEdit)

131

Figura 8.15: OMEdit Control de la simulacin

(solucin) del modelo, el dassl es el mtodo predeterminado; o de salida [Output]


como el nmero total de intervalos de la salida (Number of Intervals), 500 es la
cantidad predeterminada; y otras opciones.
Si se selecciona la opcin Save simulation settings inside model, esta se anotar en el modelo, por ejemplo como
annotation ( experiment ( StartTime = 0 , StopTime = 1 .2 ,
Tolerance = 1 e - 006 , Interval = 0 .0028 ) ) ;

La simulacin se puede iniciar desde esta ventana pulsando el botn Simulate.


Una vez establecidos los parmetros de la simulacin, 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 simulacin incluye la verificacin del modelo (consistencia, sintaxis, condiciones iniciales), su compilacin y su ejecucin. Durante este proceso se abre la
ventana que muestra los mensajes de avance del proceso.

8.3.4

Vista de resultados

Si la simulacin no presenta errores, al final de la misma OMEdit cambia automticamente a la vista de resultados (Ploting), mostrada en la figura 8.16.
Esta presenta el rea para mostrar los grficos, de las variables seleccionadas en
el navegador de variables (Variables Browser).

132

8 Introduccin a OpenModelica

Figura 8.16: OMEdit - Vista de resultados


El rbol de componentes y variables del modelo, se despliega en la navegador de
variables (Variables Browser), mostrado en la figura 8.17.
En este aparecen los parmetros de los componentes con su valor, unidades y
descripcin (comentarios de definicin), las variables con su condicin inicial, unidades y descripcin, y la variable independiente del modelo tiempo (time), con su
valor final.
Para mostrar las variables en funcin del tiempo en forma grfica, basta marcar
la casilla a su izquierda, tal como se muestra en la figura 8.16, para la tensin Vc a
travs del capacitor C1.
Se puede mostrar la evolucin (grficos X-t) de varias variables en un mismo
grfico, o en grficos independientes, abriendo una nueva ventana grfica con el
icono New Plot Window. Tambin se puede mostrar un plano de fase (grficos
Y-X) con el icono New Parametric Plot Window, mostrados en la figura 8.18.
Cada grfico tiene una pestaa de seleccin para navegar entre ellos. Adems, es
posible, mostrarlos en un mosaico, en el tamao y disposicin deseada, tal como
se ilistra ms adelante en la figura 8.19. En esta se muestra por separado, la evolucin
de la tensin Vc a travs del capacitor (Plot: 1), la corriente Il por el inductor (Plot:
2) y el plano de fase Il(Vc) (Plot Parametric: 1).
La evolucin en el tiempo de las variables del modelo simulado, est almacena-

8.3. OpenModelica Connection Editor (OMEdit)

133

Figura 8.17: OMEdit Navegador de variables

Figura 8.18: OMEdit Barra de herramientas


de despliegue grfico

da 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 parmetros y volver a simular

La primer vez que se ejecuta la simulacin del modelo, se emplean los parmetros
establecido en el.
Si se desea, el valor de estos se pueden modificar en el navegador de variables
(figura 8.17) y luego realizar la simulacin con estos nuevos parmetros con el icono
Re-simulate de la barra de herramientas (figura 8.18).
Tambin se puede volver a simular el modelo, seleccionando Re-simulate en
el men que se despliega con el botn derecho del apuntador, sobre el nombre del
modelo en el navegador de variables.

8 Introduccin a OpenModelica

134
Figura 8.19: OMEdit Figuras X-t y Y-X

8.3.6

Modelado grfico

En el modelo grfico o diagrama de interconexin, cada icono representa a un componente fsico. Las lneas que conectan los terminales de los elementos, corresponden
a una conexin fsica. Las variables en la interfaz (terminales), describen la interaccin entre los componentes y el comportamiento de cada componente est descrito
por sus ecuaciones.
Se simular ahora el mismo circuito de la figura 8.12, pero mediante un diagrama
de interconexin, utilizando componentes de la biblioteca Modelica.
Para esto se requiere seleccionar, en el rea de trabajo de modelado (Modeling),
el modo vista diagrama de interconexin [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.20.

8.3. OpenModelica Connection Editor (OMEdit)

135

Figura 8.20: OMEdit Componentes para el


modelo

Utilizando las facilidades de edicin grfica, los iconos de los componentes se


pueden mover, alinear y rotar.
Interconexin de los componentes
El modo de conexin se habilita (deshabilita) con el botn en el men Connect/Unconnect Mode.
En el modo de conexin, cuando el cursor del apuntador (ratn) se posiciona sobre el terminal de un componente, este cambia de ser una flecha (apuntar y
seleccionar) a un smbolo + (gua de interconexin). Se debe presionar una vez el
botn izquierdo del apuntador para inicial la conexin, luego llevar el enlace (un
cable elctrico en el circuito simulado), moviendo el puntero hasta el terminal del
componente con que se quiere conectar, y volver a presionar el botn izquierdo para
completar la conexin.
Se puede mostrar una cuadrcula gua de fondo con la opcin Grid Lines del
men y variar la escala (Zoom In (+), Zoom Out (-)), para facilitar la elaboracin
del diagrama. Adems, se pueden cambiar las dimensiones de la hoja de dibujo, localizando el cursor sobre el rea de dibujo y abriendo la ventana Properties de la
hoja (Extent, dimensiones; Grid, cuadrcula), con el botn derecho del apuntador.
Todos los terminales (p y n, en los diagramas elctricos) de cada componente,
deben estar conectados a un terminal de otro componente, segn corresponda a la

136

8 Introduccin a OpenModelica

Figura 8.21: OMEdit


- Interconexin de los
componentes

topologa del sistema que se desea simular. Aunque en el diagrama final, debido a
la distribucin de los elementos y sus conexiones, pudiera parecer que se ha hecho
alguna conexin entre las lineas de interconexin de dos o ms componentes, este es
solo un efecto ptico (una lnea de interconexin oculta a las dems), ya que debe
existir una lnea independiente por cada conexin, tal como se muestra en la figura
8.21.
Interconexiones vlidas entre componentes
Las conexiones, solo se pueden realizar entre los conectores correspondientes a componentes del mismo tipo (con conectores de la misma clase).
Supngase que se han colocado en el diagrama de interconexin componentes
elctricos, mecnicos que se desplazan y trmicos, y que se han realizado las conexiones entre los terminales de los componentes del mismo dominio fsico, tal como
se muestra en la figura 8.22.
Si se realiza una verificacin del estado del modelo hasta ese momento (Check
Model), esta indica que no hay errores.
Se hace ahora una conexin entre el conector de un componente elctrico y el de
un componente mecnico, como se muestra en la figura 8.23. Aunque pareciera que
la conexin es aceptable, porque el diagrama muestra una lnea entre los terminales
interconectados, al realizar una verificacin del estado del modelo, esta indica que
existe una ecuacin connect entre componentes incompatibles. Las variables en los

8.3. OpenModelica Connection Editor (OMEdit)

137

Figura 8.22: OMEdit - Conexiones permitidas entre componentes (elctrico - elctrico, mecnico - mecnico, trmico - trmico)

Figura 8.23: OMEdit - Conexiones no permitidas entre componentes (elctrico - mecnico)

dos terminales conectados son diferentes (variables elctricas tensin y corriente {v,
i}, variables mecnicas fuerza y desplazamiento {f, s}).
Lo mismo sucedera si se trata de realizar una conexin, por ejemplo entre el
terminal de un componente mecnico y el de uno trmico (variables mecnicos fuerza
y desplazamiento{f, s}, variables trmicas flujo de calor y temperatura {Q_flow, T}),
tal como se muestra en la figura 8.24.

138

8 Introduccin a OpenModelica

Figura 8.24: OMEdit - Conexiones no permitidas entre componentes (mecnico trmico)


Parmetros de los componentes
Cada componente utilizado en el diagrama, tiene asociado un men de parmetros,
al que se accede pulsando dos veces el botn izquierdo del apuntador, con este sobre
el icono del componente, o seleccionado el componente con el botn izquierdo del
apuntador y luego desplegando el men de opciones presionado el botn derecho
y seleccionando Parameters. En este, se introduce los valores de los parmetros
correspondientes al componente seleccionado, tal como se muestra en la figura 8.25
para la fuente de tensin stepVoltage1.
El diagrama del circuito simulado del ejemplo, con los parmetros introducidos,
se muestra en la figura 8.26. Es evidente la similitud del diagrama de interconexin
desarrollado con el el circuito elctrico a simular, mostrado en la figura 8.12.
El programa creado en forma automtica por el editor, a partir del diagrama de
interconexin desarrollado (figura 8.26), es:
model C i r c u i t o E l e c t r i c o D i a g r a m a
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . R e s i s t o r resistor1 ( R = 10 )
annotation ( Placement ( visible = true , transformation
( origin = { - 60 ,80 } , extent = { { -10 , - 10 } ,{ 10 ,10 } } ,
rotation = 0 ) ) ) ;
Modelica.Electrical.Analog.Sources.StepVoltage
stepvoltage1 ( V = 10 , startTime = 0 .05 )
annotation ( Placement ( visible = true , transformation
( origin = { - 80 ,60 } , extent = { { -10 , - 10 } ,{ 10 ,10 } } ,

8.3. OpenModelica Connection Editor (OMEdit)


Figura 8.25: OMEdit - Men de
parmetros de un componente

rotation = - 90 ) ) ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . I n d u c t o r inductor1 ( L = 1 )
annotation ( Placement ( visible = true , transformation
( origin = { - 30 ,80 } , extent = { { -10 , - 10 } ,{ 10 ,10 } } ,
rotation = 0 ) ) ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . R e s i s t o r resistor2 ( R = 100 )
annotation ( Placement ( visible = true , transformation
( origin = { - 10 ,60 } , extent = { { -10 , - 10 } ,{ 10 ,10 } } ,
rotation = - 90 ) ) ) ;
Modelica.Electrical.Analog.Basic.Capacitor
capacitor1 ( C = 0 .01 ) annotation ( Placement ( visible = true ,
transformation ( origin = { 10 ,60 } , extent =
{ { -10 , - 10 } ,{ 10 ,10 } } , rotation = - 90 ) ) ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . G r o u n d ground1
annotation ( Placement ( visible = true , transformation
( origin = { - 80 ,30 } , extent = { { -10 , - 10 } ,{ 10 ,10 } } ,
rotation = 0 ) ) ) ;
equation
connect ( capacitor1.n , ground1.p ) annotation ( Line ( points =
{ { 10 ,50 } ,{ 10 ,40 .0587 } ,{ - 80 .1173 ,40 .0587 } ,
{ - 80 .1173 ,40 .0587 } } ) ) ;
connect ( resistor2.n , ground1.p ) annotation ( Line ( points =
{ { - 10 ,50 } ,{ - 10 ,40 .0587 } ,{ - 80 .1173 ,40 .0587 } ,
{ - 80 .1173 ,40 .0587 } } ) ) ;
connect ( inductor1.n , capacitor1.p ) annotation ( Line ( points =
{ { - 20 ,80 } ,{ 10 .081 ,80 } ,{ 10 .081 ,69 .771 } ,{ 10 .081 ,69 .771 } } ) ) ;
connect ( inductor1.n , resistor2.p ) annotation ( Line ( points =

139

140

8 Introduccin a OpenModelica

Figura 8.26: OMEdit - Diagrama de interconexin

{ { - 20 ,80 } ,{ - 10 .081 ,80 } ,{ - 10 .081 ,69 .50579999999999 } ,


{ - 10 .081 ,69 .50579999999999 } } ) ) ;
connect ( stepvoltage1.n , ground1.p ) annotation ( Line ( points =
{ { - 80 ,50 } ,{ - 80 ,40 .0587 } ,{ - 79 .852 ,40 .0587 } ,
{ - 79 .852 ,40 .0587 } } ) ) ;
connect ( resistor1.n , inductor1.p ) annotation ( Line ( points =
{ { - 50 ,80 } ,{ - 39 .5281 ,80 } ,{ - 39 .5281 ,79 .58669999999999 } ,
{ - 39 .5281 ,79 .58669999999999 } } ) ) ;
connect ( stepvoltage1.p , resistor1.p ) annotation ( Line ( points =
{ { - 80 ,70 } ,{ - 80 ,80 .1173 } ,{ - 69 .771 ,80 .1173 } ,
{ - 69 .771 ,80 .1173 } } ) ) ;
annotation ( Icon ( coordinateSystem ( extent = { { - 100 , - 100 } ,
{ 100 ,100 } } , p r e s e r v e A s p e c t R a t i o = true , initialScale =
0 .1 , grid = { 1 ,1 } ) ) , Diagram ( coordinateSystem ( extent =
{ { - 100 , - 100 } ,{ 100 ,100 } } , p r e s e r v e A s p e c t R a t i o = true ,
initialScale = 0 .1 , grid = { 1 ,1 } ) ) ,
experiment ( StartTime = 0 , StopTime = 1 .2 , Tolerance =
1 e - 006 ) ) ;

8.3. OpenModelica Connection Editor (OMEdit)

141

end C i r c u i t o E l e c t r i c o D i a g r a m a ;

Si se eliminan las anotaciones para la creacin del diagrama de interconexin, el


programa anterior se reduce a:
model C i r c u i t o E l e c t r i c o D i a g r a m a
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . R e s i s t o r resistor1 ( R = 10 ) ;
Modelica.Electrical.Analog.Sources.StepVoltage
stepvoltage1 ( V = 10 , startTime = 0 .05 ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . I n d u c t o r inductor1 ( L = 1 ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . R e s i s t o r resistor2 ( R = 100 ) ;
Modelica.Electrical.Analog.Basic.Capacitor
capacitor1 ( C = 0 .01 ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . G r o u n d ground1 ;
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 , StopTime = 1 .2 ,
Tolerance = 1 e - 006 ) ) ;
end C i r c u i t o E l e c t r i c o D i a g r a m a ;

La primera parte del programa, corresponde a la declaracin de los elementos con


el valor de sus parmetros y la segunda, a las ecuaciones de interconexin entre los
terminales de los elementos mediante el uso de la ecuacin connect. En los iconos
de los elementos elctricos 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.26, se
aprecia fcilmente que cada una de las ecuaciones connect, corresponde al cable
elctrico que conecta uno de los terminales de un componente del circuito, con uno
de los terminales de otro, segn lo establece la topologa del circuito.
Las conexiones entre los componentes, especifican las interacciones entre estos. En cada terminal de conexin (conector), residen las variables (pervariables y
transvariables) que describen la interaccin. En los elementos elctricos estas son
corriente y tensin.
Por ejemplo, la ecuacin de conexin
connect ( resistor1.n , inductor1.p ) ;

establece dos ecuaciones en el punto de conexin (nodo) entre el resistor R1 y el capacitor C1 . Una ecuacin establece que las tensiones (variables de potencial) en los dos

142

8 Introduccin a OpenModelica

terminales son iguales (resistor1.n.v=inductor1.p.v) y la otra, que la suma de


corrientes (variables de flujo) en el nodo es cero (resistor1.n.i+inductor1.p.i=0).
Si se hace un verificacin del diagrama de interconeccin (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 nmero de variables y ecuaciones es ahora, sustancialmente mayor, al de las
del modelo desarrollado mediante las ecuaciones de definicin de los elementos y la
topologa del circuito. Esto se debe a que, en los modelos elaborados mediante un
diagrama de interconexin de componentes, por un lado se generan como mnimo
dos ecuaciones por cada conexin 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 tambin 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.
Continuando con el desarrollo de la simulacin, 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 explcita, los estados iniciales.
El valor inicial preestablecido en Modelica para las variables reales es cero. Como en este caso, los estados iniciales son iL = 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 , fixed = true ) )
Modelica.Electrical.Analog.Basic.Capacitor
capacitor1 ( C = 0 .01 , v ( start = 0 , fixed = true ) )

Al final de la corrida de simulacin el editor pasa al modo de resultados, para


seleccionar las variables cuya evolucin se desea observar.
Cuando la simulacin se realiza interconectando componentes de la biblioteca
Modelica, se tiene acceso a las variables de potencial (transvariables v en los circuitos
elctricos), en cada uno de los conectores (p y n) para cada uno de los componentes,
a la variable de flujo (pervariable i en los circuitos elctricos) fluyendo del terminal p
al n, as como a la diferencia entre las variables de potencial entre ambos terminales
(p.v - n.v).

8.3. OpenModelica Connection Editor (OMEdit)

143

Figura 8.27: OMEdit - Curvas de respuesta y navegador de variables

Como se muestra en la figura 8.27, para el circuito elctrico del ejemplo, se ha


deseado comparar en un grfico (Plot:1) las diferencias de tensin a travs de la fuente (stepVoltage1.v), el capacitor (capacitor1.v), el inductor (inductor1.v) y
el resistor 1 (resitor1.v); y en otro grfico (Plot:2) las corrientes por el capacitor
(capacitor1.i), el inductor (inductor1.i) y el resistor 2 (resistor2.i).
Los grficos 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 grfico para ampliarlo (Zoom). Adems,
cuando el cursor del apuntador est sobre el grfico, indica las coordenadas (X, Y) de
su posicin, pudindose emplear para determinar los valores de un punto especfico
sobre una curva, como se muestra en la figura 8.28. La vista completa del grfico se
restablece con Fit in View.
La cuadrcula de fondo de la figura, se puede incluir pulsando los botones del
men Gid o Detailed Grid, o eliminar pulsando el botn No Grid.
El color (Color), tipo de trazo (Pattern) y grosor (Thickness) usado en
las curvas de respuesta, as como las leyendas de los ejes (Vertical Axis Title,
Horizontal Axis Title), ttulo (Plot Title) y otras caracterticas de las figuras, se
pueden seleccionar con la opcin del men Setup, mostrado en la figura 8.5 .

8 Introduccin a OpenModelica

144
Figura 8.28: OMEdit Ampliacin del grfico
y cursor de medicin

8.3.7

Exportar e importar modelos Modelica

El OMEdit permite modelar con Modelica un sistema dinmico, simularlo y ver los
resultados.
Cada vez que el modelo Modelica es simulado con OMEdit, este es extendido,
compilado y luego resuelto numricamente.
Como se indic en la seccin 8.3.4, en cada simulacin se crea un archivo con
los resultados en formato .mat, el cual puede ser utilizado por otros programas para
su despliegue grfico.
El asunto pendiente es, cmo hacer para simular el modelo desarrollado en OpenModelica con otro programa de simulacin y cmo ejecutar en OpenModelica un
modelo elaborado con otra herramienta.
La interfaz estndar FMI 1.0 (Funtional Mockup Interface)3 desarrollada en el
proyecto ITEA 2 - 07006 (MODELISAR consortium, 2010), permite intercambiar
(importar, exportar) modelos de simulacin extendidos ente aplicaciones diferentes.
Un componente que se adhiere a esta interfaz, se denomina FMU (Funtional
Mockup Unit). Un FMU es un archivo compactado (en formato zip) con extensin
.fmu, que contiene el archivo de descripcin (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.
3 https://www.fmi-standard.org/start

8.4. OpenModelica Notebook Editor (OMNotebook)

145

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 un FMU (NombreModelo.fmu). Un mensaje del compilador indicar la direccin del archivo generado.
El archivo .fmu, puede ser importado por otra aplicacin, por ejemplo el PySimulator (ver el captulo 13), y como ya est compilado, solo requiere ser simulado.
Esto hace que el anlisis de los resultados sea mucho ms expedito.
Finalmente, el OMEdit se cierra desde el men con [File][Quit], o con el botn
[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 grficos OMEdit,
provee una interfaz interactiva para realizar el modelado, la simulacin y el despliegue de las variables con Modelica, de los sistemas dinmicos heterogneos 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 parmetros, condiciones de uso y otros
aspectos, como gua para un posible otro usuario. Sin embargo, esto normalmente
no es suficiente, especialmente si el modelo se ha desarrollado con fines didcticos,
como por ejemplo, para ilustrar las caractersticas de algn proceso o sistema.
Por otra parte, no es prctico incluir como comentarios en el modelo, explicaciones extensas sobre, por ejemplo, los resultados de la simulacin o el anlisis de
casos. Esto requiere de un texto explicativo que acompae al programa.
Si bien es posible utilizar un documento explicativo anexo al modelo, es ms
prctico e ilustrativo, si la descripcin, el modelo y los resultados, estn todos contenidos en un solo documento interactivo.
Esta ha sido la motivacin para el desarrollo del cuaderno DrModelica, una herramienta didctica para la enseanza del lenguaje Modelica (Lengquist-Sandelin et al.,
2003).
Los cuadernos DrModelica y DrControl (Torabzadeh-Tari et al., 2011), este ltimo desarrollado para la enseanza del control automtico, han sido elaborados utilizando el editor de cuadernos electrnicos interactivos de OpenModelica (OMNotebook) (Fernstrm 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.

146

8 Introduccin a OpenModelica

Figura 8.29: OMNotebook - Ventana de


edicin

Para crear un cuaderno electrnico interactivo nuevo, se selecciona la opcin


[New] del men [File], abrindose la ventana de edicin mostrada en la figura 8.29.
Esta incluye los mens 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, Quit).
Los cuadernos electrnicos interactivos, permiten integrar en el mismo documento, texto y programas Modelica.
Al igual que los libros, reportes y otros documentos, los cuadernos electrnicos
interactivos pueden incluir: ttulo, autor, secciones y subsecciones, prrafos de texto
y otros componentes.
En el contexto de los cuadernos desarrollados con el OMNotebook, estos componentes son llamados celdas.
Las celdas de texto se insertan con la opcin 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 opcin del men [Cell][Add Inputcell]. Estas celdas pueden contener,
por ejemplo, un modelo, o instrucciones de simulacin o despliegue grfico, tal como
si esta fuera la venta de entrada de instrucciones del OMShell.
La creacin de un cuaderno electrnico interactivo, se cubrir con ms detalle en
el captulo 10.

8.5. Optimizacin con OpenModelica

147

8.5 Optimizacin con OpenModelica


Los problemas de optimizacin dinmica con OpenModelica, involucran el desarrollo del modelo con Modelica y el del problema de optimizacin con la extensin
Optimica de Modelica (kesson, 2008).
Existen tres formas de realizar las optimizaciones con OpenModelica:
1. Optimizacin dinmica con OpenModelica y IpOpt.
2. Optimizacin dinmica con OpenModelica, exportando el problema a CasADi.
3. Optimizacin esttica con OpenModelica y OMOptim, variando el valor de los
parmetros.
IpOpt emplea el algoritmo IPOPT (Interior Point OPTimizer)4 (Wtcher, 2002,
2009) para resolver el problema general de optimizacin no lineal con restricciones,
utilizando un mtodo de bsqueda de punto interior (Forsgren et al., 2002).

Optimizacin del esfuerzo de control


Como ejemplo del uso de OpenModelica para resolver un problema de control ptimo, considrese el siguiente problema:
Se desea transferir el sistema (integrador doble)
dx1 (t)
= x2 (t),
dt
dx2 (t)
= u(t),
dt

(8.3)
(8.4)

desde el estado inicial x0 = (2, 2) hasta el origen (0, 0), con el esfuerzo de control
u(t) mnimo, sujeto a la restriccin |u(t)| 1.
La funcional de costo a optimizar (minimizar), es entonces
J(x, u) =

Z 
0


x12 (t) + x22 (t) + u2 (t) dt.

(8.5)

Esta implica: 1. hacer tender a cero tanto a x1 como a x2 (llevarlas al origen), y 2.


minimizar el esfuerzo de control u(t).
El modelo del sistema es
4 https://projects.coin-or.org/Ipopt

148

8 Introduccin a OpenModelica

model IntegradorDoble
// Modelo - integrador doble
Real x1 ( start = -2 , fixed = true ) ;
Real x2 ( start = 2 , fixed = true ) ;
input Real u ;
equation
der ( x1 ) = x2 ;
der ( x2 ) = u ;
end IntegradorDoble ;

El problema de optimizacin, se plantea como una extensin 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 optimizacin ser siempre, minimizar el valor final de la
funcional de costo, si esta es una integral, esta se establece en el problema como una
ecuacin diferencial (definiendo la derivada de la funcional de costo).
El programa Modelica del problema de optimizacin es
optimization ContOptiUminom ( objective = cost )
// Optimizaci
o n - control
o ptimo de esfuerzo de control m
nimo
extends IntegradorDoble ;
Real cost ( start = 0 , fixed = true ) ;
equation
der ( cost ) = x1 ^2 + x2 ^2 + u ^2;
constraint
abs ( u ) <= 1;
end ContOptiUminom ;

En OpenModelica, los problemas de optimizacin Optimica, se deben guardar


en archivos con extensin .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 electrnico con el OMNotebook.
En el OMShell, se pueden cargar los modelos Modelica y Optimica, utilizando
directamente la instruccin loadFile(''NombreModelo.mo''), si se ha cambiado el
directorio de trabajo, al en que se encuentran los archivos a utilizar, o mediante la
opcin del men [File][Open]
La secuencia de instrucciones en el OMShell, para la solucin del problema de
optimizacin planteado, se listan en la figura 8.30.
Estas incluyen seleccionar la opcin para utilizar el compilador de Optimica,
cargar el archivo del modelo del sistema y cargar el archivo con la definicin del
problema de optimizacin.
La instruccin optimize(NombreProblemaOptimizacion), realiza de optimizacin.

8.5. Optimizacin con OpenModelica

Figura 8.30: OMShell - Solucin del problema de optimizacin

149

150

8 Introduccin a OpenModelica

Figura 8.31: OpenModelica - Control ptimo, esfuerzo de control mnimo


Luego, utilizando las instrucciones plotParametric y plot, se despliegan las
curvas de las variables como se muestra en la figura 8.31 (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 cost(t).
La caractersticas de las figuras (color y grosor de las lneas, leyendas), se han
editado en la ventana desplegada con la opcin Setup, del men de cada una de
ellas.

9
Modelado y simulacion con OpenModelica
En los captulos anteriores, se han presentado las caractersticas principales del lenguaje Modelica y se ha introducido el uso del entorno OpenModelica. Estos, constituyen una de las formas ms adecuadas para el modelado y simulacin de los sistemas
dinmicos, especialmente cuando estos son heterogneos (que incorporan caractersticas de diferentes dominios fsicos).

9.1 Introduccin
Utilizando diferentes ejemplos, por lo general simples, se presentar el modelado
y la simulacin 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 ecuacin de conexin; o directamente mediante un modelado grfico,
utilizando diagramas de interconexin.
El modelado de los diferentes sistemas, se enfrentar entonces de tres formas
diferentes. Una, determinando las ecuaciones que describen su comportamiento dinmico. Aunque este pareciera ser el procedimiento tradicional, se har uso de las
capacidades del lenguaje Modelica, evitando una programacin en diagrama de bloques. Excepto para aquellos casos en que en forma deliberada, se desee ilustrar el
uso de los bloques entrada salida disponibles en la biblioteca Modelica.
Otra forma, ser mediante el uso de los componentes disponibles en las diferentes bibliotecas. Utilizando ecuaciones de conexin entre sus terminales (ecuaciones
connect), determinadas a partir de la topologa del sistema.
Y la tercera, y a la cual se le dar mayor nfasis, ser el modelado mediante
diagramas grficos, empleando el OMEdit.
Para la simulacin, se establecern los parmetros de los componentes, la mayora de las veces arbitrarios, y se mostrarn algunas de las posibles curvas de comportamiento de las variables del sistema, sin pretender hacer una anlisis exhaustivo del
mismo.
151

9 Modelado y simulacin con OpenModelica

152
Figura 9.1: Circuito RLC
serie

9.2 Sistemas elctricos


Como se vio en la seccin 5.2.4, la biblioteca Modelica incorpora una variedad importante de componentes, para el modelado de los sistemas elctricos y electrnicos.
Adems, las bibliotecas PowerFlow, PowerSystems y Spot, contienen componentes
para el modelado de sistemas de transmisin de energa elctrica.
Mediante ejemplos sencillos, se ilustrar el uso de algunos de estos.

9.2.1

Circuito RLC serie

Como ejemplo de un sistema elctrico simple, considrese el circuito RLC en serie


mostrado en la figura 9.1.
Los estados de este circuito, son la diferencia de tensin Vc (t) a travs del capacitor y la corriente iL (t) por el inductor.
Por inspeccin, se pueden determinar las ecuaciones de estado este circuito, dadas por las siguientes expresiones:
dVc (t)
= iL (t),
(9.1)
dt
diL (t)
L
= V f (t) R iL (t) Vc (t).
(9.2)
dt
El valor de los parmetros de los elementos del circuito para la simulacin del
ejemplo son: R = 60 , L = 1,0 H y C = 0,0001 F. La tensin de la fuente V f = 10
V y se aplicar en el instante t = 0,01 s. Los estados iniciales son iL (0) = 0 A y
Vc (0) = 0 V.
C

Simulacin empleando las ecuaciones constitutivas de los elementos


Utilizando (9.1) y (9.2) y los valores de los parmetros establecidos, el programa Modelica para determinar la tensin a travs del capacitor y la corriente por el inductor

9.2. Sistemas elctricos

153

Figura 9.2: Tensin en el capacitor y navegador de variables


es:
model SisElec01_e
// Circuito el
e ctrico RLC serie
// Modelo con base en las ecuaciones del circuito
import Modelica.SIunits. * ;
parameter Resistance R = 60 .0 ;
parameter Capacitance C = 0 .0001 ;
parameter Inductance L = 1 .0 ;
Voltage Vf " fuente " ;
Voltage Vc ( start = 0 , fixed = true ) " tensi
o n capacitor " ;
Current Il ( start = 0 , fixed = true ) " corriente inductor " ;
equation
Vf = if time >= 0 .01 then 10 else 0 .0 ;
C * der ( Vc ) = Il ;
L * der ( Il ) = Vf - R * Il - Vc ;
annotation ( experiment ( StartTime = 0 .0 , StopTime = 0 .2 ) ) ;
end SisElec01_e ;

En la figura 9.2 se muestra la curva de respuesta de la tensin a travs del capacitor (Vc).
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), estn disponibles
para hacer las declaraciones de los parmetros y las variables.

154

9 Modelado y simulacin con OpenModelica

De esta manera por ejemplo, R y Vc no son simplemente un parmetro y una


variable reales, tal como se declararon en el programa introductorio presentado en la
seccin 4.4. Estos tienen ahora un significado fsico.
Mediante las lneas del programa
import Modelica.SIunits. * ;
parameter Resistance R = 60 .0 ;
...
Voltage Vc ( start = 0 , fixed = true ) " tensi
o n capacitor " ;

se indica que el parmetro 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 el navegador de variables mostrado en la figura 9.2, todos los
parmetros y las variables aparecen listados con su valor (condicin inicial para las
variables) y unidades correspondientes. Adems, tambin se ve como los comentarios de definicin empleados en la seccin de declaraciones, son utilizados como las
descripciones mostradas en el navegador de variables.
La declaracin del significado fsico de los parmetros y variables, tiene una importancia adicional. Esto permite verificar la consistencia fsica del modelo definido.
Esto es, que todos los trminos de una ecuacin tengan las mismas unidades.
El programa de simulacin en Modelica del circuito RLC serie, tambin se puede
haber escrito del a siguiente manera:
model SisElec01_einc
import Modelica.SIunits. * ;
parameter Resistance R = 60 .0 ;
parameter Capacitance C = 0 .0001 ;
parameter Inductance L = 1 .0 ;
Voltage Vf , Vr , Vl ;
Voltage Vc ( start = 0 , fixed = true ) ;
Current Il ( start = 0 , fixed = true ) ;
equation
Vf = if time >= 0 .01 then 10 else 0 .0 ;
Vr = R * Il ;
Vl = L * der ( Il ) ;
C * der ( Vc ) = Il ;
Vc = Vf - Vr - Vl ;
end SisElec01_einc ;

en el cual todas las ecuaciones del modelo son consistentes. Adems, el modelo tiene
cinco incgnitas y cinco ecuaciones.
Por el contrario, si la ltima ecuacin se hubiera escrito como

9.2. Sistemas elctricos

155

...
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. Tambin advertir que las condiciones
iniciales del modelo estn sobre determinadas.
Warning: The initial conditions are over specified.
Use +d=initialization for more information.
Warning: It was not possible 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 ecuacin condicional if, para establecer los instantes en que la tensin de la fuente de alimentacin cambia (eventos de
tiempo),
...
Vf = if time >= 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.
Seccin de ecuaciones iniciales
En los modelos anteriores, las condiciones iniciales de los estados se incluyeron como parte de su definicin.
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 simulacin del modelo, se pueden definir parmetros con el valor de las
condiciones iniciales, e incluir la seccin initial equation para asignarlos a los
estados. Por ejemplo:
model SisElce01_eic
...
parameter Voltage Vc_ic = 0;
parameter Current Il_ic = 0;
...
Voltage Vc " tensi
o n capacitor " ;
Current Il " corriente inductor " ;
initial equation

156

9 Modelado y simulacin con OpenModelica

Vc = Vc_ic ;
Il = Il_ic ;
equation
...
end SisElce01_eic ;

Extensin de los modelos


Supngase que el modelo del circuito elctrico del ejemplo, se ha escrito como
model SisElec01_enic
import Modelica.SIunits. * ;
parameter Resistance R = 60 .0 ;
parameter Capacitance C = 0 .0001 ;
parameter Inductance L = 1 .0 ;
Voltage Vf " fuente " ;
Voltage Vc ( start = 0 ) ;
Current Il ( start = 0 ) ;
equation
Vf = if time >= 0 .01 then 10 else 0 .0 ;
C * der ( Vc ) = Il ;
L * der ( Il ) = Vf - R * Il - Vc ;
annotation ( experiment ( StartTime = 0 , StopTime = 0 .2 ,
Tolerance = 1 e -06 , Interval = 0 .0004 ) ) ;
end 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 extendindolo (extends) de la siguiente manera
model SisElec01_ext
extends SisElec01_enic ;
initial equation
Vc = 5;
Il = -0 .02 ;
end SisElec01_ext ;

El nuevo modelo permite hacer uso del modelo SisElec01_enic.mo, modificando solamente el valor de las condiciones iniciales. Como estas estn indicadas
dentro de la seccin initial equation, estas se toman como valores fijos.
La instruccin extends, inserta en el nuevo modelo el cdigo del modelo que
se extiende (se ampla con caractersticas nuevas o se modifican algunas de las ya
definidas).

9.2. Sistemas elctricos

157

Figura 9.3: Respuestas con las nuevas condiciones iniciales


La tensin a travs 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 fcilmente tambin con parmetros diferentes, extendindolo con modificaciones, como por ejemplo
model SisElec01_np
extends SisElec01_eic ( R = 50 , C = 0 .0002 , L = 1 .5 ) ;
annotation ( experiment ( StartTime = 0 , StopTime = 0 .4 ,
Tolerance = 1 e -06 , Interval = 0 .0008 ) ) ;
end SisElec01_np ;

En este caso se extendi el modelo SisElec01_eic.mo que tiene definidas como


parmetros y fijas, las condiciones iniciales. Adems, se debi ampliar el tiempo final
de la simulacin, debido al nuevo comportamiento del circuito.
En la figura 9.4, se pueden comparar las respuestas obtenidas con los dos conjuntos de parmetros.
En el navegador de variables es posible modificar los valores de los parmetros y
de las condiciones iniciales, si estas se han establecido tambin como parmetros, y
volver a realizar la simulacin, (RE-simulate) sin necesidad de volver a compilar
el modelo. Sin embargo, el tiempo de la simulacin, no se puede modificar de esta
manera.
Simulacin utilizando la ecuacin connect
En la figura 9.5 se muestra nuevamente el circuito RLC serie, en el cual se han identificado los terminales p y n de los elementos que lo forman.

9 Modelado y simulacin con OpenModelica

158

Figura 9.4: Respuestas con dos conjuntos de parmetros diferentes


Figura 9.5: Terminales de
interconexin, de los elementos del circuito RLC
serie

Se har uso ahora de los componentes elctricos 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 ecuacin connect para realizar la conexin
entre los componentes, el programa de simulacin de este circuito sera el siguiente.
model SisElec01_c
// Circuito el
e ctrico RLC serie
// Modelo con base en la interconexi
o n de sus elementos
import M o d e l i c a . E l e c t r i c a l . A n a l o g . * ;
Basic.Resistor R1 ( R = 60 .0 ) ;
Basic.Capacitor C1 ( C = 0 .0001 ) ;

9.2. Sistemas elctricos

159

Basic.Inductor L1 ( L = 1 .0 ) ;
Basic.Ground g ;
S o u r c e s . S t e p V o l t a g e Vf ( V = 10 , startTime = 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 , StopTime = 0 .2 ) ) ;
end SisElec01_c ;

En la primera parte del programa, se definen los elementos utilizados junto con
sus parmetros: un resistor (R1), un capacitor (C1), un inductor (L1), un punto de
referencia o tierra (g) y una fuente de tensin (Vf).
En la segunda, utilizando una seccin de initial equation, se definen las
ecuaciones que establecen las condiciones iniciales.
En la tercera parte, se hace uso de la ecuacin de conexin connect, para definir
la topologa del circuito, segn se muestra en la figura 9.5.

Modelado grfico
Para modelar el circuito RLC serie del ejemplo, se utilizan los componentes bsicos de la biblioteca Modelica.Electrical.Analog.Basic (Ground, Resistor,
Capacitor, Inductor), y la fuente de tensin Modelica.Electrical.Analog.
Sources.StepVoltage.
Empleando el editor de conexiones de OpenModelica (OMEdit), se puede elaborar la programacin grfica del circuito simulado, tal como se ilustra en la figura
9.6.
El valor de los parmetros de los componentes, se especifican abriendo la ventana de parmetros del componente de cada uno de ellos, presionado dos veces el
botn 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 fcilmente, que las respuestas obtenidas con los tres programas anteriores, son idnticas.

160

Figura 9.6: Diagrama de simulacin del


circuito RLC serie
(SisElec01_or.mo)

Figura 9.7: Ventana de parmetros del Capacitor

9 Modelado y simulacin con OpenModelica

9.2. Sistemas elctricos

161

Figura 9.8: Corriente


por el inductor

Procesamiento de las variables


En los programas Modelica elaborados mediante el uso de diagramas de interconexin, se tiene acceso a todas las variables en los terminales (conectores) de los componentes para su despliegue grfico, seleccionndolas en el navegador de variables.
Sin embargo, si se desea utilizar alguna de estas variables para realizar, por ejemplo
algn tipo de clculo, esta debe medirse.
En la bliblioteca Modelica.Electrical.Analog.Sensors, se cuenta con medidores de corriente, tensin y potencia.
Para calcular la energa almacenada en el capacitor, se ha adicionado al circuito un vatmetro (Modelica.Electrical.Analog.Sensors.PowerSensor), como
se muestra en la figura 9.9. El vatmetro tiene un par de terminales para medir la corriente y otro par para medir la tensin.
La potencia es integrada (Modelica.Blocks.Continouos.Integrator) para
calcular la energa almacenada.
El vatmetro incorpora un voltmetro y un ampermetro. Utilizando estos, en la
figura 9.10 se muestra la variacin de la tensin (Plot: 1), la corriente (Plot: 2) y la
potencia (Plot: 3) en el capacitor. La energa almacenada en el capacitor (Plot: 4) es
la salida del integrador. Adems, empleando el cursor de medicin sobre el grfico
de la energa, se determin que la energa total almacenado es Etotal = 0,0050 J.
La energa almacenada en el capacitor (valor final de la integral de la potencia
entrado al capacitor), tambin se puede determinar incluyendo en el diagrama un
indicador de variables reales Modelica.Blocks.Interaction.Show.RealValue
(realvalue1) y conectndolo a la salida del integrador con la instruccin

162

9 Modelado y simulacin con OpenModelica

Figura 9.9: Clculo de la energa almacenada en el capacitor

Figura 9.10: Variables en el capacitor

9.2. Sistemas elctricos

163

Figura 9.11: Circuito RLC paralelo

...
connect ( energia_capacitor.y , r e a l v a l u e 1 . n u m b e r P o r t ) ;
...

El valor determinado es Etotaln = 0,004982 J.


El modelo grfico desarrollado (SisElec01_o.mo), tambin se puede abrir y
simular utilizando el OMShell. Al igual que el OMEdit, este guardar las variables
resultado de la simulacin, 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 inters.

9.2.2

Circuito RLC paralelo

Considrese ahora el circuito RLC en paralelo, mostrado en la figura 9.11.


Los estados en este circuito son la tensin Vc (t) a travs del capacitor y la corriente iL (t) por el inductor. Las ecuaciones de estado de este circuito son entonces
dVc (t)
1
= I f (t) Vc (t) iL (t),
dt
R
diL (t)
= Vc (t).
L
dt

(9.3)
(9.4)

En forma similar al caso del circuito RLC en serie, se har la simulacin de


este circuito utilizando dos procedimientos diferentes. En el primero, empleando las
ecuaciones del circuito para escribir directamente el modelo y despus, utilizando los
componentes definidos en la biblioteca Modelica.
Los parmetros 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), iL (0) = 0 A y Vc (0) = 0 V.

9 Modelado y simulacin con OpenModelica

164

Simulacin empleando las ecuaciones constitutivas de los elementos


Utilizando (9.3) y (9.4) y los valores de los parmetros establecidos, el programa Medelica para determinar la tensin a travs del capacitor y la corriente por el inductor
es:
model SisElec02_e
// Circuito el
e ctrico RLC paralelo
// Modelo con base en las ecuaciones del circuito
import Modelica.SIunits. * ;
parameter Resistance R = 200 .0 ;
parameter Capacitance C = 0 .0001 ;
parameter Inductance L = 1 .0 ;
Current If " fuente " ;
Voltage Vc ( start = 0 , fixed = true ) " tensi
o n capacitor " ;
Current Il ( start = 0 , fixed = true ) " corriente inductor " ;
equation
If = if time >= 0 .02 then 2 else 0 .0 ;
C * der ( Vc ) = If - Vc / R - Il ;
L * der ( Il ) = Vc ;
annotation ( experiment ( StartTime = 0 .0 , StopTime = 0 .30 ) ) ;
end SisElec02_e ;

Modelado grfico
El programa de simulacin elaborado con el OMEdit (SisElec02_o.mo), se muestra en la figura 9.12. En este, se ha incluido un ampermetro y un voltmetro, 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 ampermetro
(azul) con el segundo. Tal como debera ser, las dos curvas son idnticas.
Ntese 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 elctrica

En los ejemplos de las secciones 9.2.1 y 9.2.2 anteriores, se ha hecho uso de resistores elctricos ideales, con una resistencia constante. Sin embargo, el componente
Resistor de la biblioteca Modelica.Electrical.Analog.Basic, permite tomar
en consideracin el efecto de la temperatura sobre el valor de su resistencia.

9.2. Sistemas elctricos

Figura 9.12: Diagrama de simulacin del circuito RLC paralelo

Figura 9.13: Corriente por el inductor

165

9 Modelado y simulacin con OpenModelica

166

Figura 9.14: Ventana de parmetros del componente Resistor


elctrico
La resistencia del componente est dada por la relacin



R = Rre f 1 + Thp Tre f ,

(9.5)

donde:

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 parmetros del resistor se muestra en la figura 9.14.
Tambin est disponible el componente HeatingResistor, cuya resistencia depende de la temperatura del puerto por el cual disipa calor al medio (ver el ejemplo
de la seccin 9.6.2).

9.2.4

Rectificador de onda completa

En la figura 9.15 se muestra el diagrama de simulacin, de un rectificador elctrico


de onda completa, que utiliza cuatro diodos ideales.

9.2. Sistemas elctricos

167

Figura 9.15: Rectificador de onda completa


Este incluye los siguientes componentes:
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.IdealTransformer
Modelica.Electrical.Analog.Sources.SineVoltage
El modelo del circuito del rectificador es un modelo hbrido, ya que mezcla componentes continuos con elementos discretos. El diodo es un componente discreto, ya
que si conduce o no, depende de que se cumpla una condicin.
Si el diodo no conduce (est off), no fluye corriente por el y la tensin a travs
suyo es negativa. Si el diodo conduce (est on), la corriente fluye y la cada de
tensin a travs de el es cero.
El diodo ideal es implementado con el siguiente cdigo (Modelica Association,
2013):
model IdealDiode " Ideal diode "
extends M o d e l i c a . E l e c t r i c a l . A n a l o g . I n t e r f a c e s . O n e P o r t ;
parameter M o d e l i c a . S I u n i t s . R e s i s t a n c e Ron ( final min = 0 ) =
1 e - 005 " Forward state - on differential resistance ( closed
diode resistance ) " ;
parameter M o d e l i c a . S I u n i t s . C o n d u c t a n c e Goff ( final min = 0 ) =
1 e - 005 " Backward state - off conductance ( opened diode
conductance ) " ;

168

9 Modelado y simulacin con OpenModelica

Figura 9.16: Ventana de


parmetros del componente
SineVoltage

parameter M o d e l i c a . S I u n i t s . V o l t a g e Vknee ( final min = 0 ) = 0


" Forward threshold voltage " ;
extends M o d e l i c a . E l e c t r i c a l . A n a l o g . I n t e r f a c e s .
ConditionalHeatPort;
Boolean off ( start = true ) " Switching state " ;
protected
Real s ( start = 0 , final unit = " 1 " ) " Auxiliary variable for
actual position on the ideal diode characteristic " ;
// s = 0 : knee point
// s < 0 : below knee point , diode conducting
// s > 0 : above knee point , diode locking
constant M o d e l i c a . S I u n i t s . V o l t a g e unitVoltage = 1
annotation ( HideResult = true ) ;
constant M o d e l i c a . S I u n i t s . C u r r e n t unitCurrent = 1
annotation ( HideResult = true ) ;
equation
off = s < 0;
v = s * unitCurrent * ( if off then 1 else Ron ) + Vknee ;
i = s * unitVoltage * ( if off then Goff else 1 ) + Goff * Vknee ;
LossPower = v * i ;
...
end IdealDiode ;

La fuente de alimentacin es de 110 V, 60 Hz, la relacin de transformacin del


transformador es 13:35, la capacitancia del filtro C = 0,001F y la carga es resistiva,
con una resistencia R = 100.
La ventana de parmetros de la fuente de alimentacin se muestra en la figura
9.16.
Las seales de entrada y salida del rectificador se muestran en la figura 9.17. El
valor medio de la tensin en la carga es de 11,55 V.

9.3. Sistemas mecnicos con elementos que se desplazan

169

Figura 9.17: Tensiones


en el rectificador de onda
completa

9.3 Sistemas mecnicos con elementos que se desplazan


En la seccin 5.2.7 se describieron algunos de los componentes incluidos en la biblioteca Modelica, para modelar sistemas mecnicos con elementos que se desplazan en
una direccin sobre un plano, que giran sobre su eje, o que son de tres dimensiones.
Los sistemas mecnicos cuyos elementos se desplazan, se modelan con los componentes de la biblioteca Modelica.Mechanics.Traslational.

9.3.1

Sistema con masa, resorte y amortiguador

Considrese por ejemplo, el sistema mecnico con una masa, un resorte y un amortiguador, mostrado en la figura 9.18, 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
dX(t)
,
V (t) =
dt
dX(t)
,
Fb (t) = b
dt
Fk (t) = k X(t).

(9.6)
(9.7)
(9.8)
(9.9)

Los parmetros del sistema para el ejemplo son: m = 36 kg, k = 1 N m1 y b = 1


N s m1 . La fuerza aplicada es Fi = 5 N para 2 t 30s y Fi = 0 N para todo otro
instante. Las condiciones iniciales son X(0) = 0 m y V (0) = 0 m s1 .

170

9 Modelado y simulacin con OpenModelica

Figura 9.18: Sistema mecnico con


elementos que se desplazan

Simulacin empleando las ecuaciones constitutivas de los elementos


Utilizando (9.6) a (9.9) y los valores de los parmetros establecidos, el programa
Modelica para determinar la posicin y la velocidad de la masa es:
model SisMec01_ext " Sistema mec
a nico masa resorte amortiguador "
// Modelado con base en las relaciones constitutivas
import Modelica.SIunits. * ;
parameter Mass m = 2 " masa " ;
parameter Real k = 1 " constante resorte " ;
parameter Real b = 1 " coef. amortiguador " ;
Force fuerzaAplicada " fuerza aplicada " ;
Force fuerzaResorte , fuerzaAmortiguador ;
Position posicion ( start = 0 , fixed = true ) " posici
o n masa " ;
Velocity velocidad ( start = 0 , fixed = true ) " velocidad masa " ;
equation
m * der ( velocidad ) = fuerzaAplicada - fuerzaAmortiguador
- fuerzaResorte ;
velocidad = der ( posicion ) ;
fuerzaAplicada = if time >= 2 and time <= 30 then 5 else 0;
fuerzaAmortiguador = b * velocidad ;
fuerzaResorte = k * posicion ;
annotation ( experiment ( StartTime = 0 .0 , StopTime = 60 .0 ,
Tolerance = 1 e - 006 ) ) ;
end SisMec01_ext ;

En la figura 9.19 se muestra el comportamiento del sistema mecnico (posicin


y velocidad de la maza, y la fuerza aplicada).

9.3. Sistemas mecnicos con elementos que se desplazan

171

Figura 9.19: Posicin y velocidad de la masa, y la fuerza aplicada


Modelado grfico
El programa de simulacin elaborado con el OMEdit para modelar y simular el
sistema mecnico de la figura 9.18 (SisMec01_o.mo), se muestra en la figura 9.20.
En este se han utilizado los componentes mecnicos Fixed, Mass, Spring, Damper
contenidos en la biblioteca Modelica.Mechanics.Traslational.Components,
la fuerza tipo escaln Modelica.Mechanics.Traslational.Sources.ForceStep
y el medidor Modelica.Mechanics.Traslational.Sensors.RelSpeedSensor.
En la figura 9.21 se muestran las curvas de posicin y velocidad de la masa, para
0 t 30 s, tomadas de un punto de conexin (flange_b) del medidor de velocidad.

9.3.2

Sistema mecnico libre

En este ejemplo, el conjunto mecnico de la figura 9.22, est compuesto por una
masa cilndrica, 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 friccin por el piso (se supone que la masa de la placa es despreciable). La masa
cilndrica junto con el amortiguador, se encuentran en la parte interna de un resorte,
cuyos extremos estn sujetos uno a la pared y el otro a la placa.
La longitud de la masa cilndrica es Lm . La longitud del amortiguador Lb (t) puede
variar desde Lbmin hasta Lbmax = 2Lmin cuando est extendido. Por lo tanto la longi-

172

9 Modelado y simulacin con OpenModelica

Figura 9.20: Diagrama de simulacin del sistema mecnico


tud del resorte es Lk (t) = Lm + Lb (t). Cuando no est sometido a ninguna fuerza, el
resorte tiene una longitud Lko .
El diagrama para la simulacin de este conjunto con Modelica, se muestra en la
figura 9.23.
En este se han empleado los componentes Mass, Spring, Damper y Fixed, de
la biblioteca Modelica.Mechanics.Translational.Components.
Los parmetros del componente Mass (masa), son su masa m en kg y su longitud
L en m. Por su parte los parmetros del componente Spring (resorte), son su constante k (c) en N m1 y su longitud sin estiramiento (s_real0). El nico parmetro del
componente Damper (amortiguador), es su constante de amortiguamiento b (d) en
N s m1 .
Para el ejemplo se utilizarn los siguientes parmetros: masa (m = 20 kg, L =
20 cm), resorte (c = 10 N m1 , s_real0 = 50 cm), amortiguador (d = 10 N s m1 ).
El conjunto se encuentra inicialmente en reposo.

9.3. Sistemas mecnicos con elementos que se desplazan

Figura 9.21: Posicin y velocidad de la masa


Figura 9.22: Conjunto mecnico

Figura 9.23: Diagrama de interconexin del conjunto mecnico

173

174

9 Modelado y simulacin con OpenModelica

Figura 9.24: Diagrama de interconexin del conjunto mecnico

En la figura 9.24, se muestra el diagrama esquemtico de este sistema con la


indicacin de las distancias, respecto a la pared de referencia, de los extremos de los
componentes y del centro de masa de la masa cilndrica.
Primero se arma el conjunto, con el amortiguador con la longitud ms corta entre sus extremos, indicando flange_b.s(start =0.2, fixed =true) como una
condicin inicial del modelo.
El comportamiento del conjunto mecnico, a partir de estas condiciones, se muestra en la figura 9.25.
Como se puede ver en esta figura, la solucin del problema de valor inicial determin que el centro de masa (c.m.) de la masa cilndrica, 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 compresin 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 mxima). Para esto, basta cambiar la posicin inicial del extremo del
amortiguador conectado a la masa flange_b.s(start =0.4, fixed =true).
Como se observa en la figura 9.26, el centro de la masa cilndrica, 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 fcilmente, que si se especifica como posicin inicial del
extremo del amortiguador flange_b.s(start =0.3, fixed =true), el conjunto
no experimentar ningn movimiento, ya que el resorte no estar inicialmente, ni

9.3. Sistemas mecnicos con elementos que se desplazan

0 = 20 cm)
Figura 9.25: Comportamiento del conjunto mecnico ( fbb

Figura 9.26: Comportamiento del conjunto mec0 = 40 cm)


nico ( fbb

175

9 Modelado y simulacin con OpenModelica

176

Figura 9.27: Sistema mecnico que gira


comprimido ni estirado.

9.4 Sistemas mecnicos con elementos que giran


Los sistemas mecnicos 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.27 se muestra un sistema mecnico simple cuyos elementos giran.


Una masa giratoria (volante), est conectada a una barra (resorte giratorio) y a un
amortiguador giratorio.
Los parmetros del sistema son: inercia del volante J = 10 kg m2 , constante del
resorte K = 10 N m rad1 y coeficiente del amortiguador B = 5 N m rad1 s1 .
Se aplica un par tipo escaln T = 10 N m, al eje libre del volante, en t = 2 s.
Se desea ver como cambia la velocidad de rotacin de los dos ejes del sistema.
El diagrama Modelica para simular este sistema, se muestra en la figura 9.28.
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 (2)
Modelica.Mechanics.Rotational.Sources.TorqueStep
En la figura 9.29 se muestra la velocidad de rotacin en los dos extremos del
resorte giratorio. El extremo conectado al volante (medidor_1.flang_b) empieza
a girar primero e inicialmente ms rpido, que el extremo conectado al amortiguador (medidor_2.flange_b). Despus de aproximadamente un minuto, los dos ejes

9.4. Sistemas mecnicos con elementos que giran

177

Figura 9.28: Diagrama de simulacin de un sistema mecnico que gira


alcanzan la misma velocidad de rotacin y estas permanecen constantes (1 (t) =
2 (t) = 2 rad s1 ).

9.4.2

Mquina giratoria desbalanceada

Se tiene una mquina giratoria (motor elctrico, compresosr, turbina, u otra) cuyo rotor est desbalanceado. El diagrama de la mquina se muestra en la figura
9.30 (Speckhart y Green, 1976).
La masa total de la mquina es M. El rotor tiene una masa desbalanceada m, cuyo
centro de masa est a una distancia r del centro del rotor.
La mquina se ha montado sobre un soporte, compuesto por un resorte equivalente (k) y un amortiguador (b).
Se tomar como posicin de referencia, la posicin de la mquina detenida descansando sobre el soporte.
La ecuacin del movimiento de la mquina esta dada por la expresin
M

dx(t)
d2 x(t)
+b
+ kx(t) = fm (t),
2
dt
dt

(9.10)

donde la fuerza producida por la masa desbalanceada es


fm (t) = mr 2 sen( t).

(9.11)

9 Modelado y simulacin con OpenModelica

178

Figura 9.29: Velocidades de rotacin en el sistema mecnico giratorio

Figura 9.30: Mquina giratoria


desbalanceada

9.4. Sistemas mecnicos con elementos que giran

179

Producto del desbalance del rotor, se transmite al piso una fuerza


ft p (t) = kx(t) + b

dx(t)
.
dt

(9.12)

Los parmetros de la mquina son: M = 50 kg, m = 0,10 kg, r = 0, 05 m, k =


25 N m1 y b = 4 N s m1 .
La velocidad nominal de rotacin de la mquina es de 1200 revoluciones por minuto ( = 125, 66 rad s1 ) y en el arranque, la mquina se acelera en forma constante,
de tal manera que tarde 10 s en alcanzarla.
El programa de simulacin de la mquina desbalanceada con Modelica, es
model SisMec04MaqDesb
// Maquina giratoria desbalanceada
parameter Real M = 50 " masa total " ;
parameter Real m = 0 .1 " masa desbalanceada " ;
parameter Real b = 4 " amortiguador " ;
parameter Real k = 25 " resorte " ;
parameter Real r = 0 .05 ;
Real w , fm , ftp ;
Real pos ( start = 0 , fixed = true ) ;
Real vel ( start = 0 , fixed = true ) ;
equation
w = if time < 10 then 12 .567 * time else 125 .67 ;
M * der ( vel ) + b * vel + k * pos = fm ;
vel = der ( pos ) ;
fm = m * r * w ^ 2 * sin ( w * time ) ;
ftp = k * pos + b * vel ;
annotation ( experiment ( StartTime = 0 , StopTime = 120 ,
Tolerance = 1 e - 006 , Interval = 0 .02 ) ) ;
end SisMec04MaqDesb ;

El comportamiento de la mquina, durante los primeros dos minutos de operacin, se muestra en la figura 9.31.
El desplazamiento mximo de la mquina durante el arranque es de +8 mm/-7
mm y en estado estacionario este es de +0,35 mm/-0,30 mm (figura 9.31a).
La fuerza transmitida al piso en estado estacionario, producto del desbalance de
la mquina, es de +0,055 N/-0,045 N (figura 9.31b).

9.4.3

Pndulo con amortiguamiento

En el desarrollo realizado en la seccin 4.2.13, para obtener los modelos del pndulo
de la figura 4.2, se consider que el aire no ofreca ninguna resistencia al movimiento
del pndulo. Se supondr ahora que la fuerza de resistencia del aire, es proporcional
a la velocidad angular del pndulo.

9 Modelado y simulacin con OpenModelica

180

(a) Desplazamiento de la mquina

(b) Fuerza transmitida al piso

Figura 9.31: Comportamiento de la mquina desbalanceada durante el arranque


Figura 9.32: Pndulo con amortiguamiento

El pndulo amortiguado se muestra en la figura 9.32 y su modelo est dado por


las siguientes ecuaciones:

(t) =
J

d (t)
,
dt

d (t)
= Tm (t) Tb (t),
dt
Tm (t) = L Fm (t) = Lmgsin( (t)),
Tb (t) = L Fb (t) = Lb (t),
J = mL2 .

(9.13)
(9.14)
(9.15)
(9.16)
(9.17)

9.5. Sistemas hidrulicos

181

que se pueden rescribir como

(t) =
mL2

d (t)
,
dt

d (t)
+ Lmgsin( (t)) + Lb (t) = 0.
dt

(9.18)
(9.19)

Los parmetros utilizados en el ejemplo son: masa m = 1 kg, largo L = 1 m y


coeficiente de friccin b = 0,75 kg m s1 .
El modelo Modelica del pndulo amortiguado es
model DampedPendulum " Pendulo amortiguado "
import M o d e l i c a . C o n s t a n t s . p i ;
constant Real g = 9 .80 " gravedad " ;
parameter Real L = 0 .50 " largo " ;
parameter Real m = 1 " masa " ;
parameter Real b = 0 .75 " friccion " ;
parameter Real posAngic = 0 .75 * pi " posicion inicial " ;
parameter Real velAngic = 0 " velocidad inicial " ;
Real posAng , velAng ;
initial equation
posAng = posAngic ;
velAng = velAngic ;
equation
velAng = der ( posAng ) ;
m * L ^ 2 * der ( velAng ) + L * m * g * sin ( posAng )
+ L * b * velAng = 0;
annotation ( experiment ( StartTime = 0 , StopTime = 10 ,
Tolerance = 1 e -06 , Interval = 0 .02 ) ) ;
end DampedPendulum ;

En la figura 9.33 se puede comparar la repuesta del pndulo sin friccin, caso (a),
con la obtenida cuando se considera la resistencia del aire, caso (b).

9.5 Sistemas hidrulicos


La simulacin de los sistemas hidrulicos, mediante la interconexin de componentes
de la biblioteca Modelica, hace uso de los equipos (tanques, vlvulas, tuberas)
modelados en la biblioteca Modelica.Fluid y de los fluidos (aire, agua, gases) de
la biblioteca Modelica.Media.

9.5.1

Sistema hidrulico con un tanque

En la figura 9.34 se muestra un proceso hidrulico simple, compuesto por un tanque


de rea transversal A, con la parte superior abierta a la atmsfera y una vlvula de

182

9 Modelado y simulacin con OpenModelica

Figura 9.33: Comportamiento del pndulo

9.5. Sistemas hidrulicos

183

Figura 9.34: Sistema hidrulico


simple

descarga al medio ambiente, de constante Kv .


Haciendo un balance volumtrico en el tanque, las ecuaciones del modelo de este
sistema son:
A

dH(t)
= Qe (t) Qs (t),
dt
p
Qs (t) = Kv gH(t).

(9.20)
(9.21)

Se desea analizar como vara el nivel del lquido en el tanque, que est inicialmente vaco, si el caudal de entrada Qe (t) = 0,25 m3 s1 para 5 s t 150 s y
Qe (t) = 0 para cualquier otro instante.
El fluido es agua ( = 1000 kg m3 ) y los parmetros del sistema para la simulacin son: rea transversal del tanque A = 2 m2 , constante de la vlvula Kv = 0,002062
y la aceleracin de la gravedad g = 9, 8 m s2 . El nivel del lquido est dado en m.
El programa de simulacin con Modelica es
model SisHidra01_e
// Sistema hidr
a ulico - un tanque
// V
a lvula no lineal
constant Real g ( unit = " m / s2 " ) = 9 .8 ;
parameter Real A ( unit = " m2 " ) = 2 "
a rea tanque " ;
parameter Real df ( unit = " kg / m3 " ) = 1000 " densidad fluido " ;
parameter Real Kv = 0 .002062 " constante v
a lvula " ;
Real H ( unit = " m " , start = 0 , fixed = true ) " nivel " ;
Real Qe ( unit = " m3 / s " ) " caudal entrada " ;
Real Qs ( unit = " m3 / s " ) " caudal salida " ;
equation
Qe = if time > 5 and time < 150 then 0 .25 else 0;
A * der ( H ) = Qe - Qs ;
Qs = if noEvent ( H >= 0 ) then Kv * sqrt ( df * g * H ) else 0;;
annotation ( experiment ( StartTime = 0 , StopTime = 200 ) ) ;
end SisHidra01_e ;

184

9 Modelado y simulacin con OpenModelica

Figura 9.35: Variables del sistema hidrulico simple


En este ejemplo, adems de los comentarios de definicin, se han establecido las
unidades (unit) de las variables, las cuales se desplegarn en la columna Unit del
navegador de variables.
En la figura 9.35 se muestra la variacin 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 m3 s1 y el tanque
empieza a llenarse. El fluido se acumula en el tanque y el nivel del lquido en el
mismo aumenta, haciendo a su vez que el caudal de descarga (salida) aumente. El
sistema alcanza el punto de equilibrio (Qs (t) = Qe (t)) cuando el nivel del lquido
H 0 = 1,5 m.
A partir del punto de equilibrio, cuando el caudal de entrada se hace nuevamente
cero, el tanque se vaca rpidamente.
Debido a que la vlvula de descarga es no lineal, las caractersticas dinmicas
del proceso cuando el tanque se est llenado, son diferentes de cuando este se est
vaciando.

9.5.2

Sistema hidrulico con dos tanques en serie

Se dir que dos sistemas estn en serie, si la salida del primero es la entrada del
segundo. En este caso, la causalidad entrada a salida est bien definida.

9.5. Sistemas hidrulicos

185

Figura 9.36: Sistema de dos tanques


en serie

Un sistema de este tipo, es el compuesto por dos tanques abiertos a la atmsfera con su correspondiente vlvula de descarga, colocados en dos niveles diferentes,
donde el tanque ms elevado descarga en el segundo, tal como se muestra en la figura
9.36.
Los datos para la simulacin son: fluido ( = 1000 kg m3 ); reas de los tanques
A1 = 2 m2 , A2 = 4 m2 ; constantes de las vlvulas Kv1 = 0,002062, Kv2 = 0,001786;
aceleracin de la gravedad g = 9, 8 m s2 ; niveles H1 y H2 en m; y caudal de entrada
Qe (t) = 0,25 m3 s1 para 5 s t 450 s.
El programa Modelica para simular este sistema es
model SisHidra02_e
// Sistema hidr
a ulico - dos tanques en serie
// V
a lvulas no lineales
constant Real g ( unit = " m / s2 " ) = 9 .80 ;
parameter Real A1 ( unit = " m2 " ) = 2 "
a rea tanque 1 " ;
parameter Real A2 ( unit = " m2 " ) = 4 "
a rea tanque 2 " ;
parameter Real df ( unit = " kg / m3 " ) = 1000 " densidad fluido " ;
parameter Real Kv1 = 0 .002062 " constante v
a lvula 1 " ;
parameter Real Kv2 = 0 .001786 " constante v
a lvula 2 " ;
Real H1 ( unit = " m " , start = 0 , fixed = true ) " nivel 1 " ;
Real H2 ( unit = " m " , start = 0 , fixed = true ) " nivel 2 " ;
Real Qe ( unit = " m3 / s " ) " caudal entrada " ;
Real Qs1 ( unit = " m3 / s " ) " caudal salida 1 " ;
Real Qs2 ( unit = " m3 / s " ) " caudal salida 2 " ;
equation
Qe = if time > 5 and time < 450 then 0 .25 else 0;
A1 * der ( H1 ) = Qe - Qs1 ;
A2 * der ( H2 ) = Qs1 - Qs2 ;
Qs1 = if noEvent ( H1 >= 0 ) then Kv1 * sqrt ( df * g * H1 ) else 0;
Qs2 = if noEvent ( H2 >= 0 ) then Kv2 * sqrt ( df * g * H2 ) else 0;

186

9 Modelado y simulacin con OpenModelica

Figura 9.37: Comportamiento del sistema de tanques en serie

annotation ( experiment ( StartTime = 0 , StopTime = 600 ) ) ;


end SisHidra02_e ;

En la figura 9.37 se muestra la variacin de los niveles del fluido en los tanques
y de los caudales, para 0 t 600 s.
En el estado de equilibrio, con Qe (t) = 0,25 m3 s1 constante, los niveles en los
tanques son H10 = 1,5 m y H20 = 2,0 m. Para mantener Qs2 (t) = Qs1 (t) = Qe (t), H2 (t)
debe ser mayor que H1 (t), ya que Kv2 < Kv1 .
En este sistema hidrulico 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), Qs2 (t)).
Si se define el conjunto de parmetros del conjunto (tanque, vlvula) como p =
{A, Kv }, se tiene que las variables en el sistema estn dadas por relaciones de la forma
H1 (t) = f1 ( p1 , Qe (t)),

(9.22)

Qs1 (t) = f2 ( p1 , Qe (t)),

(9.23)

H2 (t) = f3 ( p2 , Qs1 (t)), = f5 ( p1 , p2 , Qe (t)),

(9.24)

Qs2 (t) = f4 ( p2 , Qs1 (t)) = f6 ( p1 , p2 , Qe (t)).

(9.25)

9.5. Sistemas hidrulicos

187

Figura 9.38: Sistema de dos tanques en serie


Aunque es evidente de la figura 9.36, es importante hacer notar aqu, en contraposicin con lo que se ver en el sistema de la siguiente seccin, que las variables del
primer tanque, no dependen de las variables ni de los parmetros del segundo tanque,
pero que las variables del segundo tanque si dependen de las variables y parmetros
del primero.

9.5.3

Sistema hidrulico con dos tanques interconectados

Considrese ahora el sistemas de dos tanques, con sus bases al mismo nivel y conectados como se ilustra en la figura 9.38.
Las ecuaciones que modelan el comportamiento dinmico en los dos tanques,
son
dH1 (t)
= Qe1 (t) Q12 (t),
dt
dH2 (t)
= Qe2 (t) + Q12 (t) Qs2 (t),
A2
dt
p
Q12 (t) = signo(H1 (t) H2 (t))Kv1 g |H1 (t) H2 (t)|,
p
Qs2 (t) = Kv2 gH2 (t).

A1

(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 estmulos aplicados
y de los parmetros de ambos tanques.
Los datos para la simulacin son: fluido ( = 1000 kg m3 ); reas de los tanques
A1 = 2 m2 , A2 = 4 m2 ; constantes de las vlvulas Kv1 = 0,002062, Kv2 = 0,001786;
aceleracin de la gravedad g = 9, 8 m s2 ; niveles H1 y H2 en m; caudales de entrada

188

9 Modelado y simulacin con OpenModelica

Qe1 (t) = 0,25 m3 s1 para 5 s t 700 s y Qe2 (t) = 0,40 m3 s1 para 700 s t
1800 s.
Las reas transversales de los tanques y la apertura de las vlvulas, son las mismas que en el sistemas de dos tanques en serie de la seccin 9.5.2.
El programa Modelica para simular este sistema, es
model SisHidra04_e
// Sistema hidr
a ulico - dos tanques interconectados
// V
a lvulas no lineales
constant Real g ( unit = " m / s2 " ) = 9 .80 ;
parameter Real A1 ( unit = " m2 " ) = 2 "
a rea tanque 1 " ;
parameter Real A2 ( unit = " m2 " ) = 4 "
a rea tanque 2 " ;
parameter Real df ( unit = " kg / m3 " ) = 1000 " densidad fluido " ;
parameter Real Kv1 = 0 .002062 " constante v
a lvula 1 " ;
parameter Real Kv2 = 0 .001786 " constante v
a lvula 2 " ;
Real H1 ( unit = " m " , start = 0 , fixed = true ) " nivel 1 " ;
Real H2 ( unit = " m " , start = 0 , fixed = true ) " nivel 2 " ;
Real Qe1 ( unit = " m3 / s " ) " caudal entrada 1 " ;
Real Qe2 ( unit = " m3 / s " ) " caudal entrada 2 " ;
Real Q12 ( unit = " m3 / s " ) " caudal de 1 a 2 " ;
Real Qs2 ( unit = " m3 / s " ) " caudal salida 2 " ;
equation
Qe1 = if time > 5 and time < 700 then 0 .25 else 0;
Qe2 = if time > 700 and time < 1800 then 0 .395 else 0;
A1 * der ( H1 ) = Qe1 - Q12 ;
A2 * der ( H2 ) = Qe2 + Q12 - Qs2 ;
Q12 = if noEvent ( H1 - H2 >= 0 ) then Kv1
* sqrt ( df * g * ( H1 - H2 ) )
else - Kv1 * sqrt ( df * g * ( H2 - H1 ) ) ;
Qs2 = if noEvent ( H2 >= 0 ) then Kv2 * sqrt ( df * g * H2 )
else 0;
annotation ( experiment ( StartTime = 0 , StopTime = 2000 ) ) ;
end SisHidra04_e ;

En la figura 9.39 se muestra la variacin 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, Qe1 (t) > 0 y Qe2 (t) = 0, y por lo tanto siempre H1 (t) >
H2 (t). En el punto de equilibrio para Qe1 (t) = 0,25 m3 s1 y Qe2 = 0, H201 =
2 m (obviamente igual al nivel necesario en el sistema con los dos tanques en
serie, con los mismos parmetros y condiciones de caudal), pero H101 = 3,50 m.
2. En el intervalo 700 s t 1800 s, Qe1 (t) = 0 y Qe2 (t) > 0. Inicialmente
H1 (700) > H2 (700) (Q12 > 0), por lo que H2 aumenta mientras que H1 disminuye, hasta que se hace ligeramente inferior a H2 , entonces Q12 se vuelve

9.5. Sistemas hidrulicos

189

Figura 9.39: Comportamiento de dos tanques interconectados


negativo, esto es, se invierte el sentido de flujo entre los dos tanques. Ahora el lquido va del segundo tanque al primero, los dos niveles aumentan (con
H1 (t) < H2 (t)) hasta que se alcanza un 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).
3. Finalmente para 1800 s t 2000 s, Qe1 (t) = 0 y Qe2 (t) = 0. Los tanques
se vacan, los niveles del fluido en los mismos disminuyen, con H1 (t) > H2 (t)
siempre, hasta que ambos llegan a cero.

9.5.4

Sistema hidrulico con un recipiente esfrico

En el sistema hidrulico de la figura 9.40, el recipiente es una esfera de radio R


abierta a la atmsfera en la parte superior. La tubera de llenado est conectada a la
parte ms alta del recipiente y la de descarga, junto con una vlvula, a la parte inferior
del mismo.
El volumen V del lquido en la esfera, en funcin del nivel H, es (Rivera, 2007)
V (H(t)) =

2
H (t) [3R H(t)] ,
3

(9.31)

Por su parte, el rea de la superficie del lquido es


A(H(t)) = H(t) [2R H(t)] ,

(9.32)

9 Modelado y simulacin con OpenModelica

190
Figura 9.40: Sistema hidrulico con un tanque esfrico

de manera que un diferencial de volumen en la superficie del lquido, sera


dV (H(t)) = A(H(t))dH(t) = H(t) [2R H(t)] dH(t).

(9.33)

La variacin del volumen de lquido en el recipiente, est dado por la expresin


(balance volumtrico)
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)]
p
Qs (t) =Kv Xv gH(t).

donde, para el ejemplo, se tiene:


- densidad del fluido, = 1000 kg m3 ,
g - aceleracin de la gravedad, g = 9,8 m s2 ,
H - nivel de fluido en el recipiente, m,
Kv - constante de la vlvula de descarga, Kv = 0,001,
Qe - caudal de entrada, m3 s1 ,
Qs - caudal de salida, m3 s1 ,
R - radio del recipiente esfrico, R = 2,0 m,
Xv - apertura de la vlvula de descarga (0 a 1).
El modelo Modelica para la simulacin de este sistema est dado, es

(9.35)
(9.36)

9.5. Sistemas hidrulicos

191

model Esfera_e " Sistema con tanque esferico "


import M o d e l i c a . C o n s t a n t s . p i ;
constant Real g = 9 .8 " gravedad " ;
parameter Real d = 1000 " densidad fluido " ;
parameter Real R = 2 " radio esfera " ;
parameter Real Kv = 0 .001 " const. valvula " ;
parameter Real Xv = 0 .01 " apertura valvula " ;
parameter Real Ht = 2 * R " nivel maximo " ;
parameter Real Vt = 4 * pi * R ^ 3 / 3 " volumen maximo " ;
Real Qe , Qs , H , V , Hp , Vp ;
initial equation
der ( H ) = 0;
equation
Qe = if time > 2 then 0 .1 else 0 .00028 ;
der ( H ) = ( Qe - Qs ) / ( pi * H * ( 2 * R - H ) ) ;
Qs = Kv * Xv * sqrt ( d * g * H ) ;
V = pi / 3 * H ^ 2 * ( 3 * R - H ) ;
// Nivel y volumen en porcentaje
Hp = 100 * H / Ht ;
Vp = 100 * V / Vt ;
when Vp >= 99 .99 then
terminate ( " Esfera llena " ) ;
end when ;
annotation ( experiment ( StartTime = 0 , StopTime = 360 ,
Tolerance = 1 e -06 , Interval = 0 .05 ) ) ;
end Esfera_e ;

En este modelo se han incluido ecuaciones de declaracin, para el clculo del


nivel mximo Ht y el volumen mximo (total) Vt del lquido en la esfera.
Para el primer anlisis, el sistema est en un punto estacionario, con la vlvula
de descarga abierta solo un 1 %, de manera que el caudal de salida sea muy pequeo.
El caudal de entrada inicialmente es Qe = 0,00028 m3 s1 (el requerido para que
el nivel sea un 2 %) y se cambia a Qe = 0,10 m3 s1 en t = 0,10 s. La simulacin se
detendr cuando la esfera est llena al 99,99 % del volumen total.
La variacin del nivel y de la cantidad de lquido en el recipiente, se muestran en
la figura 9.41.
Como el caudal de salida es muy pequeo, con relacin al de entrada, y casi no se
ve afectado por el nivel del lquido, el volumen del lquido almacenado en la esfera
aumenta en forma lineal, mientras que la variacin del nivel muestra claramente la
caracterstica no lineal del recipiente esfrico.
En el modelo se indic el intervalo para la simulacin como StopTime = 360
s. Sin embargo, la simulacin 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

192

9 Modelado y simulacin con OpenModelica

Figura 9.41: Nivel y volumen del fluido en la esfera


ya que en ese instante, Vp = 99,99 %.
Para analizar el comportamiento dinmico 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 vlvula de descarga abierta al 50 %, el modelo Modelica anterior se
modific de la siguiente manera
model Esfera_en " Sistema con tanque esferico "
import M o d e l i c a . C o n s t a n t s . p i ;
constant Real g = 9 .8 " gravedad " ;
parameter Real d = 1000 " densidad fluido " ;
parameter Real R = 2 " radio esfera " ;
parameter Real Kv = 0 .001 " const. valvula " ;
parameter Real Xv = 0 .01 " apertura valvula " ;
parameter Real Ht = 2 * R " nivel maximo " ;
parameter Real Vt = 4 * pi * R ^ 3 / 3 " volumen maximo " ;
parameter Real Qei = 0 .00885 " caudal para el nivel inicial " ;
Real Qe , Qs , H , V , Hp , Vp ;
initial equation
der ( H ) = 0;
equation
Qe = if time > 5 then 1 .05 * Qei else Qei ;
der ( H ) = ( Qe - Qs ) / ( pi * H * ( 2 * R - H ) ) ;
Qs = Kv * Xv * sqrt ( d * g * H ) ;
V = pi / 3 * H ^ 2 * ( 3 * R - H ) ;
// Nivel y volumen en porcentaje

9.5. Sistemas hidrulicos

193

Figura 9.42: Nivel y volumen, H0 = 80 %, Qe = 5 %

Hp = 100 * H / Ht ;
Vp = 100 * V / Vt ;
annotation ( experiment ( StartTime = 0 , StopTime = 2500 ,
Tolerance = 1 e -06 , Interval = 1 ) ) ;
end Esfera_en ;

En la figura 9.42 se muestra el cambio del nivel y del volumen de fluido en la


esfera, partiendo de H0 = 80 % (Qei = 0,885 m3 s1 ).
Como resultado del incremento del caudal de entrada, el volumen del lquido
almacenado en la esfera aumenta un 7,32 % y el nivel un 10,11 %.
El comportamiento dinmico 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 t63,2 % = 537,79 s .

9.5.5

Sistema con taques, vlvulas y tuberas

El modelado de los sistemas hidrulicos anteriores, no presenta gran dificultad. Sin


embargo, si el sistema incorpora ms componentes y adems, se desea reflejar de
mejor manera por ejemplo las relaciones entre los caudales y presiones en el sistema,
mediante un modelado ms apegado a la realidad, su desarrollo puede requerir de un
gran esfuerzo.
Considrese por ejemplo el sistema de tanques, con vlvulas y tuberas de interconexin, mostrado en la figura 9.43.
Las bases de los taques se encuentra a diferente altura sobre el nivel de referencia. Se deben incluir en el modelo las caractersticas de las tuberas y vlvulas de

194

9 Modelado y simulacin con OpenModelica

Figura 9.43: Diagrama del sistema de tanques, vlvulas y tuberas

Figura 9.44: Modelo del sistema de tanques, vlvulas y tuberas con Modelica
interconexin.
Las vlvulas que interconectan el tanque Tq1 con el Tq2 , V12 y la que conecta este
con el tanque Tq3 , V23 estn completamente abiertas. La vlvula de entrada de lquido
V1 y la de descarga V2 , tienen un operador elctrico e inicialmente estn completamente cerradas. Los tanques inicialmente estn parcialmente llenos.
En vez de establecer las ecuaciones requeridas para el modelado del sistema, se
emplearn los componentes de la biblioteca Modelica, en particular los de la biblioteca Modelica.Fluid.
En la figura 9.44 se muestra en diagrama de conexin del modelo con Modelica,
desarrollado con el editor grfico 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)

9.5. Sistemas hidrulicos

195

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 vlvulas y el
dimetro de todas las tuberas.
Los parmetros del sistema son:
Fluido, agua,
Tanques, altura T qh1 = T qh2 = T qh3 = 10 m,
Tanques, rea transversal T qA1 = T qA2 = T qA3 = 2 m2 ,
Tanques, dimetro de las bocas para la conexin de las tuberas 0,50 m (todas
a nivel de la base),
Tuberas, dimetro nominal 0,50 m,
Tuberas, longitud L12 = L23 = L30 = 10 m
Tubera, longitud L01 = 100 m,
Vlvulas, caudal nominal a 100 % de apertura Qn = 0,20 m3 s1 ,
Vlvulas, cada de presin nominal a 100 % de apertura Pn = 800 Pa,
Vlvulas, V 12 y V 23 manuales, abiertas 100 %,
Vlvulas, V 1 y V 2 con operador elctrico, 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 NT q1 = 6 m, NT q2 = 4 m, NT 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 operacin del sistema, es la siguiente:
1. t = 0, HT q1o = 1 m, HT q2o = 3 m, HT 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),

196

9 Modelado y simulacin con OpenModelica

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.
A continuacin se lista el programa Modelica, creado automticamente por el
editor, para simular este sistema.
Se han introducido en el los parmetros particulares del sistema. Los dems parmetros de los componentes Modelica, se han dejado en su valor predeterminado en
la biblioteca.
Para tener mayor claridad del cdigo, se han eliminado todas las indicaciones
(annotation), relacionadas con la ubicacin de los iconos de los componentes y
con el trazo de las conexiones entre ellos.
model Hidra3T4Vcydamb
replaceable package Medium = M o d e l i c a . M e d i a . W a t e r .
C o n s t a n t P r o p e r t y L i q u i d W a t e r constrainedby Modelica.Media.
Interfaces.PartialMedium;
M o d e l i c a . F l u i d . V e s s e l s . O p e n T a n k tanque_1 ( redeclare package
Medium = Medium , height = 10 , crossArea = 2 , nPorts = 2 ,
level_start = 1 , portsData = { M o d e l i c a . F l u i d . V e s s e l s.
B a s e C l a s s e s . V e s s e l P o r t s D a t a ( diameter = 0 .5 ) , Modelica.
F l u i d . V e s s e l s . B a s e C l a s s e s . V e s s e l P o r t s D a t a ( diameter = 0 .5 ) } ) ;
M o d e l i c a . F l u i d . P i p e s . S t a t i c P i p e tuberia_01 ( redeclare package
Medium = Medium , length = 100 , diameter = 0 .5 , height_ab
= - 12 ) ;
M o d e l i c a . F l u i d . V a l v e s . V a l v e L i n e a r valvula_1 ( redeclare package
Medium = Medium , dp_nominal = 800 , m_flow_nominal = 0 .2 ) ;
M o d e l i c a . F l u i d . S o u r c e s . F i x e d B o u n d a r y suministro ( redeclare
package Medium = Medium , nPorts = 1 ) ;
M o d e l i c a . B l o c k s . M a t h . A d d apertura_v1 ;
M o d e l i c a . B l o c k s . S o u r c e s . R a m p rampa_cv1 ( height = -0 .9 ,
duration = 90 , startTime = 250 ) ;
M o d e l i c a . F l u i d . V a l v e s . V a l v e L i n e a r valvula_12 ( redeclare package
Medium = Medium , dp_nominal = 800 , m_flow_nominal = 0 .2 ) ;
M o d e l i c a . B l o c k s . S o u r c e s . C o n s t a n t const ( k = 1 ) ;
M o d e l i c a . F l u i d . P i p e s . S t a t i c P i p e tuberia_12 ( redeclare package
Medium = Medium , length = 10 , diameter = 0 .5 , height_ab
= -2 ) ;
M o d e l i c a . F l u i d . V e s s e l s . O p e n T a n k tanque_3 ( redeclare package
Medium = Medium , height = 10 , crossArea = 2 , level_start
= 5 , nPorts = 2 , portsData = { M o d e l i c a . F l u i d . V e s s e l s.
B a s e C l a s s e s . V e s s e l P o r t s D a t a ( diameter = 0 .5 ) , Modelica.Fluid.

9.5. Sistemas hidrulicos

197

V e s s e l s . B a s e C l a s s e s . V e s s e l P o r t s D a t a ( diameter = 0 .5 ) } ) ;
M o d e l i c a . F l u i d . P i p e s . S t a t i c P i p e tuberia_23 ( redeclare package
Medium = Medium , length = 10 , diameter = 0 .5 , height_ab
= -2 ) ;
M o d e l i c a . F l u i d . P i p e s . S t a t i c P i p e tuberia_30 ( redeclare package
Medium = Medium , length = 10 , diameter = 0 .5 , height_ab
= -2 ) ;
M o d e l i c a . F l u i d . V a l v e s . V a l v e L i n e a r valvula_2 ( redeclare package
Medium = Medium , dp_nominal = 800 , m_flow_nominal = 0 .2 ) ;
M o d e l i c a . F l u i d . S o u r c e s . F i x e d B o u n d a r y descarga ( redeclare package
Medium = Medium , nPorts = 1 ) ;
M o d e l i c a . F l u i d . V e s s e l s . O p e n T a n k tanque_2 ( redeclare package
Medium = Medium , height = 10 , crossArea = 2 , nPorts = 2 ,
level_start = 3 , portsData = { M o d e l i c a . F l u i d . V e s s e l s.
B a s e C l a s s e s . V e s s e l P o r t s D a t a ( diameter = 0 .5 ) , Modelica.Fluid.
V e s s e l s . B a s e C l a s s e s . V e s s e l P o r t s D a t a ( diameter = 0 .5 ) } ) ;
M o d e l i c a . F l u i d . V a l v e s . V a l v e L i n e a r valvula_23 ( redeclare package
Medium = Medium , dp_nominal = 800 , m_flow_nominal = 0 .2 ) ;
M o d e l i c a . B l o c k s . S o u r c e s . C o n s t a n t constant1 ( k = 1 ) ;
M o d e l i c a . B l o c k s . M a t h . A d d apertura_v2 ;
M o d e l i c a . B l o c k s . S o u r c e s . R a m p rampa_cv2 ( height = -0 .6 ,
duration = 60 , startTime = 4000 ) ;
M o d e l i c a . B l o c k s . S o u r c e s . R a m p rampa_av1 ( height = 0 .9 ,
duration = 90 , startTime = 10 ) ;
M o d e l i c a . B l o c k s . S o u r c e s . R a m p ramp_av2 ( height = 0 .6 ,
duration = 60 , startTime = 3610 ) ;
inner M o d e l i c a . F l u i d . S y s t e m system ;
equation
connect ( valvula_12.port_a , tanque_1.ports [ 2 ] ) ;
connect ( constant1.y , valvula_23.opening ) ;
connect ( const.y , valvula_12.opening ) ;
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.opening ) ;
connect ( apertura_v1.y , valvula_1.opening ) ;
connect ( tuberia_30.port_b , descarga.ports [ 1 ] ) ;
connect ( valvula_2.port_b , tuberia_30.port_a ) ;
connect ( valvula_2.port_a , tanque_3.ports [ 2 ] ) ;
connect ( tuberia_23.port_b , tanque_3.ports [ 1 ] ) ;
connect ( valvula_23.port_b , tuberia_23.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_12.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_23.port_b ) ;

198

9 Modelado y simulacin con OpenModelica

Figura 9.45: Niveles y caudales en el sistema de tanques, vlvulas y tuberas

connect ( valvula_23.port_a , tanque_2.ports [ 2 ] ) ;


connect ( tuberia_12.port_a , valvula_12.port_b ) ;
annotation ( experiment ( StartTime = 0 , StopTime = 7000 ,
Tolerance = 1 e - 006 ) ) ;
end Hidra3T4Vcydamb ;

La verificacin del modelo indica:


Check of Hidra3T4Vocydamb completed successfully.
Class Hidra3T4Vocydamb has 473 equation(s) and 473
variable(s).
175 of these are trivial equation(s).
Podra pensarse que el nmero de ecuaciones que forman este modelo es muy
alto, en comparacin con la cantidad de ecuaciones de los modelos hidrulicos escritos anteriormente, con base en las ecuaciones constitutivas de los 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: presin absoluta y entalpa. Adems, contempla ecuaciones para calcular otras variables.
Las propiedades del fluido incluyen: presin absoluta, temperatura, densidad, energa
interna, entalpa y fraccin de masa.
En la figura 9.45 se muestran como cambian los niveles del fluido en los tanques,
la apertura de las vlvulas V 1 y V 2 y los caudales por todas las vlvulas.
Cuando se abre V 1, el nivel en el tanque 1 aumenta rpidamente, el nivel en el
tanque 2 lo hace ms lento y el nivel en el tanque 3, todava ms lento. Cuando se

9.5. Sistemas hidrulicos

199

cierra la vlvula V 1, el nivel en el tanque 1 empieza a decrecer, mientras que los


niveles de los tanques 2 y 3 continan 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 vlvulas, HT q3 = HT q2 +
2m = HT q1 + 4 m.
Cuando se abre V 2, el nivel en el tanque 3 disminuye rpidamente, el nivel en
el tanque 2 lo hace ms lento y el nivel en el tanque 1, todava ms lento. Cuando
se cierra la vlvula V 2, el nivel en el tanque 1 empieza a subir, mientras que los
niveles de los tanques 2 y 3 continan descendiendo, hasta que se alcanza otro punto
de equilibrio (HT q1o = 1,2 m, HT q2o = 3,2 m, HT q3o = 5,2 m).
El modelado grfico de los sistemas termofludicos, combina los componentes
de la biblioteca Modelica.Fluid, con los fluidos (medios), cuyas propiedades estn definidas en la biblioteca Modelica.Media (Elmqvist et al., 2003; Casella et al.,
2006).

9.5.6

Parmetros de los componentes hidrulicos

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 caractersticas de
estos elementos.
Componente Modelica.Fluid.Vessels.OpenTank
Los parmetros de este componente incluyen: la altura de las paredes (m), el rea
trasversal (m2 ), el nivel inicial del lquido (m), los parmetros del medio ambiente y
otros
Adems, aunque normalmente se supone que todas las conexiones de las tuberas
a la pared de un tanque estn a nivel cero (nivel del piso o fondo del tanque), el
componente OpenTank permite especificas para las conexiones (ports): su cantidad
(nPorts), su dimetro (diameter) y su elevacin (height) respecto al nivel del
fondo del tanque.
Considerando el tanque de la figura 9.46, la presin absoluta en la boca de una
conexin de tubera, est dada por la ecuacin
Px (t) = g max{0, H(t) Hpx } + Pa .

(9.37)

Entonces, si el nivel de lquido en el tanque, en algn momento est por debajo


de la conexin de una tubera, por esta no puede salir fluido del tanque, solo puede
entrar.

9 Modelado y simulacin con OpenModelica

200
Figura 9.46: Elevacin de la conexin de una tubera a un tanque

Figura 9.47: Sistema de tanques con tuberas a diferente nivel

En el ejemplo siguiente, se tienen los dos tanques cilndricos verticales mostrados


en la figura 9.47, los cuales estn interconectados por una tubera cuyos extremos no
se encuentran al mismo nivel. Adems, el segundo tanque tiene otra tubera para
descargar a un embalse.
En este sistema, las paredes de los tanques miden Ht1 = Ht2 = 10 m, y sus reas
transversales A1 = A2 = 2 m2 ; la tubera 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 L1 = 20 m
de largo; la tubera de descarga del tanque 2 est conectada a Hp22 = 2 m y mide
L2 = 100 m de largo; el dimetro de las tuberas es d1 = d2 = 25 cm; los dos tanques
de se encuentran a una elevacin H0 = 10 m sobre el nivel del embalse.
El diagrama de simulacin (SisHidra2T1pL) de este sistema en Modelica, se
muestra en la figura 9.48.
En la figura 9.49 se muestran las curvas de los niveles del fluido en los dos tanques (H1 (t), H2 (t)) y el caudal de lquido por la tubera de interconexin entre estos
(Q12 (t)) y por la tubera de descarga del tanque 2 (Q20 (t)), para cuatro condiciones
iniciales (H10 , H20 ) diferentes, las cuales se explican por si solas.

9.5. Sistemas hidrulicos

201

Figura 9.48: Diagrama de simulacin del sistema de dos tanques

Figura 9.49: Nivel del lquido en los tanques y caudales por las tuberas
Componente Modelica.Fluid.Pipes.StaticPipe
Este componente tiene como parmetros: su longitud (m), su dimetro (m), la diferencia de elevacin entre sus extremos (m), la rugosidad de la pared interna y otros.
Componente Modelica.Fluid.Valves.ValveIncompresible
Mientras que el modelo del componente ValveLinear es muy simple, representa a
una vlvula lineal cuyos parmetros son el caudal y la cada de presin a apertura
completa, el componente ValveIncompresible, adems del caudal y la cada de
presin nominales, tiene como parmetro el coeficiente de flujo (Av , Kv o Cv ), y la
caracterstica de flujo (lineal, cuadrtica o isoporcentual), entre otros. Este modela la

9 Modelado y simulacin con OpenModelica

202

vlvula, utilizando las ecuaciones de dimensionamiento de la norma ISA S75.11 para


fluidos incompresibles.
Componente Modelica.Fluid.Machines.Pump
Este representa una bomba centrfuga, cuyos parmetros incluyen la velocidad nominal de rotacin, su curva caracterstica nominal (presin de descarga versus caudal),
dada como una ecuacin lineal, cuadrtica o polinomial. Si la velocidad de rotacin
de la bomba es variable, el modelo utiliza los datos nominales y las ecuaciones de
afinidad, para determinar las caractersticas de flujo a cualquier otra velocidad.
Adems, provee la conexin al eje de la bomba, al cual se le puede acoplar una
unidad motriz.

9.5.7

Declaracin del fluido en los componentes del sistema

El fluido en los modelos con componentes de la biblioteca Modelica.Fluid, puede


ser uno de los definidos en la biblioteca Modelica.Media.
Esta ltima provee las definiciones de las interfaces para los diferentes fluidos y
los modelos de las propiedades y caractersticas termodinmicas, de algunos como:
aire, agua, gases ideales y ejemplos de fluidos incompresibles. Adems, 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, hidrgeno, helio, oxido nitroso, dixido nitroso, metano, monxido de carbono, acetileno,
propano, butano, vapor de agua y oxgeno.
En todos los ejemplos de las secciones anteriores, el fluido utilizado fue agua.
Este se declara dentro del modelo como
...
replaceable package Medium = M o d e l i c a . M e d i a . W a t e r .
C o n s t a n t P r o p e r t y L i q u i d W a t e r constrainedby Modelica.Media.
Interfaces.PartialMedium;
...

y luego, en cada uno de los componentes fludicos utilizados, se asigna al medio del
componente.
Por ejemplo para un tanque con
...
M o d e l i c a . F l u i d . V e s s e l s . O p e n T a n k tank ( redeclare package Medium =
Medium , height = 10 , crossArea = 2 , ... ) ;
1 Instrument

Society of America - ISA S75.1 Flow Equations for Sizing Control Valves

9.6. Sistemas trmicos

203

Figura 9.50: Sistema de cmaras


con aislamiento trmico

...

9.6 Sistemas trmicos


Los sistemas en los que se almacena, transfiere y disipa calor, se pueden modelar con
los componentes de la biblioteca Modelica.Thermal.

9.6.1

Sistema con dos cmaras trmicas

En la figura 9.50 se muestra un sistema compuesto por dos cmaras cerradas, cuyas
paredes tienen aislamiento trmico.
Se inyecta calor a una razn qe (t) solo a la cmara 1. El aislante de la pared
entre las dos cmaras tiene una resistencia trmica Rt12 y las paredes exteriores de la
cmara 1 y la 2 Rt10 y Rt20 , respectivamente.
El interior de las cmaras, se encuentra inicialmente a temperatura ambiente. Se
desea investigar cmo varan las temperaturas interiores de las cmaras y los flujos de
calor entre ellas y desde estas al medio ambiente, cuando se aplica calor a la primera.
El diagrama de simulacin con Modelica, para este sistema trmico, se muestra
en la figura 9.51.
En el se ha utilizado los siguientes componentes:
Modelica.Blocks.Sources.Step
Modelica.Thermal.Fluid.HeatTransfer.Celcius.FixedTemperatura
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 parmetros del sistema son: capacitancias trmicas de las cmaras Ct1 =
Ct2 = 10 J K1 , resistencias trmicas de las paredes aisladas Rt12 = 5 K W1 , Rt10 =

9 Modelado y simulacin con OpenModelica

204

Figura 9.51: Diagrama de simulacin del sistema de cmaras con aislamiento trmico
Rt20 = 20 K W1 , temperatura inicial de las cmaras T10 = T20 = 20 C, temperatura
ambiente T0 = 20 C, flujo de calor de entrada qe (t) = 2 W para t 10 s
En la figura 9.52 se muestran las temperaturas en las cmaras, el flujo de calor
entre las cmaras 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 cmaras aumentan desde los 20 C iniciales hasta T1o = 43,2 C
y T2o = 37,7 C. En el nuevo estado estacionario, los flujos de calor son qo12 = 0,89 W,
qo10 = 1,11 W y q020 = 0,89 W (qo20 = qo12 , qo10 + qo20 = qe ).

9.6.2

Horno elctrico

En la figura 9.53 se muestra un horno elctrico con aislamiento trmico. Este conjuga
componentes elctricos y trmicos.
La tensin de la alimentacin elctrica es variable y se ajustar de manera de
calentar el horno en dos etapas.
Para la simulacin de este horno con Modelica, se ha elaborado el diagrama de

9.6. Sistemas trmicos

205

Figura 9.52: Temperaturas y flujos de calor en las cmaras con aislamiento trmico
Figura 9.53: Horno elctrico

interconexin mostrado en la figura 9.54, en el que se ha utilizado los siguientes


componentes:.
Calentador elctrico
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 tensin V f de la fuente en una rampa. Una vez alcanzada esta temperatura, se incrementar la tensin de la alimentacin elctrica para llevarlo hasta

9 Modelado y simulacin con OpenModelica

206

Figura 9.54: Diagrama de simulacin de un horno elctrico


200 C. Se mantendr el horno a esta temperatura por aproximadamente 5 min y
luego se apagar la alimentacin elctrica, dejando que el horno se enfre en forma
natural.
Para lograr lo anterior, la tensin de la alimentacin elctrica 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 alimentacin elctrica se emplea el componente TableVoltage de la biblioteca Modelica.Electrical.Analog.Sources. Esta fuente proporciona una
tensin elctrica por medio de la interpolacin lineal de los datos de una matriz, cuya
primera columna corresponde a los tiempos y la segunda a los valores de la tensin.
Para este ejemplo, los valores de esta matriz se listan en el cuadro 9.1.

9.6. Sistemas trmicos


Cuadro 9.1: Perfil
de la tensin de
la alimentacin
elctrica

207
Tiempo, s

Vf , V

0
10
40
770
800
2300
2300
3500

0
0
19,30
19,30
29,55
29,55
0
0

Figura 9.55: Ventana de parmetros del componente TableVoltage


En la figura 9.55, se muestra la ventana para la introduccin de los parmetros de
esta fuente.
El resistor elctrico, representado por el componente HeatingResistor de la biblioteca Modelica.Electrical.Analog.Basic, disipa el calor producido al medio externo por el terminal heatingresistor.heatPort, y su resistencia depende
de la temperatura segn la ecuacin



(9.38)
R = Rre f 1 + Thp Tre f .

La transferencia de calor del resistor elctrico al horno, est dada por la ecuacin
connect(heatingresistor1.heatPort, heatcapacitor1.port).
Otros parmetros del horno son: resistor elctrico R = 10 , = 0,0001 K1 ,
Tre f = 295,15 K (20 C); capacitor trmico horno Ct = 100 J K1 , resistor trmico
Rt = 2 K W1 ; temperatura ambiente Ta = 28 C.

208

9 Modelado y simulacin con OpenModelica

Figura 9.56: Comportamiento del horno elctrico


Los perfiles de la tensin elctrica aplicada al resistor elctrico y de la temperatura en el horno, se muestran en la figura 9.56. El ciclo completo de calentamiento y
enfriamiento del horno, dura aproximadamente una hora.

9.7 Modelado y simulacin de ecosistemas


En ingeniera se entiende que un sistema dinmico, es cualquier sistema fsico cuyas
variables evolucionan en el tiempo. Sin embargo, el trmino dinmica de sistemas
(System Dynamics) se emplea para describir la creacin de los modelos y las simulaciones realizadas por los economistas.
Este enfoque sistmico fue introducido por Forrester (1971), para el estudio de
los sistemas dinmicos que describen las polticas corporativas, la interaccin entre poblaciones, el desarrollo de las reas urbanas, la contaminacin ambiental, la
produccin de alimentos y otros sistemas econmicos.
En vez de realizar un modelado en trmino de ecuaciones diferenciales y estados,
el sistema est descrito por niveles (levels), cuyos valores se ven afectados por las
tasas (rates). Los niveles pueden ser por ejemplo: la poblacin, el dinero, el inventario y el conocimiento. Las tasas pueden ser tasas de entrada como: la natalidad,
las ganancias, el contagio de un virus (infeccin) y el aprendizaje; o tasas de salida
como: las defunciones, los gastos y el olvido, entre otras.

9.7. Modelado y simulacin de ecosistemas

209

Figura 9.57: Diagrama para la simulacin demogrfica


Una aplicacin de la dinmica de sistemas es la dinmica 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 poblacin,
la contaminacin, la utilizacin de recursos, la inversin de capital, la fuerza laboral
y la produccin de alimentos (Cellier, 2008).
La biblioteca que contiene los componentes para estas simulaciones, incluyendo
los modelos World2 y World3, es SystemDynamics. Adems provee varios escenarios para realizar las simulaciones.

9.7.1

Estimacin del crecimiento demogrfico de Costa Rica

Un ejemplo sencillo de la utilizacin de la biblioteca SystemDynamics, se muestra


en la figura 9.57. Este diagrama de simulacin con Modelica, permite estimar el
crecimiento de una poblacin (variable de nivel). Se considera la tasa de natalidad,
la tasa de defunciones y la migracin (variables de flujo).
En este caso, hay que abrir primero la biblioteca SystemDynamics con la opcin
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

9 Modelado y simulacin con OpenModelica

210

Figura 9.58: Diagrama para la simulacin demogrfica


SystemDynamics.Rates.Rate_1 (3)
SystemDynamics.Sources.Sink
SystemDynamics.Sources.Source (2)
Para estimar el desarrollo demogrfico de Costa Rica se ha tomado como poblacin 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.58 muestra la proyeccin de la poblacin, estimndose que dentro de
20 aos, Costa Rica tendr aproximadamente 5 900 000 habitantes.

9.7.2

Evolucin de una epidemia

La poblacin total en una localidad donde hay una epidemia por un virus contagioso,
est dividida en tres grupos:
En riesgo - personas sanas susceptibles de enfermarse,
Enfermos - personas enfermas con el virus,
Recuperados - personas curadas e inmunes al virus.

9.7. Modelado y simulacin de ecosistemas

211

El comportamiento de estos grupos de personas, est dado por las siguientes


relaciones:
dpEnRiesgo(t)
= k1 pEnRiesgo pEn f ermas,
dt
dpRecuperadas(t)
= k2 pEn f ermas,
dt
dpEn f ermas(t)
= k1 pEnRiesgo pEn f ermas k2 pEn f ermas.
dt

(9.39)
(9.40)
(9.41)

Para el ejemplo se considerar una poblacin total de 700 personas y una condicin inicial (al detectarse la epidemia) de pEnriesgo(0) = 620, pEn f ermas(0) = 10
y pRecuperadas(0) = 70.
La velocidad de disminucin de la enfermedad y la velocidad de recuperacin de
los enfermos, estn dados por las constantes k1 = 0,001 y k2 = 0,072.

Modelado con ecuaciones


El programa para analizar el comportamiento de la epidemia con Modelica, utlizando
(9.41) a (9.41), es
model Epidemia
// Evoluci
o n de las poblaciones en una epidemia
constant Real k1 = 0 .001 " disminuci
o n enfermedad " ;
constant Real k2 = 0 .07199999999999999 " recuperaci
o n enfermos " ;
Real pEnRiesgo ( start = 620 , fixed = true ) ;
Real pEnfermas ( start = 10 , fixed = true ) ;
Real pRecuperadas ( start = 70 , fixed = true ) ;
equation
der ( pEnRiesgo ) = - k1 * pEnRiesgo * pEnfermas ;
der ( pEnfermas ) = k1 * pEnRiesgo * pEnfermas - k2 * pEnfermas ;
der ( pRecuperadas ) = k2 * pEnfermas ;
annotation ( experiment ( StartTime = 0 , StopTime = 100 ,
Tolerance = 1 e - 006 , Interval = 0 .2 ) ) ;
end Epidemia ;

La evolucin de la epidemia durante 100 das, se muestra en la figura 9.59.


Al inicio de la epidemia, el nmero de personas enfermas aumenta rpidamente,
hasta alcanzar un mximo de poco ms de 400 personas enfermas en el da 11. A
partir de ah, el nmero de enfermos disminuye y para el da 100, todas las personas
se han recuperado y son inmunes al virus, terminando la epidemia.

212

9 Modelado y simulacin con OpenModelica

Figura 9.59: Evolucin de una epidemia

Figura 9.60: Epidemia - Diagrama de interconexin de componentes


Simulacin utilizando la biblioteca SytemDynamics
El diagrama de interconexin de componentes de la biblioteca SystemDynamics,
utilizado para analizar el comportamiento de la epidemia, se muestra en la figura
9.60.
En el escenario anterior, afortunadamente todas las personas infectadas por el
virus se recuperaron.
Considrese ahora que lamentablemente solo el 90 % de las personas se recuperan
(hay un 10 % de fallecidos). Se tomar una poblacin inicial de 1000 personas, donde
999 estn sanos y aparece una persona enferma.
El diagrama de simulacin de esta nueva situacin, se muestra en la figura 9.61.

9.7. Modelado y simulacin de ecosistemas

213

Figura 9.61: Epidemia grave - Diagrama de simulacin

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 das, termina la epidemia, 900 personas se han recuperado pero hay 100 fallecidos, tal como se muestra en las curvas de evolucin de la
epidemia en la figura 9.62.

9.7.3

Modelo Lotka-Volterra presa depredador

Si en un mismo sistema ecolgico viven dos especies, estas pueden relacionarse entre
si de diferentes maneras (Engel, 1978)
1. Depredacin: La especia A (depredadora) se alimenta de la especia B (presa).
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.

9 Modelado y simulacin con OpenModelica

214

Figura 9.62: Epidemia grave - Evolucin de las poblaciones involucradas


El modelo de Lotka-Volterra para la relacin entre dos especies, de las cuales una
es la presa y la otra su depredador, es:
dpPresa
=pPresa (a1 a2 pDepredador),
dt
dpDepredador
= pDepredador (b1 b2 pPresa),
dt

(9.42)
(9.43)
(9.44)

donde:
pPresa - poblacin de la especie cazada,
pDepredador - poblacin de la especie cazadora,
a1 - razn de crecimiento natural de las presas, si no hubiera depredadores,
a2 - razn de caza de las presas por parte de los depredadores,
b1 - razn de muerte natural de los depredadores, si no hay presas para cazar,
b2 - razn de aumento de los depredadores debido al alimento cazado.
Para la simulacin se han seleccionado los siguientes parmetros: poblacin inicial (10 depredadores y 5 presas); a1 = 1,50, a2 = 0,25, b1 = 2,50 y b2 = 0,20.
El modelo Modelica es:
model LotkaVolterra

9.8. Sistemas de control

215

Figura 9.63: Evolucin de


las poblaciones de la especies presa y depredador

// Modelo presa - depredador


parameter Real a1 = 1 .50 " natalidad presas " ;
parameter Real a2 = 0 .25 " disminucion presas " ;
parameter Real b1 = 2 .50 " mortalidad depredadores " ;
parameter Real b2 = 0 .20 " incremento depredadores " ;
Real pEsp1 ( start = 5 , fixed = true ) " Presas " ;
Real pEsp2 ( start = 10 , fixed = true ) " Depredadores " ;
equation
der ( pEsp1 ) = pEsp1 * ( a1 - a2 * pEsp2 ) ;
der ( pEsp2 ) = - pEsp2 * ( b1 - b2 * pEsp1 ) ;
annotation ( experiment ( StartTime = 0 , StopTime = 20 ,
Tolerance = 1 e -06 , Interval = 0 .01 ) ) ;
end LotkaVolterra ;

La evolucin de las dos especies se muestra en la figura 9.63.

9.8 Sistemas de control


reas que requieren del modelado de sistema heterogneos y que hacen un uso intensivo de la simulacin, son el anlisis y el diseo de los sistemas de control.
La biblioteca estndar de componentes Modelica.Blocks y la biblioteca independiente 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 heterogneo, formado por componentes de otras bibliotecas.
2 DLR

Institute of System Dynamics and Control, Alemania

9 Modelado y simulacin con OpenModelica

216

Figura 9.64: Sistema de control de velocidad del motor de corriente continua

9.8.1

Control de velocidad de un motor de corriente continua

En la figura 5.1 se present el diagrama de simulacin Modelica del motor de corriente continua de la figura 2.13. Ahora se incorporarn los elementos necesarios
para el control de su velocidad de rotacin, tal como se ilustra en la figura 9.64.
En el diagrama de simulacin se utilizan los siguientes componentes:
1. Motor de corriente continua
Componentes elctricos
Modelica.Electrical.Analog.Basic.EMF
Modelica.Electrical.Analog.Basic.Ground
Modelica.Electrical.Analog.Basic.Inductor
Modelica.Electrical.Analog.Basic.Resitor
Componentes mecnicos
Modelica.Mechanics.Rotational.Components.Damper
Modelica.Mechanics.Rotational.Components.Inertia
2. Sistema de control
Elemento de medicin (sensor transmisor)
Modelica.Mechanics.Rotational.Sensors.SpeedSensor
Controlador
Modelica.Blocks.Continuous.PI
Modelica.Blocks.Math.Feedback

9.8. Sistemas de control

217

Figura 9.65: Controlador


proporcional e integral (PI)

Modelica.Blocks.Sources.Step
Elemento final de control
Modelica.Electrical.Analog.Sources.SignalVoltage
3. Perturbacin de carga
Modelica.Mechanics.Rotational.Sources.TorqueStep
El diagrama de simulacin de la figura 9.64, incorpora componentes no causales
elctricos y mecnicos, y bloques causales.
Se utilizar el controlador con un algoritmo de control proporcional e integral
(PI), mostrado en la figura 9.65, cuya seal de salida est dada por la ecuacin




1
1
u(s) = Kp 1 +
e(s) = Kp 1 +
[r(s) y(s)],
(9.45)
Ti s
Ti s
donde Kp es la ganancia del controlador, Ti la constante de tiempo integral, e(s) el
error, r(s) el valor deseado, y(s) la seal realimentada y u(s) la seal de salida.
En el diagrama de bloques de la figura 9.65 y en (9.45), se ha empleado la notacin utilizada normalmente en los textos de teora de control, para designar a las
variables de un sistema de control realimentado. Es importante distinguir ahora, entre
esta notacin 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 implementacin 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.66.
La ecuacin del comparador es y=u1-u2 y la del PI y=k(Ts+1)/(Ts)u. En el
.
.
bloque PI, la ganancia del controlador es k = Kp y el tiempo integral T = Ti que tiene
unidades de segundo.

9 Modelado y simulacin con OpenModelica

218
Figura 9.66: Diagrama Modelica para un
controlador PI

Por lo tanto, la entrada del valor deseado r es feedback1.u1, la entrada de


la seal 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 seal de salida del controlador u PI.y. La conexin entre los dos bloques la establece la ecuacin de conexin
connect(feedback1.y, PI.u).
La asignacin de variables y la conexin entre los bloques la hace automticamente el editor grfico, al elaborarse el diagrama de interconexin del sistema simulado.
Los parmetros del motor son: Ra = 2,25 , La = 0,20 H, J = 0,05 kg m2 , B =
0,01 N m s y K = Ke = 0,02 V/(rad/s) = Kt = 0,02 N m A1 .
Los parmetros del algoritmo de control proporcional integral (PI) son: Kp = 0,75
y Ti = 30 s.
El motor se encuentra inicialmente detenido. En el instante t = 20 s se introduce
el valor deseado de la velocidad de rotacin del motor r = 1000 rad s1 . Posteriormente en t = 200 s, se aplica una perturbacin (par de carga) TL = 0,80 N m.
En la figura 9.67 se muestra el valor deseado (r) y el valor real (y) de la velocidad
del motor, para 0 t 400 s. Adems, se muestra la seal 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 rad s1 ) sin error permanente. Adems, cuando se
presenta el par perturbador, que produce un descenso en la velocidad de rotacin
del motor, el sistema de control toma la accin correctiva necesaria, para llevar la
velocidad de rotacin del motor de regreso a su valor deseado.

9.8.2

Sistemas de control en diagramas de bloques

Una forma tradicional de efectuar la simulacin de los sistemas dinmicos, es utilizando diagramas de bloques. En estos, por lo general, algunos de los bloques representan la funcin de transferencia de los componentes del sistema simulado. Por

9.8. Sistemas de control

219

Figura 9.67: Sistema de control de velocidad del motor de corriente continua


lo tanto, se trata usualmente de la utilizacin de una aproximacin lineal, e incluso
de orden reducido, de sistemas que por lo general son no lineales.
Sin embargo, en muchas ocasiones esta metodologa 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.68 se muestra el diagrama de bloques realizado con Modelica, de
un lazo de control realimentado PID, para un proceso de segundo orden ms 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) =

w2 KeLs
,
s2 + 2 n s + n2

(9.46)

con ganancia K = 1, frecuencia natural n = 2 rad s1 , razn de amortiguamiento


= 2 (sobre amortiguado) y tiempo muerto aparente L = 0,5 s.

220

9 Modelado y simulacin con OpenModelica

Figura 9.68: Sistema de control PID


La biblioteca Modelica.Blocks.Continuous incluye tres bloques de control:
los algoritmos bsicos proporcional e integral (PI) y proporcional, integral y derivativo estndar con filtro derivativo (PID), los cuales operan directamente sobre su
entrada (la seal 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 seal de salida y prevencin del
desbordamiento de la accin integral, tal como se describe en strm y Hgglund
(1995). Este ser el utilizado en este ejemplo.
Los parmetros para el controlador utilizado son: Kp = 1,25, Ti = 1, 20 s, Td =
0,30 s, = 0,50 y = 0. Estos corresponden, en la ventana de parmetros del bloque
LimPID, a: k, Ti, Td, wp y wd, respectivamente.
En la figura 9.69 se muestra el comportamiento de la variable controlada y de
la seal de salida del controlador, ante un cambio en el valor deseado r = 10 %
(en t = 1 s), seguido posteriormente de un cambio en la perturbacin d = 5 % (en
t = 15 s).
Como las seales del grfico se han seleccionado como las salidas de los diferentes bloques, estas estn 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 matemticas, 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:

9.8. Sistemas de control

221

Figura 9.69: Comportamiento del sistema de control PID


Integrator - integral (K).
Derivative - derivada real (K, T ).
FirstOrder - funcin de transferencia de primer orden (K, T ).
SecondOrder - funcin de transferencia de segundo orden (K, , n ).
TransferFuncion - funcin de transferencia, cociente de dos polinomios.
FixedDelay - tiempo muerto fijo (L).
PadeDelay - aproximacin de Pad del tiempo muerto (L, n, m).

9.8.3

Efecto del periodo de muestreo en un sistema de control digital

Supngase 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.70 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 conexin (entrada
y salida), del controlador con el proceso controlado.
Los componentes usados son:
Modelica.Blocks.Continuous.FirstOrder (2)
Modelica.Blocks.Discrete.Sampler

222

9 Modelado y simulacin con OpenModelica

Figura 9.70: Diagrama del sistema de control digital

Figura 9.71: Comportamiento de la variable controlada con dos periodos de muestro


distintos
Modelica.Blocks.Discrete.ZeroOrderHold
Modelica.Blocks.Math.Feedback
Modelica.Blocks.Math.Gain
Modelica.Blocks.Sources.Step
La ganancia del modelo del proceso es K = 1 y las constantes de tiempo T = 10 s.
El controlador tiene una ganancia Kp = 4.
En la figura 9.71 se muestran las respuestas del sistema de control, ante un cambio escaln 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

9.8. Sistemas de control

223

Figura 9.72: Realimentacin lineal en el estado


de muestreo T = 0,1 s (rpido) 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 dinmica del modelo del proceso controlado
simulado, se deteriora el comportamiento del sistema de control. La respuesta inicial
es ms lenta (tiene un mayor tiempo de levantamiento y un mayor tiempo al pico),
el sobrepaso mximo aumenta, el sistema es ms oscilatorio (disminuye el amortiguamiento), y tarda ms 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
dinmico del sistema de control se debe, exclusivamente, al periodo de muestreo
utilizado.

9.8.4

Control mediante realimentacin lineal en el estado

El diagrama de bloques de un esquema de control por realimentacin lineal en los


estados, se muestra en la figura 9.72.
El proceso controlado est dado por las ecuaciones de estado y salida
x (t) = Ax(t) + bu(t),
y(t) = c x(t)
T

(9.47)
(9.48)

y la ley de control en el estado, por


u(t) = kT x(t) + kr r(t).

(9.49)

Las ganancias de realimentacin en k, se ajustan para lograr el comportamiento


dinmicos deseado y la ganancia de valor deseado kr para obtener un error permanente igual a cero, a un cambio escaln en el valor deseado.

9 Modelado y simulacin con OpenModelica

224

Figura 9.73: Diagrama de interconexin del control por realimentacin 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),
2
dt
dt

(9.50)

cuyo modelo en variables de estado es



 
0
1
0
x =
x(t) +
u(t),
2 3
2


y(t) = 1 0 x(t).

(9.51)
(9.52)

Las especificaciones de diseo son: Mp 10 %, ta5 % 1,5s y e pro = 0.


Para cumplir con estas especificaciones se requiere kr = 8,0 y kT = [7,0 0,90].
El diagrama de simulacin del sistema de control con Modelica, se muestra en la
figura 9.73.
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) 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 parmetros son: A(nx,nx), B(nx,nu), C(ny,nu) y D(ny,nu), tal como se
meustra en la ventana de parmetoros de la figura 9.74.

9.8. Sistemas de control

225

Figura 9.74: Parmetros del bloque


StateSpace

El bloque Modelica.Blocks.Math.MultiSum (vector_K) tiene una entrada vectorial con nu elementos y una salida escalar, la cual es una combinacin lineal de las
seales de entrada, dada por la ecuacin
y(t) = k1 u1 (t) + k2 u2 (t) + + knu unu (t).

(9.53)

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 escaln del magnitud 10 %
en el valor deseado, seguido de un cambio de magnitud -5 % en la perturbacin, se
muestra en la figura 9.75.
Como se observa, el sistema cumple con las especificaciones dadas para la respuesta del servo control.
Las curvas de respuesta tambin muestran dos caractersticas inherentes al control realimentado en el estado, tal como se ha implementado: 1. existe un error permanente ante un cambio escaln en la perturbacin; 2. se produce un salto brusco
grande en la seal de control, ante un cambio escaln en el valor deseado.
Estas dos caractersticas estn en conflicto, ya que ambas dependen de kr , pero el
salto a la salida del controlador en forma directa, mientras que el error permanente a
un cambio en la perturbacin, lo es en forma inversa.
Adems, si se desea reducir el error permanente ante el cambio en la perturbacin, modificando el valor de kr , pero manteniendo siempre un error cero a un cambio
en el valor deseado, debern calcularse de nuevo las ganancias en k, lo cual tiene como consecuencia, un cambio de las caractersticas dinmicas del lazo de control.

9 Modelado y simulacin con OpenModelica

226

Figura 9.75: Variables del sistema de control realimentado en el estado

9.8.5

Control ptimo de tiempo mnimo

El objetivo de la teora de control ptimo, es determinar la seal de control (ley de


control) que haga que un sistema o proceso controlado, satisfaga las restricciones
fsicas impuestas y que al mismo tiempo, optimice (minimice o maximice) algn
criterio de desempeo utilizado para evaluarlo (Kirk, 1970).
Problemas de control ptimo tpicos son el problema de tiempo mnimo, el de
error final mnimo, el de energa mnima y el de esfuerzo de control mnimo.
Se considerar que el modelo matemtico del proceso controlado, es de la forma
dx(t)
= f(x(t), u(t),t),
dt

(9.54)

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 mnimo, consiste en determinar la ley de control
ptima u (t), que permite llevar al sistema desde una condicin inicial dada (x0 ), a
una condicin objetivo especfica, en un tiempo mnimo.
La funcional de costo a optimizar en este caso, es entonces
Jt =

Z tf
t0

dt = t f t0 .

(9.55)

Supngase para el ejemplo, que se desea determinar la ley de control u(t), con la

9.8. Sistemas de control

227

restriccin |u(t)| 1, que transfiera al sistema (integrador doble)


dx1 (t)
= x2 (t),
dt
dx2 (t)
= u(t),
dt

(9.56)
(9.57)

desde cualquier estado inicial (x10 , x20 ) hasta el origen, en un tiempo mnimo.
La solucin de este problema es bien conocida y dada por (Kirk, 1970):

1, para x(t) S (x(t)) > 0,

+1, para x(t) S (x(t)) < 0,

u (t) = 1, para x(t) S (x(t)) = 0 y x2 (t) > 0,


(9.58)

+1, para x(t) S (x(t)) = 0 y x2 (t) < 0,

0,
para x(t) = 0,
donde la funcin o curva de conmutacin S (x(t)) es

1
.
S (x(t)) = x1 (t) + x2 (t) |x2 (t)| .
2

(9.59)

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 mnimo, corresponde
a utilizar el esfuerzo de control extremo (mximo, mnimo, o una combinacin de
estos), durante el intervalo de operacin.
El programa para la simulacin con Modelica, del sistema de control con una ley
de control de tiempo mnimo es
model ControlOptimo
// Control
o ptimo de tiempo m
nimo
Real x1 ( start = 0 , fixed = true ) ;
Real x2 ( start = 2 , fixed = true ) ;
Real u , S ;
equation
S = x1 + 0 .5 * x2 * abs ( x2 ) ;
if S > 0 then
u = - 1;
elseif S < 0 then
u = 1;
else
u = 0;
end if ;

228

9 Modelado y simulacin con OpenModelica

Figura 9.76: Plano de fase del control ptimo de


tiempo mnimo

der ( x1 ) = x2 ;
der ( x2 ) = u ;
when abs ( x1 ) < 0 .01 and abs ( x2 ) < 0 .01 then
terminate ( " Alcanzado el origen " ) ;
end when ;
annotation ( experiment ( StartTime = 0 , StopTime = 10 ,
Tolerance = 1 e - 006 , Interval = 0 .01 ) ) ;
end ControlOptimo ;

Tomando en consideracin que el tiempo total que tarda el sistema en ir desde


el estado inicial hasta el origen, depende precisamente del punto de partida, en vez
de ejecutar simulaciones controladas por el intervalo de tiempo de la simulacin,
en este caso se ha utilizado la instruccin terminate, de manera que la corrida de
simulacin termina cuando se ha alcanzado el origen (con el criterio de convergencia
|x1 | < 0,01 y |x2 | < 0,01), independientemente del tiempo transcurrido (ver la seccin
4.2.14).
Esto ltimo contribuye tambin a evitar problemas en la solucin numrica, en
la vecindad del origen, si el intervalo de simulacin excede considerablemente al
tiempo requerido para arribar al mismo.
En el plano de fase (x1 , x2 ) de la figura 9.76, 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 , x2 ) se emplea el valor extremo de la seal de control (+1 o 1 segn corresponda) y el sistema evoluciona
hasta arribar a la curva de conmutacin. En ese punto, el signo de la seal de control

9.8. Sistemas de control

229

Figura 9.77: Evolucin de


los estados y el control para
(x10 = 0, x20 = 2)

se invierte y el sistema sigue sobre la curva de conmutacin hasta el origen.


Para los estados iniciales que se encuentran sobre la curva de conmutacin, el
sistema evoluciona siguiendo sobre esta hasta el origen.
El caso particular de la evolucin de los estados y el control, a partir del punto
inicial (x10 = 0, x20 = 2), se muestra en la figura 9.77.
En el modelo, se haba establecido el tiempo final para la corrida de simulacin
como StopTime = 10. Sin embargo, tal como se puede apreciar en la figura 9.77,
esta termin antes de los 5 s.
La solucin del problema de control ptimo indica que, partiendo del punto inicial (x10 = 0, x20 = 2), el tiempo mnimo para que el sistema alcance el origen 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 simulacin termin, al cumplirse el criterio de convergencia utilizado para
ejecutar la ecuacin terminate.

9.8.6

Sistema de control inicialmente en un punto de equilibrio

Se desea controlar el nivel del lquido en el taque 2, del sistema de tanques en serie
presentado en la seccin 9.5.2, manipulando el caudal de entrada al tanque 1. Para
esto, se ha adicionado un transmisor electrnico del nivel (LT) del lquido del tanque
2, un controlador de nivel (LIC) y una vlvula de control neumtica (LV) para variar
el caudal del fluido que entra al tanque 1, tal como se muestra en la figura 9.78.
El algoritmo de control del controlador es proporcional e integral (PI) cuya salida

9 Modelado y simulacin con OpenModelica

230

Figura 9.78: Sistema de control de nivel


est dada por la ecuacin




Z
Z
1
1
u(t) = Kp e(t) +
e(t)dt = Kp [r(t) y(t)] +
[r(t) y(t)]dt .
Ti 0
Ti 0
(9.60)
Las seales del sistema de control (Y , R, E, U) estn dadas en porcentaje (de 0 a
100 %).
El mbito de medicin del transmisor de nivel es de 0 a 5 m (ganancia del transmisor de nivel Kt = 20 %m1 ) y el caudal mximo por la vlvula de control 0,40
m3 s1 (constante de la vlvula de control Kvc = 0,0040m3 s1 / %). Estos y los dems parmetros del sistema (tanque y vlvula), se listan en la seccin de declaraciones del modelo.
Los parmetros del controlador se han seleccionada arbitrariamente (pero asegurando la estabilidad del sistema de control), como Kp = 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
incremento del 10 %). Luego, en t = 800 s se incrementa la apertura de la vlvula de
salida del tanque 2 en un 10 %.
El modelo Modelica para la simulacin de los tanques con su sistema de control,
es:
model SisControlPI2T

9.8. Sistemas de control

231

// Control PI , sistema hidraulico de dos tanques en serie


constant Real g = 9 .80 ;
parameter Real A1 = 2 " area tanque 1 , m ^2 " ;
parameter Real A2 = 4 " area tanque 2 , m ^2 " ;
parameter Real df = 1000 " densidad fluido " ;
parameter Real Kv1 = 0 .0020 " constante valvula 1 " ;
parameter Real Kv2 = 0 .0015 " constante valvula 2 " ;
parameter Real Kt = 20 " constante transmisor nivel H2 " ;
parameter Real Kvc = 0 .0040 " constante valvula control " ;
parameter Real Kp = 0 .75 " ganancia proporcional controlador " ;
parameter Real Ti = 60 " tiempo integral controlador , s " ;
Real H1 " nivel 1 , m " ;
Real H2 " nivel 2 , m " ;
Real Qe " caudal entrada , m ^3/ s " ;
Real Qs1 " caudal salida 1 , m ^3/ s " ;
Real Qs2 " caudal salida 2 , m ^3/ s " ;
Real Jiae ( start = 0 , fixed = true ) ;
Real R , E , U , Y , Ui , Up ;
M o d e l i c a . B l o c k s . S o u r c e s . S t e p stepR ( height = 10 , offset = 50 ,
startTime = 20 ) ;
M o d e l i c a . B l o c k s . S o u r c e s . S t e p stepD ( height = 0 .10 ,
startTime = 800 ) ;
initial equation
der ( H1 ) = 0;
der ( H2 ) = 0;
der ( Ui ) = 0;
equation
// tanques
A1 * der ( H1 ) = Qe - Qs1 ;
A2 * der ( H2 ) = Qs1 - Qs2 ;
Qs1 = Kv1 * sign ( H1 ) * sqrt ( df * g * abs ( H1 ) ) ;
Qs2 = Kv2 * ( 1 + stepD.y ) * sqrt ( df * g * abs ( H2 ) ) ;
// transmisor de nivel
Y = Kt * H2 ;
// valor deseado
R = stepR.y ;
// controlador PI
E = R - Y;
Up = Kp * E ;
der ( Ui ) = Kp * E / Ti ;
U = Up + Ui ;
// valvula de control
Qe = Kvc * U ;
annotation ( experiment ( StartTime = 0 , StopTime = 1400 ,
Tolerance = 1 e - 006 ) ) ;
end 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

232

9 Modelado y simulacin con OpenModelica

problema del valor inicial, para encontrar tanto el nivel del lquido en los dos tanques,
como las dems 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 %
...
M o d e l i c a . B l o c k s . S o u r c e s . S t e p stepR ( height = 10 , offset = 50 ,
startTime = 20 ) ;
...

y el conjunto de ecuaciones iniciales


...
initial equation
der ( H1 ) = 0;
der ( H2 ) = 0;
der ( Ui ) = 0;
...

que establecen que el sistema se encuentra inicialmente, en un punto de equilibrio.


La variacin de los niveles en los tanques, as como de las variables del sistema
de control, ante el cambio en el valor deseado y la perturbacin, se muestran en la
figura 9.79.
Como se aprecia en la figura 9.79 y con ms detalle en la figura 9.80, la solucin
del problema del valor inicial, determin el valor de las variables en el punto de
operacin 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. Sistemas de control

Figura 9.79: Comportamiento del sistema de control de nivel

Figura 9.80: Variables en el punto de equilibrio inicial (R = 50 %)

233

10
Cuadernos interactivos con OMNotebook
El objetivo de este captulo es presentar, mediante el desarrollo parcial de un cuaderno electrnico interactivo, el uso del editor de cuadernos electrnicos interactivos
de OpenModelica, el OMNotebook, introducido brevemente en la seccin 8.4.

10.1 Introduccin
Los cuadernos electrnicos interactivos desarrollados con el OMNotebook de OpenModelica, estn compuestos por un conjunto de celdas. 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), o celdas de agrupacin (groupcell).
Las celdas de texto contienen los prrafos de texto, ecuaciones y figuras. Cada una tiene un estilo propio que puede ser: ttulo (Title), sub ttulo (Subtitle), autor (Author ), seccin (Section), sub seccin (Subsecction),
texto (Text). Estas ltimas permiten introducir enlaces a otros cuadernos
electrnicos.
Adems, se puede seleccionar el formato (fuente, tamao, 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 evaluacin de la celda se efecta con las teclas [Shift]+[Enter] o
[Shift]+[Intro].
Los resultados de la evaluacin de la celda, son mostrados inmediatamente
despus de esta. Estos pueden ocultarse, pulsando dos veces el botn izquierdo
del apuntador, sobre la marca lateral derecha de la celda.
235

10 Cuadernos interactivos con OMNotebook

236

El resultado de la evaluacin de una celda (instruccin Modelica), puede ser


por ejemplo, el despliegue grfico de una o ms variables.
Las celdas de agrupacin 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 lnea horizontal gruesa bajo esta y se selecciona pulsando una vez dentro de esta, con el botn izquierdo del apuntador.
Dentro de las celdas de texto, el cursor se muestra como una lnea vertical delgada.
Las opciones de los mens desplegables, se detallan en el Manual para los usuarios de OpenModelica (Open Source Modelica Consortium, 2014).

10.2 Desarrollo de un cuaderno electrnico interactivo


Como tema para el cuaderno electrnico interactivo de ejemplo, desarrollado con
el editor OMNotebook, se tomar el anlisis del comportamiento de los sistemas
dinmicos de primer y segundo orden.

Introduccin
Una vez abierto el OMNotebook, con la opcin [New] del men [File], se iniciar el
desarrollo del cuaderno, introduciendo celdas de texto ([Cell][Add Texcell]) y definiendo el estilo de estas como ttulo, autor, seccin, subseccin y texto, tal como se
muestra en la figura 10.1
Las celdas de texto contendrn los prrafos descriptivos del tema tratado en el
cuaderno, as como las figuras y ecuaciones necesarias.
Para la introduccin de los listados de los modelos y la ejecucin de las instrucciones en Modelica, deben introducirse celdas de instrucciones ([Cell][Add Inputcell])

Sistemas de primer orden


Como parte del anlisis presentado, se emplearn sistemas de primer orden, cuya
funcin de transferencia es
K
P(s) =
,
(10.1)
Ts+1
donde K es la ganancia y T la constante de tiempo.

10.2. Desarrollo de un cuaderno electrnico interactivo

237

Figura 10.1: Estructura preliminar del cuaderno en OMNotebook


La ecuacin diferencial del sistema dado por (10.1) es
T

dy(t)
+ y(t) = Ku(t).
dt

(10.2)

El inters 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.
Para mostrar el modelo y el comportamiento dinmico del sistema, se incluirn
tres celdas de instrucciones, alternadas con las de texto correspondientes, para incluir
el modelo, la instruccin de simulacin y la de despliegue grfico, como se muestra
en la figura 10.2.
Cada una de las celdas de instruccin se evala, seleccionndola 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 parmetros (K, T ) del modelo, y si fuera necesario,
los tiempos de control de la simulacin, y observar inmediatamente el efecto que
estos tienen sobre la respuesta del sistema.

238

Figura 10.2: Simulacin del sistema de


primer orden

Figura 10.3: Comportamiento del sistema de


primer orden

10 Cuadernos interactivos con OMNotebook

10.2. Desarrollo de un cuaderno electrnico interactivo

239

Figura 10.4: Despliegue grfico personalizado

Para esto, debe ir a la celda con el modelo y cambiar los parmetros (K, T ) a los
valores que se desee y volver a evaluar las tres celdas. Si se modifica sustancialmente
el valor de la constante de tiempo del modelo, pudiera ser necesario adecuar el tiempo
final de la simulacin (StopTime) para la la curva de respuesta se observe en forma
adecuada.
El despliegue grfico de la respuesta, se ha hecho utilizando la configuracin predeterminada de la instruccin plot. Este se puede modificar empleando las opciones
descritas en la seccin 8.2.
Un ejemplo de esto, se muestra en la figura 10.4.
Tambin se pueden modificar las caractersticas de la figura, utilizando el men
desplegado con la opcin Setup, del men de la ventana del grfico.

Sistemas de segundo orden


Para el anlisis de los sistemas de segundo orden, se considerar el sistema dado por
la ecuacin 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 razn de amortiguamiento.


El modelo del sistema de segundo orden incluido en una celda de instrucciones
del cuaderno, se lista en la figura 10.5.

240

10 Cuadernos interactivos con OMNotebook

Figura 10.5: Modelo


del sistema de segundo
orden

Figura 10.6: Plano


de fase (Y-X) del
sistema de segundo
orden

En la figura 10.6 se muestran las celdas con las instrucciones, para la simulacin
del modelo y para el despliegue grfico de la trayectoria Y(X) del sistema libre, a
partir de una condicin inicial dada (plano de fase).
El usuario podr experimentar variando los parmetros (K, n , ) del modelo y
observar su efecto sobre la respuesta temporal y el plano de fase del sistema.

10.2. Desarrollo de un cuaderno electrnico interactivo

241

El cuaderno incluir adems del texto descriptivo correspondiente, la simulacin


de un circuito elctrico RLC, utilizando componentes de la biblioteca Modelica y la
ecuacin connect.
El cuaderno electrnico interactivo de ejemplo, para el anlisis de los sistemas
de primer y segundo orden, 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 pgina web:
http://pidplanet.wordpress.com/modelica/.

11
Introduccion a JModelica.org
JModelica.org (kesson, 2007) es un entorno en Python para la compilacin, simulacin, optimizacin y anlisis de modelos Modelica. Este es el resultado de una
investigacin realizada en el Departamento de Control Automtico de la Universidad
de Lund, Suecia1 . En la actualidad, es desarrollado y mantenido por Modelon AB,
Lund, Suecia2 .
La descripcin de su uso, se hace con base en el Manual del usuario de la versin
1.14 para Windows (Modelon AB, 2014).

11.1 Introduccin
El instalador para MS Windows se encuentra disponible en el sitio Web de JModelica.org3 . En este, tambin estn los cdigos fuente para realizar la compilacin e
instalacin para Linux y Mac OS X.
JModleica.org utiliza como base, el lenguaje Modelica para el modelado de sistemas heterogneos y su extensin Optimica para la formulacin de los problemas
de optimizacin.
Provee un compilador para los modelos Modelica (en archivos con extensin
.mo) y otro para los problemas de optimizacin Modelica/Optimica (en archivos con
extensin .mop).
Adems, para la interaccin con el usuario JModleica.org depende de intrpretes
interactivos en Python.
La interfaz Python de JModelica.org permite interaccionar con los modelos Modelica y Optimica, y est constituida por los siguientes paquetes:
PyModelica - Compila el cdigo Modelica y Optimica a FMU (Functional
Mock-up Unit) y JMU (JModelica.org Model Unit).
1 http://www.control.lth.se/
2 http://www.modelon.com/

3 http://www.jmodelica.org/

243

11 Introduccin a JModelica.org

244

PyFMI - Realiza la simulacin, la manipulacin de parmetros y el despliegue


grfico de resultados, con base en un FMU.
PyJMI - Resuelve los problemas de optimizacin, con base en un JMU.
La simulacin del modelo dinmico, es hecha con los algoritmos de solucin de
EDO y DAE de Assimulo4 y SUNDIALS5 .
JModleica.org exporta e importa objetos FMU (Andersson et al., 2011a), de conformidad con el estndar FMI (Funtional Mock-up Interface).
Un JMU es un archivo comprimido con un formato especfico de JModelica.org,
e incorpora todos los archivos requeridos para cargar y trabajar con el modelo compilado en JModelica.org.
En el caso de los FMU el modelo es convertido a EDO, mientras que en el caso
de los JMU, el modelo es convertido a DAE.
En el caso de las simulaciones dinmicas, se recomienda el uso de objetos FMU.
Los JMU son utilizados en la solucin de los problemas de optimizacin.
Para la interaccin con Python, JModelica.org proporciona tres interfaces distintas: Python (intrprete interactivo de instrucciones en Python), IPython (intrprete
interactivo de instrucciones en Python, con el formato del cdigo destacado) y PyLab (IPython junto con PyLab para el clculo numrico y el despliegue grfico). Se
recomienda utilizar el intrprete interactivo de instrucciones Python PyLab.
Se puede utilizar el intrprete interactivo PayLab, para introducir las instrucciones Python una por una, sin embargo, usualmente es ms conveniente elaborar un
archivo de texto con la lista 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 intrpretes interactivos estn disponibles en el men de aplicaciones de Windows [JModelica.org].

11.2 Intrprete interactivo de Python PayLab


La interfaz del usuario del intrprete PayLab 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
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

11.2. Intrprete interactivo de Python PayLab

245

Figura 11.1: Interfaz


del usuario en Python
PyLab

In [1]: import os
In [2]: os . getcwd ()

y cambiarlo por el en que residen los modelos a simular, usando


In [3]: os . chdir ( ' t r a y e c t o r i a _ d i r e c t o r i o _ d e _ t r a b a j o ' )

La interfaz en Python PayLab, es un mdulo de matplotlib8 que combina las


capacidades matemticas de numpy9 , con las de las funciones para el despliegue
grfico de variables de pyplot. Esto proporciona un ambiente interactivo, al estilo
MATLAB. Por lo tanto, se puede utilizar PayLab como una calculadora poderosa.
Numpy es una biblioteca Python, para trabajar con arreglos multidimensionales
(ndarray).
Matplotlib es una biblioteca Python, para el despliegue grfico de variables en
dos dimensiones. Las instrucciones son muy similares a las de MATLAB, como por
ejemplo: figure( ), plot( ), subplot( ), xlabel( ), axis( ), y las utilizadas para la
especificacin de las caractersticas del trazo grfico, las cuales se emplearan para el
despliegue de las variables resultantes de la simulacin. El texto a desplegar, puede
contener expresiones matemticas en LATEX, si se encierra entre dos smbolos $ ($
expresi
on $).
PayLab combina numpy y pyplot, en un solo espacio para el trabajo interactivo, permitiendo utilizar las funciones de estos mdulos, con solo nombrarlas. Sin
embargo, para la elaboracin de las listas de instrucciones Python, se recomienda
8 http://matplotlib.org/
9 http://www.numpy.org/

246

11 Introduccin a JModelica.org

mantenerlos en espacios separados, importndolos al intrprete con las instrucciones:


import numpy as np
import matplotlib . pyplot as plt

Por lo tanto, el acceso a las funciones de estos mdulos, se har utilizando la


notacin punto, por ejemplo t = np.arange(0, 10.1, 0.1), o la instruccin
plt.plot(t, varX, c=r, lw=2, label = Variable X(t)).
Esta ser la forma en que se utilizarn los mdulos Python, en los programas de
este trabajo.

11.3 Compilacin del modelo Modelica a FMU


Como un primer ejemplo del uso de JModelica.org, se utilizar el circuito elctrico
presentado en la seccin 4.4, cuyo modelo Modelica se ha guardado en el archivo
CircuitoEectrico.mo.
Las instrucciones Python para su compilacin a FMU, simulacin y despliegue
de los resultados, es (archivo CircuitoElectricojm.py)
# Compilaci
o n y simulaci
o n del modelo CircuitoElectrico . mo
# inicializaci
on
from pymodelica import compile_fmu
from pyfmi import load_fmu
import matplotlib . pyplot as plt
# compilaci
o n a FMU
fmu_name = compile_fmu ( " CircuitoElectrico " ," CircuitoElectrico . mo " )
cirelec = load_fmu ( fmu_name )
# simulaci
o n del FMU y obtenci
o n de resultados
simres = cirelec . simulate ( final_time =1.40)
vc = simres [ " Vc " ]
il = simres [ " Il " ]
t = simres [ " time " ]
# gr
a ficos de las respuestas
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 ( ' Tiempo ( s ) ' )
plt . grid ( True )
plt . subplot (1 ,2 ,2)

11.4. Optimizacin con JModelica.org

247

Figura 11.2: JModelica/Matplotlib - Variables del circuito elctrico

plt . plot (t , il , c = ' r ' , lw =2 , label = ' $i_L ( t ) $ ' )


plt . legend ( loc =0)
plt . xlabel ( ' Tiempo ( s ) ' )
plt . grid ( True )
plt . tight_layout ()
plt . show ()

Este se ejecuta con la instruccin


In [ xx ] execfile ( ' C i r c u i t o E l e c t r i c o j m . py ' )

En la figura 11.2 se muestran las curvas de la tensin a travs del capacitor y la


corriente por el inductor, en la ventana grfica de Matplotlib.
Esta incluye un men de navegacin, desplazamiento, ampliacin y reduccin,
configuracin y guardado del grfico en un archivo (png, eps, svg, pdf, ...).
Los resultados de la simulacin, son guardados en un archivo de texto con el
nombre nombreProgramaPy_result.txt, el cual puede ser utilizado para desplegar las curvas de respuesta, empleando la interfaz grfica Plot GUI (ver la seccin
11.5).

11.4 Optimizacin con JModelica.org


Para la solucin del problema de optimizacin, JModelica.org provee cuatro algoritmos:

11 Introduccin a JModelica.org

248

1. Optimizacin dinmica de un modelo dado por DAE con JMU. El modelo no


debe contener discontinuidades.
2. Optimizacin dinmica de un modelo dado por DAE con CasADi.
3. Optimizacin de un modelo dado por ODE usando CasADi.
4. Optimizacin sin derivadas de un modelo dado por ODE con FMU. El modelo
puede contener discontinuidades.
El algoritmo 1. es el preseleccionado para la solucin de problemas de control
ptimo y de estimacin de parmetros. Utiliza CppAD para el clculo de las derivadas e Ipopt para la solucin del problema no lineal resultante.
El algoritmo 2. est todava en desarrollo. Resuelve problemas de control ptimo
y de estimacin de parmetros. Utiliza CasADi para las derivadas e Ipopt para la
solucin del problema no lineal.
El algoritmo 3 es experimental.
El algoritmo 4. utiliza el algoritmo Nelder-Mead sin derivadas. Resuelve problemas de optimizacin de parmetros y calibracin de modelos. El modelo puede haber
sido exportado como FMU, utilizando JModelica.org u otra herramienta.
CasADi (Andersson, 2013) es una herramienta de software para la optimizacin
en general y el control ptimo en particular.

El problema del esfuerzo de control mnimo


Como ejemplo introductorio al uso de JModleica.org para resolver un problema de
optimizacin, control ptimo en este caso, se emplear el mismo problema planteado
en la seccin 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 inicial x0 = (2, 2) hasta el origen (0, 0), con el esfuerzo de control
u(t) mnimo, sujeto a la restriccin |u(t)| 1.
La funcional de costo a optimizar (minimizar) es entonces
J(x, u) =

Z 
0


x12 (t) + x22 (t) + u2 (t) dt.

(11.3)

El modelo para la optimizacin escrito en Optimica (extensin de Modelica), es

11.4. Optimizacin con JModelica.org

249

optimization ContOptiUminjm (
objective = cost ( finalTime ) ,
startTime = 0 .0 ,
finalTime = 10 )
// Modelo - control
o ptimo de esfuerzo de control m
nimo
Real x1 ( start = -2 , fixed = true ) ;
Real x2 ( start = 2 , fixed = true ) ;
Real cost ( start = 0 , fixed = true ) ;
input Real u ;
equation
der ( x1 ) = x2 ;
der ( x2 ) = u ;
der ( cost ) = x1 ^2 + x2 ^2 + u ^2;
constraint
abs ( u ) <= 1;
end ContOptiUminjm ;

Como de indica en la primera lnea del programa, el modelo se define como


un problema de optimizacin (optimization) y debe guardarse en un archivo con
extensin .mop (extensin de Optimica). En este ejemplo, el archivo Optimica es
ContOptiUminjm.mop.
Este contiene las ecuaciones que definen el modelo del sistema y la especificacin
para la optimizacin: la funcional de costo (cost) y las restricciones del problema
(constraint) si las hubiera.
El problema de la optimizacin se resuelve siempre como un problema de minimizacin, por la que la funcional de costo debe estructurarse, de manera que el
ptimo sea su valor mnimo.
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 ecuacin
diferencial (definiendo la derivada de la funcional de costo igual a su integrando).
El listado de instrucciones Python para compilar el modelo, ejecutar la optimizacin con restricciones y mostrar los resultados, es (archivo ContOptiUminjm.py)
# Control
o ptimo de esfuerzo de control m
nimo
from pymodelica import compile_jmu
from pyjmi import JMUModel
import matplotlib . pyplot as plt
# compilar y cargar el modelo
coumjmu = compile_jmu ( " ContOptiUminjm " ," ContOptiUminjm . mop " )
copt = JMUModel ( coumjmu )
# ejecutar la optimizaci
on
optres = copt . optimize ()

250

11 Introduccin a JModelica.org

# resultados
x1 = optres [ ' x1 ' ]
x2 = optres [ ' x2 ' ]
u = optres [ ' u ' ]
ju = optres [ ' cost ' ]
t = optres [ ' time ' ]
# gr
a ficos
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 ( ' Tiempo ( s ) ' )
plt . grid ( True )
plt . ylabel ( ' $x_1 ( t )$ , $x_2 ( t ) $ ' )
plt . xlabel ( ' Tiempo ( s ) ' )
plt . subplot (2 ,2 ,3)
plt . plot (t ,u , c = ' m ' , lw =2)
plt . grid ()
plt . ylabel ( ' u ( t ) ' )
plt . xlabel ( ' Tiempo ( s ) ' )
plt . subplot (2 ,2 ,4)
plt . plot (t , ju , c = ' k ' , lw =2)
plt . grid ()
plt . ylabel ( ' J ( t ) ' )
plt . xlabel ( ' Tiempo ( 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 optimizacin (resultoptim=zzz.optimize()) y se recuperan los
resultados para su anlisis y despliegue grfico.
Los resultados de la optimizacin 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 seccin 8.5, utilizando el OMShell de
OpenModelica.

11.5. JModelica.org Plot GUI

251

2.0

2.0

x1

1.5

x2

1.5

x1 (t), x2 (t)

1.0

x2 (t)

1.0

0.5

0.5

0.0

0.5

1.0
0.0
1.5

0.5
2.0

1.5

1.0

0.5

0.0

0.5

2.0
0

10

10

Tiempo (s)

0.2

0.0

0.2

0.4

4
J(t)

u(t)

x1 (t)

0.6

0.8

1.0

1.2
0

0
0

10

Tiempo (s)

Tiempo (s)

Figura 11.3: JModelica.org - Control ptimo, esfuerzo de control mnimo

11.5 JModelica.org Plot GUI


Como parte del entorno de JModelica.org, se dispone de la interfaz grfica Plot GUI
para visualizar los resultados de una simulacin.
Esta es una aplicacin en Python y est disponible en el men de aplicaciones de
Windows [JModelica.org-1.14] [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 opcin del men [File][Load] se carga el archivo de resultados de una
simulacin u optimizacin (.txt) creado por JModelica.org.
Para el ejemplo se utilizar el archivo CircuitoElectricojm_res.txt, con
los resultados de la simulacin del circuito elctrico, realizada en la seccin 11.3.
Una vez abierto el archivo, en la columna izquierda se muestra el rbol de constantes, parmetros y variables, del cual se seleccionan las que se desee desplegar. Ya

252

11 Introduccin a JModelica.org

Figura 11.4: JModelica.org


Plot GUI - ventana principal

Figura 11.5: Plot GUI opciones para Axis and


Labels

sea varias variables en un solo grfico o en varios. reas adicionales para los grficos
(plot) se adicionan con la opcin del men [Edit][Add Plot].
Seleccionando del men [Edit][Axis/Label], se abre la ventana de configuracin
mostrada en la figura 11.5, para establecer las leyendas a desplegar como ttulo o en
los ejes, y cambiar los valores extremos de las ejes.
El grosor, color, tipo de trazo y marcas de las lneas, 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 grficos, la distribucin de los mismos se puede establecer seleccionado la pestaa de cada uno de ellos y relocalizndolos, tal como se

11.5. JModelica.org Plot GUI

253

Figura 11.6: Plot GUI opciones para Lines and


Legends

muestra en la figura 11.7.


Cada uno de los grficos, se puede guardar en forma individual en un archivo
(.png, .eps, .pdf, ...), seleccionado [File][Save].

254

11 Introduccin a JModelica.org

Figura 11.7: Plot GUI - arreglo de grficos

12
Compilacion, simulacion y optimizacion con
JModelica.org
En el captulo 11 se introdujo el uso de JModelica.org para compilar los modelos
Modelica a FMU y el uso del paquete Matplotlib de Python, para desplegar los resultados de la simulacin del modelo.
Ahora, se mostrar con ms detalle el desarrollo de los programas (las listas
de instrucciones de alto nivel) en Python, para sistematizar la operacin de JModelica.org, Matplotlib y Optimica, con el fin de simular y optimizar sistemas heterogneos modelados con Modelica.

12.1 Introduccin
Con JModleica.org se pueden crear tres tipos de objetos: los modelos FMU (FMUModel), los modelos JMU (JMUModel) y los problemas de optimizacin (OptimizationProblem).
Como se indic en la seccin 8.3.7, tambin se puede utilizar OpenModelica para
compilar los modelos Modelica a objetos FMU.

12.2 Algoritmos de simulacin y optimizacin


JModelica.org utiliza el paquete Python Assimulo1 para resolver ecuaciones diferenciales ordinarias (ODE) y ecuaciones algebraico diferenciales (DAE).
Assimulo incluye mtodos de solucin de paso fijo y de paso variable. El mtodo
preseleccionado es el Sundials CVode2 , el cual es un mtodo de paso mltiple variable y de orden variable, que incluye frmulas de Adams-Moulton para problemas no
rgidos y de diferenciacin hacia atrs (BDF) para problemas rgidos.
1 http://www.jmodelica.org/assimulo

2 http://computation.llnl.gov/casc/sundials/description/description.html

255

256

12 Compilacin, simulacin y optimizacin con JModelica.org

12.3 Proceso de compilacin y carga del modelo


Tal como se mostr en la seccin 11.2, se utilizar el intrprete interactivo para Python PayLab y se establecer primero el directorio de trabajo con las instrucciones
In [1]: import os
In [2]: os . chdir ( ' t r a y e c t o r i a _ d i r e c t o r i o _ d e _ t r a b a j o ' )

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 compilacin y simulacin.
Las instrucciones de alto nivel pueden ser introducidas en forma interactiva en
PayLab, o mediante su inclusin en listas de instrucciones, empleando un editor de
texto.

12.3.1

Compilacin del modelo

Compilacin a FMU
Los componentes FMU pueden ser compilados como FMU-ME (model exchage)
para el intercambio de modelos, o como modelos FMU-CS (co-simulation), los
cuales contienen tambin el algoritmo para su solucin.
La compilacin de un modelo Modelica a FMU-ME, se realiza con las siguientes
instrucciones:
# Compilaci
o n a FMU - ME version 1.0
# importar el compilador
from pymodelica import compile_fmu
from pyfmi import load_fmu
# compilar y cargar el modelo
nombreFMU = compile_fmu ( ' modeloModelica ' , ' modeloArchivo . mo ' )
miFMU = load_fmu ( nombreFMU )

Los parmetros preestablecidos para el compilador son: target - compilar como


FMU-ME y version - FMU 1.0.
Para la compilacin de un modelo Modelica a FMU-CS, se utilizan las siguientes
isntrucciones:
# Compilaci
o n a FMU - CS version 1.0
# importar el compilador
from pymodelica import compile_fmu
from pyfmi import load_fmu

12.3. Proceso de compilacin y carga del modelo

257

# compilar y cargar el modelo


nombreFMU = compile_fmu ( ' modeloModelica ' , ' modeloArchivo . mo ' ,
target = ' cs ' )
miFMU = load_fmu ( nombreFMU )

Si la compilacin es exitosa, se crea el archivo nombreFMU.fmu en el directorio


de trabajo.
Compilacin a JMU
Los objetos JMU son creados con JModelica.org, para su utilizacin en problemas
de optimizacin.
Las instrucciones para la compilacin de un modelo Modelica a JMU, son:
# Compilaci
o n a JMU
# importar el compilador
from pymodelica import compile_jmu
from pyfmi import load_jmu
# compilar y cargar el modelo
nombreJMU = compile_jmu ( ' modeloModelica ' , ' modeloArchivo . mo ' )
miJMU = load_jmu ( nombreJMU )

Con esto se crea el archivo nombreJMU.jmu en el directorio de trabajo.


Opciones del compilador
Los parmetros de la llamada del compilador FMU se pueden desplegar con la instruccin help(compiler_fmu) y los correspondientes a ls del compilador JMU con
help(compiler_jmu).
Los parmetros para la compilacin a FMU son:
compile_fmu ( class_name , file_name =[] , compiler = ' auto ' , target =
' me ' , version = ' 1.0 ' , compiler_options =[] , compile_to = ' . ' ,
compile_log_level = ' warning ' , separate_process = True ,
jvm_args = ' ' )

con las opciones


compiler={auto, modelica, optimica}
target={me, cs, me+cs}
version={1.0, 2.0}
Los parmetros para la compilacin a JMU son:

258

12 Compilacin, simulacin y optimizacin con JModelica.org

compile_jmu ( class_name , file_name =[] , compiler = ' auto ' , compiler_


options =[] , compile_to = ' . ' , compile_log_level = ' warning ' ,
separate_process = True , jvm_args = ' ' )

con las opciones


compiler={auto, modelica, optimica}

12.3.2

Carga de los objetos FMU y JMU

Los modelos precompilados como FMU (creados con JModelica.org u otro compilador) y como JMU (compilados con JModelica.org), pueden cargarse en la interfaz
interactiva Python de JModelica.org, para su simulacin y optimizacin (esto ltimo
solo con los JMU), con las siguientes instrucciones:
# Cargar un modelo FMU
from pyfmi import load_fmu
miFMU = load_fmu ( ' modeloFMU . fmu ' )

# Cargar un modelo JMU


from pyfmi import load_jmu
miJMU = load_jmu ( ' modeloJMU . jmu ' )

12.3.3

Transferencia del modelo a un problema de optimizacin

Un problema de optimizacin se puede convertir a la clase OptimizationProblem,


con las siguientes instrucciones:
# Transferencia a O p t i m i z a t i o n P r o b l e m
# importar el compilador
from pymodelica import 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 e m
# compilar el modelo
miOptModel = 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 e m ( ' modeloModelica ' ,
' modeloArchivo . mo ' )

12.4 Compilacin de modelos a FMU y simulacin


Se emplear como ejemplo, el circuito elctrico RLC serie presentado en la seccin
9.2.1, cuyo diagrama de interconexin elaborado con OpenModelica, se muestra nuevamente en la figura 12.1.

12.4. Compilacin de modelos a FMU y simulacin

259

Figura 12.1: Diagrama de simulacin del


circuito RLC serie

12.4.1

Modelo Modelica

Se har una copia del modelo creado con OpenModelica y se eliminaran todas las
anotaciones para el despliegue grfico del diagrama de interconexin, ya que solo
son necesarias para su dibujo.
El modelo Modelica reducido (guardado en el archivo SisElec01jm_o.mo), es
model SisElec01jm_o " Circuito electrico RLC serie "
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . I n d u c t o r inductor
( L = 1 , i ( start = 0 , fixed = true ) ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . R e s i s t o r resistor ( R = 60 ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . S o u r c e s . S t e p V o l t a g e fuente_tension
( V = 10 , startTime = 0 .01 ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . G r o u n d tierra ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . C a p a c i t o r capacitor
( C = 0 .0001 , v ( start = 0 , fixed = true ) ) ;
Modelica.Electrical.Analog.Sensors.PowerSensor
medidor_potencia ;
M o d e l i c a . B l o c k s . C o n t i n u o u s . I n t e g r a t o r energia_capacitor ;
equation
connect ( resistor.n , inductor.p ) ;
connect ( energia_capacitor.u , m e d i d o r _ p o t e n c i a . p o w e r ) ;
connect ( inductor.n , m e d i d o r _ p o t e n c i a . p c ) ;
connect ( capacitor.p , m e d i d o r _ p o t e n c i a . p v ) ;
connect ( medidor_potencia.nv , capacitor.n ) ;
connect ( medidor_potencia.nc , capacitor.p ) ;
connect ( capacitor.n , tierra.p ) ;
connect ( tierra.p , fuente_tension.n ) ;
connect ( fuente_tension.p , resistor.p ) ;
end SisElec01jm_o ;

260

12.4.2

12 Compilacin, simulacin y optimizacin con JModelica.org

Compilacin a FMU, simulacin y despliegue de resultados

Con la ejecucin del archivo Python jm_initFMU.py


In [ x ]: execfile ( ' jm_initFMU . py ' )

se cargar el compilador y el mdulo de funciones grficas. Las instrucciones incluidas en este archivo son:
# Inicializaci
o n de JModelica . org para la compilaci
o n a FMU
# archivo : jm_initFMU . py
from pymodelica import compile_fmu
from pyfmi import load_fmu
import matplotlib . pyplot as plt

La compilacin del modelo Modelica, la simulacin del objeto FMU creado,


la obtencin de los resultados de la simulacin y su despliegue grfico, se realizan
ejecutando las instrucciones en el archivo SisElec01_jm_o.py, con la instruccin
In [ y ]: execfile ( ' SisElec01_jm_o . py ' )

el cual contiene el siguiente listado de instrucciones Python


# Compilaci
o n a FMU y simulaci
o n de SisElec01jm_o . mo
# archivo : SisElec01_jm_o . py
fmu_name = compile_fmu ( " SisElec01jm_o " ," SisElec01jm_o . mo " )
cirelec = load_fmu ( fmu_name )
# simulaci
o n del FMU
simres = cirelec . simulate ( final_time =0.2)
# valores de las variables
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
a ficos de las respuestas
plt . figure (1)
plt . subplot (2 ,2 ,1)
plt . plot (t , Vc , c = ' b ' , lw =2 , label = ' Vc ' )
plt . legend ( loc =0)
plt . subplot (2 ,2 ,2)
plt . plot (t , Ic , c = ' r ' , lw =2 , label = ' Ic ' )
plt . legend ( loc =0)
plt . subplot (2 ,2 ,3)

12.4. Compilacin de modelos a FMU y simulacin


14

Vc

12
10

Ic

0.02

0.00

0.02

2
0.05

0.10

0.6

0.15

0.20

Potencia

0.4

0.04
0.00

0.05

0.10

0.010

0.15

0.20

Energia

0.008
0.006

0.2

0.004

0.0

0.002

0.2
0.00

0.08
0.06
0.04

0
0.00

261

0.05

0.10
Tiempo (s)

0.15

0.20

0.000
0.00

0.05

0.10
Tiempo (s)

0.15

0.20

Figura 12.2: Variables en el capacitor

plt . plot (t , Wa , c = ' g ' , lw =2 , label = ' Potencia ' )


plt . legend ( loc =0)
plt . xlabel ( ' Tiempo ( s ) ' )
plt . subplot (2 ,2 ,4)
plt . plot (t , Ju , c = ' k ' , lw =2 , label = ' Energia ' )
plt . legend ( loc =0)
plt . xlabel ( ' Tiempo ( s ) ' )
plt . tight_layout ()
plt . show ()

El grfico 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 ejecucin de la simulacin
sisres = modelfmu . simulate ( final_time = tt . t )

incluye varios argumentos de entrada:


start_time=0.0, instante de inicio de la simulacin,
final_time=tt.t, instante final de la simulacin (debe indicarse),
input(), variables de entrada ( nombres y matrices de valores o funciones),
algorithm=AssimuloFMIAlg,
options=[solver=CVode, ...].

262

12 Compilacin, simulacin y optimizacin con JModelica.org

El argumento de salida (sisres) es un objeto que contiene todas las variables


resultado de la simulacin, 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 parmetros del modelo

Como ya se ha compilado el modelo Modelica a un objeto FMU, el estudio de casos (efecto de cambios en los parmetro del modelo), puede hacerse en forma muy
rpida.
Anlisis de un circuito elctrico
Los parmetros iniciales del circuito elctrico simulado son: R = 60 , L = 1 H y
C = 0,0001 F. Se desea comparar las respuestas obtenidas con estos parmetros, con
las que se obtienen si los parmetros son: R = 100 , L = 1,50 H y C = 0,0002 F.
Las instrucciones para cambiar los parmetros del modelo y simularlo de nuevo,
son:
# Cambio de par
a metros del modelo SisElec01jm_o . mo
# archivo : SisElec01jm_nparam . py
# cargar de nuevo el FMU
cirelec = load_fmu ( fmu_name )
# nombre de los par
a metros
pnombre =[ ' resistor . R ' , ' inductor . L ' , ' capacitor . C ' ]
# obtener par
a metros actuales ( ` ` get ' ' )
pvalor = cirelec . get ( pnombre )
print " Parametros iniciales : "
for i in range (0 , 3):
print pnombre [ i ] , " = " , pvalor [ i ]
# valores nuevos de los par
a metros
pvalor [0]=100
pvalor [1]=1.50
pvalor [2]=0.0002
# cambiar los par
a metros ( ` ` set ' ' )
cirelec . set ( pnombre , pvalor )
# nueva simulaci
o n del FMU
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 " ]

12.4. Compilacin de modelos a FMU y simulacin


14

Vc
Vc2

12
10

Ic
Ic2

0.06

0.02

0.00

0.02

2
0.05

0.10

0.15

0.20

Potencia
Potencia2

0.4

0.04
0.00
0.014

0.05

0.10

0.15

0.20

Energia
Energia2

0.012
0.010
0.008

0.2

0.006

0.0

0.004
0.002

0.2
0.00

0.08

0.04

0
0.00
0.6

263

0.05

0.10
Tiempo (s)

0.15

0.000
0.20
0.00

0.05

0.10
Tiempo (s)

0.15

0.20

Figura 12.3: Efecto del cambio de los parmetros

# gr
a ficos de las respuestas nuevas
plt . figure (1)
plt . subplot (2 ,2 ,1)
plt . plot (t , Vc , c = ' b ' , ls = ' -- ' , lw =2 , label = ' Vc2 ' )
plt . legend ( loc =0)
plt . subplot (2 ,2 ,2)
plt . plot (t , Ic , c = ' r ' , ls = ' -- ' , lw =2 , label = ' Ic2 ' )
plt . legend ( loc =0)
plt . subplot (2 ,2 ,3)
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 = ' Energia2 ' )
plt . legend ( loc =0)
plt . tight_layout ()
plt . show ()

que se ejecuta con la instruccin


In [ z ]: execfile ( ' SisElec01jm_nparam . py ' )

El grfico de las nuevas curvas de respuesta, junto con las anteriores, se muestra
en la figura 12.3.

264

12 Compilacin, simulacin y optimizacin con JModelica.org

Plano de fase de un sistema de segundo orden


Se utilizar ahora el sistema de segundo orden (4.1), presentado en la seccin 4.1, cuyo modelo Modelica, se ha modificado de la siguiente forma (guardado en el archivo
SistemaSegundoOrden.mo):
model S i s t e m a S e g u n d o O r d e n
parameter Real K = 2 .5 " ganancia est
a tica " ;
parameter Real wn = 10 .0 " frecuencia natural " ;
parameter Real z = 0 .2 " raz
o n amortiguamiento " ;
parameter Real x1ic = -2 " condici
o n inicial x1 " ;
parameter Real x2ic = 2 " condici
o n inicial x2 " ;
Real x1 ( start = x1ic , fixed = true ) ;
Real x2 ( start = x2ic , fixed = true ) ;
equation
der ( x1 ) = x2 ;
der ( x2 ) = - 2 * z * wn * x2 - wn ^ 2 * x1 ;
end S i s t e m a S e g u n d o O r d e n ;

Se desea analizar el comportamiento de los estados (x1 , x2 ) en el plano de fase,


para cuatro casos: sobre amortiguado ( = 2,5), crticamente 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:
# Plano de fase de un sistema de segundo orden
from pymodelica import compile_fmu
from pyfmi import load_fmu
import matplotlib . pyplot as plt
# condiciones iniciales (5)
x1icv =[ -0.25 , 0 , -0.75 , -1 , 1]
x2icv =[ -10 , 12 , 0 , 10 , 5]
# razones de amortiguamiento (4)
zv =[2.5 , 1 , 0.25 , 0]
# compilaci
o n a FMU
fmu_name = compile_fmu ( " S i s t e m a S e g u n d o O r d e n " ,
" S i s t e m a S e g u n d o O r d e n . mo " )
# simulaci
o n , cambio de par
a metros y gr
a ficos
plt . close ( " all " )
plt . figure (1)

12.4. Compilacin de modelos a FMU y simulacin

265

for j in range (4):


ztxt = str ( zv [ j ])
subplot (2 ,2 , j +1)
plt . axis ([ -1.5 ,1.5 , -15 ,15])
for i in range (5):
coptm = load_fmu ( fmu_name )
# cambio condiciones iniciales
coptm . set ( ' x1ic ' , x1icv [ i ])
coptm . set ( ' x2ic ' , x2icv [ i ])
# cambio raz
o n de amortiguamiento
coptm . set ( ' z ' , zv [ j ])
# simulaci
o n del FMU
simres = coptm . simulate ( final_time =5)
# valores de las variables
vX1 = simres [ " x1 " ]
vX2 = simres [ " x2 " ]
t = simres [ " time " ]
# plano de fase
plt . plot ( vX1 , vX2 , lw =2)
plt . hold ( True )
plt . text (0.9 ,12. , r ' $ \ zeta = $ ' + 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, el efecto que tiene la razn de amortiguamiento, sobre el comportamiento
dinmico del sistema.

12.4.4

Sistema de control de un motor de corriente continua

En la seccin 9.8.1 se present el modelado y simulacin del sistema de control


de la velocidad de rotacin 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 parmetros del controlador PI.
El diagrama de interconexin del motor, la carga y su sistema de control, se
muestra en la figura 12.5.
El valor deseado, la seal realimentada y la seal de salida del controlador estn
en % (varan de 0 a 100 %).
El mbito de medicin del transmisor de velocidad es de 0 a 200 rad s1 y el de
actuacin de la fuente de alimentacin de 0 a 100 V.
El modelo Modelica del sistema de control es

12 Compilacin, simulacin y optimizacin con JModelica.org

266

10

10

10

10

1.0

0.5

0.0

X1

0.5

15

1.0

15
1.5

1.5

X2

10

10

0.0

X1

0.5

1.0

1.5

0.0

X1

0.5

1.0

1.5

0.5

0.5

15

10

1.0

1.0

0.25

10

15
1.5

15
1.5

X2

15
2.5

X2

X2

15

15
1.5

1.0

0.5

0.0

X1

0.5

1.0

1.5

Figura 12.4: Planos de fase, sistema de segundo orden

Figura 12.5: Sistema de control de velocidad del motor de corriente continua

12.4. Compilacin de modelos a FMU y simulacin

267

model S i s C o n t r o l P I M o t o r d c j m
Modelica.Electrical.Analog.Sources.SignalVoltage
signalvoltage1 ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . G r o u n d tierra ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . I n d u c t o r La ( L = 0 .2 ) ;
M o d e l i c a . M e c h a n i c s . R o t a t i o n a l . S o u r c e s . T o r q u e S t e p Torque_L
( stepTorque = -0 .05 , offsetTorque = 0 , startTime = 300 ) ;
Modelica.Mechanics.Rotational.Components.Damper
friccion ( d = 0 .02 ) ;
Modelica.Mechanics.Rotational.Components.Inertia
rotor ( J = 0 .05 ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . E M F emf ( k = 0 .02 ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . R e s i s t o r Ra ( R = 2 .25 ) ;
M o d e l i c a . B l o c k s . M a t h . G a i n k_transmisor ( k = 0 .5 ) ;
M o d e l i c a . M e c h a n i c s . R o t a t i o n a l . S e n s o r s . S p e e d S e n s o r tacometro ;
M o d e l i c a . B l o c k s . M a t h . G a i n k_actuador ( k = 1 ) ;
M o d e l i c a . B l o c k s . S o u r c e s . S t e p valor_deseado ( height = 50 ,
startTime = 20 ) ;
M o d e l i c a . B l o c k s . M a t h . F e e d b a c k comparador_error ;
M o d e l i c a . B l o c k s . C o n t i n u o u s . P I PI ( T = 30 , k = 0 .75 ) ;
M o d e l i c a . B l o c k s . N o n l i n e a r . L i m i t e r sal_control ( uMax = 100 ,
uMin = 0 ) ;
M o d e l i c a . B l o c k s . N o n l i n e a r . L i m i t e r transmisor ( uMax = 100 ,
uMin = 0 ) ;
equation
connect ( k_actuador.y , signalvoltage1.v ) ;
connect ( sal_control.y , k_actuador.u ) ;
connect ( PI.y , sal_control.u ) ;
connect ( comparador_error.y , PI.u ) ;
connect ( valor_deseado.y , c o m p a r a d o r _ e r r o r . u 1 ) ;
connect ( transmisor.y , c o m p a r a d o r _ e r r o r . u 2 ) ;
connect ( k_transmisor.y , transmisor.u ) ;
connect ( tacometro.flange , rotor.flange_b ) ;
connect ( tacometro.w , k_transmisor.u ) ;
connect ( signalvoltage1.n , tierra.p ) ;
connect ( emf.n , tierra.p ) ;
connect ( friccion.flange_b , Torque_L.flange ) ;
connect ( rotor.flange_b , friccion.flange_a ) ;
connect ( emf.flange , rotor.flange_a ) ;
connect ( La.n , emf.p ) ;
connect ( Ra.p , signalvoltage1.p ) ;
connect ( La.p , Ra.n ) ;
// annotation ( experiment ( StartTime = 0 , StopTime = 600 ) ;
end S i s C o n t r o l P I M o t o r d c j m ;

Los parmetros del controlador PI sern:


(Kp , Ti ) {(0,50, 90 s), (0,75, 60 s), (1,25, 30 s)}.
El listado de instrucciones Phyton para compilar el modelo, realizar la simulacin

268

12 Compilacin, simulacin y optimizacin con JModelica.org

y mostrar los resultados con los tres conjuntos de parmetros, es


# Compilaci
o n y simulaci
o n de S i s C o n t r o l P I M o t o r d c j m . mo
# control PI con tres conjuntos de par
a metros
lsv =[ ' -- ' , ' - ' , ' -. ' ]
# par
a metros del controlador PI
Kpv =[0.50 , 0.75 , 1.25]
Tiv =[90 , 60 , 30]
pinpa =[ ' PI . k ' , ' PI . T ' ]
pivpa =[1 , 1]
# compilaci
o n a FMU
fmu_name = compile_fmu ( " S i s C o n t r o l P I M o t o r d c j m " ,
" S i s C o n t r o l P I M o t o r d c j m . mo " )
# ajuste del controlador y simulaci
on
for i in range (0 ,3):
cpimdc = load_fmu ( fmu_name )
# par
a metros del controlador
pivpa [0]= Kpv [ i ]
pivpa [1]= Tiv [ i ]
cpimdc . set ( pinpa , pivpa )
# simulaci
o n del FMU
simres = cpimdc . simulate ( final_time =700)
# valores de las variables
vR = simres [ " valor_deseado . y " ]
vD = simres [ " Torque_L . tau " ]
vY = simres [ " transmisor . y " ]
vU = simres [ " sal_control . y " ]
t = simres [ " time " ]
# gr
a ficos de las respuestas
if i ==0:
plt . figure (1)
plt . subplot (2 ,1 ,1)
plt . plot (t , vR , c = ' r ' , ls = lsv [ i ] , lw =2 , label =
' Valor deseado ( %) ' )
plt . plot (t , vY , c = ' b ' , ls = lsv [ i ] , lw =2 , label =
' Velocidad motor ( %) ' )
plt . plot (t , vU , c = ' g ' , ls = lsv [ i ] , lw =2 , label =
' Salida controlador ( %) ' )
plt . legend ( loc =0)
plt . subplot (2 ,1 ,2)
plt . plot (t , vD , c = ' m ' , ls = lsv [1] , lw =2 , label =
' Torque de carga , $T_L$ ' )
plt . legend ( loc =0)
plt . xlabel ( ' Tiempo ( s ) ' )
plt . grid ( True )

12.5. Problemas de optimizacin

269

60
50
40

Valor deseado (%)


Velocidad motor (%)
Salida controlador (%)

30
20
10
0
100

200

300

400

500

600

700

Par de carga, TL

0.00
0.01
0.02
0.03
0.04
0.05
100

200

300
400
Tiempo (s)

500

600

700

Figura 12.6: Sistema de control de velocidad del motor de corriente continua

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 simulacin se muestran en la figura 12.6.

12.5 Problemas de optimizacin


Los problemas de optimizacin dinmica definidos con Optimica, se resuelven en
forma predeterminada en JModelica.org, compilndolos a JMU y luego realizando la
optimizacin.

270

12.5.1

12 Compilacin, simulacin y optimizacin con JModelica.org

Compilacin del Modelo Optimica a JMU y optimizacin

Las instrucciones Python para la solucin del problema de optimizacin, son


...
# importar la funci
o n de compilaci
on
from pymodelica import compile_jmu
from pyjmi import JMUModel
...
# compilar el modelo a JMU
prbopt = compile_jmu ( " ModeloOptimica " ," ModeloOptimica . mop " )
# carga del modelo
optmo = JMUModel ( prbopt )
# soluci
o n del problema de optimizaci
on
optres = optmo . optimize ()
...

12.5.2

Control ptimo de tiempo mnimo

En la seccin 9.8.5 se resolvi el problema de llevar un sistema, que es un integrador doble, desde cualquier condicin inicial hasta el origen, en un tiempo mnimo,
utilizando OpenModelica. En ese caso, se emple la curva de conmutacin para el
control, determinada como solucin del problema.
Este mismo problema se resolver ahora, como un problema de control ptimo
(de tiempo mnimo), utilizando JModelica.org.
El modelo Optimica del problema es
optimization ControlOptimojm (
objective = finalTime ,
startTime = 0 .0 ,
finalTime ( free = true , min = 1 , initialGuess = 10 ) )
// Control
o ptimo de tiempo m
nimo
Real x1 ( start = 0 , fixed = true ) ;
Real x2 ( start = 2 , fixed = true ) ;
input Real u ( free = true , min = -1 , max = 1 ) ;
equation
der ( x1 ) = x2 ;
der ( x2 ) = u ;
constraint
x1 ( finalTime ) = 0;
x2 ( finalTime ) = 0;
end ControlOptimojm ;

12.5. Problemas de optimizacin

271

La funcin de costo, es el tiempo total requerido para la trayectoria desde la


condicin inicial al origen (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 llegar al origen).
El listado de instrucciones Phyton para solucionar el problema es
# Control
o ptimo de tiempo m
nimo
from pymodelica import compile_jmu
from pyjmi import JMUModel
import matplotlib . pyplot as plt
# compilar y cargar el modelo
coptjmu = compile_jmu ( " ControlOptimojm " ," ControlOptimojm . mop " )
copt = JMUModel ( coptjmu )
# resolver el problema de control
o ptimo
optres = copt . optimize ()
# resultados
x1 = optres [ ' x1 ' ]
x2 = optres [ ' x2 ' ]
u = optres [ ' u ' ]
t = optres [ ' time ' ]
topt = optres [ ' finalTime ' ]
Jt = topt [ -1]
# gr
a ficos
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 . xlim ( -0.2 , 2.2)
plt . ylim ( -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 ( ' Tiempo ( s ) ' )
plt . grid ( True )
plt . ylabel ( ' $x_1 ( t )$ , $x_2 ( t ) $ ' )
plt . xlabel ( ' Tiempo ( s ) ' )
plt . subplot (2 ,2 ,4)
plt . plot (t ,u , c = ' m ' , lw =2)
plt . grid ()

12 Compilacin, simulacin y optimizacin con JModelica.org

272

2.0
2.0

x1

1.5

x2

1.0
0.5

x1 (t) x2 (t)

1.5

1.0

0.0
0.5
1.0
1.5
0

0.0

1.5

2
3
Tiempo (s)

2
3
Tiempo (s)

x2 (t)

0.5

1.0
0.5
u(t)

0.5

1.0

0.0
0.5
1.0

1.5
0.0

0.5

1.0

x1 (t)

1.5

2.0

1.5
0

Figura 12.7: Control ptimo - tiempo mnimo

plt . ylabel ( ' u ( t ) ' )


plt . xlabel ( ' Tiempo ( s ) ' )
plt . tight_layout ()
plt . show ()
# Valor del
ndice de costo
print " Tiempo minimo ( optimo ) = " , Jt , " s . "

El movimiento en el plano de fase, la evolucin de las variables y el esfuerzo


de control requerido, se muestran en la figura 12.7 y el valor de la funcin de costo (tiempo mnimo para llegar al origen), 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 mnimo, se puede comparar con las obtenidas con OpenModelica
para el mismo caso, utilizando la curva de conmutacin ptima para el esfuerzo de
control, mostradas en las figuras 9.76 y 9.77.

12.5. Problemas de optimizacin

273

Figura 12.8: Sistema de


control realimentado

12.5.3

Optimizacin de los parmetros de un controlador PI

En la figura 12.8, se muestra el diagrama de bloques general de un sistema de control


realimentado.
En este, el proceso controlado est representado por la funcin 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 funcin


de transferencia


1
.
(12.2)
C(s) = Kp 1 +
Ti s
Se desea obtener el conjunto de parmetros c = {Kp , Ti } del controlador, que
optimiza la integral del error absoluto, ante un cambio en el valor deseado (ptimos
IAE para el servo control).
La funcin de costo a optimizar, es entonces
JIAE =

Z
0

|e(t)| dt,

(12.3)

para un cambio r.
Se tomar, como estimacin inicial de los parmetros del controlador, Kp = 0,505
y Ti = 8,0 s.
El modelo Modelica para simular el sistema de control, es
model S i s C o n t r o l c P I p 3 o r d j m
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 = 1 .15 ;
parameter Real Ti = 18 .30 ;
Real x1 ( start = 0 , fixed = true ) ;
Real x2 ( start = 0 , fixed = true ) ;
Real x3 ( start = 0 , fixed = true ) ;

274

12 Compilacin, simulacin y optimizacin con JModelica.org

Real Ui ( start = 0 , fixed = true ) ;


Real Jiae ( start = 0 , fixed = true ) ;
Real R , Y , E , U , Up ;
M o d e l i c a . B l o c k s . S o u r c e s . S t e p stepR ( height = 1 , startTime = 1 ) ;
equation
// proceso
T1 * der ( x1 ) = ( - x1 ) + K1 * U ;
T2 * der ( x2 ) = ( - x2 ) + K2 * x1 ;
T3 * der ( x3 ) = ( - x3 ) + K3 * x2 ;
Y = x3 ;
// control
R = stepR.y ;
E = R - Y;
Up = Kp * E ;
der ( Ui ) = Kp * E / Ti ;
U = Up + Ui ;
// indice de costo
der ( Jiae ) = abs ( E ) ;
end S i s C o n t r o l c P I p 3 o r d j m ;

Con los parmetros iniciales del controlador, el valor de la funcional de costo es


JIAE = 15,64.
Los parmetros ptimos del controlador, se determinarn con JModelica.org utilizando el algoritmo de optimizacin simplex Nelder-Mead (Lagarias et al., 1998).
Para esto, debe definirse la evaluacin de la funcional de costo como una funcin
Python y guardarla en un archivo con el mismo nombre que esta.
En este caso, las instrucciones para evaluar la funcional de costo, son
# funcional de costo IAE
def iaefcostcPIp3ord ( x ):
from pyfmi import load_fmu
# cargar el modelo
model = load_fmu ( ' ../ S i s C o n t r o l c P I p 3 o r d j m . fmu ' )
# nuevos par
a metros
model . set ( ' Kp ' ,x [0])
model . set ( ' Ti ' ,x [1])
# simulaci
o n del modelo
simres = model . simulate ( start_time =0.0 , final_time = 200.0)
# resultados de la simulaci
on
jiae = simres [ " Jiae " ]
obj = max ( jiae )
return obj

12.5. Problemas de optimizacin

275

La carga del modelo debe escribirse en la forma


model = load_fmu ( ' ../ NombreModelo . fmu ' )

para que los resultados intermedios, sean almacenados en un subdirectorio del directorio de trabajo.
El listado de instrucciones Python para compilar el modelo a FMU y realizar la
optimizacin, es:
# Optimizaci
o n del control PI ( cPIp3ord )
from pyfmi import load_fmu
from pyjmi . optimization import dfo
import matplotlib . pyplot as plt
# par
a metros iniciales
xic =[0.50 , 8.0]
# cotas inferiores
xlb =[0.1 , 0.1]
# cotas superiores
xub =[100 , 100]
# optimizaci
on
xopt , fopt , niter , nfevals , opsoltime =
dfo . fmin ( " iaefcostcPIp3ord . py " , xstart = xic , lb = xlb , ub = xub ,
alg =1 , nbr_cores =2 , x_tol =1 e -3 , f_tol =1 e -2)
print ' Par
a metros
o ptimos = ' , xopt

En el llamado a la funcin de optimizacin dfo.fmin3 , se tienen las siguientes


variables y parmetros de control:
1. Argumentos de entrada (con los valores presestablecidos entre parntesis)
nombre del archivo de la funcin objetivo,
xstart - vector estimacin inicial de los parmetros,
lb - (=None) vector de cotas inferiores de los parmetros,
ub - (=None) vector de cotas superiores de los parmetros,
alg - (=None) algoritmo de optimizacin (1 - Nelder-Mead simplex),
nbr_cores - (=None) nmero de ncleos del procesador (solo si se usa
el mtodo Nelder-Mead),
3 Mayor

informacin sobre los parmetros del llamado, se puede obtener con la ayuda, In[hh]
help(dfo.fmin).

12 Compilacin, simulacin y optimizacin con JModelica.org

276

x_tol - (=1e-06) criterio de convergencia en los parmetros,


f_tol - (=1e-6) criterio de convergencia en la funcin de costo,
max_iters - (=1000),
max_fevals - (10000),
disp - (=True),
debug - (=False),
plot - (=False),
plot_conv - (=False).
2. Resultados
xopt - vector de parmetros ptimos,
fopt - valor mnimo de la funcin de costo,
niter - nmero de iteraciones efectuadas,
nfevals - nmero de evaluaciones de la funcin de costo hechas,
opsoltime - tiempo de ejecucin de la optimizacin.
De la optimizacin se obtiene que los parmetros ptimos son Kpo = 1,15 y Tio =
o = 10,74.
18,30 s y el valor mnimo de la funcional de costo es JIAE
En la figura 12.9 se muestra el comportamiento del sistema de control PI del
proceso de tercer orden, con los parmetros iniciales del controlador y con los optimizados con el criterio de error integral JIAE , para un cambio en el valor deseado.

12.5. Problemas de optimizacin

277

1.4

Variables (%)

1.2
1.0
0.8
0.6

r(t)
y(t)
yo(t)

0.4
0.2
0.0
0

20

40

60

80

1.4

u(t)
uo(t)

1.2
Variables (%)

100

1.0
0.8
0.6
0.4
0.2
0.0
0

20

40

Tiempo (s)

60

80

100

Figura 12.9: Comportamiento del sistema de control inicial y del optimizado

13
Visualizacion, simulacion y analisis con
PySimulator
Se presentar aqu el uso del PySimulator1 (Pfeiffer et al., 2012) desarrollado por el
German Aeroespace Center (DLR)2 , Linder Hhe, 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 Introduccin
El PySimulator, desarrollado en Phyton, provee un ambiente grfico para la simulacin y anlisis de los modelos Modelica.
El programa de instalacin del PySimulator, instala la distribucin de Python
Phyton(x,y)3 si no lo est ya, y todas las mdulos 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 grficos y al lado derecho, una columna de iconos que
permite abrir nuevas pestaas de grficos y adicionar (o eliminar) a cada una de
ellas, filas y columnas de ventanas grficas, segn se desee. En la figura 13.2 se
muestra la ventana grfica con cuatro sub grficos, para los cuales se pueden seleccionar en el navegador de variables, las que se desee desplegar en cada uno de ellos.
1 https://github.com/PySimulator/PySimulator/

2 http://www.dlr.de/dlr/en/desktopdefault.aspx/tabid-10002/
3 https://code.google.com/p/pythonxy/

279

280

13 Visualizacin, simulacin y anlisis con PySimulator

Figura 13.1: PySimulator Ventana principal

Figura 13.2: PySimulator Ventana con mltiples sub


grficos

El PySimulator se integra muy bien con OpenModelica, sin embargo, pueden


presentarse problemas entre la instalacin del PySimulator y la de JModelica.org,
debido a conflictos entre las instalaciones Python que hace cada uno de ellos.

13.2 Importacin de un archivo de resultados


En el OMShell (OMS), utilizando la instruccin plot() se pueden desplegar las
variables resultado de una simulacin en funcin del tiempo, una o varias a la vez,
en una ventana grfica. Adems, con la instruccin plotParametric() se puede
mostrar una variable en funcin de otra (plano de fase).
Por su parte, en el rea de vista de resultados (Ploting) del OMEdit, se pueden
tener mltiples grficos en funcin del tiempo (X(t)) y planos de fase (Y(X)), cada

13.2. Importacin de un archivo de resultados

281

Figura 13.3: PySimulator - Variables del circuito elctrico

uno en su propia ventana, identificados por una pestaa. Tambin es posible, que
todos ellos se muestren formando un mosaico en una sola ventana. Las dimensiones y la distribucin 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 simulacin del modelo NombreModelo.mo con el OMShell
o el OMEdit, se almacenan en el archivo NombreModelo_res.mat, el cual se puede
abrir en el PySimulator con la opcin del men [File][Open Result File], para su
despliegue grfico.
Como un ejemplo, en la figura 13.3 se muestra el despliegue grfico con PySimulator, de los resultados de la simulacin del circuito elctrico de la seccin 8.3.6.
Otro ejemplo, es la simulacin del sistema de control PID de la seccin 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 grfica el valor deseado (valor_deseado.y), la variable controlada (fixeddelay.y),
la perturbacin (perturbacion.y) y la salida del controlador (PID.y).
Esta misma informacin, pero desplegada en dos grficos diferentes en una columna, se muestra en la figura 13.5.
Los archivos de resultados .mat son archivos de datos. Lo nico que PySimulator
puede hacer con ellos, es desplegarlos en las diferentes ventanas grficas.

282

13 Visualizacin, simulacin y anlisis con PySimulator

Figura 13.4: Variables del sistema de control PID en el PySimulator

13.3 Importacin de modelos FMU


En la seccin 8.3.7, se indic que el OMEdit puede exportar los modelos como FMU.
Estos pueden ser a su vez importados en el PySimulator con la opcin del men
[File][Open Model][FMUSimulatorDLR...]4 o pulsando el icono FMU DLR, con
lo cual se abre la ventana para la seleccin del archivo a importar.
Una vez abierto el modelo, este debe ser simulado con la opcin del men [Simulate], que abre la ventana para el control de la simulacin.
En esta se selecciona los tiempos (inicial, final) de la simulacin, el algoritmo
de solucin y su control, y otras opciones. La simulacin se efecta presionado el
botn [Run]. Una vez terminada esta, la ventana de control se debe cerrar con
[Close], para proceder al despliegue grfico de los resultados.

4 Se

recomienda usar esta opcin, en vez de FMUSimulator

13.3. Importacin de modelos FMU

283

Figura 13.5: Comportamiento del sistema de control PID

Sistema hidrulico
Considrese el diagrama de simulacin de un sistema de llenado por gravedad de un
tanque, elaborado con OMEdit, el cual se muestra en la figura 13.6.
Los parmetros incluidos en el modelo son: fluido (agua), tanque (HT = 2,5 m,
rea transversal A = 2,0 m2 , inicialmente vaco H 0 = 0, dimetro la conexin de la
tubera d = 0,50 m), tubera de llenado (longitud L = 100 m, dimetro d = 0,50 m,
diferencia de elevacin entre sus extremos Hab = 20 m), vlvula de llenado (caudal
nominal Qvmn = 6,0 kg s1 con una cada de presin Pn = 100000 Pa).
Para el llenado del tanque, en el instante t = 10 s se inicia la apertura de la vlvula
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 vlvula, un poco ms 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 simulacin en el PySimulator, se definen los tiempos de simulacin, como se muestra en la figura 13.7 y se efecta la misma presionado [Run].
En esta ventana se muestra tambin el avance de la simulacin e informacin
sobre la misma. Una vez finalizada, se puede cerrar la ventana de control.
Utilizando el navegador de variables, se seleccionar las que se dese desplegar y

284

13 Visualizacin, simulacin y anlisis con PySimulator

Figura 13.6: Llenado de un tanque por gravedad


Figura 13.7: Ventana de control
de la simulacin

13.3. Importacin de modelos FMU

285

Figura 13.8: Variacin del nivel y el caudal de llenado


la organizacin de las ventanas grficas.
En la figura 13.8 se muestra el nivel en el tanque, el perfil de apertura de la vlvula
y el caudal por ella.
Una facilidad al usar PySimulator para simular un modelo precompilado como
FMU, es que se pueden cambiar los parmetros que se desee del modelo y correr la
simulacin nuevamente.
Por ejemplo, tal como se muestra en la figura 13.9, se puede cambiar el perfil de
apertura y cierre de la vlvula de llenado y ver como afecta esto al nivel del fluido en
el tanque.
Es posible cambiar cualquiera de los parmetros del tanque, la tubera de llenado
o la vlvula, y volver a ejecutar la simulacin. Como el modelo est compilado, el
estudio de casos puede realizarse en forma expedita.

286

Figura 13.9: Cambio de


parmetros del sistema

13 Visualizacin, simulacin y anlisis con PySimulator

Parte IV

Uso de Wolfram SystemModeler y


Mathematica

287

14
Introduccion a SystemModeler
Uno de los entornos comerciales existentes, para el modelado y la simulacin de los
sistemas dinmicos heterogneos con Modelica, es SystemModeler1 de Wolfram
Research, Inc, Champaign, Ill, EE.UU2 , disponible para MS Windows, Mac OS X y
Linux.
La informacin sobre sus componentes, bibliotecas y guas de uso, se encuentran
en el Documention Center3 , cuyo men principal se muestra en la figura 14.1. Se
puede acceder a el, con la opcin del men [Help] [Documentation Center].

14.1 Introduccin
Adelante se dar una descripcin breve del entorno de modelado y simulacin en SytemModeler, con base en la versin 4.0.1, utilizando la instalacin en MS Windows.

Compilador C++
SystemModeler requiere de un compilador de C++. En Windows, debe utilizarse el
compilador Microsoft Visual C++ 2008 (2010, 2012 o 2013), o la versin gratuita
(Express) de uno de estos.
Si la instalacin existente del compilador C++ no es detectada automticamente,
o ha sido necesaria la instalacin de uno de los compiladores compatibles, este debe
seleccionarse con la opcin del men [Tools] [Options] Global / Compiler, que
despliega la ventana de seleccin mostrada en la figura 14.2.
En esta debe escogerse la versin del compilador instalado y proveerse la trayectoria completa al archivo vsvars32.bat.
El funcionamiento correcto del compilador, puede verificarse pulsando el botn
Verify.
1 http://www.wolfram.com/system-modeler/?source=nav
2 http://www.wolfram.com/

3 http://reference.wolfram.com/system-modeler/

289

290

14 Introduccin a SystemModeler

Figura 14.1: SystemModeler - Documentation Center

14.2. SystemModeler Model Center

291

Figura 14.2: SystemModeler - Seleccin del compilador C++

Componentes principales de SystemModeler


Para la interaccin con SystemModeler se dispone de dos interfaces de usuario grficas. El Model Center, para elaborar el modelo Modelica y el Simulation Center, para
efectuar su simulacin y visualizar los resultados. Adems, incluye el SystemModeler
Link para enlazarse con Mathematica, si este est instalado.

14.2 SystemModeler Model Center


Seleccionando en el men de aplicaciones de Windows [Wolfram SystemModeler]
[Wolfram SystemModeler 4.0.1], se abre la ventana principal de Model Center, la
cual se muestra en la figura 14.3.
Este provee una barra de mens 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, Connetion
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
interconexin (Diagram View), el navegador de componentes, y las pestaas para
acceder a los visores de parmetros, variables y constantes.
Todas las ventanas, excepto de la creacin del modelo, pueden colocarse en cualquier ubicacin, e incluso hacerse flotantes.
Con la seleccin del men [Tools] [Options...], se despliega la ventana de configuracin de Model Center, mostrada en la figura 14.4, en la cual se pueden seleccionar algunas opciones de Model Center y otros de aplicacin global (SystemModeler).

14 Introduccin a SystemModeler

292

Figura 14.3: Model Center - Ventana principal

Figura 14.4: Model Center Ventana de configuracin

14.2. SystemModeler Model Center

293

Figura 14.5: Model Center


- Biblioteca Modelica

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 captulo 5,
forma parte integral del lenguaje Modelica y las bibliotecas de componentes de esta
incluidas en SystemModeler, se muestran en la figura 14.5.
Esta incluye los componentes de diferentes dominios (elctricos, mecnicos, trmicos, bloques, etc.), agrupados en bibliotecas expandibles, en las cuales cada componente est representado por un icono, tal como se muestra en la figura 14.6 para

14 Introduccin a SystemModeler

294

los componentes elctricos analgicos bsicos.


Seleccionando un componente de la biblioteca con el apuntador, con el botn
derecho se despliega un men de opciones, desde el cual se puede acceder a la informacin del componente (View Documentation...), como se muestra en la figura
14.7 para la biblioteca Modelica.
El modelado grfico, mediante diagramas de interconexin de componentes Modelica, que se ilustr ms adelante, se realizar arrastrando el icono de cada uno
de los componentes requeridos desde la biblioteca, hasta l rea del diagrama del
modelo.

14.2.1

Elaborar un modelo nuevo o abrir uno existente

El archivo de un modelo (funcin, 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 14.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 bsqueda y
la seleccin del archivo del modelo.
El modelo nuevo (existente) se puede crear (ver) en modo texto [Modelica Text
View], o en modo diagrama de interconexin [Diagram View], si este se ha elaborado
mediante la conexin grfica de componentes.
Los modelos elaborados mediante un listado de instrucciones, no tienen una representacin grfica (diagrama). Por su parte, los modelos elaborados mediante un
diagrama de interconexin, tendrn un programa, creado automticamente por el editor, en el cual se incluyen las notas (annotation) con las instrucciones para el despliegue de los iconos del diagrama y las lneas que los conectan, y las ecuaciones de
interconexin determinadas a partir de este.
Como ejemplo para demostrar la creacin de un modelo Modelica en Model
Center, se utilizar el circuito elctrico mostrado en la figura 14.9, cuyo modelo est
dado por las ecuaciones
diL (t)
= V f R1 iL (t) Vc (t),
dt
1
dVc (t)
= iL (t) Vc (t).
C1
dt
R2
L1

(14.1)
(14.2)

Se crear un modelo nuevo con el nombre CircuitoElectrico. Posteriormente


este modelo se guardar en el archivo CircuitoElectrico.mo, con la opcin del
men [File][Save], o pulsando el icono Save y seleccionando la carpeta para guardarlo.

14.2. SystemModeler Model Center

Figura 14.6: Model Center - Biblioteca de componentes elctricos (Electrical)

295

296

Figura 14.7: Model Center


- Visor de documentacin

Figura 14.8: Model Center


- Crear un modelo nuevo

14 Introduccin a SystemModeler

14.2. SystemModeler Model Center

297

Figura 14.9: Circuito


elctrico

En forma automtica, el editor de Model Center crea la lnea de cabecera y la de


terminacin del modelo como
model CircuitoElectrico
end CircuitoElectrico ;

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 ecuacin connect para establecer las conexiones entre los componentes, o
3. interconectando directamente en forma grfica los iconos de los componentes,
para formar un diagrama de interconexin.
En el captulo 15, se presentarn en detalle los diferentes procedimientos para
definir los modelos, en varios dominios fsicos. Aqu, solo se ilustr en forma breve,
el uso del Model Center para programar el modelo, y el del Simulation Center para
simularlo y ver su respuesta.

14.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 elctrico del ejemplo, los parmetros son: R1 = 10 , R2 = 100
, C1 = 0,01 F y L1 = 1 H; las condiciones iniciales Vc0 = 0 V e i0L = 0 A; y la tensin
de la fuente V f = 10 V para t 0,05 s.

298

14 Introduccin a SystemModeler

Figura 14.10: Model Center - Modelado en modo texto


La definicin de los parmetros y las ecuaciones del modelo, (14.1) y (14.2), se
pueden escribir como se muestra en la figura 14.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 icono Validate Class.
Para el modelo de ejemplo, esta verificacin indica:
[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 nmero de variables y de ecuaciones, para que pueda resolverse.
La prueba de validacin del modelo, verifica primero la existencia de errores
de sintaxis o semntica y luego, determina el nmero 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 opcin del men

14.3. SystemModeler Simulation Center

299

Figura 14.11: Simulation Center - Ventana principal


[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 externas, no funcionen adecuadamente con SystemModeler, si no han sido
probadas por Wolfram Research.

14.3 SystemModeler Simulation Center


El botn 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 caractersticas para el control de la simulacin, las utiliza. Si, lo advierte No experiment annotation found y pregunta si
se quieren emplear las opciones preestablecidas.
La interfaz del Simulation Center,se muestra en la figura 14.11.
Esta provee una barra de mens desplegables (File, Edit, View, Tools, Simulate, Plot, Window, Help) y una barra de botones (New, open, Save, New Y(T) Plot

14 Introduccin a SystemModeler

300

Window, New Y(X) Plot Window, New Subplot, Remove Subplot, Plot Themes, Plot
Properties, Animation, Class Documentation).
Adems, est el navegador de experimentos (Experiment Browser), la ventana
de los diagramas grficos y la ventana de mensajes de la simulacin (Build Log,
Simulation log, Messages).
El navegador de experimentos provee pestaas para acceder a las ventanas para el control de la simulacin (Settings), seleccionar las variables de los grficos
(Plot), modificar el valor de los parmetros (Parameters) y las condiciones iniciales de los estados (Variables).
Cuando el modelo es compilado, la informacin correspondiente, parmetros, variables y ajustes de la simulacin, se muestran en la columna izquierda del Simulation
Center (ver la figura 14.11).
De ser necesario, se pueden establecer (si no se ha hecho antes) o cambiar, los
tiempos para la simulacin (Start Time, Stop Time, Interval Length, Solver - el
DASSL est preseleccionado) y otras caractersticas, mostradas en a pestaa Settings.
Las condiciones establecidas para realizar la simulacin, pueden incluirse en el
modelo con la opcin del men [File][Save Experiment Settings]. Esto puede hacerse
en el modelo en uso, o en una extensin del mismo (una copia del modelo, junto con
los ajustes establecidos).
La incorporacin de los 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 incorporarn como una nota (annotation) en el modelo, solo los parmetros
de control de la simulacin, que se modifiquen con respecto a los valores preestablecidos.

14.3.1

Ejecucin de la simulacin

La simulacin se efecta seleccionando el icono Simulate o de la opcin del men


[Simulate][Simulate].
Al finalizar la misma, se muestran los mensajes correspondientes en el rea de
registro de la simulacin y se pasa automticamente a la pestaa Plot, de donde se
seleccionan las variables a desplegar en los grficos.
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, parmetros, condiciones iniciales), guardar
los resultados en un archivo y utilizarlos para analizar y comparar, los resultados
obtenidos con el conjunto de experimentos realizados.

14.3. SystemModeler Simulation Center

301

Figura 14.12: Simulation


Center - Men de grficos

Es posible realizar un nuevo experimento (simulacin), con cualquiera de los modelos abiertos en el Model Center, seleccionndolo de la lista en la ventana (New
Experiment) desplegada con la opcin de men [File][New] y asignndole un nombre al mismo.
Los experimentos se pueden guardar en un archivo ([File][Save]) con extensin
.sme (SystemModeler Experiment). Los que se han guardado previamente, se pueden abrir ([File][Open]). El modelo en ejecucin, tambin puede ser cerrado ([File][Close]).

14.3.2

Vista de los resultados

Bajo la pestaa Plot se listan los parmetros y variables del modelo, con sus unidades y descripciones.
Marcando la casilla junto al nombre de la variable o parmetro, se seleccionan las
que se desee desplegar. Estas se pueden mostrar en un solo grfico Y(T), en grficos
separados, en un grfico con subgrficos, o en un plano de fase Y(X), seleccionado
las opciones deseadas del men de grficos mostrado en la figura 14.12.
Los resultados de la simulacin del circuito elctrico, se muestran en la figura
14.13.
Posicionando el apuntador sobre una figura, con el botn derecho se despliega la
ventana de propiedades del grfico (Plot Properties), mostrada en la figura 14.14.
Entre las propiedades de los grficos que se pueden seleccionar, estn las leyendas de los ejes, el tipo de cuadrcula, y el color, trazo y grosor de las lneas.
En la figura 14.15 se muestran grficas alternativas, cambiando algunas de las
propiedades.
Los resultados de la simulacin (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)]

302

14 Introduccin a SystemModeler

Figura 14.13: Simulation Center - Vista de resultados


Los parmetros de los componentes del circuito son: C1 = 0,01 F, L1 = 1,0 H,
R1 = 10,0 y R2 = 100,0 . Los resultados de la simulacin se han guardado en el
archivo CircuitoElectrico1.sme.
Se desea comparar el comportamiento del circuito con el obtenido si los componentes tienen los siguientes parmetros: C1 = 0,02 F, L1 = 0,50 H, R1 = 5,0 y
R2 = 10,0 . Los nuevos resultados se han guardado en el archivo CircuitoElectrico2.sme.
Los parmetros del modelo se pueden modificar directamente en el Simulation
Center, abriendo la pestaa de parmetros (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 14.16, para comparalos.
Ntese que de esta manera solo se han cambiado los parmetros para realizar
un nuevo experimento. Los valores de los parmetros, incluidos en la definicin del
modelo, no se han alterado.
Si en el proceso de experimentar con el modelo, se han cambiado varios de

14.3. SystemModeler Simulation Center

Figura 14.14: Simulation Center - Ventana de propiedades


del grfico

Figura 14.15: Simulation Center - Efecto del cambio de propiedades

303

304

14 Introduccin a SystemModeler

Figura 14.16: Simulation


Center - Efecto del cambio
de parmetros

sus parmetros, es posible reconstruir el modelo seleccionado en el men [Simulation][Rebuild], con lo cual se despliega la ventana de resolucin de conflictos,
mostrada en la figura 14.17.
En esta se puede volver a utilizar todos los parmetros originales del modelo,
mantener todos los ltimos cambios en el experimento, o utilizar cualquier combinacin 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.

14.4 Modelado grfico


En el modelo grfico o diagrama de interconexin, cada icono representa a un componente fsico. Las lneas que conectan los terminales de los elementos, corresponden
a una conexin fsica. Las variables en la interfaz (terminales), describen la interaccin entre los componentes y el comportamiento de cada componente est descrito
por sus ecuaciones.
Se simular ahora el mismo circuito de la figura 14.9, pero mediante un diagrama
de interconexin, utilizando componentes de la biblioteca Modelica.
Para esto, en el Model Center se crea un modelo nuevo con el botn New Class

14.4. Modelado grfico

305

Figura 14.17: Simulation


Center - Parmetros del
modelo y del experimento

([File][New Class]) y se selecciona como rea de trabajo de modelado, el modo vista


del diagrama de interconexin (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 14.18.
Utilizando las facilidades de edicin grfica, 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 botn derecho del apuntador (ratn).
Interconexin entre componentes
El modo de conexin se habilita (deshabilita) con el botn en el men Connection
Line Tool.
En el modo de conexin, cuando el cursor del apuntador se posiciona sobre el
terminal de un componente, este cambia de ser un signo + pequeo, a un smbolo
+ grande (gua de interconexin). Se debe presionar una vez el botn izquierdo del
apuntador para inicial la conexin, luego llevar el enlace (un cable elctrico en el

306

14 Introduccin a SystemModeler

Figura 14.18: Simulation Center - Componentes del circuito


circuito simulado), moviendo el puntero hasta el terminal del componente con que se
quiere conectar, y volver a presionar el botn izquierdo para completar la conexin.
Se puede mostrar una cuadrcula gua de fondo con la opcin [View][Grid] del
men y variar la escala del diagrama de la lista de porcentajes de amplificacin o
reduccin del diagrama (del 25 % hasta 800 %), para facilitar la elaboracin del diagrama. Adems, 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
(pestaa Diagram Layer), con el botn derecho del apuntador.
La posicin de los iconos pude ajustada a la cuadrcula (men [Tools][Snap...]).
Todos los terminales (p y n, en los diagramas elctricos) de cada componente,
deben estar conectados a un terminal de otro componente, segn corresponda a la
topologa del sistema que se desea simular. Aunque en el diagrama final, debido a
la distribucin de los elementos y sus conexiones, pudiera parecer que se ha hecho
alguna conexin entre las lineas de interconexin de dos o ms componentes, este es
solo un efecto ptico (una lnea de interconexin oculta a las dems), ya que debe
existir una lnea independiente por cada conexin, tal como se muestra en la figura

14.4. Modelado grfico

307

Figura 14.19: Model Center - Interconexin de los elementos

14.19.

Interconexiones vlidas entre componentes


Las conexiones, solo se pueden realizar entre los conectores correspondientes a componentes del mismo tipo (con conectores de la misma clase).
Supngase que se han colocado en el diagrama de interconexin componentes
elctricos, mecnicos que se desplazan y trmicos, y que se han realizado las conexiones entre los terminales de los componentes del mismo dominio fsico, tal como
se muestra en la figura 14.20.
Si se realiza una verificacin del estado del modelo hasta ese momento (Validate
Class), esta indica que no hay errores.
Si se trata de hace ahora una conexin entre por ejemplo el conector de un componente elctrico y el de un componente mecnico, esta no se puede completar. Adems, se indica que la conexin es ilegal (las definiciones de los conectores no concuerdan), tal como se muestra en la figura 14.21.
Lo mismo sucedera si se trata de realizar una conexin, entre el terminal de un
componente mecnico y el de uno trmico

308

14 Introduccin a SystemModeler

Figura 14.20: Model Center - Conexiones permitidas entre componentes (elctrico elctrico, mecnico - mecnico, trmico - trmico)

Figura 14.21: Model Center - Advertencia de una conexin no permitida entre componentes)

14.4. Modelado grfico

309

Figura 14.22: Model Center - Men de parmetros de un componente

Figura 14.23: Model Center - Diagrama de interconexin


Parmetros de los componentes
Cada componente utilizado en el diagrama, tiene asociado un men de parmetros
mostrado en la parte inferior, al que se accede seleccionando el icono del componente. En este, se introduce los valores de los parmetros del componente seleccionado,
tal como se muestra en la figura 14.22 para la fuente de tensin stepVoltage1.
El diagrama del circuito simulado del ejemplo, con los parmetros introducidos,
se muestra en la figura 14.23. Es evidente la similitud del diagrama de interconexin
desarrollado con el sistema a simular, el circuito elctrico mostrado en la figura 14.9.
Las lneas de interconexin entre componentes del diagrama de la figura 14.23,
tienen esquinas en ngulo recto. Estas se pueden cambiar a lineas curvas, seleccio-

310

14 Introduccin a SystemModeler

Figura 14.24: Model Center - Interconexin de los


componentes con
lneas curvas

nando la lnea de interconexin con el botn izquierdo del apuntador, desplegando


luego el men de opciones con el botn derecho y seleccionado en el Curved Connection Line. Esto da como resultado, el diagrama mostrado en la figura 14.24.
La seleccin Right-Angle Connection Line hace que las lneas de interconexin tengas esquinas en ngulo recto.
El rea visible del diagrama grfico, puede imprimirse (men [File][Print]) o
copiarse al porta papeles como una imagen (Copie View as Image del men desplegado con el botn derecho del apuntador sobre el diagrama), para insertarse por
ejemplo, en un programa de manejo de figuras.
El programa creado en forma automtica por el editor, a partir del diagrama de
interconexin desarrollado (figura 14.23), es:
model C i r c u i t o E l e c t r i c o D i a g r a m a " Circuito el
e ctrico de ejemplo "
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . C a p a c i t o r capacitor1 ( C = 0 .01 )
annotation ( Placement ( visible = true , transformation ( origin =
{ 0 .0 , 50 .0 } , extent = { { - 10 .0 , - 10 .0 } , { 10 .0 , 10 .0 } } ,
rotation = - 450 ) ) ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . G r o u n d ground1
annotation ( Placement ( visible = true , transformation ( origin =
{ - 80 .0 , 10 .0 } , extent = { { - 10 .0 , - 10 .0 } , { 10 .0 , 10 .0 } } ,
rotation = 0 ) ) ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . I n d u c t o r inductor1 ( L = 1 )
annotation ( Placement ( visible = true , transformation ( origin =
{ - 50 .0 , 80 .0 } , extent = { { - 10 .0 , - 10 .0 } , { 10 .0 , 10 .0 } } ,
rotation = 0 ) ) ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . R e s i s t o r resistor1 ( R = 10 )

14.4. Modelado grfico

311

annotation ( Placement ( visible = true , transformation ( origin =


{ - 90 .0 , 80 .0 } , extent = { { - 10 .0 , - 10 .0 } , { 10 .0 , 10 .0 } } ,
rotation = 0 ) ) ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . R e s i s t o r resistor2 ( R = 100 )
annotation ( Placement ( visible = true , transformation ( origin =
{ - 30 .0 , 50 .0 } , extent = { { - 10 .0 , - 10 .0 } , { 10 .0 , 10 .0 } } ,
rotation = - 450 ) ) ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . S o u r c e s . S t e p V o l t a g e stepVoltage1
( startTime = 0 .05 , V = 10 ) annotation ( Placement ( visible =
true , transformation ( origin = { - 110 .0 , 50 .0 } , extent =
{ { - 10 .0 , - 10 .0 } , { 10 .0 , 10 .0 } } , rotation = - 90 ) ) ) ;
equation
connect ( stepVoltage1.n , ground1.p ) annotation ( Line ( visible =
true , origin = { - 100 .0 , 26 .6667 } , points = { { - 10 .0 , 13 .3333 } ,
{ - 10 .0 , -6 .6667 } , { 20 .0 , -6 .6667 } } , color = { 0 , 0 , 255 } ) ) ;
connect ( stepVoltage1.p , resistor1.p ) annotation ( Line ( visible =
true , origin = { - 106 .6667 , 73 .33329999999999 } , points =
{ { -3 .3333 , - 13 .3333 } ,
{ -3 .3333 , 6 .6667 } , { 6 .6667 , 6 .6667 } } , color = { 0 , 0 , 255 } ) ) ;
connect ( resistor2.n , ground1.p ) annotation ( Line ( visible = true ,
origin = { - 46 .6667 , 26 .6667 } , points = { { 16 .6667 , 13 .3333 } ,
{ 16 .6667 , -6 .6667 } , { - 33 .3333 , -6 .6667 } } , color =
{ 0 , 0 , 255 } ) ) ;
connect ( inductor1.n , capacitor1.p ) annotation ( Line ( visible =
true , origin = { - 13 .333 , 73 .333 } , points = { { - 26 .667 , 6 .667 } ,
{ 13 .333 , 6 .667 } , { 13 .333 , - 13 .333 } } , color = { 0 , 0 , 255 } ) ) ;
connect ( capacitor1.n , ground1.p ) annotation ( Line ( visible =
true , origin = { - 26 .6667 , 26 .6667 } , points =
{ { 26 .6667 , 13 .3333 } , { 26 .6667 , -6 .6667 } , { - 53 .3333 , -6 .6667 } } ,
color = { 0 , 0 , 255 } ) ) ;
connect ( inductor1.n , resistor2.p ) annotation ( Line ( visible =
true , origin = { - 33 .3333 , 73 .33329999999999 } , points =
{ { -6 .6667 , 6 .6667 } , { 3 .3333 , 6 .6667 } , { 3 .3333 , - 13 .3333 } } ,
color = { 0 , 0 , 255 } ) ) ;
connect ( resistor1.n , inductor1.p ) annotation ( Line ( visible =
true , origin = { - 70 .0 , 80 .0 } , points = { { - 10 .0 , 0 .0 } ,
{ 10 .0 , 0 .0 } } , color = { 0 , 0 , 255 } ) ) ;
annotation ( Diagram ( coordinateSystem ( extent = { { - 148 .5 , - 105 .0 } ,
{ 148 .5 , 105 .0 } } , p r e s e r v e A s p e c t R a t i o = true , initialScale =
0 .1 , grid = { 5 , 5 } ) ) , experiment ( StartTime = 0 .0 ,
StopTime = 1 .4 , NumberOfIntervals = -1 , Algorithm = " dassl " ,
Tolerance = 1 e - 006 ) ) ;
annotation ( Documentation ( info = " < html >
<p > Ejemplo del modelado gr
a fico , mediante la interconexi
on
de componentes de la biblioteca <tt > Modelica.Electrical </ tt > .
</p >
</ html > " ) ) ;
end C i r c u i t o E l e c t r i c o D i a g r a m a ;

312

14 Introduccin a SystemModeler

Si se eliminan las anotaciones para la creacin del diagrama de interconexin, el


programa anterior se reduce a:
model C i r c u i t o E l e c t r i c o D i a g r a m a " Circuito el
e ctrico de ejemplo "
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . C a p a c i t o r capacitor1 ( C = 0 .01 ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . G r o u n d ground1 ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . I n d u c t o r inductor1 ( L = 1 ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . R e s i s t o r resistor1 ( R = 10 ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . B a s i c . R e s i s t o r resistor2 ( R = 100 ) ;
M o d e l i c a . E l e c t r i c a l . A n a l o g . S o u r c e s . S t e p V o l t a g e stepVoltage1
( 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 ) ;
end C i r c u i t o E l e c t r i c o D i a g r a m a ;

De forma preseleccionada, el editor de texto del Model Center no despliega las


notas de los modelos grficos. Estas pueden mostrarse (Expand Annotations) y
ocultarse (Collapse Annotations), seleccionado del men desplegable con el botn
derecho del apuntador, la opcin correspondiente.
La primera parte del programa, corresponde a la declaracin de los elementos con
el valor de sus parmetros y la segunda, a las ecuaciones de interconexin entre los
terminales de los elementos mediante el uso de la ecuacin connect. En los iconos
de los elementos elctricos 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 14.23, se
aprecia fcilmente que cada una de las ecuaciones connect, corresponde al cable
elctrico que conecta uno de los terminales de un componente del circuito, con uno
de los terminales de otro, segn lo establece la topologa del circuito.
Las conexiones entre los componentes, especifican las interacciones entre estos. En cada terminal de conexin (conector), residen las variables (pervariables y
transvariables) que describen la interaccin. En los elementos elctricos estas son
corriente y tensin.
Por ejemplo, la ecuacin de conexin
connect ( resistor1.n , inductor1.p ) ;

14.4. Modelado grfico

313

establece dos ecuaciones en el punto de conexin (nodo) entre el resistor R1 y el


capacitor C1 . Una ecuacin establece que las tensiones (variables de potencial) en
los dos terminales son iguales (resistor1.n.v = inductor1.p.v) y la otra, que la
suma de las corrientes (variables de flujo) entrando al nodo es cero (resistor1.n.i
+ inductor1.p.i = 0).
Si se hace un verificacin del diagrama de interconexin (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 nmero de variables y ecuaciones es ahora, sustancialmente mayor, al de las
del modelo desarrollado mediante las ecuaciones de definicin de los elementos y la
topologa del circuito. Esto se debe a que, en los modelos elaborados mediante un
diagrama de interconexin de componentes, por un lado se generan como mnimo
dos ecuaciones por cada conexin 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 tambin 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 explcitamente los valores iniciales de los estados (Vc e
IL en este ejemplo), el compilador tomar los valores por omisin 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 pestaa Variables.
Cuando la simulacin se realiza interconectando componentes de la biblioteca
Modelica, se tiene acceso a las variables de potencial (transvariables v en los circuitos
elctricos), en cada uno de los conectores (p y n) para cada uno de los componentes,
a la variable de flujo (pervariable i en los circuitos elctricos) fluyendo del terminal p
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 14.25, para el circuito elctrico del ejemplo, se ha
deseado comparar en un subgrfico las diferencias de tensin a travs de la fuente (stepVoltage1.v), el capacitor (capacitor1.v), el inductor (inductor1.v)
y el resistor 1 (resitor1.v); y en otro subgrfico las corrientes por el capacitor
(capacitor1.i), el inductor (inductor1.i) y el resistor 2 (resistor2.i).

314

14 Introduccin a SystemModeler

Figura 14.25: Simulation Center - Curvas de respuesta y navegador de variables


Es posible tener varios subgrficos, pero todos en una sola columna.
Las leyendas de las figuras, as como el color, grosor y trazo de las lneas, y el tipo
de cuadrcula de fondo, se pueden seleccionad en la ventana Plot Properties (ver la
figura 14.14) desplegada con la opcin Properties del men desplegado presionado
con el botn derecho del apuntador.
Los grficos 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 grfico para ampliarlo, marcando la zona con
el botn izquierdo del apuntador. Adems, manteniendo el cursor del apuntador sobre
una de las lneas del grfico, se mostrar en una ventana emergente, el valor de la
variable en ese punto, as como sus valores mximos y mnimos, con los instantes a
los que estos ocurren, tal como se muestra en la figura 14.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 posterior, o exportar en formato .mat (MATLAB) o .csv (MS-Excel), para ser importardos dentro de otro programa que pueda manejar la informacin en estos formatos.

14.5. Enlace con Mathematica

315

Figura 14.26: Simulation


Center - Indicacin de
valores instantneos, mximos y mnimos de una
variable

14.5 Enlace con Mathematica


Los modelos creados en SystemModeler en el Model Center, pueden simularse en el
Simulation Center o con Mathematica.
El enlace entre el Simulation Center y Mathematca 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 botn [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 simulacin y anlisis que esta provee, para realizar
estudios adicionales con el sistema en estudio.
Para esto, se debe crear un nuevo cuaderno interactivo de Mathematica, seleccionado en el men de Mathematica la opcin [File][New][Notebook (.nb)].
En el cuaderno interactivo, el enlace entre Mathematica y SystemModeler (WSMLink) se carga con la instruccin
In [ xx1 ]:= Needs [ " WSMLink ` " ]

Debe recordarse que en los cuadernos interactivos de Mathematica, las instrucciones se evalan 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 simulacin del modelo y el despliegue de las variables
son:
Simulacin
In [ xx2 ]:= msim = WSMSimulate [ " nombreModelo " ,{ to , tf }]

14 Introduccin a SystemModeler

316

msim contiene los resultados de la simulacin (objeto WSMSimulationData).


Nombres de las variables del modelo
In [ xx3 ]:= msim [ " VariableNames " ]

Despliegue grfico de las variables


In [ xx4 ]:= WSMPlot [ msim ,{ " var1 " ," var2 " , ...}]

Tal como se muestra en la figura 14.27 para el caso del modelo del circuito elctrico del ejemplo (CircuitoElectrico.mo).
Se muestra tambin, como se puede comparar el efecto del cambio de un parmetro del sistema, en este caso, tres valores de la resistencia del resistor R1 , utilizando
la instruccin WSMParameterValues.

14.5. Enlace con Mathematica

Figura 14.27: Mathematica - Simulacin de un modelo Modelica

317

15
Modelado y simulacion de sistemas fsicos
con Modelica y SystemModeler
En los captulos anteriores se ha presentado el lenguaje Modelica, el cual es un formalismo apropiado para el modelado de sistemas heterognos. Tambin se han presentado los componentes de la biblioteca Modelica, con los cuales se puede realizar
un modelado grfico mediante la interconexin de los componentes que integran el
sistema. Adems, se introdujo el uso de los componentes de SystemModeler, el Model
Center para elaborar el modelo y el Simulation Center para realizar su simulacin.

15.1 Introduccin
Utilizando diferentes ejemplos, por lo general simples, se presentar el modelado
y la simulacin 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 ecuacin de conexin; o directamente mediante un modelado grfico,
utilizando diagramas de interconexin.
El modelado de los diferentes sistemas, se enfrentar bsicamente en tres formas
diferentes. Primero, determinando las ecuaciones que describen su comportamiento
dinmico. Aunque este pareciera ser el procedimiento tradicional, se har uso de
las capacidades del lenguaje Modelica, evitando una programacin en diagrama de
bloques. Excepto para aquellos casos en que en forma adrede, se desee ilustrar el
uso de los bloques entrada salida disponibles en la biblioteca Modelica.
La segunda forma, ser mediante el uso de los componentes disponibles en las
diferentes bibliotecas. Definiendo la topologa del sistema, mediante el uso de ecuaciones de conexin entre sus terminales (ecuaciones connect).
La tercera, y a la cual se le dar mayor nfasis, ser el modelado mediante diagramas grficos.
Para la simulacin, se establecern los parmetros de los componentes, la mayora de las veces arbitrarios, y se mostrarn algunas de las posibles curvas de compor319

320

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.1: Circuito RLC


serie

tamiento de las variables del sistema, sin pretender hacer una anlisis exhaustivo del
mismo.

15.2 Sistemas elctricos


Como se vio en la seccin 5.2.4, la biblioteca Modelica incorpora una variedad importante de componentes, para el modelado de los sistemas elctricos y electrnicos.
Mediante ejemplos sencillos, se ilustrar el uso de algunos de estos.

15.2.1

Circuito RLC serie

Como ejemplo de un sistema elctrico simple, considrese el circuito RLC en serie


mostrado en la figura 15.1.
Los estados de este circuito, son la diferencia de tensin Vc (t) a travs del capacitor y la corriente iL (t) por el inductor.
Por inspeccin, se pueden determinar las ecuaciones de estado este circuito, dadas por las siguientes expresiones:
dVc (t)
= iL (t),
dt
diL (t)
= V f (t) R iL (t) Vc (t).
L
dt

(15.1)
(15.2)

El valor de los parmetros de los elementos del circuito para la simulacin del
ejemplo son: R = 60 , L = 1,0 H y C = 0,0001 F. La tensin de la fuente V f = 10
V y se aplicar en el instante t = 0,01 s. Los estados iniciales son iL (0) = 0 A y
Vc (0) = 0 V.

15.2. Sistemas elctricos

321

Figura 15.2: Tensin en el capacitor y pestaa para la seleccin de variables


Simulacin empleando las ecuaciones constitutivas de los elementos
Utilizando (15.1) y (15.2) y los valores de los parmetros establecidos, el programa Modelica para determinar la tensin a travs del capacitor y la corriente por el
inductor es:
model SisElec01_esm
// Circuito el
e ctrico RLC serie
// Modelado con base en las ecuaciones del circuito
import Modelica.SIunits. * ;
parameter Resistance R = 60 .0 ;
parameter Capacitance C = 0 .0001 ;
parameter Inductance L = 1 .0 ;
Voltage Vf " fuente " ;
Voltage Vc ( start = 0 , fixed = true ) " tension capacitor " ;
Current Il ( start = 0 , fixed = true ) " corriente inductor " ;
equation
Vf = if time >= 0 .01 then 10 else 0 .0 ;
C * der ( Vc ) = Il ;
L * der ( Il ) = Vf - R * Il - Vc ;
annotation ( experiment ( StopTime = 0 .2 , NumberOfIntervals = 500 ) ) ;
end SisElec01_esm ;

En la figura 15.2 se muestra la curva de respuesta de la tensin a travs del capacitor (Vc).
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), estn disponibles

322

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.3: Ventanas del navegador del experimento


para hacer las declaraciones de los parmetros y las variables.
De esta manera por ejemplo, R y Vc no son simplemente un parmetro y una
variable reales, estos tienen un significado fsico.
Mediante las lneas del programa
import Modelica.SIunits. * ;
parameter Resistance R = 60 .0 ;
...
Voltage Vc ( start = 0 , fixed = true ) " tensi
o n capacitor " ;

se indica que el parmetro 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 15.3, el navegador del experimento provee cuatro
pestaas para desplegar la informacin (Plot, Parameters, Variables, Settings).
En estas, los parmetros aparecen listados con su valor y las variables con su
condicin inicial, ambos junto con sus unidades. Adems, tambin se ve como los
comentarios de definicin empleados en la seccin de declaraciones, son utilizados
como las descripciones mostradas junto a las variables.
El programa de simulacin en Modelica del circuito RLC serie, tambin se puede
haber escrito del a siguiente manera:
model SisElec01_eincsm
import Modelica.SIunits. * ;
parameter Resistance R = 60 .0 ;
parameter Capacitance C = 0 .0001 ;
parameter Inductance L = 1 .0 ;

15.2. Sistemas elctricos

323

Voltage Vf , Vr , Vl ;
Voltage Vc ( start = 0 , fixed = true ) ;
Current Il ( start = 0 , fixed = true ) ;
equation
Vf = if time >= 0 .01 then 10 else 0 .0 ;
Vr = R * Il ;
Vl = L * der ( Il ) ;
C * der ( Vc ) = Il ;
Vc = Vf - Vr - Vl ;
annotation ( experiment ( StopTime = 0 .2 , NumberOfIntervals = 500 ) ) ;
end SisElec01_eincsm ;

en el cual todas las ecuaciones del modelo son consistentes. Adems, el modelo tiene
cinco incgnitas y cinco ecuaciones.
Por el contrario, si la ltima ecuacin se hubiera escrito como
...
Vc = Vf - Vr - Il ;
...

el compilador indicar que el problema de inicializacin 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 initialization 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 ecuacin condicional if, para establecer los instantes en que la tensin de la fuente de alimentacin cambia (eventos de
tiempo),
...
Vf = if time >= 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.

324

15 Modelado y simulacin con Modelica y SystemModeler

Seccin de ecuaciones iniciales


En los modelos anteriores, las condiciones iniciales de los estados se incluyeron como parte de su definicin.
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 simulacin del modelo, se pueden definir parmetros con el valor de las
condiciones iniciales, e incluir la seccin initial equation para asignarlos a los
estados. Por ejemplo:
model SisElce01_eicsm
...
parameter Voltage Vc_ic = 0;
parameter Current Il_ic = 0;
...
Voltage Vc " tensi
o n capacitor " ;
Current Il " corriente inductor " ;
initial equation
Vc = Vc_ic ;
Il = Il_ic ;
equation
...
end SisElce01_eicsm ;

Extensin de los modelos


Supngase que el modelo del circuito elctrico del ejemplo, se ha escrito como
model SisElec01_enicsm
import Modelica.SIunits. * ;
parameter Resistance R = 60 .0 ;
parameter Capacitance C = 0 .0001 ;
parameter Inductance L = 1 .0 ;
Voltage Vf " fuente " ;
Voltage Vc ( start = 0 ) ;
Current Il ( start = 0 ) ;
equation
Vf = if time >= 0 .01 then 10 else 0 .0 ;
C * der ( Vc ) = Il ;
L * der ( Il ) = Vf - R * Il - Vc ;
annotation ( experiment ( StopTime = 0 .2 , NumberOfIntervals = 500 ) ) ;
end SisElec01_enicsm ;

15.2. Sistemas elctricos

325

Figura 15.4: Respuestas con las nuevas condiciones iniciales


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 extendindolo (extends) de la siguiente manera
model SisElec01_extsm
extends SisElec01_enicsm ;
initial equation
Vc = 5;
Il = -0 .02 ;
end SisElec01_extsm ;

El nuevo modelo permite hacer uso del modelo SisElec01_enicsm.mo, modificando solamente el valor de las condiciones iniciales. Como estas estn indicadas
dentro de la seccin initial equation, estas se toman como valores fijos.
La instruccin extends, inserta en el nuevo modelo el cdigo del modelo que
se extiende (se ampla con caractersticas nuevas o se modifican algunas de las ya
definidas).
La tensin a travs del capacitor y la corriente por el inductor, con las nuevas
condiciones iniciales, se muestra en la figura 15.4.
El modelo se puede reutilizar fcilmente tambin con parmetros diferentes, extendindolo con modificaciones, como por ejemplo
model SisElec01_np
extends SisElec01_eic ( R = 50 , C = 0 .0002 , L = 1 .5 ) ;

326

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.5: Respuestas con dos conjuntos de parmetros diferentes


Figura 15.6: Terminales
de interconexin, de los
elementos del circuito RLC
serie

annotation ( experiment ( StartTime = 0 , StopTime = 0 .4 ,


Tolerance = 1 e -06 , Interval = 0 .0008 ) ) ;
end SisElec01_np ;

En este caso se extendi el modelo SisElec01_eic.mo que tiene definidas como


parmetros y fijas, las condiciones iniciales. Adems, se debi ampliar el tiempo final
de la simulacin, debido al nuevo comportamiento del circuito.
En la figura 15.5, se pueden comparar las respuestas obtenidas con los dos conjuntos de parmetros.
Simulacin utilizando la ecuacin connect
En la figura 15.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.

15.2. Sistemas elctricos

327

Se har uso ahora de los componentes elctricos 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 ecuacin connect para realizar la conexin
entre los componentes, el programa de simulacin de este circuito sera el siguiente.
model SisElec_csm
// Circuito el
e ctrico RLC serie
// Modelo con base en la interconexi
o n de sus elementos
import M o d e l i c a . E l e c t r i c a l . A n a l o g . * ;
Basic.Resistor R1 ( R = 60 .0 ) ;
Basic.Capacitor C1 ( C = 0 .0001 ) ;
Basic.Inductor L1 ( L = 1 .0 ) ;
Basic.Ground g ;
S o u r c e s . S t e p V o l t a g e Vf ( V = 10 , startTime = 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 = 0 .2 , NumberOfIntervals = 500 ) ) ;
end SisElec_csm ;

En la primera parte del programa, se definen los elementos utilizados junto con
sus parmetros: un resistor (R1), un capacitor (C1), un inductor (L1), un punto de
referencia o tierra (g) y una fuente de tensin (Vf).
En la segunda, utilizando una seccin de initial equation, se definen las
ecuaciones que establecen las condiciones iniciales.
En la tercera parte, se hace uso de la ecuacin de conexin connect, para definir
la topologa del circuito, segn se muestra en la figura 9.5.
Modelado grfico
Para modelar el circuito RLC serie del ejemplo, se utilizan los componentes bsicos de la biblioteca Modelica.Electrical.Analog.Basic (Ground, Resistor,
Capacitor, Inductor), y la fuente de tensin Modelica.Electrical.Analog.
Sources.StepVoltage.
Empleando el editor de conexiones de SystemModeler Model Center, se puede
elaborar la programacin grfica del circuito simulado, tal como se ilustra en la
figura 15.7.

328

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.7: Diagrama


de simulacin del
circuito RLC serie
(SisElec01_orsm.mo)

El valor de los parmetros de los componentes, se introduce seleccionndolo con


el apuntador y abriendo la pestaa Parameters. A manera de ejemplo, en la figura
15.8 se muestran los parmetros del componente fuente_tension (su tensin y el
instante a partir del cual se aplica).
En la figura 15.9 se muestra la curva de respuesta de la corriente por el inductor.
Se puede comprobar fcilmente, que las respuestas obtenidas con los tres programas anteriores, son idnticas.
Procesamiento de las variables
En los programas Modelica elaborados mediante el uso de diagramas de interconexin, se tiene acceso a todas las variables en los terminales (conectores) de los componentes para su despliegue grfico, seleccionndolas en el navegador de variables.
Sin embargo, si se desea utilizar alguna de estas variables para realizar, por ejemplo
algn tipo de clculo, esta debe medirse.
En la bliblioteca Modelica.Electrical.Analog.Sensors, se cuenta con medidores de corriente, tensin y potencia.
Para calcular la energa almacenada en el capacitor, se ha adicionado al circuito
un vatmetro (Modelica.Electrical.Analog.Sensors.PowerSensor), como se
muestra en la figura 15.10. El vatmetro tiene un par de terminales para medir la
corriente y otro par para medir la tensin.
La potencia es integrada (Modelica.Blocks.Continouos.Integrator) para
calcular la energa almacenada.
El vatmetro incorpora un voltmetro y un ampermetro. Utilizando estos, en la
figura 15.11 se muestra la variacin de la tensin (Plot Y(T):7), la corriente (Plot

15.2. Sistemas elctricos

Figura 15.8: Parmetros de


la fuente_tension

Figura 15.9: Corriente por


el inductor

329

330

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.10: Clculo de la energa almacenada en el capacitor


Y(T): 8) y la potencia (Plot Y(T):9) en el capacitor. La energa almacenada en el
capacitor (Plot Y(T):10) es la salida del integrador. Adems, empleando el cursor de
medicin sobre el grfico de la energa, se determin que la energa total almacenado
es Etotal = 0,004982 J.
Variacin de los parmetros del modelo
Los parmetros iniciales del circuito elctrico son: R = 60 , L = 1 H y C = 0,0001 F
y los resultados de esta simulacin (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 parmetros se
cambian a los siguientes valores: R = 100 , L = 1,50 H y C = 0,0002 F.
En el Simulation Center se selecciona la pestaa de Parameters del modelo y se
hacen los cambios requeridos. Se ejecuta la simulacin (experimento 2) y los nuevos
resultados se guardan en el archivo SisElec01_osm 2.sme.
Con los archivos de resultados de los dos experimentos abiertos en el Simulation Center, se seleccin las variables a mostrar en los grficos y se modifican las
propiedades de los mismos, segn sea necesario.

15.2. Sistemas elctricos

331

Figura 15.11: Variables en el capacitor


En la figura 15.12 se muestra el comportamiento del circuito con los dos conjuntos de parmetros.

15.2.2

Circuito RLC paralelo

Considrese ahora el circuito RLC en paralelo, mostrado en la figura 15.13.


Los estados en este circuito son la tensin Vc (t) a travs del capacitor y la corriente iL (t) por el inductor. Las ecuaciones de estado de este circuito son entonces
dVc (t)
1
= I f (t) Vc (t) iL (t),
(15.3)
dt
R
diL (t)
= Vc (t).
(15.4)
L
dt
En forma similar al caso del circuito RLC en serie, se har la simulacin de
este circuito utilizando dos procedimientos diferentes. En el primero, empleando las
ecuaciones del circuito para escribir directamente el modelo y despus, utilizando los
componentes definidos en la biblioteca Modelica.
Los parmetros 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), iL (0) = 0 A y Vc (0) = 0 V.
C

Simulacin empleando las ecuaciones constitutivas de los elementos


Utilizando (15.3) y (15.4) y los valores de los parmetros establecidos, el programa Medelica para determinar la tensin a travs del capacitor y la corriente por el

15 Modelado y simulacin con Modelica y SystemModeler

332

Figura 15.12: Efecto del camio de los parmetros


Figura 15.13: Circuito RLC paralelo

inductor es:
model SisElec02_esm
// Circuito RLC paralelo
// Modelo con base en las ecuaciones del circuito
import Modelica.SIunits. * ;
parameter Resistance R = 200 .0 ;
parameter Capacitance C = 0 .0001 ;
parameter Inductance L = 1 .0 ;
Current If " fuente " ;
Voltage Vc ( start = 0 , fixed = true ) " tensi
o n capacitor " ;
Current Il ( start = 0 , fixed = true ) " corriente inductor " ;

15.2. Sistemas elctricos

333

Figura 15.14: Diagrama de simulacin del circuito RLC paralelo


equation
If = if time >= 0 .02 then 2 else 0 .0 ;
C * der ( Vc ) = If - Vc / R - Il ;
L * der ( Il ) = Vc ;
annotation ( experiment ( StopTime = 0 .3 , NumberOfIntervals = 500 ) ) ;
end SisElec02_esm ;

Modelado grfico
El programa de simulacin elaborado con el Model Center (SisElec02_osm.mo),
se muestra en la figura 15.14. En este, se ha incluido un ampermetro y un voltmetro,
los cuales si bien no son indispensables en este caso, sirven para ilustrar el uso de
otros componentes disponibles.
En la figura 15.15 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 ampermetro
(azul) con el segundo. Tal como debera ser, las dos curvas son idnticas.
Ntese 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.

15 Modelado y simulacin con Modelica y SystemModeler

334

Figura 15.15: Corriente por el inductor

15.2.3

Efecto de la temperatura sobre la resistencia elctrica

En los ejemplos de las secciones 15.2.1 y 15.2.2 anteriores, se ha hecho uso de resistores elctricos ideales, con una resistencia constante. Sin embargo, el componente
Resistor de la biblioteca Modelica.Electrical.Analog.Basic, permite tomar
en consideracin el efecto de la temperatura sobre el valor de su resistencia.
La resistencia del componente est dada por la relacin



(15.5)
R = Rre f 1 + Thp Tre f ,
donde:

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 parmetros del resistor se muestra en la figura 15.16.

15.2.4

Rectificador de onda completa

En la figura 15.17 se muestra el diagrama de simulacin, de un rectificador elctrico


de onda completa, que utiliza cuatro diodos ideales.

15.2. Sistemas elctricos

335

Figura 15.16: Parmetros del Resistor elctrico

Figura 15.17: Rectificador de onda completa


Este incluye los siguientes componentes:
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.IdealTransformer
Modelica.Electrical.Analog.Sources.SineVoltage
El modelo del circuito del rectificador es un modelo hbrido, ya que mezcla componentes continuos con elementos discretos. El diodo es un componente discreto, ya
que si conduce o no, depende de que se cumpla una condicin.
Si el diodo no conduce (est off), no fluye corriente por el y la tensin a travs
suyo es negativa. Si el diodo conduce (est on), la corriente fluye y la cada de
tensin a travs de el es cero.
El diodo ideal es implementado con el siguiente cdigo (Modelica Association,
2013):

336

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.18: Parmetros del componente SineVoltage

model IdealDiode " Ideal diode "


extends M o d e l i c a . E l e c t r i c a l . A n a l o g . I n t e r f a c e s . O n e P o r t ;
parameter M o d e l i c a . S I u n i t s . R e s i s t a n c e Ron ( final min = 0 ) = 1 e - 05
" Forward state - on differential resistance ( closed diode
resistance ) " ;
parameter M o d e l i c a . S I u n i t s . C o n d u c t a n c e Goff ( final min = 0 ) = 1 e - 05
" Backward state - off conductance ( opened diode conductance ) " ;
parameter M o d e l i c a . S I u n i t s . V o l t a g e Vknee ( final min = 0 , start = 0 )
" Forward threshold voltage " ;
extends M o d e l i c a . E l e c t r i c a l . A n a l o g . I n t e r f a c e s .
ConditionalHeatPort;
Boolean off ( start = true ) " Switching state " ;
protected
Real s ( start = 0 , final unit = " 1 " ) " Auxiliary variable for
actual position on the ideal diode characteristic " ;
// s = 0 : knee point
// s < 0 : below knee point , diode conducting
// s > 0 : above knee point , diode locking
constant M o d e l i c a . S I u n i t s . V o l t a g e unitVoltage = 1
annotation ( HideResult = true ) ;
constant M o d e l i c a . S I u n i t s . C u r r e n t unitCurrent = 1
annotation ( HideResult = true ) ;
equation
off = s < 0;
v = s * unitCurrent * ( if off then 1 else Ron ) + Vknee ;
i = s * unitVoltage * ( if off then Goff else 1 ) + Goff * Vknee ;
LossPower = v * i ;
...
end IdealDiode ;

La fuente de alimentacin es de 110 V, 60 Hz, la relacin de transformacin del


transformador es 13:35, la capacitancia del filtro C = 0,001 F y la carga es resistiva,
con una resistencia R = 100 .
La ventana de parmetros de la fuente de alimentacin se muestra en la figura
15.18.

15.3. Sistemas mecnicos con elementos que se desplazan

337

Figura 15.19: Tensiones en el rectificador de onda completa

Las seales de entrada y salida del rectificador se muestran en la figura 15.19. El


valor medio de la tensin en la carga es de 11,55 V.

15.3 Sistemas mecnicos con elementos que se desplazan


En la seccin 5.2.7 se describieron algunos de los componentes incluidos en la biblioteca Modelica, para modelar sistemas mecnicos con elementos que se desplazan en
una direccin sobre un plano, que giran sobre su eje, o que son de tres dimensiones.
Los sistemas mecnicos cuyos elementos se desplazan, se modelan con los componentes de la biblioteca Modelica.Mechanics.Traslational.

15.3.1

Sistema con masa, resorte y amortiguador

Considrese por ejemplo, el sistema mecnico con una masa, un resorte y un amortiguador, mostrado en la figura 15.20, en donde se aplica una fuerza a la masa.

338

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.20: Sistema mecnico con


elementos que se desplazan

Un modelo para este sistema, est dado por las ecuaciones:


m

dV (t)
= Fi (t) Fb (t) Fk (t),
dt
dX(t)
,
V (t) =
dt
dX(t)
Fb (t) = b
,
dt
Fk (t) = k X(t).

(15.6)
(15.7)
(15.8)
(15.9)

Los parmetros del sistema para el ejemplo son: m = 36 kg, k = 1 N m1 y b = 1


N s m1 . La fuerza aplicada es Fi = 5 N para 2 t 30s y Fi = 0 N para todo otro
instante. Las condiciones iniciales son X(0) = 0 m y V (0) = 0 m s1 .
Simulacin empleando las ecuaciones constitutivas de los elementos
Utilizando (15.6) a (15.9) y los valores de los parmetros establecidos, el programa
Modelica para determinar la posicin y la velocidad de la masa es:
model SisMec01_extsm " Sistema mec
a nico masa resorte amortiguador "
// Modelo con base en las relaciones contitutivas
import Modelica.SIunits. * ;
parameter Mass m = 2 " masa " ;
parameter Real k = 1 " constante resorte " ;
parameter Real b = 1 " coef. amortiguador " ;
Force fuerzaAplicada " fuerza aplicada " ;

15.3. Sistemas mecnicos con elementos que se desplazan

339

Figura 15.21: Posicin y velocidad de la masa y fuerza aplicada


Force fuerzaResorte , fuerzaAmortiguador ;
Position posicion ( start = 0 , fixed = true ) " posicion masa " ;
Velocity velocidad ( start = 0 , fixed = true ) " velocidad masa " ;
equation
m * der ( velocidad ) = fuerzaAplicada - fuerzaAmortiguador
- fuerzaResorte ;
velocidad = der ( posicion ) ;
b * velocidad = fuerzaAmortiguador ;
k * posicion = fuerzaResorte ;
fuerzaAplicada = if time >= 2 and time <= 30 then 5 else 0;
annotation ( experiment ( StopTime = 60 , NumberOfIntervals = 1000 ) ) ;
end SisMec01_extsm ;

En la figura 15.21 se muestra el comportamiento del sistema mecnico (posicin,


velocidad y fuerza aplicada).
Modelado grfico
El programa de simulacin elaborado con el Model Center para modelar y simular
el sistema mecnico de la figura 9.18 (SisMec01_o.mo), se muestra en la figura
15.22.
En este se han utilizado los componentes mecnicos Fixed, Mass, Spring, Damper
contenidos en la biblioteca Modelica.Mechanics.Traslational.Components,
la fuerza tipo escaln Modelica.Mechanics.Traslational.Sources.ForceStep
y el medidor Modelica.Mechanics.Traslational.Sensors.RelSpeedSensor.
En la figura 15.23 se muestran las curvas de posicin y velocidad de la masa,
para 0 t 30 s, tomadas de un punto de conexin (flange_b) del medidor de

15 Modelado y simulacin con Modelica y SystemModeler

340

Figura 15.22: Diagrama


de simulacin del sistema
mecnico

velocidad.

15.3.2

Sistema mecnico libre

En este ejemplo, el conjunto mecnico de la figura 15.24, est compuesto por una
masa cilndrica, 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 friccin por el piso (se supone que la masa de la placa es despreciable). La masa
cilndrica junto con el amortiguador, se encuentran en la parte interna de un resorte,
cuyos extremos estn sujetos uno a la pared y el otro a la placa.
La longitud de la masa cilndrica es Lm . La longitud del amortiguador Lb (t) puede
variar desde Lbmin hasta Lbmax = 2Lmin cuando est extendido. Por lo tanto la longitud del resorte es Lk (t) = Lm + Lb (t). Cuando no est sometido a ninguna fuerza, el
resorte tiene una longitud Lko .
El diagrama para la simulacin de este conjunto con Modelica, se muestra en la
figura 15.25.

15.3. Sistemas mecnicos con elementos que se desplazan

Figura 15.23: Posicin y velocidad de la masa

Figura 15.24: Conjunto mecnico

Figura 15.25: Diagrama de interconexin del conjunto mecnico

341

342

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.26: Diagrama de interconexin del conjunto mecnico

En este se han empleado los componentes Mass, Spring, Damper y Fixed, de


la biblioteca Modelica.Mechanics.Translational.Components.
Los parmetros del componente Mass (masa) son su masa m en kg y su longitud
L en m. Por su parte los parmetros del componente Spring (resorte) son su constante k (c) en N m1 y su longitud sin estiramiento (s_real0). El nico parmetro del
componente Damper (amortiguador), es su constante de amortiguamiento b (d) en
N s m1 .
Para el ejemplo se utilizarn los siguientes parmetros: masa (m = 20 kg, L =
20 cm), resorte (c = 10 N m1 , s_real0 = 50 cm), amortiguador (d = 10 N s m1 ).
El conjunto se encuentra inicialmente en reposo.
En la figura 15.26, se muestra el diagrama esquemtico de este sistema con la
indicacin de las distancias, respecto a la pared de referencia, de los extremos de los
componentes y del centro de masa de la masa cilndrica.
Primero se arma el conjunto, con el amortiguador con la longitud ms corta entre sus extremos, indicando flange_b.s(start =0.2, fixed =true) como una
condicin inicial del modelo.
El comportamiento del conjunto mecnico, a partir de estas condiciones, se muestra en la figura 15.27.
Como se puede ver en esta figura, la solucin del problema de valor inicial determin que el centro de masa (c.m.) de la masa cilndrica, 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 compresin 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

15.4. Sistemas mecnicos con elementos que giran

343

0 = 20 cm)
Figura 15.27: Comportamiento del conjunto mecnico ( fbb

su longitud mxima). Para esto, basta cambiar la posicin inicial del extremo del
amortiguador conectado a la masa flange_b.s(start =0.4, fixed =true).
Como se observa en la figura 15.28, el centro de la masa cilndrica, 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 fcilmente, que si se especifica como posicin inicial del
extremo del amortiguador flange_b.s(start =0.3, fixed =true), el conjunto
no experimentar ningn movimiento, ya que el resorte no estar inicialmente, ni
comprimido ni estirado.

15.4 Sistemas mecnicos con elementos que giran


Los sistemas mecnicos cuyos elementos giran, se modelan con los componentes de
la biblioteca Modelica.Mechanics.Rotational.

344

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.28: Comportamiento del conjunto mec0 = 40 cm)


nico ( fbb

Figura 15.29: Sistema mecnico que gira

15.4.1

Sistema con un volante y un resorte y un amortiguador


giratorios

En la figura 15.29 se muestra un sistema mecnico simple cuyos elementos giran.


Una masa giratoria (volante), est conectada a una barra (resorte giratorio) y a un
amortiguador giratorio.
Los parmetros del sistema son: inercia J = 10 kg m2 , constante del resorte K =
10 N m rad1 y coeficiente del amortiguador B = 5 N m rad1 s1 .
Se aplica un par tipo escaln al eje libre de la inercia T = 10 N m en t = 2 s. Se
desea ver como cambia la velocidad de rotacin de los dos ejes del sistema.
El diagrama Modelica para simular este sistema, se muestra en la figura 15.30.
En este diagrama se ha utilizado los siguientes componentes:
Modelica.Mechanics.Rotational.Components.Fixed

15.4. Sistemas mecnicos con elementos que giran

345

Figura 15.30: Diagrama de simulacin de un sistema mecnico que gira

Modelica.Mechanics.Rotational.Components.Inertia
Modelica.Mechanics.Rotational.Components.Spring
Modelica.Mechanics.Rotational.Components.Damper
Modelica.Mechanics.Rotational.Sensors.SpeedSensor (2)
Modelica.Mechanics.Rotational.Sources.TorqueStep
En la figura 15.31 se muestra la velocidad de rotacin en los dos extremos del
resorte giratorio. El extremo conectado a la inercia (medidor_1.flang_b) empieza
a girar primero e inicialmente ms rpido, que el extremo conectado al amortiguador (medidor_2.flange_b). Despus de aproximadamente un minuto, los dos ejes
alcanzan la misma velocidad de rotacin y estas permanecen constantes (1 (t) =
2 (t) = 2 rad s1 ).

15.4.2

Mquina giratoria desbalanceada

Se tiene una mquina giratoria (motor elctrico, compresosr, turbina, u otra) cuyo rotor est desbalanceado. El diagrama de la mquina se muestra en la figura
15.32 (Speckhart y Green, 1976).
La masa total de la mquina es M. El rotor tiene una masa desbalanceada m, cuyo
centro de masa est a una distancia r del centro del rotor.
La mquina se ha montado sobre un soporte, compuesto por un resorte equivalente (k) y un amortiguador (b).

346

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.31: Velocidades de rotacin en el sistema mecnico giratorio

Figura 15.32: Mquina giratoria


desbalanceada

15.4. Sistemas mecnicos con elementos que giran

347

Se tomar como posicin de referencia, la posicin de la mquina detenida descansando sobre el soporte.
La ecuacin del movimiento de la mquina esta dada por la expresin
dx(t)
d2 x(t)
+b
+ kx(t) = fm (t),
2
dt
dt
donde la fuerza producida por la masa desbalanceada es
M

fm (t) = mr 2 sen( t).

(15.10)

(15.11)

Producto del desbalance del rotor, se transmite al piso una fuerza


dx(t)
.
(15.12)
dt
Los parmetros de la mquina son: M = 50 kg, m = 0,10 kg, r = 0, 05 m, k =
25 N m1 y b = 4 N s m1 .
La velocidad nominal de rotacin de la mquina es de 1200 revoluciones por minuto ( = 125, 66 rad s1 ) y en el arranque, la mquina se acelera en forma constante,
de tal manera que tarde 10 s en alcanzarla.
El programa de simulacin de la mquina desbalanceada con Modelica, es
ft p (t) = kx(t) + b

model SisMec04MaqDesbsm
parameter Real M = 50 " masa total " ;
parameter Real m = 0 .1 " masa desbalanceada " ;
parameter Real b = 4 " amortiguador " ;
parameter Real k = 25 " resorte " ;
parameter Real r = 0 .05 ;
Real w , fm , ftp ;
Real pos ( start = 0 , fixed = true ) ;
Real vel ( start = 0 , fixed = true ) ;
annotation ( experiment ( StartTime = 0 .0 , StopTime = 120 ,
NumberOfIntervals = -1 , Algorithm = " dassl " , Tolerance = 1 e - 06 ) ) ;
equation
w = if time < 10 then 12 .567 * time else 125 .67 ;
M * der ( vel ) + b * vel + k * pos = fm ;
vel = der ( pos ) ;
fm = m * r * w ^2 * sin ( w * time ) ;
ftp = k * pos + b * vel ;
end SisMec04MaqDesbsm ;

El comportamiento de la mquina, durante los primeros dos minutos de operacin, se muestra en la figura 9.31.
El desplazamiento mximo de la mquina durante el arranque es de +8 mm/-7
mm y en estado estacionario este es de +0,35 mm/-0,30 mm (figura 15.33a).
La fuerza transmitida al piso en estado estacionario, producto del desbalance de
la mquina, es de +0,055 N/-0,045 N (figura 15.33b).

15 Modelado y simulacin con Modelica y SystemModeler

348

(a) Desplazamiento de la mquina

(b) Fuerza transmitida al piso

Figura 15.33: Comportamiento de la mquina desbalanceada durante el arranque

Figura 15.34: Pndulo con amortiguamiento

15.4.3

Pndulo con amortiguamiento

En el desarrollo realizado en la seccin 4.2.13, para obtener los modelos del pndulo
de la figura 4.2, se consider que el aire no ofreca ninguna resistencia al movimiento
del pndulo. Se supondr ahora que la fuerza de resistencia del aire, es proporcional
a la velocidad angular del pndulo.
El pndulo amortiguado se muestra en la figura 15.34 y su modelo est dado por

15.5. Sistemas hidrulicos

349

las siguientes ecuaciones:

(t) =
mL2

d (t)
,
dt

d (t)
+ Lmgsin( (t)) + Lb (t) = 0.
dt

(15.13)
(15.14)

Los parmetros utilizados en el ejemplo son: masa m = 1 kg, largo L = 1 m y


coeficiente de friccin b = 0,75 kg m s1 .
El modelo Modelica del pndulo amortiguado es
model DampedPendulumsm " P
e ndulo amortiguado "
import M o d e l i c a . C o n s t a n t s . p i ;
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
o n inicial " ;
parameter Real velAngic = 10 " velocidad inicial " ;
Real posAng , velAng ;
initial equation
posAng = posAngic ;
velAng = velAngic ;
equation
velAng = der ( posAng ) ;
m * L ^ 2 * der ( velAng ) + L * m * g * sin ( posAng )
+ L * b * velAng = 0;
annotation ( experiment ( StopTime = 10 ) ) ;
end DampedPendulumsm ;

En la figura 15.35 se muestra el plano de fase del pndulo amortiguado con diferentes puntos de partida (posAngic, velAngic).

15.5 Sistemas hidrulicos


Se presentarn aqu algunos ejemplos de modelos Modelica de sitemas hidrulicos,
formados por la interconexin de tanques y vlvulas. Estos se modelarn utilizando
ecuaciones.

15.5.1

Sistema hidrulico con un tanque

En la figura 15.36 se muestra un proceso hidrulico simple, compuesto por un tanque


de rea transversal A, con la parte superior abierta a la atmsfera y una vlvula de
descarga al medio ambiente, de constante Kv .

350

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.35: Plano de fase del pndulo amortiguado


Figura 15.36: Sistema hidrulico
simple

Haciendo un balance volumtrico en el tanque, las ecuaciones del modelo de este


sistema son:
A

dH(t)
= Qe (t) Qs (t),
dt
p
Qs (t) = Kv gH(t).

(15.15)
(15.16)

Se desea analizar como vara el nivel del lquido en el tanque, que est inicialmente vaco, si el caudal de entrada Qe (t) = 0,25 m3 s1 para 5 s t 150 s y
Qe (t) = 0 para cualquier otro instante.
El fluido es agua ( = 1000 kg m3 ) y los parmetros del sistema para la simulacin son: rea transversal del tanque A = 2 m2 , constante de la vlvula Kv = 0,002062
y la aceleracin de la gravedad g = 9, 8 m s2 . El nivel del lquido est dado en m.
El programa de simulacin con Modelica es

15.5. Sistemas hidrulicos

351

Figura 15.37: Variables del sistema hidrulico simple

model SisHidra01_esm
// Sistema hidr
a ulico de un tanque
// V
a lvula no lineal
constant Real g ( unit = " m / s2 " ) = 9 .80 ;
parameter Real A ( unit = " m2 " ) = 2 "
a rea tanque " ;
parameter Real df ( unit = " kg / m3 " ) = 1000 " densidad fluido " ;
parameter Real Kv = 0 .002062 " constante v
a lvula " ;
Real H ( unit = " m " , start = 0 , fixed = true ) " nivel " ;
Real Qe ( unit = " m3 / s " ) " caudal entrada " ;
Real Qs ( unit = " m3 / s " ) " caudal salida " ;
equation
Qe = if time > 5 and time < 150 then 0 .25 else 0;
A * der ( H ) = Qe - Qs ;
Qs = if noEvent ( H >= 0 ) then Kv * sqrt ( df * g * H ) else 0;
annotation ( experiment ( StopTime = 200 ) ) ;
end SisHidra01_esm ;

En este ejemplo, adems de los comentarios de definicin, se han establecido las


unidades (unit) de las variables, las cuales se desplegarn en la columna Unit del
navegador de variables.
En la figura 15.37 se muestra la variacin 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 m3 s1 y el tanque
empieza a llenarse. El fluido se acumula en el tanque y el nivel del lquido en el
mismo aumenta, haciendo a su vez que el caudal de descarga (salida) aumente. El
sistema alcanza el punto de equilibrio (Qs (t) = Qe (t)) cuando el nivel del lquido

15 Modelado y simulacin con Modelica y SystemModeler

352
Figura 15.38: Sistema de dos tanques en serie

H 0 = 1,5 m.
A partir del punto de equilibrio, cuando el caudal de entrada se hace nuevamente
cero, el tanque se vaca rpidamente.
Debido a que la vlvula de descarga es no lineal, las caractersticas dinmicas
del proceso cuando el tanque se est llenado, son diferentes de cuando este se est
vaciando.

15.5.2

Sistema con dos tanques en serie

Se dir que dos sistemas estn en serie, si la salida del primero es la entrada del
segundo. En este caso, la causalidad entrada salida est bien definida.
Un sistema de este tipo, es el compuesto por dos tanques abiertos a la atmsfera con su correspondiente vlvula de descarga, colocados en dos niveles diferentes,
donde el tanque ms elevado descarga en el segundo, tal como se muestra en la figura
15.38.
Los datos para la simulacin son: fluido ( = 1000 kg m3 ); reas de los tanques
A1 = 2 m2 , A2 = 4 m2 ; constantes de las vlvulas Kv1 = 0,002062, Kv2 = 0,001786;
aceleracin de la gravedad g = 9, 8 m s2 ; niveles H1 y H2 en m; y caudal de entrada
Qe (t) = 0,25 m3 s1 para 5 s t 450 s.
El programa Modelica para simular este sistema es
model SisHidra02_esm
// Sistema hidr
a ulico , dos tanques en serie
// V
a lvulas no lineales
constant Real g ( unit = " m / s2 " ) = 9 .80 ;
parameter Real A1 ( unit = " m2 " ) = 2 "
a rea tanque 1 " ;
parameter Real A2 ( unit = " m2 " ) = 4 "
a rea tanque 2 " ;
parameter Real df ( unit = " kg / m3 " ) = 1000 " densidad fluido " ;

15.5. Sistemas hidrulicos

353

Figura 15.39: Comportamiento del sistema de tanques en serie

parameter Real Kv1 = 0 .002062 " constante v


a lvula 1 " ;
parameter Real Kv2 = 0 .001786 " constante v
a lvula 2 " ;
Real H1 ( unit = " m " , start = 0 , fixed = true ) " nivel 1 " ;
Real H2 ( unit = " m " , start = 0 , fixed = true ) " nivel 2 " ;
Real Qe ( unit = " m3 / s " ) " caudal entrada " ;
Real Qs1 ( unit = " m3 / s " ) " caudal salida 1 " ;
Real Qs2 ( unit = " m3 / s " ) " caudal salida 2 " ;
equation
Qe = if time > 5 and time < 450 then 0 .25 else 0;
A1 * der ( H1 ) = Qe - Qs1 ;
A2 * der ( H2 ) = Qs1 - Qs2 ;
Qs1 = if noEvent ( H1 >= 0 ) then Kv1 * sqrt ( df * g * H1 ) else 0;
Qs2 = if noEvent ( H2 >= 0 ) then Kv2 * sqrt ( df * g * H2 ) else 0;
annotation ( experiment ( StopTime = 600 ) ) ;
end SisHidra02_esm ;

En la figura 15.39 se muestra la variacin de los niveles del fluido en los tanques
y de los caudales, para 0 t 600 s.
En el estado de equilibrio, con Qe (t) = 0,25 m3 s1 constante, los niveles en los
tanques son H10 = 1,5 m y H20 = 2,0 m. Para mantener Qs2 (t) = Qs1 (t) = Qe (t), H2 (t)
debe ser mayor que H1 (t), ya que Kv2 < Kv1 .
En este sistema hidrulico 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-

15 Modelado y simulacin con Modelica y SystemModeler

354

Figura 15.40: Sistema de dos tanques en serie


bles de salida (H2 (t), Qs2 (t)).
Si se define el conjunto de parmetros del conjunto (tanque, vlvula) como p =
{A, Kv }, se tiene que las variables en el sistema estn dadas por relaciones de la forma
H1 (t) = f1 ( p1 , Qe (t)),

(15.17)

Qs1 (t) = f2 ( p1 , Qe (t)),

(15.18)

H2 (t) = f3 ( p2 , Qs1 (t)), = f5 ( p1 , p2 , Qe (t)),

(15.19)

Qs2 (t) = f4 ( p2 , Qs1 (t)) = f6 ( p1 , p2 , Qe (t)).

(15.20)

Aunque es evidente de la figura 9.36, es importante hacer notar aqu, en contraposicin con lo que se ver en el sistema de la siguiente seccin, que las variables del
primer tanque, no dependen de las variables ni de los parmetros del segundo tanque,
pero que las variables del segundo tanque si dependen de las variables y parmetros
del primero.

15.5.3

Sistema con dos tanques interconectados

Considrese ahora el sistemas de dos tanques, con sus bases al mismo nivel y conectados como se ilustra en la figura 15.40.
Las ecuaciones que modelan el comportamiento dinmico en los dos tanques,
son
dH1 (t)
= Qe1 (t) Q12 (t),
dt
dH2 (t)
= Qe2 (t) + Q12 (t) Qs2 (t),
A2
dt
p
Q12 (t) = signo(H1 (t) H2 (t))Kv1 g |H1 (t) H2 (t)|,
p
Qs2 (t) = Kv2 gH2 (t).

A1

(15.21)
(15.22)
(15.23)
(15.24)

15.5. Sistemas hidrulicos

355

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)) ,

(15.25)

evidenciando que todas las variables del sistema, dependen de los estmulos aplicados
y de los parmetros de ambos tanques. Este es un modelo no causal.
Los datos para la simulacin son: fluido ( = 1000 kg m3 ); reas de los tanques
A1 = 2 m2 , A2 = 4 m2 ; constantes de las vlvulas Kv1 = 0,002062, Kv2 = 0,001786;
aceleracin de la gravedad g = 9, 8 m s2 ; niveles H1 y H2 en m; caudales de entrada
Qe1 (t) = 0,25 m3 s1 para 5 s t 700 s y Qe2 (t) = 0,40 m3 s1 para 700 s t
1800 s.
Las reas transversales de los tanques y la apertura de las vlvulas, son las mismas que en el sistemas de dos tanques en serie de la seccin 9.5.2.
El programa Modelica para simular este sistema es
model SisHidra04_esm
// Sistema hidr
a ulico , dos tanques interconectados
// V
a lvulas no lineales
constant Real g ( unit = " m / s2 " ) = 9 .80 ;
parameter Real A1 ( unit = " m2 " ) = 2 " area tanque 1 " ;
parameter Real A2 ( unit = " m2 " ) = 4 " area tanque 2 " ;
parameter Real df ( unit = " kg / m3 " ) = 1000 " densidad fluido " ;
parameter Real Kv1 = 0 .002062 " constante valvula 1 " ;
parameter Real Kv2 = 0 .001786 " constante valvula 2 " ;
Real H1 ( unit = " m " , start = 0 , fixed = true ) " nivel 1 " ;
Real H2 ( unit = " m " , start = 0 , fixed = true ) " nivel 2 " ;
Real Qe1 ( unit = " m3 / s " ) " caudal entrada 1 " ;
Real Qe2 ( unit = " m3 / s " ) " caudal entrada 2 " ;
Real Q12 ( unit = " m3 / s " ) " caudal de 1 a 2 " ;
Real Qs2 ( unit = " m3 / s " ) " caudal salida 2 " ;
equation
Qe1 = if time > 5 and time < 700 then 0 .25 else 0;
Qe2 = if time > 700 and time < 1800 then 0 .395 else 0;
A1 * der ( H1 ) = Qe1 - Q12 ;
A2 * der ( H2 ) = Qe2 + Q12 - Qs2 ;
Q12 = if noEvent ( H1 - H2 >= 0 ) then Kv1 * sqrt ( df * g * ( H1 - H2 ) )
else - Kv1 * sqrt ( df * g * ( H2 - H1 ) ) ;
Qs2 = if noEvent ( H2 >= 0 ) then Kv2 * sqrt ( df * g * H2 ) else 0;
annotation ( experiment ( StopTime = 2000 ) ) ;
end SisHidra04_esm ;

En la figura 15.41 se muestra la variacin 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:

356

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.41: Comportamiento de dos tanques interconectados


1. Para 5 s t 700 s, Qe1 (t) > 0 y Qe2 (t) = 0, y por lo tanto siempre H1 (t) >
H2 (t). En el punto de equilibrio para Qe1 (t) = 0,25 m3 s1 y Qe2 = 0, H201 =
2 m (obviamente igual al nivel necesario en el sistema con los dos tanques en
serie, con los mismos parmetros y condiciones de caudal), pero H101 = 3,50 m.
2. En el intervalo 700 s t 1800 s, Qe1 (t) = 0 y Qe2 (t) > 0. Inicialmente
H1 (700) > H2 (700) (Q12 > 0), por lo que H2 aumenta mientras que H1 disminuye, hasta que se hace ligeramente inferior a H2 , entonces Q12 se vuelve
negativo, esto es, se invierte el sentido de flujo entre los dos tanques. Ahora el lquido va del segundo tanque al primero, los dos niveles aumentan (con
H1 (t) < H2 (t)) hasta que se alcanza un 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).
3. Finalmente para 1800 s t 2000 s, Qe1 (t) = 0 y Qe2 (t) = 0. Los tanques
se vacan, los niveles del fluido en los mismos disminuyen, con H1 (t) > H2 (t)
siempre, hasta que ambos llegan a cero.

15.5.4

Sistema hidrulico con un recipiente esfrico

En el sistema hidrulico de la figura 15.42, el recipiente es una esfera de radio R


abierta a la atmsfera en la parte superior. La tubera de llenado est conectada a la
parte ms alta del recipiente y la de descarga, junto con una vlvula, a la parte inferior
del mismo.

15.5. Sistemas hidrulicos

357

Figura 15.42: Sistema hidrulico con un tanque esfrico

El volumen V del lquido en la esfera, en funcin del nivel H, es (Rivera, 2007)


V (H(t)) =

2
H (t) [3R H(t)] ,
3

(15.26)

Por su parte, el rea de la superficie del lquido es


A(H(t)) = H(t) [2R H(t)] ,

(15.27)

de manera que un diferencial de volumen en la superficie del lquido, sera


dV (H(t)) = A(H(t))dH(t) = H(t) [2R H(t)] dH(t).

(15.28)

La variacin del volumen de lquido en el recipiente, est dado por la expresin


(balance volumtrico)
dV (H(t))
= Qe (t) Qs (t).
(15.29)
dt
De (15.29), y (15.26) o (15.28), se obtiene el siguiente modelo para este sistema:
Qe (t) Qs (t)
dH(t)
=
,
dt
H(t) [2R H(t)]
p
Qs (t) =Kv Xv gH(t).

donde, para el ejemplo, se tiene:


- densidad del fluido, = 1000 kg m3 ,
g - aceleracin de la gravedad, g = 9,8 m s2 ,

(15.30)
(15.31)

358

15 Modelado y simulacin con Modelica y SystemModeler


H - nivel de fluido en el recipiente, m,
Kv - constante de la vlvula de descarga, Kv = 0,001,
Qe - caudal de entrada, m3 s1 ,
Qs - caudal de salida, m3 s1 ,
R - radio del recipiente esfrico, R = 2,0 m,
Xv - apertura de la vlvula de descarga (0 a 1).
El modelo Modelica para la simulacin de este sistema est dado, es

model Esfera_esm " Sistema con tanque esf


e rico "
import M o d e l i c a . C o n s t a n t s . p i ;
constant Real g = 9 .80 " gravedad " ;
parameter Real d = 1000 " densidad fluido " ;
parameter Real R = 2 " radio esfera " ;
parameter Real Kv = 0 .001 " const. v
a lvula " ;
parameter Real Xv = 0 .01 " apertura v
a lvula " ;
parameter Real Ht = 2 * R " nivel m
a ximo " ;
parameter Real Vt = 4 * pi * R ^ 3 / 3 " volumen maximo " ;
Real Qe , Qs , V , Hp , Vp ;
Real H ;
initial equation
der ( H ) = 0;
equation
Qe = if time > 2 then 0 .1 else 0 .00028 ;
der ( H ) = ( Qe - Qs ) / ( pi * H * ( 2 * R - H ) ) ;
Qs = Kv * Xv * sqrt ( d * g * H ) ;
V = pi / 3 * H ^ 2 * ( 3 * R - H ) ;
// Nivel y volumen en porcentaje
Hp = 100 * H / Ht ;
Vp = 100 * V / Vt ;
when Vp >= 99 .99 then
terminate ( " Esfera llena " ) ;
end when ;
annotation ( experiment ( StopTime = 360 ) ) ;
end Esfera_esm ;

En este modelo se han incluido ecuaciones de declaracin, para el clculo del


nivel mximo Ht y el volumen mximo (total) Vt del lquido en la esfera.
Para el primer anlisis, el sistema est en un punto estacionario, con la vlvula
de descarga abierta solo un 1 %, de manera que el caudal de salida sea muy pequeo.
El caudal de entrada inicialmente es Qe = 0,00028 m3 s1 (el requerido para que
el nivel sea un 2 %) y se cambia a Qe = 0,10 m3 s1 en t = 0,10 s. La simulacin se
detendr cuando la esfera est llena al 99,99 % del volumen total.
La variacin del nivel y de la cantidad de lquido en el recipiente, se muestran en
la figura 15.43.

15.5. Sistemas hidrulicos

359

Figura 15.43: Nivel y volumen del fluido en la esfera


Como el caudal de salida es muy pequeo, con relacin al de entrada, y casi no se
ve afectado por el nivel del lquido, el volumen del lquido almacenado en la esfera
aumenta en forma lineal, mientras que la variacin del nivel muestra claramente la
caracterstica no lineal del recipiente esfrico.
En el modelo se indic el intervalo para la simulacin como StopTime = 360
s. Sin embargo, la simulacin 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 dinmico 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 vlvula de descarga abierta al 50 %, el modelo Modelica anterior se
modific de la siguiente manera
model Esfera_ensm
import M o d e l i c a . C o n s t a n t s . p i ;
constant Real g = 9 .80 " gravedad " ;
parameter Real d = 1000 " densidad fluido " ;
parameter Real R = 2 " radio esfera " ;
parameter Real Kv = 0 .001 " const. v
a lvula " ;
parameter Real Xv = 0 .5 " apertura v
a lvula " ;

360

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.44: Nivel y volumen, H0 = 80 %, Qe = 5 %

parameter Real Ht = 2 * R " nivel m


a ximo " ;
parameter Real Vt = 4 * pi * R ^ 3 / 3 " volumen m
a ximo " ;
parameter Real Qei = 0 .0885 " caudal para el nivel inicial " ;
Real Qe , Qs , H , V , Hp , Vp ;
initial equation
der ( H ) = 0;
equation
Qe = if time > 5 then 1 .05 * Qei else Qei ;
der ( H ) = ( Qe - Qs ) / ( pi * H * ( 2 * R - H ) ) ;
Qs = Kv * Xv * sqrt ( d * g * H ) ;
V = pi / 3 * H ^ 2 * ( 3 * R - H ) ;
// Nivel y volumen en porcentaje
Hp = 100 * H / Ht ;
Vp = 100 * V / Vt ;
annotation ( experiment ( StopTime = 2500 , Interval = 1 ) ) ;
end Esfera_ensm ;

En la figura 15.44 se muestra el cambio del nivel y del volumen de fluido en la


esfera, partiendo de H0 = 80 % (Qei = 0,885 m3 s1 ).
Como resultado del incremento del caudal de entrada, el volumen del lquido
almacenado en la esfera aumenta un 7,32 % y el nivel un 10,11 %.
El comportamiento dinmico 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 t63,2 % = 537,37 s .

15.6. Sistemas trmicos

361

Figura 15.45: Sistema de cmaras


con aislamiento trmico

15.6 Sistemas trmicos


Los sistemas en los que se almacena, transfiere y disipa calor, se pueden modelar con
los componentes de la biblioteca Modelica.Thermal.

15.6.1

Sistema con dos cmaras trmicas

En la figura 15.45 se muestra un sistema compuesto por dos cmaras cerradas, cuyas
paredes tienen aislamiento trmico.
Se inyecta calor a una razn qe (t) solo a la cmara 1. El aislante de la pared
entre las dos cmaras tiene una resistencia trmica Rt12 y las paredes exteriores de la
cmara 1 y la 2 Rt10 y Rt20 , respectivamente.
El interior de las cmaras, se encuentra inicialmente a temperatura ambiente. Se
desea investigar cmo varan las temperaturas interiores de las cmaras y los flujos de
calor entre ellas y desde estas al medio ambiente, cuando se aplica calor a la primera.
El diagrama de simulacin con Modelica, para este sistema trmico, se muestra
en la figura 15.46.
En el se ha utilizado los siguientes componentes:
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 parmetros del sistema son: capacitancias trmicas de las cmaras Ct1 =
Ct2 = 10 J K1 , resistencias trmicas de las paredes aisladas Rt12 = 5 K W1 , Rt10 =
Rt20 = 20 K W1 , temperatura inicial de las cmaras T10 = T20 = 20 C, temperatura
ambiente T0 = 20 C, flujo de calor de entrada qe (t) = 2 W para t 10 s

362

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.46: Diagrama de simulacin del sistema de cmaras con aislamiento trmico
En la figura 15.47 se muestran las temperaturas en las cmaras, el flujo de calor
entre las cmaras 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 cmaras aumentan desde los 20 C iniciales hasta T1o = 43,2 C
y T2o = 37,7 C. En el nuevo estado estacionario, los flujos de calor son qo12 = 0,89 W,
qo10 = 1,11 W y q020 = 0,89 W (qo20 = qo12 , qo10 + qo20 = qe ).

15.6.2

Horno elctrico

En la figura 15.48 se muestra un horno elctrico con aislamiento trmico. Este conjuga componentes elctricos y trmicos.
La tensin de la alimentacin elctrica es variable y se ajustar de manera de
calentar el horno en dos etapas.
Para la simulacin de este horno con Modelica, se ha elaborado el diagrama de
interconexin mostrado en la figura 15.49, en el que se ha utilizado los siguientes

15.6. Sistemas trmicos

363

Figura 15.47: Temperaturas y flujos de calor en las cmaras con aislamiento trmico
Figura 15.48: Horno elctrico

componentes:.
Calentador elctrico
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

364

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.49: Diagrama de simulacin de un horno elctrico


incrementando la tensin V f de la fuente en una rampa. Una vez alcanzada esta temperatura, se incrementar la tensin de la alimentacin elctrica para llevarlo hasta
200 C. Se mantendr el horno a esta temperatura por aproximadamente 5 min y
luego se apagar la alimentacin elctrica, dejando que el horno se enfre en forma
natural.
Para lograr lo anterior, la tensin de la alimentacin elctrica 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.

15.6. Sistemas trmicos


Cuadro 15.1: Perfil de la tensin
de la alimentacin
elctrica

365
Tiempo, s

Vf , V

0
10
40
770
800
2300
2300
3500

0
0
19,30
19,30
29,55
29,55
0
0

Figura 15.50: Ventana de parmetros del componente TableVoltage


Como alimentacin elctrica se emplea el componente TableVoltage de la biblioteca Modelica.Electrical.Analog.Sources. Esta fuente proporciona una
tensin elctrica por medio de la interpolacin lineal de los datos de una matriz, cuya
primera columna corresponde a los tiempos y la segunda a los valores de la tensin.
Para este ejemplo, los valores de esta matriz se listan en el cuadro 15.1.
En la figura 15.50, se muestra la ventana para la introduccin de los parmetros
de esta fuente.
El resistor elctrico, representado por el componente HeatingResistor de la biblioteca Modelica.Electrical.Analog.Basic, disipa el calor producido al medio externo por el terminal heatingresistor.heatPort, y su resistencia depende
de la temperatura segn la ecuacin



R = Rre f 1 + Thp Tre f .
(15.32)

La transferencia de calor del resistor elctrico al horno, est dada por la ecuacin
connect(heatingresistor1.heatPort, heatcapacitor1.port).
Otros parmetros del horno son: resistor elctrico R = 10 , = 0,0001 K1 ,
Tre f = 295,15 K (20 C); capacitor trmico horno Ct = 100 J K1 , resistor trmico
Rt = 2 K W1 ; temperatura ambiente Ta = 28 C.
Los perfiles de la tensin elctrica aplicada al resistor elctrico y de la temperatura en el horno, se muestran en la figura 15.51. El ciclo completo de calentamiento

366

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.51: Comportamiento del horno elctrico


y enfriamiento del horno, dura aproximadamente una hora.

15.7 Modelado y simulacin de ecosistemas


En ingeniera se entiende que un sistema dinmico, es cualquier sistema fsico cuyas
variables evolucionan en el tiempo. Sin embargo, el trmino dinmica de sistemas
(System Dynamics) se emplea para describir la creacin de los modelos y las simulaciones realizadas por los economistas.
Este enfoque sistmico fue introducido por Forrester (1971), para el estudio de
los sistemas dinmicos que describen las polticas corporativas, la interaccin entre poblaciones, el desarrollo de las reas urbanas, la contaminacin ambiental, la
produccin de alimentos y otros sistemas econmicos.
En vez de realizar un modelado en trmino de ecuaciones diferenciales y estados,
el sistema est descrito por niveles (levels), cuyos valores se ven afectados por las
tasas (rates). Los niveles pueden ser por ejemplo: la poblacin, el dinero, el inventario y el conocimiento. Las tasas pueden ser tasas de entrada como: la natalidad,
las ganancias, el contagio de un virus (infeccin) y el aprendizaje; o tasas de salida
como: las defunciones, los gastos y el olvido, entre otras.
Una aplicacin de la dinmica de sistemas es la dinmica mundial, donde se
destacan los modelos globales World2 (Forrester) y World3 (Meadows).

15.7. Modelado y simulacin de ecosistemas

367

Figura 15.52: Diagrama para la simulacin demogrfica


La lista de niveles de un modelo mundial debe incluir, por lo menos: la poblacin,
la contaminacin, la utilizacin de recursos, la inversin de capital, la fuerza laboral
y la produccin de alimentos (Cellier, 2008).
La biblioteca que contiene los componentes para estas simulaciones, incluyendo
los modelos World2 y World3, es SystemDynamics. Adems provee varios escenarios para realizar las simulaciones.

15.7.1

Estimacin del crecimiento demogrfico de Costa Rica

Un ejemplo sencillo de la utilizacin de la biblioteca SystemDynamics, se muestra


en la figura 15.52. Este diagrama de simulacin con Modelica, permite estimar el
crecimiento de una poblacin (variable de nivel). Se considera la tasa de natalidad,
la tasa de defunciones y la migracin (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)

15 Modelado y simulacin con Modelica y SystemModeler

368

Figura 15.53: Diagrama para la simulacin demogrfica

Para estimar el desarrollo demogrfico de Costa Rica se ha tomado como poblacin 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 15.53 muestra la proyeccin de la poblacin, estimndose que dentro
de 20 aos, Costa Rica tendr aproximadamente 5 907 000 habitantes.

15.7.2

Evolucin de una epidemia

La poblacin total en una localidad donde hay una epidemia por un virus contagioso,
est dividida en tres grupos:

En riesgo - personas sanas susceptibles de enfermarse,


Enfermos - personas enfermas con el virus,
Recuperados - personas curadas e inmunes al virus.

15.7. Modelado y simulacin de ecosistemas

369

El comportamiento de estos grupos de personas, est dado por las siguientes


relaciones:
dpEnRiesgo(t)
= k1 pEnRiesgo pEn f ermas,
dt
dpRecuperadas(t)
= k2 pEn f ermas,
dt
dpEn f ermas(t)
= k1 pEnRiesgo pEn f ermas k2 pEn f ermas.
dt

(15.33)
(15.34)
(15.35)

Para el ejemplo se considerar una poblacin total de 700 personas y una condicin inicial (al detectarse la epidemia) de pEnriesgo(0) = 620, pEn f ermas(0) = 10
y pRecuperadas(0) = 70.
La velocidad de disminucin de la enfermedad y la velocidad de recuperacin de
los enfermos, estn dados por las constantes k1 = 0,001 y k2 = 0,072.
Modelado mediante ecuaciones
El programa para analizar el comportamiento de la epidemia con Modelica, es
model Epidemiasm
// Evoluci
o n de las poblaciones en una epidemia
constant Real k1 = 0 .001 " disminuci
o n enfermedad " ;
constant Real k2 = 0 .072 " recuperaci
o n enfermos " ;
Real pEnRiesgo ( start = 620 , fixed = true ) ;
Real pEnfermas ( start = 10 , fixed = true ) ;
Real pRecuperadas ( start = 70 , fixed = true ) ;
equation
der ( pEnRiesgo ) = - k1 * pEnRiesgo * pEnfermas ;
der ( pEnfermas ) = k1 * pEnRiesgo * pEnfermas - k2 * pEnfermas ;
der ( pRecuperadas ) = k2 * pEnfermas ;
annotation ( experiment ( StopTime = 100 ) ) ;
end Epidemiasm ;

La evolucin de la epidemia durante 100 das, se muestra en la figura 15.54.


Al inicio de la epidemia, el nmero de personas enfermas aumenta rpidamente,
hasta alcanzar un mximo de poco ms de 400 personas enfermas en el da 11. A
partir de ah, el nmero de enfermos disminuye y para el da 100, todas las personas
se han recuperado y son inmunes al virus, terminado la epidemia.
Simulacin utilizando la biblioteca SytemDynamics
En el escenario anterior, afortunadamente todas las personas infectadas por el virus
se recuperaron.

370

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.54: Evolucin de una epidemia

Figura 15.55: Epidemia grave - Diagrama de simulacin


Considrese ahora que lamentablemente solo el 90 % de las personas se recuperan
(hay un 10 % de fallecidos). Se tomar una poblacin inicial de 1000 personas, donde
999 estn sanos y aparece una persona enferma.
El diagrama de interconexin de componentes de la biblioteca SystemDynamics,
para analizar esta nueva situacin, se muestra en la figura 15.55.
En este se han utilizado los siguientes componentes:

15.7. Modelado y simulacin de ecosistemas

371

Figura 15.56: Epidemia grave - Evolucin de las poblaciones involucradas


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 das, termina la epidemia, 900 personas se han recuperado pero hay 100 fallecidos, tal como se muestra en las curvas de evolucin de la
epidemia en la figura 9.62.

15.7.3

Modelo Lotka-Volterra presa depredador

Si en un mismo sistema ecolgico viven dos especies, estas pueden relacionarse entre
si de diferentes maneras (Engel, 1978)
1. Depredacin: La especia A (depredadora) se alimenta de la especia B (presa).
2. Competencia: Las especies A y B compiten por el mismo recurso.

372

15 Modelado y simulacin con Modelica y SystemModeler

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 relacin entre dos especies, de las cuales una
es la presa y la otra su depredador, es:
dpPresa
=pPresa (a1 a2 pDepredador),
dt
dpDepredador
= pDepredador (b1 b2 pPresa),
dt

(15.36)
(15.37)
(15.38)

donde:
pPresa - poblacin de la especie cazada,
pDepredador - poblacin de la especie cazadora,
a1 - razn de crecimiento natural de las presas, si no hubiera depredadores,
a2 - razn de caza de las presas por parte de los depredadores,
b1 - razn de muerte natural de los depredadores, si no hay presas para cazar,
b2 - razn de aumento de los depredadores debido al alimento cazado.
Para la simulacin se han seleccionado los siguientes parmetros: poblacin inicial (10 depredadores y 5 presas); a1 = 1,50, a2 = 0,25, b1 = 2,50 y b2 = 0,20.
El modelo Modelica es:
model LotkaVolterrasm
// Modelo presa - depredador
parameter Real a1 = 1 .5 " natalidad presas " ;
parameter Real a2 = 0 .25 " disminuci
o n presas " ;
parameter Real b1 = 2 .5 " mortalidad depredadores " ;
parameter Real b2 = 0 .2 " incremento depredadores " ;
Real pEsp1 ( start = 5 , fixed = true ) " Presas " ;
Real pEsp2 ( start = 10 , fixed = true ) " Depredadores " ;
equation
der ( pEsp1 ) = pEsp1 * ( a1 - a2 * pEsp2 ) ;
der ( pEsp2 ) = - pEsp2 * ( b1 - b2 * pEsp1 ) ;
annotation ( experiment ( StopTime = 20 , NumberOfIntervals = 1000 ) ) ;
end LotkaVolterrasm ;

La evolucin de las dos especies se muestra en la figura 15.57.

15.8 Sistemas de control


reas que requieren del modelado de sistema heterogneos y que hacen un uso intensivo de la simulacin, son el anlisis y el diseo de los sistemas de control.

15.8. Sistemas de control

373

Figura 15.57: Evolucin de


las poblacion3s de la especies presa y depredador

Figura 15.58: Sistema de control de velocidad del motor de corriente continua


La biblioteca estndar 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 heterogneo, formado por componentes
de otras bibliotecas.

15.8.1

Control de velocidad de un motor de corriente continua

En la figura 5.1 se present el diagrama de simulacin Modelica del motor de corriente continua de la figura 2.13. Ahora se incorporarn los elementos necesarios
para el control de su velocidad de rotacin, tal como se ilustra en la figura 15.58.
En el diagrama de simulacin se utilizan los siguientes componentes:

374

15 Modelado y simulacin con Modelica y SystemModeler

1. Motor de corriente continua


Componentes elctricos
Modelica.Electrical.Analog.Basic.EMF
Modelica.Electrical.Analog.Basic.Ground
Modelica.Electrical.Analog.Basic.Inductor
Modelica.Electrical.Analog.Basic.Resitor
Componentes mecnicos
Modelica.Mechanics.Rotational.Components.Damper
Modelica.Mechanics.Rotational.Components.Inertia
2. Sistema de control
Elemento de medicin (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. Perturbacin de carga
Modelica.Mechanics.Rotational.Sources.TorqueStep
El diagrama de simulacin de la figura 15.58, incorpora componentes no causales
elctricos y mecnicos, y bloques causales.
Se utilizar el controlador con un algoritmo de control proporcional e integral
(PI), mostrado en la figura 15.59, cuya seal de salida est dada por la ecuacin




1
1
u(s) = Kp 1 +
e(s) = Kp 1 +
[r(s) y(s)],
(15.39)
Ti s
Ti s
donde Kp es la ganancia del controlador, Ti la constante de tiempo integral, e(s) el
error, r(s) el valor deseado, y(s) la seal realimentada y u(s) la seal de salida.

15.8. Sistemas de control

375

Figura 15.59: Controlador


proporcional e integral (PI)

Figura 15.60: Diagrama Modelica para un


controlador PI

En el diagrama de bloques de la figura 15.59 y en (15.39), se ha empleado la


notacin utilizada normalmente en los textos de teora de control, para designar a
las variables de un sistema de control realimentado. Es importante distinguir ahora,
entre esta notacin 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 implementacin 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 15.60.
La ecuacin del comparador es y=u1-u2 y la del PI y=k(Ts+1)/(Ts)u. En el
.
.
bloque PI, la ganancia del controlador es k = Kp y el tiempo integral T = Ti que tiene
unidades de segundo.
Por lo tanto, la entrada del valor deseado r es feedback1.u1, la entrada de
la seal 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 seal de salida del controlador u PI.y. La conexin entre los dos bloques la establece la ecuacin de conexin
connect(feedback1.y, PI.u).
La asignacin de variables y la conexin entre los bloques la hace automticamente el editor grfico, al elaborarse el diagrama de interconexin del sistema simulado.

376

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.61: Sistema de control de velocidad del motor de corriente continua


Los parmetros del motor son: Ra = 2,25 , La = 0,20 H, J = 0,05 kg m2 , B =
0,01 N m s y K = Ke = 0,02 V/(rad/s) = Kt = 0,02 N m A1 .
Los parmetros del algoritmo de control proporcional integral (PI) son: Kp = 0,75
y Ti = 30 s.
El motor se encuentra inicialmente detenido. En el instante t = 20 s se introduce
el valor deseado de la velocidad de rotacin del motor r = 1000 rad s1 . Posteriormente en t = 200 s, se aplica una perturbacin (par de carga) TL = 0,80 N m.
En la figura 15.61 se muestra el valor deseado (r) y el valor real (y) de la velocidad
del motor, para 0 t 400 s. Adems, se muestra la seal 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 rad s1 ) sin error permanente. Adems, cuando se
presenta el par perturbador, que produce un descenso en la velocidad de rotacin
del motor, el sistema de control toma la accin correctiva para llevar la velocidad de
rotacin del motor de regreso a su valor deseado.
Creacin 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 botn de-

15.8. Sistemas de control

377

Figura 15.62: Seleccin de componentes para formar un submodelo


recho y seleccionando Transform into New Class, como se muestra en la figura
15.62 para los componentes mecnicos del sistema de control de la figura 15.58.
El sistema de control del motor de corriente directa, se ha reducido a la interconexin de tres bloques (submodelos), mostrada en la figura15.63. En esta tambin se
muestra el contenido de cada uno de los bloques.

15.8.2

Sistemas de control en diagramas de bloques

Una forma tradicional de efectuar la simulacin de los sistemas dinmicos, es utilizando diagramas de bloques. En estos, por lo general, algunos de los bloques representan la funcin de transferencia de los componentes del sistema simulado. Por
lo tanto, se trata usualmente de la utilizacin de una aproximacin lineal, e incluso
de orden reducido, de sistemas que por lo general son no lineales.
Sin embargo, en muchas ocasiones esta metodologa 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 15.64 se muestra el diagrama de bloques realizado con Modelica, de
un lazo de control realimentado PID, para un proceso de segundo orden ms tiempo
muerto.
En este se utilizan los siguientes componentes:
Modelica.Blocks.Continuous.LimPID
Modelica.Blocks.Continuous.SecondOrder

378

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.63: Sistema de control reducido y contenido de cada bloque


Modelica.Blocks.Nonlinear.FixedDelay
Modelica.Blocks.Math.Add
Modelica.Blocks.Sources.Step (2)
El modelo del proceso controlado es de la forma
P(s) =

w2 KeLs
,
s2 + 2 n s + n2

(15.40)

con ganancia K = 1, frecuencia natural n = 2 rad s1 , razn 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 bsicos proporcional e integral (PI) y proporcional, integral y deri-

15.8. Sistemas de control

379

Figura 15.64: Sistema de control PID


vativo estndar con filtro derivativo (PID), los cuales operan directamente sobre su
entrada (la seal 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 seal de salida y prevencin del
desbordamiento de la accin integral, tal como se describe en strm y Hgglund
(1995). Este ser el utilizado en este ejemplo.
Los parmetros para el controlador utilizado son: Kp = 1,25, Ti = 1, 20 s, Td =
0,30 s, = 0,50 y = 0. Estos corresponden, en la ventana de parmetros del bloque
LimPID, a: k, Ti, Td, wp y wd, respectivamente.
En la figura 15.65 se muestra el comportamiento de la variable controlada y de
la seal de salida del controlador, ante un cambio en el valor deseado r = 10 %
(en t = 1 s), seguido posteriormente de un cambio en la perturbacin d = 5 % (en
t = 15 s).
Como las seales del grfico se han seleccionado como las salidas de los diferentes bloques, estas estn 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 matemticas, 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:

380

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.65: Comportamiento del sistema de control PID


Integrator - integral (K).
Derivative - derivada real (K, T ).
FirstOrder - funcin de transferencia de primer orden (K, T ).
SecondOrder - funcin de transferencia de segundo orden (K, , n ).
TransferFuncion - funcin de transferencia, cociente de dos polinomios.
FixedDelay - tiempo muerto fijo (L).
PadeDelay - aproximacin de Pad del tiempo muerto (L, n, m).

15.8.3

Efecto del periodo de muestreo en un sistema de control digital

Supngase 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 15.66 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 conexin (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

15.8. Sistemas de control

381

Figura 15.66: Diagrama del sistema de control digital

Modelica.Blocks.Math.Feedback
Modelica.Blocks.Math.Gain
Modelica.Blocks.Sources.Step
La ganancia del modelo del proceso es K = 1 y las constantes de tiempo T = 10 s.
El controlador tiene una ganancia Kp = 4.
En la figura 15.67 se muestran las respuestas del sistema de control, ante un
cambio escaln 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 del de la izquierda, corresponden al periodo de muestreo T = 0,1 s
(rpido) 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 dinmica del modelo del proceso controlado
simulado, se deteriora el comportamiento del sistema de control. La respuesta inicial
es ms lenta (tiene un mayor tiempo de levantamiento y un mayor tiempo al pico),
el sobrepaso mximo aumenta, el sistema es ms oscilatorio (disminuye el amortiguamiento), y tarda ms 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
dinmico del sistema de control se debe, exclusivamente, al periodo de muestreo
utilizado.

382

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.67: Comportamiento de la variable controlada con dos periodos de muestro


distintos

Figura 15.68: Realimentacin lineal en el estado

15.8.4

Control mediante realimentacin lineal en el estado

El diagrama de bloques de un esquema de control por realimentacin lineal en los


estados, se muestra en la figura 15.68.
El proceso controlado est dado por las ecuaciones de estado y salida
x (t) = Ax(t) + bu(t),
y(t) = c x(t)
T

(15.41)
(15.42)

y la ley de control en el estado, por


u(t) = kT x(t) + kr r(t).

(15.43)

15.8. Sistemas de control

383

Figura 15.69: Diagrama de interconexin del control por realimentacin lineal de los
estados
Las ganancias de realimentacin en k, se ajustan para lograr el comportamiento
dinmicos deseado y la ganancia de valor deseado kr para obtener error permanente
cero, a un cambio escaln en el valor deseado.
Para el ejemplo, el proceso controlado es el sistema diferencial de segundo orden
dy(t)
d2 y(t)
+3
+ 2y(t) = 2u(t),
dt 2
dt

(15.44)

cuyo modelo en variables de estado es



 
0
1
0
x =
x(t) +
u(t),
2 3
2


y(t) = 1 0 x(t).

(15.45)
(15.46)

Las especificaciones de diseo son: Mp 10 %, ta5 % 1,5s y e pro = 0.


Para cumplir con estas especificaciones se requiere kr = 8,0 y kT = [7,0 0,90].
El diagrama de simulacin del sistema de control con Moldelica, se muestra en
la figura 15.69.
En este se han utilizado los siguientes bloques:
Modelica.Blocks.Continuous.StateSpace
Modelica.Blocks.Math.Add
Modelica.Blocks.Math.Feedback

384

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.70: Parmetros del bloque StateSpace


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) 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 parmetros son: A(nx,nx), B(nx,nu), C(ny,nu) y D(ny,nu), tal como se
meustra en la ventana de parmetoros de la figura 15.70.
El bloque Modelica.Blocks.Math.MultiSum (vector_K) tiene una entrada vectorial con nu elementos y una salida escalar, la cual es una combinacin lineal de las
seales de entrada, dada por la ecuacin
y(t) = k1 u1 (t) + k2 u2 (t) + + knu unu (t).

(15.47)

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 escaln del magnitud 10 %
en el valor deseado, seguido de un cambio de magnitud -5 % en la perturbacin, se
muestra en la figura 15.71.
Como se observa, el sistema cumple con las especificaciones dadas para la respuesta del servo control.
Las curvas de respuesta tambin muestran dos caractersticas inherentes al control realimentado en el estado, tal como se ha implementado: 1. existe un error permanente ante un cambio escaln en la perturbacin; 2. se produce un salto brusco
grande en la seal de control, ante un cambio escaln en el valor deseado.
Estas dos caractersticas estn en conflicto, ya que ambas dependen de kr , pero el
salto a la salida del controlador en forma directa, mientras que el error permanente a
un cambio en la perturbacin, lo es en forma inversa.
Adems, si se desea reducir el error permanente ante el cambio en la perturbacin, modificando el valor de kr , pero manteniendo siempre un error cero a un cambio

15.8. Sistemas de control

385

Figura 15.71: Variables del sistema de control realimentado en el estado


en el valor deseado, debern calcularse de nuevo las ganancias en k, lo cual tiene como consecuencia, un cambio de las caractersticas dinmicas del lazo de control.

15.8.5

Control ptimo de tiempo mnimo

El objetivo de la teora de control ptimo, es determinar la seal de control (ley de


control) que haga que un sistema o proceso controlado, satisfaga las restricciones
fsicas impuestas y que al mismo tiempo, optimice (minimice o maximice) algn
criterio de desempeo utilizado para evaluarlo (Kirk, 1970).
Problemas de control ptimo tpicos son el problema de tiempo mnimo, el de
error final mnimo, el de energa mnima y el de esfuerzo de control mnimo.
Se considerar que el modelo matemtico del proceso controlado, es de la forma
dx(t)
= f(x(t), u(t),t),
dt

(15.48)

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 mnimo, consiste en determinar la ley de control
ptima u (t), que permite llevar al sistema desde una condicin inicial dada (x0 ), a
una condicin objetivo especfica, en un tiempo mnimo.

386

15 Modelado y simulacin con Modelica y SystemModeler


La funcional de costo a optimizar en este caso, es entonces
Jt =

Z tf
t0

dt = t f t0 .

(15.49)

Supngase para el ejemplo, que se desea determinar la ley de control u(t), con la
restriccin |u(t)| 1, que transfiera al sistema (integrador doble)
dx1 (t)
= x2 (t),
dt
dx2 (t)
= u(t),
dt

(15.50)
(15.51)

desde cualquier estado inicial (x10 , x20 ) hasta el origen, en un tiempo mnimo.
La solucin de este problema es bien conocida y dada por (Kirk, 1970):

1, para x(t) S (x(t)) > 0,

+1, para x(t) S (x(t)) < 0,

(15.52)
u (t) = 1, para x(t) S (x(t)) = 0 y x2 (t) > 0,

+1, para x(t) S (x(t)) = 0 y x2 (t) < 0,

0,
para x(t) = 0,
donde la funcin o curva de conmutacin S (x(t)) es

1
.
S (x(t)) = x1 (t) + x2 (t) |x2 (t)| .
2

(15.53)

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 mnimo, corresponde
a utilizar el esfuerzo de control extremo (mximo, mnimo, o una combinacin de
estos), durante el intervalo de operacin.
El programa para la simulacin con Modelica, del sistema de control con una ley
de control de tiempo mnimo es
model ControlOptimosm
// Control optimo de tiempo m
nimo
Real x1 ( start = 2 , fixed = true ) ;
Real x2 ( start = 0 , fixed = true ) ;
Real u , S ;
equation
S = x1 + 0 .5 * x2 * abs ( x2 ) ;
if S > 0 then

15.8. Sistemas de control

387

Figura 15.72: Plano de fase del control ptimo de


tiempo mnimo

u = - 1;
elseif S < 0 then
u = 1;
else
u = 0;
end if ;
der ( x1 ) = x2 ;
der ( x2 ) = u ;
when abs ( x1 ) < 0 .01 and abs ( x2 ) < 0 .01 then
terminate ( " Alcanzado el origen " ) ;
end when ;
annotation ( experiment ( StopTime = 10 ) ) ;
end ControlOptimosm ;

Tomando en consideracin que el tiempo total que tarda el sistema en ir desde


el estado inicial hasta el origen, depende precisamente del punto de partida, en vez
de ejecutar simulaciones controladas por el intervalo de tiempo de la simulacin,
en este caso se ha utilizado la instruccin terminate, de manera que la corrida de
simulacin termina cuando se ha alcanzado el origen (con el criterio de convergencia
|x1 | < 0,01 y |x2 | < 0,01), independientemente del tiempo transcurrido (ver la seccin
4.2.14).
Esto ltimo contribuye tambin a evitar problemas en la solucin numrica, en
la vecindad del origen, si el intervalo de simulacin excede considerablemente al
tiempo requerido para arribar al mismo.
En el plano de fase (x1 , x2 ) de la figura 15.72, 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 , x2 ) se emplea el valor extremo de la seal de control (+1 o 1 segn corresponda) y el sistema evoluciona
hasta arribar a la curva de conmutacin. En ese punto, el signo de la seal de control

388

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.73: Evolucin de


los estados y el control para
(x10 = 0, x20 = 2)

se invierte y el sistema sigue sobre la curva de conmutacin hasta el origen.


Para los estados iniciales que se encuentran sobre la curva de conmutacin, el
sistema evoluciona siguiendo sobre esta hasta el origen.
El caso particular de la evolucin de los estados y el control, a partir del punto
inicial (x10 = 0, x20 = 2), se muestra en la figura 15.73.
En el modelo, se haba establecido el tiempo final para la corrida de simulacin
como StopTime = 10. Sin embargo, tal como se puede apreciar en la figura 9.77,
esta termin antes de los 5 s.
La solucin del problema de control ptimo indica que, partiendo del punto inicial (x10 = 0, x20 = 2), el tiempo mnimo para que el sistema alcance el origen 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 simulacin termin, al cumplirse el criterio de convergencia utilizado para
ejecutar la ecuacin terminate.

15.8.6

Sistema de control inicialmente en un punto de equilibrio

Se desea controlar el nivel del lquido en el taque 2, del sistema de tanques presentado en la seccin 9.5.2, manipulando el caudal de entrada al tanque 1. Para esto, se
ha adicionado un transmisor electrnico del nivel (LT) del lquido del tanque 2, un
controlador de nivel (LIC) y una vlvula de control neumtica (LV) para variar el
caudal del fluido que entra al tanque 1, tal como se muestra en la figura 15.74.

15.8. Sistemas de control

389

Figura 15.74: Sistema de control de nivel


El algoritmo de control del controlador es proporcional e integral (PI) cuya salida
est dada por la ecuacin




Z
Z
1
1
e(t)dt = Kp [r(t) y(t)] +
[r(t) y(t)]dt .
u(t) = Kp e(t) +
Ti 0
Ti 0
(15.54)
Las seales del sistema de control (Y , R, E, U) estn dadas en porcentaje (de 0 a
100 %).
El mbito de medicin del transmisor de nivel es de 0 a 5 m (Kt = 20 %m1 ) y el
caudal mximo por la vlvula de control 0,40 m3 s1 (Kvc = 0,0040m3 s1 / %)
Los parmetros del controlador se han seleccionada arbitrariamente (pero asegurando la estabilidad del sistema de control), como Kp = 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
incremento del 10 %). Luego, en t = 800 s se incrementa la apertura de la vlvula de
salida del tanque 2 en un 10 %.
El modelo Modelica para la simulacin de los tanques con su sistema de control,
es:
model SisControlPI2Tsm
// Control PI , sistema hidraulico de dos tanques en serie
constant Real g = 9 .80 ;

390

15 Modelado y simulacin con Modelica y SystemModeler

parameter Real A1 = 2 "


a rea tanque 1 , m ^2 " ;
parameter Real A2 = 4 "
a rea tanque 2 , m ^2 " ;
parameter Real df = 1000 " densidad fluido " ;
parameter Real Kv1 = 0 .002 " constante v
a lvula 1 " ;
parameter Real Kv2 = 0 .0015 " constante v
a lvula 2 " ;
parameter Real Kt = 20 " constante transmisor nivel H2 " ;
parameter Real Kvc = 0 .004 " constante v
a lvula control " ;
parameter Real Kp = 0 .75 " ganancia proporcional controlador " ;
parameter Real Ti = 60 " tiempo integral controlador , s " ;
Real H1 " nivel 1 , m " ;
Real H2 " nivel 2 , m " ;
Real Qe " caudal entrada , m ^3/ s " ;
Real Qs1 " caudal salida 1 , m ^3/ s " ;
Real Qs2 " caudal salida 2 , m ^3/ s " ;
Real R , E , U , Y , Ui , Up ;
M o d e l i c a . B l o c k s . S o u r c e s . S t e p stepR ( height = 10 , offset = 50 ,
startTime = 20 ) ;
M o d e l i c a . B l o c k s . S o u r c e s . S t e p stepD ( height = 0 .1 ,
startTime = 800 ) ;
initial equation
der ( H1 ) = 0;
der ( H2 ) = 0;
der ( Ui ) = 0;
equation
// tanques
A1 * der ( H1 ) = Qe - Qs1 ;
A2 * der ( H2 ) = Qs1 - Qs2 ;
Qs1 = Kv1 * sign ( H1 ) * sqrt ( df * g * abs ( H1 ) ) ;
Qs2 = Kv2 * ( 1 + stepD.y ) * sqrt ( df * g * abs ( H2 ) ) ;
// transmisor de nivel
Y = Kt * H2 ;
// controlador PI
R = stepR.y ;
E = R - Y;
Up = Kp * E ;
der ( Ui ) = Kp * E / Ti ;
U = Up + Ui ;
// v
a lvula de control
Qe = Kvc * U ;
annotation ( experiment ( StopTime = 1400 , Interval = 1 ) ) ;
end SisControlPI2Tsm ;

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 lquido en los dos tanques, como las dems
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 %

15.8. Sistemas de control

391

Figura 15.75: Comportamiento del sistema de control de nivel


...
M o d e l i c a . B l o c k s . S o u r c e s . S t e p stepR ( height = 10 , offset = 50 ,
startTime = 20 ) ;
...

y el conjunto de ecuaciones iniciales


...
initial equation
der ( H1 ) = 0;
der ( H2 ) = 0;
der ( Ui ) = 0;
...

que establecen que el sistema se encuentra inicialmente, en un punto de equilibrio.


La variacin de los niveles en los tanques, as como de las variables del sistema
de control, ante el cambio en el valor deseado y la perturbacin, se muestran en la
figura 15.75.
Como se aprecia en la figura 15.75 y con ms detalle en la figura 9.80, la solucin
del problema del valor inicial, determina el valor de las variables en el punto de
operacin 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.

392

15 Modelado y simulacin con Modelica y SystemModeler

Figura 15.76: Variables en el


punto de equilibrio inicial

16
SystemModeler Link y Mathematica
El enlace entre SystemModeler y Mathematica (WSMLink), se introdujo en la seccin 14.5. Ahora se utilizar para sistematizar la simulacin y el anlisis de algunos
modelos Modelica.
El modelo (clase) Modelica (como lista de instrucciones o diagrama de interconexin), que se ha desarrollado con SystemModeler o con otro entorno de programacin Modelica, debe estar abierto en el Model Center.

16.1 Introduccin
En un cuaderno electrnico interactivo de Mathematica (Notebook), debe establecerse el enlace entre SystemModeler y Mathematica con la instruccin:
Needs [ " WSMlink ` " ]

El modelo Modelica est entonces disponible para su simulacin y anlisis con


Mathematica, utilizando las siguientes instrucciones:
Simulacin del modelo (WSMSimulate)
mosim = WSMSimulate [ " nombreModelo " ]
mosim = WSMSimulate [ " nombreModelo " , tfin ]
mosim = WSMSimulate [ " nombreModelo " ,{ tini , tfin }]

Se puede asignar el nombre del modelo a una variable con


nmod = " nombreModelo "

y luego usarla como por ejemplo


393

16 SystemModeler Link y Mathematica

394

mosim = WSMSimulate [ nmod , tfin ]

Opciones: WSMInitialValues (condiciones iniciales de las variables), WSParameterValues (valores de los parmetros), WSMInputFuncions (valores o
expresiones de las variables de entrada).
Informacin del modelo
El resultado de la simulacin del modelo, estar almacenada en mosim que es
un objeto del tipo WSMSimulationData.
mosim [ " VariableNames " ]
mosim [ " ParameterNames " ]
mosim [ " StateVariables " ]
mosim [ " ModelName " ]

Despliegue grfico de las variables (WSMPlot)


WSMSPlot [ " nombreModelo " ,{ " var1 " ," var2 " ,...}]
WSMSPlot [ " nombreModelo " ,{ " var1 " ," var2 " ,...} ,{ tini , tfin }]
WSMSPlot [{ mosim1 , mosim2 } , { " var1 " ," var2 " , ...}]

La instruccin WSMPlot tiene las mismas opciones que la instruccin Plot:


PlotLegend, AxesLabel, GridLines, etc.
Establecer valores para los parmetros y las condiciones iniciales (WSMSetValues)
WSMSetValues [ " nombreModelo " ,{ par1 -> p1 }]
WSMSetValues [ " nombreModelo " ,{ par1 -> p1 } ,{ va1o -> v1o } ,
InitialValues ]

Propiedades del modelo


Listado de instrucciones del modelo Modelica
WSMModelData [ " nombreModelo " ," ModelicaText " ]

16.1. Introduccin

395

Diagrama del modelo


WSMModelData [ " nombreModelo " ," Diagram " ]

Resumen de ecuciones y variables del modelo


WSMModelData [ " nombreModelo " ," Summary " ]

Simulacin y anlisis de la sensibilidad del modelo (WSMSimulateSensitivity)


mosim = W S M S i m u l a t e S e n s i t i v i t y [ " nombreModelo " ,
{ " par1 " ," par2 " , npor }]
mosim = W S M S i m u l a t e S e n s i t i v i t y [ " nombreModelo " ,
{ tini , tfin } ,{ " par1 " ," par2 " , npor }]

Opciones: WSMInitialValues (condiciones iniciales de las variables), WSParameterValues (valores de los parmetros), WSMInputFuncions (valores o
expresiones de las variables de entrada).
mosim [ " SensitivityNames " ]

Linealizacin del modelo (WSMLinearize)


mosim = WSMLinearize [ " nombreModelo " ]
mosim = WSMLinearize [ " nombreModelo " ,{{{ " var1 " , v1o } , ...} ,
{{ " inu1 " , u1o } ,...}}]

Determinacin de un punto de equilibrio del modelo (WSMFindEquilibrium)


WSMFindEquilibrium [ " nombreModelo " ]
WSMFindEquilibrium [ " nombreModelo " ,{{{ " var1 " , v1o } , ...} ,
{{ " inu1 " , u1o } ,...}}]
WSMFindEquilibrium [ " nombreModelo " ,{ " var1 " == v1o } , ...]

Hacer una copia del modelo (clase) (WSMCopyClass)


nombreModelo2 = WSMCopyClass [ " nombreModelo1 " ]

396

16 SystemModeler Link y Mathematica

Figura 16.1: SisMec01_osm - Anlisis con Mathematica 1/3

16.2 Anlisis de los modelos Modelica con Mathematica


Mediante el uso de un modelo de ejemplo, se emplearn algunas de las instrucciones
anteriores.

Sistema mecnico con masa, resorte y amortiguador


Se tomar como primer ejemplo, el sistema mecnico con elementos que se desplazan, presentado en la seccin 15.3. En este se han utilizado componentes de la
biblioteca Modelica.Mechanics.Traslational.
El modelo se simula, se obtiene informacin del mismo (listado de instrucciones, diagrama de interconexin, variables, parmetros). Se obtiene el grfico de la
respuesta, se vara un parmetro y se muestran las respuestas del sistema. finalmente
se hace un anlisis de sensibilidad.
Algunas de las instrucciones utilizadas y los resultados en Mathematica, se muestran en las figuras 16.1 a 16.3, las cuales forman parte del cuaderno electrnico
WSMnb_sismec01-1.nb, suministrado como un anexo.
Adems, en la figura 16.4, se muestra el uso de varias opciones para personalizar
el grfico con la instruccin WSMPlot (ver el cuaderno electrnico WSMnb_sismec011.nb).

16.2. Anlisis de los modelos Modelica con Mathematica

Figura 16.2: SisMec01_osm - Anlisis con Mathematica 2/3

397

398

16 SystemModeler Link y Mathematica

Figura 16.3: SisMec01_osm - Anlisis con Mathematica 3/3

16.2. Anlisis de los modelos Modelica con Mathematica

Figura 16.4: SisMec01_osm - Anlisis con Mathematica (4)

399

Bibliografa
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, pginas 5766. marzo 3-4,
Bielefeld, Germany.
kesson, J., rzn, K.-E., Gfvert, 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:17371749.
kesson, J., Bergdahl, T., Gfvert, M., y Tummescheir, H. (2009). Modeling and
Optimization with Modelica and Optimica Using the JModelica.org Open Source
Platform. En 7th International Modelica Conference, pginas 2938. septiembre
20-29, Como, Italy.
Alfaro, V. M. (1991). La Red generalizada. Ingeniera, 1(2):3752.
Andersson, C., kersson, J., Fhrer, C., y Gfvert, M. (2011a). Import and Export
of Funcitonal Mock-up Units in JModelica.org. En 8th International Modelica
Conference, pginas 329338. marzo 20-22, Dresden, Germany.
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. (2011b). Integration of CasADi
and JModelica.org. En 8th International Modelica Conference, pginas 218231.
marzo 20,22, Dresden, Germany.
Andersson, J., Gillis, J., y Diehl, M. (2014). User Documentation for CasADi
v1.9.0+355.c535d00.
401

402

Bibliografa

Asghar, S. A., Tariq, S., Torabzadeh-Tari, M., Fritzson, P., Pop, A., Sjlund, M., P.,
Vasaiely, P., y Schamai, W. (2011). An Open Source Modelica Graphic Editor Integrated with Electronic Notebook and Interactive Simulation. En 8th International
Modelica Conference, pginas 739747. marzo 20-22, Dresden, Germany.
strm, K. J., Elmqvist, H., y Mattsson, S. E. (1998). Evolution of continuos-time
modeling and simulation. En The 12th European Simulation Multiconference
(ESM98). junio 16-19, Manchester, UK.
strm, K. J. y Hgglund, T. (1995). PID Controllers: Theory, Design and Tuning.
Instrument Society of America, Research Triangle Park, NC, USA.
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, Linkping, Sweden.
Bush, V. (1931). The Differential Analizer: A new machine for solving differential
equations. Journal of Franklin Institute, 212:447488.
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, pginas 393
400. marzo 3-4, Bielefeld, Germany.
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). Mtodos numricos para ingenieros. McGrawHill/Interamericana, S.A. de C.V., Mxico, D.F., Mxico, 6ta edicin.
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.
Elmqvist, H. (1978). A Structures Model Lenguage for Large Continuos Systems.
PhD thesis, Department of Automatic Control, Lund Institute of Technology,
Lund, Sweden.

Bibliografa

403

Elmqvist, H. (2014). Modelica Evolution - From my Perspective. En 10th International Modelica Conference, pginas 1726. marzo 10-12, Lund, Sweden.
Elmqvist, H., Tummescheit, H., y Otter, M. (2003). Object-Oriented Modeling of
Thermo-Fluid Systems. En 3rd International Modelica Conference. noviembre
3-4, Linkping, Sweden.
Engel, A. B. (1978). Elementos de biomatemtica. The General Secretariat of the
Organization of American States, Washington, D.C., USA.
Fbin, G., van Beek, D. A., y Rooda, J. E. (2001). Index Reduction and Discontinuity Handling using Substitute Equations. Mathematical and Computer Modelling of Dynamical Systems, 7(2):173187.
Fernstrm, 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, Linkping, Sweden.
Forrester, J. W. (1971). Counterintituive Behavior of Social Systems. Technology
Review, 73(3):5268.
Forsgren, A., Gill, P. E., y Wright, M. H. (2002). Interior Methods for Nonlinear
Optimization. SIAM Review, 44(4):525597.
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. (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., Aronsson, P., Lundvall, H., Nystrm, K., Pop, A., Saldamli, L., y Broman, 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.
Fritzson, P., Engelson, V., Idebrant, A., Aronsson, P., Lundvall, H., Bunus, P., y Nystrm, K. (2004). Modelica - A Strongly Typed System Specification Language for

404

Bibliografa

Safe Engineering Practice. En SimSAFE Conference. octubre 15-17, Karlskoga,


Sweden.
Gear, C. W. (1971). Simultaneous Numerical Solution of Differential/Algebraic
Equations. IEEE Transactions on Circuit Theory, 18 (1):8995.
Hindmarsh, A. C. y Serban, R. (2012). User Documentation for CVODE v2.7.0.
IBM Corporation (n.d.). System/360 Continuos System Modeling Program, User
Manual H20-0372. White Plains, NY, USA.
Kirk, D. E. (1970). Optimal Control Theory - An introduction. Prentice-Hall, Inc.
Englewood Cliffs, NJ, USA.
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:112147.
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, Linkping, Sweden.
Ljung, L. y Glad, T. (1994). Modeling of dynamic systems. P T R Prentice Hall,
Englewood Cliffs, New Jersey, USA.
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, pginas 6167. octubre 23-34, Lund,
Sweden.
Modelica Association (2012). Modelica - A Unified Object-Oriented Language for
Systems Modeling, Language Specification Version 3.3. Linkping, Sweden.
Modelica Association (2013). Modelica Standard Library 3.2.1. Linkping, Sweden.
MODELISAR consortium (2010). Funtional Mock-up Interface for Model Exchange, 1.0 edicin. Enero 26.
Modelon AB (2014). JModelica.org User Guide: Version 1.14. Lund, Sweden.
Open Source Modelica Consortium (2014). OpenModelica Users Guide for OpenModelica 1.9.1. Version 2014-03-08.

Bibliografa

405

Paynter, H. M. (1961). Analysis and Design of Engineering Systems. The MIT Press,
Cambridge, Mass., USA.
Petzold, L. R. (1982a). A description of DASSL: A differential/algebraic system
solver. Reporte tcnico SAND82-8637, Sandia National Laboratories, Livermore,
California, USA.
Petzold, L. R. (1982b). Differential/Algebraic Equations are not ODEs. SIAM Journal on Scientific and Statistical Computing, 3 (3):367384.
Petzold, L. R. (1989). Recent developments in the numerical solution of differential/algebrai systems. Computer Methods in Applied Mechanics and Engineering,
75:7789.
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, pginas 523526. setiembre 3-5, Munich,
Germany.
Ragazzini, J. R., Randall, R. H., y Russell, F. A. (1947). Analisys of problems in
dynamics by electronic circuits. Proc. IRE, 35:444452.
Ralston, A. (1965). A First Course in Numerical Analysis. McGraw-Hill, Inc., Kgakusha, Co., Ltd., Tokyo, Japan.
Rantil, J., kersson, J., Fhrer, C., y Gfvert, M. (2009). Multiple-Shooting Optimization using the JModelica.org Platform. En 7th International Modelica Conference, pginas 757764. setiembre 20-22, Como, Italy.
Rivera, D. (2007). An introduction to Mechanistic Models and Control theory.
En SAMSI Challenges in Dynamic Treatment Regimes and Multistage DecisionMaking. June, 18-20, Research Triangle, Park, NC, USA.
Shearer, J. L., Murphy, A. T., y Richardson, H. H. (1971). Introduction to System
Dynamics. Addisson-Wesley Publishing Company, Inc., Reading, Mass., 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.
Takamatsu, M. y Iwata, S. (2008). Index reduction for differential-algebraic equations by substitution method. Linear Algebra and its Applications, 429:2268
2277.

406

Bibliografa

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/.
Torabzadeh-Tari, M., Sjlund, M., Pop, A., y Fritzson, P. (2011). DrControl - An Interactive Course Material for Teaching Control Engineering. En 8th International
Modelica Conference, pginas 801811. marzo 20-22, Dresden, Germany.
Wtcher, A. (2002). An Interior Point Algorithm for Large-Scale Nonlinear Optimization with Application in Process Engineering. PhD thesis, Carnegie Mellon
University, Pittsburgh, Pennsylvania, USA.
Wtcher, A. (2009). Short Tutorial: Getting Started with Ipopt in 90 Minutes. En
Dagstuhl Seminar 09061 - Combinatorial Scientific Computing. febrero 1-6, Wadern, Germany.
Willems, J. C. (2007). The Behavioral Approach to Open and Interconnected Systems. IEEE Control Systems Magazine, 27(6):4699.
Willems, J. C. (2010). Terminals and Ports. IEEE Circuits and Systems Magazine,
Fourth quarter:826.

You might also like