开源改变世界

进给保持后运动继续,然后取消 #1026

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

关闭
DasWookie 打开了这个问题 2016 年 6 月 27 日 · 23条评论
关闭

进给保持后运动继续,然后取消#1026

DasWookie 打开了这个问题 2016 年 6 月 27 日 · 23条评论

注释

进给保持后运动继续,然后取消 #1026

所以我遇到了一个问题,这可能是设计使然,但与预期相反。我正在做一些棘手的 CAM,要求我在运行过程中保持进给。这让我可以停止运行,并进行测量……我的问题是,如果我按下进给保持,然后取消,在按下进给保持之前发生的运动,然后恢复!这导致我不得不重做操作,在同一位置再次进给保持,然后按下我的急停按钮,以确保一切都保持原样。当我按下取消键时,我的期望是,在进给保持状态下,一切都会停在那里……而不是尝试(我猜)“滑行”到停止……当机器已经被保持时.

我可能会生成一小段 gCode 来测试这个特定的操作序列,但相信我的解释足以重现场景。

正如我所说的……这很可能是设计使然,或者任何改变它的东西都可能太复杂而无法尝试解决……但在我看来这并没有做预期发生的事情,并可能导致某人崩溃或无法阻止他们预期的坏事发生。

进给保持后运动继续,然后取消 #1026
成员

@DasWookie您使用的是什么 gcode 发件人?这听起来不像是 GRBL 错误。

进给保持后运动继续,然后取消 #1026
作者

我正在使用 bCNC,但我正在点击保持/取消按钮以连接到 grbl。我使用的是 GRBL 的 9j,禁用了可变主轴(连接到继电器以打开/关闭 DeWalt DWP611),但除此之外,其他所有内容都是 GRBL 中的骨料设置。

进给保持后运动继续,然后取消 #1026
成员

@DasWookie: 这绝对听起来像是一个 GUI 问题。您需要查看按钮键绑定是如何在 bCNC 中设置的。特别是,取消按钮是否尝试在取消时将系统设置回空闲状态。

进给保持后运动继续,然后取消 #1026
作者

嗯嗯。有趣的。据我所知,当通过取消按钮(将引脚设置为接地)向 GRBL 发出取消时,我在 bCNC 用户界面上看到的情况往往与发出的命令一致(可能只是缓冲区的价值)但被 GRBL 忽略。最终,UI“赶上”取消命令,并识别出运行已中止。我想作为诊断测试,我可以按进给保持,拔出 USB,然后按取消。这会告诉我 UI 是否以某种方式参与,以及它是否是 GRBL 试图滑行。

当我直接点击取消时,观察到的行为有所不同,其中一切都只是停止与当我点击进给保持,然后点击取消时。

进给保持后运动继续,然后取消 #1026

您只需要从 gui 控制 Grbl,而不是硬件按钮和 gui 的某种组合。当你按下一个硬件按钮时,图形用户界面无法知道你做了什么或打算做什么。
bCnc 的用户界面上没有按钮来完成这个吗?

进给保持后运动继续,然后取消 #1026
作者

@gerritv:是的,bCNC 有一个暂停按钮/进给保持。我不得不问,如果您支持从不使用它们而只使用 UI,那么在 GRBL 上保持进给、循环启动和取消按钮引脚(附加到中断)有什么意义?

进给保持后运动继续,然后取消 #1026
失误 评论了 2016 年 6 月 27 日  

问题是没有对 GUI 的直接反馈。除非它被编程为查看状态响应并做一些适当的事情,否则你会得到这个不协调的结果。
Grbl 有很多用例,对于某些外部引脚有用,对于其他人则没有。

我不确定 GrblPanel 会如何应对这种情况,我会在下次更新前尝试一下。bCnc 显然对造成的混乱不满意。

进给保持后运动继续,然后取消 #1026
作者

我的期望是,在取消时,来自 UI 和当前缓冲区的任何进一步命令都将被忽略。我很快就会前往商店,并尝试测试当 UI 断开连接时 GRBL 在 Cancel 上执行的操作的问题,看看这是否确实是 UI 问题或 GRBL。

进给保持后运动继续,然后取消 #1026
失误 评论了 2016 年 6 月 27 日  

