Lista de Códigos G y M para Programación CNC

Busca y filtra comandos ISO por control, máquina o función.

El lenguaje de programación CNC se basa en bloques de código estructurados para controlar trayectorias, avances y funciones de la máquina herramienta. En esta lista de códigos G y M encontrarás una referencia rápida de los comandos más utilizados en mecanizado para torno y fresadora. Aunque existe un estándar ISO, la ejecución exacta de un ciclo fijo o una interpolación avanzada puede variar según el control numérico Fanuc, Heidenhain, Siemens, Haas y los parámetros del fabricante.

Estos códigos pueden variar según control, postprocesador, máquina y parámetros del fabricante. Antes de ejecutar un programa real, confirma la sintaxis en los manuales oficiales de la máquina/control y simula el recorrido. GetGCode no se hace responsable de daños personales, daños materiales, paradas de producción, errores de programación, errores de diagnóstico ni decisiones tomadas a partir de esta información orientativa. Las marcas citadas pertenecen a sus respectivos titulares (ver Aviso legal).
Agregar mis códigos
Puedes usar la tabla libremente. Guardar tus propios códigos está reservado a las cuentas con acceso Pro.
Código
Nombre
Familia
Ejemplo
Qué hace
Filtros

G90 hace que todas las cotas X, Y y Z se midan desde el cero pieza activo (G54-G59) y no desde donde está la herramienta. Es modal y es el modo normal de trabajo en fresadora, porque permite copiar las cotas del plano tal cual. Ojo con el torno Fanuc de juego de códigos A: allí G90 no es el absoluto, es el ciclo fijo de cilindrado, y el absoluto se distingue por usar X y Z en vez de U y W.

Ver la ficha completa de la familia

Sintaxis por control

Fanuc / Haas (fresado)

G90 G54 G00 X100. Y50.

Es el bloque de seguridad típico al principio de cada herramienta: modo absoluto, origen de pieza y posicionamiento. Escribirlo en cada herramienta evita heredar un G91 de la operación anterior.

Fanuc (torno, juego de códigos A)

G90 X40. Z-50. F0.2

Aquí G90 es el ciclo fijo de cilindrado en una pasada, no el modo absoluto. En ese formato, el absoluto se programa con X y Z y el incremental con U y W dentro del mismo bloque. No confundas las dos cosas al convertir programas.

Siemens 840D / 828D

G90 G54 G0 X100 Y50

Siemens admite además dar una cota absoluta suelta dentro de un bloque incremental con AC(): X=AC(100). Así no hace falta cambiar de modo para un solo eje.

Heidenhain TNC (Klartext)

L X+100 Y+50 R0 FMAX

En Klartext las cotas son absolutas por defecto y no hay un G90 que escribir. La I delante del eje (IX+10) convierte esa cota concreta en incremental.

Letras que lo acompañan

LetraQué indicaUnidad
X Y ZCota del punto de destino medida desde el cero pieza activo. Con G90 son cotas del plano; con G91 serían incrementos.mm / pulg
Z y R en ciclos fijosCon G90, la Z de un ciclo fijo es la cota de fondo y la R es la cota del plano de referencia; con G91 pasan a ser distancias.mm / pulg
G90.1 / G91.1En los controles que lo admiten, G90.1 hace absolutos los centros I, J y K de los arcos y G91.1 los devuelve a incrementales, que es el comportamiento normal.modal, sin unidad

Ejemplo comentado

Ranura en L en una placa de aluminio con fresa de Ø8. Los tres puntos del recorrido vienen acotados en el plano desde la misma esquina, así que en absoluto se copian tal cual. En los comentarios se indica qué habría que escribir en cada bloque si el mismo recorrido se programara en G91.

