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

时间:2013-09-18 11:50:53

标签: matlab customization limit simulink derivative

想象一下,我有一个位置/位移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 :(得分:1)

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

我们非常感谢为整个平滑问题提供更优雅,更快速,更简单的解决方案!

答案 1 :(得分:1)

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

  

衍生块输出可能对动态非常敏感   整个模型。输出信号的准确度取决于   模拟中采用的时间步长。较小的步骤允许a   该块的输出曲线更平滑,更准确。然而,   与具有连续状态的块不同,求解器不会   当此块的输入快速变化时,采取较小的步骤。   取决于驱动信号和模型的动态,输出   该块的信号可能包含意外波动。这些   波动主要是由于驱动信号输出和求解器   步长。

     

由于这些敏感性,请构建您的模型以供使用   积分器(例如积分器块)代替微分块。   积分器块具有允许求解器调整步长的状态   并提高模拟的准确性。请参阅电路模型   选择最佳形式的数学模型以避免使用的例子   模型中的衍生块。

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

答案 2 :(得分:0)

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

更简单的方法是将斜坡与二阶滞后相结合。然后信号接近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或任何其他工具中,线性斜坡和第二滞后是标准块。

祝你好运!

答案 3 :(得分:-1)

我认为'转移Fcn'阻止是你正在寻找的。

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