stringtranslate.com

Modelica

Modelica es un lenguaje de modelado multidominio , declarativo y orientado a objetos para el modelado orientado a componentes de sistemas complejos, por ejemplo, sistemas que contienen subcomponentes mecánicos, eléctricos, electrónicos, hidráulicos, térmicos, de control, de energía eléctrica o orientados a procesos. El lenguaje gratuito Modelica [2] es desarrollado por la Asociación Modelica sin fines de lucro. [3] La Asociación Modelica también desarrolla la Biblioteca estándar gratuita Modelica [4] que contiene alrededor de 1400 componentes de modelos genéricos y 1200 funciones en varios dominios, a partir de la versión 4.0.0.

Características

Aunque Modelica se parece a los lenguajes de programación orientados a objetos , como C++ o Java , se diferencia en dos aspectos importantes. En primer lugar, Modelica es un lenguaje de modelado en lugar de un lenguaje de programación convencional . Las clases de Modelica no se compilan en el sentido habitual, sino que se traducen en objetos que luego son utilizados por un motor de simulación. El motor de simulación no está especificado por el lenguaje, aunque se describen ciertas capacidades requeridas.

En segundo lugar, aunque las clases pueden contener componentes algorítmicos similares a las declaraciones o bloques en los lenguajes de programación, su contenido principal es un conjunto de ecuaciones . A diferencia de una declaración de asignación típica, como

x := 2 + y;

donde al lado izquierdo de la declaración se le asigna un valor calculado a partir de la expresión del lado derecho, una ecuación puede tener expresiones tanto en su lado derecho como en su lado izquierdo, por ejemplo,

x + y = 3 * z;

Las ecuaciones no describen una asignación sino una igualdad . En términos de Modelica, las ecuaciones no tienen una causalidad predefinida . El motor de simulación puede (y normalmente debe) manipular las ecuaciones simbólicamente para determinar su orden de ejecución y qué componentes de la ecuación son entradas y cuáles son salidas.

Historia

El diseño de Modelica fue iniciado en septiembre de 1996 por Hilding Elmqvist. El objetivo era desarrollar un lenguaje orientado a objetos para el modelado de sistemas técnicos con el fin de reutilizar e intercambiar modelos de sistemas dinámicos en un formato estandarizado. Modelica 1.0 se basa en la tesis doctoral [5] de Hilding Elmqvist y en la experiencia con los lenguajes de modelado Allan, [6] Dymola , NMF [7] ObjectMath, [8] Omola, [9] SIDOPS+, [10] y Smile. [11] Hilding Elmqvist es el arquitecto clave de Modelica, pero muchas otras personas también han contribuido (véase el apéndice E en la especificación de Modelica [2] ). En septiembre de 1997, se publicó la versión 1.0 de la especificación de Modelica, que fue la base para una implementación de prototipo dentro del sistema de software comercial Dymola. En el año 2000 se formó la asociación sin fines de lucro Modelica Association para gestionar el lenguaje Modelica, que evolucionaba continuamente, y el desarrollo de la biblioteca estándar gratuita Modelica. Ese mismo año se empezó a utilizar Modelica en aplicaciones industriales.

Esta tabla presenta la cronología del historial de especificaciones de Modelica: [12]

Implementaciones

Los front-end comerciales para Modelica incluyen AMESim de la compañía francesa Imagine SA (ahora parte de Siemens Digital Industries Software ), Dymola de la compañía sueca Dynasim AB (ahora parte de Dassault Systemes ), Wolfram SystemModeler (anteriormente MathModelica ) de la compañía sueca Wolfram MathCore AB (ahora parte de Wolfram Research ), SimulationX de la compañía alemana ESI ITI GmbH , MapleSim de la compañía canadiense Maplesoft , [13] JModelica.org (código abierto, descontinuado) y Modelon Impact, [14] de la compañía sueca Modelon AB, y CATIA Systems [15] [16] de Dassault Systemes ( CATIA es uno de los principales sistemas CAD ).

