【问题标题】:OpenModelica "Change" block does not work properly. [Beginner]OpenModelica“更改”块无法正常工作。 [初学者]
【发布时间】:2021-12-24 09:54:31
【问题描述】:

总的来说,我对 Modelica 很陌生,但我有一个项目需要尽快完成。如果我说的内容真的很基本,我深表歉意。我已经尝试了一些调整并在互联网上进行了搜索,但我似乎无法弄清楚如何做到这一点。

我创建了一个模型。里面有一个带有布尔输出的块,我们将这个输出布尔变量称为Y1

连接到该块我使用Modelica.Blocks.Logical.ChangeModelica.Blocks.MathBoolean.ChangingEdge 块。我都试过了,因为如果我理解正确,他们会做同样的事情。 Y1 是这个块的输入。

所以基本上当Y1true 变为false 或从false 变为true 时,Change 块的输出(我们称之为Y2)应该是true只是为了那个时间步。

这不会发生。 Y2 一直在 false。我已经检查过了,Y1 会随着时间而改变。

我也尝试过运行示例Modelica.Blocks.Examples.BooleanNetwork1,但我也看到了同样的情况。所需的输出也不会更改为示例。

作为参考,我使用 OpenModelica 1.17 和 Modelica 标准库 3.2.3。这些是我有义务使用的版本,我不能使用新旧版本。

任何提示将不胜感激!谢谢。


PS 如果这不起作用,我想使用不同的东西。有没有一种方法可以访问另一个块中 Y1 的所有先前值(历史记录),并使用那里的算法找到这些更改?因此,假设我在时间步 N 上,并且在一个块内,我想从 0 到 N-1 访问 Y1 并找到 Y1 更改的最后一个时间步。

【问题讨论】:

    标签: modelica openmodelica


    【解决方案1】:

    您如何检查change 块的输出不会在事件中触发?您可能无法在情节中看到它,因为冲动“无限”短暂(至少,这是我对 Dymola 的经验)。

    您可以通过将 change 块的输出连接到 SR 触发器来锁定来自 change 块的脉冲。

    【讨论】:

    • 感谢您的回复。你可能是对的。但我在想的是,首先绘图会根据变量的值自动缩放,并且范围太短(如果我没记错的话,0 到 0.4),这意味着除了零之外不存在更高的值。其次,我试图尽可能放大,但我没有注意到任何东西。甚至不是一个简单的尖峰。
    • 不要相信情节。另见问题stackoverflow.com/q/68953428/8725275。汉斯有一个很好的解释为什么你看不到变化。
    • 感谢两位的帮助!确实,该区块正在运行,并且这些情节是不值得信赖的。我能够在 Modelica.Blocks.MathInteger.TriggeredAdd 等附加块的帮助下捕获它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多