开源改变世界

可能修复 GrblControl/Candle 崩溃/冻结问题 #514

推推 grbl 2年前 (2023-02-01) 247次浏览
关闭
pihnat 打开了这个问题 2021 年 9 月 24 日 · 2 条评论
关闭

可能修复 GrblControl/Candle 崩溃/冻结问题#514

pihnat 打开了这个问题 2021 年 9 月 24 日 · 2 条评论

注释

可能修复 GrblControl/Candle 崩溃/冻结问题 #514

我们已经运行 GrblCntrl v0.9 和 grbl v0.9j 几年了,并且经常遇到随机冻结/崩溃问题,我曾多次调查过这些问题。我觉得我可能找到了原因和可能的解决方案。下面提供的信息也应该与当前版本的 Candle/grbl 相关,所以我希望您觉得它有用,或者至少是解决您可能遇到的冻结/崩溃问题的起点。希望这也可以解决问题#510#501#461#342#338#260#255

背景:
我们运行 16 台学生 CNC 机器 (Sherline 5100),这些机器由定制的步进控制器控制。这些过去由 DOS 程序控制,控制器使用 25 针打印机电缆连接到计算机的并行端口。计算机升级后,我们使用 GrblControl 和 Arduino Unos 运行 grbl。显而易见的解决方案是将 Unos 安装到步进控制器盒中,然后使用 USB 电缆将它们连接回计算机。请注意,我们没有限位开关。Unos 和步进控制器之间的唯一信号是 X、Y、Z 步进和方向信号以及使能信号。主轴电机通过电源开关和速度控制旋钮在铣床前部手动控制。

问题:
我发现大部分时间都没有问题,但偶尔会在随机时间冻结。可视化屏幕将停止,但 CNC 机器将继续运行,直到 Uno 中保存排队命令的缓冲区被清空。然后它将停止,主轴仍在运行。GrblControl 会完全锁定。停止它的方法是进入任务管理器并结束任务。然而,重新运行 GrblControl 导致串行端口错误,正确重新启动的唯一方法是重新启动计算机。

可能的解决方案:
所以认为这是一个地球循环或与之相关的东西,我尝试了不同的解决方案。最初 Uno 由 USB 电缆供电,所以我尝试从步进控制器内部为其供电。它没有帮助。我在 Uno 和步进控制器板之间的步进/方向/控制线上尝试了光耦合器。它也没有用。我无法让系统按提示崩溃,它只是一个随机问题。然而,当我设置系统时,我确实注意到只有一个 Uno 本身插入我的台式计算机并且运行 GrblControl 非常稳定。

最终,通过尝试使用其中一个 CNC 设置,我终于找到了重现故障的方法。它与主轴电机有关。如果我让主轴电机关闭,我可以在没有工件的情况下运行一台数控机床,而且它会完美运行。但是,如果主轴电机正在运行并且我一遍又一遍地重新运行相同的 G 代码程序,GrblControl 最终会崩溃。如果我将主轴速度调到零,打开它,然后将速度调到它的运行速度,它也会崩溃。我还按如下方式运行它 – 在没有关闭工件和主轴电机的情况下,我将开始 CNC 运行。然后在运行期间,我会以不同的时间和不同的速度打开和关闭主轴电机。在其中一次切换期间非常可靠,我可以使 GrblControl 冻结。所以这个问题似乎是由主轴电机产生的电干扰引起的,并被 USB 电缆/Uno 装置拾取。我还尝试重新编译 grbl,将波特率设置回 9600 波特以使其不易受噪音影响,但这也没有用。

看起来 USB 电缆从主轴电机控制器接收到尖峰,干扰数据混淆了在 Uno 上运行的 grbl 或在主计算机上运行的 GrlControl/Candle。我还没有研究是发送数据还是接收数据是原因。所以一些可能的解决方案:
1。如果问题出在 GrblControl 接收的数据上,那么可以修改软件的串行端口部分,因此如果接收到的数据没有意义,它应该忽略它并再次请求数据。我注意到在当前版本的 Candle 中,设置中有一个名为“忽略错误响应”的选项。因为我没有运行 Candle,所以我没有测试这是否能解决问题,但这个选项可能只适用于从 grbl 发回的有效错误代码,而不适用于正在传输的实际数据包中的错误。
2.如果问题出在运行 grbl 的 Uno 接收的数据上,那么对 grbl 软件进行类似的更改可能会有所帮助,但这需要更改 grbl 源代码。
3.另一个我没有尝试过但可能有效的测试是使用双屏蔽USB 电缆将 Uno 连接到计算机。Issue #342似乎暗示这可能有效。如果其他人尝试过,请报告是否有效。
4.在我们的案例中,我采用的解决方案是从步进控制器盒中取出 Uno,并将其安装在标准的 zippy 盒中。我在盒子上安装了一个母 25 针 D 型连接器,并将 Uno 的 I/O 针连接到它。然后我使用我们以前使用的 25 针打印机电缆将盒子连接到步进控制器。为了将 Uno 连接到计算机,我制作了一条非常短的 USB 电缆,长约 120 毫米。太短了,这似乎阻止了主轴电机尖峰被 USB 电缆拾取。

一旦我们解除封锁,我将继续测试最后一个解决方案,但到目前为止它似乎奏效了。

可能修复 GrblControl/Candle 崩溃/冻结问题 #514

如果问题出在 GrblControl 接收的数据上,那么可以修改软件的串行端口部分,因此如果接收到的数据没有意义,它应该忽略它并再次请求数据。

我认为这个问题是由USB总线上的电磁干扰引起的,而不是串口上的。这意味着一旦失败,Candle 和/或 Grbl 将无能为力。PC 上的驱动程序无法与 USB 转 UART 转换器(例如 CH340)通信。Candle 仅读取/写入驱动程序提供的虚拟文件(例如 COM1),而 Grbl 使用它的 UART 外围设备。Candle 和 Grbl 都无法解决 USB 通信问题。

可能修复 GrblControl/Candle 崩溃/冻结问题 #514
作者

是的,这很有意义,因为受到干扰的是 USB 电缆上传输的数据包,而不是实际的串行数据。这也可以解释为什么当我尝试使用光耦合器并更改波特率时它也没有帮助。

这样就消除了我可能的解决方案 1 号和 2 号,只剩下 3 号和 4 号。
谢谢