Openmodelica [17] es un entorno de modelado y simulación basado en Modelica de código abierto destinado a uso industrial y académico. Su desarrollo a largo plazo cuenta con el apoyo de una organización sin fines de lucro: el Open Source Modelica Consortium (OSMC). El objetivo de la iniciativa OpenModelica es crear un entorno integral de modelado, compilación y simulación de Modelica de código abierto basado en software libre distribuido en forma binaria y de código fuente para investigación [19] [20] , enseñanza [21] y uso industrial.

El entorno de simulación libre Scicos utiliza un subconjunto de Modelica para el modelado de componentes. Actualmente se está desarrollando la compatibilidad con una parte mayor del lenguaje Modelica. No obstante, todavía existen algunas incompatibilidades e interpretaciones divergentes entre las distintas herramientas relacionadas con el lenguaje Modelica. [22]

Ejemplos

El siguiente fragmento de código muestra un ejemplo muy simple de un sistema de primer orden ( ):

modelo  FirstOrder  parámetro  Real  c = 1  "Constante de tiempo" ;  Real  x  ( inicio = 10 )  "Una desconocida" ; ecuación  der ( x )  =  - c * x  "Una ecuación diferencial de primer orden" ; fin  FirstOrder ;

El siguiente fragmento de código muestra un ejemplo para calcular la segunda derivada [23] de una función trigonométrica, utilizando OMShell, como medio para desarrollar el programa escrito a continuación.

modelo  segunda_derivada  Real  l ;  Real  z = sin ( w * tiempo );  Real  m ;  parámetro  Real  w  =  1 ; ecuación  l = der ( z );  m = der ( l ); fin  segunda_derivada ;
subtítulo
subtítulo



Algunos aspectos interesantes de este ejemplo son el calificador 'parameter', que indica que una variable dada es invariante en el tiempo, y el operador 'der', que representa (simbólicamente) la derivada temporal de una variable. También vale la pena destacar las cadenas de documentación que se pueden asociar con declaraciones y ecuaciones.

El principal campo de aplicación de Modelica es el modelado de sistemas físicos. Los conceptos de estructuración más básicos se muestran a través de ejemplos sencillos del ámbito eléctrico:

Tipos incorporados y derivados del usuario

Modelica tiene cuatro tipos integrados: Real, Integer, Boolean y String. Normalmente, se derivan tipos definidos por el usuario para asociar cantidades físicas, unidades, valores nominales y otros atributos:

tipo  Voltaje  =  Real ( cantidad = "PotencialEléctrico" ,  unidad = "V" ); tipo  Corriente  =  Real ( cantidad = "CorrienteEléctrica" ,  unidad = "A" );  ...

Conectores que describen la interacción física

La interacción de un componente con otros componentes se define mediante puertos físicos, llamados conectores , por ejemplo, un pin eléctrico se define como

conector  Pin  "Pin eléctrico"  Voltaje  v  "Potencial en el pin" ;  flujo  Corriente  i  "Corriente que fluye hacia el componente" ; final  Pin ;

Al trazar líneas de conexión entre puertos, el significado es que las variables de conexión correspondientes sin el prefijo "flow" son idénticas (aquí: "v") y que las variables de conexión correspondientes con el prefijo "flow" (aquí: "i") se definen mediante una ecuación de suma cero (la suma de todas las variables de "flow" correspondientes es cero). La motivación es cumplir automáticamente las ecuaciones de equilibrio relevantes en el punto de conexión infinitesimalmente pequeño.

Componentes básicos del modelo

Un componente de modelo básico está definido por un modelo y contiene ecuaciones que describen la relación entre las variables del conector en forma declarativa (es decir, sin especificar el orden de cálculo):

modelo  Parámetro del condensador  Capacitancia C ; Voltaje u "Caída de voltaje entre pin_p y pin_n" ; Pin pin_p , pin_n ; ecuación 0 = pin_p . i + pin_n . i ; u = pin_p . v - pin_n . v ; C * der ( u ) = pin_p . i ; fin Condensador ;                        

El objetivo es que un conjunto conectado de componentes del modelo conduzca a un conjunto de ecuaciones diferenciales, algebraicas y discretas donde el número de incógnitas y el número de ecuaciones sean idénticos. En Modelica, esto se logra al requerir los llamados modelos balanceados .

