注释
@DasWookie您使用的是什么 gcode 发件人?这听起来不像是 GRBL 错误。 |
我正在使用 bCNC,但我正在点击保持/取消按钮以连接到 grbl。我使用的是 GRBL 的 9j,禁用了可变主轴(连接到继电器以打开/关闭 DeWalt DWP611),但除此之外,其他所有内容都是 GRBL 中的骨料设置。 |
@DasWookie: 这绝对听起来像是一个 GUI 问题。您需要查看按钮键绑定是如何在 bCNC 中设置的。特别是,取消按钮是否尝试在取消时将系统设置回空闲状态。 |
嗯嗯。有趣的。据我所知,当通过取消按钮(将引脚设置为接地)向 GRBL 发出取消时,我在 bCNC 用户界面上看到的情况往往与发出的命令一致(可能只是缓冲区的价值)但被 GRBL 忽略。最终,UI“赶上”取消命令,并识别出运行已中止。我想作为诊断测试,我可以按进给保持,拔出 USB,然后按取消。这会告诉我 UI 是否以某种方式参与,以及它是否是 GRBL 试图滑行。 当我直接点击取消时,观察到的行为有所不同,其中一切都只是停止与当我点击进给保持,然后点击取消时。 |
您只需要从 gui 控制 Grbl,而不是硬件按钮和 gui 的某种组合。当你按下一个硬件按钮时,图形用户界面无法知道你做了什么或打算做什么。 |
@gerritv:是的,bCNC 有一个暂停按钮/进给保持。我不得不问,如果您支持从不使用它们而只使用 UI,那么在 GRBL 上保持进给、循环启动和取消按钮引脚(附加到中断)有什么意义? |
问题是没有对 GUI 的直接反馈。除非它被编程为查看状态响应并做一些适当的事情,否则你会得到这个不协调的结果。 我不确定 GrblPanel 会如何应对这种情况,我会在下次更新前尝试一下。bCnc 显然对造成的混乱不满意。 |
我的期望是,在取消时,来自 UI 和当前缓冲区的任何进一步命令都将被忽略。我很快就会前往商店,并尝试测试当 UI 断开连接时 GRBL 在 Cancel 上执行的操作的问题,看看这是否确实是 UI 问题或 GRBL。 |
澄清一下,您正在运行来自 bCnc 的 gcode 文件,您按下了物理进给保持。机器停在轨道上。你在哪里按取消?有一个复位引脚,没有取消。 bCnc 很有可能会一直发送线路,直到它识别出 Hold 状态。Grbl 中的队列中可能已经有一些。您可以在 Gui 上重置(当然,在 pin 上执行此操作与 gui 不相关,因为它不会及时发送更多数据),这会杀死您运行,或者您可以使用 Resume 从您所在的位置继续。我假设当您进行测量时您没有移动位置?因为如果你全盘皆输,那么机器和 Gui 关于事物所在位置的想法就不再相关了。 相反,您可能想要考虑使用“开门”功能。 |
Arduino 上的 GRBL 可能知道在进给保持时忽略来自 GUI 的任何进一步命令。但是 GUI 可能会认为之前的命令没有执行,并尝试在取消/恢复时重新发送它。这是如果命令没有像 Gerrit 上面所说的那样反馈到 GUI。 如果 GUI 被编程为听 Arduino 按下按钮,那么 GUI 应该会做出正确的反应。 如果它没有被编程为监听那么它就不知道按下了 Feed Hold 并且只能相信之前的命令没有被执行并在按下取消/恢复按钮并且 GRBL 再次开始监听命令时重新发送它 |
当按下软复位按钮(此处称为取消)时,GRBL 发送其启动消息。此时 GUI 应重置除机器位置以外的所有内容(或重置所有内容,并从下一个 |
谢谢 威尔,这是否包括取消 gcode 文件?取消似乎意味着排除简历。 |
我确认了 GrblPanel 的反应。 我将在下一个版本的 GrblPanel 中对此进行一些清理,以避免出现“错误:缺少进给率”并停止。 @DasWookie如果您测量的结果不满意,我可以假设您按下取消/重置按钮,否则您会使用 Resume 继续工作吗? |
如果您确实按下了 grbl 的硬件进给暂停,bCNC 将检测并报告暂停状态。但是,如果您按下硬件重置,那么它将报告空闲并且 bCNC 将继续流式传输。 @winder提出了一个好主意,当它检测到来自 grbl 的欢迎消息时停止任何流式传输 |
我在 bCNC 中添加了检测 grbl 的欢迎消息并停止任何正在进行的运行 |
昨天,当我在我的 oun GUI 中编程时,我发现完全一样,因为我正处于程序的开发阶段,我不断地打印到 consoie 以跟踪它。我发现当发送保持命令时,GRBL 进入受控停止,但它似乎在它已经在做的运动中发生,因此缓冲区没有完全处理。当您发送简历时,根本没有问题,但是如果您尝试取消(在我的情况下,通过软件没有实时的 grbl 命令,例如 Hold itself ot ? 绕过缓冲区中的剩余部分,所以如果您发送重置 ctrl-x,首先在重置之前执行缓冲区中剩余的内容。我还尝试使用 serial.flushOutput() 来查看我是否可以摆脱剩余部分,但没有运气。我没有真的知道剩余部分是否留在串行缓冲区中,奇怪的是,当 serial.flushOutput() 应该完全按照需要执行操作时,它似乎什么都不做,或者其余部分在内存中。但真实的情况是(据我所知)是如果你发送一个保留,立即暂停任何其他命令,以确保你发送的最后一件事是保留,然后蚂蚁发送一份简历,从一个到在执行进给保持之前发送的三个命令 |
@juliolarab: 你说的不对。首先,Grbl 总是在软重置 (ctrl-x) 时刷新规划器缓冲区和串行缓冲区。这包括它已发送的任何内容以及正在等待解析的任何执行。Grbl 绝对不会在重置或允许任何执行之前等待。它实时重置系统。其次,如果重置没有发出警报(如果 Grbl 在那一刻处于运动状态),它将立即开始接受命令。像您所描述的问题可能是您的自定义 GUI 中的错误,以及 Grbl 对数据的期望方式与您的 GUI 对数据的期望方式的普遍不匹配。 至于串行刷新,Grbl 不允许有意为此使用显式命令。这是为了防止新手 GUI 编写者在不重置 g 代码模式的情况下重新启动/恢复作业。如果您不重置模式,而不是按照您第一次运行它时预期的方式重新启动,您的作业可能会崩溃。这是 CNC 机器的标准行为,始终需要软重置才能将机器恢复为默认设置。 |
让我解释一下我在做什么。该算法读取并作为 sonn 检测到从文件直到 124 字节的“ok”写入行,这个保留是一个?commans 和 3 用于追加一个 $G 以防万一行要更改任何 G,当请求保持时,写入的部分被禁止,因此它继续读取并发送轮询?(0.125 秒)。因此,正如在第一个屏幕中看到的那样,Hold 状态在 GRBL 中得到确认,并且作为?没有弯下腰,DROS 上的数据一定是真实的。正如我之前所说,如果你恢复没问题,但如果你发送一个’~’退出保持状态(在算法中也会中断)我100%确定没有其他任何东西被写入,并且系统如你所见移动这些命令来自 DROS 的变化。 |
谢谢你的时间, |
在简历中我正在做 用户请求暂停 = 发送 ‘!’ 如果用户请求 resume = send ‘ 我相信选项 1 应该足够了,如果已经处理过,我可以看到重置系统的真正原因。 |
|
所以我遇到了一个问题,这可能是设计使然,但与预期相反。我正在做一些棘手的 CAM,要求我在运行过程中保持进给。这让我可以停止运行,并进行测量……我的问题是,如果我按下进给保持,然后取消,在按下进给保持之前发生的运动,然后恢复!这导致我不得不重做操作,在同一位置再次进给保持,然后按下我的急停按钮,以确保一切都保持原样。当我按下取消键时,我的期望是,在进给保持状态下,一切都会停在那里……而不是尝试(我猜)“滑行”到停止……当机器已经被保持时.
我可能会生成一小段 gCode 来测试这个特定的操作序列,但相信我的解释足以重现场景。
正如我所说的……这很可能是设计使然,或者任何改变它的东西都可能太复杂而无法尝试解决……但在我看来这并没有做预期发生的事情,并可能导致某人崩溃或无法阻止他们预期的坏事发生。