Introducción a EL: COMPONENTES Son los elementos de modelado más importantes. Permiten modelar mediante ecuaciones continuas, discretas e incluir sentencias secuenciales. Normalmente corresponden con un elemento físico: válvula, resistencia, bomba, tubería, etc. Son los elementos de modelado más importantes. Permiten modelar mediante ecuaciones continuas, discretas e incluir sentencias secuenciales. Normalmente corresponden con un elemento físico: válvula, resistencia, bomba, tubería, etc.
EL: Un lenguaje textual
Introducción al Lenguaje EL: PORTS
Introducción a EL: COMPONENTES Ejemplo de un componente base (abstracto) que será utilizado posteriormente para definir componentes eléctricos. ABSTRACT COMPONENT TwoPins PORTS IN Electric e_p "Input port” OUT Electric e_n "Output port" DECLS REAL v "voltage ddp (Volts)" TOPOLOGY PATH e_p TO e_n CONTINUOUS e_p.i = e_n.i v = e_p.v - e_n.v END COMPONENT Ejemplo de un componente base (abstracto) que será utilizado posteriormente para definir componentes eléctricos. ABSTRACT COMPONENT TwoPins PORTS IN Electric e_p "Input port” OUT Electric e_n "Output port" DECLS REAL v "voltage ddp (Volts)" TOPOLOGY PATH e_p TO e_n CONTINUOUS e_p.i = e_n.i v = e_p.v - e_n.v END COMPONENT
Introducción a EL: COMPONENTES (Herencia) Permite heredar datos, variables y comportamiento de un antecesor. COMPONENT C IS_A TwoPins DATA REAL C= 1.e-7 RANGE 0, Inf " Capacity (Farads)" CONTINUOUS v'= e_p.i / C --voltage derivative law END COMPONENT Permite heredar datos, variables y comportamiento de un antecesor. COMPONENT C IS_A TwoPins DATA REAL C= 1.e-7 RANGE 0, Inf " Capacity (Farads)" CONTINUOUS v'= e_p.i / C --voltage derivative law END COMPONENT
Introducción a EL: COMPONENTES (Topología) Un componente puede estar formado por la la conexión de varios componentes. COMPONENT circuit TOPOLOGY source s1( ampl=10 ) resistor r1 (1000) capacitor c1 ( 1e-1 ) earth e1 CONNECT s1.po TO r1.pi CONNECT r1.po TO c1.pi CONNECT c1.po TO s1.pi,e1.pi END COMPONENT Un componente puede estar formado por la la conexión de varios componentes. COMPONENT circuit TOPOLOGY source s1( ampl=10 ) resistor r1 (1000) capacitor c1 ( 1e-1 ) earth e1 CONNECT s1.po TO r1.pi CONNECT r1.po TO c1.pi CONNECT c1.po TO s1.pi,e1.pi END COMPONENT
Introducción a EL: COMPONENTES (Parte continua) Esta es la forma de especificar la parte continua de un modelo. COMPONENT pendulum DATA REAL m, L = 1 “mass and length” DECLS REAL x, y, T CONTINUOUS m * x’’ = - T * x / L m * y’’ = m * g - T * y / L x**2 + y**2 = L**2 END COMPONENT Esta es la forma de especificar la parte continua de un modelo. COMPONENT pendulum DATA REAL m, L = 1 “mass and length” DECLS REAL x, y, T CONTINUOUS m * x’’ = - T * x / L m * y’’ = m * g - T * y / L x**2 + y**2 = L**2 END COMPONENT
Introducción a EL : COMPONENTES (Parte Discreta) Esta es la forma de describir los eventos discretos COMPONENT freezer.... DISCRETE WHEN ( tr > -18 ) THEN compressorON= TRUE END WHEN WHEN ( tr < -20 ) THEN compressorON= FALSE END WHEN ASSERT( tr < -60 ) FATAL “Something wrong in tr” Esta es la forma de describir los eventos discretos COMPONENT freezer.... DISCRETE WHEN ( tr > -18 ) THEN compressorON= TRUE END WHEN WHEN ( tr < -20 ) THEN compressorON= FALSE END WHEN ASSERT( tr < -60 ) FATAL “Something wrong in tr”
Introducción a EL: COMPONENTES (INIT) Cuando un componente necesita una inicialización, ésta se realiza en un bloque INIT COMPONENT test DATA REAL x,y,z[3] INIT x= 0.0 FOR (i IN 1,3) z[i]= 0.0 END FOR END COMPONENT Cuando un componente necesita una inicialización, ésta se realiza en un bloque INIT COMPONENT test DATA REAL x,y,z[3] INIT x= 0.0 FOR (i IN 1,3) z[i]= 0.0 END FOR END COMPONENT
Introducción a EL : Ecuaciones Virtuales Permite cambiar la ecuación del padre en la herencia: COMPONENT base REAL REAL x,y CONTINUOUS x= y’ / 2 END COMPONENT COMPONENT test IS_A base CONTINUOUS x= y’ / 3 END COMPONENT Permite cambiar la ecuación del padre en la herencia: COMPONENT base REAL REAL x,y CONTINUOUS x= y’ / 2 END COMPONENT COMPONENT test IS_A base CONTINUOUS x= y’ / 3 END COMPONENT
Introducción a EL : Librerías Está compuesto por todos los elementos relacionados con una disciplina (eléctrica, hidraulica,...). Pueden incluir Componentes, Ports, funciones, variables... La instrucción LIBRARY se usa para especificar la librería con la se va a trabajar La instrucción USE se utiliza para usar componentes (u otros elementos) de otra librería. Está compuesto por todos los elementos relacionados con una disciplina (eléctrica, hidraulica,...). Pueden incluir Componentes, Ports, funciones, variables... La instrucción LIBRARY se usa para especificar la librería con la se va a trabajar La instrucción USE se utiliza para usar componentes (u otros elementos) de otra librería.
Introducción a EL : Librerías EcosimPro incluye librerias de sistema que contiene funciones comunes (sin,cos,log,etc.) LIBRARY THERMAL USE MATH REAL x= PI * R**2 EcosimPro incluye librerias de sistema que contiene funciones comunes (sin,cos,log,etc.) LIBRARY THERMAL USE MATH REAL x= PI * R**2
Introducción a EL : Tipos de datos Basicos: REAL, INTEGER, BOOLEAN, STRING REAL x, y STRING str= “hello world” BOOLEAN isConnected = FALSE Tipos enumerados: ENUM chemicals = {N2, H2O, CO2, N2, O2, H2SO4 } SET_OF(chemicals) air = {N2, O2, H2O, CO2} SET_OF(chemicals) water = {H2O} Basicos: REAL, INTEGER, BOOLEAN, STRING REAL x, y STRING str= “hello world” BOOLEAN isConnected = FALSE Tipos enumerados: ENUM chemicals = {N2, H2O, CO2, N2, O2, H2SO4 } SET_OF(chemicals) air = {N2, O2, H2O, CO2} SET_OF(chemicals) water = {H2O}
Introducción a EL : Tipos de datos Arrays: REAL v[3] REAL w[3,6,2] ENUM chemicals mix[2]= { H20, O2 } STRING colors[3]= { “red”,”white”,”blue”} Constantes: Una vez declaradas, no se pueden cambiar CONST REAL PI= Variable con rango: Si la variable se sale de rando, el programa de un warning: REAL v RANGE 0.5, 1.5 Arrays: REAL v[3] REAL w[3,6,2] ENUM chemicals mix[2]= { H20, O2 } STRING colors[3]= { “red”,”white”,”blue”} Constantes: Una vez declaradas, no se pueden cambiar CONST REAL PI= Variable con rango: Si la variable se sale de rando, el programa de un warning: REAL v RANGE 0.5, 1.5
Introducción a EL : Variables TIME y TSTOP TIME indica el tiempo actual de simulación TSTOP indica el tiempo final de simulación x= sin(TIME) WHEN( TIME >= (TSTOP / 2 ) ) TIME indica el tiempo actual de simulación TSTOP indica el tiempo final de simulación x= sin(TIME) WHEN( TIME >= (TSTOP / 2 ) )
Introducción a EL : Expresiones Aritmeticas: a * 2 + (c - u) / (x**2) SUM x= SUM(i IN 1,3; inertia[i]) es equivalente a x= inertia[1]+inertia[2]+inertia[3] Relacionales: 2 > ( x - y) Logicas: (x > 9.8 AND n != 7 OR m == 6 ) Aritmeticas: a * 2 + (c - u) / (x**2) SUM x= SUM(i IN 1,3; inertia[i]) es equivalente a x= inertia[1]+inertia[2]+inertia[3] Relacionales: 2 > ( x - y) Logicas: (x > 9.8 AND n != 7 OR m == 6 )
Introducción a EL : Parte continua Ecuaciones matemáticas: Ecuaciones diferenciales ordinarias y algebraicas: x= 3*y x - 2*z + sin(TIME) = 0 y’’’ + 3*y’ = cos(TIME) EXPAND: Varias ecuaciones en una sola instrucción EXPAND( i IN 1,2) out_entropy[i]= in_entropy[i] equivalente a: (no confundir con bucle FOR) out_entropy[1]= in_entropy[1] out_entropy[2]= in_entropy[2] (Nota: Cada ecuación es totalmente independiente) Ecuaciones matemáticas: Ecuaciones diferenciales ordinarias y algebraicas: x= 3*y x - 2*z + sin(TIME) = 0 y’’’ + 3*y’ = cos(TIME) EXPAND: Varias ecuaciones en una sola instrucción EXPAND( i IN 1,2) out_entropy[i]= in_entropy[i] equivalente a: (no confundir con bucle FOR) out_entropy[1]= in_entropy[1] out_entropy[2]= in_entropy[2] (Nota: Cada ecuación es totalmente independiente)
Introducción a EL : Parte continua ZONE: permite introducir ecuaciones condicionales X = ZONE( m > 0 ) y + z ZONE( m > 1) y + 2*z OTHERS y ZONE: permite introducir ecuaciones condicionales X = ZONE( m > 0 ) y + z ZONE( m > 1) y + 2*z OTHERS y