Skip to main content
CNC.wiki

Guía de Programación de Parámetros R en Siemens: Variables y Sintaxis

Aprenda a programar parámetros R en Siemens SINUMERIK. Configure MD28050 y evite alarmas 61696/61697 en comparación con controles Fanuc y Mitsubishi.

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

Cofundador de CNC CARE

Introducción

Una colisión catastrófica del turret contra una mordaza de sujeción (vise jaw), el chuck o una brida de sujeción (clamp) ocurre de manera imprevista si el programador omite un bloque de parada de preprocesamiento (STOPRE) tras calcular variables aritméticas. Debido a que el controlador SINUMERIK utiliza un buffer LookAhead y decodifica varios bloques NC por adelantado, un parámetro R calculado matemáticamente en el bloque actual puede ser evaluado prematuramente por un bloque de movimiento posterior. Si la máquina intenta desplazarse a una coordenada basada en una variable R vacía o no actualizada, la desviación de la trayectoria resultante provoca una colisión severa en la que el herramental se rompe, la pieza se echa a perder y el ciclo se interrumpe bajo una alarma de interpretación crítica. Evitar estos costosos daños y el consiguiente tiempo de inactividad exige dominar el control de los buffers por canal, la sintaxis en acciones sincronizadas y la correcta sincronización de coordenadas.

Resumen Técnico

EspecificaciónDetalles
Código de ComandoR (direccionamiento de parámetros aritméticos)
Grupo Modal / ModalidadProgramación Paramétrica / de Variables
Marcas AplicablesSiemens (marca filtrada)
Parámetros CríticosMD28050 $MC_MM_NUM_R_PARAM, MD18156 $MN_MM_NUM_R_PARAM_NCK
Restricción PrincipalRango de notación estándar: ±(0.0000001 a 99999999) (máx 8 decimales); Rango de notación exponencial: ±(1*10^-300 a 1*10^+300); Se deben usar bloques STOPRE para evitar errores de preprocesamiento LookAhead.

Lectura Rápida

  • Forzar Paradas de Preprocesamiento: Inserte un comando STOPRE en una línea independiente inmediatamente después de modificar un parámetro R para bloquear los cálculos del buffer LookAhead y evitar que los bloques de movimiento se ejecuten con valores obsoletos.
  • Diferenciar Contextos de Programa: Programe los parámetros R simplemente como R10 en programas de pieza estándar, pero anteponga un signo de dólar ($R10) al evaluarlos como variables de ejecución principal (main run) dentro de acciones sincronizadas.
  • Implementar Programación Indirecta: Utilice asignaciones de coordenadas en línea como X=R1 Z=R2 para programar el recorrido de los ejes directamente, evitando la necesidad de bloques de asignación de variables separados.
  • Gestionar Capacidades de Parámetros: Monitoree los límites de canal configurados a través de MD28050 (por defecto 100 parámetros) y los límites globales a través de MD18156 para evitar exceder los límites de asignación de memoria.
  • Sincronizar Operaciones Multicanal: Programe marcadores WAIT y banderas explícitos al leer o escribir variables globales (RG) para evitar carreras de datos entre canales y la corrupción de lectura/escritura.
  • Validar Valores Calculados: Verifique que los valores de los parámetros R permanezcan dentro de los límites de notación estándar de ±(0.000 0001 ... 9999 9999) con un máximo de ocho decimales para evitar la Alarma 61697.

Conceptos Básicos

El efecto práctico de programación de los parámetros R de Siemens permite a los operadores y programadores calcular dinámicamente programas de pieza y ciclos del fabricante altamente flexibles que se adaptan a diferentes geometrías de piezas sin requerir coordenadas fijas. Los programadores confían frecuentemente en estas variables aritméticas para calcular trayectorias de herramienta trigonométricas complejas, configurar pasos de rosca variables (G34/G35) o definir coordenadas de aproximación exactas para configuraciones multieje como un ciclo de procesamiento de doble turret (G68/G69). Sin embargo, los programadores y operadores deben prestar mucha atención a los errores de cálculo anticipado al establecer estas variables. Debido a que el controlador SINUMERIK utiliza un buffer LookAhead y lee varios bloques NC por adelantado durante el preprocesamiento, un parámetro R calculado matemáticamente en el bloque actual podría ser evaluado prematuramente por un bloque de movimiento posterior.

Este parametric system funciona de manera similar a la subprogramación estándar, pero añade capacidad de cálculo en tiempo real. Al establecer relaciones entre variables y coordenadas, los talleres pueden automatizar familias complejas de piezas en lugar de repetir líneas estáticas de G-code. Para obtener más información sobre el comportamiento estándar de ejecución de subprogramas, consulte nuestra guía sobre Escritura y Llamada de Subprogramas. Cuando se necesita optimización para trayectorias de mecanizado de alta velocidad, la combinación de programación paramétrica con filtros avanzados de suavizado como Suavizado Basado en Tolerancia G645 asegura que los ejes sigan las coordenadas calculadas de manera suave y sin deceleraciones abruptas.

Estructura de Comandos

Los parámetros R de Siemens se direccionan utilizando una nomenclatura específica que determina su visibilidad y comportamiento temporal. En un programa de pieza NC estándar, un parámetro se referencia mediante la letra R seguida de un número, como R10, o utilizando una indexación entre corchetes como R[10]. Estos parámetros son específicos del canal, lo que significa que cada canal mantiene su propio conjunto independiente de variables R. La capacidad de canal predeterminada es de 100 variables, pero esto se puede ajustar en la configuración del controlador. Para compartir valores de coma flotante a través de múltiples canales, se utilizan parámetros globales RG.

Cuando las variables deben ser evaluadas en tiempo real mediante acciones sincronizadas con el movimiento, el prefijo del signo de dólar $ es obligatorio (por ejemplo, $R10). Esto indica al núcleo del control numérico que trate la variable como una variable de ejecución principal (main run) en lugar de una variable de preprocesamiento. Los programas estándar también pueden utilizar programación indirecta asignando parámetros R directamente a los ejes en línea, como X=R1 Z=R2, lo que acelera la ejecución del código y reduce el tamaño del archivo.

Formatos de Asignación y Nomenclatura:

  • Parámetro R de Canal: R<número> o R[<número>] (por ejemplo, R5=12.34)
  • Variable de Acción Sincronizada: $R<número> o $R[<número>] (por ejemplo, $R5=12.34)
  • Parámetro R NCK Global: RG[<número>] (por ejemplo, RG[1]=2.5)
  • Asignación de Eje Indirecta: <Eje>=R<número> (por ejemplo, X=R1 Z=R2)
Parámetro / VariableDescripciónRango de Valores / Opción
MD28050 $MC_MM_NUM_R_PARAMDefine la capacidad de parámetros R específicos del canal.Por defecto: 100 variables R por canal
MD18156 $MN_MM_NUM_R_PARAM_NCKDefine la capacidad global de parámetros R de todo el NCK.Configurado a través de datos de máquina
R[x] o R1 to R999Parámetro R de canal (tipo REAL/DOUBLE).±(0.000 0001 ... 9999 9999) (máx 8 decimales); Exponencial: ±(1*10^-300 ... 1*10^+300)
RG[x]Parámetro R global de NCK (tipo REAL).±(0.000 0001 ... 9999 9999) (máx 8 decimales); Exponencial: ±(1*10^-300 ... 1*10^+300)

Aplicaciones de Marca

Siemens

Los controladores Siemens SINUMERIK gestionan la programación paramétrica utilizando un motor de parámetros aritméticos altamente flexible. En programas de pieza estándar, las variables se escriben simplemente como R10, pero dentro de las acciones sincronizadas a nivel de hardware (que se ejecutan en paralelo con el interpolador), deben anteponerse con un signo de dólar como $R10 para denotarlas como variables de ejecución principal (main run). Siemens permite la programación indirecta directa en línea de los ejes geométricos (por ejemplo, G01 X=R1 Z=R2 o R[R0]=27.123), lo que hace que el código ISO sea significativamente más limpio y rápido de analizar. Para compartir valores a través de canales, los parámetros globales RG[n] se configuran a través de los datos de máquina MD18156, evitando complejos bloques de datos PLC externos.

Una secuencia típica de G-code en un controlador Siemens inicializa los parámetros R, realiza cálculos y ejecuta bloques de movimiento, utilizando un comando STOPRE para sincronizar el buffer LookAhead: N10 R1=10.0 R2=20.0; N20 R3=R1+R2; N30 STOPRE; N40 G01 X=R3 F500; N50 R[R1]=27.123;.

CategoríaParámetro / Alarma / VersiónDetalles Técnicos
ParámetroMD28050 $MC_MM_NUM_R_PARAMCapacidad de parámetros R específicos del canal. Por defecto: 100 variables R por canal.
ParámetroMD18156 $MN_MM_NUM_R_PARAM_NCKCapacidad global de parámetros R de todo el NCK. Configurada a través de datos de máquina.
Código de AlarmaAlarma 61696"Parámetro R123 programado incorrectamente". La sintaxis aritmética en el cálculo del parámetro no es válida. Activa la parada del intérprete del canal, muestra una alarma activa y deshabilita el NC Start.
Código de AlarmaAlarma 61697"Parámetro R122 demasiado alto / demasiado bajo". El valor calculated excede los límites permitidos. Activa la parada del intérprete del canal y deshabilita el NC Start.
VersionesSINUMERIK 808DPredefine 300 parámetros R de canal listos para usar (configuración base fija).
VersionesSINUMERIK 840D sl / ONEEscala las capacidades de parámetros locales y globales de forma dinámica a través de configuraciones de datos de máquina.

Advertencia: No deseleccionar la compensación de radio de herramienta (G40) u omitir STOPRE inmediatamente después de calcular los parámetros aritméticos puede hacer que el buffer LookAhead ejecute bloques de movimiento con valores de variables antiguos, lo que provoca colisiones catastróficas de la máquina.

Comparación de Marcas

Serie / OpciónCapacidades y Configuración de Parámetros RCaracterísticas Especiales y Comportamiento de Ejecución
SINUMERIK 808DPredefine una configuración fija de 300 parámetros R específicos de canal listos para usar.Evaluación básica de parámetros aritméticos sin soporte para parámetros NCK globales multicanal de gama alta.
SINUMERIK 828DConfigurable a través de los datos de máquina específicos del canal MD28050 hasta los límites definidos del sistema.Incluye soporte robusto para parámetros R de canal, variables de acción sincronizada ($R) y lazos de seguridad de diagnóstico integrados.
SINUMERIK 840D sl / ONEEscala las capacidades locales y globales de forma dinámica a través de los datos de máquina MD28050 y MD18156.Soporta parámetros globales multicanal avanzados (RG) y marcadores WAIT multicanal para una sincronización compleja de múltiples ejes a alta velocidad.

Análisis Técnico

Siemens presenta varios comportamientos con respecto a la evaluación de parámetros aritméticos que distinguen claramente a sus modelos y series. En primer lugar, el modelo básico SINUMERIK 808D cuenta con una asignación fija y no configurable de 300 parámetros R específicos del canal, lo cual es ideal para máquinas estándar de tres ejes, pero carece del escalado dinámico de memoria requerido para configuraciones complejas. Por otro lado, los controladores de gama alta como el 840D sl y SINUMERIK ONE utilizan datos de máquina configurables (MD28050 y MD18156) para permitir a los ingenieros escalar las capacidades de parámetros locales y globales para adaptarse a configuraciones multicanal específicas.

La elección entre variables específicas de canal y parámetros NCK globales dicta cómo se comparten los datos en el control. Los parámetros de canal R[n] están limitados a su respectivo canal y son evaluados secuencialmente por el intérprete del canal. Si un programador intenta pasar coordenadas a un canal secundario utilizando estas variables locales, el segundo canal permanecerá completamente ciego a dichos valores. Para resolver esto, se deben utilizar parámetros globales RG[n]. Debido a que el control no impone bloqueos implícitos de lectura/escritura en las variables globales, los programadores deben programar activamente marcadores WAIT para evitar la corrupción de datos. Si un canal secundario lee una variable RG antes de que el canal primario haya terminado de escribir en ella, la discrepancia de coordenadas resultante desviará a la máquina de su trayectoria.

Ejemplos de Programas

1. Asignación Estándar y Movimiento de Eje en Línea

Este programa demuestra la inicialización de parámetros R locales y su asignación en línea directamente a ejes geométricos para el movimiento.

; Movimiento Estándar de Parámetros R
N10 R1=25.0 R2=-50.0      ; Inicializar variables de canal R1 y R2
N20 G01 X=R1 Z=R2 F300    ; Mover linealmente a X25.0 Z-50.0 a F300

2. Sincronización del Buffer LookAhead usando STOPRE

Este programa ilustra cómo usar un bloque de parada de preprocesamiento (STOPRE) en su propia línea para evitar errores de LookAhead al calcular coordenadas de trayectoria.

; Sincronización de Parada de Preprocesamiento
N30 R3=R1+10.0            ; Realizar cálculo aritmético (R3 = 35.0)
N40 STOPRE                ; Detener el buffer LookAhead hasta que se guarde el cálculo
N50 G01 X=R3 F200         ; Mover a X35.0 usando el valor verificado de R3

3. Indexación de Matriz Indirecta y Cálculos Trigonométricos

Este programa muestra cómo realizar direccionamiento indirecto utilizando variables R anidadas y calcular un ángulo usando la función ATAN2.

; Indexación Anidada y Trigonometría
N60 R[R1]=27.123          ; Escribir el valor 27.123 en R25 (dado que R1 = 25.0)
N70 R40=ATAN2(30.5,80.1)  ; Calcular el ángulo (R40 = 20.844 grados)
N80 M02                   ; Fin de programa y restablecer estados modales

Procedimiento de ejecución en seco (dry run)

Realizar una ejecución en seco de la rutina paramétrica asegura que todos los cálculos y paradas de LookAhead funcionen correctamente antes de mecanizar una pieza física. Siga este procedimiento paso a paso:

  1. Verificar Requisitos Mecánicos Previos: Asegúrese de que la pieza de trabajo esté montada de forma segura en el chuck o mordaza, y que todas las clamps estén despejadas de la trayectoria de la herramienta.
  2. Comprobar Límites de Parámetros: Acceda a la página de parámetros del controlador para confirmar que las variables de canal activas están dentro de los límites y que MD28050 está configurado para admitir el índice de variable programado.
  3. Posicionar los Ejes: Desplace la herramienta en modo manual (jog) a una ubicación de holgura segura a al menos 50 mm de cualquier obstrucción física.
  4. Seleccionar Modo MDA: Cambie el controlador a modo MDA (Manual Data Automatic) o de ejecución de Programa, y cargue los bloques de prueba.
  5. Habilitar Bloque Único: Active el interruptor de Bloque Único en el panel del operador para permitir avanzar por el programa línea por línea.
  6. Ejecutar N10 y N20: Presione Cycle Start. El controlador asigna valores a R1 (25.0) y R2 (-50.0). El siguiente bloque ordena un movimiento lineal a X25.0 y Z-50.0. Verifique que las coordenadas de los ejes en la pantalla se actualicen para coincidir con estas variables.
  7. Ejecutar N30 y N40: Avance por el bloque de cálculo. Presione Cycle Start de nuevo para ejecutar STOPRE. Note que el control detiene el preprocesamiento en esta línea, asegurando que el nuevo valor de R3 esté completamente calculado y registrado antes de que ocurra cualquier movimiento de eje.
  8. Ejecutar N50 a N80: Confirme que la herramienta se mueva a la posición calculada X35.0, luego realice la asignación de indexación anidada a R25 y el cálculo trigonométrico para R40. El programa termina con M02, restableciendo los estados modales.

Análisis de Errores

Código de AlarmaCondición de ActivaciónSíntoma para el OperadorCausa Raíz y Resolución Práctica
Alarma 61696: Parámetro programado incorrectamenteSintaxis aritmética no válida o error estructural dentro del cálculo de un parámetro R (por ejemplo, corchetes no coincidentes o llamadas a funciones incorrectas).Parada inmediata del intérprete de canal; mensaje de alarma activo mostrado en la HMI; el NC Start está deshabilitado.Existe un error de sintaxis en la fórmula matemática. Verifique el formato de la ecuación, asegúrese de que todos los corchetes abiertos [ tengan corchetes de cierre ] coincidentes y corrija las funciones no válidas.
Alarma 61697: Parámetro demasiado alto / demasiado bajoEl valor calculado o asignado de un parámetro R excede el rango de coma flotante máximo permitido.Parada inmediata del intérprete de canal; la ejecución se detiene a mitad del bloque; el NC Start está deshabilitado.El valor excede los límites del rango (estándar ±9999 9999 con 8 decimales, o límites exponenciales). Verifique los límites del cálculo y agregue verificaciones de rango de entrada al programa.
Alarma del Intérprete: Uso no válido de la sintaxis $RUso del prefijo de acción sincronizada $ en un parámetro R (por ejemplo, $R1) dentro de un bloque de programa estándar en lugar de una acción sincronizada.La ejecución del programa es rechazada en el bloque infractor; se muestra una alarma de error de sintaxis activa.El prefijo $R está estrictamente reservado para evaluaciones de ejecución principal (main run) en acciones sincronizadas con el movimiento. Elimine el prefijo $ para bloques de programa de pieza estándar, utilizando el direccionamiento estándar R1 en su lugar.

Nota de Aplicación

