Download Parte 2
Document related concepts
Transcript
2 Introducción al lenguaje EL El elemento fundamental del lenguaje EL es el Componente. Un componente reúne toda la información sobre el comportamiento dinámico tanto continuo como discreto del sistema a modelar. Un componente puede ser tan simple como una ecuación diferencial o puede representar un modelo tan complejo como una planta desaladora. EL permite la reutilización de componentes para crear nuevos componentes, siguiendo el paradigma del modelado Orientado a Objeto: Agregación: Se pueden crear componentes mediante la interconexión de otros componentes previamente creados. Para ello un componente tendrá una interface pública, que será la única información que comparta con otros componentes. La interface pública en EL se define por los PORTS, que son un conjunto de variables que pueden compartirse con otros componentes. El resto de elementos del componente: variables locales, ecuaciones, etc. permanecen ocultas para los demás componentes (encapsulamiento). La conexión de componentes se realiza únicamente a través de los PORTS. Herencia: En cualquier proceso de modelado nos vamos a encontrar con componentes que comparten parte de la información: PORTS, ecuaciones, etc. El mecanismo de herencia incorporado en EL permite no tener que volver a modelar la parte de información que comparten. Por ejemplo, a partir de un controlador PI podríamos definir un PID sin más que crear un componente basado en un PI al que se le añade la acción derivativa. En este capítulo se hace una introducción a los aspectos básicos del lenguaje EL, definición de interfase con otros componentes, herencia, expresiones, etc. Todo ello se irá describiendo con ejemplos y ejercicios. Interfase de conexión: PORTS Los PORTS permiten el intercambio de variables entre componentes. Son la interfase pública de los componentes. Por ejemplo, en un modelo de un circuito eléctrico, se puede definir un PORT que incluya las variables tensión e intensidad. Un componente eléctrico, p.e. una resistencia, un condensador o una fuente de tensión, tendrían dos ports de este tipo, que se corresponderían con los dos bornes del componente eléctrico. De esta forma, si conectamos dos de estos componentes podemos conseguir que las 2-2 tensiones e intensidades de los extremos conectados queden relacionadas de forma adecuada. Al conectar dos componentes por sus PORTS, EcosimPro generará automáticamente ecuaciones que se incorporarán al modelo (aunque éstas queden ocultas al usuario). Así, al conectar dos componentes eléctricos, se generará una ecuación que indicará que las tensiones de los dos ports son iguales y otra en las que indica que la suma de las dos intensidades es cero. La definición de un PORT se suele introducir en la librería para que pueda ser utilizado por los componentes incluidos en ella. La sintáxis de le definición del PORT eléctrico visto anteriormente sería: PORT Elec “port electrico” SUM REAL i “Intensidad (A.)” EQUAL REAL v “ Tensión (V.) “ END PORT El PORT incluye dos variables reales, tensión e intensidad. Las palabras claves EQUAL y SUM indicarán las ecuaciones de conexión que se crearán automáticamente al conectar los puertos de dos o más componentes y que se encargarán de relacionar las variables (v, i en este caso) de los dos ports conectados. EQUAL: Las variables con este identificador de todos los ports conectados tendrán el mismo valor. SUM: La suma de todas las variables de este tipo de los ports conectados sumarán cero (se usará para variables de flujo) Por ejemplo, si conectamos dos ports de tipo Elec llamados P1 y P2 las ecuaciones que generará EcosimPro serán: P1.v=P2.v P1.i+P2.i=0 que se corresponden con el comportamiento físico de las variables tensión e intensidad. Nótese la denominación de las variables, similar a las estructuras en lenguaje C. Otro ejemplo sería un port de tipo hidráulico: PORT hidraulico “port hidraulico” SUM REAL caudal EQUAL REAL presión END PORT También es posible incorporar en la definición del port un bloque CONTINUOUS que permite dar valor a alguna variable en función de otras. Por ejemplo, sea el caso del PORT correspondiente a un eje mecánico en el que definimos velocidad angular, par y potencia: PORT eje_mecanico 2-3 SUM REAL T EQUAL REAL w SUM REAL P “Par” “Velocidad angular” “Potencia” CONTINUOUS P=T*w END PORT Componentes Como se indicó anteriormente, el componente es el elemento fundamental en EL. En el componente se define el comportamiento continuo y discreto de un modelo. Puede formar parte de otro componente más complejo mediante interconexión a través de los ports. Pueden tener hasta nueve bloques opcionales dependiendo de su comportamiento: ABSTRACT? COMPONENT ID (IS_A ID (,ID)* )? (‘(‘ parameter_s ‘)’)? ( PORTS port_decl_s )? ( DATA var_decl_s ) ? ( DECLS comp_decl_s )? ( TOPOLOGY topology_stm_s )? ( INIT seq_stm_s )? ( DISCRETE discrete_stm_s )? ( CONTINUOUS labelled_stm_s )? END COMPONENT IS_A: permite definir la herencia. Parámetros: Se pueden pasar parámetros al componente PORTS: Define las variables accesibles desde el exterior del componente DATA: Constantes y parámetros del componente DECLS: Variables locales que se usan principalmente en la zona de comportamiento discreto o continuo TOPOLOGY: Se usa cuando un componente se forma por conexión de otros para indicar la forma en que se conectan. INIT: Secuencia de instrucciones que se ejecutan en el momento de crear el componente DISCRETE: Comportamiento discreto CONTINUOUS: Comportamiento continuo Herencia Permite una estructura jerárquica en que toda la información componente padre la puede heredar el hijo, al que sólo habrá que añadir la información específica. Supongamos que queremos hacer una librería eléctrica. Hay muchos componentes, como resistencias, condensadores, bobinas,.. que presentan dos pines, en los que nos 2-4 interesa las tensiones e intensidades, cuya relación es distinta dependiendo del tipo de componente. Podemos definir un componente base que englobe los datos comunes a todos ellos: ABSTRACT COMPONENT DosPines PORTS IN Elec p_pos “Pin positive” OUT Elec p_neg “Pin negativo” DECLS REAL v CONTINUOUS p_pos.i=p_neg.i v=p_pos.v-p_neg.v i=p_pos.i END COMPONENT Un componente ABSTRACT es aquel que solo se usa como base para otros componentes, pero que se pueden simular. En el ejemplo, hemos definido dos pines del tipo PORT eléctrico definido anteriormente, hemos definido la variable v para la caída de tensión en el componente (cuya ecuación aparece en la parte continua) y hemos definido la relación de igualdad entre las intensidades de los pines. También hemos definido una variable i que define la intensidad que circula por el componente. Los identificadores IN y OUT en la definición de los PORTS nos van a servir para definir el sentido en las variables de flujo. Basado en este componente podemos definir una resistencia basada en el componente que acabamos de definir. COMPONENT Resistencia IS_A DosPines DATA REAL R = 10 CONTINUOUS v=R*i END COMPONENT Nótese que aunque no está definida de forma explícita, el componente Resistencia tiene dos pines p_pos y p_neg que podemos usar dentro del componente, así como las variables locales v e i ya declaradas. Del mismo modo se podía definir un condensador: COMPONENT Condensador IS_A DosPines DATA REAL C = 0.1 CONTINUOUS v’= i /C END COMPONENT Nótese la manera en que se define la derivada de v con respecto al tiempo. Es importante resaltar que tando en la ecuación de Ohms en la resistencia como en la del condensador no se define la causalidad y por tanto hubiera sido equivalente escribirlas como i=v/R o C=v’/i 2-5 Ejemplo Definición mediante herencia de un controlador: PORT SenalAnalogica EQUAL REAL valor END PORT ABSTRACT COMPONENT Controlador PORTS IN SenalAnalogica y "variable controlada" IN SenalAnalogica ref "set point" OUT SenalAnalogica u "salida controlador" DECLS REAL e “Error” REAL salida “Variable de salida calculada” CONTINUOUS e = ref.valor – y.valor u.valor = salida END COMPONENT COMPONENT COontrolador_P IS_A Controlador DATA REAL K = 1 CONTINUOUS salida=K*e END COMPONENT COMPONENT Controlador_PI IS_A Controlador DATA REAL K = 1 REAL TI= 0.1 DECLS REAL ai “acción integral” CONTINUOUS ai’= e “ai es la integral del error” salida=K*e+ai/TI END COMPONENT Ejercicio 2.1 Crear una librería denominada CYS_ELEC donde se incluyan los PORTS Electricos y SenalAnalogica. Incluir los componentes Resistencia y Condensador tal como se han visto. Añadir los compontes Inducción, FuenteTensión y Tierra Añadir los controladores vistos arriba y definir el Controlador_PID. Ejercicio 2.2 Un motor de corriente continua consta básicamente de dos bobinas, una llamada de campo (estator) y la otra llamada de armadura (rotor), de forma que ésta última puede 2-6 girar libremente. El circuito de armadura se puede considerar como una resistencia Ra en serie con una inductancia La y una tensión contraelectromotriz Ve, como se muestra en la figura. De esta manera si Vt es la tensión aplicada al circuito de armadura: Vt Ve Ra I a La dI a dt Para el circuito de campo tenemos la siguiente ecuación: Vf Rf I f Lf dI f dt El par que genera el motor deberá vencer los pares de inercia y fricción del motor y la carga, de acuerdo a la expresión: Te Td J d d Bd dt Por otro lado, Ve depende de la velocidad angular, de la intensidad de campo y de la inductancia mutua entre bobina de campo y armadura, de acuerdo a la expresión: Ve Laf I f Finalmente, el par generado por el motor viene dado por la expresión: Te Laf I f I a Para modelar dicho componente seguiremos los siguientes pasos: a) Todo el código se escribirá en un fichero que se llamará motor.el. b) Definiremos un tipo de PORT que denominaremos Eje con dos variables el par (T) de tipo SUM y la velocidad angular de tipo EQUAL. c) En el mismo fichero se escribirá el componente Maquina_CC que incluirá las ecuaciones que aparecen arriba. El componente tendrá 5 ports: Dos de tipo Elec. correspondientes a los dos pines del circuito de armadura (e_a_p y e_a_n), otros dos de tipo Elec. correspondientes a los dos pines del cicuito de campo (e_f_p y e_f_n). El último será de tipo Eje, donde conectaremos la carga que definiremos posteriormente. Nótese que a parte de las ecuaciones anteriores, será necesario añadir dos más en que se igualen las intensidades en los dos pines de armadura y lo mismo con los dos pines de campo. d) Utilice los siguientes valores por defecto para los parámetros: REAL Ra=0.6 "Resistencia de la Armadura en ohms" REAL La=0.0012 "Inductancia de la Armadura en H" REAL Lf=12 "Inductancia del campo en H" 2-7 REAL REAL REAL REAL Rf=240 "Resistencia del campo en ohms" Laf=1.8 "Inductancia mutua campo armadura en H" Jd=0.03 "Inercia Total en Kg.m2" Bd=0.015 "amortiguamiento en Kg.m2/seg" e) Escribir un componente de tipo carga de acuerdo a la siguiente código: COMPONENT Carga PORTS IN Eje eje_in DATA REAL J = 1 REAL B = 0.23 CONTINUOUS J * eje_in.w' + END COMPONENT B * eje_in.w= eje_in.T
Related documents