Contact me: hankecnc@gmail.com

grbl 的 gcode 优化规则 #279

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

关闭
arkypita 打开了这个问题 2017 年 9 月 29 日 · 4条评论
关闭

grbl 的 gcode 优化规则#279

arkypita 打开了这个问题 2017 年 9 月 29 日 · 4条评论

注释

grbl 的 gcode 优化规则 #279
阿尔基皮塔 评论了 2017 年 9 月 29 日  

你好@chamnit,大家好
我要写一个函数来解析一个gcode文件并去掉所有冗余的命令和参数。

我知道一些命令和参数是模态的:如果你发送 S120,你不需要再次发送它,除非你想改变功率,如果你发送 G1,你可以发送一系列 XYZ 运动而无需再次发送 G1 等

我的问题是:

  • 这种模式命令和参数的概念适用于 grbl 解释器,或者它们被定义为任何 gcode 解释器的标准?
  • 你能确认 grbl 对 G0 和 G1-2-3 有两组不同的记忆吗?例如,我可以在代码之上设置 G0 F1000 和 G1 F2000,然后所有下一个 G0 将在 F1000 和 G1 在 F2000 处执行?这是 grbl 实现还是 gcode 标准?
  • 你知道在什么地方可以找到一些关于模式/非模式命令和参数的文档,可以帮助我编写这个函数吗?

非常感谢,迭戈

grbl 的 gcode 优化规则 #279
贡献者
  • 是的。它们遵循 LinuxCNC gcode 标准,但并非所有 gcode 解释器都相同。模态状态通常是相同的。

  • G0 没有进给率。它是横向运动或快速运动。这是 Smoothie 和 Marlin 错误地做的事情。这是由于非常早期的 GRBL 版本中的一个错误(在我开始研究它之前)。在任何 gcode 标准中都没有声明 G0 可以用进给率编程。这主要是为了安全起见,因为用户很容易混淆两者。

  • 请参阅 LinuxCNC 文档。他们很好。

grbl 的 gcode 优化规则 #279

大多数(如果不是全部)模态命令在解释器/控制器中都是标准的,但可能存在一些差异。NIST RS274 NGC 是 Grbl 开始使用的标准。该标准也是 LinuxCNC 在其核心中使用的标准,但 LinuxCNC 与 NIST 有一些差异,以包含更多功能。Grbl 多年来一直遵循 LinuxCNC 模型,LinuxCNC 的命令定义可以在 linuxCNC 文档http://linuxcnc.org/docs/中找到。Grbl 支持的命令与 LinuxCNC 的实现方法密切相关。

至于 G0 F1000,在这一行中 F1000 将被忽略。G0 是快速移动,根据其定义,无论 F 字设置如何,都将以机器能够达到的最大速率移动机器。对于 G0,F 字没有意义。但是,将读取 F 字,然后更改使用 F 字的后续命令(G1、G2、G3…)的进给率

只有一个 F 字定义。如果您更改 F 字值,您会为所有使用它的命令更改它。这是我所知道的所有 g 代码解释器/控制器的标准。

http://linuxcnc.org/docs/

至于您的项目,我认为这是为了加快 Grbl 对 g 代码行的处理速度。 @chamnit可能更具体,但我也用我的 GUI 在这方面做了一些测试,得出的结论是,除非 g 代码中充斥着冗余命令并且这些命令是非常小的动作,否则它没有多大帮助。大多数还没有坏到可以看到任何类型的重大收益。

grbl 的 gcode 优化规则 #279
贡献者

在解决这个问题时,我发现一些特定的部分对于了解我的方位很有用:

一行的格式
模态组文档
执行顺序

grbl 的 gcode 优化规则 #279

感谢大家

喜欢 (0)