El software CAM ha hecho que el código G sea menos visible en los flujos de trabajo cotidianos del CNC, pero no ha hecho que el código G sea menos importante. Cada trayectoria de herramienta que genera un sistema CAM acaba convirtiéndose en un archivo de código G, y ese archivo es lo que el controlador CNC ejecuta realmente, línea a línea, sin tener en cuenta el modelo CAD ni la estrategia de mecanizado que hay detrás. Cuando una herramienta se hunde demasiado, el tiempo de ciclo es inesperadamente alto o el acabado superficial no coincide con la simulación, la respuesta está casi siempre en el código G, no en la configuración CAM. Entender el código G en el mecanizado CNC significa entender lo que la máquina está haciendo realmente, en lugar de lo que usted pretende que haga.

Este artículo trata el código G desde la perspectiva de cómo los controladores CNC lo interpretan y ejecutan en entornos de mecanizado reales. El objetivo es práctico: sintaxis, estructura, lógica modal, errores comunes y un ejemplo de código paso a paso que muestra exactamente lo que ocurre a nivel de máquina. Tanto si está depurando un programa, revisando la configuración de un proveedor o tratando de entender por qué un tiempo de ciclo presupuestado parece erróneo, éste es el marco a partir del cual trabajar.


¿Qué es el código G y cómo controla las máquinas CNC?

La definición que realmente importa en la producción

El código G es el lenguaje de instrucciones de bajo nivel que ejecutan directamente los controladores de máquinas CNC. Cada línea especifica comandos de movimiento, posiciones de ejes, velocidades de avance, estados de cabezal y funciones auxiliares. No es descriptivo: no dice “mecanizar esta cavidad” o “acabar esta superficie”. Dice “desplázate a esta coordenada a este avance en este modo”. El controlador sigue esas instrucciones exactamente, sin interpretación de la intención más allá de lo que está codificado.

Esta distinción es importante en la práctica. El software CAM define lo que debe ocurrir en función de la geometría y la estrategia de mecanizado. El archivo de código G define lo que el controlador ejecutará realmente. A menudo son muy parecidos, pero no siempre idénticos, y en la distancia que los separa se encuentran la mayoría de los problemas de mecanizado.

Cómo leen el código G los controladores CNC

Los controladores procesan el código G secuencialmente, un bloque cada vez. Tras leer cada línea, el controlador actualiza su estado interno -modo de movimiento activo, sistema de coordenadas, desplazamiento de longitud de herramienta, selección de plano- y, a continuación, ejecuta el comando. Los comandos modales permanecen activos hasta que se cambian explícitamente. Esta es la parte que pilla a la mayoría de la gente desprevenida: un comando establecido hace 50 líneas puede seguir controlando el comportamiento de la máquina en la línea 200 si nada lo canceló.

Los controladores también aplican funciones de anticipación, límites de aceleración y algoritmos de interpolación después de leer el código G, no durante la generación del CAM. Dos máquinas que ejecutan un código G idéntico pueden producir perfiles de movimiento diferentes si los parámetros de sus controladores difieren. Por este motivo, los resultados del mecanizado no se determinan completamente en la fase de CAM.

Qué lugar ocupa el código G en el flujo de trabajo del CNC

El flujo desde el diseño hasta el corte sigue una secuencia clara:

Modelo CAD → Estrategia de sendas CAM → Salida de código G → Controlador CNC → Movimiento servo → Arranque de material.

El código G es el punto de transferencia. Todo lo anterior es diseño y planificación. Todo lo que sigue es el corte físico. Entender el código G significa entender lo que ocurre en ese límite, que es exactamente donde los problemas son más difíciles de ver y más caros de solucionar.


Cómo se estructura un programa CNC G-Code

Bloques, líneas y orden de ejecución

Un programa en código G se construye a partir de bloques: líneas individuales que el controlador procesa en secuencia, de arriba abajo. Cada bloque representa un ciclo de instrucciones. El controlador no tiene conocimiento de los bloques futuros más allá de una previsión limitada, por lo que el orden de los comandos determina directamente el comportamiento de la máquina.

