开源改变世界!!

如何检测命令是否已实际执行? #807

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

关闭
arminlinder 打开了这个问题 2020 年 2 月 9 日 · 4条评论
关闭

如何检测命令是否已实际执行?#807

arminlinder 打开了这个问题 2020 年 2 月 9 日 · 4条评论

注释

如何检测命令是否已实际执行? #807
阿明林德 评论了 2020 年 2 月 9 日  

大家好,
我正在致力于将 GRBL 控制的 CNC 轴集成到应用程序中。一般串口通讯都很好,但我还没有找到解决以下问题的满意方法:

大多数 GRBL 命令,如 G0X… 将在接收/缓冲时以“ok”确认,但在实际执行和完成时不会。如果我打算发送这样的序列:

$110=300
G0X400
$110=80
G0X0

并在我收到“ok”后发送下一个命令,第二个设置速度($110=80)命令将以错误 8 结束,因为只有当机器完成处理前一个 G0 命令时我才能改变速度。

我尝试了几种方法,例如通过使用“?”轮询机器状态来等待“空闲”和“运行”状态。命令,但结果并不令人满意。

谁能告诉我如何组织我的通信,以便我可以可靠地检测到 GRBL 何时准备好接收下一个命令?

谢谢,阿尔敏

如何检测命令是否已实际执行? #807

不要那样做。110 美元是您设置一次的机器限制,它存储在 eeprom 中。
G0 是为了让机器尽可能快地移动,如果你想移动特定的速度,请使用 G1 而不是它的用途

G1X400F300
G1X0F80

如何检测命令是否已实际执行? #807
作者
阿明林德 评论了 2020 年 2 月 9 日  

有趣的!我不知道这个。这确实会解决我的一些问题,如果不是全部的话。

我仍然看到一个问题来检测 G 代码程序的最后一个命令何时执行。如果我用 G1X0F1000 结束我的 G 代码,我会立即得到“确定”,但机器仍将在几秒钟内到达 0/0/0。

在我以前的尝试中,我学会了害怕简单地轮询“空闲”的方法。

有更好的方法吗?

[编辑:我发现,我可以在我的程序末尾附加一个 G04P1,这在机器实际结束最后一步后 1 秒给了我最后的“确定”。也许有更好的方法?]

谢谢,阿敏。

如何检测命令是否已实际执行? #807
作者
阿明林德 评论了 2020 年 2 月 10 日  

0.01 甚至比 1 更好 :-)

谢谢!

喜欢 (0)