Dos comandos. Ahí es donde comienza la mayor parte de la programación CNC y, sinceramente, donde también se cometen la mayoría de los errores.
G00 mueve la herramienta rápidamente, al aire libre, sin realizar cortes. G01 corta el material a una velocidad que usted controla. Si domina estas dos funciones, comprenderá la esencia del movimiento CNC. Si falla, tendrá que recuperar fresas rotas de una pieza arruinada.
Esta guía abarca ambos aspectos: qué hacen, cómo escribirlos, qué suele causar problemas y cómo se relacionan con los códigos que utilizarás a continuación.
Código G y programación CNC: la versión resumida
El código G es una lista de instrucciones. Tu máquina lee cada línea en orden y la convierte en movimiento físico. Muévete aquí. Corta a esta velocidad. Activa el refrigerante. Sencillo en teoría, implacable en la práctica.
La programación CNC consiste en escribir esas líneas en el orden correcto. No se trata de guiar la herramienta manualmente, sino de describir todo el proceso de antemano para que el controlador pueda repetirlo con exactitud cada vez. La primera pieza y la quinta mil deben ser idénticas. Esa es la clave.
Donde el código G cobra mayor importancia es en la línea de tolerancia. Un movimiento rápido en la dirección incorrecta arrastra la herramienta a través de la fijación. Una velocidad de avance excesiva rompe una fresa a mitad del corte. El código demuestra tu habilidad, o revela tus deficiencias. Lo que escribes es exactamente lo que hace la máquina. Asegúrate de que ambas cosas coincidan.
Un error común entre los principiantes: G00 y G01 son comandos modales. Esto significa que, una vez que se activa uno, permanece activo hasta que se activa el otro (o un código de movimiento diferente) para reemplazarlo. Si se activa G01 en un bloque, todos los bloques de movimiento subsiguientes se ejecutarán como un avance G01 hasta que algo lo modifique. Este es el comportamiento estándar en los controles modernos de Fanuc y Haas. Si se ignora, se heredará una velocidad de avance de corte en un movimiento que se creía rápido, o viceversa.
G00 y G01: Mismo eje, trabajos muy diferentes
Ambos códigos mueven la herramienta en línea recta. Ahí terminan las similitudes.
G00: Llegar rápido
G00 es un simple reposicionamiento. La máquina se mueve hacia el objetivo a máxima velocidad; no corta, solo se desplaza. Imagínelo como levantar la herramienta y desplazarla rápidamente por la mesa hasta la siguiente posición.

En la mayoría de las máquinas, esto significa velocidades muy superiores a 10 000 mm/min. La velocidad no se configura. La máquina utiliza la velocidad de desplazamiento para la que fue diseñada, y el controlador puede limitarla aún más según la geometría del movimiento o los límites de los ejes. Si su máquina parece funcionar más lento de lo especificado, verifique si los límites de aceleración de los ejes, las restricciones de la zona de seguridad o una configuración de anulación rápida están limitando la velocidad. Obtenga más información sobre el código G00.
G00X100.0Y50.0
La herramienta se ajusta rápidamente a X100, Y50. Lo que muchos no esperan es que G00 no siempre se mueve en diagonal de forma precisa. En muchos controles, cada eje acelera de forma independiente a su velocidad máxima, por lo que la trayectoria puede desviarse. No asuma que la trayectoria rápida está despejada solo porque los puntos de inicio y fin lo estén. Compruebe qué hay entre ellos.
G01: Corta a la velocidad que tú definas.
G01 es el código que realiza el trabajo propiamente dicho: fresar una ranura, refrentar una superficie, tornear un diámetro. Funciona tanto en centros de mecanizado como en centros de torneado. Se mueve en línea recta a la velocidad de avance especificada, y el controlador interpola la velocidad de cada eje para mantener esa trayectoria exacta.

Siempre necesitas un valor F con G01:
G01 X100.0 Y50.0F250.0
Ese valor F250.0 mantiene la velocidad de avance en 250 mm/min. Si se reduce el valor F, la máquina activará una alarma o volverá a la última velocidad de avance activa, lo cual no es deseable durante un corte. Algunos controladores fallarán inmediatamente; otros usarán el valor F que se haya transferido del bloque anterior. No lo pruebe. Siempre especifique la velocidad de avance explícitamente.
La única pregunta que los mantiene en el buen camino
¿Estás cortando o te mueves por el aire?
Si la herramienta está en el aire, use G00. Ahorre tiempo. Si la herramienta está en contacto con el material, use G01. Controle el avance.
Intercámbialas y lo notarás al instante. Un G00 en el material golpea la herramienta a máxima velocidad: herramienta rota, husillo dañado. Un G01 donde debería haber un avance rápido te cuesta tiempo de ciclo irrecuperable, que se multiplica en cada pieza de la serie de producción.
El siguiente video explica la diferencia entre G00 y G01.
Cómo escribir G00 y G01 en un programa real
Conocer la teoría es un buen punto de partida. Plasmarla en código funcional es donde todo cobra sentido.
Para G00, la práctica habitual debe ser mover primero el eje Z. Retraiga la herramienta antes de moverse lateralmente. Establezca una altura de seguridad constante (un valor que se utiliza cada vez que la herramienta se mueve entre operaciones) y retráigala hasta ese valor antes de cualquier movimiento rápido en los ejes X/Y. Esta práctica de "plano R" elimina toda una clase de errores de colisión de fijaciones.
G00 Z25.0 G00 X100.0 Y50.0
La herramienta se eleva hasta Z25 y luego se mueve a la siguiente posición. Si se invierte ese orden, se corre el riesgo de arrastrar la fresa sobre lo que se encuentre entre los dos puntos.
Para G01, el valor F es fundamental. Si es demasiado rápido, sobrecargas la herramienta o dañas el acabado superficial. Si es demasiado lento, rozas en lugar de cortar, lo que endurece el material y desgasta el filo más rápido de lo esperado. Encuentra el valor adecuado para tu material y herramienta; recuerda que, una vez configurado, permanece activo como valor modal hasta que lo modifiques. La velocidad de avance en el desbaste no se reduce automáticamente para la pasada de acabado. Esa responsabilidad recae en ti.
Aquí tenéis una breve secuencia que combina ambos elementos:
G00 Z25.0 G00 X10.0 Y10.0 G01 Z-5.0 F100.0 G01 X60.0 F250.0 G00 Z25.0
La herramienta se eleva a una altura segura, pasa por el punto de inicio, desciende hacia la pieza a 100 mm/min, corta transversalmente a 250 mm/min y luego vuelve a subir rápidamente. Observe la velocidad de avance más lenta: penetrar directamente en el material en el eje Z desgasta más la herramienta que cortar lateralmente. Reduzca ese valor.
Otro hábito que conviene adquirir desde el principio: tratar el eje Z con especial cuidado. Un valor positivo en el eje Z cuando se pretendía negativo hace que la herramienta suba en lugar de bajar. Al aire libre, esto puede resultar embarazoso. Cerca de una pieza de trabajo o un soporte, puede provocar un accidente.
Códigos avanzados: G02, G03 y códigos M
Una vez que G00 y G01 se dominan por completo, el siguiente paso son las curvas y las funciones de la máquina.
G02 corta arcos en sentido horario. G03 corta en sentido antihorario. Ambos necesitan una velocidad de avance y una forma de definir la curva; la mayoría de los programadores usan los valores I y J para apuntar desde el inicio del arco hasta su centro:
G01 X40.0 Y10.0 F250.0 G02 X50.0 Y20.0 I10.0 J0.0
El comando G02 realiza un corte en arco en sentido horario hasta X50, Y20, con el centro a 10 mm a la derecha del punto de inicio. La diferencia entre sentido horario y antihorario suele generar confusión. Primero, haz un boceto: observa la pieza desde la dirección en la que se aproxima la herramienta, visualiza la curva del arco y luego escribe el código.
Los códigos G controlan el movimiento de la herramienta. Los códigos M controlan todo lo demás. Los usarás en casi todos los programas:
- M03 — Eje encendido, en sentido horario
- M05 — parada del husillo
- M08 — refrigerante en
- M09 — refrigerante apagado
- M06 — cambio de herramienta
- M30 — finalizar programa y reiniciar
Un movimiento G01 con el husillo apagado no corta. Simplemente arrastra una herramienta inerte sobre la superficie. Los códigos M son los que transforman el movimiento en mecanizado real. Una secuencia típica de inicio de operación lo integra todo:
M06 T01 M03 S2000 G00 Z25.0 M08 G00 X10.0 Y10.0 G01 Z-5.0 F100.0
Cargue la herramienta uno. Arranque el husillo a 2000 RPM. Eleve el eje Z a una altura segura. Active el refrigerante. Mueva rápidamente a la posición. Introduzca la herramienta en el corte. Cada línea tiene una tarea asignada, y el orden garantiza la seguridad. Encienda el husillo antes de la inmersión, siempre.
Seguridad en la primera puesta en marcha: Qué hacer antes de pulsar el botón de inicio del ciclo.
Escribir buen código es solo una parte. Lo que hagas antes de la primera ejecución es lo que diferencia los trabajos bien hechos de los que generan problemas.
Primero, compruebe el desplazamiento de trabajo y la compensación de longitud de herramienta. Antes de cualquier movimiento rápido, confirme que G54 (o el sistema de coordenadas de trabajo que utilice) esté configurado correctamente y que los desplazamientos de longitud de herramienta en los registros H coincidan con las herramientas cargadas. Un G54 incorrecto combinado con un movimiento G00 puede provocar la destrucción de las fijaciones. Un valor H faltante o incorrecto envía la herramienta a la altura Z incorrecta. Verifique ambos antes de ejecutar el proceso.
Utilice la anulación rápida en programas nuevos. Al ejecutar un programa por primera vez, reduzca la anulación rápida al 25 % o menos. Esto le dará tiempo para reaccionar si la anulación rápida se dirige a un lugar incorrecto. Una vez que haya confirmado que la ruta está limpia, vuelva a aumentarla.
Primero, realiza una simulación o una prueba en seco. La mayoría de los controladores modernos incluyen un modo de prueba en seco o simulación de trayectoria. Úsalo. Detecta el fallo en el software antes de que ocurra en la máquina. Si tu controlador no tiene simulación, ejecuta el programa con la herramienta a una altura considerable sobre la pieza.
En máquinas antiguas, escriba todo explícitamente. Los controles antiguos no siempre comparten el mismo comportamiento modal que los equipos Fanuc o Haas más modernos. Escriba las velocidades de avance completas en cada línea de corte, las retracciones Z limpias en cada movimiento de herramienta y las llamadas explícitas de compensación de trabajo. No dé por sentado que el control conserva el contexto entre bloques como lo hace una máquina moderna. Implica escribir más, pero merece la pena.
Hábitos que evitan que las piezas acaben en la chatarra
Adapta la velocidad de avance y de corte al material. El aluminio se corta bien a altas velocidades. El acero inoxidable requiere pasadas más lentas y constantes con refrigerante uniforme. Empieza con las recomendaciones del fabricante de la herramienta, trabaja con precaución en la primera pieza y ajusta según la viruta y el acabado superficial. Una buena viruta te indica más que cualquier tabla.
Algunos hábitos que vale la pena cultivar antes de que te cuesten dinero:
- Utilice una altura de retracción Z constante. Elija un número y utilícelo cada vez que la herramienta cambie de función.
- Actualiza tu valor F deliberadamente. Permanece activo hasta que lo cambies. Compruébalo antes de cada nuevo tipo de corte.
- Mira atentamente la primera parte. La máquina ejecuta exactamente lo que escribiste. Esa primera parte es tu prueba.
G00 y G01 no son avanzados. Son fundamentales. Un programador que los maneja con precisión y coherencia es alguien a quien se le puede confiar un trabajo difícil.
Preguntas frecuentes
¿Qué sucede si escribo un bloque G01 sin velocidad de avance?
Depende del control. Algunas máquinas activarán una alarma inmediatamente. Otras usarán el valor F que estuvo activo en un bloque anterior. En cualquier caso, no querrás enterarte a mitad de la operación. Siempre escribe un valor F explícito en los movimientos G01.
¿Por qué G00 a veces cambia de dirección bruscamente en lugar de moverse en diagonal recta?
Dado que cada eje acelera de forma independiente a su velocidad máxima de desplazamiento, la trayectoria entre dos puntos no siempre será una diagonal perfecta; seguirá el movimiento combinado que produzcan los límites de los ejes. Este es el comportamiento habitual en la mayoría de los controles. Compruebe siempre que haya suficiente espacio libre a lo largo de la trayectoria real, no solo en las coordenadas inicial y final.
¿Por qué mi máquina se mueve más lentamente que la velocidad rápida publicada durante G00?
Algunas causas comunes: la función de anulación rápida está ajustada por debajo del 100%, el movimiento es demasiado corto para que el eje pueda acelerar completamente, o la zona de seguridad o la configuración de velocidad del eje limitan la velocidad. Primero, revise el dial de anulación rápida; suele ser la causa del problema.
¿El G01 funciona en centros de torneado CNC o solo en centros de mecanizado?
El G01 funciona en ambos tipos de máquinas. En un torno, corta una trayectoria recta a una velocidad de avance controlada, igual que en una fresadora. Las etiquetas de los ejes son diferentes (X y Z en lugar de X, Y y Z), pero la lógica es idéntica.
¿Es seguro usar G00 para retracciones de perforación por picoteo?
Puede ser, pero úselo con cuidado. Entre cada pasada, la herramienta se retrae a través del orificio siguiendo una trayectoria limitada. Una retracción estándar G00 elimina bien la viruta y ahorra tiempo, pero asegúrese de que la retracción deje libre la parte superior del orificio con margen. Muchos programadores prefieren una retracción corta G01 con un avance moderado para el primer movimiento de salida, y luego cambian a G00 una vez que la herramienta esté libre.
¿Puedo usar G01 para un desplazamiento vertical en el eje Z y G00 para movimientos laterales en el mismo programa?
Sí, y deberías hacerlo. Combinar ambos códigos dentro de un programa es normal y esperado. La clave está en elegir cuidadosamente el momento de cambiar. Usa G01 siempre que la herramienta esté cerca o dentro del material, y G00 solo cuando el camino esté completamente despejado. La naturaleza modal de ambos códigos implica que solo necesitas llamar a G01 o G00 una vez por cada cambio de modo, no en cada línea.
¿Cuál es la diferencia entre la velocidad de avance en mm/min y el avance por revolución?
G01 controla por defecto el avance por minuto (mm/min o pulg/min), mediante el modo G94. El avance por revolución (mm/rev) utiliza G95 y es más común en tornos, donde vincula el avance directamente a la velocidad del husillo. En una fresadora, casi siempre se utiliza G94. En un torno, compruebe qué modo utiliza su programa antes de ejecutarlo.
¿Cómo puedo saber si mi velocidad de avance G01 está dañando la herramienta?
Observa la viruta. Una buena viruta tiene un color, curvatura y tamaño consistentes con el material. Las virutas finas y polvorientas indican fricción: reduce la velocidad del husillo o aumenta la velocidad de avance. Las virutas fibrosas y pesadas con decoloración indican un exceso de calor: reduce el avance o aumenta el refrigerante. Si la herramienta chirría o vibra, algo falla en la combinación de avance y velocidad. Detén la herramienta, ajústala y vuelve a mecanizar en lugar de seguir adelante.
