-
Notifications
You must be signed in to change notification settings - Fork 6
已知问题
此wiki旨在提供关于已知错误或问题的信息。 请随意贡献更多已知的错误和他们的工作,因为他们被发现
- 虽然字符计数流协议确实非常高效,但有几个新发现的问题,界面作者应该意识到。
由于GUI用命令预加载了Grbl的串行RX缓冲区,Grbl将持续执行RX串行缓冲区中所有排队的g-code。 第一个问题是,如果RX缓冲区开始出现错误,Grbl将继续执行剩余的缓冲g代码,GUI将无法控制发生的事情。 临时解决方案是通过$C检查模式检查所有的g-code,这样所有的错误都会在流之前被检查。
- 当Grbl存储数据到EEPROM时,AVR要求在写过程中禁用所有中断,包括串行RX ISR。 这意味着,如果g-code或Grbl $命令写入EEPROM,写入过程中发送的数据可能会丢失。 这通常很少见,通常发生在程序中不恰当地传送G10命令时。 为了增强健壮性,gui应该跟踪和检测这些EEPROM写命令,并在发送更多数据之前等待队列完成执行,从而适当地处理它们。 请注意,简单的发送-响应协议不会出现这个问题。
-
我们发现无论是正版Arduino板还是克隆版Arduino板,在从主机向Grbl传输数据时,都偶尔会出现错误。 相关的误差可能会导致机器出现不必要的运动。 该问题最初是在使用CH340G USB串行芯片的Arduino克隆上发现的,但在使用Atmel 16U2芯片的真正Arduino和克隆上也出现了较小程度的问题。 CH340G USB到串行芯片没有修复。 使用16U2芯片的电路板需要更新固件来解决这个问题。
-
克隆Arduino板使用CH340G USB到串行芯片偶尔会出现传输错误,其使用由您自己承担风险。 目前没有解决这个问题的CH340G配备的板。
-
正版Arduino板和克隆Arduino板使用Atmel 16U2 USB到串行芯片偶尔也会遇到传输错误,建议用户用更新固件重新flash 16U2芯片。 你可以使用下面的说明: https://www.arduino.cc/en/Hacking/DFUProgramming8U2 flash新固件,新固件可以在这里找到:https://github.com/AlexHolden/Arduino/tree/master/hardware/arduino/avr/firmwares/atmegaxxu2/arduino-usbserial感谢用户AlexHolden花时间编辑固件来解决这个问题。
-
你可以在这个问题上阅读更多信息:https://github.com/grbl/grbl/issues/845
- 使用低波特率会导致不可预知的行为。 这种不可预测的行为可能会被其他因素(如启用回声)加剧。 与Sonny的讨论表明,GRBL中的串行通信是在115200的情况下设计和测试的,所以波特率在115200及以上应该没有问题。 简而言之,除非有非常好的理由,否则不要运行在115200波特以下,这应该不是问题。
-
Grbl被限制在30步/秒(或4步/秒,如果AMASS禁用)。 这并不是一个真正的bug,而是一个问题,因为Arduino 328p 16位定时器只能够计时在最慢的4ms增量(最大预分频和最大计数)。 当然,Grbl可以尝试在某些条件下编写代码来模拟更慢的步长,但不值得为宝贵的闪存空间投资。 让事情保持简单,使用一个有更好计时器的处理器会更好。
-
大多数典型的CNC应用程序不接近这个低步进率。 例如,一个用户想用Grbl构建一个星跟踪器,但它需要以低于1毫米/分钟的速度移动。 如果您有这样的特殊用例,您可以尝试一些东西。 首先,在config.h中禁用AMASS。 这将把最低步速降低到4步/秒。 第二,增加你的微步驱动器。 这将增加步长/毫米,并增加你的步速,而不会走得更快。 最后,增加你的机械齿轮传动比,像切换到一个低螺距丝杠或一个更小半径的同步带齿轮。
-
计算你的机器的最低mm/min,使用这个公式:'(最低mm/min) =(30步/秒)*(60秒/分钟)/(轴的步骤/mm设置)'。 如果禁用了AMASS,使用“(4步/秒)”。