Contact me: hankecnc@gmail.com

目前的发展状况和方向? #280

推推 grbl 3年前 (2023-01-21) 343次浏览

关闭
mschorer 打开了这个问题 2013 年 10 月 18 日 · 17条评论
关闭

目前的发展状况和方向?#280

mschorer 打开了这个问题 2013 年 10 月 18 日 · 17条评论

注释

目前的发展状况和方向? #280

嗨桑尼,

我看到您再次开始开发(在 dev_2 分支中)…
您(或多或少是唯一活跃的开发人员)能否评论一下您的发展方向以及各个分支的目的和状态?
dev_2 可用吗?

谢谢!

目前的发展状况和方向? #280
成员

当然。dev 分支充当进行中的回购协议。该代码处于不断变化的状态,不能保证有效。边缘分支是 beta 甚至 alpha 状态,它是可用的,需要报告错误。

第一个开发分支是修复未受保护的规划器缓冲区问题的早期尝试。每当步进算法执行第一个规划器块时,规划器在某些情况下可以覆盖第一个块的速度分布并破坏它。它很少在流式传输时发生,但通常会在慢跑或运行弧线/曲线时速度过快时出现。

第二个开发分支是最近的尝试(它将完全取代第一个开发分支。)它工作并且工作得很好,但在此过程中,我打破了进给保持和其他事情,因为它需要对步进器进行彻底检修算法。好消息是,随着这些变化,规划器的速度提高了一倍,一切都运行得非常好。在达到物理极限之前,我已经能够将 Zen TW 测试机的速度最大化到超过 4000 毫米/分钟,而不是 grbl 的极限。这几乎是之前的两倍。而且串行波特率似乎是瓶颈,即使是 115200 波特。

在这一点上,受保护的规划器缓冲区上的所有这些工作都是安装进给率覆盖的前奏。当发生进给率覆盖时,我们必须即时重新规划整个规划器缓冲区。做到这一点的唯一方法是引入一个包含大约 50 毫秒移动的小型中间步进缓冲区,并使其与规划器缓冲区保持原子性。所有这些都已完成并正在运行。下一步是在我们开始测试之前修复损坏的功能并安装进给率覆盖接口。准备好后,我可能需要一些志愿者来测试代码。

在此之后,需要完成一个适当的慢跑界面,清理/模块化代码库以便更容易破解和移植,然后梳理问题线程以修复我忘记修复的任何东西。当我们在 Grbl 中拥有我们想要的所有关键功能时,我认为可以安全地向前推进并开始移植到阳光下的所有东西,因为代码库将是坚实的并且从根本上是健全的。我们不必将任何重大更改推送到分叉和端口中,它们很快就会变得非常混乱。

目前的发展状况和方向? #280
贡献者

@chamnit我刚刚将 grbl 移植到 Arduino Due 和 Arduino IDE,以便于编译和上传。

我必须清理一些代码,然后将其上传到https://github.com/microCNC/microCNC

我还创建了一个论坛,我很高兴在那里进行任何与 GRBL 相关的聊天http://www.microcnc.net/forum/

目前的发展状况和方向? #280
成员

@EliteEng:将代码库转换为 Due 的过程如何?有什么让您感到困惑的突出问题(除了没有 EEPROM)?

目前的发展状况和方向? #280
贡献者

没有什么真正让我绊倒的(但有预期的头痛)

我目前正在使用外部 EEPROM,但会添加对使用内部闪存的支持。
定时器和中断让我费了点功夫,但现在它们很容易理解。
Pins 和 Ports 的做法略有不同,但这是意料之中的,数据表在该领域非常好。

我已将其设置为使用本机 USB 端口(这很快),唯一的问题/优点是当您开始串行通信时不会重置控制器。这意味着您可以在机器运行时打开和关闭终端。但这意味着它不能很好地与 UGS 配合使用,因为 UGS 希望控制器在您打开连接时重置。

使用 Arduino Due 的一些优点是:
CPU 速度
很多 Ram
内部去抖动或干扰过滤中断(这可能有助于限位开关)
能够在内部闪存上存储数据(尽管当您上传新草图时它会被擦除)
9x 32 位定时器
能够将中断附加到任何引脚
32 位 I/O 端口(这意味着如果它们在同一端口上,您可以同时写入 32 个引脚)

