对话
我可以建议在 37 美元、38 美元和 39 美元的报告中再增加一两位小数吗?我用我的 CNC 来做 PCB,所以额外的精度很有用,而且能够以高精度查看当前值也很有用。 我通过更改 report.c 实现了它 – 例如更改
到
|
为什么不直接修改config.h文件中的N_DECIMAL_SETTINGVALUE。我相信这样会更合适。 |
因为 N_DECIMAL_SETTINGVALUE 在 grbl 的其他地方用于不同的目的?我认为更好的解决方案是添加 N_DECIMAL_HIGHPRECISION_SETTINGVALUE? 您还确定此修改不会破坏慢跑吗?我注意到当我在 Y 方向慢跑时 X 读数发生变化,更糟糕的是,当我在 Z 方向移动时。 |
好的 – 我相信我已经发现(并修复)了一个错误。在 motion_control.c 中,在 mc_line 函数中,您正在破坏“目标”数组的值(因为它是通过引用传递的)。我会尝试尽快在此处上传差异。 |
如果你想将此的精确设置专门与 grbl 固件的其余部分分开,那肯定是一个可行的方法。
正在更新目标值以直接在 mc_line 中反映偏移补偿,因为每件事都经过那个阶段并且该值不会向后使用(我的事情)(甚至不在 mc_arc 函数中)。在将该目标发送给计划者之后,计划者必须根据行进运动的实际点(我相信倾斜校正点)来做这件事。规划器只更新速度而不更新坐标。 任何慢跑运动都应该在你设置归位/开始位置状态之前发生,并且在 gcode 启动后不应该改变,所以如果我在那之后直接修改目标值也没有关系。不过,我会调查一下。尽管如此,这并不能解决慢跑问题。 |
grbl 以 10 纳米为单位来表达事物在IMO中是荒谬的。我有物理学背景,我被教导永远不要使用超过物理情况可能保证的小数位。
好吧,我可以根据经验告诉你。它似乎在链的更上层使用(在 gcode.c 中?)。既然我已经隔离了 mc_line 的变化(必然),那么我遇到的 X 轴奇怪行为的问题就消失了。 顺便说一句,我的 diff 也有一个错误,只有在轴数超过 3 时才会起作用。错误是我将值复制到 mc_line 中的“更正”数组中的地方。我真的应该做一个memcpy。 |
你是对的。它确实通过将最后一个位置存储在 gcode.c 中来使用坐标。 |
grbl 轴偏斜补偿的实现。
轴偏移补偿在 config.h 中启用。默认情况下仅启用 XY 倾斜。
轴对 XZ 或 YZ 偏移补偿计算是可选的,也可在 config.h 上配置
补偿是通过计算当前轴位置并为每对轴应用给定因子来完成的。补偿系数的公式在 config.h 文件中有解释。
报告当前位置时,也会应用逆变换。
偏差因子保存在 EEPROM 配置字 $37(XY)、$38(XZ) 和 $39(YZ) 中。