📖 Sottoprogrammi CNC – M98, M99 e G65

Email
WhatsApp

📌 Obiettivo del Capitolo:
 Fornire una guida dettagliata sull’uso dei sottoprogrammi CNC, con focus su M98, M99 e G65. Verranno forniti esempi pratici e commentati, spiegando come scrivere ed eseguire sottoprogrammi per migliorare l’efficienza e ridurre il codice.


🔹 1. Introduzione ai Sottoprogrammi CNC

I sottoprogrammi vengono utilizzati per evitare ripetizioni inutili nel codice e migliorare la leggibilità e l’efficienza di un programma CNC. Sono molto utili quando:

Un’operazione deve essere ripetuta più volte (forature, tasche, contornature)
 ✅ Si vuole standardizzare una sequenza di operazioni (ad esempio, azzeramento, cambio utensile, raffreddamento, ecc.)
 ✅ Si lavora su più pezzi identici senza dover riscrivere il codice principale

📌 Tipologie di sottoprogrammi CNC:

TipoDescrizioneCodice G/M
Sottoprogramma localeDefinito all’interno dello stesso programma principaleM98 e M99
Sottoprogramma esternoSalvato in un file separato, richiamabile da diversi programmiM98
Macro parametricaPermette di passare parametri per eseguire operazioni flessibiliG65

💡 Concetto chiave:
 L’uso corretto dei sottoprogrammi riduce il codice, previene errori e migliora la scalabilità dei programmi CNC.


🔹 2. Uso di M98 e M99 per i Sottoprogrammi Locali

📌 Sintassi Generale di M98:

gcode

CopiaModifica

M98 P#### L##

🔍 Spiegazione dei parametri:

  • P#### → Numero del sottoprogramma da richiamare
  • L## → Numero di ripetizioni del sottoprogramma

📌 Sintassi Generale di M99:

gcode

CopiaModifica

M99

🔍 M99 viene utilizzato per terminare un sottoprogramma e tornare al programma principale.


📌 Esempio 1: Esecuzione di un Sottoprogramma per una Foratura Ripetuta

gcode

CopiaModifica

G21 G17 G90   ; Imposta unità in mm, piano XY e modalità assoluta

M98 P1000 L3  ; Richiama il sottoprogramma O1000 per 3 volte

M30           ; Fine programma principale

O1000         ; Inizio sottoprogramma O1000

G0 X50 Y50    ; Spostamento rapido alla posizione del foro

G81 Z-10 R2 F300  ; Ciclo di foratura

G80           ; Annulla ciclo di foratura

M99           ; Ritorna al programma principale

🔍 Spiegazione:
 1️⃣ M98 P1000 L3 → Richiama il sottoprogramma O1000 per 3 volte
 2️⃣ O1000 → Definisce il sottoprogramma
 3️⃣ M99 → Termina il sottoprogramma e torna al programma principale

💡 Nota:

  • I sottoprogrammi devono essere definiti alla fine del programma principale o in un file separato.
  • Se il parametro L non viene specificato, il sottoprogramma viene eseguito una sola volta.

📌 Esempio 2: Sottoprogramma per il Cambio Utensile Automatico

gcode

CopiaModifica

M98 P2000  ; Richiama il sottoprogramma O2000

M30        ; Fine programma principale

O2000      ; Inizio sottoprogramma O2000

T3 M06     ; Cambio utensile

G43 H3 Z100 ; Attiva compensazione lunghezza utensile

M99        ; Ritorna al programma principale

🔍 Spiegazione:

  • M98 P2000 → Richiama il sottoprogramma O2000
  • T3 M06 → Cambia utensile
  • G43 H3 → Attiva la compensazione della lunghezza utensile
  • M99 → Ritorna al programma principale

💡 Suggerimento:
 Questo sottoprogramma può essere riutilizzato ogni volta che è necessario un cambio utensile, evitando di ripetere codice in ogni nuovo programma.


🔹 3. Uso di G65 per le Macro Parametriche

📌 G65 permette di passare parametri a un sottoprogramma per renderlo più flessibile.

📌 Sintassi Generale di G65:

gcode

CopiaModifica

G65 P#### X… Y… Z… F…

🔍 Spiegazione dei parametri:

  • P#### → Numero del sottoprogramma da richiamare
  • X, Y, Z, F → Parametri passati al sottoprogramma

📌 Esempio 3: Sottoprogramma Parametrico per Forature Multiple

gcode

CopiaModifica

G21 G17 G90

G65 P3000 X50 Y50 Z-10 F300  ; Passa parametri al sottoprogramma

G65 P3000 X100 Y50 Z-15 F250

M30

O3000   ; Inizio sottoprogramma O3000

G0 X#24 Y#25  ; Spostamento alla posizione passata con X e Y

G81 Z#26 R2 F#9  ; Foratura con profondità e feed rate personalizzati

G80      ; Annulla ciclo

M99      ; Ritorna al programma principale

🔍 Spiegazione:
 1️⃣ G65 P3000 X50 Y50 Z-10 F300 → Passa i valori al sottoprogramma O3000
 2️⃣ G0 X#24 Y#25 → Sposta il mandrino alla posizione specificata
 3️⃣ G81 Z#26 R2 F#9 → Esegue la foratura con la profondità e la velocità di avanzamento definite nei parametri

💡 Nota:

  • I parametri vengono assegnati automaticamente a variabili di sistema (#24, #25, ecc.)
  • Questo metodo permette di eseguire lo stesso ciclo con coordinate e velocità diverse senza duplicare il codice

🔹 4. Confronto tra M98/M99 e G65

CaratteristicaM98 / M99G65
Tipo di sottoprogrammaStandardParametrico
Può passare parametri❌ No✅ Sì