Preprocesamiento de rutas y tamaños de cola
Canalización del procesamiento del código G
Cuando se lee el código G de un archivo, a menudo no es práctico leer y procesar todo el archivo antes de iniciar el mecanizado. Para algunas aplicaciones, los archivos de código G pueden tener unos cientos de miles o incluso millones de líneas. Leer todo de una vez llevaría mucho tiempo y también requeriría mucha memoria
En cambio, el código G se lee línea por línea, pero solo una pequeña fracción (unos pocos cientos de líneas) se guarda en la memoria en cada momento. Esta parte se guarda en colas, es decir, en estructuras de datos que funcionan según el principio de «primero en entrar, primero en salir»: el bloque de función productor añade elementos a la cola. El bloque de funciones consumidoras lee y elimina los elementos en el mismo orden en que se insertaron
El diagrama muestra el flujo del código G a través del sistema. En primer lugar, el código G se lee de un archivo y, a continuación, el intérprete lo convierte en los denominados elementos GeoInfo. Estos elementos son procesados por la ruta, preprocesando los bloques de funciones y, finalmente, los interpolan. Las partes marcadas con «GeoInfo» representan las colas. Si hay más de un preprocesador de rutas SMC_SmoothPath
, SMC_ToolRadiusCorr
, o SMC_AvoidLoop
) se usa, luego también están conectados por colas.

Tamaños de cola recomendados
Como regla general, para la mayoría de las colas es adecuado un tamaño de 16 elementos. La última cola antes del SMC_Interpolator
bloque de función (que suele ser la cola de la ruta que preprocesa el bloque de funciones antes SMC_CheckVelocities
) debería tener un tamaño de cola mayor: 100 elementos es un buen punto de partida para la mayoría de las aplicaciones.
Latencia de procesamiento: cuanto más grandes sean las colas, más tardará en llenarse inicialmente. El
SMC_Interpolator
bloque de función espera hasta que se llene la última cola antes de comenzar con la interpolación. Para la latencia, el tamaño total de la cola (la suma de todos los tamaños de colaMira hacia adelante del interpolador: el tamaño de la última cola antes del
SMC_Interpolator
determina la anticipación de la interpolación. Al calcular una trayectoria, el interpolador solo puede planificar hasta el final de la previsión. Si la previsión es demasiado pequeña, es posible que el interpolador no pueda alcanzar la velocidad máxima de la trayectoria. Según la velocidad de la trayectoria y la longitud de los elementos, 100 elementos es un buen punto de partida, pero en el caso de los elementos con velocidades altas o cortos, puede ser necesaria una cola más grandeEfecto en bloques de funciones particulares: bloques de funciones como
SMC_AvoidLoop
oSMC_SmoothMerge
requieren un tamaño determinado de la cola de entrada para funcionar de forma eficaz. Por ejemplo, para detectar un bucle en el código G, este bucle debe caber en la cola antesSMC_AvoidLoop
. Consulta la documentación de los bloques de funciones de tu proceso de procesamiento de rutas para obtener más información.
Llamar a los bloques de funciones de procesamiento
Como se mencionó anteriormente, la interpolación comienza solo después de que se hayan llenado todas las colas. Esto provoca una latencia inicial al iniciar el mecanizado. Además de reducir el tamaño total de la cola, hay una forma adicional de reducir esta latencia
Los bloques de funciones de preprocesamiento de rutas se suelen llamar en una tarea cíclica en segundo plano, como se muestra en los ejemplos, como Ejemplo 03 de CNC: Realización del preprocesamiento de ruta en línea. Para reducir la latencia, el programa llama SMC_ReadNCFile2
, SMC_NCInterpreter
, y los preprocesadores de rutas se pueden invocar en un bucle. En función de las prioridades de la aplicación y de las tareas, puede ser suficiente ejecutar el programa varias veces por llamada de tarea (por ejemplo, 100 veces) o terminar el ciclo después de un período de tiempo determinado (por ejemplo, 5 ms)