Nomar记录一段历史
马林鱼、终点站和位置报告 - 可能的错误?

我在 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 中的一个错误,还是这是正确的行为而我误解了什么?

如果这是一个错误,你应该向他们的 github 页面报告。
谢谢,是的,如果是的话,我会的。首先只是寻求确认这是一个错误 - 我会惊讶于这会存在于像马林这样成熟的东西中,因为它显然会放弃整个打印工作 - 所以我首先寻求那些更聪明/更有经验的人的确认如果它确实是一个错误,或者我只是误解了什么?
我理解在报告问题之前希望确定您有问题的担忧。但是,在这种情况下,他们将是向其报告的最佳人选。如果你仔细想想,真的,你只是做了一个报告,但报告给了错误的人:-)!对于我们来说,寻找并没有答案的努力可能与编写代码的人一样。在我看来,最好的努力是询问他们。我一直在像谷歌这样的公司打开错误报告。做报告没什么大不了的。只是不要认为我们会有详细的知识来回答。但我可能是错的。

1个回答

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

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

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

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

谢谢,说得好,内容丰富。我现在可以理解为什么这可能是无意的,没有得到处理。我不确定正确地进行这项工作有什么好处,但为了完整性,我会向 Marlin 提交代码修复和错误报告。

随机文章