G21 G17 G40 G49 G80( Milímetros, plano XY y estado limpio. )
G91 G28 Z0.( Z a referencia en incremental: este bloque concreto se hace en G91 a propósito. )
T2 M06( Fresa de Ø8. )
G90 G54 G00 X10. Y10.( Vuelve a absoluto y se posiciona. Con G90, X10 Y10 es un punto fijo de la pieza; con G91 sería 10 mm más allá de donde estuviera la fresa. )
G43 H02 Z50. M03 S3800( Longitud de la T2 y husillo en marcha. )
G00 Z2. M08( Aproximación y refrigerante. )
G01 Z-4. F200( Entra a 4 mm bajo la cara. En G90 es una cota; en G91 sería una bajada de 6 mm desde Z2. )
G01 X70. F450( Primer tramo de la ranura hasta X70. En G91 este bloque sería X60. )
Y45.( Segundo tramo hasta Y45. En G91 sería Y35. )
X30.( Tercer tramo hasta X30. En G91 sería X-40, con el signo marcando el sentido. )
G00 Z50. M09( Retirada y refrigerante fuera. )
G91 G28 Z0. M05( Aquí sí interesa el incremental: sube desde donde esté hasta la referencia. Con G90, el bloque pasaría antes por el Z0 de la pieza. )
G90( Devuelve el control a absoluto antes de terminar, para que ningún bloque posterior herede el G91. )
M30( Fin de programa. Muchos controles restauran los modales por defecto en M30, pero eso depende de parámetros de la máquina. )

Cuándo se programa en G90

Prácticamente siempre en fresadora: los planos se acotan desde un origen común y en absoluto las cotas se copian sin hacer cuentas. Además, en absoluto un error en un bloque afecta solo a ese bloque, mientras que en incremental arrastra todo lo que viene detrás. Los casos en los que se cambia a incremental son puntuales y conocidos: la retirada segura con G91 G28 Z0., los patrones repetidos con K o L, y los subprogramas de geometría que se posicionan desde el bloque de llamada. Fuera de eso, lo sano es escribir G90 en el bloque de seguridad de cada herramienta.

Cómo se combina con G54, los ciclos fijos y los arcos

G90 y G54 son cosas distintas y complementarias: G54 dice desde qué punto se mide y G90 dice que se mide desde ese punto y no desde la herramienta. En los ciclos fijos, el modo cambia el significado de dos direcciones: con G90 la Z es la cota del fondo y la R la cota del plano de referencia, mientras que con G91 la Z es la profundidad desde R y la R una distancia desde la posición actual. En cambio los centros I, J y K de los arcos siguen siendo incrementales en Fanuc y Haas, salvo que se active G90.1.

Qué no hace G90

No cancela nada. No borra un G92 ni un G52 que hubieran quedado activos: el origen sigue desplazado y las cotas absolutas se miden desde ese origen desplazado, que es exactamente el motivo por el que un programa correcto puede mecanizar en el sitio equivocado. Tampoco garantiza que el control arranque en absoluto: el modo por defecto al encender depende de un parámetro de la máquina. Y en torno con juego de códigos A no significa absoluto en absoluto, sino un ciclo de cilindrado que mueve la herramienta al diámetro programado.

Errores que cuestan una pieza (o una herramienta)

  • Dar por hecho que el control arranca en G90: el modo por defecto al encender depende de un parámetro. Escribe G90 en el bloque de seguridad de cada herramienta.
  • Dejar activo un G91 del bloque anterior, típicamente después de un G91 G28 Z0., y seguir con cotas del plano: todos los movimientos siguientes se suman a la posición actual.
  • En torno Fanuc con juego de códigos A, escribir G90 pensando en el modo absoluto: se lanza el ciclo de cilindrado y la herramienta se va al diámetro programado en avance de corte.
  • Mezclar G90 con la Z y la R de un ciclo fijo sin recalcular: en absoluto son cotas y en incremental son distancias, así que el mismo ciclo taladra a otra profundidad.
  • Creer que G90 cancela un G92 o un G52 activo: son grupos distintos y el desplazamiento de origen sigue puesto aunque las cotas sean absolutas.
  • Escribir en G90 un subprograma de patrón repetido: si el patrón se repite en varias posiciones, tiene que ir en incremental y posicionarse desde el bloque de llamada.

Preguntas Frecuentes (FAQ)

¿Pueden convivir G90 y G91 en el mismo programa?

Sí, y es lo habitual: se trabaja en G90 y se cambia a G91 para bloques concretos, como la retirada G91 G28 Z0. o un patrón repetido. Lo importante es volver a G90 justo después. En Siemens y Heidenhain se puede incluso mezclar dentro de un bloque con AC() e I.