Un programa bien estructurado sigue esta secuencia:

  1. Inicio del programa e inicialización de seguridad
  2. Declaración de unidades, plano y modo de coordenadas
  3. Selección de herramientas y activación de offset
  4. Movimientos de mecanizado (desbaste, acabado, taladrado, etc.)
  5. Repliegue y cambio de herramienta (si hay varias herramientas)
  6. Fin de programa y reinicio

Omitir o reordenar pasos crea riesgos. Un movimiento de corte ejecutado antes de la activación del desplazamiento de longitud de la herramienta, por ejemplo, posiciona la herramienta basándose en una referencia Z no corregida, que es una forma fiable de producir un bloqueo incluso cuando la geometría de la trayectoria de la herramienta es correcta.

Palabras de dirección: Qué hace cada letra

Cada bloque se compone de palabras de dirección: una letra que identifica la función, seguida de un número que define el valor.

  • G - Comando de movimiento o modo (rápido, lineal, circular, selección de plano, etc.)
  • M - Funciones de la máquina y auxiliares (husillo, refrigerante, cambio de herramienta, fin de programa)
  • X, Y, Z - Posiciones objetivo de los ejes
  • F - Avance (distancia por minuto o por revolución, según el modo)
  • S - Velocidad del cabezal (RPM)
  • T - Número de herramienta

En una línea pueden aparecer varias palabras de dirección. El controlador las interpreta conjuntamente para determinar el tipo de movimiento, la posición y el estado de la máquina. La secuencia dentro de un bloque también es importante en algunos controladores; consulte siempre el manual del controlador para conocer el orden de análisis sintáctico de los bloques.

Comandos modales y no modales

Este es el concepto que provoca más errores en la programación de CNC y más confusión a la hora de depurar.

Comandos modales permanecen activas en varios bloques hasta que se cancelan o sustituyen explícitamente. G01 (interpolación lineal), G90 (posicionamiento absoluto) y F (velocidad de avance) son modales. Si se configuran una vez, se aplican a todos los bloques siguientes hasta que se modifican.

Comandos no modales sólo se aplican al bloque en el que aparecen. G04 (dwell) es un ejemplo típico - hace una pausa de un bloque, luego la ejecución continúa sin que se aplique de nuevo el dwell.

El peligro con los comandos modales: un modo establecido al principio del programa controla el comportamiento de todo lo que sigue, incluyendo bloques escritos mucho más tarde. Una transición G00 a G01 omitida donde se espera una, o una velocidad de avance que no se actualizó entre operaciones, puede producir un movimiento incorrecto sin activar ninguna alarma del controlador.

Desglose de una línea típica de código G

G01 X50.0 Y20.0 Z-5.0 F300
  • G01 - Interpolación lineal (modal; permanece activa hasta que se especifica otro modo de movimiento)
  • X50,0 Y20,0 Z-5,0 - Posición del objetivo en el sistema de coordenadas actual
  • F300 - Avance de 300 mm/min (modal; se aplica a todos los movimientos de corte posteriores)

Si el siguiente bloque dice X80,0 Y20,0 sin código G, la máquina se mueve linealmente a 300 mm/min a la nueva posición - porque G01 y F300 siguen activos. Eso es un comportamiento correcto si se pretende, y un problema si no se espera.


Los códigos G más utilizados en el mecanizado CNC

Comandos de movimiento: G00, G01, G02, G03

Estos cuatro códigos representan la mayor parte del movimiento en cualquier programa CNC.

G00 - Posicionamiento rápido Desplaza la herramienta a una posición a la velocidad máxima de desplazamiento de la máquina. El regulador no respeta el avance programado durante G00. Utilícelo exclusivamente para movimientos que no sean de corte: posiciones libres, aproximaciones de cambio de herramienta y reposicionamiento por encima de la pieza. Nunca utilice G00 mientras la herramienta esté en contacto con el material; los límites de avance no se aplican y el resultado es impredecible.

