Contact me: hankecnc@gmail.com

改进点动命令 #90

推推 grbl 3年前 (2023-01-21) 246次浏览

关闭
luben111 打开了这个问题 2017 年 1 月 14 日 · 1条评论
关闭

改进点动命令#90

luben111 打开了这个问题 2017 年 1 月 14 日 · 1条评论

注释

改进点动命令 #90

v1.1 中现有的慢跑功能运行良好,但可以通过添加一个小功能来显着简化主程序对慢跑的支持。

目前,点动按以下方式工作(按下 X+ 按钮超过 500 毫秒时在 X 轴上移动的简化示例):

  1. 程序发送多个命令 $J=G91 X1.0 F1000 以保持缓冲区半满(头部相对移动 1mm,进给速率 1000mm/min)
  2. 当按下 X+ 按钮时,程序会立即发送 CMD_JOG_CANCEL(代码 0x85),它会中止运动并清除缓冲区(历史记录)

请注意,程序应始终向 GRBL 缓冲区提供新的点动命令。

另一种方法是将点动运动的单个命令发送到某个远点而不是多个小的分段运动,并在点动结束时中止运动。例如,当按下 X+ 按钮超过 500 毫秒时,我们可以发送

  1. $J=X600.0 F1000(X600是机器工作区的终点)。头部将以所需的进给速率继续向工作区域的远端移动,并且无需发送新的点动命令。
  2. 当按下 X+ 按钮时,我们发送 CMD_JOG_CANCEL(代码 0x85)立即中止运动

当我们朝相反的方向前进时(按下 X 按钮超过 500 毫秒),我们可以用类似的方式发送 $J=X0 F1000。

这种方法效果很好(如果不需要加速慢跑速度)但有一个地方并不完美 – 如果在 X+ 方向移动时用户按下 Y+ 按钮(通过仍然按住 X+ 按钮)头部应该首先停止 CMD_JOG_CANCEL 和然后开始移动到新的目标。这个“打嗝”可以通过添加一个新的命令来消除——跳过当前的点动操作(CMD_JOG_SKIP),这将强制当前的运动完成。如果用户在 CMD_JOG_SKIP 之前发送了一个新的点动命令,运动的变化将是平滑的。例如:

  1. 用户按下 X+ 超过 500 毫秒:
  • 发送 $J=X600.0 F1000
  1. 用户按下 Y+ 而 X+ 仍然按下:
  • 发送 $J=X600.0 Y400 F1000
  • 发送 CMD_JOG_SKIP 将跳过当前执行的点动命令并强制 GRBL 尽快开始执行新的 $J=X600.0 Y400 F1000
  1. 当然,当两个键都被按下时 – 发送 CMD_JOG_CANCEL

所以请求是添加一个新命令来强制完成当前执行的点动命令。

顺便说一句,一个问题——当发送取消命令(CMD_JOG_CANCEL)时,运动是立即中止(只是停止移动头部)还是使用步进器的减速曲线(防止丢失步数)?

谢谢

改进点动命令 #90
贡献者

@luben111:感谢您的想法,但我不会更改 Arduino Uno 上 Grbl 的慢跑实现。正如慢跑文档中所述,它并不理想,并且是 Uno 上不再有可用闪存和 RAM 的结果。

喜欢 (0)