Как прервать длинную команду с помощью G-кода?

Я смог подключить свою терминальную программу (Putty) к своему 3D-принтеру (Creality Ender 3 Pro) и смог посылать команды G-кода на мой принтер, и он повиновался.

Теперь предположим что я послал длинную команду типа

G29 ; автоматическое выравнивание станины

и он все еще исполняется. Принтер пишет мне

echo:busy: processing

Как прервать его?

Я попытался послать М0, но это не сработало.

, 👍4

Обсуждение

Привет, Димс! Я уже разрешил твой вопрос? Хотели бы вы принять один из существующих ответов или, может быть, добавить свой собственный вклад, глядя под другим углом? Или у вас все еще есть сомнения, которые мы могли бы попытаться разрешить вместе?, @octopus8


2 ответа


2

3D-принтеры довольно просты, когда дело доходит до g-кода. На них нет функции запуска цикла или паузы цикла. Кроме того, нет команды g-кода, прерывающей предыдущую команду. Чтобы остановить его, можно было выключить. Или, если встроенное программное обеспечение принтера настроено на это, вы можете коснуться одного из концевых выключателей, чтобы заставить его прекратить движение.


,

2

G-Код обрабатывается как очередь. Поведение FIFO запретило бы выполнять какие-либо команды параллельно.

Однако я знаю - пока у меня не было возможности попробовать - аварийные команды М112 или М108, предлагаемые Марлином. В документации Marlin говорится, что EMERGENCY_PARSER и HOST_KEEPALIVE_FEATURE должны быть включены для их обработки. Таким образом, очевидно, существует механизм, который может работать параллельно (например, очередь с более высоким приоритетом?).

Эти команды могут быть предназначены для прерывания выполнения некоторых конкретных действий, например, M108 был описан для прерывания цикла ожидания температуры. Возможно, вы захотите попробовать.

M0 также требует настройки EMERGENCY_PARSER. И это может быть немного иначе, чем вы ожидаете: это описывается как пауза после последнего движения. В отличие от этого, аварийные коды (M112 full stop) предназначены для перехода во внутреннюю очередь команд даже при печати и выполнения немедленно, когда включен аварийный анализатор (очередь команд будет потеряна, принтер может выключиться или пользователь может быть вынужден перезагрузить принтер).

,

Некоторые команды определенно могут выполняться параллельно. Например, я могу начать нагревать экструдер и мяукать, перемещая оси., @Dims

@Dims, который на самом деле не работает параллельно. Вы просто выдаете команду "изменить заданное значение температуры", и как только заданное значение было обновлено, команда считается выполненной. Существуют также команды G-кода для изменения различных других настроек (например, шагов на мм), но они ни в коем случае не "выполняются" после их выполнения., @Tom van der Zanden

Такие команды, как "Пауза" , вставляются после завершения последнего движения. Однако существует команда *прервать печать*, которая останавливает выполнение любого G-кода... но выбрасывает все команды., @Trish

клиппер не поддерживает gcode G80, чтобы остановить движение, @CS QGB