Las reglas completas para definir modelos equilibrados son bastante complejas y se pueden leer en [2] en la sección 4.7.

Sin embargo, para la mayoría de los casos, se puede emitir una regla simple que cuente las variables y ecuaciones de la misma manera que lo hacen la mayoría de las herramientas de simulación:

Un modelo está equilibrado cuando el número de sus ecuacioneses igual al número de sus variables.

dado que las variables y ecuaciones deben contarse de acuerdo con la siguiente regla:

->Número de ecuaciones del modelo = Número de ecuaciones definidas en el modelo + Número de variables de flujo en los conectores externos. ->Número de variables del modelo = Número de variables definidas en el modelo (incluyendo las variables en los conectores físicos)

Tenga en cuenta que los conectores de entrada estándar (como RealInput o IntegerInput) no contribuyen al recuento de variables ya que no se definen nuevas variables dentro de ellos.

La razón de esta regla se puede entender pensando en el condensador definido anteriormente. Sus pines contienen una variable de flujo, es decir, una corriente, cada uno. Cuando lo comprobamos, no está conectado a nada. Esto corresponde a establecer una ecuación pin.i=0 para cada pin. Por eso debemos añadir una ecuación para cada variable de flujo.

Obviamente el ejemplo puede extenderse a otros casos, en los que intervienen otros tipos de variables de flujo (por ejemplo, fuerzas, pares, etc.).

Cuando nuestro capacitor se conecta a otro modelo (balanceado) a través de uno de sus pines, se generará una ecuación de conexión que sustituirá las dos ecuaciones i=0 de los pines que se están conectando. Como la ecuación de conexión corresponde a dos ecuaciones escalares, la operación de conexión dejará el modelo mayor balanceado (constituido por nuestro capacitor y el modelo al que está conectado).

El modelo de condensador anterior está equilibrado , ya que

número de ecuaciones = 3+2=5 (variables de flujo: pin_p.i, pin_n.i, u)número de variables = 5 (u, pin_p.u, pin_p.i, pin_n.u, pi_n.i)

La verificación mediante OpenModelica [17] de este modelo da, de hecho,

La clase Capacitor tiene 5 ecuación(es) y 5 variable(s).3 de estas son ecuaciones triviales.

Otro ejemplo, que contiene conectores de entrada y conectores físicos, es el siguiente componente de la biblioteca estándar de Modelica:

model  SignalVoltage  "Fuente de voltaje genérica que utiliza la señal de entrada como voltaje de fuente"  Interfaces . PositivePin  p ;  Interfaces . NegativePin  n ;  Modelica . Blocks . Interfaces . RealInput  v ( unit = "V" )  "Voltaje entre el pin p y n (= pv - nv) como señal de entrada" ;  SI . Current  i  "Corriente que fluye del pin p al pin n" ; ecuación  v  =  p . v  -  n . v ;  0  =  p . i  +  n . i ;  i  =  p . i ; fin  SignalVoltage ;

El componente SignalVoltage está equilibrado ya que

número de ecuaciones = 3+2=5 (variables de flujo: pin_p.i, pin_n.i, u)número de variables = 5 (i, pin_p.u, pin_p.i, pin_n.u, pi_n.i)

Nuevamente, al verificar con OpenModelica [17] se obtiene

La clase Modelica.Electrical.Analog.Sources.SignalVoltage tiene 5 ecuación(es) y 5 variable(s).4 de estas son ecuaciones triviales.

Modelos jerárquicos

Un modelo jerárquico se construye a partir de modelos básicos, instanciando modelos básicos, proporcionando valores adecuados para los parámetros del modelo y conectando conectores de modelos. Un ejemplo típico es el siguiente circuito eléctrico:

modelo  Circuito  Condensador  C1 ( C = 1e-4 )  "Una instancia de Condensador del modelo anterior" ;  Condensador  C2 ( C = 1e-5 )  "Una instancia de Condensador del modelo anterior" ;  ... ecuación  conectar ( C1 . pin_p ,  C2 . pin_n );  ... fin  Circuito ;

