注释
我认为 Grbl 的成功部分归功于 Arduino 的标准化。在全世界很容易买到一个 Arduino。这允许使用 Grbl 轻松输入。 |
关于 Grbl 将要做什么以及它将如何进入 ARM 世界存在很多问题。过去几十次,今天又一次来自(@alpharesearch和@Strooom). 我认为现在是时候开始公开谈论 Grbl 的长期战略了,因为 v1.1 终于出来了。 我非常反对具有非常大的代码库的单片处理器模型,在一个芯片上支持所有内容。这做了两件事:
要改善每个人都想要的核心运动控制问题,关键是要随时严格控制处理器的工作。所以,我认为 Grbl 应该在某种程度上保持与噪声的独立性,并为其提供一组高带宽通信方法,而不仅仅是 USART 串行。这将允许 Grbl 继续开发硬运动控制问题。 至于 Grbl ARM 使用什么处理器,我个人认为这并不重要。原因如下:
@alpharesearch:我完全同意你的看法,Grbl 之所以成功,是因为使用 Arduino 轻松尝试 CNCing,并且能够通过 IDE 轻松编译自定义版本或新版本。我认为 Teensy 是一个很好的平台,但由于引导加载程序问题,它对 OEM 来说不是很好。这就是我瞄准 SAMD21 Cortex M0 系列的原因。在我的测试中,它足以满足我短期内打算做的所有事情。由于平台越来越受欢迎,它保留了使 Grbl 易于访问的核心原则。 至于支持外围设备,我认为这确实需要一个单独的社区项目,MIT 许可,并在一个单独的 MCU 上作为协处理器模型直接连接到 Grbl ARM。这将引起原始设备制造商的兴趣和帮助,并允许用户帮助完成该项目。不用担心会破坏运动控制器的时序和关键流程。协处理器的想法并不是什么新鲜事,但我认为它确实需要得到推广并得到官方支持。 |
我已经完成了 1.1e 到 stm32F103RBT6 的初始移植,可以在这里查看https://github.com/usbcnc/grbl。 我使用免费的 coocox IDE 来编译和编程 (STlinkV2)。 |
@alpharesearch我认为GRBL的成功在于:
不过,我认为它使(恕我直言)成为入门级 CNC 控制器。经过几年的经验,您可能想要功能更多、性能更高的东西:
由于 Arduino 上的 GRBL 在入门级上已经做得很好,我认为 ARM 版本应该朝着“入门级之后的下一个”控制器的方向发展。当您构建第一台机器时,GRBL 仍将存在。 当您使用这种控制器升级 CNC(或其他机器)时,只有升级硬件才有意义。(电机控制器 – 主轴 – 轴承 – …)所以在总体情况下,控制器板的成本非常小,不应发挥重要作用。 @chamnit我同意 GRBL 在 16 MHz 328P 上做得很好,但是(恕我直言)这是以代码的复杂性为代价的:为了适应 ROM/RAM/CPU 周期,功能以巧妙、智能的方式实现方式,但不容易理解,当然也不容易修改或扩展。其他示例是缓冲区大小,由于 Arduino 上的资源有限(例如,其 Rx 缓冲区对于 GCode 最大块大小 256 字节来说太小)。转向 ARM 应该(恕我直言)也放宽了这些限制。通过拥有“大量”的 ROM/RAM/CPU,我认为代码可以更加模块化和更简单,并有更多的人参与其中。 我不知道 Teensy 引导加载程序问题:我通过 Arduino IDE 对其进行编程,我同意您需要手动将其置于程序模式 – 恕我直言,带来的不便。 关于 Teensy SW 未开放——我也不知道——想了解更多信息。总的来说,我认为 ARM sw 库的质量比 Arduino 好…… 感谢您的精彩讨论! |
@Strooom @usbcnc: Grbl ARM 不会是 Grbl 在 328p 上的直接端口。出于同样的原因(一个也是唯一的)@Strooom说。由于闪存、内存和速度限制,Grbl 的代码之所以如此。您根本无法在不影响其中任何一个的情况下对事物进行模块化。至于复杂,对我来说并不复杂!:) 但别担心,我计划重新编写一些东西,使其具有更实用的编程风格,以便更容易测试和移植。 @Strooom:我听到了所有这些事情:更多的轴、更高阶的运动控制、更多的输入和更大的缓冲区。所有这些都可以容纳在 SAMD21 系列上。有一个具有 64 个引脚的 J 变体。万一它不够用,可以很容易地移植到 STM 或 Freescale,因为@usbcnc和其他人已经表明。 计划一直是至少要成为 LinuxCNC 的替代品。需要首先弄清楚实时进给保持和覆盖等问题。他们现在有。接下来是高阶运动控制,以及更多的轴。高阶运动控制问题的症结已经解决。现在是实施。一个更好的流媒体接口也已经在计划中,以消除流媒体限制,尤其是在高数据速率下。 就像我之前说的,我不接受拉取请求在很大程度上是因为在不影响性能的情况下保持无抖动的步进输出的敏感性。如果使用和创建一个单独的协处理器模型,Grbl 的主机(将直接流式传输到它并支持 LCD、游戏杆、SD 卡、Wifi、BLE、本机 USB 等)可以由每个人贡献。无需担心因更改代码而破坏运动控制器。您只需为 Grbl ARM 维护一个动作流即可执行。就像你说的,微控制器的成本不算什么。因此,拥有一个 Grbl ARM 控制器和一个 Grbl Host 控制器是完全可行的,也是解决此问题以进行未来验证的正确方法。 至于 Teensy,Teensy 的引导加载程序芯片是专有的,每片 8 美元。这使得它对 OEM 或硬件人员非常不利,但它也可以保护 Teensy 免受完全正确的克隆。我理解为什么 Paul 有这个模型,但是公司使用 Teensy 并不理想,这就是为什么你看不到很多基于 Teensy 的硬件。 此外,我仍然不打算使用任何 Arduino 或 Teensy 库,Grbl 从来没有。事情是建立在制造商的现有软件框架上的,这些框架不是基于 GPL 的。 |
SAMD21 示例是 Arduino 零。Sparkfun 还有一个 SAMD21G 板。最好的例子是 Atmel SAMD21 Xplained 板。它价格低廉,有一个 J 芯片,带有完整的 64 引脚。板上还有一个硬件调试接口,这使它成为 IMO 开发的唯一选择。 让驱动程序等远离 Grbl 板。如果您不这样做,那么无论该设计是什么,您都会陷入困境。无需更改引脚、添加/更改接口等。保持您的硬件设计模块化。 要记住的一件事是 ARM 仅指定核心 cpu 和极少数外围设备。(例如中断控制器)。USB、I2C、SPI、Can 等所有其他东西都取决于芯片供应商。在大多数情况下,他们都以不同的方式做到这一点。因此,仅仅说 M0 ARM 是不够的,您需要选择供应商才能获得详细信息。 |
因此,我今天花了一些时间重新分析我对 SAMD21 的决定,并对重要指标进行了一些基准测试。虽然 SAMD21 确实至少比 328p 快 3 倍,但我又开始怀疑它了。它肯定会在短期内起作用,但它可能太短了。我将陷入另一种 328p 的情况。(令人惊讶的是,stm32F103RBT6 的速度仅为 SAMD21 的两倍。好但不是很好。) 这让我想起了青少年。有一段时间我致力于 Teensy 3.x 系列,但引导加载程序问题是主要问题。有人对此有解决方法吗? |
我不知道这一点。 这是一件非技术性的事情,但解决它也很重要,最好尽早解决。 |
我只是想了解一下情况,如果我有错误的假设,请指正。 |
@alpharesearchFRDM-K64F 看起来很有趣。将在周末研究其规格。 |
似乎大多数讨论都是关于使用什么平台的。作为一个终端用户,他绝不是编程、微控制器等方面的专家,我只能说上传 Grbl 固件的方法应该很容易,否则我认为你会赶走一群潜在用户。当前通过 Arduino IDE 上传的方法非常简单且用户友好。我并不是说必须采用这种方法,但最好还是采用同样简单的方法。也许一旦选择了平台,这里的一位专家就可以创建一个简单的上传界面。 我对该平台唯一的其他评论是它应该有足够的输入和输出引脚以允许未来扩展。4 个或更多轴、与原位开关、主轴编码器、轴编码器分开的限制,所有这些都会浮现在脑海中。 至于 Grbl 的非平台特定增强功能,我最大的投票是用于车床螺纹加工和铣削刚性攻丝的主轴反馈 – 缺乏在车床上加工螺纹的能力使得 Grbl 在车床上几乎无用,因为螺纹加工对于车床操作非常普遍。在工厂里,这没什么大不了的,但绝对是一个好处。我相信由于几个原因,这种限制会让很多潜在用户离开。拥有车床的人不想来回切换他们使用的控制器,因此会选择其他东西,如 linuxCNC 或 Mach3/4,然后在他们的工厂里,他们可能会使用相同的程序,而不必学习另一个程序. 此外,一些仅使用铣床的人也会通过将卡盘安装到铣床主轴来将它们用于车床操作。我自己不时这样做。在这种情况下能够同步和线程也很棒。这当然需要添加反馈以及用于螺纹加工的 G 代码命令。 |
行。我想我在 Teensy 或 SAMD21 的替代品上有点仓促行事。我想起了一项长期计划,该计划使 MCU 的速度变得不那么重要。但是,我认为将 Teensy(或其他更快的 MCU)作为备份是明智的。我将确保解耦所有 MCU 进程以促进这一点。 @109JB:至于引脚数,SAMD21 J 变体有 64 个引脚。大量用于 4 个以上的轴和限位销。即使是普通的 G 变体也足够(38 个 I/O,总共 48 个),但它们通常没有全部连接或用于专用 SPI、USB 串口等。 我听到你在车床上穿线。这实际上是一件很容易做到的事情。另一方面,刚性攻丝有点困难,因为您需要一个能够精确同步运动的主轴。 |
这是我能看到的最接近 Teensy 的引导加载程序: https ://github.com/scanlime/fadecandy ST 和 NXP 在他们的一些 Mcu 上内置了引导加载程序,使得编程变得非常容易和便宜。Smoothie 使用了我提到的 NXP 之一,但随着供应减少,价格会上涨,随着时间的推移和寻找供应可能会很痛苦。另一方面,ST 拥有巨大的市场份额,并且在中国有很高的可用性。文档和社区支持也是一件值得关注的大事。ST 似乎擅长于此。然后是JTAG。如果你想让调试变得容易,那么你不能跳过这一点。Arduino Zero 内置了这个,但它的体验非常丰富。ST 通过在 STM32F103 上运行的廉价 st-link jtag 编程器也解决了这个问题。
|
在 Grbl 的 ARM 平台上自由讨论您的意见,在 v1.1 之后继续前进。