开源改变世界

运行时步进运动停止?命令 #393

推推 grbl 3年前 (2023-02-05) 185次浏览
关闭
haraldkubota 打开了这个问题 2022 年 4 月 23 日 · 7条评论
关闭

运行时步进运动停止?命令#393

haraldkubota 打开了这个问题 2022 年 4 月 23 日 · 7条评论

评论

运行时步进运动停止?命令 #393
哈拉尔德久保田 评论了 2022 年 4 月 23 日  

请回答以下问题。

您使用的是什么版本的固件?3.4.3

问题是否可重复?是的

什么情况下会出现bug?

我通过 TCP 连接(telnet 服务器)发送 4 个命令来移动 x 轴:移动到 0,然后移动到 100,然后移动到 0,然后移动到 100。这工作完美且流畅。
然后我添加了每 200 毫秒发送一个“?\n”来检查控制器是否空闲,但是当我发送或接收结果时,电机似乎停止了。请参阅https://youtu.be/pRsrsQokiOg
将 200 毫秒更改为 1 秒,我得到相应的“不平稳动作”。它们也发生在完全相同的时间点。非常可重现,所以似乎是传入流量的处理导致步进循环短时间停止。
同样我可以手动执行:发送长移动(G0X0 然后 G0X400),并在移动期间发送?获取当前位置。你会得到一个非常短但明显的停顿。

运行时步进运动停止?命令 #393
作者
哈拉尔德久保田 评论了 2022 年 4 月 23 日  

忘记添加:使用 MKS DLC32 板。x轴的配置:

stepping:
  engine: I2S_STATIC
  idle_ms: 255
  pulse_us: 4
  dir_delay_us: 1
  disable_delay_us: 0
axes:
  shared_stepper_disable_pin: I2SO.0
  x:
    steps_per_mm: 428.0
    max_rate_mm_per_min: 15000.000
    acceleration_mm_per_sec2: 1500.000
    max_travel_mm: 440.000
    soft_limits: true
    homing:
      cycle: 1
      positive_direction: false
      mpos_mm: 0.000
      feed_mm_per_min: 300.000
      seek_mm_per_min: 5000.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.36
      hard_limits: true
      pulloff_mm: 2.000
      stepstick:
        step_pin: I2SO.1
        direction_pin: I2SO.2

我尝试了 I2S_STREAM 引擎,但这使得任何移动都非常不流畅,并且距离也突然加倍(不确定这是否相关)。

运行时步进运动停止?命令 #393

428 步/毫米 * 15000 毫米/分钟/60 秒/分钟是 107000 步/秒,非常接近 125000 步/秒的最大 I2S 步进速率。您正在使用 I2S_STATIC,这需要大量软件参与步骤生成。当系统必须做额外的工作以通过网络发回响应时,运动开始变得麻烦也就不足为奇了。您试图让系统运行的速度超过处理器能够可靠处理的速度。

运行时步进运动停止?命令 #393
作者
哈拉尔德久保田 评论了 2022 年 4 月 23 日  

感谢您及时的回复。我减少了微步,现在有 40.7 步/毫米,现在大约是 10k 步/秒。我现在还使用 I2S_STREAM 来减少 CPU 使用率。现在好多了,但不是全部?命令不会导致脉冲中断。它的重现性较差,这使得调试变得更加困难。
视频:https ://youtu.be/yai1JpuEBNc

运行时步进运动停止?命令 #393
作者
哈拉尔德久保田 评论了 2022 年 4 月 23 日  

为了好玩,我使用了 I2S_STATIC,虽然我必须使用 53.5 步/mm(而不是使用 I2S_STREAM 时的 40.7),但现在我再次在执行 ? 在移动的中间。
I2S_STREAM 更好,但即使降低了步进率,问题也没有消失。

运行时步进运动停止?命令 #393

我不知道。我们还没有看到 I2S_STATIC 和 I2S_STREAM 需要不同 steps/mm 的情况。这向我表明步进定时或脉冲极性对您的步进驱动器来说可能是错误的。对整个系统的了解有限,很难调试系统级问题。

运行时步进运动停止?命令 #393

好吧,这对我来说是全新的,但知道 I2S_STATIC 和 I2S_STREAM 的数字应该匹配意味着我可以稍微调试一下,也许可以找出如何解决这个“做 a 时的运动中断?”。谢谢。我将关闭这张票,因为有迹象表明出现了“错误”,可能与我的硬件有关。