开源改变世界

超越 Grbl 的下一步? #202

推推 grbl 3年前 (2023-01-21) 171次浏览
关闭
chamnit 打开了这个问题 2013 年 3 月 14 日 · 82条评论
关闭

超越 Grbl 的下一步?#202

chamnit 打开了这个问题 2013 年 3 月 14 日 · 82条评论

注释

超越 Grbl 的下一步? #202
成员

以下是关于 Grbl 的发展方向和下一步的离线讨论的摘录:

chamnit:这是我最近经常思考的问题。Grbl 完成了吗?还是我们已经把它推到尽头了,却发现真的不值得把东西塞进去?

所以,很长一段时间以来,我一直在想,我们应该真正将 Grbl 剥离成一个步骤翻译器。它所做的只是移动步进器并提供位置反馈和其他小事情的最低限度。我的意思是,我们取出 g 代码解析、规划和所有更高级别的控制,并将其放在控制器上,即 RPi,它更快、更强大,而且不需要是真实的-时间本身。我设想控制器会计划好所有事情,并仅将剥离的 Grbl 发送给它移动的小线段,并在其缓冲区中执行大约一两秒。因此,控制器可以即时发布具有新进给率覆盖的全新计划,而只有很小的滞后。任何发送到 Arduino 的东西都将被视为完成。

对此怎么看?我认为这会相对容易做到。

jgeisler:沉重的想法,但合理的想法。我会说答案是肯定的,也不是。但是“过时”有点太苛刻了。
grbl 是一个迷人的小工具,它适用于数以千计的用户(我猜),而且在未来它也会如此。入门门槛尽可能低,前几天 Elija Insua 的视频提醒我,还有一些硬核黑客喜欢使用命令行、脚本、管道和其他东西。而且我认为 grbl 还没有完成。我不确定我们还剩下多少资源,但我认为我们目前正在筹备中的大部分东西都适合(包括主轴 pwm – 甚至可能用于激光)。然后仍然有以 20MHz 运行的基于 mega644 的电路板……我们甚至可以安装第 4 轴——甚至可能用于挤压机……值得努力尝试尽可能多地塞进这个小电路板:
不需要 Arduino plus RPi plus PC,只需 Arduino plus PC
GCode 界面是最自然、最常见和最容易破解的界面 GCode
界面对于普通用户来说更容易调试
开发的 PC)
黑客不必处理两个平台上
的代码一旦完成,grbl 就非常棒(甚至比现在更棒)并且在我看来也非常完整
任何超出的东西,比如固定循环,都可以真正成为由 feeder 完成
所以,grlb 是黑客工具。
从产品的角度来看,移动接口是更自然的选择,而且我已经在某处看到它已经商业化了。这将是一个完全不同的项目,并且没有 grbl 的竞争对手——即使它是从相同的代码库开始的。开始行动主要是责任问题。但是您需要一个在两个平台上紧密合作的团队。
由于控制器并不总是有足够的缓冲动作以安全地完全停止,因此可能会出现一些问题。这可能是进给保持的问题。一般来说,任何实时交互和需要监控当前位置的东西,例如慢跑或归巢,都会稍微困难一些。
但是,一旦这些问题得到解决,就会有很多可能性……我立即想到的是在位置反馈环路中控制 BLDC 电机 – 即使是 EMC2 也做不到!
我知道步进器是爱好者的首选工具。但这可能仅仅是因为开箱即用的位置控制并不便宜。如果练习的目的是变得更“专业”,则应考虑使用更便宜、更强大的 BLDC 进行位置控制。

因此,我的结论是:坚持当前的 grbl 开发路径(功能,然后是 make-config 以实现多样化),如果存在需求和资源,则开始一个新项目。

超越 Grbl 的下一步? #202
成员作者

@jgeisler0303:我想你是对的,过时的太苛刻了。我确实看过 Elija 的那个视频,这也让我回味无穷。入门价格真的很难比,自 v0.8 发布以来,我们的下载量约为 5000 次,每天稳定在 40-50 次。我想人们发现 Grbl 仍然有用。