Una colisión grave en el lazo de posición que estrella la herramienta directamente contra un clamp o dobla el chuck de compensación rígida es la consecuencia física directa de omitir la parada de preprocesamiento (STOPRE) tras operaciones aritméticas complejas. Si no se verifica este parámetro 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. Debido a que el buffer de decodificación anticipada SINUMERIK evalúa bloques NC antes de que se consolide el cálculo en la memoria de variables, cualquier movimiento secuencial ejecutará coordenadas no actualizadas y forzará una parada de emergencia bajo el Alarm 61696. Validar el parámetro MD28050 elimina la causa más frecuente de parada no planificada en este comando, garantizando la capacidad de canal requerida para procesar subrutinas y variables complejas sin saturación. Asimismo, para mitigar riesgos de colisión y tiempos de inactividad, los operadores deben emplear marcadores WAIT dedicados cuando se utilicen variables globales (RG) distribuidas en múltiples canales de mecanizado.

Red de Comandos Relacionados

  • STOPRE: Un comando de parada de preprocesamiento que synchroniza el buffer LookAhead con los cálculos aritméticos activos para evitar la evaluación prematura de variables.
  • RG: Parámetros R globales de todo el NCK utilizados para transferir valores de coma flotante entre múltiples canales de mecanizado.
  • g331-g332-rigid-tapping: Ciclos de roscado rígido que utilizan movimiento sincronizado del husillo y del eje Z, los cuales se pueden controlar dinámicamente a través de parámetros R.
  • writing-and-calling-subprograms: El método estructural para ejecutar rutinas repetitivas, el cual se puede parametrizar utilizando variables R para ajustar las coordenadas dinámicamente.
  • g645-tolerance-based-smoothing: Un comando avanzado de suavizado de trayectoria utilizado para mantener altas velocidades de avance al ejecutar trayectorias de herramienta complejas calculadas.

Conclusión

El aprovechamiento seguro y eficiente de los parámetros R en controles Siemens exige implantar un protocolo rígido que priorice la sincronización del buffer LookAhead del CNC y la auditoría sistemática de la memoria de variables asignada. Insertar de manera sistemática un bloque STOPRE inmediatamente después de cada cálculo aritmético anula cualquier posibilidad de que los movimientos de los ejes lean coordenadas obsoletas y provoquen colisiones destructivas en la máquina. Esta práctica operativa, combinada con la configuración del direccionamiento global de variables (RG) mediante el uso estricto de banderas WAIT, optimiza el tiempo de ciclo en configuraciones multicanal, protege el utillaje y erradica por completo la producción de piezas rechazadas.

Preguntas Frecuentes (FAQ)

¿Por qué el control SINUMERIK ejecuta bloques de movimiento usando valores obsoletos de parámetros R y cómo evitarlo?

Este comportamiento ocurre porque el motor de predecodificación (LookAhead) analiza múltiples bloques por adelantado para optimizar las trayectorias de movimiento. Si un bloque de cálculo matemático es seguido inmediatamente por un bloque de movimiento sin una barrera intermedia, el intérprete procesará la coordenada antes de que la variable R se guarde en la memoria. Acción práctica: Inserte un comando STOPRE exclusivo en una línea independiente inmediatamente después de cada bloque de asignación aritmética para detener temporalmente el buffer de preprocesamiento.

¿Qué provoca la alarma 61697 durante el cálculo de variables aritméticas y cómo corregirla en producción?

La alarma 61697 se activa cuando un parámetro R toma un valor que excede los límites físicos definidos por el sistema (valores superiores a 99999999 o inferiores a 0.0000001 en representación no exponencial). Esto suele debido a divisiones entre cero, funciones trigonométricas con argumentos erróneos o desbordamientos lógicos en los ciclos de mecanizado. Acción práctica: Modifique la rutina matemática para validar que ningún divisor sea cero y acote las variables dentro del rango permisible antes de ordenar el movimiento de los ejes.

¿Cómo configurar el número máximo de variables R por canal para evitar saturaciones de memoria?

Cuando se ejecutan ciclos paramétricos complejos o programas extensos que consumen muchas variables locales, el CNC puede quedarse sin memoria libre, lo que provoca detenciones inesperadas de la máquina. La capacidad predeterminada de 100 parámetros por canal se puede ampliar modificando los ajustes del sistema en los datos de máquina del controlador. Acción práctica: Acceda a la pantalla de parámetros del sistema del SINUMERIK, aumente el valor del parámetro de máquina MD28050 $MC_MM_NUM_R_PARAM y realice un reinicio en caliente (warm start) del control para activar la nueva asignación de memoria.

¿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