Skip to main content
CNC.wikiCNC.wiki

M00, M01, M02, M30 Paradas y Fin de Programa: Guía de Programación CNC

Aprenda a programar los códigos de parada y fin de ciclo M00, M01, M02 y M30 en controles Fanuc, Siemens y Mitsubishi. Evite colisiones y optimice sus tiempos.

Hakan Gündoğdu
Hakan Gündoğdu

Cofundador de CNC CARE

Introducción

Una colisión catastrófica contra una mordaza de tornillo (vise jaw) o una brida de sujeción (clamp) es el resultado inmediato cuando un operador omite activar el interruptor de parada opcional (Optional Stop) en la interfaz HMI. Al ignorar este interruptor, el control de la máquina ignora la parada condicional M01 y avanza directamente en rápido hacia la siguiente operation, lo que provoca que la herramienta se estrelle contra una pieza de trabajo mal asentada. Este impacto no solo genera una pieza rechazada (scrap part) inservible, sino que también provoca una desalineación grave en la torreta (turret) o daños en el husillo (spindle), resultando en un prolongado tiempo de inactividad de la máquina y costosas paradas no planificadas. Gestionar de manera segura el ritmo y la finalización de los ciclos de mecanizado utilizando los comandos M00 (parada del programa), M01 (parada opcional), M02 (fin del programa) y M30 (fin del programa con rebobinado) es una disciplina crítica que gobierna el intercambio de señales físicas (handshake) entre el intérprete CNC y el controlador lógico programable (PLC). Validar estos códigos elimina la causa más frecuente de parada no planificada en este comando y asegura la estabilidad dimensional de la producción. Para entender cómo interactúan estos modos de control de ciclo con los sistemas de movimiento y posicionamiento de coordenadas, consulte la guía de G94 y G95: Modos de Avance.

Resumen Técnico

Especificación TécnicaDetalles
Códigos de ComandoM00, M01, M02, M30
Grupo ModalNon-modal (activo solo en el bloque donde se programa)
Marcas SoportadasFanuc, Siemens, Mitsubishi
Parámetros CríticosFanuc Parameter 3404 (comportamiento de rewind), Siemens MD 22254 / MD 22256 (códigos M de parada personalizados), Mitsubishi Parameter #12005 (máximo de códigos M por bloque)
Restricción PrincipalLas paradas periféricas (spindle, coolant) están gobernadas por la lógica ladder de PLC específica de cada Machine Tool Builder en lugar de las especificaciones CNC base; no deben programarse dentro de las áreas de retraso de parada de Siemens (Alarm 16954).

Lectura Rápida

  • Verifique el Estado del Panel HMI: Compruebe siempre que el interruptor "Optional Stop" esté activo en la HMI del operador antes de ejecutar programas que dependan de M01 para realizar mediciones de piezas.
  • Aísle los Comandos de Fin: Escriba M02 y M30 en sus propios bloques dedicados para evitar fallas en el handshake de hardware del PLC con funciones auxiliares como cargadores de barras o lógicas de contadores de piezas de trabajo.
  • Evite Áreas de Retraso de Parada: Nunca programe M00 o M01 durante ciclos activos de roscado rígido o roscado con macho para prevenir la pérdida de sincronización y la alarma 16954 de Siemens.
  • Verifique el Parameter 3404: Configure el Fanuc Parameter 3404 (bit 4 para M30, bit 5 para M02) para controlar si la ejecución realiza un rewind automático al inicio del programa o si se detiene esperando una señal externa.
  • Haga Coincidir las Señales de Handshake: Asegúrese de que el ladder de PLC de Mitsubishi esté configurado para devolver una señal Reset & Rewind (RRW) para M02 y M30, en lugar de una señal estándar FIN1/FIN2, que provocaría la alarma P36.
  • Vigile los Bloques de Look-Ahead: Tenga en cuenta que M00, M01, M02 y M30 inhiben activamente el búfer de prelectura de look-ahead en Fanuc, Siemens y Mitsubishi para evitar la ejecución prematura del código posterior.

Conceptos Básicos

Los comandos de parada y fin de programa son las principales interfaces lógicas que dividen, marcan el ritmo y terminan de manera segura las operaciones automáticas de CNC. A diferencia de los comandos de movimiento que controlan directamente los motores de avance o las trayectorias de interpolation, M00, M01, M02 y M30 se comunican directamente con el controlador lógico programable (PLC) de la máquina mediante relés de handshake de hardware. Estos comandos imponen un límite operativo rígido, asegurando que las coordenadas subsiguientes o las instrucciones de herramientas no puedan ejecutarse hasta que se completen con éxito acciones del operador específicas o secuencias de recarga automatizadas.

