Implementazione di un blocco funzionale di preelaborazione del percorso
Vedi il CNC14_PathPreprocessing.project progetto di esempio nella directory di installazione di CODESYS sotto ..\CODESYS SoftMotion\Examples.
Il progetto di esempio mostra come implementare un nuovo blocco funzione di preelaborazione del percorso.
preelaborazione del percorso viene generalmente utilizzata per modificare il percorso letto dal codice G. Ciò consente di implementare funzioni come la correzione del raggio dell'utensile o la levigatura degli angoli. Tuttavia, è anche possibile integrare funzioni specifiche per una particolare macchina o applicazione come blocco funzionale di preelaborazione del percorso
Per ulteriori informazioni sulla preelaborazione dei percorsi, vedere quanto segue: Preelaborazione del percorso e dimensioni della coda.
Per un esempio di come utilizzare un blocco funzione di preelaborazione del percorso, vedere quanto segue: Esempio CNC 03: esecuzione della preelaborazione del percorso in linea.
Limitazione del cambio di tangente
L'esempio mostra un'applicazione di taglio 2D. È necessario utilizzare un coltello per tagliare lungo un percorso definito dal codice G. Il SMC_TRAFO_GantryCutter2 la trasformazione viene utilizzata per determinare l'angolo del coltello in base alla tangente corrente del percorso.
La sfida è che il coltello non deve ruotare troppo velocemente, altrimenti il taglio non sarà netto. La limitazione della velocità angolare del coltello viene risolta nel progetto di esempio mediante il blocco funzionale Path-Preprocessing appena creato LimitTangentVelocity. Cambia la velocità di avanzamento sul percorso in modo che la velocità di variazione della tangente non superi un valore massimo configurabile
Il codice G è un semplice rettangolo con angoli smussati.
![]() |
La traccia mostra il risultato dell'esecuzione: la velocità dell'asse C, che corrisponde alla velocità di rotazione del coltello, viene visualizzata in arancione. È limitato a 45°/s come specificato
![]() |
Struttura dell'applicazione
La struttura è tipica delle applicazioni CNC. Il codice G viene letto nell'attività in background e qui avviene anche la preelaborazione del percorso. L'interpolazione viene eseguita nel
Le LimitTangentVelocity il blocco funzione mostra i passaggi e gli stati necessari per un blocco funzionale di preelaborazione del percorso.
Il principio di base è che il blocco funzione legge, elabora e quindi scrive gli elementi del percorso (tipo SMC_GEOINFO) dalla coda di input (poqDataIn) alla coda di output (poqDataOut). Gli elementi vengono rimossi dalla coda di input
La logica per modificare la velocità di avanzamento si trova nelle righe 102-138. La funzione ausiliaria ComputeMaxCurvature calcola la curvatura massima che può verificarsi su un determinato elemento del percorso.
// Our velocity limitation comes here. This modifies an element from the // input queue and copies the modified element to the output queue. // Finally, the element is removed from the input queue m_geo := pgeo^; // Copy the element // Note: the feature flags set in the G-Code with G38/G39 can be queried // by reading pgo^.dwFeatureFlags, like this: IF (SHR(m_geo.dwFeatureFlags, featureFlag) AND 1) = 1 THEN // feature is turned on ok := ComputeMaxCurvature(m_geo, kappa=> kappa_max); IF NOT ok THEN // Curvature cannot be computed m_state := STATE_ERROR; ErrorID := SMC_INVALID_PARAMETER; OnExit(); RETURN; END_IF // Compute maximum allowed path velocity based on maximum curvature // and maximum allowed angular velocity IF kappa_max = 0 THEN // No curvature, no limitation necessary vel := m_geo.dVel; ELSE vel := m_maxAngularVelocity_rad / kappa_max; END_IF IF velMin < 0 OR vel < velMin THEN velMin := vel; END_IF // Set new maximum velocity for the element m_geo.dVel := MIN(m_geo.dVel, vel); ELSE // feature is turned off END_IF
Messa in servizio
Crea l'applicazione e scaricala su un controller.
Avviare l'applicazione.
Apri la traccia e scaricala sul controller.
Scrivi il valore
TRUEalle variabiliPath.bExecuteePLC_PRG.bStart.È possibile tenere traccia dell'elaborazione del codice G nella traccia.

