开源改变世界

实施 M112 #836

推推 grbl 3年前 (2023-02-06) 189次浏览
关闭
DanNixon 打开了这个问题 2014 年 3 月 15 日 · 10 条评论
关闭

实施 M112#836

DanNixon 打开了这个问题 2014 年 3 月 15 日 · 10 条评论

评论

实施 M112 #836
贡献者

我认为没有理由不实施,特别是因为RepRap wiki 的这一页暗示它应该实施。

实施 M112 #836
贡献者

我一直在考虑如何做到这一点。您将不得不提前结束任何缓冲的移动或正在进行的 M109/M190 代码。还认为在不完全关闭机器的情况下执行这些操作的方法对于手动控制机器很有用。例如,您可以放置​​滑块(甚至是代表整个平台的正方形)以在手动控制模式下控制轴的位置,实时调整它们(或在最大进给率允许的范围内尽可能接近)。

实施 M112 #836
贡献者作者

经过一番挖掘后,我认为呼叫kill()是最合适的操作,这就是在任何传统 CNC 机器上按下紧急停止都会执行的操作(即停止所有操作并需要完全重置机器)。
我已经打开了一个 PR ( #838 )。

实施 M112 #836
贡献者

是的,虽然这似乎没有任何东西可以中断 M109、M190 或正在进行的移动,但这是重要的或紧急停止功能。

实施 M112 #836
贡献者作者

确实你是对的。
我想我已经找到了解决方法,但必须等到明天才能进行测试。

实施 M112 #836

目前无法通过串行端口进行紧急停止。只有在上一个命令完成后才会处理它。杀死是最好的简单解决方案。但我不会称之为紧急停止。

实施 M112 #836
贡献者作者

我当前(未经测试)的解决方案是定期调用get_command()frommanage_inactivity()然后实现一个函数,该函数将检查 M112 的命令缓冲区,如果找到则调用kill()
这将允许 M112 模仿终止按钮/销的功能,它似乎具有紧急停止的预期功能。
但是,如果在发送 M112 之前缓冲区已满,这将不起作用,因此仍然不是具体的解决方案。

实施 M112 #836
贡献者作者

我刚刚意识到,是否有可能检查 M112,get_command()以便 M112 在被操作之前永远不必到达缓冲区?
仍然get_command()manage_inactivity().

实施 M112 #836
贡献者

目前情况如何?我本可以使用它,因为我有一个失控的 M109 命令,并且由于 M112 没有做任何事情而无法停止它,并且不得不拔掉控制器上的插头。