¿G90 significa lo mismo en torno que en fresadora?

No siempre. En fresadora G90 es el modo absoluto. En torno Fanuc con juego de códigos A, G90 es el ciclo fijo de cilindrado y el absoluto se expresa usando X y Z frente a U y W. Antes de reutilizar un bloque de fresa en un torno, comprueba el juego de códigos del control.

¿Cómo sé si está activo G90 o G91?

En la pantalla de códigos modales del control, que muestra el estado de cada grupo. Es la comprobación de treinta segundos que conviene hacer antes de arrancar un programa a mitad o después de mover la máquina en manual.

¿G90 afecta a los I, J y K de los arcos?

En Fanuc y Haas no: los centros de arco son incrementales desde el punto de partida aunque estés en G90. Solo cambian si el control admite G90.1 y lo activas; G91.1 los devuelve al comportamiento normal.

¿Y a los ciclos fijos de taladrado?

Sí, a dos direcciones: con G90 la Z es la cota del fondo y la R la cota del plano de referencia. Con G91 la Z pasa a ser la profundidad medida desde R y la R una distancia desde la posición actual, así que el mismo ciclo hace otro agujero.

Códigos relacionados

G91G54G92G90.1

G00

Movimiento

Posicionamiento rápido

Movimiento rápido hasta una coordenada sin controlar avance de corte.

G01

Movimiento

Interpolación lineal

Movimiento lineal controlado con avance programado.

G02

Movimiento

Interpolación circular horaria

Arco circular en sentido horario en el plano activo.

G02.1/G03.1

Interpolación

Interpolación espiral (circular threading B)

Interpolación espiral CW/CCW: movimiento helicoidal continuo con paso variable; usado en roscado B y algunas operaciones de lapeado.

G02.2/G03.2

Interpolación

Interpolación evolvente

Interpolación a lo largo de una evolvente de círculo (involute interpolation), usada en fabricación de engranajes.

G03

Movimiento

Interpolación circular antihoraria

Arco circular en sentido antihorario en el plano activo.

G04

Control de programa

Pausa temporizada

Detiene temporalmente la ejecución durante un tiempo o número de revoluciones definido.

G05/G05.1

Alta velocidad

Alta velocidad / AI contour

Activa funciones de mecanizado de alta velocidad, anticipación de trayectoria o control avanzado de contorno.

G5/G5.1/G5.2

Interpolación avanzada

Splines y NURBS

Interpolaciones por spline cúbica, spline cuadrática o NURBS en controles que lo soportan.

G05.4

Alta velocidad

HRV3/HRV4 on/off

Activa o desactiva el control de corriente HRV3/HRV4 (High Response Vector) para mejorar la precisión de servo en alta velocidad.

G06.2

Alta velocidad

Interpolación NURBS

Interpolación de curvas NURBS (Non-Uniform Rational B-Spline) directamente en el control, reduciendo puntos de bloque y mejorando la suavidad.

G07

Interpolación

Interpolación eje hipotético

Define un eje hipotético (virtual) para interpolación; usado en mecanizado de piezas con simetría o para coordinar movimientos no físicos.

G7/G8

Torno

Modo diámetro/radio en torno

Selecciona si las coordenadas X de torno se interpretan como diámetro o radio según control.

G08/G09

Trayectoria

Suavizado y parada exacta puntual

Funciones usadas para activar/desactivar suavizado o exigir parada exacta en un bloque concreto según control.

G10

Offsets

Escritura de offsets

Permite escribir offsets de herramienta, trabajo u otros datos desde el programa.

G12/G13

Ciclos fresado

Cajera circular

Ciclo de interpolación circular para mecanizar cajeras o patrones circulares según control.

G15/G16

Coordenadas

Coordenadas polares

Activa o cancela programación en coordenadas polares, normalmente radio y ángulo.

G17/G18/G19

Plano

Selección de plano

Define el plano activo para arcos y compensaciones.

G20/G21

Unidades

Unidades pulgadas / milímetros

Selecciona programación en pulgadas o milímetros.

