You are on page 1of 32

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 Optimizacin
4 Ingeniera Informtica

TEMA 4. Lenguajes de simulacin de


sistemas continuos
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

Simulacin y Optimizacin
4 Ingeniera Informtica

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 Optimizacin
4 Ingeniera Informtica

Simulacin y Optimizacin
4 Ingeniera Informtica

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:
R

dx(t )
+ x(t ) = F (t )
dt

V i= F

V0= x

= RC
Simulacin y Optimizacin
4 Ingeniera Informtica

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).
Simulacin y Optimizacin
4 Ingeniera Informtica

Lenguajes de simulacin orientados a bloques


Mtodo para transformar una ecuacin diferencial en un diagrama
bloques:
y1(t ) + a y1(t ) + b y1 (t ) + c( y1(t ) y3 (t ) ) + d = 0.

Ejemplo:

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.
y1(t ) = a y1(t ) b y1 (t ) c( y1(t ) y3 (t ) ) d
Paso 2: dibujar una cascada de
integradores con tantos bloques
como derivadas aparezcan en la
ecuacin.
Paso 3: utilizar el resto de
bloques para tratar de reflejar
la ecuacin diferencial
representada.
Simulacin y Optimizacin
4 Ingeniera Informtica

Ejemplo: modelo de un depsito (A=2, K=1, g=9.8, Flujo de entrada


aumenta linealmente con el tiempo)
F

dh(t )
= F (t ) K g h(t )
dt
F (t ) = Bt

K g
dh(t ) 1
= F (t )
dt
A
A
F (t ) = Bt

Generador
de rampas
1

h(t )

3
0.5
F

Sumador

-1.56
2
Integrador
Raiz
cuadrada
4

Simulacin y Optimizacin
4 Ingeniera Informtica

U ( t ) = A sin( t )

Ejemplo: circuito elctrico

U ( t ) = i C ( t ) R 1 + U

Ecuaciones
del modelo

U (t ) = U

(t )

( t ) + i L ( t ) R 2

C (t )
dt
di L ( t )
(t ) = L
dt

iC ( t ) = C
U

dU

Manipulacin
del modelo

U ( t ) = A sin ( t )
i (t )
C (t )
= C
dt
C
di L ( t )
U L (t )
=
dt
L
U ( t ) -U C ( t )
iC ( t ) =
R1
U L ( t ) = U ( t ) - i L ( t ) R 2
dU

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 Optimizacin
4 Ingeniera Informtica

U ( t ) = A sin ( t )
i (t )
C
= C
dt
C
di L ( t )
U L (t )
=
dt
L
U ( t ) -U C ( t )
iC ( t ) =
R1
U L ( t ) = U ( t ) - i L ( t ) R 2
dU

(t )

Diagrama
de bloques

Simulacin y Optimizacin
4 Ingeniera Informtica

10

Lenguajes de simulacin orientados a bloques:


funcionamiento del programa de simulacin

Simulacin y Optimizacin
4 Ingeniera Informtica

11

Lenguajes de simulacin orientados a bloques:


edicin del diagrama (ej: simulink)

Ejemplo SIMULINK
(muelle)
Simulacin y Optimizacin
4 Ingeniera Informtica

12

Lenguajes de simulacin orientados a bloques:


ordenacin de los bloques (ej: simulink)
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

1
6

2y3
4y5
6y7
8y9

8
3

Si en una iteracin no hay nuevos


bloques calculables: lazo algebraico
Simulacin y Optimizacin
4 Ingeniera Informtica

13

Lenguajes de simulacin orientados a bloques:


estructura de clculo
Partir de valores iniciales
o bloques sin entrada
Calcular la salida de cada bloque en t
segn el orden de clculo. Evaluar
las entradas a todos los integradores
Integrar las ecuaciones para obtener el
valor de las variables de estado en t+h

Simulacin y Optimizacin
4 Ingeniera Informtica

14

Lenguajes de simulacin orientados a bloques:


lazos algebraicos
z(t) = 5(sin(t) ez(t))
Scope

Ordenacin de
bloques?

5
Sine Wave

Sum

Gain

Math
Function

Solucin: uso de un
bloque especial que
resuelve ecuaciones
implcitas

Scope
5
Sine Wave

Sum

Gain

f (z)

Sum 1

Solve
f(z) = 0

Algebraic Constraint

M ath
Function

Simulacin y Optimizacin
4 Ingeniera Informtica

15

