开源改变世界!!

启动文件流时出错 #2033

推推 grbl 2年前 (2023-01-29) 91次浏览

关闭
tobiaswuerth 打开了这个问题 2022 年 11 月 2 日 · 12条评论
关闭

启动文件流时出错#2033

tobiaswuerth 打开了这个问题 2022 年 11 月 2 日 · 12条评论

注释

@tobiaswuerth

版本

2.0.12

硬件/固件

GRBL 1.1

发生了什么

我有一个小的 .gcode 文件,其中包含我现在正在试验的一些命令,以使事情正确。我可以运行该程序并且它执行得很好,但 UGS 无法识别该文件已完成执行。当我尝试再次运行它时,出现“启动文件流时出错”错误消息弹出窗口。然后我必须软重置才能再次运行它。

我注意到“估计时间”和“文件中剩余的行数”不会停止/更新,我不确定这是否正常。但是状态在“空闲”中是正确的。
启动文件流时出错 #2033

此外,日志文件messages.log中有很多 NullPointerExceptions ,例如:

如何重现

  • 打开UGS
  • 通过 COM4 115200 连接到 Arduino UNO
  • 开锁
  • 打开 .gcode 测试文件
  • 执行文件
  • (等到完成)
  • 再次执行 -> 错误弹出

我的测试文件:

; starting program
G21 ; use milimeters
G90 ; absolute coordinates
G17 ;XY
G1 X10Y10 F2000
G1 Z10 F500
G18 ;XZ
G2 X25Z0 R15 F900
G2 X30Z10 R15 F500
G17
G1 X10Y10 F2000
M2
; done

操作系统

Windows 11 家庭版 22H2

还要别的吗

  • 每次都会发生
  • 尝试每晚构建和正常
  • 尝试过 x64 和 x32 构建

另外,我还有另一个问题,但我不确定这是否与此有关。我可能会为此打开另一个问题,但只是想让你知道。有时当我执行一个普通/更大的 .gcode 文件时,可能会发生执行随机停止而没有完成或显示任何错误(在第 3000、6000 或 40000 行 – 无关紧要,没有模式)。然后我必须软重置,找出它运行的位置,手动删除已经执行的 .gcode 行,然后继续。真的很烦人,因为我不能相信我的构建来完成工作,所以我总是必须监督它:/。我试图通过将 -Xms64m 更改为 Xms512m 来增加 UGS 的 RAM,这似乎有所帮助,但在另一次运行中又出现了这个问题,所以我还是没有信心。我还尝试通过切换插件来更改 gcode 解析器(选项 > UGS > 控制器选项)打开或关闭。我还尝试了在没有获得任何额外见解的情况下进行详细日志记录、单步模式和在 GRBL 固件中启用“回声模式”(但没有显示任何额外信息)。我还确保我所有的电缆都完好且稳定。还检查了 COM 端口的 Windows 驱动程序是否正常。到目前为止没有任何帮助。我有一个来自入门套件的原装 Arduino UNO,以及一个带有 DRV8825 驱动程序的 Protoneer CNC Shield v3。

@布雷勒
合作者

感谢您的详细报告!

如果您打开了“UGS 诊断”窗口,我在您的屏幕截图中看不到。但是您引用的日志消息源自它。如果它是打开的,你可以尝试关闭它并重新启动 UGS,然后再试一次。

关于间歇性断开连接,听起来很像 EMI 问题,我不认为这两个问题是相关的。很难就此提供建议,因为它取决于您的设置。我可能会先断开限位开关,因为它的电缆容易受到 EMI 的影响,而且除了 Protoneer 屏蔽上的电容器外,我看不到任何滤波组件。如果这解决了问题,您可能需要在输入端使用一些过滤电子设备。如果它不能解决问题,请转到下一个外围设备,例如主轴。

@tobiaswuerth
作者
托比亚斯维尔特 评论了 2022 年 11 月 2 日  

@breiler感谢您的快速回复!

我尝试了你所说的“UGS 诊断”,异常从日志中消失了!所以这是一场胜利!

但是仍然出现“启动文件流时出错”。

