Skip to content

已知问题

任羽飞 edited this page Dec 20, 2021 · 4 revisions

此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写命令,并在发送更多数据之前等待队列完成执行,从而适当地处理它们。 请注意,简单的发送-响应协议不会出现这个问题。

USB到串行传输错误

波特率限制

  • 使用低波特率会导致不可预知的行为。 这种不可预测的行为可能会被其他因素(如启用回声)加剧。 与Sonny的讨论表明,GRBL中的串行通信是在115200的情况下设计和测试的,所以波特率在115200及以上应该没有问题。 简而言之,除非有非常好的理由,否则不要运行在115200波特以下,这应该不是问题。

不会比X毫米/分钟慢! 或者限制在非常慢的步进速率。

  • 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步/秒)”。