WikiDer > Modelica
Парадигма | Декларативный язык |
---|---|
Разработчик | Проект ассоциации Modelica (MAP) |
Впервые появился | 1997 |
Стабильный выпуск | 3.4 / 10 апреля 2017 г.[1] |
Операционные системы | Кроссплатформенность |
Лицензия | CC_BY_SA |
Расширения имени файла | .mo |
Интернет сайт | www.modelica.org |
Основной реализации | |
AMESim, CATIA Systems, Димола, JModelica.org, MapleSim, Wolfram SystemModeler, OpenModelica, Scicos, МоделированиеX, Вершина, Xcos |
Modelica является объектно-ориентированный, декларативный, мультидоменная язык моделирования за компонентно-ориентированный моделирование сложных систем, например, систем, содержащих механические, электрические, электронные, гидравлические, тепловые, управляющие, электрические или технологические подкомпоненты. Бесплатный язык Modelica[1]разработан некоммерческой ассоциацией Modelica Association.[2] Ассоциация Modelica также разрабатывает бесплатную стандартную библиотеку Modelica.[3] который содержит около 1400 компонентов общей модели и 1200 функций в различных областях, начиная с версии 4.0.0.
Характеристики
Хотя Modelica напоминает объектно-ориентированный языки программирования, Такие как C ++ или же Ява, он отличается в двух важных отношениях. Во-первых, Modelica - это язык моделирования а не обычный программирование язык. Классы Modelica не компилируются в обычном смысле, но транслируются в объекты, которые затем выполняются механизмом моделирования. Механизм моделирования не указан в языке, хотя в общих чертах указаны некоторые необходимые возможности.
Во-вторых, хотя классы могут содержать алгоритмический компоненты, подобные операторам или блокам в языках программирования, их основное содержание - это набор уравнения. В отличие от типичного оператора присваивания, такого как
Икс := 2 + у;
где левой части оператора присваивается значение, вычисленное из выражения в правой части, уравнение может иметь выражения как в правой, так и в левой частях, например,
Икс + у = 3 * z;
Уравнения не описывают назначение, но равенство. В терминах Modelica уравнения не имеют заранее определенных причинность. Механизм моделирования может (и обычно должен) манипулировать уравнениями символически, чтобы определить порядок их выполнения и какие компоненты в уравнении являются входными, а какие - выходными.
История
Разработка Modelica была начата в сентябре 1996 года Хильдингом Элмквистом с целью разработки объектно-ориентированного языка для моделирования технических систем с целью повторного использования и обмена моделями динамических систем в стандартизованном формате. Modelica 1.0 основана накандидат наук Тезис[4] Хильдинг Эльмквист и об опыте работы с языками моделирования Аллан,[5]Димола, NMF[6] ObjectMath,[7] Омола,[8] SIDOPS +,[9] и улыбка.[10] Хильдинг Эльмквист - ключевой архитектор Modelica, но многие другие люди тоже внесли свой вклад (см. Приложение E в спецификации Modelica).[1]). В сентябре 1997 года была выпущена версия 1.0 спецификации Modelica, которая стала основой для реализации прототипа в коммерческой программной системе Dymola. В 2000 году была образована некоммерческая ассоциация Modelica Association для управления постоянно развивающимся языком Modelica и разработки бесплатной стандартной библиотеки Modelica. В том же году началось использование Modelica в промышленных приложениях.
В этой таблице представлена временная шкала истории спецификации Modelica:[11]
Релиз | Дата выхода | Особенности |
---|---|---|
1.0 | 1997, сентябрь | Первая версия для моделирования непрерывных динамических систем. |
1.1 | 1998, декабрь | Элементы языка для моделирования дискретных систем (до, когда) |
1.2 | 1999, июнь | Интерфейс для C и Fortran, внутренний / внешний для глобальных переменных, улучшенная семантика обработки событий |
1.3 | 1999, декабрь | Улучшенная семантика для внутренних / внешних соединений, защищенных элементов, выражений массивов. |
1.4 | 2000, декабрь | Удалено правило объявления перед использованием, доработана концепция пакета, уточнено предложение when |
2.0 | 2002, июль | Инициализация моделей, стандартизация графического вида, функции со смешанными позиционными и именованными аргументами, конструктор записи, перечисления |
2.1 | 2004, март | Переопределенный разъем к модели 3-размер. механические системы, улучшенное переопределение подмоделей, массивов и индексов массивов перечислений |
2.2 | 2005, февраль | Расширяемый коннектор для моделирования сигнальных шин, условных объявлений компонентов, массивов с динамическим изменением размеров функций |
3.0 | 2007, сентябрь | Уточненная версия: новая спецификация, улучшенная система типов и графический внешний вид, исправленные языковые недостатки, сбалансированная концепция модели для более эффективного обнаружения ошибок модели |
3.1 | 2009, май | Коннектор потока для обработки двунаправленного потока жидкости, перегрузки оператора, сопоставления частей модели со средами выполнения (для использования в встроенные системы) |
3.2 | 2010, март | Улучшенная инициализация с помощью метода гомотопии, функции как формальные входы для функций, Unicode поддержка, контроль доступа для защиты IP, улучшена поддержка объектных библиотек |
3.3 | 2012, май | Добавлены языковые элементы для описания периодических и непериодических синхронных контроллеров на основе уравнений синхронизации, а также синхронных конечных автоматов. |
3.4 | 2017, апрель | Автоматическая конвертация моделей. Множество мелких улучшений |
Реализации
Коммерческий внешние интерфейсы для Modelica включают AMESim от французской компании Imagine SA (сейчас входит в Программное обеспечение Siemens PLM), Димола от шведской компании Dynasim AB (сейчас входит в Dassault Systemes), Wolfram SystemModeler (ранее MathModelica) от шведской компании Wolfram MathCore AB (ныне часть Wolfram Research), МоделированиеX от немецкой компании ESI ITI GmbH, MapleSim от канадской компании Maplesoft,[12]JModelica.org от шведской компании Modelon AB и CATIA Systems[13][14] из Dassault Systemes (CATIA является одним из основных CAD системы).
Openmodelica[15] это среда моделирования и симуляции на основе Modelica с открытым исходным кодом, предназначенная для промышленного и академического использования. Его долгосрочное развитие поддерживается некоммерческой организацией - Open Source Modelica Consortium (OSMC). Целью OpenModelica является создание всестороннего моделирования Modelica с открытым исходным кодом,[16] среда компиляции и моделирования на основе бесплатного программного обеспечения, распространяемого в виде двоичного кода и исходного кода для исследований,[17][18] обучение[19] и промышленное использование.
Бесплатная среда моделирования Scicos использует подмножество Modelica для моделирования компонентов. Поддержка большей части языка Modelica в настоящее время находится в стадии разработки. Тем не менее, все еще существует некоторая несовместимость и расхождения в интерпретации между всеми различными инструментами, касающимися языка Modelica.[20]
Примеры
Следующий фрагмент кода показывает очень простой пример системы первого порядка ():
модель Первый заказ параметр Настоящий c=1 "Постоянная времени"; Настоящий Икс (Начните=10) "Неизвестно";уравнение дер(Икс) = -c*Икс «Дифференциальное уравнение первого порядка»;конец Первый заказ;
Интересные моменты, которые следует отметить в этом примере, - это квалификатор «параметр», который указывает, что данная переменная инвариантна во времени, и оператор «der», который представляет (символически) производную переменной по времени. Также стоит отметить строки документации, которые могут быть связаны с объявлениями и уравнениями.
Основная область применения Modelica - моделирование физических систем. Самые основные концепции структурирования показаны на простых примерах из области электричества:
Встроенные и производные от пользователя типы
Modelica имеет четыре встроенных типа: Real, Integer, Boolean, String. Как правило, определяемые пользователем типы являются производными, чтобы связать физическую величину, единицу измерения, номинальные значения и другие атрибуты:
тип Напряжение = Настоящий(количество="Электрический потенциал", единица измерения="V");тип Текущий = Настоящий(количество="Электрический ток", единица измерения="А"); ...
Коннекторы, описывающие физическое взаимодействие
Взаимодействие компонента с другими компонентами определяется физическими портами, называемыми разъемы, например, электрический штифт определяется как
соединитель Штырь «Электрический штифт» Напряжение v "Потенциал на шпильке"; поток Текущий я «Ток, текущий в компонент»;конец Штырь;
При рисовании линий соединения между портами это означает, что соответствующие переменные коннектора без префикса «поток» идентичны (здесь: «v») и что соответствующие переменные коннектора с префиксом «поток» (здесь: «i») определяются как уравнение с нулевой суммой (сумма всех соответствующих «потоковых» переменных равна нулю). Мотивация состоит в том, чтобы автоматически выполнять соответствующие уравнения баланса в бесконечно малой точке соединения.
Компоненты базовой модели
Компонент базовой модели определяется модель и содержит уравнения, которые описывают взаимосвязь между переменными коннектора в декларативной форме (т. е. без указания порядка вычислений):
модель Конденсатор параметр Емкость C; Напряжение ты "Падение напряжения между pin_p и pin_n"; Штырь pin_p, pin_n;уравнение 0 = pin_p.я + pin_n.я; ты = pin_p.v - pin_n.v; C * дер(ты) = 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[15] этой модели дает, по сути,
Class Capacitor имеет 5 уравнений и 5 переменных. 3 из них являются тривиальными уравнениями.
Другой пример, содержащий как входные, так и физические разъемы, - это следующий компонент из стандартной библиотеки Modelica:
модель Сигнал Напряжение «Типовой источник напряжения, использующий входной сигнал в качестве напряжения источника» Интерфейсы.PositivePin п; Интерфейсы.NegativePin п; Modelica.Блоки.Интерфейсы.RealInput v(единица измерения="V") «Напряжение между контактами p и n (= p.v - n.v) в качестве входного сигнала»; SI.Текущий я "Ток течет от контакта p к контакту n";уравнение v = п.v - п.v; 0 = п.я + п.я; я = п.я;конец Сигнал Напряжение;
Компонент 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[15] дает
Класс Modelica.Electrical.Analog.Sources.SignalVoltage имеет 5 уравнений и 5 переменных. 4 из них являются тривиальными уравнениями.
Иерархические модели
Иерархическая модель строится из базовых моделей путем создания экземпляров базовых моделей, предоставления подходящих значений для параметров модели и подключения соединителей модели. Типичным примером является следующая электрическая схема:
модель Схема Конденсатор C1(C=1e-4) "Экземпляр конденсатора из модели выше"; Конденсатор C2(C=1e-5) "Экземпляр конденсатора из модели выше"; ...уравнение соединять(C1.pin_p, C2.pin_n); ...конец Схема;
Через элемент языка аннотация (...), в модель могут быть добавлены определения, не влияющие на моделирование. Аннотации используются для определения графического макета, документации и информации о версии. Базовый набор графических аннотаций стандартизирован, чтобы гарантировать, что графический вид и компоновка моделей в разных инструментах Modelica одинаковы.
Книга в свободном доступе »Modelica на примере"содержит еще много подобных примеров, а также подробные объяснения почти всех языковых функций Modelica версии 3.3.
Приложения
Modelica спроектирована так, чтобы быть нейтральной к предметной области, и, как следствие, используется в широком спектре приложений, таких как гидравлические системы (например, производство пара, гидравлика и т. Д.), Автомобильные приложения (особенно трансмиссии)[21] и механические системы (например, многочастичные системы, мехатроника и т. д.).
В автомобильном секторе многие крупные автопроизводители используют Modelica. К ним относятся Ford,[22][23][24] Дженерал Моторс,[25] Toyota,[26] BMW,[27] и Даймлер.[28]
Modelica также все чаще используется для моделирования теплогидравлических и энергетических систем.[29]
Характеристики Modelica (акаузальный, объектно-ориентированный, нейтральный в предметной области) делают его хорошо подходящим для моделирование на системном уровне, домен, в котором Modelica сейчас хорошо зарекомендовала себя.[30]
Смотрите также
- AMESim
- AMPL
- APMonitor
- ASCEND
- Доменно-ориентированное моделирование DSM
- Димола
- EcosimPro: программное обеспечение для непрерывного и дискретного моделирования и симуляции
- EMSO
- GAMS
- JModelica.org
- OpenModelica
- MapleSim
- MATLAB
- MWorks
- Набор средств компилятора Optimica
- МоделированиеX
- Simulink
- Wolfram SystemModeler
- Scilab / Xcos
- Кеплер (Птолемей)
Примечания
- ^ а б c d "Спецификация языка Modelica, версия 3.4" (PDF). Modelica Association. 2017-04-10.
- ^ "Modelica and the Modelica Association".
- ^ Стандартная библиотека Modelica доступно для скачивания здесь
- ^ «Структурированный язык моделей для больших непрерывных систем».[постоянная мертвая ссылка]
- ^ Жандел А., Будо Ф .: Языки моделирования физических систем: от ALLAN до Modelica, Building Simulation'97, Конференция IBPSA, Прага, 8–10 сентября 1997 г.
- ^ Пер Сахлин (ноябрь 1996 г.). "РУКОВОДСТВО ПО NMF. Введение в формат нейтральной модели. NMF версии 3.02" (PDF).
- ^ "Домашняя страница ObjectMath".
- ^ S.E. Маттссон, М. Андерссон и К. Дж. Астрём: объектно-ориентированное моделирование и симуляция. В: Linkens, ed., CAD for Control Systems (Марсель Деккер, 1993), стр. 31-69.
- ^ «CiteSeerX - Моделирование мехатронных систем с использованием языка Sidops +». CiteSeerX 10.1.1.56.4266. Цитировать журнал требует
| журнал =
(помощь) - ^ Эрнст Т., Янихен С., Клозе М .: Объектно-ориентированное моделирование физических систем, Modelica и среда моделирования Smile / M. 15-й Всемирный конгресс IMACS по научным вычислениям, моделированию и прикладной математике, Берлин, 24–29 августа 1997 г.
- ^ «Документы». Modelica Association. Получено 2009-10-11.
- ^ «Поддерживает стандарт Modelica». Maplesoft. Получено 2009-10-11.
- ^ «Модель в CATIA (модуль: CATIA Systems Dynamic Behavior)». Dassault Systemes.
- ^ Объявление о приобретении DS Dynasim[постоянная мертвая ссылка]
- ^ а б c Администратор. «Добро пожаловать в Open Modelica - OpenModelica».
- ^ Адриан Поп, Дэвид Ахвледиани, Питер Фрицсон Интегрированное моделирование систем UML и Modelica с ModelicaML в Eclipse, В материалах 11-й Международной конференции IASTED по разработке программного обеспечения и приложениям (SEA 2007), Кембридж, Массачусетс, США
- ^ Хокан Лундвалл и Питер Фрицсон Автоматическое распараллеливание объектно-ориентированных моделей, выполняемое встроенными решателями, In Proceedings of EuroPvm / Parsim, Springer Verlag LNCS, Volume 4757, 2007 г.
- ^ EuroPVM / MPI 2007. «EuroPVM / MPI 2007 - PARSIM 2007 - Текущие тенденции в численном моделировании для параллельных инженерных сред, новые направления и незавершенные работы».
- ^ Андерс Фернстрем, Ингемар Аксельссон, Питер Фрицсон, Андерс Сандхольм, Адриан Поп OMNotebook - интерактивное программное обеспечение WYSIWYG Book для обучения программированию, В Proc. семинара по развитию образования в области компьютерных наук - как это можно сделать?, 2006 г. Университет Линчёпинга, кафедра компьютеров и инф. Наука, Линчёпинг, Швеция
- ^ Йорг Фрочте Совместимость с Modelica Simulator - сегодня и в будущем, 8-я Международная конференция Modelica, 20–22 марта 2011 г., Технический университет, Дрезден, Германия
- ^ Махмуд, Хизир; Город, Грэм Э. (15.06.2016). «Обзор компьютерных инструментов для моделирования потребностей электромобилей в энергии и их влияния на распределительные сети». Прикладная энергия. 172: 337–359. Дои:10.1016 / j.apenergy.2016.03.100.
- ^ Майкл Тиллер, Пол Боулз, Майк Демпси Разработка архитектуры моделирования транспортных средств в Modelica, 3-я Международная конференция Modelica
- ^ Эрик Сюревард, Экхард Карден, Майкл Тиллер Расширенное моделирование системы хранения электроэнергии в Modelica, 3-я Международная конференция Modelica
- ^ Чарльз Ньюман, Джон Баттех, Майкл Тиллер Моделирование цикла двигателя с искровым зажиганием в Modelica В архиве 2003-10-02 на Wayback Machine, 2-я Международная конференция Modelica
- ^ Э. Д. Тейт, Майкл Сасена, Джесси Голь, Майкл Тиллер Встроенное управление моделью: метод быстрого синтеза контроллеров в среде моделирования, 6-я Международная конференция Modelica
- ^ С. Соедзима, Т. Мацуба Применение смешанного режима интеграции и неявной встроенной интеграции в Toyota, 2-я Международная конференция Modelica
- ^ Хенрик Вигермо, Йоханнес фон Грундхерр, Томас Христос Реализация онлайн-оптимизации Modelica для стратегии работы гибридной трансмиссии, 6-я Международная конференция Modelica
- ^ Брюкманн, Стренкерт, Келлер, Визнер, Юнгханс Модельная разработка трансмиссии с двойным сцеплением с использованием быстрого прототипирования и SiL, Международный конгресс VDI «Трансмиссии в транспортных средствах», 2009 г., Фридрихсхафен, Германия
- ^ Майкл Веттер, Кристоф Хаугштеттер Modelica против TRNSYS - сравнение языка моделирования на основе уравнений и процедурного моделирования для моделирования энергоснабжения зданий, 2-я конференция SimBuild, Кембридж, Массачусетс, США, август 2006 г.
- ^ Казелла, Франческо (2015). Моделирование крупномасштабных моделей в Modelica: состояние дел и перспективы на будущее. Материалы 11-й Международной конференции Modelica, Версаль, Франция, 21–23 сентября 2015 г.. Материалы 11-й Международной конференции Modelica, Версаль, Франция, 21-23 сентября 2015 г. 118. Электронная пресса университета Линчёпинга. С. 459–468. Дои:10.3384 / ecp15118459. HDL:11311/964804. ISBN 978-91-7685-955-1.
Язык Modelica хорошо зарекомендовал себя для задач моделирования на системном уровне во многих областях инженерии, таких как автомобилестроение, робототехника, мехатроника, энергетика, аэрокосмическая промышленность, в частности, когда требуется многодоменное моделирование.
внешняя ссылка
- Спецификация языка Modelica 3.4
- Modelica Association, домашняя страница некоммерческой ассоциации Modelica Association (разрабатывающей Modelica)
- Modelica на примере Бесплатная интерактивная книга в формате HTML для изучения Modelica от Майкла Тиллера
- Введение в физическое моделирование с помощью Modelica, книга Майкла Тиллера
- Фрицсон, Питер (февраль 2004 г.). Принципы объектно-ориентированного моделирования и симуляции с Modelica 2.1 (PDF). Wiley-IEEE Press. ISBN 978-0-471-47163-9.
- Инструменты Commercial Modelica: Димола, LMS Imagine.Lab AMESim, CyModelica MapleSim, Wolfram SystemModeler, Набор инструментов для физического моделирования Modelica для Matlab, МоделированиеX, Вершина, JModelica.org
- Инструменты Modelica с открытым исходным кодом: OpenModelica (GPL или OSMC-PL),
- Обзор Modelica