Contact me: hankecnc@gmail.com

I、J 值过大时机器崩溃。 #901

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

打开
Rybec 打开了这个问题 2020 年 8 月 7 日 · 4条评论
打开

I、J 值过大时机器崩溃。#901

Rybec 打开了这个问题 2020 年 8 月 7 日 · 4条评论

注释

I、J 值过大时机器崩溃。 #901

在下面的 Gcode 中,第 1444 行和 1446 行导致主轴沿直线前进,沿途铣削任何材料,直到它到达机器的边缘,在那里它继续尝试移动,使电机紧张。(这在整个程序中会出现 20 或 30 次,而且总是在 I 和 J 值非常大的地方。)

1443 G2 X5.754 Y6.148 Z-4.500 I-7.998 J-7.779 K0.000 F150.000
1444 G2 X6.508 Y5.046 Z-4.500 I-2776625.665 J-1898932.711 K0.000 F150.000 X17.45
G2 324 Y3.220 Z-4.500 I-12.358 J-6.621 K0.000 F150.000
1446 G2 X7.669 Y1.855 Z-4.500 I-1533995.079 J-387777.227 K0.000 F150.000

这是用 FreeCAD 生成的。我不确定这里的错误是 grbl(我的机器是 Genmitsu 3018-Pro,运行 grbl 1.1f)还是 FreeCAD 的 Gcode。我知道弧长相当小,作为一条直线可能会更好(而且半径很大,实际上已经一条直线),但我想知道到底出了什么问题,所以我可以报告这个错误在正确的地方。(我想我可以解决这个程序中的问题,只需将这些圆弧更改为直线,但是可能会损坏机器的错误是一个需要注意的严重错误。)

我有几个问题可能会帮助我决定是否提交针对 FreeCAD 的错误报告:

一般来说,在 grbl 或 Gcode 中,I 和 J 是否有最大幅度?我在谷歌上搜索时运气不佳,但大多数问题都是关于最大程序大小的,所以信息可能存在但被埋没了。我的假设是它仅受内部使用的变量类型精度的限制,它似乎是 32 位浮点数,可以轻松处理上述值。

这是浮点数学错误的结果吗?如果是,那么问题可能是 grbl 需要处理的问题,可能是通过设置 I 和 J 的最大值(或最大弧半径比),在这种情况下会发出错误代码,而不是永远将主轴驱动到远处.

I、J 值过大时机器崩溃。 #901
大卫德朗 评论了 2020 年 8 月 8 日 通过电子邮件
I、J 值过大时机器崩溃。 #901
作者

谢谢你提供信息。它证实了我的怀疑。

如果其他人可以验证这些细节,那就太棒了。具体来说,grbl是显式截断,还是从ASCII到float的转换是隐式转换?这很重要,因为 32 位浮点数的精度范围为 6 到 9 位,具体取决于具体值。如果它被截断为恰好 5 位数字,那么我可以编写一个模块来根据 I 和 J 中的位数来修复 Gcode,但如果它只是以本机浮点精度将值拟合到浮点数中,那么我可以转换为超过 6 位的行,或者我可以检查该值是否适合 32 位浮点精度以保持 grbl 可以处理的最大精度。

I、J 值过大时机器崩溃。 #901
作者
雷贝克 评论了 2020 年 8 月 8 日  

对此感激不尽!这正是我所需要的。

我有一个问题,如果有人有答案:

在 read_float() 的注释中,有这一行,“对于已知的 CNC 应用程序,典型的十进制值预计在 E0 到 E-4 的范围内。” 这到底是什么意思?我假设,给定 8 位精度,这意味着任何值都不应大于 99,999,999.0,并且任何值都不应小于 0.0001。这样对吗?

编辑:我忘了具体说明,“更大”和“更小”指的是幅度,与符号无关。

喜欢 (0)