注释
我认为这也导致#579 |
我不认为它相关,它也会在没有 ON_ABORT_COMMAND 的情况下发生。 |
我运行了您的程序来重现此错误。感谢您提供清晰的步骤:通过“单击更改完成”和其他详细信息,我能够运行它
命令进入
该
作为中止的一部分,中断列表被清除,解释了 当正常的、未重新映射的块返回错误时,这实际上看起来与我们预期的完全一样:错误触发中止,为了安全停止运动并清除 interp 队列(包括任何排队的运动命令)。
如您所示,在 重新映射代码中的适当修复将捕获失败的重新映射产生的负返回代码,并在返回错误之前破坏队列。我认为这不应该在成功 查看第 198 行 有 PR 和伴随的测试会很棒。 |
以下是我重现该问题所遵循的步骤:
在 configs/sim/axis/remap/manual-toolchange-with-tool-length-switch/nc_subroutines/manual_change.ngc 中的第 62 行恢复后,添加任何 gcode,例如 g0 x0
2.
运行 configs/sim/axis/remap /manual-toolchange-with-tool-length-switch/manualtoolchange.ini
3.
启用、启动并运行程序
4.
在等待工具更改时单击更改完成。
不要按模拟接触,等待它以 -2
5失败。
g0 x0 不执行。
在 if 中,只执行 return。
6.
代码被执行,如果在返回之前添加m66 p0 l0一个queue buster。
否则,就不可能从换刀器故障中恢复,或者在换刀失败后将机器置于安全状态。
这是我期望发生的事情:
返回前要运行的代码。
这是发生了什么:
代码未执行,在预读期间返回返回。
在此之前它工作正常:
我认为这行不通。我试过 2.7 和 2.8-pre
有关我的硬件和软件的信息:
2.8-pre