2

我在 Dymola 中遇到了一个有趣的现象,我认为它的原因可能来自我的模型,但我不知道是什么样的事情可能会导致这种情况。如果有人能给我一点提示,将不胜感激。

我的问题是,模拟将在某个时间“停止”(它正在运行但非常缓慢),当我绘制结果时,一个测试错误是否在容差范围内的块会不断以非常大的频率生成事件。

从“公差范围内”块追溯,它是标准库中的“错误块”,具有 3 个信号

u1 - 传感器数据,u2 - 参考值,y - 输出信号[u1-u2=y]

(不幸的是,由于我的声誉低,我无法上传我的情节)

这是我放大(很多次)这些信号的“尾部”(它们停止运行的地方)时发现的,

对于error.y信号:我可以看到非常微小(1e-10)但在我的 errorTolerance 目标周围出现高频颤动,但仅在模拟开始运行非常缓慢的尾部。它的行为类似于锯齿形信号。

对于u1(传感器数据)信号:我放大到与信号 error.y 相同的比例,但我没有看到任何抖动。

对于u2(参考)信号:始终不变

不知道是什么原因造成的,因为错误块只是一个简单的减法计算,为什么会引起这种颤抖。谢谢!

HY

4

1 回答 1

2

你所描述的听起来就像在喋喋不休。您真正需要注意的情况是事件一侧的系统动力学将其驱向事件。换句话说,如果 x>c,der(x) <= 0 并且如果 x<=c,der(x) >= 0。另一种情况是,如果这样的事件发生在平衡点。

您说“什么样的事情可能导致这种情况”,但在我看来(至少从我对您的描述的理解来看)答案是显而易见的。这是你的错误块。你说它“只是一个简单的减法计算”,但是如果块中有任何类型的条件表达式(我假设有),那么就会触发一个事件。

根据您的描述,我的猜测是,您的系统正好在条件语句从真到假的转变点达到平衡点。因此,此时解中的数值噪声会导致它在每次触发事件的阈值上来回交叉。

于 2013-08-05T00:49:52.127 回答