G01 - Interpolación lineal Ejecuta un movimiento de corte en línea recta a la velocidad de avance programada. Este es el comando de corte principal para fresado, torneado y cualquier remoción controlada de material. La selección del avance debe reflejar el diámetro de la herramienta, el material y el recubrimiento, no un valor genérico “seguro”. Para aluminio 6061 con una fresa de metal duro de 10 mm, F400-600 mm/min a S8000-12000 RPM suele ser adecuado. Para acero inoxidable 316L con la misma herramienta, F100-180 mm/min a S3000-5000 RPM es más realista debido al comportamiento de endurecimiento por deformación.

G02 / G03 - Interpolación circular (CW / CCW) Genera un movimiento de arco en el plano activo. G02 se mueve en el sentido de las agujas del reloj; G03 en sentido contrario. La geometría del arco se define mediante un punto inicial, un punto final y un desplazamiento del centro (I, J, K) o un valor de radio (R). Una geometría de arco mal definida - en la que los puntos inicial y final no coinciden con el radio especificado - produce alarmas en el controlador o sobrecortes. Verifique siempre las definiciones de arco en la simulación antes de cortar.

Selección de planos y unidades: G17-G19, G20, G21

G17, G18, G19 seleccionar el plano de mecanizado activo: XY, XZ e YZ respectivamente. La selección del plano afecta directamente a la interpretación de los arcos G02/G03. Un arco G02 programado con coordenadas XY se comporta correctamente en G17 pero produce un movimiento incorrecto si G18 o G19 están activos desde una operación anterior.

G20 / G21 declarar unidades en pulgadas o métricas. Esto siempre debe establecerse explícitamente al inicio del programa. Heredar unidades de un programa anterior es una de las formas menos obvias de bloquear una máquina - el controlador escala todas las posiciones por el factor de conversión de unidades, lo que mueve la herramienta a lugares que no se acercan a las posiciones previstas.

Modos de posicionamiento: G90 vs G91

G90 - Posicionamiento absoluto: Todas las coordenadas hacen referencia al cero de trabajo activo. Este es el modo estándar para la mayoría de los mecanizados CNC porque cada posición es inequívoca - X50.0 siempre significa 50 mm desde cero, independientemente de dónde estaba la herramienta anteriormente.

G91 - Posicionamiento incremental: Las coordenadas hacen referencia a la posición actual de la herramienta. Útil para patrones repetitivos (matrices de agujeros, espaciado de ranuras) donde definir todo desde cero requeriría cálculos. El riesgo es el error acumulativo - un error de redondeo en un movimiento desplaza cada posición incremental subsiguiente. Utilice G91 deliberadamente y vuelva siempre a G90 después de la secuencia incremental.

Códigos de seguridad y referencia

G04 (Vivienda): Pausa el movimiento durante un tiempo o número de revoluciones del cabezal definidos. Los usos comunes incluyen la rotura de virutas durante el taladrado profundo y permitir que el husillo se estabilice después de un cambio de velocidad antes de comenzar una pasada de acabado de precisión.

G28 (Retorno de referencia de la máquina): Envía los ejes a través de un punto intermedio a la máquina de origen. El punto intermedio es crítico - si no se define explícitamente en una posición segura, G28 puede conducir la herramienta a través de la pieza o accesorio en el camino a casa.

G53 (Movimiento de coordenadas de la máquina): Se desplaza directamente en las coordenadas de la máquina, sin desplazamientos de trabajo. Más predecible que G28 para movimientos de estacionamiento y cambios de herramienta cuando se utiliza correctamente.

Categoría Código G Función Uso típico
Movimiento G00 Movimiento rápido Posicionamiento no cortante
Movimiento G01 Corte lineal Mecanizado controlado
Movimiento G02 / G03 Corte circular Arcos, bolsillos, perfiles
Plano G17-G19 Selección del plano Definición de la dirección del arco
Unidades G20 / G21 Pulgadas / sistema métrico Inicialización del programa
Posicionamiento G90 / G91 Absoluto / Incremental Control de coordenadas
Seguridad G28 / G53 Movimientos de referencia Cambio de herramienta, holgura

Los códigos M y su funcionamiento junto con los códigos G

Qué controlan los códigos M

Mientras que los códigos G rigen cómo se mueve la herramienta en el espacio, los códigos M rigen lo que hace la máquina: encendido/apagado del husillo, encendido/apagado del refrigerante, cambio de herramienta y flujo del programa. En las operaciones prácticas de mecanizado, los códigos M definen el estado de la máquina que los movimientos de corte del código G suponen que ya está en vigor. Un movimiento de corte (G01) ejecutado sin un cabezal activo (M03) daña la herramienta y la pieza de trabajo. Un cambio de herramienta (M06) ejecutado sin una distancia adecuada entre ejes puede provocar una colisión.

Los códigos M que aparecen en casi todos los programas

  • M03 - Husillo encendido, giro a la derecha
  • M04 - Husillo encendido, sentido antihorario (se utiliza para operaciones específicas como el roscado inverso)
  • M05 - Tope del husillo
  • M06 - Cambio de herramienta (pausa la ejecución hasta que finaliza el cambio)
  • M08 - Refrigerante encendido
  • M09 - Refrigerante apagado
  • M30 - Fin de programa y reinicio

La secuencia es importante. M03 debe aparecer antes del primer movimiento de corte. M08 debe activarse antes de que la herramienta se enganche al material, no durante. M06 requiere que la máquina esté en una posición segura - típicamente verificada por un movimiento G28 o G53 a una ubicación definida de cambio de herramienta.

Código G y código M: Complementarios, no intercambiables

Aspecto Código G Código M
Función principal Movimiento de la herramienta y control de trayectoria Estado de la máquina y funciones auxiliares
Acciones típicas Movimientos lineales, arcos, posicionamiento Husillo, refrigerante, cambio de herramienta, fin de programa
Impacto de la ejecución Geometría y avance Preparación para el corte y seguridad de la máquina
Riesgo en caso de error Colisión, error dimensional Daños en la herramienta, cambio de herramienta inseguro

Velocidad de avance, velocidad del husillo y comandos de herramienta: Cómo afectan a la calidad de la pieza

Avance (F) y acabado superficial

El avance determina directamente la carga de viruta, es decir, el espesor de material que cada filo de corte elimina por revolución. Si es demasiado alto, la herramienta se sobrecarga y se producen vibraciones, desgarros y un mal acabado superficial. Si es demasiado bajo, la herramienta roza en lugar de cortar, lo que concentra el calor en el filo de corte y favorece la formación de filos acumulados, que también degradan el acabado.

La relación entre la velocidad de avance y el acabado superficial es específica de cada material. Para el aluminio 6061, una fresa de 10 mm funcionando a S10000 RPM con F500 mm/min produce una carga de viruta de aproximadamente 0,025 mm por diente (suponiendo una herramienta de 2 filos) - que normalmente produce Ra 1,6-3,2 µm en una pasada de desbaste. Bajar a F200 mm/min reduce la carga de viruta pero aumenta el calor y el rozamiento, a menudo empeorando el acabado en lugar de mejorarlo. Las pasadas de acabado utilizan profundidades de corte reducidas, no necesariamente velocidades de avance reducidas, para conseguir Ra 0,8 µm o mejor.

En el caso del acero inoxidable 316L, las velocidades de avance son significativamente inferiores (normalmente F100-180 mm/min) porque el material se endurece durante el corte. Superar las cargas de viruta recomendadas provoca un rápido desgaste de la herramienta y el desgarro de la superficie. La aplicación constante de refrigerante (por inmersión o a través de la herramienta) es esencial para controlar el calor y evitar el endurecimiento por deformación entre pasadas.

Velocidad del cabezal (S) y rendimiento de corte

La velocidad del cabezal fija la velocidad de corte superficial en el diámetro exterior de la herramienta. La velocidad correcta depende del diámetro, el material y el recubrimiento de la herramienta. Una fresa de metal duro de 10 mm recubierta de TiAlN que corte aluminio 6061 suele funcionar a una velocidad superficial de 200-400 m/min, lo que equivale aproximadamente a S6.400-12.700 RPM. La misma herramienta en acero inoxidable 316L funciona a una velocidad superficial de 40-80 m/min - aproximadamente S1.270-2.550 RPM - para limitar la generación de calor y el desgaste de la herramienta.

Una velocidad de husillo excesiva en acero inoxidable genera calor concentrado que ablanda el filo de corte, acortando drásticamente la vida útil de la herramienta. Una velocidad insuficiente en aluminio produce un corte ineficaz y una mala evacuación de la viruta. Conseguir una velocidad de husillo correcta no consiste en utilizar valores conservadores, sino en adaptar la velocidad a lo que la herramienta y el material realmente requieren.

Comandos de herramienta y activación del desplazamiento

La selección de herramienta (T) especifica qué herramienta cargar. La compensación de la longitud de la herramienta (G43 con desplazamiento H) aplica la referencia del eje Z correcta para esa herramienta específica. Si se activa el offset incorrecto - o si se omite G43 por completo - la referencia del eje Z se desplaza por la diferencia entre el offset programado y la longitud real de la herramienta. Esto produce una penetración demasiado profunda o una retracción insuficiente para despejar la pieza.

Antes de cualquier cambio de herramienta, la máquina debe estar en una posición segura. La mayoría de los controladores requieren un posicionamiento explícito en una posición de cambio de herramienta antes de ejecutar M06. Si se omite este paso, se corre el riesgo de una colisión entre la herramienta y la pieza de trabajo o la fijación durante el cambio.


Leyendo G-Code Paso a Paso: Un ejemplo completo de fresado

Leer correctamente el código G significa seguir el estado de la máquina después de cada línea, no sólo leer las posiciones. He aquí un programa de fresado 2D completo con comentarios de ingeniería sobre lo que hace realmente cada sección en la máquina.

%
O1001
G21 G90 G17
G00 X0 Y0
T1 M06
S8000 M03
G43 H01 Z50,0
G00 Z5,0
G01 Z-2,0 F200
G01 X50,0 Y0,0 F400
G01 X50,0 Y30,0
G01 X0,0 Y30,0
G01 X0,0 Y0,0
G00 Z50,0
M05
M30
%

G21 G90 G17 - Establece las unidades métricas, el posicionamiento absoluto y el plano XY. Estos tres estados modales controlan la interpretación de coordenadas para todo el programa. La omisión de cualquiera de ellos significa heredar el estado del programa anterior - una fuente común de comportamiento inesperado cuando se ejecutan programas secuencialmente.

G00 X0 Y0 - Desplazamiento rápido al programa cero en XY. Sin corte. La herramienta se desplaza a toda velocidad rápida; no hay protección de avance.

T1 M06 - Selecciona la herramienta 1 y ejecuta un cambio de herramienta. La ejecución se detiene hasta que se completa el cambio. La máquina debe estar en su posición de cambio de herramienta designada antes de esta línea, o existe riesgo de colisión.

S8000 M03 - Pone en marcha el husillo a 8.000 RPM en el sentido de las agujas del reloj. Para una fresa de 10 mm en aluminio 6061, esto corresponde a una velocidad superficial de aproximadamente 251 m/min, dentro del rango de corte eficiente para metal duro sin recubrimiento o recubierto de TiN.

G43 H01 Z50.0 - Activa la compensación de longitud de herramienta utilizando el offset H01 y se desplaza a Z50 en el sistema de referencia corregido. Esta es la línea que establece el punto de referencia Z correcto para el corte. La falta de G43 significa que la posición Z de la herramienta está referenciada sin la longitud real de la herramienta aplicada.

G00 Z5.0 - Aproximación rápida a 5 mm por encima de la superficie de trabajo. Todavía no hay corte - la herramienta se posiciona por encima de la pieza.

G01 Z-2.0 F200 - Penetración controlada hasta 2 mm de profundidad a F200 mm/min. El avance reducido durante la penetración limita la carga de corte axial. A F200 con una fresa de 2 filos de 10 mm, la carga de viruta por diente en la penetración es de aproximadamente 0,0125 mm, conservadora pero adecuada para un movimiento de entrada en Z.

G01 X50.0 Y0.0 F400 - Primer movimiento de corte lineal. El avance aumenta a F400 mm/min para el paso de corte lateral, produciendo una carga de viruta de aproximadamente 0,025 mm por diente a S8000 RPM - típico para el desbaste de aluminio.