Mediante el elemento de lenguaje annotation(...), se pueden agregar definiciones a un modelo que no tengan influencia en una simulación. Las anotaciones se utilizan para definir el diseño gráfico, la documentación y la información de la versión. Se estandariza un conjunto básico de anotaciones gráficas para garantizar que la apariencia gráfica y el diseño de los modelos en diferentes herramientas de Modelica sean iguales.

Aplicaciones

Modelica está diseñado para ser neutral en cuanto al dominio y, como resultado, se utiliza en una amplia variedad de aplicaciones, como sistemas de fluidos (por ejemplo, generación de energía a vapor, hidráulica, etc.), aplicaciones automotrices (especialmente tren motriz) [24] y sistemas mecánicos (por ejemplo, sistemas multicuerpo, mecatrónica, etc.).

En el sector de la automoción, muchos de los principales fabricantes de equipos originales (OEM) de automóviles utilizan Modelica, entre ellos Ford [25] [26] [27] General Motors [28] Toyota [29] BMW [30] y Daimler [31] .

Modelica también se utiliza cada vez más para la simulación de sistemas termofluídicos y energéticos. [32]

Las características de Modelica (acausal, orientado a objetos, neutral en cuanto al dominio) lo hacen muy adecuado para la simulación a nivel de sistema , un dominio en el que Modelica está ahora bien establecido. [33]

Véase también