Los comandos de parada, M00 y M01, funcionan como pausas a mitad de cycle. M00 representa una parada incondicional que detiene inmediatamente el intérprete de CNC, congela el movimiento de los ejes y suspende la ejecución del programa. Esta pausa está diseñada para intervenciones manuales del operador, como verificar una tolerancia crítica con micrómetros, limpiar virutas de metal acumuladas en una ranura profunda o voltear manualmente una pieza de trabajo. Por el contrario, M01 actúa como una parada condicional, pausando el cycle solo si el operador de la máquina ha activado el interruptor "Optional Stop" en la consola física del controlador. Si el interruptor de Optional Stop está inactivo, el controlador trata M01 como un comentario y ejecuta el siguiente bloque sin dudarlo.

Los comandos de fin de programa, M02 y M30, representan la terminación física del programa de pieza. Ambos códigos señalan al control CNC y al PLC subyacente que todas las operaciones de mecanizado para la pieza de trabajo actual han terminado. Esto activa el sistema para detener el spindle, apagar las bombas de refrigerante de alta presión y restablecer los registros internos. M30 indica específicamente al control que realice un rewind del programa de pieza de vuelta al primer bloque, preparando al CNC para ejecutar el cycle de inmediato en la siguiente pieza cuando se presione el botón de cycle start. Para una comprensión completa de los niveles de retorno de ciclo, consulte la guía de G98 y G99: Niveles de Retorno de Ciclo.

Estructura de Comandos (Estructura del comando)

La programación de las funciones auxiliares de parada y fin es simple, pero requiere un aislamiento sintáctico absoluto para garantizar la correcta ejecución de las secuencias de hardware. Debido a que las paradas y terminaciones de programa desencadenan cambios críticos en el hardware —como los relés del spindle, los enclavamientos de seguridad de las puertas y los handshakes de los cargadores de barras— el control debe evaluarlos bajo restricciones específicas de look-ahead. Escribir estos comandos incorrectamente o combinarlos con trayectorias de movimiento en conflicto es la fuente principal de errores de análisis en el controlador.

Para una máxima confiabilidad, M00, M01, M02 y M30 deben programarse en su propio bloque NC dedicado, separados de las coordenadas de movimiento. Aunque la mayoría de los sistemas permiten agregarlos a una línea de movimiento, hacerlo obliga al control a resolver el movimiento y la parada auxiliar simultáneamente, lo que puede causar un comportamiento de sincronización errático según la forma en que el fabricante del equipo haya escrito la lógica del ladder de PLC. Además, estos códigos están clasificados como de no almacenamiento en búfer (non-buffering), lo que significa que el interpolador tiene prohibido leer o preparar cualquier bloque subsiguiente hasta que la ejecución del código M haya finalizado.

Sintaxis de Programación:

M00 ; Parada Incondicional del Programa (Unconditional Program Stop)
M01 ; Parada Opcional del Programa (Optional Program Stop)
M02 ; Fin del Programa (Program End)
M30 ; Fin del Programa con Rebobinado al Inicio (Program End con Rewind)

Parámetros y Configuraciones del Sistema:

MarcaIdentificador del SistemaConfiguración Funcional
FanucParameter 3404 Bit 4 (M30)0: Rebobinado automático al inicio (rewind); 1: Esperar una señal externa de Reset & Rewind.
FanucParameter 3404 Bit 5 (M02)0: Rebobinado automático al inicio (rewind); 1: Esperar una señal externa de Reset & Rewind.
FanucParameter 3201 Bit 6 (NPE)0: Detener el registro de datos inmediatamente al leer M02, M30 o M99; 1: Ignorar códigos de fin.
FanucParameter 3204 Bit 6 (MKP)0: Borrar la secuencia MDI activa al ejecutar M02/M30; 1: Retener el programa MDI.
SiemensMD22254 $MC_AUXFU_ASSOC_M0_VALUEDefine una función M personalizada adicional para una parada incondicional del programa.
SiemensMD22256 $MC_AUXFU_ASSOC_M1_VALUEDefine una función M personalizada adicional para una parada condicional del programa.
SiemensMD10714 $MN_M_NO_FCT_EOPDefine una función M personalizada para mantener el spindle activo y funcionando tras un reset o fin de programa.
Siemens$AC_ACTUAL_PARTSVariable de sistema de contador de piezas activa, incrementada automáticamente en 1 al ejecutar M02/M30.
Mitsubishi#12005 MfigDetermina el número máximo de códigos M permitidos en un solo bloque (rango de 1 a 4).
Mitsubishi#1278 ext14/bit10: Método normal de espera de señal de término del PLC; 1: Método de alta velocidad para acortar tiempos.
Mitsubishi#1405 M_mode(SMLK)Habilita o deshabilita la salida física de la señal del código M durante una comprobación simple del programa a alta velocidad.

