Система G-кодов и внутренних команд слайсера CreationWorkshop X 1.2.3.

pl32
Идет загрузка
Загрузка
17.01.2019
1107
10
печатает на RK-1
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

13
Статья относится к принтерам:
Wanhao Duplicator 7 (D7) Wanhao Duplicator 7 PLUS
Приветствую, коллеги.

Прошлый раз я писал об системе G-кодов в различных вариантах 54 и 75-й версии CreationWorkshop, о багах в системе G-кодов 75-й версии, и об различиях в отработке G-кодов с компа и с BOX.

Но все течет, все меняется, и осенью 2018 года для владельцев Wanhao D7 или аналогичных принтеров стала доступна новая бесплатная версия слайсера - CreationWorkshop X 1.2.3.

В целом CreationWorkshop X 1.2.3 мало отличается от 54-го или 75-го – основные функции те же, новых наворотов нет, но есть несколько интересных особенностей:

1) Слайсер скачивается с профилями под Wanhao D7 (варианты BOX, дисплей 2, дисплей 3), ничего дополнительно настраивать не надо – надо установить нужный профиль машины.

G-код настроен правильно, никаких ошибок, багов и пр. нет. Разница между компом и BOX учтена, ошибки и багги в кодах для 75-го воркшопа исправлены. Временные задержки на время подъема-опускания платформы рассчитываются автоматически.

2) В слайсере итоговый G-код настраивается. Полностью. Включая засветку (в 54,75-й версиях засветка не настраивалась – G-код был жестко прописан в глубинах программы).

3) Появились пользовательские команды, которым пользователь может присвоить любой код или значение.

4) Появились новые команды, и новые времени задержки печати.

Итак, рассмотрим, какие коды и команды используются.

G1 Z…. – перемещение платформы. Можно задать скорость параметром F

G4 P0 – пауза 0 мс (необходима при работе с BOX, обеспечивает паузу до окончания выполнения предыдущей команды)

G21 – задание единиц измерения (мм)

G28 Z – перемещение платформы в нулевую позицию («дом»)

G91 – использования относительных координат

M17 – инициализация моторов

M18 – отключение моторов

M106 S255 – включение засветки УФ-светодиодом

M106 S0 – выключение засветки УФ-светодиодом

Внимание! Если вы пользуетесь не Wanhao, а другим принтером – например JAP – для отключения надо использовать команду M107.

@cmdOpenShutter – пользовательская команда, заменяется на M106 S255

@cmdCloseShutter – пользовательская команда, заменяется на M106 S0

Значения пользовательских команд задаются в текстовом файле профиля машины:

< UserParameters >

< cmdOpenShutter type='String' default='M106 S255' / >

< cmdCloseShutter type='String' default='M106 S0' / >

Соответственно можно задать свои команды, или заменить M106 S0 на M107 (актуально для JAP).

%d$CURSLICE – номер слоя. Внутренняя переменная.

%d$SettleTime – задержка на растекание полимера, задается в окне SettleTime

%d$BlankTime – задержка времени между отключением подсветки и подъемом платформы, задается в окне BlankTime. Фактически не нужна.

%d$TopTime – задержка времени платформы в верхнем положении. По умолчанию 0, имеет смысл ставить 100 мс. Задается в окне TopTime

$ZLiftDist – высота подъема платформы. Задается в соответствующем окне.

$NumFirstLayers – количество первых слоев. Задается в соответствующем окне.

$ZBottomLiftRate – скорость подъема платформы на первых слоях Задается в соответствующем окне.

$ZLiftRate – скорость подъема платформы на остальных слоях Задается в соответствующем окне.

F$ZRetractRate – скорость опускания платформы. Задается в соответствующем окне.

$ZDir – направление движения, определяется схемой (top-dawn или dawn-top).

$LayerThickness – толщина слоя. Задается в соответствующем окне.

< Delay > - внутренняя команда Воркшопа. Задает промежуток времени. Воспринимается как Воркшопом, так и BOX.

< Takes > - внутренняя команда Воркшопа. Задает промежуток времени. Отличие от < Delay > - позволяет использовать условные операторы для задания времени, воспринимается только Воркшопом и не воспринимается BOX.

Примечание – пробелов не надо. Здесь и далее установлены пробелы, иначе движок сайта воспримет команды Воркшопа как команды движка.

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

Стартовый код:

;********** Header Start ********

G21 ; (установка единиц в мм)

G91 ; (относительная система координат)

M17 ; (инициализация двигателей)

