Читается ли G-код строка за строкой?

Я пытаюсь добавить строку

G4 P4000 G1 F4000 E-50

приостановить и убрать печать, чтобы напечатанная строка высохла (печать в воздухе вертикально). Работает ли приведенный выше код, или я должен пропускать строки, или это вообще не имеет значения?

G4 P4000
G1 F4000 E-50

Будет ли следующая строка делать то же самое?

G4 P5000 E-50

, 👍7

Обсуждение

В принципе, только одна команда "Gx" в строке. Все, что ниже, является списком параметров, изменяющих команду., @Carl Witthoft

Может быть, вам следует обновить вопрос, чтобы объяснить, что именно вы хотите сделать, например, хотите ли вы перейти на другую нить накала, например, делаете ли вы паузу, чтобы убрать ее во время паузы? В нынешнем виде печать приостанавливается, вы убираете нить накала после паузы, а затем печать продолжается без филамента при вставке между строками кода. Пожалуйста, объясните, где происходит пауза., @0scar

Пожалуйста, [отредактируйте] свой вопрос, чтобы включить запрошенную информацию!, @0scar

Спасибо @0scar, я все прояснил., @Arthur Mamou-Mani


2 ответа


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

8

Да, G-код считывается строка за строкой. G-код-это язык программирования с числовым программным управлением. В основном он последовательно, строка за строкой, инструктирует машину выполнять определенную задачу. Принтер затем выполняет строки одну за другой, пока не дойдет до конца.

Если вы прикажете принтеру подождать (задержка G4), он сначала выполнит ожидание/задержку, а затем выполнит следующую команду для извлечения филамента. Таким образом, ваши примеры не будут работать, если вы хотите убрать нить во время паузы, вы изменили процесс, если хотите этого добиться.

Чтобы добавить паузу (простую), например, для смены филамента, вы должны проинструктировать головку перейти в определенное положение, извлечь нить и теперь вставить команду пауза/задержка. Дайте себе достаточно времени, чтобы вставить и загрунтовать насадку, а затем вернитесь в последнее место, чтобы продолжить печать.

Вы можете вставить что-то вроде (например, между сменой слоя, перед G1 Zx.xx):

...
G1 X0 Y0 F2000 ; Переместите печатающую головку
G1 F4000 E-50 ; Втягивающая нить
G4 P40000 ; Подождите 40 секунд
G92 E50 ; Новая нить должна оставаться на этом значении
...
G1 Zx.xx

В зависимости от того, что произойдет после G1 Zx.xx, вам может потребоваться вернуть головку в положение, предшествующее тому, где она была до G1 X0 Y0 F2000.

Обратите внимание, что существуют сценарии/плагины для приостановки, доступные, например, для Ultimaker Cura, а также есть команда изменения нити филамент M600, которая может быть включена для определенной прошивки (если это ваша конечная цель).

Используя плагин постобработки Ultimaker Cura, скрипт приостановки выглядит следующим образом:

...
G0 X137.692 Y105
;ИСТЕКШЕЕ ВРЕМЯ:707.873599
;ТИП:ПОЛЬЗОВАТЕЛЬСКИЙ;добавлен код путем постобработки
;скрипт: PauseAtHeight.py
;текущий z: 5
;текущая высота: 5,0
М83
G1 F300 Z6
G1 F9000 X190 Y190
G1 F300 Z15
M104 S0; температура в режиме ожидания
M0;Сделайте фактическую паузу
M109 S200; температура возобновления
G1 F300 Z6
G1 F9000 X133.423 Y105
G1 F9000
М82
G92 E911.50045
;СЛОЙ:24
G0 X137.692 Y105 Z5
...

Обратите внимание, что G0 и G1 являются инструкциями по перемещению в местоположение (хотя и другим способом, быстрым перемещением и линейным перемещением соответственно). Если вы посмотрите внимательно, вы увидите, что после паузы принтер возвращается в положение X-Y, в котором он находился до паузы (X137.692 Y105).


Примечание сбоку:
Некоторые варианты встроенного ПО допускают буферизацию, но каждая инструкция выполняется последовательно.


,

Как вы правильно заметили, " G0 " и " G01 " - это не совсем одно и то же... `G0 "означает линейную интерполяцию с высокой скоростью, тогда как" G01 " означает линейную интерполяцию со скоростью подачи. оператору потребуется " G01 " (при скорости подачи)., @user77232


4

Это должно быть в двух строках, как во втором примере:

G4 P4000
G1 F4000 E-50

Дополнительную информацию смотрите в вики-файле RepRap Gcode. https://reprap.org/wiki/G-code

ПРАВКА: если вы действительно хотите убрать, а ЗАТЕМ приостановить, измените его:

G1 F4000 E-50
G4 P4000

,

Это не сработает, " G1 " выполняется по истечении времени ожидания, поэтому теперь он ждет, извлекает нить и немедленно продолжает, вы должны сделать это наоборот., @0scar

Строго говоря, вы правы (подождите и уберите), но было бы бесполезно, если после этой процедуры принтер продолжит работу без филамента. Я предполагаю, что оператору нужно объяснить, какова цель этой последовательности и где она находится в его коде., @0scar