开源改变世界

bCNC 在周期中随机停止和终止程序 #968

推推 grbl 3年前 (2023-02-02) 190次浏览
关闭
classbproject 打开了这个问题 2018 年 9 月 19 日 · 38条评论
关闭

bCNC 在周期中随机停止和终止程序#968

classbproject 打开了这个问题 2018 年 9 月 19 日 · 38条评论

注释

bCNC 在周期中随机停止和终止程序 #968

我现在已经在两份工作中经历过这种情况。该程序只是在周期中间停止并终止所有内容。单击暂停或停止没有任何效果。这是它向我显示的错误消息。谁能帮助我理解为什么会发生这种情况以及如何解决这个问题?

Program     : bCNC
Version     : 0.9.14
Last Change : 5 Feb 2018
Platform    : win32
Python      : 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:30:26) [MSC v.1500 64 bit (AMD64)]
TkVersion   : 8.5
TclVersion  : 8.5

Traceback:
Traceback (most recent call last):
  File "C:\nextcloud\electronics\Software\bCNC\Utils.py", line 434, in __call__
	return self.func(*args)
  File "C:\nextcloud\electronics\Software\bCNC\Sender.py", line 753, in pause
	self.feedHold()
  File "C:\nextcloud\electronics\Software\bCNC\Sender.py", line 733, in feedHold
	self.serial.write(b"!")
  File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 315, in write
	raise SerialException("WriteFile failed ({!r})".format(ctypes.WinError()))
SerialException: WriteFile failed (WindowsError(22, 'The device does not recognize the command.'))

Traceback (most recent call last):
  File "C:\nextcloud\electronics\Software\bCNC\Utils.py", line 434, in __call__
	return self.func(*args)
  File "C:\nextcloud\electronics\Software\bCNC\Sender.py", line 839, in stopRun
	self.feedHold()
  File "C:\nextcloud\electronics\Software\bCNC\Sender.py", line 733, in feedHold
	self.serial.write(b"!")
  File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 315, in write
	raise SerialException("WriteFile failed ({!r})".format(ctypes.WinError()))
SerialException: WriteFile failed (WindowsError(22, 'The device does not recognize the command.'))
bCNC 在周期中随机停止和终止程序 #968

你有没有测试版本@Harvie
https://github.com/Harvie/bCNC

沃尔特

bCNC 在周期中随机停止和终止程序 #968
作者

是的,我有。在三个作业中运行@Harvie版本,一个随机失败并出现相同的错误。该控制器使用带有 CP2104 USB 至 UART 桥接器的自定义 Uno。

bCNC 在周期中随机停止和终止程序 #968
合作者
哈维 评论了 2018 年 9 月 19 日  

你能把你要运行的 g 代码发给我们吗?
您的 arduino 中是否安装了最新版本的 GRBL?

bCNC 在周期中随机停止和终止程序 #968
作者

是的 grbl 版本 1.1f。gcode 可在此处获得:https ://pastebin.com/cyYP13HA 。

bCNC 在周期中随机停止和终止程序 #968

在我看来,
这是 CP2104 USB 转 UART 桥的问题…

bCNC 在周期中随机停止和终止程序 #968
作者

我在这里阅读了有关 FT232 和 CH340G 设备发生这种情况的其他问题。现在 CP2104 似乎也被添加到这个列表中。这些是使用非常广泛的 USB-UART 桥接器,如果所有桥接器都出现此错误,则可能是解析器出了问题,而不是实际硬件出了问题。顺便说一句,我用 OpenCNCPilot 运行了四个这样的轮廓 gcode 它们都完成了,没有任何故障。

bCNC 在周期中随机停止和终止程序 #968
合作者

对我来说它似乎运行正常。有没有可能你有一些硬件问题?USB 电缆太长或太松?或任何其他类型的松散连接?非屏蔽电机电缆?炸arduino?

bCNC 在周期中随机停止和终止程序 #968

好的…
OpenCNCPilot 是用 C# 创建的。Python 中的 bCNC(解释器)…可能是,生成的代码中有不同的时序。在我的 RasPi 3+b bcnc 上没有问题。

bCNC 在周期中随机停止和终止程序 #968
合作者