Movimientos posteriores G01 - Traza los tres lados restantes del perfil rectangular. G01 y F400 permanecen activos (modales) - no es necesario volver a indicarlos a menos que cambie el avance.

G00 Z50.0 - Retroceso rápido a la altura Z de seguridad. El corte se ha completado; la máquina sale a toda velocidad.

M05 - Parada del cabezal. Detener siempre el cabezal antes de finalizar el programa.

M30 - Fin de programa y reset. El controlador vuelve al principio del programa, listo para la siguiente parte.

Errores comunes de lectura

Ignorar el estado modal: G01 y F400 permanecen activos hasta que se cambian explícitamente. Un programador que añada un nuevo movimiento más tarde y olvide que estos siguen activos obtendrá un movimiento de corte donde se pretendía un rápido.

Suponiendo que el orden sea flexible: El cabezal encendido (M03) debe preceder al movimiento de corte. Desplazamiento de herramienta (G43) debe activarse antes del posicionamiento Z. No son sugerencias, son requisitos para una ejecución segura.

Lectura de coordenadas sin seguimiento de estado: Una posición como Z-2,0 sólo tiene sentido en el contexto del sistema de coordenadas activo, el desplazamiento de la herramienta y el modo de posicionamiento. Lee el estado, luego lee las coordenadas.


Errores comunes del código G y cómo diagnosticarlos

La mayoría de los problemas graves de CNC no proceden de código complejo. Provienen de pequeños errores modales, desfases erróneos o desajustes de unidades que se propagan por el programa.

Errores modales

Un comando modal establecido incorrectamente - o nunca cancelado después de su uso - afecta a cada bloque que le sigue hasta que algo lo cambie. Si se deja activo G91 (modo incremental) después de una subrutina de palpación, todos los movimientos posteriores de intención absoluta se ejecutan como desplazamientos incrementales. La herramienta termina en ninguna parte cerca de la ubicación prevista, y el controlador no genera ninguna alarma porque el movimiento era sintácticamente válido.

Estos errores no se revelan al escanear líneas individuales. Es necesario seguir el estado de la máquina a lo largo de la secuencia del programa, mentalmente o mediante simulación.

Errores de coordenadas y desplazamiento

Los errores de código G de mayor riesgo son los relacionados con el sistema de coordenadas y el desplazamiento:

  • Desplazamiento del trabajo incorrecto (por ejemplo, G54 seleccionado cuando el programa espera G55).
  • Compensación de longitud de herramienta incorrecta o inexistente (desajuste G43/H)
  • G90/G91 confusión al cambiar entre los modos absoluto e incremental

Cada uno de estos puede producir un accidente o parte de chatarra sin ningún error de sintaxis. El controlador hace exactamente lo que dice el código - sólo que no es lo que se pretendía.

Enfoque de diagnóstico: Validación por capas

El enfoque estándar de ingeniería para la validación de código G funciona a través de capas de confianza creciente:

  1. Revisión del código: comprobación de unidades, sistemas de coordenadas, activaciones de desplazamiento y restablecimientos modales.
  2. CAM o simulación de controladores: verifique el movimiento gráficamente antes de que nada se ejecute
  3. Funcionamiento en seco - ejecutar con el husillo apagado y el desplazamiento del eje Z elevado 50-100 mm.
  4. Bloque único con anulación de avance: ejecute el programa real línea a línea a velocidad reducida.
Tipo de error Riesgo Prevención
Comando modal no reseteado Movimiento de corte inesperado Replantear explícitamente los códigos G críticos en cada operación
Sistema de coordenadas erróneo Mecanizado en el lugar equivocado Fijar siempre el offset de trabajo al inicio del programa
Desplazamiento de longitud de herramienta ausente Rotura o sobrecorte de la herramienta Activar G43 con valor H verificado antes del movimiento Z
Desajuste de unidades (G20/G21) Posiciones a escala o choque Declare las unidades explícitamente: nunca confíe en el valor por defecto
Movimiento rápido inseguro Colisión Utilizar planos de despeje y verificar el comportamiento en seco

