¿Cuál es el propósito de asterix (*) en Gcode?

10

Al realizar un monitoreo de bajo nivel, se envía la siguiente secuencia a la impresora:

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

Esta secuencia solo enciende el ventilador, aloja la impresora y luego apaga el ventilador.

Pregunta: ¿Cuál es el propósito del asterisco / estrella / (*) y los dos dígitos siguientes en cada línea?

Mtl Dev
fuente
1
* asterisco: Asterix es un personaje de una serie de dibujos animados.
Andrew Morton
1
@AndrewMorton Entonces, ¿eso haría que los romanos se convirtieran en gcode, con Asterix como su suma de control, deteniendo la corrupción en su área local?
Mtl Dev
Hmmm ... tal vez. Los romanos construyeron muchas cosas, como hace una impresora 3-d.
Andrew Morton

Respuestas:

9

Eso es una suma de verificación. El software host lo agrega al código G, para permitir una verificación básica por parte del firmware de que el código G se transmitió sin cambios. No cambia el significado del código G, y lo que su secuencia representa realmente es justo M106, G28, M107. El N0,N1,N2,...son los números de línea, y la combinación de números de línea y las sumas de comprobación se utiliza para solicitar una re-envío de las líneas que fueron dañados durante la transmisión.

Tom van der Zanden
fuente
¿Conoces el algoritmo de suma de comprobación utilizado aquí?
Carl Witthoft
3
En Marlin, todos los bytes para los caracteres individuales se editan XOR juntos, y el resultado debe ser el mismo que la suma de verificación.
Tom van der Zanden
1
Solo XOR:byte checksum = 0; byte count = 0; while(instruction[count] != '*') checksum = checksum^instruction[count++];
Mtl Dev