关于断开连接:我也认为这些问题不相关,但谁知道呢。我已经意识到 EMI 是一个潜在的问题来源。我试图在某一时刻移除所有的终点站,让它在没有终点的情况下运行,但它仍然冻结了。我不太擅长电子产品,在“调试”电容器等方面我不知道从哪里开始。我注意到的一件事是,当有很多小的运动/方向变化相继发生时,它最常发生。我们谈论的是 0.01 毫米的变化,即使它们有效,它们在执行时也会“发出刺耳的声音”。我仍然希望这是一个软件问题,因为我不确定如果出现问题我是否需要购买新的 Arduino 或新的 CNC 板。在花更多钱在此构建之前,我想尽可能确定。所以至少我想以一定的确定性来结束这个问题。我正在寻找 Arduino 或 GRBL 固件的配置选项,它可以让我记录这些异常情况,但没有找到任何东西。我想当硬件出现问题然后崩溃时,软件无能为力,对吧?

@布雷勒
合作者

这看起来真的很可疑:
启动文件流时出错 #2033

对我来说,这表明 USB 电缆损坏,因为通信出现乱码。看起来控制器没有ok前四行。确保你有一根 USB 电缆,上面有合适的铁氧体磁珠。如果问题仍然存在,如果您断开屏蔽并仅运行 Arduino 而没有连接任何其他东西,会发生什么情况。

关于电磁干扰。是的,如果有足够的电流传输到 Arduino 相当敏感的输入端,它可能会使 CPU 崩溃,而且您无法用软件检测到它。这是一个很难调试的问题,你并不孤单,在这里阅读其他有类似问题的人:https ://groups.google.com/g/universal-gcode-sender/search?q=EMI

@tobiaswuerth
作者
托比亚斯维尔特 评论了 2022 年 11 月 2 日  

@breiler 嗯,你是对的,我也注意到了。我认为这可能是由于多线程或其他原因造成的。

我有一根没有铁氧体磁珠的 1.8m电缆(必须用谷歌搜索那些是什么)。它只是一根没有这些珠子的普通电缆。我从入门套件中收到了不同的电缆(见这张照片),由于电缆内部的金属织物但也没有珠子,它似乎被屏蔽了(?)。我试图运行脚本,但两条电缆都崩溃了,但都冻结了。
然后我尝试再次移除所有停止点并再次运行它 – 但没有成功,仍然冻结。
然后我尝试先从 CNC 防护罩上拆下 Z电机和驱动器并再次运行它 – 冻结了。
然后我拆下了 Y 电机和驱动器 – 再次冻结。
然后我还卸下了 X/A 电机和驱动器 – 再一次,在通常的 5-6k 行后冻结。
然后我尝试从 Arduino 上取下CNC 屏蔽并让脚本运行 – 它仍然冻结!

现在只剩下两个组件是 1) Arduino 和 2) 电缆。 👈
我猜你对电缆的看法可能是对的。

除此之外:有没有办法验证我的 Arduino 是否真的不是问题所在?我购买的入门套件不是来自官方来源。我不能保证它是官方的 Arduino。

此外,我记得在我最初的测试阶段,我在一个步进驱动器(或者它是 DOA)上犯了一个错误,突然间开始闻起来很奇怪,于是我断开了 Arduino 和 CNC Shield 的电源。一台电机和一台步进驱动器(散热器)摸起来很热。我也无法再从步进驱动器调整电位器了。我订购了一个新的步进驱动器并更换了损坏的驱动器。从那以后一切正常,但现在这些问题发生了,我担心那次事件可能已经损坏了 CNC Shield 或 Arduino。有这种可能吗?我怎样才能检查类似的东西?

最后,我注意到脚本运行时出现了更多异常,例如:

另外,由于您没有对“启动文件流时出错”发表评论,我假设您认为问题与连接不良有关?哪个也可能与冻结问题有关?

感谢您的投入!

@布雷勒
合作者

<<Run|MPos:,76.747,1.995|F:2000>>绝对是连接不良(或 Arduino 损坏)的标志,我相信这就是“启动文件流时出错”背后的原因。

由于您已经尝试断开几乎所有与 Arduino 的连接,并尝试使用两根电缆运行 gcode 程序,这表明您的 Arduino 已经完蛋了。你没有任何东西可以引起 EMI 足以引起这些类型的问题。

