注释
@jarretluft: 是的。这是 g 代码解析器中的错误。我在错误检查阶段进行了探测状态检查,但这并不意味着它与 Grbl 实时执行的操作同步。我将不得不考虑如何彻底解决这个问题。周末充满希望。 |
@jarretluft: 好的,现在试试。 |
好的,我刚才测试了它,虽然它不再继续处理剩余的非 G38.2 线路,但它挂起状态为“队列”并且在重置之前不会响应任何进一步的命令。 |
我应该补充一点,它仍然返回 PRB: coordinated,并显示 ok 状态,它只是不会继续序列中的下一个搜索和探测命令。 |
@jarretluft: 我的错。我没有测试它。我看看我现在能做什么。 |
@jarretluft: 仅供参考,找出这个问题的原因。给我一点点时间来想出我现在拥有的更好的补丁。 |
@jarretluft: 行。现在就试试。它应该工作。让我知道事情的后续。 |
好的,探测现在似乎可以正常工作,但是 G92 偏移量发生了一些变化。如果我运行探测命令,然后使用 G92X0Y0Z0 归零到位置,则存储在从 $# 返回的 G92 数组中的 z 偏移不会反映它应该从机器坐标的正确偏移。我不知道这是否是特定于对探测所做的更改的错误,或者这是否是其他原因…… 为了测试,我重新启动了 arduino,以便工作和机器坐标都归零。然后我运行一个探针并在 -1mm 左右触发它。探测器返回反映该响应的响应,然后我运行 G92X0Y0Z0 将该位置的机器坐标归零,但由于某种原因它没有将 z 轴偏移 1.016,而是偏移了 30,新的工作坐标反映了 z 位置为 28.981 . 不知道为什么会这样。 这是通用 gcode 发送器的输出(尖括号替换为 _): |
我认为 gcode 解析器缺少同步我在尝试探测一段时间时也看到了这个问题。 |
@jarretluft: 如果不是一回事,那就是另一回事了。我在最后一次推动时从探测周期中删除了拉动动作。这导致了 gcode 解析器的同步问题。我恢复了拉断,这应该可以解决问题。我希望这是最后一次。 |
好的,我认为现在一切都按预期工作了:) |
运行 grbl 0.9g 每当在执行探测命令时发送第二个探测命令 (G38.2),我都会遇到此错误。第二个探测命令被忽略并返回“error: Invalid gcode ID:36”,但缓冲区继续执行其他代码行。
例如,尝试沿 x 轴以 10mm 的距离执行多个探测:
G32.8Z-5F100
G0X10Z5
G32.8Z-10F100
G0X20Z5
G32.8Z-10F100
G0X30Z5
….等….
(以上代码将运行第一个探针,其他两个探针出错,并且仍然在 G0X30Z50 处结束,因为那些寻道线仍将执行)
似乎只要探测命令正在进行中,缓冲到 grbl 中的后续探测命令就会产生错误:36,但是在第一个完成后发送到 grbl 的任何命令都会正常工作。这可以通过一次发送上述行(等待 ok 或“PRB:”响应)来测试,而不是将它们作为一个流文件全部运行到 grbl 中以产生错误。
想法?