TEMA 4. Lenguajes de simulación de sistemas continuosfelipe/docencia/so4inf/tema4.pdf · – Saber...
Transcript of TEMA 4. Lenguajes de simulación de sistemas continuosfelipe/docencia/so4inf/tema4.pdf · – Saber...
1
Simulación y Optimización4º Ingeniería Informática
1
TEMA 4. Lenguajes de simulación de sistemas continuos
• Objetivos– Conocer los tipos de lenguajes de simulación de sistemas continuos de
propósito general.– Saber describir un modelo sencillo en forma de diagrama de bloques.– Saber describir un modelo sencillo en un lenguaje de simulación del
estándar CSSL’67.– Reconocer un lazo algebraico en un modelo de simulación y saber como
tratarlo.– Conocer las ventajas y desventajas de los lenguajes de simulación
orientados a bloques y de los orientados a sentencias.– Conocer el funcionamiento interno de los lenguajes de simulación
orientados a bloques y de los orientados a sentencias.– Conocer la problemática asociada a la reutilización de modelos
matemáticos tanto en los lenguajes orientados a bloques como a sentencias.
Simulación y Optimización4º Ingeniería Informática
2
• Contenidos:– Lenguajes de simulación: ¿qué son?, ventajas y clasificación.– Lenguajes de simulación orientados a bloques:
• Descripción del modelo, ordenación de bloques y estructura de cálculo• Librerías de componentes: modularización y ¿reutilización?• Ventajas e inconvenientes
– Lenguajes de simulación orientados a sentencias• Estándar CSSL’67• ACSL,un lenguaje orientado a sentencias del estándar CSSL’67• Modularidad y reutilización del código en ACSL: estructuras MACRO• Entornos de modelado gráfico de los lenguajes orientados a sentencias• Conclusiones
TEMA 4. Lenguajes de simulación de sistemas continuos
2
Simulación y Optimización4º Ingeniería Informática
3
Lenguajes de simulación
• ¿Qué son?Son programas de ordenador que facilitan:
La descripción del modelo y la asignación de causalidad computacional (manipulación de las ecuaciones).La descripción de los experimentos a realizar sobre el mismoLa resolución numérica del sistema de ecuaciones resultanteLa visualización de los resultados y el uso de la simulación
¿Ventajas?Dan fiabilidad a los resultadosPermiten ahorrar tiempoPermiten concentrarse en el problema y no en la programaciónAbren el campo a no expertos en informática
Simulación y Optimización4º Ingeniería Informática
4
3
Simulación y Optimización4º Ingeniería Informática
5
Lenguajes de simulación orientados a bloques
• Precursores: simuladores analógicos– Construían un circuito eléctrico 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= x
R
C
CR·=τ
Simulación y Optimización4º Ingeniería Informática
6
Lenguajes de simulación orientados a bloques
• Descripción del modelo:– Se hace en términos de un lenguaje que
reflejaba el diagrama de bloques que se hubiera utilizado para resolver el problema en una computadora analógica.
– Existe una librería de bloques de cálculo:• Cada bloque tiene una causalidad
computacional predefinida (entradas y salidas) y calcula el valor de la salida en función 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 gráfica (entorno de modelado).
4
Simulación y Optimización4º Ingeniería Informática
7
• Método para transformar una ecuación diferencial en un diagrama bloques:– Ejemplo:
Lenguajes de simulación orientados a bloques
• Paso 1: la ecuación diferencial debe de organizarse de modo que la derivada de mayor orden aparezca despejada en la parte izquierda de la ecuación.
• Paso 3: utilizar el resto de bloques para tratar de reflejar la ecuación diferencial representada.
• Paso 2: dibujar una cascada de integradores con tantos bloques como derivadas aparezcan en la ecuación.
( ) .0)()(1·)(·)(·)( 3111 =+−+′+′′+′′′ dtytyctybtyaty
( ) dtytyctybtyaty −−−′−′′−=′′′ )()(1·)(·)(·)( 3111
Simulación y Optimización4º Ingeniería Informática
8
tBtF
thgKtFdt
tdhA
·)(
)()()(
=
⋅−=
– Ejemplo: modelo de un depósito (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)(
=
−=
5
Simulación y Optimización4º Ingeniería Informática
9
– Ejemplo: circuito eléctrico
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
Manipulación del modelo
•Observar si se dispone de tantas ecuaciones como variables
•Si es así, intentar despejar de cada ecuación una de las variables
•Las variables que aparecen en una única ecuación se despejan de dicha ecuación.
•Las variables que aparecen derivadas se calculan por integración numérica (despejamos la derivada de la variables)
•Pueden aparecer problemas en la manipulación de las ecuaciones que pueden requerir actuaciones más complejas
Simulación y Optimización4º Ingeniería Informática
10
Diagrama de bloques
2)·()()(1
)()()(
)()(
)()()·(·)(
Rt- itUtU
R
t-UtUti
LtU
dttdi
Cti
dttdU
tsinAtU
LL
CC
LL
CC
=
=
=
=
= ω
6
Simulación y Optimización4º Ingeniería Informática
11
Lenguajes de simulación orientados a bloques: funcionamiento del programa de simulación
Simulación y Optimización4º Ingeniería Informática
12
Lenguajes de simulación orientados a bloques: edición del diagrama (ej: simulink)
• Ejemplo SIMULINK (muelle)
7
Simulación y Optimización4º Ingeniería Informática
13
• Ordenación de los bloques:– Anotarlos en la lista de bloques
calculables los bloques sin entrada• 1
– Suponiendo conocidas, condiciones iniciales, en t=0 la salida de los bloques tipo integrador (estados) , 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 iteración no hay nuevos bloques calculables: lazo algebraico
2
83
64
75 9
1
Lenguajes de simulación orientados a bloques: ordenación de los bloques (ej: simulink)
Simulación y Optimización4º Ingeniería Informática
14
Lenguajes de simulación orientados a bloques: estructura de cálculo
Partir de valores inicialeso bloques sin entrada
Calcular la salida de cada bloque en tsegún el orden de cálculo. Evaluar
las entradas a todos los integradores
Integrar las ecuaciones para obtener elvalor de las variables de estado en t+h
8
Simulación y Optimización4º Ingeniería Informática
15
Lenguajes de simulación orientados a bloques: lazos algebraicos
z(t) = 5·(sin(t) – ez(t))
SumSine Wave
Scope
eu
MathFunction
5
Gain¿Ordenación de
bloques?
Sum1Sum
Sine Wave
Scope
eu
MathFunction
5
Gainf (z) z
Solvef(z) = 0
Algebraic Constraint
Solución: uso de un bloque especial que resuelve ecuaciones
implícitas
Simulación y Optimización4º Ingeniería Informática
16
SOLUCIÓN
Otro ejemplo: z2=1-z1; z1=z2-1. z2=1, z1=0
9
Simulación y Optimización4º Ingeniería Informática
17
Tratamiento de eventos en SIMULINK• Bloque para la detección 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 dirección positiva y en dirección negativa.
Simulación y Optimización4º Ingeniería Informática
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 condición inicial y se reinicia la integración numérica
dy/dty(t)Variable asociada al evento
Condición inicial
Estado del sistema (y(t)), cuando se necesite introducir la salida del integrador como entrada a través de la entrada de condición inicial
10
Simulación y Optimización4º Ingeniería Informática
19
Ejemplo: simulación del bote de la pelota
0 x(t)cuando )(·8.0)(
)()(
81.9)(
=−=
=
−=
tvtv
tvdt
tdxdt
tdv
Simulación y Optimización4º Ingeniería Informática
20
Lenguajes de simulación orientados a bloques: modularización (librerías-jerarquía)
11
Simulación y Optimización4º Ingeniería Informática
21
Lenguajes de simulación orientados a bloques: modularización (ejemplo)
• Cuatro niños en patinete empiezan a moverse a partir de diferentes coordenadas. Cada uno de ellos se mueve a una velocidad constante y su dirección de desplazamiento es la línea recta que une su posición actual con la de su siguiente vecino, es decir el niño 1 trata de alcanzar al niño 2, el niño 2 trata de alcanzar al niño 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 niño (j) en las direcciones x e y son:
• Ejemplo SIMULINK
Simulación y Optimización4º Ingeniería Informática
22
Parámetros: vj
Condiciones iniciales:
xj(t=0) e yj(t=0)
Variables de entrada externas al modelo:
xj+1 e yj+1
( ) ( )
( ) ( )212
1
1
21
21
1
)()()()(
))()(()(
)()()()(
))()(()(
)()(
)()(
tytytxtx
tytyvtv
tytytxtx
txtxvtv
tvty
tvtx
jjjj
jjjyj
jjjj
jjjxj
yjj
xjj
++
+
++
+
−+−
−=
−+−
−=
=′
=′
Ecuaciones ordenadas y despejadas:Para un único niño
12
Simulación y Optimización4º Ingeniería Informática
23
Esa conducta puede encapsularse bajo un subsistema y reutilizar dicho modelo
Simulación y Optimización4º Ingeniería Informática
24
Conclusiones• Las principales ventajas son:
– Sencillos e intuitivos– Fáciles de construir debido a su interfaz gráfica
• Los principales inconvenientes de esta forma de simulación son:– La descripción del modelo no se asemeja a la formulación matemática original, por lo
que, normalmente genera un gran número de bloques (aún para problemas de escasa magnitud), lo que dificulta su depuración y modificación.
– La forma de cálculo de las ecuaciones (bloque a bloque) es muy lenta.– Esta forma de cálculo de las ecuaciones hace muy difícil la solución de ecuaciones
algebraicas, aún siendo matemáticamente correctas dan lugar a mensajes de error y se precisa el uso de bloques especiales.
– No existe separación modelo y experimento, lo cual resta flexibilidad y limita el uso del modelo.
– Al construir un modelo en base a una librería de bloques definida por el usuario pueden aparecer lazos algebraicos de difícil o incluso imposible solución.
– Construcciones jerárquicas y modulares con causalidad computacional fija (no reutilizables).
13
Simulación y Optimización4º Ingeniería Informática
25
Lenguajes de simulación orientados a sentencias• Estándar: CSSL’67 (Simulation 1967 Vol.9, pp. 281-303)
– Declaración directa de las ecuaciones en términos similares a la formulación matemática habitual.
– El programa se estructura temporalmente en tres regiones: inicial, dinámica y terminal.
– Generadores de código: • El programa que realiza la simulación no procesa continuamente los datos que
constituyen la descripción del modelo, sino que dicha descripción se utiliza para generar código en un lenguaje de alto nivel, por ejemplo FORTRAN, que después de ser compilado y montado con las librerías del sistema origina un código 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 simulación.
– La realización de experimentos con el modelo, presentación de resultados,... se hace por medio de un lenguaje de comandos que el usuario introduce a través de algún terminal del ordenador, constituyendo un paso hacia la separación del modelo y el experimento.
– ¿Reutilización? Uso de estructuras tipo MACRO.
Simulación y Optimización4º Ingeniería Informática
26
Lenguajes de simulación orientados a sentencias:Estructura del código CSSL’67
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 lasimulación.
END
DYNAMIC
Descripción 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
Simulación y Optimización4º Ingeniería Informática
27
Lenguajes de simulación orientados a sentencias:Generación de código
Edición delfichero
con el modelo.
Preprocesador paraanalizar el modelo,ordenar sentenciasy generar códigoen un lenguajede alto nivel.
Códigofuente.
Códigoobjeto.
Lenguaje decomandos.
Programaejecutableque realiza
la simulación.
Presentaciónde
resultados.
Librerias delsistema y dellenguaje desimulación.
Montaje
Compilación
Simulación y Optimización4º Ingeniería Informática
28
ACSL (Advanced Continuous Simulation Language) un lenguaje orientado a sentencias del estándar CSSL’67
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 simulación.
END
PROGRAM
END
15
Simulación y Optimización4º Ingeniería Informática
29
ACSL: sentencias de definición del modelo• De definición de tipos de variables
– Ej: REAL x(7), INTEGER h, LOGICAL flag ...• De definición del modelo
– Expresiones del tipo variable = expresión, junto a funciones propias de ACSL y llamadas a rutinas FORTRAN.
• Se considera una expresión a una combinación de operadores, funciones y operandos que cuando son evaluados producen un valor numérico único. Las expresiones pueden contener operadores aritméticos, lógicos y relacionales. Dentro de las funciones debemos destacar las estándar de FORTRAN así como las propias del lenguaje.
– Las sentencias que definen el modelo pueden escribirse en cualquier orden, pero para que una expresión sea correcta los valores de las variables de la expresión necesitan poder ser calculados previamente. Por eso una variable puede estar a ambos lados del signo igual si en la expresión figura un integrador o un solucionador de ecuaciones implícitas. En ACSL los operadores integrador son los más característicos e importantes y típicamente tienen la forma: INTEG(expresión, 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
Simulación y Optimización4º Ingeniería Informática
30
• Otras expresiones:
• Descripción tipo Fortran: exp, sin , IF THEN ELSE,...
• Primitivas de ACSL: BOUND, REALP, DELAY,….
• Generadores de Funciones: SIN, PULSE,...
• Tablas 2D y 3D
• Ecuaciones implícitas: IMPLC
• Tratamiento de eventos: SCHEDULE, INTERVAL,..
• Llamadas externas: call...• De definición de las condiciones en que se realiza la simulación
• palabre clave variable=valor
16
Simulación y Optimización4º Ingeniería Informática
31
Simulación y Optimización4º Ingeniería Informática
32
ACSL: lenguaje de comandos
17
Simulación y Optimización4º Ingeniería Informática
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 integración!Tienen valores por defectocinterval cint=0.1nsteps nstp=10algorithm ialg=5!Tiempo máximo de simulaciónconstant tmax=10.
enddynamicderivative
!Parámetros 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 señal y3 es conocida en el tiempo ej:y3=cos(t)
endtermt(t.gt.tmax)
endend
Simulación y Optimización4º Ingeniería Informática
34
Ejemplo de modelado en ACSL
program circuitoinitial
!Condiciones inicialesconstant uc0=..., il0=....!Condiciones de la integración!Tienen valores por defectocinterval cint=0.01nsteps nstp=10algorithm ialg=5!Tiempo máximo de simulaciónconstant tmax=1.
enddynamicderivative
!Parámetros 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 señal 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
/
2·1))··sin(
=
=
===
18
Simulación y Optimización4º Ingeniería Informática
35
ACSL: ejecución del modelo de simulación
• 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 comunicación.
– Evidentemente el tamaño del paso de integración está en función de los eventos. Asílos algoritmos de paso variable funcionan bien con los eventos y los de paso fijo no, porque no pueden reducir el tamaño del paso.
Simulación y Optimización4º Ingeniería Informática
36
Generación del código de simulación:ordenación de sentencias
• Una vez se ha escrito un fichero *.csl se invoca el programa ACSL. Lo que origina una traducción del fichero *.csl para generar un fichero FORTRAN, que serácompilado y linkado hasta generar un ejecutable.
• Pasos previos a la generación de código FORTRAN:– Busca errores sintácticos en las sentencias, y otros tipos de errores de cálculo, como por
ejemplo variables no definidas, etc y lanza los correspondientes mensajes de error.– Si no existen errores sintácticos, 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 ordenación 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 integración). 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 envía la final de la lista. El algoritmo finaliza cuando todas las variables están marcadas como conocidas y la lista de sentencias está ordenada.
19
Simulación y Optimización4º Ingeniería Informática
37
Ejemplo de ordenación de sentencias
Consideremos este modelo en una región derivative
R=RZ+LR
AREA=PI*R**2
CONSTANT PI=3.142, RZ=1.0
LR=INTEG(AREA,0.0)
Simulación y Optimización4º Ingeniería Informática
38
ACSL: lazos algebraicos• ¿Cómo implemento en ACSL z=5·(sin(t)-ez)?
– z=5*(sin(t)-exp(z)) es un lazo algebraico, para calcular z necesito conocer z.
– Solución: operador implícito (como en SIMULINK):• constant z0=... !estimación inicial de z• z=impl(z-5*(sin(t)-exp(z)),z0)
• ¿Qué sucede si escribo las siguientes sentencias en una región 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
Simulación y Optimización4º Ingeniería Informática
39
Simulación y Optimización4º Ingeniería Informática
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 numéricos:
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 implícito (IMPLC), por ejemplo:CONSTANT WI=10.
W=IMPLC(W-CV1*SQRT(P1-P2),WI)
P2=(W/CV2)**2+P3
21
Simulación y Optimización4º Ingeniería Informática
41
Modularidad y reutilización en ACSL
• El objetivo es descomponer un sistema de un modo jerárquico y modular, de modo que:
– Facilite la lectura de un modelo.– Permita la reutilización de componentes.– Permita la agrupación jerárquica de componentes.
• ACSL tiene un mecanismo que trata de proveer el modelado modular y jerárquico, las llamadas MACROS:
– Una MACRO es una estructura de programación que permite encapsular el código de simulación para su utilización repetitiva al definir nuevos operadores de un modo similar a los subprogramas o subrutinas de los lenguajes de programación tradicionales.
– Son diferentes a las subrutinas o subprogramas• Permiten incluir llamadas a otras MACROS y operadores de ACSL.• El código que contiene la MACRO se expande ante de sus análisis y compilación.• Se define en el mismo programa ACSL (antes de usarlas) o se pueden tener
“compiladas” en un fichero externo al código del modelo en el que se usen.
Simulación y Optimización4º Ingeniería Informática
42
Ejemplo de MACROS• Consideremos el siguiente modelo matemático de modo que conocido
el valor de u nos calcula la evolución 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
Simulación y Optimización4º Ingeniería Informática
43
• El código 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 invocación múltiple) 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...
Simulación y Optimización4º Ingeniería Informática
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 sustitución 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 selección de código en la invocación de la MACRO, pero sólo en
tiempo de compilación no de ejecución.– Dificultades para el manejo de parámetros en llamadas jerárquicamente largas.– La conexión entre componentes se hace a nivel de variables.– Causalidad computacional fija.
• Implica desarrollar múltiples modelos de una misma entidad física.• El desconocimiento de las ecuaciones que subyacen a las MACROS puede conducir a la
aparición de lazos algebraicos en el modelo de simulación.– Desarrollo de librerías de componentes muy extensas y difíciles de diseñar e
invocar correctamente. Los OOML resuelven de una forma bastante eficiente este problema.
23
Simulación y Optimización4º Ingeniería Informática
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
Simulación y Optimización4º Ingeniería Informática
46
• Además si se quiere tener acceso a ciertas variables “internas” de la MACRO están deben definirse en su invocación.
• 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
Simulación y Optimización4º Ingeniería Informática
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
Simulación y Optimización4º Ingeniería Informática
48
Problema de la sustitución de argumentos• Ej: consideremos la acumulación
de líquido 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
Simulación y Optimización4º Ingeniería Informática
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
Erróneo
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 soluciónMACRO DEPO(m,wi,wo,mi)
m=integ((wi)-(wo),(mi))MACRO END
Simulación y Optimización4º Ingeniería Informática
50
Problema de la selección de las ecuaciones del modelo en tiempo de simulación
• Las estructuras MACRO tienen prevista la selección del modelo de una misma entidad física, pero en “tiempo de traducción” no de simulación.
• 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:El paso de parámetros y de variables a la MACRO es el mismo usemos un modelo u otro, lo cual requiere pasar parámetros y variables innecesarias según se use un modelo u otro.
26
Simulación y Optimización4º Ingeniería Informática
51
Problema del paso de parámetros entre MACROS en diferentes niveles de la estructura jerárquica
• Las estructuras MACRO obligan al paso de argumentos de una MACRO jerárquicamente 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 jerárquica por especialización o agregación.
• Ejemplo: dos modelos de resistencias eléctricas, 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.Sintácticamente es poco eficiente
Simulación y Optimización4º Ingeniería Informática
52
Problema de la conexión de componentesa nivel de variables
• Si un modelador desarrolla una librería de componentes que sea fácil de utilizar por un usuario final de la misma lo lógico es poder conectar los componentes a través de puertos físicos no a nivel de variables:
– Conexiones eléctricas (voltajes e intensidades).– Conexiones mecánicas (pares, velocidades).– Conexiones hidraúlicas (presiones, caudales, temperaturas, concentraciones).
• Las MACROS no permiten definir una interface que permita estructurar las variables que comparten los componentes.
• Las conexiones sólo se realizan variable a variable, lo cual:– Dificulta el uso de la librería de componentes (conexiones demasiado complejas).– Implica que no exista una analogía entre el componente modelado y su
correspondiente MACRO.• Este modo de conectar componentes sólo es útil cuando las conexiones entre
componentes requieran una sola variable (ej: diagramas de bloques).
27
Simulación y Optimización4º Ingeniería Informática
53
Problema de la causalidad computacional fija
• Los modelos matemáticos que contienen las macros tienen definida su causalidad matemática lo cual implica que:
• Las variables de entrada y salida están predeterminadas.• Las ecuaciones del modelo están manipuladas simbólicamente de una
determinada manera que es fija.• Problemas:
– Impiden la reutilización del código, desde el punto de vista del modelado, porque los modelos matemáticos no pueden adaptarse al contexto al no estar permitida la manipulación simbólica de ecuaciones.
– Así, si se quiere disponer de una librería de MACROS completa por cada unidad física a modelar deberían desarrollarse tantas MACROS como posibilidades lógicas de manipulación de las ecuaciones.
– Pueden aparecer lazos algebraicos en el modelo de simulación al conectar ciertos componentes si no se elige la MACRO con la manipulación simbólica adecuada. Para evitarlo el usuario de la librería de MACROS debe conocer su codificación.
• Veámoslo con dos ejemplos:– Circuito eléctrico.– Conexiones hidráulicas.
Simulación y Optimización4º Ingeniería Informática
54
Ejemplo 1: circuito eléctrico
• Imaginemos que hemos desarrollado una librería de MACROS de componentes eléctricos:
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
Simulación y Optimización4º Ingeniería Informática
55
• Tratamos de modelar este circuito eléctrico:
Una asignación de otra forma no funcionaría, 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
Simulación y Optimización4º Ingeniería Informática
56
• Tratemos ahora de modelar este circuito eléctrico:
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 FUNCIONARíA después de manipularlas
29
Simulación y Optimización4º Ingeniería Informática
57
• Lo cual requiere definir una nueva MACRO para la resistencia eléctrica:
MACRO RESISTENCIA (V1,I,V2,R)V1=R*I+V2MACRO END
• Asignar bien la ecuación que une las dos intensidades.• Pero es que además, en este caso, también 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...
Simulación y Optimización4º Ingeniería Informática
58
Ejemplo 1: circuito hidraúlico
• Imaginemos que ahora queremos modelar esta conducción y que los modelos matemáticos de tubería y válvula 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
Simulación y Optimización4º Ingeniería Informática
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, deberían 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 física “tubo”
Simulación y Optimización4º Ingeniería Informática
60
Pero aún así, además tenemos un lazo
algebraico, lo cual implicaría introducir otras MACROS con
operadores implícitos 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
Simulación y Optimización4º Ingeniería Informática
61
Entornos de modelado gráfico de los lenguajes orientados a sentencias
• El incremento de la potencia de los ordenadores (capacidades gráficas) y las demanda de las técnicas de simulación obligo a que los sistemas se modelasen de un modo gráfico.
• El modelado gráfico consiste en tener una librería de modelos elementales y permitir la conexión gráfica 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 gráfico sin más que seleccionar los componentes y conectar los iconos a través de los conectores.
• Ejemplo de estos entornos: – Graphic Modeller (ACSL).– MMS: entorno de modelado plantas nucleares
que genera código ACSL.
Simulación y Optimización4º Ingeniería Informática
62
• Graphic Modeller:– Definición de componentes:
• Icono.• Nombre del componente.• Puertos de entrada.• Puertos de salida.• Parámetros.• Ecuaciones.
– La conexión de componentes se realiza sin más que unir puertos de entrada con puertos de salida.
• Las conexiones se hacen a nivel de variables no de conexiones físicas reales. En el caso de sistemas complejos (fluidos), necesitamos múltiples conexiones de variables para una misma conexión física real y se complica el diagrama.
– Finalmente genera un código ACSL:• Pegando el código 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 asignación de nombres y de escritura del modelo de
simulación, pero desde un punto de vista conceptual presenta la misma problemática que las MACROS de ACSL (no es más que una interfaz gráfica de las MACROS).
– Sólo es útil para sistemas que se modelen desde la perspectiva de los diagramas de bloques.
32
Simulación y Optimización4º Ingeniería Informática
63
Simulación y Optimización4º Ingeniería Informática
64
Conclusiones• Las principales ventajas son:
– Declaración directa de las ecuaciones en términos similares a la formulación matemática habitual.
– Generadores de código no intérpretes de un diagrama.
– Son una primera aproximación a la distinción entre modelo y experimento, pero no los independizan completamente.
• El principal inconveniente de estos lenguajes es que son lenguajes de simulación pero no de modelado, con lo cual:
– No soportan una reutilización eficiente del código de simulación debido a la pobreza del concepto de MACRO.
– El tratamiento de los sistemas de estructura variable (híbridos), en los que las ecuaciones pueden cambiar en tiempo de simulación, no se soporta de un modo eficiente.
• Por ejemplo un interruptor eléctrico: si está cerrado la diferencia de potencial entre los extremos es nula y si está abierto la intensidad de corriente es nula.
I=0; V≠0 V=0; I≠0