开源改变世界!!

复位/中止引脚的当前实施可能导致意外的机器运动 #793

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

打开
dvsingletary 打开了这个问题 2020 年 1 月 11 日 · 1条评论

注释

复位/中止引脚的当前实施可能导致意外的机器运动 #793
双单 评论了 2020 年 1 月 11 日  

在少数情况下,如果在 grbl 向 gcode 发送方发送“ok”后立即触发重置/中止(通过 A0 引脚),grbl 将在重置后从发送方接收下一个命令。重置后,许多状态值被重置(例如 G20/G21),这可能导致机器崩溃。

我提出两种解决方案之一:

  1. 在主循环结束时添加延迟。延迟会在发送的最后一个“ok”和完成重置之间创建一个最小间隔,这意味着任何响应“ok”而发送的新命令都会在重置前的延迟后从串行缓冲区中转储。该解决方案不是防弹的。没有实时保证 gcode 发送者将以多快的速度响应下一个命令的“ok”,因此没有足够长的延迟来避免问题。
  2. 唯一的防弹解决方案是在中止/重置引脚被触发时始终向机器发出警报(EXEC_ALARM_ABORT_CYCLE),无论机器是否在运动中。这需要 gcode 发送器上的操作员有意“解锁”以确认重置,并确保重置grbl 不会解释与重置同时发送的任何错误命令。

除了上面的解决方案 2 之外,还有其他方法可以以防弹方式解决这个问题吗?

复位/中止引脚的当前实施可能导致意外的机器运动 #793
作者
双单 评论了 2020 年 1 月 13 日  

仔细考虑一下,虽然从技术上讲,不能保证来自 gcode 发送方的“ok”-> 下一个命令的响应延迟,但实际上它通常非常低——如果不是这样,gcode 发送方将停止并且无法使用。我认为假设几乎 100% 的时间 gcode 发送器将在 500 毫秒内发送下一个命令是合理的。因为解决方案 2(每次在软复位中断时发出警报)更具破坏性,我认为解决方案 1 是两者中更好的。

喜欢 (0)