Skip to main content

Preelaborazione di file G-Code di grandi dimensioni

Le CNC15_LargeGCode.project il progetto di esempio si trova nella directory di installazione di CODESYS sotto ..\CODESYS SoftMotion\Examples.

Il progetto di esempio mostra come elaborare file G-code di grandi dimensioni. Poiché i file di grandi dimensioni sono particolarmente comuni come output da sistemi CAD/CAM, questo caso viene mostrato come esempio

I sistemi CAD/CAM generano spesso file G-code con diverse centinaia di migliaia di righe. Sono costituiti da segmenti lineari molto cortiG1), in genere nell'intervallo da 100 micrometri a un millimetro. Questi brevi segmenti lineari tracciano il contorno del pezzo. Non formano un percorso regolare. La tangente di solito salta tra i segmenti lineari

L'esempio mostra come leggere questi file di grandi dimensioni in modo efficiente con requisiti di memoria costanti e come ottenere una curva di velocità uniforme su un percorso composto da tanti brevi segmenti lineari. Il contorno originale del pezzo viene ricostruito durante la

Struttura dell'applicazione

La struttura è tipica delle applicazioni CNC. Il codice G viene letto nell'attività in backgroundPathTask) e qui avviene anche la preelaborazione del percorso. L'interpolazione viene eseguita nel task del busMainTask).

Lettura di file di grandi dimensioni

Per mantenere breve la latenza all'inizio dell'elaborazione del codice G, viene utilizzato un ciclo nell'attività in background. Per semplicità, viene utilizzato un contatore per la condizione di interruzione. A seconda dell'applicazione, del codice G e delle prestazioni del PLC, possono essere utili altre condizioni di interruzione, ad esempio un timer. Il ciclo terminerà prima di raggiungere questa condizione di interruzione quando la coda dei percorsi

// 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 tubazioni nel preelaborazione, anche file G-code molto grandi possono essere letti con requisiti di memoria ridotti e costanti. Le dimensioni della coda sono scelte in modo da consentire una previsione sufficiente dei rispettivi blocchi funzionali

La coda di output di SMC_NCInterpreter è anche la coda di input di SMC_SmoothMerge. Un totale di 128+3 elementi sono riservati alla coda di output. 3 è SMC_OutQueue e 128 rimangono da utilizzare come previsione per SMC_SmoothMerge. SMC_SmoothMerge combina un massimo di 128 brevi segmenti lineari in un'unica spline.

La coda di output di SMC_SmoothMerge è anche la coda di input di SMC_SmoothPath. SMC_SmoothPath richiede almeno 2 elementi, più una riserva di 3 elementi, come previsione. Se le funzioni M si trovano tra due elementi levigati, sono necessari più elementi in base al numero di

La coda di output di SMC_SmoothMerge è anche la coda di input di SMC_Interpolator. Una previsione di 100 elementi è adatta per la maggior parte delle applicazioni. Per ulteriori informazioni, vedere quanto segue: Preelaborazione del percorso e dimensioni della coda.

/// 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;

Preelaborazione di segmenti lineari

Le SMC_SmoothMerge blocco funzionale garantisce una curva di velocità regolare sui numerosi segmenti lineari molto corti. Combina il maggior numero possibile di segmenti lineari consecutivi in un'unica spline, mantenendo le tolleranze specificate. In questo esempio, è consentita una deviazione massima di 0,1 mm in X e Y (PARAMETERS.piMaxDifference).

. Le figure mostrano l'elaborazione passo dopo passo:
  1. Lettura dei brevi segmenti lineari

    _sm_img_example_long_g_code1.png
  2. Combinazione di più segmenti lineari in spline utilizzando SMC_SmoothMerge.

    _sm_img_example_long_g_code2.png
  3. Lisciatura tra le spline con SMC_SmoothPath perché, come visto sopra, le spline non si connettono tangenzialmente tra loro.

    _sm_img_example_long_g_code3.png

Messa in servizio

  1. Crea l'applicazione e scaricala su un controller.

  2. Apri la traccia e scaricala sul controller.

  3. Avviare l'applicazione.

  4. Puoi tracciare l'elaborazione del codice G.