光栅性能慢 #125
评论
不要将 BLOCK_BUFFER_SIZE 增加太多,因为处理器没有 FPU(浮点单元)- 100 -200 更好? IMO 将 SEGMENT_BUFFER_SIZE 和 ACCELERATION_TICKS_PER_SECOND 保留为默认值。我没有检查 ACCELERATION_TICKS_PER_SECOND 的影响,AFAIKT SEGMENT_BUFFER_SIZE 无关紧要。 X 轴的步长/毫米设置是多少? 如果你想要高速,没有什么能比得上 Teensy 4.1…… |
我目前使用 16 微步的 20 齿滑轮。这相当于 80steps/mm。 以 7000mm/min 的速度,这应该等于步进频率: 我不认为原始 CPU 性能会成为问题,因为我发现启用/禁用动态功率缩放不会影响速度。 我有一个可以测试的 ESP32。它具有 FPU,您认为我会比 SAM3X8E 更快吗? 你有没有关于你的软件与 teensy/ESP32 相结合的能力(光栅扫描速度)的任何信息? |
也试试编程端口——我得到了很高的进给率,但我没有连接电机所以无法判断它是否断断续续。卡顿可能是由于 USB 外设开销/IRQ 优先级造成的。
它应该是因为它有一个 FPU——尽管与 ARM M4F/M7 内核相比是一个相当慢的 FPU。
我已经将 Teensy 4.1 驱动器推到70.000mm/min 以上,同样没有电机。我没有分析过 ESP32 驱动程序,所以我不知道它有什么功能。 |
我再次检查了到期日。实际上,我得到的性能是运行 grbl 的 UNO 的 5 倍左右。所以一个很大的改进。 我也试过使用串口,这个性能实际上有点差。我只能让端口在 115200 运行,所以这可能是其中的一部分。
高进给率是什么意思? 使用串行端口(我不能超过 115200 波特)我只能得到 2500 毫米/分钟的进给率。 看来我应该试试 ESP32 |
@terjeio有些事情让我感到困惑.. 出于好奇,我 但是,接收缓冲区似乎已填满(通常在任何时候都有 20-40 个字节空闲)。我无法理解的是,如果这是 USB 数据传输问题,那么接收缓冲区肯定也会被饿死吗?或者 MCU 是否有额外的开销,导致无法足够快地从接收缓冲区中取出数据的瓶颈? (顺便说一下,我的 H743 运行时间略低于 10 分钟,Teensy4.1 运行时间略低于 20 分钟,因此 H743 端口看起来很有希望)。 |
啊不,别理我,我是个白痴 (虽然发现了 H7 端口的问题,因为它有时会在中途停顿几秒钟,将对此进行调查)。 |
我对光栅性能做了更多测试。我可以通过进给率和加速度的某些组合获得进给率超调 – 我猜这是由于处理器负载过高,因为我在 Teensy 驱动程序中看不到这一点。当减速发生时,规划器缓冲区就会不足(未满)。
延迟是否大致对应于主步进计时器的完整计数 (2^32) 所需的时间? |
啊哈,是的。我没有注意到,但始终是 17.89s,对应于 240MHz 的定时器时钟速率。 顺便说一句,在查找时,我注意到步进计时器不一定计算正确。我需要将 x2 乘法器的检查添加到 driver_init() – 其他 STM32 设备也可能相同..?
|
今天早上重新测试,将 hal.f_step_timer 设置为实际的定时器时钟频率,并且不再看到挂起 – 尽管它已将运行时间从 ~22 秒增加了一倍到 45 秒。 编辑:检查一些时间后,我可以看到运行时间的变化是有道理的,因为之前的速度是预期/报告速度的 2 倍。 |
在测试我即将进行的激光重建时,我在 Teensy 4.1 板上以 256 步/毫米的速度在 18000 毫米/分钟时发现了这个问题。我想达到 36000 毫米/分钟左右,但我们将在本周末将硬件放入激光机后看看情况如何。我正在使用 LightBurn 生成 G 代码,并将 LightBurn 或 ioSender 作为我的发件人。 使用光栅中的垂直框作为我的测试文件,我将它们的宽度和间距更改得更近,直到控制器似乎开始滞后。一旦我达到大约 2x2mm(宽度/间隙)的间距,电机的指令速度就会下降,并且 ioSender 报告为 17119mm/min。这也发生在 Lightburn 上,尽管我看不到进给率。一旦间距达到 1mmx1mm,速度就会下降到 12119mm/min,并且 ioSender 在没有积极缓冲的情况下开始卡顿。间距降至 0.5 毫米,进给速度降至 8569 毫米/分钟。我认识到这是 g 代码规划器的极端情况,但它是一个有趣的边缘情况。只要激光功率在减速期间表现正常,我就会认为这是一个优雅的“失败”。 当我明天有更多时间时明天进行测试的想法: |
@SRFirefox出于兴趣,你能分享你的测试文件吗?谢谢! |
是的。这些中的每一个都设置为 18000mm/min。玩得开心!另外:更改 step/mm 设置没有任何作用。 |
您的 $0 设置是多少(步进脉冲时间)? 提示:您可以在 ioSender 中使用文件 > 转换 > 压缩来减小文件大小。 |
很酷。脉冲时间可能设置为 8uS,但更重要的是我从源代码编译并忽略了将规划器缓冲区更改为高于 36 的值。我已将源代码更改为 1024 缓冲区大小并且我将脉冲时间更改为 3 时我回到硬件。也很高兴知道本机 USB 正在检查模式下爆破数据。少了一件需要担心的事情。我很想看看它在以太网模式下的表现,一些电流隔离可能会很好。 感谢您检查文件。我会在早上报告 – 我很高兴有一台更容易破解的机器! |
将规划器缓冲区更改为最多 1024 个段,一切运行顺利。我的激光光栅以 48000 毫米/分钟的速度舒适地扫描,如果我小心的话,它可以加速到 60000 毫米/分钟。但这应该可以处理我能处理的所有事情,尽管我确信黑客空间的其他激光用户之一会证明我错了。到目前为止,它看起来比旧控制器更好。 |
大家好,
我为 Arduino Due (SAM3X8E) 编译了 grblHAL。我之前在 Arduino Uno (328p) 上使用过 grbl。
我发现 uno 对于光栅扫描图像来说太慢了。所以我希望在 Due 上有更好的表现。
遗憾的是我仍然不能超过 7000 毫米/分钟的雕刻速度。(上面的断断续续/颠簸运动)
我的 DIY 雕刻机/切割机在物理上能够达到 20000mm/min 的移动速度和 4000mm/s² 的加速度。
所以我希望达到这些速度。
我在 Mac 上使用 Lightburn 的 nativ usb 串行接口。
我将 light burn 设置为 2Mbaud。
我可以验证串行连接不是问题,因为可归档的最大速度不会随着串行波特率的降低而改变。
我尝试将 grbl/config.h 中的 BLOCK_BUFFER_SIZE 增加到 512
我还尝试增加/减少 ACCELERATION_TICKS_PER_SECOND(50 到 200)。
最后尝试更改 SEGMENT_BUFFER_SIZE。
雕刻灰度时我无法达到更高的速度。
有什么想法可以提高速度吗?
感谢您的支持。