Contact me: hankecnc@gmail.com

记住是什么导致了限位开关激活 #1629

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

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

记住是什么导致了限位开关激活#1629

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

注释

记住是什么导致了限位开关激活 #1629

当限位开关被激活时,GRBL 可以记住它前进的方向,因此它可以“摆脱”它。

我有一台机器,所有轴的两端都有终点挡块。
当我不小心碰到了不是原点开关的限位开关时,我很难摆脱它。
我必须重置 GRBL,禁用警报,移动一点,大约 3 或 4 次。

下面是一个建议,
我不得不使用下划线来识别伪代码。
为了更好地查看,复制到记事本并将所有 __(双下划线)更改为双空格。

在程序的某些点:
enum LIMIT_REASON
{
__LIMIT_NOT_ACTIVATED,
__LIMIT_ACTIVATED_WHEN_GOING_PLUS,
__LIMIT_ACTIVATED_WHEN_GOING_MINUS,
__LIMIT_ACTIVATED_SNAFU
};
字节 X_limit_reason = LIMIT_NOT_ACTIVATED;
字节 Y_limit_reason = LIMIT_NOT_ACTIVATED;
byte Z_limit_reason = LIMIT_NOT_ACTIVATED;

移动时,但不在 HOMING 中: if ( cfg21 && X_limit_activated )
// 硬限制已启用且限位开关已激活 // 记住! __else ____if (x_going_minus()) ______X_limit_reason = LIMIT_ACTIVATED_WHEN_GOING_MINUS; // 记住! ____else ______X_limit_reason = LIMIT_ACTIVATED_SNAFU; // Watta… 限位开关激活,但轴没有移动!!! __halt_movement(); }

当 HOMING
if (cfg21 && X_limit_activated) // 启用硬限制并且激活限位开关
{
__if (x_going_plus() && (X_limit_reason == LIMIT_ACTIVATED_WHEN_GOING_MINUS))
____ignore_limit_switch; // GRBL 是往前走的,上次激活限位是往回走的时候

__if (x_going_minus() && (X_limit_reason == LIMIT_ACTIVATED_WHEN_GOING_PLUS))
____ignore_limit_switch; // GRBL 正在往回走,最后一次限位激活是在往前走的时候
}
else
{
__// 限位开关没有激活,忘了为什么上次激活了
__X_limit_reason = LIMIT_NOT_ACTIVATED; // 忘记!
}

相同的代码,在一个块中
if (cfg21) // 启用硬限制
{
__if (homing())
__{
____// Homing…
____if (X_limit_activated) // 限位开关已激活
____{
______if (x_going_plus() && (X_limit_reason == LIMIT_ACTIVATED_WHEN_GOING_MINUS))
________ignore_limit_switch; // GRBL 正在前进,最后一次限制激活是在返回时
______if (x_going_minus() && (X_limit_reason == LIMIT_ACTIVATED_WHEN_GOING_PLUS))
________ignore_limit_switch; // GRBL 正在往回走,最后一次限位激活是在往前走的时候
____}
____else
____{
______// 限位开关没有激活,忘了为什么最后激活了
______X_limit_reason = LIMIT_NOT_ACTIVATED; // 忘记!
____}

____if (Y_limit_activated) // 限位开关激活
____…

____if (Z_limit_activated) // 限位开关激活
____…
__}
__else
__{
____// NOT Homing..
____if (X_limit_activated) // 限位开关激活
____{
______if (x_going_plus())
________X_limit_reason = LIMIT_ACTIVATED_WHEN_GOING_PLUS; // 记住!
______else
________if (x_going_minus())
__________X_limit_reason = LIMIT_ACTIVATED_WHEN_GOING_MINUS; // 记住!
________else
__________X_limit_reason = LIMIT_ACTIVATED_SNAFU; // Watta… 限位开关激活,但轴没有移动!!!
______halt_movement();
____}

____if (Y_limit_activated) // 限位开关激活
____…

____if (Z_limit_activated) // 限位开关已激活
____…
__}
} // cfg21 已启用硬限位

记住是什么导致了限位开关激活 #1629
jahnj0584 评论了 2020 年 5 月 4 日 通过电子邮件
记住是什么导致了限位开关激活 #1629

据我所知,GRBL 并没有脱离实际关闭的限位开关(也许这需要改进),在我的机器中我需要从关闭的限位开关手动移动轴然后我重置然后归位,但是你也可以进行重置,然后通过软件移动它,然后当它检测到它超出限位开关时,再次出现警报,然后进行第二次重置,然后进行 homming,你就可以开始了。

这是最简单的阅读方式:

手动方法:

  • 手动将轴移出限位开关。
  • 按控制器或软件上的重置按钮。
  • 做归位。

软件方法:

  • 按控制器或软件上的重置按钮。
  • 使用软件点动按钮将轴移出限位开关(完成后将显示警报)。
  • 再次按下控制器或软件上的重置。
  • 做归巢。
喜欢 (0)