开源改变世界

Grbl 在开发分支中以非常小的速度冻结。 #432

推推 grbl 2年前 (2023-01-22) 196次浏览

关闭
ashelly 打开了这个问题 2014 年 6 月 20 日 · 3条评论
关闭

Grbl 在开发分支中以非常小的速度冻结。#432

ashelly 打开了这个问题 2014 年 6 月 20 日 · 3条评论

注释

Grbl 在开发分支中以非常小的速度冻结。 #432

使用DEFAULTS_GENERIC设置,以下命令会导致 grbl 冻结。

G1 F0.1 X100

该问题似乎是由 stepper.c 中的两行引起的。601:

prep.accelerate_until -= inv_2_accel * 
               (pl_block->nominal_speed_sqr-pl_block->entry_speed_sqr); 

输入速度为 0,加速度为 10mm/s^2,浮点舍入使 accelerate_until 在 = 100 时保持不变。
这会导致斜坡计算结束时出现问题(第 659 行):

  mm_remaining = prep.accelerate_until; // NOTE: 0.0 at EOB
  time_var = 2.0*(pl_block->millimeters-m_remaining)/ 
                          (prep.current_speed+prep.maximum_speed);

因为mm_remaining仍然等于 block->millimeters, time_var变为 0。这mm_var在巡航阶段保持为 0,这可以防止mm_remaining再次更改,让我们prep_buffer永远停留在函数中。

是否应该进行某种最小速度检查来防止这种情况发生?accelerate_until或者强制梯形曲线的斜坡阶段至少执行一步(通过将最大值限制为 )是否有意义block->millimeters - prep.req_mm_increment

Grbl 在开发分支中以非常小的速度冻结。 #432
成员

@ashelly: 感谢您的错误报告以及对问题的详尽解释和定位。为我节省了很多时间和精力。对于像这样的非常低的速度,我认为我们可以沿着完全移除加速和减速斜坡的路线做一些事情。步进电机在缓慢移动时具有最高的扭矩裕度,因此丢步根本不是问题。我会研究解决这个问题。正如您所建议的,可能就像最小速度检查一样。在它下方时,它只是没有坡道。

Grbl 在开发分支中以非常小的速度冻结。 #432 chamnit 添加了 去做 标签 2014 年 6 月 20 日
Grbl 在开发分支中以非常小的速度冻结。 #432 chamnit 重新打开了这个 2014 年 7 月 8 日
Grbl 在开发分支中以非常小的速度冻结。 #432
贡献者

我认为有一个最小速度(斜坡开始的地方)是个好主意!

Grbl 在开发分支中以非常小的速度冻结。 #432
成员

@ashelly: 找到了这个问题的原因。它不属于加速一代。相反,它处于巡航阶段。引入了一个最小进给率配置参数来解决这个问题。它应用于规划器,而不是步进器模块。

喜欢 (0)