; G28 Z ; Привод платформы в «ноль» - «заремено» - т.е данная команда не будет выполняться.

Если вы хотите, чтобы перед началом печати у вас платформа автоматически отправлялаьс «в дом» - надо убрать точку с запятой перед командой.


Код перед засветкой слоя:

;********** Pre-Slice %d$CURSLICE ******** ; В G-код запишется комментарий с номером слоя

G4 P0 ; Код для BOX – дождаться выполнения предыдущих команд (т.е дождаться опускания платформы), при усправлении с компа не нужен

;< Delay > %d$SettleTime ; задержка времени на растекание полимера

Код засветки слоя (в предыдущих версиях Воркшоп отсуствовал!).

;********** Layer %d$CURSLICE ******** ; В G-код запишется комментарий с номером слоя

;< Slice > %d$CURSLICE ; вывод кадра с номером, равным номеру слоя

@cmdOpenShutter ; UV on ; строка будет заменена на M106 S255 – включение засветки

;{$CURSLICE < $NumFirstLayers? < Delay > %d$FirstLayerTime: < Delay > %d$LayerTime} ; команда < Delay > не поддерживает условный оператор, поэтому два времени засветки приходится задавать вот таким хитрым способом… Напомню – у нас два времени засветки – для первых и для последующих слоев.

@cmdCloseShutter ; UV off ; строка будет заменена на M106 S0 – отключение засветки,

;< Slice > Blank ; вывод пустого кадра

;< Delay > %d$BlankTime ; задержка времени перед подъемом платформы.

Код подъема-опускания платформы:

;********** Lift Sequence %d$CURSLICE ********; В G-код запишется комментарий с номером слоя

G1 Z($ZLiftDist * $ZDir) F{$CURSLICE < $NumFirstLayers?$ZBottomLiftRate:$ZLiftRate} ; подъем платформы, условный оператор задает две скорости – для первых и последующих слоев.

;< Takes > {$CURSLICE < $NumFirstLayers?%d($ZLiftDist*1000*60/$ZBottomLiftRate):%d($ZLiftDist*1000*60/$ZLiftRate)} ; автоматически вычисляется время задержки – время подъема платформы, с учетом двух скоростей. Для управления с компа. При работе с BOX не нужна.

G4 P0 ; BOX не воспринимает команду < Takes >, но по команде G4 будет ожидать конца подъема.

;< Delay > %d$TopTime ; задержка платформы в верхнем положении

G1 Z(($LayerThickness-$ZLiftDist) * $ZDir) F$ZRetractRate ;опускание платформы

;< Takes > %d(($ZLiftDist*1000-$LayerThickness*1000)*60/$ZRetractRate) ; автоматически вычисляется время задержки – время опускания платформы.

Код окончания печати

;********** Footer ********

@cmdCloseShutter ; UV off ; строка будет заменена на M106 S0 – отключение засветки,

G4 P0 ; Ожидание окончания выполнения предыдущей команды BOX

G1 Z40.0 F150.0 ; подъем платформы на 40 мм со скростью 150 мм/мин. Параметры подъема и скорость подъема можно изменять вручную во вкладке G-коды.

Внимание! Если у вас высокая деталь (выше 160 мм) – высоту подъема нужно уменьшить, чтобы платформа не вылетела с винта, попутно сломав «антивоблинг» - верхнего концевика нет!


G4 P0 ; Ожидание окончания выполнения предыдущей команды BOX

M18 ; Отключение моторов

;< Completed > ; сообщение, что печать закончена.



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

Ну а продвинутым пользователям она позволяет куда больший простор для модификации G-кодов, чем предыдущие версии.

Скриншоты программы:

Вкладка для настройки G-кодов:
Вкладка для задания времени, скорости, высоты, толщины, и т.п.:
Вкладка с пользовательскими командами:
На этом пока все!

Удачной печати и разумных идей по модификации G-кодов.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

13
Комментарии к статье

Комментарии

17.01.2019 в 12:49
1

Низкий поклон за расшифровку кодов!!! Спасибо большое!

17.01.2019 в 12:58
1

Подскажите, как в настройках занизить мощность засветки диода?

17.01.2019 в 13:11
1

Если правильно понимаю команды, то в команде 'M106 S255' параметр Sxxx задаёт яркость светодиода. 0 - выключен, 255 - максимальная яркость.

Это при условии, что драйвер светодиода поддерживает ШИМ управление.

17.01.2019 в 13:13
1

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

17.01.2019 в 13:18
3

