【问题标题】:Modelica and Matlab Coupling with Modelica ErrorModelica 和 Matlab 耦合与 Modelica 错误
【发布时间】:2023-03-12 03:22:01
【问题描述】:

我正在尝试将 Matlab 与 Modelica 结合起来。

整个过程是:我有5000组数据,每组包含20个参数,对应我的Modelica模型。

  1. 这些数据集将由 Matlab 读取,然后发送到 Modelica。
  2. Modelica 将继续进行模拟并生成结果。
  3. 然后,Matlab 将从 Modelica 捕获结果。

但是,由于参数的值是随机生成的,因此在模拟过程中可能会出现错误(例如,温度超出边界、收敛错误等)。

如果发生错误,我考虑过“try-catch”来执行模拟。但是,我意识到如果 Modelica 存在错误,Matlab 会停止。 我想知道是否有办法在 Matlab 中继续“for 循环”以进入下一个输入数据集。

谢谢

【问题讨论】:

  • Modelica 是一种语言。您想与哪个 Modelica 工具进行交互?你想从 MATLAB 调用这个工具的 API 吗?或者您可以将 Modelica 模型从 Modelica 工具导出为 Functiona Mockup Unit (FMU),然后从 MATLAB 与 FMU 进行交互?
  • 克里斯蒂安,我正在使用 Dymola。我可以从 Matlab 调用 Dymola。但是当 Dymola 出现错误时,程序停止了。谢谢
  • @Devon:您是否使用 DDE 接口进行通信(如 Dymola 手册 2 的“6.4 DDE 通信”中所述)?
  • @MarkusA.:是的,我是。当前的问题是 Matlab 已停止,因为它无法从 Dymola 读取结果。
  • 您是否尝试使用“\\Mfiles\dymtools”中的函数dymgetdymload

标签: matlab modelica


【解决方案1】:

你可以做几件事。

  1. 使用上述安装目录下的 Dymola-Matlab 工具。

要添加到上述内容,在安装文件夹中,例如,./Program Files/Dymola 2020x/Mfiles,如果您打开该文件夹中的“Contents.m”文件,您将获得有关如何执行的所有信息使用 MATLAB 中的“dymosin”进行模拟。内容文件还指向其他函数,用于向 Dymola 发送命令、读取和操作轨迹等。

  1. 将您的 Dymola 模型作为 FMU 导出到 MATLAB。

在执行此操作之前,您需要使用实际输入和实际输出连接器定义输入和输出。然后,要将模型导出为 FMU,您可以转到 Simulation 菜单,选择 Translation Tab 下拉菜单,然后选择 FMU 选项,或按 Ctrl+F9。

根据经验,我建议您使用 Co-Simulation 选项,除非您确实需要使用 Matlab 或 Simulink 求解器选项。

要运行模拟,您有多种选择,我使用以下方法:

2.1。使用命令或来自FMI Toolbox from Modelon 的 FMU ME 或 FMU CS 模块将模型导入 MATLAB。这是一个非常可靠的工具,我从 2012 年开始在 RaPId 中使用它,它变得非常强大。此外,它还带有大量用于模型分析和仿真自动化的额外功能,非常方便。

2.2。使用 FMIKit 将模型导入 FMU。我最近一直在使用 FMIKit,我发现它非常强大。我只测试了将 FMU 导入 Simulink,不知道您是否可以避免这种情况。然后您可以使用 MATLAB 命令调用持有 FMU 的 Simulink 模型。

2.3。使用 Simulink/Extras 库下的内置FMU block 导入模型,然后如上使用 MATLAB 命令调用 Simulink 模型。这个功能直到 2017 年才出现,所以有点不可预测。

如果您喜欢 FMU 选项,并且没有任何“强”依赖项,我强烈建议您避免使用 MATLAB 并改用 Python。我希望我在 15 年前就这样做了…… Dymola 在 ./Program Files/Dymola 2020x/Modelica/Library/python_interface 和 OpenModelica has a good Python interface also 下有一个 Dymola-Python 接口。以下是我们的一篇论文中的一些笔记本,可帮助您入门 (link)。

【讨论】:

    【解决方案2】:

    基于提供一种运行和处理模拟的低级方式的 Dymola mfiles,我实现了一个具有更多高级功能的开源软件,使用它可以更轻松地修改模拟参数和处理结果.

    这里是link,附有一个小教程here

    这个软件特别有趣的是运行双线程定时模拟的功能。修改参数值时,模拟可能会非常慢,例如因为僵硬。可以在特定的给定持续时间内运行定时模拟,随后模拟因故障信号而被终止。在我使用旧版本的 Dymola(~2008-2014)的情况下,我能够运行多个模拟,其中很少有人“被杀死”。我不确定它将如何与最新的 Dymola 版本一起运行。

    该软件虽然在学术环境而非商业环境中以特别快速的方式单独实施,但到目前为止对我的目的很有用。此外,它目前未维护。不过,我希望它可能在存在一些黑客功能的情况下有用。

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多