尝试使用手动编辑的 gcode 恢复失败的打印时没有挤压

3D打印 g代码
2021-04-24 18:39:21

我正在打印 16 小时的打印件,但我一定没有正确复制 G 代码,因为打印在 223 层中的 107 层后停止了。查看 G 代码,它也停在那里。

然而,我的电脑上有完整的 G 代码,并决定尝试从第 108 层恢复打印。它似乎有效,除了在开始时在单个点有点过度挤压,但在三层之后,我注意到它不再挤压了。我并不完全肯定这不是由于喷嘴堵塞,但我有一种强烈的感觉,问题是 G 代码本身,因为它确实在打印开始前挤出了一些塑料。

这是我手动编辑的 G 代码的第一行。谁能看出为什么我一开始得到斑点,或者为什么我后来什么也没有得到?或者看起来不错,我的问题可能是喷嘴?

;FLAVOR:UltiGCode
;TIME:60308
;MATERIAL:119047
;MATERIAL2:0
;NOZZLE_DIAMETER:0.400000
;NOZZLE_DIAMETER2:0.400000
;MTYPE:PLA

;Layer count: 222
;LAYER:109
G0 F9000 X208.213 Y107.948 Z16.610
;TYPE:FILL
G1 F3600 X210.390 Y105.771 E4104.65185
G0 F9000 X210.390 Y103.170
G1 F3600 X168.331 Y61.111 E4107.77457
G0 F9000 X167.074 Y61.111
G1 F3600 X120.237 Y107.949 E4111.25208
G0 F9000 X121.695 Y107.949
G1 F3600 X74.857 Y61.111 E4114.72962
G0 F9000 X73.600 Y61.111
G1 F3600 X26.763 Y107.948 E4118.20709
3个回答

根据 RepRap.org的 G 代码命令列表,请参阅G0 和 G1:移动

Ennn命令是开始点和结束点之间挤出的量

然而,根据这个讨论,现在从 GitHub 中删除,关于 Cura 切片引擎:

ê值是绝对模式,因此,或许固件试图移动步进电机的绝对位置(这几乎是50%是通过打印)。这可能会导致堵塞或跳跃,具体取决于您的挤出机当时的温度。

作为最后的手段,您可以对已打印部分的模型执行布尔减法,然后重新切片模型以打印剩余部分。然后用胶水或 ABS 焊接,将剩余的部分粘贴到主打印件上。我过去做过这个,它不是超级迷人,但如果零件不需要很多结构完整性,它就可以完成工作。

我对 Cura 切片引擎的以下陈述是不正确的:

我已经有一段时间没有看过 3D 打印机 G 代码了,但据我所知,E值可能是任何手动编写的 G 代码的祸根。通常切片引擎在整个 G 代码中生成E值作为增量步长值(至少这对于 Skeinforge 和早期的 MakerWare 是正确的,请验证这一点)。因此,如果该值是递增的并且取决于控制器,则在初始化新打印时该值可能会丢失或损坏。

我希望,如果您使用切片引擎的自定义 G 代码输入,软件将能够补偿这种情况并重新格式化您提供的 G 代码以匹配E或任何类似命令的值

我知道这是一个旧线程,但我在使用 Marlin 固件的 delta 机器上遇到了类似的问题。

并非所有运行 Marlin 的打印机都会忽略大型E(挤出机)移动。G 代码始终(即使在 CNC 机器中)运行从电机现在到 G 代码行中的值的命令。例如,G0 X10将 X 电机移动 10 个单位。单位通过G20设置G21

当您的机器断电时,您需要重新归位所有轴,以便机器知道它在哪里。如果你不这样做,它可能会认为它当前在 0, 0, 0, 0. 然后当你有这条线时,

G1 F3600 X210.390 Y105.771 E4104.65185 

它会尝试从0,0,0,0去210.390,105.771,0,4104.65185在3600进给速度因此,这是一件好事,断电之后回家,并添加G92 E4104.4(断电前最后一行RAN)连如果您的机器可能不需要它。

好的习惯可以减少错误。

热端温度设置是否正确?如果您只预热热端然后将其关闭,它将完全按照您的描述运行(当您在上面时,EXTRUDE_MINTEMP它会正常运行,但是一旦温度降得太低,它将继续进行 XYZ 移动,但会停止挤压) . 也许您需要添加一个M109命令来正确设置温度。

在他的回答中,tbm0115 提到了绝对坐标和相对坐标。使用绝对坐标还是相对坐标是使用G90/G91命令设置的,并且对于所有轴(XYZ 和 E)始终相同。他还提到:

所以也许固件正试图将步进电机移动到绝对位置(几乎是打印的 50%)。这可能会导致堵塞或跳跃,具体取决于您的挤出机当时的温度。

这不应该发生,因为 Marlin 会忽略极长的拉伸移动。当打印机遇到

G1 F3600 X210.390 Y105.771 E4104.65185

它仅执行移动的 XYZ 部分,但不移动挤出机(假设打印机已重置且当前挤出机位置为 0)。但是,它会更新挤出机位置的内部值,因此下一步会正常进行。也许缺少初始挤出段没什么大不了的,但是如果您希望打印在您中断的地方完美恢复,您应该G92在开头添加一个命令以正确初始化挤出机位置,例如:

G92 E4104.4

(但确切值取决于上一层中最后一个挤出机的位置)。