Otro ejemplo: z2=1-z1; z1=z2-1. z2=1, z1=0

SOLUCIN

Simulacin y Optimizacin
4 Ingeniera Informtica

16

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 Optimizacin
4 Ingeniera Informtica

17

Estado del sistema (y(t)), cuando se necesite


introducir la salida del integrador como entrada a
travs de la entrada de condicin inicial

dy/dt

Variable asociada al evento


Condicin inicial

y(t)

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
Simulacin y Optimizacin
4 Ingeniera Informtica

18

Ejemplo: simulacin del bote de la pelota

dv(t )
= 9.81
dt
dx(t )
= v(t )
dt
v(t ) = 0.8v(t )

cuando x(t) = 0

Simulacin y Optimizacin
4 Ingeniera Informtica

19

Lenguajes de simulacin orientados a bloques:


modularizacin (libreras-jerarqua)

Simulacin y Optimizacin
4 Ingeniera Informtica

20

10

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,
( x j (t ) x j +1 (t ))

v xj (t ) = v j

Las ecuaciones de movimiento de cada


nio (j) en las direcciones x e y son:

(x j (t ) x j +1 (t ))2 + (y j (t ) y j +1 (t ))2

xj (t ) = v xj (t )
( y j (t ) y j +1 (t ))

v yj (t ) = v j

(x j (t ) x j +1 (t ))2 + (y j (t ) y j +1 (t ))2

y j (t ) = v yj (t )

Ejemplo SIMULINK

Simulacin y Optimizacin
4 Ingeniera Informtica

Para un nico nio

21

Ecuaciones ordenadas y despejadas:


xj (t ) = v xj (t )

Parmetros: vj

y j (t ) = v yj (t )

Condiciones iniciales:
xj(t=0) e yj(t=0)
Variables de entrada externas al modelo:

( x j (t ) x j +1 (t ))

v xj (t ) = v j

(x j (t ) x j +1 (t ))2 + (y j (t ) y j +1 (t ))2

v yj (t ) = v j

(x j (t ) x j +1 (t ))2 + (y j (t ) y j +1 (t ))2

xj+1 e yj+1

Simulacin y Optimizacin
4 Ingeniera Informtica

( y j (t ) y j +1 (t ))

22

11

Esa conducta
puede encapsularse
bajo un subsistema
y reutilizar dicho
modelo

Simulacin y Optimizacin
4 Ingeniera Informtica

23

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).
Simulacin y Optimizacin
4 Ingeniera Informtica

24

12

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 Optimizacin
4 Ingeniera Informtica

25

Lenguajes de simulacin orientados a sentencias:


Estructura del cdigo CSSL67
PROGRAM

INITIAL

A
h

dh
= F K gh
dt

Sentencias que se ejecutan al comienzo de la


simulacin.
END

program deposito

DYNAMIC

INITIAL

Descripcin de las ecuaciones del modelo.

DATA h0=1 , TMAX=1

END

END

TERMINAL

DYNAMIC
DATA K=1 , A=2
h=INTEG(F/A - K/A*SQRT(9.8*h),h0)
TERMINATE (T>TMAX)

Sentencias que se ejecutan al final del modelo


END
END

END
END

Simulacin y Optimizacin
4 Ingeniera Informtica

26

13

Lenguajes de simulacin orientados a sentencias:


Generacin de cdigo

Edicin del
fichero
con el modelo.

Preprocesador para
analizar el modelo,
ordenar sentencias
y generar cdigo
en un lenguaje
de alto nivel.

Compilacin
Cdigo
fuente.

Cdigo
objeto.

Programa
ejecutable
que realiza
la simulacin.

Presentacin
de
resultados.

Montaje
Librerias del
sistema y del
lenguaje de
simulacin.

Lenguaje de
comandos.

Simulacin y Optimizacin
4 Ingeniera Informtica

27

ACSL (Advanced Continuous Simulation Language) un


lenguaje orientado a sentencias del estndar CSSL67
Estructura del modelo
PROGRAM
INITIAL
Sentencias que se ejecutan en el instante inicial.
END
DYNAMIC
DERIVATIVE
Sentencias que se integran continuamente
END
DISCRETE
Sentencias que se ejecutan a intervalos discretos
END
END
TERMINAL
Sentencias que se ejecutan al final de la simulacin.
END
END
Simulacin y Optimizacin
4 Ingeniera Informtica

28

14

ACSL: sentencias de definicin del modelo

De definicin de tipos de variables

