Was ist der Zweck von Sternchen (*) in Gcode?

10

Bei einer Überwachung auf niedriger Ebene wird die folgende Sequenz an den Drucker gesendet:

N0 M106*36 
N1 G28*18 
N2 M107*39

Diese Sequenz schaltet nur den Lüfter ein, bringt den Drucker unter und schaltet den Lüfter aus.

Frage: Was ist der Zweck des Sterns / Sterns / (*) und der beiden nachfolgenden Ziffern in jeder Zeile?

Mtl Dev
quelle
1
* Sternchen - Asterix ist eine Figur in einer Zeichentrickserie.
Andrew Morton
1
@ AndrewMorton Das würde also den Gcode zu den Römern machen - mit Asterix als Prüfsumme, um die Korruption in seiner Region zu stoppen?
Mtl Dev
Hmmm vielleicht. Die Römer haben viele Dinge gebaut, wie es ein 3D-Drucker tut.
Andrew Morton

Antworten:

9

Das ist eine Prüfsumme. Es wird von der Host-Software zum G-Code hinzugefügt, um eine grundlegende Überprüfung durch die Firmware zu ermöglichen, dass der G-Code unverändert übertragen wurde. Es ändert nichts an der Bedeutung des G-Codes, und was Ihre Sequenz tatsächlich darstellt, ist gerecht M106, G28, M107. Dies N0,N1,N2,...sind Zeilennummern, und die Kombination aus Zeilennummern und Prüfsummen wird verwendet, um ein erneutes Senden von Leitungen anzufordern, die während der Übertragung beschädigt wurden.

Tom van der Zanden
quelle
Kennen Sie zufällig den hier verwendeten Prüfsummenalgorithmus?
Carl Witthoft
3
In Marlin werden alle Bytes für die einzelnen Zeichen zusammen XOR-verknüpft, und das Ergebnis sollte mit der Prüfsumme übereinstimmen.
Tom van der Zanden
1
Nur XOR:byte checksum = 0; byte count = 0; while(instruction[count] != '*') checksum = checksum^instruction[count++];
Mtl Dev