Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Modelica - это объектно-ориентированный , декларативный , многодоменный язык моделирования для компонентно-ориентированного моделирования сложных систем, например, систем, содержащих механические, электрические, электронные, гидравлические, тепловые, управляющие, энергетические или ориентированные на процессы подкомпоненты. Бесплатный язык Modelica [1] разработан некоммерческой ассоциацией Modelica Association. [3] Ассоциация Modelica также разрабатывает бесплатную стандартную библиотеку Modelica [4], которая содержит около 1400 общих компонентов модели и 1200 функций в различных областях, начиная с версии 4.0.0.

Характеристики [ править ]

Хотя Modelica напоминает объектно-ориентированные языки программирования , такие как C ++ или Java , он отличается двумя важными аспектами. Во-первых, Modelica - это язык моделирования, а не традиционный язык программирования . Классы Modelica не компилируются в обычном смысле, но они транслируются в объекты, которые затем выполняются механизмом моделирования. Механизм моделирования не указан в языке, хотя в нем указаны некоторые требуемые возможности.

Во-вторых, хотя классы могут содержать алгоритмические компоненты, подобные операторам или блокам в языках программирования, их основным содержанием является набор уравнений . В отличие от типичного оператора присваивания, такого как

x := 2 + y;

где левой части оператора присваивается значение, вычисленное из выражения в правой части, уравнение может иметь выражения как в правой, так и в левой частях, например,

x + y = 3 * z;

Уравнения описывают не назначение, а равенство . В терминах Modelica уравнения не имеют заранее определенной причинности . Механизм моделирования может (и обычно должен) манипулировать уравнениями символически, чтобы определить порядок их выполнения и какие компоненты в уравнении являются входными, а какие - выходными.

История [ править ]

Разработка Modelica была начата в сентябре 1996 года Хильдингом Эльмквистом. Целью было разработать объектно-ориентированный язык для моделирования технических систем, чтобы повторно использовать и обмениваться моделями динамических систем в стандартизированном формате. Modelica 1.0 основана на докторской диссертации [5] Хильдинга Элмквиста и на опыте работы с языками моделирования Аллана, [6] Димола , NMF [7] ObjectMath, [8] Omola, [9] SIDOPS +, [10] и Smile. . [11] Хильдинг Эльмквист - ключевой архитектор Modelica, но многие другие люди также внесли свой вклад (см. Приложение E в спецификации Modelica [1]). В сентябре 1997 года была выпущена версия 1.0 спецификации Modelica, которая стала основой для реализации прототипа в коммерческой программной системе Dymola. В 2000 году была создана некоммерческая ассоциация Modelica Association для управления постоянно развивающимся языком Modelica и разработки бесплатной стандартной библиотеки Modelica. В том же году началось использование Modelica в промышленных приложениях.

В этой таблице представлен график истории спецификации Modelica: [12]

Реализации [ править ]

Коммерческие интерфейсы для Modelica включают AMESim от французской компании Imagine SA (теперь часть Siemens PLM Software ), Dymola от шведской компании Dynasim AB (теперь часть Dassault Systemes ), Wolfram SystemModeler (ранее MathModelica ) от шведской компании Wolfram MathCore AB (теперь часть Wolfram Research ), SimulationX от немецкой компании ESI ITI GmbH , MapleSim от канадской компании Maplesoft , [13] JModelica.org (с открытым исходным кодом, поддержка прекращена) и Modelon Impact,[14] от шведской компании Modelon AB и CATIA Systems [15] [16] от Dassault Systemes ( CATIA - одна из основных САПР ).

Openmodelica [17] - это среда моделирования и моделирования на основе Modelica с открытым исходным кодом, предназначенная для промышленного и академического использования. Его долгосрочное развитие поддерживается некоммерческой организацией - Open Source Modelica Consortium (OSMC). Целью проекта OpenModelica является создание комплексной модели моделирования с открытым исходным кодом [18], среды компиляции и моделирования на основе бесплатного программного обеспечения, распространяемого в двоичной форме и в форме исходного кода для исследований, [19] [20] обучения, [21] и промышленных предприятий. Применение.