Notas

  1. ^ "Especificación del lenguaje Modelica, versión 3.6" (PDF) . Asociación Modelica. 2023-03-09.
  2. ^ abc "Especificación del lenguaje Modelica, versión 3.5" (PDF) . Asociación Modelica. 18 de febrero de 2021.
  3. ^ "Modelica y la Asociación Modelica".
  4. ^ La biblioteca estándar de Modelica está disponible para descargar aquí
  5. ^ "Un lenguaje de modelo estructurado para grandes sistemas continuos" (PDF) .
  6. ^ Jeandel A., Boudaud F.: Lenguajes de modelado de sistemas físicos: de ALLAN a Modelica, Building Simulation'97, Conferencia IBPSA, Praga, 8-10 de septiembre de 1997.
  7. ^ Per Sahlin (noviembre de 1996). "MANUAL DEL NMF. Introducción al formato del modelo neutral. Versión 3.02 del NMF" (PDF) .
  8. ^ "Página de inicio de ObjectMath".
  9. ^ SE Mattsson, M. Andersson y KJ. Aström: Modelado y simulación orientados a objetos. En: Linkens, ed., CAD for Control Systems (Marcel Dekker, 1993), págs. 31-69.
  10. ^ "CiteSeerX — Modelado de sistemas mecatrónicos utilizando el lenguaje Sidops+". 1997: 301–306. CiteSeerX 10.1.1.56.4266 .  {{cite journal}}: Requiere citar revista |journal=( ayuda )
  11. ^ Ernst T., Jähnichen S., Klose M.: Modelado de sistemas físicos orientados a objetos, Modelica y el entorno de simulación Smile/M. 15º Congreso mundial IMACS sobre computación científica, modelado y matemáticas aplicadas, Berlín, 24 al 29 de agosto de 1997.
  12. ^ "Documentos". Asociación Modelica . Consultado el 11 de octubre de 2009 .
  13. ^ "Compatible con el estándar Modelica". Maplesoft . Consultado el 11 de octubre de 2009 .
  14. ^ "Modelon Impact". Modelon . Consultado el 1 de abril de 2021 .
  15. ^ "Modelica en CATIA (módulo: CATIA Systems Dynamic Behavior)". Dassault Systemes . Archivado desde el original el 2010-05-01 . Consultado el 2009-12-30 .
  16. ^ Anuncio de la adquisición de Dynasim por parte de DS [ enlace muerto permanente ]
  17. ^ Administrador de abc. "Bienvenido a Open Modelica - OpenModelica".
  18. ^ Adrian Pop, David Akhvlediani, Peter Fritzson Modelado de sistemas integrados UML y Modelica con ModelicaML en Eclipse, en Actas de la 11.ª Conferencia internacional IASTED sobre ingeniería de software y aplicaciones (SEA 2007), Cambridge, MA, EE. UU.
  19. ^ Håkan Lundvall y Peter Fritzson Paralelización automática de modelos orientados a objetos ejecutados con solucionadores en línea, en Actas de EuroPvm/Parsim, Springer Verlag LNCS, Volumen 4757, 2007
  20. ^ EuroPVM/MPI 2007. "EuroPVM/MPI 2007 - PARSIM 2007 - Tendencias actuales en simulación numérica para entornos de ingeniería paralela. Nuevas direcciones y trabajos en progreso".{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  21. ^ Anders Fernström, Ingemar Axelsson, Peter Fritzson, Anders Sandholm, Adrian Pop OMNotebook - Interactive WYSIWYG Book Software for Teaching Programming, en actas del taller sobre el desarrollo de la educación en ciencias de la computación: ¿cómo se puede hacer?, 2006. Universidad de Linköping, Departamento de Informática y Ciencias de la Información, Linköping, Suecia
  22. ^ Jörg Frochte Compatibilidad del simulador Modelica: hoy y en el futuro, 8.ª Conferencia internacional Modelica, 20 al 22 de marzo de 2011, Universidad Técnica de Dresde, Alemania
  23. ^ Introducción al modelado físico con Modelica, Michael Tiller
  24. ^ Mahmud, Khizir; Town, Graham E. (15 de junio de 2016). "Una revisión de las herramientas informáticas para modelar los requisitos energéticos de los vehículos eléctricos y su impacto en las redes de distribución de energía". Applied Energy . 172 : 337–359. doi :10.1016/j.apenergy.2016.03.100.
  25. ^ Michael Tiller, Paul Bowles, Mike Dempsey Desarrollo de una arquitectura de modelado de vehículos en Modelica, 3.ª Conferencia internacional de Modelica
  26. ^ Erik Surewaard, Eckhard Karden, Michael Tiller Modelado avanzado de sistemas de almacenamiento eléctrico en Modelica, 3.ª Conferencia internacional de Modelica
  27. ^ Charles Newman, John Batteh, Michael Tiller Simulación del ciclo de un motor de encendido por chispa en Modelica Archivado el 2 de octubre de 2003 en Wayback Machine , 2.ª Conferencia Internacional de Modelica
  28. ^ ED Tate, Michael Sasena, Jesse Gohl, Michael Tiller Control integrado de modelos: un método para sintetizar rápidamente controladores en un entorno de modelado, 6.ª Conferencia internacional de Modelica
  29. ^ S. Soejima, T. Matsuba Aplicación de la integración en modo mixto y la integración en línea implícita en Toyota, 2.ª Conferencia Internacional de Modelica
  30. ^ Henrik Wigermo, Johannes von Grundherr, Thomas Christ Implementación de una optimización en línea de Modelica para una estrategia operativa de un sistema de propulsión híbrido, 6.ª Conferencia internacional de Modelica
  31. ^ Brückmann, Strenkert, Keller, Wiesner, Junghanns Desarrollo basado en modelos de una transmisión de doble embrague mediante prototipos rápidos y SiL Archivado el 22 de marzo de 2015 en Wayback Machine , Congreso internacional VDI sobre transmisiones en vehículos 2009, Friedrichshafen, Alemania
  32. ^ Michael Wetter, Christoph Haugstetter Modelica versus TRNSYS: una comparación entre un lenguaje de modelado basado en ecuaciones y uno procedimental para la simulación de energía en edificios, 2.ª Conferencia SimBuild, Cambridge, MA, EE. UU., agosto de 2006.
  33. ^ Casella, Francesco (2015). "Simulación de modelos a gran escala en Modelica: estado del arte y perspectivas futuras". Actas de la 11.ª Conferencia Internacional de Modelica, Versalles, Francia, 21-23 de septiembre de 2015. Vol. 118. Linköping University Electronic Press. págs. 459-468. doi :10.3384/ecp15118459. hdl :11311/964804. ISBN 978-91-7685-955-1El lenguaje Modelica está bien establecido para tareas de modelado a nivel de sistema en muchos dominios de la ingeniería, como la automotriz, la robótica, la mecatrónica, la energía y la industria aeroespacial, en particular cuando se requiere modelado de múltiples dominios . {{cite book}}: Falta o está vacío |title=( ayuda )

Enlaces externos