Нет экструзии при попытке возобновить неудачную печать с помощью отредактированного вручную gcode

Я печатал 16-часовую печать, но, должно быть, мне не удалось правильно скопировать G-код, потому что печать остановилась после 107 из 223 слоев. Глядя на 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

, 👍4


3 ответа


3

В соответствии с RepRap.org список команд G-кода, см. G0 и G1: Перемещение:

Команда Ennn-это величина, которую необходимо выдавить между начальной и конечной точками.

Однако, согласно этому обсуждению, которое теперь удалено с GitHub, о механизме нарезки Cura:

Значения E находятся в абсолютном режиме, поэтому, возможно, прошивка пытается переместить шаговый двигатель в абсолютное положение (что составляет почти 50% от вашей печати). Это может привести к засорению или пропуску в зависимости от того, насколько нагрет ваш экструдер в этот момент.

В крайнем случае вы можете выполнить логическое вычитание в вашей модели уже напечатанного раздела и повторно срезать модель, чтобы напечатать оставшийся бит. Затем приклейте или приварите ABS оставшуюся часть к основному отпечатку. Я делал это в прошлом, это не очень гламурно, но это делает работу, если деталь не требует большой структурной целостности.

Я был неправ со следующими утверждениями в отношении механизма нарезки Cura:

Прошло некоторое время с тех пор, как я смотрел G-код 3D-принтера, но, насколько я помню, значения E могут быть проклятием любого G-кода, написанного вручную. Обычно механизм нарезки генерирует значение E как значение инкрементного шага на протяжении всего G-кода (по крайней мере, это было верно для Skeinforge и раннего программного обеспечения, пожалуйста, проверьте это). Таким образом, если значение является инкрементным и зависит от контроллера, это значение может быть потеряно или повреждено при инициализации новой печати.

Я бы надеялся, что если вы используете пользовательский ввод G-кода механизма нарезки, то программное обеспечение сможет компенсировать подобные ситуации и переформатировать предоставленный вами G-код в соответствии со значением E или любой подобной командой.


,

Я не редактировал никаких кодов, кроме удаления слоев 0-108, @user1104

При удалении этих строк кода вам нужно было бы остановить ошибочную печать, удалить строки 0-108, повторно загрузить файл GCode и повторно инициализировать принтер для нового файла GCode. При этом значение для **E** теряется после остановки печати. Я считаю, что **E** задает положение шагового двигателя. Я думаю, что, "потеряв" это значение, вы не сможете продолжить с того места, на котором остановились. В некоторых механизмах нарезки может быть функция, позволяющая выбрать определенную линию., @tbm0115

он действительно следует по правильному пути, он просто не будет выдавливать нить накала, @user1104

Да, машина будет следовать правильным декартовым координатам (XYZ), потому что они записаны в абсолютных координатах. Я полагаю, что значение **E** (для шагового двигателя и/или расстояния между соплами в зависимости от машины) записывается в инкрементных координатах. Это объяснило бы, почему машина перемещается в нужное место, но может зависнуть при выдавливании. Я постараюсь найти для вас дополнительную информацию, чтобы, надеюсь, лучше объяснить., @tbm0115

Пожалуйста, обратите внимание [на это](http://reprap.org/wiki/G-code#G-commands) , где это относится к команде **E** как *Количество для выдавливания между начальной точкой и конечной точкой*, что означает, что это относится к предыдущему значению **E**, чтобы определить, сколько нити выдавливается., @tbm0115

К сожалению, ссылка на обсуждение исчезла... Интересно, сохранилась ли она где-нибудь в Интернете, в архиве?, @Greenonline

@Greenonline Спасибо, проблема, на которую я ссылался, кажется, была полностью удалена. Я проверяю журнал проблем в репозитории, но он пуст., @tbm0115


1

Правильно ли установлена температура хотенда? Если вы только предварительно разогреете горячую часть, но затем выключите ее, она будет вести себя точно так, как вы описали (пока вы находитесь выше EXTRUDE_MINTEMP, она будет вести себя нормально. Но как только температура упадет слишком низко, она продолжит выполнять движения XYZ, но прекратит выдавливание). Возможно, вам нужно добавить команду M109, чтобы правильно установить температуру.

В своем ответеtbm0115 упоминает абсолютные и относительные координаты. Используются ли абсолютные или относительные координаты, задается с помощью команд G90/G91 и всегда будет одинаковым для всех осей (XYZ и E). Он также упоминает, что:

поэтому, возможно, прошивка пытается переместить шаговый двигатель в абсолютное положение (что составляет почти 50% от вашей печати). Это может привести к засорению или пропуску в зависимости от того, насколько нагрет ваш экструдер в этот момент.

Этого не должно произойти, так как Марлин игнорирует чрезвычайно длинные выдавливающие движения. Когда принтер столкнется

G1 F3600 X210.390 Y105.771 E4104.65185

он выполняет только XYZ-часть перемещения, но не перемещает экструдер (при условии, что принтер был сброшен и текущее положение экструдера равно 0). Тем не менее, он обновляет внутреннее значение для позиции экструдера, поэтому следующий шаг происходит нормально. Возможно, отсутствие начального сегмента выдавливания не имеет большого значения, но если вы хотите, чтобы печать возобновилась с того места, на котором вы остановились, вам следует добавить команду G92 в начало, чтобы правильно инициализировать положение экструдера, например:

G92 E4104.4

(но точное значение зависит от последней позиции экструдера в предыдущем слое).

,

2

Я знаю, что это старая тема, но я сталкивался с аналогичными проблемами с моей машиной delta с прошивкой Marlin.

Не все принтеры, работающие под управлением Marlin, игнорируют большие перемещения E (экструдера). G-код всегда (даже на станках с ЧПУ) выполнял команды от того, где сейчас находятся двигатели, до значения в строке 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 (последняя строка была запущена перед отключением питания), даже если вашей машине это может не понадобиться.

Хорошие привычки приводят к меньшим ошибкам.

,