Fanuc / Haas (movimiento)
G91 G01 X25. Y0. F300
Cada cota es un incremento con signo desde donde está la herramienta. Al terminar el tramo incremental hay que volver a G90 explícitamente: el control no lo hace solo.
Usamos cookies y almacenamiento técnico propios para que la web funcione, tecnologías de seguridad de Google reCAPTCHA y, solo si aceptas, la analítica de Vercel (sin cookies ni seguimiento entre sitios). Puedes aceptar o rechazar la analítica; ambas opciones son equivalentes y puedes cambiar tu decisión cuando quieras. Más información: Política de cookies, Política de privacidad, Aviso legal y Términos y condiciones.
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.
G91 hace que cada cota se mida desde la posición actual de la herramienta y no desde el cero pieza: X10. en G91 significa diez milímetros más allá de donde estás, en el sentido positivo del eje. Es modal y se usa en casos concretos: la retirada segura G91 G28 Z0., los patrones repetidos con K o L y los subprogramas de geometría. Fuera de ahí, olvidarse de volver a G90 es una de las causas de choque más frecuentes.
Ver la ficha completa de la familiaFanuc / Haas (movimiento)
G91 G01 X25. Y0. F300
Cada cota es un incremento con signo desde donde está la herramienta. Al terminar el tramo incremental hay que volver a G90 explícitamente: el control no lo hace solo.
Fanuc / Haas (retirada segura)
G91 G28 Z0.
El uso más habitual de G91: sube el eje Z desde donde esté hasta el punto de referencia, sin punto intermedio. El mismo bloque en G90 pasaría antes por el Z0 del cero pieza, es decir, por la cara de la pieza.
Siemens 840D / 828D
G91 G1 X25 F300
Siemens permite además dar una cota incremental suelta dentro de un bloque absoluto con IC(): X=IC(25). Así se evita cambiar de modo para un solo eje.
Heidenhain TNC (Klartext)
L IX+25 R0 F300
No hay un G91 modal: la I delante del nombre del eje marca que esa cota concreta es incremental. Las cotas sin I siguen siendo absolutas dentro del mismo bloque.
| Letra | Qué indica | Unidad |
|---|---|---|
| X Y Z | Incremento con signo desde la posición actual. El signo marca el sentido, no el lado de la pieza. | mm / pulg |
| Z y R en ciclos fijos | Con G91, la R se mide desde la posición actual del eje y la Z es la profundidad medida desde el plano R, no cotas del cero pieza. | mm / pulg |
| K / L | Repeticiones del ciclo fijo, que solo tienen efecto en modo incremental: K en Fanuc, L en Haas. Cada repetición aplica de nuevo el incremento de X e Y. | número entero |
Fila de cinco agujeros de Ø5 separados 25 mm en X, en una placa de 14 mm. En absoluto habría que escribir las cinco cotas; en incremental basta con programar el ciclo una vez y repetirlo cuatro veces más con el paso de 25 mm. Los agujeros quedan en X20, X45, X70, X95 y X120.
| G91 G28 Z0. | ( Z a referencia en incremental antes del cambio. ) |
| T4 M06 | ( Broca de Ø5. ) |
| G90 G54 G00 X20. Y30. | ( El punto de partida siempre en absoluto: primer agujero de la fila. ) |
| G43 H04 Z25. M03 S2400 | ( Longitud de la T4 y husillo en marcha. Z25 queda como posición de partida del eje. ) |
| M08 | ( Refrigerante. ) |
| G91 G99 G81 X0. Y0. Z-18. R-23. F180 | ( Ciclo en incremental: R-23 baja 23 mm desde Z25 hasta la cota Z2, y Z-18 es la profundidad medida desde el plano R (de Z2 a Z-16). X0 Y0 taladra en la posición actual sin moverse. ) |
| X25. K4 | ( Repite el ciclo cuatro veces más desplazándose 25 mm en X cada vez. En Haas la repetición se escribe L4. En G90 este bloque repetiría el mismo agujero en el mismo sitio. ) |
| G80 G90 G00 Z25. M09 | ( Cancela el ciclo y vuelve a absoluto en el mismo bloque. Dejar G91 activo aquí es la causa clásica de un movimiento inesperado en el bloque siguiente. ) |
| G91 G28 Z0. M05 | ( Retirada segura en incremental y husillo parado. ) |
| G90 | ( Deja el control en absoluto. ) |
| M30 | ( Fin de programa. ) |
En tres situaciones concretas. La primera, la retirada segura: G91 G28 Z0. sube el eje desde donde esté sin pasar por el cero pieza. La segunda, los patrones repetidos: una fila o una matriz de agujeros se escribe una vez y se repite con K o L, que solo funcionan en incremental. La tercera, los subprogramas de geometría que se reutilizan en varias posiciones: el subprograma lleva la forma en incremental y el programa principal la coloca posicionándose en absoluto antes de cada llamada. Para todo lo demás, el absoluto es más seguro y más fácil de depurar.
En un ciclo fijo el cambio de modo cambia el significado de la R y de la Z: en incremental la R se mide desde la posición actual del eje y la Z es la profundidad desde el plano R. Por eso, al pasar un ciclo de absoluto a incremental hay que recalcular las dos, no solo copiarlas. La regla de taller que evita disgustos es cerrar siempre el tramo incremental con G80 G90 en el mismo bloque, y no dejar nunca un G91 activo al llegar a un cambio de herramienta, a un final de programa o a un salto de subprograma.
Gana en programas cortos y reutilizables: un patrón de veinte agujeros cabe en dos bloques y el mismo subprograma sirve para cuatro posiciones distintas. Pierde en trazabilidad, porque para saber dónde está la herramienta hay que sumar todos los bloques anteriores, y en precisión acumulada, porque si el plano está acotado en absoluto y tú encadenas incrementos redondeados, el último punto arrastra la suma de todos los redondeos. Por eso los planos acotados desde un origen común se programan en absoluto y solo las repeticiones se hacen en incremental.
Porque en G91 el punto intermedio es la posición actual y la máquina sube directa a referencia. En G90, ese Z0. es la cota Z0 del cero pieza, o sea la cara de la pieza: la herramienta baja hasta ahí antes de subir. Es uno de los choques más habituales en fresadora.
Para patrones repetidos con K o L, para subprogramas de geometría reutilizables y para movimientos de retirada. Para el resto del programa, el absoluto es más seguro porque un error en un bloque no se arrastra a los siguientes.
Sí, si los incrementos vienen de restar cotas redondeadas de un plano acotado en absoluto. El control calcula con más decimales que los que tú escribes, así que el error está en el programa, no en la máquina. La solución es programar en absoluto lo que el plano acota en absoluto.
En Siemens con IC() y en Heidenhain con la I delante del eje, sí, eje por eje. En Fanuc y Haas no: hay que cambiar el modo con G91 y volver con G90, y ese ida y vuelta conviene hacerlo en el mismo bloque que el resto de la cancelación.
No. El origen sigue siendo el que diga G54 o el que esté activo: lo único que cambia es desde dónde se miden las cotas de cada bloque. Eso sí, un G10 L2 escrito con G91 activo suma valores al origen en vez de sustituirlos, y eso sí desplaza el cero.
G00
MovimientoPosicionamiento rápido
Movimiento rápido hasta una coordenada sin controlar avance de corte.
G01
MovimientoInterpolación lineal
Movimiento lineal controlado con avance programado.
G02
MovimientoInterpolación circular horaria
Arco circular en sentido horario en el plano activo.
G02.1/G03.1
InterpolaciónInterpolació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ónInterpolación evolvente
Interpolación a lo largo de una evolvente de círculo (involute interpolation), usada en fabricación de engranajes.
G03
MovimientoInterpolación circular antihoraria
Arco circular en sentido antihorario en el plano activo.
G04
Control de programaPausa temporizada
Detiene temporalmente la ejecución durante un tiempo o número de revoluciones definido.
G05/G05.1
Alta velocidadAlta 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 avanzadaSplines y NURBS
Interpolaciones por spline cúbica, spline cuadrática o NURBS en controles que lo soportan.
G05.4
Alta velocidadHRV3/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 velocidadInterpolació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ónInterpolació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
TornoModo diámetro/radio en torno
Selecciona si las coordenadas X de torno se interpretan como diámetro o radio según control.
G08/G09
TrayectoriaSuavizado y parada exacta puntual
Funciones usadas para activar/desactivar suavizado o exigir parada exacta en un bloque concreto según control.
G10
OffsetsEscritura de offsets
Permite escribir offsets de herramienta, trabajo u otros datos desde el programa.
G12/G13
Ciclos fresadoCajera circular
Ciclo de interpolación circular para mecanizar cajeras o patrones circulares según control.
G15/G16
CoordenadasCoordenadas polares
Activa o cancela programación en coordenadas polares, normalmente radio y ángulo.
G17/G18/G19
PlanoSelección de plano
Define el plano activo para arcos y compensaciones.
G20/G21
UnidadesUnidades pulgadas / milímetros
Selecciona programación en pulgadas o milímetros.
G22/G23
SeguridadLímites de carrera programados
Activa o desactiva comprobación de zona/límites almacenados según control.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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).
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.
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.
IDE CNC: edición con tooltips G/M, inspector de línea, conversión entre controles y trayectoria 2D/3D.
Guia de Alarmas y Soluciones CNC. Introduce el código de error o síntoma para encontrar la causa y cómo repararlo a pie de máquina.
Estima el tiempo de ciclo de un programa CNC: corte, rápidos, ciclos fijos, dwells y cambios de herramienta. Piezas/hora y desglose por partida.