GCode Dokumentation
Ich habe mich bemüht, nach bestem Wissen und Gewissen, die GCode-Befehle für den RF1000 ins Deutsche zu übersetzen.
Alle Angaben ohne Gewähr! Der Stand der Befehle/Dokumentation entspricht der Firmware-Version 0.91.49 vom RF1000 (datiert 20141222) Ich konnte einige Befehle nicht prüfen (keinen Fräser). Andere sind schlecht oder gar nicht dokumentiert und ich konnte die Syntax und/oder den Zweck nicht eruieren.
Ich werde diese Datei nicht warten bzw. pflegen. Korrekturen/Ergänzungen werden jedoch gerne entgegengenommen. Vielleicht kann ein Anderer diese einarbeiten.
Diese G-Codes wurden aus den Firmware-Dateien vom RF1000 erstellt (v. 0.91.49, datiert 20141222) Implementierte Codes im RF1k: (####### aus der Datei "Repetier.ino" #######) Deutsche Übersetzung durch mjh11 - Alle Angaben ohne Gewähr!! - G0 -> siehe G1 - G1 [X Y Z E F] - Koordinierte Bewegung entlang einer oder mehrerer Achsen (X Y Z E) F ist dabei die geforderte Verfahrgeschwindigkeit - G2 [X Y I J E F] - Kreisbogen im Uhrzeigersinn (Dabei gilt: X= die Endpos. auf der X Achse, Y= die Endposi. auf der Y Achse Innn= X-Koordinate des Kreismittelpunkts, Jnnn= Y-Koordinate des Kreismittelpunkts, E= Extrusionslänge entlang des Kreisbogens, in mm und F= Verfahrgeschwindigkeit, wobei E und F optional sind - {allerdings, ein Kreisbogen zu fahren, OHNE Extrusion, ist sinnlos}) - G3 [X Y I J E F] - Kreisbogen gegen den Uhrzeigersinn - siehe G2 Hinweis: G2 und G3 müssen von der Slicer-Software unterstützt werden. - G4 - Pause S<Sekunden> or P<Millisekunden> - G20 - Einheiten der Bewegungsbefehle (G0-G2) sind in Zoll. - G21 - Einheiten der Bewegungsbefehle (G0-G2) sind in Millimeter. - G28 - Fahre alle Achsen (oder die bezeichnete(n)) zum Ursprung, z.B. "G28 Y0 Z0" fährt nur in Y und Z auf "0". !! G29 bis G32 werden scheinbar nicht unterstützt. Wozu denn auch? RF1k hat Z-Kompensation! X- G29 S<0..2> - Messe Z-Höhe an den 3 vor definierten Punkten. S = 1 messe durchschn. zHöhe, S = 2 speichere durchschn. zHöhe X- G30 P<0..3> - Messe Z-Höhe an der augenblicklichen Pos.. P = 1 erste Messung, P = 2 letzte Messung P = 0 oder 3 : erste und letzte Messung X- G31 - Speichere Wert des Z-Höhentasters X- G32 S<0..2> P<0..1> - Automatische Bettausrichtung. S = 1 messe zHöhe, S = 2 messe und speichere neue zHöhe Entspricht in etwa "M3010" beim RF1k !! G29 bis G32 werden scheinbar nicht unterstützt. Wozu denn auch? RF1k hat Z-Kompensation! - G90 - Interpretiere Koordinaten als absolut - G91 - Interpretiere Koordinaten als relativ - G92 [X<Wert> Y<Wert> Z<Wert> E<Wert>] - Setze die angegebene Koordinate(n) auf den vorgegebenen Wert Wird z.B. für die "E"-Koordinate häufig verwendet, so: "G92 E0" !! G131 und G132 haben vermutlich was mit Schnellwechselextruder, oder Ähnliches, zu tun, wo man die Position der Extruderdüse nach einem Wechsel neu kalibrieren muss. - G131 - set extruder offset position to 0 - needed for calibration with G132 - G132 - calibrate endstop positions. Call this, after calling G131 and after centering the extruder holder. RepRap M Codes - Standard M-Befehle - M104 <Snnn> - Setze Extrudertemperatur. Hier wird nicht gewartet. Die nächsten Befehle werden unmittelbar danach abgearbeitet - M105 - Gebe Extrudertemperatur aus (wird scheinbar auch nicht unterstützt - man hat ja das Display) - M106 <Sxxx> - Schalte Lüfter ein. Parameter S von 0-255 zulässig (255=100%) - M107 - Schalte Lüfter aus (gleich wie "M106 S0") - M109 <Snnn> - Setze Extrudertemperatur. Hier WIRD gewartet. Die nächsten Befehle werden erst NACH erreichen der Temperatur abgearbeitet - M111 S<0....9> - Setze Debug Level (nicht dokumentiert in der RF1k Firmware?) - M114 - Zeige Koordinaten der augenblicklichen Position (berücksichtigt G92!!) Custom M Codes - Spezielle M-befehle - M20 - Liste Inhalt der SD Karte - M21 - SD Karte initialisieren (mounten - ist nicht dasselbe wie formatieren) - M23 <Dateiname> - Wähle Datei auf der SD Karte aus ("M23 {\Pfad\}Dateiname.gcode") - M24 - Starte Druck von der SD-Karte, oder fahre mit Druck wieder fort - M25 - Druck von der SD Karte pausieren - M26 <Snnnnn> - Setze Zeiger-Position innerhalb der gewählten SD Datei in Bytes Beispiel: "M26 S12345" - M27 - Melde Status des Drucks von der SD Karte - M28 <Dateiname> - Schreibe Datei auf SD Karte ("M28 {\Pfad\}Dateiname.gcode") - M29 - Beende Schreibvorgang auf der SD Karte - M30 <Dateiname> - Lösche Datei von der SD Karte - M32 <Ordnername> - Erstelle Ordner/Unterordner auf der SD Karte - M42 P<Pinnummer> S<Wert:0-255> - Ändere Output des Pins P auf den Wert S. Funktioniert nur auf gewissen Pins. - M80 - Netzteil einschalten (NICHT für RF1k!) - M81 - Netzteil ausschalten (NICHT für RF1k!) - M82 - Interpretiere Werte für den Extruder (=E-Werte) als absolute Werte (Standardeinstellung) - M83 - Interpretiere Werte für den Extruder als relative Werte, auch wenn im absoluten Koordinaten-Modus (G90) - M84 - Schrittmotore bis zur nächsten Bewegung ausschalten (stromlos setzen). Mittels S<Sekunden> kann ein Zeitfenster definiert werden - findet innerhalb dieser Zeit keine Bewegung statt, schalten die Motore ab. Neuerliche Eingabe mit S0 deaktiviert das Zeitfenster wieder. - M85 <Snnn> - Setzt Zeitfenster, in Sekunden, ab dem die Motore abgeschaltet werden. Neuerliche Eingabe mit S0 deaktiviert das Zeitfenster wieder (S0 ist Standardvorgabe). - M92 [X<Wert> Y<Wert> Z<Wert> E<Wert>] - Stelle Schritte pro mm für die angegebene(n) Achse ein - Verwendung sollte nicht notwendig sein (wirklich nur für Sonderfälle, zum Beispiel bei einer vorhandenen GCode-Datei, die skaliert werden muss.) - M99 S<Wartezeit> X0 Y0 Z0 - Schalte angegebene(n) Motor(en) für S-Sekunden ab, Standardwert:10 - M104 S<temp> T<extruder> P1 F1 - Setze Extrudertemperatur, ohne Warten. P1 = Warte bis alle vorhergehenden Bewegungen abgeschlossen sind, F1 = piepse wenn die vorgegebene Temperatur erstmals erreicht wurde. Single-Extruder = T0 (Bett = T1 !!) - M105 X0 - Melde Temperaturen. X0 = zeige auch die nicht-umgerechneten digitalen Werte. Scheinbar nicht durch RF1k unterstützt - M112 - Not-Abschaltung - M115 - Schreibe Firmware-String. Zeigt Firmware-Infos an. - M116 - Warte bis alle angegebenen Temperaturen innerhalb von +/- 1° sind - M117 <Nachricht> - Schreibe eine (kurze) Nachricht ins Display - M119 - Melde Endschalterstatus (nicht-betätigter Schalter wird als "L" gemeldet) - M140 S<temp> F1 - Setze Betttemperatur (OHNE Warten), mit F1 piepst es beim ersten Erreichen der Temperatur - M190 S<temp> - Setze Betttemperatur (hier WIRD aber gewartet) - M201 [Xnn Ynn Znn] - Max. Beschleunigungswerte in Einheiten/s² für Druckbewegungen Beispiel: "M201 X1000 Y1000" - M202 [Xnn Ynn Znn] - Max. Beschleunigungswerte in Einheiten/s² für Leerfahrten ohne Extrusion - M203 S<temp> - Temperaturüberwachung einschalten - (Konnte beim RF1k keine Wirkung feststellen) - M204 - Setze PID Parameter X => Kp Y => Ki Z => Kd S<Extruder> Standardmäßig wird der aktive Extruder angesprochen Mit SingelExtruder: 0 = Extruder, 1 = Bett Zum Beispiel "M204 X3752 Y1000 Z3518 S0" --> OHNE GEWÄHR - M205 - EEPROM Werte ausgeben (Hinweis: hierfür muss der EEPROM Support in der Configuration.h eingeschalten werden) - M206 T[type] P[pos] [Sint(long)] [Xfloat] - Einen Wert ins EEPROM schreiben Dazu muss man wissen welche Werte wo abgespeichert sind. EEPROM Support in der Firmware vermutlich ebenfalls nötig. Z.B. "M206 T3 P31 X200.00" stellt die Geschwindigkeit, mit der in Y gegen 0 gefahren wird ('ge-homed' wird), auf 200mm/s - M207 - X<XY 'Ruckeln'> Z<Z 'Ruckeln'> E<Extruder-'Ruckeln'> - Das 'Ruckeln' (jerk) entsteht durch sehr rasche, abwechselnde Bewegungen, die den Drucker aufschaukeln können. Mit Hilfe dieses Befehls schränkt man die Geschwidigkeit der raschen Abfolge ein. Die neuen, angegebenen Werte sind temporär, sie werden NICHT im EEPROM gespeichert. Der RF1k, mit seiner soliden Bauweise, ist hier nicht sehr anfällig. Beim RF1k ist der voreingestellte Wert für XY 10mm/s, für Z 20mm/s. - M220 S<Prozent> - Verfahrgeschwindigkeitsmultiplikator, bei "M220 S50" gehts nur mehr halb so schnell voran - M221 S<Prozent> - Multiplikator für die Extrusionsmenge - M231 S<OPS_MODUS> X<Min_Länge> Y<Retract> Z<Hysterese> F<RetractMove> - Stellt das Standard-Verhalten für Retract-Vorgänge ein. (Sollte beim RF1k nicht notwendig sein) - M232 - Lese max. 'Vorlaufdruck'-Wert aus und setze es wieder auf 0 (der 'Vorlaufdruck' ist ähnlich wie die 'Vorzündung' beim Otto-Motor. Da baut der Extruder vorzeitig Druck auf, damit der Druck rechtzeitig vorhanden ist. RF1k hat standardmässig 0 eingestellt - M233 X<VorlaufwertK> Y<VorlaufwertL> - Stellt temporäre Werte zur Vorlaufdrucksteuerung (siehe M232) - M251 - Messe Anzahl der Z-Schritte (NUR FÜR DELTA-DRUCKER). S0 - Reset, S1 - Print, S2 - Store to Z length (also EEPROM if enabled) - M280 S<Modus> Modus 0 = Aus, 1 = Ein --> Zweck UNBEKANNT ("Set ditto printing mode. mode: 0 = off, 1 = on") - M300 S<Frequenz> P<Dauer> - Gibt einen Piepston aus. 'Dauer' wird in Millisekunden angegeben. "M300 S440 P500" Gibt den Kammerton 'A' für eine halbe Sekunde aus. - M303 P<Extruder/Bett> S<Temperatur> X0 - Fährt ein automatisches Programm ab, wo die PID-Werte für den Extruder oder das Bett, bei der angegebenen Temperatur, ermittelt werden. Mit SingelExtruder: P0 = Extruder, P1 = Bett. Mit X0 wird der Wert im EEPROM gespeichert (benötigt evtl. EEPROM Support in der Configuration.h). - M320 - Aktiviere automatische Bettausrichtung (wird vermutlich beim RF1k nicht funktionieren, stattdessen "M3001" verwenden) - - M321 - Automatische Bettausrichtung ausschalten (wird vermutlich beim RF1k nicht funktionieren, stattdessen "M3000" verwenden) - M322 - Matrix für Bettausrichten löschen/resetten (wird vermutlich beim RF1k nicht funktionieren, stattdessen "M3011" verwenden) - M340 P<servoId> S<PulsInUS> - Steuert ein zusätzliches Servo (bis zu 4 Stück) servoID = 0..3, Servos werden per Puls angesteuert, mit Werten von 500 bis 2500, wobei 1500ms als Wert der Mittelstellung gilt. Ein Pulswert von 0 schaltet das Servo aus. - M350 S<mstepsAll> X<mstepsX> Y<mstepsY> Z<mstepsZ> E<mstepsE0> P<mstespE1> - Mikro-schritte einstellen (gilt nur für RAMBO Hauptplatine) - M400 - Warte bis alle gepufferten Befehle abgearbeitet wurden - M401 - Speichere die augenblicklichen X, Y und Z Koordinaten - M402 [X Y Z] - Gehe zur gespeicherten Position. Falls eine oder mehrere Achsen angegeben wurden, werden nur diese Koordinaten verwendet. - M500 - Speichere alle EEPROM-relevanten Werte ins EEPROM - M501 - Lade alle EEPROM-Werte (evtl. geänderte Werte werden wieder auf EEPROM- Werte zurückgesetzt) - M908 - P<Addresse> S<Wert> - Strom für Schrittmotor einstellen (gilt nur für RAMBO Hauptplatine) ####################################################################### /* Spezielle M Codes nur für RF1000 ### Aus Datei: "RF1000.h" ### ####################################################################### - M3000 - Z-Kompensation ausschalten - M3001 - Z-Kompensation einschalten - M3002 - Unterste Schrittgrenze setzen (falls weniger Schritte notwendig wären, werden diese einfach nicht ausgeführt) Ist das richtig? - M3003 - Maximale Schrittgrenze setzen (falls mehr Schritte notwendig wären, werden trotzdem nur so viele gemacht) Ist das richtig? - M3004 S<Mikroschritte> - Manueller Z-Offset (bis v.0.91.49, danach ersetzt durch M3006) - M3005 - Spezielle Debug-Outputs einschalten - M3006 S<mue-Meter> - Manueller Z-Offset (ab v.0.91.49, davor gab es nur M3004) Positive S-Werte erhöhen den Düsenabstand (das Bett bewegt sich nach unten) - M3007 S<mue-Meter> - Minimaler Z-Komp-Offset (ähnlich wie M3002?) Ist das richtig? - M3008 S<mue-Meter> - Maximaler Z-Komp-Offset (ähnlich wie M3003?) Ist das richtig? - M3010 - Heat Bed Scan (HBS) starten. Dabei wird die Oberfläche des Betts abgetastet und die Lage/Form als Matrix für später gespeichert, wenn dann M3001 verwendet wird. - M3011 - Die unter M3010 erhaltene Matrix aus dem EEPROM löschen - M3012 - Die Standard-HBS-Parameter wieder herstellen (falls diese mit einem der Befehle von M3020 bis M3055 geändert wurden) - M3013 - Die aktuelle Matrix des HBS ausgeben Mit M3020 bis M3055 kann man die einzelnen Parameter des Bettabtastvorgangs ändern falls dafür Bedarf besteht (analog zu, bzw. siehe auch M3160 bis M3165): - M3020 - configure the x start position for the heat bed scan - M3021 - configure the y start position for the heat bed scan - M3022 - configure the x step size for the heat bed scan - M3023 - configure the y step size for the heat bed scan - M3024 - configure the x end position for the heat bed scan - M3025 - configure the y end position for the heat bed scan - M3030 - configure the fast step size for moving of the heat bed up during the heat bed scan - M3031 - configure the slow step size for moving of the heat bed up during the heat bed scan - M3032 - configure the fast step size for moving of the heat bed down during the heat bed scan - M3033 - configure the slow step size for moving of the heat bed down during the heat bed scan - M3040 - configure the delay (in ms) between two fast movements during the heat bed scan - M3041 - configure the delay (in ms) between two slow movements during the heat bed scan - M3042 - configure the delay (in ms) between reaching of a new x/y position and the test of the idle pressure - M3050 - configure the contact pressure delta (in digits) - M3051 - configure the retry pressure delta (in digits) - M3052 - configure the idle pressure tolerance (in digits) - M3053 - configure the number of A/D converter reads per pressure measurement - M3054 - configure the delay (in ms) between two A/D converter reads - M3055 - configure the pressure tolerance (in digits) per pressure measurement Mit M3020 bis M3055 kann man die einzelnen Parameter des Bettabtastvorgangs (HBS) ändern falls dafür Bedarf besteht. Die folgenden M-Befehle sind für die allgemeine Konfiguration zuständig - M3070 S1 oder S2 - Druck pausieren, als ob die Pause-Taste gedrückt wurde. Dabei gilt S1 : pausiere an der augenblicklichen Position S2 : fahre zur vordefinierten Position (Standardposition oder mittels M3105 definierter Position) und pausiere - M3071 - Warte bis die Weiter-taste ('Play'-Taste) gedrückt wurde ### neu ab v0.91.49 ### - M3079 - Druckobjekt 'ausgeben'. Dabei wird zu einer vordefinierten Position gefahren - M3080 - Drucker in Parkposition fahren (definiert mittels M3103) - M3090 - Watchdog Timer testen - dabei wird die Firmware zurückgesetzt - M3091 - Externes EEPROM löschen - M3100 - Einstellen, wie viele Mikroschritte sich das Bett bewegt, wenn einer der Hardware-Tasten am Drucker betätigt wird - M3101 - Einstellen, wie viele Mikroschritte sich der Extruderschrittmotor bewegt, wenn einer der Hardware-Tasten am Drucker betätigt wird - M3102 [Xnnn Ynnn Znnn Ennn] - Versatz, in Mikroschritten(!!), wo der Extruder hinfahren soll, wenn die 'Pause' Taste gedrückt wird (ähnlich wie M3105) - M3103 [Xnnn Ynnn Znnn] - Parkposition festlegen (siehe auch M3080) - M3104 [Xnnn Ynnn Znnn] - Objektausgabeposition - Seit 0.91.48 NICHT MEHR VERWENDET Diese Funktion wird durch den "OUTPUT_OBJECT_SCRIPT_PRINT" in der Configuration.h ersetzt - M3105 [Xnnn Ynnn Znnn Ennn] - Versatz, in Millimeter, wo der Extruder hinfahren soll, wenn die 'Pause' Taste gedrückt wird (ähnlich wie M3102) - M3110 - Aktuellen Statustext 'einfrieren' - M3120 - Gehäuselüfter (unten, beim SD Kartenschlitz) einschalten - M3121 - Gehäuselüfter (unten, beim SD Kartenschlitz) ausschalten // Die folgenden M-Befehle gelten nur für den Modus "Fräsen" und dienen der // Werkstückabtastung - M3130 - Starte/beende die Suche nach 'Z=0' - M3140 - Z-Kompensation ausschalten - M3141 - Z-Kompensation einschalten - M3146 S<nnn> - Manuellen Z-Offset angeben (Einheiten in mue-Meter) - M3149 - Besorge/wähle Z-Kompensationsmatrix für das aktuelle Werkstück - M3150 - Starten/Abbrechen der Werkstückabtastung - M3151 - Lösche spezifizierte Werkstückabtastmatrix aus dem EEPROM - M3152 - Setze Abtastparameter auf Standardwerte zurück (siehe M3160 bis M3165) - M3153 - Gebe spezifizierte Werkstückabtastmatrix aus - M3160 - Konfiguriere X Startposition für Werkstückabtastung (Einheit ist mm) - M3161 - Konfiguriere Y Startposition für Werkstückabtastung (Einheit ist mm) - M3162 - Konfiguriere X Schrittweite für Werkstückabtastung (Einheit ist mm) - M3163 - Konfiguriere Y Schrittweite für Werkstückabtastung (Einheit ist mm) - M3164 - Konfiguriere X Endposition für Werkstückabtastung (Einheit ist mm) - M3165 - Konfiguriere Y Endposition für Werkstückabtastung (Einheit ist mm) // Weitere M-Befehle - M3200 - Reservirt für Test- und Debugzwecke