lenguaje de simulacion

Upload: fabiola-ramirez

Post on 08-Jan-2016

225 views

Category:

Documents


0 download

DESCRIPTION

Pdf con parte de lenguaje de simulacion

TRANSCRIPT

  • 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