Código G avanzado: Macros, subprogramas y ciclos fijos

Macrovariables y programación paramétrica

La programación de macros introduce variables en el código G, lo que permite una lógica paramétrica y condicional que los programas estáticos no pueden conseguir. En lugar de codificar profundidades, posiciones o velocidades de avance, los ingenieros definen los valores una vez y hacen referencia a ellos en todo el programa.

#100 = 20,0   (Longitud de la cavidad)
#101 = 5,0    (Profundidad de corte)
G01 X#100 Z-#101 F300

Este enfoque es especialmente valioso para familias de piezas (en las que el diámetro del orificio, la profundidad de la cajera o la distancia entre orificios varía en función de la configuración) y para ciclos de medición en máquina que adaptan los parámetros de mecanizado en función de los resultados de la inspección. La contrapartida es la complejidad: las macros requieren una cuidadosa documentación y validación, y los errores en la lógica condicional pueden producir movimientos inesperados.

Subprogramas y funciones repetidas

Los subprogramas (llamados con M98, devueltos con M99) permiten definir secuencias de movimiento repetidas una vez y ejecutarlas varias veces. Un patrón de taladros que aparece seis veces en una pieza no necesita seis copias de la secuencia de taladrado: un subprograma se encarga de todas las instancias.

M98 P2000 L6 (Llamar seis veces al subprograma O2000)

Además de la brevedad del código, los subprogramas mejoran la coherencia: los seis taladros siguen exactamente la misma secuencia de movimiento. Cualquier actualización de la estrategia de perforación -velocidad de avance, profundidad, incremento de pico- requiere cambiar un subprograma, no seis bloques de código distintos.

Ciclos enlatados: Productividad sin pérdida de control

Los ciclos fijos agrupan secuencias de mecanizado comunes (taladrar, roscar, taladrar, escariar) en comandos únicos. Un ciclo de taladrado que, de otro modo, requeriría bloques separados de aproximación, penetración, espera y retracción, se convierte en una sola línea:

G81 X20,0 Y10,0 Z-15,0 R2,0 F200

Esto reduce el tiempo de programación, acorta el código y produce un comportamiento consistente en todos los agujeros del patrón. Una advertencia importante: los ciclos fijos deben cancelarse con G80 una vez completados, y sus parámetros (modo de retracción, tiempo de espera, incremento de pico) deben coincidir con la implementación del controlador. El comportamiento de los ciclos fijos varía entre los controladores Fanuc, Haas y Siemens; compruébelo siempre con el manual de programación específico de la máquina.


Cómo varía el código G entre controladores CNC

Fanuc, Haas y más allá

Los controladores basados en Fanuc son lo más parecido que tiene la industria a una referencia de código G estándar. Muchos fabricantes de máquinas herramienta basan sus sistemas de control en la arquitectura Fanuc, lo que hace que el código compatible con Fanuc sea razonablemente portable entre máquinas. Los controladores Haas son en gran medida compatibles con Fanuc, pero incluyen extensiones propias, diferentes estados modales por defecto y una sintaxis de macros específica de Haas que puede alterar el comportamiento de ejecución en programas compartidos.

Los controladores Siemens y Heidenhain utilizan la sintaxis del código G, pero en la práctica funcionan de forma muy diferente. Heidenhain, en particular, se basa en la entrada conversacional para muchas operaciones. Mazatrol (el sistema propiedad de Mazak) es principalmente conversacional, con el código G como opción secundaria. Los programas escritos para un tipo de controlador suelen requerir una regeneración posterior (no sólo una edición) antes de ejecutarse en una plataforma diferente.

Por qué el código G no es universal

Diferencias específicas que importan en la práctica:

  • Los conjuntos de códigos G y M admitidos varían: algunos códigos válidos en un controlador generan alarmas en otro.
  • Los parámetros del ciclo de enlatado (profundidad de picoteo, tipo de retracción, tiempo de espera) difieren según el fabricante.
  • La sintaxis de las macrovariables y los comandos de lógica condicional son específicos del controlador
  • Los algoritmos de anticipación y los perfiles de aceleración afectan a la suavidad del movimiento incluso cuando el código G es idéntico.

