Макрос запрос Klipper M204

Насколько я понимаю, следующий макрос каким-то образом управляет ускорением и ускорением для замедления.

  1. Как мне установить нужную скорость, скажем, ускорение в этом макросе?

  2. Если ускорение установлено в этом макросе, а также в слайсере, таком как Cura, какое значение в конечном итоге будет реализовано?

Я был бы очень признателен, если бы кто-нибудь объяснил мне, что происходит в условном выражении макроса. У меня нет опыта работы с php-ботом на Python.

[gcode_macro M204]
rename_existing: M204.1
gcode:
  {% set f = params.F|default(0.5)|float %}

  {% if 'S' in params %}
    {% set s = params.S|float %}
    SET_VELOCITY_LIMIT ACCEL={s} ACCEL_TO_DECEL={ s * f }
  {% else %}
    {% if 'P' in params %}
  {% set p = params.P|float %}
  {% if 'T' in params %}
    {% set t = params.T|float %}
    {% if p < t %}
      SET_VELOCITY_LIMIT ACCEL={p} ACCEL_TO_DECEL={ p * f }
    {% else %}
      SET_VELOCITY_LIMIT ACCEL={t} ACCEL_TO_DECEL={ t * f }
    {% endif %}
  {% else %}
    SET_VELOCITY_LIMIT ACCEL={p} ACCEL_TO_DECEL={ p * f }
  {% endif %}
{% elif 'T' in params %}
  {% set t = params.T|float %}
  SET_VELOCITY_LIMIT ACCEL={t} ACCEL_TO_DECEL={ t * f }
{% endif %}
{% endif %}

, 👍0


1 ответ


0

Команда M204 — это то, как gcode устанавливает ускорение для последующих движений (до тех пор, пока следующая команда M204 не изменит его). Эта команда появляется в gcode, сгенерированном слайсером с "управлением ускорением" включено. Вы также можете написать его вручную в своем начальном gcode (не очень полезно, если управление ускорением не отключено, поскольку первый слайсер M204 переопределит его, но может быть полезен для начальной строки и т. д.) или отправить его вручную через сеанс терминала/через терминал Octoprint/и т. д.

Макрос, который вы видите, переопределяет команду M204 и заменяет ее командой, которая делает несколько вещей:

  • Использует слишком сложную лестницу из предложений if/else для принятия параметров Marlin P и T в команду M204 для отдельных ускорений печати и перемещения, но затем игнорирует их и использует только минимальное из двух.

  • Принимает новый параметр F (вероятно, означающий фактор) и устанавливает параметр Klipper "ускорение до замедления" установка этого коэффициента умножает на запрошенное ускорение. Это позволяет "ускорить до замедления"; должно постоянно поддерживаться на любом желаемом проценте предела ускорения, даже при изменении ускорения.

Помимо того, что лестница if/else представляет собой беспорядок, этот макрос не может сохранить фактор, переданный F, поэтому, если слайсер не знает, что нужно выдавать F каждый раз, когда он выдает команду M204, она всегда будет сбрасывать коэффициент до 0,5 (значение по умолчанию выше) каждый раз, когда изменяется ускорение. Klipper позволяет определять постоянные переменные для макросов gcode; это, вероятно, то, что автор хотел сделать, но не знал, как это сделать.

В целом вышеизложенное выглядит не очень полезным. «Ускорение до замедления»; это сомнительная функция для начала, а с формирователем ввода, возможно, она просто делает ваши отпечатки намного медленнее без каких-либо преимуществ. Современная рекомендация большинства людей заключается в том, что вы просто устанавливаете max_accel_to_decel на 999999999 в своей конфигурации, чтобы отключить его, вместо того, чтобы проходить через обручи, чтобы изменить его динамически, как это, пока вы включили формирование ввода .

В любом случае наличие этого макроса никоим образом не мешает управлению ускорением слайсером, и вам не придется "использовать" этот макрос вообще. Его цель не в том, чтобы вы "использовали" это, но для того, чтобы перехватывать команды M204, выдаваемые слайсером, и заставлять их делать что-то дополнительное.


,