开源改变世界!!

当 GRBL 通过重置/中止引脚重置时,UGS 不会停止流式命令 #1341

推推 grbl 2年前 (2023-01-28) 175次浏览
关闭
dvsingletary 打开了这个问题 2020 年 1 月 9 日 · 2 条评论
关闭

当 GRBL 通过重置/中止引脚重置时,UGS 不会停止流式命令#1341

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

注释

当 GRBL 通过重置/中止引脚重置时,UGS 不会停止流式命令 #1341

当 GRBL 通过复位/中止引脚复位时,它可能会或可能不会进入警报状态(这取决于机器在复位/中止时是否处于运动状态)。警报状态意味着机器可能由于突然停止而失去了它的位置。

在某些情况下,UGS 正在运行程序但机器并未主动运行。最容易演示的是包含 G4 驻留命令的程序。在驻留期间,如果在 grbl 上触发了重置/中止,它会重置控制器状态但不会发出警报。即使控制器状态已重置,UGS 仍会继续发送程序。这可能很糟糕!在我发现这个错误的情况下,我正在以英寸 (G20) 为单位切割一个程序,并且在我看到我忘记添加防尘靴的程序中做了一点,所以我按下了连接到重置/的控制器上的按钮在 grbl 上中止,它停止了路由器,但随后快速移动到 WCS 家附近的位置。结果是重置将 grbl 放回 mm (G21),而 UGS 仍在将程序以英寸为单位转储到 GRBL。

预期行为:当通过重置/中止引脚重置 GRBL 时,无论如何 UGS 都应停止流式传输。我认为确定这一点的方法是通过“Grbl 1.1h [‘$’寻求帮助]”消息 grbl 在重置后立即发送。如果 UGS 在流式传输 gcode 时看到此消息,它应该停止

我一直在深入研究 grbl 代码以进一步了解这一点,我认为这不是 grbl 固件的具体问题(尽管一个简单的解决方法是让 grbl 在触发重置/中止引脚时始终进入警报状态),因为至少当它处于警报状态时,它不会响应来自 UGS 的任何其他命令。

我有兴趣学习如何为 UGS 设置开发环境,这样我就可以尝试自己解决这个问题,但我想看看我是否遗漏了一些关于 UGS/grbl 应该如何表现的明显信息。

当 GRBL 通过重置/中止引脚重置时,UGS 不会停止流式命令 #1341
所有者

有一些关于 UGS 开发入门的文档。看一看问问题:http ://winder.github.io/ugs_website/dev/getting_started/

我认为您是对的,您可以通过查找版本字符串来确定 GRBL 已重置。你应该能够在这里添加一些逻辑:

https://github.com/winder/Universal-G-Code-Sender/blob/master/ugs-core/src/com/willwinder/universalgcodesender/GrblController.java#L197

当 GRBL 通过重置/中止引脚重置时,UGS 不会停止流式命令 #1341
作者

我已经解决了这个问题,但它还需要一个小的修复来让 grbl 更健壮。我需要与 grbl 的首席开发人员交谈,以了解我提出的修复方法是否是正确的解决方法。简而言之,我对此的决心是:

  1. UGS – 在收到“Grbl…”版本字符串时需要停止流式传输命令。目前它会重置缓冲区但不会停止流式传输命令,除非有来自 Grbl 的警报,并且只有在启动停止/中止时 Grbl 正在运动时才会发生这种情况。在某些情况下,这并非会导致机器崩溃的情况。
  2. grbl – 为了防止两艘船通过问题,其中 grbl 为命令发送“ok”,并立即重置/中止并同时发送“Grbl …”版本字符串 UGS 发送下一个命令字符串(和grbl在 rest之后解释此命令(坏)),在主循环中回收之前,在收到重置/中止后,需要在 grbl 中添加一个短暂的延迟。此延迟将为 UGS 发送下一个命令提供时间,并且当主循环循环阻止它在复位后被看到时,它将从串行缓冲区中转储。
当 GRBL 通过重置/中止引脚重置时,UGS 不会停止流式命令 #1341 breiler 将此 添加到 更好的控制器支持中的待办事项 2021 年 7 月 14 日
bertieconfundo 将提交提交给 bertieconfundo/Universal-G-Code-Sender 以引用此问题 2021 年 8 月 29 日

喜欢 (0)