Aplicaciones de Marca (Aplicaciones por marca)

Fanuc

Los sistemas Fanuc CNC dependen de parámetros dedicados a nivel de hardware para determinar cómo interactúan las paradas y los finales de programa con el registro activo de la memoria y la transferencia externa de datos. El Parameter 3404 determina el comportamiento del rebobinado para estos códigos auxiliares en la memoria del control. Ajustar estos bits define si el interpolador reposiciona automáticamente el puntero al inicio del archivo o si se detiene esperando que un relé físico externo envíe una señal de restauración manual.

En los controles Fanuc, M00, M01, M02 y M30 se programan de manera estándar, aislados dentro de su propio bloque para garantizar la inhibición del look-ahead. En sistemas de torno, los desarrolladores deben monitorear el parámetro NPE para evitar la corrupción de datos durante las transferencias en serie.

Categoría del SistemaConfiguración / Código de AlarmaDescripción y Comportamiento de Hardware
System ParametersParameter 3404 bit 4 (M30)Controla el comportamiento de rewind automático cuando se ejecuta M30 en memoria. Un valor de 0 hace auto-rewind al inicio; un valor de 1 espera una señal externa de reset y rewind.
System ParametersParameter 3404 bit 5 (M02)Controla el comportamiento de rewind automático cuando se ejecuta M02. Un valor de 0 hace auto-rewind; un valor de 1 espera una señal externa de reset y rewind.
System ParametersParameter 3201 bit 6 (NPE)0: Detiene el registro del programa de pieza y cierra los puertos de comunicación al leer M02, M30 o M99; 1: Continúa recibiendo sin detenerse.
System ParametersParameter 3204 bit 6 (MKP)0: Borra automáticamente la secuencia de pantalla de MDI activa al ejecutar M02, M30 o %; 1: Evita el borrado y retiene el código MDI.
Alarms / ErrorsPS5010 (END OF RECORD)Se activa si se lee la marca de fin de registro (%) durante la ejecución del programa sin un comando de fin de programa M02 o M30 previo cuando el Parameter 3404 bit 6 es 0.
Alarms / ErrorsPS0008 (ILLEGAL USE)Se activa específicamente en controles de la serie M si se intenta ejecutar la marca EOR (%) debido a que faltaba un M02, M30 o M99.
Alarms / ErrorsPS5016 (ILLEGAL COMBINATION)Se activa si se especifican múltiples códigos M del mismo grupo en un solo bloque o si se combina un comando de fin con otros códigos M.
Version DifferencesLegacy Systems (0-Series)Los controladores Fanuc heredados utilizan el parámetro 0019 bit 5 (M02NR) para controlar el comportamiento del rebobinado de M02, el cual fue migrado al parámetro 3404 bit 5 en controles modernos.

Advertencia: Omitir un M02 o M30 al final de un programa de pieza de Fanuc hará que el lector alcance la marca de fin de registro (%), lo que atrapa instantáneamente la ejecución y lanza una alarma PS5010 o PS0008 para evitar desbordamientos de memoria impredecibles.

Siemens

Los controladores Siemens SINUMERIK ofrecen una estructura sintáctica flexible que integra los comandos de parada directamente con el seguimiento de piezas y la seguridad en los ciclos de medición. El control actualiza de manera nativa variables de sistema como $AC_ACTUAL_PARTS al procesar M02 o M30, evitando el uso de contadores macro personalizados. Además, Siemens emplea datos de máquina configurables para permitir que los fabricantes definan códigos M de parada adaptados.

La sintaxis de Siemens admite los formatos de bloque M0/M1 y M00/M01. Estos códigos pueden escribirse junto con los comandos de movimiento, aunque se aplican restricciones estrictas de formato para los bloques de fin de programa.

