Files
grotti/docs/internal/Makros-Kobra.md

9.7 KiB
Raw Permalink Blame History

Makros und G-code: Kobra S1 und Kobra 3

Stand 19.10.2026. Interne Referenz — nicht unter /doku. Messwerte und Bettnetz-Story: D:\Projekte\3DP\FDM\Wissen\Drucker\ (Kobra S1.md, Kobra 3.md). Stack: Anycubic-Stack.

Quellen: printer/gcode/help (11.10. auf den Maschinen), GoKlipper/extras_ace.go, Rinkhals-RE GOKLIPPER_ACE_GCODE_COMMANDS.md, Grotti-Policy.


Nicht tun

Nicht Warum Stattdessen
FIRMWARE_RESTART / RESTART gklib Deadlock bis Power-Cycle (Rinkhals #32) Display-Reboot oder Strom; hängenden Job: Fehler löschen (SDCARD_RESET_FILE)
LEVIQ / LEVIQ2 aus Mainsail Heizung + volle Nivellierfolge, fährt unerwartet Am Display Auto-Level; Einzelschritte nur bewusst
SAVE_CONFIG aus Mainsail schreibt u. a. Z-Offset mit Dauerhaft nur gezielt / nach Display-Nivellieren
Nur Moonraker-Cancel Anycubic-Task bleibt → Start-Code 10101 Cancel + MQTT-stop (Grotti abbrechen)
Community-ACE_SET_SLOT / manuelles G9111 als Grotti-Pfad Grotti mappt über .acm + MQTT Map in der App; Slice-G9111 im Start-G-code belassen
minimum_cruise_ratio auf 0 (S1) Moonraker hängt auf dieser Firmware bei 0,05 belassen
G28 Y mit Teilen auf dem Bett (K3) Sensorless-Home nach vorn über die Teile Bett leeren; Abräumen ohne G28 Z
Blind FEED / FEED_FILAMENT ohne Unwind Blockade bis Neustart (RE-Doku) Unload/Unwind-Sequenz einhalten
SET_KINEMATIC_POSITION mit erfundener Z nach Stepper-aus Portal sackt → Null daneben, Probe „No trigger“ oder Crash echte letzte XYZ; oder Bett leer + G28
Freie G-code-Konsole in Grotti für Experimente Policy nur bekannte, bestätigte Scripts
Abräumen-Makro in printer.cfg pflegen Rinkhals schreibt Config neu Grotti schickt Scripts per Moonraker

Vanilla-Klipper-Alltag (beide Typen)

Befehl → was er macht. Anycubic-Hinweis nur wo nötig.

Homes und Bewegung

Befehl Funktion
G28 Homed die genannten Achsen (ohne Argument: alle). K3: Y-Home fährt nach vorn — Bett muss leer sein.
G0 / G1 Lineare Bewegung / Extrusion. Absolute/relative Modi wie üblich (G90/G91, M82/M83).
M400 Wartet, bis alle Moves fertig sind.
SET_VELOCITY_LIMIT Limits für Speed/Accel zur Laufzeit.
SET_KINEMATIC_POSITION Setzt die interne Position ohne zu fahren. Nach M84/Leerlauf riskant — siehe „Nicht tun“.
SET_IDLE_TIMEOUT Idle-Zeit bis Stepper aus. Abräumen hält Idle bewusst länger.
M84 / M18 Stepper aus → Achsen unhomed. Slice-Ende K3 macht das oft; Abräumen entfernt es beim Upload.

Heizen

Befehl Funktion
M104 / M109 Düse Soll / warten bis erreicht.
M140 / M190 Bett Soll / warten.
TURN_OFF_HEATERS Düse und Bett aus.
PID_CALIBRATE PID für Extruder oder Bett kalibrieren. Danach oft SAVE_CONFIG — auf diesen Maschinen vorsichtig.
M106 / M107 Teilkühlung an / aus.

Drucklauf

Befehl Funktion
PAUSE / RESUME / CANCEL_PRINT Rinkhals-Makros um Pause/Weiter/Abbruch. Moonraker-Cancel allein räumt den Anycubic-Task nicht.
SDCARD_RESET_FILE Löscht hängenden virtual-sdcard-/Druckstatus („Fehler löschen“ in Grotti).
PRINT_STATS Status des laufenden/letzten Jobs (Objekt auch über Moonraker).

Bettnetz und Probe

Befehl Funktion
BED_MESH_CALIBRATE Tastet das Netz und schaltet es aktiv.
BED_MESH_OUTPUT Gibt die Punkte aus, ohne zu fahren.
BED_MESH_MAP Schreibt das interpolierte Netz in die Konsole.
BED_MESH_CLEAR Schaltet die Korrektur aus.
BED_MESH_OFFSET Verschiebt das Netz in X/Y.
BED_MESH_PROFILE LOAD / SAVE / REMOVE für Profile. Dauerhaft erst mit SAVE_CONFIG.
PROBE Ein Tastpunkt an der aktuellen Position.
PROBE_ACCURACY Mehrfach tasten, Streuung ausgeben.
PROBE_CALIBRATE Sensor kalibrieren (nicht der Z-Regler am Display).
Z_OFFSET_APPLY_PROBE Laufenden G-code-Offset in probe.z_offset schreiben.
SET_GCODE_OFFSET Offset nur für den aktuellen Auftrag.
SAVE_CONFIG Schreibt Config dauerhaft — nicht blind aus Mainsail.

Diagnose

Befehl Funktion
QUERY_ENDSTOPS / M119 Endstop-Zustände.
GET_POSITION / M114 Toolhead-/Stepper-Position.
QUERY_ADC ADC-Werte (z. B. Thermistoren).
DUMP_TMC TMC-Register (Stepper nennen).

Slice-Start Anycubic

Befehl Funktion
G9111 Vorheizen aus dem Slicer: typisch bedTemp=… und extruderTemp=…. Steht im Maschinen-Start-G-code. Grotti ersetzt das nicht und startet auch nicht darüber.

ACE (gemeinsam)

Zwei Namenswelten:

  1. Open-Source GoKlipper extras_ace.go (BunnyACE-Stil): ACE_CHANGE_TOOL, ACE_FEED, ACE_RETRACT, ACE_SET_SLOT, ACE_QUERY_SLOTS, ACE_START_DRYING / ACE_STOP_DRYING, Feed-Assist, Endless Spool, …
  2. Ausgeliefertes Binary (Rinkhals-RE): u. a. FEED_FILAMENT, UNWIND_FILAMENT, UNWIND_ALL_FILAMENT, SET_CURRENT_FILAMENT, ACE_INFO, ACE_STATUS, Cutter-/Pipe-Befehle.

Grotti nutzt keine Community-Makros ACE_SET_SLOT / manuelles Tool-Mapping per G-code. Zuordnung: Sidecar .acm + MQTT ams_settings (Senden-Queue, ACE-Live). Slots anzeigen: Moonraker-Objekt mmu (Rinkhals). Trocknen: Moonraker POST /server/filament_hub/start_drying (nicht zwingend der G-code).

Befehl (Auswahl) Funktion
ACE_CHANGE_TOOL / Tool-Macros T0… Werkzeugwechsel über ACE.
ACE_FEED / FEED_FILAMENT Filament vom Gate zur Düse laden. Vorher unloaden.
ACE_RETRACT / UNWIND_FILAMENT Zurückziehen / parkieren.
ACE_SET_SLOT Inventar Slot setzen — Grotti meidet das.
ACE_START_DRYING / ACE_STOP_DRYING Trockner; alternativ filament_hub-API.
ACE_ENABLE_ENDLESS_SPOOL / …_DISABLE / …_STATUS Endless Spool.

Details und Parameter: Rinkhals docs/GOKLIPPER_ACE_GCODE_COMMANDS.md (lokal unter D:\Projekte\_ref\Rinkhals\).


Kobra S1 — Anycubic-Makros

Config-Sektion heißt [leviQ3], die Befehle auf dem Gerät heißen LEVIQ2. Stecken in GoKlipper. Hilfe gelesen 11.10. über printer/gcode/help.

LeviQ2

Befehl Funktion
LEVIQ2 Ganze Nivellierfolge: heizen, wischen, antasten. Nicht aus Mainsail. SYNC=enable startet danach neu.
LEVIQ2_PREHEATING Vorheizen: Bett 55 °C, Düse 170 °C, dann HOME_XY. S = Düsentemp, E = Temp nach dem Wischen.
LEVIQ2_WIPING Wischen: Netz löschen, Düse auf 140 °C, intern G9112, dann G28 Z.
LEVIQ2_PROBE Antasten: BED_MESH_CALIBRATE, Lüfter/Bett aus, Z auf 20 mm, HOME_XY, Düse aus.
LEVIQ_SET_ZERO Z-Basis und Home-Position auf 0.
LEVIQ2_AUTO_ZOFFSET Löscht laut Hilfe den Koeffizienten K.
LEVIQ2_AUTO_ZOFFSET_ON_OFF Schaltet automatischen Z-Offset.
LEVIQ2_TEMP_OFFSET Temperaturausgleich (expansion_factor / zoffset_base in der Config). Fehlt im veröffentlichten Quelltext.
HOME_XY Nur X/Y homen (von LeviQ-Schritten genutzt).

Netz: 5×5, X/Y 5–245 mm. Details: Wissen Kobra S1.md.

Wipe (Pad hinten)

Befehl Funktion
WIPE_ENTER Anfahrt Pad (Y 250 → X 81, Y 273).
WIPE_NOZZLE Wischbahn; wiederholt die Strecke X 96↔81.
WIPE_STOP Kurze Stopp-Bahnen, dann X 75.
WIPE_EXIT Weg vom Pad (X 83, Y 250).
TO_THROW_POSITION Position zum Abwerfen (~X 47, Y 276).
MOVE_TO_SWEEP_POSITION Wisch-/Kehrposition (gleiche Gegend).
MOVE_TO_IMPACT_POSITION Weg vom Pad nach vorn rechts (Y 25, X 261).
PRINT_LINE Purge-Linie bei Y 251, Z 0,28 bis X 125.

Kobra 3 — Anycubic-Makros

Befehle gelesen 11.10. auf da26 (92ee/6e41 gleiche printer.generated.cfg). Im veröffentlichten Quelltext heißen Teile noch LEVIQ3_* / LEVIQ2_PROBE — auf den drei Druckern gelten die Namen unten.

LeviQ

Befehl Funktion
LEVIQ Ganze Folge inkl. Z-Offset-Rechnung. Nicht aus Mainsail. SYNC=enable startet danach neu.
LEVIQ_PREHEATING Z-Basis 0, Bett 60 °C, Düse 170 °C, HOME_XY, auf Düse warten. S / E wie bei S1.
LEVIQ_WIPING Netz löschen, Düse 140 °C, G9112, G28 Z.
LEVIQ_PROBE BED_MESH_CALIBRATE, Lüfter/Bett aus, Z auf 30 mm, HOME_XY, Düse aus.
LEVIQ_SET_ZERO Z-Basis und Home auf 0.
LEVIQ_AUTO_ZOFFSET Löscht Koeffizient K (Hilfe).
LEVIQ_AUTO_ZOFFSET_ON_OFF Automatischen Z-Offset schalten (oft an).
LEVIQ_TEMP_OFFSET Temperaturausgleich (Hilfezeile „LEVIQ3 TEMP OFFSET“). Fehlt im Open-Source-Code.
HOME_XY Nur X/Y homen.

Netz: 5×5, X 15–240, Y 15–235 mm. Details: Wissen Kobra 3.md.

Wipe

Befehl Funktion
WIPE_NOZZLE Dreimal SINGLE_WIPE_NOZZLE (Y 260/259, X 46–90, Z −0,8↔1, Lüfter an).
SINGLE_WIPE_NOZZLE Eine einzelne Wischbahn.
MOVE_HEAT_POS Z 15, dann X 278 (Heiz-/Parknahe Position).
UNDERLINE Purge-Linie Z 0,28 bis X 180, ~40 mm Extrusion.
MOVE_END_POS Ende/Park X 5, Y 242.

Wägezelle

Befehl Funktion
CS1237_DUMP Debug-Ausgabe zum CS1237 (Z-Sensor / Kraft). Moonraker liefert keine laufende Gramm-Anzeige; probe.last_z_result fehlt.

Siehe auch