评论
作者
忘记添加:使用 MKS DLC32 板。x轴的配置:
我尝试了 I2S_STREAM 引擎,但这使得任何移动都非常不流畅,并且距离也突然加倍(不确定这是否相关)。 |
合作者
428 步/毫米 * 15000 毫米/分钟/60 秒/分钟是 107000 步/秒,非常接近 125000 步/秒的最大 I2S 步进速率。您正在使用 I2S_STATIC,这需要大量软件参与步骤生成。当系统必须做额外的工作以通过网络发回响应时,运动开始变得麻烦也就不足为奇了。您试图让系统运行的速度超过处理器能够可靠处理的速度。 |
作者
感谢您及时的回复。我减少了微步,现在有 40.7 步/毫米,现在大约是 10k 步/秒。我现在还使用 I2S_STREAM 来减少 CPU 使用率。现在好多了,但不是全部?命令不会导致脉冲中断。它的重现性较差,这使得调试变得更加困难。 |
作者
为了好玩,我使用了 I2S_STATIC,虽然我必须使用 53.5 步/mm(而不是使用 I2S_STREAM 时的 40.7),但现在我再次在执行 ? 在移动的中间。 |
合作者
我不知道。我们还没有看到 I2S_STATIC 和 I2S_STREAM 需要不同 steps/mm 的情况。这向我表明步进定时或脉冲极性对您的步进驱动器来说可能是错误的。对整个系统的了解有限,很难调试系统级问题。 |
作者
好吧,这对我来说是全新的,但知道 I2S_STATIC 和 I2S_STREAM 的数字应该匹配意味着我可以稍微调试一下,也许可以找出如何解决这个“做 a 时的运动中断?”。谢谢。我将关闭这张票,因为有迹象表明出现了“错误”,可能与我的硬件有关。 |
请回答以下问题。
您使用的是什么版本的固件?3.4.3
问题是否可重复?是的
什么情况下会出现bug?
我通过 TCP 连接(telnet 服务器)发送 4 个命令来移动 x 轴:移动到 0,然后移动到 100,然后移动到 0,然后移动到 100。这工作完美且流畅。
然后我添加了每 200 毫秒发送一个“?\n”来检查控制器是否空闲,但是当我发送或接收结果时,电机似乎停止了。请参阅https://youtu.be/pRsrsQokiOg
将 200 毫秒更改为 1 秒,我得到相应的“不平稳动作”。它们也发生在完全相同的时间点。非常可重现,所以似乎是传入流量的处理导致步进循环短时间停止。
同样我可以手动执行:发送长移动(G0X0 然后 G0X400),并在移动期间发送?获取当前位置。你会得到一个非常短但明显的停顿。