модель
![]() | |
Парадигма | Декларативный язык |
---|---|
Разработчик | Проект ассоциации Modelica (MAP) |
Впервые появился | 1997 |
Стабильная версия | 3.6
/ 9 марта 2023 г. [1] |
ТЫ | Кросс-платформенный |
Лицензия | CC-BY-SA |
Расширения имен файлов | .для |
Веб-сайт | www.modelica.org |
Основные реализации | |
AMESim , CATIA Systems, Dymola , JModelica.org , MapleSim , Wolfram SystemModeler , OpenModelica , Scicos , SimulationX , Xcos |
Modelica — это объектно-ориентированный , декларативный , многодоменный язык моделирования для компонентно-ориентированного моделирования сложных систем, например, систем, содержащих механические, электрические, электронные, гидравлические, тепловые, управляющие, электрические или процессно-ориентированные подкомпоненты. Бесплатный язык Modelica [2] разработан некоммерческой ассоциацией Modelica. [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] Дымола , НМФ [7] ОбъектМатематика, [8] Омола, [9] СИДОПС+, [10] и Улыбнись. [11] Хилдинг Элмквист — ключевой архитектор Modelica, но внесли свой вклад и многие другие люди (см. приложение E в спецификации Modelica). [2] ). В сентябре 1997 года была выпущена версия 1.0 спецификации Modelica, которая послужила основой для реализации прототипа в коммерческой системе программного обеспечения Dymola. В 2000 году была создана некоммерческая ассоциация Modelica для управления постоянно развивающимся языком Modelica и разработкой бесплатной стандартной библиотеки Modelica. В том же году началось использование Modelica в промышленных приложениях.
В этой таблице представлена временная шкала истории спецификаций Modelica: [12]
Выпускать | Дата выпуска | Основные моменты |
---|---|---|
1.0 | 1997, сентябрь | Первая версия для моделирования непрерывных динамических систем. |
1.1 | 1998, декабрь | Элементы языка для моделирования дискретных систем (до, когда) |
1.2 | 1999, июнь | Интерфейс для C и Fortran, внутренний/внешний для глобальных переменных, уточненная семантика обработки событий. |
1.3 | 1999, декабрь | Улучшена семантика внутренних/внешних соединений, защищенных элементов, выражений массивов. |
1.4 | 2000, декабрь | Удалено правило объявления перед использованием, усовершенствована концепция упаковки, уточнено условие «когда». |
2.0 | 2002, июль | Инициализация моделей, стандартизация графического вида, функции со смешанными позиционными и именованными аргументами, конструктор записей, перечисления |
2.1 | 2004, март | Переопределенный разъем для модели 3-dim. механические системы, расширенное переобъявление подмоделей, массив и индексы массива перечислений |
2.2 | 2005, февраль | Расширяемый коннектор для моделирования сигнальных шин, условных объявлений компонентов, массивов с динамическим изменением размера в функциях. |
3.0 | 2007, сентябрь | Очищенная версия: написана новая спецификация, улучшена система типов и графический внешний вид, исправлены языковые недостатки, сбалансированная концепция модели для гораздо лучшего обнаружения ошибок модели. |
3.1 | 2009, май | Соединитель потока для управления двунаправленным потоком жидкости, перегрузки оператора, сопоставления частей модели со средами выполнения (для использования во встроенных системах ). |
3.2 | 2010, март | Улучшенная инициализация гомотопическим методом, функции как формальные входные данные для функций, поддержка Unicode , контроль доступа для защиты IP , улучшенная поддержка библиотек объектов. |
3.3 | 2012, май | Добавлены элементы языка для описания периодических и непериодических синхронных контроллеров на основе тактовых уравнений, а также синхронных конечных автоматов. |
3.4 | 2017, апрель | Автоматическое преобразование моделей. Множество мелких улучшений |
3.5 | 2021, февраль | Аннотации для предопределенных графиков. Изменение формата спецификации со многими редакционными изменениями. Пояснения к синхронным элементам языка и конечным автоматам. Множество мелких уточнений по функциям, преобразованиям моделей и некоторым другим частям спецификации. |
3.6 | 2023, март | Удаление модификаторов с помощью break и выборочные расширения моделей. Многоязычная поддержка для представления библиотек Modelica на нескольких языках.
|
Реализации [ править ]
Коммерческие интерфейсы для Modelica включают AMESim от французской компании Imagine SA (ныне часть Siemens Digital Industries 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 [15] [16] от Dassault Systemes ( CATIA — одна из основных САПР ).
Openmodelica [17] это среда моделирования и моделирования с открытым исходным кодом на основе Modelica, предназначенная для промышленного и академического использования. Его долгосрочное развитие поддерживается некоммерческой организацией — Консорциумом Open Source Modelica (OSMC). Целью проекта OpenModelica является создание комплексного моделирования Modelica с открытым исходным кодом. [18] среда компиляции и моделирования на основе бесплатного программного обеспечения, распространяемого в виде двоичного кода и исходного кода для исследований, [19] [20] обучение, [21] и промышленного использования.
Бесплатная среда моделирования Scicos использует подмножество Modelica для моделирования компонентов. Поддержка большей части языка Modelica в настоящее время находится в стадии разработки. Тем не менее, все еще существует некоторая несовместимость и расходящиеся интерпретации между всеми различными инструментами, касающимися языка Modelica. [22]
Примеры [ править ]
Следующий фрагмент кода показывает очень простой пример системы первого порядка. ( ):
model FirstOrder
parameter Real c=1 "Time constant";
Real x (start=10) "An unknown";
equation
der(x) = -c*x "A first order differential equation";
end FirstOrder;
В следующем фрагменте кода показан пример вычисления второй производной. [23] тригонометрической функции с использованием OMShell в качестве средства разработки программы, написанной ниже.
model second_derivative
Real l;
Real z=sin(w*time);
Real m;
parameter Real w = 1;
equation
l=der(z);
m=der(l);
end second_derivative;

В этом примере следует отметить интересный квалификатор «параметр», который указывает, что данная переменная является инвариантной во времени, и оператор «der», который представляет (символически) производную переменной по времени. Также стоит отметить строки документации, которые могут быть связаны с объявлениями и уравнениями.
Основная область применения Modelica — моделирование физических систем. Самые основные концепции структурирования показаны на простых примерах из электрической области:
Встроенные и производные от пользователя типы [ править ]
Modelica имеет четыре встроенных типа: Real, Integer, Boolean, String. Обычно создаются определяемые пользователем типы для связывания физической величины, единицы измерения, номинальных значений и других атрибутов:
type Voltage = Real(quantity="ElectricalPotential", unit="V");
type Current = Real(quantity="ElectricalCurrent", unit="A");
...
Соединители, описывающие физическое взаимодействие [ править ]
Взаимодействие компонента с другими компонентами определяется физическими портами, называемыми разъемами , например, электрический контакт определяется как
connector Pin "Electrical pin"
Voltage v "Potential at the pin";
flow Current i "Current flowing into the component";
end Pin;
При рисовании линий соединения между портами имеется в виду, что соответствующие переменные соединителя без префикса «поток» идентичны (здесь: «v») и что соответствующие переменные соединителя с префиксом «поток» (здесь: «i») определяются уравнение с нулевой суммой (сумма всех соответствующих переменных «потока» равна нулю). Целью является автоматическое выполнение соответствующих уравнений баланса в бесконечно малой точке соединения.
Базовые компоненты модели [ править ]
Базовый компонент модели определяется моделью и содержит уравнения, описывающие связь между переменными соединителя в декларативной форме (т. е. без указания порядка расчета):
model Capacitor
parameter Capacitance C;
Voltage u "Voltage drop between pin_p and pin_n";
Pin pin_p, pin_n;
equation
0 = pin_p.i + pin_n.i;
u = pin_p.v - pin_n.v;
C * der(u) = pin_p.i;
end Capacitor;
Цель состоит в том, чтобы связный набор компонентов модели приводил к набору дифференциальных, алгебраических и дискретных уравнений, в котором количество неизвестных и количество уравнений одинаково. В Modelica это достигается за счет требования так называемых сбалансированных моделей .
Полные правила определения сбалансированных моделей довольно сложны, и их можно прочитать в [2] в разделе 4.7.
Однако в большинстве случаев можно ввести простое правило, которое считает переменные и уравнения так же, как это делает большинство инструментов моделирования:
A model is balanced when the number of its equations equals the number of its variables.
учитывая, что переменные и уравнения необходимо считать по следующему правилу:
->Number of model equations = Number of equations defined in the model + number of flow variables in the outside connectors ->Number of model variables = Number of variables defined in the model (including the variables in the physical connectors)
Обратите внимание, что стандартные соединители ввода (такие как RealInput или IntegerInput) не участвуют в подсчете переменных, поскольку внутри них не определены новые переменные.
Причину этого правила можно понять, рассматривая конденсатор, определенный выше. Каждый из его выводов содержит переменную потока, то есть ток. Когда мы его проверяем, он ни с чем не связан. Это соответствует установке уравнения pin.i=0 для каждого контакта. Вот почему мы должны добавить уравнение для каждой переменной потока.
Очевидно, что этот пример можно распространить на другие случаи, в которых задействованы другие типы переменных потока (например, силы, крутящие моменты и т. д.).
Когда наш конденсатор подключается к другой (сбалансированной) модели через один из ее выводов, будет сгенерировано уравнение соединения, которое заменит два уравнения i = 0 соединяемых выводов. Поскольку уравнение соединения соответствует двум скалярным уравнениям, операция соединения оставит балансную большую модель (состоящую из нашего конденсатора и модели, к которой он подключен).
Приведенная выше модель конденсатора является сбалансированной , поскольку
number of equations = 3+2=5 (flow variables: pin_p.i, pin_n.i, u) number of variables = 5 (u, pin_p.u, pin_p.i, pin_n.u, pi_n.i)
Проверка с помощью OpenModelica [17] этой модели фактически дает
Class Capacitor has 5 equation(s) and 5 variable(s). 3 of these are trivial equation(s).
Другим примером, содержащим как входные, так и физические разъемы, является следующий компонент из стандартной библиотеки Modelica:
model SignalVoltage
"Generic voltage source using the input signal as source voltage"
Interfaces.PositivePin p;
Interfaces.NegativePin n;
Modelica.Blocks.Interfaces.RealInput v(unit="V")
"Voltage between pin p and n (= p.v - n.v) as input signal";
SI.Current i "Current flowing from pin p to pin n";
equation
v = p.v - n.v;
0 = p.i + n.i;
i = p.i;
end SignalVoltage;
Компонент SignalVoltage сбалансирован, поскольку
number of equations = 3+2=5 (flow variables: pin_p.i, pin_n.i, u) number of variables = 5 (i, pin_p.u, pin_p.i, pin_n.u, pi_n.i)
Опять проверка с помощью OpenModelica [17] дает
Class Modelica.Electrical.Analog.Sources.SignalVoltage has 5 equation(s) and 5 variable(s). 4 of these are trivial equation(s).
Иерархические модели [ править ]
Иерархическая модель строится на основе базовых моделей путем создания экземпляров базовых моделей, предоставления подходящих значений параметров модели и подключения соединителей модели. Типичным примером является следующая электрическая схема:
model Circuit
Capacitor C1(C=1e-4) "A Capacitor instance from the model above";
Capacitor C2(C=1e-5) "A Capacitor instance from the model above";
...
equation
connect(C1.pin_p, C2.pin_n);
...
end Circuit;
С помощью аннотации элемента языка (...) в модель можно добавлять определения, которые не влияют на моделирование. Аннотации используются для определения графического макета, документации и информации о версии. Базовый набор графических аннотаций стандартизирован, чтобы обеспечить одинаковое графическое оформление и компоновку моделей в различных инструментах Modelica.
Приложения [ править ]
Modelica спроектирована как нейтральная к предметной области и, как следствие, используется в самых разных приложениях, таких как жидкостные системы (например, выработка паровой энергии, гидравлика и т. д.), автомобильные приложения (особенно трансмиссии). [24] и механические системы (например, многотеловые системы, мехатроника и т. д.).
В автомобильном секторе многие крупные производители автомобильного оборудования используют Modelica. К ним относятся Форд, [25] [26] [27] Дженерал Моторс, [28] Тойота, [29] BMW, [30] и Даймлер. [31]
Modelica также все чаще используется для моделирования терможидкостных и энергетических систем. [32]
Характеристики Modelica (акаузальная, объектно-ориентированная, предметно-нейтральная) делают ее хорошо подходящей для моделирования на системном уровне — области, в которой Modelica сейчас хорошо зарекомендовала себя. [33]
См. также [ править ]
- AMESim
- AMPL
- APMonitor
- ПОДЪЕМ
- для предметно-ориентированного моделирования DSM
- Дымола
- EcosimPro: программное обеспечение для непрерывного и дискретного моделирования и моделирования
- EMS
- ГАМС
- JModelica.org
- OpenModelica
- MapleSim
- МАТЛАБ
- МоделированиеX
- Симулинк
- Вольфрам SystemModeler
- Сцилаб/Xcos
- Кеплер (Птолемей)
Примечания [ править ]
- ^ «Спецификация языка Modelica, версия 3.6» (PDF) . Ассоциация Модельика. 09.03.2023.
- ↑ Перейти обратно: Перейти обратно: а б с «Спецификация языка Modelica, версия 3.5» (PDF) . Ассоциация Модельика. 18 февраля 2021 г.
- ^ «Моделика и Ассоциация Модельика» .
- ^ Стандартную библиотеку Modelica можно скачать здесь.
- ^ «Язык структурированных моделей для больших непрерывных систем» (PDF) .
- ^ Жандель А., Будо Ф.: Языки моделирования физических систем: от ALLAN до Modelica , Building Simulation'97, Конференция IBPSA, Прага, 8–10 сентября 1997 г.
- ^ Пер Сахлин (ноябрь 1996 г.). «РУКОВОДСТВО ПО NMF. Введение в формат нейтральной модели. Версия NMF 3.02» (PDF) .
- ^ «Домашняя страница ObjectMath» .
- ^ С. Э. Маттссон, М. Андерссон и К. Дж. Астрем: Объектно-ориентированное моделирование и симуляция. В: Линкенс, изд., САПР для систем управления (Марсель Деккер, 1993), стр. 31–69.
- ^ «CiteSeerX — моделирование мехатронных систем с использованием языка Sidops+». 1997: 301–306. CiteSeerX 10.1.1.56.4266 .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Эрнст Т., Янихен С., Клозе М.: Объектно-ориентированное моделирование физических систем, Modelica и среда моделирования Smile/M . 15-й Всемирный конгресс IMACS по научным вычислениям, моделированию и прикладной математике, Берлин, 24–29 августа 1997 г.
- ^ «Документы» . Ассоциация Модельика . Проверено 11 октября 2009 г.
- ^ «Поддерживает стандарт Modelica» . Мэйплсофт . Проверено 11 октября 2009 г.
- ^ «Моделон Импакт» . Модельон . Проверено 1 апреля 2021 г.
- ^ «Modelica в CATIA (модуль: Динамическое поведение CATIA Systems)» . Дассо Системес . Архивировано из оригинала 1 мая 2010 г. Проверено 30 декабря 2009 г.
- ^ Объявление о приобретении DS компании Dynasim. [ постоянная мертвая ссылка ]
- ↑ Перейти обратно: Перейти обратно: а б с Администратор. «Добро пожаловать в Open Modelica — OpenModelica» .
- ^ Адриан Поп, Дэвид Ахвледиани, Питер Фрицсон Интегрированное моделирование систем UML и Modelica с помощью ModelicaML в Eclipse , В материалах 11-й Международной конференции IASTED по программной инженерии и приложениям (SEA 2007), Кембридж, Массачусетс, США
- ^ Хокан Лундвалл и Питер Фрицсон Автоматическое распараллеливание объектно-ориентированных моделей, выполняемых с помощью встроенных решателей , в Proceedings of EuroPvm/Parsim, Springer Verlag LNCS, Volume 4757, 2007
- ^ EuroPVM/MPI 2007. «EuroPVM/MPI 2007 – PARSIM 2007 – Текущие тенденции в численном моделировании для параллельных инженерных сред, новые направления и текущие работы» .
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ Андерс Фернстрём, Ингемар Аксельссон, Питер Фрицсон, Андерс Сандхольм, Адриан Поп OMNotebook — интерактивное программное обеспечение WYSIWYG Book для обучения программированию , в Proc. семинара по развитию образования в области компьютерных наук – как это можно сделать?, 2006. Университет Линчепинга, кафедра компьютеров и информации. Наука, Линчепинг, Швеция
- ^ Йорг Фрохте Совместимость симулятора Modelica - сегодня и в будущем , 8-я Международная конференция Modelica, 20–22 марта 2011 г., Технический университет, Дрезден, Германия
- ^ Введение в физическое моделирование с помощью Modelica, Майкл Тиллер
- ^ Махмуд, Хизир; Таун, Грэм Э. (15 июня 2016 г.). «Обзор компьютерных инструментов для моделирования энергетических потребностей электромобилей и их влияния на распределительные сети». Прикладная энергетика . 172 : 337–359. doi : 10.1016/j.apenergy.2016.03.100 .
- ^ Майкл Тиллер, Пол Боулз, Майк Демпси Разработка архитектуры моделирования транспортных средств в Modelica , 3-я Международная конференция Modelica
- ^ Эрик Сурваард, Экхард Карден, Майкл Тиллер, Моделирование передовых систем хранения электроэнергии в Modelica , 3-я Международная конференция Modelica
- ^ Чарльз Ньюман, Джон Батте, Майкл Тиллер Моделирование цикла двигателя с искровым зажиганием в Modelica. Архивировано 2 октября 2003 г. на Wayback Machine , 2-я Международная конференция Modelica.
- ^ ЭД Тейт, Майкл Сасена, Джесси Гол, Майкл Тиллер Модель встроенного управления: метод быстрого синтеза контроллеров в среде моделирования , 6-я Международная конференция Modelica
- ^ С. Соэдзима, Т. Мацуба Применение смешанного режима интеграции и неявной встроенной интеграции в Toyota , 2-я Международная конференция Modelica
- ^ Хенрик Вигермо, Йоханнес фон Грундхерр, Томас Крист. Реализация онлайн-оптимизации Modelica для операционной стратегии гибридной трансмиссии , 6-я Международная конференция Modelica.
- ^ Брюкманн, Штренкерт, Келлер, Виснер, Юнгханнс. Разработка трансмиссии с двойным сцеплением на основе модели с использованием быстрого прототипирования и SiL. Архивировано 22 марта 2015 г. на Wayback Machine , Международный конгресс VDI «Передачи в транспортных средствах, 2009», Фридрихсхафен, Германия.
- ^ Майкл Веттер, Кристоф Хаугстеттер Modelica и TRNSYS - сравнение языка моделирования на основе уравнений и процедурного языка для моделирования энергопотребления зданий , 2-я конференция SimBuild, Кембридж, Массачусетс, США, август 2006 г.
- ^ Казелла, Франческо (2015). «Моделирование крупномасштабных моделей в Modelica: современное состояние и перспективы» . Материалы 11-й Международной конференции Modelica, Версаль, Франция, 21–23 сентября 2015 г. Том. 118. Электронная пресса Университета Линчепинга. стр. 459–468. дои : 10.3384/ecp15118459 . hdl : 11311/964804 . ISBN 978-91-7685-955-1 .
Язык Modelica хорошо зарекомендовал себя для задач моделирования на системном уровне во многих областях техники, таких как автомобилестроение, робототехника, мехатроника, энергетика, аэрокосмическая промышленность, особенно когда требуется многодоменное моделирование.
{{cite book}}
: Отсутствует или пусто|title=
( помощь )
Внешние ссылки [ править ]
- Спецификация языка Modelica, версия 3.6
- Modelica Association , домашняя страница некоммерческой ассоциации Modelica (разрабатывающей Modelica)
- Modelica на примерах. Бесплатная интерактивная HTML-книга для изучения Modelica, автор: Майкл Тиллер.
- Введение в физическое моделирование с помощью Modelica , книга Майкла Тиллера
- Фрицсон, Питер (февраль 2004 г.). Принципы объектно-ориентированного моделирования и симуляции с помощью Modelica 2.1 (PDF) . Wiley-IEEE Press. ISBN 978-0-471-47163-9 .
- Обзор Моделики