Matlab simulink中的过零检测

Matlab simulink中的过零检测,matlab,simulation,simulink,matlab-compiler,Matlab,Simulation,Simulink,Matlab Compiler,我想知道何时在Simulink块中启用/禁用过零检测选项。请举例说明。如果禁用该选项并运行模拟,会发生什么 我知道过零检测器会告诉信号过零或改变符号的次数。但是我想知道什么时候我们必须启用这个和一个使用它的实时示例 这里提到的弹跳球的例子可以在下面菲尔·戈达德在评论中提供的链接中看到。 我了解弹跳球的动力学。最初,以15 m/s的初始速度向上抛一个球。所以如果我们看到速度图,初始速度是下降的,当球到达顶部时,速度为零,然后球开始下降,速度在-ve方向上增加。当球接触地面时,动能转化为势能和少量热

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

我知道过零检测器会告诉信号过零或改变符号的次数。但是我想知道什么时候我们必须启用这个和一个使用它的实时示例

这里提到的弹跳球的例子可以在下面菲尔·戈达德在评论中提供的链接中看到。 我了解弹跳球的动力学。最初,以15 m/s的初始速度向上抛一个球。所以如果我们看到速度图,初始速度是下降的,当球到达顶部时,速度为零,然后球开始下降,速度在-ve方向上增加。当球接触地面时,动能转化为势能和少量热能,势能再次转化为动能,球开始上升。这就是为什么在零位时,速度再次上升到最大值,同样的顺序也随之发生。我在启用和禁用过零检测的情况下运行模型,但在范围图中没有看到任何差异


提前感谢。

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

过零检测器方框图:

&

过零检测器的输出:


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

过零检测器方框图:

&

过零检测器的输出:


文档中有一个带有说明的示例。请注意,过零检测仅在模拟中有效,因为它涉及时间倒退的可能性(寻找过零点)。它在实时性上没有等价物。@PhilGoddard为什么我们要寻找过零点?我还注意到,在文档中,对于某些块,有一组过零变量,用于检测上阈值或下阈值。为什么我们必须检测上限或下限?如果你正在模拟一个反弹的球(这是我之前评论中链接中的例子),你想知道球落地的确切时间吗?如果是这样,则需要启用过零检测。如果您对模拟显示球在落地前开始上升感到满意,则不需要进行过零检测。阈值仅指定您满意的离地面的距离。一个小的阈值表示需要更精确的模拟。@PhilGoddard我编辑了这个问题。我无法在这里添加评论,因为它太长了。文档中有一个带有解释的示例。请注意,过零检测仅在模拟中有效,因为它涉及时间倒退的可能性(寻找过零点)。它在实时性上没有等价物。@PhilGoddard为什么我们要寻找过零点?我还注意到,在文档中,对于某些块,有一组过零变量,用于检测上阈值或下阈值。为什么我们必须检测上限或下限?如果你正在模拟一个反弹的球(这是我之前评论中链接中的例子),你想知道球落地的确切时间吗?如果是这样,则需要启用过零检测。如果您对模拟显示球在落地前开始上升感到满意,则不需要进行过零检测。阈值仅指定您满意的离地面的距离。一个小的阈值表示需要更精确的模拟。@PhilGoddard我编辑了这个问题。我无法在这里添加评论,因为它太长了。