评论
您猜对了,Marlin 只报告了一组坐标。过去,Marlin 只有机器坐标,因此为了在不同控制器之间保持 UI 一致性,CNCjs 只显示机器和工作 DRO 中 Marlin 报告的任何内容。现在 Marlin 支持可能需要重新考虑的坐标系。这并不容易,因为除非 Marlin 更改其报告以使两个集合都可用,否则 CNCjs 将不得不窥探 GCode 并推断坐标偏移。这有其自身的一系列问题;例如,假设 Marlin 出于某种原因拒绝了坐标偏移更改命令。这将使维持正确偏移的逻辑大大复杂化。这是让程序员咬牙切齿的问题之一——在所有情况下都很难做到正确, 这就是为什么我对您关于提议的更改将“积极”影响 CNCjs 的说法持怀疑态度。按照我的想法,这会让 Marlin 支持工作变得更加困难。Marlin 的串行协议感觉像是事后才想到的。Marlin 在 3d 打印用例中的表现非常出色,尤其是在由连接控制器的 LCD 驱动时。通过 CNCjs 从串行线路驱动它充满了困难,主要是由于状态报告的时间问题以及状态报告和 GCode 传输之间的干扰。我觉得MPCNC选择了Marlin是很不幸的。我理解他们为什么这样做 – 来自 3D 打印世界,设计师大概非常熟悉 Marlin 和 RAMPS 板,所以这是阻力最小的路径。但在我看来,Marlin 不太适合铣削。 另一个问题是坐标支持是可选的,因此许多或大多数 Marlin 用户不会启用它。这使支持问题更加复杂,因为您必须应对这两种可能性才能处理长期只有极少数用户的功能。由于很少有人使用它,错误将需要更长的时间才能浮出水面并得到修复。 |
我还要指出,马林对 G53 的处理很特别。在其他机器上,G53 是非模态的,只影响当前行。下一行应该自动恢复到以前的 WCS (G54..G59)。这进一步使 Marlin 支持复杂化,因为您需要一个理解 Marlin 怪癖(其中有很多)的 GCode 识别器。 |
【本贴已删除无关信息】 非常感谢您的详细回复 – 最有见地。 G10 L20 P1 X0 Y0 小步骤… |
负面影响是,期望 CNCjs 应该支持这个尚未很好地工作的新 Marlin 功能,这会给已经超负荷工作的主要开发人员带来额外的工作。由于 Marlin 串行协议存在设计问题,因此很难估计正确支持它的难度。 |
坐标还有另一个问题。如果机器停留在那里而屏幕上没有任何移动,则系统会冻结并需要刷新。这有一个普遍的问题。 |
“就 Marlin 而言,没有简单的方法可以强制它自动及时发布位置报告。” Marlin 未经测试的修复现在提供及时的位置报告:#549 现在我们在 Marlin 中有一些位置报告,我希望修复程序的开发人员愿意与 CNC.js 开发人员合作解决两个问题:
非常感谢您的辛勤工作。快乐的 CNC.js 用户在这里。10/10 会再次使用。 |
CNC.js v1.9.20
马林错误修复 2.0
几天前修复了一个 Marlin 错误,它将对 CNC.js 产生积极影响:
MarlinFirmware/Marlin#14743
正在研究对 CNC.js 产生积极影响的增强请求:
MarlinFirmware/Marlin#14734
最后一个问题我可以使用一些帮助:
当我通过简单地输入“G54”从机器坐标 (G53) 切换到 Marlin 中的工作偏移坐标 (G54) 时,轴小部件显示 X、Y、Z 0,0,0 的工作坐标是正确的。但是,机器坐标也会立即更改为 X,Y,Z 0,0,0。这种行为是不正确的——机器坐标系数字读数 (DRO) 应该始终显示机器坐标。当我输入“G53”切换回机床坐标时,机床坐标立即正确显示。似乎 Marlin 没有同时向 CNC.js 提供机器坐标和工作坐标的数据,或者 CNC.js 可能没有正确解释数据,不确定。
任何建议,将不胜感激。