Поетапний запуск¶
Поетапний запуск — це налаштування ферми, а не опція окремої партії друку. Він обмежує, скільки принтерів можуть гріти столи одночасно, щоб зміна плит по всьому цеху не посадила всі столи на контур водночас. Ліміт також можна розбити по групах — окремий ліміт на електричну фазу, на приміщення, або на пару «фаза + приміщення».
Навіщо stagger?¶
Нагрівач стола — найбільше одиничне навантаження принтера, і споживає він його саме на старті друку. Очистіть десять плит за один обхід — і черга радо стартоне всі десять у межах одного тіка планувальника. Це рівно той момент, коли вибиває автомат.
Stagger відповідає на одне питання: скільки столів має право грітися просто зараз? Усе інше — підтвердження очищення плити, сушіння, підбір філаменту — лишається там, де було.
Як це працює¶
Кожен старт друку займає слот. Поки зайнято налаштовану кількість слотів, наступний друк чекає.
Слот звільняється за одним із двох правил, залежно від Чекати нагріву столу:
- Увімкнено (дефолт) — слот тримається, доки стіл того принтера не досягне цільової температури (в межах ±1 °C), і потім ще на інтервал зверху.
- Вимкнено — слот звільняється одразу після старту друку, а інтервал відлічується від цього моменту.
Слоти живуть у пам'яті. Рестарт бекенду їх забуває; за кілька секунд після переприєднання MQTT BamDude сканує ферму і перереєструє слот для кожного принтера, якого застав за активним нагрівом — щоб рестарт посеред нагріву не роздав безкоштовних перепусток. Друк, запущений з екрана самого принтера, теж займає слот: BamDude реєструє його, коли бачить початок друку зі столом, який ще не догрівся. Принтер, що вже на температурі, пропускається — його сплеск нагріву вже позаду.
Де це живе¶
Налаштування → Друк → Черги та планування → Поетапний запуск
| Параметр | Дефолт | Що робить |
|---|---|---|
| Увімкнути поетапний запуск | Вимкнено | Вмикає ліміт. Поки вимкнено, решта прихована. |
| Одночасних запусків | 2 | Скільки принтерів можуть грітися водночас. Перейменовується на Одночасних запусків на групу, щойно увімкнено розбиття. |
| Інтервал (хвилини) | 5 | Скільки чекати після звільнення слота, перш ніж дозволити наступний старт. |
| Чекати нагріву столу | Увімкнено | Слот звільняється, коли стіл досяг цілі (±1 °C). Вимкнено → звільняється одразу після старту. |
| Строгий режим для прямого друку | Вимкнено | Див. Прямий друк і строгий режим. |
| Розбити за тегами принтерів | Вимкнено | Кожен обраний тег стає окремим лімітом. |
| Розбити за розташуванням | Вимкнено | Кожне обране розташування стає окремим лімітом. |
На сторінці черги¶
Банер stagger висить над чергою, доки поетапний запуск увімкнено. Він показує зайнятість (Stagger: 2/2 слоти зайнято, або по одному сегменту назва: зайнято/ліміт на групу) і наступний вільний через з відліком. У тултипі — кожен принтер, що тримає слот, його стан (нагрів столу чи відновлення сітки — очікування інтервалу) і скільки лишилось до звільнення.
Елемент черги, притриманий лімітом, показує причину прямо в рядку:
Елемент пропускається на цьому тіку, а не переноситься: на нього нічого не проставляється, і він піде в диспатч на першому ж тіку, який знайде йому слот.
Інтервал на конкретний принтер¶
У формі принтера є Інтервал поетапного запуску (хвилини), де 0 = системне значення. Постав його на повільній машині, щоб її слот тримався довше за загальнофермовий.
Інтервал — це пауза на відновлення, а не час нагріву
З увімкненим Чекати нагріву столу інтервал починає відлік після того, як стіл догрівся — сам підйом уже покритий очікуванням стола. Двох-п'яти хвилин зазвичай достатньо.
Групи: фази і приміщення¶
Ферма на одному 16-амперному контурі потребує одного числа. Ферма, розкидана на три фази, потребує трьох — і «двоє одночасно» на всю ферму або недовантажує дві фази, або перевантажує одну. Розбиття перетворює єдиний ліміт на окремий ліміт для кожної групи.
Осей дві, і їх можна вмикати разом:
| Вісь | Як принтер потрапляє в групу | Де називають групу |
|---|---|---|
| Розбити за тегами принтерів | Він несе цей тег | Налаштування → Друк → Теги (тег може мати колір з палітри там же — його носять банер і картки принтерів), обирається у формі принтера |
| Розбити за розташуванням | Власне розташування або найближче обране місце вище по дереву локацій | Налаштування → Друк → Розташування, обирається у формі принтера |
Увімкни вісь і познач, які теги (чи які розташування) є групами — вісь, увімкнена без жодного вибору, нічого не змінює. Коли увімкнені обидві осі, кожна пара тег × розташування стає окремим лімітом.
Одночасних запусків тоді означає на групу, і поле саме перейменовується, щоб це сказати. Дві фази з лімітом 2 — це до чотирьох столів на фермі, по два на кожній фазі, і ніколи три на одній.
Група може мати власний ліміт. Біля кожного вибраного тегу чи розташування з'являється маленьке числове поле; значення в ньому обмежує лише цю групу, порожнє поле означає число для всієї ферми вище. Коли ввімкнені обидві осі, ліміт групи — найменше з перевизначення її тегу, перевизначення її розташування і глобального значення: цех, обмежений одиницею, не запустить два столи, якою щедрою не була б його фаза. Зняття вибору групи стирає її перевизначення. Банер показує для кожної групи власне зайнято/ліміт.
Банер отримує по сегменту на групу, а елемент, що чекає, називає групу, на яку чекає:
Коли увімкнені обидві осі, назва групи склеюється через середню крапку — Phase 1 · Workshop 2.
Принтер без тега рахується в кожній групі
Принтер, що не несе жодного з обраних тегів (або не має жодного обраного розташування над собою), — це wildcard: BamDude не знає, на якій він фазі, тому вважає, що він може бути на будь-якій. Він входить у кожну групу і стартує лише коли місце є в усіх — а поки гріється, займає слот у кожній групі одразу.
Практичний наслідок: поки принтери не потеговані, нічого не змінюється. Увімкни розбиття на нетегованій фермі — і ліміт стане суворішим, а не розумнішим. Спершу познач кожен принтер його фазою, і лише потім вмикай розбиття.
У банері такий принтер позначається як без групи, рахується всюди.
Тег або розташування, яке зараз обране як група stagger, не можна видалити — API відповідає 409 з текстом «Цей тег є групою поетапного запуску. Спершу зніміть його в „Черги та планування“.» Видалення тихо перекроїло б, які принтери ділять ліміт, а кнопка видалення не має робити такого мовчки. Спершу зніми вибір у налаштуваннях, потім видаляй.
Прямий друк і строгий режим¶
Print Now і Передрукувати проходять той самий гейт, що й черга — ліміт стосується щитка, а щитку байдуже, якою кнопкою запустили друк.
| Строгий режим для прямого друку | Поведінка |
|---|---|
| Вимкнено (дефолт) | Прямий друк чекає на вільний слот у своїй групі — точно як черговий, — і вже потім вантажить файл і стартує. |
| Увімкнено | Прямому друку відмовляють із повідомленням, поки в групі принтера немає вільного слота. Нічого не вивантажується. |
Вимкнено — правильний дефолт для більшості ферм: ти натиснув кнопку, ти хочеш цей друк, і почекати пару хвилин — не збій. Вмикай строгий режим, коли людина стоїть біля машини і краще почує «зараз не можна», ніж дивитиметься на крутилку, — або коли оператор, що жме Print Now поспіль, інакше набив би чергу відкладених стартів.
Stagger vs паралельний dispatch¶
Stagger гейтить старт друку. Він не серіалізує диспатчер.
Диспатчер BamDude працює паралельно по принтерах з c485db1 (mid-0.4.1 відкотив короткочасний "always-serialised" gate). Серіалізованим лишається лише міллісекундне INSERT INTO print_archives — за startup-lock-ом, щоб SQLite не падав на конкурентних writer-ах. FTP-аплоад, MQTT-команда start_print і swap-mode-макроси біжать конкурентно. Повний розбір — у Print queue → Dispatch behaviour.
Що це означає:
- Stagger — це те, що розтягує bed-heating-навантаження в часі. Без нього три queue-items на трьох idle-принтерах стартонуть практично одночасно, і три столи гріються разом.
- Stagger не потрібен для уникнення SQLite-гонок — startup-lock це закриває незалежно від налаштування stagger.
- Stagger свідомо коштує throughput. Слоти серіалізують старти й нічого більше: друк, що вже йде, ніколи не сповільнюється через інший принтер, який чекає слот.
Використовуйте stagger, коли пікове споживання під час нагріву — це обмеження. Пропустіть, якщо контур тримає одночасний нагрів столів.
Поради¶
Спершу теги, потім розбиття
Познач кожен принтер його фазою, перш ніж вмикати Розбити за тегами принтерів — принтер без тега тримає слот на всіх фазах одразу, тож напівпотегована ферма staggerить жорсткіше за нетеговану.
Управління електроживленням
Поєднуйте поетапний запуск з автовимкненням розумних розеток для повного управління енергією: stagger запобігає піковому навантаженню на старті, автовимкнення знімає навантаження після завершення.
Налаштування інтервалу
Встановіть інтервал рівний часу, потрібному принтеру для досягнення температури стола (зазвичай 2-5 хвилин). Це гарантує, що кожна група завершить нагрівання до запуску наступної.
Індивідуальні інтервали
Для змішаних ферм із різними моделями принтерів використовуйте довший інтервал, щоб врахувати найповільніший нагрівач — або поставте Інтервал поетапного запуску (хвилини) на тому одному принтері, не чіпаючи загальний дефолт.