【问题标题】:Modelica vs SimscapeModelica 与 Simscape
【发布时间】:2018-02-19 15:44:21
【问题描述】:

这个问题实际上有两个主要方面。一开始,我不得不承认我对物理建模完全陌生,并且很高兴得到纠正,而不仅仅是回答。对于那些觉得阅读时间太长的人,我可以提供一个简要总结

1) Simulink vs Modelica

2) Simscape vs Modelica

1) 第一个是建模方法的比较。按照惯例,我想比较的两种主要方法有不同的名称:

# 信号流方法/基于块的建模/因果建模...:Simulink 中的典型模型。有输入和输出以及介于两者之间的传递函数的盒子。

# 网络方法/基于组件的建模/非因果(非因果)建模...:有物理端口而不是信号 I/O 和流实体(电流、热量等)可以双向流动。

在这个比较中,我在网上阅读了一些意见并搜索了一些论文。据我所知,它归结为基于 Modelica 的开发环境和 Simulink (for example) 的比较。这两者的优缺点比我想问的另一点更清楚。

2) 在阅读了很多关于第一次比较的内容后,我更倾向于使用基于组件的建模。然而,Modelica 并不是这里唯一的选择。还有Simscape,您可以使用combine physical ports(如在Modelica中)对Simulink进行基于块的建模。

我想知道这个 Simscape vs Modelica 比较的优缺点。为了避免误解,我需要强调 Modelica 是一种语言。因此,将任何 Modelica 环境与 Simscape 进行比较会更有意义,比如 OpenModelica vs Simscape

【问题讨论】:

  • 您感兴趣的域名是什么?机械、电气、化学?生理?您是否阅读过此处列出的出版物:physiolibrary.org 也许他们确实评论了不同建模方法的优缺点!?
  • 我最感兴趣的是生理学和电学。不在该列表中,但 this paper,我也添加到问题中,来自 Physiolibrary 的创建者。但这主要是关于我比较因果非因果方法的第一个问题。
  • 恕我直言,最好将 SimScape 与 Modelica 语言进行比较,将 SIMULINK 与 OpenModelica 进行比较。
  • 因果可视化编程环境(如 SIMULINK 和 LabVIEW)与非因果语言/环境线 Modelica 和 SimScape 之间的差异,类似于命令式/脚本编程语言(如 python)和编译语言(如 C++)之间的差异。当需要实现非线性代数和微分方程系统时,前者会遇到同样的问题。他们无法处理双向的非因果关系。
  • @Foad :如果与编程语言相比,我会建议:命令式与声明式语言。非因果建模依赖于简单地声明方程组,而因果建模需要描述模拟系统的过程。非因果是组合的,而因果不是。

标签: simulink modeling modelica openmodelica simscape


【解决方案1】:

好吧,既然似乎没有人回答这个问题,我会试一试。

看来您似乎已经弄清楚了第一个问题的问题。基本答案是,因果建模涉及的大量前期工作,否则编译器可以完成这些工作。更糟糕的是,如果您想要支持不同的因果关系,您需要重新实现您的组件和/或拥有多个支持不同因果关系的版本。对混合了连续和离散行为的复杂物理场进行建模已经足够棘手,而无需进行所有这些繁琐、耗时且容易出错的工作来找出因果关系。

这让我想到了 SimScape 与 Modelica 的第二个问题。 SimScape 似乎是对我在上一段中提到的问题的认可。老实说,第三方很难为您提供 SimScape 与 Modelica 的分析,因为很大程度上取决于您与其他人可能不同的因素。

此外,我真的没有太多使用 SimScape,所以我无法对那里发表太多评论。但我可以肯定地告诉你Modelica的实力。 Modelica 是由一个由开发人员、用户和学者组成的设计团队开发的。我想这其实是Modelica隐藏的巨大力量。因此,新功能必须得到所有团队的支持才能成功。在我看来,一个群体的影响太大是有害的。

Modelica 的开放性意味着您可以从许多不同的工具(免费和商业)获得 Modelica 支持。反过来,这意味着那里有许多不同的库。这种开放性不仅与规范本身有关,还与生态系统(开放工具、开放库等)有关。

最后,证明是真正看到人们正在解决的所有各种类型的问题。 Modelica 用于广泛的工程领域,以解决真正多样化的问题。在我看来,这证明了语言和库设计的合理性。这种成功不是大量营销资金的结果,而是技术从根本上强大并且世界各地的人们已经认识到这一点并用它来解决现实世界问题的结果......一遍又一遍。

我建议您浏览过去 Modelica 会议的论文。每篇论文都可以通过modelica.org在线免费获得。

无耻插件:如果您想通过广泛的工程学科示例来学习 Modelica,您可能需要查看免费、交互式和在线书籍 Modelica by Example

【讨论】:

  • 我同意你对这个内容的看法,尤其是在开放性方面。我会选择 Modelica 而不是 Simscape。事实上,在过去的 5 个月里,我一直负责将物理模型从 Simscape 转移到 Modelica(我正在使用 OpenModelica),因为合作的两个机构喜欢不同的环境。以最简单的方式,学者们并不真正关心 Modelica,因为他们碰巧拥有 Matlab 许可证(至少他们不关心大学为此付出了很多钱)。因此,我想检查一下Modelica是否还有其他技术优势。
