Ускорение в Klipper

Частое заблуждение: «ускорение задано в прошивке одним числом, слайсер его игнорирует». На
Klipper это верно лишь наполовину. Правильная модель — max_accel в printer.cfg это
ПОТОЛОК
, а фактическое рабочее ускорение на каждом участке задаёт слайсер командой M204,
и Klipper слушается, зажимая по потолку.

Потолок vs текущее значение

  • [printer] max_accel — одновременно и дефолт (на старте текущее ускорение = max_accel),
    и жёсткий потолок: SET_VELOCITY_LIMIT ACCEL= / M204 S меняют текущее ускорение, но
    Klipper клампит его к max_accel (ниже — можно, выше — срежется до потолка).
  • Значит слайсер может задавать РАЗНОЕ ускорение под фичи — но не выше потолка.

Увидеть оба значения одновременно:

curl -s "http://<printer_ip>:7125/printer/objects/query?configfile&toolhead" | python3 -c "
import sys,json;r=json.load(sys.stdin)['result']['status']
print('потолок (config):', r['configfile']['settings']['printer']['max_accel'])
print('живое (toolhead) :', r['toolhead']['max_accel'])"

Во время печати «живое» = то, что поставил g-код текущей фичи (например 1500), «потолок» =
конфиг (например 7000). Расхождение — норма, это и есть работа per-feature. Ноль движения на
конкретном ускорении не значит «слайсер не управляет» — просто эта фича быстрее печатается.

Две РАЗНЫЕ группы настроек в слайсере (их путают)

  1. «Лимиты машины» (machine_max_acceleration_*, machine_max_speed_*). При Klipper-флейворе
    с выключенным emit_machine_limits_to_gcode они в g-код не пишутся (M201/M203 нет).
    Влияют только на внутреннюю оценку времени слайсера (см.
    klipper_estimator). Гоча:
    machine_max_speed_* при этом всё равно клампит фидрейт на этапе слайсинга (например
    заниженный machine_max_speed_y под тяжёлый стол реально режет Y-движения).
  2. «Ускорения печати» (default acceleration, outer/inner wall, travel, first layer).
    Вот ЭТИ слайсер эмитит как M204 S<val>, и Klipper их исполняет (зажимая по max_accel).
    Именно они управляют реальной печатью.

Проверить, что реально в g-коде:

grep -c "M204" file.gcode          # per-feature ускорения — должны быть
grep -cE "M201|M203" file.gcode    # лимиты машины — на Klipper-флейворе обычно 0

Когда «одно число из прошивки» — правда

Модель «всё на max_accel» верна, только если в профиле ускорения печати не заданы (стоят 0)
M204 не эмитится → Klipper крутит всё на max_accel. Просто, но грубо (тонкая внешняя
стенка и заполнение на одном ускорении). Современные профили дают разное ускорение под фичи, а
max_accel работает предохранителем-потолком.

Смежные параметры

  • square_corner_velocity (SCV) — скорость прохождения прямого угла, не клампится по
    max_accel. Гоча: если слайсер эмитит рывок (machine_max_jerk_*), он может затирать SCV
    из printer.cfg — рывок из профиля надо согласовать с желаемым SCV (иначе твои 5 в конфиге
    молча заменяются на 9 из профиля).
  • minimum_cruise_ratio (заменил устаревший max_accel_to_decel ~2023) — доля хода,
    которую нужно пройти на крейсерской скорости; ограничивает бесконечные разгон-торможения на
    мелких сегментах. Дефолт 0.5.

Механика прошивки — Klipper, влияние на скорость печати —
Ускорение печати, общий разбор параметров —
Настройка параметров печати 3д модели.

Источники

  • Klipper docs: [printer] max_accel, SET_VELOCITY_LIMIT, M204, square_corner_velocity, minimum_cruise_ratio
  • OrcaSlicer wiki: Motion ability, emit_machine_limits_to_gcode