{"id":10317,"date":"2026-03-12T10:55:08","date_gmt":"2026-03-12T02:55:08","guid":{"rendered":"https:\/\/www.cncmachiningshops.com\/?p=10317"},"modified":"2026-07-19T17:21:55","modified_gmt":"2026-07-19T09:21:55","slug":"g-code-and-m-code","status":"publish","type":"post","link":"https:\/\/www.cncmachiningshops.com\/es\/g-code-and-m-code\/","title":{"rendered":"C\u00f3digo G y c\u00f3digo M en la programaci\u00f3n CNC: tipos de comandos, estructura del programa y ejemplos pr\u00e1cticos"},"content":{"rendered":"<div data-page-id=\"AT0qdjHDyok1tCxcuPGceqlZn7e\" data-lark-html-role=\"root\" data-docx-has-block-data=\"true\">\n<p>Cada movimiento que hace una m\u00e1quina CNC \u2014 cada avance, cada arranque del husillo, cada cambio de herramienta \u2014 est\u00e1 impulsado por el c\u00f3digo G y el c\u00f3digo M. Estos dos tipos de comandos forman la capa de instrucciones entre una trayectoria de herramienta generada por CAM y la eliminaci\u00f3n real de metal. El c\u00f3digo G controla la geometr\u00eda y el movimiento; el c\u00f3digo M controla el estado de la m\u00e1quina que hace que ese movimiento sea seguro y efectivo. Comprender c\u00f3mo trabajan juntos es lo que separa a los programadores que pueden escribir c\u00f3digo de producci\u00f3n confiable de aquellos que solo pueden ejecutar lo que CAM genera.<\/p>\n<p>Este art\u00edculo cubre el c\u00f3digo G y el c\u00f3digo M desde un punto de vista pr\u00e1ctico de ingenier\u00eda: qu\u00e9 controla cada uno, c\u00f3mo funcionan la estructura del programa y la l\u00f3gica de estado modal, c\u00f3digos comunes con contexto real de mecanizado, diferencias de controladores que afectan la portabilidad y los errores de programaci\u00f3n que causan la mayor\u00eda de los choques y desechos. El objetivo no es una lista de referencia de comandos \u2014 es una comprensi\u00f3n de la l\u00f3gica de ejecuci\u00f3n que hace que los programas CNC sean predecibles y repetibles.<\/p>\n<hr \/>\n<h2>\u00bfQu\u00e9 son el C\u00f3digo G y el C\u00f3digo M? La Distinci\u00f3n Fundamental<\/h2>\n<p>La divisi\u00f3n fundamental es sencilla. <strong>El c\u00f3digo G controla el movimiento y la geometr\u00eda de la herramienta<\/strong>. <strong>El c\u00f3digo M controla el estado de la m\u00e1quina y las funciones auxiliares<\/strong>. Ambos son necesarios. Ninguno funciona sin el otro.<\/p>\n<table>\n<thead>\n<tr>\n<th>Aspecto<\/th>\n<th>C\u00f3digo G<\/th>\n<th>C\u00f3digo M<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Funci\u00f3n principal<\/td>\n<td>Movimiento y geometr\u00eda de la herramienta<\/td>\n<td>Funci\u00f3n y estado de la m\u00e1quina<\/td>\n<\/tr>\n<tr>\n<td>Controles<\/td>\n<td>Ejes, interpolaci\u00f3n, avances, sistemas de coordenadas<\/td>\n<td>Husillo, refrigerante, cambios de herramienta, flujo del programa<\/td>\n<\/tr>\n<tr>\n<td>Afecta<\/td>\n<td>Precisi\u00f3n, acabado superficial, tiempo de ciclo<\/td>\n<td>Seguridad, confiabilidad, condiciones de corte<\/td>\n<\/tr>\n<tr>\n<td>Ejemplos<\/td>\n<td>G00, G01, G02, G17, G54<\/td>\n<td>M03, M05, M06, M08, M30<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>C\u00f3digo G: L\u00f3gica de Geometr\u00eda y Movimiento<\/h3>\n<p>Los c\u00f3digos G responden a la pregunta: <em>\u00bfc\u00f3mo debe moverse la herramienta para crear esta geometr\u00eda?<\/em> Definen el modo de posicionamiento, el tipo de interpolaci\u00f3n, el comportamiento del avance y qu\u00e9 sistema de coordenadas est\u00e1 activo. La calidad del acabado superficial, la precisi\u00f3n dimensional y la distribuci\u00f3n de la carga de la herramienta est\u00e1n directamente moldeadas por c\u00f3mo se estructuran y secuencian los c\u00f3digos G.<\/p>\n<p>Piensa en el c\u00f3digo G como el cerebro geom\u00e9trico del programa. Sabe d\u00f3nde necesita ir la herramienta y c\u00f3mo debe llegar all\u00ed.<\/p>\n<h3>C\u00f3digo M: Control de M\u00e1quina y PLC<\/h3>\n<p>Los c\u00f3digos M responden a una pregunta diferente: <em>\u00bfc\u00f3mo debe comportarse la m\u00e1quina mientras ejecuta ese movimiento?<\/em> Manejan el arranque y la direcci\u00f3n del husillo, la activaci\u00f3n del refrigerante, los cambios de herramienta y el control del flujo del programa. Todas estas funciones se gestionan a trav\u00e9s del PLC (Controlador L\u00f3gico Programable) de la m\u00e1quina \u2014 una capa de control separada del controlador de movimiento.<\/p>\n<p>Una forma \u00fatil de pensarlo: el c\u00f3digo G define la trayectoria; el c\u00f3digo M prepara y mantiene las condiciones para cortar a lo largo de esa trayectoria. Una trayectoria de herramienta correctamente definida falla inmediatamente si el husillo no est\u00e1 en marcha, la herramienta incorrecta est\u00e1 cargada o el refrigerante no est\u00e1 activo. Esas condiciones son territorio exclusivo del c\u00f3digo M.<\/p>\n<hr \/>\n<h2>Estructura del Programa CNC: Bloques, Estados Modales y L\u00f3gica de Ejecuci\u00f3n<\/h2>\n<p>Uno de los conceptos m\u00e1s importantes en la programaci\u00f3n CNC \u2014 y uno que causa el comportamiento m\u00e1s inesperado \u2014 es comprender que el controlador ejecuta los programas como una <strong>m\u00e1quina de estados<\/strong>, no como una simple lista secuencial de instrucciones.<\/p>\n<h3>Bloques y Orden de Ejecuci\u00f3n<\/h3>\n<p>Un programa CNC consiste en <strong>bloques<\/strong> \u2014 t\u00edpicamente una l\u00ednea de instrucci\u00f3n cada uno. El controlador lee cada bloque de izquierda a derecha y lo ejecuta como una unidad. Cr\u00edticamente, el controlador no interpreta la intenci\u00f3n. Solo ve el bloque actual combinado con los estados modales que fueron establecidos por bloques anteriores.<\/p>\n<p>Esto significa que dos comandos de movimiento de apariencia id\u00e9ntica pueden comportarse completamente diferente dependiendo de lo que se estableci\u00f3 anteriormente en el programa. Equivocarse en esto es la causa ra\u00edz de la mayor\u00eda de los comportamientos inesperados en CNC.<\/p>\n<h3>C\u00f3digos Modales vs No Modales<\/h3>\n<p>Esta distinci\u00f3n es esencial para comprender el comportamiento del programa:<\/p>\n<p><strong>C\u00f3digos modales<\/strong> permanecen activos hasta que se cambian expl\u00edcitamente. Una vez establecidos, persisten en todos los bloques posteriores hasta que se sobrescriben. Ejemplos:<\/p>\n<ul>\n<li>Modo de movimiento (G00, G01, G02) \u2014 permanece activo hasta que se llama un modo de movimiento diferente<\/li>\n<li>Modo de posicionamiento (G90\/G91) \u2014 absoluto o incremental permanece establecido hasta que se cambia<\/li>\n<li>Selecci\u00f3n de plano (G17\/G18\/G19) \u2014 el plano de corte activo persiste<\/li>\n<\/ul>\n<p><strong>C\u00f3digos no modales<\/strong> se ejecutan una vez en el bloque donde aparecen y luego no tienen efecto adicional. Los cancelaciones espec\u00edficas de ciclos fijos y los comandos de pausa son ejemplos t\u00edpicos.<\/p>\n<table>\n<thead>\n<tr>\n<th>Comportamiento<\/th>\n<th>C\u00f3digos Modales<\/th>\n<th>C\u00f3digos No Modales<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Persistencia de estado<\/td>\n<td>Activo hasta que se cambie<\/td>\n<td>Ejecutar una vez<\/td>\n<\/tr>\n<tr>\n<td>Riesgo si se malinterpreta<\/td>\n<td>Movimiento no intencionado en bloques posteriores<\/td>\n<td>Efecto generalmente localizado<\/td>\n<\/tr>\n<tr>\n<td>Ejemplos comunes<\/td>\n<td>G00, G01, G90, G91, G17<\/td>\n<td>Acciones \u00fanicas, cancelaciones de ciclos espec\u00edficos<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>La implicaci\u00f3n pr\u00e1ctica: un G01 modal dejado activo de una operaci\u00f3n anterior har\u00e1 que el siguiente movimiento de posicionamiento r\u00e1pido se ejecute como un movimiento de corte a velocidad de avance. Eso es un choque a punto de ocurrir \u2014 y es totalmente prevenible al comprender el estado modal.<\/p>\n<h3>Fases de L\u00f3gica del Programa<\/h3>\n<p>Todo programa CNC confiable sigue tres fases l\u00f3gicas:<\/p>\n<p><strong>Inicializaci\u00f3n:<\/strong> Establecer el estado de la m\u00e1quina expl\u00edcitamente. Configurar unidades (G20\/G21), plano (G17), modo de posicionamiento (G90), desplazamiento de trabajo (G54 o equivalente) y modo de avance. Nunca depender de los valores predeterminados del controlador \u2014 var\u00edan entre m\u00e1quinas.<\/p>\n<p><strong>Mecanizado:<\/strong> El c\u00f3digo G domina el movimiento y la geometr\u00eda. Los c\u00f3digos M mantienen las condiciones de corte en segundo plano \u2014 el husillo sigue girando, el refrigerante permanece activo, la herramienta permanece en contacto.<\/p>\n<p><strong>Apagado:<\/strong> Regresar a un estado seguro y conocido. La herramienta se retrae, el husillo y el refrigerante se detienen, el programa termina y se reinicia para el siguiente ciclo.<\/p>\n<hr \/>\n<h2>Principales Tipos de C\u00f3digos G: Movimiento, Posicionamiento y Ciclos Fijos<\/h2>\n<p>En lugar de enumerar cada c\u00f3digo G, comprender las tres categor\u00edas funcionales aclara cu\u00e1ndo y por qu\u00e9 se usa cada tipo en operaciones de mecanizado pr\u00e1cticas.<\/p>\n<h3>C\u00f3digos G de Movimiento e Interpolaci\u00f3n<\/h3>\n<p>Estos c\u00f3digos definen c\u00f3mo se mueve la herramienta de corte entre puntos. Tienen el impacto m\u00e1s directo en el acabado superficial, el tiempo de ciclo y la carga de la herramienta.<\/p>\n<p><strong>G00 \u2013 Posicionamiento r\u00e1pido<\/strong> Mueve la herramienta a la velocidad m\u00e1xima de la m\u00e1quina. Se usa exclusivamente para movimientos sin corte: aproximaci\u00f3n, retracci\u00f3n, posicionamiento para cambio de herramienta y movimientos de holgura. G00 prioriza la velocidad sobre la precisi\u00f3n de la trayectoria \u2014 la ruta real entre puntos no es una l\u00ednea recta en la mayor\u00eda de las m\u00e1quinas. La holgura del fixture y la pieza debe verificarse, no asumirse.<\/p>\n<p><strong>G01 \u2013 Interpolaci\u00f3n lineal<\/strong> Mueve la herramienta en l\u00ednea recta a una velocidad de avance programada. Este es el movimiento de corte principal para la mayor\u00eda de las operaciones de fresado y torneado. La velocidad de avance se especifica con F \u2014 y ese valor F persiste modalmente hasta que se cambia.<\/p>\n<p><strong>G02 \/ G03 \u2013 Interpolaci\u00f3n circular<\/strong> G02 genera arcos en sentido horario; G03 genera arcos en sentido antihorario. Se usan para bolsillos circulares, radios de esquina, filetes y contorneado. Se debe especificar el punto central o el radio (R). En la mayor\u00eda de los controladores, la direcci\u00f3n del arco es relativa al plano activo (G17\/G18\/G19) \u2014 un detalle importante al programar arcos fuera del plano XY.<\/p>\n<p><strong>La distinci\u00f3n cr\u00edtica:<\/strong> G00 es para posicionamiento entre cortes. G01\/G02\/G03 son para remoci\u00f3n de material. Usar G00 donde se pretende G01 \u2014 o dejar G01 activo cuando se necesita posicionamiento r\u00e1pido \u2014 es una de las causas m\u00e1s comunes de choques y sobrecortes.<\/p>\n<h3>C\u00f3digos G de Sistema de Coordenadas y Posicionamiento<\/h3>\n<p>Estos c\u00f3digos definen <em>donde<\/em> ocurre el movimiento, no c\u00f3mo se mueve la herramienta.<\/p>\n<p><strong>Sistemas de coordenadas de trabajo (G54\u2013G59)<\/strong> Cada desplazamiento almacena una relaci\u00f3n entre el cero de la m\u00e1quina y el cero de la pieza. Se pueden activar m\u00faltiples fixtures o configuraciones en el mismo programa llamando a diferentes desplazamientos de trabajo. En mecanizado pr\u00e1ctico, G54 es el predeterminado para trabajo de configuraci\u00f3n \u00fanica; G55\u2013G59 se usan para pallets de m\u00faltiples fixtures o fixtures tipo tumba.<\/p>\n<p><strong>G90 \u2013 Posicionamiento absoluto<\/strong> Todas las coordenadas hacen referencia al cero de trabajo activo. Un movimiento a X50 siempre va a X50 relativo al cero de la pieza, independientemente de la posici\u00f3n actual de la herramienta. Este es el modo est\u00e1ndar para la mayor\u00eda de los programas de producci\u00f3n \u2014 es predecible y f\u00e1cil de verificar.<\/p>\n<p><strong>G91 \u2013 Posicionamiento incremental<\/strong> Cada coordenada se mueve relativa a la posici\u00f3n actual de la herramienta. G91 es potente para patrones repetitivos y caracter\u00edsticas sim\u00e9tricas, pero peligroso si se deja activo sin intenci\u00f3n. Un G01 incremental Z-1.0 significa \u201cbajar 1 mm desde donde est\u00e9s ahora\u201d \u2014 no desde el cero de la pieza. Esta es una fuente significativa de errores de profundidad y choques.<\/p>\n<h3>Ciclos Fijos<\/h3>\n<p>Los ciclos fijos condensan secuencias repetitivas de taladrado, mandrinado y roscado en llamadas de una sola l\u00ednea. En lugar de programar aproximaci\u00f3n, avance, pausa, retracci\u00f3n y holgura por separado para cada agujero, un ciclo fijo maneja la secuencia completa autom\u00e1ticamente.<\/p>\n<p>Ejemplos comunes incluyen G81 (taladrado), G83 (taladrado por picoteo para agujeros profundos), G84 (roscado) y G76 (mandrinado fino). Los par\u00e1metros t\u00edpicamente incluyen profundidad del agujero, plano de retracci\u00f3n, velocidad de avance y opciones espec\u00edficas del ciclo.<\/p>\n<p>Dos puntos de ingenier\u00eda importan aqu\u00ed. Primero, los ciclos fijos son <strong>modal<\/strong> \u2014 permanecen activos hasta que se cancelan expl\u00edcitamente (t\u00edpicamente con G80). Olvidar cancelar un ciclo de taladrado antes de un movimiento de reposicionamiento puede hacer que la m\u00e1quina taladre en cada posici\u00f3n intermedia. Segundo, el comportamiento de retracci\u00f3n var\u00eda entre controladores \u2014 verificar la l\u00f3gica de retracci\u00f3n del taladrado por picoteo antes de ejecutar ciclos de agujeros profundos en m\u00e1quinas desconocidas.<\/p>\n<hr \/>\n<h2>C\u00f3digos M Comunes: Qu\u00e9 Controlan y Por Qu\u00e9 el Tiempo Importa<\/h2>\n<p>Los c\u00f3digos M a menudo se tratan como pensamientos secundarios \u2014 comandos b\u00e1sicos para arrancar el husillo y encender el refrigerante. En la pr\u00e1ctica, el tiempo y la secuencia de los c\u00f3digos M son tan cr\u00edticos como la geometr\u00eda de la trayectoria de la herramienta. Equivocarse cuesta herramientas, piezas y a veces m\u00e1quinas.<\/p>\n<h3>Control del Husillo<\/h3>\n<p><strong>M03 \u2013 Husillo encendido (sentido horario)<\/strong> Direcci\u00f3n de corte est\u00e1ndar para herramientas de mano derecha. Debe estar activo antes de que se ejecute cualquier c\u00f3digo G de corte. Incluir un valor S (velocidad del husillo) en el mismo bloque o en el bloque anterior.<\/p>\n<p><strong>M04 \u2013 Husillo encendido (en sentido antihorario)<\/strong> Se utiliza para herramientas de mano izquierda, ciertas operaciones de mandrinado y fresado de roscas en configuraciones espec\u00edficas. Usar M04 con una fresa de extremo est\u00e1ndar de mano derecha da\u00f1a inmediatamente tanto la herramienta como la pieza de trabajo.<\/p>\n<p><strong>M05 \u2013 Parada del husillo<\/strong> Requerido antes de cambios de herramienta, operaciones de sondeo y pausas del programa. En la mayor\u00eda de las m\u00e1quinas, M06 (cambio de herramienta) detendr\u00e1 autom\u00e1ticamente el husillo \u2014 pero programar expl\u00edcitamente M05 antes de M06 es una mejor pr\u00e1ctica y m\u00e1s port\u00e1til.<\/p>\n<h3>Control de refrigerante<\/h3>\n<p><strong>M08 \u2013 Refrigerante encendido<\/strong> Activa el refrigerante por inundaci\u00f3n. En m\u00e1quinas con m\u00faltiples opciones de refrigerante, c\u00f3digos M espec\u00edficos pueden seleccionar entre inundaci\u00f3n, niebla y refrigerante a trav\u00e9s del husillo \u2014 consulte la lista de c\u00f3digos M de la m\u00e1quina.<\/p>\n<p><strong>M09 \u2013 Refrigerante apagado<\/strong> Ap\u00e1guelo antes de los cambios de herramienta y al final del programa. Dejar el refrigerante activo durante un cambio de herramienta crea problemas de limpieza y posibles problemas de seguridad en la posici\u00f3n de cambio de herramienta.<\/p>\n<p>El tiempo del refrigerante importa m\u00e1s de lo que la mayor\u00eda de los programadores reconocen. En el mecanizado de titanio (Ti-6Al-4V), el refrigerante debe estar activo antes de que el filo de corte entre en contacto con la pieza de trabajo \u2014 activarlo despu\u00e9s del contacto es demasiado tarde para la protecci\u00f3n t\u00e9rmica. En aluminio 6061, el refrigerante por niebla o inundaci\u00f3n previene la acumulaci\u00f3n de filo y mantiene el acabado superficial. La llamada M08 pertenece <em>antes<\/em> del primer G01 de corte, no despu\u00e9s.<\/p>\n<h3>Cambio de herramienta y flujo del programa<\/h3>\n<p><strong>M06 \u2013 Cambio de herramienta<\/strong> Ejecuta el cambio autom\u00e1tico de herramienta a la herramienta especificada por un c\u00f3digo T. La ejecuci\u00f3n segura requiere que la herramienta est\u00e9 retra\u00edda a la posici\u00f3n de cambio de herramienta y que el husillo est\u00e9 detenido. Secuencia est\u00e1ndar: G00 a altura de seguridad Z \u2192 M05 \u2192 T___ \u2192 M06.<\/p>\n<p><strong>M00 \u2013 Parada de programa (incondicional)<\/strong> Pausa la ejecuci\u00f3n. La m\u00e1quina se detiene y espera la entrada del operador. Se utiliza para inspecci\u00f3n durante el proceso, operaciones manuales o ajustes de fijaci\u00f3n a mitad del ciclo.<\/p>\n<p><strong>M01 \u2013 Parada opcional<\/strong> Se detiene solo si el interruptor de parada opcional est\u00e1 activo en el controlador. \u00datil para puntos de inspecci\u00f3n que pueden omitirse en producci\u00f3n pero se activan durante la configuraci\u00f3n o las primeras ejecuciones de piezas.<\/p>\n<p><strong>M30 \u2013 Fin de programa y reinicio<\/strong> Termina el programa y rebobina al inicio. La forma correcta de finalizar un programa de producci\u00f3n CNC. M02 termina sin rebobinar \u2014 ev\u00edtelo en c\u00f3digo de producci\u00f3n.<\/p>\n<table>\n<thead>\n<tr>\n<th>Grupo de funciones<\/th>\n<th>C\u00f3digos M<\/th>\n<th>Funci\u00f3n de ingenier\u00eda<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Husillo<\/td>\n<td>M03 \/ M04 \/ M05<\/td>\n<td>Habilitan y detienen el corte; controlan la direcci\u00f3n<\/td>\n<\/tr>\n<tr>\n<td>Refrigerante<\/td>\n<td>M08 \/ M09<\/td>\n<td>Control t\u00e9rmico, evacuaci\u00f3n de viruta, acabado superficial<\/td>\n<\/tr>\n<tr>\n<td>Gesti\u00f3n de herramientas<\/td>\n<td>M06<\/td>\n<td>Secuenciaci\u00f3n de cambio de herramienta<\/td>\n<\/tr>\n<tr>\n<td>Flujo del programa<\/td>\n<td>M00 \/ M01 \/ M30<\/td>\n<td>Paradas de seguridad, inspecci\u00f3n, reinicio de ciclo<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>C\u00f3mo funcionan juntos el c\u00f3digo G y el c\u00f3digo M: un ejemplo pr\u00e1ctico de fresado<\/h2>\n<p>La coordinaci\u00f3n entre los c\u00f3digos G y M se aclara cuando se rastrea la l\u00f3gica de ejecuci\u00f3n de una operaci\u00f3n de mecanizado real. As\u00ed es como se ve una pasada de fresado de cara sencilla en una pieza de aluminio 6061 desde una perspectiva de gesti\u00f3n de estado:<\/p>\n<h3>Fase 1: Preparaci\u00f3n de la m\u00e1quina (los c\u00f3digos M establecen las condiciones de corte)<\/h3>\n<pre><code>G21 G90 G17 G54       ; Configurar m\u00e9trico, absoluto, plano XY, desplazamiento de trabajo\r\n<\/code><\/pre>\n<p>Antes de cualquier movimiento de corte, el estado de la m\u00e1quina est\u00e1 completamente definido: herramienta correcta, husillo girando en la direcci\u00f3n correcta a la velocidad correcta, refrigerante activo, herramienta posicionada de forma segura sobre la pieza de trabajo.<\/p>\n<h3>Fase 2: Movimiento de corte (los c\u00f3digos G controlan la trayectoria)<\/h3>\n<pre><code>G00 Z2.0              ; Avance r\u00e1pido a altura de aproximaci\u00f3n Z\r\n<\/code><\/pre>\n<p>Los comandos G01 controlan la eliminaci\u00f3n real de material. Los c\u00f3digos M de husillo y refrigerante de la Fase 1 permanecen activos modalmente \u2014 no es necesario volver a llamarlos para cada corte, pero deben haberse establecido antes de que comience la Fase 2.<\/p>\n<h3>Fase 3: Salida segura (restaurar la m\u00e1quina a un estado conocido)<\/h3>\n<pre><code>G01 Z2.0 F600         ; Retraer a velocidad de avance (no r\u00e1pido \u2014 controlado)\r\n<\/code><\/pre>\n<p>Cada elemento de la secuencia de salida tiene un prop\u00f3sito. Retraer a velocidad de avance antes de ir a r\u00e1pido previene marcas de penetraci\u00f3n si la herramienta a\u00fan est\u00e1 en contacto ligero. Apagar el refrigerante antes de la parada del husillo evita que el refrigerante se roc\u00ede durante la desaceleraci\u00f3n. G00 a posici\u00f3n de inicio prepara el siguiente ciclo de manera confiable.<\/p>\n<p>Esta l\u00f3gica de tres fases \u2014 preparar, ejecutar, restaurar \u2014 es el modelo mental que previene la mayor\u00eda de los errores de programaci\u00f3n CNC.<\/p>\n<hr \/>\n<h2>Diferencias de controladores: por qu\u00e9 el c\u00f3digo G y el c\u00f3digo M no son verdaderamente universales<\/h2>\n<p>ISO 6983 \/ RS274 proporciona una base de sintaxis com\u00fan, pero los fabricantes de controladores extienden y modifican el comportamiento significativamente. Un programa que se ejecuta sin problemas en una m\u00e1quina puede producir alarmas o movimientos inesperados en otra \u2014 incluso con hardware id\u00e9ntico.<\/p>\n<h3>\u00c1reas comunes de variaci\u00f3n<\/h3>\n<p><strong>Controladores basados en Fanuc:<\/strong> Los controladores industriales m\u00e1s utilizados. Fanuc define un n\u00facleo com\u00fan grande, pero las opciones del fabricante de la m\u00e1quina a\u00f1aden o modifican el comportamiento. La sintaxis de Macro B, los c\u00f3digos M de sondeo y los par\u00e1metros de ciclos fijos a menudo var\u00edan entre m\u00e1quinas incluso dentro de la familia Fanuc.<\/p>\n<p><strong>Controladores Haas:<\/strong> En gran medida compatible con Fanuc para c\u00f3digos G de movimiento b\u00e1sico, pero Haas utiliza c\u00f3digos M simplificados o propietarios para muchas funciones. Los programas escritos en m\u00e1quinas Haas a menudo necesitan ajustes de c\u00f3digos M al transferirse a m\u00e1quinas Fanuc.<\/p>\n<p><strong>LinuxCNC:<\/strong> De c\u00f3digo abierto y altamente configurable. Admite sintaxis est\u00e1ndar RS274, pero el comportamiento avanzado es definido por el usuario. Potente para m\u00e1quinas personalizadas; requiere documentaci\u00f3n de configuraci\u00f3n cuidadosa para garantizar un comportamiento consistente.<\/p>\n<table>\n<thead>\n<tr>\n<th>\u00c1rea<\/th>\n<th>Variaci\u00f3n t\u00edpica<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Cambio de herramienta (M06)<\/td>\n<td>Posicionamiento, comprobaciones de seguridad, comportamiento del ATC<\/td>\n<\/tr>\n<tr>\n<td>Ciclos predefinidos<\/td>\n<td>Par\u00e1metros, modos de retracci\u00f3n, comportamiento de picoteo<\/td>\n<\/tr>\n<tr>\n<td>C\u00f3digos M de refrigerante<\/td>\n<td>M\u00faltiples tipos de refrigerante, asignaciones de c\u00f3digos espec\u00edficas<\/td>\n<\/tr>\n<tr>\n<td>Variables de macro<\/td>\n<td>Sintaxis, disponibilidad, numeraci\u00f3n de variables<\/td>\n<\/tr>\n<tr>\n<td>Estados modales predeterminados<\/td>\n<td>Selecci\u00f3n de plano, modo de avance, unidades al encender<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Mejores pr\u00e1cticas de portabilidad<\/h3>\n<p>El enfoque m\u00e1s confiable para la compatibilidad entre controladores:<\/p>\n<ul>\n<li><strong>Nunca conf\u00ede en los valores predeterminados.<\/strong> Establezca expl\u00edcitamente unidades, plano, modo de posicionamiento y desplazamiento de trabajo al inicio del programa.<\/li>\n<li><strong>Evite atajos espec\u00edficos del controlador<\/strong> en programas destinados a m\u00faltiples m\u00e1quinas.<\/li>\n<li><strong>Comente los c\u00f3digos M no est\u00e1ndar<\/strong> con su funci\u00f3n: los programadores futuros no sabr\u00e1n qu\u00e9 hace M88 en su m\u00e1quina espec\u00edfica sin documentaci\u00f3n.<\/li>\n<li><strong>Valide en cada controlador<\/strong> antes de la primera ejecuci\u00f3n de producci\u00f3n, incluso si el programa \u201cdeber\u00eda funcionar\u201d.\u201d<\/li>\n<\/ul>\n<hr \/>\n<h2>Errores comunes de c\u00f3digo G y c\u00f3digo M: diagn\u00f3stico y prevenci\u00f3n<\/h2>\n<p>La mayor\u00eda de las fallas CNC se remontan a errores de gesti\u00f3n de estado, no a errores de sintaxis. El controlador ejecut\u00f3 exactamente lo que se le indic\u00f3: el problema es que el programador no tuvo en cuenta completamente qu\u00e9 estados modales estaban activos.<\/p>\n<table>\n<thead>\n<tr>\n<th>Error<\/th>\n<th>Causa ra\u00edz<\/th>\n<th>Prevenci\u00f3n<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Transferencia modal<\/td>\n<td>G90\/G91, G00\/G01 o selecci\u00f3n de plano dejados activos del bloque anterior<\/td>\n<td>Restablezca expl\u00edcitamente los estados modales cr\u00edticos al inicio del programa y antes de operaciones cr\u00edticas<\/td>\n<\/tr>\n<tr>\n<td>Sistema de coordenadas err\u00f3neo<\/td>\n<td>El programa asume un desplazamiento de trabajo o sistema de unidades diferente a la configuraci\u00f3n de la m\u00e1quina<\/td>\n<td>Establezca G54\u2013G59, G90\/G91, G20\/G21 expl\u00edcitamente: nunca asuma<\/td>\n<\/tr>\n<tr>\n<td>Movimiento r\u00e1pido inesperado<\/td>\n<td>G01 a\u00fan activo cuando se pretende posicionamiento r\u00e1pido, o viceversa<\/td>\n<td>Vuelva a declarar el c\u00f3digo G de movimiento en cada bloque donde cambie la intenci\u00f3n de movimiento<\/td>\n<\/tr>\n<tr>\n<td>Sincronizaci\u00f3n de husillo\/refrigerante<\/td>\n<td>C\u00f3digos M colocados despu\u00e9s de que comienza el movimiento de corte<\/td>\n<td>Trate M08 y M03 como condiciones previas: activos antes del primer G01<\/td>\n<\/tr>\n<tr>\n<td>Cambio de herramienta inseguro<\/td>\n<td>M06 llamado sin detenci\u00f3n del husillo o posici\u00f3n de retracci\u00f3n segura<\/td>\n<td>Aplique la secuencia est\u00e1ndar de cambio de herramienta: retraer \u2192 M05 \u2192 T___ \u2192 M06<\/td>\n<\/tr>\n<tr>\n<td>Comportamiento de ciclo inconsistente<\/td>\n<td>Ciclo fijo modal (G83, G84) no cancelado antes de reposicionar<\/td>\n<td>Cancele los ciclos fijos con G80 expl\u00edcitamente; no asuma que se cancelan autom\u00e1ticamente<\/td>\n<\/tr>\n<tr>\n<td>El programa falla en la segunda ejecuci\u00f3n<\/td>\n<td>Estados modales ocultos persisten despu\u00e9s del final del programa<\/td>\n<td>Use M30 con secuencia completa de apagado; inicialice todos los estados al inicio del programa<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Un ejemplo real: modo incremental dejado activo<\/h3>\n<p>Un incidente com\u00fan en taller: un programador usa G91 (incremental) para un patr\u00f3n de perforaci\u00f3n en c\u00edrculo de pernos. El ciclo fijo se ejecuta correctamente. Luego G80 cancela el ciclo, pero G91 nunca se restablece a G90. La siguiente operaci\u00f3n \u2014 una pasada de fresado de bolsillo \u2014 usa coordenadas incrementales. En lugar de moverse a X50 Y30 (absoluto), la m\u00e1quina se mueve 50 mm y 30 mm desde donde est\u00e1 actualmente.<\/p>\n<p>Resultado: pasada de fresado en la ubicaci\u00f3n incorrecta, pieza desechada, posible choque.<\/p>\n<p>Soluci\u00f3n: agregue <code>G90<\/code> a la l\u00ednea inmediatamente despu\u00e9s <code>G80<\/code> al regresar del modo incremental. Un car\u00e1cter. Ahorra una pieza.<\/p>\n<hr \/>\n<h2>Mejores pr\u00e1cticas para una programaci\u00f3n CNC confiable<\/h2>\n<p>Los programas confiables comparten caracter\u00edsticas estructurales comunes independientemente de la m\u00e1quina o el controlador. Estas pr\u00e1cticas reducen errores, simplifican la resoluci\u00f3n de problemas y hacen que los programas sean mantenibles por alguien distinto al autor original.<\/p>\n<h3>Bloque de inicializaci\u00f3n \u2014 Siempre<\/h3>\n<p>Inicie cada programa con una inicializaci\u00f3n completa del estado:<\/p>\n<pre><code>G21 G90 G17 G54 G94 G40 G49    ; M\u00e9trico, absoluto, plano XY, WCS 1,\r\n<\/code><\/pre>\n<p>Este bloque \u00fanico elimina la mayor\u00eda de los problemas de arrastre de estado modal. Toma cinco segundos escribirlo y ahorra horas de resoluci\u00f3n de problemas.<\/p>\n<h3>Cambios de estado expl\u00edcitos en l\u00edmites l\u00f3gicos<\/h3>\n<p>Antes de cualquier nuevo tipo de operaci\u00f3n \u2014 especialmente cambios entre taladrado y fresado, entre diferentes fijaciones, o despu\u00e9s de intervenciones manuales \u2014 restablezca los estados modales cr\u00edticos. No asuma que la operaci\u00f3n anterior dej\u00f3 la m\u00e1quina en la condici\u00f3n correcta.<\/p>\n<h3>Reglas de secuenciaci\u00f3n de c\u00f3digos M<\/h3>\n<p>Siga este orden de manera consistente:<\/p>\n<ol>\n<li>Retraer a la altura de seguridad Z<\/li>\n<li>Detener el husillo (M05) si se necesita un cambio de herramienta<\/li>\n<li>Cambio de herramienta (M06) con c\u00f3digo T<\/li>\n<li>Arranque del husillo a nueva velocidad (M03 S___) y refrigerante activado (M08)<\/li>\n<li>Posicionar al punto de aproximaci\u00f3n<\/li>\n<li>Iniciar el movimiento de corte<\/li>\n<\/ol>\n<p>Invertir los pasos 4 y 5 \u2014 moverse a la posici\u00f3n antes de que el husillo y el refrigerante est\u00e9n activos \u2014 es t\u00e9cnicamente v\u00e1lido en la mayor\u00eda de los controladores, pero es una mala pr\u00e1ctica. El husillo necesita tiempo para alcanzar la velocidad; el refrigerante necesita llegar a la zona de corte antes de que la herramienta se acople.<\/p>\n<h3>Comentar la intenci\u00f3n, no solo la sintaxis<\/h3>\n<p>Comentario malo: <code>; G01 X50 F300 (movimiento lineal)<\/code> Comentario bueno: <code>; Pase de acabado en cara de referencia - profundidad 0.1mm, dejar 0 de sobremedida<\/code><\/p>\n<p>Los comentarios deben explicar <em>por qu\u00e9<\/em> por qu\u00e9 existe una secuencia de c\u00f3digo y qu\u00e9 suposiciones hace, no repetir lo que el c\u00f3digo ya dice.<\/p>\n<h3>Validar con simulaci\u00f3n antes de ejecutar<\/h3>\n<p>Incluso los programadores experimentados simulan antes de cortar. La simulaci\u00f3n CAM moderna detecta errores de trayectoria de herramienta, colisiones de portaherramientas e interferencias de movimientos r\u00e1pidos que parecen correctos en el c\u00f3digo pero causan choques en la m\u00e1quina. Las pruebas en seco a avance 10% con una verificaci\u00f3n visual de cada fase de operaci\u00f3n detectan los problemas restantes que la simulaci\u00f3n no ve.<\/p>\n<hr \/>\n<h2>Conclusi\u00f3n<\/h2>\n<p>El c\u00f3digo G y el c\u00f3digo M no son dos listas separadas de comandos CNC \u2014 son dos capas coordinadas de un solo sistema de control de m\u00e1quina. El c\u00f3digo G define d\u00f3nde y c\u00f3mo se mueve la herramienta; el c\u00f3digo M asegura que la m\u00e1quina est\u00e9 en el estado correcto para ejecutar ese movimiento de manera segura y efectiva. Entender c\u00f3mo interact\u00faan, c\u00f3mo persiste el estado modal entre bloques de programa y c\u00f3mo las diferencias del controlador afectan el comportamiento es lo que marca la diferencia entre c\u00f3digo que funciona de manera confiable en producci\u00f3n y c\u00f3digo que funciona una vez, en una m\u00e1quina, bajo condiciones ideales.<\/p>\n<p>La programaci\u00f3n CNC confiable proviene de la disciplina en la gesti\u00f3n del estado: inicializaci\u00f3n expl\u00edcita, fases de ejecuci\u00f3n predecibles y sincronizaci\u00f3n cuidadosa del c\u00f3digo M. Los programadores que entienden el c\u00f3digo G y el c\u00f3digo M como un sistema l\u00f3gico coordinado \u2014 en lugar de comandos aislados para memorizar \u2014 escriben programas que son portables, seguros y f\u00e1ciles de mantener entre m\u00e1quinas y turnos.<\/p>\n<hr \/>\n<h2>FAQ<\/h2>\n<p><strong>\u00bfEs el c\u00f3digo G el mismo para fresadoras y tornos?<\/strong><\/p>\n<p>No exactamente. Los c\u00f3digos de movimiento b\u00e1sicos (G01, G02) aparecen en ambos, pero el contexto difiere significativamente. El fresado usa selecci\u00f3n de plano (G17\/G18\/G19) y coordenadas multieje. Los centros de torneado usan control de di\u00e1metro\/radio (G7\/G8 en algunos controladores), movimiento sincronizado con el husillo para roscado (G32, G92) y ciclos fijos espec\u00edficos de torno (G71, G72). La sintaxis subyacente es compartida; la l\u00f3gica de aplicaci\u00f3n es lo suficientemente diferente como para que la experiencia en fresado no se transfiera autom\u00e1ticamente a la programaci\u00f3n de torneado.<\/p>\n<p><strong>\u00bfSon los c\u00f3digos M universales en todas las m\u00e1quinas CNC?<\/strong><\/p>\n<p>No \u2014 y asumir que lo son es arriesgado. Los c\u00f3digos b\u00e1sicos como M03 (husillo en sentido horario), M05 (parada del husillo) y M30 (fin de programa) son ampliamente consistentes. Pero el control de refrigerante, la medici\u00f3n, el amarre, los cambios de pallet y las funciones relacionadas con automatizaci\u00f3n var\u00edan significativamente seg\u00fan el controlador, el fabricante de la m\u00e1quina y la configuraci\u00f3n. Siempre verifique las asignaciones de c\u00f3digos M en cada m\u00e1quina espec\u00edfica antes de confiar en ellas.<\/p>\n<p><strong>\u00bfPor qu\u00e9 el mismo c\u00f3digo G se comporta de manera diferente en distintos controladores?<\/strong><\/p>\n<p>ISO 6983 define sintaxis, no comportamiento. Los controladores extienden el est\u00e1ndar con sus propios valores predeterminados, opciones e interpretaciones. Los par\u00e1metros de ciclos fijos, las definiciones de arcos, los estados modales predeterminados al encender y el posicionamiento para cambio de herramienta pueden diferir. Escribir c\u00f3digo expl\u00edcito y defensivo \u2014 estableciendo todos los estados modales en lugar de depender de los valores predeterminados \u2014 es la \u00fanica manera confiable de manejar las diferencias entre controladores.<\/p>\n<p><strong>\u00bfPuede el software CAM reemplazar el conocimiento manual de c\u00f3digos G\/M?<\/strong><\/p>\n<p>El software CAM genera trayectorias de herramienta correctas de manera eficiente, pero no elimina la necesidad de entender el c\u00f3digo. Los ingenieros y maquinistas a\u00fan necesitan conocimiento de c\u00f3digos G y M para verificar la l\u00f3gica del programa, depurar comportamientos inesperados, optimizar el tiempo de ciclo y comunicarse claramente con proveedores y operadores. CAM reemplaza la escritura; no reemplaza el criterio de ingenier\u00eda.<\/p>\n<p><strong>\u00bfCu\u00e1les son los errores m\u00e1s peligrosos de c\u00f3digos G y M?<\/strong><\/p>\n<p>Los errores relacionados con el estado causan los incidentes m\u00e1s graves. Los errores de mayor riesgo son: movimientos r\u00e1pidos G00 ejecutados demasiado cerca de la pieza de trabajo; modo incremental G91 dejado activo sin intenci\u00f3n; arranque del husillo M03 omitido antes del movimiento de corte; cambio de herramienta M06 llamado sin retracci\u00f3n segura; y ciclos fijos (G83, G84) no cancelados antes de reposicionar. Ninguno de estos produce errores de sintaxis \u2014 el controlador los ejecuta sin quejarse. El da\u00f1o ocurre mec\u00e1nicamente.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Cada movimiento que hace una m\u00e1quina CNC \u2014 cada avance, cada arranque del husillo, cada cambio de herramienta \u2014 est\u00e1 impulsado por el c\u00f3digo G y el c\u00f3digo M. Estos dos tipos de comandos forman la capa de instrucciones entre una trayectoria de herramienta generada por CAM y la eliminaci\u00f3n real de metal.<\/p>","protected":false},"author":1,"featured_media":12266,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[105],"tags":[],"class_list":["post-10317","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cnc-machining-guide"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>G Code vs M Code: CNC Programming Commands Guide<\/title>\n<meta name=\"description\" content=\"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.cncmachiningshops.com\/es\/g-code-and-m-code\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples\" \/>\n<meta property=\"og:description\" content=\"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cncmachiningshops.com\/es\/g-code-and-m-code\/\" \/>\n<meta property=\"og:site_name\" content=\"CNC Machining Shops\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-12T02:55:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-19T09:21:55+00:00\" \/>\n<meta name=\"author\" content=\"cncmachiningshops\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"cncmachiningshops\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\"},\"author\":{\"name\":\"cncmachiningshops\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/person\\\/2593a2e2de68be71300e10f486236551\"},\"headline\":\"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples\",\"datePublished\":\"2026-03-12T02:55:08+00:00\",\"dateModified\":\"2026-07-19T09:21:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\"},\"wordCount\":3349,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"articleSection\":[\"CNC Machining Guide\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\",\"name\":\"G Code vs M Code: CNC Programming Commands Guide\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"datePublished\":\"2026-03-12T02:55:08+00:00\",\"dateModified\":\"2026-07-19T09:21:55+00:00\",\"description\":\"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"width\":800,\"height\":600,\"caption\":\"G Code and M Code in CNC Programming 800x600\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#website\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/\",\"name\":\"CNC Machining Shops\",\"description\":\"10+ Years CNC Machining Service Supplier\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#organization\"},\"alternateName\":\"CMS\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#organization\",\"name\":\"CNC Machining Shops\",\"alternateName\":\"CMS\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/CMS_Logo_1000x1000.png\",\"contentUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/CMS_Logo_1000x1000.png\",\"width\":800,\"height\":800,\"caption\":\"CNC Machining Shops\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"description\":\"Shenzhen CMS Technology Co., Ltd. is located in Shenzhen, Guangdong, China. It was established in 2012 with a factory area of \u200b\u200b3,000 square meters. It is a company specializing in CNC machining and precision parts manufacturing. We have passed ISO9001, IATF16949, ISO13485 certification and are your trusted partner.\",\"email\":\"info@cncmachiningshops.com\",\"telephone\":\"+8617196430663\",\"legalName\":\"Shenzhen CMS Technology Co., Ltd.\",\"foundingDate\":\"2012-07-22\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/person\\\/2593a2e2de68be71300e10f486236551\",\"name\":\"cncmachiningshops\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g\",\"caption\":\"cncmachiningshops\"},\"sameAs\":[\"https:\\\/\\\/cncmachiningshops.com\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C\u00f3digo G vs C\u00f3digo M: Gu\u00eda de Comandos de Programaci\u00f3n CNC","description":"Aprende las diferencias entre el c\u00f3digo G y el c\u00f3digo M en la programaci\u00f3n CNC, incluyendo tipos de comandos, estructura de programa y ejemplos pr\u00e1cticos utilizados en operaciones de mecanizado CNC.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.cncmachiningshops.com\/es\/g-code-and-m-code\/","og_locale":"es_ES","og_type":"article","og_title":"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples","og_description":"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.","og_url":"https:\/\/www.cncmachiningshops.com\/es\/g-code-and-m-code\/","og_site_name":"CNC Machining Shops","article_published_time":"2026-03-12T02:55:08+00:00","article_modified_time":"2026-07-19T09:21:55+00:00","author":"cncmachiningshops","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"cncmachiningshops","Tiempo de lectura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#article","isPartOf":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/"},"author":{"name":"cncmachiningshops","@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/person\/2593a2e2de68be71300e10f486236551"},"headline":"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples","datePublished":"2026-03-12T02:55:08+00:00","dateModified":"2026-07-19T09:21:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/"},"wordCount":3349,"commentCount":0,"publisher":{"@id":"https:\/\/www.cncmachiningshops.com\/#organization"},"image":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","articleSection":["CNC Machining Guide"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/","url":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/","name":"C\u00f3digo G vs C\u00f3digo M: Gu\u00eda de Comandos de Programaci\u00f3n CNC","isPartOf":{"@id":"https:\/\/www.cncmachiningshops.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage"},"image":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","datePublished":"2026-03-12T02:55:08+00:00","dateModified":"2026-07-19T09:21:55+00:00","description":"Aprende las diferencias entre el c\u00f3digo G y el c\u00f3digo M en la programaci\u00f3n CNC, incluyendo tipos de comandos, estructura de programa y ejemplos pr\u00e1cticos utilizados en operaciones de mecanizado CNC.","breadcrumb":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage","url":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","contentUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","width":800,"height":600,"caption":"G Code and M Code in CNC Programming 800x600"},{"@type":"BreadcrumbList","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cncmachiningshops.com\/"},{"@type":"ListItem","position":2,"name":"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples"}]},{"@type":"WebSite","@id":"https:\/\/www.cncmachiningshops.com\/#website","url":"https:\/\/www.cncmachiningshops.com\/","name":"Talleres de mecanizado CNC","description":"Proveedor de servicios de mecanizado CNC desde hace m\u00e1s de 10 a\u00f1os","publisher":{"@id":"https:\/\/www.cncmachiningshops.com\/#organization"},"alternateName":"CMS","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.cncmachiningshops.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.cncmachiningshops.com\/#organization","name":"Talleres de mecanizado CNC","alternateName":"CMS","url":"https:\/\/www.cncmachiningshops.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2025\/11\/CMS_Logo_1000x1000.png","contentUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2025\/11\/CMS_Logo_1000x1000.png","width":800,"height":800,"caption":"CNC Machining Shops"},"image":{"@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/logo\/image\/"},"description":"Shenzhen CMS Technology Co, Ltd. se encuentra en Shenzhen, Guangdong, China. Se estableci\u00f3 en 2012 con un \u00e1rea de f\u00e1brica de 3000 metros cuadrados. Es una empresa especializada en mecanizado CNC y fabricaci\u00f3n de piezas de precisi\u00f3n. Hemos pasado la certificaci\u00f3n ISO9001, IATF16949, ISO13485 y somos su socio de confianza.","email":"info@cncmachiningshops.com","telephone":"+8617196430663","legalName":"Shenzhen CMS Technology Co., Ltd.","foundingDate":"2012-07-22","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"}},{"@type":"Person","@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/person\/2593a2e2de68be71300e10f486236551","name":"talleresmecanizadoscnc","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g","caption":"cncmachiningshops"},"sameAs":["https:\/\/cncmachiningshops.com"]}]}},"_links":{"self":[{"href":"https:\/\/www.cncmachiningshops.com\/es\/wp-json\/wp\/v2\/posts\/10317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cncmachiningshops.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cncmachiningshops.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/es\/wp-json\/wp\/v2\/comments?post=10317"}],"version-history":[{"count":0,"href":"https:\/\/www.cncmachiningshops.com\/es\/wp-json\/wp\/v2\/posts\/10317\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/es\/wp-json\/wp\/v2\/media\/12266"}],"wp:attachment":[{"href":"https:\/\/www.cncmachiningshops.com\/es\/wp-json\/wp\/v2\/media?parent=10317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/es\/wp-json\/wp\/v2\/categories?post=10317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/es\/wp-json\/wp\/v2\/tags?post=10317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}