开源改变世界

马林鱼运动不流畅 #475

推推 grbl 3年前 (2023-02-03) 304次浏览
打开
13 个任务中的第 4 个
Foxbiker 开启了这个问题 2019 年 5 月 9 日 · 16条评论
打开
13 个任务中的第 4 个

马林鱼运动不流畅#475

Foxbiker 开启了这个问题 2019 年 5 月 9 日 · 16条评论

评论

马林鱼运动不流畅 #475
飞狐 评论了 2019 年 5 月 9 日  

描述

你好,我花了很多天的时间来寻找主轴在 X 和 Y 方向移动不顺畅的原因。大约每 4 秒移动一次,停止很短的时间,然后继续。这会在工件上产生振动和痕迹。我尝试更改 Marlin FW 中所有可能的参数和缓冲区,但没有任何更改。今天我找到了原因。我发现每次在 gcode 命令之间和 Axes Widget 中的实际值发生变化时,都会发生这种短暂的移动延迟。我用相同的 gcode 尝试使用 Pronterface SW 进行比较,它运行得非常流畅,没有任何停止。为了测试,我制作了没有尖角的波浪形电路对象。Gcode 仅包含 G2 和 G3 命令。
看起来在 CNCJS 中有一段时间向 Marlin 询问实际职位,这就造成了这个问题。

Marlin 1.1.9
开发板:8 位 Arduino Mega 2560 MKS GenL

问候

拉德克

版本

  • CNCjs:1.9.20
  • 节点.js:6.x
  • NPM:5.x

你如何安装CNCjs?

  • NPM
  • 下载 CNCjs 桌面应用程序

数控系统

  • Grbl
  • 冰沙
  • TinyG/g2核心
  • 马林鱼

硬件

  • 树莓派
  • 台式机或笔记本电脑
  • 移动设备

操作系统

  • 不适用
  • 视窗
  • 苹果
  • Linux
马林鱼运动不流畅 #475

查看 Pronterface 和 Octoprint 的用户界面,似乎都没有显示实时位置更新。我能看到的最接近的东西是刀具路径显示上的叠加层。该覆盖可以通过计算已发送的行数来生成 – 但它可能不是实时准确的。如果 GCode 由许多短片段组成,那么这样的显示通常会非常接近,并且足够准确以监控可能需要数小时才能运行的 3D 打印机作业。

cncjs 中的 Marlin 支持相对较新,我们在使 Marlin 在 CNCjs 范例中良好工作方面面临一些挑战。特别是,Marlin 使得实时位置更新变得非常困难。在执行长动作时获得它们基本上是不可能的,并且如您所见,在动作之间获得它们有时会导致口吃。Marlin 中的另一件棘手的事情是确定机器何时暂停。

对于不是 3D 打印机的机器,例如铣床、绘图仪、路由器、激光雕刻机等,可能是另一种固件比 Marlin 更合适。GRBL、Smoothie 和 TinyG/g2core 都具有良好的位置报告和合理的机器状态报告。我个人喜欢用于激光雕刻的 GRBL,因为它具有出色的“激光模式”,可以根据运动调制激光功率,而 g2core 用于铣削,因为它对机器状态和主轴操作的处理能力很强。

对于 3D 打印机,Marlin 是一个出色的选择,因为它针对该用例进行了优化,具有许多相关的 M 代码以满足 3D 打印的特殊需求——温度和挤压等等。

在您的机器上使用 Marlin 有充分的理由吗?如果是这样,你为什么要看 CNCjs 而不是其他与 Marlin 和 3D 打印如此完美集成的 UI?(@johnboiles作为 cncjs 社区中著名的 Marlin 用户,可能想在这里权衡一下)。

马林鱼运动不流畅 #475
作者
飞狐 评论了 2019 年 5 月 9 日  

我开始在 Marlin base 上构建我的绘图仪,因为我有 3d 背景,很多人说这是可能的。我已经解决了 Marlin FW 中的大部分问题,并为该应用找到了完美的 CAM 软件。Client SW 是我最后的挑战。因为我很喜欢你的软件,所以我想尝试为 Marlin 应用程序修复它。从程序的角度来看,这个问题很容易通过在正确的时间保持坐标读取来解决。仅在 G0 更好的 G0 Z….. 命令后才请求位置。在这一刻,所有的铣削运动都完成了,铣削在移动到另一个穿透位置之前已经启动,一些小的延迟不是问题。我认为这是简单的 Marlin 解决方案并每次都解决此问题。在标准 gcode 中是许多 G0 行,所以坐标刷新就可以了。

