开源改变世界

但我近期没有时间研究它。 @chamnit 成员 #427

推推 grbl 2年前 (2023-01-22) 169次浏览

@timryder: 是否有关于您奇怪的通讯问题的最新消息?

但我近期没有时间研究它。  @chamnit 成员 #427

我想我知道是什么导致了 9e 上的 M8/M9 问题。我一直在为 9e 更新模拟器,并且我已经看到类似的锁定试图运行 M3 主轴。

只有当您发送串行命令的速度快于 grbl 可以跟上时,才会出现此问题。它与以下事实有关:主循环在清空传入串行缓冲区之前不会设置 CYCLE_START,但主轴和冷却液命令会阻塞,直到规划器为空。事件的顺序是这样的:

以空闲状态启动。
发送运动命令后立即发送冷却命令。
protocol main loop调用protocol_execute_line运动命令。
这到达mc_line,它向规划器缓冲区添加一个块并将状态设置为“QUEUED”。
返回时,protocol main loop在缓冲区中找到更多字符并调用protocol_execute_line主轴命令。
这调用coolant_run了一个protocol_buffer_synchronize

这就是它卡住的地方。Grbl 还没有处于 ‘CYCLE’ 状态,并且有一个当前块,所以它进入等待循环。但protocol_execute_runtime永远不会从 QUEUED 状态变为 CYCLE 状态,因为没有设置“EXEC_CYCLE_START”位。

我能够通过在“coolant_run”和“spindle_run”的开头添加“protocol_auto_cycle_start()”来修复它。

但我近期没有时间研究它。  @chamnit 成员 #427

我的代码中也有这些。:-)

但我近期没有时间研究它。  @chamnit 成员 #427
成员

@ashelly: 啊,谢谢你的解释。这个周末我有一些时间,然后我打算解决这个问题以及其他一些事情。我一直在考虑如何从整体上解决这个问题,而不是补丁。可能会重新组织代码以在以后消除此类问题,或者在下一次使它变得非常明显。

喜欢 (0)