首页 > 解决方案 > Modelica 和 Matlab 耦合与 Modelica 错误

问题描述

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

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

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

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

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

谢谢

标签: matlabmodelica

解决方案


您可以做几件事。

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

除此之外,在安装文件夹中,例如./Program Files/Dymola 2020x/Mfiles,如果您打开该文件夹中的“Contents.m”文件,您将获得有关如何使用“执行模拟”的所有信息dymosin”来自 MATLAB。内容文件还指向其他功能,用于向 Dymola 发送命令、读取和操作轨迹等。

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

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

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

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

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

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

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

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


推荐阅读