@tobiaswuerth
作者
托比亚斯维尔特 评论了 2022 年 11 月 2 日  

@breiler你是我的英雄,因为你回答得如此迅速和消息灵通!😃非常感谢你!

在我订购新的 Arduino 之前,我有几个最后的问题想听听您的意见。

  1. 我目前必须通过Microsoft Travel Hub连接,这可能是个问题吗?

  2. 可能是这些设置中的一些是问题所在吗? 我必须调整步数/毫米以匹配我的 1/32 微步。除了按原样设置这些值之外,没有其他方法可以获得实际距离。因为这“只是”一个警告而不是错误,所以我忽略了它,因为我测试的东西似乎按预期工作。我在某处读到,问题可能是 Arduino 的 CPU 无法处理太高的频率,但是当我用谷歌搜索 Arduino Uno 时,它告诉我它运行的是频率为 16 MHz 的 ATmega328P 处理器,远远超过 36千赫。老实说,我不确定这一切是如何运作的,所以我希望您对这些问题有一些了解。
    启动文件流时出错 #2033

@tobiaswuerth
作者
托比亚斯维尔特 评论了 2022 年 11 月 2 日  

发现grbl/grbl#41(评论),这正是我注意到的,它有很多顺序上的小步骤的问题。因此,当我正确理解这一点时,这实际上可能是 UGS 发送的命令多于 GRBL 可以处理的问题?

更新
不,更新steps/mmmm/min以匹配 30kHz 的最大速率并不能解决问题。
顺便说一句,对于那些想知道的人:公式是steps_per_mm * mm_per_min / 60 = frquency_hz. 如果您正在寻找最大。可能的毫米/分钟你可以使用60*30000 / steps_per_mm = max_mm_per_min_for_30kz

@布雷勒
合作者
  1. 我认为您使用集线器并不重要,没有它就没有任何连接方式可以排除这种情况吗?
  2. 如果你设置 $111=20000 它应该不再显示警告(你知道如何计算它)。但这并没有消除错误信息,还是没有解决问题?
@tobiaswuerth
作者
托比亚斯维尔特 评论了 2022 年 11 月 3 日  

@breiler遗憾的是没有,我的 Surface 只有 2 个 USB-C 端口,而且我没有任何此类电缆可以直接连接到 Arduino。

是的,这正是我所做的 :) 不,遗憾的是错误消息 ( <<Run|MPos:,76.747,1.995|F:2000>>: empty String)、“错误启动文件流”弹出窗口和冻结仍然发生。

我现在注意到它确实在同一位置失败,因为我删除了除 Arduino 本身以外的所有内容。我试图隔离 gcode + – 几行并隔离执行它 – 成功。所以我不确定 gcode 本身就是问题所在。这似乎是一个“时间”或程序问题,只有在执行完之前的所有代码之后才会发生。我可以请你试一试并告诉我它是否有效吗?gcode.txt

UGS 告诉我它“发送了 6028 行”(现在冻结之前总是 6028)。我从中得到回显的最后一行是[echo: G1X148.7236Y138.3695]我位于 gcode 文件中的第 6033 行。

@布雷勒
合作者

我完全没有问题地运行了文件。在 40k 行之后,我将进给速度提高到 200%。

@tobiaswuerth
作者
托比亚斯维尔特 评论了 2022 年 11 月 3 日  

@breiler感谢您对此进行测试!

我不知道是什么问题,所以我从官方供应商那里订购了一个新的 Arduino UNO Rev3,希望问题会自行解决。👈

我试图在我事先已经拥有的 Arduino 上进行一些闪存和 RAM 测试,以找出可能是什么问题。我不能断言它不起作用,但我在摆弄它时遇到了一些奇怪的现象,所以假设那里有什么东西坏了实际上可能是合理的。 💡

一旦我得到新硬件,我会及时通知你。

@tobiaswuerth
作者
托比亚斯维尔特 评论了 2022 年 11 月 8 日  

好的,所以我从官方供应商那里收到了我的新 Arduino UNO Rev3 。它看起来与我拥有的完全不同。以下是两个 Arduino 的前后照片:

启动文件流时出错 #2033 启动文件流时出错 #2033
启动文件流时出错 #2033 启动文件流时出错 #2033