马林鱼运动不流畅 #475

这种方法可以解决您的问题,但不能解决我的问题。切割时需要实时坐标显示。

马林鱼运动不流畅 #475
作者
飞狐 评论了 2019 年 5 月 9 日  

如果是我的问题,好吧。如果您需要实时坐标显示,我无法为您提供更多帮助。实时实时坐标当前不可用,只有一些刷新导致此问题。我的观点是对于切割来说更重要的是平滑的运动然后绝对实时的坐标显示。正如您所写,Marlin 是有问题的,您对 Pronterface 和 Octoprint 不显示实时值是正确的。大概就是这个原因。Repetier-Host 显示实时坐标,但它来自 gcode 而不是来自通信。我的解决方案建议是针对此问题的折衷解决方案,移动会很顺畅,并且您将有一些坐标用于在 3d 预览中显示进度。但是你的项目你的规则。

马林鱼运动不流畅 #475
合作者
奇顿 评论了 2019 年 5 月 9 日  

仅在 G0 更好的 G0 Z….. 命令后才请求位置。

为此,您可以实现一个 G 代码处理器,通过在查询位置M114的 s 之后插入 s来修改 gcode 文件。使用gcode-parserG0并不难。如果您需要示例代码,我可以为您编写。

除了这种方法,我们可以做的一件事是提供配置,让您决定是否启用位置/温度报告,尤其是在流式传输 G 代码程序以满足不同需求时。

以下是设置示例:

{
  state: {
    controller: {
      marlin: {
        query: {
          position: { // Use M114 to get current position
            interval: 1, // Interval in seconds between position updates. 0 to disable.
            streamingInterval: 0 // [optional] Streaming interval in seconds between position updates. 0 to disable.
          },
          temperature: { // M155 will be used over M115 if temperature auto-report is supported
            interval: 1, // Interval in seconds between auto-reports. 0 to disable.
            streamingInterval: 0 // [optional] Streaming interval in seconds between reports. 0 to disable.
          }
        }
      }
    }
  }
}
马林鱼运动不流畅 #475
贡献者

@johnboiles可能想在这里权衡

我使用 Marlin,因为它是我构建的 MPCNC(主要印刷 CNC)机器的默认控制器。有专门针对 GRBL 不存在的 MPCNC(具有 4 个止动器)的 Marlin 修改。我认为 MPCNC 设计师选择 Marlin 是因为他认为“大多数印刷”CNC 制造商已经熟悉它。我宁愿使用 GRBL,但需要为 MPCNC 上的“双端点”系统添加对 GRBL 的支持。

除了这种方法,我们可以做的一件事是提供配置,让您决定是否启用位置/温度报告

我认为更多的配置选项不会有什么坏处!

切割时需要实时坐标显示。

我认为支持这一点的最好方法可能是为 Marlin 中的位置更新添加M155(温度自动报告)之类的东西。我怀疑如果没有这个,就不会有一个完美的方法来添加实时位置更新而不会导致 gcode 处理出现问题。

但与此同时,我同意@Foxbiker我宁愿拥有流畅的 GCode 处理也不愿实时位置更新。

马林鱼运动不流畅 #475
作者

Cheton,这个解决方案既好又简单,但不幸的是没有解决这个问题。必须说程序员。我假设 CNCJS 在 Marlin 模式下有一些计时器,它在运行期间向 Marlin 发送 M114 请求,并且它不考虑正在进行的运动过程。我花了一些时间阅读许多 Marlin 论坛。Marlin 在缓冲区中有更多 gcode 命令,并假设下一个运动是继续还是停止运动(尖角 atc.)。当 Marlin 找到 M114 下一个移动命令停止移动,发送应答并继续。很难说为什么要停下来。也许这个包含所有 Marlin 函数的程序对于 8 位处理器来说是一个很大的负担。我不知道。我们可以讨论这是否是 Marlin 中的问题,但大多数 3d 打印客户端软件都可以正常工作。问题是大多数 3d 打印机客户端都非常不适合切割使用。为此,我不知道像 CNCJS 这样更好的客户。这就是我尝试在此处进行更改的主要原因。如果 CNCJS 说我们与 Marlin 兼容,他们必须玩 Marlin 游戏,而不是说这是你的问题,我们想要来自 Grbl 或 Smootie 的实时价值。对不起,这是我的意见。

马林鱼运动不流畅 #475
合作者

