注释
当然。开发分支用作进行中的存储库。代码处于不断变化的状态,不能保证能正常工作。边缘分支是 beta 甚至 alpha 状态,它是可用的并且需要报告错误。 第一个开发分支是修复未受保护的规划器缓冲区问题的早期尝试。每当步进算法执行第一个规划器块时,规划器在某些条件下,可以覆盖第一个块的速度分布并破坏它。它在流式传输时很少发生,但通常在慢跑或运行弧线/曲线太快时出现。 第二个 dev 分支是最近的尝试(它将完全取代第一个 dev 分支。)它工作得很好,但在此过程中,我已经破坏了 feed hold 和其他东西,因为它需要对步进器进行全面检修算法。好消息是,随着这些变化,规划器的速度提高了一倍,并且一切运行得非常好。在达到物理极限之前,我已经能够将我的 Zen TW 测试机最大化到超过 4000 毫米/分钟,而不是 grbl。这几乎是以前的两倍。并且串行波特率似乎是瓶颈,即使是 115200 波特。 在这一点上,所有这些在受保护的计划缓冲区上的工作都是安装进给率倍率的前兆。当发生进给倍率时,我们必须在运行中重新规划整个规划器缓冲区。做到这一点的唯一方法是引入一个包含大约 50 毫秒移动的小型中间步进缓冲区,并使其与规划缓冲区保持原子性。所有这些都已完成并且正在工作。下一步是在我们开始测试之前修复损坏的功能并安装进给率覆盖接口。当代码准备好时,我可能需要一些志愿者来测试代码。 在此之后,需要完成一个适当的慢跑界面,清理/模块化代码库以便更容易破解和移植,然后梳理问题线程以修复我忘记修复的任何内容。当我们在 Grbl 中拥有我们想要的所有关键功能时,我认为可以安全地向前推进并开始移植到阳光下的所有东西,因为代码库将是坚实且基本健全的。我们不必将任何重大更改推送到分叉和端口中,这会很快变得非常混乱。 |
@chamnit我刚刚将 grbl 移植到 Arduino Due 和 Arduino IDE,以便于编译和上传。 我必须清理一些代码,然后将其上传到https://github.com/microCNC/microCNC 我还创建了一个论坛,我很高兴在那里进行任何与 GRBL 相关的聊天http://www.microcnc.net/forum/ |
@EliteEng: 将代码库转换为 Due 的过程是怎样的?有什么突出的东西让你绊倒(除了没有 EEPROM)? |
没有什么让我真正绊倒(但有预期的头痛) 我目前正在使用外部 EEPROM,但会增加对使用内部闪存的支持。 我已将其设置为使用本机 USB 端口(这很快),唯一的问题/优点是当您开始串行通信时不会重置控制器。这意味着您可以在机器运行时打开和关闭终端。但这意味着它不能很好地与 UGS 配合使用,因为 UGS 期望控制器在您打开连接时重置。 使用 Arduino Due 的一些优点是: 使用 Arduino Due 的一些缺点是: |
@EliteEng: 谢谢intel。移植到 Due 一直是我的首要任务,但没有时间试水。缺乏 EEPROM 一直是一个症结所在。我已经很确定如何使用 Grbl 的设置来处理这个问题,但更重要的是保存和跟踪坐标系偏移并保持它们的持久性。据我了解,存储在内部闪存上并不是最好的解决方案,因为它的有限写入周期约为 10,000(与 EEPROM 为 100,000)。我的意思是我们是否强制用户拥有一个外部 EEPROM 芯片才能将 Grbl 与 Due 一起使用?我们是否强制用户在每次启动时从他们的 GUI 发送“设置握手”? 除了 EEPROM,我很高兴看到 Grbl 可以在 CPU 速度大幅提高的情况下发展到哪里,并且能够更快地计算浮点数学一个数量级。 |
嗨,大家好, 对于 Due 移植来说,使用 SD 卡使设置持久化也许是个好主意? 一些以太网屏蔽已经带有一个 microSD 插槽。 问候 |
我并不是说我喜欢这个想法,但马林鱼家伙发送了一个 gcode 序言来设置机器。repetier之类的东西提供了一种通过在作业主体之前发送自定义 gcode 来“设置”您的机器的方法。 也许我们尽可能多地进入编译时配置,并通过 gcode 添加对设置步数/mm、最大速度等的支持。 无论如何,这对于我的工作流程来说效果很好,因为我运行的每一位 gcode 都经过“gcode 清理器”。结果是一个序言,它处理不支持的 gcode 的转换/删除,并通过执行触发来设置工作坐标。如果有人感兴趣,我可以提供此代码 |
我们最近也将 TinyG 移植到了 Due/ARM。我们正在通过在我们构建的任何硬件中添加便宜的 I2C EEPROM 芯片(< 0.50 美元)来解决 ARM 中缺少 EEPROM 的问题。 我们用于设置的解决方案是将设置定义为 JSON 编码参数,以免“破坏”Gcode。更多数据在这里:https ://github.com/synthetos/TinyG/wiki/JSON-Operation |
@aldenhart这当然是一种方法。IMO 在到期时添加一个松散的 eeprom 会破坏构建的“清洁度”并提高进入门槛。由于 tinyg 是集成板,因此以任何其他方式来做都没有意义。 回复:JSON 输出。是的,是的,是的!绝对是个好主意。不确定格式,但肯定比为 grbl 发出的各种输出形式使用不同的解析器更好。 |
在过去的 2 年中,我们一直在开发 JSON 格式,现在有多个项目使用它们。我们已经学到了很多关于该做什么(和不做什么)的知识。JSON 格式试图将系统建模为 RESTful 资源的集合,并将通信视为对象状态传输,而不仅仅是不相关变量的集合。其中一些在上面提供的链接中进行了讨论。 |
当然,我只是在表示上骑自行车 |
我认为每个人都提出了正确的观点。 我的 2 美分。 使用 $ 命令更改设置的能力仍然存在,如果 (NO_STORAGE) { not persistant } else { persistant } 添加支持以通过 Gcode 或其他格式更改设置 { 不持久 } 由于价格原因,我没有考虑购买外部 EEPROM。 我什至不认为内部存储对于“普通用户”来说是个大问题,他们上传了一个稳定的版本,更改了几次设置以使其正常工作,那么唯一需要更改的是工作坐标(这可能永远不会发生)。如果您是“喜欢进行大量调整的开发人员或用户”,那么 EEPROM 芯片 0.50 美元或从他们的 CAM 软件设置后处理器并不难。 有什么我想念的吗? |
顺便提一下。可以使用自编程功能和一些闪存来模拟 EEPROM。Atmel 对此有一个应用说明。 |
@EliteEng: 听起来不错。关于您的 Due 端口的一个问题 – 您是否保留了 Uno 的 step/direction/common_enable 引脚排列?不用说,这保留了人们现有的设置。 我们开发了 (Synthetos) grblShield 第 5 版以实现 Due / grbl 兼容性,因为它使用 Arduino 电源接头上的 IOREF 作为驱动程序的 3.3v 电源。v4 和更早的 grblShields 也可以在 Due 上工作,但它们将作为 5v 板运行,接受来自 Due 的 3.3v 信号。仍然有效,但不像会费上的 IOREF 方法那样“正确”。所有 grblShield 版本都使用标准 grbl 引脚分配,用于步进/方向和启用。 这是另一个关于用于板外 EEPROM 的 I2C 端口的讨论。我最初的倾向是使用位于端口 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 |
@EliteEng: 我同意你的看法。大多数用户可能不会使用工作坐标来真正担心闪存周期限制。超出限制的用户最有可能出现的情况是生产类型的情况。此时,我们可以建议安装 EEPROM 芯片或使用 GUI 发送“$”设置(或 Alden 的 JSON)作为重启时的系统设置握手,其中工作坐标系将由 GUI 而不是 Grbl 保存。 有很多选择,支持其中任何一个或所有这些都不在可能的范围之外。我认为首先要做的是开始研究如何为 ARM 版本的 Grbl 模块化设置模块,我们可以在其中简单地应用任何或所有这些设置接口。 说到Grbl ARM,@EliteEng你打算开始调用这个新版本的 MicroCNC 吗?过去有一些关于如何称呼它的讨论,例如 Grbl32。主要是与 Grbl 这个名字相关的东西,因为它是可识别的。 |
您是如何集成 I2C 接口的?您是粘贴在现成的软件模块中还是自己编写? -安迪 发件人:Rob Brown [ mailto:notifications@github.com ] 我认为每个人都提出了正确的观点。 |
@aldenhart不,我没有保留当前引脚位置,我已将几乎所有引脚位置移至电路板底部,以释放所有模拟和 PWM 以供将来使用。是的,不幸的是,这破坏了屏蔽的向后兼容性,但我认为这是值得的。 |
mschoer 评论 on 18 Oct 2013
嗨桑尼,
我看到您再次开始开发(在 dev_2 分支中)……
您(或多或少是唯一活跃的开发人员)能否评论您的前进方向以及各个分支的目的和状态?
dev_2 可以用吗?
谢谢!