开源改变世界

顶层填充未完成 #288

推推 grbl 3年前 (2023-02-05) 227次浏览
关闭
Fanfwe 开启了这个issue 2012 年 11 月 5 日 · 17条评论
关闭

顶层填充未完成#288

Fanfwe 开启了这个issue 2012 年 11 月 5 日 · 17条评论

评论

顶层填充未完成 #288

你好,

当我打印零件时,顶层实心填充物的最后几个部分(可能 8 到 10 个?很难精确计算)没有打印出来。

我正在使用默认设置使用 Slic3r 生成 G 代码。

使用 Sprinter 可以正确打印相同的 G 代码文件,这就是为什么我倾向于指出 Marlin 是原因。
除了此处描述的非常奇怪的问题外,Marlin 使我的打印效果比 Sprinter 好得多。

有没有人见过这个 ?如果需要,我可以发布我的 Marlin 配置文件和我遇到问题的 G 代码文件。

此致。

顶层填充未完成 #288

我遇到了与您描述的类似的问题。
尝试从slic3r 设置中的结束 g 代码中删除任何注释。在我的 slic3r 设置上,这导致
了我的问题,即使注释与默认切片器配置中的一样,
2012 年 5 月 11 日凌晨 5:04,“Fanfwe” notifications@github.com写道:

你好,

当我打印零件时,顶层实心填充物的最后几个部分(可能 8 到 10 个?很难精确计算)没有打印出来。

我正在使用默认设置使用 Slic3r 生成 G 代码。

使用 Sprinter 可以正确打印相同的 G 代码文件,这就是为什么我倾向于
指出 Marlin 是原因。 除了此处描述的非常奇怪的问题
外,Marlin 使我的打印效果比 Sprinter 好得多。

有没有人见过这个 ?如果需要,我可以发布我的 Marlin 配置
文件和我遇到问题的 G 代码文件。

此致。


直接回复此电子邮件或在 GitHub 上查看它 https://github.com/ErikZalm/Marlin/issues/288。

顶层填充未完成 #288
作者

感谢您的建议。
我试图手动删除 gcode 文件底部的所有注释,但这没有帮助。我仍然有同样奇怪的行为。

顶层填充未完成 #288
贡献者

您是使用 USB 打印还是从 SD 卡打印?

顶层填充未完成 #288
作者

我正在使用 USB 打印,Marlin 固件在 Ramps 1.4 板上运行。
我没有 SD 卡槽。

顶层填充未完成 #288
贡献者

你用什么发送GCode?可能是您使用的工具在打印机完成之前关闭了连接。您可以尝试将 M400 放在 GCode 的末尾,看看是否有帮助。

顶层填充未完成 #288
作者

您好,
我正在使用 Pronterface 发送 GCode。最新的 Mac 二进制版本可用(2012 年 3 月)。

我怀疑与打印机的连接已关闭,因为我在启用监视器打印机的情况下运行 Pronterface,因此它会不断轮询床和挤出机温度。我应该禁用此轮询吗?
此外,正如我之前所说,相同的 G 代码文件在 Sprinter 和相同的 Pronterface 中打印“正常”,这就是我在 Marlin bugtracker 中报告错误的原因。

当我今晚回到家时,我会试试 M400。我会告诉你。

顶层填充未完成 #288

从 SD 打印时命令缓冲区是否大得多?

如果您的结束代码中有 M84“停止所有电机”命令,那么这可能会导致阻止命令缓冲区中的任何内容停止执行。即G指令被缓冲,M指令立即执行。因此,如果在 M84 出现时缓冲区中还有任何剩余的 G 命令(我相信只有 16 个命令长),那么您将丢失它们。在 M84 之前放置 M400“等待缓冲区清除”将解决该问题。

但是,8 到 10 层的命令远远超过 16 层,所以我怀疑这是你的问题。值得一试。

顶层填充未完成 #288
作者

您好,
在我的 Slic3r End G 代码的开头发送 M400 确实解决了这个问题。
@NeilMartin它不是 8 到 10 层,而是 8 到 10 段;)所以它实际上可能是 16 段(减去最后的 g 代码命令中的一些)。

感谢您的支持。奇怪的是 Sprinter 没有这种行为,所以我认为这是 Marlin 中的一个错误。
也许我应该建议在 Marlin README 文件中添加一小段,因为我猜现在和将来会有很多使用 Slic3r 的人最终可能会使用 Marlin,目前 Slic3r 默认设置不好(至少不是为马林)。

顶层填充未完成 #288
贡献者

除了读取M代码的温度,我看不出为什么他们插队G代码是正确的。在我看来,温度变化、风扇开关、电机关闭等都应该与动作同步。

