开源改变世界

按下停止按钮/ESC 时的“疯狂移动” #865

推推 grbl 2年前 (2023-01-30) 236次浏览
关闭
rmu75 打开了这个问题 2020 年 5 月 22 日 · 17条评论
关闭

按下停止按钮/ESC 时的“疯狂移动”#865

rmu75 打开了这个问题 2020 年 5 月 22 日 · 17条评论

注释

按下停止按钮/ESC 时的“疯狂移动” #865
  1. 加载一个相当复杂的 g 代码文件 (torus.png)
  2. 运行程序
  3. 跳水时打断

这是我期望发生的事情:

运动被中止

这是发生了什么:

进给或快速移动到某个伪随机位置

在此之前它工作正常:

不确定。

有关我的硬件和软件的信息:

使用 linuxcnc 2.9 pre 8756d78在 RPI4 上测试

按下停止按钮/ESC 时的“疯狂移动” #865
作者
NML_INTERP_LIST(0x30c190)::append(nml_msg_ptr{size=184,type=EMC_TRAJ_LINEAR_MOVE}) : list_size=1001, line_number=2557
emcTaskPlanExecute(0) return 0
emcTaskPlanLine() returned 2558
Issuing EMC_TRAJ_LINEAR_MOVE -- 	 (  +220,+184,    +0,348.289200,239.222333,-59.698367,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,    +1,25.000000,25.000000,750.000000,    +0,    -1,)
Issuing EMC_TASK_ABORT -- 	 (  +503,+12,   +37,)
NML_INTERP_LIST(0x30c190)::clear(): discarding 1001 items
NML_INTERP_LIST(0x30c190)::append(nml_msg_ptr{size=12,type=EMC_TASK_PLAN_SYNCH}) : list_size=1, line_number=2557
emcTaskPlanClose() called at emc/task/emctask.cc:263
NML_INTERP_LIST(0x30c190)::append(nml_msg_ptr{size=184,type=EMC_TRAJ_LINEAR_MOVE}) : list_size=2, line_number=2558
NML_INTERP_LIST(0x30c190)::append(nml_msg_ptr{size=88,type=EMC_TRAJ_SET_TERM_COND}) : list_size=3, line_number=2558
NML_INTERP_LIST(0x85f08)::clear(): discarding 0 items
Motion id 12 took 1.210069 seconds.
Motion id 0 took 0.000001 seconds.
NML_INTERP_LIST(0x30c190)::get(): {size=12, type=EMC_TASK_PLAN_SYNCH}, list_size=2
emcTaskPlanLevel() returned 0
Outgoing motion id is 2557.
Issuing EMC_TASK_PLAN_SYNCH -- 	 (  +516,+12,    +0,)
emcTaskPlanSynch() returned 0
NML_INTERP_LIST(0x30c190)::get(): {size=184, type=EMC_TRAJ_LINEAR_MOVE}, list_size=1
emcTaskPlanLevel() returned 0
Outgoing motion id is 2558.
Issuing EMC_TRAJ_LINEAR_MOVE -- 	 (  +220,+184,    +0,348.289200,263.222333,-79.698367,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,    +2,8.333333,25.000000,750.000000,    +0,    -1,)
NML_INTERP_LIST(0x30c190)::get(): {size=88, type=EMC_TRAJ_SET_TERM_COND}, list_size=0
emcTaskPlanLevel() returned 0
Issuing EMC_TRAJ_SET_TERM_COND -- 	 (  +222,+88,    +0,    +2,0.010000,)
Issuing EMC_TRAJ_SET_TELEOP_ENABLE -- 	 (  +230,+80,   +38,    +1,)
Motion id 2558 took 28.572219 seconds.
Motion id 0 took 0.000002 seconds.
按下停止按钮/ESC 时的“疯狂移动” #865
作者

我的怀疑是,当调用 Interp::close 时,_setup.lazy_close 为 1,导致“关闭”调用被推迟。将https://github.com/LinuxCNC/linuxcnc/blob/master/src/emc/rs274ngc/rs274ngc_pre.cc#L932更改为 = 0;似乎避免了这个问题,但我不确定 lazy_close 首先应该完成什么。

按下停止按钮/ESC 时的“疯狂移动” #865
合作者
罗伯·埃伦伯格 评论了 2020 年 5 月 22 日 通过电子邮件
按下停止按钮/ESC 时的“疯狂移动” #865
作者
75元 评论了 2020 年 5 月 22 日  

