Ускорение в 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. Ноль движения на
конкретном ускорении не значит «слайсер не управляет» — просто эта фича быстрее печатается.
Две РАЗНЫЕ группы настроек в слайсере (их путают)
- «Лимиты машины» (
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-движения). - «Ускорения печати» (
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