¿Gcode requiere un código de respuesta del intérprete?

2

Estoy haciendo una pequeña máquina que interpreta el código G y mueve algunos pasos de manera apropiada. Estoy utilizando un arduino como el cerebro en el lado de la máquina y le envío comandos desde algún software que también estoy creando.

Si recibe un comando para mover a los motores paso a paso, digamos, mil pasos, ¿cómo sabe la computadora cuándo se está moviendo y está lista para recibir otro comando?

Una vez que el arduino recibe un comando, "L101G01X9Y10" por ejemplo, ¿debería responder con algún tipo de código para decir "Ok, lo tengo, dame otro comando"?

NOTA: No estoy buscando una solución personalizada en este caso. Estoy tratando de establecer cuál es el protocolo estándar

    
pregunta Mr Bell

2 respuestas

0

Después de cada línea de Gcode enviada desde el host al controlador, todos los RepRap intérpretes de códigos G (normalmente) responden con una línea que comienza con "ok" y termina con una nueva línea. La mayoría de las veces solo son esos 3 bytes, "ok \ n", pero ocasionalmente hay algo de información de depuración al final de la línea.

¿Ha pensado en comenzar con uno de los intérpretes de RepRap Gcode que se ejecutan en un Arduino y ajustarlos para satisfacer sus necesidades? en lugar de empezar desde cero?

La mayoría de los intérpretes de RepRap trabajan exactamente como Michael Pruitt señaló: Tienen un búfer interno que puede contener varias líneas de Gcode. El intérprete aguanta el envío de la respuesta "ok" hasta que hay suficiente espacio en ese búfer para la siguiente línea de Gcode. Cuando hay mucho espacio en el búfer, el intérprete puede enviar inmediatamente "ok" en respuesta a varios códigos G1, amortiguándolos a todos, enviar esas aprobaciones largas antes de que realmente ejecute cualquiera de esos comandos.

Escuché que hay una variedad de otros métodos para indicar a El software de alimentación por goteo en el extremo del host indica que la máquina está lista para la siguiente línea de Gcode: dnc4U menciona "XON / XOFF, RTS / CTS Haas Xmodem y Heidenhain Blockwise protocolos de protocolo".

Me gustaría que hubiera un único protocolo estándar, o alguna forma de detectar automáticamente qué protocolo estándar está usando la máquina de hoy.

    
respondido por el davidcary
3

Ver: enlace El código G es un protocolo unidireccional; Creo que hacer eco de los comandos interpretados es muy común. De lo contrario, el terminal DNC estaría en blanco.

Tradicionalmente, la máquina de destino se detendrá y mostrará una alarma al operador (una persona) si se produce un error.

No importa si el intérprete ha procesado el comando. Lo que importa es si el búfer de comunicaciones tiene espacio para más datos.

La máquina utilizará el control de flujo de hardware o software del enlace de comunicaciones para evitar que la computadora que envía desborde el búfer. La implementación específica está relacionada con el tipo de enlace que está utilizando.

Ver: enlace

Si planea usar algo más elegante que un programa de terminal, puede enviar lo que quiera de vuelta. No sé si hay alguna norma. No lo confunda con sistemas que realizan la interpolación en la PC, como Mach 3 (http://www.machsupport.com/).

    
respondido por el Michael Pruitt

Lea otras preguntas en las etiquetas