Por este motivo, los postprocesadores CAM son específicos de cada máquina y no genéricos. El postprocesador traduce las trayectorias de herramientas CAM al dialecto de código G correcto para el controlador de destino, no a un código G universal que pueda ejecutar cualquier máquina.

Lo que deben saber los diseñadores y los equipos de compras

Desde el punto de vista del aprovisionamiento, el código G debe tratarse como datos de producción específicos de la máquina. Compartir un archivo de código G entre proveedores supone que las máquinas y los controladores son idénticos, una suposición que a menudo no se cumple. La mejor práctica es compartir datos CAD y CAM en lugar del código G final, y confirmar el tipo de máquina y la versión del controlador antes de transferir los programas. Cuando sea necesario compartir el código G, es esencial realizar una simulación en el controlador receptor antes del corte.


Conclusión

El código G en el mecanizado CNC es la capa final entre la intención del diseño y el corte físico. Los sistemas CAM planifican la trayectoria de la herramienta; el archivo de código G es lo que la máquina ejecuta realmente. Comprender la estructura del código G, la lógica modal y la secuencia de ejecución proporciona a los ingenieros una visibilidad directa de lo que ocurre en el filo de corte y de por qué se producen los problemas cuando se producen.

Para cualquiera que trabaje en entornos CNC, ya sea escribiendo programas, revisando configuraciones de proveedores o solucionando problemas de mecanizado, la alfabetización en código G significa un diagnóstico más rápido, una mejor comunicación con los operarios y menos sorpresas en el taller. No es necesario escribir código G desde cero en un flujo de trabajo basado en CAM. Lo que sí es necesario es leerlo, comprender lo que hará la máquina y reconocer cuando algo en el código no coincide con el resultado previsto.


FAQ

¿Todas las máquinas CNC utilizan el mismo código G?

No. El código G no está totalmente estandarizado en todo el sector. Los controladores Fanuc, Haas, Siemens y Heidenhain utilizan sintaxis de código G con diferentes conjuntos de comandos, definiciones de ciclos predefinidos, sintaxis de macros y estados modales predeterminados. Los programas que funcionan correctamente en un controlador pueden activar alarmas o producir movimientos diferentes en otro. Por este motivo, los postprocesadores CAM son específicos para cada controlador.

¿Pueden funcionar las máquinas CNC sin código G?

A nivel de control, no. Incluso la programación conversacional y las trayectorias de herramienta generadas por CAM se traducen en última instancia a código G (o instrucciones de bajo nivel equivalentes) para su ejecución. El código G es el lenguaje de ejecución nativo de la máquina; todo lo demás es una capa que lo recubre.

¿Sigue siendo necesaria la programación manual de código G?

En los entornos de producción, rara vez es necesaria una programación manual completa. Sin embargo, saber leer y modificar el código G sigue siendo una habilidad útil para la depuración, la optimización del tiempo de ciclo, las pequeñas modificaciones en programas existentes y la comunicación con los operarios de las máquinas y los proveedores. La mayoría de los ingenieros de CNC no escriben programas desde cero, pero trabajan habitualmente con archivos de código G.

¿Cómo puedo probar de forma segura un nuevo programa en G-code?

Sigue un enfoque de validación por niveles: revisa el código en busca de declaraciones de unidades, sistemas de coordenadas y desplazamientos; ejecuta una simulación con CAM o con el controlador; realiza una prueba en vacío con el husillo apagado y el eje Z elevado entre 50 y 100 mm por encima de la pieza; a continuación, ejecuta un solo bloque con una sobremarcha de avance reducida antes de pasar a un ciclo completo.

¿Cuál es la diferencia entre el código G y la programación conversacional?

El código G es explícito y está basado en texto: cada acción de la máquina se codifica directamente. La programación conversacional utiliza menús y indicaciones para definir las operaciones, que el controlador convierte internamente en código G. La programación conversacional es más rápida para piezas sencillas en la máquina; el código G ofrece mayor transparencia, portabilidad y control para programas complejos de múltiples operaciones.

Reciba las últimas noticias y actualizaciones

suscríbase a nuestro boletín informativo