开源改变世界!!

添加对 Marlin 固件的支持 #1080

推推 grbl 2年前 (2023-01-27) 189次浏览
打开
8个任务
布雷勒 打开了这个问题 2018 年 7 月 15 日 · 119条评论
打开
8个任务

添加对 Marlin 固件的支持#1080

布雷勒 打开了这个问题 2018 年 7 月 15 日 · 119条评论

注释

添加对 Marlin 固件的支持 #1080
合作者
布雷勒 评论了 2018 年 7 月 15 日  

功能要求

添加对 Marlin 控制器的支持:http: //marlinfw.org/

它可能不是 CNC 机器的第一个替代品,因为它主要专注于 3D 打印。但固件支持用于控制主轴或激光器的命令。Marlin 社区很大,他们的控制器随处可见,也可以在普通的 Arduino Mega 上运行。可能是 DIY 黑客的绝佳选择。

需要实现这些功能:

  • 流式文件,暂停和停止
  • Gcode 状态的处理
  • 机器坐标状态报告
  • 工作坐标的状态报告
  • 跑步
  • 归位
  • 固件设置
  • 覆盖
添加对 Marlin 固件的支持 #1080

如果能支持马林鱼就好了
@breiler我希望在 UGS 中看到的一个功能是能够将 .brb 文件直接从 autodesk eagle 导入 UGS,就像 ChiliPeppr 使用
https://github.com/chilipeppr/widget-eagle
那样在某个时候可能吗?

添加对 Marlin 固件的支持 #1080
合作者作者

添加了新问题#1081

添加对 Marlin 固件的支持 #1080 breiler 自己分配了这个 2018 年 8 月 6 日
添加对 Marlin 固件的支持 #1080

嗨,Marlin 的支持情况如何?我希望我了解 Java,这样我就可以提供帮助,因为我确实需要 RAMPS 1.4 上的 Marlin 支持。我已经尝试过带有 Arduino Uno 的普通旧 GRBL,它很糟糕,一直崩溃,需要 PITA 校准等。带有 RAMPS 的 Mega 上的 Marlin 非常完美,但找到 ag 代码发送器几乎是不可能的。您还知道在此期间可以使用的任何方法吗?顺便说一句,继续努力,这个软件是我想使用的软件,一旦工作,我将唯一使用它。

干杯,丹

添加对 Marlin 固件的支持 #1080
合作者作者

进展缓慢… :(

下周我可能会花几个小时来处理它。但是要使所有功能都到位需要大量工作。

添加对 Marlin 固件的支持 #1080

我完全理解,如果我的工作不是忙得不可开交,我会学习 Java 并尝试帮忙,但不幸的是,我生产硬件的截止日期很短,而且作为唯一的硬件开发人员,这让人不知所措:(

顺便说一下,干得好,喜欢你到目前为止所做的一切,而且我的迷你激光雕刻机非常棒!

添加对 Marlin 固件的支持 #1080

我已经完成了使 UGS 与 Marlin 一起工作所需的非常简单的版本。

https://github.com/andy-hnq/Universal-G-Code-Sender/tree/marlin

据我所知,主要挑战(除了我在 Marlin 和 UGS 都是新手之外)似乎是……

  • Marlin 不想在步进移动过程中回复状态查询等。
  • 它缺少任何单字符命令,因此 UGS 绕过命令队列进行状态更新、暂停等的方式不适用于 Marlin。
  • 我对 Marlin 的命令缓冲没有足够的了解,无法在不处于单步模式时使其正常工作

什么有效?

  • 经典用户界面
  • 跑步
  • 手动输入G代码
  • 位置报告(至少当马林能够回答时)
  • 我在单步模式下的 CNC 铣削测试工作(我用它切割了金属)
  • G代码中的M0暂停执行和UGS暂停/恢复按钮恢复它

什么不起作用或不稳定?

  • UGS发送的一些命令在没有单步模式的情况下使用时似乎被跳过所以不要用它来切割金属
  • 原点/轴重置(关闭并打开连接将作为解决方法)
  • 位置更新轮询有时在重新打开连接时不起作用(您应该在开始工作之前检查更新消息是否出现)
  • 暂停/恢复按钮有时有错误的标签(但似乎做正确的事)
  • 无论冗长设置如何,位置更新都会在窗口中产生内容
  • 当作业仍在运行时,GUI 上显示的状态可能会间歇性空闲
  • 我还没有测试过从 GUI 手动暂停,但我预计会出现问题
  • 可能几乎所有其他依赖于固件的东西:)

我在用什么?

  • Windows 10 笔记本电脑
  • JDK 1.8.0_121
  • 我现在使用的是 Marlin bugfix-2.0.x,但从 1.1.x 开始
  • 启用 EMERGENCY_PARSER(M0 暂停/恢复需要)
  • Arduino Mega 2560 通过 USB 连接
  • 115200 波特
  • 经典用户界面
  • 单步模式
  • 以 5000 毫秒的间隔启用状态轮询(默认为 200 毫秒)

使用风险自负。没有保修!

添加对 Marlin 固件的支持 #1080
合作者作者

太棒了,我会尝试腾出一些时间来看看。

我也试图让这个工作。但正如您所提到的,实时命令会非常有用。另外,我无法使机器坐标或工作坐标偏移起作用。

添加对 Marlin 固件的支持 #1080

干杯。我没有尝试处理机器与工作坐标。目前,无论您连接时切割器所在的位置是 0,0,所以我只是从我所在的位置开始,或者慢跑到我想去的地方,然后断开连接并重新连接到零坐标。原油我知道,但它对我有用。

添加对 Marlin 固件的支持 #1080

在阅读了更多关于 Marlin 的命令缓冲区的信息后,我尝试进行更改以将未完成的命令限制为 10 个,以尝试使其在不处于单步模式时不那么不稳定。

我以为这已经解决了。我的测试工作没有做出任何明显的捷径动作……或者我是这么认为的。

跑了几次后发现有一个动作看起来不太对,我终于设法在错误的行为中抓住了它。它在单步模式下没有同样的问题。

所以看起来有所改善,但仍然不对。它现在缺少更少的步骤,但还没有修复。

我还弄乱了 git 分支,所以不得不重新创建它。

添加对 Marlin 固件的支持 #1080

我刚刚提交了一个提交。

我尝试了对非单步命令丢失的更多调试,并添加了一些日志记录来检查发生了什么。

我确认我的 10 个未完成命令限制似乎按预期工作。我已经更改它,以便它不再弯曲通信器类暂停语义,但这不是问题的原因。

我发现 M108 命令被错误地发送了两次并修复了它。

我还注意到第一个跳过的命令是在 M108 之前发送的,因此我更改了通信器,以便在发送 M0 时立即暂停发送。

我的测试工作现在在遇到问题之前走得更远,但它不仅跳过了一个动作,而且似乎也弄乱了坐标位置——几乎就像移动发生了一样……除了它没有发生,所以终点被丢失移动的距离,但 M114 在作业结束时报告 0,0。

我的测试工作在单步模式下仍然可以正常工作。

添加对 Marlin 固件的支持 #1080
贡献者

很高兴在这方面取得进展 – 我很乐意为我的 Trinus 放弃 OctoPrint(我在擦除出厂固件后将 Marlin 放在上面)。

很乐意帮助测试打印。

添加对 Marlin 固件的支持 #1080

干杯。如果您乐于使用“mvn package”从源代码构建,那么您就可以开始了。

我的机器是一台 CNC 铣床,在 X 和 Y 上只有步进器,没有别的,所以打印机是完全不同的野兽。

目前,我认为非单步不稳定主要与 M0/M108 暂停/恢复有关。我打算尝试进行更改,让 UGS 等待活动命令列表耗尽,然后再发送它在 g 代码脚本中找到的 M0,但还没有时间尝试。

添加对 Marlin 固件的支持 #1080

我又尝试解决丢失的动作问题。恐怕没有快乐。

我的 UGS 分支现在延迟发送 M0,直到活动命令列表为空。

我的测试工作在开始附近有一个 M0,在结束附近有一个 – 这些提示我在开始时降低切割器并在结束时将其升高。我原以为是第二个 M0 的提前发送导致了问题,但似乎不是 – 我从脚本中取出了第二个,但没有任何区别。它似乎是导致问题的第一个 M0(如果没有 M0 命令,则工作正常)。

无奈之下,我尝试禁用 EMERGENCY_PARSER 并重新刷新 Arduino。这导致它抱怨 M0 未被识别。UGS 仍然发送 M0 和 M108,作业运行正常(实际上我对 M0 处理的更改意味着 UGS 正在实施暂停而不是 Marlin)。

我现在不知道如何让 M0 暂停/恢复在不处于单步模式下并且在 Marlin 构建中启用 EMERGENCY_PARSER 时可靠地工作。

添加对 Marlin 固件的支持 #1080

要使这个 UGS 工作,需要在 Marlin 中实施的最少命令/行为是什么?

添加对 Marlin 固件的支持 #1080

要使这个 UGS 工作,需要在 Marlin 中实施的最少命令/行为是什么?

我想这取决于你的机器和你想做的工作。我无法为每个人回答这个问题,但我仍在使用我的分支,它对我来说工作得很好,但我的设置非常简单 – 仅 X 和 Y 步进器,仅“经典 UI”。自从我上一篇文章以来,我没有在这方面做更多的事情,但如果有人在等待一些容易做的事情,那么请这样说,我会试一试。我无法测试我的工厂不能做的东西(例如限位开关)

添加对 Marlin 固件的支持 #1080

抱歉,刚刚重新阅读了您的问题,发现您问的是 Marlin 更改而不是 UGS 更改。总的来说,问题似乎是 Marlin 在异步行为方面并不那么强大,例如能够在移动过程中找出当前坐标,在移动过程中暂停或能够可靠地排队一堆命令并在队列中工作,最终结果与一次发送一个命令一样。我绝对不是马林鱼专家,所以很可能我只是做错了。如果是这样,那么建设性的意见将非常受欢迎:)

