首页 文章

如何在Simulink中使用高阶限速器平滑矩形信号?

提问于
浏览
1

想象一下,我有一个位置/位移 x 的矩形参考值,我需要平滑它 .

翻译运动的数学很简单:

speed: v = x'
acceleration: a = v' = x''
jerk. j = a' = v'' = x'''

我需要限制所有这些值 . 所以我考虑在Simulink中使用速率限制器:
enter image description here
这种方法适用于斜坡信号,如下面的输出所示:
enter image description here

但是, x 的参考信号没有斜坡,它们是矩形/台阶 . 因此速率限制器不起作用,因为它们限制的导数已经是无限的,并且Simulink会抛出错误 . 我该如何解决这个问题?实际上是否有更优雅的方式来实现高阶限速器?我猜这种方法在某些情况下可能不稳定 .


继续阅读:related question

4 回答

  • 0

    即使看起来很荒谬,但以下方法仍然有效:集成和即时推导可以解决问题:
    enter image description here
    导致:
    enter image description here

    更加优雅,快捷,简单的解决方案,非常适合整个平滑问题!

  • 1

    由于数值问题,在Simulink中区分信号通常不是一个好主意,我建议从高阶导数(例如加速度)开始,并在数值上更加稳健地进行积分 . 这就是doc about the derivative block所说的:

    Derivative块输出可能对整个模型的动态非常敏感 . 输出信号的精度取决于模拟中所采用的时间步长 . 较小的步骤允许来自该块的更平滑和更准确的输出曲线 . 但是,与具有连续状态的块不同,当此块的输入快速变化时,求解器不会采用较小的步长 . 根据驱动信号和模型的动态特性,该块的输出信号可能包含意外波动 . 这些波动主要是由于驱动信号输出和求解器步长 . 由于这些敏感性,构建模型以使用积分器(例如积分器块)而不是衍生块 . 积分器块具有允许求解器调整步长并提高仿真精度的状态 . 有关选择最佳形式数学模型以避免在模型中使用微分块的示例,请参阅电路模型 .

    有关详细信息,另请参见Best-Form Mathematical Models .

  • 1

    我试图做类似的事情 . 我一直在寻找“平滑的坡道” . 这是我发现的:

    更简单的方法是将斜坡与二阶滞后相结合 . 然后信号接近s形 . 而且你的衍生品也会存在并且也很平稳 . 唯一要记住的是第二次或滞后必须严格阻尼 .

    Y(s)= H(s)* X(s)其中H(s)= K * wo ^ 2 /(s ^ 2 2 * zeta * wo * s wo ^ 2) . 在这里定义zeta = 1.0 . 然后保留s形状以获得任何K和wo值 . 请注意,X(s)已被斜坡击中 . 在matlab或任何其他工具中,线性斜坡和第二滞后是标准块 .

    祝好运!

  • -1

    我认为'转移Fcn'块是您正在寻找的 .

    如果将方程式保留为默认形式1 /(s 1),则可以通过更改分子和分母系数来调整所需的低通滤波器 .

相关问题