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).
Lettura dei brevi segmenti lineari

Combinazione di più segmenti lineari in spline utilizzando
SMC_SmoothMerge.
Lisciatura tra le spline con
SMC_SmoothPathperché, come visto sopra, le spline non si connettono tangenzialmente tra loro.
Messa in servizio
Crea l'applicazione e scaricala su un controller.
Apri la traccia e scaricala sul controller.
Avviare l'applicazione.
Puoi tracciare l'elaborazione del codice G.