添加对 Marlin 固件的支持 #1080

感谢回复。我不是 Marlin 专家,但我为特殊项目修改了几次。如果你能给我一个新行为和/或命令的规范,我会看看我是否可以实现它们。按重要性列出它们。我过去添加了紧急代码。

添加对 Marlin 固件的支持 #1080

我要求“更好”的支持,而不是完美的。我不是 Marlin 或 CNC 方面的专家。

添加对 Marlin 固件的支持 #1080

所以就命令而言,这可能是一个很好的起点 (com.willwinder.universalgcodesender.GrblUtils) …

/**
 * Grbl commands
 */
// Real time
public static final byte GRBL_PAUSE_COMMAND = '!';
public static final byte GRBL_RESUME_COMMAND = '~';
public static final byte GRBL_STATUS_COMMAND = '?';
public static final byte GRBL_DOOR_COMMAND = (byte)0x84;
public static final byte GRBL_JOG_CANCEL_COMMAND = (byte)0x85;
public static final byte GRBL_RESET_COMMAND = 0x18;

这些是带有 GRBL 的单字节“命令”,可以立即工作,而不管控制器是忙还是闲。在 Marlin 中,这些命令不一定需要相同……只要有一种方法可以做同样的事情。

在优先级方面,我会说状态、暂停/恢复然后重置。我从未使用过其他两个 AFAIK。

正如我在上面的线程中所说的那样,我无法正常工作的另一件事是可靠地排队和执行多个命令的能力。对于我自己的机器来说,一次发送一个命令并不会降低它的工作效率,甚至不会减慢速度,据我所知。我认为排队多个命令的能力是有原因的……所以知道需要这个的“用例”会很好。

添加对 Marlin 固件的支持 #1080
 评论了 2020 年 9 月 7 日 通过电子邮件
喜欢 (0)