Contact me: hankecnc@gmail.com

软限位不会阻止与限位开关的接触。 #1624

推推 grbl 3年前 (2023-01-24) 459次浏览

关闭
jyelon 打开了这个问题 2020 年 4 月 24 日 · 2 条评论
关闭

软限位不会阻止与限位开关的接触。#1624

jyelon 打开了这个问题 2020 年 4 月 24 日 · 2 条评论

注释

软限位不会阻止与限位开关的接触。 #1624
杰隆 评论了 2020 年 4 月 24 日  

所以 GRBL 实现软限制的方式,它们不会阻止机器撞到限位开关。良好的软限制应防止接触开关。

目前,软限制允许在矩形 MPOS:(0,0,0) 到 MPOS:(-$130,-$131,-$132) 内移动。任何试图移出该矩形的尝试都会触发软限制错误。

不幸的是,那个矩形总是紧贴着归位开关。例如,在我的机器上,当它回家时,将 MPOS:(0,0,0) 设置在限位开关上。因此,移动到 MPOS:(0,0,0) 会再次触发限位开关。

理想情况下,我们希望软限制遵守 27 美元的回退距离。软限制应防止机器比退避距离更接近硬限制。

有趣的是,config.h 中有一个#define 改变归巢行为的工作方式:HOMING_FORCE_SET_ORIGIN。如果您设置此标志,则源 MPOS:(0,0,0)在机器应用 $27 中的退避设置后初始化。这使得软限制按预期工作!在这种模式下,软限位确实可以防止与限位开关接触。

我已经重新编译我的 GRBL 以使用这个标志。但是,如果软限制开箱即用,那就太好了。

软限位不会阻止与限位开关的接触。 #1624
作者
杰隆 评论了 2020 年 4 月 24 日  

我正在更深入地研究这个问题。这是 limits.c 中的一些归位代码:

      #ifdef HOMING_FORCE_SET_ORIGIN
        set_axis_position = 0; 
      #else
        if ( bit_istrue(settings.homing_dir_mask,bit(idx)) ) {
          set_axis_position = lround((settings.max_travel[idx]+settings.homing_pulloff)*settings.steps_per_mm[idx]);
        } else {
          set_axis_position = lround(-settings.homing_pulloff*settings.steps_per_mm[idx]);
        }
      #endif

所以关于这段代码要记住的重要一点:机器原点也是软限制之一。无论您将机器原点放在哪里,您也会放置一个软限制。因此,必须将机器原点放在您希望软限制所在的位置。

在情况 1 中,机器原点(以及软限位)位于退避位置。在情况 3 中,机器原点(以及软限位)正好靠在限位开关上。这可能只有一毫米的差异,但这意味着在情况 1 中,软限位确实可以防止与限位开关接触,而在情况 3 中,则不会。

从代码中可以明显看出,有人故意将案例 1 和案例 3 编码为彼此不同。但为什么?我只是不明白为什么您有时想将软限位放在退避位置,而有时又将软限位与开关直接接触。在我看来,其中只有一个可能是正确的。

软限位不会阻止与限位开关的接触。 #1624
作者

啊,废话,我刚刚意识到这是一个死的 GRBL 存储库。关闭问题。

喜欢 (0)