Все верно...
Просто есть одна хитрость - из воркшопа не поменять (по крайней мере на моей машине).
Надо менять в текстовом файле с профилем машины.
Ниже описал где и как

17.01.2019 в 13:16
3

Заходите в папку, где у вас воркшоп - обычно это 'CWX-1.2.3'.
Находите в ней папку 'mashines' - там лежат файлы с профилями машин, расширение .machine
Выбираете тот файл, который у вас установлен - например 'WanhaoD7-D7Box.machine'.
Открываете блокнотом, находите (почти в самом конце) сточки
< UserParameters >
< cmdOpenShutter type='String' default='M106 S255' / >
< cmdCloseShutter type='String' default='M106 S0' / >

Меняете S255 (полна засветка) на другое число, например S122 (50% мощности), или S200 (примерно 79% мощности) _ т.юе. должно получиться так:
< UserParameters >
< cmdOpenShutter type='String' default='M106 S200' / >
< cmdCloseShutter type='String' default='M106 S0' / >
 и сохраняете файл профиля (можно под другим именем).
Потом запускаете воркшоп - и все (если сохранили с прежним именем), или выбираете новый файл профиля машины (если сохранили с новым именем).

17.01.2019 в 13:34
2

В качестве варианта - заходите во вкладки G-кодов, находите вкладку Layer

;********** Layer %d$CURSLICE ******** 
;< Slice > %d$CURSLICE ;
@cmdOpenShutter ; UV on ; 
;{$CURSLICE < $NumFirstLayers? < Delay > %d$FirstLayerTime: < Delay > %d$LayerTime} ;
@cmdCloseShutter ; UV off ; 
;< Slice > Blank ; 
;< Delay > %d$BlankTime ; 

и меняете @cmdOpenShutter ; UV on ;  на M106 S200 или еще что.
Потом сохраняете G-код.
Разница - в случае редактирования профиля машины мощность засветки будет изменена для всех профилей полимеров, а в случае редактирования непосредственно G-кода - только в профиле данного конкретного полимера.
Иногда может быть полезно - когда разные полимеры требуют разной мощности засветки.

17.01.2019 в 14:38
1

Ещё раз спасибо за подробный разбор и советы! Статья в избранном! Максимально актуальная и полезная информация.

17.01.2019 в 13:26
1

Спасибо Роман за ещё раз разжёванную раскладку кодов, всё таки добавлю эту статью в избранные т.к. в голове не держу их.

 Временные задержки на время подъема-опускания платформы рассчитываются автоматически.


Вы ни чего не попутали? У нас наверное разные версии CW 1.2.3
У меня вот так выглядит

17.01.2019 в 13:37
1

Все верно.
Временные задержки рассчитываются автоматически в момент генерации G-кода, нигде ничего ни вводить, не нажимать не надо:
Код подъема-опускания платформы:
;********** Lift Sequence %d$CURSLICE ********; В G-код запишется комментарий с номером слоя
G1 Z($ZLiftDist * $ZDir) F{$CURSLICE < $NumFirstLayers?$ZBottomLiftRate:$ZLiftRate} ; подъем платформы, условный оператор задает две скорости – для первых и последующих слоев.
;< Takes > {$CURSLICE < $NumFirstLayers?%d($ZLiftDist*1000*60/$ZBottomLiftRate):%d($ZLiftDist*1000*60/$ZLiftRate)} автоматически вычисляется время задержки – время подъема платформы, с учетом двух скоростей. Для управления с компа. При работе с BOX не нужна.
G4 P0 ; BOX не воспринимает команду < Takes >, но по команде G4 будет ожидать конца подъема.
;< Delay > %d$TopTime ; задержка платформы в верхнем положении
G1 Z(($LayerThickness-$ZLiftDist) * $ZDir) F$ZRetractRate ;опускание платформы
;< Takes > %d(($ZLiftDist*1000-$LayerThickness*1000)*60/$ZRetractRate) автоматически вычисляется время задержки – время опускания платформы.

Жирным выделил формулы расчета временных задержек на подъем и опускание платформы.
В 54-й и 75-й версиях - надо было нажимать кнопку 'автокалк' для расчета. Здесь - все автоматически.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Обдув на DEXP BOX-C-K2 (DDKUN C-K2)

Продолжаю ковырять прошивку Anycubic Photon S

Печать фигурки по технологии SLA

Парочка. Обратите внимание на руки.

Халявный фильтр-очиститель для филамента

Пробиваем потолок мелкотравчатости. 1:64