Tronxy X5SA 24V: Erweiterte gcodes für die Steuerung

Der Tronxy X5SA 24V hat wie alle seine „Geschwister“ ein spezielles Steuerboard verbaut: Das Chitu-Controllerboard. Auf diesem Board läuft auch nicht eine der freien Firmwares, sondern ein spezieller Dialekt, der sich zwar prinzipiell an die uns bekannten GCODES hält, aber noch ein paar Überraschungen bereithält.

 

Die Firmware des Tronxy ist nicht direkt manipulierbar. Offenbar gibt es  keinen Weg die Firmware durch zum Beispiel MARLIN zu ersetzen. Aber der Hersteller hat über Steuercodes die Möglichkeit geschaffen die vielen Maschinenparameter eines 3D-Druckers zu modifizieren. Es gibt diverse Anlaufstellen im Internet, die den Befehlssatz mehr oder weniger vollständig offen legen. Da ich so viele Quellen gefunden habe, fällt es schwer die ursprüngliche Detektivarbeit eines Einzelnen herauszuheben.  Zentrale Anlaufstellen scheinen aber Scott Worthington und bkrzysiek zu sein. Ich will, – schon aus Gründen der eigenen Dokumentation -, hier einen kompletten Befehlssatz darstellen und möglichst übersetzen. In deutscher Sprache habe ich die Informationen nämlich nirgends gefunden.

Ein paar Kommandos müssen „eingeschaltet“ werden. In der englischen Übersetzung ist immer die Rede von „place a tick in front of the command“. Übersetzt hieße das, dass man ein Häkchen setzen müsste.  Wo das notwendig ist, markiere ich das mit *tick.

Bei den ersten Kommandos leitet der 4-stellige Kommandocode die Anweisung ein. Der Parameter wird mit I eingeleitet und mit 0 oder 1 als Argument abgeschlossen.

M8000 I0
gibt an, ob die Fähigkeit des Fortsetzens nach Stromverlust verbaut ist (I1) oder nicht (I0)
M8001 I0
gibt an, ob die Fähigkeit des Abschaltens nach Beendigung des Druckes verbaut ist (I1) oder nicht (I0)
Die folgenden Kommandos werden genutzt um die positive Bewegungsrichtung festzulegen. Dreht ein Schrittmotor in die falsche Richtung, kann man durch die Kommandos die Drehrichtung umkehren. Hier stehen jeweils die Argumente 1 oder -1 zur Verfügung. Angegeben ist hier die Standardkonfiguration.
M8002 I-1
X-Stepper
M8003 I1 Y-Stepper

M8004 I-1 Z-Stepper
M8005 I1 *tick Extrudermotor
Hier aber schon die erste Besonderheit. Es ist in der Firmware möglich 3 Extruder zu adressieren. M8005 I1 E2
für den zweiten Extruder M8005 I1 E3
für den dritten Extruder
Da die Möglichkeit nur für die Steuerung von einem Hotend existiert, gehen folglich nur 3in1-Systeme. Unterschiedliche Materialien in einem Druck sind dann schon mal kaum möglich

Das M8005-Kommando kann aber noch mehr:
Unter Angabe der Achse kann der Firmware mitgeteilt werden, ob sich jeweils das Druckbett in der angegebenen Koordinate bewegt. Die meisten aktuellen Drucker bewegen mit X- und Z-Koordinaten den Kopf und und mit Y-Koordinaten das Bett. Der Tronxy X5SA bewegt den Kopf mit X- und Y-Koordinaten und das Bett mit Z-Koordinaten
=> 0 = Kopf bewegt sich, 1 = Bett bewegt sich

M8005 X0 In X-Richtung bewegt sich der Kopf

M8005 Y0 In Y-Richtung bewegt sich der Kopf
M8005 Z1 In Z-Richtung bewegt sich das Bett

Es folgt die Geschwindigkeitseinstellung Nach allem, was ich bisher dazu gelesen habe, wird eine Grundgeschwindigkeit festgelegt. Gibt nun das Druckprogramm eine andere abweichende Geschwindigkeit vor, wird mit den hier festgelegten Beschleunigungswerten bis zur Zielgeschwindigkeit beschleunigt
Die Angaben sind in mm/s bzw. mm/s²
M8006 I80 Die Basis-Geschwindigkeit wird hier mit 80 mm/s festgelegt

