评论
请从 有两个 USB 选项 – PRJC 或 Arduino 库代码,两者的行为是否相同? |
本周编译了固件,很可能是最新的。 我正在使用 VS Code,但现在不在电脑前。我不确定它默认使用什么驱动程序。我会想到 Arduino,因为我没有安装单独的驱动程序。 稍后将检查所有这些。 它也可能达到硬件的最大块进程限制。我以 84ipm 的速度进行切割,但没有检查我为平滑设置的公差,它可能进给太多了。 |
是否有调试/详细模式可以准确回复收到的错误信息?会帮助弄清楚会发生什么… |
如果您有 UART <> USB 分线,您可以通过取消注释此行来将调试消息发送到 UART 端口。然后可以使用debug_write()发送消息。 如果您想发送已收到的内容,您可以在此处致电
|
你的硬件设置是什么?哪个板?你在使用 VFD 吗? 我也在处理新机器构建中的这个问题。当我们过去在以前的构建(连接到 VFD)上遇到这样的数据错误时,可以通过使用 USB 隔离器来缓解并通过切换到以太网来解决——这两种方法目前都没有安装在我等待交付的新机器上的某些部分。所以我目前将其归咎于 VFD 的 EMI。 |
实际上,您可以在 config.h 中取消注释一行,它会将所有内容回显到控制台。 我也怀疑干扰,但因为我不能再重现它了…… |
现在,Makita 路由器到处都是屏蔽电缆(USB 除外,我现在没有足够长的屏蔽电缆)。 即使我不使用 VFD,Makita 路由器也有电子变速(基本上是便宜的 VFD)所以它可能很吵。 |
我还怀疑缓冲区溢出…我正在发布 3d 流线工具路径并忘记降低分辨率…它被分割为 0.0004″…我的机器可以机械地完成,但它可能太多了100ipm 的 Teensy |
在此之后,今天我将机器切换到以太网,我已经运行了导致我出现问题的循环 3 次,现在错误为零。看起来非常可靠——这也是我之前使用 USB 与以太网的经验。 |
哪个发件人?如果你自己是用字符计数的方法来保证缓冲区不溢出的吗?
那是1微米?您必须拥有一台高端机器才能获得这种精度。
我在ioSender的检查模式下看到 USB 传输速率 > 400 Kbytes/s ,并且在调整规划器缓冲区大小时可以实现非常高的进给速率(> 50.000 毫米/分钟),即使在使用大量小线段进行激光雕刻时也是如此. |
也会把我的帽子扔在这里…… 我今天遇到了同样的问题。我在雕刻工作的中途遇到错误 33,最初认为这实际上是 G 代码中的弧度公差问题。 但后来我无法在我工作台上的另一个 Teensy 上用相同的代码重新创建它,并在 CNC 上再次运行该作业——它再次失败,但在不同的地方。 我的 USB 连接来自与 Teensy 位于同一机柜中的 Raspberry Pi。与运行 CNCjs 的 Pi 建立以太网连接。我很想尝试直接连接到 Teensy 的以太网,但遗憾的是 IOSender 对我来说不是一个选项(家里没有 Windows 机器),并且不确定其他发件人支持它吗? 我的 VFD 安装位置和电缆布线目前有点可疑,将首先尝试改进它…… |
@dresco您可以尝试以检查模式运行吗,这将仅通过解析器运行代码(无动作)。如果这没问题,那么要么是其他地方有代码问题,要么是电气干扰。 |
谢谢 Terje,我敢肯定这对我的路由器构建来说一定是环境问题,因为在我桌上的笔记本电脑和裸体 Teensy 之间运行相同的代码要可靠得多(重新运行相同的工作整个下午只有一个错误) . 我想这周我会启动一个 Windows 虚拟机,看看它是如何通过以太网使用 IOSender 而不是通过 USB 使用 CNCjs 的。 |
有一个测试更新,但是很奇怪! 如果我在没有 sdcard 和以太网支持的情况下构建,那么我会间歇性地看到这些错误。我正在运行雕刻测试作业(约 40k 行 gcode,在我的路由器上运行需要约 35 分钟),而且我从来没有在没有错误 2 或 33 的情况下完成整个作业。 但是,如果我在启用这些插件中的一个(或两个)的情况下构建,那么错误就会消失。我知道这听起来很奇怪,但我今天进行了数十次测试,并且非常一致!不过,我有点不知所措吗? 顺便说一句,我正在测试我的机柜没有电。Teensy 由笔记本电脑 USB 供电,除了(未供电的)步进驱动器以及各种限位开关和输入外,没有其他连接。 |
确实,您正在使用哪个版本的 Teensyduino 进行编译? |
正在使用 PlatformIO 构建。今天的所有测试都使用他们的 Teensy 4.12 包,该包是针对 teensyduino 1.53 构建的(这是固定在当前 platformio.ini 文件中的版本)。 我之前一直在使用最新的 4.13 包,它引入了 teensyduino 1.55。但是,该插件与 SDCard 插件存在兼容性问题(请参阅问题#15)。 我还没有尝试过检查模式(我只是禁用了所有活动部件的电源),是否有 $ 命令来启用它? |
1.53是片状的…
你能在没有SD卡支持和测试的情况下构建吗?
|
哈,运行得很快 现在在没有任何插件的情况下构建和测试 1.55,它在检查模式下成功运行了多次,因此将在正常模式下多次运行…… |
恐怕 1.55 仍然是一些不稳定的建筑。 没有 vfd、sdcard 或网络支持,那么它很稳定。 我可以用我桌上的裸体青少年复制这个,如果你想要我可以把文件发给你吗? |
我想让你先用这个修改来测试,它为输入数据的函数轮询添加了一个重入锁:
|
恐怕没有区别 |
不过,沿着同样的思路,这促使我改用 Arduino USB 库进行构建 – 并且它已经完全稳定(在检查模式下运行代码 10 次以上,没有错误) |
我已经使用 PJRC 库在测试模式下多次运行一个 186785 行的程序,在启用 SD 卡和 VFD 时没有出现问题,使用 Arduino 和 Teensyduino 1.54 编译。PlatformIO 导致问题还是 1.55 版本? |
使用 VFD 构建但没有 SD 卡或网络时,它对您来说仍然稳定吗?我刚刚用 1.54 进行了重建,但仍然在这里看到同样的错误。 fwiw,整个下午(使用 Arduino USB 库)都在我的路由器上进行同样的工作,而且它一直坚如磐石。 |
只是更多的数据.. 我在 protocol.c 中添加了一行以回显 gc_execute_block() 返回错误时收到的内容,它总是被破坏。接收到的行要么被截断,中间缺少一个块,要么将来自不同行的数据合并到其中!? 作为一个极端的例子,这个实例在第 8782 行失败,但解析的行中嵌入了来自第 8730 和 8783 行的 gcode。几乎就像缓冲区指针在写入接收到的数据时弄乱了一样?
|
我使用不同的测试文件使 PJRC 代码失败。与 Arduino 代码不同,它似乎不喜欢被过于频繁地轮询。降低轮询频率似乎有所帮助:
将BLOCK_RX_BUFFER_SIZE增加到 128 会稍微加快速度。你也可以用这个测试吗?您也可以尝试更改轮询间隔 – 150 对我来说失败了。我不知道什么是安全值——所以让 Arduino 实现成为默认值也许更好? |
担心轮询间隔对我的工作台设置没有显着影响,我上升到 > 1000 uS,但仍然看到错误。增加 BLOCK_RX_BUFFER_SIZE 确实可以在更高的轮询间隔内加快速度,但我找不到稳定的组合。 我会投票赞成让 Arduino 实现成为现在的默认实现。 |
我也不会,故障频率随着不同的时间间隔而变化。令我困扰的是,启用以太网或 SD 卡会使问题消失。为什么?因为启用了额外的 MCU 外设? |
您可以尝试仅启用 OpenPNP 插件吗? |
可以确认仅启用 VFD + OpenPNP 插件它看起来稳定,并且仅启用 OpenPNP 插件。(在检查模式下针对裸板运行)。 |
当没有启用插件时,用这个替换初始化代码是一个“修复”。我们是否在某处有内存泄漏并且设置
|
不,老实说我很困惑!我现在要出差几天,但有笔记本电脑和一块裸板用于必要时进行测试。 |
编译器或链接器错误? 在我看来,只有 |
我在代码中随机得到这个错误。
目前通过 USB 流式传输,我必须使用 SDCard 进行测试,看它是否与 USB 相关。
循环随机发生,并不总是在同一个地方。
上次错误发生在这里,在剪辑的中间: