Skip to main content

Preprocesamiento de archivos de código G de gran tamaño

El CNC15_LargeGCode.project el proyecto de ejemplo se encuentra en el directorio de instalación de CODESYS debajo ..\CODESYS SoftMotion\Examples.

El proyecto de ejemplo muestra cómo procesar archivos de código G de gran tamaño. Dado que los archivos de gran tamaño son especialmente comunes como salida de los sistemas CAD/CAM, este caso se muestra a modo

Los sistemas CAD/CAM suelen generar archivos de código G con varios cientos de miles de líneas. Consisten en segmentos lineales muy cortosG1), normalmente en el intervalo de 100 micrómetros a un milímetro. Estos segmentos lineales cortos trazan el contorno de la pieza. No forman un camino suave. La tangente normalmente salta entre los segmentos lineales

El ejemplo muestra cómo leer estos archivos grandes de manera eficiente con requisitos de memoria constantes y cómo lograr una curva de velocidad suave en una ruta que consta de tantos segmentos lineales cortos. El contorno original de la pieza de trabajo se reconstruye mientras se preprocesa

Estructura de la solicitud

La estructura es típica de las aplicaciones de CNC. El código G se lee en la tarea en segundo planoPathTask), y el preprocesamiento de rutas también tiene lugar aquí. La interpolación se realiza en la tarea del busMainTask).

Lectura de archivos de gran tamaño

Para mantener corta la latencia al principio del procesamiento del código G, se utiliza un bucle en la tarea en segundo plano. Para simplificar, se utiliza un contador para la condición de cancelación. Según la aplicación, el código G y el rendimiento del PLC, pueden resultar útiles otras condiciones de cancelación, como un temporizador. El ciclo finalizará antes de alcanzar esta condición de cancelación cuando la cola de rutas

// Set this value depending on your other tasks, PLC performance, and G-Code
counter := 25;

WHILE counter > 0 AND
      (poqDataOut = 0 OR_ELSE (NOT poqDataOut^.bFull AND NOT poqDataOut^.bEndOfList))
DO
     <Read G-Code and process it>

     counter := counter - 1;
END_WHILE

Mediante la canalización en el preprocesamiento, incluso los archivos de código G de gran tamaño se pueden leer con requisitos de memoria pequeños y constantes. Los tamaños de las colas se eligen para que sean lo suficientemente grandes como para permitir una previsión suficiente de los bloques de funciones respectivos

La cola de salida de SMC_NCInterpreter es también la cola de entrada de SMC_SmoothMerge. Se reservan un total de 128+3 elementos para la cola de salida. 3 es una SMC_OutQueue y quedan 128 para usarse como previsión para SMC_SmoothMerge. SMC_SmoothMerge combina un máximo de 128 segmentos lineales cortos en una sola ranura.

La cola de salida de SMC_SmoothMerge es también la cola de entrada de SMC_SmoothPath. SMC_SmoothPath requiere al menos 2 elementos, más una reserva de 3 elementos, como previsión. Si las funciones M se encuentran entre dos elementos suavizados, se necesitarán más elementos según el número de

La cola de salida de SMC_SmoothMerge es también la cola de entrada de SMC_Interpolator. Una previsión de 100 elementos es adecuada para la mayoría de las aplicaciones. Para obtener más información, consulte lo siguiente: Preprocesamiento de rutas y tamaños de cola.

/// Buffer of the interpreter, lookahead for SMC_SmoothMerge
aBufIp : ARRAY[0..130] OF SMC_GeoInfo;
/// Buffer of SMC_SmoothMerge
aBufSmm : ARRAY[0..15] OF SMC_GeoInfo;
/// Buffer of SMC_SmoothPath, lookahead for SMC_Interpolator
aBufSmp : ARRAY[0..99] OF SMC_GeoInfo;

Preprocesamiento de segmentos lineales

El SMC_SmoothMerge bloque funcional garantiza una curva de velocidad suave en los muchos segmentos lineales muy cortos. Combina tantos segmentos lineales consecutivos como sea posible en una sola ranura, manteniendo las tolerancias especificadas. En este ejemplo, se permite una desviación máxima de 0,1 mm en X e YPARAMETERS.piMaxDifference).

. Las figuras muestran el procesamiento paso a paso:
  1. Lectura de los segmentos lineales cortos

    _sm_img_example_long_g_code1.png
  2. Combinación de varios segmentos lineales en splines mediante SMC_SmoothMerge.

    _sm_img_example_long_g_code2.png
  3. Suavizar entre las estrías con SMC_SmoothPath porque, como se ha visto anteriormente, las splines no se conectan tangencialmente entre sí.

    _sm_img_example_long_g_code3.png

Puesta en servicio

  1. Cree la aplicación y descárguela en un controlador.

  2. Abra la traza y descárguela al controlador.

  3. Inicie la aplicación.

  4. Puede realizar un seguimiento del procesamiento del código G.