我在Dymola遇到了一个有趣的现象,我认为它的原因可能来自我的模型,但我不知道是什么样的事情可能导致这一点。如果有人能在这方面给我一点提示,我非常感激。
我的问题是,模拟将在某一时间“停止”(它正在运行,但速度非常慢),当我绘制结果时,测试(如果错误在允许范围内)的块总是以非常高的频率生成事件。
追溯到“ an ”块,它是标准库中的一个“错误块”,其中包含3个信号。
u1 -传感器数据,u2 -参考值,y -输出信号1-u2=y
(不幸的是,由于声誉不高,我无法上传我的情节)
当我放大(很多次)这些信号的“尾巴”(它们停止运行)时,我发现,
对于错误.y信号:我可以看到非常微小的(1e-10),但高频抖动围绕我的errorTolerance目标,但只有在尾部开始运行非常缓慢。它的行为就像锯齿形信号。
对于u1(传感器数据)信号:我放大到与信号错误.y相同的范围,但是没有看到任何抖动。
用于u2(reference)信号:常量时刻
我想知道是什么原因造成的,因为误差块只是一个简单的负计算,它怎么会引起这种抖动。谢谢!
为什么?
发布于 2013-08-05 00:49:52
你所描述的听起来就像喋喋不休。您真正需要注意的情况是,事件一侧的系统动态将其推向事件。换句话说,如果是x>c,der(x) <= 0,如果x<=c,der(x) >= 0。另一种情况是,如果这样的事件发生在平衡点。
你说“什么样的事情可能导致这一切”,但在我看来(至少从我对你描述的理解来看)答案是显而易见的。这是你的错误块。您说它“只是一个简单的减法计算”,但是如果块中有任何条件表达式(我假设有),那么就会触发一个事件。
根据您的描述,我的猜测是,您的系统正在达到一个平衡点,正好是条件语句从true到false的临界点。因此,解决方案在那个点上的数值噪声导致它在那个阈值上来回交叉,每次触发一个事件。
https://stackoverflow.com/questions/18020323
复制相似问题