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