想象一下,我有一个位置/位移x
的矩形参考值,我需要平滑它。
翻译运动的数学很简单:
speed: v = x'
acceleration: a = v' = x''
jerk. j = a' = v'' = x'''
我需要限制所有这些值。所以我想在Simulink中使用速率限制器: 这种方法适用于斜坡信号,如下面的输出所示:
但是,x
的参考信号没有斜坡,它们是矩形/台阶。因此速率限制器不起作用,因为它们限制的导数已经是无限的,并且Simulink会抛出错误。我该如何解决这个问题?实际上是否有更优雅的方式来实现高阶限速器?我猜这种方法在某些情况下可能不稳定。
继续阅读:related question
答案 0 :(得分:1)
即使看起来很荒谬,但以下方法仍然有效:集成和即时推导可以解决问题: 导致:
我们非常感谢为整个平滑问题提供更优雅,更快速,更简单的解决方案!
答案 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),则可以通过更改分子和分母系数来调整所需的低通滤波器。