开源改变世界!!

归位问题 #102

推推 grbl 2年前 (2022-10-23) 421次浏览 0个评论
关闭
dresco打开了这个问题 on 16 Dec 2021· 17 条评论
关闭

归位问题#102

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

注释

归位问题 #102
贡献者

德雷斯科 评论 on 16 Dec 2021

嗨 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
贡献者作者

德雷斯科 评论 2021 年 12 月 17 日

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

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

归位问题 #102
贡献者作者

德雷斯科 评论 2021 年 12 月 17 日

嗯,就是下面这个;

    -DHUANYANG_ENABLE=1
    -DSPINDLE_RPM_CONTROLLED

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

归位问题 #102

这很奇怪,我刚刚在启用环阳主轴的情况下编译,并且归位仍然有效。

归位问题 #102
贡献者作者

德雷斯科 评论 2021 年 12 月 17 日

你能附上一个有效的.hex,我会上传它作为健全性检查吗?谢谢!

归位问题 #102

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

归位问题 #102
贡献者作者

德雷斯科 评论 2021 年 12 月 17 日

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

我想我得睡在上面,希望能得到灵感!这块板上没有调试真是太痛苦了:(

归位问题 #102

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

归位问题 #102
贡献者作者

德雷斯科 评论 2021 年 12 月 18 日

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

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

归位问题 #102
贡献者作者

德雷斯科 评论 2021 年 12 月 18 日

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

归位问题 #102

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

好消息 – 我将不得不对此进行调查,因为当主轴警报响起时,我并不清楚发生了什么。
现在你可以尝试改变

如果(系统。rt_exec_alarm){

 

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

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

归位问题 #102
贡献者作者

德雷斯科 评论 2021 年 12 月 18 日

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

谢谢,明天试试。

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

我认为只是取消比意外地通过限位开关要好得多;)同意,如果你有某种永久性的 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
贡献者作者

德雷斯科 评论 2021 年 12 月 19 日

现在用此代码替换system_raise_alarm()

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

归位问题 #102

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

喜欢 (0)

您必须 登录 才能发表评论!