评论
这是一个示例 G 代码(由 Inkscape 插件“J Tech Photonics”生成),在 G 代码查看器中看起来不错,但使 GRBL 驱动电机超出该区域的左下角: M05 S0 |
很明显,对于 33030.0384,您超出了int 原则上是一个全局搜索和替换操作,但它需要一些人工干预来防止意外匹配,因为“int”太短了,可能会出现在类型声明以外的地方。 由于舍入误差和比较,迁移到 fp 可能需要更多考虑。 |
J-Dunn,没那么简单。 与此同时,我为自己写了一个转换器,它已经被 cutter 保存了几次,免于进一步损坏。当 I 和 J 很大时,我只是用 G1 替换 G2 和 G3。 我不确定为什么从整数数学切换到浮点数学会导致舍入错误。 |
溢出可能发生在计算过程中,而不是 gcode 的最终数字。为什么你的数字这么大? |
J-Dunn,是的,我猜,计算路径时发生了溢出。 |
是的,我很快就放弃了 Inkscape for Gcode。 |
好吧,Inkscape 仍然非常强大,我在我的项目中经常使用它。如果没有别的办法,它可以导出为矢量图形格式,如 dfx。 |
这不是 gcode/mantissa 的问题。正确读取所有值。问题发生在弧形计算中,例如@J-Dunn 说。但是半径为 33 米的圆弧并不是现实生活中的场景 |
我将 atmel328p grbl 与 CNC 一起使用,但由于它无法处理更大半径的弧,所以我遇到了硬件损坏。
他们竭尽所能——在如此有限的空间内用整数进行数学运算,这是一个工程奇迹。哪种工作但不适合与昂贵的硬件一起工作(它不能处理 G2、G3 命令的 I 和 J 中的大值并且不识别它)
您正在将 GRBL 移植到支持浮点数的 CPU。但是你仍然保留所有整数数学(在 gcode.c 中)
拜托,请重构它以使用浮点数学。无论你在哪里看到单词“尾数”——用浮点数替换它。无论您在哪里看到乘法和除法,请确保参数和结果的类型为“float”
您最终将获得工业级电路板。整数数学确实是 GRBL 的限制因素。
(328p GRBL 的另一个限制因素是 USB 通信速度慢,这使得快速激光雕刻不太可能实现,但使用带有集成 USB 的 CPU 解决了这个问题)
感谢您的伟大工程!