M8007 I25 JERK heißt dieser Wert. Er gibt an, wie groß die Geschwindigkeit bei Bewegungen in unterschiedlicher Richtung sein darf. Ist der Wert hoch, wird der Drucker vermutlich ziemlich rappeln und die mechanische Beanspruchung ist recht groß. Mit kleinerem Wert wird der Druck länger dauern, da die Achsbewegungen reduziert werden.

M8008 I1000 Der Beschleunigungswert um von der einen zur anderen Geschwindigkeit zu kommen

Jetzt wird's dann richtig kniffelig. Die Maschinenparameter werden mit den folgenden Kommandos eingegeben. Hier geht es um Zahnradgrößen, Zähnezahl oder Gewindesteigung.
Im Fall von Riemenantrieben rechnet sich der Tronxy nach folgender Formel:
(Z*P)/(360/W)*S)
Z = Zähnezahl
P = Pitch (Abstand der Zähne auf dem Riemen)
W = Winkel pro Impuls des Steppers
S = Microstepping, also nochmal die Teilung von W

ein 1,8° Schrittmotor mit 1/16 Microstepping mit einem 20-Zähnepulley und einem Zahnabstand von 2,032mm rechnet sich mit (20*2.032)/((360/1.8)*16)
M8009 S0.0127
Das Kommando reicht aus, wenn die Verhältnisse in X- und Y-Übersetzung gleich sind
M8009 X0.0127 Y0.0127 *tick das gleiche Kommando für die individuelle Einstellung der Achsen
In Z-Richtung arbeitet man üblicherweise mit einer Gewindestange. Also muss die Berechnung auch anders aussehen.
S / ((360/W) * S
S = Steigung des Gewindes. Eine 360°-Drehung erhöht die Plattform um den Steigungswert.
W = Winkel pro Impuls des Steppers
S = Microstepping, also nochmal die Teilung von W
M8010 S0.0009375 Die Einstellung für eine gewindegetriebene Achse

Auch der Extruder muss eingestellt werden. Hier hängt normalerweise der Motor direkt am treibenden Zahnrad. ist doch noch ein Getriebe dazwischen, muss das natürlich berücksichtigt werden. Angegeben wird der Vorschub des Filamentfadens in mm pro Schritt des Motors. Bei 360° für eine Umdrehung bei einem 1,8°-Schrittmotor und einem Microstepping von 1/16 kommt 3200 Schritte pro Umdrehung heraus: 360/(1,8/16) = 3200
Der Durchmesser des treibenden Zahnrades geht natürlich auch noch in die Rechnung ein. Unter Annahme eines Durchmessers von 10mm ergibt sich ein Radumfang von Pi*D = 31,4mm. Diese Länge wird durch 3200 geteilt. Damit ergäbe sich der Wert für das Extruderstepping von 0,0098.
M8011 S0.0098 Extruderstepping für ein 10mm Antriebsrad


Die jeweiligen Maximalgeschwindigkeiten in mm/s können über die folgenden Kommandos eingestellt werden. Das ist im Rahmen eines stabilen Betriebs des Druckers nicht beliebig zu steigern. Wenn gewünscht kann man sich durch den Versuch an die maximalen Werte herantasten.
M8012 I200 Das Kommando für den maximalen Geschwindigkeitswert der X- und Y-Achse
M8013 I30 Die Maximalgeschwindigkeit für die Höheneinstellung bzw. die Z-Achse
M8014 I120 Auch der Extruder hat seine Maximalgeschwindigkeit

Für das Anfahren der Homeposition werden je zwei Geschwindigkeiten eingestellt. Der Tronxy fährt im ersten Anlauf mit relativ hoher Geschwindigkeit in den Endschalter. Dann fährt er ein kurzes Stück zurück um sich dann langsam dem Endschalter zu nähern. Teilweise werden die Werte wohl durch die Slicing-Software übergangen.

M8015 I16 Die erste schnelle Geschwindigkeit für Z

M8015 S30 Die erste schnelle Geschwindigkeit für X/Y

M8016 I4 Die zweite langsame Geschwindigkeit für Z

M8016 S5 Die zweite langsame Geschwindigkeit für X/Y

Pre-Extrusion
ganz ehrlich: ich kann mir keinen rechten Reim darauf machen. Ob die englische Version klarer ist?
Pre-extrusion before print
the length of pre-extrusion(mm), whether the first layer is glued to the board effects the quality of print directly,
the more extruded, the better glued.
M8017 I10 Die Länge der Pre-Extrusion in mm
M8018 I20 Maximalgeschwindigkeit der Pre-Extrusion;
M8019 I50 Nochmal Extruder-Maximalgeschwindigkeit. Eigentlich schon mit M8014 gesetzt

Retracting, Zurückziehen des Filaments
Die beiden folgenden Kommandos behandeln die Länge und die Geschwindigkeit des Retracting. Außerdem kann man mit einem 0-Wert dafür sorgen, dass immer der Wert des Slicers übernommen wird. Wird ein Wert angegeben, wird der Wert des Slicers ignoriert.
M8020 S1.5 Hier wird 1,5mm zurückgezogen, egal was der Slicer sagt

M8020 S0
Der Slicerwert wird genommen
M8033 S8 Die Rückzugsgeschwindigkeit. 8mm/s

M8033 S0
Der Slicerwert wird genommen

M8021 S1.75 Filamentdurchmesser, hier 1,75mm
M8022 I245 Setzt die Maximaltemperatur des Hotends in °C um Beschädigungen durch falsche Konfiguration des Slicers zu verhindern
M8022 T170 minimale Extrusionstemperatur
M8023 I120 maximale Temperatur des Hotbeds
M8023 T0 Temperaturkontrolle für die Extrusion an- und abschalten. Hier wird die Sicherung abgeschaltet, die bei Unterschreiten der Minimaltemperatur eine Extrusion verhindert. T1 schaltet die Kontrolle ab, was eigentlich für den Betrieb nie zu empfehlen ist
Die maximalen Druckgrößen werden im Folgenden eingegeben. Da das auch dem Schutz der Maschine dient, sollte das unbedingt richtig eingegeben werden. Ein Buzzer warnt bei Überschreiten der Werte im Betrieb
M8024 I200 Maximum X in mm

M8025 I200 Maximum Y in mm

M8026 I200 Maximum Z in mm

M8027 I1 Anzahl der Extruder 1 bis 3
M8027 S0 Hier wird angegeben, ob ein 3in1 oder 2in1 Hotend vorhanden ist (1) oder kein solches Hotend (0)
Der Anschluss für einen zweiten Extrudermotor (E2) wird für den zweiten Z-Motor benutzt, was bei größeren Druckermodellen üblich ist. Das nächste Kommando teilt der Firmware mit, ob zwei Endschalter für Z vorhanden sind
0: zwei Endschalter, der zweite wird an X+ angeschlossen
1:ein Endschalter
M8027 Z0 *tick Z-Endschalterkonfiguration
Das Gleiche kann man auch mit der Y-Achse machen
M8027 Y0 *tick Y-Endschalterkonfiguration
Man kann auch den Extruder mit zwei Motoren antreiben
M8027 E0 *tick Extruder mit zwei Motoren
Schalter für ein Heatbed
1:Heatbed vorhanden, 0:Heatbed nicht vorhanden M8027 T1 Heatbedschalter

Erweiterte Einstellungen

Nach einem Retract schiebt der Extruder das Filament wieder um die gleiche Länge zurück, wenn weitergedruckt werden soll. Hier kann jetzt eine Zusatzlänge eingegeben werden um mehr zurückzuschieben
M8028 S0.00 Prime-Länge nach Retract in mm

Position der Endschalter XY in Bezug auf die Position des Druckkopfes (ich schreibe mal die englische Information dazu)
0: Schalter an 0-Position vorne links, Unilateral zero limit,such as mendel,i3... 1: Schalter an Maximal-Position, Unilateral maximum point limit,such as makerbot
2:zwei Schalter max/min?, Bilateral limit,such as ultimaker 3: Schalter an der Position Links hinten, Limit in the left rear of the machine(Seldom appear) M8029 I0 Position Endschalter

Typ der Endschalter XY 0: Schalter ist in Ruhe offen und bei Betätigung durchschaltend 1: Schalter ist in Ruhe durchschaltend und bei Betätigung offen M8029 T0
Endschalter für Z
0:Druckkopf liegt in Arbeitposition am Druckbett. Der Schalter wird an Z- angeschlossen 1:Druckbett auf Maximalposition, d.h. am weitesten vom Druckkopf entfernt. Schalter wird an Z+ angeschlossen
M8029 S0
Filamentüberwachung
0: keine Filamentüberwachung
1: Filamentüberwachung aktiviert M8029 D0
Typ des Filament-überwachungsschalters
0: Schalter ist in Ruhe offen und bei Betätigung durchschaltend
1: Schalter ist in Ruhe durchschaltend und bei Betätigung offen M8029 P1
Ventilator zur Teilekühlung
Grundsätzlich sollte dieser Ventilator immer durch die Slicersoftware gesteuert werden (I0).
Wird eine Temperatur eingegeben, startet der Lüfter sobald das Hotend diese Temperatur erreicht hat.
M8030 I0 Bauteilkühler kontrolliert durch Slicersoftware

M8030 I50 T-1 Firmware kontrolliert das Einschalten des Bauteilkühlers, hier bei 50°C

2. Extruder mit zweitem Hotend
Hier wird der Abstand der beiden Druckdüsen eingegeben. Mit anderen Worten: Wenn der 2. Extruder an genau dem Punkt weitermachen soll, wo der 1. Extruder aufgehört hat, dann muss er sich in XY-Richtung bewegen. Das geht natürlich nur, wenn die Extruderanzahl auf 2 gesetzt wurde.
M8031 S35.0 Abstand in X-Richtung

M8032 S0 Abstand in Y-Richtung

SD-Karte
Soll die SD-Speicherkarte im Bediendisplay unterstützt werden?
0:Nein
1:Ja M8034 I1
Punkte für das Auto-Leveln
Es können bis zu 5 Punkte zum Leveln angegeben werden. Ist die Koordinate mit Werten kleiner 1 belegt, ist die Angabe in Relation zur Gesamtfläche gedacht. Ist die Angabe größer oder gleich 1, sind absolute Koordinaten gemeint. Bei einer Fläche von 200mm * 200mm bedeutet M8036 X0.1 Y0.1 das Gleiche wie M8036 X20 Y20.
M8035 I4 Anzahl der Autolevel-Punkte
danach kommen so viele Anweisungen mit Punkten, wie Punkte angegeben wurden
M8036 X0.3 Y0.1 erster Punkt
M8036 X0.7 Y0.1 zweiter Punkt
M8036 X0.3 Y0.7 dritter Punkt
M8036 X0.7 Y0.7 vierter Punkt

Maschinentyp
0: XYZ Standard-Typ, Cartesisch
2: Hbot-Typ/CoreXY M8080 I0
Thermistor-Typ
0: Ideal NTC 100K 1% 3950 B.
1: K-Thermocouple.
2: EPCOS NTC 100K 1% 3950 B, entspricht dem Typ 2 Sensor bei Marlin M8081 I2
Auto Leveling 0: Auto Leveling deaktiviert
1: Auto Leveling aktiviert (Levelswitch an Z-) M8083 I0
Z-Levelling
Hier geht es um die Höhendifferenz zwischen absolut 0 und dem eingestellten Z-Abstand des Druckkopfes. Wird der Wert 0 gesetzt darf es keine Abweichung geben.
Da unser Tronxy X5SA ein Onscreen Z-Levelling hat, wird die Änderung über GCODE nicht benötigt. Für die, die sich genauer einarbeiten wollen lasse ich hier noch die englische Textversion stehen.
I skipped this because Tronxy has it onscreen. Height difference of Z leveling limit = Z zero position-Z position for leveling limit. 0: forbid deviation, the route of Z is determined by¡°set Z as zero¡±,the printed G code doesn’t need the automatic high leveling order. It's recommended to use this mode. Non 0:Z is automatically determined when the leveling limit is triggered. Under this mode, G29 automatic leveling order must be after the return to zero of G28 and before begin print. If the extrusion head is near to main board during limitation, the value is positive.

M8084 Z4
Anzeigedauer des Bootscreens
Minimum ist 100ms, Maximum ist 6000ms M8085 I3000
Zeitspanne von Standby bis Ausschalten
Das lässt sich sinnvollerweise nur mit verbautem Powermodul nutzen. Die Angabe erfolgt in Sekunden. 0 Sekunden schaltet automatischen Shutdown komplett ab.
M8085 P0
Manipulation der Frequenz
Sollten die Stepper statt 1.8°-Teilung bespielsweise 0,9°-Teilung haben, könnte man mit dieser Funktion die üblichen 1,8° simulieren. Offensichtlich steht hier nur 1 für Normalfunktion und 2 für Verdoppelung zur Verfügung
M8086 I1
Für spezielle externe Treiberbausteine kann man den Verlauf der Steuersignale vorgeben. Das ist zum einen der Zeitraum bis zum High-Level (I) und zum anderen die Länge des High-Levels (T) einen Impulses. Beide Werte sind in Nanosekunden ns einzugeben. Ich könnte mir vorstellen, dass das gegebenenfalls für ein "Tuning" nutzbar wäre, sofern man sich gut auskennt, alle Datenblätter und möglichst noch ein Oszilloscope hat. Bringt aber eben nur etwas, wenn man auch noch die Treiber für die Motoren austauscht. Wenn die internen Treiber auf der Chitu-Platine genutzt werden, bleibt alles bei 0.
M8087 I0 T0
Drehzahl des Mainboard-Lüfters
von 0 bis 256 kann die Drehzahl beeinflusst werden. Das kann zwar für Ruhe sorgen, aber andererseits auch thermische Probleme bringen. Der Einbau eines leiseren Lüfters ist vermutlich sinnvoller. Der Wert sollte auf Maximum bleiben
M8489 I256
Fördergeschwindigkeit für Filament
Die Geschwindigkeit mm/s für das Laden von Filament kann hier eingestellt werden. Doch Vorsicht: Bei zu hoher Geschwindigkeit könnte der Motor aus dem Takt kommen oder sogar stehen bleiben
M8489 T6
Endprozedur, automatisches Abschalten nach dem Druck
Nach Fertigstellung des Druckes kann die Firmware alles (Motor und Heizungen) abschalten (0) oder der gcode soll das selber steuern (1)
M8489 P0
... etwas für echte Profis, die den PID genau steuern wollen, daher keine Übersetzung. Wenn aber sowieso alles stabil läuft, sollte man hier nichts ändern.
【M301 P22.2 I1.08 D114 】 PID parameter setup of temperature, if you are not an expert, and your current temperature control is comparatively stable, you need not set the parameter。if to enable this function, place a tick in front of the command. M301 P22.2 I1.08 D114 【M303 E0 S150 C5】if to enable this function, place a tick in front of the command. Automatic modulation PID command, this command will be blocked for a long time temperature 150°, automatic cycle vibrates 4 times, the PID parameter after automatic modulation can see through repetier-host M303 E0 S150 C5
Lasersteuerung
1: Maschine unterstützt einen Laser, dann gibt es offenbar mehr Möglichkeiten zur Steuerung der Geschwindigkeiten.
0: Maschine unterstützt keinen Laser M8520 I0
Das Allerwichtigste
Mit diesem Kommando werden die Änderungen gesichert, sonst ist alles wieder weg.
M8500

Man kann sich auch die aktuelle Konfiguration ausgeben lassen
M8512 "config.gcode" speichert die Konfiguration auf der eingelegten SD-Karte

Die folgenden Kommandos findet man recht selten. In einem Beitrag von Bruno Boi im customize-3d-Forum sind sie gelistet.

Vorübergehendes Anwenden der Änderungen
Mit dem folgenden Kommando kann man die Änderungen aktivieren ohne sie endgültig zu speichern. Das ist für Testszenarien gut
M8510

... und hier das Gegenmittel
Die gespeicherte Konfiguration wird wieder aktiviert
M8511

Schon oben hatte ich das folgende Kommando erwähnt
es soll die Konfiguration auf der Speicherkarte als gcode-file ablegen. Man kann wohl einen absoluten Pfad zum Speichern angeben.
M8512

Den ersten Teil des folgenden Kommandos mit dem Argument I hatten wir schon in der obigen Liste. Es schaltete einen vorhandene Laserunterstüzung ein. Es gibt aber noch ein T als Argument.
T1 ermöglicht Funktionen für manuelles Levelling
T0 schaltet diese Funktionen wieder ab
M8520 T0

Schleifensteuerung
offensichtlich kann man hier eine Schleife programmieren. Im Netz habe ich nur an einer Stelle etwas dazu gefunden:
M6010 T0 I4 ; Create a loop start point, start Loop0, loop four times
Also wird hier eine Schleife gestartet und 4 mal durchlaufen

Das folgende Kommando überprüft, ob die Abarbeitung der Schleife beendet ist und wartet sonst mit der Ausführung folgender Kommandos.
M6011 T0

Vorgabe einer Zielkoordinate mit Geschwindigkeitsangabe, mit welcher Geschwindigkeit sie erreicht werden soll.
6020 X0.1 Y0.92 Z0.5 F6500

Starten eines Files
Die Position des Files wird mit dem Filenamen relativ angegeben. Enthält der Filename/Path einen Doppelpunkt ":" ist die Angabe absolut zu unterpretieren
M6030 "file"

Unterbrechung des Drucks (Pause)
M6031

Nochmal eine Fileoperation zum Drucken
Drucke das File von der SD-Karte
M6032 "file"

Neustart
die vorhandenen Informationen dazu sind unverständlich. Ich schätze mal, dass hier die Wiederaufnahme nach einer Pause gemeint ist. Der Parameter soll laut Internetquelle eine Länge in mm sein, was ich nicht nachvollziehen kann. Ich schätze mal, hier sind, - wenn überhaupt -, Sekunden bis zum Neustart einzugeben
M6040 I0

Unterbrechen mit Zeitvorwahl
Unterbrechen des Druckes. Das Kommando M24 (RepRap: Wiederaufnahme Druck von SD-Karte) wird nach 4000 Millisekunden ausgeführt. Ich gehe davon aus, dass hier jedes Kommando eingegeben werden könnte, nicht nur M24
M6045 I4000 "M24"

Das Gleiche nochmal ohne Unterbrechung
M6046 I4000 "M0"

Filament mischen
Im Druck soll der Druckkopf 1 mit 10% starten und dann pro Millimeter 4% stärker werden.
M6050 S0.1 P0.04

IO-Port-Steuerung
Wenn ein erweiterter IO-Port (ab V3.6) verbaut ist, kann er über dieses Kommando angesteuert werden. Es gibt 8 erweiterte IO-Ports
M6051 D0 P0 I1
Der D0-Pin wird auf High gesetzt

Pause bis der Port eines Pins ein Level annimmt
M6051 D0 P1 I1
Hier wird gewartet, bis der D0-Pin High wird

Das war eine Menge Recherche und hat ein paar Stunden Arbeit gekostet, um eine einigermaßen sinnvolle Übersetzung hinzubekommen. Offensichtlich wurden die Informationen im Internet größtenteils maschinell aus dem Chinesischen übersetzt. Diverse Kommandos sind auch noch nicht nachvollziehbar. Vollständig ist es wohl auch nicht.

Wenn Ihr Anregungen, Informationen oder Korrekturen habt, würde ich mich freuen, wenn Ihr mit mir Kontakt aufnehmt.

Ansonsten hoffe ich, dass diese Informationssammlung hilft. Ich selber habe mich übrigens damit beschäftigt, weil ich den Extruder neu kalibrieren will.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.