开源改变世界

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

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

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

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

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

注释

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

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

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

现在,这里是 limits.c 中归巢代码的片段:

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

所以请记住,机器原点也是软限制之一。无论你把机器原点放在哪里,你也放了软限制。

如您所见,在情况 1 中,它将机器原点(以及软限制)置于退避位置。在情况 3 中,它将机器原点(以及软限位)放在触发限位开关的位置。因此,当 HOMING_FORCE_SET_ORIGIN 为真时,软限制会阻止与开关接触。但是当 HOMING_FORCE_SET_ORIGIN 未定义时,软限制允许您碰到开关。

当然,使用这个标志集重新编译 GRBL 仍然相当容易。但是,如果软限制始终阻止钻头距离限位开关比 (pulloff_distance) 更近,那就太好了。您可以在归位代码中实现这一点,方法是将机器原点初始化为后退位置,或者在软限位代码中,通过考虑牵引距离来实现。

软限位不会阻止与限位开关的接触。 #856
双中心 评论了 2020 年 5 月 12 日  

Grbl 始终将轴零设置在限位开关跳闸点。它总是困扰着我,但还不足以真正修复它……你的帖子是催化剂……这是将每个轴设置为零到限位开关拉出距离的 limits.c 代码:

if (cycle_mask & bit(idx)) {  
  if ( bit_istrue(settings.homing_dir_mask,bit(idx)) ) {  
    set_axis_position = lround( settings.max_travel[idx] * settings.steps_per_mm[idx] );    
  } else {
    set_axis_position = 0;
  }

请注意,此更改会将轴行程减少限位开关牵引距离指定的值。

brunobergamaschi 添加了对 brunobergamaschi/grbl-cnccoilwinder 的提交,引用了这个问题 2021 年 7 月 31 日

喜欢 (0)