我认为这个想法对于 Grbl 的伺服版本来说是完美的。Arduino 没有足够的马力或空间来完成 Grbl 所做的一切,但我认为如果我们将其简化为 GUI 预先计划并提供给它的“执行运动”类型的控制器,它将是似是而非的。我只是希望数学对于 8 位 CPU 来说不是太密集。

我也同意,将计划/解析和运动控制分开可能需要两个小组密切合作。鉴于人们在空闲时间从事这项工作,这可能很难做到。但是,我认为如果该工具存在,就会有人使用它。看看会发生什么可能值得一试,此外,我们已经有了您出色的 grbl-sim,我们可以将其用于 GUI 来预先计划和预先解析事物。

至于 Grbl 是一个黑客工具,我有点反对。当它开始时,它更像是一个黑客工具,但现在,它变得相当复杂,并且需要一些编码技巧才能在添加新功能时不破坏某些东西。这是我认为将 Grbl 分成“做运动”类型控制器的另一个原因。它将使它更加直接和易于破解。将有更多的闪存和 RAM 可用于执行其他运动控制任务等。

无论如何,目前这是一个白日梦。虽然,我认为在我这边剥离所有内容不会太花时间。我想它的协议将是一些类似的东西,除了绝对/机器坐标、步数、速率、减速点……几乎所有规划器已经存储的东西。可能采用压缩的 HEX 类型格式。

超越 Grbl 的下一步? #202

作为 GRBL 的用户和 CNC 世界的相对新手,我个人希望看到这样的东西。从 GRBL 卸载计划和“高阶”功能将释放大量空间并专注于运行步进电机、主轴等,而 RPi 的(相对)功率将使存储更加自由,规划、运行甚至监控作业。在我看来,RPi 取代了笔记本电脑而不仅仅是一个中间层……我在桌面上进行 CAD/CAM,并且可以想象将输出 gcode 发送到 RPi 以实际运行而无需拖动旧笔记本电脑从壁橱里出来。

话虽如此,它似乎更像是 GRBL 的衍生品,而不是替代品……尤其是在实施 0.9 的功能列表时。

将 CNC 从并行端口解耦的想法是我决定为我自己的机器使用 GRBL 而不是 LinuxCNC 的原因。

超越 Grbl 的下一步? #202

我也喜欢让 grbl 专注于低级实时内容的想法,因为我认为 AVR 太慢了,无法做更多事情。在我的机器上,当以高进给率运行时,有时效果不佳。我认为原因是计划者没有足够的计划范围。我可以在 grblgui(grbl btw 的最佳 GUI :))中看到缓冲区只有几毫米的前瞻性。

超越 Grbl 的下一步? #202
成员作者

@cody82: 完全同意。Pro CNC 可以预测数百行或完整的程序,并且通过将 Grbl 的规划器分离到 PC/RPi GUI,我们可以做同样的事情。这将绝对保证通过程序的最快路径。我们还可以做更高级的事情,比如将加加速度方程(又名 S 曲线)包含到加速度曲线中,或者做一些非常酷的事情,比如 Bezier/Hodograph 类型规划。所有这些都与 Arduino 需要做什么无关。

我认为真正的诀窍是如何管理新界面并使其真正模块化,以便任何东西都可以插入其中。并最大限度地减少数据来回流动。因为我认为对于这样的事情,双向都需要大量数据。输入可能是通常的运动命令加上主轴启用等控制命令。输出可能是状态报告、缓冲区、错误报告等。可能有很多东西,但可能有一种简单的方法可以做到这一点。

超越 Grbl 的下一步? #202
贡献者

大家好,

我认为 GRBL 目前非常有用。它就像一个黑盒子,您不需要知道它是如何工作的。你只要喂它,它就会起作用。

我最近把它变成了一个 Arduino 库,我认为它比当前的设置有巨大的优势。通过使用 Arduino IDE,我们可以利用 Arduino 带来的
硬件开发。Arduino 背后的社区也很庞大,随之而来的是来自社区的更多投入和帮助。

配置是我想介绍给我的 Arduino 库的下一个重要步骤。向应用程序添加启用/禁用部件的功能将使它
与硬件集更加兼容,并且通过拥有更好的硬件(如 Mega/Due),您可以利用它而不受硬件限制。

配置还必须包括使最终用户易于配置的引脚分配(不希望软件限制创造力)。这样我们就可以
更好地支持当前和未来的硬件。我目前正在为 Grbl 开发硬件,以上是一些对
硬件开发人员很重要的事情。

您是否考虑过引入单元测试?这将减少开发周期的一些复杂性,并将提供更好的应用程序。

GRBL 的美妙之处在于您可以根据需要将其复杂化。

你可以保持简单,或者像我这样让自己的生活变得艰难……:)

我正在查看使用 3 层的更高级设置。

  • GRBL 控制器(体力劳动)
  • 中央处理(Web 服务器(RPI/计算机)- 进行中央控制、输入和反馈)
  • 浏览器上的 GUI。(通过浏览器从计算机、平板电脑、手机输入)

我认为 GRBL 有一个光明的未来。我们只需要摆脱障碍。

你们有什么感想?;)

超越 Grbl 的下一步? #202
贡献者

@chamnit看看瓶颈在哪里会很有趣。从我在这里阅读问题和规划器重写中学到的知识来看,主要瓶颈似乎是规划和实际运动控制。我想我的主要问题是,我们是在接近 ram bound 还是 cpu bound(或两者)?

我将 grbl 用于我所有的数控和测试台。主要是因为它是可破解的和开放的。虽然我不是 GPL 的超级粉丝,但对于这个应用程序来说似乎还可以,因为它被硬件隔离了。我的主要目标是使使用 javascript 与 grbl 通信变得超级容易(我在这里讨论)。

回到我们的问题,定制硬件会帮助解决这个问题吗?(例如,在这个问题上投入更多的 at(x)megas)或者我们真的会在这些 8 位 MCU 上做更多的数学运算时遇到问题吗?

超越 Grbl 的下一步? #202
成员作者

@Protoneer:我似乎在问这个问题,“下一步是什么?” 每隔几个月,似乎总是回到坚持当前的发展道路,至少有一段时间是这样。但是,我认为有某种发展可以重新提出这个问题。这次是 RPi。

所以,现在的问题是,随着您在 Arduino 层次结构中的上升,AVR 芯片并没有真正变得更快,而且支持多个板和芯片可能会很痛苦。这就是为什么我们目前不支持 Uno 以外的任何东西。(顺便说一句,我们使用 Arduino IDE 库来编译 Grbl。)我一直在想,未来最好的办法是让 Grbl 尽可能独立于微控制器的变化。这意味着 Grbl 需要变得更简单,而不是更复杂。

一个例子是 ARM 芯片,如 Arduino Due。它没有 EEPROM,因此不能像 AVR 芯片那样在板上存储和更改设置和工作坐标系。那么我们该怎么办?破解代码以使其在 ARM 上以某种方式工作。看起来很多工作却不多。

如果我们从 Grbl 中删除所有的计划、解析、设置等,只是让它成为一个愚蠢的“移动”控制器,它真的简化了我的想法,因为无论你总是通过 USB 连接到计算机什么。所以让计算机处理设置、工作坐标、规划和解析。这更便于移植,特别是如果计算机界面是用 Java 或其他一些多平台环境编写的。另外,因为它是一个“愚蠢的移动”控制器,所以它更容易移植到其他微控制器,甚至可能不如 328p。

但是,我同意你的看法,因为 Grbl 是一个黑盒子,所以有一种非常简单的美。发送 g 代码,它就可以工作了。然而,尽管我很喜欢在 Grbl 的代码上努力工作,但它已经到了收益递减的地步,因为在不影响某些东西(即步进器性能)的情况下安装功能变得越来越困难。这是一个有效编码的练习,但当我们努力挑战能力的上限时,可能会有时间说什么时候够了。

就个人而言,Grbl 只需要在这里和那里做一些事情就可以让它成为初学者使用的一个很好的服务选择,但我认为它不会成为专业级的,除非有很大的分歧更好(而且更贵) ) 微控制器或分离任务,这样我们就可以保留无处不在的 Arduino,并通过良好的界面设计获得那些专业级的功能。

@tmpvar: 刚写完看到你的帖子。要回答你的问题,两者都是。RAM 限制了规划器的大小以及你可以要求 Grbl 做多少,就像在功能中一样。CPU 也限制了规划器的大小,因为随着它变大,它无法足够快地规划它。所以获得“更好”的 AVR 芯片没有意义,因为 CPU 速度几乎相同。如果你想走得更远,ARM 是唯一的选择,但这也存在问题。主要是一个不断波动的芯片市场(据我所知,还有许可)。如果我们选择一个,随着更新和/或更便宜的芯片问世,我们移植代码的效果如何?

我不认为制造定制硬件是答案,因为总有人会把它做得更好、更便宜。我仍然相信 Simen 最初的愿景,即使用可免费获得且无处不在的硬件,例如 Arduino,并通过良好的设计围绕问题进行设计。使用提议的简化 Grbl 模型,它确实破坏了这一切的黑盒之美,但我认为它可以打开很多门,并使其潜在地更强大和更有能力。(至少在理论上)。

超越 Grbl 的下一步? #202

另一个线程提到通过硬件抽象层使 GRBL 平台独立,因此您可以在不同的微处理器上运行它。这将使它更加通用,我猜,因为如果你需要,你可以使用更快的微型/板(Arduino Due :-),但如果你只需要一小部分,你可以使用更小的板。
我猜(子)集可以很容易地在 makefile 中定义(但我不是真正的程序员,所以这是一个有点疯狂的猜测。

大声笑,我打字慢了;到我发布的时候它有点过时了

超越 Grbl 的下一步? #202

我将 GRBL 移植到 STM32 平台,但定时器出现了一些问题。没有定时器图的详细描述,因此需要通过数据表学习 avr 定时器。

超越 Grbl 的下一步? #202
贡献者

@chamnit说得通。似乎将 grbl 拆分成它的组成部分会使探索这些和其他选项更容易。我喜欢 node.js 使用 libuv、cares 和 v8 来做到这一点。基本上一个副本被添加到 repodeps文件夹并在适当的时候升级。避免了 git 子模块的痛苦,并允许对基本模块集进行多次分发或重新配置。

我们现在可以在保留 atmega328p 上受祝福的完整 grbl 的同时实现这一点,并允许人们开始破解这个纯步进/方向控制器的新愿景。我很确定许多项目会欢迎这种模块化,包括在 reprap/3d 打印机和 lasersuar 上使用修改过的 grbl 的人。我感觉到这些变化会极大地改善升级路径,并且@Protoneer提到过,每个单元都可以有一个测试套件以确保发布是好的。

超越 Grbl 的下一步? #202

为了增加共识,我也得出结论,“Grbl 的未来”可能沿着两条可能的路径之一:可以在 ATmega328p 上做最多事情的最小代码(这基本上是当前版本所具有的)实现)和最好的代码,易于阅读和移植到许多体系结构,并且可以配置为做一件事或全部,只要你喜欢(很像 Linux 内核)。

我目前正在研究这两个想法,我可能应该警告你,由于反馈循环,你将无法从 Grbl 中移动尽可能多的东西。您需要对在控制步进器的芯片上运行的内容保持足够的智能以使其安全,例如进给保持和紧急停止之类的东西。
是的,您将能够移动 G 代码解析器怪物、用户界面、固定循环和其他类似的东西……但最后,MCU 上剩余的代码量会比从历史的这一点看来。

我目前正在进行的设计基于许多 AVR,其中之一用于与外界通信和 G 代码解析,每轴一个用于电机控制。能够专注于执行移动命令有很大帮助,但最终代码并不十分简单。它可以工作并且适合 ATtiny84,但它很复杂。另一方面,能够只专注于 UI 和 G 代码解析也有很大帮助,因为我可以更接近标准(实现更多命令并支持更多功能),甚至获得具有流控制的真正串口.

这总是一个权衡。

现在对于 ARM:如果您只打算编写在 ARM 或任何 ARM 上运行的代码,则不涉及许可。仅当 (1) 您想要设计自己的基于 ARM内核的 CPU 或 SoC或 (2) 如果您想要直接访问某些基于 ARM 的 SoC 中嵌入的某些 GPU 时,才涉及许可。

您有许多用于 ARM 的 GCC 端口,包括一个免费提供的官方端口,并且(编译器的)代码是开源的,因此这里没有任何限制。ARM Cortex CPU(即当前的)有一个称为 CMSIS 的东西,它是一个以统一方式访问其功能的库(将其视为 HAL)。不要将它与 libc 混淆,因为它不是 libc。avr-libc 混合了 libc 和 AVR HAL 部分,而 ARM 系列具有完全不同的 libc 和 HAL 库。使用 CMSIS 让您不必记住,芯片 A 上的 TIMER1 位于端口 X,芯片 B 上位于端口 Y。让生活更轻松。
CMSIS 有某种商业许可证,允许您将它用于您自己的东西,但不能用于分发。我们拥有 libopencm3(此处,甚至在 GitHub 上!)的原因,它是开源的化身。

如果您选择采用 ARM 方式,请选择一块电路板,而不是芯片。进入第一家电子产品商店,查看电路板,查看规格(CPU MHz、闪存、RAM 和浮点支持;它是否具有嵌入式 JTAG/SWD?),然后选择您喜欢的第一块电路板。电路板支持包将包含库和头文件,使您能够以一致的方式使用所有 GPIO 以及所有其他 CPU 外设。大多数 BSP 层位于 CMSIS 之上,紧随其后的是,libopencm3 拥有扩展的板配置文件集合,因此您可以直接为板 X 编码,而无需关心供应商提供的是什么。

由于您正在尝试创建一个硬件控制盒,因此您需要一个可以针对裸机的板(一些板仅支持将 Linux 或 Android 作为裸机运行,并且只有一个“托管”工具链,即允许您的东西为在其上运行的 Linux/Android 编译程序)。

最后,ARM 就像 AVR 加了类固醇 :-) 我的意思是它不仅速度更快或具有更多闪存或具有更多 GPIO 引脚——它是同时实现的,然后是一些。ARM 芯片具有 DMA 之类的功能,可以自动将新值加载到定时器寄存器中;他们每个计时器有超过 2 个 OCR;他们有正交解码器之类的东西,可以为内部定时器供电;多级中断;内存管理单元;外部存储器接口,我可以继续。如果您决定将 Grbl 移植到 ARM,请确保您不会失去敏锐的精神并从芯片中榨取最后一滴性能。ARM 的 Grbl 编码与 AVR 的一样注重细节和性能会创造奇迹,我很乐意看到这种情况发生。

这都是我的。

超越 Grbl 的下一步? #202

我是 grbl 的另一个快乐“用户”(很高兴知道 grbl 的含义)。
正如您将看到的,英语不是我最好的语言。

我用一个 Arduino UNO R3 用这个漂亮的 grbl 代码在我的 cnc 中改变了他的“专业”卡。

我的数控系统与他的旧卡配合得很好。

-为什么我做了这个改变?
-答案是“独立”和“自由”

之前:
只有一个程序可以与此卡通信。
即使我可以“嗅探”对话框 PC/卡,所有的艰苦工作都是在 PC 端完成的。而且我不是程序员。
在这里,过去,我仅限于该程序可以读取的内容以及该程序的工作方式。
该卡只会让事情发生,将 Clk 和 Dir 发送到步进驱动器,并
打开/关闭事物或 PWM 电压电平。
嘿!该卡还可以读取主轴的速度=/然后?
归位序列工作正常。
可以实时更改全局进给和 Z 偏移。
第一个是无用且危险的,第二个是受欢迎的。
此外,“旧”卡有一个很好的缓冲区,可以将通信通量降低到几乎为零。
缓冲,在某些情况下,我需要禁用,因为这不允许 PC / cnc 之间的良好同步。
独立性:我可以选择另一张专业卡,但又要限于他的专业和闭源软件。那么就完全没有独立性。

之后:

喜欢 (0)