开源改变世界

不使用 G4 P0 或空闲状态检查的运动完成响应 #975

推推 grbl 3年前 (2023-01-23) 195次浏览

关闭
里程表 打开了这个问题 2016 年 4 月 26 日 · 6条评论
关闭

不使用 G4 P0 或空闲状态检查的运动完成响应#975

里程表 打开了这个问题 2016 年 4 月 26 日 · 6条评论

注释

不使用 G4 P0 或空闲状态检查的运动完成响应 #975

首先,我想说 grbl 对我的项目来说是一个不可思议的工具,感谢你为它所做的所有工作。

我想问一下是否可以在每个动议完成后提供回复选项。当一个动作被读取时可能是一个“确定”,当一个动作完成时可能是一个“完成”。虽然我知道这可以使用“G4 P0”命令或通过轮询“空闲”状态来实现,但这两个选项都有重大缺点并且感觉像是黑客攻击。最重要的问题是,这些方法都不能与运动规划器很好地配合,并且不允许平滑运动。

我不太了解 grbl 工作原理的复杂性,所以我不知道实现起来会有多困难,但我认为对于构建显示当前进度的 GUI 的任何人来说,这可能是一个非常有用的功能至于许多其他需要某些功能的应用程序,这些功能取决于对当前进度的了解。

谢谢!

  • 英里
不使用 G4 P0 或空闲状态检查的运动完成响应 #975
成员

@milesingrams:是的,我同意“G4 P0”和“空闲”轮询不是最佳解决方案,但它主要是在 328p AVR 上保持闪存占用空间尽可能小的产物。我想确切知道命令何时完成对 GUI 有点用处,但存在一些问题。

首先,您需要让 Grbl 保留一些关于它正在执行什么的知识,然后向 GUI 报告它完成了什么。为了保持小而紧凑,g 代码行数据在 g 代码命令的初始解析后被丢弃。

一种解决方案是使用行号向 GUI 指示 Grbl 正在执行的位置。您通过 config.h 文件启用它,然后 Grbl 将在每个状态报告中报告其当前执行的行号。GUI 的工作是确保为每一行发送一个唯一的行号(“Nxxx”),并知道哪个数字发送到它发送的哪个 g 代码行。通过这种方式,您可以准确跟踪 grbl 在哪里以及它在做什么。

不使用 G4 P0 或空闲状态检查的运动完成响应 #975
作者

感谢桑尼的快速反应!

行号解决方案将是一个很好的补充。澄清一下,我认为此信息比仅对 GUI 和进度可视化更有用。例如,我会使用该信息来跟踪当前进度,以便如果硬限制或软限制被触发,机器可以在问题原因已解决且 grbl 已重置后从它正在执行的最后一个命令继续和归宿。只有来自命令缓冲区的“ok”反馈,我不知道从哪里恢复。

不使用 G4 P0 或空闲状态检查的运动完成响应 #975
成员

@milesingrams: 行号是一个现有的解决方案,可以通过 config.h 启用。

你指的是程序重启。安全地重新启动作业并不像您想象的那么简单。如果你不小心的话,这是一件危险的事情。G代码是一种模态编程语言。如果您不跟踪并正确设置失败行之前的所有模式、坐标偏移和位置,则之后的所有行都不会按程序执行。如果 GUI 尝试解析 g 代码本身并且控制器的解析器略有不同(比您想象的更常见的问题),这尤其有问题。此外,您必须确保安全地重新进入程序路径,这取决于工具在恢复之前的位置以及机器的配置方式。

不使用 G4 P0 或空闲状态检查的运动完成响应 #975

您好,很抱歉劫持了线程。
我实际上需要相同类型的解决方案,我正在构建一个使用此固件的设备,它使用一个探针来传递一些机械刺激,我需要知道探针传递它的刺激的确切时刻。
我不需要在执行前确定,我只在执行后才需要它,无论如何要改变固件来这样做吗?

不使用 G4 P0 或空闲状态检查的运动完成响应 #975

以及为什么你不能使用
G1x3f333 g4p0
这样可以在运动后返回,而不是之前。
Il 07/mag/2016 19:16 “Cygnus-X3” notifications@github.com ha scritto:

您好,很抱歉劫持了线程。
我实际上需要相同类型的解决方案,我正在构建一个使用
此固件的设备,它使用一个探针来传递一些机械刺激,我
需要知道探针传递它的刺激的确切时刻。
我不需要在执行前确定,我只在执行后才需要它,
无论如何要改变固件来这样做吗?


您收到此消息是因为您订阅了此线程。
直接回复此邮件或在 GitHub
#975(评论)上查看

不使用 G4 P0 或空闲状态检查的运动完成响应 #975
成员

或者使用 G38.x 探测命令?这就是他们的目的。Grbl 会在检测到触发后立即报告位置。然后停下来。如果您需要其他时间紧迫的东西,延迟(Grbl 和 USB)可能是个问题,因为到您收到消息时,ok 方法可能需要数十毫秒。

喜欢 (0)