Lenguajes de programación CNC: código G y código M

El acrónimo CNC en el término máquina CNC significa Control Numérico por Computadora (Computer Numerical Control). Normalmente, cuando pensamos en el mecanizado CNC, imaginamos la máquina herramienta CNC, pero en realidad las máquinas CNC modernas representan un término más amplio. Los robots industriales y algunas máquinas de medición controladas por computadora también son máquinas CNC.
Fue en el año 1952, debido a la necesidad de mecanizar con precisión piezas en la industria aeronáutica, cuando John T. Parsons, en colaboración con IBM (International Business Machines Corporation) y el MIT (Massachusetts Institute of Technology), desarrolló la primera fresadora CNC. A partir de entonces, la producción industrial más inteligente se generalizó y el mecanizado CNC pasó a estar disponible para todas las industrias, junto con el auge y el uso de los lenguajes de programación CNC: el código G y el código M.
¿Qué son el código G y el código M?
A lo largo de los 70 años de historia del desarrollo de las máquinas CNC se han utilizado para su programación diversos lenguajes de programación, no solo el código G y el código M. Así, al principio, la máquina pionera de Parsons se programaba con la ayuda de cintas perforadas y, más tarde, en el año 1956, se desarrolló un lenguaje de programación especial (lenguaje de programación APT) para el mecanizado CNC.
El RS-274, más conocido como código G, del que también trata este artículo, se creó en la misma década. El código G se desarrolló a partir del lenguaje de programación APT, que contenía datos sobre la ubicación o geometría de la herramienta de corte (útil), y otras funciones de la máquina no geométricas, como la velocidad del husillo, la refrigeración, etc. Las funciones del RS-274 (códigos G y M) heredan los fundamentos del lenguaje de programación APT con modificaciones menores que han hecho los programas más cortos y cómodos para la unidad de control de la máquina.
| APT | Códigos G y M |
| GO TO {X, Y, Z} | G1, G2, G3 {X, Y, Z} |
| FEDRAT | F |
| SPINDLE CW / CCW | S M3 / M4 |
| COOLNT ON / OFF | M8 M9 |
| FINI | M30 |
El lenguaje de programación RS-274 suele denominarse «código G» porque consta principalmente de funciones G (códigos G). Pero en sí mismo también contiene funciones M (códigos M) igualmente importantes. Por esa razón, es necesario definir estos términos, es decir, responder a las siguientes preguntas de forma clara y directa:
- ¿Qué son los códigos G?
- ¿Qué son los códigos M?
- ¿Cuáles son las diferencias entre el código G y el código M?

¿Qué son los códigos G?
El código G, es decir, las funciones G, a diferencia del código M, está relacionado principalmente con la definición de la geometría. Es obvio que la «G» del nombre «código G» significa la palabra «Geometría». Así, los códigos G incluirían funciones para seleccionar el sistema de coordenadas, el plano de trabajo, las unidades de programación, establecer el modo de programación (absoluto o incremental), el movimiento de la herramienta en modo rápido y de trabajo, etc.
¿Qué son los códigos M?
Los códigos M o funciones M se refieren a funciones relacionadas con el funcionamiento de la máquina. Puede decirse que la «M» del término «código M» significa la palabra «Máquina» (Machine). Normalmente, en la programación de máquinas CNC, las siguientes funciones pueden incluirse en estas funciones: encender o apagar el husillo principal, activar o desactivar la refrigeración, el cambio automático de herramienta, etc.
¿Cuáles son las diferencias entre el código G y el código M?
Como hemos presentado, los códigos G se refieren estrictamente a la geometría del proceso de procesado de una pieza, y los códigos M a funciones individuales de la máquina. Podría decirse que los códigos G muestran «cómo se mueve la herramienta en relación con la pieza» y los códigos M «qué hace la máquina en el proceso de mecanizado».
Además de las principales funciones de código G y código M del lenguaje de programación RS-274, existen numerosas funciones auxiliares:
- X, Y, Z – coordenadas del punto de posicionamiento
- I, J, K – coordenadas de la distancia entre el punto de inicio y el centro del círculo («CC» en los siguientes ejemplos)
- F – velocidad de interpolación
- S – velocidad del husillo
- T – número de herramienta
- H – número de compensación de altura de la herramienta
- D – número de compensación de radio de la herramienta
Lista de códigos G básicos