De definicin del modelo

Ejemplo

Ej: REAL x(7), INTEGER h, LOGICAL flag ...


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.

dx
= 9.8 3 x 2 + u siendo x (0) = 1.
dt
u = cos(t )

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

program modelo
initial
constant x0=1.
end
derivative
constant g=9.8
x=integ(g-3*x**2+u,x0)
u=cos(t)
end
end

Simulacin y Optimizacin
4 Ingeniera Informtica

29

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

Simulacin y Optimizacin
4 Ingeniera Informtica

30

15

Simulacin y Optimizacin
4 Ingeniera Informtica

31

ACSL: lenguaje de comandos

Simulacin y Optimizacin
4 Ingeniera Informtica

32

16

Ejemplo de modelado en ACSL


program suspension
initial
!Condiciones iniciales
constant y10=..., v10=..., a10=...
Despejando la derivada
!Condiciones de la integracin
de mayor orden
!Tienen valores por defecto
cinterval cint=0.1
nsteps nstp=10
1
1
3
algorithm ialg=5
!Tiempo mximo de simulacin
constant tmax=10.
La transformamos en un sistema de
end
ecuaciones diferenciales de primer orden
dynamic
derivative
!Parmetros del modelo
1
constant a=..., b=..., c=..., d=....
!Ecuaciones del modelo
y1=integ(v1,y10)
1
1
v1=integ(a1,v10)
a1=integ(-a*a1-b*v1-c*(y1-y3)-d,a10)
1
1
1
3
!La seal y3 es conocida en el tiempo ej:
y3=cos(t)
1
1
3
end
termt(t.gt.tmax)
end
end
Simulacin y Optimizacin
33
4 Ingeniera Informtica

&y&&1 + a &y&1 + b y&1 + c( y1 y 3 ) + d = 0.

&y&&1 = a &y& b y& c( y1 y ) d

v1 = y&
a1 = v& (= &y& )

a&1 (= &y&& ) = a &y& b y& c( y1 y ) d


= aa bv c( y1 y ) d

Ejemplo de modelado
en ACSL
U = A sin( W t )
i C = (U-U C ) /R 1
U

= U-i

R 2

dU C
= iC / C
dt
di L
= U L /L
dt

program circuito
initial
!Condiciones iniciales
constant uc0=..., il0=....
!Condiciones de la integracin
!Tienen valores por defecto
cinterval cint=0.01
nsteps nstp=10
algorithm ialg=5
!Tiempo mximo de simulacin
constant tmax=1.
end
dynamic
derivative
!Parmetros del modelo
constant a=..., w=...
constant r1=..., r2=...., c=..., l=...
!Ecuaciones del modelo
uc=integ(ic/c,uc0)
il=integ(ul/l,il0)
ic=(u-uc)/r1
ul=u-il*r2
!La seal u es conocida en el tiempo ej:
u=a*sin(w*t)
end
termt(t.gt.tmax)
end
end
Simulacin y Optimizacin
34
4 Ingeniera Informtica

17

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. As
los 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 Optimizacin
4 Ingeniera Informtica

35

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 ser
compilado 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.
Simulacin y Optimizacin
4 Ingeniera Informtica

36

18

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 Optimizacin
4 Ingeniera Informtica

37

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 ?

Simulacin y Optimizacin
4 Ingeniera Informtica

38

19

Simulacin y Optimizacin
4 Ingeniera Informtica

39

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.25
END
...
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+P3
END

Utilizar un operador implcito (IMPLC), por ejemplo:


CONSTANT WI=10.
W=IMPLC(W-CV1*SQRT(P1-P2),WI)
P2=(W/CV2)**2+P3

Simulacin y Optimizacin
4 Ingeniera Informtica

40

20

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 Optimizacin
4 Ingeniera Informtica

41

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:

dx
= 3x + u
dt
y = 3 x

Un posible uso de esta MACRO (se


puede invocar de diferentes maneras)
en un modelo ACSL es:

Una posible MACRO que


encapsula dicho modelo es:
MACRO SIST_LIN(salida,entrada,v0)
MACRO redefine v,derv
MACRO standval v0=0.
derv=-3*v+entrada
v=integ(derv,v0)
salida=3*v
MACRO END

program ejemplo
initial
constant tmax=10.
constant x0=5.
end
dynamic
derivative
u=sin(0.5*t)
sist_lin(y,u,x0)
end
termt(t.gt.tmax)
end
end

Simulacin y Optimizacin
4 Ingeniera Informtica

42

21

program ejemplo
initial
constant tmax=10.
constant x0=5.
end

El cdigo ACSL que se genera es:

dynamic
derivative
u=sin(0.5*t)
Znnnn1=3*Znnnn2+u
Znnnn2 =integ(Znnnn1,x0)
y=3*Znnnn2
end
termt(t.gt.tmax)

Otro ejemplo de uso de esta MACRO


(con una invocacin mltiple) es:
program ejemplo2
initial
constant tmax=10.
constant x0=5.
end
dynamic
derivative
u=sin(0.5*t)
q=5*ramp(2)
sist_lin(y,u,x0)
sist_lin(p,q)
end
termt(t.gt.tmax)
end
end

end
end

...
dynamic
derivative
u=sin(0.5*t)
q=5*ramp(2)
Znnnn1=3* Znnnn2+u
Znnnn2=integ(Znnnn1,x0)
y=3* Znnnn2
Znnnn3=3* Znnnn4+q
Znnnn4=integ(Znnnn3,x0)
p=3* Znnnn4
end
...

Simulacin y Optimizacin
4 Ingeniera Informtica

43

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.

Simulacin y Optimizacin
4 Ingeniera Informtica

44

22

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
MACRO SIST_LIN(salida,entrada,v0)
!MACRO redefine v,derv (no incluida)
Ejemplo: dx
MACRO standval v0=0.
= 3x + u
dt
y = 3 x

program ejemplo2
initial
constant tmax=10.
constant x0=5.
end
dynamic
derivative
u=sin(0.5*t)
q=5*ramp(2)
sist_lin(y,u,x0)
sist_lin(p,q)
end
termt(t.gt.tmax)
end
end

derv=-3*v+entrada
v=integ(derv,v0)
salida=3*v
MACRO END

...
dynamic
derivative
u=sin(0.5*t)
q=5*ramp(2)
derv=3*v+u
v=integ(derv,x0)
y=3*v
derv=3*v+q
v=integ(derv,0.)
p=3*q

Error: v y derv
calculadas dos
veces

end
...

Simulacin y Optimizacin
4 Ingeniera Informtica

45

Adems si se quiere tener acceso a ciertas variables


internas de la MACRO estn deben definirse en su
invocacin.
MACRO SIST_LIN(salida,entrada,v0)
MACRO redefine v,derv
dx
Ejemplo:
MACRO standval v0=0.
= 3x + u
dt
y = 3 x

program ejemplo
initial
constant tmax=10.
constant x0=5.
end

derv=-3*v+entrada
v=integ(derv,v0)
salida=3*v
MACRO END

program ejemplo
initial
constant tmax=10.
constant x0=5.
end
dynamic
derivative

dynamic

u=sin(0.5*t)
Znnnn1=3*Znnnn2+u
Znnnn2 =integ(Znnnn1,x0)
y=3*Znnnn2

derivative
u=sin(0.5*t)
sist_lin(y,u,x0)
end
termt(t.gt.tmax)
end
end

end
termt(t.gt.tmax)
end
end

Simulacin y Optimizacin
4 Ingeniera Informtica

46

23

Ejemplo, si quiero poder acceder a la x entonces:


MACRO SIST_LIN(salida,entrada,x,v0)
MACRO derv
MACRO standval v0=0.
derv=-3*x+entrada
x=integ(derv,v0)
salida=3*x
MACRO END

dx
= 3x + u
dt
y = 3 x

program ejemplo

program ejemplo
initial
constant tmax=10.
constant x0=5.
end

initial
constant tmax=10.
constant x0=5.
end

dynamic
derivative

dynamic

u=sin(0.5*t)
Znnnn1=3*x+u
x =integ(Znnnn1,x0)
y=3*x

derivative
u=sin(0.5*t)
sist_lin(y,u,x,x0)
end
termt(t.gt.tmax)

end
termt(t.gt.tmax)
end
end

end
end

Simulacin y Optimizacin
4 Ingeniera Informtica

47

Problema de la sustitucin de argumentos


Ej: consideremos la acumulacin
de lquido en un tanque:

Wi

m
Wo

W1
m
W2

dm
= Wi Wo
dt

MACRO DEPO(m,wi,wo,mi)
m=integ(wi-wo,mi)
MACRO END

program tanque1
initial
constant tmax=10.
constant masai=...
constant w1=..., w2=...
end
dynamic
derivative
DEPO(masa,w1,w2,masai)
end
termt(t.gt.tmax)
end
end

Simulacin y Optimizacin
4 Ingeniera Informtica

program tanque1
initial
constant tmax=10.
constant masai=...
constant w1=..., w2=...
end
dynamic
derivative
masa=integ(w1-w2,masai)
end
termt(t.gt.tmax)
end
end

48

24

W1

W21

dm
= W 1 W 21 W 22
dt

m
W22

Otra solucin
MACRO DEPO(m,wi,wo,mi)
m=integ((wi)-(wo),(mi))
MACRO END

MACRO DEPO(m,wi,wo,mi)
m=integ(wi-wo,mi)
MACRO END

program tanque2
initial
constant tmax=10.
constant masai=...
constant w1=..., w21=..., w22=...
end
dynamic
derivative
DEPO(masa,w1,w21+w22,masai)
end
termt(t.gt.tmax)
end
end

program tanque1
initial
constant tmax=10.
constant masai=...
constant w1=..., w2=...
end
dynamic
derivative
masa=integ(w1-w21+w22,masai)
end
termt(t.gt.tmax)
end
end

program tanque2
initial
constant tmax=10.
constant masai=...
constant w1=..., w21=..., w22=...
end
dynamic
derivative
DEPO(masa,w1,(w21+w22),masai)
end
termt(t.gt.tmax)
end
end

program tanque1
initial
constant tmax=10.
constant masai=...
constant w1=..., w2=...
end
dynamic
derivative
masa=integ(w1-(w21+w22),masai)
end
termt(t.gt.tmax)
end
end

Errneo

Correcto,pero
requiere saber
como est
programada
la MACRO

Simulacin y Optimizacin
4 Ingeniera Informtica

49

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 2
MACRO goto etiqueta2
MACRO etiqueta1..continue
Ecuaciones 1
MACRO etiqueta2..continue
Ecuaciones comunes
MACRO 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.

Simulacin y Optimizacin
4 Ingeniera Informtica

50

25

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*I
MACRO END
MACRO RESISTOR_T (V,I,T,a0,a1)
MACRO REDEFINE R
R=a0+a1*T
RESISTOR(V,I,R)
MACRO END

Se pasa como argumento las variables V e I.


Sintcticamente es poco eficiente

Simulacin y Optimizacin
4 Ingeniera Informtica

51

Problema de la conexin de componentes


a 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).
Simulacin y Optimizacin
4 Ingeniera Informtica

52

26

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 Optimizacin
4 Ingeniera Informtica

53

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

Simulacin y Optimizacin
4 Ingeniera Informtica

54

27

Tratamos de modelar
este circuito elctrico:

program circuito_1
initial
constant r=5, vf=2.
end
dynamic
derivative
vt1=0.
vf2=vf1+vf
i=(vr1-vr2)/r
vt2=0.
vf1=vt1
vr2=vt2
vr1=vf2
end
termt (t.gt.10.)
end
end

program circuito_1
initial
constant r=5, vf=2.
end
dynamic
derivative
tierra (vt1)
fuente (vf2=vf1,vf)
resistencia (i=vr1,vr2,r)
tierra (vt2)
vf1=vt1
vr2=vt2
vr1=vf2
end
termt (t.gt.10.)
end
end

Simulacin y Optimizacin
4 Ingeniera Informtica

Una asignacin de otra forma


no funcionara, no es igual
vr2=vt2 que vt2=vr2

55

Tratemos ahora de
modelar este circuito
elctrico:
program circuito_2
initial
constant r1=5, r2=10, vf=2.
end
dynamic
derivative
tierra (vt1)
fuente (vf2=vf1,vf)
resistencia (i1=vr11,vr12,r1)
resistencia (i2=vr21,vr22,r2)
tierra (vt2)
vf1=vt1
vr22=vt2
vr11=vf2
vr12=vr21
i1=i2
end
termt (t.gt.10.)
end
end

program circuito_2
initial
constant r1=5, r2=10, vf=2.
end
dynamic
derivative
vt1=0.
vf2=vf1+vf
i1=(vr11-vr12)/r1
i2=(vr21-vr22)/r2
vt2=0.
vf1=vt1
vr22=vt2
vr11=vf2
vr12=vr21
i1=i2
end
termt (t.gt.10.)
end
end

NO FUNCIONA
Simulacin y Optimizacin
4 Ingeniera Informtica

program circuito_2
initial
constant r1=5, r2=10, vf=2.
end
dynamic
derivative
vt1=0.
vf2=vf1+vf
i1=(vr11-vr12)/r1
vr21=i2*r2+vr22
vt2=0.
vf1=vt1
vr22=vt2
vr11=vf2
vr12=vr21
i2=i1
end
termt (t.gt.10.)
end
end

FUNCIONARA despus
de manipularlas56

28

Lo cual requiere definir una nueva MACRO para la resistencia


elctrica:
MACRO RESISTENCIA (V1,I,V2,R)
V1=R*I+V2
MACRO 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=vt1
vr22=vt2
vf2=vf1+vf
vr11=vf2
i1=(vr11-vr12)/r1
vr21=i2*r2+vr22
vr12=vr21
i2=i1
...

Simulacin y Optimizacin
4 Ingeniera Informtica

57

Ejemplo 1: circuito hidralico


Imaginemos que ahora queremos modelar esta conduccin
y que los modelos matemticos de tubera y vlvula son:

w = cv p1 p 2

MACRO TUBO (w=cv,p1,p2)


W=cv*sqrt(p1-p2)
MACRO END

w = cvu p1 p 2

MACRO VALVULA (w=cv,p1,p2,u)


W=cv*u*sqrt(p1-p2)
MACRO END

Simulacin y Optimizacin
4 Ingeniera Informtica

58

29

program conduccion
initial
constant cv1=50., cv2=50., cvv=25.
constant pa=3., pd=1.
constant u=50.
end
dynamic
derivative
tubo (w1=cv1,pa,pav)
valvula (w2=cvv,pav,pdv,u)
tubo (w3=cv2,pdv,pd)
w1=w2
w2=w3
end
termt (t.gt.10.)
end
end

Lo cual implica tener


definidas nuevas
MACROS para la misma
entidad fsica tubo

program conduccion
initial
constant cv1=50., cv2=50., cvv=25.
constant pa=3., pd=1.
constant u=50.
end
dynamic
derivative
w1=cv1*sqrt(pa-pav)
w2=cvv*u*sqrt(pav-pdv)
w3=cv2*sqrt(pdv-pd)
w1=w2
w2=w3
end
termt (t.gt.10.)
end
end

pav=pa-(w1/cv1)**2)
w2=cvv*u*sqrt(pav-pdv)
pdv=(w3/cv3)**2)-pd
w1=w2
w3=w2

NO FUNCIONA, deberan
manipularse simbolicamente.
Por ejemplo as:

Simulacin y Optimizacin
4 Ingeniera Informtica

59

MACRO TUBO1 (w=cv,p1,p2)


W=cv*sqrt(p1-p2)
MACRO END

MACRO TUBO2 (p1=w,cv,p2)


p1=(W/cv)**2+p2

pav=pa-(w1/cv1)**2)
w2=cvv*u*sqrt(pav-pdv)
pdv=(w3/cv3)**2)-pd
w1=w2
w3=w2

MACRO END

MACRO TUBO3 (p2=w,cv,p1)


p2=p1-(W/cv)**2
MACRO END

Pero an as, adems


tenemos un lazo
algebraico, lo cual
implicara introducir
otras MACROS con
operadores implcitos
para romper dicho
lazo

pav=implc(pav-(pa-(w1/cv1)**2),pavi)
w2=cvv*u*sqrt(pav-pdv)
pdv=(w3/cv3)**2)-pd
w1=w2
w3=w2
pav=pa-(w1/cv1)**2)
w2=implc(w2-cvv*u*sqrt(pav-pdv),w2i)
pdv=(w3/cv3)**2)-pd
w1=w2
w3=w2
pav=pa-(w1/cv1)**2)
w2=cvv*u*sqrt(pav-pdv)
pdv=implc(pdv-(w3/cv3)**2-pd),pdvi)
w1=w2
w3=w2
Simulacin y Optimizacin
4 Ingeniera Informtica

MACRO TUBO4 (p1=w,cv,p2,p1i)


p1=implc(p1-(p2-(w/cv)**2),p1i)
MACRO END

MACRO VALVU4(...)
...

MACRO TUBO5(...)
...

60

30

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 Optimizacin

61

4 Ingeniera Informtica

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.
Simulacin y Optimizacin
4 Ingeniera Informtica

62

31

Simulacin y Optimizacin
4 Ingeniera Informtica

63

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

Simulacin y Optimizacin
4 Ingeniera Informtica

V=0; I0

64

32

You might also like