注释
在我的脑海中,用当前的代码很难做到这一点。我想需要一个特殊的步进例程来同步主轴上的编码器和步进器。最大的问题是确保步进器永远不会超过它们的最大加速度,这很困难,因为没有反馈。您必须不断地实时规划加速度。grbl 现在真的不能做的事情。它必须预先计划计划器中的所有内容。 调查这样的事情还很遥远,但在待办事项清单上。虽然不能说这是不可能的,但一个好的解决方案可能需要一些创造性。 |
我的第一个想法是修改stepper.c中的set_step_events_per_minute以包含当前主轴速度的除数。 |
我们可以做的一件事是,每当 grbl 检测到来自主轴电机编码器的信号并根据设定的路径步进时,都会产生步进效果。只要主轴加速度不超过步进加速度限制,这样的事情就应该起作用。如果我们能够以一种非常稳健的方式控制主轴速度,我认为这可以作为一个特殊的运动例程来完成。据我了解,这通常只用于线程,作为一个特殊的例程应该没问题。(第 4 轴不同,因为您使用步进器而不是主轴本身控制旋转台。) |
我参与了另一个控制器中的线程代码。它真的没有那么难。我已经很多年没看过该代码了,但我在某个地方找到了它。它不是 GPL,但我可以将其用作参考。无论如何都没有关系,因为工具移动在其中完全不同。 首先要确保可以达到所需的轴速度。这是螺距和主轴速度的函数。我们使用的螺纹代码假设主轴速度恒定,这是一个很好的起点。 一旦知道轴速度正常,就可以检查加速度。该工具以某种速度位于某个起点,距离螺纹起点有一段距离。主轴转速和螺距决定了所需的最终速度。问题变成了需要多大的加速度才能使轴达到适当的速度,它是否可以实现。 如果无法满足这些条件中的任何一个,则该过程会因错误而关闭。 通常螺纹足够细,主轴转速合理,很容易从轴上获得所需的加速度和速度。 所以一旦我们知道速度和加速度都可以,那么我们就必须同步起点。螺纹循环多次通过以切割螺纹。并且每次通过都必须从工件上完全相同的点开始。所以你要做的是关闭工具,然后暂停它等待下一次同步。一旦你同步了它,它只是为每个主轴脉冲发出这么多步的问题。而且您必须为每个接收到的脉冲计时,因为机器通常会随着工具加载而减慢速度。 清澈如泥? |
您必须记住,所有这些都发生在一个 Gcode 中。您可以在同步点之前进行运动规划,然后停止规划并让主轴脉冲控制运动一段时间。然后恢复计划的动作。 如果我没记错的话,除了在高主轴转速下最粗的螺纹外,几乎可以从停止的轴到完全的步进速度,中间没有任何东西。请注意,那是基于伺服的机器,使用带有 PID 回路的伺服驱动器。步进电机可能是一个完全不同的故事。 |
我想知道是否有一种简单的方法可以将步进速率与(正交)编码器信号的速度同步。
如果实施,grbl 可以用作车床数控控制器(例如用于螺纹加工),或用作铣床第 4 轴的控制器(例如用于齿轮切削)。
但我必须承认,我没有深入研究计划程序代码……