Funciones principales | Descripción | Funciones auxiliares |
G0 | Posicionamiento rápido (lineal) | X, Y, Z |
G1 | Interpolación lineal | X, Y, Z, F |
G2 | Interpolación circular en sentido horario | X, Y, Z, I, J, K, F |
G3 | Interpolación circular en sentido antihorario | X, Y, Z, I, J, K, F |
EJEMPLO 1:
La instrucción en código G: G1 X10 Y50 F100
Explicación: la herramienta se desplaza de forma lineal hasta el punto deseado (coordenadas: X=10 mm, Y=50 mm) a una velocidad de 100 milímetros por segundo.
La instrucción en código G: G2 X10 Y50 I10 J40 F100
Explicación: la herramienta se desplaza de forma circular (sentido horario) hasta el punto deseado (coordenadas: X=10 mm, Y=50 mm) a una velocidad de 100 milímetros por segundo; posición del centro del círculo respecto al punto de inicio: +10 mm en el eje X y +40 mm en el eje Y.
La instrucción en código G: G02 X50 Y10 I40 J-10 F75
Explicación: la herramienta se desplaza de forma circular (sentido horario) hasta el punto deseado (coordenadas: X=50 mm, Y=10 mm) a una velocidad de 75 milímetros por segundo; posición del centro del círculo respecto al punto de inicio: +40 mm en el eje X y -10 mm en el eje Y.

Función principal | Descripción | Funciones auxiliares |
G17 | Seleccionar XY como plano de trabajo | / |
G18 | Seleccionar ZX como plano de trabajo | / |
G19 | Seleccionar YZ como plano de trabajo | / |
G20 | Unidades: pulgadas (inch) | / |
G21 | Unidades: milímetros (mm) | / |
G41 | Compensación de radio de la herramienta – izquierda | D, X, Y, Z |
G42 | Compensación de radio de la herramienta – derecha | D, X, Y, Z |
G40 | Compensación de radio de la herramienta – desactivada | / |
G43 | Compensación de desfase de altura de la herramienta | H, Z |
G49 | Compensación de desfase de altura de la herramienta – desactivada | / |
G54 | Sistema de coordenadas de la máquina | / |
G55 | Sistemas de coordenadas de trabajo | / |
G56 | Sistemas de coordenadas de trabajo | / |
G57 | Sistemas de coordenadas de trabajo | / |
G58 | Sistemas de coordenadas de trabajo | / |
G59 | Sistemas de coordenadas de trabajo | / |




EJEMPLO 2:
Instrucción en código G: G21 G17 G55
Explicación: establecer las unidades de programación en milímetros; seleccionar el plano de trabajo XY; seleccionar el sistema de coordenadas G55.
Instrucción en código G: G43 H1 Z100
Explicación: establecer la compensación de desfase de altura de la herramienta en H1 («H1» es una posición donde se guarda el valor de la altura de la herramienta en la memoria de la máquina CNC) y adoptar una nueva posición (coordenada: Z=100 mm).
Instrucción en código G: G41 D1 X15
Explicación: establecer la compensación de radio de la herramienta a la izquierda en D1 («D1» es una posición donde se guarda el valor del radio de la herramienta en la memoria de la máquina CNC) y adoptar una nueva posición (coordenada: X=15 mm); mientras la herramienta se dirige a la posición deseada, se desplaza lentamente hacia la izquierda, de modo que cuando la herramienta alcanza la posición deseada la compensación de radio de la herramienta se ha completado.
Instrucción en código G: G40 G49
Explicación: cancelar la compensación de radio de la herramienta; cancelar la compensación de desfase de altura de la herramienta.
Función principal | Descripción | Funciones auxiliares |
G90 | Programación absoluta: coordenadas relativas al sistema de coordenadas de trabajo | / |
G91 | Programación incremental: coordenadas relativas al sistema de coordenadas en la posición actual | / |
Lista de códigos M básicos
Función principal | Descripción | Funciones auxiliares |
M00 | Parada del programa | / |
M03 | Husillo activado (sentido horario) | S |
M04 | Husillo activado (sentido antihorario) | S |
M05 | Husillo desactivado | / |
M06 | Cambio automático de herramienta | T |
M08 | Refrigerante activado | / |
M09 | Refrigerante desactivado | / |
M30 | Fin del programa | / |
M98 | Llamada a subprograma | «Nombre del subprograma» |
M99 | Retorno desde el subprograma | / |

Cómo programar una máquina CNC
La programación CNC consiste en datos con formato alfanumérico (códigos G y M) sobre la geometría y la tecnología de las piezas que deben procesarse en dicha máquina, pero también en otra programación que suelen realizar los fabricantes de máquinas.
La programación de máquinas CNC mediante código G se basa mayoritariamente en instrucciones, como puede verse en los ejemplos anteriores, donde la explicación de las funciones G se hizo interpretando las instrucciones de un programa escrito en código G. Existen varios métodos de programación CNC, es decir, de generación de códigos G y M:
- Programación manual,
- Programación en operación y
- Programación mediante sistemas CAD (Diseño Asistido por Computadora) / CAM (Fabricación Asistida por Computadora).
Programación manual
Con la programación CNC manual, un programador, basándose en sus propios conocimientos y experiencia así como en la información disponible sobre máquinas, herramientas, accesorios de máquina y modos de procesado, aplicando instrucciones de programación, escribe manualmente la información geométrica y tecnológica necesaria para completar el programa alfanumérico. La programación manual puede organizarse en las siguientes actividades básicas:
- Definir los planes de procesado, referenciado y utillaje,
- Traducir la información geométrica con el plano de taller, a efectos de planificación de rutas,
- Las herramientas, y organizarlas en bloques según el orden de procesado,
- Escribir y completar los programas en forma de hoja de programa (código G) y
- Transferir la información de la hoja de programa a la memoria de la unidad de control.

