Modelica v. Alfaro
Modelica v. Alfaro
Modelica v. Alfaro
Modelado, simulacin y
optimizacin con Modelica
Vctor M. Alfaro
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
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
14
15
17
19
21
22
25
26
27
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
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
.
.
.
.
.
.
.
.
.
.
79
79
79
81
83
84
viii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.3
5.4
5.5
85
86
87
88
89
91
92
93
95
96
99
99
100
101
101
103
103
109
111
111
111
112
113
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
.
.
.
.
.
243
243
244
246
247
251
255
255
255
256
256
258
258
258
259
260
262
265
269
270
270
273
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
297
299
300
301
304
315
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
401
xiii
Parte I
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
1 Introduccin
Windpower Monthly, Tim Donahey Show, Tellepsin Industrial, Lund Hasley, HQ Free Wallpapers, IT Confict, LLC Company, MIRA, Ltd.
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).
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
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.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
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
(2.1)
(2.2)
(2.3)
(2.4)
(2.5)
(2.6)
1
A
Z t
to
f ( )d + v21 (to ),
(2.7)
d f (t)
= v21 (t),
dt
(2.8)
Z t
to
v21 ( )d + f (to ),
(2.9)
14
15
dv21 (t)
= i(t), v021 ,
dt
(2.10)
di(t)
= v21 (t), i0 ,
dt
(2.11)
(2.12)
16
(2.14)
(2.15)
dQ(t)
L 0
= P21 (t), I f =
,Q ,
dt
A
(2.18)
17
(2.19)
(2.20)
(2.21)
18
dV20 (t)
0
= F(t), V20
,
dt
(2.22)
(2.23)
(2.24)
(2.25)
19
(2.26)
20
d20 (t)
0
,
= T (t), 20
dt
(2.27)
(2.28)
(2.29)
(2.30)
(2.31)
21
dT20 (t)
0
= q(t), T20
,
dt
(2.32)
(2.33)
(2.34)
22
1
,
Ch A
(2.36)
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)
23
(2.40)
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.
24
Figura 2.9: Transductor electromecnico
(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 .
25
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
(2.45)
Un tratamiento detallado de los elementos de los sistemas fsicos y de los elementos generalizados, se presenta en Shearer et al. (1971).
26
(2.46)
(2.47)
(2.48)
27
(2.49)
iC (t) + iL (t) = 0.
(2.50)
(2.51)
(2.52)
(2.53)
28
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
(2.56)
T (t) = Kt ia (t).
(2.57)
La
(2.58)
(2.59)
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.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)
(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.
35
Cuadro 3.1: Variables de potencial y de flujo, para los componentes de los diferentes
dominios fsicos
Dominio fsico
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 Componentes en Modelica
36
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 ;
37
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
la seccin 4.5.2.
39
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 Componentes en Modelica
40
equation
L * der ( i ) = v ;
end Inductor ;
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 ;
41
end ThermalResistor ;
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)
4.1. Introduccin
45
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.1
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 (.).
47
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
4.2.4
4.2.5
49
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
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
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,
51
4 El lenguaje Modelica
52
53
4.2.8
4.2.9
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
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
55
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
4 El lenguaje Modelica
56
variables enumeradas: valor mnimo.
4.2.12
Comentarios y descripciones
4.2.13
57
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)
(4.6)
(4.7)
(4.8)
(4.9)
(4.10)
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
4 El lenguaje Modelica
60
end when ;
...
4.2.15
Algoritmos
4.2.16
Declaraciones
Las declaraciones son construcciones imperativas permitidas en las secciones secuenciales (algoritmos).
Declaraciones de asignacin (:=):
varRef : = exp ;
61
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 ;
4 El lenguaje Modelica
62
when exp1 then
...
elsewhen exp2 then
...
end when ;
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
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 ;
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
4 El lenguaje Modelica
64
connect ( refTerminal1 , refTerminal2 ) ;
4.2.19
Construccin de registros
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:
65
annotation ( notas ) ;
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 } } ) ) ;
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
4.2.21
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.
67
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
69
(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)
(4.15)
(4.16)
71
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
(4.17)
(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 ;
73
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
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 " ) ;
75
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 )
4 El lenguaje Modelica
76
77
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 El lenguaje Modelica
78
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.
80
81
5.2.1
Biblioteca Modelica.Blocks
82
Figura 5.2: Velocidad
de rotacin del motor
de corriente continua
83
5.2.2
Biblioteca Modelica.ComplexBlocks
Contiene bloques (entrada salida) para operar sobre variables complejas, agrupados
en las bibliotecas:
Modelica.ComplexBlocks.ComplexMath
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
85
5.2.4
Biblioteca Modelica.Electrical
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
87
5.2.6
Biblioteca Modelica.Magnetic
88
5.2.7
Biblioteca Modelica.Mechanics
89
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
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 =
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
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
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.
93
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).
95
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.
SmartCooling.
ModelPlug, PlanarMechanicsStandard, SystemDynamics.
97
descripciones en ingls de las bibliotecas, se han tomado directamente del texto desplegado
seleccionando [View][Documentation..] en cada una de ellas.
98
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)
(6.3)
(6.4)
100
101
6.3.1
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.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 .
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
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)
6.3.3
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
104
(6.11)
(6.12)
(6.13)
(6.14)
(6.15)
(6.16)
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.
106
5 and
Qe1 Qe2 Rv1 *
Rv2 *
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 *
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 ;
...
108
109
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
la mejor manera de realizar una actividad, Diccionario de la lengua espaola, 22.a edi-
cin, 2001
111
112
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)
(7.5)
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
(7.7)
(7.8)
113
(7.9)
(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).
114
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
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.
117
8 Introduccin a OpenModelica
118
Figura 8.1: OMS - inicio y
carga del modelo
119
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
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
121
122
8 Introduccin a OpenModelica
123
124
8 Introduccin a OpenModelica
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
(8.1)
(8.2)
126
Figura 8.9: OMEdit - Biblioteca de elementos elctricos (Electrical)
8 Introduccin a OpenModelica
127
128
8 Introduccin a OpenModelica
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).
129
8.3.2
8 Introduccin a OpenModelica
130
8.3.3
Ejecucin de la simulacin
131
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
133
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
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.
135
136
8 Introduccin a OpenModelica
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
137
Figura 8.22: OMEdit - Conexiones permitidas entre componentes (elctrico - elctrico, mecnico - mecnico, trmico - trmico)
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
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
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 ;
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
143
8 Introduccin a OpenModelica
144
Figura 8.28: OMEdit Ampliacin del grfico
y cursor de medicin
8.3.7
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
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.
146
8 Introduccin a OpenModelica
147
(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)
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 ;
149
150
8 Introduccin a OpenModelica
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
152
Figura 9.1: Circuito RLC
serie
9.2.1
153
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
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
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 ;
...
156
Vc = Vc_ic ;
Il = Il_ic ;
equation
...
end SisElce01_eic ;
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).
157
158
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 ) ;
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
161
162
163
...
connect ( energia_capacitor.y , r e a l v a l u e 1 . n u m b e r P o r t ) ;
...
9.2.2
(9.3)
(9.4)
164
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
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.
165
166
(9.5)
donde:
9.2.4
167
168
169
9.3.1
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)
170
171
9.3.2
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
173
174
0 = 20 cm)
Figura 9.25: Comportamiento del conjunto mecnico ( fbb
175
176
9.4.1
177
9.4.2
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)
(9.11)
178
179
dx(t)
.
dt
(9.12)
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
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.
180
(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)
181
(t) =
mL2
d (t)
,
dt
d (t)
+ Lmgsin( (t)) + Lb (t) = 0.
dt
(9.18)
(9.19)
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.1
182
183
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.5.2
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.
185
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
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)
(9.23)
(9.24)
(9.25)
187
9.5.3
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)
(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
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
189
9.5.4
2
H (t) [3R H(t)] ,
3
(9.31)
(9.32)
190
Figura 9.40: Sistema hidrulico con un tanque esfrico
(9.33)
(9.35)
(9.36)
191
192
193
Hp = 100 * H / Ht ;
Vp = 100 * V / Vt ;
annotation ( experiment ( StartTime = 0 , StopTime = 2500 ,
Tolerance = 1 e -06 , Interval = 1 ) ) ;
end Esfera_en ;
9.5.5
194
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)
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
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
199
9.5.6
(9.37)
200
Figura 9.46: Elevacin de la conexin de una tubera a un tanque
201
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
202
9.5.7
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
203
...
9.6.1
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 =
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
205
Figura 9.52: Temperaturas y flujos de calor en las cmaras con aislamiento trmico
Figura 9.53: Horno elctrico
206
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
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
209
9.7.1
210
9.7.2
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.
211
(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.
212
213
9.7.3
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.
214
(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
215
216
9.8.1
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
217
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.
218
Figura 9.66: Diagrama Modelica para un
controlador PI
9.8.2
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
219
w2 KeLs
,
s2 + 2 n s + n2
(9.46)
220
221
9.8.3
222
223
9.8.4
(9.47)
(9.48)
(9.49)
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)
(9.51)
(9.52)
225
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)
226
9.8.5
(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
227
(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):
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
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 ;
229
9.8.6
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
230
231
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
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 ) ;
...
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
236
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])
237
dy(t)
+ y(t) = Ku(t).
dt
(10.2)
238
239
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.
(10.3)
240
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.
241
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
5 http://computation.llnl.gov/casc/sundials/main.html
6 http://notepad-plus-plus.org/
7 https://docs.python.org/2/library/idle.html
245
In [1]: import os
In [2]: os . getcwd ()
246
11 Introduccin a JModelica.org
247
11 Introduccin a JModelica.org
248
(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)
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 ;
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 ()
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)
252
11 Introduccin a JModelica.org
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
253
254
11 Introduccin a JModelica.org
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.
2 http://computation.llnl.gov/casc/sundials/description/description.html
255
256
12.3.1
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 )
257
258
12.3.2
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 ' )
12.3.3
259
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
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
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
262
12.4.3
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 " ]
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
# 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 ()
El grfico de las nuevas curvas de respuesta, junto con las anteriores, se muestra
en la figura 12.3.
264
265
12.4.4
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
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 ;
268
269
60
50
40
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
270
12.5.1
12.5.2
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 ;
271
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
273
12.5.3
2
,
(10s + 1)(5s + 1)(2s + 1)
(12.1)
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
275
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
informacin sobre los parmetros del llamado, se puede obtener con la ayuda, In[hh]
help(dfo.fmin).
276
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
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
281
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
4 Se
283
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
285
286
Parte IV
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
291
14 Introduccin a SystemModeler
292
293
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
14.2.1
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)
295
296
14 Introduccin a SystemModeler
297
14.2.2
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
299
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
301
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
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
303
304
14 Introduccin a SystemModeler
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.
305
306
14 Introduccin a SystemModeler
307
14.19.
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)
309
310
14 Introduccin a SystemModeler
311
312
14 Introduccin a SystemModeler
313
314
14 Introduccin a SystemModeler
315
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
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.
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
tamiento de las variables del sistema, sin pretender hacer una anlisis exhaustivo del
mismo.
15.2.1
(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.
321
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
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 ;
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 ;
...
324
325
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
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
329
330
331
15.2.2
332
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 " ;
333
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.
334
15.2.3
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:
15.2.4
335
336
337
15.3.1
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
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)
339
340
velocidad.
15.3.2
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.
341
342
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.
344
15.4.1
345
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
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
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
(15.10)
(15.11)
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).
348
15.4.3
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
349
(t) =
mL2
d (t)
,
dt
d (t)
+ Lmgsin( (t)) + Lb (t) = 0.
dt
(15.13)
(15.14)
En la figura 15.35 se muestra el plano de fase del pndulo amortiguado con diferentes puntos de partida (posAngic, velAngic).
15.5.1
350
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
351
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 ;
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
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 " ;
353
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-
354
(15.17)
(15.18)
(15.19)
(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
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)
355
(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.5.4
357
2
H (t) [3R H(t)] ,
3
(15.26)
(15.27)
(15.28)
(15.30)
(15.31)
358
359
360
361
15.6.1
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
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
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
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
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
367
15.7.1
368
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
La poblacin total en una localidad donde hay una epidemia por un virus contagioso,
est dividida en tres grupos:
369
(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 ;
370
371
15.7.3
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.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 ;
373
15.8.1
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
375
376
377
15.8.2
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
w2 KeLs
,
s2 + 2 n s + n2
(15.40)
379
380
15.8.3
381
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.8.4
(15.41)
(15.42)
(15.43)
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)
(15.45)
(15.46)
384
(15.47)
385
15.8.5
(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
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):
(15.52)
u (t) = 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
387
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 ;
388
15.8.6
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.
389
390
391
392
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 ` " ]
394
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 " ]
16.1. Introduccin
395
Opciones: WSMInitialValues (condiciones iniciales de las variables), WSParameterValues (valores de los parmetros), WSMInputFuncions (valores o
expresiones de las variables de entrada).
mosim [ " SensitivityNames " ]
396
397
398
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
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.