Modelica es un orientado a objetos , declarativa , multi-dominio lenguaje de modelado para orientada al componente de modelado de sistemas complejos, por ejemplo, sistemas que contienen mecánico, eléctrico, electrónico, hidráulico, térmica, control, energía eléctrica o subcomponentes orientados al proceso. El lenguaje gratuito Modelica [1] es desarrollado por la Asociación Modelica sin fines de lucro. [3] La Asociación Modelica también desarrolla la Librería Estándar Modelica gratuita [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.
Paradigma | Lenguaje declarativo |
---|---|
Desarrollador | Proyecto Asociación Modelica (MAP) |
Apareció por primera vez | 1997 |
Lanzamiento estable | 3.5 / 18 de febrero de 2021 [1] |
SO | Multiplataforma |
Licencia | CC-BY-SA |
Extensiones de nombre de archivo | .mes |
Sitio web | www.modelica.org |
Implementaciones importantes | |
AMESim , CATIA Systems, Dymola , JModelica.org , MapleSim , Modelon Impact , [2] Wolfram SystemModeler , OpenModelica , Scicos , SimulationX , Xcos |
Caracteristicas
Aunque Modelica se parece a los lenguajes de programación orientados a objetos , como C ++ o Java , se diferencia en dos aspectos importantes. Primero, 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 ejercitados 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 declaraciones o bloques en lenguajes de programación, su contenido principal es un conjunto de ecuaciones . En contraste con 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 el lado derecho como en el izquierdo, por ejemplo,
x + y = 3 * z;
Las ecuaciones no describen la asignación sino la 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 esfuerzo de 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 (consulte el apéndice E en la especificación de Modelica [1] ). En septiembre de 1997, se lanzó la versión 1.0 de la especificación de Modelica, que fue la base para la implementación de un prototipo dentro del sistema de software comercial de Dymola. En el año 2000, se formó la Asociación Modelica sin fines de lucro para administrar el lenguaje Modelica en continua evolución y el desarrollo de la Librería Estándar Modelica gratuita. En el mismo año, se inició el uso de Modelica en aplicaciones industriales.
Esta tabla presenta la cronología del historial de especificaciones de Modelica: [12]
Lanzamiento | Fecha de lanzamiento | Reflejos |
---|---|---|
1.0 | 1997, septiembre | Primera versión para modelar sistemas dinámicos continuos. |
1.1 | Diciembre de 1998 | Elementos del lenguaje para modelar sistemas discretos (antes, cuando) |
1.2 | Junio de 1999 | Interfaz para C y Fortran, interior / exterior para variables globales, semántica refinada del manejo de eventos |
1.3 | 1999, diciembre | Semántica mejorada para conexiones internas / externas, elementos protegidos, expresiones de matriz. |
1.4 | 2000, diciembre | Se eliminó la regla de declarar antes de usar, el concepto de paquete refinado, la cláusula when refinada |
2.0 | 2002, julio | Inicialización de modelos, estandarización de la apariencia gráfica, funciones con argumentos posicionales y nombrados mixtos, constructor de registros, enumeraciones |
2.1 | 2004, marzo | Conector sobredeterminado para modelo 3-dim. sistemas mecánicos, redeclaración mejorada de submodelos, matrices e índices de matrices de enumeraciones |
2.2 | 2005, febrero | Conector expandible para modelar buses de señal, declaraciones de componentes condicionales, arreglos con cambios de tamaño dinámicos en funciones |
3,0 | 2007, septiembre | Versión de limpieza: especificación recién escrita, sistema de tipos y apariencia gráfica refinados, fallas de lenguaje corregidas, concepto de modelo equilibrado para detectar errores de modelo de una manera mucho mejor |
3.1 | 2009, mayo | Conector de flujo para manejar el flujo bidireccional de fluido, sobrecarga del operador, mapeo de piezas del modelo a entornos de ejecución (para uso en sistemas integrados ) |
3.2 | 2010, marzo | Inicialización mejorada con método de homotopía, funciones como entradas formales a funciones, soporte Unicode , control de acceso para proteger IP , soporte mejorado de bibliotecas de objetos |
3.3 | 2012, mayo | Se agregaron elementos de lenguaje para describir controladores síncronos periódicos y no periódicos basados en ecuaciones sincronizadas, así como máquinas de estado síncronas. |
3.4 | 2017, abril | Conversión automática de modelos. Muchas mejoras menores |
3,5 | 2021, febrero | Anotaciones para gráficos predefinidos. Cambio de formato de especificación, con muchos cambios editoriales. Aclaraciones a elementos del lenguaje síncrono y máquinas de estado. Muchas aclaraciones menores sobre funciones, conversiones de modelos y varias otras partes de la especificación. |
Implementaciones
Los front- end comerciales para Modelica incluyen AMESim de la compañía francesa Imagine SA (ahora parte de Siemens PLM 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 empresa alemana ESI ITI GmbH , MapleSim de la empresa canadiense Maplesoft , [13] JModelica.org (código abierto, descontinuado) y Modelon Impact, [14] de la empresa 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 de código abierto basado en Modelica diseñado para uso industrial y académico. Su desarrollo a largo plazo está respaldado por una organización sin fines de lucro: el Open Source Modelica Consortium (OSMC). El objetivo del esfuerzo de OpenModelica es crear un modelado completo de código abierto Modelica, [18] entorno de compilación y simulación basado en software libre distribuido en forma de código fuente y binario para investigación, [19] [20] docencia, [21] e industrial uso.
El entorno de simulación gratuito Scicos utiliza un subconjunto de Modelica para el modelado de componentes. Actualmente se está desarrollando el soporte para una mayor parte del lenguaje Modelica. Sin embargo, todavía existe alguna incompatibilidad e interpretación divergente entre todas las diferentes herramientas relacionadas con el lenguaje Modelica. [22]
Ejemplos de
El siguiente fragmento de código muestra un ejemplo muy simple de un sistema de primer orden ():
modelo parámetro FirstOrder Real c = 1 "Constante de tiempo" ; Real x ( inicio = 10 ) "Un desconocido" ; ecuación der ( x ) = - c * x "Una ecuación diferencial de primer orden" ; end FirstOrder ;
Cosas interesantes a tener en cuenta sobre este ejemplo son el calificador 'parámetro', 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 señalar las cadenas de documentación que se pueden asociar con declaraciones y ecuaciones.
El área de aplicación principal de Modelica es el modelado de sistemas físicos. Los conceptos de estructuración más básicos se muestran a mano de sencillos ejemplos del dominio eléctrico:
Tipos incorporados y derivados del usuario
Modelica tiene los cuatro tipos incorporados Real, Integer, Boolean, String. Normalmente, los tipos definidos por el usuario se derivan para asociar la cantidad física, la unidad, los valores nominales y otros atributos:
tipo Voltaje = Real ( cantidad = "Potencial eléctrico" , unidad = "V" ); tipo Corriente = Real ( cantidad = " Corriente elé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" ; Pin final ;
Al dibujar líneas de conexión entre puertos, el significado es que las variables de conector correspondientes sin el prefijo "flujo" son idénticas (aquí: "v") y que las variables de conector correspondientes con el prefijo "flujo" (aquí: "i") están definidas por una ecuación de suma cero (la suma de todas las variables de "flujo" 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 de condensador Capacitancia C ; Tensión u "Caída de tensión entre pin_p y pin_n" ; Pin pin_p , pin_n ; ecuación 0 = pin_p . i + pin_n . yo ; u = pin_p . v - pin_n . v ; C * der ( u ) = pin_p . yo ; condensador final ;
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 es idéntico. En Modelica, esto se logra requiriendo los llamados modelos balanceados .
Las reglas completas para definir modelos equilibrados son bastante complejas y se pueden leer en [1] en la sección 4.7.
Sin embargo, en 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 caudal en los conectores exteriores -> Número de variables del modelo = Número de variables definidas en el modelo (incluidas 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 agregar una ecuación para cada variable de flujo.
Evidentemente, el ejemplo puede extenderse a otros casos en los que intervienen otros tipos de variables de flujo (por ejemplo, fuerzas, momentos de torsión, etc.).
Cuando nuestro condensador esté conectado 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. Dado que la ecuación de conexión corresponde a dos ecuaciones escalares, la operación de conexión dejará el modelo balanceado más grande (constituido por nuestro Condensador 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
Class Capacitor tiene 5 ecuaciones y 5 variables.3 de estos 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:
Modelo SignalVoltage "Fuente de tensión genérica que utiliza la señal de entrada como fuente de tensión" Interfaces . PositivePin p ; Interfaces . NegativePin n ; Modelica . Bloques . Interfaces . RealInput v ( unidad = "V" ) "Tensión entre el pin p y n (= pv - nv) como señal de entrada" ; SI . Corriente i "Corriente que fluye del pin p al pin n" ; ecuación v = p . v - n . v ; 0 = pág . yo + n . yo ; i = p . yo ; end SignalVoltage ;
El componente SignalVoltage está equilibrado desde
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, verificando con OpenModelica [17] da
La clase Modelica.Electrical.Analog.Sources.SignalVoltage tiene 5 ecuaciones y 5 variables.4 de estos 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 modelo. Un ejemplo típico es el siguiente circuito eléctrico:
modelo Circuit Capacitor C1 ( C = 1e-4 ) "Una instancia de capacitor del modelo anterior" ; Condensador C2 ( C = 1e-5 ) "Una instancia de condensador del modelo anterior" ; ... ecuación conectar ( C1 . pin_p , C2 . pin_n ); ... final del circuito ;
A través de la anotación de elementos de lenguaje (...), se pueden agregar definiciones a un modelo que no influyen 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. Un conjunto básico de anotaciones gráficas está estandarizado para garantizar que la apariencia gráfica y el diseño de los modelos en diferentes herramientas de Modelica sea el mismo.
El libro disponible gratuitamente " Modelica por ejemplo " contiene muchos más ejemplos como estos junto con explicaciones detalladas de casi todas las características del lenguaje en la versión 3.3 de Modelica.
Aplicaciones
Modelica está diseñado para ser neutral en el 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) [23] 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 de la automoción utilizan Modelica. Estos incluyen Ford, [24] [25] [26] General Motors, [27] Toyota, [28] BMW, [29] y Daimler. [30]
Modelica también se utiliza cada vez más para la simulación de sistemas de termo-fluidos y energía. [31]
Las características de Modelica (acausal, orientado a objetos, dominio neutral) lo hacen muy adecuado para la simulación a nivel de sistema , un dominio en el que Modelica está ahora bien establecido. [32]
Ver también
- AMESim
- AMPL
- APMonitor
- ASCENDER
- Modelado específico de dominio DSM
- Dymola
- EcosimPro: software de simulación y modelado continuo y discreto
- EMSO
- JUEGOS
- JModelica.org
- OpenModelica
- MapleSim
- MATLAB
- Modelon Impact
- MWorks
- Kit de herramientas del compilador de Optimica
- SimulaciónX
- Simulink
- Wolfram SystemModeler
- Scilab / Xcos
- Kepler (Ptolomeo)
Notas
- ^ a b c d "Especificación del lenguaje Modelica, versión 3.5" (PDF) . Asociación Modelica. 2021-02-18.
- ^ "Modelon Impact" . Modelon AB.
- ^ "Modelica y la Asociación Modelica" .
- ^ La biblioteca estándar de Modelica está disponible para descargar aquí
- ^ "Un lenguaje modelo estructurado para grandes sistemas continuos" (PDF) .
- ^ Jeandel A., Boudaud F . : Lenguajes de modelado de sistemas físicos: de ALLAN a Modelica , Building Simulation'97, Conferencia IBPSA, Praga, 8 al 10 de septiembre de 1997.
- ^ Per Sahlin (noviembre de 1996). "MANUAL NMF. Introducción al formato del modelo neutral. NMF versión 3.02" (PDF) .
- ^ "Página de inicio de ObjectMath" .
- ^ SE Mattsson, M. Andersson y KJ.Aström: simulación y modelado orientado a objetos. En: Linkens, ed., CAD for Control Systems (Marcel Dekker, 1993) págs. 31-69.
- ^ "CiteSeerX - Modelado de sistemas mecatrónicos utilizando el lenguaje Sidops +". CiteSeerX 10.1.1.56.4266 . Cite journal requiere
|journal=
( ayuda ) - ^ Ernst T., Jähnichen S., Klose M .: Object-Oriented física Modelado de Sistemas, Modelica, y la sonrisa / entorno de simulación M . 15º Congreso Mundial de IMACS sobre Computación Científica, Modelado y Matemática Aplicada, Berlín, 24-29 de agosto de 1997.
- ^ "Documentos" . Asociación Modelica . Consultado el 11 de octubre de 2009 .
- ^ "Soporta el estándar Modelica" . Maplesoft . Consultado el 11 de octubre de 2009 .
- ^ "Modelon Impact" . Modelon . Consultado el 1 de abril de 2021 .
- ^ "Modelica en CATIA (módulo: Comportamiento dinámico de los sistemas CATIA)" . Dassault Systemes .
- ^ Anuncio de la adquisición de Dynasim por DS [ enlace muerto permanente ]
- ^ a b c Administrador. "Bienvenido a Open Modelica - OpenModelica" .
- ^ Adrian Pop, David Akhvlediani, Peter Fritzson Integrated UML and Modelica System Modeling with ModelicaML in Eclipse , In Proceedings of the 11th IASTED International Conference on Software Engineering and Applications (SEA 2007), Cambridge, MA, EE. UU.
- ^ Håkan Lundvall y Peter Fritzson Paralelización automática de modelos orientados a objetos ejecutados con solucionadores en línea , en procedimientos de EuroPvm / Parsim, Springer Verlag LNCS, volumen 4757, 2007
- ^ EuroPVM / MPI 2007. "EuroPVM / MPI 2007 - PARSIM 2007 - Tendencias actuales en simulación numérica para entornos de ingeniería en paralelo Nuevas direcciones y trabajos en curso" .
- ^ Anders Fernström, Ingemar Axelsson, Peter Fritzson, Anders Sandholm, Adrian Pop OMNotebook - Software interactivo de libros WYSIWYG para la enseñanza de la programación , en proceso. del Taller sobre el desarrollo de la educación en ciencias de la computación: ¿cómo se puede hacer ?, 2006. Linköping University, Dept. Computer & Inf. Ciencia, Linköping, Suecia
- ^ Compatibilidad del simulador de Jörg Frochte Modelica: hoy y en el futuro , la octava conferencia internacional de Modelica, 20 al 22 de marzo de 2011, Universidad Técnica, Dresde, Alemania
- ^ Mahmud, Khizir; Pueblo, Graham E. (15 de junio de 2016). "Una revisión de las herramientas informáticas para la modelización de las necesidades energéticas de los vehículos eléctricos y su impacto en las redes de distribución de energía". Energía aplicada . 172 : 337–359. doi : 10.1016 / j.apenergy.2016.03.100 .
- ^ Michael Tiller, Paul Bowles, Mike Dempsey Desarrollo de una arquitectura de modelado de vehículos en Modelica , Tercera Conferencia Internacional de Modelica
- ^ Erik Surewaard, Eckhard Karden, Michael Tiller Modelado del sistema de almacenamiento eléctrico avanzado en Modelica , 3ra Conferencia Internacional de Modelica
- ^ Charles Newman, John Batteh, Michael Tiller Simulación de ciclo de motor encendido por chispa en Modelica Archivado 2003-10-02 en Wayback Machine , Segunda Conferencia Internacional de Modelica
- ^ ED Tate, Michael Sasena, Jesse Gohl, Michael Tiller Model Embedded Control: Un método para sintetizar rápidamente controladores en un entorno de modelado , 6ta Conferencia Internacional de Modelica
- ^ S. Soejima, T. Matsuba Aplicación de la integración de modo mixto e integración implícita en línea en Toyota , 2da Conferencia Internacional de Modelica
- ^ Henrik Wigermo, Johannes von Grundherr, Implementación de Thomas Christ de una optimización en línea de Modelica para una estrategia operativa de un tren motriz híbrido , 6ta Conferencia Internacional de Modelica
- ^ Brückmann, Strenkert, Keller, Wiesner, Junghanns Model-based Development of a Dual-Clutch Transmission usando Rapid Prototyping y SiL , International VDI Congress Transmissions in Vehicles 2009, Friedrichshafen, Alemania
- ^ Michael Wetter, Christoph Haugstetter Modelica versus TRNSYS - Una comparación entre un lenguaje de modelado basado en ecuaciones y un procedimiento para la simulación de energía de construcción , Segunda Conferencia SimBuild, Cambridge, MA, EE. UU., Agosto de 2006.
- ^ Casella, Francesco (2015). Simulación de modelos a gran escala en Modelica: estado del arte y perspectivas de futuro . Actas de la XI Conferencia Internacional de Modelica, Versalles, Francia, 21 al 23 de septiembre de 2015 . Actas de la XI Conferencia Internacional de Modelica, Versalles, Francia, 21-23 de septiembre de 2015. 118 . Prensa electrónica de la Universidad de Linköping. págs. 459–468. doi : 10.3384 / ecp15118459 . hdl : 11311/964804 . ISBN 978-91-7685-955-1.
El lenguaje Modelica está bien establecido para tareas de modelado a nivel de sistema en muchos dominios de la ingeniería, como automotriz, robótica, mecatrónica, energía, aeroespacial, en particular cuando se requiere modelado multidominio.
enlaces externos
- Especificación de lenguaje Modelica 3.5
- Asociación Modelica , la página de inicio de la Asociación Modelica sin fines de lucro (en desarrollo Modelica)
- Modelica por ejemplo Un libro HTML interactivo gratuito para aprender Modelica, por Michael Tiller
- Introducción al modelado físico con Modelica , libro de Michael Tiller
- Fritzson, Peter (febrero de 2004). Principios del modelado y simulación orientados a objetos con Modelica 2.1 (PDF) . Prensa de Wiley-IEEE. ISBN 978-0-471-47163-9.
- Herramientas comerciales de Modelica: Dymola , LMS Imagine.Lab AMESim , CyModelica MapleSim , Wolfram SystemModeler , Modelica Physical Modeling Toolbox para Matlab , SimulationX , Vertex , JModelica.org
- Herramientas de Modelica de código abierto: OpenModelica (GPL u OSMC-PL),
- Descripción general de Modelica