我成功测试了 Arduino 的“hello world”“Blink”示例 – 这意味着 Arduino 可以正常工作。
然后我将我的 GRBL 1.1 固件上传到 Arduino(CNC Shield 仍然与 Arduino 断开连接,所以只有 Arduino 独立运行通过 USB 电缆连接到我的 Surface)。上传有效,我能够从 UGS 建立连接。然后我尝试运行我的 gcode 测试文件 – 它也有效!因此,与我之前发生所有异常的那次相比,这已经是一场胜利。

这解决了“启动文件流时出错”的问题。控制台和状态正确地代表了 GRBL 的实际状态,并且在完成任务后,UGS 会识别出作业已完成并允许我再次重新发送它,而不会弹出错误消息。
此外,没有出现“日志碎片”。 


因此,我开始使用连接到 Arduino 的 CNC Shield 再次进行测试。

开始一切似乎都按预期工作,但突然 UGS 变得无响应,并且在重新启动后我无法再次连接到 Arduino。重新连接并重新启动 Arduino 让我再次将 UGS 连接到 Arduino。但奇怪的是,似乎什么都不管用了。尝试发送G1命令没有响应,并且 Homing the machine 什么也没做,除了开始汲取电力(为了打破?)。我注意到一个奇怪的探测状态正在显示,与熟悉的数字不同。显示的数字在运行时也是可见的,$#它返回一个条目PRB(即探测)。在响应中有[PRB:2147483.648,2147483.648,2147483.648:0](3x 2147483.648,即 maxInt32). 我不知道这是如何设置的,但它阻止了一切工作,即使 CNC 防护罩再次断开连接也是如此。
所以我开始寻找一种解决方案来清除 Arduino 上的所有数据并重写 GRBL 固件。因为再次“上传”GRBL 似乎并没有摆脱这个数字。我不确定这些状态存储在 Arduino 上的哪个位置以在固件上传之间持续存在。除非我之前上传的东西不起作用,否则我不知道。无论如何,我尝试再次覆盖并测试内存,看看我是否通过连接 CNC 屏蔽再次破坏了我的 Arduino,如本视频中使用此代码测试的那样。该脚本提供了积极的反馈,这意味着在测试过程中未检测到任何错误并且所有 EEPROM 都已被覆盖。现在我可以再次将 GRBL 上传到我的 Arduino 并将 UGS 连接到它,而不会显示那些奇怪的坐标。