使用 Arduino Due 的一些缺点是:
没有 EEPROM 连接到板上
原生 PWM(我需要解决这个问题,但除数看起来很奇怪)我现在可以使用定时器。

目前的发展状况和方向? #280
成员

@EliteEng: 谢谢你的信息。移植到 Due 长期以来一直是我的首要任务,但没有时间试水。缺少 EEPROM 一直是症结所在。我已经非常确定如何使用 Grbl 的设置来处理这个问题,但更重要的是保存和跟踪坐标系偏移并保持它们的持久性。据我所知,存储在内部闪存上并不是最好的解决方案,因为它的写入周期有限,约为 10,000(与 EEPROM 的 100,000 相比)。我的意思是我们是否强制用户使用外部 EEPROM 芯片以将 Grbl 与 Due 一起使用?我们是否强制用户在每次从他们的 GUI 启动时发送“设置握手”?

除了 EEPROM 之外,我很高兴看到 Grbl 可以通过大幅提高的 CPU 速度和能够更快地计算浮点数学的地方。

目前的发展状况和方向? #280

嗨,大家好,

也许对于 Due portation 使用 SD 卡使设置持久化是个好主意?
进一步的好处可能是记录,例如

一些 Ethernet shield 已经配备了 microSD 插槽。

问候
托马斯

目前的发展状况和方向? #280
贡献者

我并不是说我喜欢这个主意,但是马林鱼家伙发送了一个设置机器的 gcode 序言。repetier之类的东西提供了一种通过在作业主体之前发送自定义 gcode 来“设置”您的机器的方法。

也许我们尽可能多地移动到编译时配置中,并通过 gcode 添加对设置步数/毫米、最大速度等的支持。

无论如何,对于我的工作流程来说,这会工作得很好,因为我运行的每一位 gcode 都经过“gcode 清洁器”。结果是处理转换/删除不受支持的 gcode 并通过执行触发设置工作坐标的序言。如果有人感兴趣,我可以提供此代码

目前的发展状况和方向? #280

我们最近也将 TinyG 移植到了 Due/ARM。我们正在通过向我们构建的任何硬件添加便宜的 I2C EEPROM 芯片(< 0.50 美元)来解决 ARM 中缺少 EEPROM 的问题。

我们用于设置的解决方案是将设置定义为 JSON 编码参数,以免“损坏”Gcode。更多数据在这里:https ://github.com/synthetos/TinyG/wiki/JSON-Operation

目前的发展状况和方向? #280
贡献者

@aldenhart这当然是一种方法。IMO 将松散的 eeprom 添加到 due 中会破坏构建的“清洁度”并提高进入门槛。由于 tinyg 是一块集成板,因此以任何其他方式进行操作没有任何意义。

re: JSON 输出。是的,是的,是的!绝对是个好主意。不确定格式,但肯定比为 grbl 发出的各种输出形式使用不同的解析器要好。

目前的发展状况和方向? #280

在过去的 2 年里,我们一直在开发 JSON 格式,现在有多个项目在使用它们。我们已经学到了很多关于做什么(和不做什么)的知识。JSON 格式试图将系统建模为 RESTful 资源的集合,并将通信视为对象状态传输,而不仅仅是不相关变量的集合。其中一些在上面提供的链接中进行了讨论。

目前的发展状况和方向? #280
贡献者

当然,我只是在展示自行车脱落

目前的发展状况和方向? #280
贡献者

我认为每个人都提出了正确的观点。

我的 2 美分。
在编译时,您可以在无存储(使用 defaults.h)、内部存储或 Ext 之间进行选择。EEPROM。

if (NO_STORAGE) { not persistant } else { persistant } 仍然可以使用 $ 命令更改设置

添加支持以通过 Gcode 或其他格式更改设置{不持久}

由于价格原因,我没有考虑购买外部 EEPROM。
我认为选择存储与否是最好的方法。这将取决于最终用户以及他们使用什么程序将 GCode 发送到控制器。以及用户如何使用工作坐标和固定循环。

我什至不认为内部存储对于“普通用户”来说是个大问题,他们上传稳定版本,更改设置几次以使其正常工作,然后唯一需要更改的是工作坐标(这可能永远不会发生)。如果您是“喜欢大量调整的开发人员或用户”,那么 0.50 美元购买一个 EEPROM 芯片或从他们的 CAM 软件设置一个后处理器并不难。

有什么我想念的吗?

