【发布时间】:2021-09-22 21:09:39
【问题描述】:
我想在 Dymola 2022 中运行协同仿真 FMU (FMI2.0)。协同仿真 FMU 连接到在 Modelica 中建模的其他一些组件。
有时会打印以下错误消息:
[fmi2Warning]:fmu_name:fmi2DoStep:无效的 currentCommunicationPoint = 2.9500000000030000,预期为 2.9500000000000002
如果此消息出现一次,则模拟永远不会恢复,每个时间步都有这样的打印。从那时起,模拟结果无效。此错误发生在边界条件和/或系统参数的特定组合中。它发生在一组以上的组合输入值上,但也有很多模拟运行成功终止。我在输入/参数值中看不到任何可能导致该行为的模式。
有人可以向我解释这种错误信息吗?问题是主(Dymola)还是从属(FMU)? 而且 - 更重要的是 - 有人知道如何避免这个错误吗?
modelDescription.xml 文件的相关部分如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<fmiModelDescription
fmiVersion="2.0"
guid="{2598dff1-4f88-4838-89e2-ae8ff105e7e9}"
modelName="xxx"
generationTool="Simulink 8.13 (R2017b) 24-Jul-2017 with FMI Kit 2.9 (rtwsfcnfmi.tlc, FixedStepDiscrete, 0.001 s)"
generationDateAndTime="2021-08-10T14:16:18"
author="matlab"
version="1.40"
numberOfEventIndicators="0">
<CoSimulation modelIdentifier="xxx" canHandleVariableCommunicationStepSize="true" canInterpolateInputs="true"/>
<DefaultExperiment
startTime="0.0"
stopTime="500.0"
stepSize="0.001"
/>
期待任何建议!
【问题讨论】:
-
您能否提供有关 FMU 的更多信息?它是如何创建的?你能分享它或它的modeldescription.xml文件吗?看起来 FMU 需要一个固定的时间步长并由于数值不准确而引发警告,这似乎没有实现。
-
很遗憾,我无法共享 FMU,但我已将 .xml 文件的相关部分添加到我的帖子中。你是对的,FMU 至少以固定的步长运行。然而,与该 FMU 协同仿真运行的 Modelica 模型只能在 Dymola 中使用可变步长求解器运行。那么有什么办法可以避免这个同步问题呢?