开源改变世界!!

下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线 #938

推推 grbl 2年前 (2023-01-23) 127次浏览

关闭
dmalicky 打开了这个问题 2016 年 3 月 25 日 · 9条评论
关闭

下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线#938

dmalicky 打开了这个问题 2016 年 3 月 25 日 · 9条评论

注释

下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线 #938

这是一个运动规划器功能的想法,可以通过步进电机获得高加速度和高速。这可能不是一个新想法,但我不知道有任何业余爱好规划者这样做过。

背景,正如你们大多数人可能知道的那样:

  • CNC 运行时间取决于轴加速度和最大速度,尤其是对于复杂的特征、轻切削和长急流。
  • 步进电机的扭矩在失速时最大,在 1000-2000 rpm 左右减小到~零。
  • 最大轴加速度受电机扭矩 (a = F/m) 的限制。
  • 传统的运动规划器要求用户指定最大加速度,但这个加速度是固定的,与电机 RPM 和轴速度无关。用户指定一个折衷的值,该值是快速加速和最高速度的折衷方案——不能同时具有两者。
  • S 曲线加速规划器提供平滑运动(无冲击),但不考虑电机的扭矩-RPM 关系。并且 S 曲线加速运行时间通常比 bang-bang 加速慢,因为停止后的加速很慢。

请看这张图片来解释这个想法: http ://home.sandiego.edu/~dmalicky/accel.jpg

蓝线是典型步进电机的扭矩曲线。

红线是典型的恒定加速度设置:

  • 选择加速值以在 1000 rpm 时提供一定百分比的储备扭矩。
  • 速度限制在 1000 rpm,因为高于此速度丢失步数的风险很高。
  • 在低转速下,有大量未使用的扭矩储备。
  • 当然,用户可以选择更高的加速度,但他们必须进一步限制快速速度,以便仍然有足够的储备扭矩。

绿线显示线性加速度曲线:

  • 在 0 rpm 时,加速度比常量情况高 2.5 倍,但步进电机仍保持在其扭矩能力范围内。
  • 在 1000 rpm 时,加速度与常量情况相同。
  • 储备扭矩类似于恒定情况(绿线与蓝线平行)。
  • 轴继续加速到 ~1500 rpm 以获得更好的快速速度。并且在达到最大速度时没有颠簸。
  • 一个完整的 S 曲线加速规划器现在可以在低转速下利用更高的扭矩:这样,它可能比 bang-bang 加速更快。
  • 因此,用户获得更快的加速度、更快的急流,并且没有急动(至少在最高速度下)。

我不知道这有多难实施。我记得 Sythetos 在 Due cpu 上有 S 曲线加速度,所以这在基于 ARM 的 GRBL 上是否可行?

想法?

下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线 #938
成员

@dmalicky: 这实际上是我已经考虑了一段时间的想法。确实,您可以通过将电机扭矩建模为非常量或近似线性斜率来提高机器性能,就像您所展示的那样。问题在于规划数学变成了一个需要实时解决的非线性和非平凡问题。(TinyG的planner也不是真正的high order planner,我上次查的时候只是简单的暴力破解但是数学上不能保证最优解或者根本没有解,会导致丢步。)有LinuxCNC 或 Mach3 也没有高阶规划的原因。它并不像看起来那么简单。有很多研究论文出于工业目的研究这个问题。

无论如何,这是我继续努力的事情,看看是否可以制定一个稳健的算法来保证最优解并且永不发散。我认为我很接近,但每当我这么想时,我通常是错的。

下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线 #938
作者

@chamnit 谢谢,桑尼,非常有趣。很高兴听到您已经在研究它(以及许多其他想法,我敢肯定)。感谢您为 GRBL 所做的所有努力。

我不知道 TinyG 规划器。我想知道工业机器是否需要这种类型的 accel = f(rpm) 控制,因为它们使用的伺服系统大多是恒定扭矩。

我可以想象高阶 3D 规划的数学非常复杂。我记得 Art 编写了 Tempest 规划器作为 Mach3 的实验,它运行良好,但速度慢了大约 30%。IIRC 几年前尝试过,用户仍然指定了 1 个加速值(不考虑步进扭矩曲线)——即,它是 S 曲线,但仅此而已。

我完全同意解决方案需要稳健,以免遗漏步骤。这胜过速度和平稳性。你能再多说说“最优”是什么意思吗?例如,如果低速步进加速器有 2 倍的增益,即使与最佳解决方案有很大的偏差也可能没问题吗?

我很好奇,如果它是一个或另一个:

  1. S 曲线加速/最小加加速度控制,仅用于平滑度(没有特别考虑扭矩 = f(rpm) )
  2. Accel = f(rpm) 控制,仅针对速度(没有特别尝试最小化冲击)
    哪个更难实现?

谢谢,大卫

下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线 #938
成员

@dmalicky:工业机器通常有 FPGA 或比 AVR 甚至 ARM 芯片更强大的东西。为了解决高阶运动控制问题,他们只是使用纯粹的力量。

我的意思是 Grbl 的规划器的最优生成一个数学上的最优计划,该计划在模型假设及其缓冲区中的内容内最小化时间或最大化加速度。请注意,无论何时将三阶加加速度添加到计划中,实际上都会使机器移动得更慢,因为在相同的时间内,加速度曲线下方的面积并不大。也就是说,如果加速设置相同。

当然,可以做一些事情来创建次优的运动配置文件,但我认为不值得努力制作一些不完美的东西,因为某些运动场景需要不断修补。最好提出问题并正式解决所有情况。这可能是不可能的或非常困难的,但我认为值得尝试。

后者的访问控制会更容易。问题提出来更好。

下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线 #938
作者

@chamnit 谢谢,很棒的东西。

这就是为什么加加速度控制较慢的原因。我刚刚阅读了有关 Tempest 的资料——在其开发接近尾声时,Art 能够使运行时间大致相同。就像你提到的,他只是将最大加速度提高了 30%,因为他发现电机可以处理这个问题,而不是爆炸式加速度。我不知道数学是否支持该策略。 http://www.machsupport.com/forum/index.php/topic,12042.msg96261.html#msg96261

太棒了,您正在寻找最佳解决方案。我同意,如果次优意味着必须对规划器进行修补才能执行某些动作,这不是一个很好的解决方案。我正在收集(至少)这些计划者的目标?

  1. 稳健:不漏步,可应对任何运动场景
  2. 计算上可行:对于假定的任何硬件
  3. 快速:高加速度和急流,运行时间短
  4. 平滑:最小的冲击
  5. 最佳:最快和/或最流畅的可能解决方案
    不完全是小菜一碟。
下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线 #938
成员

@dmalicky: 有趣的。不知道 Art 尝试实施 S 曲线,但是是的,增加最大加速度会抵消较慢的 S 曲线计划。

的确,不完全是小菜一碟,但如果不难的话,也不值得做。

下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线 #938
作者

@chamnit 很高兴您正在前往 GRBL。

下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线 #938

Stepper_Motor_Speed_Profile.pdf
我想有些人之前已经阅读过这个关于步进电机规划的 pdf 文件。我把它放在这里是为了那些没有的。David Austin 似乎能够在 PIC 上运行时完成这一切,但需要一些巧妙的简化数学。

下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线 #938
成员

@Moffy: 是的。这种步进算法已经存在了一段时间。我玩了一会儿。据我所知,它的主要问题是四舍五入等数值问题。它仅在狭窄的频率范围内起作用。它有很多分歧。

下一个GRBL的建议:Accel = f(speed),像步进扭矩曲线 #938

很高兴知道。谢谢。

喜欢 (0)