CNCjs 是一个通用的软件,这就是为什么我建议为不同的需求添加更多的配置选项。很难确定位置更新的正确时机,在您的情况下追加M114可能G0 Z..很好,但对其他人来说可能更糟。

对于 3D 打印作业,大多数时候您只关心打印时间和温度,而不关心位置更新。如果你希望 CNCjs 像 Octoprint 一样流畅移动,你可以选择在打印期间关闭位置查询。对于温度报告,我们可以使用 M155(温度自动报告)来获得比使用 M115 轮询更好的性能。

对于 CNC/激光作业,毫无疑问,温度报告应该关闭。另外,您可以选择关闭激光雕刻的位置查询以获得平滑的线条。

马林鱼运动不流畅 #475
贡献者

@Foxbiker您是否有任何指向确认M114停止运动的讨论或代码的链接。我很好奇 Marlin 的行为是否有充分的理由。似乎位置查询在处理器上不会很昂贵。

你关于 put M114after的想法G0 Z...很聪明,但至少对我来说是这样,因为我G0 Z..每次 cut 只做一些动作,我只会得到一些位置更新——而且通常在 cut 的同一个位置暴跌。我不确定它对我有多大用处。

@cheton听起来像是在运行 GCode 时关闭位置查询的配置或 UI 开关,这可能是目前 Marlin 的最佳选择。

马林鱼运动不流畅 #475
作者
飞狐 评论了 2019 年 5 月 10 日  

@johnboiles不幸的是不是,我在这里写的每一个想法都是我基于问题观察的假设。我希望我能在这里得到答案。只有一个认为我 100% 知道的是我报告的问题,因此 3d 客户端运行平稳,CNCJS 在大约 4-5 秒内运行。打断动作的同时让坐标刷新。

不幸的是,在一个切割作业中,您只能刷新很少的坐标,这是这个优雅建议的阴暗面。对我来说,在切割过程中只有一个重要的坐标,深 (Z)。X 和 Y 在运行期间一些变化的数字没有说。

马林鱼运动不流畅 #475

@johnboiles– 仅供参考,有一种方法可以在 g2core 中使用双端点。它没有很好地包装,但看起来它会工作。请参阅synthetos/g2#359 如果您使用的是 RAMPS 样式板,那可能对您没有多大用处。

马林鱼运动不流畅 #475
贡献者

好发现@MitchBradley与 MarlinFirmware 链接!

我使用的是 Ultimaker Rambo 板(我认为它是 RAMPS 的演变版)。快速谷歌搜索没有显示任何关于将它与 g2core 固件连接起来的信息。

马林鱼运动不流畅 #475

g2core 主要用于 32 位芯片,最受支持的是 Arduino Due 上的 ARM 风格。我的设置在驱动 Z 和 A 步进电机的 gShield 下方有一个 Due,在 X 和 Y 上具有更高功率的集成闭环步进电机。通过该设置,我可以以与泰格磨坊。
用于8位芯片的g2core的始祖是TinyG。TinyG 通常在 ATXmega192A3 上运行,它比 RAMPSy 板通常运行速度更快,内存也更多。
您可能会说,我真的很喜欢 g2core 固件。不幸的是,有迹象表明它的开发人员可能正在失去兴趣,或者至少忙于赚钱的工作而无暇花太多时间在上面。

马林鱼运动不流畅 #475

我刚刚尝试了一个快速测试,在其中注释掉了 Marlin 的 M114() 中的 planner.synchronize() 行。没有什么不好的事情发生;我的 quick-and-dirty Marlin 测试程序按预期运行。我不知道是否发生了什么好事,因为我没有连接到 Marlin 板的实际机器(这是一个运行 bugfix-2.0x 分支的 32 位 Teensy 3.1)。Marlin 团队在 2.0 上支持多种处理器(包括 8 位和 32 位)的尝试确实令人印象深刻。我希望我能对他们的串行线路协议说同样的话。

马林鱼运动不流畅 #475

我正在使用 Marlin 2.0.x (2.0.5.1) 对 Creality 1.1.4 板进行测试。我还注释掉了 planner.synchronize() 以查看实际位置(不是预计位置),但注意到使用“M114 R”获得相同结果的新选项。

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
项目
状态:分流
发展

没有分支机构或拉取请求

6人参加
马林鱼运动不流畅 #475马林鱼运动不流畅 #475马林鱼运动不流畅 #475马林鱼运动不流畅 #475马林鱼运动不流畅 #475马林鱼运动不流畅 #475

喜欢 (0)