Макросы Klipper: Простым Языком

Клиппер: Макросы - простым языком

Ищете информацию о запутанном мире макросов Klipper? Или просто пример для копирования-вставки? Здесь вы найдете все, что вам нужно!

За последние два года Klipper набрал большую популярность и вместе с ним появилось много новичков. Простой, но эффективный веб-интерфейс, технология Input shaping и обещание более высоких скоростей — все это привлекает. Но если и есть область в которой Klipper действительно превосходит своих конкурентов, так это возможность настройки.

Программирование почти в реальном времени полностью исключает компиляцию и прошивку для каждого небольшого изменения. А благодаря наличию в основе одноплатного компьютера (SBC) Klipper предоставляет пользователю полный контроль над всеми его функциями. В дополнение к модульному подходу к созданию прошивки, существуют также чрезвычайно универсальные макросы.

Эти небольшие фрагменты кода могут ускорить, упростить и автоматизировать многие действия. Макросы — это отличный способ выполнять повторяющиеся задачи одним нажатием кнопки. Но как они работают и где можно найти готовые макросы? Обо всем этом и многом другом мы расскажем в этой статье, так что оставайтесь здесь, чтобы узнать об этом. Но прежде всего, что такое макрос?

О макросах

Документация Klipper - это полезный источник информации
Документация Klipper — полезная копилка информации (Источник: Klipper)

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

В Klipper макрос определяется в конфигурационном файле принтера (или в отдельном файле .cfg, если он включен). Затем макрос можно сопоставить с физической кнопкой в веб-интерфейсе. Он следует определенному шаблону и грамматике, основанной на языке Jinja2.

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

Теперь, когда мы разобрались с основами, давайте рассмотрим, как создать макрос.

Как работают макросы

Mainsail использует выделение шрифтов для упрощения редактирования кода
Mainsail использует выделение шрифтов для упрощения редактирования кода (Источник: Mainsail)

Мы не можем описать здесь все возможности и варианты макросов. Поэтому мы укажем на общую структуру, а также на то, где можно найти дополнительную информацию и примеры.

Как упоминалось ранее, макросы можно определить в файле printer.cfg. Неважно, где именно в этом файле, главное, чтобы они не находились в самом низу — в разделе SAVE_CONFIG. Вообще говоря, в целях организации макросы размещаются последними после всех параметров принтера. В качестве альтернативы можно создать отдельный файл .cfg специально для макросов и включить его в файл printer.cfg, добавив в самом начале следующее:

[include your_file_name.cfg]

Для того чтобы распознать макрос, участок кода должен следовать четко определенному, но простому шаблону. Вот пример:

[gcode_macro your_macro_name]

description: #An optional written description of the macro

gcode:

#The code you want it to execute

После этого определения вы можете записать желаемое действие с помощью команд в том порядке, в котором вы хотите, чтобы они выполнялись. Если у вас многострочный набор команд, важно использовать отступы, как показано в этом примере:

[gcode_macro PURGE_LINE]

gcode:

#Move to start position

G1 X10.1 Y20 Z0.28 F5000.0

#Draw the first line

G1 X10.1 Y200.0 Z0.28 F1500.0 E15

#Move to the side

G1 X10.4 Y200.0 Z0.28 F5000.0

#Draw the second line

G1 X10.4 Y20 Z0.28 F1500.0 E30

#Reset Extruder

G92 E0

Строки, начинающиеся с символа «#», считаются комментариями и не выполняются. Они чрезвычайно полезны для быстрого объяснения того, что делает команда.

В дополнение к командам G-кода, которые полностью поддерживаются, Klipper добавляет ряд параметров переменных и действий. Они позволяют получать данные и выдавать команды, которые управляют всеми аспектами прошивки. Помните, что в Marlin является M- или G-командой, в Klipper может существовать под отдельным именем.

Вот пример команды для калибровки сетки стола:

[gcode_macro mesh_leveling]

gcode:

#Set extruder and bed temperature

M190 S65

M109 T0 S120

# Home all axis

G28

#Start probing

BED_MESH_CALIBRATE PROFILE=mesh1 METHOD=automatic

#Turn off heaters

TURN_OFF_HEATERS

Klipper также позволяет пользователю определять новые переменные, которые могут быть сохранены в памяти. Это делается с помощью SAVE_VARIABLE и требует дополнительной конфигурационной секции. Это полезно, если вы хотите сохранить определенное значение, которое обычно теряется при перезапуске прошивки. Существуют также способы определения переменных, установки задержки перед выполнением и изменения пользовательского интерфейса экрана. Поскольку они требуют более сложного синтаксиса, мы не будем рассматривать их в этой статье, но вы можете прочитать больше в официальной документации.

