2 votos

¿Necesita gcode un código de respuesta del intérprete?

Estoy haciendo una maquinita que interpreta g-code y mueve unos steppers adecuadamente. Estoy usando un arduino como el cerebro en el lado de la máquina y el envío de comandos a la misma de un software que también estoy construyendo.

Si recibe una orden para mover los steppers, digamos, mil pasos, ¿cómo sabe el ordenador cuándo ha terminado de moverse y está listo para recibir otra orden?

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

3voto

andrew_bomb Puntos 26

Ver: http://en.wikipedia.org/wiki/G-code El código G es un protocolo unidireccional; creo que el 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 detiene y muestra una alarma al operador (una persona) si se produce un error.

No importa si el intérprete ha procesado el comando. Lo que sí importa es si el buffer 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 el ordenador emisor desborde el búfer. La implementación específica depende del tipo de enlace que se utilice.

Ver: http://en.wikipedia.org/wiki/Flow_control

Si piensas usar algo más sofisticado que un programa de terminal, puedes enviar lo que quieras. No sé si hay algún estándar. No lo confundas con sistemas que hacen la interpolación en el PC, como Mach 3 (http://www.machsupport.com/).

0voto

Jeremy Ruten Puntos 59989

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

¿Has considerado tal vez a partir de uno de los intérpretes RepRap Gcode que se ejecutan en un Arduino, y ajustarlo para satisfacer sus necesidades, en lugar de empezar desde cero?

La mayoría de esos intérpretes RepRap funcionan exactamente como Michael Pruitt señaló tienen un buffer interno que puede contener varias líneas de Gcode. El intérprete retrasa el envío de la respuesta "ok" hasta que que haya suficiente espacio en ese búfer para la siguiente línea de Gcode. Cuando hay suficiente espacio en el búfer, el intérprete puede enviar inmediatamente "ok" en respuesta a varios códigos G1, almacenándolos todos en la memoria intermedia, enviando esos OKs largo antes de ejecutar cualquiera de esos comandos.

He oído que existen otros métodos para diga al software de goteo en el extremo anfitrión que la máquina está lista para la siguiente línea de Gcode: dnc4U menciona "XON/XOFF, RTS/CTS Haas Xmodem y Heidenhain Blockwise handshaking protocols".

Ojalá hubiera un único protocolo estándar, o alguna forma de detectar automáticamente qué protocolo estándar utiliza la máquina actual.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X