开源改变世界!!

归位问题 #102

推推 grbl 2年前 (2023-02-08) 158次浏览
关闭
dresco 打开了这个问题 2021 年 12 月 16 日 · 17条评论
关闭

归位问题#102

dresco 打开了这个问题 2021 年 12 月 16 日 · 17条评论

评论

归位问题 #102
贡献者

嗨 Terje,刚刚将我的路由器更新为最新代码,发现一个奇怪的归位问题。

我正在 Phil 的 Teensy41 板上运行联动 Y 轴,自动平方。以前在今年早些时候运行代码,但没想到要注意旧版本。

在尝试任何移动之前,我将 Y2 步进器和限位开关连接从 B 移动到 A,并检查所有限位开关是否按实时报告中的预期触发。

每次回家的尝试;
Z 按预期正确归位。
如果 X 是下一个到达其限位开关的轴,则会触发开关,但 X 轴电机不会停止。步进器只是停在终点站。
如果在 Y 轴到达其限位开关时触发 X 轴限位开关,则它们将按预期停止。
如果当 Y 轴到达其限位开关时触发 X 轴限位开关,则 Y 轴电机不会停止。步进器(s?)只是停止停止。
如果在 X 轴达到其极限时触发 Y 轴限位开关(es?),则 X 轴电机将按预期停止。

在每种情况下,很难判断它是同时影响两个 Y 轴还是只影响其中一个 Y 轴。

正在使用 platformio 构建,没有更改代码,但注释掉了 microSD 库,并添加了以下设置;

    -DHUANYANG_ENABLE=1
    -DSPINDLE_RPM_CONTROLLED
    -DY_GANGED=1
    -DY_AUTO_SQUARE=1
    -DBLOCK_BUFFER_SIZE=512

有任何想法吗??

归位问题 #102
贡献者

我刚刚用我的模拟器和 Pro 板进行了测试,它可以正常工作。接线问题?

归位问题 #102
贡献者

这是$pins命令报告的我的限制引脚分配:

[PIN:20,X limit min]
[PIN:21,Y limit min]
[PIN:23,Y limit min 2]
[PIN:22,Z limit min]

相同的引脚用于 T41U5XX 和 T14BB5X_Pro。

归位问题 #102
贡献者作者

谢谢,是的,我的别针是一样的。很奇怪,因为状态都正确显示在 ? 报告,只是电机在触发时不会停止。

我现在已经断开了我的步进器联轴器,所以我可以用更少的恐慌进行测试 :) 我将返回到默认构建和设置,没有组合/平方并从那里开始。

归位问题 #102
贡献者作者

嗯,是下面的;

    -DHUANYANG_ENABLE=1
    -DSPINDLE_RPM_CONTROLLED

这会在没有任何组合/平方的情况下导致问题,似乎电机停止之前需要触发 X 和 Y 限位开关(不一定同时触发 – 一个接一个就可以)。

归位问题 #102
贡献者

这很奇怪,我只是在启用了 Huanyang 主轴的情况下进行了编译,并且归位仍然有效。

归位问题 #102
贡献者作者

您能否附上一个有效的 .hex,我会上传它作为完整性检查?谢谢!

归位问题 #102
贡献者

这是一个用于 T41U5XX 板的,我想你有。
grblHAL_Teensy4_Upload.ino.zip

归位问题 #102
贡献者作者

谢谢,这太奇怪了 – 我仍然看到你的二进制文件有同样的问题..

