开源改变世界!!

state = STATE_IDLE 在 ALARM 断言后 #46

推推 grbl 2年前 (2023-02-08) 116次浏览
关闭
5ocworkshop 开了这个issue 2021 年 7 月 26 日 · 6条评论
关闭

state = STATE_IDLE 在 ALARM 断言后#46

5ocworkshop 开了这个issue 2021 年 7 月 26 日 · 6条评论

评论

state = STATE_IDLE 在 ALARM 断言后 #46
5oc工作坊 评论了 2021 年 7 月 26 日  

今晚我有了一个惊人的发现。

我正在编写警报发出时闪烁灯的代码,但它根本不起作用,或者它出现了。

如果你连接到机器,回家,然后有意触发一个限制传感器,我得到了正确的归位、空闲和限制事件的灯光序列——但随后是 IOSender UI 和?状态行都声称 Alarm:1 但我的代码没有触发。

我发现了这一点,因为一时兴起,我在我的轻型代码中将我的 STATE_ALARM 更改为 STATE_IDLE 并且惊讶地发现代码工作正常,机器状态是意想不到的惊喜。我在限制触发器上得到了一个短暂的 (onStateChanged) 命中,然后我得到了与 STATE_IDLE 相关联的闪烁事件。

我认为在清除警报条件之前设置 STATE_IDLE 标志不是预期的行为?

state = STATE_IDLE 在 ALARM 断言后 #46
作者

我相信系统应该在STATE_ALARM警报仍然断言时进入,如果需要,插件可以使用的值alarm_code_t来确定有关警报条件的更多详细信息?

state = STATE_IDLE 在 ALARM 断言后 #46
贡献者

我发现了这一点,因为一时兴起,我在我的轻型代码中将我的 STATE_ALARM 更改为 STATE_IDLE 并且惊讶地发现代码工作正常,机器状态是意想不到的惊喜。

你确定吗?当前状态用于生成实时报告,当我在这里进行快速测试时,它并没有变为空闲状态。

然后插件可以使用 alarm_code_t 的值来确定有关警报条件的更多详细信息?

是的,您可以在sys.alarm.

state = STATE_IDLE 在 ALARM 断言后 #46
作者

我可以在这里可靠地重现这种情况。

我对此感到非常惊讶,但通过查看代码,似乎警报区域有点在进行中。

你用什么步骤重现了它,但没有证实我的发现?

需要明确的是,报告行在整个情况下都包含 Alarm:1 条目,这是我正在做的额外测试发现的。也许我的代码有错误。我现在在另一台电脑上,但我会发布代码供您评论。

state = STATE_IDLE 在 ALARM 断言后 #46
贡献者

似乎警报区域有点在进行中。

我没有计划更改警报处理,唯一让我烦恼的是我无法永久打开报告警报代码作为实时报告中状态的一部分,因为这可能会破坏某些发件人。

你用什么步骤重现了它,但没有证实我的发现?

我在state_machine.cstate_set()函数的开头添加了一个断点,当我触发限位开关时,它只被调用一次以设置警报状态。另外,状态变量封装在state_machine.c中,改变它的唯一方法是调用,并且必须调用才能获取它 。实时报表怎么在idle状态下就可以报警 我不明白。state_set()state_get()

state = STATE_IDLE 在 ALARM 断言后 #46
作者

感谢您的背景。我今天会再次处理这个问题。听起来这一定是我的代码中的一个错误。我需要仔细检查我是如何获得状态的。

state = STATE_IDLE 在 ALARM 断言后 #46
作者

看起来这是我处理状态的错误。我相信它工作正常并且我已经更新了我的代码。抱歉,呃,误报。:) 关闭。