Categoría del SistemaConfiguración / Código de AlarmaDescripción y Comportamiento de Hardware
System ParametersMD22254 $MC_AUXFU_ASSOC_M0_VALUEDatos de máquina utilizados para definir una función M auxiliar personalizada adicional para una parada incondicional de programa.
System ParametersMD22256 $MC_AUXFU_ASSOC_M1_VALUEDatos de máquina utilizados para definir una función M auxiliar personalizada adicional para una parada condicional de programa.
System ParametersMD10714 $MN_M_NO_FCT_EOPDefine una función M personalizada (como el valor 32) para mantener el spindle activo y funcionando tras un reset o fin de programa.
System Parameters$AC_ACTUAL_PARTSVariable de sistema de contador de piezas de trabajo activa, incrementada automáticamente en 1 al ejecutar M02 o M30. Rango: 0 a 999,999,999.
Alarms / ErrorsAlarm 16954Parada programada (M0/M1) prohibida en el área de retraso de parada. Se activa si se encuentra un comando de parada dentro de un ciclo de roscado sincronizado o roscado rígido.
Alarms / ErrorsAlarms 62304 / 62305 / 62306Exceso de dimensión, falta de dimensión o diferencia dimensional admisible superada. Durante los ciclos de medición, si se viola una tolerancia, el control inyecta automáticamente una pausa modal M00 implícita.
Version DifferencesSubprogram NestingSiemens trata M02 y M30 en programas principales llamados de forma idéntica a los retornos de subprograma M17, devolviendo sin problemas la ejecución al bloque del programa llamador primario.

Advertencia: Colocar M00 o M01 dentro de zonas de retraso de parada, como durante el roscado rígido o el tallado de roscas, rompe la sincronización entre el interpolador y el spindle, activando la Alarm 16954 y dejando un macho de roscar roto incrustado de forma permanente en una pieza de trabajo de alto valor.

Mitsubishi

Los sistemas Mitsubishi CNC gestionan los comandos de parada y fin mediante una interfaz de señal de handshake dedicada y estructurada que se comunica de forma directa con el PLC. A diferencia de otras marcas que comparten señales de control genéricas para funciones auxiliares, Mitsubishi emite señales independientes y dedicadas al PLC cuando se leen M00, M01, M02 o M30. Esto permite lógicas especializadas en el lado de la máquina, como abrir las puertas de seguridad durante las pausas.

Los programas de G-code en Mitsubishi utilizan estructuras estándar de sintaxis de códigos M de 8 dígitos. Los movimientos de los ejes y los comandos de parada pueden ejecutarse en el mismo bloque, y el orden de ejecución dependerá enteramente de las especificaciones del ladder de PLC del fabricante de la máquina.

Categoría del SistemaConfiguración / Código de AlarmaDescripción y Comportamiento de Hardware
System ParametersParameter #12005 MfigDetermina el número máximo de códigos M que se pueden emitir en un solo bloque. Admite hasta 4 códigos; los códigos M posteriores sobrescriben a los anteriores si se supera el límite.
System ParametersParameter #1278 ext14/bit10: Método de finalización normal (espera la señal de fin del PLC); 1: Método de finalización de alta velocidad para reducir los tiempos de ciclo.
System ParametersParameter #1405 M_mode(SMLK)Habilita o deshabilita la salida física de la señal del código M durante una comprobación simple del programa a alta velocidad.
Alarms / ErrorsAlarm P36 (Program Error)Se activa al final del programa si el PLC devuelve incorrectamente una señal de strobe estándar FIN1/FIN2 después de M02/M30 en lugar de la señal obligatoria Reset & Rewind (RRW).
Alarms / ErrorsAlarm M01 (Operation Alarm)Se activa si el operador presiona físicamente el botón de cycle start mientras el CNC está ejecutando activamente una comprobación de programa en modo program check.
Version DifferencesHardware VariationsLas unidades de visualización heredadas más pequeñas no pueden mostrar los ocho dígitos del código M programado. La restauración del sistema mediante M00 y el rebobinado mediante M02/M30 dependen estrictamente de las especificaciones del Machine Tool Builder (MTB).

Advertencia: Programar el ladder de PLC para que devuelva una señal estándar de finalización FIN1 o FIN2 para M02 o M30 en lugar del handshake obligatorio de Reset & Rewind (RRW) viola la secuencia de terminación y genera un error de programa P36.

Comparación de Marcas