G22/G23

Seguridad

Límites de carrera programados

Activa o desactiva comprobación de zona/límites almacenados según control.

¿Qué son los códigos preparatorios (G) y auxiliares (M)?

Los códigos G preparan y gobiernan el movimiento de la herramienta: desplazamientos rápidos, interpolación lineal, interpolación circular, ciclos fijos, planos de trabajo y compensaciones. Los códigos M controlan funciones auxiliares de la máquina como husillo, refrigerante, parada, cambio de herramienta o fin de programa.

Categorías principales de programación

Movimiento e interpolación (G00, G01, G02, G03)

G00 se usa para posicionamiento rápido, G01 para avance lineal de corte y G02/G03 para interpolación circular horaria o antihoraria. Son la base de la mayoría de programas CNC en fresadora y torno.

Ciclos fijos y subprogramas

Los ciclos fijos simplifican operaciones repetitivas como taladrado, roscado, mandrinado o desbaste. Su sintaxis cambia mucho entre controles, por lo que conviene validar siempre el manual de máquina.

Preguntas Frecuentes (FAQ)

¿Cuál es la diferencia entre un código G y un código M?

Los códigos G (preparatorios) definen la geometría y el movimiento de la herramienta, como interpolaciones lineales o ciclos de desbaste. Los códigos M (misceláneos o auxiliares) controlan el hardware de la máquina, como el encendido del husillo (M03), el refrigerante (M08) o el fin de programa (M30).

¿Los códigos G son universales para todos los tornos y fresadoras?

No totalmente. Aunque los movimientos básicos como G00, G01, G02 y G03 son universales, los ciclos fijos complejos, como G71 para desbaste o G83 para taladrado profundo, tienen sintaxis y parámetros diferentes según uses Fanuc, Haas, Siemens o Heidenhain.

¿Qué es y cuándo se usa el código G01?

G01 es el código de interpolación lineal. Se utiliza para ordenar a la herramienta que se mueva en línea recta hasta una coordenada específica a un avance de corte controlado y programado por la letra F.

¿Qué diferencia hay entre los códigos G90 y G91?

El código G90 establece el sistema de posicionamiento absoluto, donde todas las coordenadas se miden desde el cero pieza (origen). El G91 activa el posicionamiento incremental, donde cada nuevo movimiento se calcula desde la posición actual de la herramienta.

¿Para qué sirven los códigos G41 y G42 en mecanizado?

Estos códigos activan la compensación del radio de la herramienta o plaquita. G41 compensa la trayectoria hacia la izquierda del contorno programado según el sentido de avance, y G42 hacia la derecha. Se usan para mecanizar perfiles, chaflanes y radios con medidas exactas sin clavar la herramienta.

¿Cómo se cancelan los ciclos fijos y las compensaciones?

Para evitar colisiones, es obligatorio cancelar las funciones modales cuando ya no se necesitan. El código G80 cancela cualquier ciclo fijo activo, como los de taladrado. G40 cancela la compensación de radio de herramienta, y G49 cancela la compensación de longitud, muy usado en fresadora.

¿Cuáles son los códigos M auxiliares imprescindibles?

Los códigos de hardware más estandarizados son M03 (giro del husillo a derechas), M04 (giro a izquierdas), M05 (parada del husillo), M08 (encendido del refrigerante o taladrina), M09 (apagado del refrigerante) y M30 (fin del programa, detención de ejes y rebobinado).

¿Los ciclos fijos de Fanuc funcionan igual en otros controles?

No. Aunque los movimientos de interpolación (G00 a G03) son un estándar ISO muy extendido, la sintaxis de los ciclos complejos cambia. Por ejemplo, el ciclo de desbaste en torno es un G71 en Fanuc, pero en Siemens requiere una estructura de parámetros diferente, como CYCLE95.

¿Qué significa la letra F, S y T en el código CNC?

Acompañando a los códigos G y M, la letra F (Feed) define el avance de corte, la letra S (Speed) establece las revoluciones por minuto o la velocidad de corte del husillo, y la letra T (Tool) llama al número de la herramienta y su corrector en la torreta o cargador.

Herramientas relacionadas