Download - Lenguaje de Simulacion
-
1Simulacin y Optimizacin4 Ingeniera Informtica
1
TEMA 4. Lenguajes de simulacin de sistemas continuos
Objetivos Conocer los tipos de lenguajes de simulacin de sistemas continuos de
propsito general. Saber describir un modelo sencillo en forma de diagrama de bloques. Saber describir un modelo sencillo en un lenguaje de simulacin del
estndar CSSL67. Reconocer un lazo algebraico en un modelo de simulacin y saber como
tratarlo. Conocer las ventajas y desventajas de los lenguajes de simulacin
orientados a bloques y de los orientados a sentencias. Conocer el funcionamiento interno de los lenguajes de simulacin
orientados a bloques y de los orientados a sentencias. Conocer la problemtica asociada a la reutilizacin de modelos
matemticos tanto en los lenguajes orientados a bloques como a sentencias.
Simulacin y Optimizacin4 Ingeniera Informtica
2
Contenidos: Lenguajes de simulacin: qu son?, ventajas y clasificacin. Lenguajes de simulacin orientados a bloques:
Descripcin del modelo, ordenacin de bloques y estructura de clculo Libreras de componentes: modularizacin y reutilizacin? Ventajas e inconvenientes
Lenguajes de simulacin orientados a sentencias Estndar CSSL67 ACSL,un lenguaje orientado a sentencias del estndar CSSL67 Modularidad y reutilizacin del cdigo en ACSL: estructuras MACRO Entornos de modelado grfico de los lenguajes orientados a sentencias Conclusiones
TEMA 4. Lenguajes de simulacin de sistemas continuos
-
2Simulacin y Optimizacin4 Ingeniera Informtica
3
Lenguajes de simulacin
Qu son?9 Son programas de ordenador que facilitan: La descripcin del modelo y la asignacin de causalidad
computacional (manipulacin de las ecuaciones). La descripcin de los experimentos a realizar sobre el mismo La resolucin numrica del sistema de ecuaciones resultante La visualizacin de los resultados y el uso de la simulacin
Ventajas? Dan fiabilidad a los resultados Permiten ahorrar tiempo Permiten concentrarse en el problema y no en la programacin Abren el campo a no expertos en informtica
Simulacin y Optimizacin4 Ingeniera Informtica
4
-
3Simulacin y Optimizacin4 Ingeniera Informtica
5
Lenguajes de simulacin orientados a bloques
Precursores: simuladores analgicos Construan un circuito elctrico con unas ecuaciones semejantes a
las del modelo se quiere resolver Cada variable del modelo tenia su correspondiente variable en el
circuito posiblemente escalada El funcionamiento del circuito proporcionaba el valor de las
variables del modelo Ejemplo:
)()()( tFtxdt
tdx =+ Vi= F V0= xR
C
CR=
Simulacin y Optimizacin4 Ingeniera Informtica
6
Lenguajes de simulacin orientados a bloques
Descripcin del modelo: Se hace en trminos de un lenguaje que
reflejaba el diagrama de bloques que se hubiera utilizado para resolver el problema en una computadora analgica.
Existe una librera de bloques de clculo: Cada bloque tiene una causalidad
computacional predefinida (entradas y salidas) y calcula el valor de la salida en funcin del valor de las entradas.
El modelo se define interconectando entre si los bloques.
Tipos de bloques: integradores, sumadores, ganancias, funciones especiales (limitadores,...)
Suelen tener una interfaz grfica (entorno de modelado).
-
4Simulacin y Optimizacin4 Ingeniera Informtica
7
Mtodo para transformar una ecuacin diferencial en un diagrama bloques: Ejemplo:
Lenguajes de simulacin orientados a bloques
Paso 1: la ecuacin diferencial debe de organizarse de modo que la derivada de mayor orden aparezca despejada en la parte izquierda de la ecuacin.
Paso 3: utilizar el resto de bloques para tratar de reflejar la ecuacin diferencial representada.
Paso 2: dibujar una cascada de integradores con tantos bloques como derivadas aparezcan en la ecuacin.
( ) .0)()(1)()()( 3111 =++++ dtytyctybtyaty
( ) dtytyctybtyaty = )()(1)()()( 3111
Simulacin y Optimizacin4 Ingeniera Informtica
8
tBtF
thgKtFdt
tdhA
)(
)()()(
==
Ejemplo: modelo de un depsito (A=2, K=1, g=9.8, Flujo de entrada aumenta linealmente con el tiempo)
F
h
Generador de rampas
Raiz cuadrada
Sumador
Integrador
1
0.5
2
4
-1.56
F h
3
tBtF
thA
gKtFAdt
tdh
)(
)()(1)(
==
-
5Simulacin y Optimizacin4 Ingeniera Informtica
9
Ejemplo: circuito elctrico
dt
tdiLtU
dttdUCti
RtitUtU tURtitU
tAtU
LL
CC
LL
CC
)()(
)()(
2)()()()(1)()(
)sin()(
=
=+=
+==
2)()()(1
)()()(
)()(
)()()()(
Rt- itUtU
R
t-UtUti
LtU
dttdi
Cti
dttdU
tsinAtU
LL
CC
LL
CC
==
=
==
Ecuacionesdel modelo
Manipulacin del modelo
Observar si se dispone de tantas ecuaciones como variables
Si es as, intentar despejar de cada ecuacin una de las variables
Las variables que aparecen en una nica ecuacin se despejan de dicha ecuacin.
Las variables que aparecen derivadas se calculan por integracin numrica (despejamos la derivada de la variables)
Pueden aparecer problemas en la manipulacin de las ecuaciones que pueden requerir actuaciones ms complejas
Simulacin y Optimizacin4 Ingeniera Informtica
10
Diagrama de bloques
2)()()(1
)()()(
)()(
)()()()(
Rt- itUtU
R
t-UtUti
LtU
dttdi
Cti
dttdU
tsinAtU
LL
CC
LL
CC
==
=
==
-
6Simulacin y Optimizacin4 Ingeniera Informtica
11
Lenguajes de simulacin orientados a bloques: funcionamiento del programa de simulacin
Simulacin y Optimizacin4 Ingeniera Informtica
12
Lenguajes de simulacin orientados a bloques: edicin del diagrama (ej: simulink)
Ejemplo SIMULINK (muelle)
-
7Simulacin y Optimizacin4 Ingeniera Informtica
13
Ordenacin de los bloques: Anotarlos en la lista de bloques
calculables los bloques sin entrada Q 1
Suponiendo conocidas, condiciones iniciales, en t=0 la salida de los bloques tipo integrador (estados) Q, ver qu bloques tienen definidas sus entradas y anotarlos en la lista de bloques calculables e iterar hasta agotar el numero de bloques
2 y 3 4 y 5 6 y 7 8 y 9
Si en una iteracin no hay nuevos bloques calculables: lazo algebraico
2
83
64
75 9
1
Lenguajes de simulacin orientados a bloques: ordenacin de los bloques (ej: simulink)
Simulacin y Optimizacin4 Ingeniera Informtica
14
Lenguajes de simulacin orientados a bloques: estructura de clculo
Partir de valores inicialeso bloques sin entrada
Calcular la salida de cada bloque en tsegn el orden de clculo. Evaluar
las entradas a todos los integradores
Integrar las ecuaciones para obtener elvalor de las variables de estado en t+h
-
8Simulacin y Optimizacin4 Ingeniera Informtica
15
Lenguajes de simulacin orientados a bloques: lazos algebraicos
z(t) = 5(sin(t) ez(t))
SumSine Wave
Scope
eu
MathFunction
5
GainOrdenacin de
bloques?
Sum1Sum
Sine Wave
Scope
eu
MathFunction
5
Gainf (z) z
Solvef(z) = 0
Algebraic Constraint
Solucin: uso de un bloque especial que resuelve ecuaciones
implcitas
Simulacin y Optimizacin4 Ingeniera Informtica
16
SOLUCIN
Otro ejemplo: z2=1-z1; z1=z2-1. z2=1, z1=0
-
9Simulacin y Optimizacin4 Ingeniera Informtica
17
Tratamiento de eventos en SIMULINK Bloque para la deteccin del evento: Hit Crossing.
La salida del bloque vale la unidad en el instante en el que sucede el evento, el resto del tiempo su valor es cero.
Puede distinguir el cruce por el valor asociado al evento en ambas direcciones, en direccin positiva y en direccin negativa.
Simulacin y Optimizacin4 Ingeniera Informtica
18
El bloque integrator tiene la posibilidad de tener un reset interno cuando sucede un evento.
Cuando sucede el evento el valor de la variable de salida es el valor de la entrada de condicin inicial y se reinicia la integracin numrica
dy/dty(t)Variable asociada al evento
Condicin inicial
Estado del sistema (y(t)), cuando se necesite introducir la salida del integrador como entrada a travs de la entrada de condicin inicial
-
10
Simulacin y Optimizacin4 Ingeniera Informtica
19
Ejemplo: simulacin del bote de la pelota
0 x(t)cuando )(8.0)(
)()(
81.9)(
===
=
tvtv
tvdt
tdxdt
tdv
Simulacin y Optimizacin4 Ingeniera Informtica
20
Lenguajes de simulacin orientados a bloques: modularizacin (libreras-jerarqua)
-
11
Simulacin y Optimizacin4 Ingeniera Informtica
21
Lenguajes de simulacin orientados a bloques: modularizacin (ejemplo)
Cuatro nios en patinete empiezan a moverse a partir de diferentes coordenadas. Cada uno de ellos se mueve a una velocidad constante y su direccin de desplazamiento es la lnea recta que une su posicin actual con la de su siguiente vecino, es decir el nio 1 trata de alcanzar al nio 2, el nio 2 trata de alcanzar al nio 3,
( ) ( )
( ) ( ))()(
)()()()(
))()(()(
)()(
)()()()(
))()(()(
21
21
1
21
21
1
tvty
tytytxtx
tytyvtv
tvtx
tytytxtx
txtxvtv
yjj
jjjj
jjjyj
xjj
jjjj
jjjxj
=+
==
+=
++
+
++
+
Las ecuaciones de movimiento de cada nio (j) en las direcciones x e y son:
Ejemplo SIMULINK
Simulacin y Optimizacin4 Ingeniera Informtica
22
Parmetros: vjCondiciones iniciales:
xj(t=0) e yj(t=0)
Variables de entrada externas al modelo:
xj+1 e yj+1
( ) ( )( ) ( )2121
1
21
21
1
)()()()(
))()(()(
)()()()(
))()(()(
)()(
)()(
tytytxtx
tytyvtv
tytytxtx
txtxvtv
tvty
tvtx
jjjj
jjjyj
jjjj
jjjxj
yjj
xjj
++
+
++
+
+=
+=
==
Ecuaciones ordenadas y despejadas:Para un nico nio
-
12
Simulacin y Optimizacin4 Ingeniera Informtica
23
Esa conducta puede encapsularse bajo un subsistema y reutilizar dicho modelo
Simulacin y Optimizacin4 Ingeniera Informtica
24
Conclusiones Las principales ventajas son:
Sencillos e intuitivos Fciles de construir debido a su interfaz grfica
Los principales inconvenientes de esta forma de simulacin son: La descripcin del modelo no se asemeja a la formulacin matemtica original, por lo
que, normalmente genera un gran nmero de bloques (an para problemas de escasa magnitud), lo que dificulta su depuracin y modificacin.
La forma de clculo de las ecuaciones (bloque a bloque) es muy lenta. Esta forma de clculo de las ecuaciones hace muy difcil la solucin de ecuaciones
algebraicas, an siendo matemticamente correctas dan lugar a mensajes de error y se precisa el uso de bloques especiales.
No existe separacin modelo y experimento, lo cual resta flexibilidad y limita el uso del modelo.
Al construir un modelo en base a una librera de bloques definida por el usuario pueden aparecer lazos algebraicos de difcil o incluso imposible solucin.
Construcciones jerrquicas y modulares con causalidad computacional fija (no reutilizables).
-
13
Simulacin y Optimizacin4 Ingeniera Informtica
25
Lenguajes de simulacin orientados a sentencias Estndar: CSSL67 (Simulation 1967 Vol.9, pp. 281-303)
Declaracin directa de las ecuaciones en trminos similares a la formulacin matemtica habitual.
El programa se estructura temporalmente en tres regiones: inicial, dinmica y terminal.
Generadores de cdigo: El programa que realiza la simulacin no procesa continuamente los datos que
constituyen la descripcin del modelo, sino que dicha descripcin se utiliza para generar cdigo en un lenguaje de alto nivel, por ejemplo FORTRAN, que despus de ser compilado y montado con las libreras del sistema origina un cdigo ejecutable que es quien resuelve el problema.
El hecho de estar basado en un lenguaje de alto nivel facilita la tarea de incluir nuevas funciones (escritas en ese lenguaje de alto nivel) aumentando as las capacidades del lenguaje de simulacin.
La realizacin de experimentos con el modelo, presentacin de resultados,... se hace por medio de un lenguaje de comandos que el usuario introduce a travs de algn terminal del ordenador, constituyendo un paso hacia la separacin del modelo y el experimento.
Reutilizacin? Uso de estructuras tipo MACRO.
Simulacin y Optimizacin4 Ingeniera Informtica
26
Lenguajes de simulacin orientados a sentencias:Estructura del cdigo CSSL67
program deposito
INITIAL
DATA h0=1 , TMAX=1
END
DYNAMICDATA K=1 , A=2h=INTEG(F/A - K/A*SQRT(9.8*h),h0)TERMINATE (T>TMAX)
ENDEND
PROGRAM INITIAL
Sentencias que se ejecutan al comienzo de lasimulacin.
END
DYNAMIC
Descripcin de las ecuaciones del modelo.
END
TERMINAL
Sentencias que se ejecutan al final del modelo
ENDEND
A dhdt
F K g h= F
h
-
14
Simulacin y Optimizacin4 Ingeniera Informtica
27
Lenguajes de simulacin orientados a sentencias:Generacin de cdigo
Edicin delfichero
con el modelo.
Preprocesador paraanalizar el modelo,ordenar sentenciasy generar cdigoen un lenguajede alto nivel.
Cdigofuente.
Cdigoobjeto.
Lenguaje decomandos.
Programaejecutableque realiza
la simulacin.
Presentacinde
resultados.
Librerias delsistema y dellenguaje desimulacin.
Montaje
Compilacin
Simulacin y Optimizacin4 Ingeniera Informtica
28
ACSL (Advanced Continuous Simulation Language) un lenguaje orientado a sentencias del estndar CSSL67
Estructura del modelo
INITIALSentencias que se ejecutan en el instante inicial.
END
DERIVATIVESentencias que se integran continuamente
END
DISCRETESentencias que se ejecutan a intervalos discretos
END
DYNAMIC
END
TERMINALSentencias que se ejecutan al final de la simulacin.
END
PROGRAM
END
-
15
Simulacin y Optimizacin4 Ingeniera Informtica
29
ACSL: sentencias de definicin del modelo De definicin de tipos de variables
Ej: REAL x(7), INTEGER h, LOGICAL flag ... De definicin del modelo
Expresiones del tipo variable = expresin, junto a funciones propias de ACSL y llamadas a rutinas FORTRAN.
Se considera una expresin a una combinacin de operadores, funciones y operandos que cuando son evaluados producen un valor numrico nico. Las expresiones pueden contener operadores aritmticos, lgicos y relacionales. Dentro de las funciones debemos destacar las estndar de FORTRAN as como las propias del lenguaje.
Las sentencias que definen el modelo pueden escribirse en cualquier orden, pero para que una expresin sea correcta los valores de las variables de la expresin necesitan poder ser calculados previamente. Por eso una variable puede estar a ambos lados del signo igual si en la expresin figura un integrador o un solucionador de ecuaciones implcitas. En ACSL los operadores integrador son los ms caractersticos e importantes y tpicamente tienen la forma: INTEG(expresin, valor inicial).
CONSTANT parametro=valor
dxdt
x u x
u t
= + ==
9 8 3 0 12. ( ) .
cos( )
siendo
program modeloinitial
constant x0=1.endderivative
constant g=9.8x=integ(g-3*x**2+u,x0)u=cos(t)
endend
Ejemplo
Simulacin y Optimizacin4 Ingeniera Informtica
30
Otras expresiones:
Descripcin tipo Fortran: exp, sin , IF THEN ELSE,...
Primitivas de ACSL: BOUND, REALP, DELAY,.
Generadores de Funciones: SIN, PULSE,...
Tablas 2D y 3D
Ecuaciones implcitas: IMPLC
Tratamiento de eventos: SCHEDULE, INTERVAL,..
Llamadas externas: call... De definicin de las condiciones en que se realiza la simulacin
palabre clave variable=valor
-
16
Simulacin y Optimizacin4 Ingeniera Informtica
31
Simulacin y Optimizacin4 Ingeniera Informtica
32
ACSL: lenguaje de comandos
-
17
Simulacin y Optimizacin4 Ingeniera Informtica
33
Ejemplo de modelado en ACSL.0)1( 3111 =++++ dyycybyay &&&&&&
dyycybyay = )1( 3111 &&&&&&
Despejando la derivada de mayor orden
La transformamos en un sistema de ecuaciones diferenciales de primer orden
dyycvbaadyycybyaya
yvayv
===
===
)1()1()(
)(
311
31111
111
11
&&&&&&&&&&
&
program suspensioninitial
!Condiciones inicialesconstant y10=..., v10=..., a10=...!Condiciones de la integracin!Tienen valores por defectocinterval cint=0.1nsteps nstp=10algorithm ialg=5!Tiempo mximo de simulacinconstant tmax=10.
enddynamicderivative
!Parmetros del modeloconstant a=..., b=..., c=..., d=....!Ecuaciones del modeloy1=integ(v1,y10)v1=integ(a1,v10)a1=integ(-a*a1-b*v1-c*(y1-y3)-d,a10)!La seal y3 es conocida en el tiempo ej:y3=cos(t)
endtermt(t.gt.tmax)
endend
Simulacin y Optimizacin4 Ingeniera Informtica
34
Ejemplo de modelado en ACSL
program circuitoinitial
!Condiciones inicialesconstant uc0=..., il0=....!Condiciones de la integracin!Tienen valores por defectocinterval cint=0.01nsteps nstp=10algorithm ialg=5!Tiempo mximo de simulacinconstant tmax=1.
enddynamicderivative
!Parmetros del modeloconstant a=..., w=...constant r1=..., r2=...., c=..., l=...!Ecuaciones del modelouc=integ(ic/c,uc0)il=integ(ul/l,il0)ic=(u-uc)/r1ul=u-il*r2!La seal u es conocida en el tiempo ej:u=a*sin(w*t)
endtermt(t.gt.tmax)
endend
LUdt
di
C/idt
dURU-iU
/R(U-UitWAU
LL
CC
LL
CC
/
21))sin(
=
==
==
-
18
Simulacin y Optimizacin4 Ingeniera Informtica
35
ACSL: ejecucin del modelo de simulacin
En el caso de que existan eventos y discontinuidades en el modelo:
ACSL hace una lista de eventos y condiciones para que estos sucedan, de modo que los eventos en el tiempo los tiene perfectamente localizados y los eventos en el espacio de estados los comprueba cada intervalo de comunicacin.
Evidentemente el tamao del paso de integracin est en funcin de los eventos. Aslos algoritmos de paso variable funcionan bien con los eventos y los de paso fijo no, porque no pueden reducir el tamao del paso.
Simulacin y Optimizacin4 Ingeniera Informtica
36
Generacin del cdigo de simulacin:ordenacin de sentencias
Una vez se ha escrito un fichero *.csl se invoca el programa ACSL. Lo que origina una traduccin del fichero *.csl para generar un fichero FORTRAN, que sercompilado y linkado hasta generar un ejecutable.
Pasos previos a la generacin de cdigo FORTRAN: Busca errores sintcticos en las sentencias, y otros tipos de errores de clculo, como por
ejemplo variables no definidas, etc y lanza los correspondientes mensajes de error. Si no existen errores sintcticos, ACSL procede a ordenar las ecuaciones para encontrar el
orden correcto en el que deben ejecutarse las sentencias. ACSL ordenar las sentencias que se encuentren dentro de regiones derivative o en
otras secciones en las cuales de encuentre la sentencia sort. El algoritmo de ordenacin de ecuaciones es muy sencillo:
ACSL se crea dos listas. La primera con todas las variables del modelo y marca en ella como conocidas las variables de estado (las que calcula por integracin). La otra con todas las sentencias, las variables de salida de la sentencia y las variables que necesita para calcular esa variable de salida.
Una vez construidas las listas, va pasando por la lista de sentencias. Si la sentencia seleccionada es tal que para calcular su variable de salida ya dispone de todas las variables necesarias entonces marca como conocida esa variable de salida y saca de la lista dicha sentencia, en otro caso la enva la final de la lista. El algoritmo finaliza cuando todas las variables estn marcadas como conocidas y la lista de sentencias est ordenada.
-
19
Simulacin y Optimizacin4 Ingeniera Informtica
37
Ejemplo de ordenacin de sentencias
Consideremos este modelo en una regin derivative
R=RZ+LR
AREA=PI*R**2
CONSTANT PI=3.142, RZ=1.0
LR=INTEG(AREA,0.0)
Simulacin y Optimizacin4 Ingeniera Informtica
38
ACSL: lazos algebraicos Cmo implemento en ACSL z=5(sin(t)-ez)?
z=5*(sin(t)-exp(z)) es un lazo algebraico, para calcular z necesito conocer z.
Solucin: operador implcito (como en SIMULINK): constant z0=... !estimacin inicial de z z=impl(z-5*(sin(t)-exp(z)),z0)
Qu sucede si escribo las siguientes sentencias en una regin derivative? CONSTANT CV1=5. , CV2=3. CONSTANT P1=1.5, P3=1. W=CV1*SQRT(P1-P2) P2=(W/CV2)**2+P3
ACSL me dice unsortable statement block ?
-
20
Simulacin y Optimizacin4 Ingeniera Informtica
39
Simulacin y Optimizacin4 Ingeniera Informtica
40
Soluciones: Decirle que no ordene el bloque, para ello lo incluiremos en un
bloque procedural. Pero deberemos inicializar alguna variable en el bloque initial, para que no se produzcan errores numricos:
INITIAL P2=1.25END...CONSTANT CV1=5. , CV2=3.CONSTANT P1=1.5, P3=1.PROCEDURAL (W,P2=P1,P3)W=CV1*SQRT(P1-P2)P2=(W/CV2)**2+P3END
Utilizar un operador implcito (IMPLC), por ejemplo:CONSTANT WI=10.
W=IMPLC(W-CV1*SQRT(P1-P2),WI)
P2=(W/CV2)**2+P3
-
21
Simulacin y Optimizacin4 Ingeniera Informtica
41
Modularidad y reutilizacin en ACSL
El objetivo es descomponer un sistema de un modo jerrquico y modular, de modo que:
Facilite la lectura de un modelo. Permita la reutilizacin de componentes. Permita la agrupacin jerrquica de componentes.
ACSL tiene un mecanismo que trata de proveer el modelado modular y jerrquico, las llamadas MACROS:
Una MACRO es una estructura de programacin que permite encapsular el cdigo de simulacin para su utilizacin repetitiva al definir nuevos operadores de un modo similar a los subprogramas o subrutinas de los lenguajes de programacin tradicionales.
Son diferentes a las subrutinas o subprogramas Permiten incluir llamadas a otras MACROS y operadores de ACSL. El cdigo que contiene la MACRO se expande ante de sus anlisis y compilacin. Se define en el mismo programa ACSL (antes de usarlas) o se pueden tener
compiladas en un fichero externo al cdigo del modelo en el que se usen.
Simulacin y Optimizacin4 Ingeniera Informtica
42
Ejemplo de MACROS Consideremos el siguiente modelo matemtico de modo que conocido
el valor de u nos calcula la evolucin en el tiempo de y:
xy
uxdtdx
3
3
=+=
Una posible MACRO que encapsula dicho modelo es:
MACRO SIST_LIN(salida,entrada,v0)MACRO redefine v,dervMACRO standval v0=0.derv=-3*v+entradav=integ(derv,v0)salida=3*v
MACRO END
Un posible uso de esta MACRO (se puede invocar de diferentes maneras) en un modelo ACSL es:
program ejemplo
initialconstant tmax=10.constant x0=5.
end
dynamicderivative
u=sin(0.5*t)sist_lin(y,u,x0)
endtermt(t.gt.tmax)
endend
-
22
Simulacin y Optimizacin4 Ingeniera Informtica
43
El cdigo ACSL que se genera es:
program ejemploinitial
constant tmax=10.constant x0=5.
end
dynamicderivative
u=sin(0.5*t)Znnnn1=3*Znnnn2+uZnnnn2 =integ(Znnnn1,x0)y=3*Znnnn2
endtermt(t.gt.tmax)
endend
Otro ejemplo de uso de esta MACRO (con una invocacin mltiple) es:
program ejemplo2initial
constant tmax=10.constant x0=5.
enddynamic
derivativeu=sin(0.5*t)q=5*ramp(2)sist_lin(y,u,x0)sist_lin(p,q)
endtermt(t.gt.tmax)
endend
...dynamic
derivativeu=sin(0.5*t)q=5*ramp(2)Znnnn1=3* Znnnn2+uZnnnn2=integ(Znnnn1,x0)y=3* Znnnn2Znnnn3=3* Znnnn4+qZnnnn4=integ(Znnnn3,x0)p=3* Znnnn4
end...
Simulacin y Optimizacin4 Ingeniera Informtica
44
Cuando son tiles las MACROS? Cuando se tiene un operador que se va a usar muchas veces. Cuando modelamos subsistemas que se repiten y son conectables entre si?
Problemas de las MACROS Variables globales. La sustitucin de argumentos puede conducir a errores si no se conoce la estructura
interna de la MACRO o esta no est definida con detalle. Se permite la seleccin de cdigo en la invocacin de la MACRO, pero slo en
tiempo de compilacin no de ejecucin. Dificultades para el manejo de parmetros en llamadas jerrquicamente largas. La conexin entre componentes se hace a nivel de variables. Causalidad computacional fija.
Implica desarrollar mltiples modelos de una misma entidad fsica. El desconocimiento de las ecuaciones que subyacen a las MACROS puede conducir a la
aparicin de lazos algebraicos en el modelo de simulacin. Desarrollo de libreras de componentes muy extensas y difciles de disear e
invocar correctamente. Los OOML resuelven de una forma bastante eficiente este problema.
-
23
Simulacin y Optimizacin4 Ingeniera Informtica
45
Problema de las variables globales Las variables que contienen las MACROS son variables
globales y en el caso de que no se definan correctamente dan lugar a errores
Ejemplo:
xy
uxdtdx
3
3
=+=
MACRO SIST_LIN(salida,entrada,v0)!MACRO redefine v,derv (no incluida)MACRO standval v0=0.derv=-3*v+entradav=integ(derv,v0)salida=3*v
MACRO END
program ejemplo2initial
constant tmax=10.constant x0=5.
enddynamic
derivativeu=sin(0.5*t)q=5*ramp(2)sist_lin(y,u,x0)sist_lin(p,q)
endtermt(t.gt.tmax)
endend
...dynamic
derivativeu=sin(0.5*t)q=5*ramp(2)derv=3*v+uv=integ(derv,x0)y=3*vderv=3*v+qv=integ(derv,0.)p=3*q
end...
Error: v y derv calculadas dos
veces
Simulacin y Optimizacin4 Ingeniera Informtica
46
Adems si se quiere tener acceso a ciertas variables internas de la MACRO estn deben definirse en su invocacin.
Ejemplo:
xy
uxdtdx
3
3
=+=
MACRO SIST_LIN(salida,entrada,v0)MACRO redefine v,dervMACRO standval v0=0.derv=-3*v+entradav=integ(derv,v0)salida=3*v
MACRO END
program ejemplo
initialconstant tmax=10.constant x0=5.
end
dynamicderivative
u=sin(0.5*t)sist_lin(y,u,x0)
endtermt(t.gt.tmax)
endend
program ejemploinitial
constant tmax=10.constant x0=5.
end
dynamicderivative
u=sin(0.5*t)Znnnn1=3*Znnnn2+uZnnnn2 =integ(Znnnn1,x0)y=3*Znnnn2
endtermt(t.gt.tmax)
endend
-
24
Simulacin y Optimizacin4 Ingeniera Informtica
47
Ejemplo, si quiero poder acceder a la x entonces:
xy
uxdtdx
3
3
=+=
MACRO SIST_LIN(salida,entrada,x,v0)MACRO dervMACRO standval v0=0.derv=-3*x+entradax=integ(derv,v0)salida=3*x
MACRO END
program ejemplo
initialconstant tmax=10.constant x0=5.
end
dynamicderivative
u=sin(0.5*t)sist_lin(y,u,x,x0)
endtermt(t.gt.tmax)
endend
program ejemploinitial
constant tmax=10.constant x0=5.
end
dynamicderivative
u=sin(0.5*t)Znnnn1=3*x+ux =integ(Znnnn1,x0)y=3*x
endtermt(t.gt.tmax)
endend
Simulacin y Optimizacin4 Ingeniera Informtica
48
Problema de la sustitucin de argumentos Ej: consideremos la acumulacin
de lquido en un tanque: WoWidtdm =
MACRO DEPO(m,wi,wo,mi)m=integ(wi-wo,mi)
MACRO END
program tanque1initial
constant tmax=10.constant masai=...constant w1=..., w2=...
enddynamic
derivativeDEPO(masa,w1,w2,masai)endtermt(t.gt.tmax)
endend
Wi
m
Wo
program tanque1initial
constant tmax=10.constant masai=...constant w1=..., w2=...
enddynamic
derivativemasa=integ(w1-w2,masai)endtermt(t.gt.tmax)
endend
W1
m
W2
-
25
Simulacin y Optimizacin4 Ingeniera Informtica
49
MACRO DEPO(m,wi,wo,mi)m=integ(wi-wo,mi)
MACRO END program tanque2initial
constant tmax=10.constant masai=...constant w1=..., w21=..., w22=...
enddynamic
derivativeDEPO(masa,w1,w21+w22,masai)endtermt(t.gt.tmax)
endend
program tanque1initial
constant tmax=10.constant masai=...constant w1=..., w2=...
enddynamic
derivativemasa=integ(w1-w21+w22,masai)endtermt(t.gt.tmax)
endend
22211 WWWdtdm =W1
m
W22W21
Errneo
program tanque2initial
constant tmax=10.constant masai=...constant w1=..., w21=..., w22=...
enddynamic
derivativeDEPO(masa,w1,(w21+w22),masai)endtermt(t.gt.tmax)
endend
program tanque1initial
constant tmax=10.constant masai=...constant w1=..., w2=...
enddynamic
derivativemasa=integ(w1-(w21+w22),masai)endtermt(t.gt.tmax)
endend
Correcto,pero requiere saber como est programada la MACRO
Otra solucinMACRO DEPO(m,wi,wo,mi)
m=integ((wi)-(wo),(mi))MACRO END
Simulacin y Optimizacin4 Ingeniera Informtica
50
Problema de la seleccin de las ecuaciones del modelo en tiempo de simulacin
Las estructuras MACRO tienen prevista la seleccin del modelo de una misma entidad fsica, pero en tiempo de traduccin no de simulacin.
Ejemplo: supongamos que queremos modelar un motor DC y que queremos utilizar dos modelos de diferente grado de complejidad y poder elegir uno u otro.
MACRO DC (lista de variables,modelo)...MACRO if (modelo=1) etiqueta1
Ecuaciones 2MACRO goto etiqueta2MACRO etiqueta1..continue
Ecuaciones 1MACRO etiqueta2..continue
Ecuaciones comunesMACRO END
Problema adicional:9 El paso de parmetros y de
variables a la MACRO es el mismo usemos un modelo u otro, lo cual requiere pasar parmetros y variables innecesarias segn se use un modelo u otro.
-
26
Simulacin y Optimizacin4 Ingeniera Informtica
51
Problema del paso de parmetros entre MACROS en diferentes niveles de la estructura jerrquica
Las estructuras MACRO obligan al paso de argumentos de una MACRO jerrquicamente inferior a otra superior. En un lenguaje de modelado orientado a objetos no se hace ese paso de variables, sino que los componentes se organizan de forma jerrquica por especializacin o agregacin.
Ejemplo: dos modelos de resistencias elctricas, en uno de ellos se considera que la resistividad depende de la temperatura.
MACRO RESISTOR (V,I,R)V=R*IMACRO END
MACRO RESISTOR_T (V,I,T,a0,a1) MACRO REDEFINE RR=a0+a1*TRESISTOR(V,I,R)MACRO END
Se pasa como argumento las variables V e I.Sintcticamente es poco eficiente
Simulacin y Optimizacin4 Ingeniera Informtica
52
Problema de la conexin de componentesa nivel de variables
Si un modelador desarrolla una librera de componentes que sea fcil de utilizar por un usuario final de la misma lo lgico es poder conectar los componentes a travs de puertos fsicos no a nivel de variables:
Conexiones elctricas (voltajes e intensidades). Conexiones mecnicas (pares, velocidades). Conexiones hidralicas (presiones, caudales, temperaturas, concentraciones).
Las MACROS no permiten definir una interface que permita estructurar las variables que comparten los componentes.
Las conexiones slo se realizan variable a variable, lo cual: Dificulta el uso de la librera de componentes (conexiones demasiado complejas). Implica que no exista una analoga entre el componente modelado y su
correspondiente MACRO. Este modo de conectar componentes slo es til cuando las conexiones entre
componentes requieran una sola variable (ej: diagramas de bloques).
-
27
Simulacin y Optimizacin4 Ingeniera Informtica
53
Problema de la causalidad computacional fija
Los modelos matemticos que contienen las macros tienen definida su causalidad matemtica lo cual implica que:
Las variables de entrada y salida estn predeterminadas. Las ecuaciones del modelo estn manipuladas simblicamente de una
determinada manera que es fija. Problemas:
Impiden la reutilizacin del cdigo, desde el punto de vista del modelado, porque los modelos matemticos no pueden adaptarse al contexto al no estar permitida la manipulacin simblica de ecuaciones.
As, si se quiere disponer de una librera de MACROS completa por cada unidad fsica a modelar deberan desarrollarse tantas MACROS como posibilidades lgicas de manipulacin de las ecuaciones.
Pueden aparecer lazos algebraicos en el modelo de simulacin al conectar ciertos componentes si no se elige la MACRO con la manipulacin simblica adecuada. Para evitarlo el usuario de la librera de MACROS debe conocer su codificacin.
Vemoslo con dos ejemplos: Circuito elctrico. Conexiones hidrulicas.
Simulacin y Optimizacin4 Ingeniera Informtica
54
Ejemplo 1: circuito elctrico
Imaginemos que hemos desarrollado una librera de MACROS de componentes elctricos:
MACRO FUENTEV (V2,V1,V)
V2=V1+V
MACRO END
MACRO RESISTENCIA (I, V1,V2,R)
I=(V1-V2)/R
MACRO END
MACRO TIERRA (V)
V=0.
END
-
28
Simulacin y Optimizacin4 Ingeniera Informtica
55
Tratamos de modelar este circuito elctrico:
Una asignacin de otra forma no funcionara, no es igual vr2=vt2 que vt2=vr2
program circuito_1initial
constant r=5, vf=2.enddynamic
derivativetierra (vt1)fuente (vf2=vf1,vf)resistencia (i=vr1,vr2,r)tierra (vt2)vf1=vt1vr2=vt2vr1=vf2
endtermt (t.gt.10.)
endend
program circuito_1initial
constant r=5, vf=2.enddynamic
derivativevt1=0.vf2=vf1+vfi=(vr1-vr2)/rvt2=0.vf1=vt1vr2=vt2vr1=vf2
endtermt (t.gt.10.)
endend
Simulacin y Optimizacin4 Ingeniera Informtica
56
Tratemos ahora de modelar este circuito elctrico:
program circuito_2initial
constant r1=5, r2=10, vf=2.enddynamic
derivativetierra (vt1)fuente (vf2=vf1,vf)resistencia (i1=vr11,vr12,r1)resistencia (i2=vr21,vr22,r2)tierra (vt2)vf1=vt1vr22=vt2vr11=vf2vr12=vr21i1=i2
endtermt (t.gt.10.)
endend
program circuito_2initial
constant r1=5, r2=10, vf=2.enddynamic
derivativevt1=0.vf2=vf1+vfi1=(vr11-vr12)/r1i2=(vr21-vr22)/r2vt2=0.vf1=vt1vr22=vt2vr11=vf2vr12=vr21i1=i2
endtermt (t.gt.10.)
endend
program circuito_2initial
constant r1=5, r2=10, vf=2.enddynamic
derivativevt1=0.vf2=vf1+vfi1=(vr11-vr12)/r1vr21=i2*r2+vr22vt2=0.vf1=vt1vr22=vt2vr11=vf2vr12=vr21i2=i1
endtermt (t.gt.10.)
endend
NO FUNCIONA FUNCIONARA despus de manipularlas
-
29
Simulacin y Optimizacin4 Ingeniera Informtica
57
Lo cual requiere definir una nueva MACRO para la resistencia elctrica:
MACRO RESISTENCIA (V1,I,V2,R)V1=R*I+V2MACRO END
Asignar bien la ecuacin que une las dos intensidades. Pero es que adems, en este caso, tambin aparece un lazo
algebraico...constant vf=..., r1=..., r2=...vt1=0.vt2=0.vf1=vt1vr22=vt2vf2=vf1+vfvr11=vf2i1=(vr11-vr12)/r1vr21=i2*r2+vr22vr12=vr21i2=i1...
Simulacin y Optimizacin4 Ingeniera Informtica
58
Ejemplo 1: circuito hidralico
Imaginemos que ahora queremos modelar esta conduccin y que los modelos matemticos de tubera y vlvula son:
MACRO TUBO (w=cv,p1,p2)
W=cv*sqrt(p1-p2)
MACRO END
MACRO VALVULA (w=cv,p1,p2,u)
W=cv*u*sqrt(p1-p2)
MACRO END
21 ppcvw =
21 ppucvw =
-
30
Simulacin y Optimizacin4 Ingeniera Informtica
59
program conduccioninitial
constant cv1=50., cv2=50., cvv=25.constant pa=3., pd=1.constant u=50.
enddynamicderivative
tubo (w1=cv1,pa,pav)valvula (w2=cvv,pav,pdv,u)tubo (w3=cv2,pdv,pd)w1=w2w2=w3
endtermt (t.gt.10.)
endend
program conduccioninitial
constant cv1=50., cv2=50., cvv=25.constant pa=3., pd=1.constant u=50.
enddynamicderivative
w1=cv1*sqrt(pa-pav)w2=cvv*u*sqrt(pav-pdv)w3=cv2*sqrt(pdv-pd)w1=w2w2=w3
endtermt (t.gt.10.)
endend
NO FUNCIONA, deberan manipularse simbolicamente.
Por ejemplo as:
pav=pa-(w1/cv1)**2)w2=cvv*u*sqrt(pav-pdv)pdv=(w3/cv3)**2)-pdw1=w2w3=w2
Lo cual implica tener definidas nuevas
MACROS para la misma entidad fsica tubo
Simulacin y Optimizacin4 Ingeniera Informtica
60
Pero an as, adems tenemos un lazo
algebraico, lo cual implicara introducir otras MACROS con
operadores implcitos para romper dicho
lazo
MACRO TUBO1 (w=cv,p1,p2)
W=cv*sqrt(p1-p2)
MACRO END
MACRO TUBO2 (p1=w,cv,p2)
p1=(W/cv)**2+p2
MACRO END
MACRO TUBO3 (p2=w,cv,p1)
p2=p1-(W/cv)**2
MACRO END
pav=pa-(w1/cv1)**2)w2=cvv*u*sqrt(pav-pdv)pdv=(w3/cv3)**2)-pdw1=w2w3=w2
pav=implc(pav-(pa-(w1/cv1)**2),pavi)w2=cvv*u*sqrt(pav-pdv)pdv=(w3/cv3)**2)-pdw1=w2w3=w2
pav=pa-(w1/cv1)**2)w2=implc(w2-cvv*u*sqrt(pav-pdv),w2i)pdv=(w3/cv3)**2)-pdw1=w2w3=w2
pav=pa-(w1/cv1)**2)w2=cvv*u*sqrt(pav-pdv)pdv=implc(pdv-(w3/cv3)**2-pd),pdvi)w1=w2w3=w2
MACRO TUBO4 (p1=w,cv,p2,p1i)
p1=implc(p1-(p2-(w/cv)**2),p1i)
MACRO END
MACRO VALVU4(...)
...
MACRO TUBO5(...)
...
-
31
Simulacin y Optimizacin4 Ingeniera Informtica
61
Entornos de modelado grfico de los lenguajes orientados a sentencias
El incremento de la potencia de los ordenadores (capacidades grficas) y las demanda de las tcnicas de simulacin obligo a que los sistemas se modelasen de un modo grfico.
El modelado grfico consiste en tener una librera de modelos elementales y permitir la conexin grfica de dichos modelos. Estos modelos deben de constar de un icono, un conjunto de conectores y las ecuaciones del sistema que modelan. El modelado se hace de modo grfico sin ms que seleccionar los componentes y conectar los iconos a travs de los conectores.
Ejemplo de estos entornos: Graphic Modeller (ACSL). MMS: entorno de modelado plantas nucleares
que genera cdigo ACSL.
Simulacin y Optimizacin4 Ingeniera Informtica
62
Graphic Modeller: Definicin de componentes:
Icono. Nombre del componente. Puertos de entrada. Puertos de salida. Parmetros. Ecuaciones.
La conexin de componentes se realiza sin ms que unir puertos de entrada con puertos de salida.
Las conexiones se hacen a nivel de variables no de conexiones fsicas reales. En el caso de sistemas complejos (fluidos), necesitamos mltiples conexiones de variables para una misma conexin fsica real y se complica el diagrama.
Finalmente genera un cdigo ACSL: Pegando el cdigo que existe debajo de cada componente (particularizado las variables
del modelo al nombre del componente). Generando ecuaciones en las conexiones de la forma
variable_puerto_salida=variable_puerto_entrada. Resuelve los problemas de asignacin de nombres y de escritura del modelo de
simulacin, pero desde un punto de vista conceptual presenta la misma problemtica que las MACROS de ACSL (no es ms que una interfaz grfica de las MACROS).
Slo es til para sistemas que se modelen desde la perspectiva de los diagramas de bloques.
-
32
Simulacin y Optimizacin4 Ingeniera Informtica
63
Simulacin y Optimizacin4 Ingeniera Informtica
64
Conclusiones Las principales ventajas son:
Declaracin directa de las ecuaciones en trminos similares a la formulacin matemtica habitual.
Generadores de cdigo no intrpretes de un diagrama.
Son una primera aproximacin a la distincin entre modelo y experimento, pero no los independizan completamente.
El principal inconveniente de estos lenguajes es que son lenguajes de simulacin pero no de modelado, con lo cual:
No soportan una reutilizacin eficiente del cdigo de simulacin debido a la pobreza del concepto de MACRO.
El tratamiento de los sistemas de estructura variable (hbridos), en los que las ecuaciones pueden cambiar en tiempo de simulacin, no se soporta de un modo eficiente.
Por ejemplo un interruptor elctrico: si est cerrado la diferencia de potencial entre los extremos es nula y si est abierto la intensidad de corriente es nula.
I=0; V0 V=0; I0