Tema / CaracterísticaFanucSiemensMitsubishi
Look-Ahead / Búfer de PrelecturaFísicamente impedido de leer más allá de M00/M01/M02/M30, completamente independiente de los parámetros de almacenamiento en búfer activos.Pausa el interpolador y el movimiento de los ejes de inmediato cuando se procesa M00 o M01 en el bloque de ejecución.Detiene intencionadamente el búfer de prelectura de inmediato para evitar que las coordenadas posteriores se activen de forma prematura.
PLC Handshaking / FeedbackGestionado a través de los bits del parameter 3404 para alternar entre el rewind automático y la espera de señales físicas de hardware Reset & Rewind externas.Intrincadamente ligado al estado VDI del panel HMI de parada opcional (optional stop); la configuración lógica del PLC controla el comportamiento de la pausa activa del spindle y del coolant.M00 y M01 requieren señales de control FIN1/FIN2 para continuar; M02 y M30 exigen una señal obligatoria Reset & Rewind (RRW).
Nidificación y Retorno de Fin de ProgramaM02 y M30 siempre terminan la ejecución en la memoria del nivel de archivo activo.El programa principal anidado (llamado como subprograma) convierte automáticamente M02/M30 en un bloque de retorno de subprograma M17.Los subprogramas M98/M99 se gestionan internamente; M02 y M30 siempre posicionan la memoria al inicio del archivo según las especificaciones del MTB.
Seguimiento de Producción IntegradoRequiere contadores de programa manuales o programación lógica externa personalizada del PLC.Incrementa de forma nativa en 1 las variables del sistema $AC_ACTUAL_PARTS y $AC_SPECIAL_PARTS al ejecutar M02 o M30.El seguimiento del contador no es nativo; requiere la configuración del ladder de PLC del fabricante o la intervención de una macro personalizada.

Análisis Técnico

Un análisis comparativo de cómo Fanuc, Siemens y Mitsubishi gestionan los comandos de parada y fin revela filosofías de control fundamentalmente diferentes en cuanto a look-ahead buffering, PLC handshaking y comportamiento de anidamiento. Aunque las tres marcas detienen el movimiento y posicionan la memoria al inicio del programa, los procesos computacionales subyacentes están diseñados a la medida de sus respectivas arquitecturas.

La gestión del búfer de prelectura de look-ahead representa uno de los principales puntos de divergencia. Fanuc trata a M00, M01, M02 y M30 como barreras estrictas. El cálculo de look-ahead del control está físicamente impedido de leer más allá de estos comandos, independientemente de los parámetros de almacenamiento en búfer. Esto garantiza que las operaciones matemáticas de coordenadas queden completamente congeladas. El enfoque de Siemens es similarmente inmediato, pausando el interpolador y los ejes cuando M00 o M01 se procesa en el bloque de ejecución activo. Mitsubishi, por otro lado, impone una inhibición agresiva del búfer de prelectura, deteniendo el búfer de forma inmediata al encontrar estos códigos M específicos para asegurar que los movimientos geométricos posteriores no puedan ser precargados y activar reacciones prematuras en la máquina.

El lazo de retroalimentación entre el procesador CNC y el gabinete del PLC también varía. Fanuc delega el control de rewind al Parameter 3404, permitiendo que el fabricante decida si el CNC realiza un rebobinado automático o espera un relé de hardware Reset & Rewind externo. Siemens se apoya en los estados del panel HMI de parada opcional (optional stop), dejando las reacciones físicas del spindle y del coolant enteramente a la lógica del PLC. Mitsubishi utiliza una estructura única de "salida independiente de código M", enviando señales dedicadas directamente al PLC. Además, Mitsubishi altera la retroalimentación requerida, exigiendo una señal estándar de finalización (FIN1/FIN2) para las paradas, pero demandando un handshake obligatorio de Reset & Rewind (RRW) para terminar los ciclos. No hacer coincidir estos handshakes del PLC da como resultado un error de programa P36.

Finalmente, el anidamiento de programas destaca la flexibilidad del intérprete de Siemens. En los controles Siemens, si un programa principal que contiene M02 o M30 es llamado como subprograma por otro archivo, el intérprete trata automáticamente estos comandos de fin como retornos de subprograma M17. Esto permite a los desarrolladores anidar archivos principales heredados sin modificar su código. Fanuc y Mitsubishi carecen de esta traducción de anidamiento tan fluida; un M02 o M30 terminará la ejecución en la memoria en el nivel actual, requiriendo que los programadores utilicen estructuras dedicadas de llamada y retorno de subprogramas como M98 y M99. Para comprender cómo interactúan las velocidades de avance con estos modos, consulte la guía de G96 y G97: Velocidad de Corte Constante y RPM Constantes.

Ejemplos de Programas

Ejemplo de Programa Fanuc

