马林鱼、终点站和位置报告 - 可能的错误?

3D打印 马林鱼 固件 发动机
2021-05-05 07:10:19

我在 Marlin 中看到以下行为:

移动打印头时,如果碰到终端挡块,位置报告 (M114) 会错误地将打印头位置报告为它试图移动的位置,而不是它的实际位置

例如(使用 pronsole):

> M114
X:1.00 Y:1.00 Z:1.00 E:0.00 Count A: 142 B:0 Z:1260  
> G0 Z100
endstops hit:  Z:16.88
> M114
X:1.00 Y:1.00 Z:100.00 E:0.00 Count A: 142 B:0 Z:21263

在此示例中,Z 限位器在 (z:16.88) 处被击中,但打印机似乎认为它位于目标位置 (z:100)。

然而,“计数”Z 似乎仍然准确。

问题:这是 Marlin 中的一个错误,还是这是正确的行为而我误解了什么?

1个回答

关于这个问题的一些信息:很少有步进电机在运行过程中知道它们的确切位置,这意味着 Marlin 将不得不假设步进电机总是在正确的位置。

换句话说,所有 g 代码命令都是相对于它们的当前位置执行的,而不是相对于实际位置。所以如果在打印过程中强行移动打印头,打印机只会在半空中继续打印相同的图案(这基本上就是所谓的层移)。

打印机知道步进器真实位置的唯一方法是触发端点开关。这就是为什么在打印之前执行归位操作以重置 Marlin 中步进器的内部位置簿记的原因。因此,如果在打印机未实际位于终点站的情况下触发终点,您将严重混淆 Marlin。

我同意这听起来很奇怪,当触发限位器时(在打印期间?),Marlin 没有重置其步进器的位置,但话说回来,如果它意外发生(而不是作为重新校准程序的一部分),我相信默认操作应该是中止所有操作,因为这表明打印机失控。也许在程序中止后根本就没有处理运动的例程 - 在这种情况下,无论如何可能没有什么是正确的..