开源改变世界

探测 – 无效的 gcode id:36 #458

推推 grbl 2年前 (2023-01-22) 166次浏览

关闭
jarretluft 打开了这个问题 2014 年 8 月 1 日 · 11 条评论
关闭

探测 – 无效的 gcode id:36#458

jarretluft 打开了这个问题 2014 年 8 月 1 日 · 11 条评论

注释

探测 - 无效的 gcode id:36 #458

运行 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 中以产生错误。

想法?

探测 - 无效的 gcode id:36 #458
成员

@jarretluft: 是的。这是 g 代码解析器中的错误。我在错误检查阶段进行了探测状态检查,但这并不意味着它与 Grbl 实时执行的操作同步。我将不得不考虑如何彻底解决这个问题。周末充满希望。

探测 - 无效的 gcode id:36 #458 chamnit 添加了 去做 标签 2014 年 8 月 1 日
探测 - 无效的 gcode id:36 #458
成员

@jarretluft: 好的,现在试试。

探测 - 无效的 gcode id:36 #458
作者

好的,我刚才测试了它,虽然它不再继续处理剩余的非 G38.2 线路,但它挂起状态为“队列”并且在重置之前不会响应任何进一步的命令。

探测 - 无效的 gcode id:36 #458
作者

我应该补充一点,它仍然返回 PRB: coordinated,并显示 ok 状态,它只是不会继续序列中的下一个搜索和探测命令。

探测 - 无效的 gcode id:36 #458
成员

@jarretluft: 我的错。我没有测试它。我看看我现在能做什么。

探测 - 无效的 gcode id:36 #458 chamnit 重新打开了这个 2014 年 8 月 2 日
探测 - 无效的 gcode id:36 #458
成员

@jarretluft: 仅供参考,找出这个问题的原因。给我一点点时间来想出我现在拥有的更好的补丁。

探测 - 无效的 gcode id:36 #458
成员

@jarretluft: 行。现在就试试。它应该工作。让我知道事情的后续。

探测 - 无效的 gcode id:36 #458
作者

好的,探测现在似乎可以正常工作,但是 G92 偏移量发生了一些变化。如果我运行探测命令,然后使用 G92X0Y0Z0 归零到位置,则存储在从 $# 返回的 G92 数组中的 z 偏移不会反映它应该从机器坐标的正确偏移。我不知道这是否是特定于对探测所做的更改的错误,或者这是否是其他原因……

为了测试,我重新启动了 arduino,以便工作和机器坐标都归零。然后我运行一个探针并在 -1mm 左右触发它。探测器返回反映该响应的响应,然后我运行 G92X0Y0Z0 将该位置的机器坐标归零,但由于某种原因它没有将 z 轴偏移 1.016,而是偏移了 30,新的工作坐标反映了 z 位置为 28.981 . 不知道为什么会这样。

这是通用 gcode 发送器的输出(尖括号替换为 _):
Grbl 0.9g [‘$’ for help]
[verbose]_Idle,MPos:0.000,0.000,0.000,WPos:0.000,0.000,0.000*
*** $ #
[G54:0.000,0.000,0.000]
[G55:0.000,0.000,0.000]
[G56:0.000,0.000,0.000]
[G57:0.000,0.000,0.000]
[G58:0.000,0.000,0.000]
[G59:0.000 ,0.000,0.000]
[G28:0.000,0.000,0.000]
[G30:0.000,0.000,0.000]
[G92:0.000,0.000,0.000]
[TLO:0.000]
[PRB:0.000,0.000,0.000]

*** G38.2Z-30F5
[PRB:0.000,0.000,-1.016]
正常
*** G92X0Y0Z0
正常
*** $#
[G54:0.000,0.000,0.000]
[G55:0.000,0.000,0.000]
[G56:0.000,0.000,0.000]
[G57:0.000,0.000,0.000]
[G58:0.000,0.000,0.000]
[G59:0.000,0.000,0.000]
[G28:0.000,0.000,0.000]
[G30:0.000, 0.000,0.000]
[G92:0.000,0.000,-30.000]
[TLO:0.000]
[PRB:0.000,0.000,-1.016]
ok
[详细] Idle,MPos:0.000,0.000,-1.019,WPos:0.000,0.000, 28.981

探测 - 无效的 gcode id:36 #458
贡献者

我认为 gcode 解析器缺少同步我在尝试探测一段时间时也看到了这个问题。

探测 - 无效的 gcode id:36 #458
成员

@jarretluft: 如果不是一回事,那就是另一回事了。我在最后一次推动时从探测周期中删除了拉动动作。这导致了 gcode 解析器的同步问题。我恢复了拉断,这应该可以解决问题。我希望这是最后一次。

探测 - 无效的 gcode id:36 #458
作者

好的,我认为现在一切都按预期工作了:)
感谢您为此所做的工作!

喜欢 (0)