O1001 (FANUC STOP & END EXAMPLE) ;
N10 G90 G21 G17 ;
N20 T0101 M06 (Select Tool 1, load tool) ;
N30 G54 G00 X0 Y0 S1200 M03 ;
N40 G43 H01 Z25.0 M08 (Enable tool length comp, coolant ON) ;
N50 G01 Z-5.0 F150. ;
N60 X50.0 ;
N70 G00 Z25.0 M09 (Retract tool, coolant OFF) ;
N80 M00 (Unconditional Stop - Operator clears chips and checks part seating) ;
N90 G00 X100.0 Y100.0 ;
N100 T0202 M06 ;
N110 S1500 M03 M08 ;
N120 G00 Z5.0 ;
N130 G01 Z-2.0 F200. ;
N140 X150.0 ;
N150 G00 Z50.0 M05 M09 ;
N160 M30 (Program end and auto-rewind to block O1001) ;
%

Análisis de ejecución en seco (dry run)

  • Tool States (Estados de la herramienta): El spindle gira a 1200 RPM bajo M03, el coolant se activa bajo M08. El spindle se detiene en el bloque N150 bajo M05, el coolant se apaga bajo M09.
  • Operator Actions (Acciones del operador): Durante el bloque N80 (M00), el operador abre la puerta, limpia las virutas, mide la cavidad y verifica el asentamiento de la pieza antes de cerrar la puerta y presionar CYCLE START.
  • PLC Responses (Respuestas del PLC): Al leer M00 en N80, el PLC desactiva los relés del spindle y del coolant y detiene el avance de los ejes. Al leer M30 en N160, el PLC completa el ciclo final y, tal como lo gobierna el Parameter 3404 bit 4 configurado en 0, realiza un rebobinado automático del puntero del programa de regreso al inicio en O1001.

Ejemplo de Programa Siemens

; SIEMENS M00/M30 PROGRAM STOP & END WORKPIECE
N10 G90 G71 G17
N20 T="END_MILL_10" D1 M6
N30 G54 S1800 M3
N40 G0 X0 Y0 Z30.0 M8
N50 G1 Z-8.0 F250.
N60 Y80.0
N70 G0 Z30.0 M9
N80 M01 ; Conditional stop - Operators toggle HMI to inspect part dimensions
N90 G0 X120.0 Y50.0
N100 G1 Z-4.0 F300.
N110 X200.0
N120 G0 Z100.0 M5 M9
N130 G53 X0 Y0 D0 ; Return to machine zero
N140 M30 ; Program end, resets control, increments $AC_ACTUAL_PARTS counter

Análisis de ejecución en seco

  • Tool States (Estados de la herramienta): El spindle funciona a 1800 RPM en el bloque N30, el coolant está activo en N40. Ambos se desactivan en el bloque N120 antes del retorno al cero de la máquina.
  • Operator Actions (Acciones del operador): Si el interruptor "Optional Stop" en la HMI de Siemens está activo, la máquina se detiene en el bloque N80. El operador comprueba el desgaste de la herramienta y la profundidad de la cavidad, y luego presiona NC START. Si el interruptor está inactivo, el bloque N80 se ignora por completo.
  • PLC Responses (Respuestas del PLC): El control procesa M01 en N80. Si la parada opcional está activa, el PLC suspende los pulsos del interpolador. En el bloque N140, el PLC ejecuta la secuencia de fin de programa, restablece los registros modales e incrementa automáticamente en 1 el contador de piezas de trabajo $AC_ACTUAL_PARTS.

Ejemplo de Programa Mitsubishi

; MITSUBISHI M00/M30 DEDICATED PLC HANDSHAKE
N10 G90 G21
N20 M06 T1
N30 G54 G00 X0 Y0 S1000 M03
N40 G43 H1 Z20. M08
N50 G01 Z-10. F180.
N60 X100.
N70 G00 Z20. M09
N80 M00 ; Dedicated PLC pause - door safety unlock trigger
N90 G00 X0 Y0
N100 M30 ; Cycle end demanding RRW handshake

Análisis de ejecución en seco

  • Tool States (Estados de la herramienta): Herramienta T1 activa. El spindle gira a 1000 RPM, coolant encendido. El spindle y el coolant se desactivan en el bloque de terminación del programa N100.
  • Operator Actions (Acciones del operador): Durante la pausa de M00 en el bloque N80, el CNC se detiene. El enclavamiento de seguridad se desbloquea, lo que permite al operador inspeccionar la pieza, cerrar la puerta y presionar CYCLE START.
  • PLC Responses (Respuestas del PLC): El comando M00 emite una señal dedicada e independiente al PLC. El PLC activa el relé de desbloqueo de la puerta de seguridad. En el bloque N100, el PLC inicia un handshake Reset & Rewind (RRW) hacia el controlador, restableciendo el sistema al bloque N1.

Análisis de Errores

