Dokumentation Technisches Handbuch
G-Code und M-Code
Twinwrights eigener Kernel führt den unten stehenden G-Code aus. Die Codes folgen RS274/NGC und LinuxCNC. Ein Code, den der Kernel nicht unterstützt, wird mit error:20 beantwortet, und der Satz bewirkt nichts.
Zu den Echtzeitbefehlen (einzelne Bytes wie ?, ! und ~) siehe Protokoll. Wie sich der Kernel von anderen Grbl-Steuerungen unterscheidet, steht in Twinwrights eigener Kernel.
G-Code
| Code | Bedeutung | Hinweise |
|---|---|---|
G0, G1 | Eilgang, lineare Vorschubbewegung | |
G2, G3 | Kreisbogen im Uhrzeigersinn, gegen den Uhrzeigersinn (I J K oder R), Helix | Das Werkzeug folgt dem exakten Kreis. Ein Kreisbogen in R-Form ohne Sehne in seiner Ebene wird mit error:33 beantwortet. |
G4 P | Verweilzeit, P Sekunden | Die Verweilzeit dauert so lange wie programmiert. |
G5, G5.1 | Kubischer Spline, quadratischer Spline | Ein G5 ohne I und J setzt in der Richtung fort, in der die vorige Bewegung endete. |
G7, G8 | Durchmessermodus beim Drehen, Radiusmodus | Nur im Drehmodus ($32=2). |
G10 L2, G10 L20 | Eine Nullpunktverschiebung setzen | |
G10 L1, G10 L10, G10 L11 | Die Werkzeugtabelle setzen | 32 Werkzeuge. Die Tabelle bleibt erhalten, wenn die Steuerung ausgeschaltet ist. |
G17, G18, G19 | Ebene wählen | |
G20, G21 | Einheit Zoll, Einheit Millimeter | |
G28, G30 | Eine gespeicherte Position über einen Zwischenpunkt anfahren | |
G28.1, G30.1 | Die aktuelle Position speichern | |
G33, G33.1, G76 | Spindelsynchrone Bewegung, starres Gewindebohren, Gewindeschneidzyklus | Diese brauchen einen Spindelencoder. Die MC-1 hat keinen, daher werden sie mit error:20 beantwortet. |
G38.2–G38.5 | Antasten | Das Ergebnis ist der Punkt, an dem der Messtaster ausgelöst hat, gemeldet als [PRB:]. Setzen Sie den Nullpunkt auf Grundlage dieses Punktes, nicht der Stelle, an der die Achsen angehalten haben. |
G40 | Fräserradiuskorrektur aus | |
G41, G42, G41.1, G42.1 | Fräserradiuskorrektur: D aus der Werkzeugtabelle oder .1 mit einem Durchmesser | Nur in der Ebene G17. Ein- und Ausfahrbewegungen wie in LinuxCNC. Eine Bewegung, die einen Überschnitt verursachen würde, wird abgelehnt. |
G43 Hn, G43.2 Hn | Werkzeuglängenkorrektur aus der Werkzeugtabelle, zusätzliche Korrektur | |
G43.1 | Dynamische Werkzeuglängenkorrektur | |
G49 | Werkzeuglängenkorrektur aus | |
G50, G51 | Skalierung aus, ein | |
G52 | Lokales Koordinatensystem | Teilt seine Verschiebung mit G92, wie in LinuxCNC. |
G53 | Maschinenkoordinaten für diesen Satz | |
G54–G59, G59.1–G59.3 | Werkstückkoordinatensysteme | $486 kann G59.1–G59.3 sperren. |
G61 | Exakte Bahn | |
G61.1 | Genauhalt | Die Achsen halten am Ende jeder programmierten Bewegung an. |
G64 P Q | Bahnverschleifung | Wo es Zeit spart, wird die Ecke zwischen zwei geraden Bewegungen zu einem Bogen innerhalb des Abstands P von der Ecke. Q wird akzeptiert und nicht verwendet. |
G65 P1–P6 | Eingebaute Makros | Einstellungen, Werkzeugkorrekturen, Parameter, Maschinenzustand, Wahl des Messtasters, Warten auf die Spindel. P7 (Modbus-Nachrichten) wird nicht unterstützt. |
G65 P100 und höher, G66, G66.1, G67 | Dateimakros, modale Makroaufrufe | P muss eine ganze Zahl sein. Kein anderer Befehl darf im selben Satz stehen (error:21). |
G73, G81, G82, G83 | Bohrzyklen, Tieflochbohren mit Entspanen | Jede Bohrung erhält die Bohrschritte, die sie braucht. |
G84, G85, G86, G89 | Gewindebohr- und Ausbohrzyklen | |
G80 | Zyklus aus | |
G90, G91 | Absolute Maße, inkrementelle Maße | |
G91.1 | Inkrementelle Bogenmittelpunkte | |
G92, G92.1, G92.2, G92.3 | Koordinatenverschiebung: setzen, löschen, aussetzen, wiederherstellen | |
G93, G94, G95 | Inverse Zeit, Einheiten pro Minute, Einheiten pro Umdrehung | Kreisbögen in inverser Zeit benötigen die programmierte Zeit. |
G96, G97 | Konstante Schnittgeschwindigkeit, konstante Spindeldrehzahl | Nur im Drehmodus. |
G98, G99 | Zyklusrückzug auf die Starthöhe, auf die R-Ebene |
Diese G-Codes werden nicht unterstützt (error:20):
G5.2,G5.3(NURBS);G17.1–G19.1(UVW-Ebenen);G70–G72(Drehzyklen);G90.1.
M-Code
| Code | Bedeutung | Hinweise |
|---|---|---|
M0, M1 | Programmpause, wahlweiser Halt | Der Echtzeitbefehl 0x88 schaltet den wahlweisen Halt (M1) ein oder aus. |
M2, M30 | Programmende | |
M3, M4, M5 | Spindel im Uhrzeigersinn, gegen den Uhrzeigersinn, aus | |
M6 | Werkzeugwechsel | $341 legt fest, was M6 tut. M6 und eine Bewegung in einem Satz werden mit error:40 beantwortet. |
M7, M8, M9 | Kühlung: Sprühkühlung, Flutkühlung, aus | Bei der MC-1 betreibt M8 die Wasserkühlung der Spindel. |
M25 | Z hoch auf die Referenzhöhe | Centroids Code, den manche CAM-Postprozessoren ausgeben. |
M48, M49 | Overrides ein, aus | |
M50–M53 | Vorschub-Override, Spindel-Override, adaptiver Vorschub, Vorschub halt: ein oder aus | |
M56 | Parken ein oder aus | |
M60 | Pause für den Palettenwechsel | |
M61 | Das aktuelle Werkzeug setzen, ohne zu wechseln | |
M62–M65 | Digitalausgang ein oder aus, mit der nächsten Bewegung oder sofort | Auf Platinen mit Zusatzausgängen. |
M66 | Auf einen Eingang warten | Das Warten beginnt, wenn die Bewegungen davor beendet sind. |
M70–M73 | Den modalen Zustand sichern und wiederherstellen | |
M98 P L, M99 | Unterprogramm aufrufen, zurückkehren | In Programmen, die aus dem Dateisystem der Steuerung laufen. Ein Satz für Satz gesendetes M98 wird mit error:39 beantwortet. Ein M99 im Hauptprogramm beendet es. |
Diese M-Codes werden nicht unterstützt (error:20):
M19(Spindelorientierung);M67,M68(Analogausgänge; die MC-1 hat keine);M100–M199(benutzerdefinierte M-Codes).
Wörter, Syntax und Parameter
Aufbau eines Satzes
- Kommentare
( … )und;sind erlaubt. (MSG,…)sendet den Text als Meldung an das Sender-Programm.(PRINT,…)sendet eine Meldung mit den Werten der Parameter, die es nennt.(DEBUG,…)tut dasselbe, solange#5599eingeschaltet ist.- Satzausblendung
/, SatznummernNund%-Zeilen (mit oder ohne Namen) sind erlaubt. - Groß- und Kleinschreibung spielt keine Rolle, und Leerzeichen innerhalb von Wörtern werden ignoriert.
Parameter und Ausdrücke
- Nummerierte Parameter
#1–#5000gehören zum Programm. Sie haben den Wert 0, bis das Programm sie setzt. #5001und höher sowie die benannten Systemparameter sind nur lesbar.- Benannte Parameter
#<name>: Das Lesen eines Namens, der nie gesetzt wurde, wird miterror:39beantwortet.EXISTS[#<name>]zeigt, ob er gesetzt wurde. - Ausdrücke in
[ ]verwenden die Operatoren und Funktionen von LinuxCNC. Winkel werden in Grad angegeben. - Ein Wert, den ein Satz setzt, kann im selben Satz nicht gelesen werden.
O-Wörter
- Programme, die aus dem Dateisystem der Steuerung laufen, können Unterprogramme sowie
if,elseif,else,while,doundrepeatverwenden. - Unterprogramme und Schleifen, die Satz für Satz gesendet werden, werden gesammelt und ausgeführt, sobald sie vollständig sind.
- Ein Unterprogramm kann auch eine eigene Datei sein:
<name>.ngcoder<name>.macro.
Polarkoordinaten
@ ist der Radius und ^ der Winkel, in der XY-Ebene um den Werkstücknullpunkt.
Fehler in einem Satz
- Zwei Codes derselben modalen Gruppe in einem Satz werden mit
error:21beantwortet. - Zwei Befehle in einem Satz, die beide die Achswörter verwenden, werden mit
error:24beantwortet. - Die vollständige Liste der Fehlercodes steht in Fehlercodes.