Бесплатная среда моделирования Scicos использует подмножество Modelica для моделирования компонентов. Поддержка большей части языка Modelica в настоящее время находится в стадии разработки. Тем не менее, все еще существует некоторая несовместимость и расхождения в интерпретации между всеми различными инструментами, касающимися языка Modelica. [22]

Примеры [ править ]

В следующем фрагменте кода показан очень простой пример системы первого порядка ( ):

 параметр модели FirstOrder  Real c = 1 «Постоянная времени» ; Real x ( start = 10 ) «Неизвестно» ; уравнение der ( x ) = - c * x «Дифференциальное уравнение первого порядка» ; конец FirstOrder ;            

Интересные моменты, которые следует отметить в этом примере, - это квалификатор «параметр», который указывает, что данная переменная инвариантна во времени, и оператор «der», который представляет (символически) производную переменной по времени. Также стоит отметить строки документации, которые могут быть связаны с объявлениями и уравнениями.

Основная область применения Modelica - моделирование физических систем. Самые основные концепции структурирования показаны на простых примерах из области электричества:

Встроенные и производные от пользователя типы [ править ]

Modelica имеет четыре встроенных типа: Real, Integer, Boolean, String. Как правило, определяемые пользователем типы являются производными, чтобы связать физическую величину, единицу измерения, номинальные значения и другие атрибуты:

тип  Voltage  =  Real ( количество = "ElectricalPotential" ,  unit = "V" ); тип  Current  =  Real ( количество = "ElectricalCurrent" ,  unit = "A" );  ...

Соединители, описывающие физическое взаимодействие [ править ]

Взаимодействие компонента с другими компонентами определяется физическими портами, называемыми разъемами , например, электрический контакт определяется как

разъем  Контакт  "Электрический контакт"  Напряжение  v  "Потенциал на контакте" ;  flow  Current  i  «Ток, текущий в компонент» ; концевой  штифт ;

При рисовании линий соединения между портами это означает, что соответствующие переменные коннектора без префикса «поток» идентичны (здесь: «v») и что соответствующие переменные коннектора с префиксом «поток» (здесь: «i») определяются как уравнение с нулевой суммой (сумма всех соответствующих «потоковых» переменных равна нулю). Мотивация состоит в том, чтобы автоматически выполнять соответствующие уравнения баланса в бесконечно малой точке соединения.

Базовые компоненты модели [ править ]

Базовый компонент модели определяется моделью и содержит уравнения, которые описывают взаимосвязь между переменными коннектора в декларативной форме (т. Е. Без указания порядка вычислений):

модель  Параметр конденсатора  Емкость C ; Voltage u «Падение напряжения между pin_p и pin_n» ; Пин pin_p , pin_n ; уравнение 0 = pin_p . я + pin_n . я ; u = pin_p . v - pin_n . v ; C * der ( u ) = pin_p . я ; конечный конденсатор ;                        

Цель состоит в том, чтобы связанный набор компонентов модели приводил к набору дифференциальных, алгебраических и дискретных уравнений, в которых количество неизвестных и количество уравнений одинаковы. В Modelica это достигается за счет так называемых сбалансированных моделей .

Полные правила определения сбалансированных моделей довольно сложны, и их можно прочитать в [1] в разделе 4.7.

Однако в большинстве случаев можно ввести простое правило, которое подсчитывает переменные и уравнения так же, как и большинство инструментов моделирования:

Модель сбалансирована, когда количество ее уравненийравно количеству его переменных.

учитывая, что переменные и уравнения необходимо подсчитывать в соответствии со следующим правилом:

-> Количество уравнений модели =  Количество уравнений, определенных в модели +  количество переменных расхода во внешних соединителях -> Количество переменных модели = Количество переменных, определенных в модели (включая переменные в физических разъемах) 

Обратите внимание, что стандартные входные соединители (такие как RealInput или IntegerInput) не участвуют в подсчете переменных, поскольку внутри них не определены новые переменные.

Причину этого правила можно понять, если подумать о конденсаторе, определенном выше. Его выводы содержат переменную потока, то есть ток, каждый. Когда мы это проверяем, он ни к чему не подключен. Это соответствует установке уравнения pin.i = 0 для каждого контакта. Вот почему мы должны добавить уравнение для каждой переменной потока.

Очевидно, что пример можно распространить на другие случаи, в которых задействованы другие виды переменных потока (например, силы, моменты и т. Д.).

Когда наш конденсатор подключен к другой (сбалансированной) модели через один из его выводов, будет сгенерировано уравнение соединения, которое заменит два уравнения i = 0 для соединяемых выводов. Поскольку уравнение связи соответствует двум скалярным уравнениям, операция соединения покинет сбалансированную большую модель (состоящую из нашего конденсатора и модели, к которой он подключен).

Модель конденсатора выше сбалансирована , так как

количество уравнений = 3 + 2 = 5 (переменные потока: pin_p.i, pin_n.i, u)количество переменных = 5 (u, pin_p.u, pin_p.i, pin_n.u, pi_n.i)

Проверка с помощью OpenModelica [17] этой модели фактически дает

Конденсатор класса имеет 5 уравнений и 5 переменных.3 из них - тривиальные уравнения.

Другой пример, содержащий как входные, так и физические разъемы, - это следующий компонент из стандартной библиотеки Modelica:

модель  SignalVoltage  «Общий источник напряжения, использующий входной сигнал в качестве источника напряжения»  Интерфейсы . PositivePin  p ;  Интерфейсы . NegativePin  n ;  Modelica . Блоки . Интерфейсы . RealInput  v ( unit = "V" )  "Напряжение между контактами p и n (= pv - nv) в качестве входного сигнала" ;  SI . Current  i  «Ток, протекающий от контакта p к контакту n» ; уравнение  v  =  p . v  -  n. v ;  0  =  стр . я  +  п . я ;  я  =  р . я ; end  SignalVoltage ;

Компонент SignalVoltage сбалансирован, поскольку

количество уравнений = 3 + 2 = 5 (переменные потока: pin_p.i, pin_n.i, u)количество переменных = 5 (i, pin_p.u, pin_p.i, pin_n.u, pi_n.i)

Опять же, проверка с помощью OpenModelica [17] дает

Класс Modelica.Electrical.Analog.Sources.SignalVoltage имеет 5 уравнений и 5 переменных.4 из них - тривиальные уравнения.

Иерархические модели [ править ]

Иерархическая модель строится из базовых моделей путем создания экземпляров базовых моделей, предоставления подходящих значений для параметров модели и подключения соединителей модели. Типичным примером является следующая электрическая схема:

модель  Circuit  Capacitor  C1 ( C = 1e-4 )  «Экземпляр конденсатора из модели выше» ;  Конденсатор  C2 ( C = 1e-5 )  «Экземпляр конденсатора из модели выше» ;  ... уравнение  подключения ( C1 . pin_p ,  C2 . pin_n );  ... конец  цепи ;

С помощью аннотации языкового элемента (...) в модель могут быть добавлены определения, не влияющие на моделирование. Аннотации используются для определения графического макета, документации и информации о версии. Базовый набор графических аннотаций стандартизирован, чтобы гарантировать, что графический внешний вид и компоновка моделей в различных инструментах Modelica одинаковы.

В свободно доступной книге « Modelica by Example » есть еще много подобных примеров, а также подробные объяснения почти всех языковых функций Modelica версии 3.3.

Приложения [ править ]

Modelica спроектирована так, чтобы быть нейтральной к предметной области, и, как следствие, используется в широком спектре приложений, таких как гидравлические системы (например, производство пара, гидравлика и т. Д.), Автомобильные приложения (особенно силовые агрегаты) [23] и механические системы (например, многотельные системы, мехатроника и т. д.).

В автомобильном секторе многие крупные автопроизводители используют Modelica. К ним относятся Ford, [24] [25] [26] General Motors, [27] Toyota, [28] BMW, [29] и Daimler. [30]

Modelica также все чаще используется для моделирования теплогидравлических и энергетических систем. [31]

Характеристики Modelica (акаузальный, объектно-ориентированный, нейтральный в предметной области) делают его хорошо подходящим для моделирования на системном уровне , области, в которой Modelica в настоящее время прочно обосновалась. [32]

См. Также [ править ]

  • AMESim
  • AMPL
  • APMonitor
  • ASCEND
  • DSM -моделирование, зависящее от предметной области
  • Димола
  • EcosimPro: программное обеспечение для непрерывного и дискретного моделирования и симуляции
  • EMSO
  • GAMS
  • JModelica.org
  • OpenModelica
  • MapleSim
  • MATLAB
  • Modelon Impact
  • MWorks
  • Инструментарий компилятора Optimica
  • МоделированиеX
  • Simulink
  • Wolfram SystemModeler
  • Scilab / Xcos
  • Кеплер (Птолемей)

Заметки [ править ]

  1. ^ a b c d "Спецификация языка Modelica, версия 3.5" (PDF) . Modelica Association. 2021-02-18.
  2. ^ "Modelon Impact" . Modelon AB.
  3. ^ "Modelica и Modelica Association" .
  4. ^ Стандартная библиотека Modelica доступна для загрузки здесь
  5. ^ "Структурированный язык моделей для больших непрерывных систем" (PDF) .
  6. ^ Jeandel А., Boudaud F .: Физические системы моделирования Языки: от Allan к Modelica , Строительство Simulation'97, IBPSA конференции, Прага, 8-10 сентября 1997 года.
  7. ^ Per Салин (ноябрь 1996). «РУКОВОДСТВО ПО NMF. Введение в формат нейтральной модели. NMF версии 3.02» (PDF) .
  8. ^ "Домашняя страница ObjectMath" .
  9. ^ SE Mattsson, M. Andersson и KJ.Aström: Объектно-ориентированное моделирование и симуляция. В: Linkens, ed., CAD for Control Systems (Марсель Деккер, 1993), стр. 31-69.
  10. ^ "CiteSeerX - Моделирование мехатронных систем с использованием языка Sidops +". CiteSeerX 10.1.1.56.4266 .  Cite journal requires |journal= (help)
  11. ^ Эрнст Т., Jähnichen С., Клозе М .: Объектно-ориентированное моделирование физических систем, Modelica, и улыбка / M Моделирование окружающей среды . 15-й Всемирный конгресс IMACS по научным вычислениям, моделированию и прикладной математике, Берлин, 24–29 августа 1997 г.
  12. ^ «Документы» . Modelica Association . Проверено 11 октября 2009 .
  13. ^ «Поддерживает стандарт Modelica» . Maplesoft . Проверено 11 октября 2009 .
  14. ^ "Modelon Impact" . Modelon . Проверено 1 апреля 2021 .
  15. ^ «Модели в CATIA (модуль: CATIA Systems Dynamic Behavior)» . Dassault Systemes .
  16. ^ Объявление о приобретении DS»из Dynasim [ постоянная битая ссылка ]
  17. ^ a b c Администратор. «Добро пожаловать в Open Modelica - OpenModelica» .
  18. ^ Адриан Поп, Дэвид Ахвледиани, Питер Фрицсон Интегрированный UML и моделирование систем Modelica с ModelicaML в Eclipse , В материалах 11-й Международной конференции IASTED по разработке программного обеспечения и приложений (SEA 2007), Кембридж, Массачусетс, США
  19. ^ Хокан Лундвалл и Питер Фрицсон Автоматическое распараллеливание объектно-ориентированных моделей , выполняемых встроенными решателями, In Proceedings of EuroPvm / Parsim, Springer Verlag LNCS, Volume 4757, 2007
  20. ^ EuroPVM / MPI 2007. «EuroPVM / MPI 2007 - PARSIM 2007 - Текущие тенденции в численном моделировании для параллельных инженерных сред, новые направления и работа в процессе» .
  21. ^ Андерс Фернстрем, Ингемар Аксельссон, Питер Фрицсон, Андерс Сандхольм, Адриан Поп OMNotebook - интерактивное книжное программное обеспечение WYSIWYG для обучения программированию , In Proc. семинара по развитию образования в области компьютерных наук - как это можно сделать?, 2006 г. Университет Линчёпинга, кафедра компьютеров и инф. Наука, Линчёпинг, Швеция
  22. ^ Совместимость симуляторов Jörg Frochte Modelica - сегодня и в будущем , 8-я Международная конференция Modelica, 20–22 марта 2011 г., Технический университет, Дрезден, Германия
  23. Махмуд, Хизир; Город, Грэм Э. (15.06.2016). «Обзор компьютерных инструментов для моделирования требований к энергии электромобилей и их влияния на распределительные сети». Прикладная энергия . 172 : 337–359. DOI : 10.1016 / j.apenergy.2016.03.100 .
  24. ^ Майкл Тиллер, Пол Боулз, Майк Демпси Разработка архитектуры моделирования транспортных средств в Modelica , 3-я Международная конференция Modelica
  25. ^ Эрик Суреваард, Экхард Карден, Майкл Тиллер Расширенное моделирование системы хранения электроэнергии в Modelica , 3-я Международная конференция Modelica
  26. ^ Чарльз Ньюман, Джон Баттех, Майкл Тиллер Моделирование цикла двигателя с искровым зажиганием в Modelica. Архивировано 2 октября 2003 г.на Wayback Machine , 2-я Международная конференция Modelica.
  27. ^ ЭД Тейт, Майкл Сасена, Джесси Голь, Майкл Тиллер Модель Embedded Control: метод быстрого синтеза контроллеров в среде моделирования , 6-я Международная конференция Modelica
  28. ^ С. Соедзима, Т. Мацуба Применение смешанного режима интеграции и неявной встроенной интеграции на Toyota , 2-я Международная конференция Modelica
  29. ^ Хенрик Вигермо, Йоханнес фон Грундхерр, Томас Христос Реализация онлайн-оптимизации Modelica для операционной стратегии гибридной трансмиссии , 6-я Международная конференция Modelica
  30. ^ Brückmann, Strenkert, Keller, Wiesner, Junghanns Модельная разработка трансмиссии с двойным сцеплением с использованием быстрого прототипирования и SiL , Трансмиссии Международного конгресса VDI в транспортных средствах 2009, Фридрихсхафен, Германия
  31. ^ Майкл Веттер, Christoph Haugstetter Modelica по сравнению с TRNSYS - Сравнение языка моделирования на основе уравнений и процедурного моделирования для моделирования энергоснабжения зданий , 2-я конференция SimBuild, Кембридж, Массачусетс, США, август 2006 г.
  32. Перейти ↑ Casella, Francesco (2015). Моделирование крупномасштабных моделей в Modelica: современное состояние и перспективы на будущее . Труды 11 - й Международной конференции Modelica, Версаль, Франция, 21-23 сентября 2015 года . Материалы 11-й Международной конференции Modelica, Версаль, Франция, 21-23 сентября 2015 г. 118 . Электронная пресса университета Линчёпинга. С. 459–468. DOI : 10.3384 / ecp15118459 . ЛВП : 11311/964804 . ISBN 978-91-7685-955-1. Язык Modelica хорошо зарекомендовал себя для задач моделирования на системном уровне во многих областях инженерии, таких как автомобилестроение, робототехника, мехатроника, энергетика, аэрокосмическая промышленность, в частности, когда требуется многодоменное моделирование.

Внешние ссылки [ править ]

  • Спецификация языка Modelica 3.5
  • Modelica Association , домашняя страница некоммерческой ассоциации Modelica Association (разрабатывающей Modelica)
  • Modelica by Example Бесплатная интерактивная книга в формате HTML для изучения Modelica Майкла Тиллера
  • Введение в физическое моделирование с помощью Modelica , книга Майкла Тиллера
  • Фрицсон, Питер (февраль 2004 г.). Принципы объектно-ориентированного моделирования и моделирования с помощью Modelica 2.1 (PDF) . Wiley-IEEE Press. ISBN 978-0-471-47163-9.
  • Коммерческие инструменты Modelica: Dymola , LMS Imagine.Lab AMESim , CyModelica MapleSim , Wolfram SystemModeler , Modelica Physical Modeling Toolbox для Matlab , SimulationX , Vertex , JModelica.org
  • Инструменты Modelica с открытым исходным кодом: OpenModelica (GPL или OSMC-PL),
  • Обзор Modelica