Марлин, конечные остановки и отчет о местоположении - возможная ошибка?

Я вижу следующее поведение в 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 endstop был поражен в (z:16.88 ), но принтер, похоже, думает, что он находится в целевом месте (z: 100).

Однако "Граф" Z, по-видимому, остается точным.

Вопрос: Это ошибка в Marlin, или это правильное поведение, и я что-то неправильно понимаю?

, 👍4

Обсуждение

Если это ошибка, вы должны сделать отчет на их странице github., @StarWind0

Спасибо, и да, я так и сделаю, если это так. Сначала просто ищу подтверждение того, что это ошибка - я был бы удивлен, что это будет существовать в чем - то столь же зрелом, как Марлин, так как это явно отбросит всю работу по печати-поэтому я сначала ищу подтверждение от тех, кто умнее/опытнее, что я, если это действительно ошибка, или я просто что-то неправильно понял?, @Mtl Dev

Я понимаю ваше беспокойство, когда вы хотите быть уверены, что у вас есть проблема, прежде чем сообщать о ней. Однако в данном случае они были бы лучшими людьми, чтобы сообщить об этом. Если вдуматься, то действительно, вы только что сделали доклад, но не тем людям :-)! Скорее всего, нам потребуется столько же усилий, чтобы искать и не иметь ответа, сколько и ребятам, написавшим код. На мой взгляд, лучше всего использовать усилия, спрашивая их ... Я все время открываю отчеты об ошибках в таких компаниях, как Google. Ничего особенного в том, чтобы написать отчет. Только не думайте, что у нас будет достаточно подробных знаний, чтобы ответить. Но я могу и ошибаться., @StarWind0


1 ответ


Лучший ответ:

3

Немного информации по этому вопросу: немногие шаговые двигатели имеют какой-либо способ узнать их точное положение во время работы, а это значит, что Марлин должен будет предположить, что степперы всегда находятся в нужном месте.

Другими словами, все команды g-кода выполняются относительно их текущей позиции, а не относительно реальных позиций. Поэтому, если вы с силой переместите печатающую головку во время печати, принтер просто продолжит печатать одни и те же узоры в воздухе (это в основном то, что называется сдвигом слоев).

Единственный способ, которым принтер может узнать реальное положение степперов, - это когда срабатывают конечные переключатели. Вот почему действие самонаведения выполняется до отпечатков, чтобы сбросить внутреннюю позиционную бухгалтерию степперов в Марлине. Таким образом, если конечные точки запускаются без того, чтобы принтер действительно находился в конечных точках, вы серьезно запутаете Марлина.

Я согласен, что звучит странно, что Marlin не сбрасывает позиции своих степперов при срабатывании endstop (во время печати?), Но опять же, если это происходит случайно (а не как часть процедуры повторной калибровки), я считаю, что действия по умолчанию должны заключаться в прерывании всей операции так как это указывало бы на то, что принтер вышел из-под контроля. Возможно, просто нет рутины для обработки движения после того, как программа была прервана - ситуация, когда, вероятно, ничего не будет правильно в любом случае.


,

Спасибо, хорошо сказано и информативно. Теперь я могу понять, почему это, возможно, непреднамеренно, осталось без внимания. Я не уверен, в чем могут быть преимущества правильной работы этой системы, но я отправлю исправление кода и сообщение об ошибке в Marlin, если ничего, кроме как для полноты картины., @Mtl Dev