某些品牌的 USB 串行转换器应该损坏 g 代码没有正当理由。如果他们这样做,他们就是越野车。我建议您将 arduino(和 bCNC)设置为较低的波特率。不知道这是怎么做到的。我想在 GRBL 的情况下你必须重新编译。不确定。

bCNC 在周期中随机停止和终止程序 #968
合作者

是的。USB 串行芯片中可能存在一些“缓冲区溢出”,当数据传输速度过快时会发生这种情况。这发生在我身上,使用便宜的 USB-MIDI 转换器。这就是为什么我建议降低波特率。也许它甚至需要在 g 代码行之间添加一些延迟。但那是硬件错误。

bCNC 在周期中随机停止和终止程序 #968
作者

您是在模拟器上还是在真机上运行代码?如果我没记错的话,你不能用 grbl 1.1 降低波特率。它必须是 115,200 或更高。

硬件很好,因为这些作业与其他软件一起运行良好。末端止动器经过噪声过滤,电线很长但被屏蔽了。

bCNC 在周期中随机停止和终止程序 #968
合作者
哈维 评论了 2018 年 9 月 20 日  

我在没有连接电机的情况下在实际的 arduino 上运行了代码。

bCNC 在周期中随机停止和终止程序 #968

一切都完成了,控制台中没有任何消息。

您可以更改 grbl 波特率。但是你必须重新编译:
#define BAUD_RATE 115200config.h

如果您认为 bCNC 没有正确发送 g 代码,您可以interceptty在 Linux(或其他平台上的类似软件)上使用来窃听此通信,如 README.md 中所述,但我不确定 bCNC 是否会修改 g 代码在发送之前(如果配置了 toolchange 宏除外)。

bCNC 在周期中随机停止和终止程序 #968

但是:为什么 bCNC 可以在 raspi3+b 上运行很好?;-)

我发现:Windows 和他的设备驱动程序在快速硬件时序方面存在内部问题。
USB-Serial-Converters 的电气漂移也会造成问题……
例如:https ://stackoverflow.com/questions/34694052/why-serial-communications-from-arduino-stops-after-some-time

bCNC 在周期中随机停止和终止程序 #968

我现在让我的机器完成这项工作……
bCNC 在周期中随机停止和终止程序 #968

bCNC 在周期中随机停止和终止程序 #968

第一项工作完成:
bCNC 在周期中随机停止和终止程序 #968

bCNC 在周期中随机停止和终止程序 #968

第二份工作: 它走得更快。我把饲料调到 200%
bCNC 在周期中随机停止和终止程序 #968

bCNC 在周期中随机停止和终止程序 #968

现在是第三份工作:
bCNC 在周期中随机停止和终止程序 #968

bCNC 在周期中随机停止和终止程序 #968

现在在第四份工作:
bCNC 在周期中随机停止和终止程序 #968

bCNC 在周期中随机停止和终止程序 #968

第四个工作的结束:
bCNC 在周期中随机停止和终止程序 #968

bCNC 在周期中随机停止和终止程序 #968
沃尔特维斯曼 评论了 2018 年 9 月 20 日  

我可以越来越多地重复这个……
bCNC 工作得很好!

您遇到的问题与 USB 到 UART 桥接器和 Windows 接近;-)

沃尔特

bCNC 在周期中随机停止和终止程序 #968
作者
类项目 评论了 2018 年 9 月 20 日  

@Harvie谢谢!我知道您可以在 config.h 中更改波特率,但我记得在某处读到它不应更改为小于 115200 的值。我会查一下。

@walterwissmann感谢您的所有测试。您使用的是什么硬件?我将尝试更改设置中的波特并返回报告。但是,更改特定软件的通信设置似乎很不方便,尤其是当它与其他软件一起工作时。

bCNC 在周期中随机停止和终止程序 #968
沃尔特维斯曼 评论了 2018 年 9 月 20 日  

没问题 ;-)

Arduino UNO 在 115200 波特:
bCNC 在周期中随机停止和终止程序 #968

RasPi 3+B 上 Harvie 的 bCNC 的最新版本。

