开源改变世界!!

为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87

推推 grbl 2年前 (2023-02-08) 208次浏览
关闭
hankecnc 开启了这个issue 2021 年 11 月 15 日 · 9条评论
关闭

为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题#87

hankecnc 开启了这个issue 2021 年 11 月 15 日 · 9条评论

评论

为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87

是后处理生成的G代码,我一直用在FANUC数控系统的加工中心,没问题

为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87

我记得你在哪里提到的,忘记了,我觉得没问题,在FANUC上顺利通过

为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87
贡献者

你的机器归位了吗?我应该是 – 但这不是错误的原因。它可能来自先前的命令,因为 grblHAL 会为所有后续行重复当前错误消息,这是为了避免不必要的动作。

附上程序,我可以检查一下。

为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87

错误确实来自这个_model1.txt
为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87

为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87
贡献者

这是由于第 6 行的 G80,当我尝试使用 vanilla Grbl Mega 时出现同样的错误,我将不得不检查这是一个遗传错误还是违反 NIST RS274。

为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87
贡献者

对我来说似乎是一个遗传错误,这段代码是错误的?

核心/gcode.c

1925 到 1928 行 f306bfa

// [G80 错误]:轴字在 G80 激活时编程。
//注意:即使是使用轴字的非模态命令或 TLO 也会抛出此严格错误。
if (axis_words.mask ) // [不允许轴词]
失败(Status_GcodeAxisWordsExist);

 

应该?

        // [G80 Errors]: Axis word are programmed while G80 is active.
        // NOTE: Even non-modal commands or TLO that use axis words will throw this strict error.
        if (axis_words.mask && axis_command != AxisCommand_NonModal) // [No axis words allowed]
            FAIL(Status_GcodeAxisWordsExist);
为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87

对我来说好像是一个继承的错误,这段代码是错误的?

核心/gcode.c

1925 到 1928 行 f306bfa

// [G80 错误]:轴字在 G80 激活时编程。
//注意:即使是使用轴字的非模态命令或 TLO 也会抛出此严格错误。
if (axis_words.mask ) // [不允许轴词]
失败(Status_GcodeAxisWordsExist);

 

应该?

        // [G80 Errors]: Axis word are programmed while G80 is active.
        // NOTE: Even non-modal commands or TLO that use axis words will throw this strict error.
        if (axis_words.mask && axis_command != AxisCommand_NonModal) // [No axis words allowed]
            FAIL(Status_GcodeAxisWordsExist);

我无法回答你是否错了,我会根据我的理解解释
老实说,我不知道grblhal 抛出错误之前G80 做了什么。

我阅读了 linuxcnc 关于 G80 的介绍 http://linuxcnc.org/docs/2.8/html/gcode/g-code.html#gcode:g80

我认为 G80 错误的唯一情况如下:
G98 G81 X-23.44 Y-28.627 Z-47.5 R3。F2506。Q2.969
X-52.644 Y-14.218
X-64.364 Y20.75
G80
X0。Y0。
X-40.732 Y24.401
X-17.292 Y37.85

因为G80取消了固定循环,后面的X0. Y0。
X-40.732 Y24.401
X-17.292 Y37.85
缺少继承

为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87

用于测试抛错的代码
G40 G17 G49 G21 G94 G54 G80
G28 G91 Z0
如果删除Z0,grblhal可以顺利通过,
但是G28使用的是Z0,没有遗漏继承

为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87
贡献者

因为G80取消了固定循环,后面的X0. Y0。

G80 取消所有运动模式,不仅是固定循环。

X-40.732 Y24.401
X-17.292 Y37.85
缺少继承

这是正确的,您必须首先对运动模式进行编程,因为没有活动模式。

但是G28用的是Z0,没有遗漏继承

是的,G28 使用快速运动 (G0),因此没有继承(来自模态组 G1)。
这就是为什么我认为解析器中存在错误,我提出的修复应该是好的。你可以尝试一下?

为什么报错31到“G28 G91 Z0.”?我认为这没有任何问题 #87

好的