顶层填充未完成 #288

过去所有的 G 命令都是缓冲的,所有的 M 命令都是立即的。现在似乎也有无缓冲的 G 命令。所以现在G和M没有意义,只是一个扩展可能性的前缀。

我同意风扇开关和电机应该被缓冲,所以我会让它们成为 G 命令并让 M 命令立即执行。

整个标准一团糟。在 3D 打印机变得更加多产之前,我不认为它会很快得到改善。目前,大多数拥有打印机的爱好者都有足够的技术头脑来管理当前标准的细微差别。我不介意它处于现在的状态,只要它保持当前的开放和可配置状态即可。让 gcode 标准在接下来的几年里发展(尽管很混乱),然后我们可以用每个人都投入其中的所有很酷的想法进行智能重新设计。

顶层填充未完成 #288
贡献者

但是,为什么任何命令队列都应该与需要向主机返回结果和紧急停止的命令队列分开呢?对我来说,乱序执行它们就像是一个错误。任何影响机器状态的命令都应该按照指定的顺序发生。这就是我认为的所有 G 代码和大部分 M 代码。我怀疑是否有任何 CNC 机器会像 Marlin 那样重新排序 G 代码。

我最近试图编写一个 G 代码测试脚本来测试 Melzi 板,这是一场噩梦,因为延迟之后的 M 代码实际上发生在延迟之前。

顶层填充未完成 #288
贡献者

大多数 Marlin 代码在执行前与步进器例程同步,例如 M84 将等到所有命令执行完毕后才关闭电机。所以不是这样。你能发布一个不工作的 GCode 文件的确切结尾吗?包括评论和一切。Marlin 的解析器相当……糟糕的恕我直言。

顶层填充未完成 #288
作者

你好,

这是使用大多数默认设置使用 Slic3r 切片的 20mm 盒校准 STL 文件的 G 代码文件的结尾。这个未能打印最后几段:

G1 X90.571 Y91.458 F7800.000
G1 X93.542 Y94.429 F3000.000 E8.66695
G1 X93.542 Y93.686 F7800.000
G1 X91.314 Y91.458 F3000.000 E8.76007
G1 X92.056 Y91.458 F7800.000
G1 X93.542 Y92.944 F3000.000 E8.82214
G1 X93.542 Y92.201 F7800.000
G1 X92.799 Y91.458 F3000.000 E8.85318 G1 F1800.000 E7.825318
G1
E0
M107
M104 S0
G28 X0
M84

但是,当我添加建议的 M400 时,它就可以正常工作了:

G1 X90.571 Y91.458 F7800.000
G1 X93.542 Y94.429 F3000.000 E8.66695
G1 X93.542 Y93.686 F7800.000
G1 X91.314 Y91.458 F3000.000 E8.76007
G1 X92.056 Y91.458 F7800.000
G1 X93.542 Y92.944 F3000.000 E8.82214
G1 X93.542 Y92.201 F7800.000
G1 X92.799 Y91.458 F3000.000 E8.85318 G1 F1800.000 E7.825318
G1
E0
M107
M400
M104 S0
G28 X0
M84

顶层填充未完成 #288

看起来 g28 命令是无缓冲的

当我试图理解为什么在 z 向上移动 1mm 之前有归位到 x0 时碰到了它,我想要的是
在 g28 x0 解决 pb 之前添加 m400 命令

还有其他一些奇怪的事情吗?

谢谢

顶层填充未完成 #288
贡献者

M 代表“杂项功能”或“机器”。
没有缓冲/非缓冲的区别。

伯恩哈德

2012 年 11 月 6 日星期二晚上 10:55,NeilMartin notifications@github.comwrote

过去所有的 G 命令都是缓冲的,所有的 M 命令都是
立即的。现在似乎也有无缓冲的 G 命令。所以现在G
和M没有意义,只是一个扩展可能性的前缀。

我同意风扇开关和电机应该被缓冲,所以我会让
它们成为 G 命令并让 M 命令立即执行。

整个标准一团糟。
在 3D 打印机变得更加多产之前,我不认为它会很快得到改善。目前,大多数
拥有打印机的爱好者都有足够的技术头脑来管理
当前标准的细微差别。我不介意它处于现在的状态,
只要它保持当前的开放和可配置状态即可。让
gcode 标准在接下来的几年里发展(尽管很混乱),然后我们可以用每个人 都投入
其中的所有很酷的想法进行智能重新设计。


直接回复此电子邮件或在 GitHub 上查看它 https://github.com/ErikZalm/Marlin/issues/288#issuecomment-10129418。