UNO 通过来自 RasPi 的 USB 电缆成为他的 +5V。

CNC 及其电子设备是由我建造的。
数控机床有自己的电源。
CNC 上的所有电缆均已屏蔽,其接地点位于转向箱上。
我给了限位开关一个带施密特触发器的额外电子设备。

我第一次遇到 USB 数据线问题。
我拿了另一个,大约 1.2 米长,它可以工作。

沃尔特

bCNC 在周期中随机停止和终止程序 #968
作者

好的,让我尝试使用另一根 USB 数据线。我硬件上的终点站有一个 RC 滤波器,后跟一个施密特触发器缓冲器。我知道终点站不是造成这种情况的原因。如果真是这样,那么我们就不会看到串行错误。

bCNC 在周期中随机停止和终止程序 #968
合作者
哈维 评论了 2018 年 9 月 20 日  

你确定吗?AFAIK 在 arduino 中没有 +12/-12V,因为它是 TTL 或 5V 逻辑。我只有在使用非屏蔽主轴电缆时才会遇到干扰问题。需要说我没有安装限位开关,因为我发现不需要使用它们。@classbproject您是否尝试过禁用 grbl 中的限位开关以确保它们不会被 EM 干扰意外触发?测试完全禁用它们比尝试微调硬件更容易。

bCNC 在周期中随机停止和终止程序 #968
沃尔特维斯曼 评论了 2018 年 9 月 20 日  

(早上好,沃尔特 :-))

是的,我自己找到并删除了它;-)

bCNC 在周期中随机停止和终止程序 #968
作者

@Harvie不,我不想禁用限位开关。这台机器又大又重,当我犯下愚蠢的错误时,我不想让任何东西崩溃。我知道他们没有被触发。在任何情况下,如果他们确实触发了,我的控制器就会有一个视觉指示表明它被触发了,但我什么也没看到。

快速更新:我将波特率更改为 19200。这现在将 CP2104 的波特时钟分频器设置为整数。现在唯一的错误是内部振荡器因温度等因素而偏移 – 这些因素无论如何都超出了用户的控制范围。我只试过运行该程序的一个实例,目前看来运行良好。这与您的 bCNC 版本有关。

bCNC 在周期中随机停止和终止程序 #968
合作者

我打算暂时禁用限位开关只是为了检查。但是如果您有视觉指示,那可能就足以确定了。但请注意,EMI 只会在极短的时间内触发它们,这可能无法像 LED 闪烁那样被肉眼捕捉到。除非你有一些闭锁机制。

你能用别的东西代替USB桥吗?例如。贸易投资?也许在那里切断痕迹并搭载一些 FTDI 模块。

无论如何,这肯定不是 bCNC 的问题。各种 g 代码发送器之间可能存在一些时间差异,这会导致 CP2104 错误不适用。但我认为正确的解决方案是使用没有问题的芯片。

bCNC 在周期中随机停止和终止程序 #968
作者

我的终点站有一个低通 RC 滤波器,后跟一个施密特触发器。这使得它们极不可能因为 EMI 而触发。

RX 和 TX 引脚断开,所以我可以尝试使用 FTDI。CP2104 实际上是一个很棒的芯片,我也一直在其他项目中使用它,没有任何问题。事实上,Adafruit 在他们的 Huzzah 板上用这个替换了他们的 FT232。我不认为芯片有问题。

bCNC 在周期中随机停止和终止程序 #968
合作者
哈维 评论了 2018 年 9 月 20 日  

您可以将第二个 USB 串行桥连接到 CP2104 的 TX 引脚,以在发送到 arduino 时检查其输出。只要确保使用相同的电压电平即可。

bCNC 在周期中随机停止和终止程序 #968
合作者

你解决了吗?

bCNC 在周期中随机停止和终止程序 #968
作者

@Harvie不,我没有时间测试你的建议以查看 CP2104 输出。然而,我确实使用 UGS 来运行相同的部分并且运行完美。我最终放弃了 bCNC,并在 OpenCNCPilot 和 UGS 上完成了我所有的部分。在这些软件上运行的很好,说明CP2104没有问题。

bCNC 在周期中随机停止和终止程序 #968
合作者

无法重现。