CNC Path Analyzer

Sottoprogrammi M98/M99: scrivere una forma ripetuta una sola volta e richiamarla più volte

Spiega con un esempio la struttura della chiamata di un sottoprogramma con M98 e del ritorno con M99, il numero P e il conteggio di ripetizione L, come lavorare la stessa cava in più posizioni con un sottoprogramma incrementale e i tipi di errore di chiamata.

Perché usare i sottoprogrammi?

È comune lavorare la stessa cava in cinque posizioni oppure lo stesso profilo più volte a profondità diverse. Copiare e incollare ogni volta gli stessi blocchi allunga il programma e correggere una quota significa correggerla in tutti e cinque i punti. Dimenticarne anche uno produce un pezzo scartato, con una delle cinque lavorazioni di dimensione diversa.

Un sottoprogramma separa la parte ripetuta in un programma autonomo, che il programma principale richiama quando necessario. La forma viene gestita in un solo punto e il programma principale deve indicare soltanto "dove e quante volte".

Chiamata e ritorno

ComandoSignificatoEsempio
M98 P_Chiama il programma con numero P (numero O)M98 P3100
L_ o cifre iniziali di PNumero di ripetizioniL3 → 3 volte
M99Ritorna alla riga successiva al blocco di chiamataUltima riga di O3100
M99 P_Ritorna, ma salta al numero di sequenza specificatoUsato per strutture di diramazione e ciclo

Esempio: tre cave con un sottoprogramma incrementale

Il sottoprogramma O3100 è scritto in modalità incrementale G91. Dalla posizione attuale scende di 6 mm, lavora una cava di 30 mm lungo X, risale di 6 mm e si sposta di 10 mm lungo Y tornando alla X iniziale. La posizione finale diventa l'inizio della ripetizione successiva; ripetendo semplicemente tre volte la stessa chiamata si ottengono quindi tre cave distanti 10 mm.

Chiamata del sottoprogramma O3100 tre volte con L3 per lavorare tre cave distanti 10 mm

O3007
T1 M6
G21 G90 G17 G94
G54
S3000 M03
G00 X0. Y0. Z5.
M98 P3100 L3
G90 G00 Z50.
M30
O3100
G91 G01 Z-6. F100
X30. F300
G00 Z6.
X-30. Y10.
M99
Chiamata del sottoprogramma O3100 tre volte con L3 per lavorare tre cave distanti 10 mm — XY percorsoXY
Il tratteggio azzurro indica il rapido G00; la linea arancione indica il movimento di taglio. Gli archi sono curve statiche calcolate.

La figura sopra è il risultato dell’analisi di questo programma con CNC Path Analyzer (rapido 8 segmenti, taglio lineare 6 segmenti).

Regole per il programma principale

  • Ripristino della modalità: il sottoprogramma termina in G91, quindi subito dopo il ritorno occorre comandare nuovamente G90 nel programma principale. Nell'esempio lo fa G90 G00 Z50.. Scrivere soltanto Z50. senza G90 viene interpretato come "50 mm sopra la posizione attuale", non come "quota 50". Qui è un movimento verso l'alto e comporta pochi rischi, ma nel blocco di avvicinamento dell'utensile successivo potrebbe causare una collisione.
  • Posizione iniziale: un sottoprogramma incrementale produce risultati diversi in base alla posizione al momento della chiamata. Comandare chiaramente la posizione iniziale in coordinate assolute subito prima della chiamata.
  • Stato delle compensazioni e dei cicli: una chiamata effettuata con compensazione del raggio utensile o ciclo fisso attivo può far comportare in modo inatteso i movimenti del sottoprogramma. Predisporre deliberatamente lo stato modale prima e dopo la chiamata.
  • Posizione di M30: quando il sottoprogramma si trova nello stesso file, collocarlo dopo M30 del programma principale. Il programma principale termina a M30, evitando così l'esecuzione accidentale del sottoprogramma.

Numero di ripetizioni e calcolo del tempo ciclo

Una esecuzione del sottoprogramma taglia 6 mm in Z (F100) e 30 mm in X (F300): 3.6 secondi e 6 secondi, quindi 9.6 secondi per esecuzione e circa 29 secondi di taglio effettivo per tre esecuzioni. Cambiando il numero di ripetizioni in L5 si modifica un solo carattere del programma principale e si ottengono cinque cave e circa 48 secondi di taglio. Ciò mostra come una struttura ripetitiva semplifichi sia le modifiche del programma sia le stime dei tempi. Il metodo di calcolo è descritto più dettagliatamente in Calcolo del tempo di lavorazione.

Tipi di errore di chiamata

Nello strumento, i programmi richiamati contenuti in file separati possono essere caricati insieme al programma principale e il numero P viene associato al numero O all'interno del file, non al nome del file.

ErroreCausaCosa mostra CNC Path Analyzer
Programma richiamato non trovatoNon esiste un programma con numero O corrispondente a PLa riga di chiamata e il numero non trovato
Numero O duplicatoDue o più programmi hanno lo stesso numeroUn avviso indica che non è possibile scegliere quale usare
M99 mancanteIl sottoprogramma non termina e prosegue nel programma successivoUn avviso di ritorno mancante
Chiamate infiniteI programmi continuano a richiamarsi a vicenda oppure un programma richiama se stessoIl calcolo si arresta al limite di ricorsione o di esecuzione

Domande frequenti

Un sottoprogramma può chiamare un altro sottoprogramma?
Sì. Si parla di annidamento e il numero di livelli consentiti (solitamente quattro o più) varia in base al controllo. Più profondo è l'annidamento, più difficile è seguire lo stato modale; si consiglia quindi di non superare due livelli.
Qual è la differenza tra M98 e una chiamata macro G65?
G65 è una chiamata macro che passa argomenti (A, B, C…) come variabili. Serve a richiamare la stessa forma con dimensioni diverse, mentre M98 ripete la stessa operazione senza argomenti.

Passaggi successivi

Controlla il percorso in CNC Path Analyzer