打开 amirm 打开了这个问题 2020 年 5 月 4 日 · 2 条评论 打开 记住是什么导致了限位开关激活#1629 amirm 打开了这个问题 2020 年 5 月 4 日 · 2 条评论 注释 阿米尔 评论了 2020 年 5 月 4 日 当限位开关被激活时,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 已启用硬限位 jahnj0584 评论了 2020 年 5 月 4 日 通过电子邮件 更简单的方法是将软限制设置为距离硬限制触发点 1 毫米。 …… abdset 评论了 2020 年 5 月 25 日 据我所知,GRBL 并没有脱离实际关闭的限位开关(也许这需要改进),在我的机器中我需要从关闭的限位开关手动移动轴然后我重置然后归位,但是你也可以进行重置,然后通过软件移动它,然后当它检测到它超出限位开关时,再次出现警报,然后进行第二次重置,然后进行 homming,你就可以开始了。 这是最简单的阅读方式: 手动方法: 手动将轴移出限位开关。 按控制器或软件上的重置按钮。 做归位。 软件方法: 按控制器或软件上的重置按钮。 使用软件点动按钮将轴移出限位开关(完成后将显示警报)。 再次按下控制器或软件上的重置。 做归巢。 喜欢 (0) 增强:Gcode 修改器 #196 延迟达到全功率 #197 v1.3.8-EDGE 重启后键盘快捷键消失 #427 关闭 无法在 gsender 1.2.0 中打开 .gcode 文件 #367 RaspberryPi 运行 gsender 时出现问题 #89 向 fluidnc 发送 $$ 会导致 gsender 崩溃 #473 v1.3.8-EDGE 重启后键盘快捷键消失 #427 关闭无法在 gsender 1.2.0 中打开 .gcode 文件 #367RaspberryPi 运行 gsender 时出现问题 #89向 fluidnc 发送 $$ 会导致 gsender 崩溃 #473功能请求:抑制发送到机器的 gcode 中的 gcode 注释。 #444 关闭通过网络连接进行连接 #171操纵杆运动的剩余问题 #204 关闭新版本认为我的机器一直处于锁定状态 #474 关闭
当限位开关被激活时,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 已启用硬限位