MarcaCódigo de AlarmaCondición de ActivaciónSíntoma del OperadorCausa Raíz / Solución
FanucPS5010 (END OF RECORD)Ejecución de la marca EOR (%) durante la ejecución del programa sin un comando M02 o M30 de fin previo cuando el Parameter 3404 bit 6 es 0.La pantalla del CNC muestra PS5010 END OF RECORD y la operación automática se detiene al instante.Asegúrese de escribir un comando M02 o M30 correcto justo antes del carácter % de cierre del archivo.
FanucPS0008 (ILLEGAL USE)Ejecución de la marca EOR (%) en controles de la serie M sin un comando de fin M02, M30 o M99 previo.La luz roja de alarma se enciende y la ejecución del programa se detiene de forma abrupta.Edite el programa para insertar un M30 o M02 en su propio bloque antes del símbolo % de cierre.
FanucPS5016 (ILLEGAL COMBINATION)Varios códigos M del mismo grupo programados en un solo bloque, o combinación de códigos de fin con otros códigos M.El controlador genera la alarma PS5016 y se rehúsa a analizar el bloque de instrucciones.Mueva el comando de fin de programa (M02/M30) a su propio bloque aislado sin ningún otro código M.
SiemensAlarm 16954Se encuentra una parada programada (M0/M1) dentro de un área de retraso de parada protegida (por ejemplo, roscado).El sistema lanza la Alarm 16954: Programmed stop prohibited, y el movimiento se detiene a mitad de camino.Mueva M0/M1 fuera de los ciclos sincronizados de roscado con macho, tallado de roscas o contorneado.
SiemensAlarm 62304 / 62305El ciclo de medición de dimensiones de la pieza detecta una violación de tolerancia (exceso/falta de dimensión).La ejecución del programa se suspende con una parada incondicional M00 implícita, y la HMI muestra la advertencia.Ajuste los correctores de desgaste de herramienta (tool wear offsets) en el panel de control y presione NC START para reanudar de forma segura.
MitsubishiAlarm P36 (Program Error)Lógica de PLC incorrecta; devuelve una señal estándar de finalización FIN1/FIN2 para M02/M30 en lugar del handshake Reset & Rewind (RRW).El programa de pieza termina, pero la máquina se detiene en un estado de falla con el código de error P36 activo.Modifique el programa del ladder de PLC para que M02 y M30 activen un handshake de Reset & Rewind (RRW) hacia el CNC.
MitsubishiAlarm M01 (Operation Alarm)El operador presiona físicamente el botón de cycle start mientras el CNC está en el modo de comprobación program check.El controlador genera una alarma M01 parpadeante en la pantalla y se ignora la solicitud de inicio.Espere a que la rutina de comprobación program check alcance M02 o M30 antes de intentar ejecutar la máquina.

Nota de Aplicación

Una parada no planificada y la consiguiente parálisis de la línea de producción ocurren de inmediato cuando un programador no coordina las señales eléctricas de hardware con los códigos de terminación del programa. En controles Mitsubishi, la aparición de la alarma P36 (Program Error) al ejecutar M02 o M30 interrumpe el ciclo de trabajo de forma abrupta si el ladder de PLC está erróneamente configurado para devolver una señal estándar de finalización FIN1 o FIN2. Para resolver este problema y asegurar la continuidad en la planta, es obligatorio modificar el programa de la máquina para que las señales de fin M02/M30 activen el registro de Reset & Rewind (RRW), eliminando así la causa más frecuente de falla en este comando. Asimismo, en controles Fanuc, si no se verifica el Parameter 3404 antes de producción, la conmutación incorrecta de sus bits provocará que la máquina ignore el rebobinado al inicio, deteniendo la operación y bloqueando el cargador de barras automático. En sistemas Siemens, la colocación de un comando M00 o M01 en un área protegida de retraso de parada, como durante un roscado rígido, interrumpe la sincronización entre el spindle y los ejes geométricos, activando la Alarm 16954 y provocando la rotura del macho dentro de la cavidad. Si no se verifica este parámetro y la sintaxis antes de producción, la desviación dimensional se acumula ciclo a ciclo y solo se detecta en la inspección final como pieza rechazada, arruinando costosos materiales y acumulando valiosas horas de tiempo de inactividad de la máquina.

Red de Comandos Relacionados

  • M98 / M99 (Llamada y Retorno de Subprograma): M98 realiza la llamada a un bloque de subprograma externo, mientras que M99 termina dicho subprograma y devuelve el control de la ejecución al programa principal llamador primario.
  • M17 (Retorno de Subprograma en Siemens): Funciona como el comando nativo de fin y retorno de subprograma en controladores Siemens, devolviendo el flujo de procesamiento al bloque del programa llamador de nivel superior.
  • M03 / M04 / M05 (Controles de Spindle): Controlan el giro del spindle en sentido horario, antihorario y parada, respectivamente; se programan típicamente para desactivarse junto con o inmediatamente antes de las paradas del programa.
  • EOR / % (Fin de Registro): Funciona como la marca física de límite de archivo para la transferencia de datos del programa de pieza, indicando al lector de memoria que cese el escaneo y evitando errores de desbordamiento de archivo.

Conclusión

La recomendación de producción más eficaz en el taller de mecanizado es implementar un protocolo de aislamiento de bloques sintácticos para todas las funciones auxiliares de parada y fin de programa. Programar M00, M01, M02 y M30 estrictamente en bloques de control independientes, separados de cualquier coordenada de movimiento geométrico, garantiza un tiempo de escaneo del PLC óptimo y previene colisiones mecánicas severas por desincronización de señales. Auditar la configuración de parámetros como el Parameter 3404 en Fanuc, los datos de máquina MD22254 en Siemens y el bit ext14/bit1 en Mitsubishi debe ser una práctica mandatoria antes de lanzar la producción en serie. Este enfoque no solo minimiza el tiempo de ciclo al acortar los handshakes físicos de hardware, sino que también elimina los riesgos de paradas de máquina imprevistas y resguarda la integridad de las mordazas (vise jaws), las torretas (turrets) y los husillos (spindles) de alta velocidad.

Preguntas Frecuentes (FAQ)

¿Por qué se ignora el comando M01 y cómo afecta al tiempo de ciclo en producción en serie?

El comando M01 funciona como una parada condicional que es completamente ignorada por el intérprete CNC si el interruptor Optional Stop en el panel HMI está apagado, lo que permite omitir inspecciones manuales y reducir el tiempo de ciclo en piezas coplanares. Sin embargo, si se requiere una inspección de control de calidad y este interruptor está desactivado por error, la herramienta no se detendrá y continuará hacia la siguiente operación, golpeando bridas o mordazas mal posicionadas y generando una pieza rechazada. Acción práctica: Implemente una comprobación visual obligatoria en la HMI antes de pulsar ciclo start y verifique que el indicador luminoso del Optional Stop coincida con los requisitos del lote de producción.

¿Cómo solucionar el código de alarma P36 (Program Error) en controles Mitsubishi al ejecutar M30?

La alarma P36 ocurre en sistemas Mitsubishi cuando el controlador lógico programable (PLC) envía una señal estándar de finalización auxiliar como FIN1 o FIN2 al procesar un código de terminación M02 o M30, en lugar de emitir el handshake mandatorio de Reset & Rewind (RRW). El intérprete CNC considera esta respuesta como una violación de secuencia y bloquea el sistema en un estado de falla permanente para evitar rebobinados fuera de control. Acción práctica: Modifique la lógica del ladder del PLC en el editor de la máquina para direccionar las salidas físicas de M02 y M30 hacia la línea del registro RRW del CNC, asegurando un restablecimiento limpio.

¿Por qué es obligatorio programar M02 y M30 en un bloque aislado de coordenadas de movimiento?

Escribir comandos de fin de programa en el mismo bloque que contiene movimientos de ejes o cambios de husillo provoca que el PLC intente procesar la señal de parada al mismo tiempo que el interpolador calcula la desaceleración del movimiento, generando un conflicto de sincronización y paradas no planificadas de hardware. Al aislar M02 o M30 en su propio bloque, el control detiene los movimientos primero, finaliza el look-ahead de manera segura e inicia el handshake de terminación sin sobrecargar las lógicas del contador de piezas o de los alimentadores automáticos de barras. Acción práctica: Revise el postprocesador de su software CAM para asegurarse de que inserte siempre los códigos de fin de programa en una línea de código exclusiva antes de la marca EOR (%).

¿Aún no se ha resuelto?

Pregunta a nuestro asistente de IA sobre este tema en lenguaje natural. Basado en fuentes verificadas, sin alucinaciones.

Preguntar al asistente de IA
Hakan Gündoğdu
Hakan Gündoğdu
  • CNC CARE Co-Founder (May 2025 - Present)
  • Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
  • Reis CNC Service Engineer (2003 - 2005)
  • Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)

Con más de 25 años de experiencia trabajando en todas las áreas de la industria de máquinas CNC, continúo mis actividades como cofundador de CNC CARE, donde ofrecemos servicios de consultoría, ingeniería y repuestos originales independientes de la marca.

Artículos relacionados

Otros artículos sobre este tema