开源改变世界

软复位行为 #76

推推 grbl 3年前 (2023-01-21) 103次浏览

关闭
 打开了这个问题 2016 年 12 月 27 日 · 19条评论
关闭

软复位行为#76

 打开了这个问题 2016 年 12 月 27 日 · 19条评论

注释

软复位行为 #76

我需要在操作期间随机发出进给保持,然后发送一组不同的 G 代码。我正在使用 cntrl-X 软重置来刷新缓冲区,但这也会导致机器意外地移动一个随机量。我本以为只有缓冲区刷新。这是一个错误吗?版本 0.9 和 1.1 都表现出这种行为。
我正在开发一台机器人绗缝机,需要在断线时停止,然后反向/慢跑修复线,最后恢复缝纫。我应该使用更好的测序方法吗?

软复位行为 #76
贡献者

@Saublestarman:重置期间的跳转通常意味着您需要将步空闲延迟设置设置为 255,以在重置期间保持启用状态。

软复位行为 #76
作者

我只是尝试了你的建议,但症状仍然存在。只是要清楚…当我在发出进给保持后发出软复位时,机器不仅会移动随机量…XYZ 显示的位置也会移动。就好像在软重置期间,核心定位环被允许沿着工具路径移动一点点。

软复位行为 #76 幽灵 关闭此完成 2016 年 12 月 28 日
软复位行为 #76 幽灵 重新打开了这个 2016 年 12 月 28 日
软复位行为 #76
贡献者

@Saublestarman:您可以发布您的 $$ 设置和 $I 构建信息字符串吗?还描述了一个我可以重现的典型场景。进给保持后它不应该移动,但我会看一下。

软复位行为 #76
109JB 评论了 2016 年 12 月 28 日  

@Saublestarman:您可能正在发送“!” 和连续太快的 ctrl-x。你应该做的是发送“!” 字符,然后等待 grbl 报告的机器状态从“Hold:1”变为“Hold:0”,然后再发送 ctrl-x。

软复位行为 #76
贡献者
绕线机 评论了 2016 年 12 月 28 日 通过电子邮件
软复位行为 #76
作者

现在我正在以手动发送提要保持的方式测试我的应用程序。基本上我让一切都运转起来,然后手动点击一个 gui 按钮发送!进给保持。我等到一切都停止,通常等几秒钟,这样我就可以做一些关于位置等的笔记。然后,通常在 5 秒或更长时间没有移动后,我发送 Cntrl-X 软重置…再次使用 gui 按钮我按。就在那时,我注意到随机运动量似乎总是刀具路径的一小部分延续。最近我转而使用 Grbl 面板来进一步测试这个问题。它可以使用 Grbl Panel 重现,只需使用 Hold,然后在机器移动时几秒钟后使用 Reset 按钮。

软复位行为 #76

软复位行为 #76

软复位行为 #76
作者

我正在使用默认构建设置。我从来没有给他们发过微博。

软复位行为 #76
贡献者

你有没有试过将步空闲延迟设置为 255?它是用 $1=255 命令编写的。

软复位行为 #76
作者

桑尼,
我确实尝试过这样做。我尝试将其设置为 255,现在我已将其设置回 10。我最近的测试是让步进器不通电,只运行 Arduino UNO。运行然后 HOLD 工作正常……即使没有任何物理移动,计算的位置看起来也很棒。在进给保持期间手动发出 Cntrl-X 软复位会立即导致所有三个位置值移动少量……始终沿着原始刀具路径移动。

彼得

软复位行为 #76
贡献者

@Saublestarman:我不确定您看到的是什么以及什么会在重置后引起任何运动。你说的是多少?十分之一毫米?一小步?你如何衡量这个?它只在 GrblPanel 中吗?您是否尝试过其他 GUI 或通过串行终端直接连接到 Grbl?

也就是说,您将希望在 $1=255 的重置时始终启用您的步进器。如果它的值小于 255,它将暂时禁用步进驱动程序。这可能会导致某些驱动程序重置微步进位置并在重新启用时轻微移动。如果您的轴有一些阻力或一些存储的能量使其想要朝特定方向移动,那么当步进器被禁用时,瞬间禁用会导致机器移动。

