Qual é o objetivo do asterix (*) no Gcode?

10

Fazendo algum monitoramento de baixo nível, a seguinte sequência é enviada para a impressora:

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

Essa sequência apenas liga o ventilador, hospeda a impressora e depois o ventilador.

Pergunta: Qual é o objetivo do asterisco / estrela / (*) e dos dois dígitos seguintes em cada linha?

Mtl Dev
fonte
1
* asterisco - Asterix é um personagem de uma série de desenhos animados.
Andrew Morton
1
@AndrewMorton Então, isso tornaria o código de código romano na época - com Asterix sendo sua soma de verificação, interrompendo a corrupção em sua área local?
Mtl Dev
Hummm ... talvez. Os romanos construíram muitas coisas, como uma impressora 3D.
Andrew Morton

Respostas:

9

Isso é uma soma de verificação. É adicionado pelo software host ao código G, para permitir uma verificação básica pelo firmware de que o código G foi transmitido inalterado. Não muda o significado do código G, e o que sua sequência realmente representa é justo M106, G28, M107. Os N0,N1,N2,...números de linha são e a combinação de números de linha e somas de verificação é usada para solicitar o reenvio de todas as linhas que foram corrompidas durante a transmissão.

Tom van der Zanden
fonte
Você conhece o algoritmo de soma de verificação usado aqui?
Carl Witthoft
3
No Marlin, todos os bytes dos caracteres individuais são editados em XOR e o resultado deve ser o mesmo da soma de verificação.
Tom van der Zanden
1
Apenas XOR:byte checksum = 0; byte count = 0; while(instruction[count] != '*') checksum = checksum^instruction[count++];
Mtl Dev 04/12