想象一下,我有一个位置/位移 x
的矩形参考值,我需要平滑它 .
翻译运动的数学很简单:
speed: v = x'
acceleration: a = v' = x''
jerk. j = a' = v'' = x'''
我需要限制所有这些值 . 所以我考虑在Simulink中使用速率限制器:
这种方法适用于斜坡信号,如下面的输出所示:
但是, x
的参考信号没有斜坡,它们是矩形/台阶 . 因此速率限制器不起作用,因为它们限制的导数已经是无限的,并且Simulink会抛出错误 . 我该如何解决这个问题?实际上是否有更优雅的方式来实现高阶限速器?我猜这种方法在某些情况下可能不稳定 .
继续阅读:related question
4 回答
即使看起来很荒谬,但以下方法仍然有效:集成和即时推导可以解决问题:
导致:
更加优雅,快捷,简单的解决方案,非常适合整个平滑问题!
由于数值问题,在Simulink中区分信号通常不是一个好主意,我建议从高阶导数(例如加速度)开始,并在数值上更加稳健地进行积分 . 这就是doc about the derivative block所说的:
有关详细信息,另请参见Best-Form Mathematical Models .
我试图做类似的事情 . 我一直在寻找“平滑的坡道” . 这是我发现的:
更简单的方法是将斜坡与二阶滞后相结合 . 然后信号接近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或任何其他工具中,线性斜坡和第二滞后是标准块 .
祝好运!
我认为'转移Fcn'块是您正在寻找的 .
如果将方程式保留为默认形式1 /(s 1),则可以通过更改分子和分母系数来调整所需的低通滤波器 .