G-code para máquinas CNC: cómo funciona y cómo leerlo


El G-code es el lenguaje de instrucciones con el que muchos controles CNC describen movimientos y acciones de una máquina. Un programa puede ordenar desplazamientos rápidos, movimientos de corte, arcos, cambios de sistema de coordenadas, velocidades de avance, control de husillo y otras funciones. Aunque el archivo normalmente lo genera un software CAM, comprender su estructura ayuda a detectar errores y a operar una CNC con mucha más seguridad.

No existe un único dialecto idéntico para todas las máquinas. Los principios son comunes, pero cada controlador admite un conjunto de códigos y extensiones. GRBL, LinuxCNC, Mach3 y controles industriales comparten muchas órdenes básicas y difieren en otras. Por eso nunca hay que copiar un programa de una máquina a otra sin revisar compatibilidad.

Qué significa realmente “G-code”

El nombre procede de los códigos preparatorios que comienzan por G, pero un programa CNC contiene muchas otras palabras. X, Y y Z indican posiciones; F define avance; S suele representar velocidad de husillo; M agrupa funciones auxiliares; y otros parámetros modifican el comportamiento según el control.

Una línea puede ser tan simple como un movimiento lineal o combinar varios datos. El controlador mantiene además un estado modal: algunas órdenes siguen activas en líneas posteriores hasta que otra instrucción las sustituye. Esta característica hace que leer solo una línea aislada pueda ser engañoso.

Ejemplo básico de un programa

G21
G90
G0 X0 Y0
G0 Z5
M3 S12000
G1 Z-2 F300
G1 X50 F800
G0 Z5
M5

Este ejemplo ilustra conceptos habituales, pero no debe ejecutarse en una máquina sin comprobar su control, unidades, origen y límites. De forma general, G21 selecciona milímetros en muchos dialectos, G90 establece coordenadas absolutas, G0 realiza movimientos rápidos, G1 movimientos lineales a avance programado, M3 arranca el husillo en un sentido determinado y M5 lo detiene.

Lo importante no es memorizar el ejemplo, sino aprender a leer el estado: ¿en qué unidades estoy?, ¿las coordenadas son absolutas o incrementales?, ¿dónde está el cero?, ¿a qué altura viaja la herramienta?, ¿qué avance está activo?

Coordenadas absolutas e incrementales

G90: programación absoluta

En modo absoluto, una coordenada se interpreta respecto al origen del sistema de trabajo activo. Si la máquina está en X10 y recibe X50, el objetivo es llegar a X50.

G91: programación incremental

En modo incremental, la coordenada indica cuánto debe desplazarse desde la posición actual. Desde X10, una orden X50 llevaría a X60.

Confundir ambos modos puede provocar desplazamientos inesperados. Por eso los posprocesadores suelen declarar explícitamente el estado relevante al comienzo del programa.

G0 y G1: dos movimientos que debes distinguir

G0 se utiliza habitualmente para posicionamiento rápido sin mecanizar. El control intenta mover los ejes con la estrategia de rápido configurada. G1 ordena un movimiento lineal de trabajo a un avance definido por F.

Un error peligroso es tener una altura Z demasiado baja durante un G0. Aunque la trayectoria XY sea correcta, un rápido puede cruzar la pieza, una mordaza o una pestaña. En CAM, las alturas de retract y clearance deben revisarse con el mismo cuidado que las profundidades de corte.

G2 y G3: arcos

G2 y G3 suelen representar interpolaciones circulares en sentido horario y antihorario. La forma de definir el centro del arco puede utilizar I, J y K o un radio, según el control y el plano activo.

Los arcos son una de las zonas donde aparecen diferencias de dialecto. Algunos controladores imponen restricciones o interpretan de forma concreta los parámetros. Si un CAM genera arcos incompatibles, el problema se resuelve normalmente en el posprocesador, no editando cientos de líneas a mano.

Unidades: milímetros y pulgadas

Muchos controles utilizan G21 para milímetros y G20 para pulgadas. Ejecutar un programa con unidades equivocadas puede multiplicar o reducir drásticamente los desplazamientos. Un archivo responsable suele declarar las unidades, pero el operario también debe comprobarlas en el control.

La unidad afecta a posiciones y avances. No basta con que la pieza “quepa”: un F programado para mm/min interpretado como otra unidad puede cambiar de forma extrema la velocidad de avance.

Sistemas de coordenadas y cero de trabajo

La máquina puede conocer una posición de máquina establecida mediante homing y, al mismo tiempo, trabajar con un origen de pieza. Los sistemas G54, G55 y otros offsets permiten guardar distintas referencias en controles que los soportan.