它执行一个或两个在排队的动作之后的动作。将尝试使用 G64 P0.01 Q0.0。配置中没有 ON_ABORT_COMMAND。

按下停止按钮/ESC 时的“疯狂移动” #865
作者

使问题消失的另一个变化是在https://github.com/LinuxCNC/linuxcnc/blob/master/src/emc/task/emctask.cc#L260中的 emcTaskPlanClose() 之后添加 emcTaskPlanReset()

按下停止按钮/ESC 时的“疯狂移动” #865
作者

G64 P0.01 Q0.0 没有区别。

按下停止按钮/ESC 时的“疯狂移动” #865
合作者
安迪普 评论了 2020 年 5 月 22 日  

又是这个bug?
#579
(尽管#579#241#393似乎都明确链接到 ON_ABORT_COMMAND)

按下停止按钮/ESC 时的“疯狂移动” #865
作者
75元 评论了 2020 年 5 月 22 日  

又是这个bug?#579

不知何故。从#579中提到的修复反向思考,需要调用 interp::close ,但在这种情况下,它不是,因为 lazy_close 标志。

我只有在特定情况下才能触发这个疯狂的举动,大多数时候 ESC / STOP 都可以。pcw 也可以在 PC 上重现。似乎是在某处比赛。

按下停止按钮/ESC 时的“疯狂移动” #865
作者
75元 评论了 2020 年 5 月 22 日  

我还可以在 G61 精确路径模式下触发疯狂移动。

按下停止按钮/ESC 时的“疯狂移动” #865
合作者

刚刚测试过,错误不存在于 2.7 或 2.8 中(至少重试约 20 次)

按下停止按钮/ESC 时的“疯狂移动” #865
成员

@pcw-mesa提供这个平分日志: http: //freeby.mesanet.com/bisect_log

基本上,涉及的提交范围是状态标签。

53a13f4d5 statetags: Fix some merge conflict manual resolution errors.
...
26f8bef10 motion/interp: Massive overhaul to insert state tags at all levels.

@zultron你有机会调查这个问题吗?

按下停止按钮/ESC 时的“疯狂移动” #865
贡献者

当然,我会看看。感谢您的提醒。

按下停止按钮/ESC 时的“疯狂移动” #865
合作者

来自邮件列表

我有机会拍下那次事故的快照 =:O

当我从后端测试省略的行时,我在启用日志记录的情况下从
轴运行 3D_Chips.ngc。在收集了 enulog 日志后,我点击了停止。
首先我想:好的,这次它停止了。
… 但随后它又开始运行(轴的停止按钮已显示为已
按下)并且刀具在工件上运行。

我上传了截图:https ://www.imagebanana.com/s/1774/QnA1w8ks.html

按下停止按钮/ESC 时的“疯狂移动” #865
贡献者

我有一个重现这个的测试用例,并且几乎追踪到了它。希望我明天能拿到 PR。

zultron 添加了对引用此问题的 zultron/machinekit 的提交 2020 年 6 月 8 日

zultron 添加了对引用此问题的 zultron/machinekit 的提交 2020 年 6 月 8 日

按下停止按钮/ESC 时的“疯狂移动” #865
贡献者
祖创 评论了 2020 年 6 月 8 日  

请参阅#882中的修复

事实证明两者都很重要@rmu75的原始代码和@andypugh3D_Chips.ngc使用G64

按下停止按钮/ESC 时的“疯狂移动” #865
合作者

为了在到期时分配信用,我的消息是来自 Reinhard 的消息的复制和粘贴:
https ://sourceforge.net/p/emc/mailman/message/37026304/

按下停止按钮/ESC 时的“疯狂移动” #865
贡献者

要在到期时分配信用,[…]

要做到这一点,绝对要感谢 Reinhard。此外,拥有对代码和问题都非常熟悉的人,通过论坛筛选以识别有用的信息并将其与要解决的问题联系起来是非常有价值的。在这种特殊情况下,有多个问题。就您而言,这是一段漫长而持续的历史。谢谢你。

zultron 添加了对引用此问题的 zultron/machinekit 的提交 2020 年 6 月 8 日

zultron 添加了对引用此问题的 zultron/machinekit 的提交 2020 年 6 月 8 日

喜欢 (0)