软复位行为 #76

我刚刚尝试了 GRBL 面板,但无法复制它。我也无法在我自己的 GUI 中复制它。

软复位行为 #76
作者

这很奇怪。我刚刚用 Grbl Panel 再次测试了它。我使用了两个独立的 Arduinos……一个加载了 Grbl 0.9j,另一个加载了 Grbl 1.1e。两者的行为相似。我将有效的 G 代码文件加载到 Grbl 面板中。然后我告诉它运行,几秒钟后我按下 Hold。我记下 XYZ 位置,然后按重置。然后这些位置进一步移动了相当多的毫米,然后停止了。
更多GCODE testing.txt

我包含了我正在使用的 G 代码文件,因为我怀疑它可能起作用。我的应用程序从一个用一系列 XYZ 坐标描述的设计开始。我只是将它们转换为 G1 代码并将它们发送到附件中所列的 Grbl。

我注意到,如果我手动向 Grbl 发送一个像 X1000 这样的简单命令,并且在它执行时我调用了一个 Hold 然后 Cntrl-X 没有二次运动。

软复位行为 #76
作者

我自己的应用程序显示了这个问题,所以我决定切换到更精细的应用程序(Grbl Panel)进行比较。这不是步进电机的电气问题。我看到的动作比几步大得多。几毫米通常是数百步。我现在在没有连接步进器的情况下进行所有测试,因为这个问题纯粹是软件问题。

软复位行为 #76
贡献者
香奈儿 评论了 2016 年 12 月 29 日  

@Saublestarman:我唯一注意到的是动作的大小。它们非常小。每个大约 40 微米(0.002 英寸)。这转化为每个 g 代码块仅以 250 步/毫米的几个步骤。这可能与您所看到的有关。

在您的应用程序中,将此长度更改为更合理的值(例如 0.1 毫米或更大)是否会改变此行为?

软复位行为 #76
jahnj0584 评论了 2016 年 12 月 29 日 通过电子邮件
软复位行为 #76
109JB 评论了 2016 年 12 月 29 日  

我想我已经明白了。

我刚才在一个测试程序中复制了它,然后用不同的测试 g 代码程序在 GRBL 面板中复制了它。如果它是我认为的那样,那么它不是 GRBL 问题而是 GUI 问题。

当使用发送响应协议时,GUI 已准备就绪并准备好发送下一行 g 代码,并且只是等待来自 Grbl 的“ok”响应。当您将其搁置时,这不会改变并且 GUI 仍处于准备就绪状态。然后,当您发出重置命令时,如果您的 GUI 设置为在启动时执行任何操作,则会收到一个“ok”,并且发送循环会从它等待发送的运行循环中释放最后准备好的命令。Grbl 本身不会在重置时发送单独的“ok”响应,而是将它们附加到行的末尾,例如用于执行 $N 命令。然而,GRBL-Panel 会发送几个 $ 命令,例如 $G on reset,它会在一行中单独提示“ok”响应。

在我的运行循环中的 gui 中,运行循环例程中有几个地方带有退出循环的检查。任何重置按钮按下都会触发运行循环的立即转储,从而阻止发送排队的行。

软复位行为 #76
作者

我认为这就是问题所在。我刚刚完成了 Grbl 面板的测试。如果我按住然后重置,我会看到随机运动。如果我按住然后停止(黑色方块),最后按下重置,则位置不会改变。我可能会在我的应用程序中发现类似的错误。感谢您坚持这一点。

问候大家

彼得

软复位行为 #76 幽灵 关闭此完成 2016 年 12 月 29 日
软复位行为 #76

@109JBGrblPanel 确实有执行此操作的代码,但显然它没有按预期工作:-(我将为自己创建一个问题来查看此边缘条件。
感谢您进行故障排除。

软复位行为 #76

在 GrblPanel 1.0.9.11 中修复

此问题已关闭
喜欢 (0)