【问题标题】:Zero-crossing detection in simulinksimulink 中的过零检测
【发布时间】:2016-10-23 20:58:33
【问题描述】:

我想知道何时启用/禁用 Simulink 模块中的过零检测选项。请举例说明。如果我们禁用该选项并运行模拟会发生什么?

我知道过零检测器会告诉信号过零或改变符号的次数。但我想知道我们何时必须启用此功能以及使用它的实时示例?

这里提到的弹跳球的例子可以在下面由 phil Goddard 在他的评论中提供的链接中看到。 我了解弹跳球的动力学。最初,一个球以 15 m/s 的初速度向上抛出。因此,如果我们看到速度图,最初速度是减小的,当球到达顶部时,速度为零,然后球开始下落,速度在 -ve 方向上增加。当球接触地面时,动能转化为势能和少量热能,势能又转化为动能,球开始上升。这就是为什么在零位置,速度再次上升到最大值并且遵循相同的序列。我在启用和禁用过零检测的情况下运行模型,但在范围图中没有看到任何差异。

提前致谢。

【问题讨论】:

  • 该文档有一个zero crossing detection 的示例,并附有解释。请注意,过零检测仅在模拟中有效,因为它涉及到时间倒退的可能性(寻找过零点)。它没有实时的等价物。
  • @PhilGoddard 为什么我们必须寻找零交叉点?而且我在文档中注意到,某些块有一组过零变量,用于检测上限或下限。为什么我们必须检测上限或下限?
  • 如果您正在模拟一个弹跳球(这是我之前评论中链接中的示例),您想知道球落地的确切时间吗?如果是这样,那么您需要打开过零检测。如果您对模拟显示球在撞击地面之前开始上升感到高兴,那么您不需要过零检测。阈值只是指定您对离地面有多近感到满意。较小的阈值表示需要更准确的模拟。
  • @PhilGoddard 我编辑了这个问题。我无法在此处添加评论,因为它太长了。

标签: matlab simulation simulink matlab-compiler


【解决方案1】:

您可以通过将饱和块的限制调整为 1 来使用 simulink>数学运算库 中的 符号块饱和块 的组合和 0。然后与 -1 相乘,然后加 1,这样当信号低于 0 时输出为 1,当信号高于 0 时输出为 0。

过零检测器框图:

&

过零检测器的输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2014-10-09
    • 1970-01-01
    相关资源
    最近更新 更多