Dominando la Programación CNC: Lenguaje, Estructura y Códigos G/M
OBJETIVO
Al completar esta unidad, deberías ser capaz de:
- Identificar la lista de instrucciones del programa.
- Entender el Formato del Programa.
- Describir los códigos de Dirección por Letra (Letter Address Commands).
- Describir las Definiciones de Códigos de Caracteres Especiales.
- Entender los Códigos G y M.
Los programas CNC listan instrucciones a ejecutar en el orden escrito. Se leen como un libro, izquierda a derecha y de arriba abajo. Cada frase en un programa CNC se escribe en una línea separada, llamada Bloque. Los bloques se organizan en una secuencia específica que promueve seguridad, predictibilidad y legibilidad, por lo que es importante adherirse a una estructura estándar.
Los bloques se organizan en el siguiente orden:
- Inicio de Programa
- Cargar Herramienta
- Husillo ON
- Refrigerante ON
- Posicionamiento rápido sobre la pieza
- Operación de mecanizado
- Refrigerante OFF
- Husillo OFF
- Mover a posición segura
- Fin de programa
Los pasos arriba representan el tipo más simple de programa CNC, donde solo se usa una herramienta y una operación. Programas con múltiples herramientas repiten pasos 2 a 9 para cada una.
Las Tablas 3 y 4 en la sección Códigos G y M muestran los códigos G y M más comunes que deberían memorizarse si es posible.
Como cualquier lenguaje, el lenguaje G-code tiene reglas. Por ejemplo, algunos códigos son modales, es decir, permanecen en efecto hasta que se cancelan o cambian. Algunos tienen significados diferentes según cómo y dónde se usan.
Aunque estas reglas se cubren en este capítulo, no te preocupes por aprender cada matiz. Es trabajo del Post-Procesador del software CAD/CAM formatear y escribir correctamente el programa CNC.
FORMATO DEL PROGRAMA
El programa en Tabla 1 mecaniza un contorno cuadrado y taladra un orificio.
| Bloque | Descripción | Propósito |
|---|---|---|
| % O1234 (T1 0.25 END MILL) G17 G20 G40 G49 G80 G90 |
Inicio de programa. Número de programa (Nombre). Descripción de herramienta para operador. Bloque de seguridad para asegurar modo seguro. |
Iniciar Programa |
| T1 M6 S9200 M3 |
Cargar Herramienta #1. Velocidad husillo 9200 RPM, sentido horario. |
Cambio Herramienta |
| G54 M8 G00 X-0.025 Y-0.275 G43 Z1. H1 Z0.1 G01 Z-0.1 F18. |
Usar Desplazamiento Fijación #1. Refrigerante ON. Posicionamiento rápido sobre pieza. Rapido a plano seguro, usar TLO #1. Rapido a plano de avance. Movimiento lineal a profundidad de corte a 18 IPM. |
Mover a Posición |
| G41 Y0.1 D1 F36. Y2.025 X2.025 Y-0.025 X-0.025 G40 X-0.4 G00 Z1. |
Compensación diámetro izq (CDC), entrada lineal, Offset Diámetro #1, 36 IPM. Movimiento lineal. Movimiento lineal. Movimiento lineal. Movimiento lineal. Apaga CDC con movimiento de salida. Rapido a plano seguro. |
Mecanizar Contorno |
| M5 M9 (T2 0.25 DRILL) T2 M6 S3820 M3 |
Husillo OFF. Refrigerante OFF. Descripción herramienta para operador. Cargar Herramienta #2. Velocidad 3820 RPM, horario. |
Cambio Herramienta |
| M8 X1. Y1. G43 Z1. H2 Z0.25 |
Refrigerante ON. Rapido sobre orificio. Rapido a plano seguro, usar TLO #2. Rapido a plano de avance. |
Mover a Posición |
| G98 G81 Z-0.325 R0.1 F12. G80 Z1. |
Ciclo taladrado (enlatado), Profundidad Z-.325, F12. Cancela ciclo taladrado. Rapido a plano seguro. |
Taladrar Orificio |
| M5 M9 G91 G28 Z0 G91 G28 X0 Y0 G90 M30 % |
Husillo OFF. Refrigerante OFF. Retorno a Home en Z. Retorno a Home en XY. Reset a modo posicionamiento absoluto (seguridad). Reinicia programa al inicio. Fin Programa. |
Fin Programa |
CÓDIGOS DE DIRECCIÓN POR LETRA (LETTER ADDRESS COMMANDS)
El bloque de comando controla la herramienta mediante códigos de dirección por letra. Algunos se usan más de una vez y su significado cambia según el código G en el mismo bloque.
Los códigos son modales (permanecen hasta cancelación/cambio) o no modales (efecto solo en el bloque actual). Muchos códigos se eligen lógicamente (T para herramienta, S para husillo, F para avance, etc.).
La tabla siguiente lista los códigos de dirección por letra más comunes.
Tabla 2: Códigos de Dirección por Letra
| Variable | Descripción | Definiciones |
|---|---|---|
| A | Posición absoluta/incremental eje A (rotacional alrededor de X) | A,B,C – Movimiento Rotativo 4º/5º eje. Rotación sobre X, Y, Z respectivamente. Ángulo en grados hasta 3 decimales. G01 A45.325 B90. |
| B | Posición absoluta/incremental eje B (rotacional alrededor de Y) | Igual que A |
| C | Posición absoluta/incremental eje C (rotacional alrededor de Z) | Igual que B |
| D | Define offset de diámetro o radial para compensación de cortador | Compensa desgaste y deflexión de diámetro. D va con entero igual al número de herramienta (T5 usa D5). Sin punto decimal. Siempre con G41/G42 y movimiento XY (nunca arco). Al llamarse, el control lee el registro y desplaza la trayectoria izq (G41) o der (G42) por el valor del registro. G01 G41 X2. D1 |
| E | Tasa de avance de precisión para roscado en tornos | |
| F | Define tasa de avance | Establece avance al mecanizar líneas, arcos o ciclos taladrado. Avance en pulg/min (modo G94) o Tiempo Inverso (G93). Hasta 3 decimales (para ciclos roscado) y requiere punto decimal. G01 X2. Y0. F30. |
| G | Dirección para comandos preparatorios | Los G a menudo dicen al control qué movimiento se quiere (posicionamiento rápido, avance lineal, circular, ciclo fijo) u qué offset usar. G02 X2. Y2. I.50 J0. |
| H | Define offset de longitud de herramienta; eje incremental correspondiente a C (ej. torno-fresa) | Llama registro TLO en control. Combina TLO y Offset Fijación Z para saber dónde está la herramienta respecto al datum. Siempre con entero (H1, H2), G43 y coordenada Z. G43 H1 Z2. |
| I | Define tamaño arco en eje X para G02/G03. También parámetro en ciclos fijos. | Para arcos (G2/G3), distancia incremental X desde punto inicio al centro. Algunos ciclos taladrado usan I como parámetro opcional. G02 X.5 Y2.500 I0. J0.250 |
| J | Define tamaño arco en eje Y para G02/G03. También parámetro en ciclos fijos. | Para arcos, distancia incremental Y desde inicio al centro. Ciclos taladrado usan J opcional. G02 X.5 Y2.500 I0. J0.250 |
| K | Define tamaño arco en eje Z para G02/G03. También parámetro en ciclos fijos, igual a L. | Para arco (G2/G3), distancia incremental Z desde inicio al centro. En plano G17, distancia Z incremental para helicoidales. Ciclos taladrado usan J opcional. G18 G03 X.3 Z2.500 I0. K0.250 |
| L | Cuenta de bucles en ciclo fijo; especificación de registro a editar con G10 | Cuenta bucles: define repeticiones de ciclo fijo en cada posición. Asumido 1 salvo que se programe otro entero. A veces K se usa en lugar de L. Con posicionamiento incremental (G91), serie de orificios equidistantes puede programarse como bucle. G10: especifica qué registro editar (offsets trabajo, radio herramienta, longitud herramienta, etc.). |
| M | Función miscelánea | Siempre con entero que determina significado. Solo un M-code por bloque. Definiciones expandidas después. M08 |
| N | Número de línea (bloque) en programa; número de parámetro de sistema a cambiar con G10 | Números de bloque facilitan lectura. Raramente requeridos en programas CAD/CAM sin subprogramas. Ocupan memoria, la mayoría programas 3D no los usan. Enteros hasta 5 caracteres sin decimal. No aparecen antes de % y usualmente no antes de bloque solo comentario. N100 T02 M06 |
| O | Nombre de programa | Programas se almacenan por número. Entero precedido por O sin decimales. O1234 (Ejercicio 1) |
| P | Dirección de parámetro para varios G y M | Pausa (dwell) en segundos. Con G4 salvo en ciclos taladrado. G4 P.1 |
| Q | Incremento de picado en ciclos enlatados | Distancia incremental por pasada en ciclo picado. G83 X2. Y2. Z-.625 F20. R.2 Q.2 P9. |
| R | Define radio de arco o altura de retracción en ciclos enlatados | Arcos definibles con radio R o vectores I,J,K. IJK más fiables que R, recomendado usarlos. R también usado en ciclos taladrado como plano retorno Z. G83 Z-.625 F20. R.2 Q.2 P9. |
| S | Define velocidad, ya sea husillo o velocidad de corte según modo | Velocidad husillo en RPM. Entero sin decimal, siempre con M03 (horario) o M04 (antihorario). S2500 M03 |
| T | Selección de herramienta | Selecciona herramienta. Entero siempre con M6 (código cambio). T01 M06 |
| U | Eje incremental correspondiente a X (típicamente solo controles grupo A torno); también define tiempo de pausa en algunas máquinas | En estos controles, X y U obvian G90/G91. En estos tornos, G90 es dirección de ciclo fijo para desbaste. |
| V | Eje incremental correspondiente a Y | Hasta 2000s, V rara vez usado porque tornos con U,W no tenían eje Y. Proliferación de herramientas vivas y torneado-fresado ha hecho V menos raro. |
| W | Eje incremental correspondiente a Z (típicamente solo controles grupo A torno) | En estos controles, Z y W obvian G90/G91. En estos tornos, G90 es dirección de ciclo fijo para desbaste. |
| X | Posición absoluta/incremental eje X | Datos coordenada X. Hasta 4 decimales permitidos, ceros finales no usados. Coordenadas modales, no necesidad de repetir si no cambian. G01 X2.250 F20. |
| Y | Posición absoluta/incremental eje Y | Datos coordenada Y. G01 Y2.250 F20. |
| Z | Posición absoluta/incremental eje Z | Datos coordenada Z. |
DEFINICIONES DE CÓDIGOS DE CARACTERES ESPECIALES
Lista de caracteres especiales comúnmente usados, significado, uso y restricciones.
- % – Inicio o Fin de Programa. Todos los programas comienzan y terminan con % en un bloque solo. Código de rebobinado de cinta (remanente de cuando programas se cargaban con cintas de papel).
- ( ) – Comentarios. Comentarios al operador en mayúsculas entre paréntesis. Máx 40 caracteres, todos en mayúsculas. (T02: 5/8 END MILL)
- / – Borrado de Bloque. Códigos tras este carácter se ignoran si el interruptor Block Delete en el control está ON. / M00
- ; – Fin de Bloque. No visible en editor de texto (retorno de carro), pero aparece al final de cada bloque en el control. N8 Z0.750 ;
CÓDIGOS G Y M
Los códigos G y M constituyen la mayor parte del programa CNC. La definición de cada clase y significados específicos de los más importantes se cubren a continuación.
Códigos G
Códigos que comienzan con G se llaman palabras preparatorias porque preparan la máquina para cierto tipo de movimiento.
Tabla 3: Códigos G
| Código | Descripción |
|---|---|
| G00 | Movimiento rápido. Para posicionar en movimientos sin mecanizado. |
| G01 | Movimiento lineal a avance especificado. |
| G02 | Arco horario. |
| G03 | Arco antihorario. |
| G04 | Pausa (Dwell). |
| G28 | Retorno a posición Home de máquina. |
| G40 | Compensación Diámetro Cortador (CDC) OFF. |
| G41 | CDC Izquierda. |
| G42 | CDC Derecha. |
| G43 | Compensación Longitud Herramienta (TLO). |
| G54 | Offset Fijación #1. |
| G55 | Offset Fijación #2. |
| G56 | Offset Fijación #3. |
| G57 | Offset Fijación #4. |
| G58 | Offset Fijación #5. |
| G59 | Offset Fijación #6. |
| G80 | Cancela ciclo taladrado. |
| G81 | Ciclo taladrado simple. |
| G82 | Ciclo taladrado simple con pausa. |
| G83 | Ciclo taladrado a picado (peck). |
| G84 | Ciclo roscado. |
| G90 | Modo programación coordenadas absolutas. |
| G91 | Modo programación coordenadas incrementales. |
| G98 | Retorno ciclo taladrado a punto inicial (R). |
| G99 | Retorno ciclo taladrado a plano referencia (última altura Z). |
Códigos M
Códigos que comienzan con M son palabras misceláneas. Controlan opciones auxiliares como refrigerante y dirección husillo. Solo un M-code por bloque.
Tabla 4: Códigos M
| Código | Descripción |
|---|---|
| M00 | Parada programa. Presiona Ciclo Inicio para continuar. |
| M01 | Parada opcional. |
| M02 | Fin de programa. |
| M03 | Husillo horario. |
| M04 | Husillo antihorario. |
| M05 | Parada husillo. |
| M06 | Cambio herramienta. |
| M08 | Refrigerante ON. |
| M09 | Refrigerante OFF. |
| M30 | Fin programa y presiona Ciclo Inicio para repetir. |
Definiciones Seleccionadas de Códigos G (Expandidas)
G00 – Movimiento Rápido (Rapid Move)
Este código ordena a la máquina moverse lo más rápido posible a un punto especificado. Siempre se usa con posición de coordenadas y es modal. A diferencia de G01, G00 no coordina ejes para moverse en línea recta. Cada eje se mueve a su velocidad máxima hasta satisfacerse. Resultado: movimiento como en Figura 1.
G00 X0. Y0.
Figura 1. Movimiento G00
Precaución: La velocidad rápida de algunas máquinas puede exceder 1. Un offset o movimiento incorrecto puede estrellar la máquina más rápido de lo que el operador puede pulsar parada de emergencia. Usa la anulación de avance rápido en la máquina al ejecutar un programa por primera vez.
Movimiento Lineal es Movimiento en Línea Recta:
El G-code trata de movimiento, y el más común en programas de piezas es movimiento lineal. El movimiento es modal: le dices al control qué tipo quieres con un G-code y recuerda hasta que le digas cambiar con otro G-code.
- G00 para Posicionamiento Rápido; Movimiento rápido tan rápido como la máquina. Mueve el cortador por aire a la siguiente posición de corte.
- G01 para Movimiento de Corte Más Lento; Avance más lento, para cortar. Avance establecido por "F".
Palabra F = "F" de "Feedrate". Palabra S = "S" de "Spindle Speed", dirección en rpm.
Especificando Movimiento Lineal con X, Y, Z:
Especificar G00 o G01 no causa movimiento; solo dicen al control qué tipo se espera cuando finalmente le digas a dónde mover. Para movimiento real necesitas especificar destino con X, Y, Z. Para ir a cero de pieza: G00 X0 Y0 Z0. O G01 si quieres ir más lento: G01 X0 Y0 Z0 F40.
Movimiento interpolado: cuando especificamos múltiples coordenadas en una línea, significa que más de un eje se mueve simultáneamente. El control los mueve a la velocidad relativa exacta para que el cortador siga línea recta al destino a la velocidad de avance.
Si especificamos el mismo destino pero repartimos coordenadas en múltiples líneas, cada línea es un movimiento separado: G00 X0 Y0 (mueve a X0 Y0 manteniendo Z constante); Z0 (mueve a Z0 manteniendo X,Y). G00 y G01 son modales, solo se especifican al cambiar de modo.
Eje Z:
El concepto de movimientos interpolados plantea un tema interesante para el eje Z. A menudo es buena idea mover el eje de profundidad de corte por sí solo, no como movimiento coordinado con X e Y. Si vas a tener problema (colisión) al acercar el cortador a la pieza y fijación. Mover primero en X e Y y luego en Z, es más fácil juzgar si una colisión accidental está por ocurrir. También es menos probable golpear algún objeto aleatorio (como una abrazadera) si mantienes el cortador alto hasta estar directamente sobre donde empezar a cortar.
G02 y G03 – El Movimiento Circular es un Modo Iniciado:
G02 establece modo para arcos horarios. G03 para arcos antihorarios. Una vez establecido el modo G02/G03, los arcos se definen en G-code identificando sus 2 extremos y el centro, que debe estar equidistante de cada extremo. Los extremos son fáciles: el punto de control actual (ubicación al iniciar el bloque) establece uno. El otro por coordenadas XYZ. El centro se identifica comúnmente usando I, J, K para establecer offsets relativos desde el punto inicial del arco al centro.
EJEMPLO DE ARCO HORARIO:
Figura 2. Centro de un arco con IJK
Este arco empieza en X0 Y2. y termina en X2. Y0. Su centro está en X0 Y0. En G-code:
G02 (Modo arco horario)
X2 Y0 I0 J-2.0
El Centro Usando Radio "R":
El centro simplemente especificando el radio del círculo. Radio 2, así G-code: G02 X2 Y0 R2
G17/G18/G19 – Designación de Plano
Los arcos deben existir en un plano designado por G17 (XY), G18 (XZ) o G19 (YZ). G17 es el predeterminado.
Figura 3. Designación de Plano
G40/G41/G42 – Compensación Diámetro Cortador (CDC)
CDC es clave para mecanizado CNC de precisión, permitiendo compensar desgaste y deflexión de herramienta ordenando a la máquina desviarse izquierda (G41) o derecha (G42) de la trayectoria programada. G40 cancela compensación. La cantidad de offset se ingresa en registro D del control. El registro de desgaste es como una tabla a la que el control refiere en cada movimiento.
Tabla 5: Registro Offset Diámetro
| Offset Diámetro Herramienta | Valor |
|---|---|
| D1 | 0.0125 |
| D2 | 0.0000 |
| D3 | 0.0000 |
| D4 | 0.0000 |
| D5 | 0.0000 |
| D6 | 0.0000 |
El valor en registro D lo calcula el operador, monitoreando tamaño final de características, comparando con plano, y entrando la diferencia para mantener pieza dentro de especificaciones. Si no hay desviación, registro a cero.
G01 G41 D1 X1.0 Y.25 F40.
G43 – Compensación Longitud Herramienta
G43 activa compensación longitud herramienta. Siempre va con H-code y movimiento Z, donde H es el registro TLO a leer, y Z es la altura a ir en referencia al datum de pieza.
El TLO es como una tabla en el control:
Tabla 6: Offsets de Trabajo
| Registro Longitud Herramienta | Z |
|---|---|
| H1 | 10.236 |
| H2 | 4.7510 |
| H3 | 6.9652 |
| H4 | 7.6841 |
| H5 | 12.4483 |
| H6 | 8.2250 |
El TLO se combina con el offset de fijación activo para que la máquina sepa dónde está la punta de la herramienta respecto al datum.
G43 H1 Z1.
G54 – Offset de Trabajo (Work Offset)
Los offsets de trabajo son registros de datos en el control que guardan la distancia de Home X,Y,Z al datum de pieza. Pueden pensarse como una tabla:
Tabla 7: Offset de Trabajo
| Offset Trabajo | X | Y | Z |
|---|---|---|---|
| G54 | 14.2567 | 6.6597 | 0.0000 |
| G55 | 0.0000 | 0.0000 | 0.0000 |
| G56 | 0.0000 | 0.0000 | 0.0000 |
| G57 | 0.0000 | 0.0000 | 0.0000 |
| G58 | 0.0000 | 0.0000 | 0.0000 |
| G59 | 0.0000 | 0.0000 | 0.0000 |
Consejo: G54 usualmente para primera configuración. Offsets adicionales para mecanizar otras caras.
Los valores X e Y representan distancia de Home a datum XY. El valor Z es distancia del punto de referencia de herramienta (ej. tope bloque 1-2-3) al datum Z de pieza.
G54 X0. Y0.
EXAMEN DE LA UNIDAD
- Describe la lista de instrucciones del programa CNC.
- Todos los programas CNC comienzan y terminan con ¿qué?
- Describe los códigos de dirección por letra.
- Enumera tres códigos de caracteres especiales.
- Describe códigos G y M.
- Describe G00 G90 G54 X0 Y0.
- Describe G00 G90 G43 H1 Z1.
- ¿Cuál es la diferencia entre G00 y G01?
- Explica la diferencia entre G02 y G03.
- Describe las palabras F y S.
Tecnología Industrial
- Entendiendo las rectificadoras CNC de herramientas y cortadores: funciones, usos y beneficios
- Fundamentos de Programación de Microprocesadores
- Unidad 5: Operación CNC – Dominando Configuración y Control de Fresadora Haas
- Dominando el Mecanizado CNC: Control de Variables para Resultados Consistentes
- Domina la precisión en fresado CNC: Pasos probados para piezas exactas
- Servicios Premium de Mecanizado CNC y Fabricación de Herramientas en Portland, Oregon
- Prevención y gestión de colisiones en centros de mecanizado CNC de 5 ejes
- Mejorando Precisión y Exactitud de Herramientas de Máquina CNC: Guía Completa
- Preajustador y Medición de Herramientas CNC: Guía Esencial para Precisión y Eficiencia
- Entendiendo la estructura de un programa C: Guía para principiantes
- Estructura de Programa C#: Componentes Principales y Ejemplo Hello World