从阶跃输入到两个阶跃值之间的线性斜坡的传递函数

信息处理 转换功能 系统识别
2022-01-27 00:57:54

我想要一个可以给定位置需求的线性轴的非常基本的模拟,它将以恒定速度移动到该位置。在这一点上,我不关心加速,但如果我可以修改 TF 以合并它,那将是一个奖励。

  • 我将使用 scipy 对这个模拟进行编程
  • 这是一个离散时间系统
  • 轴移动到的位置正是需求(无稳态误差,增益 1)
  • 速度是恒定的。理想情况下,我希望这是可配置的。但是为了这个例子,假设它是 0.2m/s。
  • 没有超调
  • 正负步长相同,即增减持仓需求
  • 我不关心需求变化和它开始响应之间的延迟。理想情况下,它是 0 或 1 个时间步,但这是一个非常简单的模拟,所以我不太在意。
  • 如果给它一个脉冲输入,那么它会轻微移动或根本不移动,但我对模拟这个并不感兴趣
  • 如果给定一个斜坡输入,那么如果斜坡的斜率比轴的速度更陡,它的行为类似于阶跃输入,并且即使需求斜坡不那么陡峭,它仍将以恒定速度移动(因此它将停止并开始跟踪需求)。但同样,我并不真正关心模拟这个,而是希望有一个简化的解决方案。
  • 一个非常粗略的近似值就可以了,我不需要将系统识别到现实水平。

所以基本上,代表系统的传递函数是将阶跃输入转换为在阶跃开始值和结束值之间的斜坡。如果我们还包括加速度,那么它将把一个步进输入变成一个 Sigmoid 信号。

这个传递函数是什么?

我也可以将其表示为 ZerosPolesGain 或 scipy 中的 StateSpace,因此其中任何一个都足以作为答案。

谢谢

1个回答

带有矩形窗口的简单移动平均线会将步长变成斜坡,但没有线性滤波器可以为您提供恒定的斜率,因为线性意味着缩放输入(步长)将缩放输出(斜率)。相反,您想要的是一个非线性转换速率限制器,它以恒定速率向目标迈进(例如,取“到目标的距离”和您的允许速率中的最小值,然后累积)。

如果您从不想移动“太慢”,那么您可能需要一个状态机。如果您处于稳定状态并且目标已从当前值移动“足够远”,则立即转换到移动状态。当你达到目标时,转换回稳态。如果您处于稳定状态但目标仅轻微移动,则转换到计时器状态,您仍然检查目标是否足够远以立即开始移动,但在计时器到期时也开始移动。缺点是小步长(或浅坡道)会导致您等待计时器,但这是不可避免的,除非您想不断(在最坏的情况下每个时间步长)在移动和不移动之间切换(此时您基本上都是在做PWM)。

如果您想平滑加速,则可以通过获取转换率限制器的输出并进一步对其进行滤波来完成。一个(或两个,如果你也想避免混蛋)短矩形窗口的移动平均通道通常对此很有效,并且会给你对称的加速与减速,并且仍然会在有限的时间内达到目标。也可以使用指数移动平均线(又名单极低通滤波器),但在这种情况下,您只会渐近地达到目标。