Respuesta rápida: El código M (código misceláneo) controla todas las funciones que no son de movimiento en una máquina CNC: arranque y parada del husillo (M03/M04/M05), activación y desactivación del refrigerante (M08/M09), cambios de herramienta (M06), pausas del programa (M00/M01) y fin del programa (M30). Mientras que el código G indica a la máquina dónde moverse, el código M le indica en qué estado debe estar la máquina para realizar un trabajo útil — sin M03 el husillo no gira, sin M08 la zona de corte se sobrecalienta, y sin M05 antes de M06 se intenta un cambio de herramienta con el husillo aún en rotación. Los errores de secuenciación del código M son una de las causas más comunes de rotura de herramienta, fallos de acabado superficial y choques de máquina en la producción CNC. Los códigos M principales son en gran medida estándar en los controles Fanuc, Haas y Siemens; las funciones avanzadas y auxiliares varían según el fabricante de la máquina.
¿Qué es el código M?
El código M (abreviatura de código misceláneo) es la sección del lenguaje de programación CNC que controla el estado de la máquina en lugar de la geometría de la trayectoria de la herramienta. Toda máquina CNC que ejecute código conforme a ISO 6983 / EIA RS-274 utiliza dos capas paralelas de instrucciones:
Código G — la capa de movimiento y geometría. El código G define posiciones de ejes, modos de interpolación (lineal, circular, helicoidal), velocidades de avance, sistemas de coordenadas y ciclos de corte. El código G indica a la máquina a dónde ir y cómo llegar.
Código M — la capa de control de la máquina. El código M define si el husillo está girando y en qué dirección, si el refrigerante está fluyendo, qué herramienta está cargada y si el programa está en pausa o finalizado. El código M indica a la máquina en qué estado debe estar para realizar un mecanizado útil.
La consecuencia física de esta división: el código G mueve la herramienta a la posición X50 Y20 — pero si M03 (husillo encendido) no se emitió antes de ese movimiento G01, el husillo está estacionario cuando la herramienta alcanza la pieza de trabajo. La herramienta contacta el material sin girar, generando fricción en lugar de corte, quemando el filo de la herramienta en segundos y potencialmente rayando la superficie de la pieza.
El código G define la trayectoria. El código M hace que la trayectoria produzca piezas.
Código M vs Código G: La Diferencia Crítica
| Función | Código G | Código M |
|---|---|---|
| Controla el movimiento de ejes (X, Y, Z) | Sí | No |
| Controla la velocidad de avance | Sí | No |
| Controla la rotación del husillo | No | Sí |
| Controla el refrigerante | No | Sí |
| Controla los cambios de herramienta | No | Sí |
| Controla el flujo del programa (pausa, fin) | No | Sí |
| Controla las funciones auxiliares de la máquina | No | Sí |
| Define geometría (arcos circulares, ciclos fijos) | Sí | No |
Ningún tipo de código funciona de forma independiente para el mecanizado real:
- Código G sin código M: la máquina sigue una trayectoria de movimiento con el husillo apagado y el refrigerante apagado — sin remoción de material, y probablemente daño a la herramienta o la pieza al contacto.
- Código M sin código G: el husillo gira, el refrigerante fluye, las herramientas cambian — pero no ocurre ningún movimiento de corte.
Un programa CNC completo intercala ambos: el código M coloca la máquina en el estado operativo correcto, el código G ejecuta la geometría de corte, el código M realiza transiciones entre operaciones y finaliza el programa.
La Referencia Estándar del Código M
Control del Husillo: M03, M04, M05
M03 — Husillo ENCENDIDO, rotación en sentido horario El código M de mecanizado más fundamental. Se emite antes de cualquier movimiento de corte, típicamente con una palabra S (velocidad del husillo en RPM): M03 S3000 inicia el husillo a 3000 RPM en sentido horario. Estándar para todas las herramientas de corte diestras — fresas, brocas, barras de mandrinar, machos con dirección de rosca convencional.
M04 — Husillo ENCENDIDO, rotación en sentido antihorario Se utiliza para herramientas zurdas, roscado inverso y algunas operaciones especiales. Emitir M04 cuando se pretendía M03 (o viceversa) produce la dirección de corte incorrecta — para una broca esto significa que los filos de corte van arrastrando en lugar de liderar, lo que resulta en fricción, generación de calor y daño rápido del filo.
M05 — Husillo DETENIDO Detiene la rotación del husillo. Debe emitirse antes de cualquier cambio de herramienta (M06) — un cambio de herramienta con el husillo girando crea una colisión mecánica entre la herramienta en rotación y el mecanismo cambiador de herramientas, un evento frecuentemente catastrófico para el husillo. M05 también debe emitirse antes del fin del programa (M30) para evitar que la máquina complete su ciclo con el husillo aún girando.
Control del Refrigerante: M07, M08, M09
M08 — Refrigerante ACTIVADO (inundación) Activa el refrigerante por inundación — el modo principal de refrigerante para la mayoría del mecanizado CNC. Debe emitirse antes de que la herramienta de corte contacte la pieza de trabajo. El refrigerante suministrado después de que comienza el corte significa que la primera parte del corte se ejecuta sin control térmico, produciendo el peor acabado superficial y el mayor desgaste de herramienta en ese período inicial.
La consecuencia térmica de omitir M08: en el mecanizado de acero, las temperaturas en la zona de corte alcanzan 500–800°C sin refrigerante. Por encima de aproximadamente 600°C, el acero rápido comienza a perder dureza; el carburo conserva la dureza por más tiempo pero el calor acelera el desgaste de cráter. Las virutas que deberían llevar el calor fuera de la zona de corte en su lugar se re-sueldan a la cara de ataque de la herramienta (filo recrecido), degradando la geometría de corte y el acabado superficial.
M07 — Refrigerante por niebla (donde esté soportado) Niebla de aire-aceite en lugar de refrigerante por inundación, utilizado para materiales donde el refrigerante por inundación es contraproducente (hierro fundido donde la inundación causa choque térmico) o en aplicaciones que requieren lubricación sin el re-soldado de virutas del corte en seco.
M09 — Refrigerante DESACTIVADO Detiene todo el refrigerante. Se emite después de que los movimientos de corte se completan, antes de la parada del husillo y los cambios de herramienta.
Cambio de Herramienta: M06
M06 — Cambio de herramienta Ejecuta un cambio automático de herramienta, moviendo la herramienta actualmente cargada al almacén y cargando la herramienta especificada por la palabra T: M06 T3 descarga la herramienta actual y carga la Herramienta 3. En la mayoría de los centros de mecanizado, el carrusel de herramientas preselecciona la siguiente herramienta (usando la palabra T) mientras la operación actual se ejecuta, por lo que el cambio de herramienta solo toma el tiempo del intercambio real en lugar del tiempo para encontrar la herramienta.
Requisito crítico de secuenciación: el husillo debe estar detenido (M05) antes de emitir M06. En la mayoría de los controles, emitir M06 sin un M05 previo activará una falla o forzará una parada del husillo antes de continuar — pero algunas máquinas intentarán el cambio de herramienta inmediatamente, creando un riesgo de colisión.
M06 también devuelve el eje Z a la posición de cambio de herramienta (típicamente el cero de máquina o una altura segura definida) antes de ejecutar el intercambio. Los programadores que emiten M06 sin asegurar que la herramienta esté en una Z segura pueden causar que la herramienta saliente contacte con la pieza de trabajo o el dispositivo de sujeción durante el movimiento de cambio de herramienta.
Control de programa: M00, M01, M30
M00 — Parada de programa (incondicional) Detiene la ejecución del programa por completo y requiere acción del operador para continuar. Se utiliza para inspección durante el proceso: pausa después del desbaste para medir una dimensión crítica, pausa para reposicionar la pieza, pausa para limpiar virutas de cavidades profundas. El operador normalmente presiona CYCLE START para reanudar.
M01 — Parada opcional (condicional) Funciones como M00 solo cuando el interruptor de “Parada opcional” del controlador de la máquina está habilitado. Cuando el interruptor está apagado, M01 se ignora y el programa continúa. Se utiliza para pasos que el programador quiere disponibles para depuración o inspección, pero no quiere interrumpir las ejecuciones de producción normales.
M30 — Fin de programa y reinicio Finaliza el programa y devuelve el control al inicio del programa, restableciendo el estado de la máquina. Este es el terminador de programa estándar. Finalizar un programa sin M30 deja la máquina en un estado indefinido: los programas posteriores pueden iniciarse con estados incorrectos del husillo, condiciones de refrigerante o compensaciones de herramienta.
Resumen: Referencia principal del código M
| Código M | Función | Contexto de uso típico |
|---|---|---|
| M00 | Parada incondicional del programa | Inspección durante el proceso, reposicionamiento de la pieza |
| M01 | Parada opcional del programa | Pausa de depuración, inspección condicional |
| M03 S___ | Husillo ENCENDIDO, en sentido horario a ___ RPM | Antes de todas las operaciones de corte estándar |
| M04 S___ | Husillo ENCENDIDO, en sentido antihorario a ___ RPM | Herramientas para zurdos, roscado inverso |
| M05 | Parada del husillo | Antes del cambio de herramienta, al final de la operación |
| M06 T__ | Cambio de herramienta a la herramienta # | Entre operaciones de mecanizado |
| M07 | Refrigerante por niebla encendido | Hierro fundido, materiales sensibles |
| M08 | Refrigerante por inundación encendido | Antes de todas las operaciones de corte |
| M09 | Todo el refrigerante apagado | Después del corte, antes del cambio de herramienta |
| M30 | Fin de programa y reinicio | Última línea de cada programa |
La secuencia de código M en un programa de mecanizado completo
Comprender el código M es más útil en contexto: el orden específico en que aparecen los códigos M dentro de un programa determina directamente la calidad del mecanizado y la seguridad de la máquina. Lo siguiente representa un programa estándar de dos operaciones (fresado seguido de taladrado):
T1 M06 ; Preseleccionar y cambiar a la Herramienta 1 (fresa)
Cada código M en esta secuencia tiene un propósito específico:
- M03 antes de cualquier movimiento de corte G01 asegura que el husillo esté girando antes del contacto con la herramienta
- M08 emitido antes del primer movimiento de corte asegura que el refrigerante fluya antes de que la herramienta toque la pieza de trabajo
- M09 antes de M05 asegura que el refrigerante esté apagado antes de que el husillo se detenga (evita la acumulación de refrigerante en la herramienta no giratoria)
- M05 antes de M06 asegura que el husillo esté detenido antes del cambio de herramienta
- M30 al final del programa restablece la máquina al estado de listo
El orden importa. Mover M08 después del primer G01 significa que el primer corte se ejecuta en seco. Mover M06 antes de M05 arriesga una colisión mecánica.
Qué sucede cuando el código M es incorrecto
Los errores de programación del código M son errores físicos: producen consecuencias inmediatas y medibles en la máquina:
| Error | Causa raíz | Consecuencia física |
|---|---|---|
| Husillo sin girar durante el corte | Falta M03 o M04 | La herramienta roza, se quema, astillado del filo; rayado de la superficie de la pieza de trabajo |
| Sobrecalentamiento durante el corte | M08 faltante o tardío | Desgaste acelerado de la herramienta, filo recrecido, Ra se degrada (p. ej., Ra 1,6 → Ra 3,2+ µm) |
| Herramienta incorrecta cargada | Palabra T incorrecta con M06 | Geometría incorrecta mecanizada, rotura de herramienta, pieza de desecho |
| Cambio de herramienta intentado con el husillo en marcha | M05 faltante antes de M06 | Colisión mecánica, daño al cambiador de herramientas, posible daño al husillo |
| El refrigerante continúa después del programa | M09 faltante antes de M30 | Menor (charco de refrigerante en la máquina), pero indica secuenciación incompleta |
| Máquina no reiniciada para la siguiente ejecución | M30 faltante | El siguiente ciclo comienza en estado indefinido: compensaciones incorrectas, herramienta incorrecta, velocidad de husillo incorrecta |
| Dirección incorrecta del husillo | M04 utilizado cuando se requiere M03 | Corte inverso: daño inmediato a la herramienta y mal acabado superficial |
El error de código M más costoso en producción es el cambio de herramienta con el husillo en marcha: el brazo del cambiador se mueve para acoplar la herramienta en el husillo mientras este gira, causando una colisión entre el brazo y la herramienta rotatoria. Este evento puede dañar el cono del husillo, el brazo del cambiador y la herramienta: un costo de reparación que puede alcanzar $5,000–$50,000 en tiempo de inactividad y piezas, totalmente prevenible con los dos caracteres “M05” antes de “M06”.
Variación de códigos M entre controladores CNC
La mayoría de los códigos M fundamentales están estandarizados en las plataformas de controladores CNC dominantes (Fanuc, Haas, Siemens, Mitsubishi, Okuma). El conjunto básico — M03, M04, M05, M06, M07, M08, M09, M30 — se comporta de manera idéntica en prácticamente todas las máquinas CNC de producción.
La divergencia comienza con funciones auxiliares específicas de la máquina:
| Función | ¿Estándar? | Notas |
|---|---|---|
| Encendido/apagado del husillo (M03/M05) | Sí | Universal |
| Refrigerante por inundación (M08/M09) | Sí | Universal |
| Cambio de herramienta (M06) | Sí | Mecanismo universal; implementación varía |
| Refrigerante a través del husillo | No | A menudo código M asignado por el fabricante de la máquina (p. ej., Haas M52, varía en otros) |
| Soplado de aire | No | Código dependiente de la máquina |
| Tornillo sin fin / transportador de viruta | No | Específico de la máquina |
| Cambiador de pallets | No | Específico de la máquina |
| Apertura/cierre de puerta | No | Específico de la máquina |
| Ciclos de sondeo | No | Algunos estándar en FANUC 0i, varía en otros |
| Captador de piezas (torno) | No | Específico de la máquina |
Cuando un programa escrito para una máquina se transfiere a otra, todos los códigos M estándar funcionarán. Cualquier código M específico de la máquina producirá una falla (código M desconocido), ejecutará una función diferente a la prevista, o será ignorado silenciosamente — todo lo cual puede producir un comportamiento inesperado. Los programas transferidos entre máquinas deben tener todos los códigos M específicos de la máquina revisados y actualizados antes de ejecutarse.
Errores comunes de programación y cómo prevenirlos
Arranque del husillo faltante antes del movimiento de corte
El error más básico: un movimiento G01 o G02 se ejecuta con M05 aún activo (husillo detenido). Prevención: exigir M03 o M04 antes de cualquier comando G01/G02/G03 en la lista de verificación de revisión del programa. En controladores CNC modernos, esto también puede detectarse mediante la lógica de interbloqueo de avance, pero esta protección depende de la máquina.
Refrigerante activado después del primer contacto de corte
M08 aparece en el programa pero después del primer movimiento G01 en lugar de antes. El primer corte se ejecuta sin refrigerante, produciendo la peor calidad superficial y el mayor desgaste de herramienta de toda la operación. Prevención: colocar M08 inmediatamente antes del primer movimiento de corte, no después de otros comandos G en el mismo bloque o en el bloque siguiente.
Número de herramienta incorrecto con M06
Se emite T2 M06 pero la posición T2 en el carrusel contiene la herramienta incorrecta, o la compensación de herramienta (H/D) para T2 no fue ingresada. Prevención: verificar la hoja de configuración de herramientas contra el programa antes de la ejecución; usar ciclos de verificación de compensación de longitud de herramienta donde estén disponibles.
Omitir M05 antes de M06
Discutido anteriormente: el error de código M común más costoso. Prevención: hacer de M05 antes de M06 una regla de programación inviolable; revisar cada bloque de cambio de herramienta en la verificación del programa.
Omitir M30
El programa se ejecuta hasta la última línea de código G y se detiene sin reiniciar. La siguiente ejecución comienza desde la posición de la última línea en lugar de desde el inicio del programa. Prevención: exigir M30 como línea final obligatoria en cada programa.
Lista de verificación del programa para la verificación de códigos M:
| Verificar | Requisito |
|---|---|
| ¿M03 o M04 antes del primer movimiento de corte? | Sí |
| ¿M08 antes del primer contacto de corte? | Sí |
| ¿M05 antes de cada M06? | Sí |
| ¿M09 después del último movimiento de corte? | Sí |
| ¿M05 después de la última rotación del husillo? | Sí |
| ¿M30 como última línea del programa? | Sí |
| ¿Compensaciones de palabra T y H/D verificadas para todos los M06? | Sí |
| ¿Códigos M específicos de la máquina verificados para este controlador? | Sí |
Principales conclusiones
- El código M controla el estado de la máquina, no la geometría: la rotación del husillo, el flujo de refrigerante, los cambios de herramienta y el flujo del programa son todas funciones del código M. El código G no puede sustituir al código M, y el código M no puede sustituir al código G.
- La secuenciación del código M es tan importante como la correcta trayectoria de la herramienta: M05 debe preceder a M06; M03 y M08 deben preceder a los movimientos de corte; M09 y M05 deben seguir a los movimientos de corte. El orden es físico — una secuencia incorrecta causa daño a la herramienta, piezas de desecho o choques de la máquina.
- La falta de M08 es una falla directa en la calidad superficial y la vida útil de la herramienta: las temperaturas de corte de 500–800 °C sin refrigerante en el mecanizado de acero causan formación de filo recrecido, desgaste acelerado de la herramienta y degradación de Ra — todo prevenible con la colocación correcta de M08.
- Los códigos M principales son estándar en todos los controladores: M03/M05/M06/M08/M09/M30 se comportan de manera consistente en Fanuc, Haas, Siemens y la mayoría de las plataformas de producción CNC. Los códigos M avanzados y auxiliares son específicos de la máquina y no son portables.
- El error de código M más costoso es el cambio de herramienta con el husillo en marcha: la falta de M05 antes de M06 puede causar daños al husillo que cuestan $5,000–$50,000 — prevenible con dos caracteres.
- El conocimiento del código M es relevante más allá de los programadores: maquinistas, operadores e ingenieros de fabricación que entienden el código M pueden diagnosticar problemas de husillo, refrigerante y secuencia sin requerir intervención del programador.
- Para los equipos de compras de los fabricantes de equipos originales (OEM): los programas CNC suministrados con piezas personalizadas deben incluir la verificación de códigos M como parte de la inspección de primera pieza — específicamente confirmando que las secuencias de refrigerante, los cambios de herramienta y la terminación del programa estén correctamente programados para la máquina de producción.
Preguntas frecuentes
¿Qué controla el código M en el mecanizado CNC?
El código M controla todas las funciones de la máquina que no implican movimiento en la programación CNC. Gestiona: el estado y la dirección de rotación del husillo (M03 en sentido horario, M04 en sentido antihorario, M05 parada), la activación y desactivación del refrigerante (M08 activa inundación, M09 apaga), los cambios automáticos de herramienta (M06 con una palabra T que especifica el número de herramienta), las pausas del programa para acción del operador (M00 incondicional, M01 opcional), y la terminación y reinicio del programa (M30). Estas funciones no son opcionales — sin M03 el husillo no gira, por lo que no ocurre corte; sin M08 la zona de corte se sobrecalienta; sin M05 antes de M06 se intenta un cambio de herramienta con el husillo girando, arriesgando una colisión mecánica.
¿Cuál es la diferencia entre el código M y el código G?
El código G define geometría y movimiento — posiciones de ejes (X, Y, Z), modos de interpolación (G00 rápido, G01 lineal, G02/G03 circular), velocidades de avance y ciclos de mecanizado fijos. El código M define el estado de la máquina — si el husillo está girando y a qué velocidad, si el refrigerante fluye, qué herramienta está cargada y si el programa está en ejecución, pausado o terminado. Ambos son necesarios para un mecanizado funcional. El código G sin código M mueve la herramienta pero no puede cortar (husillo apagado). El código M sin código G activa funciones de la máquina pero no produce movimiento de corte. En un programa completo, se intercalan: el código M establece el estado operativo, el código G ejecuta la geometría.
¿Cuáles son los códigos M más importantes que se deben conocer?
Los ocho códigos M más críticos para el mecanizado CNC son: M03 (husillo encendido, en sentido horario) — requerido antes de cada operación de corte; M05 (parada del husillo) — requerido antes de cada cambio de herramienta y al final del programa; M06 con palabra T (cambio de herramienta) — cambia a la herramienta especificada; M08 (refrigerante por inundación activado) — requerido antes de operaciones de corte en acero y la mayoría de metales; M09 (refrigerante apagado) — requerido después de completar el corte; M30 (fin de programa y reinicio) — termina y reinicia cada programa; M00 (parada incondicional) — para inspección durante el proceso; M04 (husillo encendido, en sentido antihorario) — para herramientas de corte a la izquierda. Estos ocho códigos cubren la gran mayoría de los requisitos prácticos de mecanizado CNC.
¿Puede un código M incorrecto estrellar una máquina CNC?
Sí. El escenario de choque por código M más común es emitir M06 (cambio de herramienta) sin emitir primero M05 (parada del husillo). El brazo cambiador de herramientas intenta acoplarse al husillo giratorio, creando una colisión mecánica que puede dañar el cono del husillo, el brazo cambiador, el botón de retención y la herramienta de corte simultáneamente — los costos de reparación varían de miles a decenas de miles de dólares. Otros errores peligrosos de código M incluyen: dirección incorrecta del husillo (M04 cuando se pretendía M03) que causa fallo inmediato del filo de la herramienta; códigos M específicos de la máquina que activan movimientos inesperados al ejecutarse en un controlador diferente; y falta de retracción en Z antes de M06 que causa que la herramienta saliente contacte la pieza de trabajo o el dispositivo de sujeción durante la aproximación del cambio de herramienta.
¿Todas las máquinas CNC usan los mismos códigos M?
Los códigos M principales estándar (M03, M04, M05, M06, M07, M08, M09, M30) son consistentes en esencialmente todas las máquinas de producción CNC que funcionan con controladores Fanuc, Haas, Siemens, Mitsubishi y Okuma. Los códigos M específicos de la máquina para funciones auxiliares divergen significativamente: refrigerante a través del husillo, soplado de aire, control del transportador de viruta, cambiadores de pallets, operaciones de puerta e integración robótica usan códigos M asignados por el fabricante de la máquina que varían entre máquinas. Un programa transferido de un centro de mecanizado Haas a una máquina controlada por Fanuc tendrá sus códigos M principales funcionando correctamente, pero cualquier código M específico de Haas fallará o se comportará de manera diferente. Todos los códigos M específicos de la máquina deben verificarse contra el manual de la máquina de destino antes de ejecutar un programa transferido.
Escrito por el equipo de ingeniería de CMS con más de 15 años de experiencia en mecanizado de precisión CNC, programando y operando centros de fresado y torneado bajo sistemas de control Fanuc, Haas y Siemens para aplicaciones de fabricación en automoción, aeroespacial, médica, electrónica e industrial OEM. Referencias técnicas: ISO 6983-1 (Control Numérico de Máquinas — Formato y Definiciones de Programa), EIA RS-274-D (Formato de Datos de Bloques Variables Intercambiables), Manual de Programación de la Serie Fanuc 0i, Libro de Trabajo de Programación CNC de Haas.
¿Buscando Componentes Mecanizados de Precisión CNC con Programación Optimizada?
En CMS, producimos componentes fresados y torneados de precisión en aluminio, acero, acero inoxidable y plásticos de ingeniería con programas CNC completamente documentados. Cada programa incluye secuencias de código M verificadas — secuenciación correcta de husillo, refrigerante y cambio de herramienta — e inspección de la primera pieza antes de la liberación de producción.
[Solicite una cotización de mecanizado CNC y revisión de programación →]