澄清一下,您正在运行来自 bCnc 的 gcode 文件,您按下了物理进给保持。机器停在轨道上。你在哪里按取消?有一个复位引脚,没有取消。

bCnc 很有可能会一直发送线路,直到它识别出 Hold 状态。Grbl 中的队列中可能已经有一些。您可以在 Gui 上重置(当然,在 pin 上执行此操作与 gui 不相关,因为它不会及时发送更多数据),这会杀死您运行,或者您可以使用 Resume 从您所在的位置继续。我假设当您进行测量时您没有移动位置?因为如果你全盘皆输,那么机器和 Gui 关于事物所在位置的想法就不再相关了。

相反,您可能想要考虑使用“开门”功能。

进给保持后运动继续,然后取消 #1026

Arduino 上的 GRBL 可能知道在进给保持时忽略来自 GUI 的任何进一步命令。但是 GUI 可能会认为之前的命令没有执行,并尝试在取消/恢复时重新发送它。这是如果命令没有像 Gerrit 上面所说的那样反馈到 GUI。

如果 GUI 被编程为听 Arduino 按下按钮,那么 GUI 应该会做出正确的反应。

如果它没有被编程为监听那么它就不知道按下了 Feed Hold 并且只能相信之前的命令没有被执行并在按下取消/恢复按钮并且 GRBL 再次开始监听命令时重新发送它

进给保持后运动继续,然后取消 #1026
成员

当按下软复位按钮(此处称为取消)时,GRBL 发送其启动消息。此时 GUI 应重置除机器位置以外的所有内容(或重置所有内容,并从下一个?查询中重新应用当前位置)。这就是 UGS 处理外部复位的方式。

进给保持后运动继续,然后取消 #1026

谢谢 威尔,这是否包括取消 gcode 文件?取消似乎意味着排除简历。

进给保持后运动继续,然后取消 #1026
失误 评论了 2016 年 6 月 28 日  

我确认了 GrblPanel 的反应。
在 Feedhold(物理按下)时,gui 进入保持模式(即 Resume 按钮亮起。
)在那个阶段按下 Reset(物理按下)会导致 Err:在等待的 gcode 行上并停止发送更多。此时您不能继续 gcode 发送,您必须倒带并从本质上重新开始。

我将在下一个版本的 GrblPanel 中对此进行一些清理,以避免出现“错误:缺少进给率”并停止。

@DasWookie如果您测量的结果不满意,我可以假设您按下取消/重置按钮,否则您会使用 Resume 继续工作吗?

进给保持后运动继续,然后取消 #1026

如果您确实按下了 grbl 的硬件进给暂停,bCNC 将检测并报告暂停状态。但是,如果您按下硬件重置,那么它将报告空闲并且 bCNC 将继续流式传输。
如果你想在按下硬件进给保持后停止流媒体,你可以按下 bCNC 中的软件“停止”,这将进行软重置并停止流媒体。

@winder提出了一个好主意,当它检测到来自 grbl 的欢迎消息时停止任何流式传输

进给保持后运动继续,然后取消 #1026

我在 bCNC 中添加了检测 grbl 的欢迎消息并停止任何正在进行的运行

进给保持后运动继续,然后取消 #1026

伟大的

2016-06-28 15:32 GMT-03:00 Vasilis Vlachoudis notifications@github.com

我在 bCNC 中添加了检测 grbl 的欢迎消息并停止
任何正在进行的运行


您收到此消息是因为您订阅了此线程。
直接回复此电子邮件,在 GitHub
#1026(评论)
上查看,或 将线程静音
https://github.com/notifications/unsubscribe/AK4bcQ-fqOFvVfdR39GIOHkMqBDKCdNcks5qQWi4gaJpZM4I_H1x

进给保持后运动继续,然后取消 #1026

昨天,当我在我的 oun GUI 中编程时,我发现完全一样,因为我正处于程序的开发阶段,我不断地打印到 consoie 以跟踪它。我发现当发送保持命令时,GRBL 进入受控停止,但它似乎在它已经在做的运动中发生,因此缓冲区没有完全处理。当您发送简历时,根本没有问题,但是如果您尝试取消(在我的情况下,通过软件没有实时的 grbl 命令,例如 Hold itself ot ? 绕过缓冲区中的剩余部分,所以如果您发送重置 ctrl-x,首先在重置之前执行缓冲区中剩余的内容。我还尝试使用 serial.flushOutput() 来查看我是否可以摆脱剩余部分,但没有运气。我没有真的知道剩余部分是否留在串行缓冲区中,奇怪的是,当 serial.flushOutput() 应该完全按照需要执行操作时,它似乎什么都不做,或者其余部分在内存中。但真实的情况是(据我所知)是如果你发送一个保留,立即暂停任何其他命令,以确保你发送的最后一件事是保留,然后蚂蚁发送一份简历,从一个到在执行进给保持之前发送的三个命令

进给保持后运动继续,然后取消 #1026

进给保持后运动继续,然后取消 #1026

进给保持后运动继续,然后取消 #1026

这次你可以看到,三个逗号待定

进给保持后运动继续,然后取消 #1026
成员

@juliolarab: 你说的不对。首先,Grbl 总是在软重置 (ctrl-x) 时刷新规划器缓冲区和串行缓冲区。这包括它已发送的任何内容以及正在等待解析的任何执行。Grbl 绝对不会在重置或允许任何执行之前等待。它实时重置系统。其次,如果重置没有发出警报(如果 Grbl 在那一刻处于运动状态),它将立即开始接受命令。像您所描述的问题可能是您的自定义 GUI 中的错误,以及 Grbl 对数据的期望方式与您的 GUI 对数据的期望方式的普遍不匹配。

至于串行刷新,Grbl 不允许有意为此使用显式命令。这是为了防止新手 GUI 编写者在不重置 g 代码模式的情况下重新启动/恢复作业。如果您不重置模式,而不是按照您第一次运行它时预期的方式重新启动,您的作业可能会崩溃。这是 CNC 机器的标准行为,始终需要软重置才能将机器恢复为默认设置。

进给保持后运动继续,然后取消 #1026

让我解释一下我在做什么。该算法读取并作为 sonn 检测到从文件直到 124 字节的“ok”写入行,这个保留是一个?commans 和 3 用于追加一个 $G 以防万一行要更改任何 G,当请求保持时,写入的部分被禁止,因此它继续读取并发送轮询?(0.125 秒)。因此,正如在第一个屏幕中看到的那样,Hold 状态在 GRBL 中得到确认,并且作为?没有弯下腰,DROS 上的数据一定是真实的。正如我之前所说,如果你恢复没问题,但如果你发送一个’~’退出保持状态(在算法中也会中断)我100%确定没有其他任何东西被写入,并且系统如你所见移动这些命令来自 DROS 的变化。

进给保持后运动继续,然后取消 #1026

谢谢你的时间,

进给保持后运动继续,然后取消 #1026

在简历中我正在做

用户请求暂停 = 发送 ‘!’

如果用户请求 resume = send ‘
如果用户请求取消
选项 1 = 发送’

选项 2 = 发送 ‘~’ + 发送 ‘^X’ 我正在使用 (b’\030′)

我相信选项 1 应该足够了,如果已经处理过,我可以看到重置系统的真正原因。
在这两种情况下,’~’ 系统都会移动,并且在第二个系统进入警报,因为在编译时选择了该选项

进给保持后运动继续,然后取消 #1026
成员

@juliolarab:

  • 请仔细阅读“Interfacing with Grbl”Wiki。我在那里概述了如何与 Grbl 通信以及它是如何工作的。它相当完整。尽量不要发明自己的通信算法。通过仔细研究,您的许多问题都可以在那里得到解答。
  • 如果您在 Grbl 运行时重置它,它会发出警报,因为它在运动中停止并且由于不受控制的减速而无法保证位置。如果您打算保持位置并避免警报,请不要在进给保持期间恢复 Grbl。
  • 实时命令不进入串行缓冲区。它们直接从串行中断中取出。所以不要算他们。
  • 我强烈建议您在发布更多问题之前坐下来直接与 Grbl 互动,了解 Grbl 在做什么。或者因为您显然知道如何编程,所以请查看源代码,其中的所有内容都经过了很好的注释和布局。这通常是对 Grbl 实际工作方式的误解,许多 GUI 都可以毫无问题地控制 Grbl。
喜欢 (0)