我想我得睡觉了,希望能得到灵感!如此痛苦以至于这个板上没有调试:(

归位问题 #102
贡献者

如果您有 USB <> UART 分线器,您可以将其用于“调试”,取消grbl/config.h 中DEBUGOUT的注释以启用- 在grbl/stream.h中定义。它声称是 UART 端口,因此不能与 Huanyang VFD 一起使用。debug_write (const char *s)

归位问题 #102
贡献者作者

嗨,还没有弄清楚为什么,但是当 grblHAL 没有从 VFD 得到响应时会发生归位失败(我还没有为初始运动测试连接它)。

你是说你的设置中有一个主轴模拟器吗?现在一切都已连接,我可以通过将 374 美元的波特率更改为不正确的值来触发归位错误。

归位问题 #102
贡献者作者

与引发主轴警报有关,如果我立即从 rx_exception() 返回 0,则归位按预期完成。

归位问题 #102
贡献者

与引发主轴警报有关,如果我立即从 rx_exception() 返回 0,则归位按预期完成。

很好 – 我必须调查一下,因为当主轴警报发出时,我并不清楚发生了什么。
现在你可以尝试改变

核心/limits.c

第 206 行 d86015b

如果(系统。rt_exec_alarm){

 

if(sys.rt_exec_alarm || sys.alarm) {

如果我没记错的话,这将终止归巢序列。但也许它应该被允许完成?但这可能很难处理。

归位问题 #102
贡献者作者

如果我没记错的话,这将终止归巢序列。

谢谢,明天试试。

但也许它应该被允许完成?但这可能很难处理。

我认为只是取消比意外地通过限位开关嘎吱作响要好得多;)同意,如果你有某种永久性的 vfd 故障,能够将机器置于该状态仍然有用。

我不是很清楚为什么它首先会抛出主轴错误,但我看到它在归位期间关闭了主轴和冷却液,这现在是有道理的。

归位问题 #102
贡献者作者
德雷斯科 评论了 2021 年 12 月 18 日  

如果我没记错的话,这将终止归巢序列。

嗯,奇怪的是它没有..

但也许它应该被允许完成?

对此有过想法,也许只是让主轴/冷却液的停止有条件?(get_state() 非阻塞 modbus 超时不会产生异常)。

diff --git a/motion_control.c b/motion_control.c
index 50c7bf7..e515ac0 100644
--- a/motion_control.c
+++ b/motion_control.c
@@ -786,13 +786,17 @@ status_code_t mc_homing_cycle (axes_signals_t cycle)
 #endif
         hal.limits.enable(false, true); // Disable hard limits pin change register for cycle duration
 
-        // Turn off spindle and coolant (and update parser state)
-        gc_state.spindle.rpm = 0.0f;
-        gc_state.modal.spindle.on = gc_state.modal.spindle.ccw = Off;
-        spindle_set_state(gc_state.modal.spindle, 0.0f);
+        // Turn off spindle and coolant if needed (and update parser state)
+        if (hal.spindle.get_state().on) {
+            gc_state.spindle.rpm = 0.0f;
+            gc_state.modal.spindle.on = gc_state.modal.spindle.ccw = Off;
+            spindle_set_state(gc_state.modal.spindle, 0.0f);
+        }
 
-        gc_state.modal.coolant.mask = 0;
-        coolant_set_state(gc_state.modal.coolant);
+        if (hal.coolant.get_state().mask) {
+            gc_state.modal.coolant.mask = 0;
+            coolant_set_state(gc_state.modal.coolant);
+        }
归位问题 #102
贡献者

现在用这段代码替换system_raise_alarm() :

void system_raise_alarm (alarm_code_t alarm)
{
    if(state_get() == STATE_HOMING && !(sys.rt_exec_state & EXEC_RESET))
        system_set_exec_alarm(alarm);
    else if(sys.alarm != alarm) {
        sys.alarm = alarm;
        state_set(alarm == Alarm_EStop ? STATE_ESTOP : STATE_ALARM);
        if(sys.driver_started || sys.alarm == Alarm_SelftestFailed)
            report_alarm_message(alarm);
    }
}
归位问题 #102
贡献者作者

现在用这段代码替换system_raise_alarm()

谢谢,当主轴无法到达时,可以确认这会停止归位(在 Z: 归位后)..

归位问题 #102
贡献者

仅供参考,我也会在下一次提交中添加您提出的条件检查。