Запуск макросов

Интерфейс Mainsail позволяет легко группировать макросы
Интерфейс Mainsail позволяет легко группировать макросы

Теперь мы рассмотрели, как создать макрос, но, возможно, вам все еще интересно, как его запустить. Есть три способа сделать это:

  • Вариант 1: Макрос может быть сопоставлен с кнопкой пользовательского интерфейса и нажат пользователем. Эта часть обрабатывается выбранным вами веб-интерфейсом (OctoKlipper, Mainsail или Fluidd) и доступна через настройки.
  • Вариант 2: Она может быть выдана в Консоле. Просто скопируйте-вставьте имя макроса и нажмите Enter.
  • Вариант 3: Макрос может быть запущен Клиппером автоматически, если он присутствует в выполняемом G-коде. При разборе файла G-кода Klipper распознает любую команду, содержащую имя определенного макроса, и выполнит ее.

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

Примеры использования

Макросы значительно упрощают взаимодействие между слайсером и микропрограммой
Макросы значительно упрощают взаимодействие между слайсером и прошивкой

Существует бесконечное множество вариантов использования макросов Klipper, поскольку они представляют собой не определенные структуры, а шаблоны. Вот краткий обзор наиболее распространенных из них:

  • Автоматизация скучной рутины: Если принтер необходимо выравнивать перед каждой печатью, вы часто меняете филамент или если вы хотите просто нажать кнопку, чтобы целый набор действий произошел автоматически, вы можете написать макрос.
  • Начало и конец G-кода: С макросами эти части кода теперь можно задавать непосредственно в микропрограмме вместо того, чтобы каждый раз заново нарезать деталь для внесения изменений.
  • Перевод G-кода: Если вы нарезали свою модель для принтера со стилем Marlin и некоторые команды не определены в Klipper, вы можете настроить макрос для перевода их в эквивалент Klipper.
  • Передача метаданных филамента из слайсера: Благодаря глубокой интеграции с API Moonraker веб-интерфейсы, такие как Mainsail и Fluidd, могут считывать дополнительную информацию из G-кода и отображать ее при выборе файла. Метаданные включают тип и название филамента, высоту слоя и многое другое. Для этого необходимо установить макрос в начале G-кода слайсера.

И многое другое появляется каждый день, благодаря невероятному и преданному сообществу! Хотите внести свой вклад? Далее — несколько советов и рекомендаций по написанию чистых и эффективных макросов.

Советы и подсказки

Выравнивание и трамплинг можно автоматизировать с помощью макроса
Выравнивание и трамплинг можно автоматизировать с помощью макроса

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

Комментарии обязательны

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

Чистота кода — это не только эстетика

Упорядоченный файл .config не только приятен для глаз. Он поможет вам сэкономить время при поиске, снизит риск ошибок и вообще поможет определить причину проблемы. Чтобы сохранить макросы в чистоте и порядке, создайте для них отдельный раздел или специальный файл, как уже говорилось ранее. Кроме того, не забывайте использовать не общие имена (например избегайте таких терминов, как macro, variable, actions, x, my macro и так далее). Называйте свои макросы так, чтобы вам было легче запомнить функцию команды.

Настройка и изменение опережения давления для каждого материала - идеальная работа для макроса
Настройка опережения давления на основе каждого материала — идеальная работа для макроса (Источник: GitHub)

Состояние парсинга влияет на команды G0 и G1

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

Код должен выглядеть следующим образом:

[gcode_macro JOG_X_10]

description: Move the X axis in increments of 10mm

gcode:

#Save the current status to restore it after we're done with our move

SAVE_GCODE_STATE NAME=jog_x_state

#Set relative positioning

G91

#Issue the command

G1 X10 F300

#Restore the status quo to avoid conflict with the reference system

RESTORE_GCODE_STATE NAME=jog_x_state

Проверьте, прежде чем запускать чужие макросы

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

Выполните макрос, прежде чем запускать его во время печати

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

Где найти макросы

Существует множество репозиториев, из которых можно копировать, но перед запуском проверьте их на совместимость
Есть много репозиториев, из которых можно скопировать, но перед запуском проверьте совместимость (Источник: jschuh через GitHub)

Поскольку Klipper больше не является нишевым проектом, сообщество создало множество макросов для покрытия наиболее распространенных потребностей. Большинство пользователей сегодня могут скопировать код и немного изменить его вместо того, чтобы писать свой собственный. Вот несколько полезных ресурсов:

Николай

Я всегда рад вашим комментариям, предложениям или новостям из первых уст.

Оцените автора
Добавить комментарий