评论
|
很有意思。我目前无法进行测试,但非常感谢 CNC 机器使用 (LinuxCNC / CNC.js) 对 G10 L2(0) 的支持。感谢您的贡献! 你提到
我很好奇这涉及到什么……这是 CNC.js 的开发人员不得不说的关于位置报告的内容: 其他(非 Marlin)控制器有一个软配置(不需要重新编译)选项,可以在其位置报告中包含机器和工作坐标。例如,g2core 在 JSON 格式的报告中用“mpos:”标记机器坐标,用“wpos:”标记工作坐标。报告格式与 GCode 的解析几乎没有关系。就 Marlin 而言,没有简单的方法可以强制其自动及时发布位置报告。您必须发送一个命令来要求它提供报告,并且定期发送这些命令有时会导致运动卡顿,因为“发送报告”命令必须与文件中的 GCode 穿插在一起。缺少自动位置报告可能会给铣削带来麻烦,单个 GCode 移动通常需要几秒钟 – 例如低进给率下的长弧。对于 Marlin,DRO 在该移动期间不会更新,并且可能要等到几个这样的移动结束后才会更新,具体取决于 CNCjs 插入“发送位置”命令的频率。 |
这是一种不同的方法。我不是通过 cncjs 轮询机器位置,而是在每个 G0(快速)上从控制器发送它。它基本上是在 G0 函数末尾添加到 Marlin 的一行代码。 我想你通常不会用很多 G0 来运行作业(切割时),所以它不应该影响性能。在运行 GCODE 时了解机器位置不如在慢跑时有用。 此外,当您想使用 G0 进行切割时,marlin 允许修改进给率。所以你可以做到。 |
|
以下是 CNC.js 的开发人员对 Marlin 与 CNC.js 的结合所说的一切: “主要是 3D 打印数控机床 (MPCNC)”论坛上的一些人正在饶有兴趣地关注这个问题: 您是否有机会确保位置报告在类似于 g2core 的自动报告中使用“mpos:”标签返回机器坐标并使用“wpos:”返回工作坐标? |
你有一些例子或文件应该如何报告吗? |
对不起,我不知道。 CNC.js 开发人员Mitch Bradley知道自动位置报告应该是什么样子以获得最佳的 CNC.js 兼容性: 我只是不知道如何引起他的注意,也不知道他是否愿意提供一个例子…… |
|
我猜他会在他有时间的时候。我也猜他的工作不是回答我们的问题 |
|
我没有花太多时间查看更改,因为它们没有以针对特定版本的拉取请求 (PR) 的标准形式呈现。该标准表格有一个很好的理由——它为初级开发人员节省了时间,他们通常非常忙碌并且被许多不同的人的请求压得喘不过气来。使用 PR,您可以轻松准确地看到更改的内容,如果它是好的,只需按一下按钮就可以接受/合并它,只需单击一下就可以对特定行进行评论,等等。 另一个元问题是原始问题发布中的特定“询问”“有人可以看看它并确认它做了它应该做的事情”。要求 CNCjs 开发人员审查 Marlin 代码超出了范围。据我所知,CNCjs 和 Marlin 开发团队之间没有重叠。恰好有一些 g2core 重叠,因为我也是 g2core 开发人员,但即便如此,我希望 g2core 代码审查请求会转到 g2core 站点。 但抛开这些元问题,在我看来,该线程已经演变成三个独立的问题:
(与 PR 元问题一样,当太多的问题被混为一谈时,人们就很难集中注意力。当太忙的人面对混杂的问题时,往往会疏远。) 一次拿一个: G10:那么这里的 CNCjs 问题是什么?CNCjs 是否适用于更改后的版本?如果是,问题是什么?如果没有,专门确定如何重现问题的问题将是合适的——但 CNCjs 开发人员处理起来可能很耗时,因为测试它需要我们设置 Marlin 编译环境,编译补丁代码,将其加载到板等。如果此功能成为 Marlin 的标准配置,那可能是值得的,但在明确是否会发生之前,这是“一次性”情况。 “不是真正自动的”位置报告:同样,这是否适用于 CNCjs?我的猜测是它确实有效,因为 CNCjs 只是在它们到达时处理位置报告。没有“预期”与“意外”报告的概念。有一些 CNCjs 代码试图强制 Marlin 发送一些报告,但在接收端,每当位置报告恰好进来时,事情就会更新。也许这个问题应该作为一个公告来表达? “工作坐标报告”:这被框定为“你能添加 mpos: 和 wpos: 标签,如 g2core”和“什么位置报告应该看起来像最佳的 CNCjs 兼容性”。就目前而言,Marlin 报告与 g2core 报告完全不同,因此尝试将 g2core 语法硬塞进 Marlin 语法中是行不通的。g2core 报告语法使用 JSON 符号高度结构化,而 Marlin 完全是临时的。使用结构化报告格式,您可以轻松添加新功能,因为解析器希望所有内容都被标记。旧版本的代码会简单地忽略任何新标记,这是可能的,因为解析器总是可以分辨什么是标记以及该标记的参数是什么。在不破坏旧代码的情况下更改临时格式非常棘手。由于格式是非结构化的,不同的 UI 代理可能使用不同的策略来识别各种不同的报告并提取不同的字段。您必须非常小心地设计一个新报告,旧的解析器不会将其与先前存在的报告混淆 – 并且仅向旧报告添加字段也会遇到同样的问题。要安全地执行此操作,您需要考虑每一个声称支持 Marlin 的不同 UI 代理——而不仅仅是 CNCjs。 因此,也许您会明白为什么我不喜欢 Marlin 的外部 UI 控件用例。它的串行通信框架在非常基础的层面上设计得很糟糕。对于通过连接的 LCD 面板运行 3D 打印机的用例,Marlin 表现出色。我在我的 3D 打印机上使用它。将 GCode 复制到 USB 记忆棒,将其插入打印机,然后让作业运行数小时,而不必担心连接的 PC 是否会在不好的时间进入睡眠状态。 “为了获得最佳的 CNCjs 兼容性,它们应该是什么样子”的答案是:与当前版本的 CNCjs 的兼容性是没有希望的,因为 CNCjs 根据没有工作位置的现有 Marlin 语法解析 Marlin 报告。对于未来,无论你能说服 Marlin 团队做什么,CNCjs 都可以,前提是 Marlin 团队会发明一些明确的东西(否则会给每个人带来无穷无尽的问题)。Marlin 和 g2core 报告解析器是完全独立的,因此尝试将两者混合是没有帮助的。如果 Marlin 要使用 g2core 样式的 JSON 报告,这在理论上可能会有帮助,但事实上有如此多的 Marlin 副本使用现有的 Marlin 格式使得新的 JSON 格式在实践中没有帮助。 对不起,如果这听起来很古怪——但事实是有很多因素在起作用,我想把它们列出来让你了解问题的深度。维护和增强复杂的软件是一个大问题,并且由于多个单独开发的组件之间的交互而变得更加困难。 |
|
感谢您的深入答复。
我知道,我需要完成它。我来自 svn 阵营,git 对我来说很奇怪;)
正是我的观点,我想因为 Marlin 主要用于 3D 打印并且对 G10 没有用,所以我会在这里提出这个问题得到更好的反馈。正如我所提到的,我在这方面完全是个菜鸟。 我只是搬到了 Marlin(从 grbl),因为我买了一些 TMC5160 并想检查一下。而且似乎工作量不大。
我认为是的。 关于自动位置报告:所以看起来没有简单的单向解决方案。我可能会和半熟的一起生活。目前对我来说已经足够好了。
你没有。谢谢! |
|
git 对每个人来说都很奇怪。 |
|
我可以请您张贴一段 g2core JSON 位置报告吗,如果您有方便的话,谢谢。 非常感谢您的辛勤工作。 |
你好 Mitch Bradley,我在寻找有关让 CNCjs 中的 Feedrate Override 与 Marlin 一起工作的帮助时遇到了这个线程。我不确定这是 Marlin 还是 CNCjs 的问题或者在哪里发布问题。 请您指点我到正确的站点以查找有关此的任何信息或发布问题好吗? 提前感谢您提供的任何帮助。 周杰伦 |
|
It appears to me that cncjs already has feedrate overrides for Marlin. There is this UI code in cncjs/src/app/widgets/Marlin/Overrides.jsx:
|


描述
基于MarlinFirmware/Marlin#14734
和
http://linuxcnc.org/docs/2.6/html/gcode/gcode.html#sec:G10-L1 _
我对 GCODE 和 C++ 有基本的了解,所以如果有人愿意看一下并确认它做了它应该做的事情,这里是源代码。
大多数更改位于:..\Marlin\src\gcode\feature\fwretract\G10_G11.cpp
我还在 G0 上添加了位置报告。
在 SKR 1.3 上测试并且似乎工作正常。
Marlin.zip
(复制替换Marlin 2.0仓库中的Marlin目录)
版本
你如何安装CNCjs?
数控系统
硬件
操作系统