Programación en operación
Con el fin de mejorar constantemente el método de programación CNC, así como por el deseo de llevar la programación a la propia máquina, para aplicaciones aún mayores y más sencillas del CNC, algunos fabricantes han ofrecido unidades de control que admiten la programación directamente en la propia máquina. Aunque desde el mismo comienzo de la aplicación del CNC existía la posibilidad de programación inmediata en la máquina en el llamado modo MDI (Entrada Manual de Datos), la programación en operación representa un método de programación completamente nuevo.
Con este método, la unidad de control que lo admite tiene integradas funciones adicionales que evitan la programación clásica mediante código G. La programación aquí se reduce a un diálogo interactivo entre el operario y la unidad de control, a través del teclado y una interfaz gráfica de usuario, que puede generar contornos de procesado sencillos así como ciclos tipificados de procesado. La unidad de control, basándose en las consultas introducidas, realiza los cálculos necesarios de la trayectoria de la herramienta y genera automáticamente un código G.

Programación mediante sistemas CAD/CAM
La geometría de las piezas, utilizadas por ejemplo en la industria aeroespacial, militar y otras, es muy compleja, con superficies de segundo orden, que requieren mecanizado multieje (mecanizado CNC de 3 ejes, 4 ejes y 5 ejes). Los programas complejos para procesar tales superficies requieren varios miles de bloques (instrucciones) cuya escritura a mano es muy dura y lenta. Por lo tanto, fue necesario utilizar computadoras para la preparación tecnológica, es decir, la programación de máquinas CNC para el mecanizado de las piezas mencionadas sobre la base del código G y el código M.
La programación CAD/CAM puede clasificarse como programación CNC por computadora. La integración de CAD y CAM ha dado lugar a mejoras en la programación NC, especialmente en cuanto a la simplificación de la programación. Ahora el programador no tiene que pensar en definir la geometría, de eso se encarga el software CAD/CAM. Lo que le queda al programador es que, mediante la interacción activa con el sistema en el programa, añada otra información técnica como agarres, referenciado, amarre, herramientas de corte y modos de procesado. Cabe destacar que existe una integración de CAD/CAM y CAPP (Planificación de Procesos Asistida por Computadora), que también desarrolla una solución para estos requisitos.
Así es como se ve el procedimiento para programar una máquina en un entorno CAD/CAM:
- Modelado de modelos CAD,
- Planificación del procesado utilizando las estrategias CAM disponibles para procesar y calcular las trayectorias de la herramienta y obtener el archivo CL (Cutter Location, ubicación de la herramienta),
- Simulación de la trayectoria de la herramienta y simulación de la eliminación de material para la verificación del programa y la detección de posibles errores y colisiones,
- Posprocesado del archivo CL y obtención del código G utilizando el posprocesador para la máquina seleccionada,
- Transferir el código G a la unidad de control. Preparación de herramientas y piezas. Referenciar la pieza en la máquina,
- Comprobar las condiciones y modos de procesado, comprobar las velocidades y aceleraciones, que pueden afectar significativamente a la calidad del procesado y
- Mecanizado de una pieza en una máquina.

Conclusión
Aunque hoy existen métodos de programación que no requieren el conocimiento de las funciones G y M (la programación en operación y la programación CNC CAD/CAM), un programador debería conocerlas, porque una situación especial exigiría a veces que la programación se hiciera manualmente. Lo positivo es que puede decirse que el lenguaje de programación de los códigos G y M es universal, lo que significa que quien conoce los códigos G y M puede programar todas las máquinas CNC, con diferencias mínimas de sintaxis que se dominan muy rápidamente si se conocen los fundamentos de los códigos G y M. ¿Te preocupa encontrar un programador CNC profesional para tu diseño? No te preocupes, Sendot Technology es un fabricante con más de 20 años de experiencia en la industria del mecanizado CNC, con tecnología de fabricación avanzada e ingenieros CNC experimentados, listos para satisfacer las necesidades de diseño de tu producto. ¡Obtén un presupuesto instantáneo hoy mismo!Related manufacturing services
Explore how Sendot Technology can manufacture your custom parts:




