Cancelación de Llamada Modal de Macro Personalizada G67 en CNC
Aprenda a programar la cancelación de llamada modal de macro G67. Compare parámetros en Fanuc, Siemens y Mitsubishi para evitar colisiones catastróficas.
Introducción
Una torreta de herramientas colisionando a alta velocidad contra la mordaza de una mordaza de sujeción (vise jaw) o el plato del husillo (spindle chuck) es la consecuencia directa de omitir el comando G67 tras un ciclo modal. Al olvidar desactivar el estado modal de la llamada de macro (G66 o G66.1), cualquier movimiento posterior de reposicionamiento hacia el origen o cambio de herramienta ejecutará de nuevo el subprograma. Esta trayectoria errónea destruye la herramienta de corte, daña gravemente los husillos de bolas del CNC y genera piezas rechazadas (scrap parts) junto con costosos tiempos de inactividad. Para los programadores habituados a llamadas simples no modales como G65, la desactivación de macros modales mediante G67 es un protocolo de seguridad obligatorio para evitar fallos de preprocesador en trayectorias continuas como las del modo G64.
Resumen Técnico
| Atributo Técnico | Detalles de Especificación |
|---|---|
| Código de Comando | G67 (Cancelación de Llamada Modal de Macro Personalizada) |
| Grupo Modal | Grupo 12 (Sistema Fanuc A), Grupo 14 (Fanuc B/C, Dialecto Siemens ISO, Mitsubishi) |
| Marcas Compatibles | Fanuc, Siemens, Mitsubishi |
| Parámetros Críticos | Fanuc Parámetro No. 3402 Bit 6 (CLR), Siemens MD 18800, Mitsubishi Parámetro #1151 |
| Restricción Principal | Debe programarse como un bloque preparatorio independiente. No acepta parámetros de coordenadas ni transfiere valores de argumentos. |
Lectura Rápida
- Programe un bloque de comando G67 independiente inmediatamente después de completar cualquier ciclo de patrón de coordenadas para liberar el núcleo de movimiento de prelectura (look-ahead).
- Verifique que el Parámetro No. 3402 Bit 6 esté configurado en 1 en los sistemas Fanuc para inicializar los códigos G del Grupo 12/14 en G67 durante los resets o el encendido.
- Cambie el intérprete bilingüe Siemens SINUMERIK al modo de Dialecto ISO mediante G291 para compilar bloques G67.
- Cancele todas las llamadas de macro modales activas antes de ejecutar controles del sistema de subpieza (G122/G144) para evitar el Error de Programa P652.
- Establezca el Parámetro #1151 rstinit de Mitsubishi en 1 para garantizar que el grupo modal de códigos G se inicialice en el estado de cancelación G67 tras un reset del control numérico (NC).
- Evite ejecutar comandos G67 cuando no haya ninguna llamada modal G66 activa para prevenir paradas inmediatas por error de programa.
Conceptos Básicos
La función principal del comando de cancelación de llamada modal de macro personalizada G67 es liberar el núcleo de movimiento de prelectura (look-ahead) de un estado de ejecución de macro modal, restaurando la ejecución estándar de trayectorias bloque a bloque. Cuando una llamada modal (G66 o G66.1) está activa, el control activa automáticamente el programa de macro asignado después de cada bloque de movimiento (Modal A) or de cada bloque individual (Modal B) para ejecutar geometrías repetitivas como patrones de rejilla o matrices de agujeros. Una vez completada la secuencia de coordenadas específica, el programador debe ordenar G67 para cancelar el estado modal.
Los operadores de preparación y los programadores deben mantener una vigilancia absoluta con respecto a los valores de las coordenadas, las paradas de bloque único (single block) y los estados modales activos de los códigos G. Durante las intervenciones manuales, como detener la máquina mediante bloque único o retención de avance (feed hold) para verificar tolerancias, o si ocurre una parada de emergencia, el estado del código G modal es gestionado por parámetros como #1151 rstinit. Si se presiona Reset, el control puede retener el estado modal G66 si #1151 está configurado en 0. Reanudar la operación bajo estas condiciones no canceladas sin emitir una cancelación G67 manual puede ejecutar una pasada de macro falsa, haciendo que la herramienta se clave en la pieza y creando una pieza rechazada (scrap part). Los operadores deben inspeccionar la pantalla de estado modal del panel HMI para confirmar que G67 está activo (la llamada modal está cancelada) antes de ejecutar secuencias de posicionamiento manual.
Estructura de Comandos
La sintaxis para la cancelación de la llamada modal de macro personalizada es estrictamente no argumentativa. Para evitar códigos de error de sintaxis de bloque como la Alarma Fanuc PS0033, G67 debe programarse como un bloque independiente. No acepta coordenadas, recuentos de repeticiones ni argumentos de variables locales, funcionando únicamente como un interruptor de cancelación de estado modal. Cuando el núcleo de movimiento procesa un bloque G67, finaliza los bucles de subprogramas y restaura la interpretación de coordenadas estándar.
El mapeo de grupos para el comando de cancelación depende de la estructura del sistema de códigos G. G67 pertenece al Grupo 12 bajo el Sistema de códigos G A (predominantemente sistemas de torno) y al Grupo 14 bajo los Sistemas de códigos G B/C (listas de centros de mecanizado). Modificar los estados de restablecimiento por defecto a través de los parámetros del sistema permite a los operadores establecer G67 como un inicio seguro por defecto del sistema, evitando que se arrastren llamadas de macro activas al iniciar nuevos programas.
G67 ;
| Marca | Referencia de Parámetro | Descripción de la Función | Rango de Valores / Estados |
|---|---|---|---|
| Fanuc | Parámetro No. 3402 Bit 6 (CLR) | Determina la inicialización del estado de borrado de códigos G. Cuando se establece en 1, el Grupo 12/14 se inicializa por defecto en G67. | 0 (no borrado) o 1 (borrado a G67) |
| Fanuc | Parámetro #1151 rstinit | Dicta si el estado modal G67 se inicializa o se retiene durante los resets. | Binario (0 o 1) |
| Siemens | MD 18800 $MN_MM_EXTERN_LANGUAGE | Debe establecerse en 1 para activar el compilador CNC externo necesario para el modo de Dialecto ISO. | 0 (desactivado) o 1 (activado) |
| Siemens | MD 20150 $MC_GCODE_RESET_VALUES | Configura los estados por defecto del grupo de códigos G al encender o reiniciar el canal. | Lista de códigos G |
| Mitsubishi | Parámetro #1151 rstinit | Configura los estados de inicialización modal G67 durante los resets del NC. | 0 (retiene) o 1 (inicializa a G67) |
| Mitsubishi | Parámetro #1296 ext32/bit5 | Habilita el procesamiento por lotes de instrucciones de macro para un movimiento continuo de los ejes. | 0 o 1 |
Aplicaciones de Marca
Fanuc
En los sistemas Fanuc, G67 está asignado al Grupo de códigos G 12 o 14. Los programadores utilizan el Parámetro No. 3402 Bit 6 para predeterminar el sistema en G67, y el Parámetro #1151 rstinit para controlar el comportamiento durante los resets.
; Fanuc: G67 ; Desactivar llamada modal de macro
| Categoría | Elemento del Sistema | Descripción |
|---|---|---|
| Parámetros | Parámetro No. 3402 Bit 6 (CLR), Parámetro #1151 rstinit | Inicializa el Grupo 12/14 a G67 al encender o reiniciar; controla los estados de retención modales. |
| Alarmas | Error de Programa (P232), Alarma PS0033 | P232 se activa si se ordena G67 sin un G66 activo; PS0033 se activa si G67 no está programado en su propio bloque. |
| Versiones | Sistemas A, B y C | G67 es del Grupo 12 en el Sistema A (torneado) y del Grupo 14 en los Sistemas B/C (fresado). |
Advertencia: Ordenar G67 cuando no hay ninguna llamada modal de macro activa activa un Error de Programa (P232) inmediato que detiene la máquina.
Siemens
Los controles Siemens SINUMERIK compilan G67 solo en el modo de Dialecto ISO. Los programadores activan este modo de compilación mediante MD 18800 y configuran los valores por defecto mediante MD 20150.
; Siemens: G291 ; Cambiar al modo de Dialecto ISO
G67 ; Cancelar llamada modal de macro activa
G290 ; Cambiar de nuevo al modo nativo de Siemens
| Categoría | Elemento del Sistema | Descripción |
|---|---|---|
| Parámetros | MD 18800 $MN_MM_EXTERN_LANGUAGE, MD 20150 $MC_GCODE_RESET_VALUES | Habilita el lenguaje de dialecto ISO externo; establece los valores por defecto de los códigos G tras un reset. |
| Alarmas | Alarma 61800, Alarma 12722 | La Alarma 61800 se activa si el compilador G291 está desactivado; la Alarma 12722 se activa si se procesan llamadas concurrentes a subrutinas en una sola línea. |
| Versiones | SINUMERIK 840D sl vs. 802D sl | El 840D sl admite diseños de pantalla panorámica y verificaciones activas de colisión, mientras que el 802D sl tiene bloqueados los datos de los parámetros de la máquina. |
Advertencia: Intentar cambiar al modo de Dialecto ISO G291 cuando MD 18800 está configurado en 0 causará la Alarma 61800 y desactivará la traducción.
Mitsubishi
Los controles Mitsubishi agrupan G67 bajo el Grupo 14. Los programadores verifican el Parámetro #1151 rstinit y el Parámetro #1296 ext32/bit5 para ajustar la ejecución.
; Mitsubishi: G67 ; Cancelar llamada modal de macro del Grupo 14
| Categoría | Elemento del Sistema | Descripción |
|---|---|---|
| Parámetros | Parámetro #1151 rstinit, Parámetro #1296 ext32/bit5 | Configura la inicialización por reset del modo modal del Grupo 14; cambia las llamadas de macro entre instrucciones y ejecutables. |
| Alarmas | Error de Programa, Error de Programa (P728) | El Error de Programa se activa si se ordena G67 sin un G66 activo; P728 se activa si ocurren comandos del Grupo 14 dentro de programas de interrupción del mecanizado. |
| Versiones | Serie M80V Type B, Formato Legacy M2/M0 | La serie M80V Type B restringe códigos G avanzados durante llamadas modales de macro activas; el formato M2/M0 admite llamadas secundarias heredadas. |
Advertencia: Ordenar G67 dentro de un programa de interrupción/retracción de mecanizado activará el Error de Programa (P728) y detendrá la recuperación de los ejes.
Comparación de Marcas
| Tema de Comparación | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Grupo de Códigos G Modal | Grupo 12 (Sistema A) / Grupo 14 (Sistemas B/C) | Grupo 12 (Sistema A) / Grupo 14 (Sistemas B/C en G291) | Grupo 14 (Grupo 14 o 19 en fresado) |
| Entorno del Compilador | Intérprete continuo único | Compilador bilingüe conmutable (G290 nativo, G291 modo Dialecto ISO) | Compilador único, formato intercambiable con G188/G189 |
| Estructura de Variables | Variables locales #1 a #33 | Variables de sistema estructuradas con prefijo $C_ (descarta las almohadillas) | Variables locales #1 a #33 |
| Formato de Número de Programa | P estándar (número de programa) y L (repetición) | Datos de máquina MD 18800 y configuración de $MC_EXTERN_FUNCTION_MASK | Los Parámetros #8129 y #1241 validan L/P como argumentos |
| Retracción / Retorno (Rollback) | Sin recuperación por retorno con volante (handwheel) | Los decalajes de origen (offsets) y modales se deseleccionan durante el retorno nativo | La marcha atrás manual arbitraria (G127) rastrea los modales utilizando un bloque de almacenamiento modal |
Análisis Técnico
La lógica interna de la cancelación de macros revela diferencias fundamentales en cómo Fanuc, Siemens y Mitsubishi manejan los registros locales y los compiladores. Los controles Fanuc y Mitsubishi utilizan una estructura de mapeo de variables plana (variables #1 a #33) para transferir los parámetros de G66/G65. Siemens, por el contrario, descarta este registro plano en su modo nativo, adoptando un formato estructurado utilizando variables del sistema $C_ (como de $C_A a $C_Z y $C_I[0..9]), lo que impone un entorno de macro orientado a objetos.
La ejecución del intérprete también varía según la marca. Siemens requiere una conmutación de compilador bilingüe mediante G291 para compilar bloques G66/G67 al estilo ISO, mientras que Fanuc procesa las llamadas de macro de forma nativa dentro de un flujo de intérprete continuo único. Mitsubishi utiliza un interruptor de formato de programa dinámico (G188/G189) que cambia dinámicamente las estructuras de llamada de macro modal entre sistemas de torneado (formato de torno) y fresado (formato de centro de mecanizado).
La recuperación de coordenadas es otro factor diferenciador. Mitsubishi admite la marcha atrás manual arbitraria (G127), que utiliza un bloque de almacenamiento de información modal para rastrear las posiciones y decalajes (offsets) de la macro modal activa durante el retorno con volante. Fanuc no tiene un rastreo de retorno con volante equivalente, y Siemens deselecciona por completo los decalajes de origen activos y los modales durante el retorno de estructura nativa.
Ejemplos de Programas
Ejemplo de Programación en Fanuc
G90 G54 G00 X0 Y0 Z10.0 ; Coordenadas absolutas
G66 P1234 A10.0 B20.0 ; Activar llamada modal de macro para el programa O1234
X50.0 Y50.0 ; Bloque de movimiento 1, activa el subprograma O1234
X100.0 Y100.0 ; Bloque de movimiento 2, activa el subprograma O1234
G67 ; Cancelar la llamada modal de macro
G00 X0 Y0 ; Retornar al origen sin activar la macro
Procedimiento de ejecución en seco (dry run): Antes del mecanizado, cargue el subprograma O1234 y el programa principal. Active la ejecución en seco y el modo de bloque único (single-block) en el panel de control del operador. Avance a través del programa y verifique en la pantalla de visualización de posición que el subprograma se active precisamente en los puntos finales de coordenadas de los bloques de movimiento. Confirme que el bloque del comando G67 se ejecute antes del movimiento de retorno al origen, verificando que la herramienta no realice una pasada de macro falsa que pueda dirigir la torreta hacia las bridas de sujeción.
Ejemplo de Programación en Siemens
G291 ; Cambiar al modo de Dialecto ISO
G90 G54 G00 X0 Y0 Z10.0 ; Coordenadas absolutas
G66 P0100 A10.0 B20.0 ; Activar llamada modal de macro para el programa O0100
X50.0 Y50.0 ; Bloque de movimiento, activa el subprograma O0100
X100.0 Y100.0 ; Bloque de movimiento, activa el subprograma O0100
G67 ; Cancelar la llamada modal de macro
G00 X0 Y0 ; Retornar al origen de forma segura
G290 ; Cambiar de nuevo al modo nativo de Siemens
Procedimiento de ejecución en seco: Verifique que MD 18800 esté activo. Ajuste el override de velocidad de la ejecución en seco a un valor bajo. Ejecute el programa en modo de bloque único. Monitoree la visualización del grupo G en la pantalla de SINUMERIK para asegurarse de que el G66 modal se borre a G67 durante el bloque de cancelación. Verifique que el eje retorne a G54 X0 Y0 sin ejecutar el subprograma SPF0100 en el límite de despeje.
Ejemplo de Programación en Mitsubishi
G90 G54 G00 X0 Y0 Z10.0 ; Coordenadas absolutas
G66 P1000 A10.0 B20.0 ; Activar llamada modal de macro para el programa O1000
X50.0 Y50.0 ; Bloque de movimiento, activa el subprograma O1000
X100.0 Y100.0 ; Bloque de movimiento, activa el subprograma O1000
G67 ; Cancelar llamada modal de macro en el Grupo 14
G00 X0 Y0 ; Retornar al origen de forma segura
Procedimiento de ejecución en seco: Verifique que el parámetro #1241 set13/bit5 esté habilitado. Ejecute el programa en modo de ejecución en seco. Si la trayectoria de la herramienta se desvía, utilice el volante de marcha atrás manual arbitraria (G127) para retroceder el eje. Verifique que las coordenadas activas se rastreen correctamente en el bloque de almacenamiento de información modal. Verifique que G67 cancele los modales del Grupo 14 antes de la retracción al origen.
Análisis de Errores
| Marca | Código de Alarma | Condición de Activación | Síntoma del Operario | Causa Raíz / Solución |
|---|---|---|---|---|
| Fanuc | Error de Programa (P232) | Ordenar G67 cuando no hay ninguna llamada modal de macro G66 o G66.1 activa. | La consola del NC parpadea con un mensaje de error de programa y detiene la ejecución del ciclo automático. | Asegúrese de que G66 o G66.1 estén activos antes de ordenar G67; elimine los bloques de cancelación redundantes. |
| Fanuc | Alarma PS0033 | G67 no está programado en un bloque independiente (por ejemplo, programado en la misma línea que los movimientos de coordenadas). | El sistema se detiene inmediatamente con la Alarma PS0033 (Error de Sintaxis de Bloque) en la pantalla. | Programe G67 en su propio bloque independiente sin ningún otro comando de coordenadas o código M. |
| Siemens | Alarma 61800 | Se emite la conmutación del intérprete G291 o el comando G67 cuando MD 18800 está desactivado. | La pantalla de SINUMERIK muestra "Falta la opción de lenguaje CNC externo" y detiene el procesamiento. | Establezca el dato de máquina MD 18800 $MN_MM_EXTERN_LANGUAGE en 1 para habilitar la compilación bilingüe. |
| Mitsubishi | Error de Programa (P728) | Ordenar G66, G66.1 o G67 dentro de un programa de interrupción/retracción de mecanizado. | La pantalla parpadea con un código de error de programa y detiene la secuencia de retracción de los ejes. | No programe códigos G del Grupo 14 dentro de rutinas de retracción o interrupción del mecanizado. |
Nota de Aplicación
La detención inmediata de la producción por alarmas de bloqueo de software (como las alarmas P39, P940 y P950 de Mitsubishi en controles M80V Type B) o alarmas de sintaxis de bloque (como la alarma PS0033 en Fanuc) ocurre cuando se intentan ejecutar compensaciones avanzadas o comandos mal estructurados con un ciclo modal activo. Los operadores deben verificar que el estado modal Group 14 o Group 12 se inicialice correctamente a G67 mediante el parámetro No. 3402 Bit 6 en Fanuc o el parámetro #1151 rstinit en Mitsubishi y Fanuc. En sistemas compactos como el Siemens SINUMERIK 802D sl, donde parámetros clave como SLASH_MASK están bloqueados por hardware y no pueden modificarse, la programación explícita de G67 en un bloque independiente es la única salvaguarda para garantizar la continuidad del ciclo de mecanizado sin riesgo de colisión.
Red de Comandos Relacionados
- G65 (Llamada simple de macro personalizada): Ejecuta un subprograma una vez para un solo bloque y no requiere G67 para cancelarlo.
- G66 (Llamada modal de macro personalizada A): Activa el estado de llamada de macro modal que G67 está diseñado para desactivar.
- G64 (Modo de trayectoria continua): Permite la mezcla de trayectoria continua entre bloques de movimiento, que puede ser interrumpida por paradas del preprocesador de macros no canceladas.
- G61 (Modo de parada exacta): Fuerza paradas de verificación de coordenadas exactas entre iteraciones de macro modales para garantizar una alta precisión geométrica.
Conclusión
La inclusión sistemática de un bloque G67 independiente inmediatamente después del último movimiento del patrón de coordenadas protege la integridad física de la máquina y maximiza el tiempo de ciclo efectivo. Configurar los parámetros de inicialización del control para desactivar los estados modales en cada reset o encendido establece un entorno de producción a prueba de fallos, eliminando la posibilidad de arrastrar macros activas que arruinen lotes de piezas.
Preguntas Frecuentes (FAQ)
¿Por qué mi CNC Fanuc genera la alarma PS0033 al intentar cancelar una macro con G67?
Esta alarma se produce porque el comando G67 no se ha programado en un bloque de código independiente y aislado. La regla del preprocesador exige que G67 se ejecute sin coordenadas ni funciones adicionales en la misma línea. Para solucionarlo, inserte un salto de línea antes y después del comando G67 en su editor de programas.
¿Cómo evito que un reset del CNC mantenga activa la llamada modal de macro si el parámetro #1151 está en cero?
Si el parámetro #1151 rstinit se configura en cero, el control CNC retendrá el estado modal activo G66 después de presionar Reset, lo que puede causar una colisión al reiniciar la marcha. Para evitar esto, cambie el valor del parámetro #1151 a 1 en la pantalla de parámetros del sistema o añada manualmente un G67 en la cabecera de inicialización de sus programas de mecanizado.
¿Es posible utilizar compensaciones de superficie inclinada G68.2 mientras una llamada modal G66 está activa en Mitsubishi?
No, los controles Mitsubishi de la serie M80V Type B bloquean el uso de funciones avanzadas como G68.2 durante estados modales activos para evitar errores de cálculo de trayectoria, activando las alarmas P39 o P940. Cancele siempre la macro modal programando G67 antes de invocar cualquier ciclo de compensación multieje.
¿Aún no se ha resuelto?
Pregunta a nuestro asistente de IA sobre este tema en lenguaje natural. Basado en fuentes verificadas, sin alucinaciones.

- CNC CARE Co-Founder (May 2025 - Present)
- Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
- Reis CNC Service Engineer (2003 - 2008)
- Ö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
Guía de Programación de G71 y G710 en Controles Siemens SINUMERIK
Aprenda a programar dimensionamiento métrico con G71 y G710 en Siemens. Evite el Alarm 14800 por velocidad cero y configure el parámetro MD 10240 sin errores.
Cancelación de Corte Balanceado G69: Recuperación de Coordenadas
Aprenda a programar la cancelación de corte balanceado G69 en tornos CNC Fanuc, Siemens y Mitsubishi. Desactive la sincronización de torretas y evite colisiones.
Ciclo de Acabado G70 en CNC: GuÃa Fanuc, Siemens y Mitsubishi
Aprenda a programar el ciclo de acabado G70 en torneado CNC. Domine parámetros, códigos de alarma y sintaxis para controles Fanuc, Siemens CYCLE95 y Mitsubishi.
Cancelación de Rotación de Coordenadas G69: Guía CNC y Alarmas
Aprenda a cancelar el espejo G68 y la rotación de coordenadas usando G69 en Fanuc, Siemens y Mitsubishi para evitar colisiones catastróficas de la torreta.