【解决方案2】:

对于此比较,冲突点可以是 FMI 导入/导出能力。

Functional Mock-Up Interface 是一个非常有前途的解决方案,用于不同建模环境之间的模型传输和共享。提取的功能模型单元 (FMU) 可以导入到另一个环境中,也可以使用第三方工具进行数值模拟。

大多数 Modelica 平台都提供足够的 FMI 导入/导出功能。我至少可以说 OpenModelica、JModelica.org 和 MapleSim。有关可用性的更多信息,please see here

Matlab/Simulink 的支持程度如何?据说他们提供这种可用性,但没有可以从 MathWorks 下载的官方软件包。有像 FMI ToolboxFMI Target for Simulink Coder 这样的第三方软件包,但它们似乎是商业的。我尝试了 Modelon 的软件包 FMI Toolbox 的演示版,但使用演示版一只能在演示版给出的模型上工作。

根据this link,实际上还有另一个官方的 Simulink FMI 包。我到达并问他们我是否可以看看并尝试一个研究项目(不撒谎,这是一个研究项目)。该工具只能通过与链接中提到的团队发送电子邮件来获得,并且只有 FMI 导入(无导出)的功能。 Simulink 作为一种商业工具,不想让模型逃到其他环境。重要说明,从 cmets 中可以看出,现在可以在 2017 年 9 月 20 日发布的 Simulink R2017b 的正式版本中找到此包。

总的来说,Modelica 平台对 FMI 的支持要大得多,这可以解决未来的很多问题。尽管我应该明确地说,到目前为止,我还没有使用 FMI 解决我的模型的丰富经验。它有时非常慢,并且 OpenModelica 的结果与使用从同一模型中提取的 FMU 的解决方案之间存在差异。求解器选项仅限于模型交换。至于联合模拟,也许我做错了什么。然而,在我看来,它是一个非常有前途的工具,需要改进。

关于2012年FMI标准曾经存在的问题的研究可以found here。随着 FMI 2.0 的发布,据说这些问题中的大部分都得到了解决。我在这里感谢Christian Bertsch 纠正我发布的可能误导的信息。总的来说,FMI 是一个很好的工具,在行业中变得越来越重要。它的优点和tools supporting FMI可以在它的网站上找到。

【讨论】:

  • 作为您引用为“对其缺点的研究”的论文的作者之一,我可以告诉您,我非常相信 FMI 的优势!该论文(2014 年出版)描述了一些提高 FMI 实施工具成熟度的措施,这些工具对工业使用很重要。其中许多是在 FMI 项目中启动的,并且在此期间是有效的。
  • “缺点”这个词选错了,请原谅我的英文。我无意弯曲或歪曲你的话来支持我想说的。我应该说,也许,一个人可能遇到的问题。如第 2.2 节所列,到 3/2012 时存在某些问题。虽然我使用的是 FMI 2.0,但我遇到了一些问题,根据论文可以视为 IV 型问题。除此之外,我将编辑我在答案中写的内容,以更清楚地表达自己。对于以这种方式引起您的注意,我再次道歉。
  • FMI 导入现已在 ML/SL 2017b 的官方版本中可用,请参阅de.mathworks.com/help/simulink/release-notes.html
【解决方案3】:

我作为 Physiolobrary 和目前 Physiolibrary.models 的合著者的个人经历。

  1. 在我们的小组中,我们得出结论,在 Modelica 中结合非因果和信号导向方法是合适的。非因果方法适用于组合建模系统的基本物理定律的组件 - 这样的组件更可重用。信号方法适合将专有组件添加到因果关系已知或假设(控制心率等)的建模系统中。我们在https://doi.org/10.1016/j.compbiomed.2014.08.025 或最近在https://doi.org/10.1016/j.bbe.2017.08.001 讨论了细节

  2. Simscape 的一个缺点是库或缺少库。建模例如心血管系统,您可能需要使用电路的类比。虽然这种简化通常在研究或工业中被接受,但您可能会降低准确性并增加出错的可能性。在第三方库 Physiolibrary 可用之前,这也是 Modelica 中的问题。

  3. 但是,在 Modelica 中重现(重新实现)Simscape 模型要容易得多,就像我们所做的那样,例如在论文 http://mj.mefanet.cz/mj-04140914 中比任何面向块的模型 - 在 Modelica 或 Simulink 中都没有关系。

【讨论】:

  • Tomas,Simscape 不仅仅是库,它是一种语言,如果您可以使用 Modelica 语言开发生理学库,那么您也可以轻松地使用 Simscape 语言开发生理学库。如果适合您,您可以随意使用电气类比——它可能会为您提供一个快速简单的模型来获得一些初步结果——但您绝对可以在 Simscape 中开发一个超级详细的物理库。
  • 当然,可以为 Simscape 开发这样的库。但我们选择 Modelica 的原因有很多。但是,任何用户比较竞争语言都很有价值。人们可能更喜欢 Simscape(根据我的快速研究),库数量较少,但专业支持并集成到 Mathworks 的整个产品生态系统中。另一个人可能更喜欢 Modelica,它有大量由不同生产商提供的闭源或开源库。还有其他方面,如社区偏好、许可价格、可用的专业服务等。
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
  • 1970-01-01
  • 2020-04-21
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多