¡Bienvenidos nuevamente al blog de Welectronic! Si alguna vez abriste el programa de una fresadora o un torno CNC y viste líneas como G01 X50 Y0 F200 o M03 S1500, ya viste código G y código M. Es el idioma con el que le dices a la máquina por dónde ir, a qué velocidad cortar y cuándo girar el husillo o abrir el refrigerante. En esta publicación vas a aprender los comandos más usados, a leer un programa línea por línea y, al final, a probarlos tú mismo en un simulador que dibuja la trayectoria de la herramienta.
1. ¿Qué son los códigos G y M?
Un programa CNC es una lista de instrucciones llamadas bloques (una línea = un bloque). Cada bloque se compone de palabras: una letra seguida de un número.
- Códigos G (funciones preparatorias): controlan cómo se mueve la máquina y cómo interpreta el programa: movimientos rápidos o de corte, arcos, unidades, planos, sistemas de coordenadas y compensaciones.
- Códigos M (funciones auxiliares o misceláneas): controlan funciones de la máquina que no son movimiento: husillo, refrigerante, cambio de herramienta, paradas y fin de programa.
El lenguaje nació en la década de 1950 en el MIT, junto a las primeras máquinas de control numérico, y se estandarizó como EIA RS-274 e ISO 6983. Hoy casi todos los controles lo entienden (Fanuc, Haas, Mitsubishi, Siemens Sinumerik, LinuxCNC, Mach3…), pero cada fabricante tiene su propio dialecto: los códigos básicos coinciden, los avanzados no. Por eso el manual de programación de tu máquina siempre manda.
2. Anatomía de un bloque
Mira este bloque: N30 G01 X50 Y0 F200 S1500 M08
- N30: número de bloque (opcional, solo sirve para ubicarte).
- G01: tipo de movimiento (interpolación lineal, es decir, corte en línea recta).
- X50 Y0: coordenadas de destino. También existen Z y, en arcos, I, J, K (centro) o R (radio).
- F200: avance (velocidad de corte de la herramienta sobre la pieza), normalmente en mm/min.
- S1500: velocidad del husillo en rpm.
- T01: herramienta número 1 (se cambia con M06).
- M08: función auxiliar (refrigerante encendido).
Los comentarios se escriben entre paréntesis ( ) o después de punto y coma ; según el control. Los programas suelen empezar y terminar con el símbolo % y llevar un número de programa O1001.
Modal y no modal
Muchos códigos son modales: se quedan activos hasta que otro del mismo grupo los reemplaza. Si programas G01 X10 F200 y en la línea siguiente solo X20, la máquina sigue en G01 con F200. Otros son no modales y valen solo en su bloque (por ejemplo, la pausa G04). Esto explica casi todos los errores de principiante: un código que dejaste activo sin querer sigue mandando.
Ojo con el punto decimal: en algunos controles tipo Fanuc,X50(sin punto) puede interpretarse como 0,050 mm, porque el valor se toma como número de incrementos mínimos de 0,001 mm. EscribirX50.oX50.0evita sorpresas. Revisa cómo trata tu control los valores sin punto antes de ejecutar el primer programa.
3. Códigos G más utilizados
Movimientos
- G00: posicionamiento rápido. Movimiento sin corte, a la máxima velocidad de los ejes. No es una línea recta garantizada: en algunos controles cada eje se mueve a su propia velocidad, así que no lo uses para acercarte a la pieza si hay obstáculos.
- G01: interpolación lineal. Avance de corte en línea recta, con la velocidad F.
- G02: interpolación circular en sentido horario (CW).
- G03: interpolación circular en sentido antihorario (CCW).
Planos, unidades y modo de coordenadas
- G17 / G18 / G19: selección del plano de trabajo XY, XZ o YZ. Es el plano en el que se interpretan los arcos y las compensaciones. En una fresadora vertical normalmente es G17.
- G20 / G21: unidades en pulgadas o en milímetros.
- G90 / G91: coordenadas absolutas (medidas desde el cero pieza) o incrementales (medidas desde donde estás ahora).
Referencia y sistemas de trabajo
- G28: retorno a la posición de referencia (home), generalmente pasando por un punto intermedio.
- G54: selección del sistema de coordenadas de trabajo 1. Existen también G55 a G59 (varias piezas o varias fijaciones).
Compensaciones
- G40: cancela la compensación de radio de herramienta.
- G41: compensación de radio a la izquierda de la trayectoria.
- G42: compensación de radio a la derecha de la trayectoria.
4. Códigos M más utilizados
- M00: parada programada. Detiene el programa hasta que el operador pulse "inicio" (útil para medir o limpiar viruta).
- M03: husillo en sentido horario (CW). Es el sentido normal para fresas y brocas con corte a derecha.
- M04: husillo en sentido antihorario (CCW).
- M05: detener el husillo.
- M06: cambio automático de herramienta (la herramienta se elige con T).
- M08: encender refrigerante.
- M09: apagar refrigerante.
- M30: fin de programa y reinicio (vuelve al inicio, listo para otra pieza).
La ficha de la publicación trae lo esencial. En el taller vas a encontrar además otros que conviene reconocer:
- G04: pausa (tiempo de espera) con
G04 X1.5(segundos) oG04 P1500(milisegundos) según el control. - G43 H__ / G49: compensación de longitud de herramienta (activar y cancelar); es lo que permite que cada herramienta, aunque sea de distinto largo, toque la pieza en Z0.
- G53: movimiento en coordenadas de máquina (no modal).
- G80 y G81 a G89: cancelar y ejecutar ciclos fijos (taladrado, roscado con macho, mandrinado).
- G94 / G95: avance en mm/min o en mm por vuelta; G96 / G97 en torno: velocidad de corte constante o rpm constantes.
- M01: parada opcional; M02: fin de programa; M07: refrigerante por niebla; M98 / M99: llamar y terminar un subprograma.
5. Interpolación circular: G02 y G03 a fondo
Un arco necesita tres datos: dónde empieza (donde ya está la herramienta), dónde termina (X, Y) y qué curvatura tiene. Esa curvatura se da de dos maneras:
Con centro: G02 X__ Y__ I__ J__ F__
- Sentido: se determina mirando el plano XY desde arriba (desde +Z hacia la pieza). G02 gira como las agujas del reloj; G03, al contrario.
- I, J, K: son la distancia desde el punto de inicio hasta el centro del arco en X, Y y Z. En la mayoría de los controles son incrementales respecto al inicio, aunque estés en G90.
- R: radio del arco. Es más cómodo, pero ambiguo: entre dos puntos pasan dos arcos con el mismo radio. Por convención, R positivo elige el arco menor (hasta 180°) y R negativo el arco mayor (más de 180°).
- Círculo completo: con R es imposible (inicio y fin coinciden). Hay que usar I y J:
G02 X20 Y30 I-20 J0hace una vuelta completa. - Radio imposible: si R es menor que la mitad de la distancia entre inicio y fin, el control lanza una alarma (el arco no existe). Si R es exactamente la mitad, es un semicírculo; con redondeos, algunos controles también alarman.
- Si programas R e I/J a la vez, muchos controles hacen caso al R y descartan I/J.
Aplícalo al ejemplo de la ficha. La herramienta está en (50, 0) y se programa G02 X50 Y50 R25. La distancia entre inicio y fin es 50 mm, justo el doble del radio: es un semicírculo con centro en (50, 25). Como gira en sentido horario, parte hacia la izquierda (hacia el centro de la pieza) y vuelve a x = 50. Después, G03 X0 Y0 R25 desde (0, 50) tiene centro en (0, 25) y, al ser antihorario, sale hacia la izquierda del cero.
6. Compensaciones: radio y longitud
El programa describe el contorno de la pieza, pero la que se mueve es el centro de la herramienta. La compensación de radio (G41/G42) hace que el control desplace la trayectoria un radio hacia un lado, de modo que el filo quede sobre el contorno. Se elige el lado mirando en el sentido de avance:
- G41: herramienta a la izquierda del contorno programado. Con husillo M03 (horario) equivale a fresado concordante.
- G42: herramienta a la derecha del contorno programado (con M03, fresado discordante).
- G40: cancela la compensación.
Reglas de oro: se activa con un movimiento lineal (G01 o G00) de entrada mayor que el radio de la herramienta y se cancela con otro movimiento lineal de salida; el valor del radio (o desgaste) se toma de la tabla de correctores de herramienta (D o H, según el control). Activarla o cancelarla en un arco o con un movimiento muy corto suele provocar una alarma o una mordida en la pieza.
La compensación de longitud (G43 H__) cumple otra función: referir la punta de cada herramienta a Z0 aunque tengan distinto largo. Se cancela con G49. Es el motivo por el que la ficha insiste en "verificar herramientas, offsets y origen antes de ejecutar".
7. Sistemas de coordenadas: máquina, trabajo y cero pieza
La máquina tiene un cero propio (cero máquina, fijo, que se reconoce al hacer "home"). Pero tú programas respecto al cero pieza: el punto de la pieza que eliges como X0 Y0 Z0 (una esquina, el centro de un agujero, la cara superior). El valor de ese desplazamiento se guarda en los offsets de trabajo, que se activan con G54 a G59.
- Define el sistema de coordenadas (G54, G55…) antes de mecanizar. Si no lo haces, la máquina usa el último que quedó activo, que puede ser el de la pieza anterior.
- Con G90 cada número es una posición medida desde el cero pieza. Con G91 cada número es un desplazamiento desde donde estás.
- Una ranura cuadrada en incremental se puede repetir en cualquier posición cambiando solo el punto de partida; en absoluto, tendrías que reescribir todas las coordenadas.
8. Lectura línea por línea del ejemplo de la ficha
%yO1001: marca de inicio y número de programa.G21: unidades en milímetros.G90 G17 G40 G49: coordenadas absolutas, plano XY, sin compensación de radio ni de longitud. Es la línea de seguridad: deja la máquina en un estado conocido sin importar cómo terminó el programa anterior.G54: usa el sistema de coordenadas de trabajo 1.T01 M06: selecciona la herramienta 1 y ejecuta el cambio.M03 S1500: husillo en sentido horario a 1500 rpm.M08: enciende el refrigerante.G00 X0 Y0 Z5: posicionamiento rápido sobre el origen, con la herramienta 5 mm sobre la pieza.G01 Z-2 F150: baja en línea recta a 2 mm de profundidad (7 mm de recorrido) a 150 mm/min.G01 X50 Y0 F200: corte en línea recta de 50 mm a 200 mm/min.G02 X50 Y50 R25 F200: semicírculo horario de radio 25 mm.G01 X0 Y50: línea recta de 50 mm hacia la izquierda.G03 X0 Y0 R25: semicírculo antihorario de vuelta al origen.G00 Z5: retira la herramienta a Z5.M09,M05,M30: apaga el refrigerante, detiene el husillo y termina el programa.
El recorrido de corte suma 50 + 78,54 + 50 + 78,54 = 257,08 mm a 200 mm/min (unos 77 s) más la bajada en Z, para un total cercano a 1 min 20 s. Si lo cargas en el simulador, verás ese mismo tiempo estimado.
Orden importante: el husillo (M03) se enciende antes de que la herramienta entre en el material, y se apaga después de retirarla. Con la herramienta retirada (Z5) se hacen los cambios de posición en XY; nunca se cruza la pieza en rápido.
9. Simulador de código G y M
Ahora te toca a ti. El simulador viene con el programa de la ficha ya cargado: pulsa Simular y observa cómo la herramienta se mueve. La trayectoria punteada azul es movimiento rápido (G00); la naranja continua es corte (G01/G02/G03 con Z bajo cero). A la derecha del dibujo hay un indicador de la altura Z, y debajo ves los datos de la máquina: posición, avance, husillo, refrigerante y modos activos.
- Usa Bloque siguiente para avanzar paso a paso y leer la explicación de cada línea.
- Cambia el programa y vuelve a simular: prueba cambiar
G02porG03, o el radio R. - Carga el ejemplo "Programa con errores" y encuentra los fallos antes de que el simulador te los muestre: un corte con el husillo parado y un arco imposible.
10. Consejos de programación y buenas prácticas
- Siempre define el sistema de coordenadas (G54, G55…) antes de mecanizar.
- Usa G00 para moverte rápido y G01 para cortar. Ese orden mejora el acabado y protege la herramienta. Nunca uses G00 para entrar al material.
- Activa y cancela correctamente las compensaciones (G40, G41, G42) para evitar errores en la trayectoria.
- Usa el refrigerante (M08) para mejorar la vida de la herramienta y la calidad del mecanizado.
- Revisa siempre el programa en simulación o en vacío antes de mecanizar.
Y los que se aprenden en el taller:
- Empieza cada herramienta con una línea de seguridad (
G90 G17 G40 G49 G80más el G54 que corresponda). - Primera pieza: reduce el avance con el potenciómetro (override), usa bloque a bloque (single block) y deja la mano cerca del botón de parada.
- Verifica con la herramienta en el aire (Z elevada o con "Z neutral") antes de bajar a la pieza.
- Toca la pieza para fijar el cero y mide el largo de cada herramienta; los offsets mal cargados son la causa más común de colisiones.
- No mezcles pulgadas y milímetros:
G20con números pensados en mm es un error caro (25,4 veces más recorrido).
Recuerda: un buen programa empieza con una planificación clara; verifica herramientas, offsets y origen antes de ejecutar; y la seguridad y la atención al detalle evitan errores costosos.
11. Errores y alarmas frecuentes
- Falta el avance F en un G01/G02/G03: alarma de "avance cero" o corte con el último F que haya quedado.
- Husillo parado (olvidaste M03/M04 con S): la herramienta se rompe o se atasca al entrar al material.
- Radio de arco imposible (R menor que la mitad de la cuerda) o centro I/J inconsistente.
- G91 olvidado activo: el siguiente "X50" ya no es una posición sino un desplazamiento.
- Compensación de radio activa al terminar o al cambiar de herramienta (falta G40).
- Cambio de herramienta con la herramienta muy cerca de la pieza: antes de M06 sube Z (por ejemplo con G28 Z0).
✅ 5 Problemas Resueltos
G01 X50 F200 mueve la herramienta 50 mm en línea recta. ¿Cuánto tarda en recorrerlos?
Solución:
Tiempo = distancia / avance = 50 mm / 200 mm/min = 0,25 min
t = 0,25 min = 15 s
G02 X50 Y50 R25 F200. Determina el centro del arco, su longitud y el tiempo que tarda.
Solución:
Distancia entre inicio y fin: 50 mm = 2 · R, por lo tanto es un semicírculo y el centro está en el punto medio: (50; 25).
Longitud = π · R = π · 25 = 78,54 mm
Tiempo = 78,54 / 200 = 0,3927 min = 23,56 s
G01 X40, G01 Y40, G01 X-40, G01 Y-40. Escribe las coordenadas absolutas (G90) equivalentes y el perímetro recorrido.
Solución:
(10; 10) → X+40 → (50; 10) → Y+40 → (50; 50) → X−40 → (10; 50) → Y−40 → (10; 10).
En absoluto:
G01 X50, G01 Y50, G01 X10, G01 Y10.Perímetro = 4 · 40 = 160 mm (un cuadrado de 40 × 40 mm que vuelve al punto de partida).
Solución:
Vc = π · D · n / 1000 = π · 12 · 1500 / 1000 = 56 548,7 / 1000
Vc ≈ 56,5 m/min, un valor razonable para acero con herramienta de acero rápido (HSS) y refrigerante.
G02 X20 Y30 I-20 J0 F220 partiendo de (20; 30). Indica dónde está el centro, la longitud recorrida y el tiempo.
Solución:
Inicio = fin, así que es un círculo completo (solo se puede con I y J). El centro está en (20 − 20; 30 + 0) = (0; 30), y el radio es |I| = 20 mm.
Longitud = 2 · π · 20 = 125,66 mm
Tiempo = 125,66 / 220 = 0,5712 min = 34,27 s
🏋️ 5 Ejercicios Propuestos
F400).
G02 X30 Y0 R15 F300. ¿Dónde está el centro, por qué punto pasa el arco en su parte más alta, qué longitud tiene y cuánto tarda?
Longitud = π · 15 = 47,12 mm; tiempo = 47,12 / 300 · 60 = 9,42 s.
G03 X0 Y20 I0 J10 F250. Halla el centro, el radio y el punto de máxima desviación en X, e indica la longitud del arco.
G20 G90 G01 X2.5 F10 partiendo de X0. ¿Cuántos milímetros se mueve y cuánto tarda?
Fuentes de consulta: ficha técnica Welectronic; documentación de referencia de G-codes y M-codes de Machining Doctor y MFG Robots; guía de interpolación circular G02/G03. Los códigos exactos y su comportamiento dependen del control de tu máquina: consulta siempre su manual de programación.