Contact me: hankecnc@gmail.com

G28(可能还有 G30)忽略轴 #801

推推 grbl 3年前 (2023-01-22) 375次浏览

关闭
nathanwosborn 打开了这个问题 2015 年 9 月 15 日 · 8条评论
关闭

G28(可能还有 G30)忽略轴#801

nathanwosborn 打开了这个问题 2015 年 9 月 15 日 · 8条评论

注释

G28(可能还有 G30)忽略轴 #801

规范说(部分):

G28 – 从当前位置快速移动到参数 5161-5166 中值的绝对位置。

G28 轴 – 快速移动到轴指定的位置,包括任何偏移,然后将快速移动到参数 5161-5166 中指定轴的值的绝对位置。任何未指定的轴都不会移动。

G28.1 – 将当前绝对位置存储到参数 5161-5166 中。

所以“G28 Z0”应该只将Z轴移动到G28.1指定的位置。就目前而言,任何指定的轴都将被忽略,所有轴(x、y 和 z)都会移动。我认为这可能导致对 G28.1 是否应该采用轴参数的混淆。

这是因为 Fusion 360 使用的后处理 (grbl.cps) 使用“G28 G91 Z0”在程序结束时缩回,然后使用“G28 G91 X0 Y0”移动 x 和 y。这个想法是在移动 x 和 y 之前收回 z。

我已将 grbl.cps 替换为使用“G53 G90 Z-5”收回 z 的自定义帖子。但我们仍然应该修复它。

G28(可能还有 G30)忽略轴 #801
成员

@nathanwosborn: 感谢举报。我很确定它是 G28 的功能,但自从我上次处理该部分代码以来发生了很多变化。我会检查以确保它正常运行。

G28(可能还有 G30)忽略轴 #801
成员

@nathanwosborn: 行。我想我找到了这个问题。这是原始 NIST g 代码标准和 LinuxCNC 之间的区别。最初编写 Grbl 的 NIST 标准指定首先移动到编程位置,而不是移动到存储的 G28.1 位置。带全轴。看起来 LinuxCNC 的定义不同,它只移动指定的轴。

Grbl 过去只使用 NIST 标准,但最近开始转向 LinuxCNC 的标准。我会很快解决这个差异,但在测试期间,我确实发现了一个奇怪的错误,当发送一个带有 G28 的 G91 时。修复此错误比将 G28/30 转换为 LinuxCNC 的定义优先级更高。

G28(可能还有 G30)忽略轴 #801

我确实使用了 LinuxCNC 页面作为参考。感谢您如此迅速地调查此事。

G28(可能还有 G30)忽略轴 #801

这对于 LinuxCNC 是不正确的。以下命令将在 LinuxCNC 中列出下面的结果

G28 Z0(先快速移动到 Z=0,然后将所有轴移动到 G28.1 中指定的位置)

这与 NIST 标准相同

G28(可能还有 G30)忽略轴 #801

作为参考,下面是直接来自 linuxcnc 用户手册的示例:

G28 示例行
G28 Z2.5(快速到 Z2.5,然后到 G28 存储参数中指定的位置)

G28(可能还有 G30)忽略轴 #801

刚从另一次旅行回到家,检查了我运行 LinuxCNC 的机器,我错了。以下行:

G28 Z2.5

导致 Z 轴快速移动到 Z=2.5,然后快速移动到 G28.1 存储的 z 位置

我相信,根据我微弱的记忆,我在 25 年前运行的辛辛那提 VMC 是按照 NIST 标准规定的方式工作的(即:G28 Z2.5 – 将 z 移动到 z = 2.5,然后将所有轴移动到 G28.1 位置) . 在那些老 Cincinnati 上,G28 是换刀位置。

G28(可能还有 G30)忽略轴 #801
成员

行。Grbl 的 G28/30 NIST 实现没有错误。我忘记了 g 代码模式仍然是 G91 增量(我从不使用增量)。

@109JB: 感谢您使用 LinuxCNC 进行验证。我确实回顾了旧版 LinuxCNC 中的 G28/30 g 代码描述。一段时间以来,它一直是非 NIST。

我将在 v1.0 中更新 G28/30 的行为,但不会更新 v0.9。这是因为我不知道如果我这样做会有什么影响。某些 GUI 可能采用旧的 NIST 行为并依赖于它。如果有令人信服的理由为 v0.9 做这件事,我还是想听听。

G28(可能还有 G30)忽略轴 #801
成员

@nathanwosborn:边缘分支中的 v1.0 beta 具有更新的 g28 和 G30 行为。解决这个问题。

喜欢 (0)