El CAM genera trayectorias respecto a un origen definido en el setup. El operador debe reproducir esa misma referencia en la máquina. Si el CAD/CAM toma como cero la esquina superior izquierda y en la CNC se pone cero en el centro, el programa no queda “centrado automáticamente”: se desplaza.

F: velocidad de avance

F establece el avance de los movimientos de trabajo en los modos donde corresponda. Su interpretación depende de unidades y del control. Elegir el avance es una decisión de mecanizado: se relaciona con material, herramienta, revoluciones, número de filos, profundidad de pasada y rigidez.

Reducir siempre el avance “para ir seguro” tampoco es una regla universal. En ciertas herramientas y materiales, avanzar demasiado despacio aumenta el rozamiento y el calor. El objetivo es una carga de viruta adecuada y estable.

S y control del husillo

S suele indicar la consigna de velocidad del husillo, mientras que códigos M como M3, M4 y M5 se utilizan habitualmente para arrancar, invertir o detener según las capacidades de la máquina. Que el archivo contenga S12000 no garantiza que el husillo alcance 12.000 rpm: la electrónica debe permitir control de velocidad y estar correctamente calibrada.

En muchos routers hobby el usuario enciende el husillo manualmente o mediante un control separado. En ese caso el G-code puede incluir órdenes que el hardware ignora. Esto debe conocerse antes de confiar en automatismos.

Códigos M: funciones auxiliares

Los códigos M gestionan funciones que no son puramente geométricas: husillo, refrigeración, cambio de herramienta, fin de programa y otras acciones. Su significado exacto puede variar más entre controles que el de muchos códigos G básicos.

Por ejemplo, un M6 puede representar un cambio de herramienta en un control, requerir una macro en otro o no estar soportado en un firmware sencillo. El posprocesador debe adaptarse a la realidad de la máquina.

Modalidad: por qué una orden sigue activa

Muchos códigos son modales. Si se activa G1, las líneas siguientes con nuevas coordenadas pueden seguir siendo movimientos lineales hasta que aparece otro modo como G0. Lo mismo ocurre con G90/G91, unidades y otros grupos.

Esta es una razón por la que resulta más útil leer un bloque de programa con contexto que buscar el significado de cada línea por separado.

Cómo revisar un G-code antes de ejecutarlo

  1. Comprueba unidades. Confirma el modo de milímetros o pulgadas.
  2. Revisa G90/G91. Asegúrate de entender cómo se interpretan las coordenadas.
  3. Identifica el origen. Debe coincidir con la puesta a cero de la pieza.
  4. Busca el mínimo Z. Comprueba que la profundidad tiene sentido para el material y la mesa.
  5. Revisa alturas de rápido. Los movimientos G0 deben pasar por encima de obstáculos.
  6. Comprueba F y S. Asegúrate de que pertenecen a tu herramienta y proceso.
  7. Visualiza el recorrido. Un sender o simulador puede revelar movimientos inesperados.
  8. Valida códigos especiales. M6, macros, sondas o ciclos deben ser compatibles con el control.

Editar G-code a mano: cuándo sí y cuándo no

Editar unas líneas para cambiar un comentario, una velocidad, una coordenada de aproximación o una orden de husillo puede ser razonable si entiendes completamente el efecto. Reprogramar manualmente un mecanizado complejo generado por CAM suele ser mala idea porque rompe la trazabilidad entre el proyecto y el archivo ejecutado.

Cuando un patrón de error se repite en todos los trabajos, corrígelo en el setup, la estrategia CAM o el posprocesador. Así el siguiente archivo saldrá bien de forma automática.

G-code y GRBL no son lo mismo

G-code es el lenguaje o familia de instrucciones; GRBL es un firmware que interpreta un subconjunto y gobierna la máquina. UGS y Candle son aplicaciones que envían esas instrucciones. Fusion, VCarve o Easel pueden generarlas. Separar estos conceptos evita muchos problemas de compatibilidad.

Qué códigos conviene aprender primero

No necesitas memorizar un manual entero. Para empezar, comprende G0, G1, G2/G3, G20/G21, G90/G91, el sistema de coordenadas de trabajo utilizado por tu control, F, S y las funciones de husillo. Después añade los códigos que aparezcan en tus archivos reales.

El objetivo de aprender G-code no es reemplazar al CAM, sino poder responder una pregunta crucial antes de pulsar “Start”: ¿qué va a intentar hacer la máquina a continuación?