El G-code, también conocido como RS-274, es el nombre que habitualmente recibe el lenguaje de programación más usado en control numérico (CN), el cual posee múltiples implementaciones, tales como Siemens Sinumeric, FANUC, Haas, Heidenhain o Mazak. Es usado principalmente en automatización, forma parte de la ingeniería asistida por computadora. Al G-code se le llama en ciertas ocasiones lenguaje de programación G.
En términos generales, G-code es un lenguaje mediante el cual las personas pueden decir a máquinas herramienta controladas por computadora qué hacer y cómo hacerlo. Esos "qué" y "cómo" están definidos mayormente por instrucciones sobre a dónde moverse, cuán rápido moverse y qué trayectoria seguir. Las máquinas típicas que son controladas con G-code son fresadoras, cortadoras, tornos e impresoras 3D.
Implementaciones La primera implementación del control numérico se desarrolló en el Laboratorio de Servomecanismos del MIT a principio de la década de 1950. En las siguientes décadas se desarrollaron una gran cantidad de implementaciones de mano de multitud de organizaciones comerciales o no. El G-code se ha usado a menudo en estas implementaciones. La versión más común en Estados Unidos es la propuesta por Electronic Industries Alliance a principio de los años 1960. En febrero de 1980 se aprobó una revisión final con el nombre de RS274D. En todo el mundo, el estándar ISO 6983 es el más usado, aunque en algunos países europeos en concreto se utilizan a veces otros estándares como el DIN 66025 alemán o los PN-73M-55256, PN-93/M-55251 polacos.
Los distintos fabricantes de máquinas CNC han añadido todo tipo de extensiones y variaciones al lenguaje, por lo que los operadores de las máquinas deben conocer las peculiaridades concretas que el fabricante ha previsto para su uso.
Existe una versión de G-code conocida como BCL que aunque es considerado un estándar se usa sólo en unas pocas máquinas.
Desde la década de 1970 hasta la de 1990, muchos fabricantes de máquinas CNC intentaron deshacerse de todos los problemas de compatibilidad estandarizando los controladores de las herramientas, construidos por FANUC. Otra empresa con posición dominante en el mercado de los controladores CNC es Siemens, especialmente en Europa. Ya en la segunda década del , todas esas diferencias e incompatibilidades no causan grandes problemas puesto que el G-code es generado por aplicaciones CAD/CAM que son capaces de generar código adaptado a cada máquina específica.
Algunas máquinas CNC cuentan con una especie de programación "conversacional" consistente en un software parecido a un asistente que de algún modo enmascara el G-code o evita totalmente su uso. Algunos ejemplos son ProtoTRAK de Southwestern Industries, Mazatrol de Mazak, Ultimax de Hurco, Intuitive Programming System (IPS) de Haas, o CAPS de Mori Seiki.
G-code comenzó siendo un tipo de lenguaje bastante limitado que carecía de estructuras como búcles, operadores condicionales y variables declaradas por el usuario. Sin embargo, las implementaciones más recientes de G-code sí que incluyen tales estructuras, creando un lenguaje algo más parecido a lo que podría ser un lenguaje de alto nivel.
Códigos específicos La mayoría de las computadoras de control numérico para máquinas herramienta se programan según la norma internacional ISO 6983-1:2009. Organización Internacional de Normalización. (2009). Sistemas de automatización industrial e integración — Control numérico de máquinas — Formato de datos del programa para funciones preparatorias y misceláneas — Parte 1: Formato convencional (ISO Standard No. 6983-1:2009)
Aunque puede variar algunos códigos en función del tipo de máquina herramienta, un posible listado estándar de códigos G se muestra a continuación:
+ Códigos G Códigos Descripción Grupo G00 Posicionamiento de movimiento rápido 01 G01 Movimiento de interpolación lineal 01 G02 Movimiento de interpolación circular en sentido horario 01 G03 Movimiento de interpolación circular en sentido antihorario 01 G04 Pausa 00 G09 Parada exacta 00 G10 Establecer correctores 00 G12 Fresado circular de cavidades en sentido horario 00 G13 Fresado circular de cavidades en sentido antihorario 00 G17 Selección de plano XY 02 G18 Selección de plano XZ 02 G19 Selección de plano YZ 02 G20 Seleccionar pulgadas 06 G21 Seleccionar sistema métrico 06 G28 Retorno al punto cero de la máquina 00 G29 Retorno desde el punto de referencia 00 G31 Avance hasta salto 00 G35 Medida automática del diámetro de la herramienta 00 G36 Medida automática del corrector de piezas 00 G37 Medida automática del corrector de herramientas 00 G40 Cancelar compensación de la herramienta de corte 07 G41 Compensación de la herramienta de corte izquierda 2D 07 G42 Compensación de la herramienta de corte derecha 2D 07 G43 Compensación de la longitud de la herramienta + (Añadir) 08 G44 Compensación de la longitud de la herramienta - (Restar) 08 G47 Engrabación de texto 00 G49 G43/G44/G143 Cancelar 08 G50 Cancelar escala 11 G51 Escala 11 G52 Establecer sistemas de coordenadas de trabajo 00 o 12 G53 Selección de coordenadas de la máquina no modal 00 G54 Seleccionar sistema de coordenadas de trabajo n.° 1 12 G55 Seleccionar sistema de coordenadas de trabajo n.° 2 12 G56 Seleccionar sistema de coordenadas de trabajo n.° 3 12 G57 Seleccionar sistema de coordenadas de trabajo n.° 4 12 G58 Seleccionar sistema de coordenadas de trabajo n.° 5 12 G59 Seleccionar sistema de coordenadas de trabajo n.° 6 12 G60 Posicionamiento unidireccional 00 G61 Modo de parada exacta 15 G64 Cancela la parada exacta G61 15 G65 Opción de llamada a subprograma macro 00 G68 Rotación 16 G69 Cancelar G68 Giro 16 G70 Círculo de agujero para tornillos 00 G71 Arco de agujero para tornillos 00 G72 Agujeros para tornillos a lo largo de un ángulo 00 G73 Ciclo fijo de taladrado intermitente de alta velocidad 09 G74 Ciclo fijo de roscado inverso 09 G76 Ciclo fijo de mandrinado fino 09 G77 Ciclo fijo de mandrinado posterior 09 G80 Cancelar ciclo fijo 09 G81 Ciclo fijo de taladrado 09 G82 Ciclo fijo de taladrado de punto 09 G83 Ciclo fijo de taladrado intermitente normal 09 G84 Ciclo fijo de roscado 09 G85 Ciclo fijo de mandrinado 09 G86 Ciclo fijo de mandrinado y parada 09 G89 Ciclo fijo de mandrinado hacia dentro, pausa y mandrinado hacia fuera 09 G90 Comando de posicionamiento absoluto 03 G91 Comando de posicionamiento incremental 03 G92 Establecer valor de cambio de sistemas de coordenadas de trabajo 00 G93 Modo de avance de tiempo inverso 05 G94 Modo de avance por minuto 05 G95 Avance por revolución 05 G98 Retorno al punto inicial de ciclo fijo 10 G99 Retorno al plano R de ciclo fijo 10 G100 Cancelar imagen especular 00 G101 Habilitar imagen especular 00 G103 Limitar almacenamiento de bloques 00 G107 Correlación cilíndrica 00 G110 Sistema de coordenadas n.° 7 12 G111 Sistema de coordenadas n.° 8 12 G112 Sistema de coordenadas n.° 9 12 G113 Sistema de coordenadas n.° 10 12 G114 Sistema de coordenadas n.° 11 12 G115 Sistema de coordenadas n.° 12 12 G116 Sistema de coordenadas n.° 13 12 G117 Sistema de coordenadas n.° 14 12 G118 Sistema de coordenadas n.° 15 12 G119 Sistema de coordenadas n.° 16 12 G120 Sistema de coordenadas n.° 17 12 G121 Sistema de coordenadas n.° 18 12 G122 Sistema de coordenadas n.° 19 12 G123 Sistema de coordenadas n.° 20 12 G124 Sistema de coordenadas n.° 21 12 G125 Sistema de coordenadas n.° 22 12 G126 Sistema de coordenadas n.° 23 12 G127 Sistema de coordenadas n.° 24 12 G128 Sistema de coordenadas n.° 25 12 G129 Sistema de coordenadas n.° 26 12 G136 Medida automática del centro del corrector de piezas 00 G141 3D+ Compensación de la herramienta de corte 07 G143 Compensación de la longitud de la herramienta de 5 ejes + 08 G150 Fresado de cavidades de propósito general 00 G154 Seleccionar coordenadas de trabajo P1-P99 12 G156 Ciclo fijo de brochado 09 G167 Modificar ajustes 00 G174 Roscado rígido no vertical en sentido antihorario 00 G184 Roscado rígido no vertical en sentido horario 00 G187 Ajuste del nivel de pulido 00 G234 Control del punto central de la herramienta (TCPC) 08 G253 G253 Orientar el husillo normal al sistema de coordenadas de la característica 00 G254 Corrector de piezas dinámico (DWO) 23 G255 Cancelar corrector de piezas dinámico (DWO) 23 G266 Movimiento de avance rápido lineal % de los ejes visibles 00 G268 Habilitar sistema de coordenadas de la característica 02 G269 Deshabilitar sistema de coordenadas de la característica 02
La consiguiente tabla proporciona una lista de códigos G utilizados en programación CNC, junto con sus descripciones y grupos correspondientes. Los códigos G son comandos esenciales para controlar máquinas CNC y especificar diferentes operaciones de mecanizado y movimiento. Estos códigos son fundamentales para la industria de fabricación y son ampliamente utilizados en la programación de máquinas herramienta y equipos automatizados. La tabla se organiza en grupos para facilitar la referencia rápida y la comprensión de los códigos G según su función y aplicación en el mecanizado CNC.
Estructura del G-Code El G-Code es un lenguaje de programación que sigue una estructura específica para comunicar instrucciones a máquinas CNC. Comprender su sintaxis y estructura es fundamental para la programación eficiente y precisa de estas máquinas. La estructura básica de un comando G-Code consta de una letra (el código) seguida de un número (el valor del parámetro). A continuación, se detalla la estructura y los elementos clave del G-Code:
1- Letras de Código:
Las letras que inician un comando G-Code representan la función principal que se ejecutará. Por ejemplo, la letra "G" se utiliza para comandos relacionados con el movimiento, mientras que la letra "M" se utiliza para comandos misceláneos, como el encendido o apagado de accesorios.
2- Número de Parámetro:
Después de la letra de código, sigue un número que define el valor del parámetro. Este número puede ser un valor absoluto o incremental, dependiendo de si se utiliza la programación en coordenadas absolutas o incrementales (G90 para coordenadas absolutas y G91 para coordenadas incrementales).
3- Comentarios:
Los comentarios se pueden agregar en un programa G-Code precedidos por un paréntesis "( )". Estos comentarios son útiles para documentar el programa y explicar su funcionalidad, pero no afectan la ejecución del código.
4- Códigos Modales:
Algunos comandos G-Code son modales, lo que significa que permanecen activos hasta que se cambian explícitamente. Por ejemplo, si se establece un comando G01 para movimiento lineal, todos los movimientos subsiguientes serán lineales hasta que se cambie a otro modo.
5- Parámetros Adicionales:
Muchos comandos G-Code permiten la especificación de parámetros adicionales, como velocidades de avance, velocidades de rotación, coordenadas de destino y dimensiones de herramientas, según sea necesario para la operación.
6- Secuencia de Comandos:
Un programa G-Code está compuesto por una secuencia de comandos que se ejecutan en orden. Cada comando especifica una acción particular, como un movimiento de corte, una pausa o una activación de accesorios.
7- Bloques y Separadores:
Los comandos G-Code se agrupan en bloques separados por líneas nuevas o retornos de carro. Cada bloque suele contener un solo comando o un conjunto de comandos relacionados.
8- Programación CAD/CAM:
programación manual de G-Code puede ser laboriosa y propensa a errores. Por esta razón, se utilizan sistemas CAD/CAM para generar automáticamente programas G-Code a partir de modelos 3D y diseños. Esto simplifica en gran medida el proceso de programación y reduce la posibilidad de errores humanos.