目前的发展状况和方向? #280

只是提一下。可以使用自编程功能和一些闪存来模拟 EEPROM。Atmel 对此有一份应用说明。
我不知道这是否是解决问题的好方法。我只是想确保这个选项是已知的。

目前的发展状况和方向? #280

@EliteEng: 听起来不错。关于您的 Due 端口的一个问题 – 您是否保留了 Uno 的步长/方向/common_enable 引出线?不用说,这会保留人们现有的设置。

我们开发了 (Synthetos) grblShield 版本 5 以实现 Due / grbl 兼容性,因为它使用 Arduino 电源接头上的 IOREF 作为驱动程序的 3.3v 电源。v4 和更早的 grblShields 也可以在 Due 上工作,但它们将作为 5v 板运行,接受来自 Due 的 3.3v 信号。仍然有效,但不像 IOREF 方法那样“正确”。所有 grblShield 版本都使用标准 grbl 引出线进行步进/方向和启用。

这是关于将哪个 I2C 端口用于板外 EEPROM 的另一个讨论。我最初的倾向是使用位于端口 A17 和 A18(分别)的 SDA1/SCL1(又名 TWD0/TWCL0)。与位于 PB12 和 PB13 上的 SDA0/SCL0(又名 TWD1/TWCK1)相比,我更喜欢它。主要原因是 SDA0/SCL0 具有可用于其他目的的 PWM 功能,而 SDA1/SCL1 则没有。但我感兴趣的是为什么这可能是一个好的或坏的选择。命名混乱吗?你打赌!这有助于: http: //forum.arduino.cc/index.php?topic=132130.0

目前的发展状况和方向? #280
成员

@EliteEng: 我同意你的看法。大多数用户可能不会使用工作坐标来真正担心闪光周期限制。用户最有可能超过限制的情况是在生产类型的情况下。在这一点上,我们可以建议安装 EEPROM 芯片或使用发送“$”设置(或 Alden 的 JSON)作为重启时系统设置握手的 GUI,其中工作坐标系将由 GUI 而不是 Grbl 保存。

有很多选择,并且支持其中任何一个或所有选项都不是不可能的。我认为首先要做的是开始研究如何模块化 ARM 版本的 Grbl 的设置模块,我们可以在其中简单地应用任何或所有这些设置接口。

说到 Grbl ARM,@EliteEng你打算开始称这个新版本为 MicroCNC 吗?过去有一些关于如何称呼它的讨论,比如 Grbl32。大多数事情与 Grbl 这个名字有关,因为它是可识别的。

目前的发展状况和方向? #280

你是如何集成I2C接口的?您是只是粘贴了一个现成的软件模块还是编写了自己的软件模块?

-安迪

发件人:Rob Brown [ mailto:notifications@github.com ]
发送时间:2013 年 11 月 28 日星期四晚上 8:31
收件人:grbl/grbl
主题:回复:[grbl] 当前发展的现状和方向?(#280

我认为每个人都提出了正确的观点。
我的 2 美分。
在编译时,您可以在无存储(使用 defaults.h)、内部存储或 Ext 之间进行选择。EEPROM。
使用 $ 命令更改设置的能力仍然存在,如果 (NO_STORAGE) { not persistant } else { persistant }
添加支持以通过 Gcode 或其他格式更改设置 { not persistant }
我没有考虑购买外部 EEPROM,因为价格。
我认为选择存储与否是最好的方法。这将取决于最终用户以及他们使用什么程序将 GCode 发送到控制器。以及用户如何使用工作坐标和固定循环。
我什至不认为内部存储对于“普通用户”来说是个大问题,他们上传稳定版本,更改设置几次以使其正常工作,然后唯一需要更改的是工作坐标(这可能永远不会发生)。如果您是“喜欢大量调整的开发人员或用户”,那么 0.50 美元购买一个 EEPROM 芯片或从他们的 CAM 软件设置一个后处理器并不难。
有什么我想念的吗?

直接回复此电子邮件或在 GitHub #280(评论)上查看。图片已被发件人删除。

目前的发展状况和方向? #280
贡献者

@aldenhart不,我没有保留当前的引脚位置,我将几乎所有引脚位置都移到了电路板底部,以释放所有模拟和 PWM 以供将来使用。是的,不幸的是,这破坏了盾牌的向后兼容性,但我认为这是值得的。

喜欢 (0)