然后我尝试再次连接 CNC 屏蔽让程序运行,但它在某个地方随机崩溃了。尽管这一次,UGS 至少正确地注意到发生了什么,结束了程序并通过控制台消息“连接关闭”改变了它的状态。
所以我再次寻找可能导致我运行我的机器的问题。然后我看到了这段视频,它让我意识到使用我也使用的 CNC 防护罩可能存在短路问题。显然,CNC Shield 位于 Arduino 顶部的方式可能会将 CNC Shield 连接到 Arduino 的 USB 端口。因此,我试图通过在中间粘贴一块隔离胶带来阻止连接。起初它似乎帮助它顺利运行,但后来又崩溃了。反正我把磁带放在那里了,谁知道呢。
继续我的测试我再次尝试在没有 CNC Shield 的情况下运行它,它仍然有效 – 谢天谢地,我担心问题可能是 CNC Shield 并且我不想破坏另一个 Arduino(如果那是我的错) . 然后我尝试一个接一个地测试不同的电机/驱动器。首先,似乎只有运行 X 轴才有效。然后我尝试添加 Y 和 Z,但没有用。删除 Z 也崩溃了。再次删除 Y 使其再次工作。所以我试着只运行 Y,这也导致 Arduino 重置,UGS 关闭连接,显然脚本停止。所以我开始假设问题可能出在 CNC 防护板上的 Y 轴步进电机驱动器插座或电机驱动器本身。然后我尝试使用不同的步进驱动程序,突然它不再崩溃了。然后我试图将它反转回步进驱动器,它显然不起作用但它突然也起作用了。- 现在我很困惑。除了按下微步跳线外,我没有做任何其他事情。其他一切都保持不变,但现在它起作用了。诡异的。我重新连接了 Z 轴的电机和驱动器并再次测试 – 仍然工作,很好。然后我连接了所有电机驱动器(包括 X 和 A)并让它再次运行 – 成功!我让它运行了最后 30 分钟左右(我发送的整个 gcode 测试文件的两倍)并且它还没有崩溃。所以这是一场胜利,尽管我不知道是什么改变了 tbh,因为我总是确保电缆已连接并且驱动器正确就位。除了按下微步跳线外,我什么也没做。其他一切都保持不变,但现在它起作用了。诡异的。我重新连接了 Z 轴的电机和驱动器并再次测试 – 仍然工作,很好。然后我连接了所有电机驱动器(包括 X 和 A)并让它再次运行 – 成功!我让它运行了最后 30 分钟左右(我发送的整个 gcode 测试文件的两倍)并且它还没有崩溃。所以这是一场胜利,尽管我不知道是什么改变了 tbh,因为我总是确保电缆已连接并且驱动器正确就位。除了按下微步跳线外,我什么也没做。其他一切都保持不变,但现在它起作用了。诡异的。我重新连接了 Z 轴的电机和驱动器并再次测试 – 仍然工作,很好。然后我连接了所有电机驱动器(包括 X 和 A)并让它再次运行 – 成功!我让它运行了最后 30 分钟左右(我发送的整个 gcode 测试文件的两倍)并且它还没有崩溃。所以这是一场胜利,尽管我不知道是什么改变了 tbh,因为我总是确保电缆已连接并且驱动器正确就位。然后我连接了所有电机驱动器(包括 X 和 A)并让它再次运行 – 成功!我让它运行了最后 30 分钟左右(我发送的整个 gcode 测试文件的两倍)并且它还没有崩溃。所以这是一场胜利,尽管我不知道是什么改变了 tbh,因为我总是确保电缆已连接并且驱动器正确就位。然后我连接了所有电机驱动器(包括 X 和 A)并让它再次运行 – 成功!我让它运行了最后 30 分钟左右(我发送的整个 gcode 测试文件的两倍)并且它还没有崩溃。所以这是一场胜利,尽管我不知道是什么改变了 tbh,因为我总是确保电缆已连接并且驱动器正确就位。

我终于重新连接了终点站并让它再次运行(没有归位或软限制) – 它起作用了!但随后,在重新启动、归位机器并启用软限制后,它又一次崩溃了。
我仍然怀疑 Y 轴上的某些东西可能是问题所在(Z 也安装在 Y 上)。所以我检查了电缆并发现了 2 个潜在问题。我正在使用通用的 Dupont 4P 跨接电缆,我通过将其中的两个与MM Dupont 电缆连接来进行扩展。这并不理想,但我没有尺寸合适的电缆,而且机器上有很多不同的接线。此设置允许我根据需要连接多条电缆。1) 我发现的潜在问题之一是我没有隔离并直接放置在铝制框架上的一个末端停止连接。现在,由于铝显然是一种出色的能量导体我可以想象,当能量没有按预期流动时,这可能会导致问题。2) 此外,我发现了与 Z 电机的连接,其中 4 根杜邦电缆的方向使得电缆的两个连接器的两个“金属面”彼此相对。所以我试着正确定位这些电缆并用胶带粘住连接。改进了这两个连接后,我现在让它再次运行,它似乎可以工作。

最后,这可能是在 Arduino 周围的电缆混乱,某些电缆彼此重叠(就像电源电缆上的末端停止电缆)。我确保没有任何东西接触到电源线,无论是末端挡块、电机电源还是 USB 电缆。我不确定这是否有影响,或者新的 Arduino 是否有必要,但现在所有的东西结合起来似乎都有效。


我希望它保持这种状态!

如果没有,我可能会订购一条新的 USB 数据线来连接到我的 Surface,而无需集线器,包括刀片。接下来我会购买最新的 Protoneer CNC Shield 以确保这不是问题所在。然后,如果它仍然发生,我将不得不再次检查电缆,尽管我不知道我必须做些什么来保证 EMI 不是问题。

我希望有人觉得这很有用。

特别感谢@breiler

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

2名参加者
@布雷勒@tobiaswuerth

喜欢 (0)