Sei sulla pagina 1di 368

D.

ELECTRON
dal 1977 Alta Tecnologia
per la Macchina Utensile

CNC
Z32

MANUALE DI PROGRAMMAZIONE

Documento M96
C7 - 28.12.10

Questo manuale contiene informazioni destinate esclusivamente all’utente di prodotti D.Electron per consentirgli l’uso corretto delle
apparecchiature fornite. Nessuna parte di questo manuale può essere duplicata o fornita a terzi per uso diverso da quello indicato.
Le informazioni qui contenute sono state accuratamente controllate perché risultino esatte ed affidabili, ma la D.Electron non si assume
alcuna responsabilità per possibili inesattezze. La D.Electron si riserva anche di fare tutti i cambiamenti che essa riterrà opportuni per
migliorare le prestazioni o l’affidabilità dei suoi prodotti.

D. Electron - Via R. Giuliani 140 - 50141 Firenze ITALY internet: www.delectron.it


Tel ++39 055 416927 r.a. Fax ++39 055 434220 e-mail: delectron@delectron.it
Indice CNC Z32 Programmazione

INDICE

1. ORGANIZZAZIONE E STRUTTURA DEI FILES................................................................. 1

1.1 INTRODUZIONE ..............................................................................................................................................................1

1.2 GENERALITÀ ...................................................................................................................................................................1


1.2.1 Organizzazione dei files in memoria CMOS di Z32.....................................................................................................2
1.2.2 Organizzazione dei files su disco (hard-disk) ...............................................................................................................3
1.2.3 Programma-pezzo.........................................................................................................................................................4
1.2.4 Blocco opzionale ..........................................................................................................................................................5
1.2.5 Blocco doppio barrato ..................................................................................................................................................6
1.2.6 Sezionamento di programma ........................................................................................................................................6

1.3 RIGHE ISO.........................................................................................................................................................................8


1.3.1 Concatenamento di righe ..............................................................................................................................................9
1.3.2 Numero di riga..............................................................................................................................................................9
1.3.3 Istruzioni elementari, indirizzi, valori numerici..........................................................................................................10
1.3.4 Righe di commento.....................................................................................................................................................12

2. FUNZIONI PREPARATORIE G ......................................................................................... 13

2.1 FUNZIONI G ....................................................................................................................................................................13


2.1.1 G0 - posizionamento in rapido ...................................................................................................................................13
2.1.2 G1 - moto rettilineo in lavoro .....................................................................................................................................14
2.1.3 G2 - arco di cerchio orario..........................................................................................................................................15
2.1.4 G3 - arco di cerchio antiorario....................................................................................................................................15
2.1.5 G4 - sosta....................................................................................................................................................................15
2.1.6 G6.2 - gestione delle NURBS.....................................................................................................................................16
2.1.7 G10 - posizionamento grossolano veloce (obsoleta) ..................................................................................................17
2.1.8 G12 - coordinamento terzo asse .................................................................................................................................18
2.1.9 G13 - annulla coordinamento terzo asse.....................................................................................................................20
2.1.10 G16 - ridirezione nomi assi.....................................................................................................................................20
2.1.11 G25 - terna di assi di lavoro....................................................................................................................................21
2.1.12 G26 - fine sottoprogramma.....................................................................................................................................23
2.1.13 G27 - ciclo fisso e sottoprogramma permanente.....................................................................................................23
2.1.14 G28 - attivazione asse.............................................................................................................................................23
2.1.15 G29 - disattivazione asse ........................................................................................................................................25
2.1.16 G30 - G31 - programmazione incrementale del cerchio .........................................................................................26
2.1.17 G33 - filettatura ......................................................................................................................................................27
2.1.18 G34 - G35 - filettatura a passo variabile.................................................................................................................28
2.1.19 G36 - gestione numero progressivo ........................................................................................................................29
2.1.20 G37 - commutazione files locali/globali.................................................................................................................31
2.1.21 G38 - riattivazione cambio utensile ........................................................................................................................32
2.1.22 G39 - sospensione cambio utensile.........................................................................................................................32
2.1.23 G40 - fine correzione raggio...................................................................................................................................33
2.1.24 G41 - correzione raggio con utensile a sinistra.......................................................................................................33
2.1.25 G42 - correzione raggio con utensile a destra.........................................................................................................33
2.1.26 G43 - correzione lunghezza utensile positiva .........................................................................................................33
2.1.27 G44 - correzione lunghezza utensile negativa ........................................................................................................34
2.1.28 G45 - sospensione correzione lunghezza................................................................................................................34
2.1.29 G53 - sospensione correzioni origini e lunghezze ..................................................................................................34
2.1.30 G54 - attivazione correzione origini e lunghezze ...................................................................................................35
2.1.31 G55 - disattivazione specularità..............................................................................................................................35

D. ELECTRON i
CNC Z32 Programmazione Indice

2.1.32 G56 - attivazione specularità..................................................................................................................................36


2.1.33 G61 - movimento di misura....................................................................................................................................36
2.1.34 G62 - movimento con stop da logica......................................................................................................................36
2.1.35 G63 - maschiatura rigida ........................................................................................................................................36
2.1.36 G70 - G71 - programmazione in pollici/millimetri.................................................................................................37
2.1.37 G80 - annulla maschiatura in atto...........................................................................................................................41
2.1.38 G84 - maschiatura in atto .......................................................................................................................................41
2.1.39 G90 - programmazione quote assi assoluta ............................................................................................................41
2.1.40 G91 - programmazione quote assi incrementale.....................................................................................................41
2.1.41 G93 - programmazione feed come inverso del tempo ............................................................................................43
2.1.42 G94 - feed in mm/1'................................................................................................................................................44
2.1.43 G95 - feed in mm/giro ............................................................................................................................................44
2.1.44 G96 - mandrino in metri/min (velocità di taglio costante)......................................................................................45
2.1.45 G97 - mandrino in giri/min.....................................................................................................................................46
2.1.46 G98 - interpolazione lineare speciale (obsoleta) ....................................................................................................46
2.1.47 G99 - annulla G98 (obsoleta) .................................................................................................................................46
2.1.48 G100 - comunicazione a logica ..............................................................................................................................46
2.1.49 G101 - comunicazione da logica ............................................................................................................................47
2.1.50 G102 - salva stato...................................................................................................................................................47
2.1.51 G103 - ripristina stato.............................................................................................................................................47
2.1.52 G104 - lettura dell'utensile sul mandrino................................................................................................................49
2.1.53 G105 - acquisizione quote assi...............................................................................................................................49
2.1.54 G106 - programmazione radiale.............................................................................................................................50
2.1.55 G107 - programmazione diametrale .......................................................................................................................50
2.1.56 G108 - limitazione accelerazione e velocità...........................................................................................................50
2.1.57 G109 - personalizzazione correzione raggio ..........................................................................................................51
2.1.58 G110 - macrofunzioni per svuotatura.....................................................................................................................54
2.1.59 G111 - funzioni speciali di copiatura .....................................................................................................................62
2.1.60 G112 - sincronizzazione con logica ML.................................................................................................................62
2.1.61 G113H - G113L - interpolazione a 2 millisecondi .................................................................................................63
2.1.62 G113P - G113F - G113X scelta tra moto proporzionale, feed-forward, MODO X ...............................................63
2.1.63 G113C - G113N - correzioni traiettorie per moti morbidi .....................................................................................64
2.1.64 G113A - G113B - G113Z - arrotondamento ..........................................................................................................64
2.1.65 G113V - G113S - per gestione avanzata della velocità..........................................................................................65
2.1.66 G114 - attivazione del calcolo della velocità .........................................................................................................65
2.1.67 G115 - disattivazione del calcolo della velocità.....................................................................................................67
2.1.68 G116 - lavorazioni su piano inclinato ....................................................................................................................67
2.1.69 G117 - RTCP per teste rotative ..............................................................................................................................69
2.1.70 G118 - RTCP per tavola girevole...........................................................................................................................69
2.1.71 G118 HR1 - RTCP per tavola girevole con movimenti combinati lineari/rotativi .................................................69
2.1.72 G119 - per semiautomatico e jog con allarmi rilevatori .........................................................................................70
2.1.73 G120 - RTCP per tavola girevole - coordinate del centro tavola ...........................................................................70
2.1.74 G121 - fattori di scala differenziati per zone..........................................................................................................70
2.1.75 G122 - RTCP compensazione errori montaggio pezzo su tavole tilting.................................................................71
2.1.76 G123 - limitazione del campo di lavoro .................................................................................................................71
2.1.77 G124 - attivazione volantini degli assi rotativi in G117 .........................................................................................74
2.1.78 G125 - G125 KA1 - G125 KA101 - taratura assi per alta velocità ........................................................................76
2.1.79 G126 - lavorazione pezzi in movimento.................................................................................................................76
2.1.80 G127 - disattiva lavorazione pezzi in movimento ..................................................................................................76
2.1.81 G128 - G129 - G130 funzioni per lock di processo ...............................................................................................76
2.1.82 G131 - velocità costante sulla punta utensile .........................................................................................................77
2.1.83 G132 KA1 - lavorazione cammes globoidali .........................................................................................................78
2.1.84 G132 KA2 - lavorazione cammes cilindriche.........................................................................................................79
2.1.85 G132 KA3 - lavorazione cammes polari ................................................................................................................81
2.1.86 G133 KA0 ÷ KA5 - per gestione doppio mandrino e mandrini tavola...................................................................83
2.1.87 G134 KA0 - (macchina tipo fresa) e G134 KA1/KA2 - (macchina tipo tornio) ....................................................83
2.1.88 G135 I1 - G135 J1 - gestioni avanzate dell’alta velocità........................................................................................85

ii D. ELECTRON
Indice CNC Z32 Programmazione

2.1.89 G136 - micrososta...................................................................................................................................................86


2.1.90 G141 - G140 - correzione tridimensionale raggio utensile .....................................................................................87
2.1.91 G142 - G143 - allontanamento utensile dal pezzo (RETRACT) ............................................................................89
2.1.92 G144 - sospensione part-program e attivazione di JOG o volantini .......................................................................91
2.1.93 G145 - stop and go .................................................................................................................................................92
2.1.94 G146 - gestione del controllo altezza .....................................................................................................................92
2.1.95 G147 - G148 - controllo della velocità in movimento ............................................................................................92
2.1.96 G149 - gestione assi cilindrici ................................................................................................................................96
2.1.97 G150 - impostazione correzione raggio per torni ...................................................................................................98
2.1.98 G151 - posizionamento grossolano del mandrino.................................................................................................100
2.1.99 G152 KA1 - G153 KA1 - salvataggio/ripristino origini attive .............................................................................100
2.1.100 G154 - ricerca blocco per lunghezza ....................................................................................................................100
2.1.101 G155 - funzionalità “raster”..................................................................................................................................101
2.1.102 G156 - gestione visualizzazione grafica tornio.....................................................................................................104
2.1.103 G157 HX - per collegamento tra part-program e fast-codos.................................................................................105
2.1.104 G158 - G159 - forzatura asse ciclico/non ciclico..................................................................................................105
2.1.105 G200 HX0 / G200 HX1 - impostazione modo DNC ............................................................................................106
2.1.106 G200 HX2 / G200 HX3 - disinserimento calcio all’inversione ............................................................................106
2.1.107 G200 HX4 / G200 HX5 - programmazione del cerchio completo .......................................................................106
2.1.108 G200 HX6 / G200 HX7 - modifica velocità di ricerca lenta in G61 ....................................................................107
2.1.109 G200 HX8 / G200 HX9 - maschiatura rigida senza inversione mandrino............................................................107
2.1.110 G200 HX10 - per abilitare la G113X KA1 a tempo. ............................................................................................108
2.1.111 G200 HX11 / G200 HX12 - modalità sosta G4 precisa sotto G113X ..................................................................109
2.1.112 G200 HX13 / G200 HX14 - per compatibilità all’indietro con Z16.....................................................................109
2.1.113 G201 - analisi della risposta dinamica della struttura ...........................................................................................109
2.1.114 G241 - G242 - posizionamento al punto iniziale di correzione raggio futura.......................................................110
2.1.115 G800 - G801 - G802 - gestione cicli fissi e macro da disco .................................................................................111
2.1.116 G880÷G899 - G900÷G929 - gestione cicli fissi e macro da disco .......................................................................117

3. FUNZIONI M - FEED - SPEED - ORIGINI - PARAMETRI ............................................... 121

3.1 FUNZIONI AUSILIARIE 'M'.......................................................................................................................................121


3.1.1 M 'ISO'......................................................................................................................................................................121
3.1.2 M 'speciali'................................................................................................................................................................122

3.2 FUNZIONI AUSILIARIE MA, MB, MC.....................................................................................................................123

3.3 FEED ...............................................................................................................................................................................123

3.4 SPEED .............................................................................................................................................................................124

3.5 QUOTE ASSI..................................................................................................................................................................124

3.6 ASSI CON NOME BILETTERALE (CON INDICE NUMERICO) .........................................................................125

3.7 ORIGINI E LUNGHEZZE ............................................................................................................................................126


3.7.1 Origini ......................................................................................................................................................................127
3.7.2 Offset delle origini....................................................................................................................................................128
3.7.3 Lunghezza utensile ...................................................................................................................................................129
3.7.4 Gestione origini e lunghezza.....................................................................................................................................129
3.7.5 DDL e DDR per variazione Lunghezza e Raggio utensile .......................................................................................130
3.7.6 DLX e DLZ per variazione Lunghezze utensile (Tornio).........................................................................................130

3.8 PARAMETRI .................................................................................................................................................................131


3.8.1 Nomi assi ..................................................................................................................................................................132
3.8.2 Parametri di sistema..................................................................................................................................................132

D. ELECTRON iii
CNC Z32 Programmazione Indice

3.8.3 Parametri utente .......................................................................................................................................................133


3.8.4 Parametri con indice.................................................................................................................................................134
3.8.5 Parametri triletterali .................................................................................................................................................136
3.8.6 Uso dei parametri .....................................................................................................................................................137
3.8.7 Programmazione di parametri con espressioni .........................................................................................................137
3.8.8 Parametri in memoria permanente............................................................................................................................139
3.8.9 Parametri #, #A ÷ #Q e ##[33] in tempo reale .........................................................................................................140

3.9 FUNZIONI TRILETTERALI ABS, TAN, NEI, INT, RST ........................................................................................140


3.9.1 Funzione valore assoluto ABS(espressione) ............................................................................................................140
3.9.2 Funzione tangente TAN(espressione) ......................................................................................................................141
3.9.3 Funzioni intero troncato INT(espressione) e intero arrotondato NEI(espressione)..................................................141
3.9.4 Funzione lettura stato RST(espressione) ..................................................................................................................142

4. UTENSILI - ESECUZIONE RIGA ISO ............................................................................. 147

4.1 GESTIONE DEGLI UTENSILI ('T', 'TA', 'TB')........................................................................................................147


4.1.1 Gestione random ......................................................................................................................................................149
4.1.2 Utensili multiuso e gestione random ........................................................................................................................151
4.1.3 Gestione vita utensile ...............................................................................................................................................152
4.1.4 Gestione delle famiglie utensili ................................................................................................................................153

4.2 SEQUENZA DI ESECUZIONE DI UNA RIGA ISO..................................................................................................155

5. RIGHE EVOLUTE - SALTI - CONDIZIONAMENTI - READ/WRITE ................................ 157

5.1 RIGHE EVOLUTE ........................................................................................................................................................157


5.1.1 Definizione di parametri con calcolo di espressioni.................................................................................................157
5.1.2 Conversione cartesiane/polari e viceversa................................................................................................................158

5.2 SALTI..............................................................................................................................................................................158
5.2.1 Salto a una riga senza ritorno ...................................................................................................................................158
5.2.2 Salto a una serie di righe con ritorno........................................................................................................................159
5.2.3 Salti a sottoprogrammi .............................................................................................................................................162
5.2.4 Parametrizzazione dei salti a riga e a sottoprogramma.............................................................................................163
5.2.5 !GOP..-N..! e !GOP..-N..-N..! ..................................................................................................................................164
5.2.6 Campo G26, fine sottoprogramma per DNC............................................................................................................164

5.3 CONDIZIONAMENTI ..................................................................................................................................................165

5.4 LETTURA E SCRITTURA IN MEMORIA PERMANENTE ..................................................................................166


5.4.1 Letture e scritture multiple .......................................................................................................................................168
5.4.2 Origine attiva............................................................................................................................................................168
5.4.3 Posto utensile ...........................................................................................................................................................168
5.4.4 Lettura e scrittura in ricerca blocco ..........................................................................................................................169
5.4.5 Istruzioni :C e :S (estensioni delle istruzioni :R e :W) .............................................................................................169

5.5 ALTRI .............................................................................................................................................................................171


5.5.1 Funzione :L - per caricare/scaricare files su disco....................................................................................................171
5.5.2 :L254 - esecuzione multipla in DNC........................................................................................................................173
5.5.3 :P, :D - stampa da part-program su video di stringhe e valori parametri ..................................................................176
5.5.4 :F - scrittura stringa su file........................................................................................................................................178
5.5.5 File documentazione (“DOC”) per ricerca blocco con blocco opzionale.................................................................179
5.5.6 Istruzione INPUT - Introduzione parametri di part-program da tastiera ..................................................................182

iv D. ELECTRON
Indice CNC Z32 Programmazione

6. FUNZIONI DI PROGRAMMAZIONE STRUTTURATA .................................................... 185

6.1 PROGRAMMAZIONE STRUTTURATA...................................................................................................................185


6.1.1 Struttura IF - ELSEIF - ELSE - END IF...................................................................................................................185
6.1.2 Struttura DO - EXIT DO - LOOP.............................................................................................................................189
6.1.3 Struttura GOTO LN..................................................................................................................................................191
6.1.4 Struttura DEFINE - END DEFINE ..........................................................................................................................192
6.1.5 Istruzione OUT.........................................................................................................................................................193
6.1.6 Istruzione WAIT.......................................................................................................................................................194

6.2 Subroutines temporanee ................................................................................................................................................195

7. CICLI FISSI E MACRO DI Z32 ........................................................................................ 199

7.1 CICLI FISSI DI Z32 (G800) ..........................................................................................................................................199


7.1.1 G800K1: FORATURA SEMPLICE.........................................................................................................................201
7.1.2 G800K2: FORATURA PROFONDA CON ROTTURA TRUCIOLO ....................................................................202
7.1.3 G800K3: FORATURA PROFONDA CON SCARICO TRUCIOLO ......................................................................203
7.1.4 G800K4: MASCHIATURA .....................................................................................................................................204
7.1.5 G800K5: ALESATURA...........................................................................................................................................205
7.1.6 G800K6: BARENATURA .......................................................................................................................................206
7.1.7 G800K7: FORATURA PROFONDA MISTA CON ROTTURA E SCARICO TRUCIOLO..................................207
7.1.8 G800K8: FORATURA DI DUE PARETI DISTANZIATE.....................................................................................208
7.1.9 G800K9: FORATURA DI TRE ZONE DIFFERENZIATE ....................................................................................209
7.1.10 G800K10: FRESA-ALESATURA INTERNA.....................................................................................................211
7.1.11 G800K11: FRESA-ALESATURA ESTERNA ....................................................................................................212

7.2 MACRO DI POSIZIONAMENTO DI Z32 (G801) .....................................................................................................213


7.2.1 G801K1: LINEA DATI PUNTO INIZIALE ED INCREMENTI............................................................................215
7.2.2 G801K2: LINEA DATI PUNTO INIZIALE, ANGOLO E DISTANZA FRA I PUNTI .........................................215
7.2.3 G801K3: LINEA DATI PUNTO INIZIALE E PUNTO FINALE...........................................................................216
7.2.4 G801K4: RETICOLO DATI INCREMENTI SU RIGA E SU COLONNA ............................................................217
7.2.5 G801K5: RETICOLO DATI PUNTO INIZIALE, INCREMENTI ED ANGOLI ...................................................217
7.2.6 G801K6: RETICOLO DATI PUNTI INIZIALI E FINALI DI RIGA E DI COLONNA ........................................218
7.2.7 G801K7: CIRCONFERENZA DATI ANGOLO INIZIALE E INCREMENTO TOTALE.....................................219
7.2.8 G801K8: CIRCONFERENZA DATI ANGOLO INIZIALE E DISTANZA ANGOLARE.....................................220
7.2.9 G801K9: CIRCONFERENZA DATI L'ANGOLO INIZIALE E L'ANGOLO FINALE .........................................221
7.2.10 G801K10: RETTANGOLO DATO IL CENTRO E IL PASSO ..........................................................................222
7.2.11 G801K11: RETTANGOLO DATO IL CENTRO ED I LATI .............................................................................222
7.2.12 G801K12: RETTANGOLO DATO UNO SPIGOLO E IL PASSO.....................................................................223
7.2.13 G801K13: RETTANGOLO DATO UNO SPIGOLO ED I LATI........................................................................224

7.3 MACRO DI LAVORAZIONE DI Z32 (G802).............................................................................................................225


7.3.1 G802K1: SGROSSATURA DI CAVE CIRCOLARI ..............................................................................................227
7.3.2 G802K2: SGROSSATURA DI CAVE RETTANGOLARI NOTO IL CENTRO CAVA .......................................229
7.3.3 G802K3: SGROSSATURA DI CAVE RETTANGOLARI NOTO UNO SPIGOLO..............................................231
7.3.4 G802K4: FINITURA DI CAVE CIRCOLARI ........................................................................................................233
7.3.5 G802K5: FINITURA DI CAVE RETTANGOLARI NOTO IL CENTRO CAVA .................................................235
7.3.6 G802K6: FINITURA DI CAVE RETTANGOLARI NOTO UNO SPIGOLO........................................................237
7.3.7 G802K7: ASOLA RETTILINEA.............................................................................................................................239
7.3.8 G802K8: ASOLA CIRCOLARE NOTO IL CENTRO ASOLA ..............................................................................241
7.3.9 G802K9: ASOLA CIRCOLARE NOTO IL CENTRO DI CURVATURA .............................................................243
7.3.10 G802K10: FILETTATURA DI UN FORO CON FRESA MONOTAGLIENTE ................................................245
7.3.11 G802K11: FILETTATURA DI UN FORO CON FRESA A PETTINE ..............................................................246
7.3.12 G802K12: FILETTATURA DI UN PERNO CON FRESA MONOTAGLIENTE..............................................247
7.3.13 G802K13: FILETTATURA DI UN PERNO CON FRESA A PETTINE............................................................248

D. ELECTRON v
CNC Z32 Programmazione Indice

7.3.14 G802K14: SPIANATURA...................................................................................................................................249

7.4 ESEMPI ..........................................................................................................................................................................250

8. CICLI FISSI DEL COSTRUTTORE E DELL’UTENTE E SOTTOPROGRAMMI


PERMANENTI.............................................................................................................................. 255

8.1 CICLI FISSI ...................................................................................................................................................................255


8.1.1 Esempio di Foratura .................................................................................................................................................256
8.1.2 Esempio di Foratura con sosta..................................................................................................................................257
8.1.3 Esempio di Foratura profonda..................................................................................................................................257
8.1.4 Esempio di Maschiatura ...........................................................................................................................................258
8.1.5 Esempio di Alesatura con ritorno in lavoro..............................................................................................................258
8.1.6 Esempio di Alesatura con ritorno a mandrino fermo................................................................................................258
8.1.7 Esempio di Barenatura con ritorno a mandrino orientato.........................................................................................259
8.1.8 Esempio di Fresalesatura interna..............................................................................................................................259
8.1.9 Esempio di Foratura con entrata/uscita in lavoro e pausa a fine foro .......................................................................260

8.2 SOTTOPROGRAMMI PERMANENTI .....................................................................................................................260


8.2.1 Esempio 1 - Riga dentata con due tipi di denti.........................................................................................................262
8.2.2 Esempio 2 - Programma in XY per macchina a coordinate polari ...........................................................................263

9. FORMULE PERMANENTI ............................................................................................... 265

9.1 GENERALITÀ ...............................................................................................................................................................265


9.1.1 Contenuto delle formule permanenti ........................................................................................................................267
9.1.2 Sintassi della riga ISO con formule permanenti .......................................................................................................267
9.1.3 Attivazione disattivazione variazione di formule permanenti ..................................................................................268
9.1.4 Raccordi iniziali e finali ...........................................................................................................................................268
9.1.5 Compilazione delle formule permanenti ..................................................................................................................271
9.1.6 Tempi di esecuzione.................................................................................................................................................271
9.1.7 Controllo dei fine corsa ............................................................................................................................................272
9.1.8 Controllo delle velocità massime .............................................................................................................................273
9.1.9 Formule attive e G53................................................................................................................................................273
9.1.10 Applicazioni .........................................................................................................................................................274

10. GEOMETRIA................................................................................................................. 277

10.1 GENERALITÀ ...........................................................................................................................................................277

10.2 PROFILI GEOMETRICI NEL PIANO...................................................................................................................277


10.2.1 Definizioni geometriche .......................................................................................................................................277
10.2.2 Elementi che individuano un profilo ....................................................................................................................278
10.2.3 Modi di programmazione dei tratti di profilo.......................................................................................................281
10.2.4 Rette chiuse ..........................................................................................................................................................283
10.2.5 Rette aperte ..........................................................................................................................................................284
10.2.6 Cerchi chiusi.........................................................................................................................................................285
10.2.7 Cerchi aperti .........................................................................................................................................................289
10.2.8 Combinazioni retta - cerchio ................................................................................................................................290
10.2.9 Programmazione del cerchio completo ................................................................................................................292

10.3 RACCORDI E SMUSSI ............................................................................................................................................294


10.3.1 Smussi automatici.................................................................................................................................................294
10.3.2 Raccordi automatici..............................................................................................................................................296

vi D. ELECTRON
Indice CNC Z32 Programmazione

10.3.3 Campo di esistenza di raccordi .............................................................................................................................306

10.4 ESEMPI DI PROGRAMMAZIONE ........................................................................................................................307


10.4.1 Piastra sagomata 1 ................................................................................................................................................307
10.4.2 Piastra sagomata 2 ................................................................................................................................................309
10.4.3 Elica a tre pale ......................................................................................................................................................311

10.5 PROFILI SU TRE ASSI ............................................................................................................................................312

10.6 GESTIONE DELLA VELOCITÀ.............................................................................................................................312


10.6.1 Accelerazione iniziale...........................................................................................................................................312
10.6.2 Velocità centrale costante .....................................................................................................................................312
10.6.3 Decelerazione finale .............................................................................................................................................313
10.6.4 Velocità con G12 attiva ........................................................................................................................................313

11. ROTAZIONE, TRASLAZIONE, SPECULARITÀ, FATTORE DI SCALA ...................... 315

11.1 TRASFORMAZIONE DELLE QUOTE PROGRAMMATE ................................................................................315

11.2 ROTAZIONE..............................................................................................................................................................316
11.2.1 Moti assi e rotazione.............................................................................................................................................317

11.3 TRASLAZIONE .........................................................................................................................................................318


11.3.1 Moti assi e traslazione ..........................................................................................................................................318

11.4 SPECULARITÀ .........................................................................................................................................................319


11.4.1 Moti assi e specularità ..........................................................................................................................................319

11.5 FATTORE DI SCALA...............................................................................................................................................320

11.6 PARAMETRI CORRETTIVI DELLE QUOTE .....................................................................................................320

12. CORREZIONE RAGGIO UTENSILE ............................................................................ 323

12.1 CORREZIONE RAGGIO UTENSILE.....................................................................................................................323


12.1.1 Attacco al profilo ..................................................................................................................................................328
12.1.2 Distacco dal profilo ..............................................................................................................................................331
12.1.3 Gestione della velocità..........................................................................................................................................332
12.1.4 Raggio zero o negativo .........................................................................................................................................332
12.1.5 Blocco singolo ......................................................................................................................................................333
12.1.6 Esecuzione di profili chiusi in correzione raggio..................................................................................................333

13. PRESTAZIONI SPECIALI............................................................................................. 335

13.1 TASTATORE DI MISURA - G61.............................................................................................................................335


13.1.1 Ciclo di misura G61 con un solo contatto.............................................................................................................337
13.1.2 G61 KA1 ciclo di misura su piani rototraslati ......................................................................................................338
13.1.3 Macro per la calibrazione del tastatore.................................................................................................................338
13.1.4 Macro per azzeramento origini XY a centro foro .................................................................................................340
13.1.5 Ricerca blocco con movimenti di misura..............................................................................................................341

13.2 MOTO CON STOP DA LOGICA G62 ....................................................................................................................341

13.3 RICERCA BLOCCO CON FUNZIONI SPECIALI ...............................................................................................343

D. ELECTRON vii
CNC Z32 Programmazione Indice

13.3.1 Lettura dati da memoria CMOS ...........................................................................................................................343


13.3.2 Comunicazione da logica G101............................................................................................................................344
13.3.3 Movimenti di misura G61 e con stop G62 ...........................................................................................................344
13.3.4 Esempio di soluzione ...........................................................................................................................................344

13.4 ASSI CONTINUI CICLICI.......................................................................................................................................345


13.4.1 Acquisizione del punto iniziale ............................................................................................................................345
13.4.2 Programmazione di più giri ..................................................................................................................................345
13.4.3 Quota acquisita dalla G105 ..................................................................................................................................346
13.4.4 Riposizionamento dopo una ricerca blocco..........................................................................................................346
13.4.5 Assi ciclici per la via più breve ............................................................................................................................346
13.4.6 Programmazione assi ciclici per via più breve con direzione...............................................................................347

13.5 MACCHINA IN POLLICI........................................................................................................................................347

13.6 OFFSET DI LAVORAZIONE PILOTATI DA PULSANTI DI JOG (JOGOFFSET) ........................................348

13.7 RIPOSIZIONAMENTO SPECIALE IN RTCP ......................................................................................................349

13.8 ASSI DISCRETI.........................................................................................................................................................350

14. PRESTAZIONI OBSOLETE.......................................................................................... 353

14.1 G98 INTERPOLAZIONE LINEARE SPECIALE (5 ASSI) ..................................................................................353


14.1.1 Errore di inseguimento .........................................................................................................................................354
14.1.2 Gestione dell'accelerazione seconda.....................................................................................................................356
14.1.3 G99 e velocità massima........................................................................................................................................356
14.1.4 Considerazioni pratiche........................................................................................................................................357
14.1.5 Esempi..................................................................................................................................................................357

viii D. ELECTRON
CNC Z32 Programmazione Cap.1 - Organizzazione e struttura dei files

CAPITOLO 1

1. ORGANIZZAZIONE E STRUTTURA DEI FILES

1.1 INTRODUZIONE
CARATTERI 'O' e '0'
La lettera 'O' e la cifra zero '0' sono spesso stampate in modo assai simile tra loro, tanto da
indurre in errore il programmatore anche esperto: si ricordi però che i codici di macchina dei due
caratteri sono diversi tra loro e che il CN non può (e NON DEVE) scambiarli tra loro.
Perciò, una volta per tutte, si prenda nota:
O => lettera dell'alfabeto 'O'
0 => cifra zero

NOTA IMPORTANTE
Lo Z32 è un controllo numerico con programmazione e struttura estremamente aperta: scopo di
questo manuale è servire da riferimento per le possibili prestazioni del CN, con particolare
riferimento a frese e centri di lavoro, ma non di descrivere particolari installazioni.
Il costruttore della macchina utensile, per configurare la macchina, installa sottoprogrammi, cicli
speciali, il programma della logica di funzionamento e quello delle tarature, che influenzano le
prestazioni e il comportamento dello Z32, si raccomanda di consultare accuratamente le
informazioni fornite dal costruttore stesso.

1.2 GENERALITÀ
Lo Z32 è un CNC a 32 bit per centri di lavoro, torni frese, frese a copiare .., con eccezionali
caratteristiche di multiprocesso.
È stato progettato per supportare anche FMS e macchine utensili dove vengono eseguite più
lavorazioni fra loro indipendenti e contemporanee.
Lo Z32 è pienamente compatibile a livello di programma-pezzo con il predecessore Z16; un
programma di Z16 gira senza problemi su Z32. Ciò nonostante si raccomanda la massima
attenzione alla prima esecuzione, come se il programma fosse nuovo.
Lo Z32 è un CNC multiprocesso (ma non multiprocessore!), cioè è in grado di controllare più
lavorazioni (o addirittura più macchine contemporaneamente, sincronizzabili tra loro tramite la
logica programmabile.
In pratica lo Z32 contiene al suo interno più controlli numerici completi, ognuno collegato ad un
particolare gruppo di assi, eventualmente completi di mandrino.
Non esistono collegamenti obbligatori tra part-program e processo, l'unico vincolo è che il part-
program sia scritto per il processo dal quale è eseguito.
In questo manuale si danno le informazioni tecniche necessarie per la corretta programmazione
dello Z32 applicato a frese e centri di lavoro.
Lo Z32 deve svolgere i seguenti compiti principali:
− rilevamento e visualizzazione delle quote assi
− comando degli assi
− gestione della logica di macchina

D. ELECTRON 1
Cap.1 - Organizzazione e struttura dei files CNC Z32 Programmazione

− colloquio con l'operatore e svolgimento dei programmi esecutivi


In quest'ultima prestazione sono incluse tutte le operazioni che consentono al calcolatore di
conoscere le operazioni richieste dall'operatore e in conseguenza di calcolare le quote e i
movimenti degli assi, le funzioni di macchina da attuare ecc.
Le operazioni richieste possono essere di vario genere: tra le più importanti è quella di eseguire
la lavorazione di un pezzo, col programma già caricato nella memoria dello Z32.
Scopo di questo manuale è di dettagliare quali sono le istruzioni accettate dallo Z32 all'interno di
un programma da eseguire in modo automatico.

1.2.1 Organizzazione dei files in memoria CMOS di Z32


Lo Z32 all'accensione durante la fase di inizializzazione carica da disco rigido in memoria RAM:
− Il sistema operativo Z32
− I files di inizializzazione, la logica di macchina e le tarature
Lo Z32 dispone di una memoria permanente (CMOS) di circa 390 KBytes mantenuta in tampone
da una batteria.
In uno Z32 possono essere presenti al massimo 6 processi, numerati da 0 a 5. La memoria
CMOS di Z32 è sempre unica e condivisa da qualsiasi processo.
I files presenti nella memoria CMOS di Z32 come programmi-pezzo, tabelle, macro, cicli fissi,
ecc… sono accessibili e quindi possono essere richiamati da qualsiasi processo.
All’interno della memoria CMOS i files sono contrassegnati con un numero che è compreso tra 1
e 239.
La lunghezza massima di un file in memoria CMOS non può superare 64KB (caratteri).
I files compresi tra 1 e 109 sono a disposizione dell’utente come programmi-pezzo, cicli fissi
utente, sottoprogrammi ecc…
Le tabelle per utensili, origini e parametri sono contrassegnate da numeri che vanno da 110 a
127.
I files CMOS riservati al costruttore di macchina sono contrassegnati da numeri che vanno da
128 a 239, questa zona non è accessibile (diviene accessibile quando abilitata la modalità di
servizio).
Numerazione delle tabelle nei vari processi:

PROCESSO 0 1 2 3 4 5
TABELLA PARAMETRI 125 122 119 116 113 110
TABELLA ORIGINI 126 123 120 117 114 111
TABELLA UTENSILI 127 124 121 118 115 112
TABELLA ORIGINI BASE 237 236 235 234 233 232

I files sono accessibili tramite l'attività di edit (modifiche o creazione di files). Possono essere
copiati dal disco rigido sul floppy disk e viceversa, oppure inviati a periferiche esterne o caricati da
periferiche esterne con i vari modi con cui lo Z32 comunica per via seriale oppure tramite rete
Ethernet (ved. manuali specifici).

2 D. ELECTRON
CNC Z32 Programmazione Cap.1 - Organizzazione e struttura dei files

Riepilogo dei files in memoria


Zona accessibile:

1 - 109 Programmi-pezzo, sottoprogrammi, cicli utente;


110 - 112 Tabelle parametri, origini, utensili del processo 5
113 - 115 " " " " " 4
116 - 118 " " " " " 3
119 - 121 " " " " " 2
122 - 124 " " " " " 1
125 - 127 " " " " " 0
Zona protetta:

128 - 169 M speciali o sottoprogrammi costruttore


170 - 199 Cicli fissi di sistema
200 - 231 M speciali o sottoprogrammi costruttore (come da 128 a 169)
232 - 237 Origini base di processo
238 - 239 a disposizione

1.2.2 Organizzazione dei files su disco (hard-disk)


E’ possibile memorizzare e organizzare i programmi pezzo (part-program) da eseguire anche su
disco fisso (hard-disk). La cartella di default utilizzata a questo scopo è la cartella C:\Z32\PPG. E’
possibile comunque fare uso di una qualsiasi altra cartella su hard-disk.
All’interno della directory C:\Z32\PPG (o di qualsiasi altra cartella scelta per l’archiviazione dei
programmi pezzo) risiedono i files di lavorazione che possono essere a loro volta organizzati in
sottocartelle.
Non c’è nessun limite alle dimensioni del singolo file (part-program) oppure alle dimensioni totali
di tutti i files, unico limite è dato dallo spazio a disposizione su disco fisso (normalmente sono molte
centinaia di megabyte).
Il nome dei part-program è una sequenza di caratteri alfanumerici, lettere, numeri, e altri simboli
escluso i seguenti caratteri: \ / : * ? < > | che non sono consentiti.

Nota importante sull’esecuzione di part-program da disco per gli utilizzatori delle interfacce
WinTerm e ZTerm:
Quando un part-program su disco fisso ha dimensioni maggiori di 64KB, questo viene eseguito
direttamente da disco fisso in modalità DNC. A questo scopo, a seconda delle implementazioni,
può essere creato automaticamente dall’interfaccia utente un file “lanciatore” che richiama il
programma da eseguire in modlità DNC.
I part-program più piccoli di 64KB vengono come prima cosa copiati in memoria CMOS di Z32 e
successivamente eseguiti da CMOS (tutta questa operazione è automaticamente eseguita
dall’interfaccia in un modo assolutamente trasparente all’utilizzatore).
I file CMOS che vengono utilizzati dall’interfaccia utente per la creazione del file di richiamo (per
programmi superiori a 64KB) oppure per la copia in CMOS (per programmi inferiori a 64KB) sono di
default i seguenti:
PROCESSO 0 1 2 3 4 5
FILE CMOS UTILIZZATO 99 98 97 96 95 94
Per esigenze particolari, possono essere impostati file diversi.

D. ELECTRON 3
Cap.1 - Organizzazione e struttura dei files CNC Z32 Programmazione

L’esecuzione in modalità DNC ha alcune limitazioni rispetto ad una esecuzione diretta da


memoria CMOS di Z32, per il dettaglio di queste diversità vedere istruzione !:L254… esecuzione in
DNC.

1.2.3 Programma-pezzo
Per eseguire un pezzo, devono essere fornite allo Z32 tutte le informazioni relative: queste
informazioni costituiscono il PROGRAMMA-PEZZO (o PART-PROGRAM).
Perché le informazioni vengano correttamente interpretate dallo Z32 esse devono essere scritte
in un LINGUAGGIO che lo Z32 comprende.
Esiste uno standard internazionale di linguaggio di programmazione (norme ISO) che definisce
un possibile linguaggio standard per la programmazione dei controlli numerici: queste norme sono
purtroppo ferme da anni e costituiscono una seria limitazione alle possibilità di elaborazione dati dei
moderni calcolatori.
Il linguaggio di programmazione dello Z32 è compatibile con lo standard ISO per la massima
parte delle istruzioni ESECUTIVE, ossia che provocano immediatamente un risultato fisico sulla
macchina utensile (es. moti assi, esecuzione di funzioni ausiliarie).
In aggiunta alle istruzioni ISO lo Z32 esegue anche una quantità di istruzioni EVOLUTE ed
istruzioni di PROGRAMMAZIONE STRUTTURATA che non provocano un effetto fisico immediato
sulla macchina utensile, ma svolgono funzioni di predisposizione (calcolo di espressioni, salto a
sottoprogrammi, condizionamenti ecc...). Per evitare possibili confusioni, le righe di
programmazione possono essere o solo ISO, o solo "evolute", o solo di “programmazione
strutturata”, ossia non è possibile inserire nella stessa riga istruzioni ISO, EVOLUTE e/o
PROGRAMMAZIONE STRUTTURATA.
Le righe "evolute" si distinguono perché, subito dopo l'eventuale numero di riga (N...), hanno un
punto esclamativo '!' che apre il primo campo della riga evoluta.
Le righe di “programmazione strutturata” si distinguono perché, iniziano con due caratteri “-“
consecutivi.
Un programma-pezzo è costituito nell'ordine dalle seguenti parti:
− un titolo (che può essere qualsiasi ma non deve contenere il carattere '%')
− il carattere '%' (non obbligatorio)
− le righe significative del programma-pezzo, che possono essere ISO, EVOLUTE o di
PROGRAMMAZIONE STRUTTURATA senza ordine fisso.
Quando il programma-pezzo viene eseguito, i primi 40 caratteri della prima riga del programma
(che possono contenere un conciso codice di identificazione) vengono presentati sul video, in modo
da permettere all'operatore di riconoscere immediatamente il programma in corso di esecuzione.
PROGRAMMA-PEZZO
TITOLO 1 o più righe senza il carattere percento
%
N1 ...
.....
righe programma ISO O EVOLUTE
...
:OS eventuale sezione origini locali
X1=...
...
:PA eventuale sezione parametri locali
PP=...

4 D. ELECTRON
CNC Z32 Programmazione Cap.1 - Organizzazione e struttura dei files

...
:TL eventuale sezione utensili locali
T1#1 ...
...

Esecuzione di part-program senza il % iniziale


Il carattere % è indicato dalle norme ISO come contrassegno dell'inizio del part-program.
Z32 ignora tutti i caratteri eventualmente presenti nel programma da eseguire prima del %
iniziale.
Se il carattere % viene omesso Z32 esegue ugualmente il programma, partendo dalla prima
riga.

ATTENZIONE
Si ricorda che la prima riga di un part-program non può essere una
destinazione di salto: questa limitazione può risultare più evidente se
manca il % iniziale perché la prima riga diventa operativa a tutti gli effetti.

Nota sulla gestione dei caratteri vietati


Esistono delle restrizioni che vietano l’uso di certi caratteri (ascii) nel part-program. Il CNZ32
esegue un controllo sintattico e viene presentato allarme CN1D14 ERRORE PROGRAMMA se
vengono trovati caratteri non consentiti.
La logica di protezione segue queste regole:
- i caratteri di controllo (con valore ascii < 32) sono comunque vietati e danno allarme
- i caratteri estesi (semigrafici con valore ascii >127 o minuscoli) sono comunque accettati nei
commenti, nella testata del part-program o in righe o in parti di righe che non siano eseguite (per
esempio righe saltate con GO o istruzioni strutturate, parti di righe evolute saltate con EB ecc.)
- i caratteri minuscoli ed i caratteri estesi (semigrafici con valore ascii >127) sono accettati come
nome origine

ATTENZIONE
la presentazione dei caratteri semigrafici da parte dei programmi di
interfaccia video può in qualche caso non essere corretta perché i valori
dei caratteri >127 erano usati come segnale di video inverso da TERMS e
in certi casi anche da ZTERM, quindi al posto del carattere semigrafico
"standard" può essere presentato a video un carattere del tutto diverso a
video inverso o che altro. Si lascia all'utente la decisione se sopportare
questa riduzione di funzionalità per ottenere comunque la possibilità di
usare nel part-program caratteri semigrafici.

1.2.4 Blocco opzionale


Se una riga di programma inizia col carattere '/' la riga stessa viene eseguita solo se l'apposito
comando (commutatore sul pannello frontale) ne abilita l'esecuzione.
Esempio:
/N28 X0 Y0
Il movimento degli assi al punto 0,0 è fatto solo se sono abilitati i blocchi opzionali.
/N30 !GOP20!
Il salto al sottoprogramma P20 è fatto solo se sono abilitati i blocchi opzionali.

D. ELECTRON 5
Cap.1 - Organizzazione e struttura dei files CNC Z32 Programmazione

Il blocco opzionale può costituire destinazione di salto: in questo caso deve essere ricercato con
la barra iniziale.
Per esempio:
N60!GO/N30!
L'efficacia del comando di blocco opzionale può non essere immediata, per la presenza nello
Z32 di un 'serbatoio’ di istruzioni preelaborate che consentono una maggiore rapidità di esecuzione:
la scelta se un blocco opzionale deve o no essere eseguito viene fatta al momento della
preelaborazione, per cui se il comando di blocco opzionale viene cambiato mentre il blocco è già
elaborato ma non ancora eseguito il nuovo comando non è eseguito.
I blocchi contenuti nel serbatoio possono essere intorno a una decina.
Alcune funzioni dello Z32 svuotano il serbatoio prima della loro esecuzione: se una di queste
funzioni (per esempio una 'M' o una sosta G4, anche di tempo nullo) viene programmata prima del
blocco opzionale non si ha più questa incertezza.
Per esempio:
...
N10 G0 X0 Y0
N11 G4 TT0 sosta di tempo zero
/N12 X10
...
Poiché il G4 al blocco N11 svuota il serbatoio, il comando di blocco opzionale è immediatamente
attivo sul blocco N12.

1.2.5 Blocco doppio barrato


Se una riga di programma inizia con due caratteri '/' consecutivi (ossia con '//'), la riga stessa
viene eseguita solo in ricerca blocco. Ciò consente al programmatore di stabilire il 'percorso' da fare
in ricerca blocco e quindi, eventualmente, di saltare serie intere di operazioni.

1.2.6 Sezionamento di programma


Una riga che inizia col carattere ':' indica un sezionamento di programma. Dopo il carattere ':'
deve essere programmato un numero che indica la sezione.
Esempio:
...
:10
N38 T10 M6
N39 X50
...
Ricerca Il sezionamento di programma serve a rendere molto più rapida la ricerca blocco, in quanto non
blocco vengono elaborate tutte le istruzioni appartenenti a sezioni diverse da quella cercata.
veloce Per questo è necessario che, dopo un sezionamento programma, siano programmate tutte le
istruzioni necessarie a una corretta ripresa della lavorazione. In particolare, dopo un sezionamento
programma è obbligatoria la programmazione (o la conferma) dell'utensile programmato e
dell'utensile sul mandrino (T... M6).
Dopo il reset è attiva la sezione zero: tutte le istruzioni contenute nella sezione zero sono
comunque elaborate durante la ricerca blocco, anche se si ricerca una sezione diversa dalla zero.

6 D. ELECTRON
CNC Z32 Programmazione Cap.1 - Organizzazione e struttura dei files

Ciò accorcia il programma perché evita di dover riprogrammare a inizio di ogni sezione le
informazioni 'fisse’.
Esempio:
LAVORAZIONE COPERCHIO%
N1 G37OL
:1
N10 T1 M6
N11 S1000 M3
N12 OX1 OY1 OZ1 G0 X0 Y0
...
:2
N20 T2 M6
N21 OX2 OY2 OZ2
...
Non è necessario riprogrammare G37OL all'inizio di ogni sezione perché è contenuto nella
sezione zero, che viene sempre eseguita in ricerca blocco.
È lecito, e non porta problemi particolari, richiamare in una sezione righe appartenenti a un'altra
sezione.
Numero Il numero di sezione non è un parametro e deve essere intero (senza virgola né punto
sezione decimale).
Il numero sezione (programmato con i ":" a inizio riga ISO) può arrivare fino al massimo di
99999.
Non è necessario che le sezioni siano in ordine crescente di numero, ma per ragioni di
chiarezza si consiglia di mantenere questo ordine.
Le righe di sezionamento, quelle con il ":", non devono avere il numero di blocco N (devono
iniziare con ':').
Azzera Un sezionamento di programma opera anche l'azzeramento del numero progressivo (numero di
numero blocco).
progres- Qui di seguito si dà un esempio di struttura di programma con sezionamento. Le regole da
sivo seguire per ottenere un buon risultato sono molto semplici.
Nella sezione zero (che viene sempre letta in ricerca blocco):
− mettere le informazioni valide per tutto il programma
− non mettere cambio utensile (non è un errore, ma non è utile)
− mettere un sezionamento prima di ogni cambio utensile
− ricordarsi di programmare tutte le funzioni di macchina dopo ogni sezionamento

PROVA PER SEZIONAMENTO%


N1 G37OL G25XYZ OX1 OZ1
le informazioni della sezione zero vengono sempre lette in ricerca blocco
....
:1
N2 T1 M6
per certi tipi di cambio utensile si può anticipare la ricerca del prossimo utensile
N3 T2
...

D. ELECTRON 7
Cap.1 - Organizzazione e struttura dei files CNC Z32 Programmazione

devono essere date tutte le funzioni di macchina programma dell'utensile T1


N4 S100 M3 M41
:2
N20 T2 M6
qui si deve riconfermare T perché è nuova sezione
N21 T3
N22 S500 M3
N23 !GON6-N8!
le righe N6-N8 appartengono a un'altra sezione
N24 ...
In un programma sezionato come sopra, si può ricercare, con grande rapidità, qualsiasi inizio
sezione.
Per esempio:
3 ENTRA: :2
Il CN esegue le seguenti operazioni:
− legge ed acquisisce tutta la sezione zero
− salta le sezioni diverse dalla 2
− si posiziona all'inizio della sezione 2
Righe di sezionamento programma sono anche le righe introduttive delle sezioni locali di
parametri, origini ed utensili: esse sono fuori dal part-program e sono usate solo come
contrassegno.
Esempio:
...
:OS segnale inizio sezione locale origini
X1= 10.121
...
La riga :OS non genera operazioni né deve essere elaborata come riga di part-program, serve
solo per contrassegnare l'inizio della sezione locale origini.

1.3 RIGHE ISO


Le righe ISO sono le sole che possano contenere istruzioni operative, ossia che possono
provocare azioni FISICHE sulla macchina utensile.

Le righe ISO sono costituite da un numero di riga (non necessario) e da una serie di istruzioni
elementari.

8 D. ELECTRON
CNC Z32 Programmazione Cap.1 - Organizzazione e struttura dei files

1.3.1 Concatenamento di righe


Se in una riga devono stare più caratteri di quanto contenibili in una sola riga, si può spezzare
una riga in più parti, che però restano funzionalmente un solo blocco di istruzioni. Ciò si ottiene
mettendo il carattere '$' prima della fine della riga: la riga successiva viene concatenata alla riga
che contiene il '$', gli eventuali caratteri tra '$' e fine riga sono ignorati.
Si possono concatenare più righe, con un massimo di 240 caratteri contenuti.
Esempio: Equivale in tutto a:
N12G0X0$ AB12
Y0Z0$
M6 N12G0X0 Y0Z0M6
N13G1... N13G1...

Nota sulla concatenazione di righe di part-program col carattere "$"


Si precisa che la concatenazione di più righe di part-program col carattere "$" è possibile solo in
programmi eseguiti da memoria interna CMOS, e che invece non è possibile in programmi eseguiti
in DNC.

1.3.2 Numero di riga


N99999.9999 Se c'è, il numero di riga deve essere a inizio riga.
N99999,9999 Il numero di riga è costituito dal carattere N seguito da un numero con fino a 9 cifre significative,
prima o dopo la virgola o punto decimale: le specifiche sono le stesse dei valori numerici (vedi
paragrafo successivo), ma 'N' NON è un parametro (ossia non può essere usato per espressioni
ecc.).
I numeri di riga possono essere in qualsiasi ordine (si consiglia un ordine CRESCENTE!) e
possono essere ripetuti più di una volta nello stesso programma: nel caso di ricerca blocco o di
salto (GO N...) la riga trovata è sempre la prima a partire da inizio programma: una eventuale
seconda riga con lo stesso numero non viene mai trovata.

Il numero di riga, oltre a dare un ordine e a rendere meglio comprensibile il programma, è


utilizzato anche come indirizzo di destinazione di salto.
Per essere utilizzabile dal CN come indirizzo di salto, il numero di riga deve essere esattamente
a inizio riga, senza spazi né caratteri intermedi. In alcuni casi la riga può essere cercata includendo
i caratteri precedenti (% oppure /).La sequenza di caratteri da scrivere dopo "GO" deve essere
identica alla sequenza di caratteri iniziale della riga da ricercare. Il punto decimale è considerato
carattere diverso dalla virgola.
Esempi:
N12 G41... è trovato con !GON12!
%N1G41... è trovato con !GO%N1!
/N12G41... è trovato con !GO/N12!

D. ELECTRON 9
Cap.1 - Organizzazione e struttura dei files CNC Z32 Programmazione

N132,5HA... è trovato con !GON132,5! non con !GON132.5!


N132.5M3... è trovato con !GON132.5! non con !GON132,5!
Alcune funzioni (per esempio la G110 per costruzione di macro di svuotatura) generano
automaticamente il numero di riga a partire dal valore di un parametro. In questi casi, per essere
trovato:
− N deve essere a inizio riga senza spazi o caratteri aggiuntivi (%, /, //)
− gli eventuali decimali devono essere separati col punto e non con la virgola
Il numero di riga 'N...' può essere omesso: in questo caso la riga non può costituire punto di
arrivo di salto.

1.3.3 Istruzioni elementari, indirizzi, valori numerici


Una riga ISO è formata, dopo il numero di riga 'N...', da una sequenza di ISTRUZIONI
ELEMENTARI, ognuna delle quali ordina la esecuzione di una particolare operazione.
Una istruzione elementare è formata da due parti successive:
− l'INDIRIZZO
− il VALORE NUMERICO da assegnare all'indirizzo
Tra indirizzo e valore numerico ci possono essere un numero indefinito di spazi.
Tra due istruzioni elementari ci possono essere un numero indefinito di spazi.

Alcune istruzioni elementari, dopo l'indirizzo, possono avere, al posto del valore numerico, una
combinazione di caratteri (vedere p. es. origini), oppure possono avere, dopo il valore numerico,
una 'coda’ descrittiva (vedere p. es. G25, G27, G28, G29).
INDIRIZZI Gli indirizzi sono costituiti, secondo le norme ISO, da una singola lettera dell'alfabeto: poiché
questa è una limitazione troppo gravosa, lo Z32 ammette, come si vedrà meglio al capitolo dedicato
ai parametri, indirizzi di uno, due o tre caratteri ed alcuni vettori con l’indice come PAR[ ], PAL[ ].
Per esempio:
X normalmente assegnato all'asse X
M funzione ausiliaria
MA funzione ausiliaria
F feed
PAR[ ] parametro con indice

10 D. ELECTRON
CNC Z32 Programmazione Cap.1 - Organizzazione e struttura dei files

Gli indirizzi determinano il tipo particolare di operazione che il CN deve eseguire: alcuni indirizzi
sono definiti dal costruttore della macchina utensile (per esempio i nomi assi), altri possono essere
definiti dall'utente finale (parametri utente), mentre altri hanno funzioni già prefissate (parametri di
sistema ecc.). In particolare sono già fissati:
G funzioni preparatorie
M, MA, MB, MC funzioni ausiliarie
F feed
S speed
O origini supplementari
T, TA, TB utensile programmato, attuale, futuro
PAL[ ] parametro con indice per comunicazioni con logica programmabile
Numerosi altri indirizzi hanno un significato specifico (ved. capitolo dedicato parametri).
VALORI
NUMERICI Gli indirizzi sono seguiti, per completare l'istruzione elementare, da un valore numerico.
I valori numerici possono essere introdotti direttamente oppure, come si vedrà meglio al
paragrafo relativo, come risultato di una ESPRESSIONE matematica.
Quando i valori numerici sono introdotti direttamente essi sono programmati come numeri con
virgola o punto decimale, con le seguenti regole:
− deve essere sempre programmato almeno un valore (lo zero si programma con una o più
cifre ‘0’)
− per l’input numerico vengono accettati numeri che abbiano un massimo di 9 cifre
significative, prima o dopo la virgola o punto decimale (per l'esattezza il massimo numero
significativo accettato è 1.000.000.009). Oltre viene errore programma CN1D14.
− gli zeri iniziali della parte intera possono essere omessi, anche se la parte intera è zero e
c'è una parte frazionaria
− la separazione tra la parte intera e la parte decimale è segnalata dalla virgola ',' o
indifferentemente dal punto '.'
− non devono esserci caratteri né spazi all'interno del numero
Per es., per programmare 0,1 all'indirizzo X si può programmare indifferentemente:
X.1
X .1
X,1
X0,1
X 0.1
X .100
X00000,1000

Altri esempi di programmazione corretta:


999999999
0,999999999
0,00000999999999
99999,9999
X12345,678
X123456,2
X0,1234567

D. ELECTRON 11
Cap.1 - Organizzazione e struttura dei files CNC Z32 Programmazione

Esempi di programmazione errata:


X000012345,67800000 errore più di 9 cifre significative
X0 ,1 uno spazio all'interno del numero
X1,00000999999999 errore più di 9 cifre significative

1.3.4 Righe di commento


In un part-program possono essere inserite delle righe di commento.
I commenti devono essere racchiusi tra parentesi tonde.

Carattere “;” a inizio riga che qualifica tutta la riga come commento
Durante la messa a punto di un part-program può essere utile commentare temporaneamente
una riga.
Il modo previsto dalle norme ISO di dichiarare un commento è racchiuderlo tra parentesi tonde,
per esempio:
(RIGA DI COMMENTO)
ma se la riga da commentare contiene una formula matematica con parentesi tonde risulta
difficile utilizzare parentesi tonde che racchiudano tutto, per esempio, se si racchiude tra parentesi
la riga:
HA<(HX*2)/HY>
si ottiene:
(HA<(HX*2)/HY>)
ma questa scrittura non è ammessa, perché la parentesi tonda chiusa dopo HX*2 termina il
commento. L’esecuzione della riga porta ad un errore di sintassi CN1D14.
E’ stato perciò introdotto un modo molto semplice di considerare una riga commento, qualunque
sia il contenuto al suo interno: basta mettere un carattere “;” all’inizio della riga, per esempio:
;HA<(HX*2)/HY>
in questo caso tutta la riga è considerata un commento.

12 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

CAPITOLO 2

2. FUNZIONI PREPARATORIE G

2.1 FUNZIONI G
Le funzioni con indirizzo G si chiamano 'preparatorie' in quanto predispongono il controllo a
interpretare successive istruzioni.
G0 Il numero che segue G identifica la particolare funzione alla quale è predisposto lo Z32. Il valore
G00 che segue G deve essere sempre un valore numerico (NON può essere il risultato di una
espressione). La G non è un parametro.
Solo alcune funzioni G (ossia solo alcuni valori numerici) sono interpretate ed eseguite dallo Z32:
se si programma una G non implementata lo Z32 dà l'apposito allarme.
Le funzioni sono quelle previste dalle norme ISO, con alcuni adattamenti. In particolare:
− gli zeri iniziali delle G possono essere omessi (G00 diventa G0)
− possono essere programmate nello stesso blocco più funzioni G: in questo caso le G sono
riconosciute dal CN ed eseguite via via che vengono incontrate nella riga programmata: in
caso di programmazione di più G contrastanti resta attiva l'ultima G programmata.
− di seguito a particolari funzioni G possono essere specificati dei dati aggiuntivi che ne
completano la definizione.
Modali Si chiameranno MODALI le funzioni G il cui effetto si mantiene anche nei blocchi successivi a
quello in cui sono programmate: le funzioni G modali sono normalmente annullate da apposite altre
funzioni G.
Con Alcune G richiedono l'ARRESTO della macchina: il profilo deve essere completamente definito al
arresto momento della loro esecuzione. Non deve perciò essere in corso una contornatura con profilo aperto
né una contornatura con compensazione raggio.
Queste particolari G saranno indicate nel seguito come CON ARRESTO. Se si programmano
queste G in un punto vietato della traiettoria il CN dà apposito allarme.
Altre funzioni (M, MA, MB, MC, T, O) richiedono l'arresto, come si vedrà meglio ai paragrafi relativi.

2.1.1 G0 - posizionamento in rapido


Posizionamento in rapido con assi in traiettoria.
Modale, attiva a inizio esecuzione.
G0 disattiva G1, G2, G3 ed è disattivata da G1, G2, G3, G41, G42.
Attenzione: la funzione G0 può essere definita come non modale (attiva solo nel blocco), per questa
prestazione consultare il costruttore della macchina utensile.
G0 con 10 Possono essere programmati fino a 10 assi contemporanei. La traiettoria percorsa dagli assi per
assi raggiungere il punto finale programmato è rettilinea: tutti gli assi programmati arrivano insieme nel
punto finale.
Attenzione: i movimenti oltre 5 assi sono incompatibili con le funzioni: G61, G63, G110, G132,
G41/G42, NURBS e con la speciale funzione di “controllo del gap” usata per l’elettroerosione a filo. Se
si programmano oltre 5 assi con G61, G63, G110 o G132 si ha allarme di programmazione CN8414 -
TROPPI ASSI. Se si programmano oltre 5 assi con G41/G42 o “controllo del gap” attivo viene allarme
di tempo reale CN2813.

D. ELECTRON 13
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

La velocità durante gli spostamenti in G0 è ottimizzata per la massima rapidità di movimento, senza
superare il rapido definito per ciascuno degli assi in moto.
Se più assi sono in moto, la maggiore rapidità si ha quando almeno uno degli assi va al suo rapido:
le velocità degli altri assi sono ridotte in proporzione per mantenere il movimento rettilineo. Per
esempio, si abbiano X e Y rapido a 10 m/min, Z rapido a 5 m/min, assi tutti a quota iniziale zero:
N10 G0 X100 Y100 X=Y=10 m/min=14,142 m/min in traiettoria
N10 G0 X100 Z10 X=10 m/min, Z=1 m/min
N10 G0 X10 Z100 Z=5 m/min, X=0.5 m/min

2.1.2 G1 - moto rettilineo in lavoro


Moto rettilineo in lavoro con assi in traiettoria.
Modale.
G1 disattiva G0, G2, G3 ed è disattivata da G0, G2, G3, G40, G41, G42.
Attenzione: la funzione G1 diventa oltre che modale anche “attiva al reset” qualora G0 sia stata
definita come non modale (attiva solo nel blocco). Per questa prestazione consultare il costruttore della
macchina utensile.
G1 per 10 Possono essere programmati fino a 10 assi contemporanei. La traiettoria percorsa dagli assi per
assi raggiungere il punto finale programmato è rettilinea: tutti gli assi programmati arrivano insieme nel
punto programmato.
Attenzione: i movimenti oltre 5 assi sono incompatibili con le funzioni: G61, G63, G110, G132,
G41/G42, NURBS e con la speciale funzione di “controllo del gap” usata per l’elettroerosione a filo. Se
si programmano oltre 5 assi con G61, G63, G110 o G132 si ha allarme di programmazione CN8414 -
TROPPI ASSI. Se si programmano oltre 5 assi con G41/G42 o “controllo del gap” attivo viene allarme
di tempo reale CN2813.
Feed La velocità in G1 è la feed (indirizzo F) programmata.
C'è la limitazione che nessun asse interessato al moto, in nessuna condizione di override (al
massimo può arrivare al 120%) con qualsiasi F programmata può superare il proprio rapido. Per
ottenere questo, la velocità con override al 100% non può superare, per nessun asse, il rapido diviso
per 1,2.
Per esempio, se si hanno tre assi, X e Y con rapido a 10 m/min, Z con rapido a 5 m/min, e si fa un
movimento a partire dall'origine (tutte le quote a zero) si possono avere i seguenti casi:
movimento velocità con override al 100%
G1 F8000 X100 8000
G1 F10000 X100 8333
G1 F30000 X100 8333
G1 F10000 X100 Y100 10000 (X e Y vanno a 7070 mm/min)
G1 F10000 X100 Z100 5891
Nell'ultimo caso la Feed di Z è al max di 5000/1.2=4166 e quindi anche X, per ottenere un
movimento rettilineo. Vedere anche il capitolo dedicato alla gestione della Feed.

ATTENZIONE
La programmazione di G1 da solo (senza quote) su una riga è lecita, ma ha
un significato particolare (moto rettilineo APERTO, vedere capitolo dedicato
alla programmazione dei profili) e non ha solo il significato di predisporre un
moto in G1.
Per esempio:

14 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

...
N10 G1
N11 X0 Y0
...
non è ammessa: al blocco 11 dà errore CN3414 PRECEDENTE APERTO

2.1.3 G2 - arco di cerchio orario


Arco di cerchio orario in lavoro.
Modale.
G2 disattiva G0, G1, G3 ed è disattivata da G0, G1, G3, G40, G41, G42.
Attenzione: le funzioni G2/G3 possono essere definite come non modali (attive solo nel blocco), per
questa prestazione consultare il costruttore della macchina utensile.
La velocità è la Feed programmata, salvo la riduzione al rapido dell'asse più lento interessato al
moto diviso per 1.2 per non superare il rapido anche con override al 120%. Per esempio, un cerchio in
XZ, con rapido X a 10 m/min e rapido di Z a 5 m/min, ammette una velocità massima con override al
100% di 4166 mm/min.
Confrontare anche la velocità in G1.
Per velocità si intende quella del centro fresa, salvo alcuni casi di adattamento della velocità nel
caso di correzione raggio utensile (vedere capitolo dedicato alla correzione raggio).
Il piano di contornatura deve essere precedentemente selezionato con la funzione G25 che può
essere omessa se il piano di contornatura è quello 'di sistema’.
Vedere anche capitolo dedicato alla programmazione dei profili.
Esempio:
...
N10 F1000 G0 X0 Y0 Z0
N11 G2 X100 Y0 I50 J0
...

2.1.4 G3 - arco di cerchio antiorario


Arco di cerchio antiorario in lavoro. G3 disattiva G0, G1, G2 ed è disattivata da G0, G1, G2, G40,
G41, G42.
Tutto il resto come G2.

2.1.5 G4 - sosta
Attiva solo nel blocco, con arresto.
Il tempo di sosta è pari al valore del parametro 'TT', che può essere programmato nello stesso
blocco oppure in un blocco precedente. Se dall'inizio dell'esecuzione non è mai stato programmato 'TT'
il tempo di sosta è zero. Il parametro 'TT' definisce il tempo di sosta in secondi e decimali.
Nella esecuzione della sosta si può avere una incertezza nel tempo effettivo di qualche decina di
millisecondi a causa dei cicli di lavoro del microprocessore.
Per ottenere tempi di sosta (TT) molto bassi è possibile attivare la “modalità sosta G4 precisa in
regime di G113X”, per dettagli vedere funzioni G200 HX11 / G200HX12.

D. ELECTRON 15
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Esempio:
...
N10 TT2.5
N11 G4 (SOSTA DI 2.5 SECONDI)
...

2.1.6 G6.2 - gestione delle NURBS


Z32 gestisce NURBS (Non Uniform Rational B-Spline) fino al 4.o ordine (splines cubiche) con un
numero massimo di tre assi.
Una nurbs è introdotta dalla G6.2. Esempio di programma:
N1 G0 X10 Y30 Z0 F1000
N2 G6.2 P3 K5 Y30 Z0 R1
N3 K5 Z20 R1
N4 K5 Y45 R1
N5 K6 Y70 Z0 R1
N6 K7
N7 K7
N8 K7
N9 G0 X0 Y0 Z0
La numerazione delle righe N serve qui da riferimento ma non è obbligatoria.
La nurbs dell'esempio inizia con N2 e termina con N8.
Prima della nurbs ci possono essere movimenti qualsiasi.
La G6.2 (riga N2) segnala l'inizio di una nurbs.
Prima della riga con G6.2 e durante tutta la nurbs:
- G114 deve essere attiva
- G113A non deve essere attiva
- la correzione raggio non deve essere attiva
Il parametro P definisce l'ordine della nurbs, i valori ammessi sono 2, 3, 4, se non viene
programmato assume per default il valore 4. Il parametro P non può essere cambiato all'interno di una
nurbs.
Nella riga introduttiva è obbligatorio programmare tutti gli assi interpolati dalla nurbs: possono
essere da 2 a 3 assi scelti tra gli assi continui del CN.
Le quote assi nelle prima riga della nurbs devono essere coincidenti con le ultime raggiunte prima
della nurbs.
Da notare che se la nurbs è a due assi (per esempio YZ) la programmazione di 3 assi nella prima
riga (per esempio XYZ) è consentita e non ha effetti negativi sui movimenti macchina, ma è
sconsigliata perché forza durante tutta la nurbs il calcolo di tre assi, con aggravio di calcoli matematici.
K è il valore del nodo. Deve essere programmato nella prima riga e deve essere non decrescente
per tutta la nurbs.
R è il peso. Può non essere programmato nella prima riga e nelle successive. In questo caso
assume il valore di default =1.
Durante la nurbs non sono ammesse funzioni "con arresto" (per esempio funzioni ausiliarie).
Per un numero di righe iniziali pari all'ordine P (quindi 3 righe se P=3) il nodo K deve coincidere.

16 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Nelle righe successive K è obbligatorio e deve essere non decrescente.


La nurbs termina quando sono programmate un numero di righe pari all'ordine P contenenti solo il
K senza quote.
Dopo la nurbs è obbligatorio programmare il tipo di movimento (G0, G1 ecc.).
I parametri della G114 influenzano il CN durante la nurbs.
La precisione geometrica della traiettoria è migliore di RA (overshoot) diviso per 2: se RA0.005 la
precisione geometrica è di 0.0025
Qualora la nurbs contenga spigoli (sono determinati da nodi coincidenti o quote coincidenti) questi
sono trattati come spigoli di G114. La programmazione della feed durante una NURBS viene acquisita
e resa efficace alla prima occasione utile, che si realizza circa nel punto giusto con NURBS di quarto
ordine (P4) ed è ritardata di circa metà di un blocco programmato con NURBS di terzo ordine (P3).
La programmazione della feed durante una NURBS viene acquisita e resa efficace alla prima
occasione utile, che si realizza circa nel punto giusto con NURBS di quarto ordine (P4) ed è ritardata di
circa metà di un blocco programmato con NURBS di terzo ordine (P3).
La sfasatura tra la programmazione della feed e la sua esecuzione dipende dal fatto che con
NURBS attive non c’è una precisa corrispondenza tra un movimento programmato e un movimento di
macchina, in quanto un movimento di macchina viene generato per effetto di più movimenti
programmati.

2.1.7 G10 - posizionamento grossolano veloce (obsoleta)


La funzione G10 consente di accelerare i tempi di posizionamento.
La G10 si usa come la G0 (posizionamento rapido) e di questa mantiene tutte le caratteristiche,
salvo che la procedura finale di posizionamento è accelerata.
La G10 è modale e mutuamente esclusiva con G0, G1, G2, G3.
Attenzione: la funzione G10 può essere definita come non modale (attiva solo nel blocco). Per
questa prestazione consultare il costruttore della macchina utensile.
La procedura finale di posizionamento è accelerata e dipende da alcuni parametri di taratura: Se il
CN non possiede le speciali tarature per il funzionamento della G10 probabilmente il risparmio di
tempo per ogni posizionamento sarà minimo.

ATTENZIONE
La programmazione di una G10 elimina la limitazione alla accelerazione
seconda impostata da NTAR. Vedere help tarature su “opzioni globali moti
assi”.
In generale, la G10 agisce nel seguente modo:
− viene eliminata la fase finale di avvicinamento 'dolce'
− viene eliminato il tempo di posizionamento (se esiste)
− si passa al blocco successivo a una certa distanza dal punto finale (definibile in taratura)
che può essere superiore alla soglia di posizionamento
Gli effetti negativi della G10 sono:
− un possibile overshoot sul punto finale (gli assi possono andare oltre il punto programmato
perchè arrivano con eccessiva accelerazione).
− il passaggio al movimento successivo quando gli assi sono ancora lontani dal punto
programmato (da qualche centesimo a qualche decimo a seconda delle tarature). Se gli
assi restano vivi nel movimento successivo sono richiamati alla posizione corretta: in
condizioni normali l'asse rientra nelle precisioni di macchina in pochi decimi di secondo.
In generale quindi è sconsigliato l'uso della G10 quando:
− il sorpasso del punto finale può essere dannoso

D. ELECTRON 17
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

− è subito necessaria la precisione degli assi posizionati (non c'è tempo per il successivo
recupero della posizione)
− uno o più assi posizionati sono bloccati (con G29) subito dopo il posizionamento (non
essendo più vivo, l'asse non viene richiamato in posizione)

Gestione del G10 con gestione avanzata della velocità (G113V)


Il G10 permette un posizionamento finale più ruvido ma più veloce rispetto al normale G0.
Se sono attivi i moti compensati (G113F) il "colpo" introdotto da G10 sul posizionamento finale è più
evidente.
Nel caso di gestione avanzata della velocità (G113V), che ha rapidificato molto il posizionamento, il
vantaggio della G10 è ridotto, e quindi si è ritenuto un migliore compromesso eliminare la G10 (anche
se programmata) e quindi il colpo agli assi quando è attiva la G113F.
Quindi:
− se non è attiva la gestione avanzata (G113V) il G10 funziona normalmente
− se è attiva la G113V e i moti sono morbidi (G113P) il G10 funziona normalmente
− se è attiva la G113V e i moti sono rigidi (G113F) il G10 viene automaticamente convertito
in G0.

2.1.8 G12 - coordinamento terzo asse


Chiede al CN di interpretare la programmazione del terzo asse come coordinata ai due assi del
piano.
Modale. Disattivata da G13.
La G12 è incompatibile con la G111S (movimento di copiatura), se viene programmata G111S la
G12 viene automaticamente disattivata.
La quota programmata sul terzo asse è raggiunta, a fine movimento, insieme alle due quote del
piano. La velocità con G12 attiva è la F programmata, calcolata sulla traiettoria (ossia la risultante
vettoriale delle velocità dei tre assi è la F programmata).
Poiché il movimento in G12 è comunque calcolato sul piano e il terzo asse è 'trascinato' dai due
assi del piano, si ha una condizione molto impegnativa se i movimenti sono molto inclinati: in questo
caso infatti è necessario ridurre la velocità del moto nel piano in proporzione all'inclinazione.
Per la gestione della velocità con G12 attiva, vedere il paragrafo “Gestione della velocità” nel
capitolo dedicato alla programmazione dei profili. G12 può essere attiva anche in correzione raggio
(G41 o G42 attive): permette quindi il moto del terzo asse, sempre come coordinato agli altri due assi.
G12 può rimanere attiva, in correzione raggio, anche nei tratti che vengano accorciati o eliminati.
ATTENZIONE

Se un tratto che viene accorciato od eliminato per effetto della correzione


raggio, contiene un movimento del terzo asse, questo movimento viene
eseguito completamente al prossimo movimento utile.

Esempio:
TASCA CON MOTO TERZO ASSE %
N1 G25XYZ G0 X0 Y10 Z0
N2 R10 F1000 G109E
N3 G42 X0 Y0 QF0
N4 G1 X10
N5 Y15

18 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

N6 X25 Z30
N7 Y0
N8 X50
N9 G40
N10 M2
La G109E alla riga N2 è necessaria per risolvere la tasca in correzione raggio, i movimenti sono
quelli normali fino a N4 compresa.
Qui si ha una rotazione intorno allo spigolo, che non viene terminata perché il diametro fresa è
maggiore della larghezza della tasca (diametro fresa 20 mm, larghezza tasca 15 mm).
Tutti i movimenti successivi vengono eliminati fino alla rotazione intorno allo spigolo di uscita N7
(X25) Y0.
Quindi il movimento del centro utensile è composto di due rotazioni incomplete, una intorno allo
spigolo di entrata e una intorno allo spigolo di uscita, per “appoggiare” la fresa sugli spigoli della tasca.
Il blocco N6 che contiene la salita a Z30 viene eliminato, e quindi la salita viene fatta al primo
movimento che viene effettivamente eseguito.
I movimenti del centro fresa dell’esempio sono perciò composti da:
- movimenti a quota Z0 fino allo spigolo X10 Y0
- arco (incompleto) a quota Z0 intorno allo spigolo X10 Y0
- arco (incompleto) intorno allo spigolo X25 Y0 a quota crescente da Z0 a Z30
- proseguimento a Z30 fino a fine traiettoria
Eliche
Il tratto piano su cui agisce G12 può essere qualsiasi, lineare o circolare, inclusi i tratti di attacco e
distacco dal profilo (G41 e G42). Nel caso che il tratto nel piano sia circolare, è eseguita una
interpolazione elicoidale.
Poiché G12 pone limitazioni alla programmazione (pendenza, correzione raggio ecc.) deve essere
programmata solo quando è necessaria, ed immediatamente disattivata quando non serve più.
Esempio:
...
(SENZA CORREZIONE RAGGIO)
N20 G0 X0 Y0 Z0 F1000
N21 G12 G2 X50 Y0 I25 J0 Z5 (ELICA)
N22 G1 X100 Z0 (RETTA INCLINATA)
N23 G13
...
(CON CORREZIONE RAGGIO)
N50 G0 X0 Y0 Z0
N51 G12
N52 G41 X50 Y0 QF0 Z2 (RACCORDO ELICOIDALE)
N53 G1 X60 Z4 (RETTA INCLINATA)
N54 G13
N55 G2 X60 Y-10
N56 G40
...

D. ELECTRON 19
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

2.1.9 G13 - annulla coordinamento terzo asse


Annulla G12 e ripristina il modo normale di programmazione quote.
Modale. È attiva al reset.
Per l'esempio vedere G12.

2.1.10 G16 - ridirezione nomi assi


Possono presentarsi occasioni nelle quali un programma scritto per una configurazione di
macchina debba essere poi eseguito con una diversa configurazione nella quale gli assi debbano
essere scambiati.

Lo scambio può essere effettuato con la funzione G16, che permette di ridirigere gli assi su nuovi
indirizzi.
Per esempio, ammettiamo che una macchina contenga, nell'ordine, gli assi X Y Z B C. L'ordine è
importante perché la ridirezione avviene in base all'ordine: i caratteri che seguono G16 sono assegnati
agli assi fisici nello stesso ordine in cui sono elencati.
La situazione "normale" corrisponde quindi a:
G16XYZBC

Ammettiamo che si abbia un programma in cui debbano essere scambiati gli assi X e Z, ossia
quando è programmato l'asse X si deve muovere Z e quando è programmato Z si deve muovere X.

Si dovrà programmare, prima dei movimenti con gli assi scambiati:


G16ZYX
Con questa istruzione la Z viene ridiretta sul primo asse (che abbiamo visto è X), Y è ridiretta su Y
(invariata) e X è ridiretta su Z.
Regole:
- i caratteri assegnati agli assi devono seguire G16, senza spazi intermedi

- uno spazio o il fine riga interrompono la sequenza dei caratteri e quindi la G16

- i nomi assi ammessi sono i caratteri dell'alfabeto maiuscolo esclusi FGIJKLMNORST altrimenti
viene errore programma CN1D14

- se i caratteri che seguono G16 sono in numero minore degli assi continui della macchina gli assi
residui rimangono invariati

- dopo la G16 se tra gli assi risultanti ci sono ripetizioni di nomi assi viene errore CN1D14. Per
esempio, se una macchina ha gli assi XYZBC e viene programmata G16ZX il risultato è G16ZXZBC,
quindi Z è ripetuto e viene errore programma

- con G53 attiva (assi riferiti all'origine base) oppure se è in corso un sottoprogramma di sistema
(ciclo fisso o M speciale) la G16 viene sospesa. Ciò impedisce che la G16 possa interferire col
funzionamento di programmi essenziali di sistema

- oltre che per le quote programmate, la ridirezione degli assi è attiva per gli assi individuati da G25,
G28, G29, G43, G44, KM, KD.

- la ridirezione degli assi è attiva per tutti i movimenti programmati, in lavoro e in rapido, ma non
cambia il significato di I J, che comunque sono associati al primo e secondo asse della terna di lavoro.
La programmazione di G25 con assi ridiretti mette di nuovo a posto le corrispondenze

20 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

2.1.11 G25 - terna di assi di lavoro


Permette la scelta dei tre assi di lavoro della macchina.
Modale, con arresto.
Dopo G25 devono essere programmati di seguito tre caratteri con tre nomi di assi definiti come
continui sulla macchina. Per esempio: G25XYZ definisce che la terna di lavoro è costituita dai tre assi
X, Y, Z. I primi due assi costituiscono il piano di contornatura (in cui sono possibili le interpolazioni
circolari). L'altro asse è un asse aggiuntivo coordinato ai primi due (può essere usato per i cicli fissi e
per altre funzioni di macchina).
All'accensione e ad ogni inizio programma è attivata la terna di lavoro di taratura definita dal
costruttore della macchina. È importante, per non avere comportamenti di macchina apparentemente
sorprendenti, definire in modo corretto i sensi di movimento degli assi.
La lavorazione avviene per movimento relativo del mandrino rispetto al pezzo: occorre fare
attenzione che in dipendenza dalla struttura della macchina si può muovere il mandrino oppure il
pezzo, e che sulla stessa macchina per alcuni assi si può muovere il mandrino e per altri il pezzo. Per
evitare confusione si dovrà sempre considerare, non il moto fisico dell'asse, ma la traccia lasciata dal
mandrino sul pezzo in conseguenza del moto dell'asse.
Due dei tre assi che compongono la terna individuano il piano di lavoro (ossia quello in cui è
consentita l'interpolazione circolare, la correzione raggio ecc.). Per scegliere quale dei due è il primo e
quale il secondo asse del piano (che poi potranno essere programmati anche con AA e AB
rispettivamente anziché con la lettera caratteristica) si dovrà:
− mettersi idealmente dalla parte positiva del terzo asse (sempre inteso come traccia di
lavoro);
− eseguire idealmente un movimento verso il positivo di ciascuno dei due assi del piano;
− ruotare sempre idealmente il piano fino a che una traccia sia positiva verso DESTRA e
Nuovo l'altra traccia sia positiva verso l'ALTO.
piano di
contor- Il primo asse del piano (quello da scrivere per primo dopo G25) è quello che fa la traccia verso
natura destra, il secondo asse quello verso l'alto.
Secondo le norme ISO841 la nomenclatura da assegnare agli assi così determinati è:
− X per il primo asse del piano di lavoro
− Y per il secondo asse del piano
− Z per il terzo asse
Non sempre le macchine seguono questa normativa, soprattutto quando la stessa macchina può
essere usata con testa verticale oppure orizzontale, col montaggio di appositi accessori. In questo
caso non può essere cambiata la lettera identificatrice dell'asse né il senso di moto dell'asse da
considerare positivo (che restano legati all'asse fisico): lo Z32 però consente, con la semplice
programmazione di G25 seguita dai tre assi nell'ordine prima descritto, di adattarsi alle varie situazioni.

D. ELECTRON 21
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Nelle figure sono riportate alcune situazioni derivate dalle norme ISO 841: si noti, nel caso che si
muova il pezzo, la differenza tra l'asse fisico (la direzione del movimento) e l'asse geometrico (la
traccia ideale lasciata dall'utensile sul pezzo in conseguenza del moto fisico). In questo caso il moto
fisico è contraddistinto dall'apice (X', Y' ecc.).
La figura 1A rappresenta la stessa macchina della fig. 1, di cui conserva la nomenclatura e il senso
di moto degli assi, ma con mandrino orientato in verticale anziché in orizzontale: si noti come la terna
corretta è G25ZXY. Analogamente, se si fa il caso della macchina 2 (nata con testa verticale)
trasformata in orizzontale, la terna corretta è ancora G25ZXY.
Nel caso che sia programmata una terna errata (ossia col primo e secondo asse del piano
scambiati) lo Z32 non può accorgersi dell'errore (che può non essere un errore se si ipotizza un
mandrino che lavora 'dal di sotto'), ed esegue i movimenti che sarebbero propri di una macchina col
tipo di assi programmati: apparirà all'operatore che siano scambiati tutti i movimenti circolari (G2 con
G3 e G41 con G42).
Esempio:
...
(QUI È ATTIVO G25XYZ)
N10 G0 X0 Y0 Z0
N11 B0
N12 G25BYZ
N13 G2 B30 Y0 I15 J0
N14 G25XYZ
...

Terna di lavoro G25 con sistemi a due assi


Se la macchina è a due assi (tipico per tornio o plotter di tipo semplice) si può programmare G25
con due soli assi:
- ad esempio per un tornio, si può programmare G25ZX, per una macchina pantografo (senza asse
Z) si può programmare G25XY.

22 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

2.1.12 G26 - fine sottoprogramma


Segnala la fine del sottoprogramma.
Dopo il completamento di tutte le funzioni specificate nella riga che contiene 'G26' viene
abbandonato il sottoprogramma e ripresa l'esecuzione del programma (o sottoprogramma) chiamante,
a partire dalla riga successiva a quella in cui era stato chiamato il sottoprogramma.
Si può programmare 'G26', che viene normalmente eseguita, anche all'interno di una subroutine
interna al sottoprogramma (vedere anche capitolo righe evolute).
Esempio:
Progr. principale Sottoprogr. 20
... %
N10!GOP20! N1 HA<HB*2-HC>
... N2 !IFHA>0;GON4!
N3 Z<Z-HE>
N4 G26

2.1.13 G27 - ciclo fisso e sottoprogramma permanente

G27C... Attiva Ciclo fisso


Modale.
Dopo G27C deve essere programmato il numero che indica il ciclo fisso attivato.
Con G27C0 si disattivano i cicli fissi e le subtemp.
All'accensione e a inizio programma è attiva G27C0.

G27S... Attiva subtemp come ciclo fisso


Modale.
Dopo G27S deve essere programmato il numero che indica la subroutines temporanea (subtemp)
attivata.
Con G27S0 si disattivano le subtemp e i cicli fissi.

G27X Sospende ciclo fisso


Attiva solo nel blocco, sospende solo per il blocco in cui è programmata, l'esecuzione dell'eventuale
ciclo fisso attivo.
Per maggiori chiarimenti sui cicli fissi vedere il capitolo dedicato, più avanti su questo manuale.

G27P... Sottoprogramma permanente


Modale
Dopo G27P deve essere programmato il numero di sottoprogramma permanente da attivare.
Con G27P0 si disattiva il sottoprogramma permanente.
Per maggiori chiarimenti vedere il capitolo dedicato ai sottoprogrammi permanenti.

2.1.14 G28 - attivazione asse


Chiede al CN di tenere sotto controllo l'asse anche quando l'asse non è interessato al movimento in
corso (asse vivo).

D. ELECTRON 23
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Modale, con arresto.


Dopo G28 deve essere specificato il nome (per esempio X) dell'asse che si vuol tenere vivo, per
esempio G28X.
Deve essere specificato un solo asse, tra quelli definiti come continui dalle tarature di macchina.
Se si vogliono attivare più assi si può programmare G28 più volte nella stessa riga o in righe
successive. Per esempio:
G28Z G28A
chiede di tenere sempre sotto controllo gli assi Z e A.
Alcuni assi (impostati nelle tarature di macchina) possono essere definiti come vivi fin
dall'accensione: ad ogni inizio programma (reset) è ripristinata la situazione di assi vivi/non vivi
dell'accensione.
Attenzione: è possibile stabilire nelle impostazioni di macchina (tarature) che
lo stato degli assi (vivi/non vivi) sia trasparente al reset, (assi vivi trasparenti
al reset). Se questa opzione è attiva lo stato degli assi (vivi/non vivi) rimane
inalterato anche allo spegnimento del CN.
È lecita, e non ha effetto, la richiesta di attivare un asse già vivo.
Fino a Possono essere vivi contemporaneamente fino a 13 assi, ma ogni asse vivo richiede al
13 assi microprocessore un impegno supplementare, che può non essere compatibile con configurazioni di
vivi sistema molto complesse. È perciò consigliabile tenere vivi sempre solo gli assi realmente necessari.
Al momento della presa in controllo di un asse in precedenza non attivo lo Z32 acquisisce la quota
reale dell'asse, senza andare in allarme se la quota era stata spostata dall'ultimo posizionamento. Ciò
permette di:
1) portare un asse in quota e abbandonarlo
2) muovere l'asse con mezzi diversi dal CN (manuale, da logica o con altri automatismi)
3) riprendere l'asse sotto controllo dalla quota effettiva senza che si verifichino errori
Si noti che il parametro quota asse non viene inizializzato da G28, anche se in precedenza l'asse
era 'morto'. L'acquisizione delle quote assi nei relativi parametri è fatta esclusivamente con G105
(vedere paragrafo relativo).
L'attivazione dell'asse viene eseguita prima degli eventuali moti assi contenuti nella riga. Esempio
(macchina con XYZ sempre vivi e B continuo non vivo):
...
N10 G0 X0 Y0 Z0 F300
N11 G28B B0
N12 G1 Z-10
N13 Y50 B50 G29B
...
Nel caso di assi ciclici devono essere tenute presenti alcune particolarità vedere a proposito nel
capitolo “Prestazioni speciali” il paragrafo “Assi continui ciclici”.
Per la gestione degli assi SCARA la funzione G28 ha un comportamento particolare, perché sia i
due assi fisici che i due assi fittizi, vengono attivati e disattivati insieme (ved. manuale di impiego M95,
capitolo allarmi CN..13).

Ciclo automatico G28-G29 se programmato asse non vivo


È possibile in semiautomatico o automatico da part-program programmare un asse non vivo senza
bisogno del G28 preventivo: il risultato è equivalente ad avere programmato G28 (attivazione) e G29
(disattivazione).

24 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Questo ciclo automatico non viene fatto se è attiva la G98, che non ammette al suo interno funzioni
che richiedano l'arresto. L'allarme CN3A14 ASSE NON VIVO può quindi venire solo se si tenta di
programmare un asse non vivo con G98 attiva.
Se si programma un asse non vivo, e l'asse è già sotto la soglia di posizionamento definita in
taratura, il movimento programmato viene ignorato e quindi non si genera l'inutile ciclo di
sblocco/blocco, con notevole risparmio di tempo.
Naturalmente se l'asse è vivo viene eseguito qualsiasi movimento, anche se di lunghezza inferiore
alla soglia di posizionamento.
Il ciclo di sblocco/blocco viene comunque generato se l'asse non vivo è uno dei tre della terna di
lavoro attiva al momento, ma dovrebbe essere una situazione decisamente non usuale: gli assi della
terna di lavoro infatti sono tipicamente sempre vivi.
Nel caso che si programmasse l'origine sulla stessa riga, del movimento dell’asse morto, ad
esempio:
G29B ... (l'asse B è "morto")
OB1 B0
verrà forzata comunque l'esecuzione del ciclo di sblocco e blocco dell'asse stesso.
Ciò significa che, se nella stessa riga dove è programmato il movimento è programmata anche
l'origine, ci sarà sempre il ciclo di sblocco e blocco dell'asse, anche se l'asse è già posizionato e quindi
rimane fermo. Sarà compito del programmatore, se vuole eliminare questo ciclo, spezzare la riga in
due e programmare l'origine in una riga precedente.
Se viene programmato un asse morto con, nella stessa riga, la programmazione di G53 o G54.
Per esempio:
N100 G53 B10 X20 (B è un asse morto)
L’asse morto l'asse viene comunque reso vivo, anche se compie un movimento nullo.

Nota sulla gestione della programmazione degli assi non vivi


Se da part-program si programma il movimento di un asse non vivo, l'asse viene automaticamente
attivato, ma solo se la posizione fisica dell'asse non coincide con quella programmata.
La posizione fisica dell'asse è considerata coincidente con quella programmata se l'errore è
inferiore all'errore di posizionamento di taratura (normalmente dell'ordine di qualche centesimo).
Può nascere qualche problema se l'errore è molto vicino a quello tollerato. Se la quota rilevata
dell'asse non vivo (che non dovrebbe muoversi) ha dei piccoli cambiamenti tali che l'errore passi da
sotto a sopra la soglia di taratura può verificarsi un allarme CN1513.
La quota rilevata può oscillare di qualche passo rilevatore, pur rimanendo entro la soglia di
posizionamento, quindi il sorpasso della soglia si può verificare se la posizione è già al limite della
tolleranza, il che accade per esempio quando:
− una tavola girevole (o altro asse) durante il bloccaggio ha un leggero movimento che la
porta molto vicino all'errore di taratura ammesso
− viene programmato un movimento di un asse bloccato di entità di poco inferiore alla soglia
di posizionamento
In questi casi si consiglia di non utilizzare l'attivazione automatica dell'asse morto e di forzarlo vivo
direttamente da part-program.

2.1.15 G29 - disattivazione asse


Chiede al CN di abbandonare l'asse specificato.
Modale, con arresto.
Dopo G29 deve essere specificato il nome (p. es. X) dell'asse che si vuole abbandonare.

D. ELECTRON 25
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Deve essere specificato un solo asse, tra quelli definiti come continui dalle tarature di macchina.
Se si vogliono disattivare più assi, si può programmare G29 più volte nella stessa riga o in righe
diverse.
Per esempio: G29X G29A chiede al CN di abbandonare l'asse X e l'asse A.
È lecita, e non ha effetto, la richiesta di disattivare un asse non attivo.
La disattivazione dell'asse si ha dopo gli eventuali moti assi contenuti nella riga.
Nel caso di assi ciclici devono essere tenute presenti alcune particolarità, vedere a proposito nel
capitolo “Prestazioni speciali” il paragrafo “Assi continui ciclici”.
Per l'esempio vedere G28.

2.1.16 G30 - G31 - programmazione incrementale del cerchio


La funzione G31 (modale con arresto, annullata da G30) attiva la programmazione incrementale del
centro cerchio.
Serve per rendere più compatibile Z32 con part-program generati per altri CNC.
Le differenze di comportamento con G31 attiva e non attiva sono indicate nella tabella seguente:

G31 attiva G31 non attiva


I parametri che determinano il centro del I parametri che determinano il centro del
cerchio sono: cerchio sono:
I (associato all’asse X) I (associato al 1.o asse della terna G25)
J (associato all’asse Y) J (associato al 2.o asse della terna G25)
K (associato all’asse Z) Ad esempio:
Con G25XYZ: I è associato a X e J a Y
Con G25ZXY: I è associato a Z e J a X
Se si programmano cerchi, i primi due Se si programmano cerchi i primi due assi
assi della terna devono essere scelti tra della terna possono essere qualsiasi, ad
X,Y e Z esempio è ammesso:
Ovvero sono ammessi solamente i piani G25VWZ
XY, ZX, YZ
G2 V… W… I… J…
I, J e K sono incrementali a partire dal I, J sono assolute (le coordinate assolute del
punto iniziale del cerchio (le coordinate centro cerchio sono determinate dai valori di I
assolute del centro cerchio si ottengono e J)
sommando i valori di I, J, K alla
coordinata assoluta del punto iniziale)
I cerchi si possono programmare solo I cerchi si possono programmare con tutti i
con le combinazioni seguenti: modi previsti dalla geometria piana di Z32
G2/G3 X...Y...I...J... (piano di lavoro XY)
G2/G3 X...Z...I...K... (piano di lavoro ZX)
G2/G3 Y...Z...J...K... (piano di lavoro YZ)

26 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

2.1.17 G33 - filettatura


Modale in esecuzione automatica, attiva solo nel blocco in semiautomatico.
Funzione tipica dei torni, ma usabile anche per frese.
G33 disattiva G0, G94 (mm/min), G95 (mm/giro), G96 (m/min), attiva G1.
G33 è disattivata da G0, G93, G94, G95, G96. Se è disattivata con G0 rimane automaticamente
attiva G95 (mm/giro).
Se il primo tratto di filettatura è circolare occorre programmare G33G2 oppure G33G3. Notare che
G33 deve precedere nella riga G2/G3: se G2 o G3 sono programmati prima di G33 (es. G2G33) sono
annullati da G33 che forza G1.
Con G33 attiva non possono essere programmate tutte le funzioni che richiedono l'arresto (ossia
per esempio tutte le funzioni ausiliarie M, MA, MB, MC, S, G4 ecc.). Se una di queste funzioni è
programmata con G33 attiva il CN dà allarme: CN3C14 G33, G34, G35 o G63 ATTIVA.
Se si programma G28 o G29 oppure si programma il movimento di un asse morto, che quindi
dovrebbe essere attivato e disattivato, esce il messaggio di allarme :
CN6214 CAMBIO ASSI VIVI + G33/G34/G35/G63
Con G33 attiva (come per G84, maschiatura) non viene incrementato il numero progressivo di
operazione: in ricerca blocco con numero progressivo è perciò possibile solo ricercare il primo blocco
in G33.
Durante la G33 non sono attivi:
− override assi
− override mandrino
− blocco singolo
La filettatura può avvenire per tratti circolari o rettilinei nel piano, comunque orientati.
Il passo della filettatura è impostato col parametro K, che può essere programmato nel blocco
oppure in blocchi precedenti.
Passo K K determina il passo lungo la direttrice di filettatura, ossia rappresenta la distanza tra due filetti.
Se la filettatura è conica, il passo lungo l'asse longitudinale risulta più corto per la presenza
dell'inclinazione.
Durante la G33 è attiva la compensazione di anticipo della velocità (modo normale dello Z32, in cui
non si ha un errore proporzionale alla velocità). Si hanno perciò errori limitati anche in presenza di
variazioni della velocità del mandrino: è comunque consigliabile, per ottenere una perfetta finitura del
filetto, che la velocità mandrino sia stabilizzata e costante durante la filettatura.
Più movimenti di filettatura possono essere eseguiti in sequenza: il passo del filetto è mantenuto
costante, salvo che siano richieste accelerazioni o velocità superiori a quelle di taratura. In questo caso
la velocità viene ridotta e le accelerazioni mantenute nei limiti, il passo viene momentaneamente perso
Aggancio e recuperato non appena i movimenti sono compatibili con la dinamica della macchina.
al volo Il primo filetto è sincronizzato col passaggio per lo zero del mandrino: è possibile eseguire la
filettatura profonda in più passate con rientro nel filetto.
La filettatura a più principi è possibile spostando il punto di partenza.
Esempio:
...
N10 G0 X0 Z0
N11 G33 Z-100 K2.5
...

D. ELECTRON 27
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

L'entrata nella G33 (filettatura), cioè l’aggancio al primo filetto sincronizzato col passaggio per lo
zero del mandrino è morbida, pur senza allungare la fase di presa del filetto, grazie a un anticipo
calcolato con cui si muove l'asse lineare che entra in filettatura.
E’ inoltre possibile definire nelle impostazioni macchina il tempo di attacco della G33, cioé la rampa
iniziale di accelerazione quando inizia una filettatura. Per questa prestazione riferirsi alle specifiche del
costruttore della macchina utensile.

2.1.18 G34 - G35 - filettatura a passo variabile


Il termine “filettatura a passo variabile” indica una filettatura il cui passo non è costante ma varia
con continuità secondo una prestabilita entità di variazione.
La filettatura a passo variabile viene programmata mediante due diverse funzioni G:
- G34 = filettatura a passo crescente
- G35 = filettatura a passo decrescente
Tutto quanto è riportato nel precedente paragrafo riguardo alla filettatura a passo fisso (G33) resta
valido anche per la filettatura a passo variabile (G34 e G35).
Vediamo il significato dei parametri inerenti alla programmazione sia di G34 che di G35:
K = passo (mm o pollici) iniziale della filettatura. Parametro che può essere impostato nel blocco di
G34/G35 oppure in blocchi precedenti. ATTENZIONE: se il parametro K viene riprogrammato nei
blocchi successivi, con G34/G35 sempre attiva, si ha una brusca variazione di passo.
I = incremento del passo espresso in mm/giro o pollici/giro. Parametro che si può programmare
solo nella riga del blocco G34/G35. Questo parametro è sempre positivo (è il sistema che a seconda
che sia nel blocco con G34 o G35 gli dà il segno positivo o negativo) e se viene programmato negativo
viene comunque preso come valore assoluto. Con G34 esprime il numero di mm/giro o pollici/giro di
cui il passo K aumenta, con G35 il numero di mm/giro o pollici/giro di cui il passo K diminuisce.
ATTENZIONE: se in conseguenza al decremento di K si arriva ad un passo <=0 viene dato l’allarme
(in tempo reale) CN1F13 - PASSO FILETTATURA MINORE O UGUALE A ZERO
Movimenti di filettatura con passo fisso o variabile possono essere eseguiti in sequenza: il passo di
filettatura varierà con continuità o rimarrà costante o avrà una discontinuità a seconda della funzione di
filettatura programmata e dei parametri programmati.
ATTENZIONE: quando programmo una G33 l’incremento I viene messo automaticamente a zero,
quindi l’eventuale successiva G34/G35 dovrà avere programmato il valore dell’incremento I, altrimenti
si comporterà come una G33 (a passo fisso).
Esempio 1:
G0 X0 Y0 Z0
M3 S200
G34 K2 I0.5 Z30 filettatura con passo crescente di 0.5 mm/giro a partire dal
passo iniziale 2 fino a Z30
G33 Z50 filettatura con passo uguale a quello finale raggiunto nel
blocco precedente fino a Z50, pone incremento passo = 0
G35 Z70 filettatura a passo decrescente che però non essendo stato
programmato I dopo la G33 si comporta come una filettatura a
passo fisso
Esempio 2:
G0 X0 Y0 Z0
M3 S200

28 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

G34 K2 I0.5 Z30 filettatura con passo crescente di 0.5 mm/giro a partire dal
passo iniziale 2 fino a Z30
G33 Z50 filettatura con passo uguale a quello finale raggiunto nel
blocco precedente fino a Z50, pone incremento di passo = 0
G35 Z70 I0.25 filettatura a passo decrescente di 0.25 mm/giro a partire dal
passo del blocco precedente fino a Z70
Esempio 3:
G0 X0 Y0 Z0
M3 S200
G34 K2 I0.5 Z30 filettatura con passo crescente di 0.5 mm/giro a partire dal
passo iniziale 2 fino a Z30
G33 Z50 K3 filettatura con passo 3 fino a Z50 ATTENZIONE: se il passo
finale raggiunto nel blocco precedente non è 3 si ha un salto di
passo
G35 Z70 I0.25 filettatura a passo decrescente di 0.25 mm/giro a partire dal
passo del blocco precedente fino a Z70
Esempio 4:
G0 X0 Y0 Z0
M3 S200
G34 I0.5
K5 Z30 filettatura con passo crescente di 0.5 mm/giro a partire dal
passo iniziale 5 fino a Z30
G35 Z60 filettatura a passo decrescente di 0.5 mm/giro a partire dal
passo finale del blocco precedente fino a Z60 (da G34 a G35
si mantiene l’incremento programmato I0.5)
Esempio 5:
G0 X0 Y0 Z0
M3 S200
G34 I0.9
K5 Z50 filettatura con passo crescente di 0.9 mm/giro a partire dal
passo iniziale 5 fino a Z50
G35 Z60 K4 I0.8 filettatura a passo decrescente di 0.8 mm/giro a partire dal
passo 4 fino a Z60. ATTENZIONE c’è un salto di passo dato
che il passo finale del blocco precedente non è certamente 4.

2.1.19 G36 - gestione numero progressivo


Sono disponibili cinque diverse possibili operazioni sul numero progressivo, per permettere al
programmatore di guidare la ricerca blocco in caso di particolari operazioni.

G36*
G36* chiede al CN di forzare il numero progressivo di operazione (usato nella ricerca blocco) al
valore successivamente specificato.
Attiva solo nel blocco.
Dopo G36* deve essere programmato il numero a 8 cifre (max 16777216) che si desidera
introdurre nel numero progressivo. Gli zeri iniziali possono essere omessi. Per esempio:

D. ELECTRON 29
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

G36 * 200
forza il numero progressivo al valore di 200.
Può essere utile in caso di programmi ciclici, ossia che non trovano mai la M2 perché a fine
programma c'è un salto senza ritorno all'inizio.
Esempio:
PROGRAMMA CONTINUO %
N1 G36*0
N2 ...
...
N100 M0 (CAMBIA PEZZO E PREMI START)
N101 !GON1!
Con questo programma si imposta un ciclo continuo di lavorazione: l'operatore deve cambiare il
pezzo a fine programma e premere START per eseguire la lavorazione sul nuovo pezzo. Se non ci
fosse il G36*0 all'istruzione N1, il numero progressivo si incrementerebbe indefinitamente, tanto da
rendere impossibile una eventuale ricerca blocco. Col G36*0 invece il numero progressivo riprende da
zero e la ricerca blocco si esegue normalmente.

Ricerca blocco, numero progressivo


Il numero progressivo di operazione elementare (che condiziona poi la ricerca blocco con '*' o
numero progressivo) può arrivare fino al massimo di 16777216, dopodiché riparte da zero.
Questo numero appare sufficiente anche per programmi molto lunghi: per dare un'idea, se un part-
program viene eseguito a 100 blocchi/secondo l'azzeramento del numero progressivo avviene dopo
oltre 46 ore di lavoro ininterrotto, e il part-program, ammettendo un minimo di 10 caratteri a blocco,
sarebbe lungo 160 Megabytes.

G36H/G36S halt/start
Chiedono al CN di arrestare (H) e di riprendere (S) il conteggio del numero progressivo.
Modali. Al reset è attivo G36S.
Sono utili nel caso che il programmatore non voglia turbare il regolare avanzamento del numero
progressivo nel caso di operazioni che dipendono da situazioni di macchina contingenti, oppure nel
caso che non si voglia permettere la ricerca blocco all'interno di una sequenza di operazioni.
Durante l'esecuzione di M speciali o cicli fissi di sistema il numero progressivo è automaticamente
bloccato al valore iniziale (equivale a una operazione G36H all'inizio del sottoprogramma e una
operazione G36S alla fine del sottoprogramma). Non è perciò mai possibile una ricerca blocco
all'interno di M speciali o cicli fissi di sistema. Per la natura dei problemi coinvolti, sono prestazioni da
riservare al costruttore della macchina utensile o a programmatori molto esperti.
Esempio:
...
N10 G0 X0 Y0 Z0 F1000
N11 M70 ciclo di misura del tastatore
N12 !IF AM<9000 ;GON16!
N13 G36H da questo punto il numero progressivo non cambia
N14 T<T>M6 il cambio utensile cerca l'utensile sostitutivo
N15 G36S riprende il conteggio
N16 ... qui il numero progressivo è sempre lo stesso
...

30 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

G36R/G36W read/write
G36R/G36W chiedono al CN rispettivamente di leggere il numero progressivo nel parametro HX e
viceversa di scrivere nel numero progressivo il contenuto del parametro HX.
Attive solo nel blocco, con arresto.
Servono a manipolare il numero progressivo nel caso di ripetizione di operazioni.
Anche queste prestazioni sono da riservare al costruttore della macchina utensile o a
programmatori molto esperti. L'esempio deve considerarsi esclusivamente didattico.
Si abbia una macchina con apparecchio per il controllo dell'integrità utensile durante la lavorazione,
collegato alla logica di macchina che permette di eseguire movimenti in G62. Se durante il movimento
è rivelato utensile usurato si vuole cambiare l'utensile e ripetere il movimento, senza variare il normale
flusso del numero progressivo.
...
N20 G0 X0 Y0 Z0
N21 G1 G62 F1000 Z-20
N22 !IF AM<9000;GON26!
... qui cambia l'utensile e ripete
N23 G36H Z100 T<T> M6 utensile sostitutivo
N24 G36R HX<HX-2> G36W G36S ripristina vecchio numero
N25 !GON20! ripete le operazioni
N26 ...

2.1.20 G37 - commutazione files locali/globali


Attiva le sezioni locali o globali dei parametri, origini e utensili di ciascun processo.
Modale.
Dopo G37 si devono specificare due lettere come segue:
G37PL attiva sezione locale parametri
G37PG attiva sezione globale parametri
G37OL attiva sezione locale origini
G37OG attiva sezione globale origini
G37TL attiva sezione locale utensili
G37TG attiva sezione globale utensili
Al reset sono attive G37PG, G37OG , G37TG.
Per sezione locale si intende una sezione parametri (inizia con :PA), origini (inizia con :OS), utensili
(inizia con :TL) posta in coda al programma. Possono mancare una o più sezioni locali: le sezioni
esistenti possono essere inserite in qualsiasi ordine.
Se G37 è programmato ed eseguito in un sottoprogramma, è attivata la sezione locale di quel
sottoprogramma. Né la chiamata di sottoprogramma né il ritorno da sottoprogramma cambiano la
sezione attiva.
Per esempio, se il processo è 0:
PROG.PRINCIPALE(FILE N.1)%
...
N10 G37PL
....

D. ELECTRON 31
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

N15 G37TL
...
N20 !GOP100! --------------------------- (SOTTOPROGRAMMA 100)
(PROSEGUE PROG.PRINCIPALE) SPRG.100(FILE N.100)%
N21 ... ...
... N18G37PL ...
N80 M2 ...
N64 G26
In questo esempio:
− la sezione origini è sempre quella globale (file 126)
− la sezione utensili:
− è globale (file 127) dall'inizio a N15 del programma principale
− è locale del file 1 da N15 a fine programma, incluso il sottoprogramma
− la sezione parametri:
− è globale (file 125) dall'inizio a N10 del programma principale
− è locale del file 1 da N10 del prog. principale a N18 del sottoprogramma 100
− è locale del sprg. 100 da N18 del sprg.100 alla fine del programma principale.
Il programmatore tenga presente che, mentre non vi sono in genere particolari cautele per l'uso di
sezioni locali di parametri e origini, l'uso di sezioni locali di utensili può avere implicazioni di sistema
assai importanti: si consiglia perciò sempre di CONSULTARE IL COSTRUTTORE DELLA MACCHINA
UTENSILE per gli effetti delle sezioni locali utensili sui sottoprogrammi di sistema (in particolare
cambio utensili, gestione eventuale utensile sostitutivo, usura utensile ecc…).
Se G37O… e le origini relative sono programmate nella stessa riga, la G37 deve precedere la
origine, altrimenti l'origine è calcolata nella sezione vecchia. Esempio:
...
N10 G37OL OX1 OY1 OZ1
...

2.1.21 G38 - riattivazione cambio utensile


Riprende l'esecuzione in automatico del cambio utensile.
Modale.
Annulla G39: al reset è attiva G38.

2.1.22 G39 - sospensione cambio utensile


Sospende l'esecuzione in automatico del cambio utensile.
Modale.
Con G39 attiva la M6 (cambio utensile) non viene più eseguita in automatico, ma provoca uno
STOP della macchina per consentire all'operatore di fare il cambio utensile manuale. Quando
l'operatore, dopo fatto il cambio, preme il pulsante START, il programma viene ripreso dal punto di
interruzione e il cambio utensile è considerato fatto.
Quindi l'utensile programmato è considerato a tutti gli effetti montato sul mandrino, con acquisizione
della descrizione utensile ecc.
Esempio:

32 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

...
N10 G39
N12 T10 M6 (CAMBIARE A MANO CON FRESA R=10)
N13 G38
...

2.1.23 G40 - fine correzione raggio


Fine correzione raggio utensile.
Modale. Annulla G1, G2, G3, G41, G42.
All'accensione è attiva G40.
È programmata quando è attiva G41 o G42, per terminare la contornatura.
Quando è programmata G40 il profilo deve essere chiuso.
Vedere anche il capitolo dedicato alla correzione raggio.

2.1.24 G41 - correzione raggio con utensile a sinistra


Utensile a sinistra
Inizio della correzione raggio: l'utensile è a sinistra del pezzo.
Modale.
La G41 fa entrare il controllo nel modo CORREZIONE RAGGIO che permette di programmare il
profilo del pezzo anziché il percorso del centro fresa.
La correzione raggio avviene nel piano di contornatura (primi due assi della terna di lavoro).
Vedere capitolo dedicato alla correzione raggio.

2.1.25 G42 - correzione raggio con utensile a destra


Utensile a destra
Stesso come per G41, solo con utensile a destra del pezzo anziché con utensile a sinistra.

2.1.26 G43 - correzione lunghezza utensile positiva


Inizia la correzione lunghezza utensile positiva.
Modale, con arresto.
Deve essere seguita dal nome dell'asse sul quale deve essere fatta la correzione lunghezza
utensile (es. G43X).
All'accensione e ad inizio programma è attiva G43 sul terzo asse continuo della macchina: se gli
assi continui sono XYZUV alla accensione e ad ogni inizio programma è attiva G43Z.
Dopo che è attivata la G43 a tutte le quote dell'asse interessato alla correzione sono modificate in
modo da tenere conto di un utensile di lunghezza positiva montato sul mandrino: dalle quote
visualizzate viene perciò sottratta la lunghezza (contenuta nel parametro L). Ciò equivale a sommare la
lunghezza L alle quote programmate.
L'effetto della lunghezza utensile è cumulato con quello della origine base e della eventuale origine
supplementare.

D. ELECTRON 33
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Per altre informazioni vedere anche il capitolo dedicato alla gestione utensili.
Vale l'esempio per G45.

G43 per sistemi tornio


Con G43 attiva, invece del parametro L, vengono utilizzati i parametri LX e LZ, che esprimono le
lunghezze utensile sull'asse X e sull'asse Z del tornio.
In sistemi tipo tornio, non si deve specificare l’asse dopo la programmazione della G43.

2.1.27 G44 - correzione lunghezza utensile negativa


Come G43, di cui è mutuamente esclusiva, salvo il segno della correzione.
Quando è attiva G44 il parametro L è sottratto anziché sommato alle quote programmate dell'asse
su cui è attiva la correzione lunghezza.
Poiché lo Z32 ammette che il parametro L sia negativo, è probabilmente più comodo per il
programmatore cambiare il segno di L invece che usare G44.
Per l'esempio vedere G45.

G44 per sistemi tornio


Con G44 attiva, invece del parametro L, vengono utilizzati i parametri LX e LZ, che esprimono le
lunghezze utensile sull'asse X e sull'asse Z del tornio.
In sistemi tipo tornio, non si deve specificare l'asse dopo la programmazione della G44.

2.1.28 G45 - sospensione correzione lunghezza


Disattiva le correzioni utensili G43 e G44.
Modale, con arresto.
Il parametro L non viene modificato da G45.
Esempio. Nei commenti sono riportate le quote del visualizzatore del CN, (gli assi non si muovono):
...
N10 G45 G0 X0 Y0 Z0
N11 L100 (X=0, Z=0)
N12 G43Z (X=0, Z=-100)
N13 G44Z (X=0, Z=+100)
N14 G43X (X=-100, Z=0)
N15 G45 (X=0, Z=0)

G45 per sistemi tornio


Con G45 invece del parametro L, vengono disattivate le lunghezze LX e LZ, che esprimono le
lunghezze utensile sull'asse X e sull'asse Z del tornio.

2.1.29 G53 - sospensione correzioni origini e lunghezze


Sospende la correzione origini e lunghezze, nonché le trasformazioni di quote: rototraslazione,
specularità, fattore di scala.
Modale, con arresto.

34 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Può servire per programmare movimenti della macchina in quote assolute (quindi comprensive solo
della origine base).
Lo stato programmato delle correzioni origini e lunghezza (G43-44, Origini, ...) resta memorizzato
anche durante G53 attiva, e viene ripristinato da G54.
È lecito modificare durante G53 attiva le origini, G43 ecc.: l'effetto di queste modifiche resta
sospeso fino a G54.

2.1.30 G54 - attivazione correzione origini e lunghezze


Annulla l'effetto di G53.
Modale, con arresto, attiva al reset.
L'azione di G54 è di riattivare le correzioni origini e lunghezza memorizzate e sospese dalla G53: se
lo stato memorizzato prevede origini e/o lunghezze non attive, queste restano non attive anche dopo
G54.
La G54 provoca l'acquisizione del parametro L come effettivo correttore della lunghezza utensile.
Vedere anche il capitolo dedicato alla gestione degli utensili.
Per il costruttore della macchina utensile: una G54 programmata all'interno di un sottoprogramma
associato a una M speciale o a un ciclo fisso di sistema annulla solo la eventuale G53 programmata
all'interno di quel sottoprogramma speciale: se nel programma utente era attiva G53 al momento della
chiamata al sottoprogramma speciale, la G53 resta attiva. In altre parole: dall'interno di un
sottoprogramma speciale non si può annullare, con una G54, una eventuale G53 programmata nel
programma utente. Il sottoprogramma speciale è perciò trasparente agli effetti di G53/G54.
Per l'uso di G102/G103 all'interno dei sottoprogrammi di sistema al posto di G53/G54 vedere il
paragrafo relativo a G102 e G103.
Esempio (tra parentesi le quote del visualizzatore).
...
N10 G37OL OX1 OY0 OZ0 L0 G0 X0 Y0 Z0 G43Z G54
N11 L57,5 (X=0, Z=-57,5)
N12 G53 (X=+68.3, Z=0)
N13 OX2 L100 (X=+68.3, Z=0)
N14 G54 (X=+10, Z=-100)
...
:OS
X1=-68.3
X2=-78.3

2.1.31 G55 - disattivazione specularità


Annulla l'effetto di G56.
Modale, attiva al reset.
Non può essere programmata mentre G41 o G42 sono attive.
La specularità può anche essere sospesa con G53.
Vedere anche il capitolo dedicato alla Specularità.

D. ELECTRON 35
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

2.1.32 G56 - attivazione specularità


Chiede allo Z32 di eseguire il profilo speculare del programmato rispetto ad un asse di specularità
individuato dal punto (IS, JS) e dalla pendenza QS.
Modale.
Può essere attiva durante la correzione raggio (G41 e G42) ma non può essere programmata
mentre G41 o G42 sono attive. Vedere anche il capitolo dedicato alla Specularità.

2.1.33 G61 - movimento di misura


Richiede un movimento di misura con tastatore.
Attiva solo nel blocco, con arresto.
Annulla G1, G2, G3, G10. A fine movimento resta attiva G0.
Vedere il capitolo “Prestazioni speciali”, paragrafo “Tastatore di misura G61”.

2.1.34 G62 - movimento con stop da logica


Richiede un movimento che può essere interrotto da logica di macchina.
Attiva solo nel blocco, con arresto.
Può essere programmata con movimenti in G1, G2, G3 (solo movimenti semplici, non in correzione
raggio).
Vedere il capitolo “Prestazioni speciali”, paragrafo “Moto con stop da logica G62”.

2.1.35 G63 - maschiatura rigida


Attiva solo nel blocco, con arresto.
Con G63 si ordina un movimento di maschiatura composto da:
− avanzamento con passo K fino alla quota programmata
− inversione al volo del mandrino
− ritorno indietro fino alla quota di partenza.
Il movimento degli assi programmati (normalmente un solo asse: lo Z) è rigidamente legato a quello
del mandrino per tutta la durata del ciclo (un incremento K ogni giro mandrino).
Esempio:
...
N10 G0 X0 Y0 Z10 S600 M3
N11 G63 K1 Z-50
N12 G0 X-10
N13 G63 Z-50
...
N10: posizionamento in rapido a inizio foro e marcia mandrino
N11: ciclo di maschiatura. È necessario che il mandrino sia a regime prima dell'inizio della
maschiatura.
Composizione del ciclo:
− acquisizione del senso iniziale di rotazione mandrino. Durante questa fase Z32 controlla la
velocità di rotazione e non inizia il movimento fino a che: il senso di rotazione non è giusto
e la velocità di rotazione non è almeno il 25% di quella programmata.

36 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

− attesa del passaggio per lo zero del mandrino


− partenza "a strappo" dell'asse Z. Per lo spazio necessario all'accelerazione dell'asse non si
ha sincronismo tra mandrino e movimento asse: lasciare un margine adeguato perché il
sincronismo sia pienamente raggiunto in aria.
− maschiatura con passo 1 e asse Z sincronizzato al mandrino fino alla quota Z-50
− inversione del mandrino. Durante il tempo di inversione l'asse Z, essendo agganciato al
mandrino, continua ad avanzare oltre la quota -50 programmata per non perdere il filetto;
se l'asse oltrepassa il punto finale di una quantità eccessiva (definibile in taratura,
normalmente 10 mm) si ha l'allarme CN0713. Lasciare comunque uno spazio sufficiente a
fine foro.
− ritorno, sempre con asse Z agganciato al mandrino, alla quota di partenza (Z10)
− posizionamento di Z alla quota di partenza (Z10). Poiché l'asse ha bisogno di uno spazio di
frenata, il sincronismo asse Z/mandrino viene abbandonato a una certa distanza dal punto
finale; il programmatore lasci uno spazio di sicurezza adeguato.
N12: inversione mandrino (che torna in M3) e rapido fino a X-10
N13: altro ciclo di maschiatura. Notare che il mandrino deve aver terminato l'inversione prima
dell'inizio di N13. Fintanto che non si è avuta l’inversione del senso di rotazione del mandrino e
non è stato raggiunto almeno 1/4 della velocità di rotazione nominale, viene inibito l’inizio di
una maschiatura successiva. In ogni caso però l’inizio di una maschiatura successiva è
consentito dopo 5 secondi dall’inversione precedente.
Il passo di maschiatura K è sempre in millimetri anche se la machina è impostata in pollici.
È possibile "ripassare" un filetto già eseguito (ma solo se il maschio nel mandrino non è stato
ruotato!) in quanto la partenza del movimento è sincronizzata al passaggio per lo zero del mandrino.
Con G63 attiva non possono essere programmate tutte le funzioni che richiedono l'arresto escluso
il G4 (ossia per esempio tutte le funzioni ausiliarie M, MA, MB, MC, S, ecc.). Se una di queste funzioni
è programmata con G63 attiva il CN dà allarme: CN3C14 G33, G34, G35 o G63 ATTIVA.
Se si programma il movimento di un asse morto, che quindi dovrebbe essere attivato e disattivato,
esce il messaggio di allarme: CN6214 CAMBIO ASSI VIVI + G33/G34/G35/G63
Durante la G63 non sono attivi gli overrides (assi e mandrino) e feed-hold. Il reset e lo stop sono
attivi ma possono essere disabilitati in logica se il costruttore della macchina utensile lo ritiene
necessario.
Per usare la G63 occorre che la macchina sia predisposta. In particolare occorre:
− il rilevatore sul mandrino collegato al CN
− gestione in logica programmabile della inversione a volo del mandrino e delle sicurezze di
velocità mandrino raggiunta.
È consigliabile che il costruttore fornisca un ciclo fisso di maschiatura rigida che gestisca le
eventuali funzioni ausiliarie relative al mandrino.
L'errore di inseguimento (una volta in un senso e una volta nell'altro) con cui si muovono gli assi
con G113P attiva (moti morbidi) non è compatibile con la maschiatura rigida. I moti morbidi vengono
automaticamente sospesi durante i movimenti di maschiatura rigida.
L'entrata nella G63 (maschiatura rigida), cioè l’aggancio al primo filetto sincronizzato col passaggio
per lo zero del mandrino è morbida, pur senza allungare la fase di presa del filetto, grazie a un anticipo
calcolato con cui si muove l'asse lineare che entra in maschiatura rigida.
E’ inoltre possibile definire nelle impostazioni macchina il tempo di attacco della G63, cioé la rampa
iniziale di accelerazione quando inizia una maschiatura rigida. Per questa prestazione riferirsi alle
specifiche del costruttore della macchina utensile.

2.1.36 G70 - G71 - programmazione in pollici/millimetri


G70:

D. ELECTRON 37
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

- Forza programmazione in pollici su macchina definita in millimetri in taratura


- Ripristina situazione standard (programmazione in pollici) su macchina definita in pollici in taratura
G71:
- Forza programmazione in millimetri su macchina definita in pollici in taratura
- Ripristina situazione standard (programmazione in millimetri) su macchina definita in millimetri in
taratura
Le funzioni G70/G71 sono con arresto.
Al reset viene ripristinata la situazione standard definita in taratura (cioè viene eliminata una
eventuale forzatura).
Valgono le seguenti regole:
- Durante il comportamento forzato (ad esempio macchina in millimetri forzata in pollici), tutti gli assi
lineari vengono scalati secondo il fattore di scala 25.4 (1 pollice = 25.4 millimetri). Gli assi rotativi non
verranno invece scalati. Pertanto, se la macchina ha assi rotativi, questi dovranno essere definiti
obbligatoriamente come rotativi in taratura, altrimenti verranno anche essi scalati con il fattore 25.4.
- E' possibile programmare qualsiasi profilo geometrico (G0, G1, G2, G3) inclusi raggi di raccordo
(RR), e smussi (RB). Tutta la programmazione di elementi geometrici viene scalata secondo la
modalità G70/G71 impostata.
- Dopo l'attivazione di comportamento forzato (macchina in millimetri forzata in pollici oppure
macchina in pollici forzata in millimetri) vengono considerati in pollici (se la macchina è in millimetri,
altrimenti in millimetri se la macchina è in pollici) tutte le grandezze seguenti:
quote degli assi lineari (X,Y,Z,...) in blocchi di movimento (G0, G1, G2, G3)
centro di cerchi (I,J) in blocchi di movimento (G2, G3)
traslazioni (DA, DB, DC)
raccordi (RR)
smussi (RB)
centro di rotazione (IR, JR)
centro asse specularità (IS, JS)
feed (F)
fattori aggiuntivi sulle quote di assi lineari (KDX, KDY, KDZ, ...)
parametro DM (distanza da effettuare in lavoro in movimento G61)
- Dopo l'attivazione del comportamento forzato NON vengono modificate le seguenti grandezze:
lunghezze utensile (L, LX, LZ)
raggio utensile (R)
valore delle origini
In questo modo le tabelle utensili e le tabelle origini continuano ad essere valide (e riferite all’unità
di misura definita in taratura), qualsiasi sia la modalità impostata.
- Gestione della feed
Prendendo per esempio una macchina in millimetri forzata in pollici con G70.
-> Prima della funzione G70 la feed viene espressa in mm/min (funzionamento normale)
-> Dopo la funzione G70, se programmata, la feed è in pollici/min
-> Dopo la funzione G70, se la feed NON viene riprogrammata, resta attiva la feed precedente.
Esempio:

38 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

F1000 (in mm/min)


G1 ...
...
G70 (forzatura macchina in pollici)
G1 X... Y... (qui la feed resta 1000 mm/min)
...
F100 (programmata feed dopo G70, significa 100 pollici/min)
- Le funzioni G70/G71 sono compatibili con l'RTCP testa e tavola e con le rototraslazioni G116 con
le seguenti precisazioni:
-> i parametri X Y Z di traslazione nella funzione G116 devono essere espressi in pollici/millimetri
a seconda della programmazione della G70/G71
-> i parametri I J K X Y Z della funzione G118 devono essere espressi in pollici/millimetri a
seconda della programmazione della G70/G71
-> i parametri I J K della funzione G117 devono essere espressi in pollici/millimetri a seconda
della programmazione della G70/G71
-> i parametri I J K della funzione G120 devono essere espressi in pollici/millimetri a seconda
della programmazione della G70/G71
-> i parametri I J K della funzione G122 devono essere espressi in pollici/millimetri a seconda
della programmazione della G70/G71
- La funzione G105 restituisce le quote in pollici/millimetri coerentemente con la programmazione di
G70 (quote restituite in pollici) oppure G71 (quote restituite in millimetri)
- I parametri I RA della funzione G114 devono essere espressi in pollici/millimetri a seconda della
programmazione della G70/G71
- Le funzioni G61 e G62 restituiscono le quote in pollici/millimetri in funzione della modalità
G70/G71 attiva al momento della loro programmazione
- Le quote dei blocchi di moto definiti tramite NURBS (G6.2) devono essere espresse in
pollici/millimetri a seconda della programmazione della G70/G71
- La funzione G123 è compatibile con le funzione G70/G71, i valori associati agli assi lineari devono
essere espressi in pollici/millimetri a seconda della programmazione della G70/G71
- G70/G71 e M speciali
Quando viene richiamata una M speciale con programmazione forzata da G70/G71,
automaticamente, all'ingresso del programma associato alla M speciale, viene ripristinata la condizione
di taratura, all'uscita dalla M speciale viene ripristinata la situazione G70/G71 presente al momento
dell'ingresso.
Facciamo un esempio, macchina in millimetri forzata in pollici con G70:
...
G70 (forza programmazione in pollici)
...
M63
[-> sottoprogramma M63 eseguito automaticamente in millimetri]
[-> vengono eseguiti in mm anche tutti i programmi eventualmente richiamati dalla M63]
[-> ritorno al programma principale e ripristino automatico della programmazione in pollici]
Nota: TUTTI i programmi eventualmente richiamati dal sottoprogramma associato alla M speciale
M63 verranno comunque eseguiti in millimetri. Pertanto se nella M63 ci fosse ad esempio un !GOP1!,

D. ELECTRON 39
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

il programma 1 verrebbe eseguito in millimetri. La programmazione in pollici viene ripristinata


solamente alla fine dell'esecuzione della M63
ATTENZIONE: all'interno di M speciali NON è possibile programmare nè G70 nè G71, altrimenti
verrà segnalato un errore CN8914 G70/G71 + CICLO FISSO DI SISTEMA O G800/G900.
- G70/G71 e cicli fissi G27C
Quando si è in comportamento forzato (ad esempio macchina in millimetri forzata in pollici), non è
possibile richiamare cicli fissi di sistema (G27C1... G27C30) altrimenti verrà segnalato un errore
CN8914 G70/G71 + CICLO FISSO DI SISTEMA O G800/G900.
E' possibile invece richiamare cicli fissi utente ovvero a partire da G27C31
ATTENZIONE: all'interno di cicli fissi di sistema (G27C1...G27C30) NON è possibile programmare
nè G70 nè G71, altrimenti verrà segnalato un errore CN8914 G70/G71 + CICLO FISSO DI SISTEMA
O G800/G900.
- G70/G71 e funzioni G800/G900
Quando si è in comportamento forzato (ad esempio macchina in millimetri forzata in pollici), non è
possibile richiamare cicli fissi o macro con le funzioni G800/G900, altrimenti verrà segnalato un errore
CN8914 G70/G71 + CICLO FISSO DI SISTEMA O G800/G900.
ATTENZIONE: all'interno di cicli fissi o macro G800/G900 NON è possibile programmare nè G70
nè G71, altrimenti verrà segnalato un errore CN8914 G70/G71 + CICLO FISSO DI SISTEMA O
G800/G900.
- G70/G71 e visualizzazioni
Durante il comportamento forzato (ad esempio macchina in millimetri forzata in pollici), le seguenti
grandezze mostrate a video vengono visualizzate nell’unità di misura forzata, ovvero una macchina in
millimetri le mostra a video in pollici se vengono forzati i pollici tramite G70:
- quote assi
- errori assi
- distanze assi
- distanza interpolata
- feed reale
- feed programmata
- G70/G71 e attività di Z32
La forzatura G70/G71 ha effetto in attività 1 (Automatico), 12 (Semiautomatico o MDI), 3 (Ricerca
blocco).
In attività 4 (JOG) non ha effetto, ma non viene eliminata; chiariamo con due esempi:
Esempio 1 (macchina in mm da taratura):
- lancio in automatico un part program che forza i pollici
- arresto l’esecuzione del part-program, con il tasto STOP, dopo che la forzatura è stata attivata
- premo ESC
- entro in JOG, a questo punto la forzatura non ha più effetto (viene sospesa)
- i movimenti eseguiti in JOG saranno senza forzatura
- ritorno in automatico (la forzatura viene ripristinata)
- riprendo l’esecuzione del part-program che avrà di nuovo la forzatura attiva
Esempio 2 (macchina in mm da taratura):
- in semiautomatico programmo la forzatura in pollici
- eseguo dei movimenti assi che saranno affetti dalla forzatura

40 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

- premo ESC
- entro in JOG, a questo punto la forzatura non ha più effetto (viene sospesa)
- i movimenti eseguiti in JOG saranno senza forzatura
- ritorno in semiautomatico (la forzatura viene ripristinata)
- rieseguo dei movimenti che risentiranno nuovamente dell’effetto della forzatura
La forzatura G70/G71 viene eliminata quando si entra in attività 7 (Zero assi), attività 8 (Moto assi in
ciclo di velocità), attività 11 (Taratura automatica)

2.1.37 G80 - annulla maschiatura in atto


Annulla l'effetto di G84.
Modale, con arresto.
All'accensione e al reset è attiva G80.

2.1.38 G84 - maschiatura in atto


Disattiva override, prova pezzo e blocco singolo e dà la relativa informazione alla logica. Arresta il
numero progressivo, in modo che non possa essere ricercato un movimento interno alla maschiatura.
Vedere anche il ciclo fisso di maschiatura.
Modale, con arresto
Esempio:
...
N10 G0 Z0 F200 S150 M3
N11 G84 G1 Z-56
N12 M4
N13 Z0
N14 G80 G0 Z-100
...

2.1.39 G90 - programmazione quote assi assoluta


Programmazione delle quote degli assi rispetto alle origini attive.
Modale, attiva al reset.
Annulla ed è annullata da G91.
Può essere introdotta in tutte le modalità di funzionamento, rapido, lavoro, correzione raggio, G98,
formule permanenti.

2.1.40 G91 - programmazione quote assi incrementale


Programmazione delle quote degli assi rispetto al punto precedentemente raggiunto.
Modale, annulla ed è annullata da G90.
Può essere introdotta in tutte le modalità di funzionamento, rapido, lavoro, correzione raggio, G98,
formule permanenti.
È lecito programmare G91 con G91 già attiva.

D. ELECTRON 41
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

La G91 è stata introdotta per diminuire la lunghezza del part-program quando i movimenti sono
composti di molti tratti molto corti: sarà tipico l'uso della G91 nel caso di generazione di part-program
con sistemi CAM oppure come restituzione di superfici digitalizzate.
L'effetto di G91 è limitato alle seguenti condizioni:
a) è programmato un asse continuo in riga ISO con valore numerico esplicito (non con
formula matematica)
b) non è in corso un sottoprogramma speciale di sistema (ciclo fisso o M speciale)
L' eventuale programmazione di parametri assi in riga evoluta non è influenzata dalla G91 attiva: il
parametro associato alla quota asse assume, come nel caso della G91 non attiva, il valore
programmato.
Per togliere anche la necessità del punto decimale, gli incrementi programmati valgono micron
moltiplicati per il valore del parametro HX al momento della programmazione della G91.
Esempi:
HX1 G91 Inizia la programmazione incrementale in micron
HX10 G91 Inizia la programmazione incrementale in centesimi
HX1000 G91 Inizia la programmazione incrementale in millimetri
Il valore di HX può essere anche non intero (e anche ottenuto con formule matematiche): per
ottenere l'incremento sulla quota il valore programmato sarà diviso per 1000 e moltiplicato per il valore
originario di HX.

ATTENZIONE
Il valore di HX deve essere programmato prima di G91 (le funzioni G vengono
elaborate durante l'ANALISI della riga, che procede con lo stesso ordine di
programmazione), quindi se si programma:
G91 HX10
si fa un errore se si vuole programmare in incrementale in centesimi, perché il valore di HX, quando
viene elaborata G91 non è ancora 10.
Con G91 attiva i valori numerici programmati in riga ISO su tutti gli assi continui (possono essere
più di uno nella stessa riga), vanno a sommarsi algebricamente al valore precedente.
L'esempio che segue (solo didattico e non realistico) contiene una quantità di combinazioni
possibili:
%
X0 Quota 0
HX10 G91 Attiva programmazione incrementale in centesimi
X100 Incremento 100*10/1000=1 mm, quindi quota 1mm
!X=X+0,5! La quota non cambia, il parametro X va a 1,5mm
X50 Il parametro era 1,5 incremento 0,5 quindi quota 2mm
X0 Incremento 0 quindi quota ferma a 2mm
X<X+1> Non è un numero quindi programmazione assoluta. Il
parametro X valeva 2 quindi quota va a 3mm
X-100 Quota 2mm
HX100 G91 Cambio al volo del peso dell'incremento ai decimi
X100 Quota 10+2 = 12mm
X100,04 Quota 12+10,04 = 22,004mm
X<100> Non è numero quindi progr. assoluta. Quota 100mm

42 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

X100 Quota 110mm


G90 Fine programmazione incrementale
X<X+10> Il parametro X valeva 110 quindi quota 120
La programmazione incrementale richiede una particolare attenzione agli errori che si possono
accumulare indefinitamente.
L'accumulo degli errori può aversi:
1) Direttamente sul calcolatore che origina il part-program. Per evitare l'accumulo degli errori
è necessario che si riporti l'errore di troncatura di ogni quota nel calcolo della quota
successiva
2) Sullo Z32. Poiché i valori decimali (per esempio 0,001mm) non sono rappresentabili
esattamente nel formato usato all'interno dello Z32 (floating point binario) si ha un errore
non eliminabile ad ogni incremento programmato. L'entità di questo errore può essere al
massimo di circa un miliardesimo della quota interessata al calcolo. Ciò significa che per
esempio se si lavora su quote massime di 1000mm si può avere un errore massimo di 1
micron dopo la somma di 1000 incrementi. Da prove fatte si è visto che 100.000
incrementi di 0,01 mm partendo da quota 0 portano a una quota finale di 999,986 anziché
1000 (quindi l'errore è di 1,4 micron dopo 100.000 incrementi).
L'errore è molto piccolo, ma è bene che soprattutto in caso di programmi molto lunghi, si eviti
l'accumulo indefinito che potrebbe essere inaccettabile.
Un mezzo può essere quello di inviare ogni tanto le quote assolute: si è visto sopra che mettendo il
valore numerico entro parentesi acute questo viene interpretato come una espressione e quindi viene
preso come programmazione assoluta della quota e del parametro.
Si è detto prima che la programmazione incrementale non agisce all'interno di sottoprogrammi di
sistema: questa esclusione serve ad evitare inconvenienti nel caso che l'operatore "dimentichi" di
annullare la programmazione incrementale prima di chiamare un sottoprogramma speciale
(immaginiamo le conseguenze di un cambio utensile con sottoprogramma speciale se le quote sono
considerate incrementali ...).
Questa limitazione non appare importante perché è prevedibile che la programmazione
incrementale sia utile solo per part-program generati da calcolatore.
La limitazione non si applica ai sottoprogrammi e cicli fissi utente: dovrà essere cura del
programmatore inserire una G90 se necessario.

2.1.41 G93 - programmazione feed come inverso del tempo


La funzione ISO G93 permette di programmare la feed come inverso del tempo in minuti
necessario ad eseguire il movimento.

Esempio:
N1 G0 X0 Y0 (rapido)
N2 G93 F1000 (attiva G93, tempo di 1/1000 di minuto)
N3 G1 X0.5 (500 mm/min)
N4 Y2 (2000 mm/min)
N5 X0 Y0 (2061.5 mm/min)
N6 G0 X10 Y10 (rapido)

Regole:

- non c'è alcun controllo della feed programmata e della lunghezza del tratto programmato: se la
lunghezza del tratto è zero risulta una feed zero

D. ELECTRON 43
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

- se gli assi sono in pollici non cambia nulla: il significato della G93 è comunque di impostare
l'inverso del tempo in minuti nel quale devono essere eseguiti i tratti successivi

- la velocità dei movimenti in rapido non è influenzata dalla G93

- la G93 disattiva la G94, G95, G33 e G131 ed è disattivata da G94, G95 e G131

- la G53 disattiva immediatamente la G93 e ripristina la G94 (programmazione in mm/minuto o


unità/minuto)

La velocità risultante dalla G93 è limitata al rapido.

La G93 rimane attiva anche con G98.

2.1.42 G94 - feed in mm/1'


Programmazione feed in mm/min (o gradi/min o altre unità di misura).
Modale, attiva al reset.
Annulla G93, G95, G33 e G131. È annullata da G95, G93, G33 e G131.
Con G94 attiva il parametro F (feed) ha valore di mm/min (o altre unità di misura).

2.1.43 G95 - feed in mm/giro


Programmazione feed in mm/giro (o gradi o altre unità di misura).
Modale.
Annulla G93, G94, G33 e G131. È annullata da G93, G94, G33 e G131.
Con G95 attiva il parametro F (feed) ha valore di mm/giro (o gradi o altre unità di misura).
L'avanzamento è regolato dai giri mandrino.
Durante le accelerazioni e decelerazioni si può avere uno 'slittamento' del mandrino rispetto alla
feed, per mantenere velocità ed accelerazioni ai massimi dinamici della macchina. Contrariamente a
quanto accade per la G33 che lega rigidamente il moto asse al moto mandrino, questi slittamenti non
sono più recuperati.
Sono ancora validi i limiti massimi di feed descritti nel paragrafo dedicato a G1.
Esempio:
...
N10 S1000 M3 (MANDRINO A 1000 G/1')
N11 G95 F0,1 (AVANZAMENTO 0,1 MM/G)
N12 G1 X100
...

JOG in G95 (Feed in mm/giro)


C’è un’opzione (da abilitare nelle impostazioni macchina) che permette di eseguire movimenti di
JOG con G95 (feed in mm/giro) o G96 (speed in m/min) attive.
Se si sceglie questa opzione si hanno due conseguenze:
− non viene forzata, durante il movimento in JOG, G94 (mm/min) e G97 (giri/min)
− se è attiva una F programmata (per esempio quando si passa al JOG dal semiauto senza
fare reset) viene assunta la feed programmata come feed di JOG anziché prendere la
feed di default

44 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Questa prestazione è particolarmente utile per i torni, ma può essere valida anche per le frese, per
le quali sarà significativa solo per il secondo effetto (feed di jog uguale all'eventuale feed
programmata). Per questa prestazione riferirsi alle specifiche del costruttore della macchina utensile.

2.1.44 G96 - mandrino in metri/min (velocità di taglio costante)


Programmazione velocità mandrino in m/min.
Modale.
Annulla G97 (giri/min) e G33. È annullata da G97 e G33.
Funzione tipica per torni.
Con G96 attiva il parametro S (speed) ha significato di m/min: la velocità del mandrino è calcolata
perché la velocità di taglio risulti pari alla S programmata, considerando che la distanza dell'utensile dal
centro di rotazione del mandrino è pari alla quota dell'asse con numero logico zero (normalmente X).
La quota dell'asse X è corretta con origini supplementari ed eventuali correzioni lunghezza.
Esempio:
...
N10 X100 (RAGGIO)
N11 G96 S200
...
In N11 la velocità mandrino è 318.3 giri/min, ossia 200/(0.1*2*PI) per mantenere costante e pari a
200 m/min la velocità periferica del mandrino alla distanza di 100 mm dal centro di rotazione.
La velocità del mandrino è aggiornata in tempo reale per mantenere costante la velocità di taglio
anche durante movimenti che variano la distanza dal mandrino.

MS Per evitare velocità eccessive quando la distanza è molto ridotta, con G96 attiva il parametro MS
max (che può essere programmato anche in precedenza) determina la massima velocità (in giri/minuto)
speed mandrino consentita. La MS attiva è quella presente al momento dell'ultima S programmata: se viene
riprogrammato il parametro MS, la limitazione non cambia fino a che non si programma una nuova S.
L'utensile può oltrepassare il centro di rotazione (da X+ a X- e viceversa): la velocità è comunque
determinata dal valore assoluto della quota X, e al passaggio attraverso lo zero è limitata dalla MS
programmata.
Dopo la programmazione di G96 o G97 la velocità mandrino resta congelata all'ultima raggiunta
fino a che non viene programmata una nuova S. Ciò consente per esempio movimenti di rapido (o di
cambio utensile nel caso dei torni) senza indesiderate variazioni della velocità del mandrino
determinate dai movimenti dell'asse X. Durante il congelamento non è attivo l'override mandrino.

JOG in G96 (SPEED in m/min)


C’è un’opzione (da abilitare nelle impostazioni macchina) che permette di eseguire movimenti di
JOG con G95 (feed in mm/giro) o G96 (speed in m/min) attive.
Se si sceglie questa opzione si hanno due conseguenze:
− non viene forzata, durante il movimento in JOG, G94 (mm/min) e G97 (giri/min)
− se è attiva una F programmata (per esempio quando si passa al JOG dal semiauto senza
fare reset) viene assunta la feed programmata come feed di jog anziché prendere la feed
di default
Questa prestazione è particolarmente utile per i torni, ma può essere valida anche per le frese, per
le quali sarà significativa solo per il secondo effetto (feed di jog uguale all'eventuale feed
programmata). Per questa prestazione riferirsi alle specifiche del costruttore della macchina utensile.

D. ELECTRON 45
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

2.1.45 G97 - mandrino in giri/min


Programmazione velocità mandrino in giri/min.
Modale. Attiva al reset.
Annulla G96. È annullata da G96.
Dopo G97 la velocità mandrino (funzione S) è programmata in giri/min.).
Dopo la programmazione di G96 o G97 la velocità mandrino resta congelata all'ultima raggiunta
fino a che non viene programmata una nuova S. Ciò consente per esempio movimenti di rapido (o di
cambio utensile nel caso dei torni) senza indesiderate variazioni della velocità del mandrino
determinate dai movimenti dell'asse X. Durante il congelamento non è attivo l'override mandrino.

2.1.46 G98 - interpolazione lineare speciale (obsoleta)


Attiva uno speciale modo di interpolazione adatto per successioni di punti molto ravvicinati.
Consente la programmazione fino a 5 assi contemporanei.
Modale. Disattivata da G99. Sospende l'efficacia di G0, G1, G2, G3, rototraslazione, specularità,
fattore di scala. Vedere capitolo dedicato “Funzioni obsolete” - “Interpolazione lineare su 5 assi”.
Attenzione: funzione obsoleta, non usare.

2.1.47 G99 - annulla G98 (obsoleta)


Annulla l'effetto di G98.
Modale. Ripristina lo stato di G0, G1, G2, G3, rototraslazione, specularità, fattore di scala sospesi
da G98. Vedere capitolo dedicato “Funzioni obsolete” - “Interpolazione lineare su 5 assi”.
Attenzione: funzione obsoleta, non usare.

2.1.48 G100 - comunicazione a logica


Scrive il parametro AU di programma-pezzo nella word di logica AU.
Attiva solo nel blocco, con arresto.
È una istruzione da usare secondo le specifiche date dal costruttore della macchina utensile, che
stabilisce l'effetto in logica della word AU.
Nella word di logica AU va la parte intera del parametro AU, codificata in BCD. Se il parametro AU
è maggiore di 9999 nella word AU è trasferito 9999.
Questa prestazione è riservata al costruttore della macchina utensile: l'utente finale non deve usare
questa istruzione, salvo particolari prestazioni concordate col costruttore. È bene che il costruttore
protegga la logica di macchina da errata programmazione di G100 da parte dell'utente finale (per
esempio usando il bit 5UC che segnala sottoprogramma di sistema in corso).
Esempio:
...
N10 AU348.99 G100 (METTE IN AU IL VALORE 0348)
...
Lo Z32 prevede un altro modo di scambio dati tra logica e part-program: i parametri PAL[ ] vedere
capitolo dedicato ai parametri, paragrafo “Parametri con indice”.

46 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

2.1.49 G101 - comunicazione da logica


Trasferisce la word di logica AE nel parametro di programma-pezzo AE.
Attiva solo nel blocco, con arresto.
È da usare secondo le specifiche del costruttore della macchina utensile, che assegna in logica il
significato di AE.
La word di logica AE, considerata come intera BCD, è trasferita nel parametro AE. Se la word di
logica non è in codice BCD, il risultato non è coerente.
In ricerca blocco G101 è eseguita normalmente. Vedere anche il capitolo relativo alla ricerca
blocco. Esempio:
...
N10 G101
N11 !IF AE=95;GON40!
...
Lo Z32 prevede un altro modo di scambio dati tra logica e part-program: i parametri PAL[ ] vedere
capitolo dedicato ai parametri, paragrafo “Parametri con indice”.

2.1.50 G102 - salva stato


Salva stato programma.
Attiva solo nel blocco.
Lo stato delle seguenti funzioni programmate:
G37... sezioni locali/globali
G27C... ciclo fisso
G53/G54 sospensione correzioni origini e lunghezze, rototraslazione, specularità, fattore di
scala
G25... piano di lavoro
Viene salvato da G102 in un 'silo' (stack) di memoria, per poter poi essere ripristinato con l'apposita
G103.
Lo stack ha capacità fino a 7 stati: se si tenta di salvare più di 7 stati (ossia ci sono più di 7 G102
non scaricate) il CN dà errore CN1D14 col cursore che punta dopo G102.
Riservata L'utilità di questa G si ha soprattutto nella stesura di sottoprogrammi generici, in cui si voglia
al modificare lo stato del programma e poi ripristinare quello precedente, senza sapere quale fosse. Per
costruttore esempio è possibile, all'interno di un ciclo fisso:
− salvare lo stato con G102
− attivare sezioni locali di parametri o origini
− usare e modificare le origini e i parametri locali
− ripristinare le sezioni attive all'entrata del ciclo fisso
Si consiglia l'uso di G102 e G103 a programmatori ESPERTI.
Per gli esempi vedere la G103 (ripristino stato).

2.1.51 G103 - ripristina stato


Ripristina l'ultimo stato programma salvato con G102 e predispone al ripristino lo stato salvato in
precedenza.

D. ELECTRON 47
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Attiva solo nel blocco, con arresto.


Le condizioni ripristinate sono le stesse salvate da G102:
G37... sezioni locali/globali
G27C... ciclo fisso
G53/G54 sospensione correzioni origini e lunghezze, rototraslazione, specularità, fattore di scala
G25... piano di lavoro
Se non c'è in memoria uno stato salvato da ripristinare (ossia se si programmano più G103 che
G102) il CN dà errore CN1D14 col cursore che punta dopo G103.

ATTENZIONE
Il programmatore si assicuri che ad ogni G102 corrisponda una e una sola
G103, e che non sia possibile, per esempio per giri di programma dovuti a
salti condizionati, saltare una G103 o eseguirne una di troppo: le G103
successive andrebbero a ripristinare stati diversi da quelli voluti, con
conseguenze imprevedibili.
Per il programmatore di cicli fissi di sistema e dei sottoprogrammi associati alle M speciali, si
consiglia di non usare la G53/G54 per sospendere e poi riattivare le correzioni, ma piuttosto di usare la
G102 seguita da G53 a inizio sottoprogramma, e G103 a fine programma per ripristinare lo stato.
Questo per non avere problemi in caso di richiamo di sottoprogrammi speciali dall'interno di
sottoprogrammi speciali.
Ci sono infatti in memoria DUE SOLE informazioni sullo stato di G53: una per lo stato normale
(utente) e una per lo stato speciale (riservata al costruttore); una eventuale G54 nel sottogramma
speciale chiamato cancellerebbe quindi anche la eventuale G53 del sottoprogramma speciale
chiamante. Nell'esempio un ciclo fisso di foratura con conteggio dei fori fatti.
CICLO FISSO DI FORATURA %
N1 G102
... (CICLO FISSO NORMALE)
N80 G37PL
N81!:RPN1=HA!HA=HA+1!:WPN1=HA!
N82 G103 G26
Si noti che il ripristino dello stato precedente fatto dalla G103 non significa ripristino delle origini o
delle lunghezze precedenti. Rimangono invece validi i nomi delle origini e il valore del parametro L
esistenti prima di G103.
La G103 provoca anche l'attivazione del parametro L come correttore e il ricalcolo di tutte le origini
solo se cambia per effetto della G103 lo stato di validità delle origini (G53/54) oppure della lunghezza
(G43/44/45). Nell'esempio sono esaminate alcune situazioni (scarsamente pratiche ma istruttive dal
punto di vista teorico).
...
N8 G0 G54 G43Z G37OG OX0 OY0 OZ0
N8,5 L0 X0 Y0 Z0 tutti gli assi sono a zero, non ci sono origini né lunghezze
N9!L=100! Z non cambia perché L è programmato in riga evoluta
N10 G102
N11 G103 poiché non cambia stato di origini o lunghezze, non sono ricalcolate
le correzioni e quindi Z non cambia
N12 G102
N13 G53 non cambia nulla perché non ci sono origini e L non era attiva

48 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

N14 G103 poiché lo stato cambia da G53 a G54 vengono ricalcolate le origini
e la correzione lunghezza. La quota Z diventa -100
N15 G102
N16 OX1 è attivata l'origine globale X1, la quota X diventa p.e. +50
N17 G103 rimane attiva l'origine globale OX1, la quota X rimane +50
N18 G102
N19 G53 viene disattivata l'origine, la quota X diventa 0
N20 G103 cambia lo stato e quindi l'origine è ricalcolata: X=+50
N21 G37OL attivata la sezione locale. Resta attiva OX1 globale
N22 G102
N23 G53 sono disattivate le origini
N24 G103 qui cambia lo stato di G53 e sono ricalcolate le origini: la origine X1
globale a suo tempo programmata viene riattivata. Poiché la origine
X1 era globale, è ripristinata come globale, anche se sono attive le
origini locali

2.1.52 G104 - lettura dell'utensile sul mandrino


Trasferisce nel parametro HX il valore di T dell'utensile che è montato sul mandrino.
Attiva solo nel blocco.
Esempio:
...
N10 T101 M6
N11 G104
...
Qui HX contiene 101 se l'utensile montato sul mandrino è effettivamente T101. Se è installata la
gestione dell'utensile sostitutivo dell'utensile usurato e l'utensile montato è un sostituto di T101 il
parametro HX conterrà il T.. dell’utensile effettivamente montato.

2.1.53 G105 - acquisizione quote assi


Trasferisce nei parametri quote assi le quote fisiche attuali di tutti gli assi della macchina.
Attiva solo nel blocco, con arresto.
Nello Z32, al reset, tutti i parametri sono inizializzati con valore zero, esclusi i parametri associati
alle quote assi che sono aggiornati con le quote rilevate al reset (equivale alla programmazione di
G105 a inizio di part-program).
Dopo che un asse è stato programmato in una riga ISO il valore del parametro asse coincide, salvo
errori di posizionamento, con la quota effettiva, in quanto il CN sposta meccanicamente l'asse fino alla
quota programmata.
Dopo la programmazione delle origini cambiano le quote visualizzate ma non i parametri, che
perciò non sono più rappresentativi delle quote fisiche.
Analoga situazione si ha per tutte le funzioni che cambiano origini o correzioni (G53/G54, L ecc.).
Con la G105 le quote rilevate (riferite all'origine e correzioni attive al momento) sono trasferite nei
parametri quote assi. Il trasferimento delle quote avviene per tutti e soli gli assi continui, inclusi gli assi
non vivi.

D. ELECTRON 49
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Esempio della evoluzione delle quote e dei parametri quota.


PROGRAMMA quota fisica X parametro X
% +250 +250
G105 +250 +250
G0 X10 +10 +10
OX1 (+300 da origine base) -290 +10
G105 -290 -290
X<X> -290 -290

ATTENZIONE
La quota trasferita è quella reale misurata, e non quella comandata. Queste
due quote possono essere diverse per errori di posizionamento (che
comunque devono essere molto piccoli per rientrare sotto la soglia di
posizionamento).
Per esempio, se si comanda X10 e l'asse va alla quota 9,998 la G105 acquisisce la quota 9,998 e
non la quota 10.
Nel caso di assi ciclici vedere nel capitolo “Prestazioni speciali” il paragrafo “Assi continui ciclici”.

2.1.54 G106 - programmazione radiale


Modale, sempre attiva al reset per frese, annulla ed è annullata da G107.
Questa funzione è usata sui torni, quando si vuole forzare la programmazione radiale. Sulle frese
non è usata in quanto è automaticamente attiva al reset. Dopo G106 la programmazione dell'asse X e
del parametro J sono sul raggio. Per l'esempio vedere G107.

2.1.55 G107 - programmazione diametrale


Funzione specifica per torni.
Modale, attiva al reset nel caso di torni, annulla ed è annullata da G106.
Dopo G107 la quota X e il parametro J ad essa associato sono considerati come diametrali (ossia
provocano uno spostamento fisico della metà). Esempio (valido nel caso di tornio):
% al reset è attiva programmazione diametrale
N1 G0 X10 l'asse X va alla quota 5, diametro 10
N2 G106 programmazione radiale
N3 X10 l'asse X va alla quota 10, diametro 20
N4 G107 X10 l'asse X va alla quota 5, diametro 10

2.1.56 G108 - limitazione accelerazione e velocità


Modale, con arresto.
La G108 è seguita da un carattere, che può essere A oppure F.
G108A trasferisce il valore del parametro HX in un limite di accelerazione, G108F trasferisce il
parametro HX in un limite di velocità.
Per esempio:

50 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

HX200 G108A limita l'accelerazione a 200 mm/sec/sec


HX8000 G108F limita la velocità a 8000 mm/min
L'uso della G108 implica la conoscenza dei limiti di accelerazione e di velocità imposti dal
costruttore della macchina utensile: deve quindi essere usata in collaborazione col costruttore, oppure
dal costruttore stesso in suoi sottoprogrammi speciali.
La G108 può agire solo in diminuzione, a partire dai limiti di sistema imposti dal costruttore della
macchina utensile: l'effetto della G108 può essere eliminato programmando dei limiti superiori a quelli
di taratura della macchina.
Una situazione in cui può essere utile la G108 è con formule permanenti (vedere capitolo dedicato)
con fattori moltiplicativi delle quote assi superiori a 1. In questo caso infatti sono moltiplicate anche
velocità ed accelerazioni, con possibili errori tipo CN0013 e CN0113 (assi fuori controllo): l'applicazione
di limiti inferiori ripristina il corretto funzionamento degli assi e quindi elimina gli errori di inseguimento.
Si abbia per esempio l'asse rotante B con rapido di 5000 mm/min e accelerazione di 300
gradi/sec/sec.
Su questo asse si vuole applicare una formula permanente (per esempio per programmare B in
mm su un diametro di 57.3) che moltiplica le quote dell'asse B per 2: senza la G108 risulterebbe
variata anche la velocità massima (5000*2=10000 gradi/min) e l'accelerazione massima (300*2=600
gradi/sec/sec).
Per riportare l'asse B nei limiti consentiti si può limitare la velocità a 2500 gradi/min e
l'accelerazione a 150 mm/sec/sec. La successiva applicazione della formula permanente (che
moltiplica per due) riporta le velocità a quelle reali.
...
N10 HX2500 G108F
N11 HX150 G108A
N12 B<<B*2>>
...
La limitazione viene applicata su tutti gli assi interessati al moto, per cui si ha un effetto collaterale
indesiderato di ridurre velocità ed accelerazione anche di assi che non ne avrebbero bisogno. Se il
rallentamento non è tollerabile si può a programma eliminare le limitazioni prima dei movimenti che
non ne hanno bisogno.
I limiti su cui agiscono le G108 sono accessibili anche da logica programmabile per una variazione
degli stessi in tempo reale: informarsi col costruttore della macchina utensile per evitare possibili
incoerenze.

2.1.57 G109 - personalizzazione correzione raggio


Modale.
La G109 è seguita da una lettera che personalizza la correzione raggio (vedere anche capitolo
“Correzione raggio utensile”).

G109A G109B G109C G109D G109E G109Z


Con queste funzioni è possibile variare il numero di tratti esplorati in avanti sul profilo oppure
ripristinare un modo obsoleto di correzione raggio.
Sono possibili le seguenti combinazioni:
G109A tre tratti esplorati in avanti (attiva al reset)
G109B quattro tratti
G109C cinque tratti
G109D sei tratti

D. ELECTRON 51
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

G109E sette tratti


G109Z modo obsoleto: tre tratti, possibili errori fino a 0.04 mm con raggi utensile
programmati inferiori a 0.05 mm

G109U G109V
Le G109U e G109V servono per modificare il controllo della velocità in correzione raggio.
Lo Z32, in correzione raggio, tende a tenere costante la velocità di lavoro nel punto di contatto
dell'utensile col profilo programmato.
Se il profilo contiene un arco interno il centro utensile (se il raggio è positivo!) percorre un arco più
stretto dell'arco programmato. Se si tenesse costante la velocità del centro utensile si potrebbero
avere velocità eccessive alla periferia.
In questi casi perciò lo Z32 diminuisce automaticamente la velocità del centro utensile.
Questo automatismo può essere non valido se in realtà il raggio è fittizio, ossia se non rappresenta
il raggio reale (caso in cui un CAM ha precalcolato la traiettoria del centro dell'utensile torico e il raggio
R impostato nel CN è solo la variazione, in più o in meno, rispetto al raggio teorico).
La G109U elimina l'ottimizzazione della velocità da parte del CN e forza velocità Uniforme.
La G109V (attiva al reset) ripristina l'ottimizzazione della velocità in correzione raggio.

G109X
La G109X serve in casi particolari di profilo chiuso.
Lo Z32, in correzione raggio, esamina alcuni tratti in avanti sul profilo (da 3 con G109A a 7 con
G109E) ed elimina i tratti intermedi se l'utensile interferisce.
In caso di profilo chiuso composto di pochi tratti (meno di quelli esplorati in avanti) il CN può
decidere che c'è interferenza tra l'ultimo tratto e il primo e quindi eliminare tutto il profilo.
La G109X, se programmata in un punto intermedio di un profilo, forza il CN ad acquisire tutti i tratti
già programmati e che siano anche geometricamente chiusi: se programmata in un punto intermedio
di un profilo chiuso impedisce il controllo dell'interferenza tra il primo e l'ultimo tratto e quindi
l'eliminazione del profilo.

G109R G109N
È inoltre possibile programmare:
G109R forza raccordo nello spigolo interno
G109N annulla G109R
L'inserimento di un raccordo in uno spigolo interno che provoca errore di programmazione
"PROFILO INCOMPATIBILE", risolve in pratica la situazione di errore .
La G109R può essere programmata immediatamente prima dei blocchi che provocano la
situazione di errore facilitandone la rilevazione.
G109S G109T

Le funzioni G113A o G113B servono per ricostruire l’andamento curvilineo di una traiettoria
programmata per punti, ossia con una sequenza indefinita di segmenti rettilinei.

Come specificato nel manuale dell’alta velocità, un arco di cerchio interrompe la sequenza dei
segmenti arrotondabili.

Normalmente il CAM tiene conto delle dimensioni dell’utensile nello sviluppo del programma a
punti, e quindi non è necessario usare la correzione raggio sul controllo numerico.

In qualche caso, e limitatamente a profili piani, l’utente vuole usare la correzione raggio di Z32 per
adattare il profilo a un utensile usurato senza dover generare un altro profilo CAM.

52 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Su spigoli interni le funzioni G113A o G113B e l’alta velocità continuano a funzionare correttamente,
ma su spigoli esterni il sistema di correzione raggio introduce degli archi di raccordo per ottenere la
rotazione dell’utensile intorno allo spigolo, che impediscono la ricostruzione della curva, e quindi si
generano rallentamenti molto sensibili.

Con G109S è possibile forzare il sistema di correzione raggio di Z32 a non introdurre l’arco di
raccordo ma a proseguire il segmento fino alla bisettrice dello spigolo, per consentire un corretto
funzionamento delle funzioni G113A o G113B e quindi evitare i rallentamenti.

G109S (modale, non attiva al reset) forza la correzione sulla bisettrice, mentre con G109T (modale,
attiva al reset) si ripristina il normale funzionamento di Z32 con l’introduzione dell’arco di raccordo.

Essendo la G109S modale può essere programmata una volta sola a inizio programma, per
esempio:

ESECUZIONE CON G109S%


T46M6
G109SG0X0Y0Z0
F10000S20000M3
G114RA.01HR.03
G113X G113A
G41...(correzione raggio)
...
La G109S ha efficacia solo su spigoli generati da due segmenti rettilinei. Se uno dei due tratti è un
arco di cerchio (che impedirebbe comunque l’arrotondamento) si ha la normale introduzione dell’arco
di raccordo.

La prosecuzione della traiettoria fino alla bisettrice provoca un allungamento del segmento che può
essere molto forte ed indesiderato per spigoli acuti. Per esempio, col caso limite di spigolo di 180 gradi
si avrebbe un allungamento infinito.

Poiché con spigoli acuti non sarà possibile nessun arrotondamento (G113A o G113B), e per evitare
queste possibili indesiderate uscite di traiettoria, la G109S ha efficacia solo su spigoli di angolo fino a
91 gradi. Per spigoli con angolo maggiore viene introdotto il normale arco di raccordo che limita con
sicurezza la traiettoria nell’intorno dello spigolo.

G109Y
Correzione raggio G41/G42 modo taglio
La normale correzione raggio di Z32 è studiata per macchine ad asportazione di truciolo, in cui
l'obbiettivo è rispettare il profilo, ossia si ammette che parti anche importanti di profilo non siano
lavorate se l'utensile ha dimensioni superiori alle concavità del profilo.
La semplice correzione raggio inserita nel CN Z32 esplora fino a 7 tratti in avanti alla ricerca delle
concavità da evitare. Nel caso di profili complessi composti da numerosi tratti di piccola lunghezza si
possono incontrare situazioni in cui il profilo non può essere risolto e quindi derivano errori CN2B14
"PROFILO INCOMPATIBILE".
Questa strategia non è l'ottima per le macchine da taglio termico per lamiera (plasma, laser ecc…).
In questo caso infatti:
- se ci sono punti in cui l'utensile non "entra" in una concavità, è meglio rovinare la zona stretta di
entrata piuttosto che non eseguire il taglio
- in nessun caso è utile l'allarme profilo incompatibile, anche se il profilo non è analizzabile: è
meglio in ogni caso eseguire un taglio imperfetto, che produce un pezzo spesso recuperabile, invece

D. ELECTRON 53
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

che arrestare il taglio, che sicuramente produce un pezzo scarto e provoca perdite di tempo non
indifferenti per la ripresa della lavorazione.
La funzione G109Y predispone lo Z32 alla correzione raggio "modo taglio", che segue la strategia
sopra descritta. Essa è dedicata alle macchine da taglio termico e deve essere programmata prima
della correzione raggio (ossia prima di G41/G42). Una volta programmata la G109Y è modale e
permanente: il suo effetto si può eliminare solo con un reset o col lancio di un nuovo part-program.
Quando attiva la speciale modalità G109Y è consentito programmare funzioni “con arresto” durante
la correzione raggio. Quindi, per esempio, durante la correzione raggio con G109Y attiva sono
programmabili e non generano errore:
- le funzioni ausiliarie M, MA, MB, MC
- la sosta G4
Se durante la correzione raggio con G109Y attiva è programmata una funzione con arresto le
operazioni sono:
- completamento del profilo in correzione raggio come se fosse programmata una G40 (fine
correzione raggio)
- esecuzione della funzione con arresto
- ripresa della correzione raggio dal punto di interruzione
E’ evidente che il profilo eseguito con e senza funzione con arresto può essere diverso, in
dipendenza dal punto in cui questa funzione è programmata.
Per esempio, se c’è uno spigolo interno a 90 gradi entrambi i tratti (di entrata e di uscita) sono
normalmente accorciati per rispettare le pareti, ma se proprio sullo spigolo è programmata una
funzione con arresto il tratto di entrata non viene accorciato ma viene eseguito completamente, quindi
il taglio (non puntiforme) va a intaccare il lato di uscita e il tratto di uscita assume una diversa
inclinazione per recuperare l’errore.
E’ compito del sistemista predisporre le funzioni con arresto in punti adeguati del profilo, in cui
questo comportamento sia tollerabile.
Se non è attiva la G109Y il comportamento non cambia, ossia le funzioni con arresto sono vietate
durante la correzione raggio.

2.1.58 G110 - macrofunzioni per svuotatura


La G110 è una funzione molto complessa da comprendere e difficile da documentare. E’ da
considerarsi riservata alla D.Electron per la costruzione di macro su richiesta specifica del
cliente.

Generalità
Le macrofunzioni G110 consentono di progettare macro di svuotatura.
L'uso della G110 è in generale riservato al progettista della macro: il programmatore del pezzo
passa alla macro pochi parametri che individuano il profilo, l'inclinazione di passata, l'incremento di
passata.
La macro, tramite le macrofunzioni G110, si incarica di determinare i punti di intersezione, le
passate, i ritorni rapidi ecc.
La G110 viene programmata in generale nella forma:
G110TxPy oppure G110Tz dove:
− x (da 0 a 6): identificatore macrofunzione
− y (da 0 a 2): identificatore programma
− z (3 o 4): identificatore macrofunzione

54 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

I significati dei codici sono:


T0: "PRIMOPUNTO" su un profilo
T1: "ANALISI" di un profilo
T2: "CONTORNO" su un profilo
T3: cessazione visualizzazione riga
T4: ripresa visualizzazione riga
T5: calcola le “QUOTE” del profilo a una certa prelunghezza
T6: “ANALISI” con intersezioni multiple
T7: contorno su un profilo fino a una certa prelunghezza
T8: analisi geometrica del profilo
P0: il profilo è nello stesso programma che contiene la G110
P1: il profilo è nel programma chiamante (caso tipico)
P2: il profilo è nel programma secondo chiamante

Identificatore di programma P...


Il P da usare dipende dall'architettura dei programmi in cui è inserita la G110:
P0 Il profilo e la G110 sono nello stesso programma. Non sarà l'uso normale della G110, in
quanto ben difficilmente il programmatore del profilo vorrà inserire nel suo programma anche
la macro di sgrossatura. Può servire per prove semplificate.
P1 Caso normale: il profilo è contenuto nel programma che ha chiamato la macro (che contiene
la G110). L'architettura dei programmi è la seguente:
− la macro di svuotatura è contenuta in un sottoprogramma M speciale
− il programma-pezzo contiene il profilo
− la svuotatura è ottenuta passando alla M speciale i parametri necessari (normalmente
numero riga inizio e fine, pendenza e incremento di passata)
P2 Il programma che contiene il profilo non chiama direttamente il sottoprogramma che usa la
G110, ma passa attraverso un sottoprogramma intermedio. Potrebbe essere utile nel caso di
architetture complesse.

Prelunghezze
AN... AP...
Nella G110 sono usati i parametri 'prelunghezza', sia in entrata che in uscita.
Per prelunghezza si intende la distanza percorsa dal centro utensile da inizio profilo al punto
specificato.
Con questi parametri è individuato in modo semplice ed univoco qualsiasi punto su un profilo.

Numero riga inizio e fine


HX... HY...
Il profilo è identificato con un numero di riga inizio e un numero di riga fine.
In entrata alla G110 parametro HX contiene il numero di riga inizio, il parametro HY il numero di riga
fine.
Perché le righe inizio e fine siano trovate dalla G110, occorre che i numeri di riga siano scritti con
queste regole:
− non devono esserci spazi intermedi né a inizio riga
− gli zeri iniziali devono essere omessi (la riga zero è N0)
− i decimali sono indicati con la virgola e non col punto
− non devono esserci zeri decimali non significativi
− sono ammessi fino a 4 interi e 3 decimali oppure 5 interi con solo due decimali
− se ci sono più righe con lo stesso numero viene assunta come valida la prima da inizio
programma

D. ELECTRON 55
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

− non è necessario che il numero di riga inizio sia inferiore al numero di riga fine: basta che
la riga fine sia raggiunta a partire dalla riga inizio.
Esempi (numero riga e HX corrispondente):
N0 HX0
N1 HX1
N1,3 HX1,3
N1.3 errore punto decimale
N1234,567 HX1234,567
N 37 errore spazio intermedio
N12345,56 HX12345,56
N03 errore zero iniziale
N12,30 errore zero decimale non significativo
N12345,567 errore troppi numeri significativi

Pendenza e incremento di passata


HT... K...
Le passate di sgrossatura desiderate sono passate alla G110 con i parametri HT (pendenza) e K
(incremento).
La pendenza HT rappresenta in direzione e verso l'inclinazione del movimento durante la passata,
secondo le convenzioni Z32:
− pendenza espressa in gradi
− verso positivo antiorario
− 0 gradi coincidono col primo asse del piano
L'incremento K rappresenta l'incremento della singola passata, espresso in millimetri
(genericamente unità visualizzate se non sono millimetri).
La G110 usa solo il segno dell'incremento per determinare se le intersezioni col profilo sono
positive o negative. Non ha importanza per la G110 il valore dell'incremento K: il valore dell'incremento
K è gestito dalla macro.
Se K è positivo significa che l'incremento di passata è verso sinistra, K negativo significa verso
destra.

Altezza retta di passata


HR...
Serve a posizionare la retta di passata (di pendenza HT) nel piano di lavoro.
In entrata alla G110 è contenuta nel parametro HR. Rappresenta la distanza della retta di passata
da un punto convenzionale (è l’origine in corso).
L'altezza della retta di passata è riferita all'origine in corso (la retta con altezza zero passa per
l'origine in corso). Ciò permette di definire l'altezza della retta di passata anche senza avere
precedentemente programmato G110T0 per leggere il suo valore iniziale.
Diversamente il progettista della macro potrà non programmare il valore numerico reale di HR :
potrà allora compiere operazioni di incremento e decremento rispetto al valore iniziale che viene fornito
in uscita dalla macrofunzione primopunto (G110T0..).
In particolare con HR HR+K la retta di passata viene spostata di un incremento.

Limitazioni sul profilo

56 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Non ci sono limitazioni particolari sul numero o tipo di tratti di profilo contenuti tra la riga inizio e la
riga fine: un profilo più lungo richiede semplicemente più tempo per essere elaborato.
Ogni volta che si chiama la G110 il profilo specificato viene sempre eseguito tutto, anche se il
movimento degli assi è solo parziale o nullo (è una specie di ricerca blocco), e quindi a fine G110 lo
stato del CN (parametri e altre funzioni modali) è modificato in accordo ai contenuti del profilo.
Quindi il profilo deve essere completamente definito e ripetibile più volte senza bisogno di
inizializzazioni speciali. In particolare:
− il primo tratto di profilo non può essere un G2/G3 (il punto di inizio non è sempre lo
stesso): meglio se è un G0
− il tratto finale deve essere chiuso
− è meglio se eventuali dati parametrici usati nel profilo sono inizializzati nel profilo stesso:
se si usano dati contenuti in parametri non inizializzati, accertarsi che i dati stessi non
siano modificati alla fine del profilo.
− rototraslazione, specularità e fattore di scala possono essere usati, a patto che siano
attivati all'interno del profilo e disattivati prima della fine. Per sicurezza il progettista della
macro può forzare un annullamento.
Per ragioni interne di organizzazione della macro ci sono anche le seguenti limitazioni:
− non sono ammessi movimenti fuori dal piano di lavoro
− non deve essere riprogrammata la terna di lavoro all'interno del profilo.

Specifiche tecniche

Primo punto G110T0


Chiamata: G110T0Py (y=0, 1, 2)
Funzione: ricerca sul profilo specificato il primo punto incontrato dalla retta di passata che parte da
meno infinito e si sposta parallelamente a se stessa in direzione dell'incremento di passata.
Parametri di entrata:
HX HY numero riga inizio e fine
HT pendenza retta di passata
K incremento di passata
Parametri di uscita:
HX HY quote del punto trovato (HX 1.o asse, HY 2.o asse)
HR altezza corrispondente della retta di passata
AN prelunghezza del punto trovato
Note:
− sono presi in considerazione solo i punti finali dei tratti di profilo: non viene calcolata
l'intersezione con eventuali tratti circolari contenuti del profilo.
− non sono generati movimenti.

Analisi G110T1
Chiamata: G110T1Py (y=0, 1, 2)
Funzione: ricerca sul profilo specificato e a partire dalla prelunghezza specificata la prima
intersezione negativa e la prima successiva positiva con la retta di passata (intersezione positiva
significa che il profilo attraversa la retta di passata in direzione concorde all'incremento)
Parametri di entrata:
HX HY numero riga inizio e fine

D. ELECTRON 57
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

HT pendenza retta di passata


HR altezza retta di passata
K incremento di passata
AN prelunghezza iniziale
Parametri di uscita:
AN prelunghezza intersezione negativa (-1 se non trovata)
HX HY quote intersezione negativa (HX 1.o asse, HY 2.o asse)
AP prelunghezza intersezione positiva (-1 se non trovata)
HR HT quote intersezione positiva (HR 1.o asse, HT 2.o asse)
Note:
− se si desidera conoscere la prima intersezione positiva e la successiva negativa basta
invertire in entrata il segno di K
− se ci sono altre intersezioni prima della prelunghezza iniziale AN non sono prese in
considerazione
− le intersezioni possono cadere in un punto intermedio dei tratti di profilo
− se il punto di profilo corrispondente alla prelunghezza di entrata è già negativo rispetto alla
retta di passata la G110 restituisce che la prima intersezione negativa coincide col punto
iniziale
− non sono generati movimenti assi

Contorno G110T2
Chiamata: G110T2Py (y= 0, 1, 2)
Funzione: esegue il tratto di profilo compreso fra la prelunghezza iniziale e la prima intersezione
positiva con la retta di passata
Parametri di entrata:
HX HY numero riga inizio e fine
HT inclinazione retta di passata
HR altezza retta di passata
K incremento di passata
AN prelunghezza iniziale
Parametri di uscita:
AN prelunghezza intersezione positiva (-1 se non trovata)
Note:
- se non trova intersezione esegue il profilo a partire dalla prelunghezza iniziale fino alla fine
- se si vuole contornare fino alla intersezione negativa basta invertire l'incremento K in ingresso
- per cause di organizzazione interna durante il contorno si ha un rallentamento a fine di ogni
tratto programmato
In G110T2, se G114 attiva, non rallenta a fine di ogni tratto
Il profilo eseguito con G110T2 (contorno), per necessità di semplificazione dei calcoli interni, non ha
una velocità continua, così come avrebbe se fosse eseguito direttamente.
Si ha un forte rallentamento alla fine di ogni tratto elementare che costituisce il profilo.
Il rallentamento non c’è se è attiva la G114: in questo caso la parte di profilo eseguita con G110T2
ha le stesse velocità che avrebbe se eseguita direttamente.

58 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Si noti che la G114 non è compatibile con la G95 (velocità di taglio in mm/giro) e quindi questa
prestazione è poco significativa per i torni, che usano in prevalenza la G95.
In G110T2, se in entrata AN<0 esegue il contorno in continuo
L'entrata in G110T2 con AN<0 assume un significato particolare: quello di eseguire tutto il contorno
indicato come se fosse eseguito direttamente.
In pratica se AN<0 la G110T2 equivale a:
− GOPx salto al programma che contiene il profilo da eseguire
− GON..-N.. salto alla serie di righe che definiscono il profilo
− G26 alla fine della serie di righe
Quindi, con AN<0 la G110T2:
− non fa rallentamento a fine di ogni tratto, anche con G114 non attiva
− ignora la retta di passata, e non tenta intersezioni
esegue tutto il profilo, incluso il tratto iniziale di trasferimento tra il punto attuale del centro fresa
e il punto iniziale del profilo

Stop visualizzazione G110T3


Chiamata: G110T3
Funzione: cessa la visualizzazione delle righe di programma
Parametri di entrata/uscita: nessuno
Note:
− se G110T3 è già attiva viene ignorata
− è utilizzabile anche fuori dalle macro di svuotatura
− serve per evitare inutili perdite di tempo: se non si usa la G110T3 il CN deve visualizzare tutti
i blocchi contenuti nel profilo specificato dalla G110. Il risultato è, soprattutto per profili lunghi,
una sosta a inizio di ogni G110.

Start visualizzazione G110T4


Chiamata: G110T4
Funzione: riprende la visualizzazione interrotta da G110T3
Parametri di entrata/uscita: nessuno
Note:
− se G110T4 è già attiva viene ignorata

Quote G110T5

Chiamata: G110T5Py (y= 0, 1, 2)


Nella descrizione che segue si usa la parola "profilo" per indicare il percorso del centro fresa. Se
non siamo in correzione raggio il percorso del centro fresa ed il profilo programmato coincidono,
mentre se siamo in correzione raggio ciò non è più vero.
Funzione: serve per calcolare le quote di un profilo a una certa prelunghezza. È simile alla G110T1
(analisi), ma con diversi parametri di ingresso (non serve la retta di passata) e di uscita (fornisce le
quote del profilo).
Parametri di entrata (non è necessario che siano programmati nella stessa riga):
AN prelunghezza a cui calcolare le quote
HX numero riga iniziale (identico a G110T1)
HY numero riga finale (identico a G110T1)
Parametri di uscita:

D. ELECTRON 59
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

AN viene >= 0 (tipico 0) se < della lunghezza complessiva del profilo, -1 se AN in


ingresso era > della lunghezza complessiva del profilo
HR,HT quote del punto del profilo. Se in uscita AN -1 sono le quote del punto finale del
profilo.
AP,HX,HY non significativi

Analisi intersezioni multiple G110T6

Chiamata: G110T6Py (y= 0, 1, 2)


Funzione: esegue l’analisi di un profilo restituendo sotto forma di parametri informazioni su
intersezioni multiple. Valida solo per profili chiusi, da usare per la macro di vuotatura del tornio.
Parametri di entrata:
HX HY HR HT K come G110T1
AN se non programmato sono richieste tutte le intersezioni a partire dalla più indietro,
se programmato sono richieste solo le intersezioni che hanno distanza (dall'origine
ed in direzione della retta di passata) superiori ad AN
AP indice del primo PAR[] usabile (deve essere <504 per lasciare almeno due
quartine)
KA numero di intersezioni da inserire nei parametri PAR[] in uscita (minimo=2,
massimo il numero che riempie tutti i PAR[] fino al 512, quindi deve essere
AP+4*KA<512)
Se AP e KA non rispondono entrambi alle limitazioni di cui sopra viene allarme CN6414 G110
NUMERI PAR[] ERRATI.
Parametri di uscita:
AN distanza dell'ultima intersezione che è stato possibile inserire nei parametri PAR[]
BN prelunghezza totale del profilo
BP prelunghezza dei movimenti iniziali in G0
KA numero complessivo di intersezioni trovate (comprende anche quelle che non è
stato possibile inserire nei parametri PAR[] perché non c'era posto).
Le intersezioni trovate sono descritte nei parametri PAR[] con questa modalità:
- le intersezioni sono inserite in ordine rispetto alla direzione della retta di passata. Non ha influenza
la loro posizione rispetto all'inizio del profilo, ma la loro posizione geometrica.
PAR[i] contiene la prelunghezza dell'intersezione
PAR[i+1] contiene il segno dell'intersezione (+1=positiva, -1=negativa)
PAR[i+2] contiene la quota dell'intersezione, primo asse
PAR[i+3] contiene la quota dell'intersezione, secondo asse

G110T7
Contorno su un profilo fino a una certa prelunghezza (riservata a D.Electron).

G110T8
Analisi geometrica del profilo (riservata a D.Electron).

Suggerimenti pratici
La G110 permette di realizzare macro di sgrossatura/svuotatura anche di notevole complessità.

60 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Sarà bene però che il progettista della macro tenga presente alcuni aspetti dell'uso della G110 non
proprio evidenti in prima battuta, per evitare problemi in caso di profili con condizioni geometriche
limite.

Precisione dei calcoli


I calcoli fatti dallo Z32 per determinare le intersezioni della retta di passata col profilo analizzato
sono tutti in virgola mobile, con precisione di 31 bits (8 cifre decimali). Gli errori di calcolo, accumulati
nel vari passaggi, non arrivano normalmente al micron.

Analisi da inizio profilo con punto iniziale già negativo


L'analisi di un profilo può partire da qualsiasi punto: il parametro AN in ingresso alla macro specifica
la quantità di profilo che deve essere scartata prima dell'analisi. Se il punto iniziale del profilo
analizzato è già negativo il punto iniziale viene assunto come prima intersezione negativa.
Questo serve per evitare problemi nel caso che la retta di passata intersechi il profilo esattamente a
fine di un tratto: per approssimazioni di calcolo infatti la retta di passata potrebbe inserirsi in un 'vuoto’
di profilo e l'intersezione potrebbe non essere trovata.
Tenere conto della forzatura in fase di decisioni logiche.

Analisi a partire da un punto che sta sulla retta di passata


Per sbrogliare situazioni complesse derivanti da intersezioni multiple con la retta di passata può
essere necessario ripetere l'analisi dopo trovate le prime due intersezioni (una negativa e la
successiva positiva) per trovare la seconda intersezione negativa e la seguente positiva e così via.
Si può ripetere l'analisi in questo caso partendo dalla prelunghezza della intersezione positiva
precedente.
Se si trasferisce semplicemente il parametro AP in AN prima di ripetere l'analisi il punto iniziale è
esattamente sulla retta di passata: per approssimazioni di calcolo il punto può essere considerato
come prima intersezione negativa oppure no.
Si consiglia di iniziare l'analisi successiva almeno 1 micron più avanti dell'intersezione positiva
precedente (ossia AN=AP+.001).

Nell'esempio di figura, per trovare le intersezioni N2 e P2 si può programmare:


AN0 HX10 HY20 HR... HT30 K8 G110T1P1 (1.a analisi)
AN<AP+.002> HX10 HY20 HR... HT30 K8 G110T1P1 (2.a analisi)
Se nella seconda analisi si programma AN=AP si possono avere senza possibilità di previsione
(dipende dalle approssimazioni di calcolo) due diversi risultati:
− si trovano le intersezioni N1/P1
− si trovano le intersezioni N2/P2

D. ELECTRON 61
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Retta di passata tangente a un arco di cerchio


Nel caso che la retta di passata sia esattamente tangente a un arco di cerchio contenuto nel profilo
si può avere (il risultato dipende dalle approssimazioni di calcolo):
− il cerchio non interseca
− il cerchio interseca in due punti coincidenti
− il cerchio interseca in due punti distinti molto vicini

Retta di passata coincidente con un segmento di retta


Nel caso che la retta di passata sia esattamente coincidente con un segmento di retta contenuto
nel profilo si possono avere vari risultati, al solito dipendenti dalle approssimazioni di calcolo e quindi
imprevedibili.
Sono possibili tutte le combinazioni:
− il segmento non interseca ed è tutto a destra
− il segmento non interseca ed è tutto a sinistra
− il segmento interseca da destra a sinistra, il punto di intersezione è in un punto qualsiasi
interno al segmento.

Ordine dei punti di intersezione


Può essere necessario, all'interno della macro, discriminare se un punto di intersezione è più avanti
o più indietro, sulla retta di passata, rispetto a un altro punto.
Se i punti sono P1 (coordinate X1 Y1) e P2 (coord. X2 Y2) e HT è l'inclinazione della retta di
passata, la distanza orientata dei due punti è data dalla formula:
d = (X2 - X1) * cos (HT) + (Y2 - Y1) * sen (HT)
La distanza trovata è positiva se il punto P2 è più avanti di P1 sulla retta di passata.
Tempi di esecuzione
Il tempo di esecuzione della G110 dipende dalla lunghezza del profilo: in pratica ogni G110 esegue
l'esplorazione completa del profilo, con in più i calcoli di intersezione, che possono durare da 0,1 a 15
millisecondi circa per ogni tratto di profilo.
Il tempo di esecuzione di una intera macro è la somma dei tempi delle istruzioni contenute nella
macro: le G110 e le altre. Se il profilo è complesso possono essere richieste molte analisi
supplementari per discriminare intersezioni multiple: il tempo di esecuzione si allunga di conseguenza.

2.1.59 G111 - funzioni speciali di copiatura


La funzione consente la programmazione di movimenti di copiatura con tastatore analogico. Per
maggiori informazioni consultare Il Manuale M46 "Digitalizzazione di modelli su Z16 e Z32".

2.1.60 G112 - sincronizzazione con logica ML


Lo Z32, durante l'esecuzione automatica di un programma, calcola in anticipo rispetto alla effettiva
esecuzione, i tratti di movimento. Può essere necessario in alcuni casi , quando si vogliono scambiare
dati con la logica programmabile, eliminare questa sfasatura: il part-program deve attendere la logica
per sincronizzare lo scambio dati.
Ci sono molti modi per operare questa sincronizzazione : un modo semplice è l'uso della funzione
G112. Quando lo Z32 incontra una G112 non riprende la lettura del part-program fino a che non è
passato almeno un ciclo di logica completo.
La G112 è attiva solo nel blocco ed è una funzione che richiede l'arresto degli assi. Non può essere
programmata durante la correzione raggio o comunque quando ci sono elementi di profilo non risolti.

62 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

2.1.61 G113H - G113L - interpolazione a 2 millisecondi


È possibile interpolare e controllare gli assi ogni 2 millisecondi (in precedenza il ritmo di
aggiornamento era fisso a 8 millisec).
Ci sono due "G" che comandano il passaggio da 8 a 2 millisec e viceversa.
G113H comanda i 2 mS
G113L comanda gli 8 mS
È lecito (e non ha effetto) comandare G113H o G113L già attive.
Al reset è attiva per default la modalità di controllo assi definita nelle tarature macchina (tempo ciclo
controllo assi = 2.8 mS).
G113H/L può essere programmata dovunque nel programma, anche in correzione raggio.

ATTENZIONE
A causa del serbatoio di blocchi preelaborati presenti in memoria l'effetto di
G113H/L è anticipato rispetto al punto in cui viene programmata. L'entità
dell'anticipo non è predeterminabile (al massimo allo stato attuale circa una
decina di blocchi, ma potrebbe variare in seguito se verrà aumentata la
memoria a disposizione del serbatoio). Se si desidera una certezza del punto
in cui G113H agisce, prima di G113 occorre programmare una funzione "con
arresto": la più innocua è G4 (ritardo) TT0.
Se tutto un programma deve essere con interpolazione veloce basta una G113H all'inizio.

2.1.62 G113P - G113F - G113X scelta tra moto proporzionale, feed-forward, MODO X
Z32 ha tre modi di interpolazione:
− il modo "normale" ha l'anticipo della velocità (feed-forward), che permette grandi precisioni
di movimento (l'errore di inseguimento è molto basso, praticamente zero anche a velocità
elevate)
− il modo con "errore proporzionale" non ha l'anticipo di velocità e quindi l'errore di
inseguimento non è trascurabile, ma i movimenti sono più "morbidi" del modo normale.
− il “MODO X” unisce la migliore precisione del modo “normale” ed il miglior grado di finitura
del modo proporzionale (morbido)
Il modo proporzionale (morbido) è attivo con G98 (interpolazione solo lineare ottimizzata per piccoli
tratti). Ci possono essere però situazioni in cui la morbidezza del movimento è utile anche fuori della
G98.
Sono state perciò attivate tre opzioni nella G113:
− G113P attiva il modo proporzionale (morbido)
− G113F attiva il modo con feed-forward (rigido) - N.B. Funzione obsoleta, usare G113X.
− G113X attiva il “MODO X”
Una particolare utilità trova la G113P nel caso di sequenze di movimenti in G10 (posizionamento
grossolano): la curva della velocità risulta del tutto morbida e quindi viene eliminata la sensazione di
urto meccanico che poteva dare il G10 su macchine con prestazioni dinamiche elevate.
I risultati della G113X sono, con macchine meccanicamente rigide, superiori ad entrambi i modi
G113P e G113F: si ottiene maggiore velocità e migliore grado di finitura.

Per macchine di minore rigidità (grandi dimensioni) e superfici sculturate è possibile che si abbiano
risultati migliori con la G113P, in quando la maggiore precisione dei movimenti imposta dalla G113X
comporta maggiori accelerazioni che possono eccitare oscillazioni meccaniche che alla fine segnano il
pezzo. La validità e la applicabilità di questa prestazione devono essere valutate dal costruttore caso
per caso.

D. ELECTRON 63
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Per attivare il “MODO X” si deve programmare G113X, che è modale e disattiva G113P e G113F.

La G113X viene disattivata programmando G113F o G113P.

La programmazione di G113X presuppone che sia attiva G114, diversamente si ha allarme


CN2C14 PARAMETRI INCOMPATIBILI.

Per semplicità di programmazione la G113X attiva automaticamente anche G113H (2 millisec) e


G113V (gestione avanzata della velocità).

Con G113X attiva non ha effetto programmare G113L (8 mS) e G113S (gestione standard della
velocità): sono ignorate.

Con G113X attiva non ha effetto la G113C, che opera solo con moti morbidi G113P.

La G113X viene sospesa durante i movimenti di maschiatura rigida G63 ed i movimenti di misura
G61, G62.

Perché la G113X possa dare le sue migliori prestazioni occorre avere introdotto nel controllo
numerico vari parametri di taratura, cosa che è facilmente ottenibile con la funzione G125.

Dopo aver sostituito o cambiato le tarature di azionamenti o schede del CN. deve essere eseguita
la funzione G125 prima di poter usare la G113X.

La G113X ha effetto su tutti i movimenti, incluso il rapido G0, che vengono eseguiti con un errore di
inseguimento minimo anche durante le rampe di accelerazione e decelerazione. Rispetto alla G113F
(che ha il minimo errore di inseguimento) si ha una riduzione dell’errore di un fattore almeno 10: da
alcuni decimi di millimetro a pochissimi centesimi.

Nelle impostazioni di macchina viene definito quale modo di interpolazione è attivo al reset. Per
ulteriori dettagli consultare la documentazione del costruttoredella macchina utensile.
Queste funzioni fanno parte del sistema dell’Alta velocità, per maggiori dettagli sul funzionamento e
strategie di uso vedere il manuale relativo M146 “Alta velocità”.
G113X (e G113X KA1) e sistemi di tipo tornio
Le funzioni G113X e G113X KA1 sono state sviluppate per l'esecuzione di part-program descritti
con molti punti ravvicinati tipici di sistemi tipo fresa. Queste funzioni sono pertanto da non utilizzare su
sistemi di tipo tornio. Per maggiori informazioni chiedere a D.Electron.

2.1.63 G113C - G113N - correzioni traiettorie per moti morbidi


Ci sono due funzioni della G113:
G113C: correzione moti morbidi inserita
G113N: correzione moti morbidi disinserita
Con G113C si inserisce una correzione della traiettoria che riduce drasticamente l'errore di forma
introdotto con moti morbidi (G113P oppure G98)
G113N (attiva al reset) annulla la G113C e quindi torna al funzionamento precedente.
Queste due funzioni fanno parte di un sistema di gestione dell'alta velocità.
Per maggiori dettagli vedere il relativo manuale M146 “Alta velocità”.

2.1.64 G113A - G113B - G113Z - arrotondamento


Funzioni tipiche del sistema Alta velocità (G114).

64 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

La ricostruzione della curva originaria a partire dalla serie di segmenti è possibile se sono attive
contemporaneamente la G114 e una tra G113A o G113B (arrotondamento).
G113A: arrotonda ogni segmento programmato in funzione del precedente e del seguente, con
l’obbiettivo di mantenere la traiettoria continua il più possibile.
G113B: svolge lo stesso compito della precedente G113A però con risultati migliori, soprattutto
quando il CAM genera segmenti di lunghezze non uniformi, anche su superfici morbide a curvatura
quasi costante.
I parametri HY e HR programmati sulla riga della G114 influenzano il comportamento della G113A
o G113B e ne determinano tolleranza e limiti di utilizzo.
G113Z: annulla G113A o G113B (attiva al reset).
Queste funzioni fanno parte del sistema dell’alta velocità; per maggiori dettagli vedere il Manuale
relativo M146 “Alta velocità”.
G113A / G113B e sistemi di tipo tornio
Le funzioni G113A e G113B sono state sviluppate per l’esecuzione di part-program descritti con
molti punti ravvicinati tipici di sistemi tipo fresa. Queste funzioni sono pertanto da non utilizzare su
sistemi di tipo tornio. Per maggiori informazioni chiedere a D.Electron.

2.1.65 G113V - G113S - per gestione avanzata della velocità


Z32 può gestire la velocità degli assi in modo molto più preciso.
Poiché questa gestione avanzata della velocità richiede una quantità di calcoli aggiuntivi, è
eseguibile solo con macchine dotate di microprocessori veloci (486DX4 o Pentium).
La gestione avanzata della velocità è particolarmente utile con programmi di alta velocità (G114 e
part-program composto di molti piccoli tratti in G1), ma dà prestazioni migliori anche nel funzionamento
normale.
In particolare, anche in assenza di G114 la gestione avanzata della velocità elimina i rallentamenti
che si hanno in G1 per effetto di blocchi molto corti ed ottimizza i tempi di posizionamento finale,
soprattutto su assi definiti come "morbidi" nelle tarature di macchina (Ntar superiore a 2).
I tempi di posizionamento e di rallentamento sugli spigoli si accorciano notevolmente con la
gestione avanzata, pur rimanendo morbidi i movimenti di macchina.
La gestione avanzata della velocità è attiva al reset se è inclusa nelle tarature di macchina, ma si
può attivare o disattivare da part-program con le due G113V e G113S.
G113V (modale, con arresto) attiva la gestione avanzata della velocità. Mnemonico G113V =
avanzata.
È lecito e non ha effetto programmare G113V con gestione avanzata già attiva.
Se il microprocessore dichiarato nelle tarature di macchina non è almeno 486DX4 o Pentium viene
l’allarme di programmazione:
CN 5314 PROCESSORE INSUFFICIENTE
G113S (modale, con arresto) disattiva la gestione avanzata della velocità. Mnemonico G113S =
Standard
È lecito e non ha effetto programmare G113S con gestione avanzata non attiva.

2.1.66 G114 - attivazione del calcolo della velocità


Modale.
Funzione tipica dell’alta velocità.

D. ELECTRON 65
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Per eseguire un profilo composto di tanti piccoli tratti lineari è necessario esplorare in avanti, sul
profilo, una certa quantità di blocchi e calcolarne quindi la velocità di esecuzione.
G114: attiva il calcolo della velocità e l’esplorazione di molti blocchi in avanti sul profilo.
Annulla G115 ed è annullata da G115.
Insieme a G114 possono essere programmati alcuni parametri (I, RA, HY, HR, J, K) che ne
determinano la funzionalità:
I: velocità minima sugli spigoli in mm o pollici al minuto
RA: tolleranza di arrotondamento sugli spigoli (in mm o pollici)
HY: massima lunghezza tratto arrotondabile (usato solo se programmate G113A o G113B)
HR: errore cordale massimo nella ricostruzione della curvatura originale (usato solo se
programmate G113A o G113B, espresso in mm o pollici
J: fattore di morbidezza del jerk. Valore intero da 0 a 6.
K: massima accelerazione di traiettoria espressa sempre in mm al secondo quadro
All’accensione, ad inizio programma, oppure programmando G114KA0, questi parametri assumono
i valori impostati nelle tarature della macchina.
Questa funzione fa parte del sistema dell’Alta Velocità, per maggiori dettagli vedere il Manuale
relativo M146 ”Alta Velocità”.

G114 e visualizzazione righe di part-program


Le righe di un part-program si possono raggruppare in due categorie:

A) Righe operative
Sono le righe che "fanno" qualcosa, ossia che contengono movimenti assi, o funzioni ausiliarie.

B) Righe non operative


Sono tutte le altre. Possono essere righe vuote, o di commento, o righe di puro calcolo, o di
assegnazione di valori a parametri numerici, o in generale righe evolute.
La visualizzazione di una riga impegna alcune risorse del sistema operativo Z32 che sono condivise
dalla G114 per i blocchi esplorati in avanti.
Nella definizione delle prestazioni della G114 era stato preventivato che esistesse una riga da
visualizzare per ogni movimento programmato, come è normale quando il part-program è costituito da
una sequenza di movimenti calcolati da CAM.
Esistono però situazioni in cui ci sono molte righe "non operative" frapposte alle righe "operative" di
movimento. Un caso tipico è che, per casi molto semplici o speciali, è Z32 che calcola, magari con
salto a sottoprogramma e con vari calcoli matematici, i punti della curva.
La strategia di visualizzazione delle righe "non operative" è la seguente:
- in semiautomatico anche le righe non operative sono sempre visualizzate
- in automatico, sia da memoria che in DNC, le righe non operative non sono visualizzate
Con questa strategia la G114 funziona nello stesso modo anche se i punti successivi sono calcolati
dallo stesso Z32 con molte righe "non operative" tra un punto ed un altro. Resta la limitazione che il
tempo di calcolo sia coerente con la feed programmata e con le lunghezze dei segmenti calcolati.
G114 e sistemi di tipo tornio
La funzione G114 è stata sviluppata per l'esecuzione di part-program descritti con molti punti
ravvicinati, tipici di sistemi tipo fresa. Questa funzione è pertanto da non utilizzare su sistemi di tipo
tornio. Per maggiori informazioni chiedere a D.Electron.

66 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

2.1.67 G115 - disattivazione del calcolo della velocità


Modale attiva al reset.
G115: disattiva una eventuale G114 calcolo della velocità, forza G113P.
Questa funzione fa parte del sistema dell’Alta Velocità, per maggiori dettagli vedere il Manuale
relativo M146 “Alta Velocità”.

2.1.68 G116 - lavorazioni su piano inclinato


Lo Z32 permette di eseguire lavorazioni su piani inclinati usando la prestazione generale delle
formule permanenti. Con questa soluzione però ci sono alcune limitazioni nell'uso, dovute alle formule
permanenti.
È possibile programmare la G116 (rototraslazione del piano di lavoro) su tre assi.
Il formato completo della G116 è:
G116 KA... X... Y... Z... I... J... K...
NB: uno solo tra I J K può essere programmato nella stessa riga
Il parametro KA sceglie la funzione della G116:
− se KA0 viene disattivata la G116
− se KA1 viene attivata la G116, secondo i valori di X Y Z I J K
− se KA2, senza parametri supplementari, genera automaticamente gli angoli necessari per
ottenere l’orientamento del piano ortogonale al mandrino. Questa prestazione esiste solo
in presenza di G117 “generalizzata”, diversamente si ha errore CN2C14 “PARAMETRI
INCOMPATIBILI”.
− KA non programmato e programmati uno tra X Y Z I J K equivale a KA1
− se non programmati nessuno tra KA X Y Z I J K viene attivata la G116 con gli stessi
parametri dell'ultima G116 programmata in precedenza. La G116 viene salvata in
memoria permanente (CMOS), quindi rimane anche dopo uno spegnimento del CN. È
quindi possibile, nel caso che avvenga un arresto macchina con G116 attiva e una punta
in un foro inclinato, riaccendere la macchina, in semiautomatico programmare una G116
senza parametri, passare in Jog ed estrarre l'utensile comandando i movimenti di jog dai
pulsanti.
I parametri X Y Z I J K determinano la geometria della G116, che è di tipo incrementale e
associativa.
X Y Z individuano la origine del nuovo sistema di assi. individuata nel sistema di assi in vigore.
I (o J o K), che possono essere programmati uno alla volta, individuano la rotazione del nuovo
sistema di assi, intorno all'asse X (o Y o Z) nel sistema di assi in vigore.
In altre parole, la G116 introduce una rotazione di angolo I (o J o K) intorno al punto di coordinate X,
Y, Z nel sistema di coordinate in vigore prima di programmare la G116.
I J K devono essere espressi in gradi.
La riga che contiene la G116 non genera alcun movimento.
Sulla stessa riga di programmazione di G116 può essere programmata una traslazione più una
rotazione, il sistema eseguirà in sequenza prima la traslazione e poi la rotazione.
La quota visualizzata è sempre riferita al sistema di coordinate rototraslate da G116.
L'ordine in cui sono programmate G116 KA X Y Z I J K non ha importanza.
È possibile attivare G116 con G122 già attiva.
La G116 è compatibile con G117 e G118 ma non è compatibile con G118HR1, né le formule
permanenti, né con movimenti di copiatura (G111).

D. ELECTRON 67
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Come con le formule permanenti, i fine corsa previsionali non sono attivi quando è in corso una
G116, ma sono attivi i fine corsa in tempo reale.
La G116 agisce su tutti i movimenti programmati, rapido o lavoro, lineari o circolari.
ATTENZIONE
Per evitare errati spostamenti il primo movimento dopo la programmazione di
G116, che ha una traslazione del sistema di riferimento, deve contenere le
quote degli assi numero logico 0, 1, 2 (normalmente X, Y, Z).
La G116 è incompatibile con G43/G44/G45, diversamente genera allarme CN5B14.
La G25 (selezione della terna di lavoro) non ha influenza sulla G116, che agisce secondo il numero
logico degli assi. Perché la G116 possa funzionare in modo corretto, l'asse X deve avere il numero
logico 0, Y il numero logico 1 e Z il numero logico 2. In realtà, se vogliamo essere precisi, se X Y o Z
non corrispondono agli assi con numero logico 0 1 e 2, dovremmo sostituire in tutti gli esempi fatti:
− a X il nome dell'asse con numero logico 0
− a Y il nome dell'asse con numero logico 1
− a Z il nome dell'asse con numero logico 2
Nell'esempio che segue è riportato un part-program (che contiene solo rotazioni di 90 gradi per
maggiore facilità di comprensione) con segnate accanto le quote riferite al sistema di coordinate diritte
(Xr Yr Zr) e visualizzate a video (Xv Yv Zv), raggiunte a fine movimento
Riga part-program Xr - Xv Yr - Yv Zr - Zv

N1 X0 Y0 Z0 0 0 0 0 0 0

N2 G116 X10 Y20 Z30 0 -10 0 -20 0 -30

N3 X3 Y2 Z1 13 3 22 2 31 1

N4 G116 X0 Y0 Z0 13 3 22 2 31 1

N5 X0 Y0 Z0 10 0 20 0 30 0

N6 G116 I90 10 0 20 0 30 0

N7 X50 60 50 20 0 30 0

N8 Y20 60 50 20 20 50 0

N9 Z30 60 50 -10 20 50 30

N10 G116 J90 60 -30 -10 20 50 50

N11 X45 60 45 65 20 50 50

N12 Y50 60 45 65 50 80 50

N13 Z40 50 45 65 50 80 40

N14 G116 K90 50 50 65 -45 80 40

N15 X10 50 10 65 -45 40 40

N16 Y30 50 10 -10 30 40 40

N17 Z60 70 10 -10 30 40 60

N18 G116 K-90 70 -30 -10 10 40 60

N19 X45 Y50 Z40 50 45 65 50 80 40

68 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

N20 G116 KA0 50 50 65 65 80 80

N21 X0 Y0 Z0 0 0 0 0 0 0

N22 G116 0 -20 0 -30 0 -10

N23 X45 Y50 Z40 50 45 65 50 80 40

Il fatto che sia possibile programmare un solo asse di rotazione alla volta è una limitazione
necessaria per ottenere la massima chiarezza relativamente all'ordine in cui devono essere fatte le
eventuali rotazioni multiple: non porta infatti lo stesso risultato programmare per esempio prima una
rotazione intorno a X e poi intorno a Y, oppure prima intorno a Y e poi intorno a X
Rotazioni intorno a più assi possono essere ottenute programmando in cascata (su righe
successive) le varie rotazioni nell'ordine desiderato.

2.1.69 G117 - RTCP per teste rotative


Modale.
La G117 gestisce l’RTCP (rotation tool centre point) per una testa mandrino montata su assi
rotativi. La testa può ruotare intorno a un asse (testa monorotativa) o a due assi in cascata, trainante e
trainato (testa birotativa).
Formato generalizzato di programmazione della G117:
G117 [KA…] [RA…] [I… J… K…]
Per una descrizione dettagliata sull’uso e funzionamento, vedere l’apposito manuale M154
“Rotazioni (RTCP)”.

2.1.70 G118 - RTCP per tavola girevole


Modale.
La speciale funzione G118 serve per la gestione dell’RTCP (rotation tool centre point) di una
macchina utensile avente una tavola girevole monorotativa o birotativa “tilting” (uno o due assi, inclinati
comunque rispetto alla terna di assi principali).
Il formato generale per l’attivazione della G118 è:
G118 N [KA…] [RA…] [I… J… K…] [X… Y… Z…]
oppure
G118 ‘nome asse’ [KA…] [RA…] [I… J… K…] [X… Y… Z…]
Per una descrizione dettagliata sull’uso e sul funzionamento vedere l’apposito Manuale M154
“Rotazioni (RTCP)”.

2.1.71 G118 HR1 - RTCP per tavola girevole con movimenti combinati lineari/rotativi
Modale.
La speciale funzione G118 HR1 serve per la gestione dell’RTCP (rotation tool centre point) con
movimenti combinati tra assi rotativi e lineari, di una macchina utensile avente una tavola girevole
monorotativa o birotativa “tilting” (uno o due assi inclinati comunque rispetto alla terna di assi
principali).
Il formato generale per l’attivazione della G118 è:
G118N HR1 [KA…] [RA…] [X… Y… Z…]
oppure

D. ELECTRON 69
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

G118 ‘nome asse’ HR1 [KA…] [RA…] [X… Y… Z…]


Per una descrizione dettagliata sull’uso e sul funzionamento vedere l’apposito Manuale M154
“Rotazioni (RTCP)”.

2.1.72 G119 - per semiautomatico e jog con allarmi rilevatori


Per consentire il movimento degli assi in semiautomatico o in jog con rilevatori in allarme (tipo
CNxx12) è stata introdotta la G119, che ha queste caratteristiche:
− ha effetto solo se programmata da una riga di semiauto
− è modale, trasparente al reset
− se G119 attiva sono ignorati gli allarmi rilevatori tipo 12
− è automaticamente resettata se si lancia un programma automatico o se si tenta di eseguire
un qualsiasi sottoprogramma (anche di M speciale) da semiautomatico
Per muovere gli assi in jog o semiauto con allarmi 12 occorre:
− entrare in semiautomatico
− comandare G119, premere Enter e poi START
− dare RESET (scompaiono gli allarmi rilevatori)
− operare normalmente in semiauto o jog

ATTENZIONE
Con G119 attiva i fine corsa software sono disabilitati su tutti gli assi, perché
i rilevatori possono essere a quote non significative e quindi possono
impedire il movimento. Spetta all'operatore mettere in atto la massima
cautela per evitare collisioni e danni.
In ogni caso, per cautela, Z32 attiva automaticamente la condizione di TEST
(riduzione del rapido a 1/5) quando G119 è attiva.

2.1.73 G120 - RTCP per tavola girevole - coordinate del centro tavola
La funzione G120 fa parte del sistema di gestione RTCP per tavola girevole (G118). La G120
svolge lo scopo di fornire al sistema le coordinate del centro tavola ovvero le coordinate del centro di
rotazione.
La forma di programmazione è:
G120 [RA…] I… J… K…
Per una descrizione dettagliata sull’uso e sul funzionamento vedere l’apposito Manuale M154
“Rotazioni (RTCP)”.

2.1.74 G121 - fattori di scala differenziati per zone


La funzione la G121 permette di programmare fattori di scala differenziati per asse e per zone per
programmazione di soli blocchi lineari.
Si possono programmare fino a quattro zone e per ogni zona si può dare ad ogni asse della terna di
lavoro un diverso fattore di scala.
Per ulteriori dettagli la G121 è descritta da un apposito Manuale M155 “Fattori di scala differenziati
per zone”.

70 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

2.1.75 G122 - RTCP compensazione errori montaggio pezzo su tavole tilting


Modale.
Questa funzione fa parte del sistema RTCP (rotation tool centre point) e svolge il compito di
compensare gli errori di montaggio pezzo durante il movimento degli assi rotativi su tavole tilting.
Il formato generale di programmazione è:
G122 I… J… K…
Per una descrizione dettagliata sull’uso e sul funzionamento vedere l’apposito Manuale M154
“Rotazioni (RTCP)”.

2.1.76 G123 - limitazione del campo di lavoro


Con la G123 è possibile limitare il campo di lavoro per le quote programmate degli assi continui
(numero logico da 0 a 12).
ATTENZIONE
La G123 agisce solo sulle quote finali programmate di movimenti lineari. Non
è prevista l'intersezione del movimento con la quota limite, ma solo la
sostituzione (o il test a seconda della modalità) della quota finale
programmata.
Per ogni asse continuo è definibile un campo di lavoro, definito da un estremo superiore ed un
estremo inferiore (detti anche limite positivo e limite negativo), che limita la quota programmata dopo
che ha subito tutte le trasformazioni attive (G121, fattori di scala ecc.).
All'accensione della macchina i limiti per ciascun asse continuo sono messi a - infinito i negativi e a
+ infinito i positivi.
Programmazione di G123
Sintassi:
G123 KA0 disattiva entrambe le limitazioni positiva e negativa
G123 KA1 [X...] [Y...] set limiti positivi e attiva limitazione positiva, se assi già oltre i limiti viene
allarme CN5514
G123 KA-1 [X...] [Y...] set limiti positivi e attiva la limitazione negativa, se assi già oltre i limiti
viene allarme CN5514
G123 KA3 modo allarme: se una delle quote è fuori campo viene allarme CN5614
G123 KA4 ripristina modo normale, le quote sono limitate al campo di lavoro
G123 KA5 abilita modo arresto: se una o più quote programmate sono fuori campo
arresta tutti i movimenti e li riprende solo quando tutte le quote sono
rientrate nel campo di lavoro.

Al reset e a inizio programma le condizioni di default sono le seguenti:


- limiti di lavoro da +infinito a -infinito su tutti gli assi continui
- entrambe le limitazioni positiva e negativa non sono attive (G123KA0)
- la predisposizione è per non dare allarme e per limitare le quote che fuoriescono (G123KA4)
Regole e vincoli per G123
La G123 deve essere programmata in una riga a sè stante, altrimenti viene allarme CN2C14
PARAMETRI INCOMPATIBILI
In una riga con G123 deve essere obbligatoriamente programmato KA con un valore può solo
essere uno tra i seguenti: -1, 0, 1, 3, 4, 5.

D. ELECTRON 71
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Se il KA viene programmato più di una volta rimane valido l'ultimo programmato.


Se il valore di KA non è tra quelli consentiti si ha allarme CN2C14 PARAMETRI INCOMPATIBILI
Se viene programmato KA1 o KA-1 le quote degli assi (possono essere tutti gli assi continui della
macchina) sono interpretate come quote di limitazione positiva (se KA1) o negativa (se KA-1).
Con KA1 e KA-1 se mancano alcune quote di assi continui, le corrispondenti limitazioni vengono
lasciate invariate.
La programmazione dei limiti positivi e negativi deve avvenire su righe diverse.
Possono essere attive singolarmente la limitazione positiva o quella negativa oppure possono
essere attive contemporaneamente.
Per ciascun asse deve essere (limite positivo) > (limite negativo), altrimenti viene allarme CN5514
G123 LIMITI NON VALIDI
Al reset vengono disattivate le limitazioni sia positiva che negativa e viene ripristinato il modo
normale (KA4).
Le limitazioni programmate sono sempre riferite all'origine attiva.
Con G123 attiva in modo normale (KA4) le quote finali programmate sono sostituite con le quote
limite se sono esterne a queste.
Con G123 attiva in modo KA3 se le quote finali programmate sono esterne alle quote limite viene
allarme CN5614 G123 KA3 QUOTA OLTRE I LIMITI
Se viene programmato un cerchio (G2 o G3) con G123 attiva viene dato allarme CN5714
CERCHIO+G123
Con G123 KA1 o G123 KA-1 possono comparire programmate solo le quote degli assi continui
della macchina, altrimenti anche in questo caso viene dato l'allarme CN2C14 PARAMETRI
INCOMPATIBILI
Se è programmata G53 con G123 attiva o viceversa, G123 con G53 attiva viene l’allarme CN5A14
G123+G53

Se è programmata G105 con G123 attiva viene l’allarme CN5914 G123+G105

Note per l’uso di G123 KA5


Se una o più quote programmate sono fuori campo arresta tutti i movimenti e li riprende solo
quando tutte le quote sono rientrate nel campo di lavoro. Gli assi rimangono fermi all'ultima posizione
programmata con quote tutte entro il campo di lavoro. I movimenti vengono ripresi quando tutte le
quote programmate sono rientrate nel campo di lavoro. Nel momento in cui le quote rientrano tutte nel
campo di lavoro sono considerati programmati tutti gli assi che siano stati bloccati nella fase
precedente.

ATTENZIONE

Se durante la fase di arresto si muovono più di 5 assi alla ripresa dei


movimenti sono considerati programmati più di 5 assi e quindi viene allarme
CN2C14 PARAMETRI INCOMPATIBILI.

Le righe relative ai movimenti bloccati non sono visualizzate, a meno che non contengano funzioni
ausiliarie.
Disattivazione
Programmando G123KA0 si eliminano sia la limitazione positiva che quella negativa, ma
rimangono attive tutte le predisposizioni (limiti, KA3 o KA4) programmati.
Per ripristinare la limitazione positiva precedente basterà programmare G123KA1 senza nessuna
quota e per ripristinare quella negativa G123KA-1 senza nessuna quota.
Programmazione limiti G123 con quota già fuori del campo di lavoro

72 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Consideriamo adesso il caso (per semplicità ci riferiremo ad un solo asse) di programmazione di


limiti con G123 con la quota già al di fuori di tali limiti: ad esempio si ha X=80 e si programma
G123KA1X30.
Si deve distinguere il caso di G123KA3 (modo allarme) e di G123KA4 (modo limitazione).
G123KA3 caso 1:
G0X100
G123KA3
G123KA1X30 unico limite positivo sulla X
G0X40 allarme CN5614 G123 KA3 QUOTA OLTRE I LIMITI

G123KA3 caso 2:
G0X100
G123KA3
G123KA1X30 unico limite positivo sulla X
G0X10 X va a 10 (entro i limiti programmati)

G123KA3 caso 3:
G0X100
G123KA3
G123KA1X30 unico limite positivo sulla X
G0Z200 Z va a 200
G0Y300 Y va a 300
G0X50 allarme CN5614 G123 KA3 QUOTA OLTRE I LIMITI

G123KA4 caso 1:
G0X100
G123KA4
G123KA1X30 unico limite positivo sulla X
G0X40 X va a 30 anche se programmato 40

G123KA4 caso 2:
G0X100
G123KA4
G123KA1X30 unico limite positivo sulla X
G0X10 X va a 10, che è entro il limite della G123

G123KA4 caso 3:
G0X100
G123KA4
G123KA1X30 unico limite positivo sulla X
G0Z200 Z va a 200

D. ELECTRON 73
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

G0Y300 Y va a 300
G0X50 X va a 30 anche se programmato 50

Esempi di programmazione ed uso di G123


ESEMPIO 1%
G0X0Y0Z0
G123KA1X30Y40Z50 limiti positivi
G123KA-1X-10Y-20Z-30 limiti negativi
G0X60Y60Z60 quote limitate a X=30, Y=40, Z=50
G123KA3 attivato il modo allarme
G0X-40 allarme CN5614 G123 KA3 QUOTA OLTRE I LIMITI
M2

ESEMPIO 2%
G0X20Y20Z20
G123KA1X30Y40Z50 limiti positivi
G123KA-1X-10Y-15Z-20 limiti negativi
G0X-60Y-60Z-60 punto finale X=-10, Y=-15, Z=-20
G0X60 X si ferma a 30
G0Y80 Y si ferma a 40
M2

ESEMPIO 3%
G0 X0 Y0 Z0
G123 KA1 Y20 unico limite positivo: max Y =+20
G123 KA5 abilita il modo "arresto"
G1 F1000 X5 movimento eseguito
X-10 Y25 Z-20 movimento non eseguito perché Y fuori limite
X-12 Z30 movimento non eseguito perchè Y è ancora fuori limite
Y10 movimento è eseguito come se fossero programmati X-12 Y10 Z30

2.1.77 G124 - attivazione volantini degli assi rotativi in G117


La G124 permette di attivare i volantini degli assi rotativi legati a G117 mentre la stessa G117 è
attiva.
Lo scopo è di poter muovere a mano la testa della macchina durante la lavorazione del pezzo in
automatico e semiautomatico.
Mentre è attiva G124 non si possono programmare le quote degli assi rotativi legati a G117 (asse
rotativo per testa monorotativa, assi trainante/trainato per testa birotativa).
Programmazione di G124
Sintassi:
G124 [KA1] attiva i volantini collegati agli assi rotativi legati a G117; KA1 non è necessario

74 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

G124 KA0 disattiva la G124


Regole e vincoli per G124:
All'accensione ed al reset la G124 è disabilitata.
La programmazione di G124 ha effetto solo se G117 è attiva.
Se viene programmata G124 con G117 non attiva l'effetto è nullo, anche se non viene dato nessun
allarme.
Le due attivazioni: G124 oppure G124KA1 sono equivalenti
Se mentre è attiva G124 viene disattivata G117 si ha l'immediata disattivazione anche di G124.
Se mentre è attiva G124 viene programmato uno degli assi rotativi legati a G117 si ha il messaggio
di allarme CN5814 G124+ASSE ROTATIVO DI G117
Dal punto precedente consegue che l'unico modo di muovere gli assi rotativi legati a G117 con la
G124 attiva è quello di usare i volantini ad essi collegati.
Disattivazione
Programmando G124KA0 si ha la disattivazione dei volantini legati agli assi rotativi di G117 e tali
assi possono essere da ora in avanti di nuovo programmati.
Esempi di programmazione
Supponiamo di avere una macchina con testa birotativa ed assi XYZABC, dove A e B sono i due
assi rotativi legati alla G117, mentre C è un altro asse rotativo non interessato a G117.
Esempio 1:
G0X0Y0Z0A0B0C0
G117
G0A20B30X40
G124 da qui in poi si possono muovere A e B solo tramite i volantini
G0X10Y10Z10C40 ok (asse C non collegato a G117)
G0A10 allarme CN5814 perchè programmato asse A

Esempio 2:
G0X0Y0Z0A0B0C0
G117
G0A30B40X40
G124 da qui in poi si possono muovere A e B solo tramite i volantini
G0X10Y15Z25C30 ok (asse C non collegato a G117)
G0Z0X0Y0C0 ok
G124KA0 volantini A e B disattivati: A e B sono nuovamente programmabili
G0A15B35X10 ok

Esempio 3:
G0X0Y0Z0A0B0C0
G124 non ha effetto perchè la G117 non è attiva
G117
G0A30B40X40 A e B possono essere programmati

D. ELECTRON 75
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

G124 da qui in poi si possono muovere A e B solo tramite i volantini


G0X10Y15Z25C30 ok (asse C non collegato a G117)
G0Z0X0Y0C0 ok
G117KA0 la disattivazione di G117 disattiva anche G124: A e B sono
nuovamente programmabili
G0A15B35X10 ok

2.1.78 G125 - G125 KA1 - G125 KA101 - taratura assi per alta velocità
Per ottenere le migliori prestazioni dal controllo degli assi “MODO X”, che si attiva con la G113X o
G113X KA1, sono necessarie una quantità di tarature specifiche per ogni asse.

Le G125, G125 KA1 o G125 KA101, che devono essere eseguite in semiautomatico oppure in
automatico da part-program, consentono di ricavare in modo semplice, rapido, ripetibile e preciso
queste tarature, che sarebbero altrimenti piuttosto complesse da determinare.

Queste funzioni fanno parte del sistema dell’Alta Velocità, per maggiori dettagli vedere il Manuale
relativo M146 “Alta Velocità”.

2.1.79 G126 - lavorazione pezzi in movimento


Modale, con arresto.
Questa funzione è dedicata a macchine speciali che lavorano pezzi in movimento.
In queste macchine il pezzo da lavorare è fissato su un nastro trasportatore in movimento (asse
“master”), mentre l’unità operatrice è fissa e può avere diversi assi, e uno di questi è l’asse inseguitore
(asse”slave”).
La G126 abilita la modalità di inseguimento tra asse master (trasportatore) ed asse slave
(inseguitore).
Per una descrizione dettagliata di questa funzione vedere il manaule M99 “Logica Programmabile
ML”, funzione “FFLOCK”.

2.1.80 G127 - disattiva lavorazione pezzi in movimento


Modale, attiva al reset, con arresto.
G127 disattiva G126, modalità di inseguimento.
Per una descrizione dettagliata di questa funzione vedere il manaule M99 “Logica programmabile
ML”, funzione “FFLOCK”.

2.1.81 G128 - G129 - G130 funzioni per lock di processo


Funzioni per la gestione del "lock di processo", un modo di funzionamento speciale per macchine a
più processi con assi sincronizzati.

La descrizione del sistema (ovviamente interessa solo l'utente che ha una macchina predisposta
per il lock di processo) è contenuta nel manuale M252 “Lock di processo”.

76 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

2.1.82 G131 - velocità costante sulla punta utensile


Modale.
Questa prestazione consente di avere il moto relativo tra pezzo e punta utensile alla velocità F
programmata quando si ha l'RTCP e/o G132 (lavorazioni cammes) attive; pertanto la velocità da
mantenere costante ed uguale alla F programmata è quella che c'è nel movimento programmato degli
assi XYZ, senza considerare il moto programmato degli assi rotativi e gli eventuali moti di
trascinamento che il moto dei rotativi induce sugli assi lineari.

Infatti il moto di trascinamento è un movimento che non genera una velocità relativa tra punta
utensile e pezzo, poiché serve proprio a mantenere la punta utensile ferma rispetto al pezzo.

- con RTCP attiva e con G131 attiva la feed programmata sarà riferita ai soli assi lineari
- dalla feed programmata e dalla lunghezza del movimento degli assi lineari si ricava il tempo di
esecuzione del movimento degli assi lineari
- a questo punto viene calcolata una nuova feed espressa come l'inverso del tempo sopra calcolato
ed il comportamento è quello che si avrebbe se fosse stata programmata una G93 con tale feed.
- il formato generale per l’attivazione di G131 è:
G131 I…

- sulla riga di attivazione di G131 si può specificare il parametro I seguito da un numero positivo che
individua la massima velocità che potranno avere gli assi rotativi coinvolti nel movimento. Se tale
parametro non viene specificato la velocità massima sarà saturata al rapido.
ATTENZIONE:
- se la feed così calcolata dovesse risultare troppo elevata per qualcuno degli altri assi coinvolti nel
movimento, questa verrà opportunamente limitata.
- al tendere a zero della lunghezza del movimento degli assi lineari gli assi rotativi avranno una
velocità sempre maggiore che verrà eventualmente saturata al massimo ammissibile specificato con il
parametro I. Se il parametro I non è stato programmato nella riga di G131 la velocità massima sarà
saturata al rapido.
- in blocchi con lunghezza del movimento degli assi lineari nullo i rotativi andranno al loro massimo
consentito (parametro I o rapido).
- in blocchi dove non sono programmati assi lineari i rotativi andranno al loro massimo consentito
(parametro I o rapido).
- se nel movimento sono presenti pure moti di trascinamento indotti sugli assi XYZ dal moto degli
assi rotativi RTCP, e tali moti fanno si che la velocità degli assi XYZ sia troppo alta, questa sarà
limitata in tempo reale in modo da farla rimanere sempre nei limiti consentiti per gli assi XYZ.; questo
si traduce in una velocità non costante tra punta utensile e pezzo.
- in un movimento molto lungo si potranno avere variazioni di velocità dovute all'effetto del moto
indotto sugli assi lineari dal moto degli assi rotativi legati all'RTCP.
- G131 non influenzerà G0
- Quando si programma G131 vengono eliminate G93 o G94 o G95 viceversa con G131 attiva
programmando G93 o G94 o G95 viene eliminata G131.
Nota sulla G131 usata con G132 “lavorazioni cammes”:
- con G132 KA1 si avrà una velocità costante per qualsiasi lunghezza dei blocchi di movimento,
mentre con G132 KA2 e G132 KA3 la velocità sarà costante per blocchi con movimenti corti, ma
tenderà a non esserlo più per blocchi con movimenti lunghi: questo è dovuto al fatto che
programmando in G132 KA2 e G132 KA3 pure gli assi lineari si può avere una variazione del raggio di
rotazione del cilindro (G132 KA2) o della tavola (G132 KA3) all’interno del blocco.

D. ELECTRON 77
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

2.1.83 G132 KA1 - lavorazione cammes globoidali


La lavorazione delle cammes globoidali, generata da CAM, è costituita da movimenti di
predisposizione degli assi sia lineari che rotativi, ai quali seguono i movimenti interpolanti che
realizzano il profilo della camma.
Tipicamente il part-program è generato con queste modalità:
- il CAM conosce il raggio utensile da usare
- i movimenti che realizzano il profilo sono costituiti dai soli movimenti degli assi rotativi, lasciando al
CNC il calcolo in tempo reale in RTCP dei movimenti degli assi lineari.
Il problema che si riscontra nella pratica applicazione è che il raggio utensile effettivamente
utilizzato può essere leggermente diverso (in più o in meno) rispetto al raggio usato dal CAM, e quindi,
se non si vuole rigenerare l'intero part-program col CAM, si deve introdurre nel CNC la possibilità di
correggere i movimenti per tener conto della differenza raggio: la G132 risolve questo problema.
La sintassi completa della G132 è la seguente:
G132 KA1 (asse1)(v1) (asse2)(v2) (asse3)3 (asse4)4 HX(vx) HY(vy) HR(vr)
I(vf)
dove:
(asse1) è il nome del primo asse lineare, per esempio X
(v1) può assumere i due soli valori numerici +1 oppure -1, per indicare che la correzione calcolata
deve essere applicata all'asse1 col suo segno oppure col segno scambiato
(asse2) è il nome del secondo asse lineare, per esempio Y
(v2) può assumere i due soli valori numerici +2 oppure -2, per indicare che la correzione calcolata
deve essere applicata all'asse2 col suo segno oppure col segno scambiato
(asse3) è il nome del primo asse rotativo, che è normalmente associato al primo asse lineare
(asse4) è il nome del secondo asse rotativo, che è normalmente associato al secondo asse lineare
3 e 4 sono valori numerici obbligatori che permettono al CN di identificare gli assi
(vx) è il valore numerico che individua la lunghezza in millimetri del braccio di rotazione relativo al
primo asse rotativo
(vy) è il valore numerico che individua la lunghezza in millimetri del braccio di rotazione relativo al
secondo asse rotativo
(vr) è il valore numerico in millimetri che rappresenta la differenza tra il raggio usato dal CAM per il
calcolo ed il raggio utensile usato in macchina. Il massimo valore ammesso è 8,192 mm.
(vf) è la massima velocità in mm/min con cui il CN muove gli assi lineari per effettuare le correzioni
Per esempio:
G132 KA1 X1 Z-2 A3 C4 HX11.210 HY120,437 HR-.162 I1000
Introduce una correzione per cammes globoidali in cui:
- gli assi lineari sono X e Z, associati agli assi rotativi A e C
- la correzione sull'asse Z ha segno opposto a quello teorico
- il braccio di rotazione dell'asse A è 11,210 mm
- il braccio di rotazione dell'asse C è 120,437 mm
- il raggio utensile effettivo è inferiore a quello usato dal CAM di 0,162 mm
- la massima velocità di correzione è 1000 mm/min
La disattivazione della correzione è fatta con:
G132 KA0

78 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Alcune precisazioni sulla sintassi di programmazione della G132:


- il KA è obbligatorio e può assumere i soli valori 1 o 0
- i valori delle lunghezze e delle velocità sono in mm e mm/min, anche se la macchina è dichiarata
in pollici
- se è programmato KA1 sono obbligatori anche HX, HY, HR e quattro assi, con i quattro valori +-1,
+-2, 3, 4
- la programmazione della I è facoltativa, se non è programmata viene assunto il valore di default di
500 mm/min, se è programmata il massimo valore di I è 2000 mm/min
- gli elementi che compongono la riga possono essere forniti in qualsiasi ordine
- tutti i valori numerici possono essere programmati con espressioni (per esempio può essere
comodo HR<R-10> per indicare che il raggio usato dal CAM era 10 mm e che quindi la differenza è il
raggio attuale R meno il raggio del CAM)
- la G132 è incompatibile con G53/G54 (errore CN3914 <<FORMULA + G53/G54>>)
- la G132 è compatibile con lo RTCP e con qualsiasi tratto geometrico programmato (lineare,
circolare ecc.)
- con G132 attiva possono essere programmati anche gli assi lineari: il movimento di correzione si
somma a quello programmato.
Altre precisazioni sulle modalità di esecuzione dei movimenti in tempo reale:
- all'attivazione della G132 le correzioni partono da zero e si portano a quelle calcolate con un
raccordo che parte con un certo ritardo (servono almeno 0,25 gradi di almeno un asse rotativo) e dura
il tempo necessario al recupero dell'intera correzione, quindi il tratto immediatamente successivo alla
G132 deve essere in aria per non generare profili errati
- alla disattivazione (dopo G132 KA0) si ha il movimento inverso di recupero della correzione:
anche qui è necessario un movimento in aria per evitare errori
- durante la ricerca blocco la correzione non è attiva. Alla ripresa della lavorazione si ha il raccordo
iniziale come all'attivazione della G132
- durante la lavorazione la velocità massima di correzione (per ognuno dei due assi lineari) è
limitata a quella programmata (default 500 mm/min). Se la geometria richiede velocità superiori si
hanno errori di correzione che possono essere recuperati in un tempo successivo, non appena le
velocità rientrano nei limiti ammessi
- le correzioni sono calcolate in base alle direzioni dei movimenti assi, e sono amplificate dalla
differenza raggio programmata con HR. Quindi il grado di finitura dipende dalla regolarità della
programmazione, ma anche dall'entità della differenza raggio, che deve essere contenuta il più
possibile (ben al di sotto del limite concesso al parametro HR che è di 8,192 mm)

2.1.84 G132 KA2 - lavorazione cammes cilindriche


Il part-program generato da CAM per la lavorazione di cammes cilindriche è composto da
movimenti calcolati per un certo raggio utensile; il problema che si può riscontrare è quello di dover
usare un raggio utensile diverso da quello per cui è stato calcolato il part-program e quindi si vuole
dare al CNC la possibilità di correggere i movimenti in modo da tener conto della differenza di raggio.
La G132KA2 risolve questo problema.
Qui la struttura fisica consta di una lavorazione sull’esterno di un cilindro che ruota attorno ad un
asse (ad esempio l’asse X) tramite un part-program avente:
movimenti lineari programmati lungo l’asse parallelo all’asse di rotazione del cilindro (es.asse X) e
lungo un asse perpendicolare a questo (es. asse Y)
movimenti programmati dell’asse di rotazione del cilindro (es. asse A)

D. ELECTRON 79
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

La sintassi completa di G132KA2 è la seguente (supponendo che il part-program abbia movimenti


in asse1 asse2 asse4):
G132 KA2 (asse1)(v1) (asse2)(v2) (asse3)3 (asse4)(v4) HX(vasse2)
HY(vasse3) HR(vr) I(vf)
dove:
(asse1) è il nome dell'asse lineare parallelo all'asse di rotazione del cilindro
(v1) può assumere i due soli valori +1 oppure -1, per indicare che la correzione calcolata deve
essere applicata all'asse1 con il suo segno o con il segno opposto
(asse2) è il nome dell'altro asse lineare
(v2) può assumere i due soli valori +2 oppure -2, per indicare che la correzione calcolata deve
essere applicata all'asse2 con il suo segno o con il segno opposto
(asse3) è il nome dell'asse che insieme ad asse2 individua un piano perpendicolare all’asse di
rotazione del cilindro (se asse1=X, asse2=Y allora asse3=Z) e che non viene mai programmato
3 è un valore numerico obbligatorio che permette al CN di identificare l'asse
(asse4) è il nome dell'asse rotativo (il cui asse di rotazione è parallelo ad asse1)
(v4) può assumere i due soli valori +4 oppure -4: +4 indica che una rotazione positiva dell’asse 4
equivale ad uno spostamento positivo dell’asse 2, -4 indica che una rotazione positiva dell’asse 4
equivale ad uno spostamento negativo dell’asse 2.
(vasse2) valore numerico, in millimetri, che individua la quota del centro di rotazione del cilindro,
secondo la coordinata asse2, rispetto all'origine attiva
(vasse3) valore numerico, in millimetri, che individua la quota del centro di rotazione del cilindro,
secondo la coordinata asse3, rispetto all'origine attiva
(vr) valore numerico, in millimetri, che rappresenta la differenza tra il raggio usato dal CAM per il
calcolo del percorso, ed il raggio utensile in macchina. Il massimo valore ammesso è 8,192 mm.
(vf) è la massima velocità, in mm/min, con cui il CN muove gli assi lineari per effettuare le correzioni
Esempio:
G132 KA2 X1 Z-2 Y3 B4 HX10 HY5 HR-0.5 I1800
Introduce una correzione per cammes cilindriche in cui:
- gli assi lineari sono X (primo asse lineare), Z (secondo asse lineare) ed Y (terzo asse lineare)
- l’asse di rotazione del cilindro è parallelo all’asse X
- il piano perpendicolare all’asse di rotazione del cilindro è il piano YZ
- l'asse rotativo con asse di rotazione parallelo al primo asse lineare (X in questo caso) è B
- una rotazione positiva di B equivale ad un movimento positivo di Z
- la correzione sull'asse Z ha segno opposto al valore teorico calcolato
- il centro di rotazione del cilindro ha coordinate (10,5) nel sistema di riferimento con origine sulle
origini attive dei due assi (Z,Y)
- il raggio utensile usato è inferiore di 0.5 millimetri rispetto a quello usato dal CAM
- la massima velocità di correzione è 1800 mm/min
La disattivazione della correzione è fatta programmando:
G132 KA0
Alcune precisazioni sulla sintassi di programmazione della G132 KA2
- i valori delle lunghezze e delle velocità sono espresse in mm e mm/min anche se la macchina è in
pollici

80 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

- i parametri asse1, asse2, asse3, asse4, HX, HY, HR ed i relativi valori sono obbligatori
- il parametro I è opzionale e se non è programmato viene assunto per default il valore di 500
mm/min; se è programmato il massimo valore è 2000 mm/min
- gli elementi della riga possono essere inseriti in qualsiasi ordine
- i valori numerici si possono programmare pure attraverso espressioni (es: HR<R-10>)
- G132 KA2 è incompatibile con G53/G54
- G132 KA2 è compatibile con RTCP
- con G132 KA2 attiva si possono programmare sia assi lineari che rotativi: il movimento di
correzione sui due assi lineari asse1 ed asse2 si somma a quello programmato lungo questi due assi
Altre precisazioni sulle modalità di esecuzione dei movimenti in tempo reale:
- all'attivazione della G132 KA2 le correzioni partono da zero e si portano a quelle calcolate con un
raccordo che parte con un certo ritardo (servono almeno 0,03125 gradi dell’asse rotativo oppure 0,1
mm di un asse lineare) e dura il tempo necessario al recupero dell'intera correzione, quindi il tratto
immediatamente successivo alla G132 KA2 deve essere in aria per non generare profili errati
- alla disattivazione (dopo G132 KA0) si ha il movimento inverso di recupero della correzione:
anche qui è necessario un movimento in aria per evitare errori
- durante la ricerca blocco la correzione non è attiva. Alla ripresa della lavorazione si ha il raccordo
iniziale come all'attivazione della G132 KA2
- durante la lavorazione la velocità massima di correzione (per ognuno dei due assi lineari) è
limitata a quella programmata (default 500 mm/min). Se la geometria richiede velocità superiori si
hanno errori di correzione che possono essere recuperati in un tempo successivo, non appena le
velocità rientrano nei limiti ammessi
- le correzioni sono calcolate in base alle direzioni dei movimenti assi, e sono amplificate dalla
differenza raggio programmata con HR. Quindi il grado di finitura dipende dalla regolarità della
programmazione, ma anche dall'entità della differenza raggio, che deve essere contenuta il più
possibile (ben al di sotto del limite concesso al parametro HR che è di 8,192 mm)

2.1.85 G132 KA3 - lavorazione cammes polari


Il problema è analogo a quello delle cammes cilindriche: il part-program calcolato dal CAM usa un
certo raggio utensile ed il problema che si può riscontrare è quello di doverne usare uno diverso da
quello per cui è stato calcolato il part-program e quindi si vuole dare al CNC la possibilità di correggere
i movimenti in modo da tener conto della differenza di raggio.
La G132 KA3 risolve questo problema.
Qui la struttura fisica consta di una lavorazione su un piano tavola (ad esempio XY) che ruota
attorno ad un asse perpendicolare al piano stesso (Z se il piano tavola è XY): la lavorazione sul piano
viene eseguita con movimenti:
- di un asse lineare (es. asse Y)
- della rotazione della tavola (es. asse C)
La sintassi completa di G132KA3 è la seguente (supponendo che il part-program abbia movimenti
in asse1 asse3):
G132 KA3 (asse1) (v1) (asse2)(v2) (asse3)(v3) HX(vasse1) HR(vr) I(vf)

dove:
(asse1) è il nome dell'asse lineare programmato e che è uno dei due assi del piano tavola
(v1) può assumere i due soli valori +1 oppure -1, per indicare che la correzione calcolata deve
essere applicata all'asse1 con il suo segno o con il segno opposto

D. ELECTRON 81
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

(asse2) è il nome dell'altro asse lineare del piano tavola che però non viene mai programmato nei
movimenti del part-program ed è sempre uguale alla quota, lungo asse2, del centro di rotazione della
tavola
(v2) può assumere i due soli valori +2 oppure -2, per indicare che la correzione calcolata deve
essere applicata all'asse2 con il suo segno o con il segno opposto
(asse3) è il nome dell'asse rotativo (il cui asse di rotazione è perpendicolare al piano tavola
individuato da asse1 ed asse2)
(v3) può assumere i due soli valori +3 oppure -3: +3 indica che una rotazione positiva dell’asse3
equivale ad uno spostamento positivo dell’asse2, -3 indica che una rotazione positiva dell’asse 3
equivale ad uno spostamento negativo dell’asse2.
(vasse1) valore numerico, in millimetri, che individua la quota del centro di rotazione della tavola,
secondo la coordinata asse1, rispetto all'origine attiva
(vr) valore numerico, in millimetri, che rappresenta la differenza tra il raggio usato dal CAM per il
calcolo del percorso, ed il raggio utensile in macchina. Il massimo valore ammesso è 8,192 mm.
(vf) è la massima velocità, in mm/min, con cui il CN muove gli assi lineari per effettuare le correzioni
Esempio:
G132 KA3 Y1 X-2 C-3 HX10 HR-0.5 I1800
Introduce una correzione per cammes polari in cui:
- gli assi lineari sono Y (primo asse lineare) ed X (secondo asse lineare)
- il piano perpendicolare all’asse di rotazione della tavola è il piano XY
- l'asse rotativo con asse di rotazione perpendicolare al piano tavola è l’asse C
- una rotazione positiva di C equivale ad un movimento negativo di X
- la correzione sull'asse X ha segno opposto al valore teorico calcolato
- il centro di rotazione della tavola ha coordinata 10 nel sistema di riferimento con origine sull’
origine attiva dell’asse Y
- il raggio utensile usato è inferiore di 0.5 millimetri rispetto a quello usato dal CAM
- la massima velocità di correzione è 1800 mm/min
La disattivazione della correzione è fatta programmando:
G132 KA0
Alcune precisazioni sulla sintassi di programmazione della G132 KA3:
- i valori delle lunghezze e delle velocità sono espresse in mm e mm/min anche se la macchina è in
pollici
- i parametri asse1, asse2, asse3, HX, HR ed i relativi valori sono obbligatori
- il parametro I è opzionale e se non è programmato viene assunto per default il valore di 500
mm/min; se è programmato il massimo valore è 2000 mm/min
- gli elementi della riga possono essere inseriti in qualsiasi ordine
- i valori numerici si possono programmare pure attraverso espressioni (es: HR<R-10>)
- G132 KA3 è incompatibile con G53/G54
- G132 KA3 è compatibile con RTCP
- con G132 attiva si possono programmare sia assi lineari che rotativi: il movimento di correzione
sui due assi lineari asse1 ed asse2 si somma a quello programmato lungo questi due assi
Altre precisazioni sulle modalità di esecuzione dei movimenti in tempo reale:
- all'attivazione della G132 KA3 le correzioni partono da zero e si portano a quelle calcolate con un
raccordo che parte con un certo ritardo (servono almeno 0,03125 gradi dell’asse rotativo oppure 0,1

82 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

mm di un asse lineare) e dura il tempo necessario al recupero dell'intera correzione, quindi il tratto
immediatamente successivo alla G132 KA3 deve essere in aria per non generare profili errati
- alla disattivazione (dopo G132 KA0) si ha il movimento inverso di recupero della correzione:
anche qui è necessario un movimento in aria per evitare errori
- durante la ricerca blocco la correzione non è attiva. Alla ripresa della lavorazione si ha il raccordo
iniziale come all'attivazione della G132 KA3
- durante la lavorazione la velocità massima di correzione (per ognuno dei due assi lineari) è
limitata a quella programmata (default 500 mm/min). Se la geometria richiede velocità superiori si
hanno errori di correzione che possono essere recuperati in un tempo successivo, non appena le
velocità rientrano nei limiti ammessi
- le correzioni sono calcolate in base alle direzioni dei movimenti assi, e sono amplificate dalla
differenza raggio programmata con HR. Quindi il grado di finitura dipende dalla regolarità della
programmazione, ma anche dall'entità della differenza raggio, che deve essere contenuta il più
possibile (ben al di sotto del limite concesso al parametro HR che è di 8,192 mm)

2.1.86 G133 KA0 ÷ KA5 - per gestione doppio mandrino e mandrini tavola
Questa prestazione è riservata a macchine multimandrino e deve essere supportata dal PLC di
macchina. Consultare il costruttore della macchina utensile per eventuali dettagli.
Con G133 KA0 si attiva il mandrino principale, con G133 KA1 si attiva il mandrino ausiliario, con
G133 KA da 2 a 5 si attiva uno dei quattro possibili mandrini tavola (che devono essere definiti ed
abilitati dal costruttore, altrimenti viene allarme CN2C14 PARAMETRI INCOMPATIBILI.
Se insieme a G133 non è programmato KA o sono programmati valori diversi da 0 1 2 3 4 5 viene
allarme CN2C14 PARAMETRI INCOMPATIBILI.
La G133 non può stare nella stessa riga insieme a G134 altrimenti viene allarme CN2C14
PARAMETRI INCOMPATIBILI.
Se la macchina non supporta i multimandrini la programmazione di G133 genera un allarme
CN1D14 ERRORE PROGRAMMA.
Al reset e a inizio programma è automaticamente attivato il mandrino principale.
Il tipo di comportamento del mandrino che viene abbandonato (può continuare la sua rotazione
oppure arrestarsi) dipende dal PLC di macchina, consultare il costruttore della macchina utensile.

2.1.87 G134 KA0 - (macchina tipo fresa) e G134 KA1/KA2 - (macchina tipo tornio)
Questa prestazione è riservata a macchine con doppia funzionalità di fresa oppure di tornio e deve
essere supportata dal PLC di macchina. Consultare il costruttore della macchina utensile per eventuali
dettagli.
Le differenze tra la gestione di una fresa e di un tornio sono:
- per la fresa la lunghezza utensile è data dal parametro "L" che vale sull'asse programmato con
G43 mentre per il tornio ci sono due parametri (contemporanei) "LX" e "LZ" che correggono la
lunghezza utensile in direzione dei due assi X e Z.
- nell'attività 4 di presa in macchina delle lunghezza utensile per la fresa si rileva la lunghezza
utensile "L" mentre per il tornio sono possibili le due lunghezze "LX" e "LZ".
- solo nel tornio è possibile (con G107) attivare la programmazione diametrale sull'asse X, e quindi
la presa delle origini e delle lunghezze nell'attività 4 specificando col carattere "D" il diametrale.
- la programmazione di M6 per la fresa comporta anche l'arresto del mandrino (è come se
contenesse un M5) mentre per il tornio il mandrino non si arresta.

D. ELECTRON 83
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Con la G134 KA0 si forza il funzionamento fresa mentre con G134 KA1 o KA2 si forza il
funzionamento tornio.
Se non è programmato KA o sono programmati valori diversi da 0,1,2 viene allarme CN2C14
PARAMETRI INCOMPATIBILI.
Al reset e a inizio programma è automaticamente ripristinato il funzionamento fresa/tornio definito in
taratura.
La G134 può essere usata più volte in un part-program, sia per forzare un funzionamento diverso
da quello previsto in taratura sia per ripristinarlo. La situazione di "tornio forzato" (ossia una macchina
che in taratura è una fresa ma forzata a funzionare come tornio) è speciale in quanto non consente
comunque la G107 (programmazione diametrale): viene un errore CN 1D14 ERRORE PROGRAMMA
come se si programma G107 per una fresa.
La G134 non può stare nella stessa riga insieme a G133 (viene allarme CN 1D14 ERRORE
PROGRAMMA).
Se il funzionamento è forzato:
- per fresa forzata a funzionare come tornio (G134KA1/G134KA2) non è possibile programmare
G25 (variazione terna di lavoro),
- per torni che diventano frese (G134KA0) è possibile impostare la terna di lavoro G25
necessaria per la lavorazione da eseguire.
Se c'è la condizione di tornio forzato e si programma G53 (per esempio durante un cambio utensile
per riferire le quote alle origini base) la macchina torna una fresa, la G53 diventa "con arresto". Per
ripristinare il funzionamento tornio non basta la G54 che annulla la G53: si deve riprogrammare
nuovamente G134 KA1 o KA2.
Viene allarme CN1D14 ERRORE PROGRAMMA se si attiva il tornio con RTCP di qualsiasi tipo
attivo (G116, G117, G118, G120, G122) oppure se si tenta di attivare lo RTCP con tornio attivo.
La programmazione di G134 provoca anche l'acquisizione delle correzioni lunghezza ed origini,
come fa anche la programmazione di L (frese) o LX o LZ (torni) in riga ISO.
La G113X è eliminata al passaggio fresa-tornio con G134 KA1 o KA2 ed è ripristinata al successivo
ritorno tornio-fresa con G134 KA0.
Se durante la fase tornio è stata disattivata la G114 al ritorno alla fresa la G114 viene riattivata, e se
sono stati cambiati (nella fase tornio) i parametri della G113X i nuovi parametri rimangono attivi anche
nella fase fresa.
Funzionamento della G134 KA0
Questa funzionalità consente di attivare il funzionamento fresa su macchine configurate come
tornio.
Sintassi generale di programmazione:
G134 KA0
Se è funzionamento forzato fresa viene sospesa la programmazione diametrale (G107), se si
programma G107 in modo forzato fresa viene allarme CN1D14 ERRORE PROGRAMMA.
La modalità fresa forzata può essere disattivata con le funzioni G134KA1 (dopo aver riattivato il
piano di lavoro XZ) o G134KA2.
Prendendo come esempio una configurazione di macchina tornio che può fare anche la fresa con
assi X, Z, Y, Q, C, M, dove:
M, C = mandrino/tavola girevole
X, Z = assi tornio (radiale, longitudinale)
Q = asse utensile (fresa) motorizzato
Y = asse Y (fresa)
Con questa sequenza si attiva la modalità fresa:

84 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

G43Q (attiva il correttore L su asse Q, può essere omessa se l’asse Q avesse numero logico 2)
G25ZYQ (attiva la terna per la fresa)
G134KA0 (attiva modalità fresa)
… (programmazione fresa)
G134KA2 (ripristina la modalità tornio)
Funzionamento della G134 KA1
Questa funzionalità è riservata a macchine in cui gli assi fresa X e Z sono usati anche come assi
tornio.
Prima di forzare il funzionamento tornio si deve attivare il piano di lavoro XZ valido per il tornio (per
esempio con G25XZY), altrimenti viene errore CN 2C14 PARAMETRI INCOMPATIBILI.
Funzionamento della G134 KA2
Questa funzionalità consente di attivare il funzionamento tornio anche se non sono usati gli assi XZ
della fresa come assi XZ del tornio.
Sintassi generale di programmazione:
G16… G134 KA2
La G16 programmata nella stessa riga della G134 KA2 consente di definire il nome degli assi che
devono funzionare come XZ del tornio. Le due funzioni devono essere separate da uno o più spazi
altrimenti viene allarme CN1D14 ERRORE PROGRAMMA
Per esempio, ammettiamo che una fresa abbia gli assi XYZ come tre assi principali (numeri logici
0,1,2) e che si voglia far funzionare come tornio in cui:
- l'asse Y della fresa diventa diametrale del tornio (quindi asse X del tornio)
- l'asse X della fresa diventa longitudinale del tornio (asse Z del tornio)
- l'asse Z della fresa diventa un terzo asse del tornio (asse Y del tornio)
Si dovrà programmare:
G16ZXY G134 KA2
Dopo l'esecuzione di questa riga sarà disponibile una macchina tornio con assi XZ convenzionali,
ottenuti però col movimento degli assi Y ed X della fresa, quindi è implicita in questa riga anche la
definizione del nuovo piano di lavoro ZX, come se dopo la G134 KA2 fosse stata programmata una
G25ZX.
Se prima della G134 KA2 erano attive diverse G16 o G25, queste sono congelate e ripristinate
automaticamente quando la G134 KA2 è annullata dalla G134 KA0 che ripristina la fresa.
Se non si programma G16 insieme alla G134 KA2 è come se si fosse programmata una G16 che
riconferma gli assi principali della macchina (ossia G16XYZ). Anche se G16 non è programmata sono
comunque congelate eventuali G16 e G25 attive in precedenza, che sono poi ripristinate da G134 KA0.
Sotto JOG (attività 4), anche se è attiva la G134 KA2, si muovono comunque gli assi fisici definiti
nelle tarature macchina, ossia non è attiva l'eventuale ridirezione degli assi ottenuta con la G16 di
G134 KA2.

2.1.88 G135 I1 - G135 J1 - gestioni avanzate dell’alta velocità


Modale.
Funzioni tipiche dell’alta velocità (G114 e G113X o G113X KA1).

Funzione G135 I1

D. ELECTRON 85
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Durante l’esecuzione di una traiettoria la funzione G135 I1 permette di ridurre i rallentamenti dovuti
a cambiamenti di curvatura (aumentando il jerk di curvatura applicato nei punti in cui avviene un
cambio di curvatura, come le transizioni retta-cerchio o cerchio-cerchio).
La sintassi di programmazione è:
G135 I… [HX…]
G135 I0 Annulla la gestione avanzata G135 I1
G135 I1 Attiva la gestione avanzata G135 I1 con nessun aumento del jerk di curvatura
G135 I1 HX0 Attiva la gestione avanzata G135 I1 con nessun aumento del jerk di curvatura
G135 I1 HX1 Attiva la gestione avanzata G135 I1, jerk di curvatura aumenta di 2 volte
G135 I1 HX2 Attiva la gestione avanzata G135 I1, jerk di curvatura aumenta di 4 volte
G135 I1 HX3 Attiva la gestione avanzata G135 I1, jerk di curvatura aumenta di 8 volte
G135 I1 HX4 Attiva la gestione avanzata G135 I1, jerk di curvatura aumenta di 16 volte
Nota: il parametro HX può essere programmato solo come numero intero da 0 a 4.

Funzione G135 J1
La G135 J1 separa la gestione degli assi rotativi usati in RTCP dalla gestione degli altri assi
macchina. Con la G135 J1 è possibile definire una tolleranza di arrotondamento applicata ai soli assi
rotativi in RTCP, diversa dalla tolleranza applicata agli altri assi macchina (specificata tramite
parametro RA della funzione G114).
Sintassi:
G135 J… [HY…]
G135 J0 Annulla la gestione avanzata G135 J1
G135 J1 HY0.1 Attiva la gestione avanzata G135 J1 con tolleranza assi rotativi di 0.1 mm
Nota: il parametro HY è la tolleranza in gradi applicata agli assi rotativi in RTCP.

La funzione G135 fa parte del sistema dell’alta velocità, per maggiori dettagli vedere il manuale
M146 “Alta velocità”.

2.1.89 G136 - micrososta


Questa prestazione serve per ottenere arresti macchina e soste si brevissima durata.
E' stata sviluppata in particolare per macchine a taglio laser, dove sia necessario lo spegnimento e
la riaccensione del laser con soste minime.
La sintassi generale del comando è:
G136 TT… HX…
Dove:
TT è il tempo di sosta in secondi, massimo 0,5 secondi. Se programmato TT negativo il ritardo è
zero, se TT>0,5 il ritardo è limitato a 0,5 secondi.
HX è un numero positivo o negativo, da trasmettere al PLC, con massimo valore assoluto di
8.000.000. Lo scopo di HX è informare il PLC sull'azione da fare (per esempio HX=1 per accendere il
laser, HX=0 per spegnerlo). Se il valore assoluto programmato è superiore a 8.000.000 il valore
trasmesso al PLC è limitato a 8.000.000. Eventuali valori frazionari di HX sono arrotondati all'intero più
vicino.
I parametri TT e HX sono obbligatori nella stessa riga dove è programmata G136, se mancano
viene allarme CN2C14 PARAMETRI INCOMPATIBILI.
G136 è una funzione con arresto. Se è programmata in un blocco con movimenti assi è eseguita
immediatamente dopo i movimenti, indipendentemente dalla sua posizione nella riga. Per esempio:

86 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

G1 F5000 X100
G136 TT0.002 HX1
è del tutto equivalente a:
G1 F5000 X100 G136 TT0.002 HX1
oppure a:
G136 TT0.002 HX1 G1 F5000 X100
In tutti e tre i casi la micrososta comandata con G136 viene eseguita subito dopo il movimento
X100.
La funzione G136 deve essere supportata dal PLC di macchina. Consultare il costruttore della
macchina utensile per eventuali dettagli.

2.1.90 G141 - G140 - correzione tridimensionale raggio utensile


Prestazioni di correzione raggio nello spazio, G141 “Correzione tridimensionale raggio utensile”
Con questa funzione è possibile eseguire una correzione tridimensionale del raggio utensile in un
part-program per punti.
Attivazione:
G141 asse1 asse2 asse3 I… J… K… KA…
dove:
asse1, asse2, asse3=nomi assi continui che individuano la terna prescelta per le correzioni di
G141. In particolare asse1=primo asse della terna, asse2=secondo asse della terna, asse3=terzo
asse della terna, quindi è importante l’ordine di programmazione per identificare la terna specificata. La
terna degli assi deve seguire G141 nella riga di attivazione.
I=differenza tra il valore del raggio teorico e quello effettivo della fresa
J=differenza tra il valore del raggio teorico e quello effettivo dell'inserto, nel caso della fresa torica
K=distanza di azzeramento dalla punta utensile:
K=0 per utensile azzerato in punta
K=I per utensile azzerato nel centro nel caso di fresa sferica
K=J per utensile azzerato nel centro nel caso di fresa torica
KA=specifica il tipo di fresa:
KA0 o non programmato per fresa sferica
KA1 per fresa torica
Il caso di fresa cilindrica è un caso particolare della fresa torica avente il parametro J=0
Se la terna non viene programmata nella riga di attivazione di G141, si prende come terna di G141
la terna di assi di lavoro attualmente valida.
asse3 deve essere l’asse lungo cui giace l’utensile (tale asse lo si può eventualmente variare
prima di programmare G141 tramite G43 o G44).
Le correzioni calcolate da G141 avranno un verso dipendente dal fatto che la lunghezza utensile sia
positiva (G43) oppure negativa (G44) e quindi saranno sommate o sottratte alle quote programmate a
seconda del caso.
Dopo l'attivazione della G141 è necessario che ciascun movimento contenente almeno una delle
quote della terna scelta per G141, contenga tutte e tre le componenti del versore normale alla
superficie di lavorazione, anche se non sono variate rispetto al blocco precedente.

D. ELECTRON 87
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Nei blocchi di movimento successivi all’attivazione di G141, possono comparire pure quote di assi
non della terna di G141.
Nelle righe di programma successive all’attivazione di G141, sono possibili blocchi di movimento
che non contengano nessun asse della terna e nessuna componente del versore normale.
Ad esempio consideriamo la situazione seguente:
Z,Y,X = assi della terna
A,B,C = altri assi non della terna
I,J,K = componenti versore normale
G141 Z Y X I1 ;correzione su fresa sferica azzerata in punta, terna ZYX con utensile che giace
lungo X
....
X10 Y5 Z6 I0.707 J0.707 K0 ;riga corretta
X10 Y5 I0.707 J0.707 ;riga non corretta: manca K
A10 ;riga corretta non compare nessun asse della terna né componente versore
B10 X5 Y10 Z9 I1 K0 ;non corretta: manca versore J
.....

Disattivazione
G141 viene disattivata programmando G140, funzione senza alcun parametro
G141 I2 ;attivazione
....
G140 ;disattivazione

Regole per l'uso di G141:


- G141 attiva è incompatibile con G2/G3/G41/G42/G43/G44, se una di queste funzioni viene
programmata mentre G141 è attiva si verifica allarme CN7B14 G141 + G43,G44,G41,G42,G2,G3
- G141 non è riprogrammabile se prima non viene disattivata con G140, altrimenti si verifica allarme
CN7B14 G141 + G43,G44,G41,G42,G2,G3
- Se si programma G141 con le funzioni G2, G3, G41, G42 attive viene allarme CN7B14 G141 +
G43,G44,G41,G42,G2,G3
- Se G141 viene programmata senza nessuno dei parametri I, J e K si ha allarme CN2C14
PARAMETRI INCOMPATIBILI
- Se si programma G141 con i parametri I e K deve necessariamente essere K=0 o K=I, altrimenti
si verifica allarme CN2C14 PARAMETRI INCOMPATIBILI
- Se si programma G141KA1 con J e K deve necessariamente essere K=0 o K=J, altrimenti si
verifica allarme CN2C14 PARAMETRI INCOMPATIBILI
- Per programmare G141 i tre assi della terna prescelta devono necessariamente esistere ed
essere assi lineari, altrimenti si verifica allarme CN5414 TARATURE MACCHINA INCONGRUENTI
- Se il terzo asse della terna prescelta non coincide con l'asse lungo cui è disposto l'utensile si
verifica allarme CN7C14 G141: ASSE UTENSILE NON VALIDO
- I movimenti programmati con G141 attiva se hanno programmata almeno una quota di un asse
della terna devono avere programmate tutte e tre le componenti del versore normale, altrimenti si
verifica allarme CN2C14 PARAMETRI INCOMPATIBILI

88 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

- G141 può essere programmata con KA che può essere solo o 0 (fresa sferica) o 1 (fresa torica),
altrimenti si verifica allarme CN2C14 PARAMETRI INCOMPATIBILI
- Se si programma G141 KA0 il parametro J non deve essere programmato o se viene
programmato deve essere 0, altrimenti si verifica allarme CN2C14 PARAMETRI INCOMPATIBILI
- Nella riga di attivazione di G141 se la terna specificata non è di seguito a G141 viene allarme
CN1D14 ERRORE PROGRAMMA

2.1.91 G142 - G143 - allontanamento utensile dal pezzo (RETRACT)


La funzione G142 (retract) richiede un allontanamento dell'utensile dal pezzo durante la lavorazione
se si verificano speciali condizioni gestite dal PLC di macchina.
Questa importante prestazione consente di evitare danni al pezzo in lavorazione in particolari
situazioni, ad esempio in caso di improvvisa caduta della tensione di alimentazione di rete. Per
funzionare ha bisogno di una predisposizione del PLC e dell'apparecchiatura elettrica di controllo dei
movimenti assi: riferirsi al costruttore della macchina utensile per ulteriori dettagli.
Generalità
Questa prestazione ha il seguente effetto: la macchina sta lavorando, arriva un segnale prestabilito
dalla logica, viene fermata la lavorazione (e quindi gli assi della macchina); la procedura di arresto è
quella che si avrebbe premendo STOP, poi viene eseguito un movimento di entità programmata lungo
l’asse utensile o lungo uno degli assi numero logico 0(X), 1(Y) o 2(Z). Eseguito il movimento il CN va in
allarme CN7E14 G142 ESEGUITA; si potrà togliere tale allarme con un RESET o con uno
spegnimento e riaccensione della macchina.
L’utilità di questa prestazione può ad esempio essere quella di far sollevare l’utensile dalla
superficie di lavorazione quando si verifica un’ improvvisa mancanza di corrente.
Nota: nel seguito con X, Y, Z indicheremo rispettivamente gli assi numero logico 0, 1 e 2.
Questa prestazione viene attivata attraverso la funzione G142.
Attivazione
La sintassi di programmazione è la seguente:
G142 [K/X/Y/Z…] [F…]
dove:
K seguito dal valore dello spostamento con segno, in mm o in pollici, se vogliamo che tale
spostamento avvenga lungo l’asse utensile. L’utensile, con G142 attiva dovrà sempre essere associato
ad uno tra gli assi X, Y o Z, (G43/G44) ma la sua direzione può essere ruotata in funzione della
rotazione della testa mandrino a cui è collegato: scegliendo K il movimento avverrà lungo la direzione
dell’asse utensile ruotato dagli assi rotativi testa e quindi in una direzione nello spazio che potrà
coinvolgere, in genere, il moto di tutti e tre gli assi X, Y e Z.
X seguito dal valore dello spostamento con segno, in mm o in pollici, se vogliamo che lo
spostamento sia eseguito lungo l’asse fisico numero logico 0.
Y seguito dal valore dello spostamento con segno, in mm o in pollici, se vogliamo che lo
spostamento sia eseguito lungo l’asse fisico numero logico 1.
Z seguito dal valore dello spostamento con segno, in mm o in pollici, se vogliamo che lo
spostamento sia eseguito lungo l’asse fisico numero logico 2.
K, X, Y e Z sono mutuamente esclusivi, uno solo tra KXYZ può essere programmato.
F velocità in mm/min. o pollici/min. alla quale compiere lo spostamento impostato.
Disattivazione
La funzione G143 disattiva la G142. Questa funzione G non ha parametri.

D. ELECTRON 89
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Note
- Se G142 viene programmata la prima volta, in un part-program, senza alcun parametro, saranno
presi come entità dello scostamento e della feed a cui eseguire tale spostamento i valori specificati
nelle impostazioni macchina (tarature). Riferirsi alle informazioni fornite dal costruttore della macchina.
- Se G142 viene riprogrammata senza alcun parametro nel part-program dopo una G143, verrà
riattivata con i precedenti parametri di attivazione.
- Una volta attivata, la G142 sarà efficace sia durante i movimenti in lavoro che durante quelli in
rapido.
- Durante il movimento di G142 la gestione dei finecorsa è diversa a seconda che sia stata
programmata G142K… oppure G142 lungo uno degli assi fisici X, Y o Z:
se è stata programmata G142X… o G142Y... o G142Z… la gestione dei finecorsa è quella che si
ha nei movimenti di JOG: se il movimento programmato con G142 porta l’asse oltre il finecorsa il
controllo esegue il movimento fino al finecorsa senza completarlo e senza dare allarme.
se è stata programmata G142K… il movimento viene eseguito attivando la G117 (RTCP) e quindi è
attiva la gestione dei finecorsa in tempo reale. Se il movimento programmato porta uno o più degli assi
coinvolti oltre il finecorsa tale movimento viene eseguito fino al raggiungimento del primo finecorsa
incontrato, alla fine si può avere anche un allarme di tipo CNEx13.
- Con G142 attiva quando si incontra una G53 si avrà una disattivazione temporanea di G142 che
verrà riattivata dalla successiva G54.
- Una volta eseguito lo spostamento programmato da G142 il CN darà l’allarme CN7E14 G142
ESEGUITA che potrà essere tolto solo con un RESET o con lo spegnimento della macchina.
- Nel caso di lock di processo (vedi G128, G129, G130) la G142 sul processo master forza una
uguale G142 anche sui processi slave collegati, nella sezione di programma in cui il lock è attivo.
Quando il lock non è attivo la G142 sul processo master funziona normalmente senza forzare la G142
sugli altri processi.
- Sempre nel caso di lock di processo, se la G142 è programmata nel part-program del processo
slave, questa viene temporaneamente disattivata quando il lock è attivo, ma funziona regolarmente
quando il lock non è attivo.
- Se NON sono presenti allarmi di tipo CN (escluso CN0013, CN0113, CNEx13, CNFx13) oppure
allarmi di tipo MU, quando si scatena la G142 il movimento viene comunque eseguito.
- Se al momento del movimento di G142 uno degli assi coinvolti non è vivo questo viene forzato
vivo ed alla fine del movimento è rimesso non vivo.
- Se nel momento in cui arriva dal PLC il segnale per scatenare la procedura di G142 e questa è
momentaneamente sospesa da G53 il CN ferma comunque gli assi ma non esegue il movimento
programmato con G142. In questa condizione viene comunque dato l’allarme CN7E14 G142
ESEGUITA.

Restrizioni ed allarmi
- Se si programma G142 mentre l’utensile è associato ad un asse che non sia X, Y o Z, il controllo
dà allarme CN7F14 G142: ASSE UTENSILE NON VALIDO.
- Se con G142 attiva si associa l’utensile (tramite G43/G44) ad un asse che non sia X, Y o Z, il
controllo dà allarme CN7F14 G142: ASSE UTENSILE NON VALIDO.
- Per poter programmare G142 è necessario che nelle impostazioni di macchina venga definita una
Gestione di G117 (RTCP testa) come generalizzata, altrimenti il controllo dà allarme CN5414
TARATURE MACCHINA INCONGRUENTI. Consultare il costruttore della macchina utensile.
- Sulla riga di programmazione di G142 non devono essere programmati altri parametri al di fuori di
X, Y, Z, K ed F, né altre G, altrimenti il controllo dà allarme CN2C14 PARAMETRI INCOMPATIBILI.

90 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

- Nella riga di G142 può essere programmato uno solo tra X, Y, Z e K, altrimenti il controllo dà
allarme CN2C14 PARAMETRI INCOMPATIBILI.
- Il valore dello spostamento programmato con X, Y, Z o K può variare da –1000mm a +1000mm
(se macchina in pollici da –39.37 pollici a +39.37 pollici).

Gestione speciale del retract con allarmi MU o allarmi rilevatore


Il normale movimento di retract (G142) non viene eseguito se, quando viene scatenato, sono
presenti allarmi CN (eccetto CN0013, CN0113, CNEx13, CNFx13) o allarmi MU.
Su alcune macchine è risultato essere utile poter eseguire il movimento di retract anche con allarmi
MU presenti oppure con allarmi rilevatore CNxx12, se i rilevatori degli assi che prendono parte al
movimento di retract non sono in allarme.
La “gestione speciale del retract” esegue in modo automatico, (senza che la logica debba attivare
alcun segnale) il movimento di retract quando si verifica una delle condizioni di allarme CNxx12 o
allarme MU sopra descritte.
Con la “gestione speciale del retract” attivata, se la G142 è stata programmata, al verificarsi di un
allarme MU o di un allarme rilevatore (allarme tipo 12) che non sia sugli assi interessati al movimento
di retract, il CN scatena il movimento di retract come programmato con la G142.
N.B. Se il movimento di retract è impostato lungo un asse (G142X o G142Y o G142Z) il movimento
di retract viene eseguito se l’asse in gioco non è in allarme. Se il movimento di retract è invece
impostato lungo l’asse utensile (G142K) il movimento di retract viene eseguito solo se tutti e tre gli assi
numlog.0, 1, 2 non sono in allarme.

2.1.92 G144 - sospensione part-program e attivazione di JOG o volantini


La G144 inserita in un part-program permette di sospenderne l'esecuzione (ma senza uscire dallo
stato di start) e di muovere gli assi continui programmati sulla riga di G144 o con i volantini o con i tasti
di JOG dedicati ai singoli assi. La G144 rimane attiva finché non si preme il pulsante di start, il che fa
continuare l'esecuzione del part-program.
Sintassi:
G144 asse1 [asse2] ... [asse n]
Gli assi programmati sulla riga di G144 possono essere solo gli assi continui dei quali se ne potrà
programmare da un minimo di uno a tutti quanti quelli presenti nel processo.
La G144 è una G con arresto.
Con G144 attiva si potranno muovere, con i volantini o con i tasti di JOG dedicati, solo gli assi
programmati sulla riga di G144.
Per quanto riguarda il movimento effettuato con i tasti di JOG dedicati, questo sarà alla velocità di 2
mm/min se il selettore di movimento è sul micrometrico, mentre sarà alla feed di lavoro programmata e
corretta con l'override (se però l'override è maggiore del 100% ci si limita al 100%) se il selettore di
movimento è su lavoro o su rapido.
Programmando sulla riga di G144 qualcosa che non sia il nome di un asse continuo si avrà allarme
CN1D14 ERRORE PROGRAMMA.
Programmando G144 senza nessun asse continuo si avrà allarme CN1D14 ERRORE
PROGRAMMA.
La G144 sospende la prestazione "JOGOFFSET" e la ripristina quando si riparte con la pressione
del tasto “start” (cioè G144 si appropria dei tasti dedicati di JOG anche se c'è la prestazione
JOGOFFSET attiva).

D. ELECTRON 91
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

2.1.93 G145 - stop and go


Questa funzione è adatta per macchine con taglio ad acqua.
La G145 richiede un momentaneo arresto degli assi, ma non è una funzione "con arresto" e quindi,
diversamente dalla G112 che è "con arresto", può essere programmata in qualunque punto del part-
program, anche durante una correzione raggio o profili aperti.
La G145 può essere programmata solo con G113X attiva, altrimenti viene allarme CN2C14
PARAMETRI INCOMPATIBILI.
La G145 agisce alla fine del movimento precedente programmato, quindi se programmata insieme
a un movimento assi agisce prima del movimento contenuto nella stessa riga. Per chiarezza di
programmazione è consigliato programmare la G145 da sola.
Se il tratto alla fine del quale è programmato l'arresto con G145 è accorciato per effetto della
correzione raggio l'arresto viene comunque fatto alla fine del tratto; se il tratto è eliminato dalla
correzione raggio l'arresto si trasferisce alla fine del tratto precedente.

2.1.94 G146 - gestione del controllo altezza


La G146 è dedicata al controllo altezza delle macchine da taglio.
Insieme a G146 deve essere programmato il parametro KA che ne decide la funzione:
G146 KA0 disattivazione del controllo altezza
G146 KA1 attivazione del controllo altezza
G146 KA11 attivazione del controllo altezza con il movimento di attacco senza arresto
G146 KA2 congelamento dell'altezza sensore
G146 KA-2 scongelamento dell'altezza sensore
Poiché il controllo altezza è strettamente legato alla sua gestione nel PLC altre regole di
programmazione dovranno essere specificate dal costruttore. Per maggiori dettagli di implementazione
e di uso vedere il manuale relativo M379 “G146 - Gestione controllo altezza”.

2.1.95 G147 - G148 - controllo della velocità in movimento


Le funzioni G147 e G148 servono in presenza di molti assi contemporanei interpolanti, per
generare la corretta velocità di interpolazione senza bisogno di ricalcolare e riprogrammare la feed ad
ogni riga di programma.
Lo scopo della prestazione è quello di riferire la feed programmata solo a certi assi e non a tutti
quelli presenti nei movimenti programmati.
Ad esempio se programmo F3000 e gli assi cui voglio riferire tale feed sono X e Z (tali assi saranno
chiamati da qui in poi assi master di feed) ed ho un movimento in XYZAB, la feed effettiva sarà
calcolata in moto tale che la traiettoria individuata da X e Z sia percorsa alla feed F3000, gli altri assi si
muoveranno di conseguenza alla feed di blocco così calcolata.

G147
La G147 permette di definire il raggio degli assi master di feed rotativi per poter trasformare il
movimento dell'asse rotativo in un equivalente movimento lineare da poter usare per il calcolo della
feed sul percorso quando tale asse verrà usato come asse master di feed (la trasformazione viene
fatta moltiplicando lo spostamento espresso in radianti per il raggio associato all’asse).
Sintassi attivazione:
G147 Asse1 Raggio1, [Asse2 Raggio2], .....[AsseN RaggioN]

92 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

dove:
Assei = nome asse
Raggioi = misura del raggio associato all’asse espresso in mm (o in pollici se la macchina è in
pollici)
La programmazione di G147 deve sottostare alle seguenti regole:
- gli assi programmati con G147 devono essere rotativi, altrimenti si verifica allarme CN2C14 -
PARAMETRI INCOMPATIBILI
- ciascun asse programmato deve essere seguito dal valore del raggio, altrimenti si verifica allarme
CN1D14 - ERRORE PROGRAMMA
Sintassi disattivazione:
G147 KA0

Questa istruzione disattiva i raggi degli assi rotativi e ripristina la situazione di default (1 grado = 1
mm).
Al reset viene messo come valore di default per i raggi degli assi rotativi di G147 il valore 57.29578
mm, in modo da avere l'equivalenza 1 grado = 1 mm. Questo implica che se si programma un asse
rotativo come master di feed senza prima avergli associato un raggio, questo avrà associato il raggio
di default sopra descritto.
Esempio:
supponiamo di avere una macchina con assi X, Y, Z, A, B, C dove X, Y e Z sono assi lineari e A, B
e C sono assi rotativi. Programmando la seguente riga:
G147 A50 C100

si stabilisce che l’asse A ha associato un raggio R di 50 mm e l’asse C un raggio R di 100 mm,


questo significa che il movimento lineare equivalente ad un movimento rotativo dell’asse A sarà dato
da:
DLA = DA * R / 57.29578 = DA * 50 / 57.29578 = DA * 0.87266 mm

Parimenti per l’asse C si avrà:


DLC = DC * 100 / 57.29578 = DC * 1.74532 mm

dove:
DA = spostamento di A in gradi
DC = spostamento di C in gradi
57.29578 = numero di gradi di un radiante
DLA = spostamento lineare equivalente dell’asse A in mm
DLC = spostamento lineare equivalente dell’asse C in mm

G147 KA1
La G147 KA1, come G147, permette di definire il raggio per uno o più assi master di feed rotativi,
per poter trasformare il movimento dell’asse rotativo in un equivalente movimento lineare da usare per
il calcolo della feed sul percorso quando:
come è con G147:
- G148 attiva
- l’asse rotativo è un master di feed
oppure quando:

D. ELECTRON 93
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

- G148 attiva
- l’asse rotativo non è un asse master di feed, e nel movimento non è coinvolto nessun asse
master di feed
Sintassi attivazione:
G147 KA1 Asse1 Raggio1, [Asse2 Raggio2], .....[AsseN RaggioN]

dove:
Assei = nome asse
Raggioi = misura del raggio associato all’asse espresso in mm (o in pollici se la macchina è in
pollici)
Sintassi di disattivazione (come la G147):
G147 KA0
Esempi di programmazione con assi lineari X, Y, Z e asse rotativo A:
caso1:
G148 XA assi master di feed XA
G147KA1 A114.59 raggio che trasforma 1 grado in 2 mm
G1F5000X100A100 per il calcolo della feed il movimento di A vale 200mm e non
100gradi
caso2:
G148 XY assi master di feed XY
G147KA1 A114.59 raggio che trasforma 1 grado in 2 mm
G1F500X100Y150A100 l’asse A non entra nel calcolo della feed perché non è asse master
di feed e nel movimento ci sono assi master di feed
G1F50000Z100A50 per il calcolo della feed il movimento di A vale 100mm e non
50gradi perché G148 attiva e nel blocco non ci sono assi master di
feed
G148
La G148 definisce gli assi master della feed e riferisce la feed programmata solo a questi assi
(quelli nella riga di attivazione di G148).
La G148 è una funzione con arresto.
Sintassi attivazione:
G148 Asse1, [Asse2], ........[Assen]

dove:
Assei = nomi assi continui
La programmazione di G148 deve sottostare alle seguenti regole:
- sulla riga di G148 deve essere programmato almeno un asse continuo, altrimenti si verifica
allarme CN2C14 - PARAMETRI INCOMPATIBILI
- è possibile programmare uno o più assi continui rotativi sulla riga di G148 senza aver
preventivamente specificato il loro raggio con la funzione G147. In questo caso, viene considerato il
raggio di default di 57.29578 mm (equivalenza 1 grado = 1 mm)
- si può programmare G148 solo se non è ancora attiva, altrimenti si verifica allarme CN2C14 -
PARAMETRI INCOMPATIBILI

94 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

- se con G148 attiva viene programmato un movimento dove nessun asse master di feed è
presente, la feed programmata sarà riferita a tutti gli assi del movimento, come se G148 non fosse
attiva
- se con G148 attiva si programma G131 o viceversa si avrà allarme CN8514 - G131+G148
Sintassi di disattivazione:
G148 KA0

Questo comando resetta tutti gli assi master di feed (nessun asse dopo questa istruzione è master
di feed) e riferisce nuovamente la feed programmata a tutti gli assi che compaiono nei movimenti.
Nel caso di G148 attiva la visualizzazione della feed reale viene riferita solo agli assi master di feed.
Se nessun asse master di feed si muove allora la feed reale viene visualizzata nel modo classico (cioè
riferita a tutti quanti gli assi del movimento).

Esempio:
supponiamo di avere una macchina con assi X, Y, Z, A, B, C dove X, Y e Z sono assi lineari e A, B
e C sono assi rotativi. Sia Ra=57.29578=raggio associato precedentemente ad A tramite la funzione
G147, programmando:
G0 X0 Y0 Z0 A0
G148 X A
F5000
G1 X50 A50 Y50
Il tratto G1 X50 A50 Y50 viene fatto a FEED=5000 sulla traiettoria definita da X ed A ma a FEED >
5000 sulla traiettoria definita da X Y ed A, e precisamente a FEED=6124.
Vediamo ora come tale valore della FEED viene calcolato.
Movimento lineare equivalente al movimento rotativo dell’asse A (raggio=57.29578):
DLA=DA * 57.29578 /57.29578 = DA = 50
DX = 50
DY = 50
La lunghezza della traiettoria in X ed A è:
DLXA = sqrt(50*50+50*50) = 50*sqrt(2) = 70.7107 mm
La lunghezza della traiettoria totale in X, Y ed A è:
DL = sqrt(DX*DX+DY*DY+DA*DA) = SQRT(50*50+50*50+50*50)= 86.6025 mm
Dunque se vogliamo che DLXA venga percorso a FEED 5000, la FEED sul percorso riferito a tutti e
tre gli assi programmati sarà:
FEED = 5000 * 86.6025 / 70.7107 = 6124
Nella tabella seguente sono riassunte alcune combinazioni di funzionamento delle funzioni G147,
G147KA1 e G148 per il controllo della velocità in movimento:

G148 G147
Caso Assi programmati Effetto
impostate

G148XYZA La feed è applicata ad X Y Z e A


1 G1X..Y..Z..A.. considerato come asse rotativo con
G147A30 raggio di 30mm (o pollici)
La feed è applicata a X Y Z, l’asse A è
2 G148XYZ G1X..Y..Z..A..
trascinato di conseguenza (comunque

D. ELECTRON 95
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

nel rispetto dei suoi valori di taratura),


G147A30
ovvero in questo caso la G147 non ha
alcun effetto

G148XYZA La feed è applicata ad A considerato


3 G1A.. come asse rotativo con braccio di
G147A30 30mm (o pollici)
La G147 non ha effetto sull’asse A
G148XYZ perché non fa parte degli assi
4 G1A.. specificati nella G148. In questo caso
G147A30 la feed verrà considerata come
progammata in gradi minuto
G148XYZA
5 G1X..Y..Z..A.. Equivale al caso 1
G147KA1A30
G148XYZ
6 G1X..Y..Z..A.. Equivale al caso 2
G147KA1A30
G148XYZA
7 G1A.. Equivale al caso 3
G147KA1A30
A differenza del caso 4, in questo
caso, con la G147KA1, la feed è
G148XYZ applicata all’asse A considerando il
8 G1A..
G147KA1A30 braccio di rotazione specificato,
ovvero 30mm (o pollici), anche se
l’asse non è incluso nella G148

2.1.96 G149 - gestione assi cilindrici


Questa prestazione è stata implementata per macchine che hanno un asse rotativo sul quale è
montato un pezzo cilindrico, con asse del pezzo coincidente con l'asse di rotazione.
In macchine di questo tipo la lavorazione sulla superficie cilindrica, fino ad ora, veniva eseguita
programmando la quota dell'asse rotativo (che da ora in poi chiameremo asse A).
Ora è stata inserita la possibilità di programmare un asse fittizio lineare (che da ora in poi
chiameremo Y) che sarebbe lo sviluppo lineare della quota ottenuta dalla rotazione dell'asse A ad una
distanza R dall'asse di rotazione (raggio del cilindro). L'asse Y verrà chiamato nella seguente
descrizione "Asse cilindrico".
Per l’abilitazione all’uso di questa prestazione riferirsi alla documentazione del costruttore della
macchina.
Per impostare il raggio del cilindro si deve programmare la funzione G149 con la seguente sintassi:
G149 HR.... ;imposta la misura del raggio in millimetri (anche se la macchina è definita in pollici)

dove: HR=raggio del pezzo cilindrico.


Dopo aver impostato un raggio con la funzione G149, questo rimane memorizzato anche allo
spengimento.
ATTENZIONE: alla prima accensione, prima di aver mai programmato una G149, il raggio del
cilindro vale 1mm.
NOTA: la funzione G149 ha l'unico scopo di impostare il raggio del cilindro, l'attivazione della
programmazione segue lo stato asse vivo/non vivo degli assi A e Y come descritto di seguito.
Per attivare la programmazione dell'asse cilindrico Y o quella dell'asse vero A si agisce sullo stato,
vivo o non vivo, dei due assi. I due tipi di programmazione sono mutuamente esclusivi. In particolare:

96 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

A vivo Y vivo => programmazione in Y


A vivo Y non vivo => programmazione in A
A non vivo Y vivo => allarme CN1D14 se si prova a programmare sia A che Y
A non vivo Y non vivo => allarme CN1D14 se si prova a programmare sia A che Y
All'accensione ed al reset si attiva la programmazione secondo la tabella sopra descritta in accordo
con la taratura "Asse vivo al reset" degli assi A e Y impostata dal costruttore della macchina.
La modifica dello stato (assi vivi/non vivi) degli assi A e Y segue le seguenti regole:
- La programmazione di G28Y è sempre permessa, qualsiasi sia lo stato vivo/non vivo degli assi A
e Y. Dopo la programmazione di G28Y si attiva la programmazione dell'asse Y.
- La programmazione di G29Y è sempre permessa, qualsiasi sia lo stato vivo/non vivo degli assi A
e Y. Dopo la programmazione di G29Y, entrambi gli assi A e Y vengono resi non vivi. In questo stato è
proibita la programmazione sia dell'asse A che dell'asse Y. Se uno di questi due assi viene
programmato si verifica allarme CN1D14.
- La programmazione di G28A è permessa solo se l'asse Y è non vivo. Dopo la programmazione di
G28A si attiva la programmazione dell'asse A, quindi, se è attualmente attiva la programmazione in Y
(G28Y) e si desidera passare alla programmazione di A, occorre programmare G29Y G28A
- La programmazione di G29A è permessa solo se l'asse Y è non vivo. Dopo la programmazione di
G29A si rende l'asse A non vivo. Nota: la programmazione di G29A può essere a tutti gli effetti
sostituita dalla programmazione di G29Y, che ha l'effetto di rendere non vivi sia l'asse A che l'asse Y.
Nella tabella sottostante,viene spiegata la sintassi delle operazioni comuni:

Stato partenza Impostata Stato ottenuto

A vivo, Y non vivo A vivo, Y vivo


Programmazione di Y (mm)
Programmazione di A (gradi) G28Y

A vivo, Y non vivo A non vivo, Y non vivo


Programmazione di A o Y non
Programmazione di A (gradi) G29A
ammessa

A vivo, Y vivo A non vivo, Y non vivo


Programmazione di A o Y non
Programmazione di Y (mm) G29Y
ammessa

A vivo, Y vivo A vivo, Y non vivo


G29Y
Programmazione di A (gradi)
Programmazione di Y (mm) G28A
(in due righe distinte)

A vivo, Y vivo Non ammessa, per tornare alla


programmazione dell'asse A
Programmazione di Y (mm) G28A
occorre prima disattivare Y, poi
riattivare A

D. ELECTRON 97
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

ATTENZIONE: con la prestazione asse cilindrico attiva non è possibile fare uso dell'attivazione
automatica degli assi A e Y quando viene programmato un loro movimento e sono nello stato non vivo.
Come già detto, con entrambi gli assi A e Y non vivi, la programmazione di un movimento di uno
qualsiasi dei due assi provoca un allarme CN1D14.
La visualizzazione della quota dell'asse cilindrico Y è sempre congruente con il raggio impostato,
anche se la programmazione dell'asse Y non è al momento attiva.
Regole e vincoli:
- Il minimo raggio programmabile con G149 è 1 mm
- Il massimo raggio programmabile con G149 è 5729.775 mm
- Se viene programmato un raggio al di fuori dei limiti viene un errore CN2C14 - PARAMETRI
INCOMPATIBILI.
- se l'asse vero A è un asse ciclico, ad ogni reset, all'accensione e alla programmazione della G149
si riduce la quota dell'asse cilindrico Y entro un giro della quota dell'asse vero A.
Vediamo di chiarire con un esempio:
asse vero A con ciclicità = 360 gradi
asse cilindrico Y
raggio del cilindro HR=57.295775 millimetri (questa misura del raggio fa si che lo spostamento di 1
grado dell'asse rotativo vero A comporti lo spostamento lineare di 1 millimetro dell'asse cilindrico Y
(perché DY mm = DA gradi*HR/57.295775)
Programma:
G149 HR57.295775
G28Y (attiva programmazione asse Y)
G0 Y0 (riporta Y a 0 mm)
G0 Y790 (a video Y=790, A=70)
Nota: in questo movimento l'asse A compie 2 giri più 70 gradi, (infatti 790=360*2+70).
A fine programma viene premuto reset.
Dopo la pressione del reset, vengono recuperati i giri interi fatti dall'asse Y, la quota di Y viene
riportata entro un giro dell'asse A ovvero viene portata al valore 70.

2.1.97 G150 - impostazione correzione raggio per torni


La G150 consente di impostare un modo di correzione raggio per torni più facilmente utilizzabile.
La G150 deve essere programmata prima della richiesta di correzione raggio G41/G42 e può
essere programmata solo se la macchina è un tornio oppure una fresa forzata come tornio con G134.
Se è programmata G150 con correzione raggio attiva o su macchina non tornio viene allarme
CN2C14 PARAMETRI INCOMPATIBILI
I parametri associati alla G150 sono:
- I sovrametallo
- KA scelta dell’orientamento e disattivazione
Le possibili combinazioni dei parametri sono le seguenti:
G150 I imposta solo il sovrametallo
G150 KA imposta solo l’orientamento
G150 I KA imposta sia sovrametallo che orientamento

98 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

La G150 permette di definire una “punta virtuale” dell’utensile spostata rispetto al centro
dell’utensile nella direzione definta con KA.
Per affrontare la questione della compensazione del raggio utensile per torni, occorre prima di tutto
definire due punti importati, la punta teorica dell’utensile e il centro utensile:
Nella figura, il punto A rappresenta il centro utensile, ovvero il centro del settore raggiato. Il punto B
rappresenta la punta teorica dell’utensile.

La punta teorica è il punto di azzeramento dell’utensile, le quote assi visualizzate a video sono
riferite sempre al punto B (punta teorica).
Quando si affronta un profilo in correzione raggio, è necessario conoscere la posizione della punta
teorica rispetto al centro utensile:

Secondo le figure precedenti, i codici di orientamento sono i seguenti:


G150KA0 = disattiva la G150 e annulla il sovrametallo
G150KA1 = posizione 1. Punta virtuale rivolta in direzione Z- e X-
G150KA2 = posizione 2. Punta virtuale rivolta in direzione X-
G150KA3 = posizione 3. Punta virtuale rivolta in direzione Z+ e X-

D. ELECTRON 99
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

G150KA4 = posizione 4. Punta virtuale rivolta in direzione Z+


G150KA5 = posizione 5. Punta virtuale rivolta in direzione Z+ e X+
G150KA6 = posizione 6. Punta virtuale rivolta in direzione X+
G150KA7 = posizione 7. Punta virtuale rivolta in direzione Z- e X+
G150KA8 = posizione 8. Punta virtuale rivolta in direzione Z-
Durante la correzione raggio le quote visualizzate non contengono le correzioni impostate con
G150, quindi non è visualizzata la posizione della punta virtuale.

2.1.98 G151 - posizionamento grossolano del mandrino


Il posizionamento grossolano del mandrino serve per fermare il mandrino, orientandolo sullo zero
del rilevatore, con un movimento che non inverte mai il senso di rotazione.
La precisione del posizionamento è entro i 10 gradi. Se lo zero viene superato di oltre 10 gradi si
tenta il posizionamento allo zero successivo (il mandrino compie un altro giro senza tornare indietro).
Questa prestazione serve, ad esempio, in operazioni di barenatura al termine delle quali si desideri
arrestare il mandrino per distaccare l'utensile dalla parete lavorata: in questi casi occorre arrestare il
moto mandrino senza invertirne il senso di rotazione (si potrebbe rompere o danneggiare l'utensile).
Questo tipo di posizionamento di ottiene programmando G151 sulla riga dove viene programmata
M19:
M19 G151 = posizionamento grossolano
M19 = posizionamento standard
La G151 vale solo nel blocco e quindi non è modale.

2.1.99 G152 KA1 - G153 KA1 - salvataggio/ripristino origini attive


Le funzioni G152 KA1 (salva le origini attive) e G153 KA1 (ripristina origini attive salvate con l’ultima
G152 KA1) servono per la scrittura di cicli fissi o sottoprogrammi dove è necessario cambiare le origini
e poi ripristinare quelle precedenti senza conoscerne il nome.
G152 KA1 e G153 KA1 sono funzioni con arresto.
La programmazione di KA1 è obbligatoria, programmare KA con valore diverso da 1 genera
l’allarme CN2C14 PARAMETRI INCOMPATIBILI.
Se si programma G153 KA1 senza che preventivamente siano state salvate origini con G152 KA1
si ha errore CN1D14 ERRORE PROGRAMMA.
La G152 KA1 può essere programmata più volte senza che sia programmata la G153 KA1; in
questo caso le origini salvate sono memorizzate in un apposito spazio di memoria che contiene fino ad
un massimo di 7 livelli.
L’accumulo di G152 KA1 oltre 7 livelli genera un errore CN1D14 ERRORE PROGRAMMA.
Attenzione: la G153 KA1 ripristina le origini salvate con l’ultima G152 KA1 eseguita: è molto
importante che il programmatore sia certo che ogni G152 KA1 abbia la sua corrispondente
G153 KA1 e che per giri di programma, condizionamenti od altro non sia mai possibile
un’errato ripristino di origini attive.

2.1.100 G154 - ricerca blocco per lunghezza


La G154 serve per la ricerca blocco per lunghezza, utilizzata soprattutto per macchine da taglio
lamiera (laser o plasma).

100 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

La lunghezza percorsa dopo la G154 viene salvata in tempo reale in memoria permanente ed è
disponibile per una successiva ricerca blocco per lunghezza, anche in caso di improvvisa caduta di
alimentazione.
Le caratteristiche della G154 sono:
- è una funzione senza arresto (quindi può essere programmata dovunque nel part-program)
- non ha bisogno di nessun parametro
- può essere programmata più volte in un part-program, per consentire una ricerca veloce da parte
del supervisore
La G154 serve a dare certezza di funzionamento alla ricerca blocco per lunghezza, dato che la
lunghezza del primo movimento eseguito in automatico dipende dalla posizione fisica iniziale degli
assi, che è imprevedibile.
Di norma la G154 dovrebbe essere programmata subito dopo il raggiungimento di un punto certo
(altrimenti la successiva ricerca blocco può trovare un punto indeterminato, che dipende dalla
posizione iniziale della macchina). Per esempio per una macchina a due assi XY:
INIZIO PROGRAMMA%
G0 X100 Y90
G154

Anche dopo la G154, non sono conteggiati i movimenti:


- in G33/G84
- durante la G36H (halt)
- in MDI
- richiesti da sottoprogrammi di sistema (di conseguenza non si può ricercare all’interno di un
sottoprogramma di sistema, che normalmente è da considerare un blocco unico).
Nell’utilizzo della lunghezza si deve comunque tenere conto di alcuni fatti importanti:
- il trasferimento in memoria permanente della lunghezza è sempre in ritardo di qualche
millisecondo e quindi, soprattutto per elevate velocità di lavoro, la lunghezza memorizzata alla
ripresa della lavorazione può risultare inferiore a quella effettiva
- se è in funzione la G113X (che arrotonda gli spigoli) e la G154 è programmata su uno spigolo,
la lunghezza è misurata a partire dal punto più vicino allo spigolo, quindi si possono avere
scostamenti della lunghezza misurata in esecuzione rispetto a quella calcolata in ricerca blocco
se (per esempio a causa di un diverso punto di partenza) lo spigolo risulta diverso nei due casi.
La differenza di lunghezza tra ricerca blocco ed esecuzione è normalmente non superiore a 2
volte RA (indice di precisione della G113X)

2.1.101 G155 - funzionalità “raster”


La funzione G155 (prestazione raster) è dedicata a macchine da taglio laser. Questa funzionalità è
strettamente legata alle caratteristiche della macchina utensile e deve essere supportata dal PLC, è
quindi da usare secondo le specifiche dettate dal costruttore.
Questa prestazione permette di soddisfare la seguente necessità: si vuole, tramite un laser,
incidere su una superficie giacente su un piano individuato da due assi della macchina, una scritta o
una figura.
La zona di incisione, detta area raster, è individuata dalle coordinate di 4 punti (basso sinistra,
basso destra, alto sinistra, alto destra) che la delimitano.
L’area raster è suddivisa in N righe equidistanti in senso verticale ed M colonne equidistanti in
senso orizzontale.

D. ELECTRON 101
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

L’intersezione delle N righe con le M colonne genera un reticolo di NxM punti che sono equidistanti
tra loro sulle singole righe orizzontali e sulle singole colonne verticali.
Ciascuno di questi punti rappresenta il centro di un tratto che il laser deve incidere.
L’incisione da parte del laser avviene durante movimenti orizzontali che percorrono le varie righe
dell’area raster.
A partire dalle coordinate dei 4 punti che delimitano l’area raster, dal numero di righe N e dal
numero di colonne M il CN si calcola le coordinate dei vari punti da incidere.
Un file di dimensione NxM bytes, detto file raster, contiene in ciascun byte la percentuale di tratto
(un tratto è dato dalla distanza tra punto e punto su una riga orizzontale), centrato su un punto dell’area
raster, che deve essere incisa dal laser.
La corrispondenza tra i bytes del file ed i punti dell’area raster è la seguente: il primo bytes
corrisponde al punto P1 (basso sinistra), il secondo al punto successivo sulla stessa riga, e così via.
La dimensione del file raster deve essere di NxM bytes.
La G155 permette di eseguire una incisione, tramite laser, come sopra descritto.
La sintassi di programmazione è suddivisa in più righe ISO (intendiamo con X il primo asse,
l’orizzontale, dell’area raster, con Y il secondo asse, il verticale, dell’area raster, con P1 il punto in
basso a sinistra, con P2 quello in basso a destra, con P3 quello in alto a sinitra, con P4 quello in alto a
destra):
G155 HX1 "nome file raster completo di path"
G155 HX2 HR<X di P1> HT<Y di P1>
G155 HX3 HR(X di P2> HT<Y di P2>
G155 HX4 HR<(X di P3> HT<Y di P3>
G155 HX5 HR<X di P4> HT<Y di P4>
G155 HX6 HR<Numero Righe> HT<Numero Colonne)
La sintassi di disattivazione è
G155 HX0
La sequenza di programmazione delle righe ISO di G155 deve seguire l’ordine degli HX: G155
HX1, G155 HX2, etc..., altrimenti viene errore CN2C14 PARAMETRI INCOMPATIBILI.
G155 è incompatibile con la ricerca blocco e si verifica errore CN8A14 G155 + RICERCA BLOCCO
se si trova G155 programmata in ricerca blocco.
Le coordinate dei 4 punti P1÷P4 che delimitano l’area raster sono riferite all’origine attiva al
momento della loro programmazione.
Le varie righe ISO di programmazione G155 possono essere inframezzate da altre righe ISO che
non contengono G155.
Il file raster deve avere la dimensione corretta, cioè Nrighe x Mcolonne bytes, altrimenti viene errore
CN2C14 PARAMETRI INCOMPATIBILI.
Se il file raster specificato non esiste si verifica errore CN2C14 PARAMETRI INCOMPATIBILI.
Nessun controllo viene fatto sulla congruenza delle coordinate di P1, P2, P3 e P4 per la definizione
dell’area raster da incidere, che è quindi compito del programmatore dare in maniera coerente, pena
una incisione non corretta.
Dopo aver programmato G155 HX6 il CN è predisposto per eseguire i movimenti durante i quali
saranno dati gli impulsi al laser secondo quanto specificato nel file raster.
La modalità di incisione è quella di inviare impulsi al laser quando si esegue un movimento lungo
una riga orizzontale dell’area raster.

102 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Se durante i movimenti di incisione il CN si trova senza più bytes per creare gli impulsi laser si
verifica allarme CN2B13 (ciò può avvenire se la TSR Z32DG (DOS) o Z32WINDG (Windows) non
legge abbastanza velocemente il file raster, ma è una situazione che non dovrebbe mai verificarsi).
La modalità di incisione può essere monodirezionale o bidirezionale:
- monodirezionale significa che si incide solo da sinistra a destra, cioè i movimenti con le incisioni
su ciascuna riga dell’area raster partono dalla sinistra della riga e vanno verso destra. Una volta che
abbiamo eseguito tutte le incisioni sulla riga percorsa si passa ad incidere sulla successiva riga ma
riposizionandosi all’inizio (sinistra) di questa riga.
Durante il riposizionamento la coordinata della terna di lavoro perpendicolare al piano dell’area
raster può essere sollevata di una quantità che chiameremo "alzata".
- bidirezionale significa che le incisioni vengono comandate nel movimento che percorre la prima
riga da sx a dx, la seconda da dx a sx, e così via; cioè le righe dell’area raster vengono incise nei
movimenti che vanno da sx a dx sulle righe dispari (la prima, la terza, etc..) e nei movimenti che vanno
da dx a sx nelle righe pari (seconda, quarta, etc...). In questo caso non vi è alzata dell’asse
perpendicolare al piano dell’area raster.
I movimenti con impulsi laser dovranno essere eseguiti a feed costante per poter correttamente
incidere secondo le percentuali specificate nel file raster e quindi si dovrà giungere a feed costante sul
primo punto della riga da incidere: il movimento dovrà partire non sul primo punto da incidere di
ciascuna riga, ma prima in modo da arrivare alla velocità impostata su tale punto.
Lo spazio necessario per arrivare a velocità costante lo chiameremo extracorsa e sarà di entità
dipendente dalla velocità di lavoro impostata e dai parametri dinamici degli assi, sarà cura del
programmatore impostare un corretto valore di extracorsa (lungo l’asse orizzontale dell’area raster).
Una volta programmata G155 HX6 il CN è pronto a eseguire i movimenti contenenti gli spari laser.
Per far capire al CN quali sono questi movimenti si dovrà impostare #Pn all’inizio di ciascun
movimento con gli spari laser, dove n è il numero della riga dell'area raster percorsa dal movimento. A
fine movimento si dovrà programmare #P0 nel part-program per informare il CN che il movimento di
riposizionamento che segue non ha spari laser.
N.B. #Pn ha n sempre positivo se incisione monodirezionale, n positivo e negativo se movimento
bidirezionale con n positivo sempre per le righe dispari (la prima, la terza etc...) ed n negativo per righe
pari (seconda, quarta, etc...) che vengono percorse in senso inverso.
Se in modalità di incisione monodirezionale nella macro che gestisce i movimenti raster compare
un #P con un valore negativo si verifica allarme CN2D13.
Tutte le particolarità del part-program da implementare potrebbero essere onerose per il
programmatore e quindi D.Electron fornisce una macro nella quale viene implementato quanto sopra
descritto.
Alla macro verranno passati i seguenti parametri:
ZFP[1] = EXTRACORSA in mm
ZFP[2] = SOLLEVAMENTO PER PASSATE MONODIREZIONALI in mm
ZFP[3] = 0=BIDIREZIONALE, 1=MONODIREZIONALE
ZFP[4] = X (prima coordinata in mm) di P1 (punto basso sx area raster)
ZFP[5] = Y (seconda coordinata in mm) di P1 (punto basso sx area raster)
ZFP[6] = X (prima coordinata in mm) di P2 (punto basso dx area raster)
ZFP[7] = Y (seconda coordinata in mm) di P2 (punto basso dx area raster)
ZFP[8] = X (prima coordinata in mm) di P3 (punto alto sx area raster)
ZFP[9] = Y (seconda coordinata in mm) di P3 (punto alto sx area raster)
ZFP[10] = X (prima coordinata in mm) di P4 (punto alto dx area raster)
ZFP[11] = Y (seconda coordinata in mm) di P4 (punto alto dx area raster)

D. ELECTRON 103
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

ZFP[12] = NUMERO RIGHE area raster


ZFP[13] = NUMERO COLONNE area raster
ZFP[14] = Z di LAVORO in mm
Inoltre il programma che chiama la macro dovrà, prima di chiamarla, programmare G155 HX1 con
il nome del file raster.
N.B. Le coordinate dei 4 punti P1÷P4 che delimitano l’area raster sono riferite all’origine attiva al
momento della loro programmazione nelle righe di G155 e quindi non si dovrà cambiare origine dopo
averle programmate fino a che non verrà disattivata G155.
ATTENZIONE: G155 funziona con G117 e G118N, ma non funziona con G116 e G118NHR1
anche se non viene dato nessun allarme nel caso in cui si cerchi di attivare G155 con G118NHR1 o
con G116.
Esempio: supponiamo che la macro di gestione della prestazione raster sia nel file 201 di CMOS,
allora il programma chiamante potrebbe essere:
ZFP[1]400 (extracorsa)
ZFP[2]2 (sollevamento in mm per passate monodirezionali)
ZFP[3]1 (flag 0=bidir, 1=monodir)
ZFP[4]0 (X P1)
ZFP[5]0 (Y P1)
ZFP[6]25 (X P2)
ZFP[7]0 (Y P2)
ZFP[8]0 (X P3)
ZFP[9]20 (Y P3)
ZFP[10]25 (X P4)
ZFP[11]20 (Y P4)
ZFP[12]200 (numero righe: P1-P3 e P2-P4)
ZFP[13]250 (numero colonne: P1-P2 e P3-P4)
ZFP[14]10 (Z lavoro)
G155 HX1 C:\Z32\PPG\FILE.RST (file raster)
F50000 (feed di lavoro)
!GOP201! (salta a macro di gestione G155)
G155 HX0 (disattiva G155)
M2

2.1.102 G156 - gestione visualizzazione grafica tornio


La funzione G156, nel caso di macchina tornio, permette di impostare due offset, per il primo e per
il secondo asse della terna di lavoro, per spostare la visualizzazione nella grafica di tempo reale e
nell’esecuzione grafica o simulazione geometrica.
E’ una funzione modale con arresto.
Se si prova a programmarla su una fresa dà allarme CN2C14 (parametri incompatibili).
Sintassi di attivazione:
G156 HX... HY...

104 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

dove HX esprime l’offset per il primo asse della terna, HY per il secondo asse della terna
Si disattiva con:
G156 KA0
Nella riga di attivazione sono obbligatori entrambi i parametri HX e HY pena il verificarsi dell’allarme
CN2C14 - PARAMETRI INCOMPATIBILI.
La funzione G156 è da considerarsi riservata a D.Electron per lo sviluppo di interfacce
dedicate a sistemi di tipo tornio

2.1.103 G157 HX - per collegamento tra part-program e fast-codos


La G157 è una funzione senza arresto e deve essere accompagnata nella riga dal parametro HX.
La G157 HX… è destinata a programmatori software di supervisori e programmi CAM/DNC esterni.
Essa permette la sincronizzazione del CAM esterno “in linea” con l’esecuzione del part-program e
quindi l’accesso ai dati interni di Z32 (per esempio valore dei parametri programmati) superando
l’effetto del buffer del look-ahead.
Il parametro HX programmato insieme alla G157 è trasferito in memoria in tempo reale ed è
leggibile da fast-codos (vedere il manuale M211) tipo 16, wnd=66.
Il dato letto è il valore del parametro HX programmato, arrotondato all’intero più vicino.
Il possibile uso della G157 da parte di un CAM esterno che genera “in linea” ed in tempo reale il
part-program da eseguire è il seguente:
- il CAM genera e trasmette in DNC tutte le righe di part-program che non hanno bisogno di
conoscere parametri interni di Z32
- quando il CAM ha bisogno di dati di Z32 genera una riga con “G157 HX …” dove il valore di HX è
sempre incrementato per evitare possibilità di equivoco
- dopo questa riga il CAM non trasmette altre righe in DNC ma sorveglia (tramite il comando di fast-
codos 16.66) il valore del parametro di G157 in memoria
- quando il valore letto è identico all’ultimo valore programmato significa che Z32 ha letto tutte le
righe e quindi i valori dei parametri in memoria sono aggiornati all’ultima riga.
- a questo punto il CAM può leggere i dati che gli servono (per esempio con i comandi 17, wnd
vari), continuare la generazione del part-program e trasmettere nuove righe in DNC.
Da notare che essendo la G157 senza arresto, il buffer del look-ahead contiene normalmente
abbastanza movimenti da interpolare per consentire tutto il meccanismo di soncronizzazione in tempo
mascherato, senza provocare rallentamenti nei movimenti macchina.

2.1.104 G158 - G159 - forzatura asse ciclico/non ciclico


Si tratta di funzioni destinate alla realizzazione di macro di sistema, che sono da usare con cautela
e da parte di personale esperto.
G158 (che deve essere seguita da un nome asse) forza ciclico l’asse. Esempio:
G158W forza l’asse W come ciclico

G159 (che deve essere seguita da un nome asse) forza non ciclico l’asse. Esempio:
G158V forza l’asse V come ciclico

Altre informazioni:
- G158 e G159 sono modali con arresto
- al reset sono ripristinate le condizioni di taratura

D. ELECTRON 105
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

- nella stessa riga dove sono contenute G158 o G159 non possono essere programmati HX o HY,
altrimenti viene allarme CN2C14 - PARAMETRI INCOMPATIBILI.

2.1.105 G200 HX0 / G200 HX1 - impostazione modo DNC


Nelle tarature di Z32 è prevista l'impostazione del modo DNC, che può essere del tipo "$%" oppure
del tipo "COTERM".
Il tipo $% riceve i dati con un protocollo molto semplice attraverso la linea seriale A (vedere
manuale M161).
Il tipo COTERM riunisce tutti gli altri modi, da quello attraverso la linea seriale B ai modi interni di
Z32, che sono usati dai vari programmi di supporto (ZTERM, TERMS, DIGIT...).
In qualche caso l'utente ha bisogno di entrambi i modi.
Con la funzione G200 si può ottenere la variazione, che può provenire da part-program oppure da
semiautomatico:
G200 HX0
predispone per modo $%
G200 HX1
predispone per tutti gli altri modi
La funzione G200 è trasparente al reset. Una volta programmata permane fino a che non si cambia
con un'altra G200.
Alla prima accensione è valido il modo impostato in taratura.
Se non si programma HX nella stessa riga viene allarme parametri incompatibili.

2.1.106 G200 HX2 / G200 HX3 - disinserimento calcio all’inversione


Quando un asse di macchina inverte il segno della velocità si genera una perdita di moto, ossia
invece di riprendere subito il movimento nella direzione opposta l’asse rimane immobile per qualche
tempo.
Uno dei mezzi usati per combattere questo fenomeno è una particolare taratura di macchina
chiamata “calcio all’inversione”: quando l’asse deve invertire la direzione di movimento gli viene inviato
un comando supplementare che accelera l’inversione.
Questo comando supplementare può essere nocivo nel caso che l’inversione sia molto lenta, cosa
che può avvenire con cerchi di raggio molto grande o eseguiti a bassa velocità o con profili quasi piani.
L’effetto in questo caso sono movimenti leggermente fuori traiettoria (ordine di grandezza 0.01 mm,
dipendenti dalla dinamica della macchina) che lasciano segni sul pezzo.
è possibile disabilitare il calcio all’inversione programmando nel part-program:
G200 HX3 (disabilita il calcio all’inversione)
Se nello stesso part-program si desidera riabilitare il calcio si programma:
G200 HX2 (abilita calcio all’inversione)
Entrambe le funzioni sono modali, con arresto.
Al RESET e ad inizio programma il calcio all’inversione è sempre abilitato.

2.1.107 G200 HX4 / G200 HX5 - programmazione del cerchio completo


L’esecuzione all’interno di un part-program della riga:

106 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

G200 HX4
forza, per le righe successive, l’esecuzione del cerchio completo quando l’arco di cerchio è
programmato con G2/G3 I J X Y e le quote finali sono identiche alle quote iniziali.
L’effetto di G200 HX4 è modale, ossia permane in tutte le righe successive fino all’eventuale
disattivazione con G200 HX5.
Le condizioni per l’esecuzione del cerchio completo sono:
- deve essere programmato con G2/G3 I J X Y
- le quote finali devono essere identiche alle quote iniziali
L’effetto di G200 HX4 viene annullato programmando:
G200 HX5
Esiste una speciale taratura di macchina (consultare il costruttore) che forza il cerchio completo a
inizio programma, rendendo inutile la programmazione di G200HX4. Se questa taratura è attiva è
possibile eliminarla con G200 HX5.
Vedi anche nel capitolo geometria il paragrafo programmazione del cerchio completo.

2.1.108 G200 HX6 / G200 HX7 - modifica velocità di ricerca lenta in G61
La velocità di ricerca lenta in G61 è definita nelle tarature macchina.
Con questa funzione è possibile modificare da part-program la velocità di ricerca lenta. Esempio:
G200 HX6 HY500
Dopo questa istruzione la velocità di ricerca lenta di G61 diventa il 50% di quella in taratura.
La velocità di ricerca definita in taratura viene moltiplicata per HY/1000.
HX deve essere programmato nella stessa riga di G200 mentre HY può essere definito in righe
precedenti. Esempio:
HY500
G200 HX6
Il campo valido per HY è da 0 a 1500. Quindi con G200 HX6 la velocità di ricerca lenta di taratura
può essere diminuita fino a zero (ma attenzione, se si mette zero il movimento di ricerca non viene
effettuato) oppure può essere aumentata fino al 50%.
Valori esterni a questo intervallo sono limitati agli estremi, quindi valori di HY negativi agiscono
come 0, mentre valori maggiori di 1500 agiscono come 1500.
La forzatura della velocità di ricerca lenta permane fino a fine part-program, mentre viene eliminata
da un reset o inizio programma.
La disattivazione della forzatura e quindi il ripristino della taratura si ha con:
G200 HX7
oppure con:
G200 HX6 HY1000

2.1.109 G200 HX8 / G200 HX9 - maschiatura rigida senza inversione mandrino.
La funzione di maschiatura rigida G63 prevede che l’asse sia sempre rigidamente agganciato al
mandrino, che quindi deve invertire a fine maschiatura per il ritorno alla quota di partenza.
Da qualche tempo sono disponibili attrezzature che consentono una maschiatura “semirigida” con
inversione automatica del senso di rotazione, che quindi eliminano la necessità di inversione del
mandrino.

D. ELECTRON 107
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

Per queste attrezzature il ciclo di maschiatura deve essere:


a) rotazione del mandrino
b) partenza dell’asse di maschiatura e aggancio alla rotazione mandrino
c) avanzamento di maschiatura
d) inversione dell’asse senza inversione del mandrino, con momentanea perdita del sincronismo e
nuovo aggancio in direzione inversa
e) ritorno al punto di partenza
E’ possibile forzare l’esecuzione di questo ciclo programmando G200 HX8 prima della G63, e
tornare al ciclo di maschiatura standard con G200 HX9. Esempio:
T57M6 (MASCHIATORE CON INVERSIONE PASSO 2)
G200 HX8
...
G63 Z-50 K2
...
G63 Z-50 K2
...
T58M6 (MASCHIATORE RIGIDO PASSO 1)
G200 HX9
...
G63 Z-80 K1
...
Al RESET e a inizio programma è attiva la modalità standard (maschiatura rigida con inversione
mandrino, G200 HX9).
La G200 HX8 è modale: rimane attiva fino al reset e può essere disattivata con G200 HX9.
Con G200 HX8 attiva il tempo di inversione dell’asse è il doppio del tempo di attacco morbido
definito in taratura per la G63, perché durante l’inversione si ha un gradino di velocità da positivo a
negativo che è quindi il doppio rispetto al gradino di velocità iniziale che va da zero alla velocità
positiva.

2.1.110 G200 HX10 - per abilitare la G113X KA1 a tempo.


La prestazione G113X KA1 (alta precisione nel controllo assi) è un'opzione speciale soggetta a
licenza, quindi se viene programmata in macchine che non hanno la licenza viene allarme CN7814
OPZIONE SOFTWARE NON ABILITATA.
Per consentire all'utente di rendersi conto se si tratta di una prestazione che gli può essere utile, è
possibile abilitare questa opzione per un tempo complessivo di circa 30 minuti programmando nel part-
program G200 HX10.
Se la macchina ha la licenza la G200 HX10 rimane senza effetto.
Se invece la macchina non è dotata di licenza, trascorsi circa 30 minuti di lavoro con G113X KA1
attiva viene allarme CN7814.
ATTENZIONE: l'allarme può venire anche durante l'esecuzione del pezzo, quindi si deve
usare questa prestazione solo per test dimostrativi.
I 30 minuti sono complessivi di lavoro; non sono influenzati da RESET, cambio programma ecc…
Una volta scaduti i 30 minuti la G113XKA1 non può più essere usata.
I 30 minuti di prova si ripristinano con un ciclo di spegnimento/accensione della macchina.

108 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

2.1.111 G200 HX11 / G200 HX12 - modalità sosta G4 precisa sotto G113X
Funzionalità sviluppata per le macchine a taglio laser, ma utilizzabile anche per altri scopi.
Il tempo per la sosta G4 è programmato col parametro TT.
Se è attiva la G113X il tempo di sosta programmato viene allungato di un tempo totale di circa 140
millisecondi, dovuto ai tempi interni di calcolo, inoltre si ha un'incertezza del tempo di sosta che può
arrivare a 24 millisecondi dovuta alla sincronizzazione degli stati interni.
Ciò significa che il tempo di sosta minimo ottenibile programmando TT0 è di circa 140 millisecondi.
Poiché questo tempo può essere inutilizzabile per soste di tempi minimi è stata introdotta una
modalità "precisa" della sosta, attivabile da part-program con G200 HX11 e disattivabile con G200
HX12.
G200 HX11 / G200 HX12 sono modali, senza arresto.
Per compatibilità con i part-program esistenti al reset ed a inizio programma è attiva la modalità
standard (come G200 HX12).
Con modalità sosta precisa si elimina l'incertezza (ossia, i tempi di sosta sono esattamente ripetitivi)
e si possono ottenere tempi di sosta molto bassi con discretizzazione di 2 millisecondi.
Esempio di sezione di part-program:
...
G200 HX11
...
G4 TT0,002 (sosta precisa di circa 2 millisecondi)
...
G200 HX12
...
G4 TT0,002 (sosta di circa 142 millisecondi con incertezza di 24
millisecondi)

2.1.112 G200 HX13 / G200 HX14 - per compatibilità all’indietro con Z16
Attenzione: si tratta di funzioni da usare solo in collaborazione col costruttore in casi speciali di
necessità di compatibilità all’indietro con Z16.
G200 HX13 attiva il "modo Z16 per G98", G200 HX14 lo disattiva. Sia G200HX13 che G200HX14
sono con arresto.
Al reset e inizio programma la G200HX13 è automaticamente annullata.
Lo scopo della funzione è una compatibilità all'indietro con Z16 in G98 (modo obsoleto di controllo
dei movimenti).
Per maggiori dettagli riferirsi alle specifiche del costruttore.

2.1.113 G201 - analisi della risposta dinamica della struttura


La funzione G201 è dedicata allo studio della risposta dinamica delle trasmissioni meccaniche.
E' riservata a D.Electron che la userà nei suoi programmi di test diagnostici.
Non deve essere programmata durante il normale funzionamento.

D. ELECTRON 109
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

2.1.114 G241 - G242 - posizionamento al punto iniziale di correzione raggio futura


In varie applicazioni, soprattutto per macchine da taglio, esiste il problema di posizionare gli assi al
punto di attacco di una correzione raggio futura, prima di attivare la correzione raggio, in quanto
devono essere eseguite (nel punto di attacco) una quantità indefinita di funzioni ausiliarie anche con
arresto, trasferimenti in direzione verticale ecc.).
Da un punto di vista geometrico le operazioni necessarie sono:
- individuare il primo punto del profilo futuro da eseguire in correzione raggio
- calcolarne lo spostamento in base alla pendenza del primo tratto del profilo futuro
- comandare uno spostamento al punto corretto così calcolato
Queste operazioni sono possibili anche con le precedenti versioni di Z32, ma c’è la difficoltà che la
pendenza non è in generale nota, in quanto dipende dal primo tratto geometrico del profilo futuro.
Le due nuove funzioni di part-program G241 e G242 consentono di superare questa difficoltà. La
sintassi è:
G241 X… Y… HX…
G242 X… Y… HX…
Dove:
- X,Y sono le quote iniziali del profilo futuro in correzione raggio (raggiunte con movimento in G1)
- HX individua il numero di riga col primo tratto in correzione raggio che parte da XY ed ha la
pendenza incognita.
Per non creare confusione con i numeri di riga che i CAM possono scrivere in modo automatico nel
part-program, il numero di riga individuato dal parametro HX è speciale in quanto è rappresentato dal
numero contenuto nel parametro HX (di cui sono gestite fino a 3 cifre decimali) preceduto da due zeri
supplementari. Esempi:
N001 numero di riga individuato da HX1
N001,3 numero di riga individuato da HX1,3
N001,3 numero di riga individuato da HX1.3
N00104 numero di riga individuato da HX104
N000 numero di riga individuato da HX0
Da notare che l’eventuale carattere di separazione tra la parte intera e la parte decimale del
numero, che può essere indifferentemente sia il punto che la virgola nella programmazione di HX, è
obbligatoriamente una virgola nella N.
Come per i salti GON, non devono esserci due N00… identiche nel part-program in esecuzione,
altrimenti viene trovata la prima.
La N deve essere a inizio riga e deve essere seguita da uno spazio o da un carattere non numerico.
Esempio di programmazione:
... (raggio utensile R=2)
N1 G241 X10 Y5 HX4
... (programmazione M, Z, G112, G4 …)
N10 G41 (inizio correzione raggio)
N11 X10 Y5 (punto iniziale del profilo)
N004 G1 X20 Y5 (primo tratto di profilo)
... (profilo)
Esecuzione:

110 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

- lettura della riga N1 e salto speciale alla riga N004


- analisi della riga N004 per determinare la pendenza iniziale del tratto che parte dal punto
iniziale programmato con N1 e termina al punto finale programmato in N004
- ritorno alla riga N1
- calcolo del punto finale, ottenuto dagli XY programmati spostati di un raggio in direzione
ortogonale al profilo. Nell’esempio il punto finale è X10 Y7 (correzione raggio G241 con utensile
a sinistra, Raggio R=2, pendenza iniziale del profilo futuro zero, tratto orizzontale)
- esecuzione del movimento in G1 al punto finale così calcolato
- continuazione del part-program
Note supplementari:
- la G241/G242 deve essere coerente con la correzione raggio futura (G41/G42). Z32 non fa
nessun controllo di coerenza: se non c’è coerenza la correzione del punto viene fatta nella
direzione errata
- il punto iniziale del profilo deve essere coincidente col punto programmato con G241/G242
- il movimento di inizio profilo può essere qualsiasi, purché si tratti di tratto chiuso (in cui è
programmato in modo esplicito il punto finale)
- se il movimento di inizio profilo è un arco di cerchio, il punto programmato con G241/G242
deve stare sul cerchio
- nei blocchi tra la G241/G242 e l’inizio della correzione raggio potrebbero essere inclusi anche
movimenti di assi in XY, ma all’inizio della correzione raggio la posizione deve tornare ad
essere quella programmata con G241/G242, altrimenti non si raggiunge l’effetto desiderato

2.1.115 G800 - G801 - G802 - gestione cicli fissi e macro da disco


ATTENZIONE: L’uso delle funzioni G800, G801, G802 per la costruzione di cicli fissi o macro
è da considerarsi riservato a D.Electron. Per evitare possibili conflitti ne è sconsigliato
l’impiego per l’implementazione di propri cicli fissi e macro.
Queste funzioni sono dedicate alla gestione di cicli fissi e macro da disco. In particolare:
G800 (gestione cicli fissi da disco), G801 (gestione macro di posizionamento da disco), G802
(gestione macro di lavorazione da disco).
Con questa prestazione è possibile richiamare da part-program Z32 macro e cicli fissi memorizzati
sul disco fisso del computer.
La cartella su disco dove questi files vengono salvati è C:\Z32\MACRO.
I nomi dei files sono così codificati:
C1, C2......, Cn sono i cicli fissi
P1, P2.….., Pn sono le macro di posizionamento
M1, M2...., Mn sono le macro di lavorazione
Le funzioni che permettono di richiamare cicli fissi e macro sono le seguenti:
G800 Kn richiama il ciclo fisso Cn
G801 Kn richiama la macro di posizionamento Pn
G802 Kn richiama la macro di lavorazione Mn
Vediamo in dettaglio ciascuna di queste tre funzioni G.

G800 (gestione cicli fissi da disco)


La funzione G800 richiama ed attiva un ciclo fisso. La sintassi completa è la seguente:

D. ELECTRON 111
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

G800 [Kn] [MHA..]÷[MHZ..] [NA..]÷[NZ..] [E..] [I..] [J..] [KA0] [KA1]


[KA2] [K0] [F..] (...)
dove:
Kn = (1<=n<=9999, intero) richiama il ciclo fisso Cn: Z32 legge da disco nella directory
C:\Z32\MACRO il file Cn, lo carica nella subtemp 65 e lo attiva automaticamente (con un G27S65
implicito).
Il ciclo fisso si disattiva sempre con un G27C0 o G800K0.
Se si richiama un ciclo fisso mentre è attivo un altro ciclo fisso il primo viene annullato e sovrascritto
dal secondo.
MHA-MHZ = 26 parametri float che vengono copiati in ZFP[550]-ZFP[575]
NA-NZ = 26 parametri float che vengono copiati in ZFP[550]-ZFP[575]
Questi due gruppi di parametri triletterali e biletterali sono perfettamente equivalenti, essi non
vengono allocati nella memoria di Z32 con il valore programmato ma semplicemente il loro valore
viene trasferito nei parametri ZFP[] corrispondenti, quelli non programmati non hanno alcun effetto
sugli ZFP[] corrispondenti. Se programmati doppiamente (es. MHA.. e NA..) l’ultimo, quello più a
destra sulla riga, prevale.
E, I, J = 3 parametri monoletterali float che vengono copiati rispettivamente in ZFP[576]-ZFP[578].
Gli ZFP[] riservati per G800 sono 50: ZFP[550]-ZFP[599], ma per ora da ZFP[579] a ZFP[599]
restano inutilizzati.
KA0 = resetta tutti i parametri ZFP[550]-ZFP[599]
KA1 = la funzione G800 KA1 può essere programmata esclusivamente dentro una macro attivabile
con G881-G899 o con G901-G929. Dice di associare i valori dei parametri AA, AB, AC che verranno
eventualmente programmati, non ai tre assi della terna G25 attiva, ma agli assi programmati
nell'ordine sulla riga di G881-G899 o G901-G929 che ha richiamato la macro dove è programmata
G800 KA1
KA2 = la funzione G800 KA2 può essere programmata esclusivamente dentro una macro attivabile
con G881-G899. Dice di associare i valori dei parametri AA, AB, AC che verranno eventualmente
programmati, non ai tre assi della terna G25 attiva, ma agli assi programmati con l'ultima G881-G899
programmata con uno o più nomi assi sulla riga. L'ordine di associazione è quello con cui compaiono
gli assi nella riga di G881-G899: AA al primo asse, AB al secondo, AC al terzo.
K0 = disattiva ciclo fisso e resetta tutti i parametri ZFP[550]-ZFP[599]
F = è consentita la programmazione della feed, parametro F.
(…) = è possibile inserire dei commenti nella riga di programmazione.
Ci sono 6 possibili modalità di programmazione di G800:
G800 Kn [MHA.. MHD..]
aggiorna gli ZFP corrispondenti ai parametri programmati, legge da disco il ciclo Cn, lo carica nella
subtemp 65 e lo attiva
G800 KA0
azzera tutti i parametri riservati a G800: ZFP[550]-ZFP[599]
G800 [MHA.. MHB..]
aggiorna gli ZFP corrispondenti ai parametri programmati
G800K0
equivale a G27C0 + G800KA0, cioè disattiva il ciclo fisso e resetta i parametri associati a G800
(ZFP[550] – ZFP[599])
G800 KA1

112 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

Associa i valori dei parametri AA, AB, AC, agli assi programmati nell'ordine sulla riga di G881÷G899
o G901÷G929 che ha richiamato la macro dove è programmata G800 KA1
G800 KA2
Associa i valori dei parametri AA, AB, AC, agli assi programmati con l’ultima G881÷G899
programmata
Regole e vincoli:
- programmare nella riga di G800 altri parametri oltre a quelli sopra elencati o qualsiasi altra cosa
(G, M etc....) porta ad un errore CN1D14 ERRORE PROGRAMMA
- G800 deve essere programmata all’inizio della riga ISO, possono precederla solo il numero di riga
e/o dei caratteri blank
G800 K1 MHB100 programmazione corretta
G800 K1 MHB100 programmazione corretta
K1 G800 MHB100 errore programma (CN1D14)
- se viene programmato KA0, KA1, KA2 o K0 non deve essere programmato alcun altro parametro
nella riga, altrimenti viene allarme CN1D14 ERRORE PROGRAMMA:
G800 KA0 programmazione corretta
G800 KA0 MHA100 errore programma (CN1D14)
G800 K1 KA0 errore programma (CN1D14)
- il valore dei parametri E, I, J, NA-NZ e MHA-MHZ può essere espresso o con un numero o con
una espressione valida per Z32 (tutti i parametri E, I, J, NA-NZ e MHA-MHZ sono float Z32)
- il valore del parametro K (numero ciclo fisso da caricare da disco) può essere espresso solo con
un numero intero da 1 a 9999 e non con una espressione; se inoltre il valore specificato è un numero
non intero ne viene presa solo la parte intera senza dare errore
- G800 KA1 e G800 KA2 possono essere programmate solo dentro una macro/ciclo richiamato
tramite G881-G899 o G901-G929, altrimenti si verifica errore CN1D14
- il valore del parametro KA può essere 0, 1 o 2 ed è esprimibile solo con i numeri 0, 1, 2 e non con
una espressione
- all’interno di cicli/macro programmati con G800/G801/G802, G881/899 e G901/929 si possono
programmare G800 KA0, G801 KA0, G802 KA0, G881-G899 KA0, G901-G929 KA0 e in cicli/macro
programmati con G881/G889 e G901/G929 si possono programmare G800 KA1 e G800 KA2,
nessuna altra tipologia di programmazione di tali G è ammessa, altrimenti si verifica errore CN1D14
- se si tenta di caricare da disco un ciclo fisso inesistente viene errore CN8214 G800/1/2 ERRORE
FILE SU DISCO
- se si tenta di caricare da disco un ciclo fisso che non entra nella memoria disponibile per le
subtemp viene errore CN8314 G800/1/2 MEMORIA PIENA
- N.B. Durante l’esecuzione di un ciclo fisso richiamato tramite G800 non ne vengono visualizzate le
righe.

G801 (gestione macro di posizionemanto da disco)


La funzione G801 richiama ed esegue una macro di posizionamento. La sintassi completa è:
G801 [Kn] [MPA..]÷[MPZ..] [NA..]÷[NZ..] [E..] [I..] [J..] [KA0] [F..]
(...)
dove:
Kn = (1<=n<=9999, intero) legge da disco nella directory C:\Z32\MACRO il file Pn, lo carica nella
subtemp 66 e lo richiama automaticamente (con un !GOS66! implicito).
Non è possibile programmare una G801 dentro l'altra.

D. ELECTRON 113
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

MPA-MPZ = 26 parametri float che vengono copiati in ZFP[600]-ZFP[625]


NA-NZ = 26 parametri float che vengono copiati in ZFP[600]-ZFP[625]
Questi due gruppi di parametri triletterali e biletterali sono perfettamente equivalenti, essi non
vengono allocati nella memoria di Z32 con il valore programmato ma semplicemente il loro valore
viene trasferito nei parametri ZFP[] corrispondenti, quelli non programmati non hanno alcun effetto
sugli ZFP[] corrispondenti. Se programmati doppiamente (es. MPA.. e NA..) l’ultimo, quello più a destra
sulla riga, prevale.
E, I, J = 3 parametri monoletterali float che vengono copiati in ZFP[626]-ZFP[628]
Gli ZFP[] riservati per G801 sono 50: ZFP[600]-ZFP[649], ma per ora da ZFP[629] a ZFP[649]
restano inutilizzati
KA0 = resetta tutti i parametri ZFP[600]-ZFP[649]
F = è consentita la programmazione della feed, parametro F.
(…) = è possibile inserire dei commenti nella riga di programmazione.
Ci sono 3 possibili modalità di programmazione di G801:
G801 Kn [MPA.. MPD..]
aggiorna gli ZFP corrispondenti ai parametri programmati, legge da disco la macro Pn, la carica
nella subtemp 66 e la richiama mandandola in esecuzione
G801 KA0
azzera tutti i parametri riservati a G801: ZFP[600]-ZFP[649]
G801 [MPA.. MPB..]
aggiorna gli ZFP corrispondenti ai parametri programmati
Regole e vincoli:
- programmare nella riga di G801 altri parametri oltre a quelli sopra elencati o qualsiasi altra cosa
(G, M etc....) porta ad un errore CN1D14 ERRORE PROGRAMMA
- G801 deve essere programmata ad inizio della riga ISO, possono precederla solo il numero di riga
e/o dei caratteri blank
G801 K1 MPB100 programmazione corretta
G801 K1 MPB100 programmazione corretta
K1 G801 MPB100 errore programma (CN1D14)
- se viene programmato KA0 non deve essere programmato alcun altro parametro nella riga,
altrimenti viene allarme CN1D14 ERRORE PROGRAMMA:
G801 KA0 programmazione corretta
G801 KA0 MPA100 errore programma (CN1D14)
G801 K1 KA0 errore programma (CN1D14)
- il valore dei parametri E, I, J, NA-NZ e MPA-MPZ può essere espresso o con un numero o con
una espressione valida per Z32 (tutti i parametri E, I, J, NA-NZ e MPA-MPZ sono float Z32)
- il valore del parametro K (numero macro da caricare da disco) può essere espresso solo con un
numero intero da 1 a 9999 e non con una espressione; se inoltre il valore specificato è un numero non
intero ne viene presa solo la parte intera senza dare errore
- il valore del parametro KA deve sempre essere 0 ed è esprimibile solo con il numero 0 e non con
una espressione
- all’interno di cicli/macro programmati con G800/G801/G802, G881/899 e G901/929 si possono
programmare G800 KA0, G801 KA0, G802 KA0, G881-G899 KA0, G901-G929 KA0 e in cicli/macro
programmati con G881/G889 e G901/G929 si possono programmare G800 KA1 e G800 KA2,
nessuna altra tipologia di programmazione di tali G è ammessa, altrimenti si verifica errore CN1D14

114 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

- se si tenta di caricare da disco una macro inesistente viene errore CN8214 G800/1/2 ERRORE
FILE SU DISCO
- se si tenta di caricare da disco una macro che non entra nella memoria disponibile per le subtemp
viene errore CN8314 G800/1/2 MEMORIA PIENA
- N.B. Durante l’esecuzione di una macro di posizionamento richiamata tramite G801 non ne
vengono visualizzate le righe.

G802 (gestione macro di lavorazione da disco)


La funzione G802 richiama ed esegue una macro di lavorazione. La sintassi completa è:
G802 [Kn] [MMA..]÷[MMZ..] [NA..]÷[NZ..] [E..] [I..] [J..] [KA0] [HX..]
[NomiAssiContinui..] [K0] [F..] (...)
dove:
Kn = (1<=n<=9999, intero) legge da disco nella directory C:\Z32\MACRO il file Mn, lo carica nella
subtemp 67 e lo richiama automaticamente (con un !GOS67! implicito).
Una macro di lavorazione richiamata come ciclo fisso si disattiva con un G27C0 o G802K0.
Non è possibile programmare una G802 dentro l'altra
MMA-MMZ = 26 parametri float che vengono copiati in ZFP[650]-ZFP[675]
NA-NZ = 26 parametri float che vengono copiati in ZFP[650]-ZFP[675]
Questi due gruppi di parametri triletterali e biletterali sono perfettamente equivalenti, essi non
vengono allocati nella memoria di Z32 con il valore programmato ma semplicemente il loro valore
viene trasferito nei parametri ZFP[] corrispondenti, quelli non programmati non hanno alcun effetto
sugli ZFP[] corrispondenti. Se programmati doppiamente (es. MMA.. e NA..) l’ultimo, quello più a
destra sulla riga, prevale.
E, I, J = 3 parametri monoletterali float che vengono copiati in ZFP[676]-ZFP[678]
Gli ZFP[] riservati per G802 sono 50: ZFP[650]-ZFP[699], ma per ora da ZFP[679] a ZFP[699]
restano inutilizzati
KA0 = resetta tutti i parametri ZFP[650]-ZFP[699]
K0 = disattiva ciclo fisso e resetta tutti i parametri associati ZFP[650]-ZFP[699]
F = è consentita la programmazione della feed, parametro F.
(…) = è possibile inserire dei commenti nella riga di programmazione.
HX1 = dice di richiamare la macro di lavorazione come ciclo fisso: in questo caso la gestione della
macro diviene uguale a quella del ciclo fisso (viene caricata nella subtemp S65 e viene attivata con un
G27S65 implicito). Questa impostazione serve ad abbinare una macro ad un ciclo di posizionamento.
HX0 = dice di richiamare la macro come macro di lavorazione, equivale a non programmare il
parametro HX
NomiAssiContinui = con G802 si possono programmare uno o più assi continui come parametri
(cioè programmando Y126 non si provoca un movimento di Y ma si dà al parametro Y il valore 126). In
“NomiAssiContinui” si possono programmare anche i parametri AA, AB e AC che corrispondono
rispettivamente al primo, secondo e terzo asse della terna di lavoro attiva.
Ci sono 5 possibili modalità di programmazione di G802:
G802 Kn [MMA.. MMD.. Assi..]
aggiorna gli ZFP corrispondenti ai parametri programmati, legge da disco la macro Mn, la carica
nella subtemp 67 e la richiama mandandola in esecuzione. Programma uno o più assi continui come
parametri.
G802 Kn HX1 [MMA.. MMD.. Assi..]

D. ELECTRON 115
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

aggiorna gli ZFP corrispondenti ai parametri programmati, legge da disco la macro Mn, la carica
nella subtemp 65 e la attiva come ciclo fisso. Programma uno o più assi continui come parametri.
Quando viene programmato G802 con HX1 viene messo ZFP[700] = 1; ZFP[700] viene rimesso = 0
solo quando viene programmata una G802 senza il parametro K oppure se viene programmata
G802KA0 o G802K0 (vedi sotto)
G802 KA0
azzera tutti i parametri riservati a G802: ZFP[650]-ZFP[699] ed il parametro ZFP[700] (G802 HX1)
G802K0
equivale a G27C0 + G802KA0, cioè disattiva il ciclo fisso e resetta i parametri associati a G802
(ZFP[650]–ZFP[699]) ed il parametro ZFP[700] (G802 HX1)
G802 [MMA.. MMB.. Assi..]
aggiorna gli ZFP corrispondenti ai parametri programmati ed azzera il parametro ZFP[700] (G802
HX1)
Regole e vincoli:
- programmare nella riga di G802 altri parametri oltre a quelli sopra elencati o qualsiasi altra cosa
(G, M etc....) porta ad un errore CN1D14 ERRORE PROGRAMMA
- G802 deve essere programmata ad inizio della riga ISO, possono precederla solo il numero di riga
e/o dei caratteri blank
G802 K1 MMB100 programmazione corretta
G802 K1 HX1 MMB100 programmazione corretta
K1 G802 MMB100 errore programma (CN1D14)
- se viene programmato KA0 o K0 non deve essere programmato alcun altro parametro nella riga,
altrimenti viene allarme CN1D14 ERRORE PROGRAMMA:
G802 KA0 programmazione corretta
G802 KA0 MMA100 errore programma (CN1D14)
G802 K1 KA0 errore programma (CN1D14)
- HX1 può essere programmato solo se nella riga è programmato pure K, altrimenti viene allarme
CN1D14 ERRORE PROGRAMMA:
G802 K2 HX1 programmazione corretta
G802 HX1 errore programma (CN1D14)
- il valore dei parametri E, I, J, NA-NZ e MMA-MMZ può essere espresso o con un numero o con
una espressione valida per Z32 (tutti i parametri E, I, J, NA-NZ e MMA-MMZ sono float Z32)
- il valore degli assi continui programmati come parametri può essere espresso o con un numero o
con una espressione valida per Z32
- il valore del parametro K (numero macro da caricare da disco) può essere espresso solo con un
numero intero da 1 a 9999 e non con una espressione; se inoltre il valore specificato è un numero non
intero ne viene presa solo la parte intera senza dare errore
- il valore del parametro KA deve sempre essere 0 ed è esprimibile solo con il numero 0 e non con
una espressione
- il valore del parametro HX può essere 0 o 1 ed è esprimibile solo con i numeri 0 o 1 e non con una
espressione
- all’interno di cicli/macro programmati con G800/G801/G802, G881/899 e G901/929 si possono
programmare G800 KA0, G801 KA0, G802 KA0, G881-G899 KA0, G901-G929 KA0 e in cicli/macro
programmati con G881/G889 e G901/G929 si possono programmare G800 KA1 e G800 KA2,
nessuna altra tipologia di programmazione di tali G è ammessa, altrimenti si verifica errore CN1D14

116 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

- se si tenta di caricare da disco una macro inesistente viene errore CN8214 G800/1/2 ERRORE
FILE SU DISCO
- se si tenta di caricare da disco una macro che non entra nella memoria disponibile per le subtemp
viene errore CN8314 G800/1/2 MEMORIA PIENA
- N.B. Durante l’esecuzione di una macro di lavorazione richiamata tramite G802 non ne vengono
visualizzate le righe.

2.1.116 G880÷G899 - G900÷G929 - gestione cicli fissi e macro da disco


ATTENZIONE: L’uso delle funzioni G880÷G899, G900÷G929 per la costruzione di cicli fissi o
macro è da considerarsi riservato a D.Electron. Per evitare possibili conflitti ne è sconsigliato
l’impiego per l’implementazione di propri cicli fissi e macro.
Le funzioni G880÷G899, G900÷G929 sono dedicate (come G800, G801, G802) alla gestione di cicli
fissi e macro da disco. In particolare:
G880÷G899 (gestione cicli fissi da disco), G900÷G929 (gestione macro di lavorazione da disco).
Con queste funzioni si ha la possibilità di richiamare da part-program Z32 macro e cicli fissi
memorizzati in files sul disco fisso del computer.
La cartella su disco dalla quale vengono richiamati questi files è C:\Z32\MACRO.
I files su disco hanno come nome la stessa G che li richiama, e sono così codificati:
G881, G882.... G899, sono i cicli fissi
G901, G902.… G929, sono le macro di lavorazione
Vediamo in dettaglio ciascuna di queste funzioni G.

G880÷G899 (gestione cicli fissi da disco)


Le funzioni G880, G881,...G899 hanno finalità equivalenti a G800. In particolare:
G880 è equivalente a G800 K0 (disattiva il ciclo fisso e resetta i parametri ZFP[ ] associati)
G881÷G899 sono usate per attivare cicli fissi come G800; tali cicli sono presi da files su disco, nella
directory C:\Z32\MACRO, ed hanno come nome la stessa G che li richiama (es. G883 attiva il ciclo
fisso letto dal file C:\Z32\MACRO\G883).
I parametri usabili per G881÷G899 sono tutti quelli usabili per G800:
MHA÷MHZ, NA÷NZ, E, I, J, K, KA0, F, (…)
Con G881÷G899 il parametro K viene usato come un parametro monoletterale float e può essere
rappresentato o con un numero o con una espressione valida per Z32. I parametri monoletterali quindi
diventano 4: E, I, J e K copiati in ZFP[576]-ZFP[579].
Non è consentito il K0 che viene eseguito implicitamente con G880.
E' inoltre possibile programmare fino a tre nomi assi continui fra quelli definiti sulla macchina.
La sintassi completa di programmazione quindi è:
G881÷G899 [MHA÷MHZ] [NA÷NZ] [E] [I] [J] [K] [KA0] [NomiAssiContinui]
[F..] (...)
Quando viene programmata una G881÷G899 vengono memorizzati nei parametri ZFP[701-
ZFP[712] i seguenti valori:
ZFP[701] = quota attuale primo asse G25
ZFP[702] = quota attuale secondo asse G25
ZFP[703] = quota attuale terzo asse G25
ZFP[704] = quota programmata con G881÷G899 del primo asse G25

D. ELECTRON 117
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

ZFP[705] = quota programmata con G881÷G899 del secondo asse G25


ZFP[706] = quota programmata con G881÷G899 del terzo asse G25
ZFP[707] = quota attuale del primo asse programmato con G881÷G899
ZFP[708] = quota programmata del primo asse programmato con G881÷G899
ZFP[709] = quota attuale del secondo asse programmato con G881÷G899
ZFP[710] = quota programmata del secondo asse programmato con G881÷G899
ZFP[711] = quota attuale del terzo asse programmato con G881÷G899
ZFP[712] = quota programmata del terzo asse programmato con G881÷G899
NOTA: i parametri ZZFP[701]÷ZFP[712] vengono aggiornati tutte le volte che si programma una tra
G880÷G929 e vengono mantenuti fino alla successiva programmazione di G880÷G929 (cioè ad ogni
G880÷G929 si azzerano tutti questi parametri e poi si reinizializzano con i valori di quelli programmati
nella riga).
Il ciclo fisso attivato viene gestito esattamente come nel caso di attivazione tramite G800.

G900÷G929 (gestione macro di lavorazione da disco)


Le funzioni G900, G901,...G929 hanno finalità equivalenti a G802. In particolare:
G900 è equivalente a G802 K0 (disattiva il ciclo fisso e resetta i parametri ZFP[ ] associati)
G901÷G929 sono usate per attivare macro di lavorazione come G802; tali macro sono prese da
files su disco, nella directory C:\Z32\MACRO, ed hanno come nome la stessa G che le richiama (es.
G903 richiama la macro letta dal file C:\Z32\MACRO\G903).
I parametri usabili per G901÷G929 sono tutti quelli usabili per G802:
MMA÷MMZ, NA÷NZ, E, I, J, K, KA0, HX0, HX1, F, (…)
Con G901÷G929 il parametro K viene usato come un parametro monoletterale float e può essere
rappresentato o con un numero o con una espressione valida per Z32. I parametri monoletterali quindi
diventano 4: E, I, J e K copiati in ZFP[676]-ZFP[679].
Non è consentito il K0 che viene eseguito implicitamente con G900.
E' inoltre possibile programmare fino a tre nomi assi continui fra quelli definiti sulla macchina.
La sintassi completa di programmazione quindi è:
G901÷G929 [MHA÷MHZ] [NA÷NZ] [E] [I] [J] [K] [KA0] [HX..]
[NomiAssiContinui] [F..] (...)
Quando viene programmata una G901÷G929 vengono memorizzate nei parametri ZFP[701]-
ZFP[712] i seguenti valori:
ZFP[701] = quota attuale primo asse G25
ZFP[702] = quota attuale secondo asse G25
ZFP[703] = quota attuale terzo asse G25
ZFP[704] = quota programmata con G901÷G929 del primo asse G25
ZFP[705] = quota programmata con G901÷G929 del secondo asse G25
ZFP[706] = quota programmata con G901÷G929 del terzo asse G25
ZFP[707] = quota attuale del primo asse programmato con G901÷G929
ZFP[708] = quota programmata del primo asse programmato con G901÷G929
ZFP[709] = quota attuale del secondo asse programmato con G901÷G929
ZFP[710] = quota programmata del secondo asse programmato con G901÷G929
ZFP[711] = quota attuale del terzo asse programmato con G901÷G929

118 D. ELECTRON
CNC Z32 Programmazione Cap.2 - Funzioni preparatorie

ZFP[712] = quota programmata del terzo asse programmato con G901÷G929


NOTA: i parametri ZZFP[701]÷ZFP[712] vengono aggiornati tutte le volte che si programma una tra
G880÷G929 e vengono mantenuti fino alla successiva programmazione di G880÷G929 (cioè ad ogni
G880÷G929 si azzerano tutti questi parametri e poi si reinizializzano con i valori di quelli programmati
nella riga).
La macro richiamata viene gestita esattamente come nel caso di macro richiamata tramite G802.

D. ELECTRON 119
Cap.2 - Funzioni preparatorie CNC Z32 Programmazione

120 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

CAPITOLO 3

3. FUNZIONI M - FEED - SPEED - ORIGINI - PARAMETRI

3.1 FUNZIONI AUSILIARIE 'M'


Le funzioni M (miscellanee) interessano più che altro il comportamento della macchina utensile
e quindi sono in massima parte definite nei loro effetti dal costruttore.
Tutte le M richiedono l'arresto (vedere capitolo “Funzioni preparatorie ‘G’ paragrafo ‘Funzioni
G’).
M0==M00 Le norme ISO indicano le funzioni di numerose M, solo alcune M sono decodificate e gestite
dallo Z32: di queste sole si darà il dettaglio.
Il valore numerico (due cifre intere) che segue la lettera 'M' indica la 'M' programmata. Gli zeri
iniziali possono essere omessi.
Le M sono inviate alla logica di macchina, e quindi eseguite, in sequenza con altre operazioni
richieste nella riga, come si vedrà anche nel capitolo apposito (esecuzione riga ISO).
La sequenza di esecuzione delle M è:
− moto mandrino (M3, M4)
− M speciale (esclusa la M6)
− altre M
− posizionamento o stop mandrino (M19, M5)
− cambio utensile (M6)
− M finali (M0, M1, M2)
In una stessa riga possono essere programmate:
− tutte le M gestite dallo Z32 (M3, M4, M5, M6, M7, M8, M9, M19)
− una tra le M finali (M0, M1, M2)
− un'altra M non inclusa nelle precedenti
Per esempio, è lecito programmare in una riga:
M3 M7 M8 M19 M2
Qualunque sia l'ordine con cui le M sono scritte nella riga, e salvo altre operazioni intermedie,
per esempio moti assi se programmati, il CN eseguirà nell'ordine:
− marcia mandrino (M3)
− erogazione refrigeranti 1 e 2 (M7 M8)
− stop refrigeranti e posizionamento mandrino (M19)
− fine programma (M2)

3.1.1 M 'ISO'
M0 - stop
Arresta l'esecuzione del programma, che può essere ripreso premendo il pulsante di start.
Richiede anche stop mandrino e stop refrigeranti.
M1 - stop condizionato
Come M0, solo che l'efficacia di M1 è condizionata da un apposito ingresso di logica
programmabile: consultare il costruttore della macchina utensile per ulteriori dettagli.
Richiede anche stop mandrino e stop refrigeranti.

D. ELECTRON 121
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

M2 - fine programma
Fa uscire il controllo dal modo 'ESECUZIONE' e chiude le operazioni in automatico.
M3 - mandrino orario
Richiede moto mandrino orario alla velocità S precedentemente programmata.
M4 - mandrino antiorario
Richiede moto mandrino antiorario alla velocità S precedentemente programmata.
M5 - stop mandrino
Richiede l'arresto del mandrino.
Arresta anche i refrigeranti.
M6 - cambio utensile
Chiede che l'utensile (programmato come T nello stesso blocco o in blocchi precedenti)
sia montato sul mandrino.
Arresta anche il mandrino e i refrigeranti.
Dopo la esecuzione (non in ricerca blocco) di una M6 il CN prende atto della descrizione
dell'utensile montato sul mandrino e quindi aggiorna i parametri in conseguenza.
L’effettivo aggiornamento dei parametri in descrizione utensile avviene all’uscita (G26) dal
sottoprogramma di cambio utensile (vedere anche la gestione utensili).
M7 - eroga refrigerante n.1
Chiede che venga erogato il refrigerante n.1 .
M8 - eroga refrigerante n.2
Chiede che venga erogato il refrigerante n.2 .
M9 - stop refrigeranti
Chiede che venga cessata l'erogazione dei refrigeranti.
M19 - orientamento mandrino
Chiede che venga orientato il mandrino.
Richiede anche stop mandrino e stop refrigeranti.

3.1.2 M 'speciali'
Il costruttore della macchina utensile può definire fino a 48 M come 'speciali'. Quando lo Z32
deve eseguire una M speciale, abbandona l'esecuzione della riga in corso e salta a un
sottoprogramma M speciale predisposto dal costruttore della macchina utensile.
Se la riga contiene altre funzioni che dovrebbero essere eseguite dopo la M speciale, queste
funzioni non vengono eseguite. Una volta terminato il sottoprogramma associato alla M speciale il
programma viene ripreso dall'inizio della riga successiva.
Non possono essere definite come M speciali alcune M già decodificate e in parte gestite dallo
Z32, ossia:
M3, M4
M7, M8, M9
M19, M5
M0, M1, M2.
Stop
Durante l'esecuzione del sottoprogramma associato alle M speciali è bloccato il conteggio del
contablocchi
numero progressivo (ossia in ricerca blocco la M speciale è un solo blocco che non può essere
Video non
ripreso in un punto intermedio.
aggiornato
La visualizzazione della riga in corso di esecuzione è anche sospesa durante la M speciale,
salvo che lo Z32 sia posto nel modo 'assistenza' con l'apposita procedura (ved. manuale impiego -
M95).
Il sottoprogramma associato alla M speciale può essere eseguito in blocco singolo.

122 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

Una M speciale può essere richiamata anche dall'interno di un ciclo fisso utente o di sistema o
da un'altra M speciale. Per esempio è possibile creare un ciclo fisso con controllo integrità utensile
e richiamare il cambio utensile (M6 speciale) anche dall'interno del ciclo fisso.
10 Nello Z32 sono disponibili fino a 10 livelli di annidamento (nesting) di salto con ritorno. Ognuna
livelli di delle seguenti operazioni consuma un livello:
nesting − GON...-N... salto a serie di righe con ritorno
− GOP... salto a sottoprogramma con ritorno
− M speciale
− ciclo fisso di sistema o utente
Note del Due livelli sono usati dalla G110 (macrofunzioni di svuotatura).
costruttore Oltre i livelli disponibili si ha errore: CN2E14 TROPPE SUBROUTINES
Poiché le M speciali sono il tipico mezzo a disposizione del costruttore della macchina utensile
per personalizzare il CN, per l'elenco e l'uso delle 'M' speciali si rimanda alle informazioni fornite dal
costruttore stesso.

3.2 FUNZIONI AUSILIARIE MA, MB, MC


Oltre alle funzioni ausiliarie M previste dalle norme ISO lo Z32 mette a disposizione del
costruttore della macchina utensile per funzioni particolari di macchina altre tre funzioni ausiliarie
(MA, MB, MC) che sono inviate alla logica di macchina.
Come parametri, le funzioni MA, MB, MC possono essere programmate con 9 cifre significative
prima o dopo la virgola o punto decimale.
Nell'invio alla logica, che esegue le funzioni specificate, i decimali sono perduti e eventuali valori
superiori a 9999 sono ricondotti a 9999: sono perciò significative solo 4 cifre intere.
È possibile programmare il segno delle MA, MB, MC. Il segno è passato alla logica come valore
'8000' della funzione programmata.
È quindi equivalente programmare:
MA-100 MA8100
MA-1 MA8001
MB-1040 MB9040
Il valore '0' non può essere negato (MA-0 equivale a MA0 e non a MA8000).
L'uso del segno dipende dalla particolare funzione assegnata dal costruttore della macchina
utensile alle MA, MB, MC.
Le MA, MB, MC, richiedono l'arresto (vedere capitolo “Funzioni preparatorie G” paragrafo
“Funzioni G”.

3.3 FEED
All'indirizzo F è assegnato, secondo le norme ISO, il significato di valore della velocità di
avanzamento.
La velocità è espressa in interi visualizzati/minuto al reset con G94, con G95 viene espressa in
interi visualizzati/giro, e con G93 viene espressa come inverso del tempo in minuti necessario per
eseguire il movimento.
Per esempio, se si tratta di assi rettilinei con visualizzazione di millimetri (e decimali micron),
programmare F100 significa 100 millimetri/minuto.
Se si tratta di assi rotativi con visualizzazione di gradi (e millesimi di grado), programmare F100
significa 100 gradi/minuto.

D. ELECTRON 123
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

Come ogni parametro, F può essere programmata con 9 cifre significative prima o dopo la
virgola o punto decimale. La F però ha anche l’effetto di impostare la velocità di lavoro : poiché le
velocità comandate non devono in nessuna occasione superare il rapido, il CN limita la velocità
fisica degli assi in funzione dei rapidi degli assi interessati al moto e del tipo di movimento
impostato.
In sintesi:
− durante movimenti in G1, con override al 100% e considerata l'inclinazione del
movimento, nessun asse deve superare la velocità del suo rapido divisa per 1.2 (con
override al 120% la velocità non supera il rapido).
− durante i movimenti in G2/G3 la feed con override al 100% non deve superare il minore
dei rapidi degli assi del piano di lavoro
Vedere anche il capitolo “Funzioni preparatorie ‘G’” nei paragrafi dedicati a G1 e G2/G3.
Queste limitazioni hanno effetto solo sulla velocità fisica degli assi non sul parametro F che
conserva il valore programmato. Per esempio, si abbiano gli assi:
X con rapido a 15 m/min
Y con rapido a 15 m/min
Z con rapido a 10 m/min
Il programma seguente genera le velocità (sulla traiettoria e con override al 100%) come
descritto in commento:
...
N10 G0 X0 Y0 Z0
N11 G1 F5000 X100 Y100 Z100 (5000 mm/min)
N12 F10000 X0 Y0 (10000 mm/min)
N13 Z100 (8333 mm/min)
N14 X100 (10000 mm/min)
N15 F99000 X200 (12500 mm/min)
...
Sempre fermo restando il valore del parametro F, il minimo incremento della velocità di
interpolazione è di circa 0,01 unità/minuto (ossia 0,01 mm/minuto nel caso di assi lineari).

3.4 SPEED
La S esprime la velocità del mandrino.
Come parametro, la S può essere programmata con 9 cifre significative prima o dopo la virgola
o punto decimale.
La determinazione della velocità effettiva del mandrino è fatta dalla logica programmabile.
Consultare anche le informazioni fornite dal costruttore della macchina utensile.

3.5 QUOTE ASSI


Se l'indirizzo è un nome identificativo di un asse, allora il controllo interpreta il valore successivo
come quota dell'asse specificato.
I nomi assi sono definiti nelle tarature di macchina: essi possono essere costituiti da uno o più
caratteri (assi biletterali), l’identificativo dell’asse (primo carattere) può essere scelto tra una delle
seguenti lettere:
A B C D H P Q U V W X Y Z

124 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

L’indice numerico per gli assi biletterali deve essere una cifra decimale tra 1 e 9.
La programmazione di assi con nome biletterale necessita di una particolare sintassi, per
dettagli vedere paragrafo “Assi con nome biletterale” (con indice numerico).
Le quote assi sono programmate col nome asse (uno o più caratteri che identificano un asse
continuo nelle tarature di macchina) seguito da un valore numerico.
Come parametro, le quote possono essere programmate con 9 cifre significative prima o dopo
la virgola o punto decimale: se durante gli spostamenti comandati uno o più assi escono dal campo
ammissibile di lavoro della macchina il CN segnala errore fine corsa.
Le quote assi sono programmate con le stesse unità di misura degli interi visualizzati.
Per esempio, se si tratta di assi lineari in cui sono visualizzati millimetri (e micron come terzo
decimale) programmare: X100,25 significa programmare 100,25 millimetri.
Se si tratta di assi rotativi in cui sono visualizzati gradi (e millesimi di grado), programmare:
A10,47 significa programmare 10,47 gradi.
Sulla stessa macchina gli assi, anche contemporanei, possono essere definiti con unità di
misura diverse da asse a asse (per esempio millimetri per asse lineare e gradi per asse circolare).
I tre assi della terna di lavoro possono essere programmati col loro nome (per esempio X, Y, Z
ecc.) oppure rispettivamente come
AA... primo asse della terna di lavoro
AB... secondo asse della terna di lavoro
AC... terzo asse della terna di lavoro
Per esempio se in un certo punto della esecuzione di un programma è attiva la terna di lavoro X
Y Z (ossia G25XYZ), programmare: AA100 AC125 è in tutto equivalente a programmare: X100
Z125.
Se fosse stata invece attiva la terna ZXY (G25ZXY), sarebbe stato equivalente a programmare:
Z100 Y125 .Questa possibilità è particolarmente utile per i cicli fissi e per i sottoprogrammi
standard, che possono essere completamente definiti in forma generica, non dipendente dalla terna
di lavoro in cui saranno utilizzati.
Consultare anche il capitolo “Funzioni preparatorie ‘G’”; paragrafo G25 - terna di assi di lavoro;
per la trattazione degli orientamenti degli assi.

3.6 ASSI CON NOME BILETTERALE (CON INDICE NUMERICO)


La programmazione di assi con nome biletterale è disponibile solo su macchine che hanno nelle
tarature di macchina la definizione degli assi biletterali.
Per facilitare l'individuazione degli assi in macchine molto complesse è stata introdotta la
possibilità di associare alla lettera identificativa dell'asse un indice numerico (per esempio asse X1,
X2, Y3 ecc…).
Gli indici possibili sono tra 1 e 9 (l'indice 0 è escluso).
Per evitare incoerenze sintattiche si deve programmare il carattere underscore "_" tra il carattere
identificativo dell'asse e il numero indice (per esempio X_2).
Inoltre se programmato in una riga ISO si deve aggiungere anche il carattere separatore "=" per
evitare equivoci con la programmazione dei parametri del tipo "X_". Per evitare confusioni di
interpretazione, la programmazione di parametri letterali a due caratteri, di cui il secondo sia il
carattere “_”, è proibita nel caso in cui nelle tarature di macchina sia definito almeno un nome asse
biletterale. Nel caso di macchina con almeno un asse biletterale, non è possibile usare parametri
come “X_” oppure “A_” oppure “__”. E’ invece permesso usare parametri come “_X” o “_A”.
Gli esempi che seguono chiariscono le varie situazioni:

D. ELECTRON 125
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

G1 F1000 Y20 Y_2=100 X_1=25,3

L'asse Y va a quota 20, Y2 va a quota 100, X1 a quota 25,3 (il carattere "=" di separazione è
obbligatorio per gli assi biletterali per coerenza sintattica)
G0 X_1=<X_1+3>

L'asse X1 aumenta la sua posizione di 3 (in un'espressione di riga ISO l'asse è individuato con
nome, underscore, indice e non deve essere seguito dal carattere "=" di separazione)
!X_1=X_1-Y_2+R!

Al parametro associato all'asse X1 è assegnato il valore dell'espressione (in riga evoluta il


carattere "=" usato come assegnazione è sufficiente per individuare il nome dell'asse biletterale,
mentre nelle espressioni di riga evoluta la sintassi è identica alle espressioni di riga ISO)
G0 X_1=1,35 _X12

L'asse X1 va a quota 1,35, al parametro _X è assegnato il valore 12


G0 X_1=1,35 X_12

La programmazione non è permessa (non è possibile programmare parametri letterali a due


caratteri di cui il secondo sia il carattere “_” se in macchina sono definiti uno o più assi biletterali)

3.7 ORIGINI E LUNGHEZZE


Le quote misurate dai rilevatori della macchina utensile sono riferite allo zero fisico del rilevatore,
che è normalmente un punto legato al rilevatore stesso e non è significativo per la geometria della
macchina.
Origine Il punto di riferimento della macchina utensile è fissato dal costruttore come "ORIGINE BASE" e
base non deve essere modificato dall'utente finale.
L'origine base può essere utilizzata per operazioni speciali che richiedono movimenti riferiti alla
Origine struttura fisica della macchina (per esempio cambio utensile).
supplemen-
L'utente finale ha invece a disposizione una "ORIGINE SUPPLEMENTARE" (che è riferita alla
are origine base) a cui sono riferite le quote del pezzo.
Le quote programmate (e visualizzate) sono perciò la differenza tra le quote misurate e la quota
della origine supplementare attiva.
Lunghezza
utensile Una ulteriore modifica alle quote è la lunghezza utensile (parametro L in sistemi fresa, parametri
LX e LZ in sistemi tornio), che agisce solo su un asse per le frese (al reset è il terzo asse della
terna di lavoro, e può essere modificato con G43/G44) oppure due assi per i torni (al reset sono gli
assi X e Z); per l’asse o gli assi su cui è attiva la quota o le quote visualizzate sono riferite alla
estremità dell’utensile.
La situazione generale di una quota asse è rappresentata in figura.

126 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

3.7.1 Origini
L'indirizzo O indica allo Z32 che è programmata una origine supplementare.
Dopo O non si deve programmare un valore numerico, ma, come si vedrà più avanti, una
combinazione di lettere e numeri che identificano l'origine da attivare.
L'origine che interessa al programmatore può essere, per esempio, il punto a cui sono riferite le
quote del disegno. Questa origine può essere variabile anche all'interno di uno stesso programma,
per esempio perché si lavorano due pezzi diversi montati sulla stessa tavola, perché si devono
lavorare facce diverse del pezzo ecc.
Le quote programmate dovranno essere sempre riferite a questa origine. Le origini di lavoro a
disposizione del programmatore (ORIGINI SUPPLEMENTARI) sono contenute nella tabella origini,
che può essere nel file 'globale' numero 126, oppure come sezione 'locale' in coda al programma-
pezzo.
Origini in
La sezione 'globale' è attiva al reset e può essere ripristinata con G37OG. Le varie sezioni 'locali'
tabella
sono attivate programmando G37OL nel programma o sottoprogramma contenente la sezione che
Origini
si vuole attivare.
locali
Si faccia attenzione che, se si programma G37.. e la origine nella stessa riga, la G37 deve
precedere la origine:
N1 G37OL OX1
la origine X1 viene acquisita nel file locale
Una sezione origini, locale o globale, inizia con la riga: :OS
Nelle righe successive sono definite le singole origini, che sono contraddistinte dal nome asse a
cui si riferiscono, seguito da:
- un carattere che può essere qualsiasi carattere stampabile escluso lo spazio ed escluso lo
zero, che è riservato alla sola origine base
- due o tre caratteri numerici, escluso lo zero sul primo carattere
Per esempio, si può definire:
:OS
X1=20,47
Y4=+17,381
Y?=-11
XA=-318,963
Z431=108,8
Y16=-58
Viene riconosciuta l’origine solo se la stringa caratteristica dell’origine (per es. Y1=32,5) è a
inizio riga o è preceduta solo da blank.
La definizione dell’origine termina con il primo carattere blank o parentesi tonda aperta o fine
riga (0dh), qualsiasi altro carattere dopo questi viene ignorato.
Per ogni asse, e per ogni programma, si possono perciò definire circa 1148 origini, i caratteri
stampabili che possono essere usati sono:
a) 9 numeri
b) 26 lettere alfabetiche
c) circa altri 25 segni, tipo + - ' ; # (. ecc…
Il carattere * è sconsigliato in quanto, per le operazioni di lettura e scrittura (:R e :W, vedere
righe evolute) assume il particolare significato di origine attiva in quel momento.
La tabella origini occupa posto in memoria secondo quanto contiene: le origini non definite non
occupano memoria.

D. ELECTRON 127
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

La tabella origini può essere preceduta, per comodità dell'operatore, da una descrizione o
commento.
Esempio di tabella origini:
TABELLA ORIGINI SUPPLEMENTARI-PEZZO 4782-
:OS
X1=381
X2=390,86
Y1=-27,38
.....
Program- Per richiamare le varie origini all'interno di un programma si deve programmare di seguito:
mazione − la lettera 'O'
− il nome dell'asse interessato
− il carattere o i caratteri distintivi dell'origine.
Per esempio, se è presente ed attiva la tabella origini sopra indicata, programmare: OX1 OY1
significa riferire le quote dell'asse X al punto X=381 e le quote dell'asse Y al punto -27,38.
La programmazione delle origini richiede l'arresto (vedere capitolo “Funzioni preparatorie G” -
paragrafo funzioni G).
Al reset possono essere attive a seconda delle tarature macchina:
− le origini zero (base)
− le ultime origini attive in precedenza
− le origini 1 (OX1 ecc.) su tutti gli assi.
Per annullare la correzione origine supplementare si può programmare la origine zero. Per
esempio, programmare: OX0 OY0 significa annullare le origini supplementari relative agli assi X e
Y: dopo questa istruzione il CN riferisce le quote degli assi X e Y alla origine base.
Anche se è definita nella tabella origini, per esempio una X0=100 il CN, quando incontra la
istruzione: OX0 annulla le origini supplementari, ignorando la eventuale OX0 definita nella tabella
origini.
La funzione G53 (annullata da G54) sospende l'effetto delle origini supplementari ed attiva le
origini base.
E’ possibile salvare e ripristinare le origini attive, anche senza conoscerne il nome, per dettagli
vedere le funzioni G152 KA1 e G153 KA1.

3.7.2 Offset delle origini


L’origine ‘OF’ si somma in modo automatico all’origine supplementare programmata.
L’origine ‘OF’ (es. XOF per asse X) viene scritta nella tabella delle origini supplementari o
direttamente o mediante l’istruzione evoluta :W.
Questa origine non può essere programmata direttamente (pena errore CN1D14), ma si somma
automaticamente all’origine supplementare programmata.
Se tale origine non è definita nella tabella delle origini supplementari è come se fosse 0.
Ad esempio, nella tabella origini si trova:
:OS
X1=20
programmiamo:
!:WOXOF<54>!

128 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

nel file origini ora troviamo:


:OS
X1=20
XOF=54
dopo aver programmato:
OX1
il valore dell’origine “offset” XOF si sommerà automaticamente al valore dell’origine X1 e quindi
la quota dell’asse X a video varierà di 74 unità visualizzate e non di 20.

3.7.3 Lunghezza utensile


La lunghezza utensile è il valore del parametro L.
La programmazione di L in riga ISO viene immediatamente acquisita come nuova lunghezza
dell'utensile:
N10 L10.23 lunghezza utensile 10.23
La programmazione di L in riga evoluta
N10 !L=10.23!
non è immediatamente acquisita come nuova lunghezza, ma modifica solo il parametro L: può
essere automaticamente acquisita in seguito come lunghezza se sono programmate funzioni che
richiedono il ricalcolo delle correzioni (vedere paragrafo “Gestione origini e lunghezza”).
L'asse su cui agisce la lunghezza utensile è definito da G43 (correzione positiva) o G44
(correzione negativa).
La lunghezza utensile L può avere segno positivo o negativo.
La correzione lunghezza può essere:
− annullata programmando L0 in riga ISO
− sospesa con G45 (riattivata con G43/G44)
− sospesa insieme alle origini con G53 (riattivata con G54)

Lunghezza utensile in sistemi di tipo tornio


In sistemi di tipo tornio la lunghezza utensile è espressa nella direzione dell'asse X e nella
direzione dell'asse Z, tramite i parametri LX e LZ.
La descrizione e le regole di programmazione sopra descritte per il parametro L (lunghezza
utensile di sistemi fresa), possono essere applicate anche alle lunghezze LX e LZ.
Ad esempio:
N10 LX10.3 LZ-11.34 lunghezza utensile 10.3 lungo X e -11.34 lungo Z

3.7.4 Gestione origini e lunghezza


Per i programmatori più esperti, si danno qui di seguito alcune informazioni sul modo con cui le
origini e le correzioni lunghezza sono gestite all'interno dello Z32.
Lo Z32 tiene in memoria la mappa delle origini attive, consistente per ogni asse in:
− carattere o caratteri distintivi dell'origine
− programma o sottoprogramma di provenienza
Il ricalcolo delle correzioni è fatto dallo Z32 in particolari occasioni, che sono:
− al reset (tutte le origini sono zero)

D. ELECTRON 129
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

− dopo una variazione dello stato di G43, G44, G45, G53, G54 (anche se questa
variazione avviene per effetto di una G103 che ripristina lo stato precedente)
− dopo una programmazione in riga ISO di L
− dopo una programmazione in riga ISO di LX o LZ (tornio)
− dopo una programmazione in riga ISO di DDL
− dopo una programmazione in riga ISO di DLX o DLZ (tornio)
− dopo la programmazione di una o più origini
Quando è fatto il ricalcolo delle correzioni, sono sempre interessate:
− la lunghezza dell'utensile
− l'origine supplementare per ogni asse
La programmazione di L in riga evoluta: !L=...! NON provoca il ricalcolo delle correzioni: il
parametro L è modificato ma non viene acquisito come correttore. Se successivamente viene
programmata una origine, anche il parametro L modificato in riga evoluta è acquisito come nuovo
correttore.
Se la sezione attiva delle origini viene cambiata e poi viene programmata l'origine di un solo
asse, tutte le origini sono ricalcolate, ma solo l'origine programmata cambia in quanto le altre origini
sono ricercate nelle sezioni attive precedenti (vedere anche G102 e G103 e G37). È quindi
possibile (ma per chiarezza è una situazione da evitare) ad un dato momento del programma che
siano attive origini provenienti da sezioni diverse per i vari assi.

3.7.5 DDL e DDR per variazione Lunghezza e Raggio utensile


I parametri lunghezza utensile (parametro L) e raggio utensile (parametro R) sono normalmente
acquisiti da Z32 a partire dalla descrizione dell'utensile contenuta nella tabella utensili.
Da part-program si possono modificare i dati della tabella utensile programmando L o R.
Nel caso di variazione dei parametri di un utensile derivanti per esempio da affilatura può essere
necessario cambiare i parametri geometrici L o R di piccole quantità (qualche centesimo di mm al
massimo).
Per evitare possibilità di errori grossolani si ritiene utile che l'operatore (ciò vale particolarmente
nel caso di operatori poco esperti) imposti non l'intero nuovo valore, ma solo la differenza: sarà in
questo modo più evidente un errore, dovendo comunque la differenza essere contenuta in frazioni
di mm.
A questo scopo i due parametri di sistema DDL e DDR impostano la differenza rispettivamente
della lunghezza L e del raggio R.
Attenzione: l'uso di questi parametri può interferire col PLC, nel caso che il PLC piloti una
variazione del raggio utensile (variabile ZZRAYNEW). Consultare ed accordarsi col costruttore della
macchina.
Il valore efficace di L ed R usato da Z32 è la somma tra il valore di L+DDL e di R+DDR.
Agli effetti della visualizzazione delle quote la L è ricalcolata se L oppure DDL sono programmati
in riga ISO (non se sono programmati in riga evoluta, come è spiegato per la L nel paragrafo
“Lunghezza utensile”), quindi è bene programmare DDL sempre in riga ISO per ottenerne
immediatamente l'efficacia completa.
Anche DDR deve essere programmato di preferenza in riga ISO per ottenerne l'efficacia
immediata e quindi limitare le possibili incompatibilità col PLC.

3.7.6 DLX e DLZ per variazione Lunghezze utensile (Tornio)


I parametri lunghezza utensile per macchine tornio LX e LZ sono normalmente acquisiti da Z32
a partire dalla descrizione dell’utensile contenuta nella tabella utensili.

130 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

Da part-program si possono modificare i dati della tabella utensile programmando LX o LZ.


Nel caso di variazione dei parametri di un utensile derivanti per esempio da affilatura può essere
necessario cambiare i parametri geometrici LX o LZ di piccole quantità (qualche centesimo di mm
al massimo).
Per evitare possibilità di errori grossolani si ritiene utile che l'operatore (ciò vale particolarmente
nel caso di operatori poco esperti) imposti non l’intero nuovo valore, ma solo la differenza: sarà in
questo modo più evidente un errore, dovendo comunque la differenza essere contenuta in frazioni
di mm.
Sono stati introdotti a questo scopo i due parametri DLX e DLZ che impostano la differenza
rispettivamente della lunghezza LX e della lunghezza LZ.
Il valore efficace di LX e LZ usato da Z32 è la somma tra il valore di LX+DLX e di LZ+DLZ.
Agli effetti della visualizzazione delle quote la LX è ricalcolata se LX oppure DLX sono
programmati in riga ISO (non se sono programmati in riga evoluta, come è spiegato per la L nel
paragrafo “Lunghezza utensile”), quindi è bene programmare DLX sempre in riga ISO per ottenerne
immediatamente l'efficacia completa.
Anche per LZ, agli effetti della visualizzazione delle quote, vale quanto sopra detto per LX; quindi
DLZ deve essere programmato di preferenza in riga ISO per ottenerne l’efficacia immediata.
I parametri DLX e DLZ, eventualmente contenuti nella descrizione utensile, sono accessibili da
riga evoluta di part-program, sia in lettura :R, :C che in scrittura :W, :S.

3.8 PARAMETRI
Abbiamo già visto come molte funzioni di macchina sono programmate con una o due lettere
dell'alfabeto seguite da un valore numerico, per esempio: X100.
Oltre agli indirizzi sopra elencati e che corrispondono a particolari funzioni, sono possibili molte
altre combinazioni di due lettere: questi indirizzi identificano una entità, che chiameremo
'parametro’, di cui lo Z32 mette in memoria il valore, per poterlo poi utilizzare per scopi diversi.
Anche agli indirizzi di funzioni specifiche di macchina (esclusi N, G, O) corrispondono in
memoria dello Z32 dei valori numerici, che sono via via aggiornati durante lo svolgimento del
programma: anche queste entità possono essere considerate 'parametri'.
Nell'esempio fatto, dopo l'analisi della istruzione X100 (vedere anche capitolo “Esecuzione riga
ISO”) lo Z32 contiene, nella locazione assegnata ad X il valore 100. Il fatto di aver programmato X
implica anche che si dovrà muovere l'asse X, ma intanto nella locazione corrispondente a X è
scritto il valore programmato.
Il valore 100 assegnato al parametro X viene conservato in memoria dallo Z32 fino a che un
diverso valore non venga assegnato ad X, e può quindi essere utilizzato in seguito anche per scopi
diversi da quelli di far muovere l'asse fino a quota 100.
I parametri sono identificati da un 'indirizzo' (X nell'esempio precedente) che può essere a 1, 2 o
3 caratteri oppure dai parametri con indice PAR[ ], PAL[ ] ecc… Nella memoria dello Z32 sono
predisposte le locazioni per i seguenti gruppi di parametri:
1) NOMI ASSI
2) PARAMETRI DI SISTEMA
3) PARAMETRI UTENTE
4) PARAMETRI CON INDICE
5) PARAMETRI TRILETTERALI
Ad esclusione dell’array di parametri PRM[ ] che è unico per tutti i processi, tutti i parametri sono
di processo cioè si possono usare tutti su ogni processo.

D. ELECTRON 131
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

3.8.1 Nomi assi


I nomi assi possono essere con indirizzo a un carattere o più caratteri nel caso di assi biletterali
(con indice numerico). L’identificativo dell’asse (primo carattere) può essere una lettera scelta tra
una delle seguenti:
A B C D H P Q U V W X Y Z
L’indice numerico per gli assi biletterali deve essere una cifra decimale tra 1 e 9.
Per dettagli sulla sintassi di programmazione di “parametri nomi assi” per assi biletterali vedere
paragrafo “Assi con nome biletterale (con indice numerico)”.
I nomi assi devono essere definiti nelle tarature di macchina.

3.8.2 Parametri di sistema


Hanno un significato ben preciso nella programmazione Z32, essi sono:
AE comunicazione da logica
AM misura primo asse
AN correzione tastatore primo asse negativo
AP correzione tastatore primo asse positivo
AU comunicazione a logica
BM misura secondo asse
BN correzione tastatore secondo asse negativo
BP correzione tastatore secondo asse positivo
CM misura terzo asse
DA traslazione primo asse
DB traslazione secondo asse
DC traslazione terzo asse
DDL differenza lunghezza utensile L
DDR differenza raggio utensile R
DLX variazione lunghezza utensile (tornio)
DLZ variazione lunghezza utensile (tornio)
DM distanza di misura
F feed
HR appoggio coordinata polare raggio e G110
HT appoggio coordinata polare angolo e G110
HX appoggio coordinata cartesiana X e G speciali
HY appoggio coordinata cartesiana Y e G110
I coordinata centro primo asse
IR coordinata centro rotazione primo asse
IS coordinata centro specularità primo asse
J coordinata centro secondo asse
JR coordinata centro rotazione secondo asse
JS coordinata centro specularità secondo asse
K passo di filettatura e G110
KA parametro di selezione
KD fattore additivo singolo asse
KG codice GEPI-2 e sottoprogrammi permanenti
KM fattore moltiplicativo singolo asse
KP fattore di scala nel piano
KT fattore di scala terzo asse
L lunghezza utensile (fresa)

132 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

LX lunghezza utensile (tornio)


LZ lunghezza utensile (tornio)
M funzione ausiliaria
MA funzione ausiliaria
MB funzione ausiliaria
MC funzione ausiliaria
MS massima Speed in G96
P ordine della nurbs
QA pendenza ausiliaria
QF pendenza finale
QR angolo di rotazione
QS pendenza asse di specularità
R raggio utensile
RA raggio cerchio
RB smusso
RR raggio di raccordo
S speed
T utensile programmato
TA posto dell'utensile sul mandrino
TB posto dell'utensile programmato
TT tempo della sosta
# sincronizzatore part-program e logica ML
#A sincronizzatore part-program e logica ML
#B sincronizzatore part-program e logica ML
#C sincronizzatore part-program e logica ML
#D sincronizzatore part-program e logica ML
#E sincronizzatore part-program e logica ML
#F sincronizzatore part-program e logica ML
#G sincronizzatore part-program e logica ML
#H sincronizzatore part-program e logica ML
#I sincronizzatore part-program e logica ML
#J sincronizzatore part-program e logica ML
#K sincronizzatore part-program e logica ML
#L sincronizzatore part-program e logica ML
#M sincronizzatore part-program e logica ML
#N sincronizzatore part-program e logica ML
#O sincronizzatore part-program e logica ML
#P sincronizzatore part-program e logica ML
#Q sincronizzatore part-program e logica ML

La D.ELECTRON potrà definire in seguito altri parametri per ampliare le prestazioni di software
dello Z32.

3.8.3 Parametri utente


Max 60 L'utente può definire all'interno di un part-program fino ad un massimo di 60 "parametri letterali"
parametri cioè costituiti da uno o due caratteri alfabetici e altri parametri con indice come viene precisato nel
paragrafo successivo.
Parametri
I nomi dei parametri letterali possono essere una combinazione di uno o due caratteri stampabili
letterali
qualsiasi, con queste limitazioni:
− lo SPAZIO (BLANK) non può essere usato

D. ELECTRON 133
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

− i NUMERI non possono essere usati


− i caratteri ! $ % ( ) * + , - . / ; < = > non possono essere usati
− il primo carattere non deve essere nessuno dei seguenti: G N O :
− sono vietate, perché hanno altri significati, come si vedrà anche in seguito, le seguenti
combinazioni di caratteri:
AA AB AC primo asse, secondo asse, terzo asse
RQ SN CS AT radice quadrata, seno, coseno, arcotangente
PI costante pi greco
PC CP conversione polari/cartesiane e inversa
IF condizionamento
EB interruzione riga evoluta
− i caratteri minuscoli sono ammessi (anche se sconsigliati per ragioni di chiarezza)
− se definiti nelle tarature macchina assi biletterali il secondo carattere non può essere il
carattere sottolineato “_”.
Ad evitare possibili confusioni in presenza di simboli non alfabetici si consiglia di usare, per la
definizione dei parametri solo caratteri alfabetici.

Sono possibili numerose altre combinazioni: alcune di queste sono usate dai costruttori di
macchine utensili per cicli fissi, sottoprogrammi standard, macroistruzioni ecc. Perché sia possibile
all'utente finale di usare senza problemi, così come sono, questi sottoprogrammi, è bene che i
simboli usati in questi sottoprogrammi non siano usati nei programmi principali che ne fanno uso.
In particolare, per i cicli fissi, sono stati normalizzati i seguenti significati:
HA inizio foro
HB fine foro
HC uscita lunga foro
HD diametro lavoro
HE uso interno cicli fissi
HF uso interno cicli fissi
HG uso interno cicli fissi
HH uso interno cicli fissi
HJ uso interno cicli fissi
La D.ELECTRON farà inoltre uso, anche nel seguito e per quanto possibile, sempre di simboli
che iniziano per H nei sottoprogrammi standard.
L'utente finale può anche usare i simboli usati nei sottoprogrammi, ma dovrà tenere conto che,
dopo una esecuzione del sottoprogramma, i valori di questi parametri VENGONO MODIFICATI (se
ne sconsiglia quindi l'uso).

3.8.4 Parametri con indice

Array di parametri PAR[...]


Parametri Per aumentare il numero dei parametri e rendere più flessibile l'indirizzamento dei parametri
con indice stessi lo Z32 mette a disposizione un array di parametri indicizzato PAR[...].
A tutti gli effetti, PAR[0], PAR[1], PAR[2], fino a PAR[512] sono parametri di part-program e
possono essere usati come i parametri a indirizzo alfabetico. Il formato numerico dei parametri
dell'array PAR[ ] è lo stesso floating-point dei parametri a indirizzo alfabetico.
I parametri a indirizzo alfabetico e i parametri PAR[ ] possono essere usati insieme nel part-
program. L'array PAR[ ] è completamente azzerato al reset.

134 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

L'indice che individua il parametro può essere una espressione aritmetica (stessa sintassi e
stesse funzioni delle espressioni aritmetiche delle righe evolute e tra parentesi acute, vedere
paragrafo seguente).
Per esempio è sintatticamente valido (ma è bene non esagerare nella complessità!):
!HX=12*HA/PAR[HA+PAR[HB+1]]!
Se l'indice programmato risulta non intero viene indirizzato l'elemento dell'array più vicino (ossia
l'indice calcolato viene arrotondato all'intero più vicino).
Se l'indice programmato risulta maggiore di 512 o minore di 0 viene allarme di programmazione
"INDICE NON VALIDO"

Array di parametri di logica PAL[...]


È disponibile anche un altro array di parametri, PAL[...], dedicato alla comunicazione con la
logica programmabile.
Le modalità di indirizzamento e di uso in espressioni di part-program sono identiche a quelle
dell'array PAR[ ]. Le differenze sono:
Il formato numerico è intero e non floating point.
Serve a rendere più veloce la lettura e scrittura da parte della logica programmabile (che può
avere problemi di velocità).
Il parametro può essere usato in modo normale nel part-program: la conversione a intero è fatta
automaticamente senza necessità di speciali funzioni.
Gli elementi di indice maggiore di 255 sono protetti
Gli elementi dell'array da 256 a 512 sono destinati a una speciale comunicazione con la logica
programmabile:
− da part-program utente sono solo leggibili (il tentativo di scrivere da part-program
utente genera un allarme di programmazione "SCRITTURA VIETATA")
− sono scrivibili e leggibili da sottoprogramma speciale (M speciale o ciclo fisso di
sistema).

Array di parametri di logica PLS[...]


È un array di parametri di logica con 513 elementi, interi e di sistema, in tutto simili ai parametri
PAL[ ].
Questi parametri sono accessibili da PLS[0] a PLS[512] e come per gli elementi protetti
dell’array PAL[ ] (indice maggiore di 255) possono essere letti da part-program utente mentre sono
scrivibili e leggibili nei sottoprogrammi speciali (M speciale o ciclo fisso di sistema).

Array di parametri permanenti PRM[...]


L'array di parametri permanenti PRM[ ] non è di processo. Questi parametri PRM[ ] sono salvati
in memoria CMOS e all'accensione riprendono il valore che avevano al precedente spegnimento.
L’attivazione di tale prestazione e la dimensione di tale array sono impostate dal costruttore, quindi
riferirsi alle specifiche di quest’ultimo per le informazioni d’uso.
Esempio:
PRM[102]34.589 ;viene messo in PRM[102] il valore 34.589

G0X<PRM[102]> ;l’asse X viene portato alla quota 34.589

Se viene referenziato un PRM[n] con n oltre il limite specificato si verifica allarme CN1D14 -
ERRORE PROGRAMMA.
Se avviene un errore di scrittura fisica in memoria CMOS di un parametro PRM[ ] si verifica un
allarme CN2713 - FALLITA SCRITTURA PRM[ ] IN CMOS.

D. ELECTRON 135
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

Se all'accensione ci sono errori nei parametri PRM[ ] memorizzati nella memoria permanente
viene l'allarme CN0x10, dove x è un numero esadecimale maggiore di 8 (può essere
8,9,A,B,C,D,E,F).
In generale gli errori CN0x10 si presentano quando la batteria che mantiene permenente la
memoria durante lo spegnimento è esaurita o difettosa. La loro comparsa deve essere gestita dal
servizio assistenza.
ATTENZIONE: i parametri PRM sono parametri particolari, non indicati per l'uso in
formule matematiche. I parametri PRM (visti dal part-progam) sono infatti numeri troncati
alla terza cifra decimale (anche durante i conti).
Ad esempio: programmare PRM[4]< 1 / 10000 > darà 0 come risultato. Il risultato corretto
sarebbe 0.0001, ma essendo i PRM troncati alla terza cifra, si otterrà il valore 0.
Pertanto, i parametri PRM possono essere utilizzati per salvare dati, valori o
impostazioni, ma non per eseguire qualsiasi calcolo matematico.

Array di parametri POS[...]


L’array di parametri POS[12] (indice da 0 a 12) di 13 elementi è un array di parametri float Z32,
di processo, ed accessibili da part-program.
Tali parametri contengono il valore delle quote programmate degli assi continui del processo
sottratte delle origini e della lunghezza utensile.
ATTENZIONE: questo array è solo per uso interno D.Electron.

Array di parametri ZFP[...]


È un array di parametri di part-program formato da 1024 elementi da ZFP[0] a ZFP[1023].
Questo array è stato introdotto ad uso esclusivo da parte di D.Electron, per evitare conflitti con
eventuali altri parametri già in uso da parte dell’utente.
ATTENZIONE: non c'è nessun blocco che impedisca l'uso di questi parametri anche in
part-program utente, ma si raccomanda di lasciare questo array ad esclusivo uso da parte di
D.Electron per evitare possibili conflitti. Non è neanche garantito che in futuro questi
parametri possano essere bloccati in normali part-program utente.

3.8.5 Parametri triletterali

Parametri accessibili solo da sottoprogrammi di sistema


In varie occasioni l’installatore, per i suoi sottoprogrammi di sistema, deve utilizzare parametri di
part-program.
I parametri accessibili da sottoprogramma di sistema non sono distinti in nessun modo dai
parametri accessibili da sottoprogrammi utente, con possibili interferenze.
Quindi sono stati resi disponibili 156 parametri riservati ai sottoprogrammi di sistema.
Sono parametri con indirizzo triletterale (non consentito dalle vecchie release di software, quindi
tale da non generare equivoci) con queste specifiche:
- il primo carattere è la barra rovescia “\”
- il secondo carattere è maiuscolo alfabetico da “A” a “F” (sei possibilità)
- il terzo carattere è maiuscolo alfabetico da “A” a Z” (ventisei possibilità)
Quindi in tutto sono 26x6 = 156 combinazioni
Questi parametri sono usabili nello stesso modo di tutti gli altri, sia in righe ISO che in righe
evolute.

136 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

L’uso di questi parametri non fa aumentare il numero complessivo di parametri usato dal part-
program (se viene superato il numero massimo di 60 viene l’allarme CN4B14 - TROPPI
PARAMETRI).

3.8.6 Uso dei parametri


Al reset le quote assi (intese come parametri), i parametri di sistema e i parametri utente sono
tutti inizializzati con valore zero, tranne i parametri KP e KT che sono forzati ad '1'.
Al reset inoltre viene preso atto dell'utensile sul mandrino, la sua descrizione nella tabella utensili
è analizzata e i parametri relativi sono inizializzati secondo la descrizione utensile.
Al reset i parametri sono perciò tutti zero esclusi:
KP e KT inizializzati col valore 1
T inizializzato con l'utensile sul mandrino
TA e TB inizializzati col posto utensile sul mandrino
i parametri definiti nella descrizione dell'utensile che è sul mandrino, inizializzati con i valori
contenuti nella descrizione stessa (vedere anche gestione utensili)
Il valore dei parametri contenuto nella memoria dello Z32 è sempre l'ultimo programmato (in riga
ISO o in riga evoluta).
In particolare, le quote assi restano quelle programmate anche se per varie ragioni (correzione
lunghezza e raggio, origini, rototraslazioni ecc.) le quote effettivamente raggiunte sono diverse da
quelle programmate.
Fanno eccezione TA e TB (posto utensile attuale e futuro) che sono aggiornati direttamente
dallo Z32 in conseguenza di un cambio utensile o di una programmazione di T.
All'interno di una riga ISO possono essere assegnati valori a parametri qualsiasi, per utilizzarli in
successive elaborazioni. Per esempio, se si programma:
X10 XA12 XB14 XC-20
ai parametri X, XA, XB, XC sono assegnati i valori 10, 12, 14, -20.
Il fatto di avere programmato l'asse X comporta anche un moto dell'asse per portarsi alla quota
programmata, mentre il fatto di avere programmato XA XB XC non comporta movimenti assi, ma
solo un aggiornamento dei valori dei parametri, e un'aggiunta di XA, XB, XC alla lista dei parametri
noti se sono incontrati per la prima volta.
Se un parametro mai definito viene incontrato in una espressione il CN non dà allarme, ma
considera che il valore del parametro sconosciuto sia zero.
Durante l'esecuzione di un programma possono essere definiti al massimo 60 parametri diversi,
ma se un parametro ha valore zero non entra nel conto dei 60.
In altre parole, se a un parametro è assegnato il valore zero, esso viene tolto dalla lista dei
parametri noti e considerato come mai definito: ciò non genera errori perché al parametro mai
definito viene assegnato proprio il valore zero.
In caso di necessità quindi, il programmatore può 'cancellare’ i parametri dalla lista dei parametri
noti assegnando loro il valore zero. Ciò è consigliato soprattutto all'interno dei sottoprogrammi
standard (del costruttore o dell'utente finale) per i parametri usati come appoggio di risultati
intermedi per diminuire il numero dei parametri usati.

3.8.7 Programmazione di parametri con espressioni


Abbiamo finora visto che ai parametri può essere assegnato un valore numerico
programmandolo normalmente dietro all'indirizzo del parametro. Per esempio: X100

D. ELECTRON 137
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

Lo Z32 permette di programmare il valore di un parametro anche come risultato di una


espressione algebrica. Ciò si ottiene programmando l'indirizzo seguito dall'espressione racchiusa
tra due parentesi acute:
X<X>
L'espressione può essere una formula matematica anche complessa, contenente:
− costanti: valori numerici con segno, 9 cifre significative prima o dopo la virgola o punto
decimale
PI (PI greco con precisione 9 cifre)
− altri parametri
− operatori matematici:
+ addizione
- sottrazione
* moltiplicazione
/ divisione
RQ radice quadrata
SN seno
CS coseno
AT arcotangente
− apertura e chiusura di parentesi tonde
Per esempio: X<100-R> significa che il parametro X assume il valore di 100 meno il valore del
raggio utensile (non noto al momento della programmazione), e che l'asse X dovrà spostarsi di
conseguenza.
È lecito richiamare nella espressione lo stesso parametro a cui sarà assegnato il valore
risultante: per tutta l'espressione il valore del parametro è quello precedente al calcolo della
espressione.
Per esempio:
X<X*X> elevare X al quadrato
X<X-10> diminuire X di 10
X<PAR[1]+PAR[0]> sommare i due parametri PAR
X<X+PAR[[PAR[0]]> sommare ad X il PAR con indice PAR[0].
Per esempio è sintatticamente valido (ma si consiglia di non esagerare nella complicazione!):
HX<12*HA/PAR[HA+PAR[HB+1]]>
Le operazioni di moltiplicazione e divisione sono prioritarie rispetto alle operazioni di somma e
sottrazione.
Per esempio:
3+4*2 = 3+8 = 11
4*2+3 = 8+3 = 11
4*2+2*7*3 = 8+42 = 50
Le parentesi possono essere usate per forzare una diversa priorità nella esecuzione delle
operazione. Per esempio:
(3+4)*2 = 7*2 = 14
4*(2+3) = 4*5 = 20
4*(2+2*7)*3 = 4*(2+14)*3 = 4*16*3 = 192
Possono essere usati fino a 10 livelli di parentesi.
Per esempio ha due livelli di parentesi l'espressione:
3+((2+3)*5-4/(5-3))*2 = 3+(5*5-4/2)*2 = 3+(25-2)*2 =
=3+23*2 = 3+46 = 49

138 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

Le parentesi devono essere prima aperte e poi chiuse, e devono essere tutte chiuse entro
l'espressione. Per esempio sono errate:
3+(2*3 manca una parentesi chiusa
(3+2)*3) troppe parentesi chiuse
3)+(2 prima chiusa e poi aperta
È lecito iniziare una espressione o un livello di parentesi con '+' o '-'. Per esempio:
-3*(-2*4+3) = -3*(-8+3) = -3*(-5) = +15
Gli operatori RQ (radice quadrata), SN (seno), CS (coseno), AT (arcotangente) si applicano al
valore, o al parametro, o al risultato della parentesi che li segue immediatamente.
Esempio:
RQ16*2=4*2=8
RQ(X*X+Y*Y)=RQ(16+9)=RQ25=5 (ammesso che X=4, Y=3)
I valori su cui operano SN, CS, AT sono espressi in gradi e frazioni decimali di grado.
Esempio:
SN30 = 0,5
AT1 = 45
I calcoli numerici sono fatti in virgola mobile (FLOATING POINT) con circa 9 cifre significative e
esponente di 10 da -16000 (numero con 16.000 zeri dopo la virgola) a +16.000 (numero con 16.000
cifre prima della virgola).
Le eccezioni sono ricondotte ad operazioni lecite, per semplificare i calcoli e impedire arresti di
macchina in condizioni recuperabili. In particolare:
1. La divisione di un numero per zero porta come risultato il massimo (numero con 16.000
cifre), che rappresenta praticamente l'infinito. Il segno è quello esatto.
2. Zero diviso zero porta come risultato zero
3. Se il risultato di una operazione supera il massimo gestibile (overflow) il risultato è
riportato al massimo gestibile (16.000 cifre)
4. Se il risultato di una operazione è inferiore al minimo gestibile (underflow, 16.000 zeri
dopo la virgola) il risultato è forzato a zero
5. La radice quadrata di un numero negativo è la radice quadrata del suo valore assoluto
6. Il seno e il coseno di un numero grande (più di circa 6 cifre) sono forzati
rispettivamente a zero e ad uno.

3.8.8 Parametri in memoria permanente


Può essere utile al programmatore salvare in memoria permanente uno o più parametri per
rileggerli poi in punti successivi o addirittura in esecuzioni successive del programma.
Ciò si può fare, come si vedrà anche più avanti al capitolo dedicato alle righe evolute, con le
istruzioni ':R' e ':W'.
Le tabelle globali dei parametri di processo sono riservate alla memorizzazione dei parametri.
La tabelle inizia con una descrizione qualsiasi di una o più righe all'inizio.
La riga:
: PA
segnala l'inizio della sezione attiva dei parametri.
Le righe successive, con sintassi identica a quella delle origini (file 126, vedere capitolo “Origini
e lunghezze”), contengono i valori dei vari parametri definiti.
Per esempio:
DESCRIZIONE QUALSIASI
:PA

D. ELECTRON 139
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

X1=10
HB=37,45
CK=12345.678
Si noti che i parametri memorizzati in CMOS sono sempre a due caratteri e che il secondo
carattere può essere un numero: i parametri usati nella programmazione invece possono avere uno
o due caratteri di cui il secondo non può essere un numero.
Oltre alla sezione 'globale' (file 125) dei parametri ci possono essere una o più sezioni 'locali' in
coda ad ogni programma o sottoprogramma. Con l'istruzione G37PL si attiva la sezione locale in
coda al programma, mentre l'istruzione G37PG attiva la sezione globale. Al reset è sempre attiva la
sezione globale.

3.8.9 Parametri #, #A ÷ #Q e ##[33] in tempo reale


Per sincronizzare il part-program con alcuni particolari eventi di macchina definiti nella logica
programmabile (per esempio per dialogare col PLC in modo veloce e senza arresto), è possibile
utilizzare i seguenti parametri:
- #, #A, #B, #C, #D, #E, #F, #G, #H, #I, #J, #K, #L, #M, #N, #O, #P, #Q.
- ##[33] (array di 34 elementi)
La programmazione di funzioni ausiliarie (per esempio M o la G112) dà questa sincronizzazione,
ma queste funzioni richiedono l'arresto e sono vietate durante alcune operazioni.
I parametri #, #A ÷ #Q e l’array ##[33] sono leggibili da logica ML in tempo sincronizzato e sono
programmabili anche in correzione raggio, solo se sono programmati in riga ISO.
Se usati in riga evoluta si comportano come qualsiasi altro parametro.
L’array ##[33], composto da 34 elementi (##[0] ÷ ##[33]), aumenta la quantità di parametri in
tempo reale disponibili e ne estende le caratteristiche.
E’ possibile far calcolare l’indice dell’array dal programma con una espressione, per esempio:
HA5
##[HA*2-1]40
che assegna al parametro ##[9] il valore 40.
I primi 18 elementi dell’array ##[33] sono un alias del vecchio modo di programmare, per cui:
##[0]20 equivale a #20
##[17]20 equivale a #Q20
##[18] ÷ ##[33] non hanno corrispondente nel vecchio modo.
Si rimanda al manuale M99 - Logica Programmabile per esempi e chiarimenti (ZZVALCANC[1],
ZZVALSUP[31], ZZVALSYNC[33]).

3.9 FUNZIONI TRILETTERALI ABS, TAN, NEI, INT, RST

3.9.1 Funzione valore assoluto ABS(espressione)


Calcola il valore assoluto di una espressione.
Per esempio:
HA-4 HX<ABS(HA)+10>
HX assume il valore 14.

140 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

3.9.2 Funzione tangente TAN(espressione)


Calcola la tangente trigonometrica di un'espressione, il cui risultato è un angolo espresso in
gradi.
Per esempio:
HX20 HA<20+TAN(HX+10)>
HA assume il valore 20+tan(30) = 20.57735…

3.9.3 Funzioni intero troncato INT(espressione) e intero arrotondato


NEI(espressione)
Calcolano il valore intero di una espressione, con due diverse approssimazioni: INT opera una
troncatura, mentre NEI (dall'inglese NEarest Integer) arrotonda all'intero più vicino. Esempi:
INT(1.2) vale 1, anche NEI(1,2) vale 1
INT(1.9999) vale 1, invece NEI(1.9999) vale 2.
Per la funzione NEI se il valore è esattamente a metà tra due interi l'arrotondamento è all'intero
superiore, quindi:
NEI(1,49999999) vale 1, NEI(1,5) vale 2.
Se il valore dell'espressione da arrotondare è negativo le operazioni di arrotondamento e
troncatura sono fatte sul valore assoluto ed il segno viene conservato sul risultato. Per esempio:
INT(-1.2) vale -1, anche NEI(-1,2) vale -1
INT(-1.9999) vale -1, invece NEI(-1.9999) vale -2.
NEI(-1,49999999) vale -1, NEI(-1,5) vale -2.
Esempi:
HA.1 HX<10+INT(HA)>
Il valore di HX è 10 perché INT(0.1) è zero.
HA.1 HX<INT(HA*100)>
Questo esempio è provocatorio, serve per mettere in guardia sull'uso dei decimali. A prima vista
si direbbe che il risultato debba essere HX=10, ma invece non è così: il risultato sarà 9, ma non è
un risultato "sicuro" in quanto dipende da arrotondamenti sull'ultima cifra significativa dei formati
interni che rappresentano i numeri.
Infatti, la rappresentazione dei numeri all'interno di Z32 è binaria, e in formato binario il valore di
0.1 non è rappresentabile in forma esatta. Si verifica la stessa situazione nel nostro abituale
sistema decimale con i numeri periodici: 20/3 vale 6.66666… ma non è rappresentabile con un
numero finito di cifre.
Quindi 100*0.1 in un sistema binario, dove 0.1 è approssimato con un numero finito di cifre, non
vale esattamente 10 ma un po' meno, come in un sistema decimale 3*6.66666 non vale 20 ma
19.99998.
La troncatura operata da INT perciò non dà il numero che ci si aspetterebbe ma uno di meno (9
anziché 10 nell'esempio binario e 19 anziché 20 nel sistema decimale).
Il programmatore faccia attenzione al fatto che il risultato dipende da condizioni estremamente
marginali ed in larga parte imprevedibili. Per esempio in decimale, se 20/3 fosse approssimato con
6.66667 la moltiplicazione per 3 darebbe 20.00001, quindi l'operazione INT darebbe 20.
La funzione NEI invece dà in questo caso un risultato del tutto sicuro:
HA.1 HX<NEI(HA*100)>

D. ELECTRON 141
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

Il risultato è sicuramente 10 in quanto i calcoli interni sono fatti con grande precisione e quindi
l'errore è enormemente inferiore a 0.5 che rappresenta la "fascia di tolleranza".
Ma attenzione: anche la funzione NEI può dare dei risultati incerti se il risultato sta intorno a 0,5.
Per esempio:
HA.1 HX<NEI(HA*5)>
Qui il risultato può essere 0 oppure 1 in funzione delle approssimazioni di calcolo.
E’ da notare che se un programma oggi funziona bene ma è in condizioni di tolleranza
marginale, potrebbe non funzionare più con parametri anche leggermente diversi oppure
(molto importante) con future versioni di software di Z32 che potrebbero operare
approssimazioni diverse.
Si raccomanda perciò di prestare grande attenzione alle approssimazioni di calcolo e di
evitare condizioni di tolleranza "marginale" che possono portare a risultati apparentemente
incerti perché dipendenti da variazioni anche minime di parametri o condizioni di
funzionamento.

3.9.4 Funzione lettura stato RST(espressione)


Esegue la lettura dello stato macchina dipendente dallo stato richiesto.
Normalmente l'espressione sarà un valore numerico direttamente programmato in chiaro,
difficilmente si troverà utile usare una vera espressione per individuare lo stato da leggere.
Per esempio, si programmerà RST(2) per leggere lo stato 2.
La funzione RST è riservata normalmente a programmatori sistemisti che devono gestire macro
o sottoprogrammi di uso generale per macchine con diverso stato di aggiornamento software o con
diverse funzionalità. Non dovrebbe essere usata dal normale utente programmatore.
Gli stati leggibili e le risposte sono:

RST(0) legge la versione del "SIS" di Z32


Il valore fornito è (versione*10)+sottoversione.
Per esempio se la versione è T109-3 il valore di RST(0) è 1093.
Può servire per condizionare l'esecuzione di particolari funzionalità che siano disponibili solo a
partire da una certa versione.
Esempio:
--IF RST(0) >= 1094
(istruzione 1)
--ELSE
(istruzione 2)
--END IF
L'istruzione 1 è eseguita se la versione di software è almeno la T109-4, altrimenti è eseguita
l'istruzione 2.

RST(1) legge lo stato macchina millimetri/pollici


Il valore fornito è 0 se la macchina è in millimetri, 1 se la macchina è in pollici.
Esempio:
--IF RST(1) = 0
HA100
--ELSE

142 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

HA<100/25.4>
--END IF
Aggiusta il valore di HA in pollici o mm.
RST(1) considera anche la forzatura G70-G71 attiva al momento.

RST(2) legge lo stato programmato di rotazione mandrino M3/M4/M5


Il valore fornito è +1 se il mandrino è in rotazione M3, -1 se il mandrino è in rotazione M4, 0 se il
mandrino non è in rotazione (M5, M19, M6 …).
Esempio:
--IF RST(2) = 1
M4
--ELSEIF RST(2) = -1
M3
--ELSE
M5
--END IF
Inverte il senso di rotazione, ma non mette in moto il mandrino se era già fermo.

RST(3) legge la lingua impostata per Z32


Il valore fornito dipende dalla lingua impostata in taratura:
0 = Italiano
1 = Inglese
2 = Francese
3 = Tedesco
4 = Portoghese
5 = Croato
Esempio:
--IF RST(3) = 0
ERRORE, VALORE DI HA TROPPO GRANDE
--ELSEIF RST(3) = 2
ERREUR, VALEUR DE HA TROP GRAND
--ELSE
ERROR, VALUE OF HA TOO HIGH
--END IF
Visualizza un messaggio di errore in tre lingue, italiano e francese se sono impostate e in
inglese se è impostata una qualsiasi altra lingua.

RST(4) posizione angolare del mandrino


Questa funzione è riservata ai programmatori di cicli fissi di sistema.
Restituisce al part-program l'angolo mandrino in gradi, riferito all'origine base del mandrino.
E' specialmente utile per cicli di barenatura dove l'estrazione del bareno deve essere preceduta
da un disassamento orientato nella direzione dell'utensile.

D. ELECTRON 143
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

Questa funzionalità potrebbe essere eseguita forzando a fine lavoro un posizionamento


mandrino oppure, con maggiore semplicità e rapidità, arrestando il mandrino in un punto qualsiasi e
disassando l'utensile nella direzione dove si è arrestato il mandrino.
Una cautela nell'uso di questa funzione viene dal fatto che il mandrino deve aver terminato la
sua rampa ed essere davvero fermo al momento della lettura, condizione che non sempre è
assicurata da funzioni ausiliarie di PLC. In questi casi di incertezza il programmatore deve inserire
un ciclo di attesa verificando che il mandrino sia effettivamente fermo, per esempio:
--DO
HA<RST(4)>
G4TT.05
--LOOP IF ABS(HA-RST(4))>0.1
G4TT.5
HA<RST(4)>
In questo esempio il programma aspetta finché la velocità non diventa inferiore a 0.1 gradi in 50
millisecondi (pari a 120 giri/minuto), poi aspetta ancora 0,5 secondi prima di fare la misura definitiva
della posizione mandrino da usare poi per il disassamento.
Questo è un esempio "medio", ma se il mandrino ha rampe molto lente può essere necessario
aumentare i tempi di attesa per avere una migliore precisione.

RST(5) posizione angolare del mandrino in G61


La variabile di part-program RST(5) contiene la posizione angolare del mandrino all'istante di
una misura G61.
E' azzerata al RESET, a inizio programma e quando è programmata G61.
Dopo che G61 è andata a buon fine contiene la posizione angolare del mandrino, riferita
all'origine base, congelata all'istante in cui è stata presa la misura G61.
Se la misura G61 non va a buon fine resta zero.
Non è significativa se il mandrino non esiste.
Serve a creare speciali cicli o macro di sistema, per esempio l'intercettazione di un tagliente
dell'utensile tramite raggio laser.

RST(6) valore della rampa mandrino


La funzione RST(6) restituisce il valore della rampa mandrino impostato nelle tarature macchina.
Il principale uso di questo dato è per calcolare lo spazio di arresto in G63 (maschiatura rigida) e
quindi creare macro di maschiatura generiche, indipendenti dalle tarature macchina.
Il valore di ritorno è espresso in giri/minuto/sec.
Per esempio, se la taratura rampa mandrino è di 3000 giri/min in 2 secondi RST(6) vale 1500.

RST(7) legge lo stato programmato radiale/diametrale


Il valore restituito dalla funzione dipende dallo stato di programmazione radiale/diametrale attiva:
0 = se attiva programmazione radiale
1 = se attiva programmazione diametrale

RST(8) valore di KA programmato con G150


La funzione RST(8) restituisce il valore di KA programmato con G150.

RST(9) valore di I programmato con G150


La funzione RST(9) restituisce il valore di I programmato con G150.

144 D. ELECTRON
CNC Z32 Programmazione Cap.3 - Funzioni M, Feed, Speed, Origini, Parametri

RST(10) controllo dei refrigeranti


La funzione RST(10) restituisce uno dei seguenti valori:
- 0 se né M7 né M8 sono attive
- 1 se attiva solo M7
- 2 se attiva solo M8
- 3 se attive entrambe M7 ed M8

RST(11) legge lo stato della taratura millimetri/pollici


La funzione di programmazione RST(1) fornisce la situazione attuale della macchina (1=pollici,
0=mm) inclusiva dell’effetto di G70/G71.
La funzione di programmazione RST(11) fornisce lo stato di taratura della macchina (1=pollici,
0=mm) quindi non considerando l’effetto di G70/G71.
Questa funzione consente al programmatore di cicli fissi o sottoprogrammi, di utilizzare valori
geometrici che sono dipendenti dalle tarature, ma non dallo stato di G70/G71, per esempio raggio
utensile R e lunghezza utensile L (LX/LZ per torni).

RST(12) stato specularità


La funzione RST(12) restituisce lo stato della specularità:
- 0 se specularità non attiva
- 1 se specularità attiva

RST(13) modo correzione raggio G109


La funzione RST(13) restituisce lo stato della correzione raggio:
- 0 se attiva G109A
- 1 se attiva G109B
- 2 se attiva G109C
- 3 se attiva G109D
- 4 se attiva G109E

RST(14) tempo attacco morbido per G63/G33


La funzione RST(14) restituisce il tempo di attacco morbido di G63/G33 impostato nelle tarature
macchina.
Il valore di ritorno è espresso in millisecondi.

RST(15) ÷ RST(27) accelerazione massima di taratura assi continui


Le funzioni da RST(15) a RST(27) restituiscono l’accelerazione massima di taratura di ciascuno
dei 13 possibili assi continui del processo in cui gira il part-program che contiene questa funzione.
RST(15) restituisce l’accelerazione del primo asse (normalmente X), RST(16) l’accelerazione
del secondo asse (normalmente Y sulle frese) ecc… fino a RST(27) che restituisce l’accelerazione
del tredicesimo asse.
2 2
Le unità di misura del valore restituito sono in unità visualizzate/sec , quindi mm/sec per gli assi
2
lineari e gradi/sec per gli assi rotativi.
2
ATTENZIONE: l’unità di misura degli assi lineari è in mm/sec anche per le macchine in pollici.

RST(28) ÷ RST(40) rapido di taratura assi continui


Le funzioni da RST(28) a RST(40) restituiscono il rapido di taratura di ciascuno dei 13 possibili
assi continui del processo in cui gira il part-program che contiene questa funzione.

D. ELECTRON 145
Cap.3 - Funzioni M, Feed, Speed, Origini; Parametri CNC Z32 Programmazione

RST(28) restituisce il rapido del primo asse (normalmente X), RST(29) il rapido del secondo
asse (normalmente Y sulle frese) ecc... fino a RST(40) che restituisce il rapido del tredicesimo
asse.
Le unità di misura del valore restituito sono in unità visualizzate/minuto, quindi mm/minuto per gli
assi lineari e gradi/minuto per gli assi rotativi.
ATTENZIONE: l’unità di misura degli assi lineari è in mm/minuto anche per le macchine in
pollici.

RST(41) stato millimetri/pollici del part-program


La funzione RST(41) restituisce il valore 1 se il part-program è eseguito in mm e 1/25,4 se è
eseguito in pollici.
La RST(41) tiene conto dell’effetto della forzatura da millimetri a pollici e viceversa ottenute con
G70/G71.
Per esempio se si programma:
X<100 *RST(41)>
L’asse X è spostato alla quota fissa di 100 mm, indipendentemente dallo stato dell’esecuzione,
pollici o mm.

Uso in cascata di funzioni


Come per tutte le funzioni gestite da Z32, anche queste funzioni triletterali possono essere usate
in cascata, per esempio:
HA-10 HX<NEI(1000*TAN(ABS(HA)))>
HX assume il valore +176 (la tangente di +10 è 0.176327, quindi NEI è applicato a 176.327).
Da notare che il risultato è "certo" in quanto il punto di incertezza di NEI sarebbe a 176.5, quindi
la fascia di tolleranza è molto grande.

146 D. ELECTRON
CNC Z32 Programmazione Cap.4 - Utensili, Esecuzione riga ISO

CAPITOLO 4

4. UTENSILI - ESECUZIONE RIGA ISO

4.1 GESTIONE DEGLI UTENSILI ('T', 'TA', 'TB')


Per ogni processo gli utensili presenti nel magazzino sono descritti in una 'TABELLA UTENSILI'
che può essere 'globale' oppure 'locale' (in coda al part-program).
Si ripropone lo schema d'assegnazione tabelle globali/processi:

PROCESSO 0 1 2 3 4 5
TABELLA PARAMETRI 125 122 119 116 113 110
TABELLA ORIGINI 126 123 120 117 114 111
TABELLA UTENSILI 127 124 121 118 115 112

NOTA per sistemi di tipo tornio


In questa descrizione si suppone che la tabella utensile sia la tabella di una macchina tipo fresa
(quindi con lunghezza utensile descritta nel parametro L). In caso di sistemi tornio, la descrizione è
sempre valida, tranne per il fatto che, al posto del parametro L, si dovranno considerare i due
parametri LX e LZ (lunghezza utensile lungo l'asse X e lunghezza utensile lungo l'asse Z).

Si consiglia prudenza nell'uso delle sezioni locali, che devono essere usate solo se necessario e
in accordo col costruttore.
Al reset è attiva la sezione 'globale'. Le sezioni 'locali' sono attivate da G37TL, mentre la sezione
'globale' è ripristinata da G37TG.
Le sezioni attive delle tabelle utensili iniziano con la riga: :TL
:TL A partire dalla riga successiva al ':TL' si possono inserire le righe degli utensili, contenenti 'T',
numero dell'utensile e relativa descrizione con un numero totale di 247 caratteri; righe con
maggiore numero di caratteri provocano allarme CN1D14 quando l’utensile è montato sul
mandrino.
Lo spazio di memoria usato dalla tabella utensili è quello necessario agli utensili effettivamente
descritti: gli utensili non inseriti non occupano spazio di memoria.
Esempio di riga di descrizione utensile:
T231#34L100R20
Utensile 231, posto 34, lunghezza 100, raggio 20
Ogni riga di descrizione deve iniziare con la lettera T, seguita dal numero utensile (fino a 9 cifre
decimali intere gli zeri iniziali devono essere omessi) e dal carattere #. Nel nostro caso 'T231#'.
È IMPORTANTE che non ci siano spazi tra 'T' e '#' e che gli zeri iniziali siano omessi, altrimenti il
CN non riconosce l'utensile programmato.
L'utensile zero si descrive con 'T0#...' (un solo zero).
# Il numero che segue '#' indica il posto assegnato all'utensile nel magazzino, posto che verrà
Posto fornito alla logica per la ricerca. Nel nostro caso '34'. Gli zeri iniziali del posto possono essere
omessi.

D. ELECTRON 147
Cap.4 - Utensili, Esecuzione riga ISO CNC Z32 Programmazione

Dopo il posto utensile possono essere inserite una serie di istruzioni con le stesse modalità con
cui si programma una riga ISO (descrizione utensile). Nel nostro caso 'L100R20'.
Al momento del cambio utensile queste istruzioni ISO vengono normalmente eseguite dal CN,
così come se costituissero una riga successiva a quella del cambio utensili.
Nel nostro caso l'esecuzione della descrizione utensile porterebbe ad assegnare al parametro L
il valore 100, e al parametro R il valore 20.
La descrizione utensile ha la stessa efficacia di una riga ISO contenente le stesse istruzioni: la
Lunghezza programmazione di L nella descrizione utensile provoca perciò il ricalcolo delle correzioni lunghezza
utensile e origini. La reale esecuzione della riga descrizione utensile avviene all’uscita (G26) del
sottoprogramma di cambio utensile. Sul G26 finale del sottoprogramma si ha l’esecuzione della
descrizione dell’utensile montato sul mandrino, con inizializzazione dei parametri in essa contenuti
(vedere anche il capitolo delle origini).
Nella descrizione utensile possono essere inserite altre funzioni (F, S, M, ...) per abbreviare la
programmazione.
Possono essere descritti nella tabella utensili due o più utensili con identico 'posto': ciò permette
di gestire facilmente utensili multiuso, in quanto i diversi usi dello stesso utensile saranno
contrassegnati da un 'T' diverso ma con un posto '#' identico. La descrizione dell'utensile potrà
essere diversa in uno o più parametri, così da descrivere esattamente le caratteristiche dell'utensile
da usare.
Una limitazione alla definizione multipla dello stesso utensile c'è in caso di cambio utensile
'random'. Vedere paragrafo “Utensili multiuso e gestione random” più avanti.
L'utensile è programmato nel programma-pezzo col parametro T seguito da un numero fino a 8
cifre intere decimali. Gli zeri iniziali possono essere omessi (ma non è necessario ometterli).
Ricordare che gli zeri iniziali del numero dopo T devono essere omessi nella tabella utensili.
Per esempio:
T1234 indica che è programmato l'utensile 1234.
La programmazione delle T richiede l'arresto (vedere anche capitolo “Funzioni preparatorie G”
paragrafo “Funzioni G”).
La programmazione della T chiede al CN di comunicare alla logica di macchina quale è l'utensile
futuro, ma non provoca immediatamente il cambio utensile: il cambio utensile viene fatto con la
istruzione M6, che può essere programmata nella stessa riga oppure in righe successive.
All'accensione e a ogni inizio programma la descrizione dell'utensile montato sul mandrino viene
analizzata e i parametri programmati nella descrizione sono inizializzati di conseguenza.
Non è necessario che gli utensili siano inseriti in ordine crescente di T, anche se ciò è utile per
facilità di consultazione.
Esempio di sezione utensili:
:TL
T471#32 L100 R20(FRESA D40 HSS)
T472#32 L50 R30 (fisicamente è il 471, con correttori diversi)
T371#16
T12#27(PUNTA D10 HSS) L80 R5 S1000 F200
...
Per il corretto funzionamento del sistema, lo Z32 deve sempre conoscere quale utensile è
montato sul mandrino, anche passando da un programma all'altro e dopo uno spegnimento.
Poiché l'utensile che è montato sul mandrino può provenire dalla sezione globale o da una
qualsiasi delle sezioni locali, lo Z32 deve conoscere:
− il numero dell'utensile T
− il numero del file contenente la sezione da cui proviene l'utensile.

148 D. ELECTRON
CNC Z32 Programmazione Cap.4 - Utensili, Esecuzione riga ISO

Queste informazioni sono memorizzate dallo Z32 nella prima riga del file globale 127. per
esempio, se la prima riga della tabella contiene:
T12P3 significa che sul mandrino è montato l'utensile T12 proveniente dal programma 3.
Se non è contenuta l'informazione P... l'utensile è considerato proveniente dalla tabella globale.
La prima riga della tabella è aggiornata automaticamente dal CN ad ogni cambio utensile
effettuato: può essere modificata dall'operatore in caso di operazioni manuali sugli utensili.
Nel caso di scrittura ex novo della tabella utensili, occorre sempre inserire questa prima riga,
anche nel caso che il mandrino sia vuoto (consultare il costruttore della macchina utensile per il
numero utensile convenzionalmente assegnato all'utensile nullo: di solito T0 o T1).
Se manca la tabella utensili il CN dà allarme:
CN1D14 ERRORE PROGRAMMA
Se manca o è errata l'indicazione dell'utensile sul mandrino (1a riga tabella) oppure manca la
sezione utensili dalla quale proviene l'utensile sul mandrino il CN dà allarme:
CN2F14 UTENSILE
Se invece non esiste il file dal quale deve provenire l'utensile montato sul mandrino (per
esempio, la prima riga del file 127 è T10P40 e il file 40 non esiste) viene l'allarme:
CN0914 ERRORE FILE (file non esistente).
La sintassi della riga iniziale del file 127 che definisce l’utensile attivo, ammette solo le seguenti
strutture:
Tnn blanks 0DH
TnnPnn blanks 0DH
TnnPnnJnn blanks 0DH
Ogni altra struttura provoca errore utensile.
Per la descrizione del significato del parametro J vedere più avanti il paragrafo “Gestione delle
famiglie utensili”.
Dopo la prima riga e prima del ':TL' può essere inserita una descrizione qualsiasi, che viene
ignorata dallo Z32.

4.1.1 Gestione random


Lo Z32 permette di realizzare una semplice ed efficiente gestione 'random' dell'utensile. Per
questa prestazione sono usate le istruzioni di lettura e scrittura in memoria permanente (descritte
nel capitolo “Righe evolute”) nel sottoprogramma speciale associato alla M6.
Questo sottoprogramma è scritto dal costruttore della macchina utensile per il migliore
adattamento alle caratteristiche della macchina stessa.
Qui di seguito si dà un esempio di sottoprogramma in cui sono dettagliate solo le operazioni
rilevanti ai fini della gestione random.
Si è fatta l'ipotesi che l'utensile sul mandrino e quello nel magazzino siano scambiati tra loro
durante l'M6.
Per convenzione, l'utensile T0 è l'utensile nullo, ossia T0 rappresenta un posto vuoto, mentre il
posto 0 rappresenta il mandrino. Per esempio, T0#0 rappresenta il mandrino vuoto.
Nell'esempio che segue sono state omesse le istruzioni specifiche che dipendono dalla struttura
elettromeccanica del cambio.

D. ELECTRON 149
Cap.4 - Utensili, Esecuzione riga ISO CNC Z32 Programmazione

ATTENZIONE
Questo esempio è da considerarsi solo un esempio didattico destinato al
costruttore della macchina utensile. L'utente finale dovrà seguire le
istruzioni date dal costruttore.

SOTTOPROGRAMMA M6 A GESTIONE RANDOM%


... istruzioni iniziali di predisposizione
N10 !IF TA<>0;ERRORE! test di TA
//N11 !GON1000! in ricerca blocco salta a fine
...
N100 MC9999 segnala a logica cambio iniziato
.... scambia fisicamente gli utensili
N200 !:WS#=TB!:WT#=TA! aggiorna la tabella utensili
N201 T<T> conferma T per visualizzare
N202 M6 conferma M6
N203 MC9998 segnala a logica cambio completato
N1000 G26 fine sottoprogramma
NOTE:
N10 Qui TA deve essere sempre zero perché è il posto dell'utensile che è sul mandrino
N11 In ric. blocco il cambio non deve essere eseguito per evitare false segnalazioni di
cambio terminato (N203) e false scritture nel posto utensile (N200). Ciò non provoca errori
nel numero progressivo perché tutto il sottoprogramma speciale conta 1 sia in esecuzione
che in ricerca blocco.
N100 La logica deve memorizzare MC9999 in un bit dell'area ritentiva per segnalare cambio
in corso e non completato. Il bit è resettato a N203. In caso di interruzione di cambio, dovrà
essere richiesto l'intervento attento dell'operatore, per ripristinare la corrispondenza tra
quanto scritto nella tabella utensili e la situazione fisica della macchina. MC9999 è solo un
esempio: possono essere usate altre M, G100, PAL[ ] (indice>255), ecc.
N200 Scrive i nuovi posti utensili. Per il CN (che non ha occhi!) poiché non è ancora stato
confermato M6 (N202) l'utensile sul mandrino è ancora il vecchio utensile, e l'utensile
programmato è il nuovo utensile. Questa istruzione perciò:
− mette il posto del nuovo utensile (salito sul mandrino) nel posto del vecchio utensile
(tornato nel magazzino)
− mette zero (N10 TA=0) nel posto del nuovo utensile (salito sul mandrino)
N201 La descrizione di T presentata sul video (è stata presa al momento della
programmazione di T... nel programma principale) ha ancora il posto del vecchio utensile,
cioè non contiene posto zero (che c'è da N200). Con questa istruzione sul video viene la
rappresentazione corretta (posto zero)
N202 Conferma M6 per far acquisire al CN la nuova situazione. Con questa istruzione è
anche aggiornata la prima riga della tabella utensili (T...P...).
N203 Segnala il completamento cambio. Questa istruzione non deve essere eseguita in
ricerca blocco (altrimenti una eventuale segnalazione di cambio interrotto viene perduta) e
deve seguire M6 (altrimenti una eventuale interruzione proprio in mezzo lascia la macchina
con gli utensili scambiati ma la tabella utensili non aggiornata.

150 D. ELECTRON
CNC Z32 Programmazione Cap.4 - Utensili, Esecuzione riga ISO

4.1.2 Utensili multiuso e gestione random


Col cambio random descritto al paragrafo precedente non è possibile definire con due 'T'
diverse lo stesso utensile fisico per cambiarne i correttori: in questo caso infatti sarebbe aggiornato
il solo posto dell'utensile programmato e non degli altri fisicamente uguali.
La soluzione più semplice a questo problema è che sia l'utente finale a organizzare la
descrizione utensile e il programma in modo da gestirsi l'uso multiplo.
Per esempio, sia l'utensile multiplo T100 definibile con due correttori:
1) L100 R30
2) L150 R20
L'utensile viene così descritto:
T100#... L100 R30 LX150 RX20
Quando viene richiamato l'utensile con correttori 100/30 non dovrà essere fatta altra operazione,
in quanto L100 R30 sono già stati letti nella descrizione utensili.
Se si vuole invece richiamare la coppia 150/20 si deve programmare:
...
T100M6
L<LX> R<RX>
...
Con la gestione, molto semplice, sopra descritta, L e R nella descrizione utensile sono sempre
quelli relativi a una coppia di correttori: eventuali macroistruzioni che leggono o scrivono (per
esempio con :R o :W) nei parametri 'L' e 'R' dell'utensile funzionano solo con questa coppia. Se si
vuole eliminare questa limitazione si può fare una gestione appena più complessa:
TABELLA UTENSILI
...
T100#... L0 R0 LX100 RX30 LY150 RY20
...
PROGRAMMA
...
T100 M6
L<LX>R<RX>
... in questa parte di prg. sono attivi LX e RX
!:WSLX=L,RX=R! a fine uso, ripristina LX e RX
T200 M6
...
T100 M6
L<LY> R<RY>
!:WSL=L,R=R!
... qui sono attivi LY e RY
!:WSLY=L,RY=R!
...
In altre parole, dopo aver cambiato l'utensile si attiva e si scrive nella descrizione utensile la
coppia desiderata. Prima di riporre l'utensile nel magazzino viene aggiornata la coppia di correttori
interessata con quanto scritto in L e R: in questo modo è salvato in MEMORIA PERMANENTE
anche il risultato di eventuali macroistruzioni che modifichino L o R.

D. ELECTRON 151
Cap.4 - Utensili, Esecuzione riga ISO CNC Z32 Programmazione

4.1.3 Gestione vita utensile


Le istruzioni eseguibili dallo Z32 consentono al costruttore della macchina utensile di realizzare,
nel suo sottoprogramma speciale di cambio utensile, la gestione della vita utensile.
Qui di seguito si dà un esempio di come può essere organizzata la gestione vita: il costruttore
della macchina utensile può però costruire gestioni diverse e meglio adatte ai suoi scopi: si rimanda
l'utente finale alle informazioni date dal costruttore.
La descrizione dell'utensile contiene il parametro US che rappresenta l'usura dell'utensile. Il
valore è 1000 per utensile nuovo, e scende verso zero con l'uso.
Il parametro US è aggiornato nella descrizione utensile ad ogni cambio effettuato: l'entità
dell'usura è decisa dal programmatore secondo la pesantezza della lavorazione.
Per esempio, se una lavorazione può essere ripetuta 120 volte prima che l'utensile sia da
sostituire, il programmatore dovrà specificare una usura di 8.34 (=1000/120). In questo modo lo
stesso utensile può essere impiegato per varie lavorazioni, ognuna delle quali incide sulla vita in
proporzione al proprio peso.
L'aggiornamento del parametro US nella descrizione utensili è fatto all'interno del
sottoprogramma speciale M6, tramite il parametro HU passato dal programma principale.
Quando un utensile è completamente usurato può essere sostituito da un altro presente sul
magazzino: nella descrizione dell'utensile usurato è contenuto il parametro TS che indica l'utensile
sostitutivo. Più utensili sostitutivi possono essere messi in catena. L'ultimo della catena ha TS=0.
Quando l'ultimo utensile della catena è completamente usurato il CN dà allarme.
TABELLA UTENSILI
...
T10#...R..L..TS11 US1000 può essere sostituito da T11
T11#...R..L..TS12 US905 in parte usurato sostituibile da T12
T12#...R..L..TS0 US1000 ultimo della catena di T10
...
T20#...R.. L.. TS0 US1000 non ha sostitutivo
...
PROGRAMMAPEZZO
...%
N1 HU0 T10 M6 lavoro con T10: 120 cambi esauriscono T10
N100 HU8.34 T30 M6
...
SOTTOPROGRAMMA SPECIALE M6
... ricerca utensili sostitutivi, anche in ric. blocco
N1 !:RT US=US! IF US>0; GO//N5! :RT TS=TS!
N2 !IF TS<=0; NON C'È SOSTITUTO!
N3 T<TS>
N4 !GON1! ripete in cerca di un utensile buono
//N5 !GON7! in ricerca blocco non aggiorna usura utensile
N6 !IF HU=0;EB! :RS US=US!US = US-HU! :WS US=US!
aggiorna stato usura utensile precedente
N7... continua con cambio normale

152 D. ELECTRON
CNC Z32 Programmazione Cap.4 - Utensili, Esecuzione riga ISO

4.1.4 Gestione delle famiglie utensili


Questa prestazione è dedicata soprattutto al costruttore della macchina utensile che la può
usare nei suoi sottoprogrammi speciali di cambio utensile.
E’ ora possibile la gestione di "famiglie" utensili, che sono formate da più utensili con lo stesso
"T". Per esempio ci potrebbero essere nella tabella utensili tre utensili della famiglia T4:
T4#8L10,3R4
T4#9L12R4,002
T4#10L11,76R4
...
La gestione delle famiglie utensili dal punto di vista utente contiene vari aspetti:
- riconoscimento dell'individuo nella famiglia
- programmazione della T col numero nella famiglia
- memorizzazione del numero in famiglia dell'utensile attivo
- ricerca del numero di individui di una famiglia
- accesso all'individuo da part-program con :R e :W
- modifica di parametri utensile da attività 4
- accesso all'individuo da DTO di attività 4 e 5
Riconoscimento dell'individuo nella famiglia
Il numero nella famiglia coincide con la posizione nella tabella utensili:
numero 1 = il primo
numero 2 = secondo ...
Programmazione della T e numero nella famiglia
La programmazione del numero nella famiglia si ottiene col parametro J, che deve essere
contenuto nella stessa riga dove è programmata T. Esempio:
T4 J2
Chiede la ricerca del secondo utensile della famiglia dei T4.
Perché il parametro J sia interpretato come numero nella famiglia non devono esserci altri
parametri nella riga, con esclusione delle M. Per esempio:
T4 J2 M6
Ricerca e cambio utensile del 2.o della famiglia T4
T4 G2 X10 Y0 I5 J0
Ci sono altri parametri (quote assi e I), quindi J non ha il significato di numero nella famiglia
(sarà eseguito un arco di cerchio)
T4 HX0 J2
C'è il parametro di sistema HX, quindi J2 non è interpretato come numero nella famiglia e ci
sarà un allarme di programmazione perchè J è interpretato come quota del centro che non è
ammessa da sola.
Se il parametro J non è programmato si ha il funzionamento compatibile con le versioni
precedenti: è riconosciuto il primo.
Il numero nella famiglia può' essere da 1 a 256.
Valori diversi danno errore parametri incompatibili, salvo il valore -1 che ha il significato speciale
di ricerca del numero di membri della famiglia.

D. ELECTRON 153
Cap.4 - Utensili, Esecuzione riga ISO CNC Z32 Programmazione

Valori frazionari sono arrotondati all'intero.


Se il numero nella famiglia è superiore al numero di membri si ha un errore utensile.
Ricerca del numero di individui di una famiglia
Per evitare allarmi di programmazione può' essere utile conoscere a priori quanti membri ci
sono in una famiglia. Ciò si ottiene specificando come numero nella famiglia -1:
T4 J-1
Richiede di riconoscere quanti membri ha la famiglia T4.
Il risultato della ricerca viene restituito nel parametro J.
La ricerca viene effettuata nella sezione utensili attiva (ossia nella stessa sezione in cui sarebbe
cercato il T programmato).
Se non ci sono utensili nella famiglia viene restituito J=0.
Memorizzazione del numero in famiglia dell'utensile attivo
L'utensile attivo è descritto in testa al file globale degli utensili (file 127 se processo zero)
insieme al programma origine. Esempio:
T4P127
significa che è attivo l'utensile T4 della tabella globale file 127.
Se l'utensile non è il primo nella famiglia viene scritta anche questa caratteristica in testa al file
globale:
T4P127J3
significa che è attivo il terzo utensile della famiglia T4 del file globale 127.
Se l'utensile è il primo della famiglia non viene scritto il parametro J, anche se la famiglia è
composta di più membri. Quindi:
T4P127
significa che è attivo il primo o unico utensile della famiglia T4 del file 127.
Accesso all'individuo da part-program con :R e :W
I campi di riga evoluta :R e :W accedono ai parametri contenuti nella descrizione utensile.
Si accede correttamente all'utensile programmato o all'utensile attivo anche se questi non sono
il primo membro della famiglia.
Modifica di parametri utensile da attività' 4
La modifica dei parametri utensile, per esempio:
4 ENTRA L:0
avviene regolarmente senza bisogno di operazioni speciali: l'utensile è quello attivo, e viene
regolarmente ricercato anche se non è il primo della famiglia.
Accesso all'individuo da DTO di attività 4 e 5
è possibile specificare il file origine dell'utensile e il suo numero nella famiglia, per esempio:
4 ENTRA DT42P127J2L+.1
J è seguito dal numero nella famiglia.

154 D. ELECTRON
CNC Z32 Programmazione Cap.4 - Utensili, Esecuzione riga ISO

4.2 SEQUENZA DI ESECUZIONE DI UNA RIGA ISO


Una riga di programmazione ISO può contenere molte operazioni elementari diverse.
Le varie operazioni elementari vengono eseguite in una sequenza ben definita, che dipende:
− dal tipo delle operazioni programmate
− dall'ordine in cui sono state programmate
Durante l'esecuzione di un programma, e per ogni riga ISO da eseguire, lo Z32 compie tre
passaggi successivi, che sono:
− lettura della riga
− analisi della riga
− esecuzione della riga
In fase di lettura la riga è letta e presentata sul video, senza altre elaborazioni.
Durante l'analisi delle entità programmate, vengono assegnati ai parametri i valori programmati,
vengono predisposte le 'G' e decodificate e memorizzate le 'M'.
Queste operazioni sono eseguite nella sequenza in cui sono incontrate: in caso di
programmazione di due entità contrastanti (per esempio G0 G1) rimane attiva l'ultima
programmata.
In questa fase non vengono impartiti alla macchina ordini esecutivi, ma vengono predisposte
tutte le condizioni per farlo.
Riesame delle entità e delle funzioni programmate nella riga, e invio alla macchina degli ordini
esecutivi delle stesse.
La sequenza di esecuzione non dipende più dall'ordine di programmazione, ma dalla natura
delle operazioni programmate.
L'ordine di esecuzione delle operazioni programmate è:
− esecuzione G36, G80, G84, G100, G101
− visualizzazione della feed (F)
− messa sotto controllo degli assi (G28)
− visualizzazione ed aggiornamento della speed (S)
− moto mandrino (M3M4)
− salto a sottoprogramma M speciale
− (non esegue eventuali altre operazioni programmate nella riga: il programma riprende
dal l'inizio della riga successiva)
− funzioni T, altre M, MA, MB, MC
− aggiornamento delle origini, delle compensazioni lunghezze e delle quote visualizzate
− moti assi (inclusi moti G61 e G62)
− sosta programmata (G4)
− abbandono di assi (G29)
− posizionamento mandrino (M19)
− stop mandrino (M5)
− cambio utensile (M6 se M6 è speciale non esegue eventuali altre operazioni
programmate nella riga: il programma riprende dall'inizio della riga successiva)
− M finali (M0, M1, M2)
− salto a sottoprogramma KG
− ritorno da sottoprogramma (G26) .

D. ELECTRON 155
Cap.4 - Utensili, Esecuzione riga ISO CNC Z32 Programmazione

156 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

CAPITOLO 5

5. RIGHE EVOLUTE - SALTI - CONDIZIONAMENTI -


READ/WRITE

5.1 RIGHE EVOLUTE


N...!... ...! Abbiamo visto che con le righe ISO si potevano ottenere tutte le funzioni di macchina.
Con le righe evolute, che non provocano direttamente nessuna funzione di macchina, si ottiene
un più flessibile controllo dello svolgimento del programma, la possibilità di eseguire salti di
istruzioni ecc.
Le righe evolute possono avere un numero di blocco (N...) come le righe ISO.
Le righe evolute si distinguono dalle righe ISO per il punto esclamativo che segue
immediatamente l'eventuale numero di blocco.
Una riga può essere o tutta evoluta o tutta ISO. Nella stessa riga quindi NON POSSONO
COESISTERE parti ISO e parti evolute.
Separatori Le righe evolute sono divise in 'campi', ognuno dei quali esegue una operazione elementare. I
;! vari 'campi' sono separati tra loro dal carattere '!' oppure ';'. La differente funzione del '!' e del ';' si
vedrà alla descrizione della funzione IF (vedere più avanti paragrafo “Condizionamenti”).

I vari campi sono eseguiti nello stesso ordine in cui sono scritti. Nei paragrafi che seguono si dà
il dettaglio delle istruzioni che possono costituire un campo di riga evoluta.

5.1.1 Definizione di parametri con calcolo di espressioni


Abbiamo visto che è possibile, durante la normale programmazione ISO, assegnare a un
parametro il valore che risulta dal calcolo di una espressione.
Segno Ciò è possibile anche in un campo di riga evoluta. In questo caso, dopo l'indirizzo del parametro
di ‘=‘ si deve inserire il carattere '=' e poi l'espressione. L'espressione può essere anche un semplice
valore numerico. Per esempio:
N14 !X=100! significa: assegna al parametro X il valore numerico 100
N14 !X=100-2*R! significa: assegna al parametro X il valore 100 meno il diametro
utensile (due volte il raggio).

D. ELECTRON 157
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

Si noti che in questo caso (contrariamente a quanto accade in una riga ISO) non si ha un
movimento dell'asse X alla quota 100 (o 100-2*R): l'effetto di questo campo evoluto è solo quello di
assegnare al parametro X il valore 100 (o 100-2*R).
Se successivamente, in una riga ISO, si programma X<X> , si ha una riconferma del valore
assegnato a X nella riga evoluta e anche il movimento fino al valore finale

5.1.2 Conversione cartesiane/polari e viceversa

!HX=..; Con il campo: !CP! si ottiene la conversione dei parametri HX e HY, rappresentanti due
HY=..; coordinate cartesiane, nei corrispondenti in coordinate polari HR (raggio) e HT (angolo
CP! trigonometrico in gradi).
Dopo questo campo HR e HT contengono il risultato, HX e HY rimangono invariati. Per esempio
dopo la riga:
N10!HX=1;HY=1;CP! si ottiene: HR = 1,4142... HT = 45
Con il campo: !PC! si ottiene la conversione inversa.
Per esempio dopo la riga:
N10!HR=10;HT=30;PC! si ottiene: HX = 8,6602... HY = 5
Non è necessario che HX, HY, HR, HT, siano programmati nella stessa riga che contiene CP o
PC: essi possono essere programmati o determinati con calcolo anche in righe precedenti, ISO o
evolute.

5.2 SALTI
Sono possibili cinque tipi di salto:
− salto a una riga senza ritorno (GON...)
− salto a una serie di righe con ritorno (GON...-N...)
− salto a sottoprogramma con ritorno (GOP...)
− salto ad una riga all’interno di un sottoprogramma (GOP…-N…)
− salto ad una serie di righe all’interno di un sottoprogramma (GOP…-N…-N…)
Il numero di riga o il numero di programma possono essere parametrizzati (vedi paragrafo
dedicato più avanti su questo capitolo).

5.2.1 Salto a una riga senza ritorno


Questa istruzione comanda allo Z32 di saltare a un'altra riga specificata. Per es.
N14 !GON64! fa saltare il CN alla riga N64.
Il numero di riga da ricercare deve essere ad inizio riga e deve essere scritto esattamente con la
stessa sequenza di caratteri con cui viene ricercato.
Per esempio:
%N0 X0 si deve ricercare come !GO%N0!
N 47G1... si dovrà ricercare con lo spazio intermedio: !GON 47!
/N38M6 si deve ricercare con !GO/N38!
Il salto alla riga indicata avviene immediatamente non appena viene eseguito il campo che
contiene il salto.
Per esempio:

158 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

N14!X=100;Y=-11,5!GON36!
viene eseguita nel seguente ordine: a) assegna al parametro X il valore 100 ; b) assegna al
parametro Y il valore -11,5 ; c) salta alla riga N36
N14 !GON36! X=100! Y=-11,5!
viene eseguita così: a) salta alla riga N36 ; b) non sono variati i parametri X e Y
Questa prestazione serve, come si vedrà dopo, per condizionare l'esecuzione di campi a
situazioni particolari.
Caso particolare di salto senza ritorno è la interruzione della esecuzione di una riga evoluta,
ottenuta col campo: !EB!
!EB! Quando viene incontrato questo particolare campo la esecuzione della riga viene interrotta e
end bloc l'esecuzione prosegue dalla riga successiva. Esempio:
...
N10!IFHA>=10;EB!GON5!
N11...
Se HA è minore o uguale a 10 viene eseguito lo EB e quindi il programma prosegue con la riga
N11, altrimenti viene eseguito il salto a N5. (Vedere anche paragrafo “Condizionamenti” più avanti.
Agli effetti del ritorno da serie di righe, la riga in cui viene eseguito EB è da considerarsi
completata (vedere prossimo paragrafo “Salto a una serie di righe con ritorno”).

5.2.2 Salto a una serie di righe con ritorno


Questa istruzione ordina allo Z32 di continuare l'esecuzione del programma con una serie di
righe specificate: dopo l'esecuzione dell'ultima riga specificata deve proseguire con la riga
successiva a quella in cui è contenuta questa istruzione. Esempio:
!GON120-N381!
chiede al CN di saltare alla riga 120 e di continuare l'esecuzione fino alla riga 381. Dopo aver
eseguito la riga 381 il CN deve proseguire dalla riga successiva a quella contenente questa
istruzione.
Dentro le righe richiamate possono esserci altri salti e altri richiami a serie di righe.
Non è necessario che il numero di riga fine sia maggiore del numero di riga inizio, purché la riga
fine sia raggiungibile partendo dalla riga inizio.
Se la riga fine contiene un salto (deve essere con un GO...) che viene eseguito il ritorno non
viene fatto.
Per esempio:
...
N10 G0 X0
...
N20 !HA=HA+1!IFHA<10;GON15!
...
N30 !GON10-N20!
N31...
Qui in N30 si ha una ripetizione delle righe da N10 a N20, e in N20 c'è un salto a N15
condizionato da un parametro: finche il salto della riga N20 viene eseguito non c'è il ritorno dalla
serie di righe N10-N20, ma quando il salto non viene più eseguito (HA è diventato 10) si ha il ritorno
a N31.

D. ELECTRON 159
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

L'uso di questa caratteristica è da considerare riservato a programmatori esperti: in un primo


tempo si consiglia di evitare salti nella riga fine di una serie di righe. Lo stesso programma
precedente poteva essere più chiaramente scritto:
...
N10 G0 X0
...
N20 !HA=HA+1!IFHA<10;GON15!
N21
...
N30 ! GON10-N21 !
N31 ...
L'aggiunta della riga N21 vuota, da usare come riga fine, toglie ogni possibile equivoco sul
comportamento dello Z32. Se invece la riga fine, contiene un salto implicito (per esempio un ciclo
fisso o una M speciale), il ritorno dalla serie di righe viene fatto dopo l'esecuzione del
sottoprogramma di servizio. Per esempio:
...
N9 G27C1
N10 G0 X50 Y10
...
N20 X65 Y20
...
N29 G27C4
N30 !GON10-N20!
N31 ...
La riga N20 contiene un salto implicito al ciclo fisso (è il c.f. 1 al primo giro e il 4 al secondo
giro): al secondo giro il salto al sottoprogramma ciclo fisso viene regolarmente eseguito giro e alla
fine del ciclo fisso si ha il ritorno alla riga N31.
10 livelli È lecito che la riga fine coincida con la riga inizio (viene eseguita una sola riga).
di I salti con ritorno possono essere fatti all'interno di altri salti con ritorno fino ad una profondità di
nesting 10 livelli. Oltre il limite consentito lo Z32 dà allarme: CN2E14 TROPPE SUBROUTINES.
Sono da considerare salti con ritorno e quindi consumano un livello:
− GON...-N... salto a serie di righe
− GOP... salto a sottoprogramma
− M speciale
− G27C... ciclo fisso di sistema o utente
− G27P... sottoprogramma permanente
Il numero di livello è scaricato di 1 ad ogni ritorno da sottoprogramma o serie di righe, per cui è
normalmente impossibile raggiungere il massimo consentito.
La G110 (macrofunzioni di svuotatura) consuma due livelli.
Nell'esempio che segue è indicato in pratica come si possono usare richiami di serie di blocchi.
Scopo del programma è di scavare una finestra rettangolare con percorso del centro fresa come
in figura. Devono essere fatte due passate con incremento in Z di 5 mm.

%
N0 G25XYZ T100 M6 in T100 sono già definiti F200 S1000

160 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

N1 Z0 M3 posiziona Z e start mandrino


N2 G0 X0 Y0 posiziona XY a sinistra in basso
N3 G1 Z<Z-5> prima discesa in Z
N4 Y<Y+10> primo incremento in Y
N5 X 100 prima passata in X+
N6 Y<Y+10> secondo incremento in Y
N7 X0 seconda passata in X-
N8 !GON4-N7! ripete
N9 Y0 rifila lato sinistro
N10 X100 completa lato inferiore
N11 Y40 rifila lato destro
N12 !GON2-N11! completa seconda passata
N13 M2 fine
Si noti che durante l’esecuzione del salto di N12 si incontra un altro salto con ritorno: ciò
significa che il programma dell'esempio ha una profondità di due livelli.

Si faccia attenzione che il ritorno da serie di righe è effettuato solo se la riga fine non contiene
un salto esplicito che deve essere eseguito (con 'GO').
L'istruzione 'EB' e i salti impliciti a sottoprogrammi (cicli fissi, M speciali ...), anche se eseguiti
non impediscono il ritorno da serie di righe.
Esempio di programma errato:
N1!GON10-N30!
...
N10X0
N20Y10
N30!GON56!
...
Il ritorno dalla riga 30 non viene mai effettuato perché la riga viene interrotta per un salto a
un'altra riga.

D. ELECTRON 161
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

5.2.3 Salti a sottoprogrammi


Con questo tipo di istruzione lo Z32 abbandona momentaneamente il programma in corso per
!GOP10! eseguire un altro programma inserito nella memoria, ossia è 'richiamato' un sottoprogramma.
Il programma chiamato deve iniziare col solito % e deve terminare con G26 (fine
sottoprogramma).
Il % iniziale del sottoprogramma non fa il reset delle condizioni memorizzate (origini, parametri,
'G', 'M' ecc.): ha il solo effetto di segnalare che è terminato un eventuale titolo del sottoprogramma
e che iniziano le istruzioni operative.
Esempio:
!GOP96!
Salta al sottoprogramma 96 della memoria, lo esegue e alla fine, dopo il G26 che chiude il
sottoprogramma 96, torna ad eseguire la riga successiva.
10 livelli L'istruzione !GOP...! consuma un livello di salto con ritorno: sono possibili fino a 10 livelli di salto,
di comprensivi di:
nesting − GON...-N...
− M speciali
− G27C... cicli fissi di sistema e utente
− G27P... sottoprogrammi permanenti
L'utilità di questo tipo di istruzione è strettamente collegata alla programmazione parametrica.
Si possono infatti mantenere in memoria una quantità di sottoprogrammi standard (da semplici
figure geometriche a più complesse lavorazioni) con alcuni parametri non definiti per adattarsi alle
varie condizioni in cui i sottoprogrammi verranno usati.
Sarà sufficiente che il programmatore definisca i parametri nel suo programma principale e che
poi richiami il sottoprogramma voluto, senza scrivere nuove istruzioni ed utilizzando invece
programmi già provati e quindi esenti da errori.
Nell'esempio che segue è descritto un semplice sottoprogramma per la rifilatura esterna di un
rettangolo. I parametri da passare al sottoprogramma sono:

XA YA lati del rettangolo


XB YB quote del vertice in basso a sinistra
ZA quota di lavoro terzo asse
Si ammette che il programma principale arrivi alla istruzione che richiama il sottoprogramma con
l'utensile giusto sul mandrino e che quindi siano già definiti i parametri R (raggio fresa), F (feed), S
(speed).
Il sottoprogramma è generico per qualsiasi terna di lavoro (non necessariamente XYZ).

162 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

Programma principale:
...
N20 XA50 YA80 XB0 YB0 ZA-20 si definiscono i parametri
N21 !GOP90!
...
Sottoprogramma 90:
%N1G0AA<XB-R>AB<YB-R> posiziona sul vertice, compensa l'utensile
N2 G1 AC<ZA> scende col terzo asse
N3 AB<AB+YA+2*R> rifila lato sinistro
N4 AA<AA+XA+2*R> rifila lato superiore
N5 AB<YB-R> rifila lato destro
N6 AA<XB-R> G26 rifila lato inferiore e fine

5.2.4 Parametrizzazione dei salti a riga e a sottoprogramma


Le istruzioni Z32 che permettono salti di riga e di programma sono normalmente:
!GOP4! salto a sottoprogramma 4 con ritorno
!GON45,3! salto alla riga N45,3 senza ritorno
!GON33-N45! salto alla serie di righe N33 - N45 con ritorno
Dalla versione software del 5.1.93 i numeri di riga e di sottoprogramma possono essere anche
programmati con una espressione parametrica. per esempio:
!GOP<4+HA>!
!GON<33+HB*2>!
!GON<18,5+HC/4>-N60!
!GON<18+HC>-N<36+HC>!
!GON18-N<36+HA>!
Il nuovo modo di programmare il numero destinazione è caratterizzato dalle parentesi acute
aperta e chiusa che racchiudono l'espressione parametrica. Senza parentesi acute è valido il modo
vecchio.
Qualsiasi espressione ammessa dallo Z32 può essere contenuta tra le parentesi acute.
Nel caso di GOP il risultato dell'espressione viene preso in valore assoluto e arrotondato
all'intero più vicino.
Nel caso di GON la riga destinazione deve iniziare con "N" seguito dal numero di riga, senza
spazi né iniziali né intermedi.
Se il risultato dell'espressione è frazionario viene arrotondato alla 3.a cifra decimale per risultati
fino a 4 interi e alla 2.a cifra decimale fino a 5 interi. Il carattere che separa gli interi dai decimali è
la virgola (se la riga destinazione ha il punto decimale non viene trovata).
Gli zeri iniziali prima della virgola e finali dopo la virgola sono soppressi. Se il risultato
arrotondato ha tutti zeri dopo la virgola anche la virgola decimale è soppressa.
Gli esempi che seguono mostrano alcune delle combinazioni possibili.
Salto programmato Riga destinazione
!GON<100>! N100
!GON<100/3>! N33,333

D. ELECTRON 163
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

!GON<10000/3>! N3333,333
!GON<1000*100/3>! N3333,33
!GON<100+.001/10>! N100
!HA13!GON<48+HA>! N61

5.2.5 !GOP..-N..! e !GOP..-N..-N..!


È possibile eseguire un salto a un sottoprogramma specificando il numero di riga iniziale o
anche un numero di riga iniziale e finale.
Queste prestazioni possono facilitare la scrittura di macro.
Sintassi:
!GOPx-Ny!
!GOPx-Ny-Nz!
Dove x è il numero di programma a cui saltare, y è il numero di riga da cui deve iniziare
l'esecuzione, z è il numero di riga a cui deve terminare l'esecuzione.
I tre valori x y z sono numeri oppure, se racchiusi tra parentesi acute, risultato di espressioni.
Se y e z sono programmati con espressioni ci sono le solite limitazioni sulla programmazione di
N nelle righe destinazione:
− non devono esserci spazi o altri caratteri iniziali
− non devono esserci spazi tra la N e il numero di riga
− per separare i decimali deve essere usata la virgola e non il punto
− i decimali non devono essere più di 3
Se P è programmato con espressione il numero deve essere intero positivo. Se non è intero il
numero è arrotondato all'intero più vicino.
Esempi:
!GOP3-N35!
!GOP3-N35-N82!
!GOP<HX>-N<HY>-N<HZ>!
!GOP<1+HA>-N<(HX+42)/8>-N<HY*2>! (si spera che così non si usi mai!)

5.2.6 Campo G26, fine sottoprogramma per DNC


Con il campo: “G26”, del tutto identico al G26 di riga ISO, che quindi determina la fine del
sottoprogramma in corso con ritorno al programma chiamante si risolve un particolare problema in
DNC.
Si ha un programma molto lungo, da eseguire quindi in DNC. Il programma deve poter essere
interrotto in punti determinati se la logica di macchina lo richiede. La logica di macchina fornisce il
parametro PAL[5]=64 se il programma deve essere interrotto.
Nel part-program da eseguire in DNC si scriverà:
...
!IF PAL[5]=64;G26!
... (continua il DNC se PAL[5] diverso da 64)
oppure:
!IF PAL[5]<>64;EB!G26!
... (continua il DNC se PAL[5] diverso da 64)

164 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

Come per i salti GO... se la G26 viene eseguita i campi successivi sono ignorati, e la riga non
viene riconosciuta come riga finale di un salto GON...-N...
È obbligatorio che il campo G26 termini col punto esclamativo e non contenga spazi, altrimenti
non viene riconosciuto e si ha un errore programma.

5.3 CONDIZIONAMENTI
Con questa istruzione si ordina allo Z32 di eseguire o non eseguire i successivi campi separati
da ';' fino al primo '!', a seconda che le condizioni specificate siano o no verificate.
Sintassi:
!IF (espr.1)<=>(espr.2);(campo A);(campo B);...!(campo C)!
Che significa: se il valore dell'espressione 1 è minore, uguale o maggiore (possono essere
usate una o due condizioni) del valore dell'espressione 2, allora continua ad eseguire normalmente
il prossimo campo (A), altrimenti salta fino al primo punto esclamativo e prosegui col campo
successivo (C).
Esempi:
N12 !IF X >= 3;GON30!
Se X è maggiore o uguale a 3 salta alla riga N30, altrimenti prosegui con la prossima riga (non
ci sono altri campi successivi).
N12!IFAA<>2;GON30!GON47!
Se AA è diverso (maggiore o minore) da 2 salta alla riga N30, altrimenti salta alla N47.
N12!XA=XA+1!IFXA>5;XA=5!
Incrementa XA di 1; ma se il risultato è maggiore di 5 , metti XA=5.
N12 !IF R=5;EB! R=R-1,5;IF R<5 ;R=5!GON1-N11!
Se R è 5 allora prosegui con la prossima riga (EB), altrimenti decrementi R di 1,5: se il risultato
è minore di 5 riporta R al valore di 5, poi ripeti le righe da 1 a 11 col nuovo R. Questa riga permette
di ripetere una serie di righe col parametro R decrescente in passi di 1,5 a partire dal suo valore
originario, limitando R a un minimo di 5. Dopo l'ultima passata con R pari a 5 prosegue.
N12!IFX<10;IFY<10;EB!GON63!
Se X è minore di 10 E ANCHE Y è minore di 10 continua, altrimenti salta alla riga 63.
N1 X10
...
N10 !R=R-1!IF R = 5;GON3!
...
N20 !GON1-N10!
Ripeti le righe da 1 a 10. Notare che la riga fine ha un salto, condizionato a R>=5: il ritorno dalla
riga 10 è fatto solo quando il ciclo è completato, ossia quando non viene eseguito il salto GON3
perché è diventato R<5.

ATTENZIONE
La condizione di '=' è verificata se i due risultati sono identici fino
all'ultimo decimale. Poiché le necessarie approssimazioni di calcolo
possono portare a errori sugli ultimi decimali, si consiglia sempre di
usare, per quanto possibile, le condizioni '<=' o '>=' al posto del semplice
'='.
Per esempio:

D. ELECTRON 165
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

...
N10 Z10
N11 ...
...
N20!Z=Z-0.1!IFZ=0;GON30!
N21 ...
N22 ! GON11 !
...
N30 ...
Nella riga N20 è usata la condizione Z=0 per il salto a N30, ma il programma non funziona
perché ci sono le approssimazioni. 0.1 in binario (lo Z32 esegue tutti i calcoli in binario) è un
numero periodico e quindi approssimato: sottratto 100 volte a 10 può non dare esattamente zero.
Il modo giusto di programmare è di mettere nella riga N20 la condizione minore o uguale che
viene sempre trovata.

5.4 LETTURA E SCRITTURA IN MEMORIA PERMANENTE


Lo Z32 possiede una memoria di lavoro e una memoria permanente (spesso chiamata anche
CMOS) mantenuta alimentata da una batteria tampone.
La memoria di lavoro contiene i dati elaborati dal calcolatore nella esecuzione del programma
assegnato.
La memoria permanente invece contiene tipicamente i dati scritti dall'utente per passare ordini e
informazioni al calcolatore.
I dati contenuti nella memoria di lavoro sono continuamente aggiornati dal calcolatore seguendo
l'evoluzione dei valori programmati, ma vengono perduti in caso di mancanza dell'alimentazione.
I dati in memoria permanente invece non si perdono a macchina spenta e vengono tipicamente
aggiornati dall'utente.
Il microprocessore, durante l'esecuzione del programma, legge ordinatamente i dati contenuti
nella memoria permanente, li elabora e li trascrive nella memoria di lavoro. Per esempio, per
eseguire la istruzione di programma:
HA150
il calcolatore legge i caratteri "HA150" contenuti nella memoria permanente ed annota il valore
150 nella casella assegnata al parametro HA della memoria di lavoro.
I parametri descritti nel capitolo dedicato ai parametri sono quelli della memoria di lavoro: essi
sono tutti inizializzati con valore zero ad ogni reset, contengono i valori via via elaborati durante
l'esecuzione del programma e si perdono a macchina spenta.
Esiste la possibilità nella programmazione dello Z32 di andare a leggere i valori di parametri
scritti nella memoria permanente (come caratteri alfanumerici in programmi o tabelle) e di trasferirli
nelle caselle dei parametri di lavoro.
Ciò si ottiene con un campo di riga evoluta. Con l'esecuzione di questo campo lo Z32 rende
uguale il parametro memorizzato in memoria permanente e il parametro di programma in esso
indicati.
La sintassi generale del campo è illustrata in figura.
Nel caso di ':R' viene letto da memoria permanente nel parametro di programma-pezzo.
Inversamente, nel caso di ':W' viene scritto in memoria permanente da parametro oppure da
espressione matematica di programma-pezzo (che nel caso più semplice può essere una
costante).

166 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

La memoria permanente interessata può essere:


− sezione parametri
− sezione origini
− un parametro della descrizione utensile programmato (T)
− un parametro della descrizione utensile su mandrino (S)
Il nome del parametro del programma-pezzo può essere a 1 o 2 caratteri (il secondo non
numerico), oppure i parametri di sistema DDL e DDR, con le regole descritte nel paragrafo relativo
ai parametri. Quello della memoria permanente è sempre a 2 caratteri se si tratta di parametri o
origini, mentre può essere a 1 o 2 caratteri, oppure i parametri si sistema DDL e DDR se si tratta
della descrizione dell'utensile.

Se non esiste nella sezione interessata il parametro indicato, il CN dà errore programma


(CN1D14). Invece se non esiste il parametro di lavoro nella memoria del programma-pezzo esso
viene creato con valore zero.
Il nome del parametro in memoria permanente e del parametro in memoria di lavoro possono
essere uguali o diversi (ricordarsi che in memoria di lavoro il nome del parametro non può
contenere numeri).
Il massimo numero scrivibile è 999999,999 (sei cifre intere e tre decimali) ; se il numero da
scrivere è superiore al massimo viene scritto il massimo.
Esempi:
!:ROX1=HA! legge OX1 nel parametro HA
!HA=50!:WOX1=HA! fa OX1=50
!:WOX1<50>! anche questa espressione fa OX1=50
!:ROX1=HA!HA=HA+5!:WOX1=HA! sposta l'origine OX1 di +5mm
!:ROX1=HA!:WOX1<HA+5*X>! come sopra
!:WTL<50,5>! fa 'L' dell'utensile program.=50,5
Una operazione di scrittura in memoria permanente è composta di un certo numero di
operazioni, che possono essere interrotte da un reset o da una caduta della tensione di
alimentazione. In questo caso nel file interessato, subito dopo l'indirizzo del parametro lasciato non
completo, la riga viene lasciata spezzata in due: ciò genererà un errore (CN...) in caso di
successivo uso del parametro memorizzato in memoria permanente. Sarà cura dell'operatore
ripristinare il parametro corretto in memoria.

D. ELECTRON 167
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

5.4.1 Letture e scritture multiple


Più parametri possono essere letti o scritti con un solo campo di riga evoluta: le varie coppie di
nomi di parametri da uguagliare sono separate dal carattere ','.
Esempi:
!:RPH1=HA,H2=HB,H3=HC!
legge da sez. parametri H1, H2, H3 in HA, HB, HC
!:WSL=L,R=R!
scrive nella riga utensile sul mandrino i parametri L e R

5.4.2 Origine attiva


Soprattutto in sottoprogrammi di uso generale, può essere utile leggere o scrivere l'origine attiva
di un dato asse senza conoscere quale essa sia, ossia senza conoscerne il carattere identificatore.
Se al posto del carattere identificatore si programma il carattere '*' lo Z32 lo interpreta come
'origine attiva’.
Per esempio:
!:ROX*=HA!
legge l'origine attiva sull'asse X, per es.OX2 e la carica in HA
!:ROX*=HA!:WOX*<HA-1>!
sposta l'origine attiva dell'asse X di -1mm
Si noti che, se dopo aver attivato una origine, si cambia la sezione attiva delle origini, l'origine
programmata resta quella della vecchia sezione, ma le origini lette e scritte con :R e :W sono quelle
della nuova sezione, anche se si legge o scrive con '*'. Esempio:
...
N10 G37OG OX1
N11 G37OL
N12 !:ROX*=HA!
...
Nel parametro HA viene scritto il contenuto della origine LOCALE X1, mentre è attiva l'origine
GLOBALE X1.

ATTENZIONE
La scrittura di sezioni locali di parametri-origini-utensili da part-program
non deve essere fatta se sulla stessa sezione locale possono agire più
part-program contemporaneamente.

5.4.3 Posto utensile


La descrizione dell'utensile contiene, dopo il carattere '#', un numero di max. due cifre che
identifica il posto. Questo numero non è un parametro e quindi non è normalmente accessibile al
programmatore. Esso può però essere trasferito in e da un parametro mettendo il carattere '#'
come nome del parametro in memoria permanente.
Per esempio:
!:RT#=HA!:RS#=HB!
legge nel parametro HA il posto dell'utensile programmato, e in HB il posto dell'utensile sul
mandrino

168 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

È possibile modificare il posto dell'utensile con:


!:WS#=HA!
modifica il posto dell'utensile sul mandrino.

ATTENZIONE
La scrittura di sezioni locali di parametri-origini-utensili da part-program
non deve essere fatta se sulla stessa sezione locale possono agire più
part-program contemporaneamente.

ATTENZIONE
La modifica del posto utensile è in generale una operazione da riservare al
costruttore della macchina utensile nei suoi sottoprogrammi speciali.
Una errata modifica del posto utensile può portare a collisioni al momento
del cambio.

5.4.4 Lettura e scrittura in ricerca blocco


In ricerca blocco la lettura e la scrittura in memoria permanente sono eseguite normalmente. Ciò
può portare a falsi giri di programma, nel caso che si leggano parametri modificati durante
l'esecuzione precedente.
Esempio:
N1!:RPHA=HA!IFHA=10;GON100!
N2!:WPHA<10>!
...
N100
...
M2
In questo esempio all'istruzione N1 il programma fa uso di quanto contenuto in HA per saltare o
no alla riga N100. Alla riga N2 il contenuto di HA in memoria permanente è modificato per qualche
ragione. Se l'esecuzione è interrotta tra N2 e N100, non sarà più possibile in ricerca blocco
riprendere il programma interrotto perché alla riga N1 salterà immediatamente alla riga N100.
Se un programma deve essere interrotto e ripreso in un punto qualsiasi con minimo lavoro per
l'operatore, il programma stesso dovrà contenere una traccia di quanto trovato in memoria
permanente.
Si potrà costruire una struttura simile a quella illustrata al capitolo “Prestazioni speciali”
paragrafo ‘Ricerca blocco con movimenti di misura’.

5.4.5 Istruzioni :C e :S (estensioni delle istruzioni :R e :W)


Le istruzioni :R e :W consentono di leggere e scrivere da part-program parametri di CMOS
(origini, parametri, dati utensile).
Le istruzioni :C e :S, che mantengono la stessa sintassi delle istruzioni :R e :W, forniscono una
migliore gestione delle eccezioni e quindi sono più adatte e flessibili per la scrittura di cicli fissi e
macro.
Entrambe queste istruzioni danno l’esito dell'operazione nel parametro HX (non utilizzato dalle
istruzioni :R e :W), riservando l'errore programma (CN1D14, il cursore punta dopo l'errore) solo ad
alcuni casi.
Istruzione :C (simile alla :R)

D. ELECTRON 169
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

Esempio:
!:CPH1=HA!
richiede di leggere, dalla sezione parametri, il parametro H1 e trasferirlo nel parametro di part-
program HA. Se il parametro da leggere non è trovato, il parametro da scrivere non viene
modificato.
Se si legge l'origine base viene errore CN1D14, esempio:
!:COX0=HA!  errore CN1D14
Se la destinazione della lettura è lo stesso parametro HX usato per l'esito viene errore CN1D14,
esempio:
!:COX1=HX!  errore CN1D14
Negli altri casi il valore di HX dopo l'istruzione fornisce l'esito dell'istruzione, con questa codifica:
- se HX=0 il parametro richiesto non è stato trovato (:R darebbe errore CN1D14)
- se HX=1 il parametro richiesto è stato trovato e letto regolarmente
- se HX=2 il parametro richiesto è l'origine attiva ma è attiva l'origine base, la lettura non è stata
fatta ed il parametro destinazione rimane invariato. Esempio:
!:COX*=HA!  se è attiva l'origine base torna con HX=2 e HA inalterato
Se l'origine è stata regolarmente programmata ma è esclusa (sospesa) per effetto della G53
l’esito dell’istruzione è HX=1 ed il valore letto è quello dell’origine sospesa.
Con l’istruzione “:CT” è possibile leggere un parametro da un utensile nella tabella attiva. Per
fare questo è necessario specificare il numero dell’utensile da cercare in tabella, o con un numero
(es. T3) o tramite una espressione (es. T<HA+1>).
HA19
!:CT<HA+1>US=HB!
Legge nella tabella attiva dall’utensile T20 il valore del parametro US e lo mette nel parametro di
lavoro HB.
Istruzione :S (simile alla :W)
Ha la stessa sintassi dell'istruzione :W ma si può applicare solo all'utensile programmato (:ST…)
e all'utensile sul mandrino (:SS…). Esempio:
!:STCU=HA!
richiede di scrivere nella descrizione dell'utensile programmato, il parametro CU, prendendo il
valore dal parametro di part-program HA.
Se si richiedono operazioni diverse viene errore CN1D14, per esempio:
!:SOX1=HA!  errore CN1D14
!:SPHZ=HA!  errore CN1D14
Se si usa come sorgente della scrittura il parametro HX viene errore CN1D14, esempio:
!:STTS=HX! viene CN1D14
Negli altri casi la scrittura viene eseguita ed il valore di HX fornisce l'esito dell'istruzione, con
questa codifica:
- se HX=0 il parametro non esisteva nella descrizione utensile ed è stato aggiunto in coda
- se HX=1 il parametro esisteva già e quindi ne è stato solo modificato il valore

170 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

5.5 ALTRI

5.5.1 Funzione :L - per caricare/scaricare files su disco


La funzione :L (L come Load) permette di caricare in modo veloce part-program residenti su
disco nella memoria operativa dello Z32.
La sintassi del comando, che è un campo di riga evoluta, è:
!:L(numero file Z32)-(nome completo file su disco)!
Esempio:
!:L 10 -C:\Z32\PPG\OP3244.PPG!
che richiede di caricare nel file 10 di Z32 il file di PC che si trova col nome completo
C:\Z32\PPG\OP3244.PPG.
Alcune regole di scrittura:
I delimitatori di campo di riga evoluta possono essere sia il carattere '!' sia il carattere ';'.
Prima e dopo ':L' possono esserci un numero qualsiasi di blank.
Il numero file da installare deve essere compreso tra 1 e 109 inclusi, altrimenti viene CN1D14
ERRORE PROGRAMMA.
Il numero file può essere il risultato di una espressione. Esempio:
HA20
!:L<HA+1>-\Z32\PPG\FPROV.PRG!
Il file FPROV.PRG che sta nella directory \Z32\PPG viene caricato nel file n. 21.
Se il risultato dell'espressione è frazionario viene arrotondato all'intero più vicino. Per esempio:
HA13
!:L<HA/3+30>-\Z32\PPG\FPROV.PRG!
Il file FPROV.PRG che sta nella directory \Z32\PPG viene caricato nel file n. 34.
Il file da installare non può essere il programma o sottoprogramma in corso, né un programma o
sottoprogramma al quale si dovrà tornare.
Per esempio, se siamo nel sottoprogramma 10, che è stato chiamato da sottoprogramma 5, che
è stato chiamato dal programma principale 1, non sarà possibile caricare i programmi 1, 5 e 10.
Invece è lecito (è lo scopo del :L) caricare il sottoprogramma 10 mentre si sta eseguendo il
programma 1, e poi eseguire il 10 come sottoprogramma. Per esempio è lecita questa sequenza,
inserita per esempio nel programma principale 1:
!:L 10 -C:\PPG\OP3244.1!GOP10!
!:L 11 -C:\PPG\OP3244.2!GOP11!
!:L 10 -C:\PPG\OP3244.3!GOP10!
!:L 11 -C:\PPG\OP3244.4!GOP11!
che può servire per richiamare da disco un programma lungo, sezionato in 4 parti.
Tutti i caratteri stampabili tra il carattere '-' e il terminatore del campo (';' o '!'), inclusi eventuali
blank, sono considerati come nome completo del file su disco.
Nel nome file non possono essere compresi:
- il carattere '$' che riconcatena la riga con la seguente
- i terminatori ';' e '!'

D. ELECTRON 171
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

- caratteri con valore inferiore a 20 hex o superiore a 7f hex che danno CN1D14 ERRORE
PROGRAMMA
Sul nome file non viene fatto un controllo sintattico, ma solo alcuni controlli formali: deve essere
terminato regolarmente (anche il fine riga senza terminatore non è ammesso) e deve avere un
numero di caratteri tra 1 e 80 compresi.
Il file sul PC deve essere un normale file ascii (editabile con qualsiasi word-processor che generi
un file senza caratteri di formattazione testo), di lunghezza non superiore a 64k. Il programma DOS
di supporto provvede a fare le conversioni necessarie da formato ascii PC a formato Z32.
Il modo di caricamento del programma messo in atto dal programma DOS di supporto è un
modo particolarmente veloce (si possono scrivere qualche decina di kbyte/secondo) ma per questo
c'è un prezzo da pagare: il file introdotto nello Z32 non è permanente, ossia non permane dopo lo
spegnimento e riaccensione del PC. D'altra parte, essendo il file permanente su disco la limitazione
appare non molto importante.

ATTENZIONE
È possibile editare (con attività 5) un file introdotto con :L, ma i risultati
sono validi solo finché il CN resta alimentato: non è garantito il risultato
se si spegne e si riaccende il PC, il file risulta sempre nullo.
Sono stati aggiunti i seguenti messaggi errore relativi a :L:
CN4E14 ERRORE :L FILE SU DISCO
Segnala che il programma DOS ha trovato un errore di lettura nell'accesso al file selezionato.
Non c'è il dettaglio preciso dell'errore, che può essere di varia natura: file o directory inesistente,
disco non pronto, errore di accesso al disco .... È compito dell'operatore rimuovere l'errore.
CN4F14 ERRORE :L FILE Z32
Segnala che Z32 dà errore nella scrittura del file. Anche qui non c'è dettaglio preciso. L'errore
può derivare da varie cause: memoria piena, file impegnato nello Z32, errore di scrittura .... Anche
in questo caso è compito dell'operatore rimuovere l'errore.
CN5014 ERRORE :L SCONOSCIUTO
Segnala un malfunzionamento nel colloquio tra Z32 e il programma di supporto. Se il
programma DOS è corretto questo tipo di errore non deve mai presentarsi.

Attenzione nel caso di multiprocesso


I files di Z32 sono una risorsa comune a tutti i processi attivi, e quindi il file che viene caricato
con :L può essere usato anche da processi diversi da quello che chiede il caricamento. Lo Z32,
prima di caricare il file, controlla che in quel momento il file non sia impegnato (sia come
programma principale che come sottoprogramma) in nessuno dei processi attivi (se è impegnato
dà errore CN 4F14), ma non può prevedere le successive evoluzioni. È compito del programmatore
tenere conto dell'uso del file da caricare nei vari processi.

Attenzione alla sequenza dei programmi caricati


È noto che Z32 contiene un serbatoio di istruzioni preelaborate in attesa di esecuzione, che può
essere molto lungo: di recente è stato esteso a oltre 100 blocchi per consentire la previsione degli
spigoli molto avanti. Nei blocchi preelaborati c'è anche l'ordine di visualizzare la riga, che viene
letta, al momento della reale esecuzione, nel file presente in memoria. Se nel frattempo il file in
memoria è cambiato (perché caricato con :L) la visualizzazione della riga in corso non è più
significativa. Quindi, se si programma:
!:L 10 -C:\PPG\OP3244.1!GOP10!
!:L 10 -C:\PPG\OP3244.2!GOP10!
quando si eseguono le ultime righe del programma OP3244.1 si ha una visualizzazione errata
perché le righe vengono lette nel file 10, che ormai contiene OP3244.2.

172 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

Sarebbe stato facile qualificare l'operazione :L come "con arresto" (che svuota il serbatoio
preelaborato), ma, ricordando che l'operazione con arresto non è sempre possibile (non nella
correzione raggio, nella geometria aperta, nella G98...) si sarebbe avuto l'inconveniente di dover
spezzare un eventuale file lungo in punti adeguati.
È stato quindi deciso di lasciare la possibilità di visualizzazione errata (che riguarda solo la
visualizzazione della riga e non la reale esecuzione in macchina) per dare una maggiore flessibilità
di uso.
Ci sono due modi per eliminare l'errata visualizzazione di righe:
1) alternare la scrittura di più programmi
Riesaminiamo l'esempio fatto in precedenza:
!:L 10 -C:\PPG\OP3244.1!GOP10!
!:L 11 -C:\PPG\OP3244.2!GOP11!
!:L 10 -C:\PPG\OP3244.3!GOP10!
!:L 11 -C:\PPG\OP3244.4!GOP11!
Questo accorgimento funziona se i programmi contengono funzioni con arresto (basta una M,
un'attesa G4 ...) oppure se i programmi sono abbastanza lunghi (per sicurezza almeno 200
blocchi).
Naturalmente si possono interessare anche più di due programmi fino a ottenere la lunghezza
voluta.
2) interporre una funzione con arresto
Per esempio:
!:L 10 -C:\PPG\OP3244.1!GOP10!
G112
!:L 10 -C:\PPG\OP3244.2!GOP10!
La G112 è la speciale G di sincronizzazione, ma si può usare una qualsiasi altra funzione con
arresto (M, G4 ecc.).
Questo accorgimento funziona sempre, ma richiede che il programma sia spezzato in un punto
adeguato, che ammetta l'arresto.

:L- per scaricare files su disco


Il comando :L- consente lo scarico di files da Z32 a disco. Esempio:
!:L-126-\FILES\ORIGINI.001!
L'esecuzione di questa riga provoca il trasferimento del file 126 di Z32 (tabella origini) dalla
memoria operativa dello Z32 al file su disco di nome "ORIGINI.001" nella directory \FILES.
Notare che la differenza col normale comando :L è il segno "-" prima del numero file.
Rimangono valide tutte le modalità d'uso e gli allarmi già descritti per il comando :L con numeri
positivi, salvo il fatto che si possono scaricare su disco tutti i files da 1 a 127 incluso (mentre per il
carico dei programmi erano possibili solo i files da 1 a 109 incluso).

5.5.2 :L254 - esecuzione multipla in DNC


Per usufruire di questa possibilità è necessario avere i programmi di interfaccia video TERMS,
ZTERM oppure in ambiente di rete del programma WINDNC (connesso come gestore DNC).
Si tratta della possibilità di eseguire più volte in DNC lo stesso programma o più programmi
diversi, per superare la limitazione della lunghezza del singolo file.
Formato generale di programmazione:

D. ELECTRON 173
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

!:L254-nome file di PC!


L’istruzione “:L254” è una funzione “con arresto”, cioè una di quelle funzioni che provocano lo
svuotamento del serbatoio di istruzioni preelaborate.
Questo comando somiglia al comando ":L" ma ha il numero file (obbligatorio per questa
prestazione) 254.
Questo numero di file rappresenta l'ordine codificato di eseguire il part-program residente su
disco in DNC e non con una installazione in memoria.
Se il numero file è 254 si ha che:
- il file non viene installato nella memoria Z32 ma viene eseguito in DNC. Ciò significa che il
file può avere una lunghezza qualsiasi (compatibilmente con la disponibilità del disco rigido)
- si ha una immediata esecuzione del file in DNC, senza necessità di un successivo GOP...
(come è richiesto nel caso di files installati in memoria)
Si possono ottenere varie prestazioni, per esempio quella di ripetere l'esecuzione di un file molto
lungo in posizioni via via rototraslate.
Esempio:
...
N2 Z30
N3 X0 Y0
N4 G1 Z0F100
N5 F300
N6 !:L254-P4523.PRG!
N7 QR<QR+30>
N8 !IF QR<360;GON2!
N9 Z30
N10 M2
Le righe da N2 a N8 sono ripetute 6 volte, in 6 diverse angolature distanti 30 gradi l'una
dall'altra.
Alcune specifiche per il file di part-program:
carattere % non consentito
Non deve avere in testa il carattere "%" (quindi il commento iniziale, se c'è, deve essere
racchiuso entro parentesi tonde come specificato dalle norme ISO).
Per compatibilità con una prestazione non documentata delle interfacce NTERM e ZTERM, è
fatta eccezione esclusivamente ad un carattere % sulla prima riga e solo a fine riga, (si
raccomanda comunque di evitare l’uso del carattere % nei programmi da eseguire in DNC.
terminare con G26
Deve terminare con l'istruzione G26 (ritorno da sottoprogramma).
salti GON e GON-N
I salti eseguiti con istruzioni GON o GON-N sono consentiti anche in DNC a qualsiasi distanza
dalla riga di partenza, verso qualsiasi punto del part-program in esecuzione.
Questa prestazione è possibile solo se il programma che fornisce il file in DNC è sotto Windows
(Windnc almeno versione 4.3.0 del 15.1.07), mentre non è possibile se Windnc è con versione più
vecchia oppure per installazioni DOS con interfacce TERMS o ZTERM.
La ricerca della riga destinazione parte da inizio file e si ferma alla prima riga che inizia con la
stringa indicata dal GON o GON-N.

174 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

Se il programma Windnc non trova la riga richiesta (sia N destinazione di salto che N ritorno di
salto) viene allarme CN8614 ERRORE SALTO O RITORNO IN DNC
carico/scarico programmi con funzioni :L
Durante una esecuzione in DNC (con la funzione evoluta :L254-…) è possibile usare al suo
interno funzioni di carico/scarico programmi con con l’istruzione :L che risultano “annidate” dentro
l’originaria funzione :L254 che introduce la trasmissione in DNC.
Questa prestazione è possibile solo se il programma che fornisce il file in DNC è sotto Windows
in cui il part-program in DNC sia gestito dal programma D.Electron “Windnc” (Windnc almeno
versione 4.5.4 del 22.10.08), mentre non è possibile se Windnc è con versione più vecchia oppure
per installazioni DOS con interfacce TERMS o ZTERM. Questa prestazione è supportata a partire
da versioni di software Z32 for Windows V12.1 del 12/1/09.

Programmazione parametrica del nome file DNC


Da part-program si può specificare il nome del file da eseguire in DNC con la riga evoluta:
!:L254-nomefile!
dove nomefile è una stringa ascii che specifica il path e il nome del file.
Può essere utile poter variare il nome del file da eseguire in funzione di un'espressione.
Ammettiamo che nella directory C:\Z32\PPG ci siano 500 diversi part-program da scegliere in
funzione di un parametro (per esempio HA) che varia da 1 a 500.
Per usare il nome programmabile si inserirà nel nome del file un numero da 1 a 500, per
esempio:
PPG1
PPG2

PPG499
PPG500
A questo punto, se HA contiene il numero da 1 a 500 si potrà semplicemente programmare:
!:L254-PPG<HA>!
Tra parentesi acute può anche essere contenuta un'espressione:
!:L254-PPG<HA+1-HC*2>!
L'espressione può essere interna al nome del file, oppure essere ripetuta più volte:
!:L254-PPG<HA>.DAT!
specifica nomi files PPG1.DAT, PPG2.DAT ecc.
!:L254-PPG<HA>.<HB>!
Specifica nomi file PPG1.1 (HA=HB=1), PPG20.46 (HA=20, HB=46) ecc.
Alcune regole sull'espressione:
- gli zeri iniziali sono sempre omessi, se l'espressione è zero viene inserito un solo zero
- se il risultato dell'espressione è negativo viene fatto il valore assoluto
- se il risultato dell'espressione è frazionario viene assunto l'intero più vicino.

DNC strutturato
ATTENZIONE: Questa prestazione non è concepita per una programmazione manuale,
ma per applicazioni software che permettano, in modo automatico ed in ambiente di rete,
una ricerca blocco (o ripristino ciclo) per zone di part-program come è permessa da Zterm
sotto DOS.

D. ELECTRON 175
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

Per completezza di informazione se ne dà comunque la descrizione, che comprende anche


alcuni speciali codici di allarme CN aggiunti per l'occasione.
Z32 supporta uno speciale comando per DNC "strutturato" che consente di ordinare
l'esecuzione parziale di un file in DNC (DNC con specifica di zona).
L'uso di questa estensione è consentito solo in ambiente di rete e con applicativi Windows
appositamente sviluppati. Non funziona (genera un allarme CN) se usata con gli applicativi attuali
(Zterm e Terms).
La prestazione è legata all'istruzione evoluta :L254, la cui sintassi per esteso è:
!:L254-nome_file_su_disco[puntatore_inizio--puntatore_fine]!
Ossia, si possono aggiungere tra parentesi quadre, dopo il nome del file su disco, i puntatori
inizio e fine della zona da trasmettere, separati da un doppio segno meno.
I puntatori identificano la posizione del carattere iniziale della prima e dell'ultima riga da
trasmettere.
Il primo carattere del file ha il puntatore = 1 (non = 0!).
Se i due puntatori sono identici viene trasmessa un'unica riga.
Sono accettate anche le due stringhe "START" e "END" che specificano inizio e fine file, per
esempio:
!:L254-PRG126.ISO[312--82468]
!:L254-PRG126.ISO[START--4743]
!:L254-PRG126.ISO[2810--END]
I codici allarme CN legati a questa prestazione (che saranno comunicati a Z32 dallo speciale
applicativo Windows) sono:
CN6514 :L CON [ ]: ERRORE SINTASSI
CN6614 :L CON [ ]: PUNTATORI NON A INIZIO RIGA
CN6714 :L CON [ ]: PUNTATORI OLTRE FINE FILE
CN6814 :L CON [ ]: PUNTATORE INIZIO MAGGIORE DI FINE

5.5.3 :P, :D - stampa da part-program su video di stringhe e valori parametri

Istruzione evoluta :P
Per visualizzare dei dati su video, da part-program, si può utilizzare un campo di riga evoluta con
la seguente sintassi:
!:P /. n1 - n2 "stringa" [espressione] ...!
:P è l'apertura del campo speciale ("P" come Print)
/. per formattazione dati con punto anziché virgola (opzionale)
n1 è la posizione carattere iniziale (min 0, max 158)
- è il tratto (segno meno) di separazione tra n1 e n2
n2 è la posizione carattere finale (min n1+1, max 159)
"stringa" è una stringa ascii racchiusa tra doppi apici (opzionale)
[espressione] è un'espressione algebrica tra parentesi quadre (opzionale)
! è il carattere di apertura e chiusura campo (è valido anche il ";", escluso inizio riga).
- :Pn1-n2 sono obbligatori.

176 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

- n1 ed n2 individuano i caratteri delle stringhe video di visualizzazione speciale (sono disponibili


due intere righe, quindi 160 caratteri al massimo.
- I caratteri a video tra n1 ed n2 compresi sono cancellati e sostituiti con i dati da visualizzare.
- Stringhe ed espressioni sono opzionali, possono essere ripetuti più volte in qualsiasi ordine,
fino a riempire il numero di caratteri predisposto (n1-n2).
- Non viene mai scritto fuori dal campo delimitato da n1-n2. Se la stampa è più lunga viene
troncata senza generare allarme.
- Le stringhe possono contenere tutti i caratteri stampabili, salvo il doppio apice che serve come
delimitatore.
- Le espressioni possono essere tutte quelle inseribili nel part-program.
- I risultati delle espressioni sono stampati senza zeri iniziali e con un massimo di 3 cifre
decimali. Il massimo risultato visualizzabile è 999999,999. Risultati superiori sono saturati al
massimo senza dare allarme CN.
- E’ possibile specificare la formattazione dei valori (risultato di espressione) con il punto
decimale anziché con la virgola programmando la specifica “/.” Immediatamente doto :P.
- Non ci sono spazi né prima né dopo i risultati delle espressioni. Eventualmente aggiungerli.
- Se n1 o n2 sono incongruenti, mancano i caratteri di delimitazione ecc. viene allarme CN1D14
ERRORE PROGRAMMA.
- Dopo che è stata richiesta una visualizzazione con :P le visualizzazioni da logica (PLC) sono
congelate (anche nella zona fuori da n1-n2).
- Per cancellare i dati visualizzati e riprendere le eventuali visualizzazioni di dati di logica (PLC)
si deve programmare nel part-program un campo di riga evoluta con la forma seguente:
!:P /R!
Esempi:
!:P0-30 "HA="[HA]" HB="[HB]!
Visualizza i due parametri HA e HB, con descrizione.
!IF HA<0;:P0-60"VALORE ERRATO DI HA = "[HA]!
Visualizza solo se HA<0
!:P20-80"Risultato: "[12*4-PAR[18]+CS(HB-30)]!
Visualizza il risultato dell'espressione

Istruzione evoluta :D
La visualizzazione dei dati sul video con la istruzione di riga evoluta :P ha queste limitazioni:
- c'è un conflitto con le visualizzazioni di logica perché la stringa viene stampata nella stessa
zona dello schermo
- la stampa non è sincronizzata con la reale posizione del part-program, per il solito serbatoio di
istruzioni preelaborate
Se è necessario ovviare a queste limitazioni si può usare l’istruzione :D (mnemonico Display) al
posto di :P, che mantiene la stessa sintassi della precedente e che non ha più entrambe le
limitazioni sopra descritte.
La stampa di :D avviene nelle righe delle visualizzazioni speciali (quelle che si attivano con
CTRL R-V) e che sono raramente utilizzate. Se sono attive le visualizzazioni CTRL R-V il contenuto
di :D viene momentaneamente non presentato.
La sintassi dell’istruzione :D è la stessa del precedente :P, l’unica differenza è il comando di
apertura del campo speciale che diventa :D (“D” coma Display):
!:D /. n1 - n2 "stringa" [espressione] ...!

D. ELECTRON 177
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

per i dettagli fare riferimento alla sintassi della istruzione :P.


Esempi:
!:D0-30 "HA="[HA]" HB="[HB]!
Visualizza i due parametri HA e HB, con descrizione.
!IF HA<0;:D0-60"VALORE ERRATO DI HA = "[HA]!
Visualizza solo se HA<0
!:D20-80"Risultato: "[12*4-PAR[18]+CS(HB-30)]!
Visualizza il valore dell'espressione
!IF HA>40;:D /R!
Se HA>40 cancella le visualizzazioni :D
HA100,123
!:D/.0-20 “PARAM. HA=”[HA]!
Visualizzerà la riga: PARAM. HA=100.123

5.5.4 :F - scrittura stringa su file


Il funzionamento del campo è del tutto simile a quello di :P e :D, con la differenza che il risultato,
anziché essere scritto a video viene "accodato" a un file di Z32.

La sintassi normale è:
!:F /. nfile "stringa" [espressione] "stringa"...!
Dove:

/. = per formattazione dati con punto anziché virgola (opzionale)

nfile = numero file di Z32 (validi da 1 a 99)

“stringa” = stringa di caratteri alfanumerici ascii racchiusa tra doppi apici


[espressione] = espressione di part-program

La stringa viene accodata al file richiesto, l’espressione viene calcolata e accodata al file
richiesto.

Per i dettagli riferirsi alla sintassi dei campi :P e :D.

Esempi:
HA 45
!:F12"Valore nel punto 4: "[HA*2]!
Nel file 12 viene scritta la stringa: Valore nel punto 4: 90
HA100,123
!:F/.40"PARAM. HA="[HA]!
Nel file 40 si otterrà la riga: PARAM. HA=100.123

Ogni campo :F specifica una intera riga.

Più stringhe ed espressioni possono essere contenute nel campo, fino ad un massimo di 160
caratteri. Gli eventuali caratteri in eccesso sono ignorati.

178 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

Sono validi numeri file da 1 a 99, ma il file non può essere lo stesso che è in esecuzione
automatica.
L'istruzione di riga evoluta :F permette di scrivere, da part-program, stringhe ascii in un file
CMOS. Lo scopo di questa istruzione è principalmente quella di compilare report di controllo della
produzione.
Se la dimensione del file CMOS supera i 64KB per effetto di un istruzione :F, sono
automaticamente cancellati i dati iniziali del file, più vecchi, per fare posto ai più recenti.
Attenzione: è comunque buona norma fare in modo che il file non superi mai 64KB perché
l'operazione di cancellazione dei byte iniziali può essere relativamente lunga (anche oltre 1
secondo) e quindi rallentare l'esecuzione del part-program.
Con una sintassi speciale si può ottenere la cancellazione totale del file:
!:F nfile /R!
Esempio:
!:F90/R!
Esegue la cancellazione del file 90.

5.5.5 File documentazione (“DOC”) per ricerca blocco con blocco opzionale
Una riga di programma che inizia col carattere “/” viene eseguita da Z32 solo se è abilitata
dall’apposito selettore (blocco opzionale).
Se durante l’esecuzione lo stato del selettore non è fisso ma viene cambiato dall’operatore in
funzione delle sue esigenze risulta poi impossibile la ricerca blocco perché, anche se l’operatore
ricorda le scelte fatte durante l’esecuzione, è praticamente impossibile manovrare il selettore con la
rapidità che sarebbe necessaria.
È stata ora introdotta la possibilità di generare un file di “documentazione”, che registra i
comandi dati dall’operatore durante l’esecuzione. Queste informazioni rimangono memorizzate nel
file e sono utilizzate in ricerca blocco per ripetere le scelte.
Per compatibilità col funzionamento precedente la nuova modalità di esecuzione e ricerca
blocco è attivata da uno speciale comando contenuto nel part-program. Se questo comando manca
il funzionamento è identico al precedente, sia in esecuzione che in ricerca blocco.
Il funzionamento del file documentazione è diverso in esecuzione, quando il file viene scritto con
le scelte dell’operatore, e in ricerca blocco, quando le scelte fatte dall’operatore vengono lette dal
file.
Gli eventi che coinvolgono il file documentazione sono:
- comando iniziale di attivazione
- riga con blocco opzionale
- inizio sezione di programma
Attivazione del file “DOC”
L’attivazione del file “DOC” si ha col campo di riga evoluta:
!DOC>nnn!
DOC è il comando di attivazione del file di documentazione
> introduce il file di Z32 dove risiedono i dati di documentazione
nnn è il numero file
Per esempio:
!DOC>102!

D. ELECTRON 179
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

Richiede di attivare la documentazione nel file 102


Sono possibili numeri file da 1 a 109.
È bene che l’attivazione del file DOC sia inserita a inizio programma, per coprire tutte le scelte
dell’operatore.
In esecuzione gli effetti di questo comando sono:
- il file destinazione viene cancellato se esiste
- viene creato un file destinazione nuovo con una stringa iniziale caratteristica
Esempio di stringa iniziale:
DOC FILE PRG NR 004 20.08.99 18:47
Nella stringa iniziale si riconoscono questi campi:
DOC FILE PRG NR stringa ascii fissa caratteristica del file DOC
004 numero di programma in corso di esecuzione
20.08.99 data, nel formato gg.mm.aa (giorno.mese.anno)
18:47 ora, nel formato hh:mm (ora:minuti)
Il file in corso di esecuzione è quello base (lanciato con scelta programma), anche se sono in
corso sottoprogrammi o file DNC.
Se a inizio esecuzione è stato scelto il DNC il file in corso di esecuzione è convenzionalmente il
numero 254.
In ricerca blocco gli effetti sono:
- il file destinazione viene aperto per lettura
- viene controllata la parte fissa della stringa iniziale
- viene controllato che il numero programma in corso di esecuzione sia lo stesso della ricerca
blocco
- viene controllata la lunghezza della stringa iniziale, ossia data e ora possono essere
qualsiasi ma la lunghezza della riga deve essere di 34 caratteri
Se il risultato del controllo è positivo la ricerca blocco continua in modo normale, e le scelte sono
lette dal file DOC, mentre se risultano errori la ricerca blocco continua in un modo speciale: non
essendo coerenti i dati contenuti nel file DOC l’operatore dovrà ripetere le sue scelte ad ogni blocco
opzionale.
Blocco opzionale
Durante la esecuzione il blocco opzionale viene eseguito o non eseguito a seconda dello stato
del selettore esterno.
Se è attivo il file DOC (ossia se in precedenza nel programma c’era l’attivazione col campo
!DOC>...!) la scelta dell’operatore viene registrata nel file DOC con una riga composta di un solo
carattere, che è “0” se la riga non viene eseguita e “1” se la riga viene eseguita.
In ricerca blocco si possono avere tre casi:
- se il file DOC non è attivo la riga viene eseguita o non eseguita secondo lo stato del
selettore. Il funzionamento è identico a quello che si aveva con le versioni precedenti
- se il file DOC è attivo senza errori il file DOC viene aperto e viene ripetuta la scelta fatta
durante l’esecuzione. Lo stato attuale del selettore del blocco opzionale non ha effetto. Se
durante la lettura dal file DOC si rilevano errori il funzionamento passa a quello del file DOC
con errore come descritto al prossimo paragrafo
- se il file DOC è attivo (ossia nel programma è stata incontrata l’istruzione !DOC>...!) ma con
errore viene generato uno STOP (come con M0) per consentire all’operatore di ripetere la

180 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

scelta. La lettura dello stato del selettore del blocco opzionale e quindi la scelta se eseguire
o non eseguire la riga viene fatta quando viene premuto START per continuare la ricerca.
Sezionamento programma
Il sezionamento programma, che è ottenuto con una riga che inizia col carattere “:” seguito dal
numero sezione, consente una ricerca blocco molto più rapida, ma i blocchi opzionali nelle sezioni
che vengono “saltate” non vengono riconosciuti né decodificati.
Deve quindi essere opportunamente gestito nel file DOC per consentire la sincronizzazione del
puntatore in lettura con l’inizio sezione.
In esecuzione la riga di sezionamento genera nel file DOC una riga composta dal carattere “:” e
da cinque numeri che identificano la sezione. Sono scritti anche gli eventuali zeri iniziali.
Per esempio, la riga di part-program:
:456
genera una riga nel file DOC:
:00456
In ricerca blocco la riga di sezionamento richiede nel file DOC la ricerca della riga
corrispondente. La lettura delle scelte operatore riprende con le righe che seguono
immediatamente la riga di sezionamento.
Se il file DOC è in errore la riga di sezionamento viene ignorata ai fini del file DOC: le scelte
relative al blocco opzionale saranno comunque richieste all’operatore con uno STOP programma.
Esempio di part-program e di file DOC relativo
Esempio di part-program con attivazione di file DOC, installato nel file 4:
PROVE FILE DOC%
!DOC>102!
F500
G1X0Y0Z0
/X10
Y5
/X25
Y10
:4567
G0X0Y0Z0
/G1X20
Y10
M2
Dopo l’esecuzione di questo part-program, con blocco opzionale disabilitato, il file 102 (file DOC)
è il seguente:
DOC FILE PRG NR 004 21.08.99 16:37
0
0
:04567
0
Gli “0” corrispondenti ai blocchi opzionali si trasformano in “1” se il selettore di blocco opzionale
è attivo in esecuzione.

D. ELECTRON 181
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

5.5.6 Istruzione INPUT - Introduzione parametri di part-program da tastiera


Consente di richiedere un parametro all'operatore durante lo svolgimento di un part-program.
La sintassi per richiedere un parametro all'operatore (che è possibile solo da riga ISO) è:
nomeparam<IN:commento>
dove nomeparam è il nome del parametro richiesto all'operatore, commento è la stringa da
presentare all’operatore a chiarimento della funzione del parametro richiesto.
Per esempio questa riga:
HA<IN:PROFONDITA' PASSATA>
Apre una finestra di dialogo con l'operatore del tipo:
<0 > IN:PROFONDITA' PASSATA
All’interno della finestra di dialogo viene visualizzato il valore attuale del parametro, per esempio,
se HA in quel punto del programma ha valore 5,234 viene visualizzato:
<5.324 > IN:PROFONDITA' PASSATA
A tutti gli effetti è come se il numero stampato da Z32 nella finestra di dialogo fosse stato scritto
dall'operatore.
Il cursore punta dopo l'ultima cifra del valore
L'operatore può cancellare una o più cifre e sostituirle con quelle desiderate.
Il dialogo con l'operatore avviene attraverso la riga comandi.
L'istruzione di INPUT è una istruzione "con arresto", quindi richiede, prima di essere effettuata, il
completamento di tutte le istruzioni pendenti, e non può essere programmata, come tutte le
istruzioni con arresto, in punti "aperti" del part-program (correzione raggio, geometria aperta ecc.).
Una volta completate le istruzioni pendenti la riga comandi viene modificata con:
<5.234 > IN:commento
dove il campo di 14 caratteri tra parentesi acute contiene il valore del parametro ed il cursore ed
è disponibile per l'ingresso dati.
L'operatore può modificare il valore presentato oppure riempire riempire il campo con un nuovo
numero da assegnare al parametro e poi premere enter. Se la sintassi è corretta il numero viene
acquisito da Z32 e il part-program continua.
Durante la scrittura l'operatore ha a disposizione questi tasti speciali:
- ENTER conferma il valore vecchio come nuovo valore
- BACKSPACE o FRECCIA SINISTRA cancellano l'ultima cifra e si entra nella modalità
“editing” del valore: è come se tutti i caratteri residui del valore vecchio fossero stati battuti
dall’operatore.
- qualsiasi altro carattere provoca la cancellazione di tutto il valore vecchio presente nella
finestra di input.
Nella modalità “editing” valore:
- ENTER conferma valore introdotto
- 0 1 2 3 4 5 6 7 8 9 + - , . sono accettati per la composizione o modifica del valore.
- ESC o DEL cancellano tutto e fanno ripetere daccapo.
Se il numero non è accettabile (per esempio potrebbe essere un numero con troppe cifre
significative) compare un carattere "?" a destra che invita l'operatore a correggere il dato.
Collegato all'istruzione di input c’è l’allarme CN6314 <IN:...> STRINGA NON VALIDA.
L'introduzione del parametro è attiva sia in esecuzione che in ricerca blocco.

182 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

Per la ricerca blocco è interessante il collegamento delle istruzioni di INPUT col file DOC (che è
attivato con l'istruzione !DOC>numerofile!).
Se il file DOC non è attivo durante la ricerca blocco viene richiesto l'INPUT esattamente nello
stesso modo come richiesto durante l'esecuzione.
Se il file DOC è attivo durante l'esecuzione il parametro viene registrato nel file DOC in modo
tale da essere disponibile per l'eventuale ricerca blocco.
In ricerca blocco se il file DOC è attivo l'INPUT viene preso dal file DOC, ma se il file DOC risulta
corrotto o incongruente l'INPUT viene richiesto all'operatore, come nel caso di file DOC non attivo.

D. ELECTRON 183
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

184 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

CAPITOLO 6

6. FUNZIONI DI PROGRAMMAZIONE STRUTTURATA

6.1 PROGRAMMAZIONE STRUTTURATA


Le istruzioni di Z32 che interrompono l'esecuzione sequenziale delle righe di programma sono:
!GON…! Salto ad una riga senza ritorno
!GON…-N…! Salto ad una serie di righe con ritorno
!GOP…! Salto ad un sottoprogramma
!GOP…-N…! Salto ad una riga all'interno di un sottoprogramma
!GOP…-N…-N…! Salto ad una serie di righe all'interno di un sottoprogramma
Le istruzioni !GON…! non possono essere eseguite all'interno di un programma eseguito in
DNC.
La funzionalità di queste istruzioni dà al programmatore un'ampia libertà, consentendogli di
eseguire salti ovunque all'interno del suo programma (in avanti e indietro) ma è limitata, per le
funzioni !GON…! a programmi residenti nella memoria operativa di Z32 e quindi a programmi di
lunghezza non superiore a 64k bytes.
Per questo sono state aggiunte alcune istruzioni di "programmazione strutturata" che si
affiancano alle istruzioni esistenti e che possono, con qualche limitazione che vedremo, essere
contenute anche in programmi eseguiti in DNC (quindi di qualsiasi lunghezza).
Le istruzioni di programmazione strutturata sono caratterizzate dal fatto che la riga che le
contiene inizia con i due caratteri "-" consecutivi. Sono quindi perfettamente compatibili con i
programmi esistenti, che darebbero errore se contenessero questo tipo di righe.
Regole comuni per tutte le istruzioni strutturate sono:
- prima e dopo "--" possono esserci un numero qualsiasi di blank
- possono essere inclusi dei commenti, che sono introdotti dal carattere ";"

6.1.1 Struttura IF - ELSEIF - ELSE - END IF


Consente l'esecuzione condizionata di serie di istruzioni.
Sintassi completa:
-- IF condizione ;commento
istruzioni
-- ELSEIF condizione ;commento
istruzioni
-- ELSE ;commento
istruzioni
-- END IF ;commento
dove:
- condizione ha tre possibili forme:
1) condizione = espressione1 confronto espressione2

D. ELECTRON 185
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

l'esecuzione dello IF è condizionata al confronto tra due espressioni:


- espressione1 ed espressione2 sono le espressioni possibili nella sintassi Z32 (la forma
più semplice di espressione è un numero oppure un solo parametro)
- confronto sono gli operatori:
< minore (con segno)
= uguale
> maggiore (con segno)
<= minore o uguale
>= maggiore o uguale
<> diverso
2) condizione = /
l'esecuzione dello IF è condizionata dal selettore del blocco barrato
3) condizione = //
l'esecuzione dello IF avviene solo in ricerca blocco
- istruzioni sono un numero qualsiasi di righe eseguibili da Z32, ossia righe "ISO", righe
evolute, altre istruzioni strutturate
- tra END e IF possono esserci un numero qualsiasi di blank (è riconosciuto anche ENDIF,
senza blank)
- il carattere ";" di chiusura e il commento seguente sono opzionali
Esempio 1:
--IF HA=0 ;caso 0
HB10
--ELSEIF HA=1
..HB11
--ELSEIF HA=2
HB105
--ELSEIF HA>2
HB1000
--ELSE
HB-1
--END IF
Che assegna valori diversi al parametro HB in funzione del valore del parametro HA.
Esempio 2:
--IF / ;da eseguire come blocco barrato
G0 Z100
T0 M6 (SCARICA IL MANDRINO)
M2 (FINE PROGRAMMA)
--END IF
Interrompe l'esecuzione del programma se il selettore del blocco barrato è attivo.
Da notare che la stessa funzionalità potrebbe essere ottenuta senza programmazione
strutturata, anteponendo il carattere "/" alle tre istruzioni che compongono il corpo dello IF.

186 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

Esempio 3:
--IF // ;in ricerca blocco
HA=1 ;in ricerca blocco prende il valore 1
--ELSE
HA=-1 ;valore che prende non in ricerca blocco
--END IF
Assegna due valori diversi al parametro HA, a seconda che siamo o non siamo in ricerca
blocco.
E' evidente che anche in questo caso si potrebbe ottenere la stessa funzionalità anche senza la
programmazione strutturata.
Lo END IF è obbligatorio, mentre sono opzionali gli ELSEIF (che possono essere in numero
qualsiasi) e lo ELSE (che normalmente chiude le alternative dello IF).
Ci può essere un "nesting" di IF (ossia IF dentro un altro IF) fino a 31 livelli.
Esempio:
-- IF condizione1
istruzioni 1
-- IF condizione2
istruzioni 2
-- IF condizione3
istruzioni 3
-- IF condizione4
istruzioni 4
-- END IF
istruzioni 3A
-- END IF
istruzioni 2A
-- END IF
istruzioni 1A
-- END IF
Si consiglia di "indentare" il programma (ossia spostare a destra le istruzioni allineandole con l'IF
a cui appartengono come nell'esempio) per rendere più evidente il flusso delle istruzioni ed evitare
errori nella richiusura degli IF con END IF. Fare attenzione che, in programmi con molti IF uno
dentro l'altro può non essere semplice trovare dove manca lo END IF.
Un salto a un sottoprogramma azzera momentaneamente il livello di IF, e il ritorno dal
sottoprogramma ripristina il livello di IF presente al momento del salto.
Per esempio è perfettamente lecita una struttura di programma così:
--IF condizione1
--IF condizione2
!GOP20!
--END IF
--ELSEIF condizione3
istruzioni3
--END IF

D. ELECTRON 187
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

se sono verificate le condizioni 1 e 2 si ha il salto al sottoprogramma 20, e al ritorno non viene


eseguito lo ELSEIF, anche se la condizione3 è verificata.
E' lecito inserire un G26 (ritorno dal sottoprogramma) all'interno di un ciclo di IF. Il ritorno dal
sottoprogramma ripristina comunque il livello di IF del programma al quale si fa ritorno. Per
esempio è lecito in un sottoprogramma:
--IF condizione1
--IF condizione2
--IF condizione3
G26
--END IF
--END IF
--END IF
In questo caso il ritorno dal sottoprogramma G26 avviene correttamente al livello 3 di IF nel
sottoprogramma, i due livelli di IF più bassi sono scartati e l'esecuzione riprende nel programma o
sottoprogramma chiamante al corretto livello di IF del chiamante.
Una M2 (fine programma) può essere eseguita a livello di IF non zero. Per esempio è corretto:
--IF condizione1
M2
--END IF
Se viene programmato END IF senza che ci sia un IF aperto viene allarme CN6B14 END DI IF
SENZA IF
Analogamente, se viene programmato ELSE o ELSEIF senza che ci sia un IF aperto viene
allarme CN7314 ELSE O ELSEIF SENZA IF
Attenzione: se il file termina durante un IF che non viene eseguito si possono avere allarmi vari
di difficile interpretazione. Vedere l'istruzione strutturata --OUT che aiuta nella comprensione di
questi casi.
La presenza contemporanea di istruzioni strutturate –IF e di istruzioni di salto non strutturato
(!GON…!) nello stesso file permette una notevolissima flessibilità di programmazione. Deve essere
però cura del programmatore evitare che eventuali salti !GON…! provochino uscite o ingressi
indebiti da o in strutture –IF. Per esempio può dare errore questo programma:
--IF condizione
N1 !GON10!
--END IF
...
N10 ...
M2
La riga N1 fa uscire dalla struttura di IF in modo incontrollato, quindi lo M2 arriva quando lo IF
non è correttamente chiuso e quindi viene errore di programmazione.
Il salto a un sottoprogramma azzera la condizione di strutturato/non strutturato, quindi è
possibile da un programma con istruzioni strutturate saltare a un sottoprogramma che contiene
istruzioni tipo !GON… e viceversa.
E' anche lecito, da un programma che contiene istruzioni strutturate, eseguire un salto a un
sottoprogramma con specifica della riga o di una serie di righe. Per esempio sono leciti:
--IF condizione
!GOP10-N35!

188 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

--END IF
oppure:
--IF condizione
!GOP10-N35-N70!
--END IF

6.1.2 Struttura DO - EXIT DO - LOOP


Consente la ripetizione condizionata di una serie di istruzioni.
Sintassi completa:
-- DO ;commento
istruzioni
-- EXIT DO IF condizione ;commento
istruzioni
-- LOOP [IF condizione] [numero] [<espressione>] ;commento
dove:
- condizione è costituito da espressione1 confronto espressione2 come per lo IF. Non sono
ammesse le condizioni "/" e "//" che sono invece possibili per lo IF
- lo EXIT DO è opzionale
- il LOOP è obbligatorio
- IF condizione dopo EXIT DO e dopo LOOP è opzionale
- numero ripetizione del ciclo DO-LOOP un numero di volte specificato in chiaro (opzionale)
- <espressione> ripetizione un numero di volte specificato con il risultato di espressione che è
valutata solo la prima volta.
- i blank tra EXIT DO IF e tra LOOP IF sono opzionali (sono accettati anche EXITDOIF, EXIT
DOIF, LOOPIF)
- il numero che segue l’istruzione –LOOP indica il numero di volte che viene eseguito il salto,
quindi il ciclo DO-LOOP viene eseguito una volta di più (la prima volta e poi il numero specificato)
- il numero deve essere intero positivo, altrimenti viene CN1D14 ERRORE PROGRAMMA
- è possibile programmare il numero anche come risultato di una espressione: --LOOP <(100-
HA)/2>. L’espressione è valutata una volta sola ed il risultato è memorizzato ed usato come se
fosse programmato direttamente.
- per l’espressione (contrariamente alla programmazione diretta con numero) sono ammessi
anche risultati non interi o negativi, con queste regole:
se il risultato non è intero il risultato è approssimato all’intero più vicino
se l’intero risultante è zero o negativo non viene ripetuto il ciclo DO-LOOP (che è eseguito solo
la prima volta)
Questa tolleranza verso risultati anomali è utile perché facilmente i risultati di espressioni sono
non interi per il formato binario dei numeri (l'espressione 10*0,2 non dà in binario un risultato intero)
e risultati negativi possono servire in caso di condizioni di controllo complesse.
Esempi semplici:
G0 X0 Y0
Z0
--DO

D. ELECTRON 189
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

G1 F1000 Z<Z-2>
X100
Y100
X0
Y0
--LOOP 2
dopo il primo ciclo ripete 2 volte (l’ultima volta con Z-6)
G0 X0 Y0
--DO
X<X+5>
Y<Y+5>
--LOOP IF X<20
fa una gradinata fino a X20 Y20 (termina col movimento da Y15 a Y20)
G0 X0 Y0
--DO
X<X+5>
--EXIT DO IF X>=20
Y<Y+5>
--LOOP
gradinata simile alla precedente, che termina col movimento da X15 a X20, con Y=15
Un ciclo di DO consuma un livello di subroutine (come il !GOP.. e il !GON-N) e quindi viene
allarme CN2E14 TROPPE SUBROUTINES se il "nesting" delle subroutines supera il massimo di 19
livelli consentiti.
Più cicli di DO possono essere uno dentro l'altro; il nesting ammesso è quello totale delle
subroutines
E' lecito inserire cicli di DO a livello di IF non zero, così come è lecito inserire IF (fino a 31 livelli)
dentro un ciclo di DO.
Il LOOP deve essere allo stesso livello di IF del DO al quale si riferisce, altrimenti viene errore
CN7414 LOOP DURANTE IF APERTO. Per esempio:
--DO
--IF condizione
--LOOP ;questo loop è errato perché viene in un IF aperto: dà CN7414
--END IF
Invece lo EXIT DO può essere all'interno di un livello di IF, per esempio:
--DO
--IF condizione
--EXIT DO
--END IF
--LOOP
In questo caso lo EXIT DO chiude tutti i livelli di IF e l'esecuzione riprende dopo il LOOP
Anche l'istruzione DO può essere contenuta in un programma eseguito in DNC, ma in DNC c'è
una limitazione alla lunghezza delle istruzioni che sono contenute nel corpo del DO:

190 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

in DNC il corpo del DO (le istruzioni comprese tra DO e LOOP) non può superare i 44KB,
altrimenti viene allarme CN7614 CICLO DO - LOOP TROPPO GRANDE IN DNC
Se viene programmato LOOP senza che ci sia un DO aperto viene allarme CN6E14 LOOP
SENZA DO
Se viene programmato EXIT DO senza che ci sia un DO aperto viene allarme CN7214 EXIT
SENZA DO.
Attenzione: come per lo IF la presenza contemporanea di istruzioni strutturate --DO e di
istruzioni di salto non strutturato (!GON…!) nello stesso file permette una notevolissima flessibilità
di programmazione. Deve essere però cura del programmatore evitare che eventuali salti !GON…!
provochino uscite o ingressi indebiti da o in strutture –DO.

6.1.3 Struttura GOTO LN


Consente di saltare una serie di istruzioni.
Sintassi:
-- GOTO LN espressione ;commento
istruzioni
-- LN espressione ;commento
dove:
- espressione è una qualsiasi espressione eseguibile da Z32 (la più semplice è un numero)
- i blank tra GOTO e LN sono opzionali (è accettato anche GOTOLN)
- i ";" e i commenti sono opzionali
Dopo il GOTO sono saltate tutte le istruzioni fino alla riga destinazione LN, che è caratterizzata
da un'espressione di valore numerico identico a quello dell'espressione del GOTO.
La riga destinazione LN può essere solo in avanti nel programma rispetto alla riga GOTO.
Esempio:
--GOTO LN 20 ;commento
istruzioni
--LN 20 ;commento
Si raccomanda attenzione nel caso di espressioni che contengono valori non interi, che
potrebbero dare un comportamento inaspettato.
Per esempio, non funziona:
--GOTO LN 0.9 ;commento
istruzioni
--LN 1-0.1 ;questa riga non viene trovata!
La spiegazione è che le espressioni sono valutate da Z32 in un formato floating point binario
troncato (non arrotondato), e che in questo formato i semplici numeri decimali 0,9 e 0,1 sono
periodici (hanno un numero infinito di decimali) e quindi sono rappresentabili solo in forma
approssimata.
E' come se con notazione decimale con 4 cifre significative si volesse confrontare il numero 2/3
con 3-1/3
2/3 vale 0,6666
1/3 vale 0,3333
3-1/3 vale 0,6667, che è diverso da 0,6666.

D. ELECTRON 191
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

Si consiglia quindi di usare sempre espressioni intere, oppure valori numerici espliciti, che danno
un'assoluta certezza di funzionamento.
Attenzione: se il file termina senza che sia trovata la riga destinazione si possono avere allarmi
vari di difficile interpretazione. Vedere l'istruzione --OUT che aiuta la comprensione di questi casi.

6.1.4 Struttura DEFINE - END DEFINE


Consente di inviare allo Z32 come file di sottoprogramma una serie di istruzioni.
Sintassi:
-- DEFINE P numero ;commento
istruzioni
-- END DEFINE ;commento
dove:
- numero è un intero da 1 a 119 inclusi, che definisce il file interno di Z32 dove devono essere
scritte le istruzioni contenute nel DEFINE.
- non è possibile sovrascrivere il programma o sottoprogramma attualmente in esecuzione né
programmi ai quali si deve fare ritorno (per esempio, se si sta eseguendo il sottoprogramma 25 che
è chiamato con un !GOP! dal sottoprogramma 20, che a sua volta è chiamato con un !GOP! dal
programma 1, non sono scrivibili i files 1, 20, 25)
- i caratteri ";" e i commenti sono opzionali
- i blank sono opzionali (sono accettati anche DEFINEP e ENDDEFINE)
Esempio:
-- DEFINE P32 ;ciclo fisso di foratura speciale
CICLO FISSO DI FORATURA SPECIALE %
G0 Z<Z-30>
G1 Z<Z-20>
G4 TT.3
G0 Z<Z+50>
G26
-- END DEFINE
Questa struttura è destinata soprattutto ad editor evoluti, che inseriscano in un part-program
(per esempio da inviare in DNC) anche macro o cicli fissi che possono non essere reperibili tra le
macro o i cicli fissi di sistema.
All'interno di un DEFINE non può essere inserito un altro DEFINE, altrimenti viene allarme
CN6C14 DEFINE DENTRO UN DEFINE.
Se si definisce un sottoprogramma con numero > 119, oppure il programma o sottoprogramma
in esecuzione, oppure uno dei programmi ai quali si deve fare ritorno, viene errore CN7714
ERRORE FILE NON SCRIVIBILE.
Se il numero file è irregolare (0 o con decimali o negativo…) viene allarme CN1D14 ERRORE
PROGRAMMA.
Se si trova un END DEFINE con DEFINE non aperto viene allarme CN6A14 END DI DEFINE
SENZA DEFINE.
All'interno di un DEFINE possono esserci istruzioni qualsiasi, strutturate e non strutturate (ad
eccezione di --OUT che serve per verificare la chiusura del DEFINE), ma anche addirittura errate,
che sono completamente ignorate in questa fase di scrittura nel file di Z32. Se risulteranno errori di
esecuzione saranno messi in evidenza quando il sottoprogramma sarà eseguito.

192 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

Attenzione: se manca lo END DEFINE la scrittura prosegue fino a fine file e quindi si possono
avere allarmi vari di difficile interpretazione. Vedere l'istruzione --OUT che aiuta la comprensione di
questi casi.
Si possono presentare situazioni di part-program in cui una destinazione di salto GON è definita
anche all’interno di un DEFINE. La ricerca di un GON ad una riga interna ad un DEFINE viene
impedita altrimenti si potrebbero avere malfunzionamenti. Per esempio, prendiamo questo schema
di programma:
--DEFINE P4
...
N1 G1 Z<Z-5>
...
G26
--END DEFINE
G0 X0 Y0 Z0
N1 ...
...
N20 !GON1!
...
Nel programma ci sono due righe N1, una dentro il DEFINE ed una fuori. La destinazione di
salto della riga N20 (!GON1!) non può essere la riga N1 dentro il DEFINE, questa è scartata perché
contenuta in un DEFINE, e quindi viene raggiunta la seconda riga N1 (fuori dal DEFINE) che è
verosimilmente la destinazione corretta.
Attenzione: NON scrivere MAI righe --DEFINE o --END DEFINE spurie all'interno di un file!
Per valutare se una destinazione di salto (GON..) è o no dentro un DEFINE non viene fatta
un'analisi completa del file, ma sono solo cercate nel file le righe che contengono --DEFINE o --
END DEFINE (senza indagare se sono eseguibili o no) e la decisione se scartare o no la riga
trovata viene presa non appena si raggiunge una certezza.
Se il file contiene righe --DEFINE o --END DEFINE spurie si possono prendere decisioni
sbagliate. Esempio:
COMMENTO INIZIALE: IN QUESTO FILE NON SONO CONTENUTE RIGHE DEL TIPO:
--DEFINE
QUI INIZIA IL PROGRAMMA
%
...
N1 G0 X0
...
N4!GON1!
La riga N1, corretta destinazione di salto della riga N4, viene scartata perché l'analisi rapida
"vede" una riga di inizio DEFINE prima della riga N1 e quindi la scarta, senza accorgersi che quel
DEFINE è contenuto nel commento iniziale.

6.1.5 Istruzione OUT


Consente di dare allarme se l'esecuzione prosegue oltre la fine del file o del programma in DNC.
Sintassi:

D. ELECTRON 193
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

-- OUT
Se viene incontrata questa istruzione viene un allarme CN 1D14 ERRORE PROGRAMMA.
L'allarme viene in ogni caso, sia che questa riga debba essere eseguita sia che questa riga
debba essere saltata per corpo di IF da non eseguire o per GOTO (anche dentro un DEFINE).
Scopo di questa istruzione è rendere più chiaro il fatto che c'è stato un tentativo di leggere oltre
la fine del file. Se la programmazione è corretta questa riga è del tutto inutile.
Se però questa riga non viene inserita e c'è un errore di programmazione tale da proseguire la
lettura del programma oltre fine file (per esempio: un IF con condizione non vera che non è chiuso
dallo END IF, un GOTO a una LN che non viene trovata, un DEFINE senza un END DEFINE) si ha:
- nel caso di esecuzione da file interno, viene un errore CN1D14 ERRORE PROGRAMMA su
una riga nulla, perché viene letto il carattere 04 hex di chiusura del file che non è ammesso nelle
righe di un part-program
- nel caso di esecuzione da file interno con file chiuso irregolarmente (mancante di carattere 04
hex) viene un errore CMOS 5, lettura oltre fine file. Nota: il file di Z32 può essere chiuso
irregolarmente (mancante di carattere 04 hex) se è creato con un editor esterno, e viene inviato a
Z32 con i normali mezzi di comunicazione
- nel caso di esecuzione da DNC si ha un arresto in attesa di ulteriori istruzioni
In nessuno di questi casi è facile capire immediatamente che si sta leggendo oltre fine file: se si
inserisce la riga --OUT, che da' un errore programma e viene evidenziata come riga errata, si ha
una migliore comprensione del problema.
Questa riga deve essere inserita a fine file, dopo l'ultima istruzione eseguibile (normalmente M2
o G26). Per esempio:
M2
-- OUT
oppure:
G26
-- OUT

6.1.6 Istruzione WAIT


La funzione strutturata “WAIT” (da usare dall'utente finale su specifiche del costruttore) ha
sintassi:
--WAIT condizione
dove:
- condizione è del tipo espressione1 confronto espressione2
dove espressione1 ed espressione2 sono le espressioni matematiche accettate da Z32, e
confronto è espresso da una delle condizioni "<", ">=", "=", ">=", ">". Per esempio:
--WAIT PAL[20] = 0
dove le espressioni sono ridotte al loro essenziale (un parametro e una costante).
Lo scopo di questa istruzione, che arresta la lettura del part-program fino a che la condizione
non è verificata, è sincronizzare il part-program col PLC di macchina con la minima perdita di
tempo.
L'istruzione WAIT è compatibile anche con profili aperti, correzione raggio ecc., ma il progettista
del PLC deve prendere tutte le precauzioni necessarie che tengano conto del fatto che la lettura del
part-program può essere molti blocchi avanti rispetto all'esecuzione.

194 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

Per esempio, ammettiamo di trasmettere ordini al PLC con PAL[1] e di operare il sincronismo
con G112. Il part-program potrebbe essere:
G112 (svuota dalle istruzioni in corso)
PAL[1]<1+8+64+256+512> (accende i bit 0,3,6,8,9)
PAL[20]1 (sync)
--WAIT PAL[20]=0 (il PLC conferma di aver letto i bit contenuti in
PAL[1])
Naturalmente il PLC deve operare velocemente (sezione a 2 millisecondi) per il massimo
risparmio di tempo.

6.2 Subroutines temporanee


Per consentire una migliore gestione dei programmi e dei sottoprogrammi, delle macro, dei cicli
fissi, è stata introdotta una nuova importante risorsa per il CNC Z32: le subroutines temporanee
che nel seguito per brevità chiameremo subtemp.
Questa risorsa è stata creata espressamente per l'uso nell’interfaccia utente ZFlash ma è
disponibile anche per programmazione manuale.
Le subtemp sono files interni di Z32 molto simili come struttura ai files CMOS, ma con importanti
differenze.
Nei paragrafi che seguono si descrivono le caratteristiche delle subtemp.
1) Una subtemp si crea con un --DEFINE ed appartiene al part-program che la genera
L'unico modo per generare una subtemp è dall'interno di un part-program con l'istruzione
strutturata --DEFINE S…
Per esempio:
...
-- DEFINE S20
(CICLO FISSO SEMPLICE DI FORATURA)
G0 Z<HA>
G1 Z<HB>
G0 Z<HA>
G26
-- END DEFINE
...
Si noterà che questo DEFINE si affianca a quello già introdotto per i files CMOS (DEFINE P…):
una delle differenze sostanziali è che le subtemp sono risorse "nuove", che quindi non vanno a
turbare la struttura dei files CMOS di installazioni già consolidate.
Una subtemp è generata da un part-program e ne segue la vita: è, come dice il nome,
"temporanea" in quanto scompare quando il part-program cessa o, a maggior ragione, se la
macchina viene spenta.
2) Sono possibili fino a 64 subtemp per ogni processo, e come si cancella una subtemp
Contrariamente ai files CMOS che, una volta creati, sono accessibili da qualsiasi processo, una
subtemp è accessibile solo dal part-program e dal processo che l'ha generata.
Per esempio, in una macchina multiprocesso, se sono contemporaneamente in esecuzione due
part-program, uno sul processo 0 e uno sul processo 1, i due part-program possono definire due
diverse subtemp con lo stesso numero (per esempio DEFINE S3) senza che le due subtemp
interferiscano tra loro.

D. ELECTRON 195
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

Sono possibili fino a 64 subtemp per ogni processo (numerate da 1 a 64, lo zero è escluso).
Non esiste un'istruzione specifica per cancellare una subtemp, ma in caso di necessità si può
sovrascrivere una subtemp già definita con un'altra nuova. In pratica l'equivalente della
cancellazione di una subtemp si può ottenere sovrascrivendo una subtemp con una nulla.
3) Lo spazio totale disponibile è 1 MB, la singola subtemp può arrivare a max 240 KB
Lo spazio di memoria disponibile per le subtemp (comprensive di tutti i processi) è di 1MB.
Una singola subtemp può avere una lunghezza massima di 240KB.
E' da notare che le subtemp sono destinate all'uso come cicli fissi e macro di sistema, quindi
nell'uso "normale" non dovrebbero essere di grande lunghezza.
4) Cautele nella cancellazione di subtemp
In prima approssimazione si consiglia, finché ciò è possibile, di non cancellare e non
sovrascrivere mai le subtemp, anche se apparentemente già usate: si ricorda che per effetto
dell'anticipo della lettura delle righe rispetto alla loro esecuzione, sono sempre presenti un certo
numero di righe già lette ma in attesa di esecuzione.
Poiché l'operazione DEFINE è un'operazione di lettura, se si cancella immediatamente una
subtemp dopo averla letta, si possono avere problemi di visualizzazione (che può risultare errata)
se il vecchio file viene sovrascritto con un altro.
Poiché lo spazio di 1MB complessivo e la possibilità di 64 subtemp per processo appaiono più
che sufficienti per le necessità di part-program "normali", si consiglia di numerare le subtemp a
partire da 1 in poi e di non cancellarle mai (al RESET di macchina sono comunque
automaticamente cancellate).
Se ci fossero necessità diverse, si consiglia comunque di cancellare le subtemp più vecchie tra
quelle che non servono più, per evitare i problemi di visualizzazione sopra descritti.
5) Nelle subtemp non è ammesso il carattere $ di concatenazione, le righe sono di 240 caratteri
All'interno di una subtemp la lunghezza massima della riga è quella standard di Z32, ossia di
240 caratteri.
Contrariamente a quello che accade per i files CMOS, una riga di una subtemp non può essere
concatenata con un'altra riga col carattere "$".
6) Nuove istruzioni per le subtemp: !GOS…!, G27S…
Dopo essere stata installata in memoria con l'istruzione --DEFINE S… una subtemp può essere
richiamata, con istruzioni analoghe a quelle che richiamano i files CMOS di Z32:
!GOS…! (analoga alla !GOP…! per i files CMOS), per esempio:
!GOS2!
per fare un salto alla subtemp come sottoprogramma (il G26 di fine subtemp provoca il ritorno al
programma chiamante).
!GOS…-N…-N…! (analoga alla !GOP…-N…-N…! per i files CMOS), per esempio:
!GOS2-N1-N20!
per fare un salto alla subtemp come sottoprogramma ed eseguire una serie di righe (il
raggiungimento della riga fine provoca il ritorno al programma chiamante).
G27S… (analoga alla G27P… per i files CMOS), per esempio:
G27S8
per attivare una subtemp come ciclo fisso.
Da notare che le istruzioni G27C0 e G27S0 che annullano il ciclo fisso sono bivalenti, ossia
entrambe annullano sia i cicli fissi di CMOS che i cicli fissi di subtemp. In altre parole, sia per
annullare un G27S… che per annullare un G27C… si può usare indifferentemente G27C0 e
G27S0.

196 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

All'interno di una subtemp sono ammesse (con le stesse modalità valide per i files CMOS) le
istruzioni !GON…!, !GON…-N…!, !GOP…!.
7) Le subtemp sono sempre di utente, non possono essere di sistema
Z32 ha dei meccanismi di protezione di prestazioni critiche di sistema che sono ammesse in
sottoprogrammi "di sistema" (file CMOS da 128 in su) ma sono vietate nei programmi e
sottoprogrammi "di utente" (tutti gli altri).
Le subtemp sono sempre di utente, quindi da una subtemp non sono utilizzabili le risorse
protette di sistema.
8) Da una subtemp non si possono attivare sezioni locali di utensili, origini, parametri
All'interno di una subtemp non sono attivabili le sezioni locali utensili, origini, parametri.
Si ricorda che le sezioni locali si attivano, da un file CMOS, con le istruzioni G37TL (utensili),
G37OL (origini) e G37PL (parametri); se si usano queste istruzioni in una subtemp viene allarme
CN7914 ERRORE SUB TEMPORANEE.
9) Non è possibile la ricerca blocco con stringa all'interno di una subtemp
Non è possibile una ricerca blocco con stringa all'interno di una subtemp, ossia non c'è il
corrispondente del comando P… dell'attività 3 di ricerca blocco.

D. ELECTRON 197
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

198 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

CAPITOLO 7

7. CICLI FISSI E MACRO DI Z32


In questo capitolo vengono descritte le macro ed i cicli fissi standard di Z32. I cicli e le
lavorazioni qui descritte si riferiscono a versioni di SIS T109-8B o successive.
I cicli e le lavorazioni vengono richiamati tramite le funzioni:
G800 CICLI FISSI
G801 MACRO DI POSIZIONAMENTO
G802 MACRO DI LAVORAZIONE

7.1 CICLI FISSI DI Z32 (G800)


Tramite la funzione G800 è possibile programmare i cicli fissi di sistema.
I cicli fissi di sistema sono sottoprogrammi di sistema non modificabili e sono attivabili
programmando:
G800 K..
Dove la lettera K deve essere seguita dal numero che identifica il ciclo da attivare.
Una volta attivato un ciclo fisso, esso è eseguito automaticamente alla fine di ogni
posizionamento in G0 (RAPIDO) programmato. Eventuali movimenti in lavoro non fanno eseguire il
ciclo fisso.
La programmazione della G800 è la seguente:

Passaggio di parametri:
Il passaggio di parametri è effettuabile programmando i parametri da passare sulla stesa riga di
programma dove è programmata la G800. Nella riga di programma dove è presente una G800 non
è possibile programmare parametri diversi da quelli accettati per la programmazione dei cicli fissi.
Ad esempio, riferendosi al ciclo G800K1, è possibile impostare i parametri programmando:
G800 MHA0 MHB-20 MHC10
Un esempio di programmazione non corretta è la seguente:
G800 MHA0 MHB-20 MHC10 F1000
Dato che il parametro F non è espressamente programmabile nella riga della G800, la scrittura
corretta è la seguente:
F1000
G800 MHA0 MHB-20 MHC10

Attivazione di un ciclo fisso


Per richiamare e attivare un ciclo fisso occorre programmare sulla riga della G800 anche il
parametro K di scelta ciclo:
G800K1 MHA0 MHB-20 MHC10
La programmazione dei parametri e l’attivazione del ciclo fisso è possibile sulla stessa riga o su
righe diverse.
Ad esempio sono equivalenti le seguenti istruzioni
G800K1 MHA0 MHB-20 MHC10 (programmazione parametri e attivazione ciclo)

D. ELECTRON 199
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

e
G800 MHA0 MHB-20 MHC10 (programmazione parametri)
G800K1 (attivazione ciclo)

Disattivazione di un ciclo fisso


La disattivazione di un ciclo fisso attivato con G800 si effettua programmando
G800K0
Dopo la disattivazione del ciclo fisso, i parametri del ciclo vengono azzerati, pertanto se si
desidera richiamare un nuovo ciclo fisso, i parametri devono essere riprogrammati.

Sospensione di un ciclo fisso


La funzione G27X sospende il ciclo fisso attivo. G27X è valida solo nel blocco nel quale è
programmata.
Ad esempio
...
800 MHA0 MHB-20 MHC10 K1 (attiva il ciclo fisso)
G0 X100 Y100 (esegue il ciclo fisso)
G27X G0 X200 (non esegue il ciclo fisso)
G0 X200 Y200 (esegue il ciclo fisso)
...

Gestione dei parametri opzionali


Nella definizione dei cicli fissi sono presenti alcuni parametri definiti come opzionali.
Se si desidera non utilizzare alcuni parametri opzionali è possibile non programmare tali
parametri.

200 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.1.1 G800K1: FORATURA SEMPLICE

Parametri obbligatori:
MHA: quota di inizio foro
MHB: quota di fine foro
MHC: quota di uscita lunga

Parametri opzionali per la gestione dell’imbocco:


(MHD): quota di fine imbocco
(MHF): velocità di lavoro nel tratto di imbocco per centratura
Il tratto da MHA a MHD viene percorso alla feed MHF
Se MHF = 0 tutto il foro viene eseguito alla F programmata

Parametri opzionali per la gestione della sosta a fondo foro:


(MHT): tempo di sosta a fondo foro
Se MHT = 0 la sosta non viene eseguita

Descrizione ciclo:
1. Posizionamento in rapido nel piano
2. Avanzamento in rapido fino alla quota di inizio foro MHA
3. Eventuale avanzamento in lavoro a feed MHF fino alla quota MHD
4. Avanzamento in lavoro a feed F fino alla quota MHB
5. Eventuale sosta per MHT secondi
6. Ritorno rapido alla quota MHC

feed MHF

feed F MHC
G0
MHA

MHD

MHB
MHT

D. ELECTRON 201
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

7.1.2 G800K2: FORATURA PROFONDA CON ROTTURA TRUCIOLO

Parametri obbligatori:
MHA: quota di inizio foro
MHB: quota di fine foro
MHC: quota di uscita lunga
MHI: incremento in profondità prima dell’arresto per rottura truciolo
Tipo di gestione della rottura truciolo:
MHR: valore di distacco per rottura truciolo
se MHR > 0 si esegue il distacco e MHT viene ignorato
MHT: tempo di sosta per rottura truciolo
Deve essere programmato o MHR o MHT in funzione della tipologia di rottura truciolo
che si desidera.

Parametri opzionali per la gestione dell’imbocco:


(MHD): quota di fine imbocco
(MHF): velocità di lavoro nel tratto di imbocco per centratura
Il tratto da MHA a MHD viene percorso alla feed MHF
Se MHF = 0 il tratto di imbocco non viene eseguito

Descrizione ciclo:
1. Posizionamento in rapido nel piano
2. Avanzamento in rapido fino alla quota di inizio foro MHA
3. Eventuale avanzamento a feed MHF fino alla quota MHD
4. Movimento in lavoro a feed F fino a raggiungere la quota MHB con rottura truciolo ogni
MHI mm, mediante:
- distacco dalla quota raggiunta di MHR mm se MHR > 0
- sosta di MHT secondi se MHR=0 e MHT>0
5. Ritorno rapido alla quota MHC

feed MHF
MHC
feed F
G0
MHA

MHI MHD MHT

MHR
MHI

MHB

202 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.1.3 G800K3: FORATURA PROFONDA CON SCARICO TRUCIOLO

Parametri obbligatori:
MHA: quota di inizio foro
MHB: quota di fine foro
MHC: quota di uscita lunga
MHI: incremento in profondità prima del ritorno per scarico truciolo.
Tale incremento viene ridotto in percentuale del 10% ad ogni movimento fino al
raggiungimentz del 50% del valore MHI iniziale, dopo di che si hanno incrementi
costanti.
MHZ: quota di scarico truciolo

Parametri opzionali per la gestione dell’imbocco:


(MHD): quota di fine imbocco
(MHF): velocità di lavoro nel tratto di imbocco per centratura
Il tratto da MHA a MHD viene percorso alla feed MHF
Se MHF = 0 il tratto di imbocco non viene eseguito

Parametri opzionali per la gestione del riposizionamento:


(MHS): distanza di sicurezza nei riposizionamenti nel foro.
Se MHS = 0, viene considerata di default una distanza di 0.5

Parametri opzionali per la gestione della sosta alla quota di scarico:


(MHT): eventuale sosta alla quota di scarico truciolo MHZ

Descrizione ciclo:
1. Posizionamento in rapido nel piano
2. Avanzamento in rapido fino alla quota di inizio foro MHA
3. Eventuale avanzamento in lavoro a feed MHF fino alla quota MHD
4. Movimento in lavoro a feed F per una lunghezza MHI
5. ritorno rapido alla quota di scarico truciolo MHZ
6. Eventuale sosta per un tempo MHT
7. Ritorno in rapido fino ad una distanza di sicurezza MHS dalla quota precedentemente
raggiunta
8. Movimento in lavoro per una lunghezza MHI ridotta in percentuale.
L'incremento in profondità viene ogni volta ridotto del 10 % fino a raggiungere il 50 % del
valore iniziale dopo di che si hanno incrementi costanti
9. I punti 5 , 6 , 7 , 8 vengono ripetuti fino a raggiungere la quota di fine foro MHB.
10. Ritorno rapido alla quota MHC
feed MHF
MHC
feed F
MHT
G0
MHZ
MHA

MHD
MHI

MHS

MHB

D. ELECTRON 203
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

7.1.4 G800K4: MASCHIATURA

Parametri obbligatori:
MHA: quota di inizio foro
MHB: quota di fine foro
MHC: quota di uscita lunga
MHP: passo del maschio in millimetri, esempio MHP 1.25
MHM: tipo di maschiatura, rigida o con compensatore
MHM = 0: maschiatura rigida
MHM = 1: maschiatura con compensatore

Parametri opzionali per la gestione delle soste con compensatore


(MHT): tempo di sosta prima comando inversione mandrino
(MHW): tempo di sosta dopo comando inversione mandrino
MHT e MHW sono da utilizzarsi solo per maschiatura con compensatore

Descrizione ciclo maschiatura con compensatore: (MHM = 1)


1. Posizionamento in rapido nel piano
2. Avanzamento in rapido fino alla quota di inizio foro MHA
3. Avanzamento in lavoro fino alla quota MHB ad una F = S * MHP
4. Arresto mandrino
5. Eventuale sosta per MHT secondi
6. Inversione senso rotazione mandrino
7. Eventuale sosta per MHW secondi
8. Ritorno in lavoro alla quota MHA
9. Ritorno rapido alla quota MHC se diversa da MHA
10. Ripristino senso rotazione mandrino

Descrizione ciclo maschiatura rigida: (MHM = 0)


1. Posizionamento in rapido nel piano
2. Avanzamento in rapido fino alla quota di inizio foro MHA
3. Attesa passaggio per lo zero del mandrino
4. Maschiatura con passo MHP e asse Z sincronizzato al mandrino fino quota MHB
5. Inversione senso rotazione mandrino
6. Ritorno con passo MHP fino alla quota MHA
7. Ritorno rapido alla quota MHC se diversa da MHA
8. Ripristino senso rotazione mandrino

MHP
G0 MHC

MHA

MHB

MHT MHW

204 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.1.5 G800K5: ALESATURA

Parametri obbligatori:
MHA: quota di inizio foro
MHB: quota di fine foro
MHC: quota di uscita lunga

Parametri opzionali per la gestione della sosta a fondo foro:


(MHT): tempo di sosta a fondo foro
Se MHT = 0 la sosta non viene eseguita

Descrizione ciclo:
1. Posizionamento in rapido nel piano
2. Avanzamento in rapido fino alla quota di inizio foro MHA
3. Avanzamento in lavoro fino alla quota MHB
4. Eventuale sosta per MHT secondi
5. Ritorno in lavoro alla quota MHA
6. Ritorno rapido fino quota MHC se diversa da MHA

feed F

G0 MHC

MHA

MHB
MHT

D. ELECTRON 205
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

7.1.6 G800K6: BARENATURA

Parametri obbligatori:
MHA: quota di inizio foro
MHB: quota di fine foro
MHC: quota di uscita lunga

Parametri opzionali per la gestione dell’orientamento mandrino:


Se MHS > 0 la macchina dispone dell'orientamento mandrino M19:
(MHQ): valore grossolano dell'angolo su cui sta il tagliente del bareno rispetto allo zero del
trasduttore.
Per conoscere questo valore, orientare il mandrino con M19 e guardare dove si trova il
tagliente.
Il valore dell'angolo deve essere positivo e compreso fra 0 e 360 gradi.
(MHS): valore distacco dalla parete del foro lungo l'angolo MHQ.
Se MHS=0, significa che la macchina non dispone dell’orientamento mandrino,
pertanto il ritorno viene effettuato a centro foro senza distacco dalla parete

Parametri opzionali per la gestione delle soste:


(MHT): tempo di sosta a fondo foro prima dell'arresto o dell'orientamento mandrino
(MHW): tempo di sosta dopo arresto mandrino

Descrizione ciclo:
1. Posizionamento in rapido nel piano
2. Avanzamento in rapido fino alla quota di inizio foro MHA
3. Avanzamento in lavoro fino alla quota MHB
4. Eventuale sosta per MHT secondi
5. Se MHS=0 arresto mandrino ed eventuale sosta per MHW secondi
se MHS>0 orientamento mandrino, distacco di MHS mm lungo l'angolo MHQ
6. Ritorno rapido fino alla quota MHC
se MHS > 0 ritorno rapido in centro foro
7. Ripristino senso rotazione mandrino

feed F
MHC
G0

MHA

MHB
Stop

HS
M
MHG

206 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.1.7 G800K7: FORATURA PROFONDA MISTA CON ROTTURA E SCARICO


TRUCIOLO

Parametri obbligatori:
MHA: quota inizio foro
MHB: quota fine foro
MHC: quota uscita lunga
MHI: incremento dopo il quale fermarsi per rompere il truciolo
Tipo di gestione della rottura truciolo:
MHR: valore di distacco per rottura truciolo
se MHR > 0 si esegue il distacco e MHT viene ignorato
MHT: tempo di sosta per rottura truciolo se MHR = 0
Deve essere programmato o MHR o MHT in funzione della tipologia di rottura truciolo
che si desidera.
MHU: quota fine zona rottura truciolo - inizio zona scarico truciolo
MHL: incremento in profondità prima del ritorno per scarico truciolo
L'incremento viene ogni volta ridotto del 10% fino a raggiungere il 50% del valore
iniziale dopo di che s hanno incrementi costanti
MHZ: quota di scarico truciolo

Parametri opzionali per la gestione dell’imbocco:


(MHD): quota di fine imbocco
(MHF): velocità di lavoro nel tratto di imbocco per centratura
Il tratto da MHA a MHD viene percorso alla feed MHF
Se MHF = 0 il tratto di imbocco non viene eseguito

Parametri opzionali per la gestione del riposizionamento:


(MHS): distanza di sicurezza nei riposizionamenti nel foro.
Se MHS = 0, viene considerata di default una distanza di 0.5

Parametri opzionali per la gestione delle soste:


(MHW): tempo di sosta alla quota di scarico truciolo HZ

Descrizione ciclo:
1. Posizionamento in rapido nel piano
2. Movimento in rapido fino alla quota di inizio foro MHA
3. Eventuale avanzamento a feed MHF fino alla quota MHD
4. Avanzamento in lavoro a feed F fino a raggiungere la quota MHU con rottura truciolo ogni
MHI mm, mediante:
- distacco dalla quota raggiunta di MHR mm se MHR > 0
- sosta di MHT secondi se MHR=0 e MHT > 0
5. Avanzamento in lavoro per una lunghezza pari a MHL
6. Ritorno rapido alla quota di scarico truciolo MHZ
7. Eventuale sosta per un tempo MHW
8. Ritorno in rapido fino ad una distanza di sicurezza MHS dalla quota precedentemente
raggiunta
9. Avanzamento in lavoro per una lunghezza MHL ridotta in percentuale.
L'incremento in profondità viene ogni volta ridotto del 10% fino a raggiungere il 50%
del valore iniziale dopo di che si hanno incrementi costanti.
10. I punti 6, 7, 8, 9 vengono ripetuti fino a raggiungere la quota di fine foro MHB.
11. Ritorno rapido alla quota MHC

D. ELECTRON 207
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

feed MHF
MHC
feed F
MHT
G0
MHA MHZ

MHD

MHI

MHU

MHL

MHS
MHB

7.1.8 G800K8: FORATURA DI DUE PARETI DISTANZIATE

Parametri obbligatori:
MHA: quota inizio foro
MHB. quota fine foro
MHC: quota uscita lunga
MHU: quota fine prima parete
MHV: quota inizio seconda parete

Parametri opzionali per la gestione dell’imbocco:


(MHD): quota di fine imbocco
(MHF): velocità di lavoro nel tratto di imbocco per centratura
Il tratto da MHA a MHD viene percorso alla feed MHF
Se MHF=0 il tratto di imbocco non viene eseguito

Parametri opzionali per la gestione della rottura truciolo:


(MHI): incremento in profondità prima dell’ arresto per rottura truciolo
HI0 non si effettua rottura truciolo
Tipo di rottura truciolo:
(MHR): valore di distacco per rottura truciolo
se MHR > 0 si esegue il distacco e MHT viene ignorato
(MHT): tempo di sosta per rottura truciolo se MHR = 0
Deve essere programmato o MHR o MHT in funzione della tipologia di rottura truciolo
che si desidera.

Descrizione ciclo
1. Posizionamento in rapido nel piano
2. Avanzamento in rapido fino alla quota di inizio foro MHA
3. Eventuale avanzamento a feed MHF fino alla quota MHD
4. Avanzamento in lavoro a feed F fino a raggiungere la quota HU con eventuale rottura
truciolo ogni MHI mm, mediante:
distacco dalla quota raggiunta di MHR mm se MHR > 0
sosta di MHT secondi se MHR=0 e MHT > 0
5. Rapido fino alla quota MHV
6. Avanzamento in lavoro a feed F fino a raggiungere la quota MHB con eventuale rottura
truciolo ogni MHI mm, mediante :

208 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

distacco dalla quota raggiunta di MHR mm se MHR > 0


sosta di MHT secondi se MHR=0 e MHT > 0
7. Ritorno rapido alla quota MHC

feed MHF
MHC
feed F
G0
MHA

MHD
MHI
MHU

MHV
MHI

MHB

7.1.9 G800K9: FORATURA DI TRE ZONE DIFFERENZIATE

Parametri obbligatori:
MHA: quota inizio foro
MHB: quota fine foro
MHC: quota uscita lunga
Zona intermedia:
MHU: quota fine zona alta - inizio zona intermedia
(MHJ): velocità di lavoro nella zona intermedia. Se MHJ=0, la Feed della zona intermedia è
uguale alla Feed della zona alta
(MHG): Speed nella zona intermedia. Se MHG=0, la Speed della zona intermedia è uguale
alla Speed della zona alta

Parametri opzionali per la gestione della zona bassa:


(MHV): quota fine zona intermedia - inizio zona bassa
Se MHV = 0 non esiste zona bassa. La zona intermedia termina a MHB
(MHK): velocità di lavoro nella zona bassa
(MHH): Speed nella zona bassa. Se MHH=0, la Speed della zona bassa è uguale alla Speed
della zona intermedia

Parametri opzionali per la gestione dell’imbocco:


(MHD): quota di fine imbocco
(MHF): velocità di lavoro nel tratto di imbocco per centratura
Il tratto da MHA a MHD viene percorso alla feed MHF
Se MHF = 0 il tratto di imbocco non viene eseguito

Parametri opzionali per la gestione della rottura truciolo:


(MHI): incremento in profondità prima dell’arresto per rottura truciolo
Se MHI = 0 non si effettua rottura truciolo
(MHR): valore di distacco per rottura truciolo
Se MHR > 0 si esegue il distacco e MHT viene ignorato
(MHT): tempo di sosta per rottura truciolo se MHR = 0

D. ELECTRON 209
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

Deve essere programmato o MHR o MHT in funzione della tipologia di rottura truciolo
che si desidera.

Parametri opzionali per la gestione del cambio di speed:


(MHS): valore di distacco per cambio speed
(MHW): tempo di sosta dopo distacco MHS per andata a regime mandrino

Descrizione ciclo
1. Posizionamento in rapido nel piano
2. Avanzamento in rapido fino alla quota di inizio foro MHA
3. Eventuale avanzamento a feed MHF fino alla quota MHD
4. Avanzamento in lavoro a feed F fino a raggiungere la quota MHU con eventuale rottura
truciolo ogni MHI mm, mediante:
distacco dalla quota raggiunta di MHR mm se MHR > 0
sosta di MHT secondi se MHR=0 e MHT > 0
5. Se MHG > 0 distacco di MHS mm dalla quota MHU, attivazione di MHG e sosta di MHW
secondi per attendere mandrino a regime
6. Avanzamento in lavoro a feed MHJ fino a raggiungere la quota MHV con eventuale rottura
truciolo ogni MHI mm, mediante:
distacco dalla quota raggiunta di MHR mm se MHR > 0
sosta di MHT secondi se MHR=0 e MHT > 0
7. Se MHH > 0 distacco di MHS mm dalla quota MHV, attivazione di MHH e sosta di MHW
secondi per attendere mandrino a regime
8. Avanzamento in lavoro a feed MHK fino a raggiungere la quota MHB con eventuale
rottura truciolo ogni MHI mm, mediante:
distacco dalla quota raggiunta di MHR mm se MHR > 0
sosta di MHT secondi se MHR=0 e MHT > 0
9. Ritorno rapido alla quota MHC

feed MHF feed MHJ


MHC
feed F feed MHK
G0
MHA

MHD
MHI
MHU
MHI
MHV

MHI
MHB

210 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.1.10 G800K10: FRESA-ALESATURA INTERNA

Parametri obbligatori:
MHB: quota fine foro
MHC: quota uscita lunga
MHD: diametro del foro
MHD > 0: lavorazione in senso antiorario (G3)
MHD < 0: lavorazione in senso orario (G2)

Parametri opzionali per la gestione di più passate:


(MHA): quota di inizio lavorazione
(MHK): incremento a giro

Descrizione ciclo
1. Posizionamento in rapido nel piano a centro foro
2. Se MHK > 0, attacco alla lavorazione alla quota MHA e discesa con moto a spirale fino al
raggiungimento della quota MHB.
La discesa viene effettuata incrementando la profondità di MHK a giro.
Se MHK = 0, discesa in lavoro fino alla quota MHB, attacco al profilo e lavorazione di
contornitura con un singolo giro.
Le passate di contornitura sono effettuate in senso orario o antiorario con il seguente
criterio:
MHD > 0: lavorazione in senso antiorario (G3)
MHD < 0: lavorazione in senso orario (G2)
3. Distacco dalla parete e ritorno a centro foro
4. Ritorno rapido alla quota MHC

MHD > 0

MHD MHD < 0

MHC
MHA

MHK

MHB

D. ELECTRON 211
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

7.1.11 G800K11: FRESA-ALESATURA ESTERNA

Parametri obbligatori:
MHB: quota fine perno
MHC: quota uscita lunga
MHD: diametro del perno
MHD > 0: lavorazione in senso antiorario (G3)
MHD < 0: lavorazione in senso orario (G2)

Parametri opzionali per la gestione di più passate:


(MHA): quota di inizio lavorazione
(MHK): incremento a giro

Parametri opzionali per la gestione dell’attacco:


(MHS): distanza del posizionamento iniziale dal punto di attacco
Se MHS = 0, viene perso un default pari ad 1.

Descrizione ciclo
1. Posizionamento in rapido nel piano sul centro perno
2. Posizionamento sul punto di attacco, ad una distanza MHS dalla superficie del perno
3. Se MHK > 0, attacco alla lavorazione alla quota MHA e discesa con moto a spirale fino al
raggiungimento della quota MHB.
La discesa viene effettuata incrementando la profondità di MHK a giro.
Se MHK = 0, discesa in lavoro fino alla quota MHB, attacco al profilo e lavorazione di
contornitura con un singolo giro.
Le passate di contornitura sono effettuate in senso orario o antiorario con il seguente
criterio:
MHD > 0: lavorazione in senso antiorario (G3)
MHD < 0: lavorazione in senso orario (G2)
4. Distacco dalla parete
5. Ritorno rapido alla quota MHC
6. Ritorno a centro perno

MHD > 0

MHS

MHD
MHD < 0

MHC
MHA

MHK

MHB

212 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.2 MACRO DI POSIZIONAMENTO DI Z32 (G801)

Tramite la funzione G801 è possibile programmare macro di posizionamento.


Le macro di posizionamento sono sottoprogrammi di sistema non modificabili e sono attivabili
programmando
G801 K..
Dove la lettera K deve essere seguita dal numero che identifica il ciclo da attivare.
La programmazione di una macro di posizionamento provoca l’esecuzione dei posizionamenti
richiesti.
Generalmente tali macro sono usate in combinazione con cicli fissi o con macro-lavorazioni
(G802) usate come ciclo fisso.
La programmazione della G801 è la seguente:

Passaggio di parametri:
Il passaggio di parametri è effettuabile programmando i parametri da passare sulla stesa riga di
programma dove è programmata la G801. Nella riga di programma dove è presente una G801 non
è possibile programmare parametri diversi da quelli accettati per la programmazione dei cicli fissi.
Ad esempio, riferendosi al ciclo G801K1, è possibile impostare i parametri programmando:
G801 MPX0 MPY0 MPJ10 MPK5 MPN5

Un esempio di programmazione non corretta è la seguente:


G801 MPX0 MPY0 MPJ10 MPK5 MPN5 F1000

Dato che il parametro F non è espressamente programmabile nella riga della G801, la scrittura
corretta è la seguente:
F1000
G801 MPX0 MPY0 MPJ10 MPK5 MPN5

Attivazione di una macro di posizionamento


Per richiamare e attivare una macro di posizionamento occorre programmare sulla riga della
G801 anche il parametro K di scelta macro:
G801K1 MPX0 MPY0 MPJ10 MPK5 MPN5

La programmazione dei parametri e l’attivazione della macro è possibile sulla stessa riga o su
righe diverse.
Ad esempio sono equivalenti le seguenti istruzioni
G801K1 MPX0 MPY0 MPJ10 MPK5 MPN5 (programmazione parametri e
attivazione macro)
e
G801 MPX0 MPY0 MPJ10 MPK5 MPN5 (programmazione parametri)
G801K1 (attivazione macro)

D. ELECTRON 213
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

Al termine della lavorazione i parametri del ciclo vengono azzerati, pertanto se si desidera
richiamare una nuova lavorazione, i parametri devono essere riprogrammati.

Gestione dei parametri opzionali


Nella definizione delle macro di posizionamento sono presenti alcuni parametri definiti come
opzionali.
Se si desidera non utilizzare alcuni parametri opzionali è possibile non programmare tali
parametri.
Le macro di posizionamento disponibili possono essere utilizzate in due modalità:

Come posizionamento su cui eseguire un ciclo fisso


Nel caso che nei punti si desideri effettuare un ciclo fisso, occorrerà prima attivare il ciclo fisso, e
poi richiamare la macro di posizionamento. Il ciclo fisso andrà disattivato (G27 C0) dopo la
chiamata alla macro di posizionamento, o comunque dopo i posizionamenti sui quali si vuole
attivare il ciclo fisso.

Come posizionamento su cui eseguire una lavorazione qualunque


Nel caso in cui si desideri eseguire una lavorazione qualunque, la lavorazione dovrà essere
memorizzata in un file CMOS (dal file 1 al file 109). La memorizzazione può essere fatta editando
direttamente il file 90, oppure può essere fatta usando la funzione “--DEFINE P” all’interno dello
stesso part-program.

Nel caso in cui si utilizzi la macro di posizionamento per posizionare una lavorazione contenuta
in un file CMOS, è possibile abilitare la rotazione del il part-program durante i posizionamenti
(vedere l’esempio alla fine della descrizione delle macro di posizionamento).
E’ possibile inoltre non eseguire il posizionamento su un certo numero di punti a scelta del
programmatore:
il parametro FN determina quanti sono i punti che si desidera saltare. I valori inseriti nei
parametri PAR (da PAR[1] fino a PAR[FN]) determinano quali posizionamenti non effettuare.
La numerazione dei punti da saltare segue l’ordine con cui verranno eseguiti i posizionamenti.
Nota: Se si utilizza una macro di posizionamento per ripetere una lavorazione contenuta
all’interno di un file CMOS, il controllo farà uso dei parametri DA, DB e QR per traslare e ruotare la
lavorazione sui vari punti di posizionamento. Dovrà essere cura di chi struttura il programma di non
fare uso di tali funzionalità in modo da non entrare in contrasto con la macro di posizionamento.

214 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.2.1 G801K1: LINEA DATI PUNTO INIZIALE ED INCREMENTI

Parametri obbligatori:
MPX, MPY: coordinate del punto iniziale
MPJ, MPK: incrementi sul primo e sul secondo asse del piano
MPN: numero di punti

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta di posizionamento

Parametri opzionali per la gestione del salto di alcuni posizionamenti


(MPS): numero di punti da saltare. I numeri dei punti da saltare vanno memorizzati nel
vettore PAR da PAR[1] a PAR[MPS]

MPK

MPX 0

MPJ

MPY

7.2.2 G801K2: LINEA DATI PUNTO INIZIALE, ANGOLO E DISTANZA FRA I PUNTI

Parametri obbligatori:
MPX, MPY: coordinate del punto iniziale
MPG: angolo di inclinazione della retta
MPP: distanza tra i punti
MPN: numero di punti

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

Parametri opzionali per la gestione del salto di alcuni posizionamenti


(MPS): numero di punti da saltare. I numeri dei punti da saltare vanno memorizzati nel
vettore PAR da PAR[1] a PAR[MPS]

D. ELECTRON 215
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

P
MP

0 MPG
MPX

MPY

7.2.3 G801K3: LINEA DATI PUNTO INIZIALE E PUNTO FINALE

Parametri obbligatori:
MPX, MPY: coordinate del punto iniziale
MPA, MPB: coordinate del punto finale
MPN: numero di punti

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

Parametri opzionali per la gestione del salto di alcuni posizionamenti


(MPS): numero di punti da saltare. I numeri dei punti da saltare vanno memorizzati nel
vettore PAR da PAR[1] a PAR[MPS]

MPB

MPX 0
MPA

MPY

216 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.2.4 G801K4: RETICOLO DATI INCREMENTI SU RIGA E SU COLONNA

Parametri obbligatori:
MPX, MPY: coordinate del punto iniziale
MPJ, MPK: incrementi sulla riga
MPV, MPW: incrementi sulla colonna
MPN: numero di punti sulla riga
MPM: numero di punti sulla colonna

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

Parametri opzionali per la gestione del salto di alcuni posizionamenti


(MPS): numero di punti da saltare. I numeri dei punti da saltare vanno memorizzati nel
vettore PAR da PAR[1] a PAR[MPS]

MPV
MPJ
MPK

MPW
MP M

MPY
MPN

0 MPX

7.2.5 G801K5: RETICOLO DATI PUNTO INIZIALE, INCREMENTI ED ANGOLI

Parametri obbligatori:
MPX, MPY: coordinate del punto iniziale
MPP: distanza tra i punti sulla riga
MPG: angolo delle righe rispetto al primo asse del piano
MPQ: distanza tra i punti sulla colonna
MPT: angolo delle colonne rispetto al primo asse del piano
MPN: numero di punti sulla riga
MPM: numero di punti sulla colonna

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

D. ELECTRON 217
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

Parametri opzionali per la gestione del salto di alcuni posizionamenti


(MPS): numero di punti da saltare. I numeri dei punti da saltare vanno memorizzati nel
vettore PAR da PAR[1] a PAR[MPS]

MPT
MPP

MPQ

MP M

MPG

MPY
MPN

0 MPX

7.2.6 G801K6: RETICOLO DATI PUNTI INIZIALI E FINALI DI RIGA E DI COLONNA

Parametri obbligatori:
MPX, MPY: coordinate del punto iniziale della prima riga
MPA, MPB: coordinate del punto finale della prima riga, punto iniziale dell’ultima colonna
MPC, MPD: coordinate del punto finale dell’ultima colonna
MPN: numero di punti sulla riga
MPM: numero di punti sulla colonna

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

Parametri opzionali per la gestione del salto di alcuni posizionamenti


(MPS): numero di punti da saltare. I numeri dei punti da saltare vanno memorizzati nel
vettore PAR da PAR[1] a PAR[MPS]

MPD
MP M

MPB
MPY
MPN

0 MPX MPA MPC

218 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.2.7 G801K7: CIRCONFERENZA DATI ANGOLO INIZIALE E INCREMENTO


TOTALE

Parametri obbligatori:
MPX, MPY: coordinate del centro della circonferenza
MPC: raggio della circonferenza (valore positivo o negativo)
Se MPC è positivo, i posizionamenti avvengono in senso antiorario
Se MPC è negativo, i posizionamenti avvengono in senso orario
MPA: angolo iniziale
MPN: numero di punti

Parametri opzionali per la gestione della lunghezza dell’arco da coprire


(MPL): incremento totale (valore positivo)
Se MPL = 0 oppure MPL = 360 i punti vengono suddivisi sull’intera circonferenza

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

Parametri opzionali per la gestione del salto di alcuni posizionamenti


(MPS): numero di punti da saltare. I numeri dei punti da saltare vanno memorizzati nel
vettore PAR da PAR[1] a PAR[MPS]

Parametri opzionali per la gestione del tipo di posizionamento


(MPW): gestione spostamento fra un punto e l'altro
MPW = 0 : spostamento rettilineo
MPW = 1: spostamento circolare

MPL

MPA

MPY

MPC

0 MPX

D. ELECTRON 219
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

7.2.8 G801K8: CIRCONFERENZA DATI ANGOLO INIZIALE E DISTANZA


ANGOLARE

Parametri obbligatori:
MPX, MPY: coordinate del centro della circonferenza
MPC: raggio della circonferenza (valore positivo o negativo)
Se MPC è positivo i posizionamenti vengono fatti in senso antiorario
Se MPC è negativo i posizionamenti vengono fatti in senso orario
MPA: angolo iniziale
MPN: numero di punti

Parametri opzionali per la gestione della lunghezza dell’arco da coprire


(MPP): distanza angolare tra i punti (valore positivo)
Se MPP = 0, i punti vengono suddivisi sull’intera circonferenza a partire dall’angolo
iniziale.

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

Parametri opzionali per la gestione del salto di alcuni posizionamenti


(MPS): numero di punti da saltare. I numeri dei punti da saltare vanno memorizzati nel
vettore PAR da PAR[1] a PAR[MPS]

Parametri opzionali per la gestione del tipo di posizionamento


(MPW): gestione spostamento fra un punto e l'altro
MPW = 0 : spostamento rettilineo
MPW = 1: spostamento circolare

MPP

MPA

MPY

MPC

0 MPX

220 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.2.9 G801K9: CIRCONFERENZA DATI L'ANGOLO INIZIALE E L'ANGOLO FINALE

Parametri obbligatori:
MPX, MPY: coordinate del centro della circonferenza
MPC: raggio della circonferenza (valore positivo o negativo)
Se MPC è positivo i posizionamenti vengono fatti in senso antiorario
Se MPC è negativo i posizionamenti vengono fatti in senso orario
MPA: angolo iniziale
MPB: angolo finale
Se MPA = MPB, i punti vengono suddivisi sull’interna circonferenza a partire
dall’angolo iniziale.
MPN: numero di punti

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

Parametri opzionali per la gestione del salto di alcuni posizionamenti


(MPS): numero di punti da saltare. I numeri dei punti da saltare vanno memorizzati nel
vettore PAR da PAR[1] a PAR[MPS]

Parametri opzionali per la gestione del tipo di posizionamento


(MPW): gestione spostamento fra un punto e l'altro
MPW = 0 : spostamento rettilineo
MPW = 1: spostamento circolare

M
PB
M PA

MPY

MPC

0 MPX

D. ELECTRON 221
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

7.2.10 G801K10: RETTANGOLO DATO IL CENTRO E IL PASSO

Parametri obbligatori:
MPX, MPY: coordinate del centro del rettangolo
MPG: angolo rotazione rettangolo
MPN: numero di punti sulla base del rettangolo
MPP: distanza fra i punti sulla base
MPM: numero di punti sull'altezza del rettangolo
MPQ: distanza fra i punti sull'altezza

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

MPP
MPQ

MPG

MPY
MP
M

N
MP

MPX
0

7.2.11 G801K11: RETTANGOLO DATO IL CENTRO ED I LATI

Parametri obbligatori:
MPX, MPY: coordinate del centro del rettangolo
MPG: angolo rotazione rettangolo
MPN: numero di punti sulla base del rettangolo
MPL: base del rettangolo
MPM: numero di punti sull'altezza del rettangolo
MPH: altezza del rettangolo

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

222 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

L
MP

MP
H
G
MP

MPY

MP
M
N
MP

MPX
0

7.2.12 G801K12: RETTANGOLO DATO UNO SPIGOLO E IL PASSO

Parametri obbligatori:
MPX, MPY: coordinate dello spigolo in basso a sinistra
MPG: angolo rotazione rettangolo
MPN: numero di punti sulla base del rettangolo
MPP: distanza tra i punti sulla base
MPM: numero di punti sull'altezza del rettangolo
MPQ: distanza tra i punti sull’altezza

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

P
MP
MP
Q
MPG
MP
M

MPY MPN

MPX
0

D. ELECTRON 223
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

7.2.13 G801K13: RETTANGOLO DATO UNO SPIGOLO ED I LATI

Parametri obbligatori:
MPX, MPY: coordinate dello spigolo in basso a sinistra
MPG: angolo rotazione rettangolo
MPN: numero di punti sulla base del rettangolo
MPL: base del rettangolo
MPM: numero di punti sull'altezza del rettangolo
MPH: altezza del rettangolo

Parametri opzionali per la gestione del posizionamento di una lavorazione


(MPF): MPF = 0 : sui punti si posiziona un ciclo fisso
MPF <> 0 : sui punti si posiziona una figura programmata in nel programma CMOS
numero MPF
(MPR): MPR = 0 : non ruota la figura
MPR = 1 : ruota la figura dell’angolo di inclinazione della retta

L
MP

MP
H
G
MP
MP
M

N
MPY MP

MPX
0

224 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3 MACRO DI LAVORAZIONE DI Z32 (G802)

Tramite la funzione G802 è possibile programmare macro di lavorazione.


Le macro di lavorazione sono sottoprogrammi di sistema non modificabili e sono attivabili
programmando
G802 K..
Dove la lettera K deve essere seguita dal numero che identifica il ciclo da attivare.
La programmazione della G802 è la seguente:

Passaggio di parametri:
Il passaggio di parametri è effettuabile programmando i parametri da passare sulla stesa riga di
programma dove è programmata la G802. Nella riga di programma dove è presente una G802 non
è possibile programmare parametri diversi da quelli accettati per la programmazione dei cicli fissi.
Rispetto alle G800 e G801, nella programmazione della G802 è possibile programmare le quote
degli assi continui per definire il punto di riferimento della macro (ad esempio il centro di una cava)
Ad esempio, riferendosi al ciclo G802K1, è possibile impostare i parametri programmando:
G802 X10 Y10 MMA0 MMB-20 MMC10

Un esempio di programmazione non corretta è la seguente:


G802 X10 Y10 MMA0 MMB-20 MMC10 F1000

Dato che il parametro F non è espressamente programmabile nella riga della G802, la scrittura
corretta è la seguente:
F1000
G802 X10 Y10 MMA0 MMB-20 MMC10

Attivazione di una macro di lavorazione


Per richiamare e attivare un ciclo fisso occorre programmare sulla riga della G802 anche il
parametro K di scelta ciclo:
G802K1 X10 Y10 MMA0 MMB-20 MMC10

La programmazione dei parametri e l’attivazione del ciclo fisso è possibile sulla stessa riga o su
righe diverse.
Ad esempio sono equivalenti le seguenti istruzioni
G802K1 X10 Y10 MMA0 MMB-20 MMC10 (programmazione parametri e
attivazione ciclo)
e
G802 X10 Y10 MMA0 MMB-20 MMC10 (programmazione parametri)
G802K1 (attivazione ciclo)
Al termine della lavorazione i parametri del ciclo vengono azzerati, pertanto se si desidera
richiamare una nuova lavorazione, i parametri devono essere riprogrammati.

D. ELECTRON 225
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

Gestione dei parametri opzionali


Nella definizione dei cicli fissi sono presenti alcuni parametri definiti come opzionali.
Se si desidera non utilizzare alcuni parametri opzionali è possibile non programmare tali
parametri.

Uso di una macro di lavorazione come un ciclo fisso


Programmando il parametro HX1 sulla riga della G802 K.. è possibile usare una macro di
lavorazione come un ciclo fisso in modo da poter replicare tale macro su più punti.
Ad esempio è possibile abbinare una macro di lavorazione usata come ciclo fisso con una
macro di posizionamento.
Nel caso in cui una macro di lavorazione sia utilizzata come ciclo fisso, il punto di riferimento
della macro programmato con le quote assi (ad esempio il centro di una cava) non sarà più
impostato sulla riga della G802, dato che il punto su cui posizionare la macro viene deciso dai
posizionamenti successivi.

Ad esempio:
G802 MMA0 MMB-30 MMC10 MMD60
G802K1 HX1 MMK1 MME2 MMW1 MMQ4
Si può notare che non sono programmate le quote del centro cava

La disattivazione del ciclo fisso si effettua con la funzione


G802K0
Dopo la disattivazione del ciclo fisso, i parametri del ciclo vengono azzerati, pertanto se si
desidera richiamare un nuovo ciclo fisso, i parametri devono essere riprogrammati.

La sospensione del ciclo fisso si opera con la funzione G27X (vedi introduzione ai cicli fissi
G800).

Usando una macro di lavorazione in congiunzione con una macro di posizionamento è possibile
utilizzare la rotazione della lavorazione (parametro MHR).

226 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.1 G802K1: SGROSSATURA DI CAVE CIRCOLARI

Geometria della cava:


- La cava viene definita con:
- Coordinate del centro cava
- Diametro della cava (parametro MMD)
- Quota di inizio cava (parametro MMA)
- Quota di fine cava (parametro MMB)
- La cava può essere conica (parametro MMN)

Ciclo di svuotamento:
- Lo svuotamento avviene partendo dal centro verso l’esterno con movimento a spirale.
- La feed di lavoro nel piano è pari al parametro F
- La distanza tra le varie passate nel piano è funzione del parametro MMP, che definisce la
sovrapposizione tra le passate.
- Le passate nel piano possono essere effettuate in senso antiorario o in senso orario. Se il
parametro MMJ è pari a 0 le passate sono eseguite in senso antiorario (lavorazione in
concordanza con utensile che gira in M3), se MMJ è 1, le passate sono eseguite in senso
orario (lavorazione in discordanza con utensile che gira in M3).
- Il parametro MMS definisce il sovrametallo da lasciare.
- Se il parametro MMV è posto uguale ad 1, a fine svuotamento viene effettuata un’ulteriore
passata nel piano che toglie il sovrametallo MMS programmato. Questa eventuale ulteriore
passata viene eseguita con attacco e distacco circolare.

Incremento di passata:
-L’incremento di passata in profondità (parametro MMK) può essere eseguito a centro cava
in un preforo oppure con discesa in rampa.
Se il parametro MMW è 0, alla fine di ogni passata nel piano, l’utensile si stacca dalla
superficie lavorata di una quantità pari alla distanza di sicurezza (parametro MME), si
posiziona in rapido in centro cava ed effettua l’incremento di passata con feed pari a MMF.
Se il parametro MMW è 1, l’incremento di passata avviene con discesa in rampa. Il
parametro MMQ indica la pendenza massima della rampa. A seconda dell’ incremento di
passata da effettuare e del massimo angolo di rampa MMQ, la discesa viene effettuata con
un movimento a spirale intorno al centro cava con feed pari a MMF. Se il parametro MMQ
è nullo, la discesa viene effettuata con un unico movimento.

A fine lavorazione viene eseguito un disimpegno fino a quota MMC

Sono utilizzabili utensili cilindrici e utensili torici. Il parametro R definisce il raggio fresa, nel
caso di utensili torici, il parametro MMU definisce il raggio dell’inserto.

Lista parametri macro sgrossatura cave circolari:

Parametri obbligatori:
coordinate del centro cava (programmate con le quote degli assi)
MMD: diametro della cava
MMA: quota di inizio cava
MMB: quota di fine cava
MMC: quota di ritorno alto
MMK: profondità di passata
MME: distanza di sicurezza

Parametri opzionali per la gestione della conicità:


(MMN): conicità (angolo di sformatura). Deve essere compreso tra 0 e 80 gradi.

D. ELECTRON 227
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

Parametri opzionali per la gestione della feed di affondamento:


(MMF): feed di affondamento. Se non programmata, o programmata uguale a 0, viene
considerata una feed di affondamento pari ad F

Parametri opzionali per la gestione della discesa in rampa:


(MMW): discesa in rampa:
MMW=0: discesa in centro cava dentro ad un preforo
MMW=1: discesa in rampa con pendenza massima MMQ
(MMQ): massima pendenza della rampa di discesa. Se MMQ=0, la discesa avviene con un
unico movimento.

Parametri opzionali per la gestione del ricoprimento:


(MMP): ricoprimento minimo tra le passate. Compreso tra 0.2 e 1.9 volte il raggio fresa. Se
MMP=0, viene assunto MMP=0.2 volte il raggio fresa

Parametri opzionali per la gestione del senso di percorrenza:


(MMJ): senso di percorrenza:
MMJ=0 senso antiorario (concordanza)
MMJ=1 senso orario (discordanza)

Parametri opzionali per la gestione del sovrametallo:


(MMS): sovrametallo
(MMV): gestione del sovrametallo a fine passata:
MMV=0 lascia il sovrametallo
MMV=1 toglie il sovrametallo

Parametri opzionali per la gestione di utensili non cilindrici:


(MMU): raggio dell’inserto per utensili torici
Il parametro R rappresenta il raggio utensile, il parametro MMU il raggio dell’inserto:
MMU=0, la fresa è cilindrica
MMU<R, la fresa è torica
MMU=R, la fresa è sferica

MMP MMJ=0

AA, AB
MMJ=1

MMD
R MMC
MMS MME
MMA

MMK

MMB
MMU MMN

228 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.2 G802K2: SGROSSATURA DI CAVE RETTANGOLARI NOTO IL CENTRO


CAVA

Geometria della cava:


- La cava viene definita con:
- Coordinate del centro cava
- Lunghezza dei due lati (parametri MML e MMH)
- Angolo di rotazione nel piano (parametro MMG)
- Quota di inizio cava (parametro MMA)
- Quota di fine cava (parametro MMB)
- Gli spigoli della cava possono essere raccordati (parametro MMR)
- La cava può essere conica (parametro MMN). Nel caso di cava conica, i raggi di raccordo
possono essere gestiti come raccordi costanti o variabili (parametro MMX).

Ciclo di svuotamento:
- Lo svuotamento avviene partendo dal centro verso l’esterno con passate parallele ai lati
della cava.
- La feed di lavoro nel piano è pari al parametro F
- La distanza tra le varie passate nel piano è funzione del parametro MMP, che definisce la
sovrapposizione tra le passate.
- Le passate nel piano possono essere effettuate in senso antiorario o in senso orario. Se il
parametro MMJ è pari a 0 le passate sono eseguite in senso antiorario (lavorazione in
concordanza con utensile che gira in M3), se MMJ è 1, le passate sono eseguite in senso
orario (lavorazione in discordanza con utensile che gira in M3).
- L’ultima passata nel piano viene eseguita con attacco e distacco circolare.
- Il parametro MMS definisce il sovrametallo da lasciare.
- Se il parametro MMV è posto uguale ad 1, a fine svuotamento viene effettuata un’ulteriore
passata nel piano che toglie il sovrametallo MMS programmato. Questa eventuale ulteriore
passata viene eseguita con attacco e distacco circolare.

Incremento di passata:
-L’incremento di passata in profondità (parametro MMK) può essere eseguito a centro cava
in un preforo oppure con discesa in rampa.
Se il parametro MMW è 0, alla fine di ogni passata nel piano, l’utensile si stacca dalla
superficie lavorata di una quantità pari alla distanza di sicurezza (parametro MME), si
posiziona in rapido in centro cava ed effettua l’incremento di passata con feed pari a MMF.
Se il parametro MMW è 1, l’incremento di passata avviene con discesa in rampa. Il
parametro MMQ indica la massima pendenza di rampa. A seconda dell’ incremento di
passata da effettuare e del massimo angolo di rampa MMQ, la discesa viene effettuata con
un movimento a ZIG ZAG con feed pari a MMF. Se il parametro MMQ è nullo, la discesa
viene effettuata con un unico movimento.

A fine lavorazione viene eseguito un disimpegno fino a quota MMC

Sono utilizzabili utensili cilindrici e utensili torici. Il parametro R definisce il raggio fresa, nel
caso di utensili torici, il parametro MMU definisce il raggio dell’inserto.

Lista parametri macro sgrossatura cave rettangolari noto il centro cava:

Parametri obbligatori:
coordinate del centro cava (programmate con le quote degli assi)
MML: base della cava
MMH: altezza della cava
MMR: raggio del raccordo
MMA: quota di inizio cava
MMB: quota di fine cava

D. ELECTRON 229
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

MMC: quota di ritorno alto


MME: distanza di sicurezza
MMK: profondità di passata

Parametri opzionali per la gestione della rotazione della cava:


(MMG): angolo di rotazione della cava.

Parametri opzionali per la gestione della conicità:


(MMN): conicità (angolo di sformatura). Deve essere compreso tra 0 e 80 gradi.
(MMX): gestione dei raccordi in caso di cava conica:
MMX=0 raccordi variabili
MMX=1 raccordi costanti

Parametri opzionali per la gestione della feed di affondamento:


(MMF): feed di affondamento. Se non programmata, o programmata uguale a 0, viene
considerata una feed di affondamento pari ad F

Parametri opzionali per la gestione della discesa in rampa:


(MMW): discesa in rampa:
MMW=0: discesa in centro cava dentro ad un preforo
MMW=1: discesa in rampa con pendenza massima MMQ
(MMQ): massima pendenza della rampa di discesa. Se MMQ=0, la discesa avviene con un
unico movimento.

Parametri opzionali per la gestione del ricoprimento:


(MMP): ricoprimento minimo tra le passate. Compreso tra 0.2 e 1.9 volte il raggio fresa. Se
MMP=0, viene assunto MMP=0.2 volte il raggio fresa

Parametri opzionali per la gestione del senso di percorrenza:


(MMJ): senso di percorrenza:
MMJ=0 senso antiorario (concordanza)
MMJ=1 senso orario (discordanza)

Parametri opzionali per la gestione del sovrametallo:


(MMS): sovrametallo
(MMV): gestione del sovrametallo a fine passata:
MMV=0 lascia il sovrametallo
MMV=1 toglie il sovrametallo

Parametri opzionali per la gestione di utensili non cilindrici:


(MMU): raggio dell’inserto per utensili torici
Il parametro R rappresenta il raggio utensile, il parametro MMU il raggio dell’inserto:
MMU=0, la fresa è cilindrica
MMU<R, la fresa è torica
MMU=R, la fresa è sferica
MMP
MMG
MMR
AA, AB

MMH
MML
MMC
MMS MME
R MMA

MMK

MMB
MMU MMN

230 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.3 G802K3: SGROSSATURA DI CAVE RETTANGOLARI NOTO UNO SPIGOLO

Il ciclo di lavorazione di questa macro è del tutto uguale alla macro di sgrossatura di cave
rettangolari dato il centro cava. L’unica differenza sta nel fatto che, al posto delle coordinate
del centro cava, vengono date le coordinate di uno spigolo della cava.

In questo caso i parametri AA e AB rappresentano uno spigolo della cava, MML e MMH sono
i due lati della cava. Il segno di MML e di MMH deve essere dato in accordo alla figura
sottostante:

MML>0

MMH>0 MMH<0

MML>0
MML<0

MMH>0 MMH<0

MML<0

Lista parametri macro sgrossatura cave rettangolari noto uno spigolo:

Parametri obbligatori:
coordinate dello spigolo della cava (programmate con le quote degli assi)
MML: base della cava
MMH: altezza della cava
MMR: raggio del raccordo
MMA: quota di inizio cava
MMB: quota di fine cava
MMC: quota di ritorno alto
MME: distanza di sicurezza
MMK: profondità di passata

Parametri opzionali per la gestione della rotazione della cava:


(MMG): angolo di rotazione della cava.

Parametri opzionali per la gestione della conicità:


(MMN): conicità (angolo di sformatura). Deve essere compreso tra 0 e 80 gradi.
(MMX): gestione dei raccordi in caso di cava conica:

D. ELECTRON 231
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

MMX=0 raccordi variabili


MMX=1 raccordi costanti

Parametri opzionali per la gestione della feed di affondamento:


(MMF): feed di affondamento. Se non programmata, o programmata uguale a 0, viene
considerata una feed di affondamento pari ad F

Parametri opzionali per la gestione della discesa in rampa:


(MMW): discesa in rampa:
MMW=0: discesa in centro cava dentro ad un preforo
MMW=1: discesa in rampa con pendenza massima MMQ
(MMQ): massima pendenza della rampa di discesa. Se MMQ=0, la discesa avviene con un
unico movimento.

Parametri opzionali per la gestione del ricoprimento:


(MMP): ricoprimento minimo tra le passate. Compreso tra 0.2 e 1.9 volte il raggio fresa. Se
MMP=0, viene assunto MMP=0.2 volte il raggio fresa

Parametri opzionali per la gestione del senso di percorrenza:


(MMJ): senso di percorrenza:
MMJ=0 senso antiorario (concordanza)
MMJ=1 senso orario (discordanza)

Parametri opzionali per la gestione del sovrametallo:


(MMS): sovrametallo
(MMV): gestione del sovrametallo a fine passata:
MMV=0 lascia il sovrametallo
MMV=1 toglie il sovrametallo

Parametri opzionali per la gestione di utensili non cilindrici:


(MMU): raggio dell’inserto per utensili torici
Il parametro R rappresenta il raggio utensile, il parametro MMU il raggio dell’inserto:
MMU=0, la fresa è cilindrica
MMU<R, la fresa è torica
MMU=R, la fresa è sferica

MMP
MMG
MMR

MMH
MML
MMC
MMS MME
R MMA

MMK

MMB
MMU MMN

232 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.4 G802K4: FINITURA DI CAVE CIRCOLARI

Geometria della cava:


- La cava viene definita con:
- Coordinate del centro cava
- Diametro della cava (parametro MMD)
- Quota di inizio cava (parametro MMA)
- Quota di fine cava (parametro MMB)
- La cava può essere conica (parametro MMN).

Ciclo di finitura:
- Il parametro MMV definisce da che parte vengono effettuati gli attacchi e i distacchi dal
profilo. Se MMV=0, gli attacchi vengono effettuati sulla parte destra, se MMV=1 sulla parte
sinistra della cava.
- Il parametro MMQ definisce il raggio di attacco e distacco dalla parete.
- La feed di lavoro è pari al parametro F

Incremento di passata:
- Il parametro MMK definisce la profondità di passata.
- Il parametro MMW gestisce la modalità di fresatura a spirale oppure con passate a quota
costante.
- Se MMW=0, la finitura viene eseguita con passate a quota costante. Ad ogni passata viene
eseguito un attacco e un distacco dal profilo di raggio MMQ con feed pari a MMF.
L’incremento di passata viene effettuato in rapido.
- Se MMW=1, anche nel caso di cave coniche, la lavorazione inizia con un attacco circolare
di raggio MMQ alla quota di inizio cava MMA, prosegue con un moto a spirale (durante ogni
giro la profondità viene incrementata di MMK), fino a raggiungere la quota di fondo cava
MMB. A questo punto viene ripetuto il profilo a quota costante MMB e viene eseguito il
distacco di raggio MMQ con feed MMF. Nel caso di finitura a spirale e di cava conica, il
parametro EC definisce l’errore cordale utilizzato per suddividere in punti il movimento a
spirale.

A fine lavorazione viene eseguito un disimpegno fino a quota MMC

Sono utilizzabili utensili cilindrici, utensili torici e utensili sferici. Il parametro R definisce il
raggio fresa, nel caso di utensili torici, il parametro MMU definisce il raggio dell’inserto. Se
MMU=R, l’utensile è sferico.

Lista parametri macro finitura cave circolari:

Parametri obbligatori:
coordinate del centro cava (programmate con le quote degli assi)
MMD: diametro della cava
MMA: quota di inizio cava
MMB: quota di fine cava
MMC: quota di ritorno alto
MME: distanza di sicurezza
MMK: profondità di passata

Parametri opzionali per la gestione della rotazione della parete di attacco:


(MMV): definizione della parete sulla quale vengono effettuati gli attacchi e i distacchi dal
profilo:
MMV=0: parete di destra
MMV=1: parete di sinistra

Parametri opzionali per la gestione della rotazione della distanza di attacco:

D. ELECTRON 233
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

(MMQ): distanza di attacco e di distacco dal profilo. Se non programmata, o programmata


uguale a 0, viene considerata un valore pari a 2.

Parametri opzionali per la gestione della conicità:


(MMN): conicità (angolo di sformatura). Deve essere compreso tra 0 e 80 gradi.

Parametri opzionali per la gestione della feed di affondamento:


(MMF): feed di affondamento. Se non programmata, o programmata uguale a 0, viene
considerata una feed di affondamento pari ad F

Parametri opzionali per la gestione della fresatura a spirale:


(MMW): fresatura a spirale
MMW=0 finitura con passate a profondità costante
MMW=1 finitura a spirale (solo per cave cilindriche, MMN=0)

Parametri opzionali per la gestione del senso di percorrenza:


(MMJ): senso di percorrenza:
MMJ=0 senso antiorario (concordanza)
MMJ=1 senso orario (discordanza)

Parametri opzionali per la gestione del sovrametallo:


(MMS): sovrametallo

Parametri opzionali per la gestione di utensili non cilindrici:


(MMU): raggio dell’inserto per utensili torici
Il parametro R rappresenta il raggio utensile, il parametro MMU il raggio dell’inserto:
MMU=0, la fresa è cilindrica
MMU<R, la fresa è torica
MMU=R, la fresa è sferica

MMJ=0
AA, AB

MMD MMJ=1
MMQ

R MMC
MMS MME
MMA

MMK

MMU MMB
MMN

234 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.5 G802K5: FINITURA DI CAVE RETTANGOLARI NOTO IL CENTRO CAVA

Geometria della cava:


- La cava viene definita con:
- Coordinate del centro cava
- Lunghezza dei due lati (parametri MML e MMH)
- Angolo di rotazione nel piano (parametro MMG)
- Quota di inizio cava (parametro MMA)
- Quota di fine cava (parametro MMB)
- Gli spigoli della cava possono essere raccordati (parametro MMR)
- La cava può essere conica (parametro MMN). Nel caso di cava conica, i raggi di raccordo
possono essere gestiti come raccordi costanti o variabili (parametro MMX).

Ciclo di finitura:
- Il parametro MMV definisce la parete sulla quale vengono effettuati gli attacchi e i distacchi
dal profilo. Se MMV=0, gli attacchi vengono effettuati sulla parete di destra, se MMV=1
sulla parete di sinistra.
- Il parametro MMQ definisce il raggio di attacco e distacco dalla parete.
- La feed di lavoro è pari al parametro F

Incremento di passata:
- Il parametro MMK definisce la profondità di passata.
- Il parametro MMW gestisce la modalità di fresatura a spirale o a passate a quota costante.
La fresatura a spirale è possibile solo nel caso di cave cilindriche (MMN=0)
- Se MMW=0, la finitura viene eseguita con passate a quota costante. Ad ogni passata viene
eseguito un attacco e un distacco dal profilo di raggio MMQ con feed pari a MMF.
L’incremento di passata viene effettuato in rapido.
- Se MMW=1, nel caso di cave cilindriche, la lavorazione inizia con un attacco circolare di
raggio MMQ alla quota di inizio cava MMA, prosegue con un moto a spirale (durante ogni
giro la profondità viene incrementata di MMK), fino a raggiungere la quota di fondo cava
MMB. A questo punto viene ripetuto il profilo a quota costante MMB e viene eseguito il
distacco di raggio MMQ con feed MMF.

A fine lavorazione viene eseguito un disimpegno fino a quota MMC

Sono utilizzabili utensili cilindrici, utensili torici e utensili sferici. Il parametro R definisce il
raggio fresa, nel caso di utensili torici, il parametro MMU definisce il raggio dell’inserto. Se
MMU=R, l’utensile è sferico.

Lista parametri macro finitura cave rettangolari noto il centro cava:

Parametri obbligatori:
coordinate del centro cava (programmate con le quote degli assi)
MML: base della cava
MMH: altezza della cava
MMR: raggio del raccordo
MMA: quota di inizio cava
MMB: quota di fine cava
MMC: quota di ritorno alto
MME: distanza di sicurezza
MMK: profondità di passata

Parametri opzionali per la gestione della rotazione della parete di attacco:


(MMV): definizione della parete sulla quale vengono effettuati gli attacchi e i distacchi dal
profilo:
MMV=0: parete di destra

D. ELECTRON 235
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

MMV=1: parete di sinistra

Parametri opzionali per la gestione della rotazione della distanza di attacco:


(MMQ): distanza di attacco e di distacco dal profilo. Se non programmata, o programmata
uguale a 0, viene considerata un valore pari a 2.

Parametri opzionali per la gestione della rotazione della cava:


(MMG): angolo di rotazione della cava.

Parametri opzionali per la gestione della conicità:


(MMN): conicità (angolo di sformatura). Deve essere compreso tra 0 e 80 gradi.
(MMX): gestione dei raccordi in caso di cava conica:
MMX=0 raccordi variabili
MMX=1 raccordi costanti

Parametri opzionali per la gestione della feed di affondamento:


(MMF): feed di affondamento. Se non programmata, o programmata uguale a 0, viene
considerata una feed di affondamento pari ad F

Parametri opzionali per la gestione della fresatura a spirale:


(MMW): fresatura a spirale
MMW=0 finitura con passate a profondità costante
MMW=1 finitura a spirale (solo per cave cilindriche, MMN=0)

Parametri opzionali per la gestione del senso di percorrenza:


(MMJ): senso di percorrenza:
MMJ=0 senso antiorario (concordanza)
MMJ=1 senso orario (discordanza)

Parametri opzionali per la gestione del sovrametallo:


(MMS): sovrametallo

Parametri opzionali per la gestione di utensili non cilindrici:


(MMU): raggio dell’inserto per utensili torici
Il parametro R rappresenta il raggio utensile, il parametro MMU il raggio dell’inserto:
MMU=0, la fresa è cilindrica
MMU<R, la fresa è torica
MMU=R, la fresa è sferica

MMQ
MMG
MMR
AA, AB
MMH
MML
MMC
R MMS MME
MMA

MMK

MMB
MMU MMN

236 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.6 G802K6: FINITURA DI CAVE RETTANGOLARI NOTO UNO SPIGOLO

Il ciclo di lavorazione di questa macro è del tutto uguale alla macro di finitura di cave
rettangolari dato il centro cava. L’unica differenza sta nel fatto che, al posto delle coordinate
del centro cava, vengono date le coordinate di uno spigolo della cava.

In questo caso i parametri AA e AB rappresentano uno spigolo della cava, MML e MMH sono
i due lati della cava. Il segno di MML e di MMH deve essere dato in accordo alla figura
sottostante:

MML>0

MMH>0 MMH<0

MML>0
MML<0

MMH>0 MMH<0

MML<0

Lista parametri macro finitura cave rettangolari noto uno spigolo:

Parametri obbligatori:
coordinate dello spigolo (programmate con le quote degli assi)
MML: base della cava
MMH: altezza della cava
MMR: raggio del raccordo
MMA: quota di inizio cava
MMB: quota di fine cava
MMC: quota di ritorno alto
MME: distanza di sicurezza
MMK: profondità di passata

Parametri opzionali per la gestione della rotazione della parete di attacco:


(MMV): definizione della parete sulla quale vengono effettuati gli attacchi e i distacchi dal
profilo:
MMV=0: parete di destra
MMV=1: parete di sinistra

Parametri opzionali per la gestione della rotazione della distanza di attacco:

D. ELECTRON 237
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

(MMQ): distanza di attacco e di distacco dal profilo. Se non programmata, o programmata


uguale a 0, viene considerata un valore pari a 2.

Parametri opzionali per la gestione della rotazione della cava:


(MMG): angolo di rotazione della cava.

Parametri opzionali per la gestione della conicità:


(MMN): conicità (angolo di sformatura). Deve essere compreso tra 0 e 80 gradi.
(MMX): gestione dei raccordi in caso di cava conica:
MMX=0 raccordi variabili
MMX=1 raccordi costanti

Parametri opzionali per la gestione della feed di affondamento:


(MMF): feed di affondamento. Se non programmata, o programmata uguale a 0, viene
considerata una feed di affondamento pari ad F

Parametri opzionali per la gestione della fresatura a spirale:


(MMW): fresatura a spirale
MMW=0 finitura con passate a profondità costante
MMW=1 finitura a spirale (solo per cave cilindriche, MMN=0)

Parametri opzionali per la gestione del senso di percorrenza:


(MMJ): senso di percorrenza:
MMJ=0 senso antiorario (concordanza)
MMJ=1 senso orario (discordanza)

Parametri opzionali per la gestione del sovrametallo:


(MMS): sovrametallo

Parametri opzionali per la gestione di utensili non cilindrici:


(MMU): raggio dell’inserto per utensili torici
Il parametro R rappresenta il raggio utensile, il parametro MMU il raggio dell’inserto:
MMU=0, la fresa è cilindrica
MMU<R, la fresa è torica
MMU=R, la fresa è sferica

MMQ
MMG
MMR

MMH
MML
MMC
R MMS MME
MMA

MMK

MMB
MMU MMN

238 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.7 G802K7: ASOLA RETTILINEA

Geometria asola:
- Coordinate del centro asola
- Angolo di rotazione dell’asola (Parametro MMG)
- Lunghezza dell’asola (Parametro MML)
- Larghezza dell’asola (Parametro MMD)

La lavorazione dell’asola prevede una lavorazione di sgrossatura ed una lavorazione di


finitura.
Il parametro MMV determina la tipologia della lavorazione che si desidera eseguire:
MMV = 0, esegue la sgrossatura e la finitura dell’asola con lo stesso utensile
MMV = 1, esegue solo la sgrossatura
MMV = 2, esegue solo la finitura

Sgrossatura con MMW = 0 (affondamento in un preforo)


1. Posizionamento in rapido nel piano sul punto A o sul punto B in funzione del segno di
MML.
2. Discesa in rapido fino alla quota di sicurezza (MMA+MME)
3. Discesa alla profondità calcolata (profondità di passata = MMK) con feed pari a MMF
4. Raggiungimento del punto opposto (B o A) con feed F
5. Uscita alla quota di sicurezza (MMA+MME) con feed MME
6. Riposizionamento in rapido su A (o B)
7. Discesa alla profondità calcolata con feed MMF
8. Contornitura asola con ritorno finale sul punto A (o B)
9. Ripetizione dei punti 3, 4, 5, 6, 7, 8 fino al raggiungimento della quota di fondo asola MMB

Sgrossatura con MMW >0 (affondamento in rampa)


1. Posizionamento in rapido nel piano sul punto A o sul punto B in funzione del segno di
MML.
2. Discesa in rapido fino alla quota di sicurezza (MMA+MME)
3. Discesa alla quota MMA con feed pari a MMF
4. Pendolamento tra il punto A e il punto B (o viceversa) fino a raggiungere, dopo MMW
pendolamenti, la profondità di passata calcolata. La profondità del pendolamento è la
profondità di passata MMK diviso il numero di pendolamenti MMW. Nello spostamento tra
il punto A e il punto B (o viceversa), l’asse Z si abbassa della profondità del
pendolamento, il ritorno avviene a profondità costante.
5. Contornitura asola con ritorno finale sul punto A (o B)
6. Ripetizione dei punti 4, 5 fino al raggiungimento della quota di fondo asola MMB

Finitura (solo se TL = 0 o se TL = 2)
1. Posizionamento in rapido sul punto A (o B in funzione del segno di MML)
2. Discesa in rapido fino alla quota di sicurezza (MMA+MME)
3. Discesa alla profondità calcolata (profondità di passata in finitura MMH) con feed pari a
MMF
4. Contornitura di finitura
5. Ripetizione dei punti 3, 4 fino a raggiungere la quota di fondo asola MMB. Se viene
impostata una profondità di passata molto grande (maggiore della profondità dell’asola),
viene eseguita un’unica passata di finitura alla quota MMB.

D. ELECTRON 239
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

Lista parametri macro asola rettilinea:

Parametri obbligatori:
coordinate del centro asola (programmate con le quote degli assi)
MML: lunghezza dell’asola
MMD: larghezza dell’asola
MMA: quota di inizio asola
MMB: quota di fine asola
MMC: quota di ritorno alto
MME: distanza di sicurezza
Gestione tipologia di lavorazione:
MMV: tipo di lavorazione
MMV = 0: sgrossatura e finitura con lo stesso utensile
MMV = 1: solo sgrossatura
MMV = 2: solo finitura
MMK: profondità di passata in sgrossatura
MMH: profondità di passata in finitura

Parametri opzionali par la gestione della rotazione:


(MMG): angolo di rotazione rispetto al primo asse del piano
La rotazione viene effettuata intorno al centro asola

Parametri opzionali par la gestione del sovrametallo:


(MMS): sovrametallo da lasciare in sgrossatura

Parametri opzionali par la gestione dell’affondamento:


(MMW): modalità di penetrazione
MMW = 0: affondamenti in un preforo sul punto A o sul punto B a seconda del segno
di MML
MMW > 0: affondamenti in rampa con MMW pendolamenti tra il punto A e il punto B
(MMF): feed di affondamento

Parametri opzionali par la gestione del senso della lavorazione:


(MMJ): senso della lavorazione:
MMJ = 0: senso antiorario
MMJ = 1: senso orario

MMG
B A
MMD
AA, AB

MML

MMC
MMS MME
MMA
MMK, MMH

MMB

240 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.8 G802K8: ASOLA CIRCOLARE NOTO IL CENTRO ASOLA

Geometria dell’asola:
- Coordinate del centro asola
- Angolo di rotazione dell’asola (Parametro MMG)
- Lunghezza dell’asola in gradi (Parametro MML)
- Larghezza dell’asola (Parametro MMD)
- Raggio dell’asola (Parametro MMR)

La lavorazione dell’asola prevede una lavorazione di sgrossatura ed una lavorazione di


finitura.
Il parametro MMV determina la tipologia della lavorazione che si desidera eseguire:
MMV = 0, esegue la sgrossatura e la finitura dell’asola con lo stesso utensile
MMV = 1, esegue solo la sgrossatura
MMV = 2, esegue solo la finitura

Sgrossatura con MMW = 0 (affondamento in un preforo)


1. Posizionamento in rapido nel piano sul punto A o sul punto B in funzione del segno di
MML.
2. Discesa in rapido fino alla quota di sicurezza (MMA+MME)
3. Discesa alla profondità calcolata (profondità di passata = MMK) con feed pari a MMF
4. Raggiungimento del punto opposto (B o A) in interpolazione circolare, con feed F
5. Uscita alla quota di sicurezza (MMA+MME) con feed MMF
6. Riposizionamento in rapido su A (o B)
7. Discesa alla profondità calcolata con feed MMF
8. Contornitura asola con ritorno finale sul punto A (o B)
9. Ripetizione dei punti 3, 4, 5, 6, 7, 8 fino al raggiungimento della quota di fondo asola MMB
Al termine del ciclo di sgrossatura viene eseguito il ciclo di finitura se MMV = 0.

Sgrossatura con MMW >0 (affondamento in rampa)


1. Posizionamento in rapido nel piano sul punto A o sul punto B in funzione del segno di
MML.
2. Discesa in rapido fino alla quota di sicurezza (MMA+MME)
3. Discesa alla quota MMA con feed pari a MMF
4. Pendolamento tra il punto A e il punto B (o viceversa) fino a raggiungere, dopo MMW
pendolamenti, la profondità di passata calcolata. La profondità del pendolamento è la
profondità di passata MMK diviso il numero di pendolamenti MMW. Nello spostamento tra
il punto A e il punto B (o viceversa), l’asse Z si abbassa della profondità del
pendolamento, il ritorno avviene a profondità costante.
5. Contornitura asola con ritorno finale sul punto A (o B)
6. Ripetizione dei punti 4, 5 fino al raggiungimento della quota di fondo asola MMB
Al termine del ciclo di sgrossatura viene eseguito il ciclo di finitura se MMV = 0.

Finitura:
1. Posizionamento in rapido sul punto A (o B in funzione del segno di MML)
2. Discesa in rapido fino alla quota di sicurezza (MMA+MME)
3. Discesa alla profondità calcolata (profondità di passata in finitura MMH) con feed pari a
MMF
4. Contornitura di finitura
5. Ripetizione dei punti 3, 4 fino a raggiungere la quota di fondo asola MMB. Se viene
impostata una profondità di passata molto grande (maggiore della profondità dell’asola),
viene eseguita un’unica passata di finitura alla quota MMB.

D. ELECTRON 241
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

Lista parametri asola circolare noto il centro asola

Parametri obbligatori:
coordinate del centro asola (programmate con le quote degli assi)
MML: lunghezza dell’asola
MMD: larghezza dell’asola
MMR: raggio di curvatura dell’asola
MMA: quota di inizio asola
MMB: quota di fine asola
MMC: quota di ritorno alto
MME: distanza di sicurezza
Gestione tipologia di lavorazione:
MMV: tipo di lavorazione
MMV = 0: sgrossatura e finitura con lo stesso utensile
MMV = 1: solo sgrossatura
MMV = 2: solo finitura
MMK: profondità di passata in sgrossatura
MMH: profondità di passata in finitura

Parametri opzionali par la gestione della rotazione:


(MMG): angolo di rotazione rispetto al primo asse del piano
La rotazione viene effettuata intorno al centro asola

Parametri opzionali par la gestione del sovrametallo:


(MMS): sovrametallo da lasciare in sgrossatura

Parametri opzionali par la gestione dell’affondamento:


(MMW): modalità di penetrazione
MMW = 0: affondamenti in un preforo sul punto A o sul punto B a seconda del segno
di MML
MMW > 0: affondamenti in rampa con MMW pendolamenti tra il punto A e il punto B
(MMF): feed di affondamento

Parametri opzionali par la gestione del senso della lavorazione:


(MMJ): senso della lavorazione:
MMJ = 0: senso antiorario
MMJ = 1: senso orario

MMR A

MMC
MMS MME
MMA
AA, AB MMG
MMK
MMH
MMB
MMD
MML

242 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.9 G802K9: ASOLA CIRCOLARE NOTO IL CENTRO DI CURVATURA

Geometria dell’asola:
- Coordinate del centro di curvatura
- Angolo di rotazione dell’asola (Parametro MMG)
- Lunghezza dell’asola in gradi (Parametro MML)
- Larghezza dell’asola (Parametro MMD)
- Raggio dell’asola (Parametro MMR)

La lavorazione dell’asola prevede una lavorazione di sgrossatura ed una lavorazione di


finitura.
Il parametro MMV determina la tipologia della lavorazione che si desidera eseguire:
MMV = 0, esegue la sgrossatura e la finitura dell’asola con lo stesso utensile
MMV = 1, esegue solo la sgrossatura
MMV = 2, esegue solo la finitura

Sgrossatura con MMW = 0 (affondamento in un preforo)


1. Posizionamento in rapido nel piano sul punto A o sul punto B in funzione del segno di
MML.
2. Discesa in rapido fino alla quota di sicurezza (MMA+MME)
3. Discesa alla profondità calcolata (profondità di passata = MMK) con feed pari a MMF
4. Raggiungimento del punto opposto (B o A) in interpolazione circolare, con feed F
5. Uscita alla quota di sicurezza (MMA+MME) con feed MMF
6. Riposizionamento in rapido su A (o B)
7. Discesa alla profondità calcolata con feed MMF
8. Contornitura asola con ritorno finale sul punto A (o B)
9. Ripetizione dei punti 3, 4, 5, 6, 7, 8 fino al raggiungimento della quota di fondo asola MMB
Al termine del ciclo di sgrossatura viene eseguito il ciclo di finitura se MMV = 0.

Sgrossatura con MMW >0 (affondamento in rampa)


1. Posizionamento in rapido nel piano sul punto A o sul punto B in funzione del segno di
MML.
2. Discesa in rapido fino alla quota di sicurezza (MMA+MME)
3. Discesa alla quota MMA con feed pari a MMF
4. Pendolamento tra il punto A e il punto B (o viceversa) fino a raggiungere, dopo MMW
pendolamenti, la profondità di passata calcolata. La profondità del pendolamento è la
profondità di passata MMK diviso il numero di pendolamenti MMW. Nello spostamento tra
il punto A e il punto B (o viceversa), l’asse Z si abbassa della profondità del
pendolamento, il ritorno avviene a profondità costante.
5. Contornitura asola con ritorno finale sul punto A (o B)
6. Ripetizione dei punti 4, 5 fino al raggiungimento della quota di fondo asola MMB
Al termine del ciclo di sgrossatura viene eseguito il ciclo di finitura se MMV = 0.

Finitura:
1. Posizionamento in rapido sul punto A (o B in funzione del segno di MML)
2. Discesa in rapido fino alla quota di sicurezza (MMA+MME)
3. Discesa alla profondità calcolata (profondità di passata in finitura MMH) con feed pari a
MMF
4. Contornitura di finitura
Ripetizione dei punti 3, 4 fino a raggiungere la quota di fondo asola MMB. Se viene impostata
una profondità di passata molto grande (maggiore della profondità dell’asola), viene
eseguita un’unica passata di finitura alla quota MMB.

D. ELECTRON 243
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

Lista parametri asola circolare noto il centro di curvatura

Parametri obbligatori:
coordinate del centro di curvatura dell’asola (programmate con le quote degli assi)
MML: lunghezza dell’asola
MMD: larghezza dell’asola
MMR: raggio di curvatura dell’asola
MMA: quota di inizio asola
MMB: quota di fine asola
MMC: quota di ritorno alto
MME: distanza di sicurezza
Gestione tipologia di lavorazione:
MMV: tipo di lavorazione
MMV = 0: sgrossatura e finitura con lo stesso utensile
MMV = 1: solo sgrossatura
MMV = 2: solo finitura
MMK: profondità di passata in sgrossatura
MMH: profondità di passata in finitura

Parametri opzionali par la gestione della rotazione:


(MMG): angolo di rotazione rispetto al primo asse del piano
La rotazione viene effettuata intorno al centro asola

Parametri opzionali par la gestione del sovrametallo:


(MMS): sovrametallo da lasciare in sgrossatura

Parametri opzionali par la gestione dell’affondamento:


(MMW): modalità di penetrazione
MMW = 0: affondamenti in un preforo sul punto A o sul punto B a seconda del segno
di MML
MMW > 0: affondamenti in rampa con MMW pendolamenti tra il punto A e il punto B
(MMF): feed di affondamento

Parametri opzionali par la gestione del senso della lavorazione:


(MMJ): senso della lavorazione:
MMJ = 0: senso antiorario
MMJ = 1: senso orario

A
MMR
MML

AA, AB MMG

MMC MMD
MMS MME
MMA

MMK
B
MMH
MMB

244 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.10 G802K10: FILETTATURA DI UN FORO CON FRESA MONOTAGLIENTE

Il programma esegue la filettatura di un foro con fresa monotagliente.


Il filetto può essere destro o sinistro a seconda del valore di MMJ: filetto destro se MMJ=0 o
sinistro se MMJ=1.
La lavorazione può essere concorde (dal basso verso l'alto) o discorde (dall'alto verso il basso),
a seconda del valore di MMA e MMB:
MMA rappresenta la quota di inizio filetto
MMB rappresenta la quota di fine filetto
Se MMA è minore di MMB, la lavorazione viene effettuata dal basso verso l’alto
Se MMA è maggiore di MMB, la lavorazione viene effettuata dall’alto verso il basso
Il ciclo è progettato in modo tale da rispettare la quota Z più bassa dentro al pezzo (MMA o
MMB). La quota Z più alta può essere maggiore di quella programmata, allo scopo di eseguire un
numero intero di filetti più mezzo filetto (un quarto per l’entrata e un quarto per l’uscita).

Parametri obbligatori:
coordinate del centro del foro (programmate con le quote degli assi)
MMD: diametro fondo filetto
MMQ: diametro foro
MMA: quota di inizio lavorazione
MMB: quota di fine lavorazione
MMC: quota di ritorno alto
MMP: passo filetto
MMK: profondità di passate per la sgrossatura del filetto. La lavorazione di sgrossatura
termina sul fondo filetto (MMD). Su questo diametro vengono eseguite le (eventuali) MMN
passate di lisciatura.

Parametri opzionali per la gestione della distanza di sicurezza


(MME): distanza di sicurezza sull’inizio e sulla fine del filetto. L’attacco al filetto (ed il distacco
dal filetto) viene eseguito con un quarto di filetto, il parametro MME determina il diametro
dal quale inizia il quarto di filetto di attacco alla lavorazione. Se, ad esempio, il diametro
interno è 50, il raggio fresa è 10 e MME è 2, il punto di attacco è a X0 Y13. Se MME=0
viene presa di default una distanza di sicurezza pari a 2.

Parametri opzionali per la gestione delle passate di lisciatura


(MMN): numero passate di lisciatura.

Parametri opzionali per la gestione dell’ultima passata di sgrossatura


(MMW): profondità dell'ultima passata di sgrossatura. Se MMW=0, le passate di sgrossatura
hanno tutte il medesimo incremento di passata, minore o uguale a MMK. Se MMW>0,
l’ultima passata di sgrossatura è profonda MMW.
MMD
Parametri opzionali per la gestione del senso del filetto MMA
(MMJ): senso del filetto
MMJ = 0 : filetto destro
MMJ = 1 : filetto sinistro MMP

MMQ

MMB

D. ELECTRON 245
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

7.3.11 G802K11: FILETTATURA DI UN FORO CON FRESA A PETTINE

Il programma esegue la filettatura di un foro con fresa a pettine.


Il filetto può essere destro o sinistro a seconda del valore di MMJ: filetto destro se MMJ=0 o
sinistro se MMJ=1.
La lavorazione può essere concorde (dal basso verso l'alto) o discorde (dall'alto verso il basso),
a seconda del valore di MMA e MMB:
MMA rappresenta la quota di inizio filetto
MMB rappresenta la quota di fine filetto
Se MMA è minore di MMB, la lavorazione viene effettuata dal basso verso l’alto
Se MMA è maggiore di MMB, la lavorazione viene effettuata dall’alto verso il basso
Il ciclo è progettato in modo tale da rispettare la quota Z più bassa dentro al pezzo (MMA o
MMB). La quota Z più alta può essere maggiore di quella programmata, allo scopo di eseguire un
numero intero di filetti più mezzo filetto (un quarto per l’entrata e un quarto per l’uscita).
Parametri obbligatori:
coordinate del centro del foro (programmate con le quote degli assi)
MMD: diametro fondo filetto
MMQ: diametro foro
MMA: quota di inizio lavorazione
MMB: quota di fine lavorazione
MMC: quota di ritorno alto
MMP: passo filetto
MMK: profondità di passate per la sgrossatura del filetto. La lavorazione di sgrossatura
termina sul fondo filetto (MMD). Su questo diametro vengono eseguite le (eventuali) MMN
passate di lisciatura.
MMH: altezza del pettine (mm o pollici per macchine in pollici)
MMS: sovrapposizione filetti (in numero di filetti). Se la zona da filettare è più bassa
dell’altezza del pettine, la filettatura può essere eseguita in un solo giro (più il quarto di giro
di attacco e il quarto di giro di distacco), se la zona da filettare è più alta dell’altezza del
pettine, la filettatura viene eseguita in più giri. Dopo ogni giro, il pettine viene traslato di una
quantità pari all’altezza del pettine meno la sovrapposizione programmata.
Parametri opzionali per la gestione della distanza di sicurezza
(MME): distanza di sicurezza sull’inizio e sulla fine del filetto. L’attacco al filetto (ed il distacco
dal filetto) viene eseguito con un quarto di filetto, il parametro MME determina il diametro
dal quale inizia il quarto di filetto di attacco alla lavorazione. Se, ad esempio, il diametro
interno è 50, il raggio fresa è 10 e MME è 2, il punto di attacco è a X0 Y13. Se MME=0
viene presa di default una distanza di sicurezza pari a 2.
Parametri opzionali per la gestione delle passate di lisciatura
(MMN): numero passate di lisciatura.
Parametri opzionali per la gestione dell’ultima passata di sgrossatura
(MMW): profondità dell'ultima passata di sgrossatura. Se MMW=0, le passate di sgrossatura
hanno tutte il medesimo incremento di passata, minore o uguale a MMK. Se MMW>0,
l’ultima passata di sgrossatura è profonda MMW. MMD
MMA
Parametri opzionali per la gestione del senso del filetto
(MMJ): senso del filetto
MMJ = 0 : filetto destro MMP
MMJ = 1 : filetto sinistro

MMQ

MMB MMH

246 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.12 G802K12: FILETTATURA DI UN PERNO CON FRESA MONOTAGLIENTE

Il programma esegue la filettatura di un perno con fresa monotagliente.


Il filetto può essere destro o sinistro a seconda del valore di MMJ: filetto destro se MMJ=0 o
sinistro se MMJ=1.
La lavorazione può essere concorde (dal basso verso l'alto) o discorde (dall'alto verso il basso),
a seconda del valore di MMA e MMB:
MMA rappresenta la quota di inizio filetto
MMB rappresenta la quota di fine filetto
Se MMA è minore di MMB, la lavorazione viene effettuata dal basso verso l’alto
Se MMA è maggiore di MMB, la lavorazione viene effettuata dall’alto verso il basso
Il ciclo è progettato in modo tale da rispettare la quota Z più bassa dentro al pezzo (MMA o
MMB). La quota Z più alta può essere maggiore di quella programmata, allo scopo di eseguire un
numero intero di filetti più mezzo filetto (un quarto per l’entrata e un quarto per l’uscita).

Parametri obbligatori:
coordinate del centro perno (programmate con le quote degli assi)
MMD: diametro esterno
MMQ: diametro fondo filetto
MMA: quota di inizio lavorazione
MMB: quota di fine lavorazione
MMC: quota di ritorno alto
MMP: passo filetto
MMK: profondità di passate per la sgrossatura del filetto. La lavorazione di sgrossatura
termina sul fondo filetto (MMD). Su questo diametro vengono eseguite le (eventuali) MMN
passate di lisciatura.

Parametri opzionali per la gestione della distanza di sicurezza


(MME): distanza di sicurezza sull’inizio e sulla fine del filetto. L’attacco al filetto (ed il distacco
dal filetto) viene eseguito con un quarto di filetto, il parametro MME determina il diametro
dal quale inizia il quarto di filetto di attacco alla lavorazione. Se, ad esempio, il diametro
interno è 50, il raggio fresa è 10 e MME è 2, il punto di attacco è a X0 Y37. Se MME=0
viene presa di default una distanza di sicurezza pari a 2.

Parametri opzionali per la gestione delle passate di lisciatura


(MMN): numero passate di lisciatura.

Parametri opzionali per la gestione dell’ultima passata di sgrossatura


(MMW): profondità dell'ultima passata di sgrossatura. Se MMW=0, le passate di sgrossatura
hanno tutte il medesimo incremento di passata, minore o uguale a MMK. Se MMW>0,
l’ultima passata di sgrossatura è profonda MMW.

Parametri opzionali per la gestione del senso del filetto MMD


(MMJ): senso del filetto MMA
MMJ = 0 : filetto destro
MMJ = 1 : filetto sinistro
MMP

MMQ

MMB

D. ELECTRON 247
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

7.3.13 G802K13: FILETTATURA DI UN PERNO CON FRESA A PETTINE

Il programma esegue la filettatura di un perno con fresa a pettine.


Il filetto può essere destro o sinistro a seconda del valore di MMJ: filetto destro se MMJ=0 o
sinistro se MMJ=1.
La lavorazione può essere concorde (dal basso verso l'alto) o discorde (dall'alto verso il basso),
a seconda del valore di MMA e MMB:
MMA rappresenta la quota di inizio filetto
MMB rappresenta la quota di fine filetto
Se MMA è minore di MMB, la lavorazione viene effettuata dal basso verso l’alto
Se MMA è maggiore di MMB, la lavorazione viene effettuata dall’alto verso il basso
Il ciclo è progettato in modo tale da rispettare la quota Z più bassa dentro al pezzo (MMA o
MMB). La quota Z più alta può essere maggiore di quella programmata, allo scopo di eseguire un
numero intero di filetti più mezzo filetto (un quarto per l’entrata e un quarto per l’uscita).
Parametri obbligatori:
coordinate del centro perno (programmate con le quote degli assi)
MMD: diametro esterno
MMQ: diametro fondo filetto
MMA: quota di inizio lavorazione
MMB: quota di fine lavorazione
MMC: quota di ritorno alto
MMP: passo filetto
MMK: profondità di passate per la sgrossatura del filetto. La lavorazione di sgrossatura
termina sul fondo filetto (MMD). Su questo diametro vengono eseguite le (eventuali) MMN
passate di lisciatura.
MMH: altezza del pettine (mm o pollici per macchine in pollici)
MMS: sovrapposizione filetti (in numero di filetti). Se la zona da filettare è più bassa
dell’altezza del pettine, la filettatura può essere eseguita in un solo giro (più il quarto di giro
di attacco e il quarto di giro di distacco), se la zona da filettare è più alta dell’altezza del
pettine, la filettatura viene eseguita in più giri. Dopo ogni giro, il pettine viene traslato di una
quantità pari all’altezza del pettine meno la sovrapposizione programmata.
Parametri opzionali per la gestione della distanza di sicurezza
(MME): distanza di sicurezza sull’inizio e sulla fine del filetto. L’attacco al filetto (ed il distacco
dal filetto) viene eseguito con un quarto di filetto, il parametro MME determina il diametro
dal quale inizia il quarto di filetto di attacco alla lavorazione. Se, ad esempio, il diametro
interno è 50, il raggio fresa è 10 e MME è 2, il punto di attacco è a X0 Y37. Se MME=0
viene presa di default una distanza di sicurezza pari a 2.
Parametri opzionali per la gestione delle passate di lisciatura
(MMN): numero passate di lisciatura.
Parametri opzionali per la gestione dell’ultima passata di sgrossatura
(MMW): profondità dell'ultima passata di sgrossatura. Se MMW=0, le passate di sgrossatura
hanno tutte il medesimo incremento di passata, minore o uguale a MMK. Se MMW>0,
l’ultima passata di sgrossatura è profonda MMW.
MMD
Parametri opzionali per la gestione del senso del filetto MMA
(MMJ): senso del filetto
MMJ = 0 : filetto destro
MMJ = 1 : filetto sinistro MMP
MMH

MMQ

MMB

248 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

7.3.14 G802K14: SPIANATURA

Il programma esegue la spianatura di un’area rettangolare definita da due punti (vertici)


contrapposti. L’area da spianare viene corretta con le dimensioni del raggio utensile.
La spianatura viene effettuata con un movimento a greca.
La distanza tra le passate viene impostata col parametro MMP, che specifica il minimo
ricoprimento.
Il parametro MMF può essere utilizzato per ridurre l’avanzamento nella fase di approccio al
pezzo.
L’incremento di passata viene impostato tramite il parametro MMV. Se MMV=0, l’incremento di
passata viene effettuato in G1 all’interno del rettangolo di lavoro. Se MMV=1, l’incremento di
passata viene effettuato in G0 all’esterno del rettangolo di lavoro di 2mm.

Parametri obbligatori:
coordinate del primo vertice dell’area rettangolare (programmate con le quote degli assi)
MMX: coordinata sul primo asse del piano di lavoro del secondo vertice dell’area rettangolare
MMY: coordinata sul secondo asse del piano di lavoro del secondo vertice dell’area
rettangolare
MMA: quota di avvicinamento in rapido
MMB: quota di spianatura
MMC: quota di ritorno alto

Parametri opzionali per la gestione del ricoprimento:


(MMP): ricoprimento minimo tra le passate. Compreso tra 0.2 e 1.9 volte il raggio fresa. Se
MMP=0, viene assunto MMP=0.2 volte il raggio fresa

Parametri opzionali per la gestione della feed di affondamento:


(MMF): feed di affondamento. Se non programmata, o programmata uguale a 0, viene
considerata una feed di affondamento pari ad F

Parametri opzionali per la gestione dell’incremento di passata


(MMV): Tipo di incremento di passata
MMV = 0 : l’incremento di passata viene effettuato in G1 all’interno del rettangolo di lavoro
MMV = 1 : l’incremento di passata viene effettuato in G0 all’esterno del rettangolo di lavoro di
2mm

MMV=1 AA, AB

MMV=0 MMP

MMX, MMY
MMC

MMA MMB

D. ELECTRON 249
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

7.4 ESEMPI

Esempio1:

Uso della macro di posizionamento G801K7 Con il ciclo fisso G800K1


S2000 F1200 M3
G0 Z50
(Parametri e richiamo ciclo fisso)
G800K1 MHA2 MHB-10 MHC2
(richiamo macro di posizionamento:)
(definizione del posizionamento da non effettuare:)
PAR[1]3
(MPX=10, MPY=20: il cerchio di posizionamento è centrato nel punto 10,20)
(MPC=100: il cerchio di posizionamento ha diametro 100)
(MPA=0, MPL=0, MPN=8: esegue 8 posizionamenti su tutta la circonferenza)
(MPS=1: salta il posizionamento definito in PAR[1])
(MPW=1: tra un posizionamento ed il successivo si muove con moto circolare)
G801K7 MPX10 MPY20 MPC100 MPA0 MPL0 MPN8 MPS1 MPW1
G27C0 (disattivazione del ciclo fisso:)
G0 Z50
M2

250 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

Esempio2:

Uso della macro di posizionamento G801K7 con un part-program salvato nel programma CMOS
numero 40
S2000 M3 F800
(definisco nel programma P40 la figura da spostare sui punti del cerchio)

--DEFINE P40
G0X0Y0
Z2
G1Z0
Z-1
G1X10
Y5
X-10
Y-5
X10
Y0
G0X0Y0
Z2G0
G26
--END DEFINE

PAR[1]3
(Chiamo G801K7 per posizionare sui punti la figura memorizzata
nel programma CMOS numero 40 )
(MPF=40: posiziona il programma 40)
(MPR=1: ruota figure)
(richiamo macro di posizionamento)
G801K7 MPX10 MPY20 MPC100 MPA0 MPL0 MPN8 MPS1 MPW1 MPF40 MPR1
G0 Z50
G0 Z50
M2

D. ELECTRON 251
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

Esempio 3:

Uso della macro di posizionamento G801K7 con un part-program salvato nel programma CMOS
numero 40
S2000 M3 F800

(definisco nel programma P40 la figura da spostare sui punti del cerchio)
--DEFINE P40
G0X0Y0
Z2
G1Z0
Z-1
G1X10
Y5
X-10
Y-5
X10
Y0
G0X0Y0
Z2G0
G26
--END DEFINE

(definizione del posizionamento da non effettuare:)


PAR[1]3
(MPX=10, MPY=20: il cerchio di posizionamento è centrato nel punto 10,20)
(MPC=100: il cerchio di posizionamento ha diametro 100)
(MPA=0, MPL=0, MPN=8: esegue 8 posizionamenti su tutta la circonferenza)
(MPS=1: salta il posizionamento definito in PAR[1])
(MPF=40: posiziona il programma 40)
(richiamo macro di posizionamento)
G801K7 MPX10 MPY20 MPC100 MPA0 MPL0 MPN8 MPS1 MPF40
G0 Z50
G0 Z50
M2

L’unica differenza rispetto all’esempio precedente è che in questo secondo part-program


abbiamo scelto di effettuare i posizionamenti con movimenti lineari (MPW=0) e di non ruotare la
lavorazione contenuta nel file 90 (MPR=0)

252 D. ELECTRON
CNC Z32 Programmazione Cap.7 - Cicli fissi e macro di Z32

Esempio 4:

Uso della macro di lavorazione G802K1 (sgrossatura di una cava circolare):

S2000 F1200 M3
G0 Z50
R5
(Parametri e richiamo ciclo fisso)
(MMA=0: quota superiore cava)
(MMB=-20: quota di fondo della cava)
(MMC=10: quota di uscita a fine lavorazione)
(MMD=60: diametro della cava)
(X,Y: centro cava)
(MMK=3: profondità di passata)
(MME=2: distanza di sicurezza)
G802 MMA0 MMB-20 MMC10 MMD80
G802K1 X10 Y10 MMK3 MME2
M2

D. ELECTRON 253
Cap.7 - Cicli fissi e macro di Z32 CNC Z32 Programmazione

Esempio 5:

Uso della macro di lavorazione G802K1 (sgrossatura di una cava circolare) come ciclo fisso:

S2000 F1200 M3
G0 Z50
R5
(Parametri e richiamo ciclo fisso)
(MMA=0: quota superiore cava)
(MMB=-10: quota di fondo della cava)
(MMC=10: quota di uscita a fine lavorazione)
(MMD=30: diametro della cava)
(X,Y: centro cava)
(HX=1: usa come ciclo fisso)
(MMK=3: profondità di passata)
(MME=2: distanza di sicurezza)
(MMW=1: discesa in rampa)
(MMQ=4:massima pendenza della discesa in rampa)

G802 MMA0 MMB-10 MMC10 MMD30


G802K1 HX1 MMK3 MME2 MMW1 MMQ4
(richiamo macro di posizionamento:)
(MPX=10, MPY=20:)
(il cerchio di posizionamento è centrato nel punto 10,20)
(MPC=60: il cerchio di posizionamento ha diametro 60)
(MPA=0, MPL=0, MPN=8:)
(esegue 8 posizionamenti su tutta la circonferenza)
(MPS=1: salta il posizionamento definito in PAR[1])
(MPW=1:)
(tra un posizionamento ed il successivo si muove con moto circolare)

(definizione del posizionamento da non effettuare:)


PAR[1]3

G801K7 MPX10 MPY20 MPC60 MPA0 MPL0 MPN8 MPS1 MPW1


G27C0 (disattivazione del ciclo fisso:)
G0 Z50
M2

254 D. ELECTRON
CNC Z32 Programmazione Cap.8 - Cicli fissi del costruttore e dell’utente e sottoprogrammi permanenti

CAPITOLO 8

8. CICLI FISSI DEL COSTRUTTORE E DELL’UTENTE E


SOTTOPROGRAMMI PERMANENTI

8.1 CICLI FISSI


Questo capitolo si rifersice a macro e cicli fissi non standard, implementati dal costruttore della
macchina utensile oppure direttamente dall’utilizzatore finale.
I cicli fissi dello Z32 sono organizzati a sottoprogrammi: essi sono completamente modificabili e
adattabili alle esigenze della macchina utensile controllata dallo Z32.
Abbiamo visto nel capitolo “Funzioni preparatorie G” che i cicli fissi sono attivati programmando:
G27C...
Dove la lettera C deve essere seguita da un numero che specifica il ciclo fisso da attivare.
La C di seguito a G27 non è un parametro, ossia l'eventuale parametro C... programmato in
precedenza non viene modificato, e il numero di ciclo fisso non può essere letto nel parametro C.
Sono possibili due tipi di ciclo fisso:
cicli fissi di SISTEMA (da 1 a 30)
cicli fissi di UTENTE (da 31 a 109)
Cicli fissi I cicli fissi di sistema sono inseriti nella parte protetta della memoria permanente dello Z32: essi
sistema sono programmati dal costruttore della macchina utensile, e non devono essere modificati
dall'utente finale: quando il numero del ciclo fisso attivato è da 1 a 30 automaticamente lo Z32 va a
cercare un ciclo fisso di sistema (che risiede in memoria CMOS ai programmi da 170 a 199).
Durante l'esecuzione di un ciclo fisso di sistema è arrestato il numero progressivo (ossia non si
può ricercare un blocco all'interno di un ciclo fisso di sistema) e non sono visualizzate le righe di
programma eseguite (salvo che il CN sia messo nel modo 'assistenza' con l'apposita procedura).
Cicli fissi I cicli fissi di utente possono essere programmati direttamente dall'utente finale, secondo sue
utente particolari esigenze di lavorazione: quando il numero di ciclo fisso attivato è 31 o superiore
automaticamente lo Z32 ricerca un ciclo fisso di utente, che deve essere un sottoprogramma
residente in memoria col numero uguale a quello del ciclo fisso attivato.
Per esempio, con l'istruzione:
G27C100 si attiva il ciclo fisso che sta nel 'file’ col numero 100.
Movimento I cicli fissi utente non arrestano il numero progressivo (salvo l'uso di G36H e G36S) e non
rapido arrestano la visualizzazione delle righe: può perciò essere ricercato (sempre salvo G36H/S) un
blocco all'interno di un ciclo fisso utente.
I sottoprogrammi CICLO FISSO sono inseriti in memoria come tutti i programmi,
sottoprogrammi e tabelle, ossia tramite EDITOR o tramite ingresso da periferica esterna.
Una volta attivato un ciclo fisso, esso è eseguito automaticamente dopo ogni posizionamento IN
RAPIDO programmato. Gli eventuali movimenti in lavoro non fanno eseguire il ciclo fisso, anche se
c'è un ciclo fisso attivo.
Non è possibile richiamare un ciclo fisso all'interno di un ciclo fisso: gli eventuali movimenti in
rapido programmati all'interno del ciclo fisso non provocano, dopo la loro esecuzione, un salto al
ciclo fisso.
All'interno di un sottoprogramma 'ciclo fisso' possono essere programmate tutte le funzioni dello
Z32 (inclusi movimenti assi in rapido o in lavoro, soste, cambi utensili, funzioni ausiliarie...).

D. ELECTRON 255
Cap.8 - Cicli fissi del costruttore e dell’utente e sottoprogrammi permanenti CNC Z32 Programmazione

I cicli fissi sono disattivati programmando:


G27C0 ciclo fisso zero
G27X
Programmando: G27X si sospende il ciclo fisso attivo. G27X è valida solo nel blocco in cui è
Stop
programmata.
ciclo fisso
Il salto a un ciclo fisso consuma un livello di salto con ritorno. Vedere anche il capitolo “Righe
evolute” paragrafo ‘Salti’ (GON...-N...).
Nei paragrafi che seguono si danno alcuni esempi di cicli fissi, ed esempi di uso: nella
compilazione dei sottoprogrammi di ciclo fisso si è fatto uso, per programmare i movimenti assi,
esclusivamente dei parametri: AA AB AC al posto di X, Y, Z: ciò permette l'uso di cicli fissi standard,
qualunque sia il PIANO DI LAVORO e l'ASSE su cui si svolgono i cicli fissi.
Poiché i cicli fissi sono inseriti nello Z32 direttamente dal costruttore della macchina utensile, è
indispensabile che l'utente finale si riferisca alle istruzioni fornite dal costruttore stesso: i cicli fissi
seguenti sono da considerarsi solo esempi didattici.
Esempi Se il programmatore vuole creare i suoi cicli fissi particolari, deve attentamente specificare il
didattici di significato dei parametri usati, facendo attenzione di non usare parametri di sistema o parametri a
cicli fissi cui siano stati assegnati, nell'organizzazione della macchina, altri significati.
Nel programma principale, prima di attivare il ciclo fisso, si dovranno assegnare ai vari parametri
usati i valori voluti, in modo che il ciclo fisso sia eseguito in modo corretto.
Dopo aver attivato un ciclo fisso si possono modificare i valori dei parametri del ciclo fisso: per
esempio nel ciclo fisso di foratura del paragrafo seguente si possono fare i primi 10 fori con
HC=HA, mentre prima dell'undicesimo foro si può dichiarare una HC superiore in modo da
scavalcare un ostacolo frapposto tra i fori 10 e 11.
I cicli fissi si possono richiamare dall'interno di un sottoprogramma, durante l'esecuzione ripetuta
di righe ecc.

8.1.1 Esempio di Foratura


G27C1.... . Composizione:
1. entrata in rapido fino a inizio foro
2. avanzamento in lavoro fino a fine foro
3. ritorno in rapido fino alla quota di uscita
Parametri:
HA inizio foro
HB fine foro
HC uscita lunga
Programma 170:
CICLO FISSO DI FORATURA%
N1 G0 AC<HA> terzo asse avanza in rapido fino a inizio foro
N2 G1 AC<HB> lavoro fino a fine foro
N3 G0 AC<HC> G26 ritorno rapido e fine sottoprogramma
Si noti il '%' iniziale (necessario), dopo la descrizione (non necessaria).

256 D. ELECTRON
CNC Z32 Programmazione Cap.8 - Cicli fissi del costruttore e dell’utente e sottoprogrammi permanenti

8.1.2 Esempio di Foratura con sosta


G27C2.... . Composizione:
1. avanzamento in rapido fino a inizio foro
2. avanzamento in lavoro fino a fine foro
3. sosta
4. ritorno in rapido fino a uscita lunga
Parametri:
HA inizio foro
HB fine foro
HC uscita lunga
TT tempo di sosta
Programma 171:
FORATURA CON SOSTA %
N1 G0 AC<HA> avanza in rapido fino a inizio foro
N2 G1 AC<HB>G4 lavoro fino a fine foro e sosta TT secondi
N3 G0 AC<HC>G26 uscita lunga in rapido e fine

8.1.3 Esempio di Foratura profonda


G27C3.... . Ciclo di foratura profonda a incremento costante.
Composizione:
1. avanzamento rapido fino a inizio foro
2. lavoro per una lunghezza pari al diametro punta
3. scarico in rapido fino a inizio foro
4. avanzamento rapido fino alla quota già forata
5. ripetizione del lavoro fino a fine foro
6. ritorno rapido fino a uscita lunga
Parametri:
HA inizio foro
HB fine foro
HC uscita lunga
R raggio utensile
HE uso interno
Programma 172:
FORATURA PROFONDA%
N1 HE<HA> mette HE a inizio foro
N2 G0 AC<HE> rapido fino a inizio foro da fare
N3 !HE=HE-2*R! incrementa HE di due volte il raggio,
N4 !IFHE<=HB;HE=HB! limitandolo a fine foro
N5 G1 AC<HE> fora fino ad HE
N6 G0 AC<HA> scarico rapido fino a inizio foro
N7 !IFHE>HB;GON2! se non ha finito il foro ripete
N8 G0 AC<HC> HE0 G26 rapido fino a uscita lunga

D. ELECTRON 257
Cap.8 - Cicli fissi del costruttore e dell’utente e sottoprogrammi permanenti CNC Z32 Programmazione

8.1.4 Esempio di Maschiatura


G27C4.... . Composizione:
1. avanzamento in rapido fino a inizio foro
2. lavoro fino a fine foro
3. arresto mandrino e sosta
4. inversione mandrino e ritorno in lavoro fino a inizio foro
5. rapido fino a uscita lunga
6. ripristino senso moto mandrino
Parametri:
HA inizio foro
HB fine foro
HC uscita lunga
TT tempo di sosta
Programma 173:
MASCHIATURA%
N1 G0 AC<HA> M3
N2 G1 G84 AC<HB> M5
N3 G4
N4 AC<HA> M4
N5 G0 G80 AC<HC>
N6 M3 G26

8.1.5 Esempio di Alesatura con ritorno in lavoro


G27C5..... . Composizione:
1. avanzamento in rapido fino a inizio foro
2. lavoro fino a fine foro
3. ritorno in lavoro fino a inizio foro
4. rapido fino a uscita lunga
Parametri:
HA inizio foro
HB fine foro
HC uscita lunga
Programma 174:
ALESATURA CON RITORNO IN LAVORO%
N1 G0 AC<HA>
N2 G1 AC<HB>
N3 AC<HA>
N4 G0 AC<HC>G26

8.1.6 Esempio di Alesatura con ritorno a mandrino fermo


G27C6.... . Composizione:
1. avanzamento rapido fino a inizio foro
2. lavoro fino a fine foro

258 D. ELECTRON
CNC Z32 Programmazione Cap.8 - Cicli fissi del costruttore e dell’utente e sottoprogrammi permanenti

3. arresto mandrino e sosta


4. ritorno in lavoro fino a uscita lunga
5. rapido fino a uscita lunga
Parametri:
HA inizio foro
HB fine foro
HC uscita lunga
TT tempo sosta
Programma 175:
ALESATURA CON RITORNO A MANDRINO FERMO%
N1 G0 AC<HA>
N2 G1 AC<HB> M5
N3 G4
N4 G0 AC<HC>
N5 M3 G26

8.1.7 Esempio di Barenatura con ritorno a mandrino orientato


G27C7... . Composizione:
1. avanzamento in rapido fino a inizio foro
2. lavoro fino a fine foro
3. orientamento mandrino
4. decentraggio utensile di 0,1 mm.
5. rapido fino a uscita lunga
6. marcia mandrino
Parametri:
HA inizio foro
HB fine foro
HC uscita lunga
Programma 176:
BARENATURA CON RITORNO A MANDRINO ORIENTATO%
N1 G0 AC<HA>
N2 G1 AC<HB> M19
N3 G0 AA<AA-0,1>
N4 AC<HC>
N5 M3 G26

8.1.8 Esempio di Fresalesatura interna


G27C8.... .
Composizione:
1. avanzamento in lavoro fino a quota lavoro
2. fresalesatura circolare con ritorno al centro
3. rapido fino a uscita lunga
Parametri:

D. ELECTRON 259
Cap.8 - Cicli fissi del costruttore e dell’utente e sottoprogrammi permanenti CNC Z32 Programmazione

HA quota lavoro
HC uscita lunga
HD diametro foro
R raggio utensile
Programma 177:
FRESALESATURA INTERNA%
N1 !IFHD<=2*R;UT.GROSSO!
N2 G1 AC<HA>
N3 G2 AA<AA+HD/2-R> AB<AB> I<AA-HD/4+R/2> J<AB>
N4 AA<AA> AB<AB+.001> I<AA-HD/2+R> J<J>
N5 AA<I> AB<J> I<I+HD/4-R/2> J<J>
N6 G0 AC<HC> G26
Nota:
N1 dà errore (il campo !UT.GROSSO! è in errore sintassi) se il diametro foro non è maggiore del
diametro utensile; se invece il diametro foro è superiore il campo errato non è eseguito, quindi
l'errore di sintassi non è rilevato e quindi il lavoro prosegue regolarmente.

8.1.9 Esempio di Foratura con entrata/uscita in lavoro e pausa a fine foro


G27C9.... . Composizione:
1. avanzamento in rapido fino a inizio foro
2. lavoro fino a fine foro
3. sosta
4. lavoro fino a inizio foro
5. rapido fino a uscita lunga
Parametri:
HA inizio foro
HB fine foro
HC uscita lunga
TT sosta
Programma 178:
FORATURA CON PAUSA E RITORNO IN LAVORO%
N1 G0 AC<HA>
N2 G1 G4 AC<HB>
N3 AC<HA>
N4 G0 AC<HC> G26

8.2 SOTTOPROGRAMMI PERMANENTI


G27P.... Nel paragrafo precedente abbiamo visto come lo Z32 permetta l'esecuzione di cicli fissi con un
salto automatico al ciclo fisso attivo dopo ogni posizionamento in G0.
In modo molto simile è possibile generare un salto automatico a un sottoprogramma (che
chiameremo permanente) attivo senza necessità di eseguire posizionamenti in G0.
L'attivazione del sottoprogramma permanente (vedere anche capitolo “Funzioni preparatorie G”)
si ha programmando: G27P... dove la lettera P è seguita dal numero identificativo del
sottoprogramma attivato. La P dietro G27 non è un parametro, ossia l'eventuale parametro P...

260 D. ELECTRON
CNC Z32 Programmazione Cap.8 - Cicli fissi del costruttore e dell’utente e sottoprogrammi permanenti

programmato in precedenza non viene modificato e il numero di sottoprogramma permanente attivo


non può essere letto nel parametro P.
G27P0
disattiva i sottoprogrammi permanenti. All'accensione e dopo il reset è attivo G27P0.
KG Per il ciclo fisso il salto effettivo si otteneva, dopo l'attivazione, con la programmazione di un
esegue movimento in G0: per il sottoprogramma permanente il salto si ottiene programmando (con
spgr. sottoprogramma attivato) il parametro KG in riga ISO. Per esempio:
...
N10 G27P50
N11 1X0 non esegue il sottoprogramma
N12 KG1 esegue
N13 X10 non esegue
N14 !KG=1! non esegue
N15 KG0 X50 esegue
...
Contrariamente a quanto accade per i cicli fissi (per i quali il salto al sottoprogramma avviene
DOPO l'esecuzione del posizionamento in rapido programmato) nel caso di sottoprogrammi
permanenti la riga ISO che contiene il KG che genera il salto è eseguita, ma prima dei moti assi si
ha il salto al sottoprogramma. Gli eventuali assi programmati sono passati al sottoprogramma
come parametri: l'eventuale movimento deve essere comandato nel sottoprogramma chiamato.
Ciò perché i sottoprogrammi permanenti, come si vedrà nelle applicazioni, sono dedicati proprio
alla gestione speciale dei movimenti assi, che possono essere manipolati all'interno del
sottoprogramma.
Il valore del parametro KG che genera il salto può essere qualsiasi. Il valore viene passato al
sottoprogramma così come programmato: KG può essere controllato all'interno del
sottoprogramma ed usato per eseguire varianti di esecuzione.
Il sottoprogramma permanente può essere inserito in qualsiasi file, inclusi i files protetti (oltre il
128). Anche i sottoprogrammi cicli fissi possono essere richiamati come sottoprogrammi
permanenti: in questo caso i cicli fissi utente sono chiamati con lo stesso numero (oltre 30), mentre
i cicli fissi di sistema sono chiamati col numero del sottoprogramma (da 170 a 199) anziché col
numero di ciclo fisso (da 1 a 30).
Durante l'esecuzione di un sottoprogramma permanente:
− non sono visualizzate le righe del sottoprogramma ma resta visualizzata la riga del
programma origine
− il numero progressivo è regolarmente incrementato (salvo al solito G36H) e quindi è
possibile ricercare un blocco all'interno del sottoprogramma permanente
Il salto a un sottoprogramma permanente consuma un livello di salto con ritorno.
− esecuzione di tratti di profilo ripetitivi
− manipolazioni di moti assi
− geometria piana specializzata
− lavorazioni nello spazio e a 4 o 5 assi
− macchina a elettroerosione a filo a 5 assi
Nei paragrafi seguenti si danno due esempi di uso dei sottoprogrammi permanenti. Si noti come
la stessa lavorazione poteva essere eseguita anche in altro modo (per esempio con !GOP...! o con
salto a serie di righe): l'uso dei sottoprogrammi permanenti rende il programma più semplice e
leggibile.

D. ELECTRON 261
Cap.8 - Cicli fissi del costruttore e dell’utente e sottoprogrammi permanenti CNC Z32 Programmazione

8.2.1 Esempio 1 - Riga dentata con due tipi di denti


Si deve eseguire un profilo dentato in XY. Ci sono due tipi di denti (uno a fondo piano e uno a
fondo triangolare). Il passo dei denti non è costante.
PROGRAMMA PRINCIPALE %
N0 X0 Y0 Z0 OX1 OY1 OZ1
N1 T10 M6 (FRESA RAGGIO 5)
N2 F500 S2000 M3
N3 G41 X20 Y0 QF0
N4 G1 G27P20 KG1 X50 (DENTE TIPO 1)
N5 X85 Y5 (QUI NON ESEGUE DENTE PERCHÈ NON C'È KG)
N6 KG2 X100 Y0 (DENTE TIPO 2)
N7 KG1 X130 (DENTE TIPO 1)
N8 KG2 X170 (DENTE TIPO 2)
N9 X200
N10 G40
N11 G27P0 M2

SOTTOPROGRAMMA 20
%
N1 G1 X<X> Y<Y>
N2 Y<Y-30>
N3 !IFKG=2;GON7!
N4 !IFKG<>1 ; ERRORE KG PRG. 20
N5 X<X+20> (ESEGUE FONDO PIANO)
N6 !GON9!
N7 X<X+10> Y<Y-5> (ESEGUE FONDO INCLINATO)
N8 X<X+10> Y<Y+5>
N9 Y<Y+30> (RISALE ALLA QUOTA INIZIALE)
N10 G26
Si noti come non sarebbe stato possibile l'uso di un ciclo fisso per la presenza della correzione
raggio (non possono esserci tratti in G0).

262 D. ELECTRON
CNC Z32 Programmazione Cap.8 - Cicli fissi del costruttore e dell’utente e sottoprogrammi permanenti

8.2.2 Esempio 2 - Programma in XY per macchina a coordinate polari


Si ha una macchina con due assi X (lineare in mm.) e B (rotativo in gradi). Si vuole
programmare il profilo da eseguire programmando i movimenti in X Y in mm., come per una
macchina a coordinate rettangolari.
Si noti che il programma qui riportato vuole essere solo una dimostrazione di COME può essere
usato il KG, NON una soluzione completa al problema esposto. In particolare nel caso dell'esempio
si dovrebbe anche:
- collaudare il programma su una macchina reale
- gestire anche tratti circolari o meglio una geometria più completa (per esempio usando
KG=1 per segmenti, KG=2 per cerchio orario, KG=3 per cerchio antiorario ecc.)
- controllare l'effetto sulla macchina del passaggio di B da -180 a +180 gradi, ed
eventualmente evitare questo passaggio
- gestire la correzione raggio
PROGRAMMA PEZZO
% OX1OB1 F200
N1 G0X50B0 G27P90
attiva le origini, si sposta in rapido al punto di partenza del profilo e attiva il sottoprogramma
permanente
N2 G98
inizio interpolazione speciale a tratti rettilinei
N3 KG1 HA50 HB0 X100 Y50
con HA e HB si informa il sottoprogramma sulla posizione precedente degli assi X e Y
N4 KG1 X150 Y0
tratti lineari programmati in XY
...
N20 KG1 X30 Y10
N21 G99 X<X>
fine interpolazione speciale a tratti rettilinei
N22 G27P0 G0 X200 B0
N23 M2
fine sottoprogr. permanente e rapido fino al punto finale
SOTTOPROGRAMMA 90%
genera una sequenza di movimenti lineari nel piano XB risultanti in archi di spirale nel piano XY
lunghi 0.5 mm
!IFKG=1;GON10!
qui possono essere gestiti altri KG
....
ERRORE KG1 SU PROGR.90
N10 HC<X-HA> HD<Y-HB>
HE<RQ(HC*HC+HD*HD)>
distanze da percorrere e lunghezza tratto lineare
HG0 HF<0.5/HE>

D. ELECTRON 263
Cap.8 - Cicli fissi del costruttore e dell’utente e sottoprogrammi permanenti CNC Z32 Programmazione

HG varierà da 0 a 1 per percorrere il tratto lineare


N20!HG=HG+HF!
programmato, HF è il suo incremento per dividere
!IFHG>1;HG=1!
il segmento in tratti di lunghezza costante di 0.5 mm
!HX=HA+HC*HG;HY=HB+HD*HG;CP!
X<HR> B<HT>
raggiunge il punto XY incrementato di 0.5 mm convertito in coordinate polari
!IFHG<1;GON20!
ripete fino a fine segmento
G26

264 D. ELECTRON
CNC Z32 Programmazione Cap.9 - Formule permanenti

CAPITOLO 9

9. FORMULE PERMANENTI

9.1 GENERALITÀ
Caratteristica dello Z32 è di poter programmare parametri e quote assi tramite formule
matematiche, per esempio:
X<HA+Y*0,01>
che significa: assegna al parametro 'X' e alla quota programmata sull'asse X il valore risultante
dal calcolo contenuto nella parentesi acuta (valore del parametro HA più un centesimo del valore
del parametro Y). I valori dei parametri interessati alla formula sono quelli istantanei al momento in
cui il CN analizza la riga.
È possibile imporre allo Z32, per i soli assi continui, di ricalcolare una formula in modo
permanente, ossia in tempo reale, durante l'esecuzione dei movimenti programmati, assumendo
come valore dei parametri assi il punto istantaneo interpolato, riferito alla origine attiva.
Questa funzione è ottenuta, all'interno di una riga ISO, programmando, sull'asse continuo
desiderato, la formula tra doppia parentesi acuta.
Per esempio:
X<<X+0,1*Y>>
Dopo la formula si possono programmare profili, movimenti in rapido ecc. in modo
assolutamente normale. I movimenti reali degli assi saranno però variati, al momento della loro
esecuzione, secondo la formula introdotta. Nel caso dell'esempio (per terna G25XYZ) si avrà una
INCLINAZIONE del 10% a destra di tutta la figura.
Possono essere programmate formule permanenti su tutti gli assi continui e vivi, anche sugli
assi non direttamente interessati al movimento. Ciò significa che, se per esempio una macchina ha
gli assi X, Y, Z e B, e tutti gli assi sono vivi (vedere funzione G28), programmando sull'asse B una
formula che ne lega il movimento agli altri assi, si può avere il moto contemporaneo di quattro assi
continui.
Le formule permanenti sono attive sia sui movimenti in lavoro sia sui movimenti in rapido.
L'introduzione di una formula permanente richiede al programmatore alcune precauzioni, che
saranno spiegate poi in dettaglio, che derivano dal modo col quale le formule sono inserite nel
sistema operativo Z32.
In assenza di formule permanenti, lo Z32 muove gli assi dopo aver compiuto una serie di
elaborazioni che sono:
1) analisi dei punti programmati ed eventuale loro ricalcolo con rototraslazione,
specularità, fattore di scala
2) determinazione delle traiettorie geometriche ed eventuale ricalcolo con correzione
raggio
3) controllo che le traiettorie calcolate siano entro i fine corsa della macchina
4) determinazione delle velocità di esecuzione e degli eventuali rallentamenti in funzione
delle velocità programmate, delle curvature e degli spigoli delle traiettorie calcolate
5) interpolazione delle traiettorie in tempo reale (ossia con calcolo dei punti successivi al
ritmo di circa 125 volte al secondo)
6) controllo degli errori fisici di inseguimento (sempre 125 volte al secondo) ed invio dei
comandi di moto a tutti gli assi vivi, per mantenere la macchina in traiettoria col minimo
errore.

D. ELECTRON 265
Cap.9 - Formule permanenti CNC Z32 Programmazione

A titolo di esempio, si riportano qui di seguito le figure ottenute con alcune formule semplici
realizzando un part-program riferito alla figura normale (cerchio con scritta Z32) e introducendo poi
le formule riportate in figura.

NORMALE X<<X*0.6>> Y<<Y+0.03*X*X>>

Y<<Y*0.6>> X<<X+0.3*Y>> Y<<Y*0.6>>

L'introduzione di una formula permanente richiede, tra i punti 5 e 6, un ulteriore passo, che deve
essere eseguito 125 volte al secondo:
5a) applicazione delle formule permanenti su tutti gli assi vivi interessati, e calcolo del punto,
sulla traiettoria deformata, corrispondente al punto già calcolato sulla traiettoria originaria
Inconvenienti Gli inconvenienti che possono derivare dall'introduzione di una formula permanente sono in
pratica:
Velocità − la velocità di esecuzione della traiettoria è costante e corrispondente alla velocità
programmata sulla traiettoria originaria. Le accelerazioni sono calcolate per la
traiettoria originaria. Sulla traiettoria deformata velocità e accelerazione sono anch'esse
deformate e quindi possono risultare sia inferiori che superiori. Ciò impone un controllo
ulteriore che la velocità non superi quella di rapido e può portare a errori di
inseguimento nel caso che la velocità aumenti troppo in punti critici del profilo
Fine corsa − i fine corsa non devono essere controllati sulla traiettoria originaria ma sulla traiettoria
deformata: ciò praticamente significa che i fine corsa devono essere controllati in
tempo reale insieme al punto 5a)
− al momento della introduzione della formula permanente ci può essere una differenza
anche rilevante tra il punto originario e il punto deformato: per ogni asse su cui è
introdotta la formula lo Z32 genera automaticamente un tratto di raccordo iniziale.

266 D. ELECTRON
CNC Z32 Programmazione Cap.9 - Formule permanenti

Analoga operazione deve essere eseguita al momento della disattivazione delle


formule permanenti
Limitazioni di − tutte le formule permanenti devono essere ricalcolate 125 volte al secondo: ciò pone
tempo limitazioni abbastanza stringenti alla complessità delle formule introdotte.

9.1.1 Contenuto delle formule permanenti


Una formula permanente è costituita da una espressione matematica, racchiusa tra doppie
parentesi acute, contenente:
− i quattro operatori matematici fondamentali:
+ addizione
- sottrazione
* moltiplicazione
/ divisione
− fino a 10 livelli di parentesi
− costanti numeriche (segno, 5 interi, 3 decimali)
− costante 'PI' (PI greco = 3,141592...)
− parametri individuati dal loro indirizzo (es. R, HA ecc.)
− nomi assi individuati dal loro indirizzo (es. X, Y ecc.)
La sintassi di una formula permanente è sostanzialmente la stessa di una formula normale,
salvo la esclusione (per ragioni di tempo di esecuzione) delle operazioni matematiche complesse
(radice quadrata RQ, seno SN, coseno CS, arcotangente AT).
Esempi di formule formalmente corrette:
X<<X*0,9>> introduce un fattore di scala del 90% sull'asse X
X<<0>> serve a poco: tiene fermo a zero l'asse X
X<<X+1>> sposta di +1mm l'origine X: appesantisce inutilmente il lavoro del
calcolatore. Sarebbe meglio spostare l'origine oppure introdurre
una traslazione (DA)
X<<X+0,001*Y*Y>> introduce una deformazione parabolica sull'asse X

9.1.2 Sintassi della riga ISO con formule permanenti


Le formule permanenti devono essere inserite in una riga ISO.
In una riga ISO possono essere introdotte più formule permanenti (relative ad assi diversi).
Esempio:
N100 X<<X*0,95>> Y<<Y*0,965>> Z<<0,126/1000*X>>
Se in una riga ISO vengono definite (per errore!) più formule permanenti su uno stesso asse lo
Z32 non dà allarme: resta attiva l'ultima formula permanente programmata.
Nella riga ISO che contiene le formule permanenti possono essere inserite altre istruzioni, che
vengono eseguite normalmente: se però sono inseriti moti assi questi non sono eseguiti se
compaiono prima della formula, mentre sono eseguiti se compaiono dopo (vedere anche prossimo
paragrafo sui raccordi iniziali e finali).
Possono essere aggiunte formule in riga ISO successiva (carattere '!' iniziale, vedere paragrafo
seguente).

D. ELECTRON 267
Cap.9 - Formule permanenti CNC Z32 Programmazione

9.1.3 Attivazione disattivazione variazione di formule permanenti


Si ha una attivazione di formule permanenti quando si passa da una situazione di moti assi
normali a una situazione di formule attive. La disattivazione si ha quando si passa da una situazione
di formule attive a una situazione normale. La variazione si ha quando si passa direttamente da un
insieme di formule permanenti a un altro, senza passaggio attraverso la situazione normale.
Abbiamo visto che si possono attivare più formule permanenti, una su ciascun asse continuo
della macchina: con formule attive esiste nella memoria del CN un 'insieme' di formule, associate a
ciascun asse della macchina. Con formule non attive l'insieme è nullo.
L'insieme delle formule permanenti è un blocco indivisibile, cioè non è possibile variare una sola
delle formule (ossia la formula relativa ad un solo asse): una riga ISO che contenga anche una sola
formula permanente provoca l'annullamento dell'intero insieme di formule e la sua ricompilazione
dall'inizio.
X<<!...>> Se però la formula contiene un '!' iniziale essa viene aggiunta alle formule precedenti.
L'attivazione delle formule permanenti si ottiene con una riga ISO che contenga anche una sola
formula permanente. La disattivazione si ottiene programmando tutte formule nulle, la variazione
programmando semplicemente le formule.
Per le ragioni che saranno esposte meglio nel paragrafo che segue, al momento della eventuale
disattivazione o variazione di formule, tutte le formule permanenti da annullare devono essere
programmate.
Esempio:
N1 X<<X*0,96>> B<<B*RX/100>> attivazione: da ora in poi sono attive le formule
sugli assi X e B
N50 X<<X*0,9>> Y<<Y*0.8>> B<<>> variazione sull'asse X, disattivazione su B e
attivazione su Y
N100 X<<>> Y<<>> disattivazione su tutti gli assi che hanno formule
attive, ossia X e Y
Se il programmatore ha necessità di aggiungere formule permanenti a formule già attive, può
programmare una nuova formula col carattere '!' iniziale.
Per esempio:
N10 X<<X*.97>>
...
N12 Y<<!Y*.8>>
Se si programma una nuova formula su un asse che ha già una formula permanente, la vecchia
formula viene disattivata ma non cancellata dalla memoria: da un punto di vista lunghezza perciò (e
dell'allarme CN 3814 FORMULA LUNGA) la nuova formula si aggiunge alla precedente.

9.1.4 Raccordi iniziali e finali


Abbiamo visto che l'attivazione di una formula permanente comporta una variazione del punto
macchina (ossia il punto in cui lo Z32 porta e trattiene gli assi della macchina) dal vecchio punto al
nuovo calcolato con l'applicazione della formula. Per esempio:
...
N1 X0 Y100 Z0
N2 X<<X*0,9>> Y<<Y*0,8>>
...
Prima dell'istruzione N2 i punti macchina sono 0 per l'asse X e +100 per l'asse Y, dopo
l'attivazione delle formule i nuovi punti sono 0 per X e +90 per Y: si ha cioè una discontinuità sulla Y

268 D. ELECTRON
CNC Z32 Programmazione Cap.9 - Formule permanenti

di 10 mm. Per recuperare senza allarmi le discontinuità eventualmente introdotte dalle formule
permanenti, lo Z32 introduce un segmento rettilineo di raccordo, parallelo all'asse programmato,
per ciascuna formula permanente introdotta.
Il punto di partenza del movimento di raccordo è la quota dell'asse prima dell'attivazione della
formula, e il punto di arrivo la nuova quota calcolata con la formula attivata.
Il raccordo viene eseguito come tratto rettilineo in lavoro alla velocità F attiva al momento.
Se sono introdotte più formule relative ad assi diversi, per ognuna delle formule introdotte è
inserito un raccordo.
La programmazione di una formula permanente costituisce una ECCEZIONE nel
comportamento dello Z32, che esegue il raccordo relativo IMMEDIATAMENTE durante la fase di
analisi, e non attende la successiva fase di esecuzione (vedere capitolo "Sequenza di esecuzione
di una riga ISO”). I moti dello stesso asse programmati nella stessa riga, ma prima della formula,
non sono eseguiti ma sono conglobati nel raccordo.
Questa caratteristica permette, come si vedrà più avanti, di evitare il raccordo associato a una
formula permanente.
La situazione è assolutamente analoga nel caso di disattivazione o variazione della formula
permanente: anche in questo caso il punto macchina può subire uno spostamento dovuto alla
formula e quindi è necessaria l'introduzione del raccordo.
Si noti che la presenza anche di una sola formula permanente in una riga ISO comporta
l'annullamento di tutte le formule: poiché il raccordo è calcolato solo per le formule effettivamente
programmate, se non vengono 'richiuse' tutte le formule in precedenza attivate, si possono avere
allarmi CN 0113 o 0013 dovuti alla discontinuità di movimento risultante.
Negli esempi che seguono, anche con situazioni estreme probabilmente mai utili in pratica, è
illustrato il comportamento dello Z32 per quanto riguarda i raccordi.
Esempio 1
...
N10 OX1 OY1 OZ1 X0Y0Z0 F1000 attivazione dell'origine 1 e spostamento degli assi
nell'origine
N20 X<<X*0.9>> attivazione della formula permanente: il raccordo
iniziale è nullo perché il vecchio punto (X = 0) coincide
col nuovo punto (X = 0*0.9 = 0).
N30 X100 spostamento a X90 a causa della formula
N40 X<<>> disattivazione formula e raccordo finale da vecchio
punto calcolato con la formula (X = 90) al nuovo punto
(X = 100)
....

Esempio 2
...
N10 X100Y100Z0 OX1OY1OZ1 F1000
N20 X<<X*O.9>> Y<<Y*0.8>> si ha prima uno spostamento parallelo dell'asse X da
100 a 90 (velocità F1000) e poi uno spostamento
parallelo dell'asse Y da 100 a 80
N30 X200 spostamento dell'asse X da 80 a 160
N40 X<<>> disattivazione della formula X e raccordo finale da
X160 a X200. È un errore non avere disattivato anche
la formula Y: le conseguenze si vedono la prima volta
che viene programmato l'asse Y

D. ELECTRON 269
Cap.9 - Formule permanenti CNC Z32 Programmazione

N50 X100 l'asse X si sposta correttamente da 200 a 100)


N60Y100 si ha un allarme CN 0013 dovuto alla mancata
disattivazione della formula Y
...

Esempio 3
...
N10 X100Y100Z0 OX1OY1OZ1 F1000
N20 Y<<Y*0.8>> X<<X*0.9>> la sequenza dei raccordi è diversa dall'esempio 2
perché diverso è l'ordine di programmazione: prima
viene fatto il raccordo Y da 100 a 80 e poi il raccordo
X da 100 a 90
...

Esempio 4
...
N10 X100Y100Z0 OX1OY1OZ1 F1000
N20 !X=50! non si ha movimento dell'asse, ma solo un
aggiornamento del parametro X al valore 50
N30 X<<X*0.8>> si ha un raccordo in X da 100 fino al risultato della
formula (X=X*0.8) applicata al valore programmato
(50), ossia a 40
...

Esempio 5
...
N10 X100Y100Z0 OX1OY1OZ1 F1000
N20 X50 X<<X*0.8>> il risultato è identico all'esempio precedente, ossia il
raccordo iniziale va da X100 a X40
...

Esempio 6
...
N10 X100Y100Z0 OX1OY1OZ1 F1000
N20 X<<X*0.8>> X50 si ha un raccordo iniziale da X100 a X80, e
successivamente il movimento programmato a X40
(pari a 50*0.8), fatto con formula attiva)
...

Esempio 7
...
N10 X100Y100Z0 OX1OY1OZ1 F1000
N20 X50 X<<X*0.8>> X100 si ha un raccordo iniziale a X40 e, successivamente il
movimento programmato a X80 (pari a 100*0.8)

270 D. ELECTRON
CNC Z32 Programmazione Cap.9 - Formule permanenti

...

Esempio 8
...
N10 X100 Y100 Z0 OX1 OY1 OZ1 F1000
N20 X50 Y40 X<<X*0.7>> Y<<Y*0.6>> X30 Y60
... si ha prima il raccordo in X da 100 a 35, poi il raccordo
in Y da 100 a 24, poi un movimento inclinato in XY con
formule attive fino al punto finale risultante X21 Y36
Il programmatore consideri gli esempi 6, 7 e 8 solo come mezzi per meglio comprendere il
comportamento dello Z32: non sono esempi da seguire, in quanto complicano inutilmente una riga
già complessa che contiene l'attivazione di formule permanenti. I movimenti programmati dopo le
formule permanenti possono essere più realisticamente programmati in una riga SUCCESSIVA!

9.1.5 Compilazione delle formule permanenti


Abbiamo visto che le formule permanenti devono essere eseguite 125 volte al secondo. Per
ridurre al massimo l'impegno del microprocessore le formule stesse sono esaminate, ridotte ai
minimi termini e tradotte in linguaggio di macchina in fase di analisi della riga che le contiene. Si ha
cioè una 'compilazione' delle formule che permette la più veloce esecuzione. In fase di
compilazione, oltre agli operatori matematici, si possono incontrare i seguenti tipi di operandi:
− costanti e parametri
− nomi assi (incognite)
I parametri sono considerati a tutti gli effetti come costanti, e sono introdotti nella formula
compilata col valore che hanno al momento della compilazione della formula.
I nomi assi invece devono essere considerati incognite in quanto variano da istante a istante
durante il movimento. La funzione del compilatore è quella di ottimizzare la formula eseguendo una
volta sola, in fase di compilazione, tutti i calcoli possibili e lasciando (per essere eseguiti 125 volte
al secondo) i soli calcoli che coinvolgono le incognite (nomi assi).
Per esempio le formule:
X<<X*0,9>> - X<<3*X*0,3>>
sono eseguite (a livello delle 125 volte al secondo) nello stesso identico tempo: la seconda
formula richiede solo un piccolo impegno supplementare (trascurabile perché eseguito una volta
sola in fase di compilazione) per calcolare il fattore moltiplicativo della incognita X.
In fase di compilazione lo Z32 controlla la lunghezza della formula compilata e il tempo che
richiederà la sua esecuzione: se l'una o l'altro superano il massimo ammesso lo Z32 dà messaggio
ed errore:
<<FORMULA LUNGA>> CN3814

9.1.6 Tempi di esecuzione


Abbiamo visto che le formule permanenti sono eseguite dallo Z32 per 125 volte al secondo: è
perciò necessario uno stretto controllo da parte dello Z32 delle formule programmate, per evitare il
sovraccarico del microprocessore.
Il massimo di tempo che il microprocessore può dedicare alla esecuzione delle formule
permanenti è stato stabilito in 8000 cicli macchina. Ciò corrisponde a circa il 12% del tempo CPU
disponibile in totale. Il costruttore della macchina utensile può, se la complessità della macchina e
quindi della logica programmabile che la gestisce lo richiede, ridurre questo tempo a un minimo più
basso: il programmatore si informi presso il costruttore se è stata operata questa riduzione.

D. ELECTRON 271
Cap.9 - Formule permanenti CNC Z32 Programmazione

Il calcolo preventivo dei tempi di esecuzione di una formula permanente non è facile: bisogna
infatti tenere conto delle semplificazioni e dei precalcoli che lo Z32 opera in fase di compilazione.
Per chi voglia avere una idea dei tempi di esecuzione, qui di seguito diamo i tempi approssimativi
delle operazioni fondamentali. I tempi sono espressi in cicli macchina: il totale dei tempi di tutte le
formule introdotte non deve superare 8000 (o il limite più basso imposto dal costruttore).

Somma 270
Sottrazione 270
Moltiplicazione 620
Divisione 920
Programmazione di incognita 170
Tempo fisso per ogni formula 160

Alcune regole di compilazione:


1) più costanti moltiplicate tra loro sono ridotte ad unica costante moltiplicativa
2) i parametri e PI sono da considerare costanti in fase di compilazione
3) se all'interno di una parentesi sono contenute solo costanti tutta la parentesi è da
considerare una costante.
Esempi:
X<<HA>> 1 formula = 160
X<<X*0.957> 1 formula, 1 asse, moltiplicazione=160+170+620=950
X<<X>> 1 formula,1 asse=160+170=330
X<<X*0.9+0.1>> 1 form,1 asse,1 molt,1 som=160+170+620+270=1220
X<<X*0.9>Y<Y*0.8>> 2 form,2 assi,2 molt=320+340+1240=1900
X<<X*(HA+0.1*(HB+0.5))*0.05>> 1 form,1 asse,1 molt= 160+170+620 =950
X<<X-0.1*X>> 1 form,2 assi,1 molt,1 sott=160+340+620+270=1390
X<<X*0.9+Y*(HA+HB+0.1)/3>> 1 for,2 assi,2 molt,1 som=160+340+1240+270=2010

9.1.7 Controllo dei fine corsa


Quando sono attive le formule permanenti, i fine corsa normali dello Z32 (che consistono nel
controllo preventivo che i movimenti programmati non oltrepassino i limiti) non sono efficienti.
Con formule permanenti attive (quando le formule permanenti sono non attive i fine corsa
restano quelli normali) il controllo dei fine corsa è fatto in tempo reale, ossia deve effettivamente
prodursi un movimento perché il fine corsa possa intervenire.
I fine corsa con formule attive non funzionano in ricerca blocco (ossia il programma può 'girare’
in ricerca blocco e poi dare errore fine corsa durante l'esecuzione).
Il calcolo dei fine corsa con formule attive tiene conto della velocità di avvicinamento al fine
corsa, della distanza dal fine corsa e delle accelerazioni di taratura su ogni asse: l'allarme è dato se
la velocità di avvicinamento supera quella che permette la frenatura entro il fine corsa.
L'allarme di fine corsa con formule attive è un allarme di tipo:
CNE.13
dove al posto del punto viene inserito il numero logico dell'asse sul quale il fine corsa è stato
rivelato. Per esempio CNE113 significa errore fine corsa con formule attive sull'asse con numero
logico 1 (normalmente asse Y).

272 D. ELECTRON
CNC Z32 Programmazione Cap.9 - Formule permanenti

9.1.8 Controllo delle velocità massime


Con formule attive, la velocità di esecuzione dei movimenti può essere diversa (in più o in meno)
rispetto alla velocità programmata. Per esempio, se si attiva la formula X<X*2>, i movimenti
sull'asse X hanno velocità (e accelerazione!) doppia rispetto alla velocità programmata.
A protezione della macchina, in presenza di formule attive, lo Z32 va in allarme se la velocità su
uno qualsiasi degli assi supera del 2% il rapido. L'allarme relativo è:
CNF.13
dove al solito al posto del punto viene inserito il numero logico dell'asse su cui si è rilevata la
sovravelocità. Per esempio, CNF213 significa allarme di sovravelocità con formule attive sull'asse
con numero logico 2 (normalmente l'asse Z).
Con la G108 (vedere capitolo “Funzioni preparatorie G”) si può porre un limite alla velocità
massima di interpolazione (la G108 agisce prima delle formule permanenti) e quindi evitare di
superare le velocità massime tollerate dalla macchina utensile.
x<<*>> Un modo più efficace per gestire le velocità e le accelerazioni è quello di programmare la
formula <<*>> che moltiplica le quote dell'asse per la costante contenuta nel parametro HX.
Per esempio:
HX2 X<<*>>
moltiplica le quote dell'asse X per il fattore 2. La stessa prestazione si può ottenere con la
formula:
X<<X*2>>
Si ha però una sostanziale differenza nella gestione della velocità e delle accelerazioni.
Il movimento programmato viene interpolato dal CN sulla traiettoria originale e poi amplificato in
funzione del fattore moltiplicativo imposto.
Le limitazioni di velocità e accelerazioni per non superare il rapido e la massima accelerazione di
taratura della macchina sono operate sulla traiettoria originale.
La moltiplicazione per due delle quote ottenute con la formula permanente moltiplica anche
velocità e accelerazioni: si devono adottare precauzioni per evitare errori di inseguimento eccessivi
(per esempio prova pezzo per evitare il rapido).
Nel caso che il fattore moltiplicativo sia minore di 1, si ha l'opposto, ossia le prestazioni
dinamiche della macchina non sono più sfruttate appieno.
Nel caso della formula con * le tarature di macchina relative all'asse interessato sono modificate
automaticamente(in pratica Rapido e accelerazione massima dell'asse sono divisi per il fattore
moltiplicativo) in modo da riportarle a quelle reali di macchina sulla traiettoria reale.
La formula <<*>> è di particolare utilità se usata nel caso di programmazione di profili cilindrici
ottenuti con un asse rotante e uno lineare.

9.1.9 Formule attive e G53


Non è ammessa la programmazione di G53 o G54 con formule permanenti attive. Se ciò viene
fatto, il CN dà messaggio e allarme:
<<FORMULA + G53/54>> CN3914
Tenere conto che spesso il cambio utensile (M6) e altre M speciali richiedono movimenti
macchina riferiti all'origine base e che quindi comportano la esecuzione di G53 o G54 nel
sottoprogramma automaticamente richiamato. In questi casi le formule permanenti dovranno
essere DISATTIVATE PRIMA della programmazione della M.

D. ELECTRON 273
Cap.9 - Formule permanenti CNC Z32 Programmazione

9.1.10 Applicazioni
Le formule permanenti, pur con le obbiettive difficoltà e le limitazioni sopra esposte, possono
essere utili per eseguire lavori altrimenti difficili se non impossibili.
Probabilmente la limitazione più sensibile delle formule permanenti è quella della velocità degli
assi, che diventa diversa dalla velocità programmata. Come consiglio generale, si faccia in modo
per quanto possibile che le formule RIDUCANO PIUTTOSTO CHE INGRANDIRE: per esempio, se
si vuole ottenere un movimento ellittico del centro fresa, si moltiplichi l'asse più corto per un numero
inferiore a 1, piuttosto che l'asse più lungo per un numero superiore ad 1.
Nel caso di formule che ingrandiscono, usare la G108 per riportare accelerazione e velocità
entro limiti tollerabili.

Ellissi
Come mostrato negli esempi all'inizio del capitolo, un cerchio con assi a fattore di scala diverso
diventa una ellisse.

ATTENZIONE:
La traiettoria del centro fresa nel caso della contornatura di una ellisse
NON è una ellisse. Se si applica un diverso fattore di scala sui due assi e
poi si attiva la correzione raggio, non si ottiene una vera ellisse. L'errore di
forma è tanto più grande quanto più il raggio dell'utensile si avvicina ai
raggi di curvatura del profilo.

Incisioni su un piano inclinato


Si devono fare incisioni su un piano inclinato. Si ammette che il piano di lavoro non sia
orizzontale e che l'asse verticale sia lo Z (X e Y gli orizzontali).
L'equazione generica di un piano è:
Z = C1 + C2 * X + C3 * Y
Se si introduce la formula permanente:
Z<<Z+HA*X+HB*Y>>
si lega il movimento verticale dell'asse Z alla posizione orizzontale degli assi X e Y.
Variando opportunamente i coefficienti HA e HB l'utensile si muove esattamente sul piano
inclinato.

Incisioni su un cilindro (assi ortogonali)


Si ha una macchina disposta come in figura e si devono eseguire incisioni sul fondo del
semicilindro di raggio RB disposto orizzontalmente con asse parallelo alla Y. Le origini sono poste
al centro del cilindro.
L'equazione esatta dei movimenti in Z è:
Z= RB*( 1 - (X/RB) - 1)
Mancando la radice quadrata, questa equazione può essere approssimata con una serie:
Z= RB*[0.5*(X/RB)2+1/8*(X/RB)4+1/16*(X/RB) 6+....]
In prima approssimazione, la formula da programmare può contenere il solo primo termine,
ossia:
Z<<Z+X*X/2/RB>>
In questo caso l'errore è circa: = RB/8*(X/RB) 4
ossia se RA=50, per X=10 l'errore è circa 0.01 mm, per X=20 l'errore è circa 0.16 mm.

274 D. ELECTRON
CNC Z32 Programmazione Cap.9 - Formule permanenti

D. ELECTRON 275
Cap.9 - Formule permanenti CNC Z32 Programmazione

276 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

CAPITOLO 10

10. GEOMETRIA

10.1 GENERALITÀ
Lo Z32 dispone di un completo set di istruzioni per risolvere i problemi di calcolo di un profilo
geometrico comunque complesso.
Vengono programmati con facilità profili costituiti da tratti rettilinei, circolari, con smussi e
raccordi.
E’ possibile coordinare ad un movimento nel piano anche il movimento di un terzo asse (vedere
paragrafo ”Profili su tre assi” più avanti su questo capitolo).
I programmi realizzati con la geometria di base dello Z32 con software precedente, possono
essere eseguiti anche con la nuova geometria senza alcun cambiamento.

GEOMETRIA e sistemi di tipo tornio


In questo capitolo, vengono presentati esempi relativi a sistemi di tipo fresa.
Per sistemi tipo tornio, la programmazione del profilo segue esattamente le stesse regole dei
sistemi di tipo fresa, con le seguenti particolarità:
- il piano di lavoro di un sistema tornio è il piano ZX
- l'asse X ed il parametro J sono tipicamente programmati in valori Diametrali

10.2 PROFILI GEOMETRICI NEL PIANO


Un profilo geometrico può essere costituito dai seguenti elementi:
− punti
− segmenti di retta
− archi di cerchio
− smussi
− raccordi
Le rette e i cerchi sono considerati tratti di profilo e possono essere definiti come aperti o chiusi;
gli smussi e i raccordi possono comparire alla fine del tratto programmato.
La velocità di esecuzione del profilo è gestita dallo Z32 con accorgimenti particolari che vengono
approfonditi nel paragrafo “Gestione della velocità” più avanti su questo capitolo.

10.2.1 Definizioni geometriche


È importante inserire a questo punto alcune definizioni che servono per interpretare
correttamente il testo e chiarire il significato della terminologia specifica utilizzata.
Punto Il punto definito è un qualsiasi punto del piano programmato o calcolato dallo Z32. Un punto
definito definito può essere un punto iniziale o un punto finale di un tratto.
Un tratto è un segmento di retta o un arco di cerchio, può essere aperto o chiuso.
Tratto di Una retta o un cerchio si dicono chiusi quando terminano con un punto definito, si dicono aperti
profilo quando il punto finale non è definito, ma dovrà essere calcolato con le informazioni relative al tratto
successivo.

D. ELECTRON 277
Cap.10 – Geometria CNC Z32 Programmazione

Ogni tratto è caratterizzato dalle informazioni contenute nell'ente geometrico precedente e da


quelle contenute nel blocco attuale; ogni tratto può terminare con uno smusso (solo tra tratti
rettilinei) o con un raccordo.
Punto Un punto continuo è un punto di tangenza tra due tratti che possono essere sia rette che
continuo cerchi sia combinazioni di retta/cerchio o cerchio/retta.
Ogni tratto può essere definito in diversi modi: tali forme sintattiche costituiscono le istruzioni di
geometria dello Z32.

10.2.2 Elementi che individuano un profilo


Gli elementi che individuano un tratto di profilo sono i parametri geometrici (quote, raggi,
pendenze, ecc.) e le funzioni preparatorie che determinano il tipo di tratto (G1, G2, G3).

Quote finali
Rappresentano le coordinate del punto finale da raggiungere nel piano di lavoro.
Sono programmate col nome asse (per es. X, Y, Z ...) oppure in modo assolutamente
equivalente con i parametri AA (primo asse), AB (secondo asse), AC (terzo asse). Si usano i
parametri AA AB AC quando si vogliono costruire dei sottoprogrammi generici, svincolati
dall'effettivo piano di lavoro. Nel seguito, per brevità e chiarezza, si useranno normalmente i nomi
espliciti degli assi, X per il primo asse, Y per il secondo, Z per il terzo asse (asse mandrino).
Il piano cartesiano è definito col primo asse orizzontale e il secondo asse verticale.

Coordinate del centro e raggio del cerchio I, J, RA


Le coordinate del centro del cerchio sono programmate con i parametri I (primo asse) e J
(secondo asse).
Le norme ISO associano rigidamente la I all'asse X e la J all'asse Y, mentre per lo Z32 la I è
associata al primo asse del piano di lavoro e la J al secondo asse, quali che siano gli assi del piano
(X, Y, Z o altri).
Norme ISO Z32
I <=> X I <=> AA (primo asse)
J <=> Y J <=> AB (secondo asse)
K <=> Z K <=> non assegnato (passo filettatura)
Quindi per esempio per lo Z32 si ha:
con G25XYZ con G25XCZ
I <=> X I <=> X
J <=> Y J <=> C

Il raggio del cerchio è programmato col parametro RA.

Pendenza finale QF
È l'angolo compreso tra la direzione positiva dell'asse X e la direzione del movimento nel punto
finale del tratto.

278 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

È programmata col parametro QF ed è espressa in gradi sessagesimali (1 giro = 360 gradi) e


frazioni decimali di grado (es. QF 10,5 = 10 gradi e 30 primi).
QF è positivo se, partendo dall'asse X, si raggiunge la direzione muovendosi in senso antiorario;
si ottiene lo stesso risultato programmando: QF 280 e QF -80

Ad ogni inizio di profilo, ossia dopo:


− tratto in G0
− funzione ausiliaria
− G1 con assi fuori dal piano
− cambio terna di lavoro
la pendenza finale è forzata a zero.

Raggio di raccordo RR
Alla fine di ogni tratto di profilo può essere programmato un raccordo col parametro RR che
viene inserito alla fine del blocco nel quale è programmato .
Il segno di RR determina il senso del raccordo:
RR positivo raccordo antiorario (G3)
RR negativo raccordo orario (G2)
Il tratto di profilo con raccordo finale può essere chiuso o aperto.
Il raggio di raccordo non può essere programmato su un tratto di profilo che venga chiuso dal
successivo con conservazione della pendenza (punto continuo).
Se RR è programmato in un blocco in cui non è previsto provoca errore di programmazione
CN4514 (RB/RR iniziali su cerchio). Vedere il paragrafo “Raccordi automatici” più avanti su questo
capitolo.

Raccordo corto Raccordo lungo


Un raccordo, di orientamento definito, può essere scelto tra due possibili col parametro di
selezione KA:
KA = 0 raccordo corto, quello più spontaneo (può essere omesso);
KA <>0 raccordo lungo.
Vedere la pagina seguente (parametro di selezione KA).

Smusso RB
Alla fine di un tratto rettilineo può essere programmato uno smusso col parametro RB.
Il valore di RB programmato definisce la lunghezza dello smusso sul primo tratto.
La lunghezza dello smusso sul secondo tratto è:
RB se non è programmato QA
RB * tg QA se è programmato QA
Il tratto seguente deve essere ancora rettilineo: lo smusso è ammesso solo tra due tratti
rettilinei. RB e QA devono essere obbligatoriamente programmati nel tratto alla fine del quale deve
essere inserito lo smusso. Vedere paragrafo “Smussi automatici” più avanti su questo capitolo.
Se RB è programmato in un blocco in cui non è previsto provoca errori di programmazione:
CN4214 RB smusso iniziale su cerchio
CN4314 RB smusso finale su cerchio
CN4514 RB/RR iniziali su cerchio.

D. ELECTRON 279
Cap.10 – Geometria CNC Z32 Programmazione

Parametro di selezione KA
Un tratto aperto può essere chiuso dal tratto successivo per intersezione dei due enti geometrici.
Se almeno uno di questi enti è un cerchio si hanno due soluzioni (o nessuna se gli enti non si
intersecano).
Svolta a Se si osserva il movimento con riferimento al primo ente programmato, una delle soluzioni fa
destra una svolta a destra e l'altra una svolta a sinistra.
svolta a
sinistra Se è programmato un raggio di raccordo RR, una delle due soluzioni provoca un raccordo corto
(lunghezza del raccordo minore di metà cerchio) e l'altra un raccordo lungo (lunghezza del raccordo
maggiore di metà cerchio). Vedere paragrafo “Raccordi automatici” più avanti su questo capitolo.
La scelta della soluzione viene fatta col parametro KA (che deve essere programmato
obbligatoriamente nel blocco aperto di cui si vuole scegliere l'intersezione):
KA=0 raccordo corto nel caso di RR programmato gira a sinistra nel caso di RR non
programmato
KA<>0 raccordo lungo nel caso di RR programmato gira a destra nel caso di RR non
programmato
Se KA è programmato in un blocco in cui non è previsto non provoca allarmi: semplicemente
non ha effetto; KA=0 può essere omesso.
KA=1 KA=Ø

KA=Ø KA=1 KA=1

Un caso particolare di KA è la chiusura di retta aperta su cerchio G2/G3 X Y RA


in questo caso KA=0 significa arco di cerchio corto e KA<>0 significa arco di cerchio lungo
(vedere paragrafo “Cerchi chiusi” più avanti su questo capitolo).

RR programmato RR non programmato


KA=0 Raccordo corto Gira a sinistra
KA<>0 Raccordo lungo Gira a destra

280 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

Pendenza ausiliaria QA
Il parametro QA permette di programmare un angolo ausiliario orientato, come QF.
Una prima applicazione riguarda la programmazione degli smussi tra due rette, un'altra riguarda
le combinazioni retta-cerchio tipo G1 G2/G3..QA. Il significato viene specificato nel paragrafo
“Combinazioni retta cerchio” più avanti su questo capitolo.

Funzioni preparatorie
Le funzioni interessate sono G1, G2, G3 che sono modali e mutualmente esclusive.
Può non essere programmata la G , già attiva; in quanto segue tale possibilità verrà indicata con
le parentesi tonde: (G1) oppure (G2/G3)
Le funzioni G2 e G3 programmate possono essere forzate, cioè lo Z32 può cambiare il senso di
percorrenza, in tutti quei casi in cui l'arco di cerchio è raccordato al tratto precedente; viene così
privilegiata la condizione di tangenza e vengono scartati punti spigolosi. Tale situazione verrà in
seguito indicata con la notazione : [G2/G3]
La geometria Z32 comprende le potenti combinazioni retta-cerchio che sono costituite da una
retta seguita da un cerchio tangente. Tali combinazioni vengono identificate dalle funzioni
preparatorie composte G1G2 e G1G3 a secondo che il cerchio sia orario o antiorario. G1G2 e
G1G3 non sono modali e sono attive solo nel blocco.

10.2.3 Modi di programmazione dei tratti di profilo


Le funzioni preparatorie G1, G2, G3 predispongono lo Z32 ad eseguire tratti di profilo
rispettivamente rettilineo, circolare orario, circolare antiorario. Per definire il tratto di profilo da
eseguire occorre fornire allo Z32 i dati numerici relativi alla geometria del profilo.
Il profilo deve essere pienamente definito dal programma-pezzo per essere eseguito dallo Z32.
Ogni tratto di profilo deve essere perciò caratterizzato con una quantità di parametri sufficiente alla
sua definizione.
Esistono molti modi, ossia combinazioni di informazioni, per definire geometricamente un tratto
di profilo. Per esempio, per definire un segmento rettilineo a partire da un punto definito si
potrebbero dare:
− le due coordinate del punto finale
− una coordinata finale imponendo moto parallelo all'asse
− l'inclinazione e una coordinata finale
− l'inclinazione e la lunghezza
− la lunghezza e un punto intermedio
− ...
I modi possibili sono evidentemente moltissimi e di questi molti sono di scarsa utilità. Si è dovuto
quindi fare una selezione, limitando il numero delle possibili combinazioni.
X Nel seguito, per brevità e chiarezza, si farà uso del nome X per indicare il primo asse del piano e
primo asse di Y per indicare il secondo asse: si farà cioè l'ipotesi che la terna attiva sia G25XY... Qualora la
Y terna fosse diversa, sostituire a X e Y i nomi rispettivamente del primo e secondo asse del piano.
secondo asse
Le entità accettate dallo Z32 per definire i tratti di profilo sono: X, Y, I, J, QF, RA, QA, RR, RB,
Entità
oltre alle funzioni preparatorie G . Differenti combinazioni dei parametri sopra specificati danno
ammesse
luogo a differenti modi di programmazione di un tratto di profilo.
Lo Z32 gestisce e riconosce le combinazioni di parametri e 'G' della tab. VIII - 1.

D. ELECTRON 281
Cap.10 – Geometria CNC Z32 Programmazione

COMBINAZIONI DI GEOMETRIA PIANA tab. VIII-1


____________________________________________________________
| | BLOCCO | BLOCCO |
| Parametri | precedente | attuale |
| programmati |_______________________|___________|
| |P.D|R.A|C.A|RR |RB |KA |RR |RB |KA |
|________________________|___|___|___|___|___|___|___|___|___|
|(G1) X XY | X | | | X | X | | X | X | |
| | | | Xc| | | | X | X | |
|________________________|___|___|___|___|___|___|__ _|___|
|(G1) Y | X | | | X | X | | X | X | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G1) X | X | | | X | X | | X | X | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G1) X Y QF | | X | | X | X | | X | X | |
| | | | Xc| X X | X | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G1) X QF | X | | | X | X | | X | X | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G1) Y QF | X | | | X | X | | X | X | |
|________________________|___|___|___|___|___|___|___|___|___|
|G1 | Xc| | | | X | | X | X | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G1) QF | X | | | X | X | | X | X | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G2/G3) X Y I J | X | | | X | | | X | | |
| | | X | | X | | X | X | | |
| | | | X | X | | X | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|([G2/G3]) X Y | Xc| | | | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G2/G3) X Y RA | X | | | X | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|([G2/G3]) X Y RA | | Xc| | | | X | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G2/G3) I J RA | | X | | X | | X | X | | |
| | | | X | X | | X | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G2/G3) I J RA QF | | X | | X | | X | X | | |
| | | | X | X | | X | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G2/G3) I J | X | | | X | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|([G2/G3]) I J | | Xc| | | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G2/G3) I J QF | X | | | X | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|([G2/G3]) I J QF | | Xc| | | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G2/G3) I J QA | X | | | X | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|([G2/G3]) I J QA | | Xc| | | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G2/G3) RA | Xc| | | | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|(G2/G3) RA QF | Xc| | | | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|G1 G2/G3 I J X Y | X | | | X | X | | X | | |
| | | | Xc| | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|G1 G2/G3 I J RA | X | | | X | X | | X | | X |
| | | | Xc| | | | X | | X |
|________________________|___|___|___|___|___|___|___|___|___|
|G1 G2/G3 I J RA QF | X | | | X | X | | X | | |
| | | | Xc| | | | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|G1 G2/G3 I J X Y QA | | X | | X | | | X | | |
| | | | X | X | | X | X | | |
|________________________|___|___|___|___|___|___|___|___|___|
|G1 G2/G3 I J RA QA | | X | | X | X | | X | | X |
| | | | X | X | | X | X | | X |
|________________________|___|___|___|___|___|___|___|___|___|
|G1 G2/G3 I J RA QA QF | | X | | X | X | | X | | |
| | | | X | X | | X | X | | |
|________________________|___|___|___|___|___|___|___|___|___|

P.D = Punto Definito R.A = Retta Aperta C.A = Cerchio Aperto

X => Combinazione ammessa


XC => Combinazione ammessa con punto continuo: condizione di tangenza
() => Può non essere programmato se già attivo
G2/G3 => Può essere programmata una delle due
[G2/G3] => G2 o G3 viene forzata, solo per il tratto attuale, dal CN

282 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

Differenti combinazioni non sono riconosciute dallo Z32, che dà allarme CN2C14 (parametri
incompatibili).
Come si vede dall'elenco, alcuni tratti (G1, G1 QF, G2/G3 I J, G2/G3 I J RA, G2/G3 RA, G1
G2/G3 I J RA, G1 G2/G3 I J RA QA) sono 'aperti', in quanto le quote finali del tratto non sono
determinabili dai parametri programmati nel blocco.
Gli altri tratti sono chiusi, in quanto hanno pienamente determinate le quote finali.
I tratti aperti possono essere:
1. retta di cui sono definiti pendenza e punto iniziale
2. cerchio di cui è definito centro e punto iniziale
3. cerchio di cui è definito il centro e il raggio
4. cerchio di cui è definito il raggio e il punto iniziale
I parametri presi in considerazione dallo Z32 per definire un tratto di profilo sono esclusivamente
quelli elencati (quote assi X Y, centro cerchio I J, raggio RA, pendenza QF, pendenza ausiliaria QA,
raccordo RR, smusso RB, funzioni preparatorie G1 G2 G3): nella stessa riga possono essere
programmati altri parametri o funzioni, che, se compatibili, vengono regolarmente gestiti senza
provocare errori.

10.2.4 Rette chiuse


I tratti di retta chiusi possono essere definiti con le coordinate del punto finale e con la sua
pendenza nei modi seguenti:
(G1) X Y retta obliqua -1-
(G1) X retta parallela al primo asse -2-
(G1) Y retta parallela al secondo asse -3-
(G1) X QF retta obliqua con coordinata finale e pendenza note -4-
(G1) Y QF retta obliqua con coordinata finale e pendenza note -5-
(G1) X Y QF retta obliqua con coordinate finali e pendenza note -6-

G1 X.. Y..
La retta 1 può provenire da punto definito o da cerchio aperto, in tal caso viene forzata la
condizione di tangenza in un punto continuo. Se il tratto precedente è una retta aperta si ha errore
CN3214 (precedente errato).
Se il punto finale è interno al cerchio precedente si ha errore CN3314 (interno al cerchio)
...
G0 X35 Y0
G1 Y10 RB1
(G1) X20
(G1) Y20 RB2
(G1) X0 QF180
....

D. ELECTRON 283
Cap.10 – Geometria CNC Z32 Programmazione

G1 X..QF..- G1 Y.. QF..


Le rette 2, 3, 4, 5 devono provenire da punto definito. Si ha errore CN3414 se il tratto
precedente è aperto.
....
G0 X0 Y0
G1 Y10
X-10 QF120
X-20 QF165
X-30 QF180

G1 X.. Y.. QF..


La retta 6 calcola il punto iniziale intersecando il tratto precedente che deve essere un cerchio
aperto o una retta aperta.
Per la retta 6 è necessario che sia definito il parametro di selezione KA nel cerchio aperto
precedente.
Tutte le rette possono contenere raccordi o smussi alla fine del tratto, sempre che non ci siano
punti continui.
Tutte le rette possono essere precedute da uno smusso o un raccordo programmato nel tratto
precedente, sempre che non sia presente un punto continuo.

.....
G1 X12 Y0
G3 I0 J0 RR-2 (KA0)
G1 Y25 X-40 QF160
X-50 QF180
......

RR è negativo perché il raccordo è orario e KA è zero perché il raccordo è corto.

10.2.5 Rette aperte


Le rette aperte sono definite soltanto come direzione e devono pertanto provenire da punto
definito.
Lo Z32 calcola il punto di intersezione col tratto successivo: se questo è una retta, KA è
ininfluente, se è un cerchio, KA deve essere programmato se diverso da zero.
Le forme programmabili sono due:
G1 (KA) retta di prosecuzione -7-
(G1) QF (KA) retta con pendenza programmata -8-
Se il tratto precedente è aperto si ha errore CN3414 (precedente aperto).

284 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

La retta 7 , essendo tangente al tratto precedente, proviene da un punto continuo.


Tutte le rette aperte possono contenere raccordi o smussi alla fine del tratto.
Se il tratto successivo è la retta 6 la programmazione di KA è ininfluente.
Esempi di programmazione di rette aperte:

.....
G0 X70 Y0
G1 Y10
X62
(G1) X25 Y21,63
G1
QF180 X0 Y28
.....

.....
G0 X0 Y0
G1 Y10
G1 QF150
G2 I-20 J30 RA10
G1 X-50 Y30 QF180
.....

10.2.6 Cerchi chiusi


I tratti di cerchio chiusi possono essere definiti in vario modo, utilizzando le coordinate del punto
finale, il centro del cerchio, il raggio e la pendenza nel punto finale.
(G2/G3) X Y I J coord. del punto finale e centro del cerchio -1-
(G2/G3) X Y RA coord. del punto finale e raggio -2-
(G2/G3) I J RA QF coord. centro, raggio e pendenza finale -3-
(G2/G3) I J QF coord. del centro e pendenza finale -4-
(G2/G3) RA QF raggio e pendenza nel punto finale -5-
(G2/G3) X Y coordinate del punto finale -6-
(G2/G3) I J QA coord. del centro e lunghezza in gradi dell’arco -7-

G2/G3 X.. Y.. I.. J..


Il cerchio 1 può provenire da punto definito, da retta aperta o da cerchio aperto. Se il precedente
è un tratto aperto nel blocco precedente deve essere specificato il parametro di selezione KA.
Se il punto iniziale è definito e non sta sul cerchio attuale lo Z32 segnala allarme CN3214
(precedente errato).

D. ELECTRON 285
Cap.10 – Geometria CNC Z32 Programmazione

....
G0 X30 Y0
G3 I15 J0 KA1
I0 J15 Y30 X0
....

KA=1 => gira a destra.

G2/G3 X.. Y.. RA..


Il cerchio 2 può provenire da punto definito o da retta aperta; in tal caso viene imposta la
condizione di tangenza col tratto precedente e viene forzato, solo nel blocco, il verso di percorrenza
in modo da evitare punti spigolosi (il KA non agisce).
.....
G0 X50 Y0
G1 Y5
G1 QF150
G2 X20 Y30 RA10 (KA0)
G1 X0
....

Il cerchio 2 se proveniente da punto definito ha un'altra particolarità geometrica: per due punti
(quello iniziale e quello indicato) esistono due cerchi di raggio RA !! : lo Z32 sceglie il cerchio più
corto con KA=0, quello più lungo con KA<>0.
Riassumendo, il funzionamento è il seguente:
− se il tratto precedente è aperto il KA non agisce (raccordo continuo senza possibilità di
scelta)
− se il tratto precedente è chiuso, ossia l'arco di cerchio parte da un punto definito:
− se KA non programmato o programmato zero viene eseguito l'arco corto
(identico a prima, arco minore di 180 gradi)
− se KA programmato con un valore diverso da zero (per esempio KA1, deve
essere programmato nella stessa riga insieme all'arco G2/G3 X Y RA) viene
eseguito l'arco lungo (maggiore di 180 gradi)
Se la distanza tra i due punti o tra la retta aperta e il punto specificato è superiore al doppio del
raggio RA non esiste arco di cerchio congiungente: in questo caso lo Z32 non da allarme, ma
inserisce un arco di cerchio esattamente uguale alla metà della distanza.
Se il tratto precedente è un cerchio aperto si ha errore CN3414 (precedente aperto).

G2/G3 I.. J.. RA.. QF..


Il cerchio 3 può provenire da un tratto aperto che deve contenere il parametro di selezione KA. Il
QF è l'angolo che la tangente al cerchio nel punto finale forma con l'asse delle Z positivo.
Se il tratto precedente è chiuso si ha errore CN3214 (precedente errato).
Se l'intersezione col tratto precedente non è possibile viene segnalato allarme CN 4414 (manca
intersezione).

286 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

G2/G3 I.. J.. QF..


Il cerchio 4 può provenire da punto definito o da retta aperta; in tal caso viene imposta la
condizione di tangenza col tratto precedente e viene forzato, solo nel blocco, il verso di percorrenza
in modo da evitare punti spigolosi.
Se il tratto precedente è un cerchio aperto si ha errore CN3214 (precedente errato).
..... .....
..... G0 X20 Y-1
G1 QF45 G1 QF90
G2 I20 J0 QF-90 G3 I0 J0 RA20 QF-150 KA1
.... (G3) I-20 J0 QF180
....

G2/G3 RA.. QF..


Il cerchio 5 deve provenire da punto definito e in questo punto viene conservata la pendenza del
tratto precedente. È pertanto un cerchio raccordato al tratto precedente.
Se il tratto precedente è aperto si ha errore CN3414 (precedente aperto).

....
G0 X0 Y20
G2 I10 J15 QF-60
G3 RA20 QF30
.....

G2/G3 X.. Y..


Il cerchio 6 è un arco raccordato al tratto precedente e proviene così da punto continuo.
Lo Z32 forza il senso di percorrenza orario o antiorario per evitare punti spigolosi.
Se il tratto precedente è aperto si ha errore CN3414 (precedente aperto).

D. ELECTRON 287
Cap.10 – Geometria CNC Z32 Programmazione

......
G0 X0 Y10
G2 X10 Y0 I0 J0
G2 X50 Y0
I70 J0 X90 Y0
G3 X110 Y0
I120 J0 X130 Y0
.....

G2 X50 Y0 viene forzato in G3 ma rimane attiva G2.

G2/G3 I J QA
Il cerchio 7 può provenire da punto definito o da retta aperta; in tal caso viene imposta la
condizione di tangenza col tratto precedente e viene forzato, solo nel blocco, il verso di percorrenza
in modo da evitare punti spigolosi.
Se il tratto precedente è un cerchio aperto si ha errore CN3214 (precedente errato).
Con la programmazione dei parametri I,J,QA è possibile anche la programmazione del cerchio
completo.
Il formato di programmazione è:
G2/G3 I... J... QA...
Dove:
G2 o G3 specifica il senso orario/antiorario
I e J sono le coordinate del centro (I = primo asse, J = secondo asse)
QA è la lunghezza in gradi dell'arco voluto. Per QA sono ammessi solo valori positivi da 0 a
360.001
Valori diversi danno errore CN2C14 PARAMETRI INCOMPATIBILI
Valori di QA compresi tra 359.999 e 360.001 sono interpretati come 360.000 gradi e danno il
cerchio completo.
La tolleranza intorno a 360 è stata introdotta per il caso che il 360 sia ottenuto come risultato di
un calcolo, che in floating point potrebbe avere incertezze nei decimali e quindi dare incertezze di
esecuzione (arco di 360 gradi oppure zero).
Esempi:
G0 X20 Y10
G3 I40 J15 QA180
Genera un arco di cerchio antiorario a partire dal punto X20 Y10, con centro in X40 Y15 (quindi
raggio 20.6155) di lunghezza 180 gradi
G0 X20 Y10
G3 I40 J15 QA360
Come sopra, ma genera un cerchio completo di 360 gradi.

In ogni arco di cerchio chiuso può essere programmato un raccordo RR che viene eseguito alla
fine del tratto.

288 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

10.2.7 Cerchi aperti


I tratti di cerchio aperti possono essere definiti in vario modo, utilizzando le coordinate del punto
finale, il centro del cerchio e il raggio .
(G2/G3) I J RA coordinate centro del cerchio e raggio -8-
(G2/G3) I J coordinate del centro del cerchio -9-
(G2/G3) RA raggio -10-

G2/G3 I.. J.. RA..


Il cerchio 8 deve provenire da un tratto aperto che deve contenere il parametro di selez. KA.
Anche nel blocco attuale deve essere programmato il parametro di selezione KA.
Se il tratto precedente è chiuso si ha errore CN3214 (precedente errato).
Se l'intersezione col tratto precedente non è possibile viene segnalato allarme CN 4414 (manca
intersezione).

....
G0 X0 Y50
G1 QF-90 KA1
G3 I-2 J10 RA30 KA1
G1 X-40 Y11 QF180
Y45
X0
.....

G2/G3 I.. J..


Il cerchio 9 può provenire da punto definito o da retta aperta; in tal caso viene imposta la
condizione di tangenza col tratto precedente e viene forzato, solo nel blocco, il verso di percorrenza
in modo da evitare punti spigolosi.
Il tratto precedente aperto deve contenere il parametro di selezione KA.
Nel blocco deve essere programmato il parametro di selezione KA.
Se il tratto precedente è un cerchio aperto si ha errore CN3214 (precedente errato).

D. ELECTRON 289
Cap.10 – Geometria CNC Z32 Programmazione

...
G0 X45 Y0
G1 Y10
QF150
G3 I25 J3 (KA0)
G2 I15 J25 RA10 QF180
G1 X0
...

G2/G3 RA...
Il cerchio 10 deve provenire da punto definito e in questo punto viene conservata la pendenza
del tratto precedente. È pertanto un cerchio raccordato al tratto precedente.
Se il tratto precedente è aperto si ha errore CN3414 (precedente aperto).

.....
G3 I30 J0 X30 Y20
G2 RA10
G1 X0 Y40 QF160
.....

In ogni blocco si può programmare un raccordo RR che viene eseguito alla fine del tratto.

10.2.8 Combinazioni retta - cerchio


Si tratta di un blocco di istruzioni che realizzano un movimento su due tratti : un segmento di
retta e un arco di cerchio tangenti tra loro.
La combinazione prevede sempre la retta seguita dal cerchio e mai il contrario.
La programmazione di G1 e G2 (o G3) è sempre richiesta, e deve essere fatta nell'ordine (prima
G1 e poi G2 o G3). Dopo questo tratto rimane attivo G2 (o G3) programmato. Se viene
programmato prima G2 (o G3) e poi G1, resta attivo G1 e quindi lo Z32 da allarme CN2C14
(parametri incompatibili).
Le combinazioni previste sono:
G1 G2/G3 I J X Y centro e punto finale sul cerchio -1-
G1 G2/G3 I J RA centro del cerchio e raggio -2-
G1 G2/G3 I J RA QF centro del cerchio, raggio e pendenza finale -3-
G1 G2/G3 I J X Y QA centro, punto finale e pendenza della retta QA -4-
G1 G2/G3 I J RA QA centro, raggio e pendenza QA della retta -5-
G1 G2/G3 I J RA QF QA centro, raggio, pend. fin. e pend. QA della retta -6-
La funzione preparatoria composta è attiva solo nel blocco.

290 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

G1 G2/G3 I. J. X. Y. ..I. J. RA..QF.. ...I J.. RA...


Le combinazioni 1 2 e 3 possono provenire da punto definito o da cerchio aperto, in tal caso
viene imposta la condizione di tangenza e nasce un punto continuo: la retta risulta tangente al
cerchio precedente.
Se il tratto precedente è retta aperta si ha errore CN3214 (precedente errato).
Se la partenza è da punto definito e questo è interno al cerchio si ha errore CN3314 (interno al
cerchio).

Esempio da punto definito:


....
G1 X0 Y15
G1G2 I40 J20 X55 Y20
.....

Da cerchio aperto:
.....
G1 X70 Y5
G2 I70 J22,5
G1G3 I40 J15 RA11
G1G2 I15 J30 X4 Y25
G1 X0
......

Si ha allarme CN 3314 nelle situazioni in figura:


Cerchi concordi: nessuno deve essere contenuto nell'altro.
Cerchi discordi: i due cerchi devono essere esterni uno all'altro.

G1 G2/G3 I.. J.. X.. Y.. QA..


La combinazione 4 deve provenire da retta o cerchio aperti; la retta di pendenza QA interseca
tali tratti in due punti e il KA, presente nel tratto aperto, seleziona uno o l'altro.
Se il precedente è chiuso si ha allarme CN3214 (precedente errato).
Se l'intersezione col tratto precedente non è possibile si ha allarme CN4414 (manca
intersezione).

D. ELECTRON 291
Cap.10 – Geometria CNC Z32 Programmazione

...
G0 X0 Y0
Y10
QF180 KA1
G3 I-20 J5 RA15 KA1
G1G3 I-50 J20 X-60 Y25 QA150 KA1
G1 QF180
G1 X-90 Y20 QF-90

G1 G2/G3 I.. J.. RA.. QA.. G1 G2/G3 I.. J.. RA.. QA.. QF..
Le combinazione 5 e 6 sono simili alla 4 ma con l'uso di parametri diversi.

10.2.9 Programmazione del cerchio completo

Cerchio completo senza G200 HX4


Non è possibile la programmazione del cerchio completo: se le quote finali del cerchio
programmato coincidono con le quote iniziali, in cerchio non viene eseguito.
Come artificio di programmazione, data la grande precisione dei calcoli dello Z32, è possibile
programmare un cerchio che sia inferiore anche di frazioni di micron al cerchio completo.
Per esempio con:
...
N10 G0 X0 Y0
N11 G2 Y-0.001 X0 I50 J0
...
si ottiene un cerchio praticamente completo di raggio 50.
Un cerchio completo può anche essere programmato con due o più archi: poiché i tratti saranno
raccordati, non si avrà discontinuità di velocità.
Per esempio
...
N10 G0 X0 Y0
N11 G2 Y0 X100 I50 J0
N12 X0 Y0 I50 J0
...
In questo caso si faccia attenzione in correzione raggio perché il secondo arco di cerchio
interseca il primo arco e che quindi tutto il cerchio viene eliminato (vedere capitolo “Correzione
raggio”). In correzione raggio la programmazione del cerchio completo può richiedere almeno tre
archi.

Cerchio completo con G200 HX4


E’ possibile programmare un cerchio completo anche con l’istruzione:
G200 HX4
forza, per le righe successive, l’esecuzione del cerchio completo quando l’arco di cerchio è
programmato con G2/G3 I J X Y e le quote finali sono identiche alle quote iniziali.
Esempio:

292 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

N1 G200 HX4
N2 G0 X25.23 Y10.759
N3 G2 I40 J10 X25.23 Y10.759
Alla riga N3 viene eseguito un cerchio completo con centro I40 J10 e partenza e arrivo al punto
X20Y10.
Le condizioni per l’esecuzione del cerchio completo sono:
- deve essere programmato con G2/G3 I J X Y
- le quote finali devono essere identiche alle quote iniziali
La condizione di quote identiche si ottiene sicuramente se le quote sono programmate con
numeri espliciti identici, come nell’esempio sopra riportato, oppure se sono il risultato di formule
identiche.
ATTENZIONE: formule matematiche apparentemente identiche nella sostanza ma
formalmente diverse possono fornire risultati diversi, per le caratteristiche dei calcoli in
virgola mobile. Per esempio l’espressione 1.2*5 non dà risultato esattamente = 6, perché il
semplice numero decimale 1.2 non è rappresentabile esattamente nel sistema binario (è un
numero periodico come per esempio 1/3=0.33333... è periodico nel sistema decimale) e
quindi il risultato non è un numero intero. Risulta molto difficile prevedere il risultato, quindi
è consigliabile, quando si vogliono numeri assolutamente identici come in questo caso,
programmare numeri espliciti o formule assolutamente identiche.
In qualche applicazione la condizione di “formule matematiche assolutamente identiche” non è
stata realizzata, per cui su macchine installate si ha un comportamento incerto (cerchio completo
eseguito oppure no) in condizioni di rototraslazione di part-program.
Nel software di Z32 c’è una tolleranza: se le quote finali di entrambi gli assi che interpolano il
8
cerchio differiscono da quelle iniziali di meno di circa uno su 10 (per esempio 1 micron su una
quota di 100 metri) le quote sono considerate “identiche” e il cerchio completo viene eseguito.

D. ELECTRON 293
Cap.10 – Geometria CNC Z32 Programmazione

10.3 RACCORDI E SMUSSI


Lo Z32 consente l'inserimento di uno smusso tra due rette comunque definite e l'inserimento di
un raccordo tra due tratti qualunque tra due rette, tra due cerchi, tra retta e cerchio e tra cerchio e
retta.

10.3.1 Smussi automatici


Gli smussi vengono inseriti a fine tratto con il parametro RB che rappresenta la lunghezza dello
smusso sul tratto di retta in cui RB è programmato.
Se si programma soltanto RB si intende uno smusso simmetrico; se si programma insieme a
RB anche QA si eseguono smussi asimmetrici secondo la seguente regola:
Lunghezza secondo lato / RB = tangente di QA
Vengono qui di seguito illustrate le combinazioni possibili di smussi.

Retta chiusa - retta chiusa:


G0 X0 Y0
G1 X20 Y20 RB10
(G1)X40 Y0
oppure
G1 X20 QF45 RB10
(G1) X40 QF-45

G0 X0 Y0
G1 X20 Y20 RB15 QA30
(G1) X40 Y0
oppure
G1 X20 QF45 RB15 QA30
(G1) Y0 QF-45
(QA30 =>tg30 = 8.66/15)

G0 X0 Y20
G1 X30 Y20 RB10
(G1) X40 Y0

G0 X0 Y20
G1 QF90
X40 Y20 QF0 RB15 QA30
(G1) Y0
(QA30 =>tg30 = 8.66/15)

294 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

Retta chiusa - retta aperta / Retta aperta - retta chiusa


G0 X0 Y20
G1 X30 Y20 RB10
(G1) QF-90
oppure
G1 QF0 RB10
(G1) X30 Y0 QF-90

G0 X0 Y20
G1 X30 Y20 RB10
G1
allarme CN4514
RB/RR su inizio cerchio.

G0 X-5 Y-5
G1 X5 Y5
(G1) RB10
(G1) X40 Y0 QF-45

Retta chiusa - retta/cerchio


G0 X5 Y0
G1 Y20 RB10
G1G2 I30 J10 X30 Y0
oppure
G1G2 I30 J10 RA10 QF180

G0 X5 Y0
G1 Y20 RB10
G1G2 I30 J10 RA10
G1 X10 Y0

D. ELECTRON 295
Cap.10 – Geometria CNC Z32 Programmazione

Retta aperta - retta/cerchio

G0 X0 Y0
G1 QF60 RB15 QA30
G1G2 QA-30 I35 J0 X45 Y0
oppure
G1G2 QA-30 I35 J0 RA10 QF-90
(QA30 =>tg30 = 8.66/15)

G0 X0 Y0
G1 QF60 RB10 QA40,9
G1G2 QA-30 I35 J0 RA10
(QA40,9 =>tg40,9=8.66/10)

G0 X0 Y-25
G1 Y25 RB20
G1G2 I10 J0 RA20 QF-90

Se lo smusso cade dentro il cerchio lo Z32 non segnala allarme.

10.3.2 Raccordi automatici


Per i raccordi è necessario osservare che tra una retta e un cerchio oppure tra due cerchi non
orientati possono esistere fino ad otto raccordi. Lo Z32 con l'orientamento dei tratti seleziona i
quattro raccordi congruenti.
La selezione tra questi quattro viene effettuata utilizzando due discriminanti:

− Raggio di raccordo RR con segno col significato già detto:


RR + raccordo antiorario (G3)
RR - raccordo orario (G2)

− Parametro di selezione KA con il significato noto:


KA = 0 raccordo corto
KA<> 0 raccordo lungo

296 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

Retta chiusa-Retta chiusa

G0 X0 Y0
G1 X20 Y20 RR-10
(G1) X40 QF-45
oppure
G1 X20 QF45 RR-10
(G1) Y0 QF-45

G0 X40 Y0
G1 X20 QF135 RR10
(G1) X0 QF-135

G0 X0 Y0
G1 X35
G1 QF0
(G1) X35 Y20 QF90 RR10
(G1) X0

Retta chiusa-Retta aperta / Retta aperta-Retta chiusa

G0 X0 Y0
G1 Y20 RR-10
(G1) QF0

G0 X0 Y20
G1 QF0 RR-10
(G1) X30 Y0 QF-90

D. ELECTRON 297
Cap.10 – Geometria CNC Z32 Programmazione

G0 X30 Y0
G1 Y20 RR10
(G1) QF180
oppure
G1 QF90 RR10
(G1) X0 Y20 QF180

G0 X-5 Y-5
G1 X5 Y5
(G1) RR-10
(G1) X50 Y0 QF-45

Retta chiusa-Cerchio chiuso

G0 X0 Y10
G1 X20 Y10 RR-5
G3 I35 J10 X35 Y-5

G0 X0 Y10
G1 X20 Y10 RR5
G2 I35 J10 X35 Y25
oppure
G2 RA15 X35 Y25
G2 I35 J10 QF0

Retta aperta-Cerchio chiuso (aperto)

G0 X0 Y0
G1 QF60 RR-5 (KA0)
G3 I30 J10 X30 Y-5
(G3 I30 J10 RA15 QF0)

298 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

G0 X0 Y0
G1 QF60 RR-5 KA1
G3 I30 J10 X15 Y10
(G3 I30 J10 RA15 QF-90)

G0 X25 Y40
G1 QF-120 RR18 (KA0)
G3 I30 J10 X45 Y10
(G3 I30 J10 RA15 QF90)

G0 X25 Y40
G1 QF-120 RR18 KA1
G3 I30 J10 X30 Y25
(G3 I30 J10 RA15 QF180)

G0 X0 Y10
G1 QF0 RR-3 KA1
G3 I30 J10 X30 Y25

G0 X0 Y10
G1 QF0 RR3 (KA0)
G3 I30 J10 X15 Y10

G0 X0 Y10
G1 QF0 RR-3 (KA0)
G3 I30 J10 X30 Y-5

D. ELECTRON 299
Cap.10 – Geometria CNC Z32 Programmazione

G0 X0 Y10
G1 QF0 RR-3 KA1
G2 I30 J10 X30 Y25

G0 X0 Y10
G1 QF0 RR3 (KA0)
G2 I30 J10 X45 Y10

Cerchio chiuso-Retta chiusa

G0 X0 Y20
G1 X15 Y20
G2 X30 Y5 RR-5
G1 X0

G0 X0 Y20
G1 X15 Y20
G2 RA15 QF-90 RR5
G1 X0 Y5

G0 X25 Y0
G3 I10 J0 X10 Y15 RR-5
G1 X10 Y0

Cerchio aperto-Retta chiusa

G1 X10 Y-5
G2 I10 J15 RR-5 (KA0)
G1 X40 Y15 QF0

300 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

G0 X9 Y27,5
G1 QF0
G2 I10 J12,5 RA15 RR-5 KA1
G1 X40 Y15 QF0

G0 X9 Y27,5
G1 QF0
G2 I10 J12,5 RA15 RR5 (KA0)
G1 X40 Y15 QF0

Cerchio aperto-Cerchio chiuso (esterni)

G0 X1 Y-10
G1 QF180
G2 I0 J0 RA10 RR-20 (KA0)
G2 I20 J0 X20 Y-5

G0 X1 Y-10
G1 QF180
G2 I0 J0 RA10 RR-20 KA1
G2 I20 J0 RA5 QF90

G0 X-10 Y18
G1 QF-90
G3 I0 J15 RA10 RR-10 (KA0)
G3 I20 J15 X25 Y15

G0 X0 Y10
G3 I0 J15 RR-10 KA1
G3 I20 J15 RA5 QF0

D. ELECTRON 301
Cap.10 – Geometria CNC Z32 Programmazione

G0 X-10 Y15
G3 I0 J15 RR15 (KA0)
G2 I20 J15 X25 Y15

G0 X10 Y14
G1 QF90
G3 I0 J15 RA10 RR15 KA1
G2 I20 J15 X25 Y15

G0 X-10 Y14
G1 QF90
G2 I0 J15 RA10 RR15 (KA0)
G3 I20 J15 X25 Y15

G0 X-10 Y14
G1 QF90
G2 I0 J15 RA10 RR15 KA1
G3 I20 J15 X20 Y10

Cerchi secanti

G0 X-15 Y-1
G1 QF90
G2 I0 J0 RA15 RR4 (KA0)
G2 I25 J0 X25 Y20

302 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

G0 X-15 Y-1
G1 QF90
G2 I0 J0 RA15 RR-4 (KA0)
G3 I25 J0 X25 Y-20

G0 X15 Y1
G1 QF-90
G2 I0 J0 RA15 RR4 KA1
G2 I25 J0 X25 Y20

G0 X15 Y1
G1 QF-90
G2 I0 J0 RA15 RR-4 KA1
G3 I25 J0 X25 Y-20

G0 X-15 Y-1
G1 QF90
G2 I0 J0 RA15 RR-4 KA1
G2 I25 J0 X25 Y20

G0 X-15 Y-1
G1 QF90
G2 I0 J0 RA15 RR4 (KA0)
G3 I25 J0 X25 Y-20

D. ELECTRON 303
Cap.10 – Geometria CNC Z32 Programmazione

G0 X-15 Y-1
G1 QF90
G2 I0 J0 RA15 RR-4 (KA0)
G2 I25 J0 X25 Y20

G0 X-15 Y-1
G1 QF90
G2 I0 J0 RA15 RR4 KA1
G3 I25 J0 X5 Y0

Cerchi interni

G0 X11,5 Y10
G1 QF0
G3 I12,5 J15 RA5 RR-8 (KA0)
G2 I25 J15 RA20 QF0

G0 X13,5 Y20
G1 QF180
G3 I12,5 J15 RA5 RR-8 KA1
G2 I25 J15 RA20 QF90

G0 X11,5 Y10
G1 QF0
G3 I12,5 J15 RA5 RR8 (KA0)
G3 I25 J15 RA20 QF0

304 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

G0 X13,5 Y20
G1 QF180
G3 I12,5 J15 RA5 RR8 KA1
G3 I25 J15 RA20 QF0

G0 X26 Y-5
G1 QF180
G2 I25 J15 RA20 RR-8 (KA0)
G3 I12,5 J15 RA5 QF180

G0 X5 Y14
G1 QF90
G2 I25 J15 RA20 RR-8 KA1
G3 I12,5 J15 RA5 QF-90

G0 X26 Y35
G1 QF180
G3 I25 J15 RA20 RR8 (KA0)
G3 I12,5 J15 RA5 QF180

G0 X26 Y35
G1 QF180
G3 I25 J15 RA20 RR8 KA1
G3 I12,5 J15 RA5 QF-90

D. ELECTRON 305
Cap.10 – Geometria CNC Z32 Programmazione

10.3.3 Campo di esistenza di raccordi


È importante fare alcune considerazioni sulla possibilità di inserire un raccordo tra due tratti, il
problema non si pone se i due tratti sono due rette.
Siano:
RA1 e RA2 i raggi dei due cerchi con RA2RA1
D la distanza tra i centri
|RR| il raggio di raccordo senza segno

Cerchi esterni
Se i cerchi sono esterni si ha (| .. | valore assoluto ):
cerchi concordi/raccordo discorde |2xRR|>= D-RA1-RA2
cerchi concordi/raccordo concorde |2xRR|>= D+RA1+RA2
cerchi discordi/raccordo come il primo |2xRR|>= D+RA2-RA1
cerchi discordi/raccordo come il secondo |2xRR|>= D+RA1-RA2

Cerchi secanti
Se i cerchi sono secanti si ha:
cerchi concordi/raccordo interno |2xRR|<= D- RA1+RA2-D
cerchi discordi/raccordo interno |2xRR|<= D-RA2+RA1
|2xRR|<= D-RA1+RA2
cerchi concordi/raccordo concorde esterno |2xRR|> D+RA1+RA2

Cerchi interni
Se i cerchi sono interni si ha:
cerchi concordi RA2-D-RA1 <|2xRR| <RA2+D-RA1
cerchi discordi RA2-D+RA1 <|2xRR| <RA2+D+RA1

306 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

10.4 ESEMPI DI PROGRAMMAZIONE


La programmazione dei profili geometrici viene eseguita normalmente in correzione raggio
utensile, per questo argomento si rimanda al capitolo dedicato alla “Correzione raggio”.
Tutte le prestazioni Z32, rotazione, traslazione, specularità, fattore di scala, e la correzione
raggio utensile sono comunque utilizzabili nella programmazione dei profili geometrici.

10.4.1 Piastra sagomata 1


PIASTRA SAGOMATA%
OXA OYA OZA T9 M6
G0 X-10 Y-225 M3 M7 S1000 F1000
Z-10
G41 X0 Y-222
G1 QF 90
G3 I0 J-182,5 RA15 RR-5
G3 I0 J0 RA182 RR-5
G1G3 I47 J-179 RA16 QA-60 RR-5
G1 X59 Y<-113-42-11> QF90
X62 RR1
Y<-113-42,5+11>
X59
G1 QF90 RR-5
G1G3 I62 J-113 RA16 QA15 QF<180-15>
G1 QF<180-15>RR-5
G3 I0 J0 RA108 RR-5
G1G3 I104 J-42.5 RA16 QA0 RR-5
G3 I0 J0 RA108 RR-5
G3 I104 J42,5 RA16 QF180
G1 QF180 RR-5
G3 I0 J0 RA108 RR-5
G1G3 I42,5 J104 RA15 QA90 QF<270-30>
G1 RR-5
G3 I0 J0 RA108 QF180
G1 QF90
G3 I0 J<152,5-22,5 >RA10
G1G3 I0 J152,5 RA15
G1 X0 Y225 QF90
G40
G0Z100
M2

D. ELECTRON 307
Cap.10 – Geometria CNC Z32 Programmazione

308 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

10.4.2 Piastra sagomata 2


PIASTRA SAGOMATA%
OXA OYA OZA T9 M6 (FRESA A CANDELA)
G0 X10 Y225 M3 M7 S1000 F1000
Z-10
G41 X0 Y222
G1 QF-90
G3 I0 J152,5 RA15
G1G3 I0 J<152,5-22,5> RA10 QF0
G1 QF-90
G3 I0 J0 RA108 RR-5
G1G3 I-42,5 J104 RA15 QA120 QF-90
G1 RR-5
G3 I0 J0 RA108 RR-5
G1G3 I-104 J42,5 RA16 QA180 RR-5
G3 I0 J0 RA108 RR-5
G3 I-104 J-42,5 RA16 QF0
G1 QF0 RR-5
G3 I0 J0 RA108 RR-5
G1G3 I-62 J-113 RA16 QA<-180+15> QF-15
G1 QF-15 RR-5
G1 X-59 Y<-113-42+11> QF-90
X-62
Y<-113-42-11> RR-1
X-59
G1 QF-90 RR-5
G3 I-47 J-179 RA16 QF60
G1 QF60 RR-5
G3 I0 J0 RA182 RR-5
G3 I0 J-182,5 RA15 QA-70 QF0
G1 Y-225
G40
G0 Z100
M2

D. ELECTRON 309
Cap.10 – Geometria CNC Z32 Programmazione

310 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

10.4.3 Elica a tre pale


ELICA A TRE PALE %
OXA OYA OZA T9 M6 (FRESA A CANDELA D8)
M3 S1000 F1000
G0 X5<-R> Y<5+R> (2 QUADRANTE)
Z-5
G41 X<4,5*CS150> Y<4,5*SN150>QF60
N1 G2 RA4,5 RR10
G1G2 I57 J46 RA68 QA110 RR-6
G2 I-57 J46 RA68 QF-110
G1 QF-110 RR10
G2 I0 J0 RA4,5 QF-60
N2
!QR=240;IR=0;JR=0;GON1-N2!
!QR=120;GON1-N2!
QR0
G40 X<5-R> Y<5+R>
G0 Z200 M2

D. ELECTRON 311
Cap.10 – Geometria CNC Z32 Programmazione

10.5 PROFILI SU TRE ASSI


Lo Z32 realizza interpolazioni lineari e circolari su tre assi con la funzione preparatoria G12. Un
profilo nello spazio è costituito quindi da segmenti di retta e da archi di elica.
La programmazione dei segmenti di retta è realizzata con:
G1 X... Y... Z...
L'arco di elica può essere programmato unicamente con:
G2/G3 I... J... X... Y... Z...
dove I e J sono le coordinate del centro del cerchio di base, mentre X..Y.. e Z.. rappresentano le
coordinate del punto finale del movimento.
In tratti geometrici circolari G2/G3 è consentito programmare un terzo asse senza la previa
programmazione del G12. Inoltre, il terzo asse programmato nel movimento non è necessario che
sia il terzo asse della terna di lavoro.
È possibile utilizzare tale prestazione anche in correzione raggio fresa.
Vedere capitolo “Correzione raggio utensile”

10.6 GESTIONE DELLA VELOCITÀ


Lo Z32, nella esecuzione del profilo programmato, cerca di rendere il più possibile continua la
velocità del percorso, e pari alla velocità programmata. Esistono però situazioni, durante
l'esecuzione del profilo, che richiedono una riduzione di velocità per evitare errori.
Ogni tratto di profilo è scomposto, ai fini della velocità, in tre parti:
− una parte iniziale di accelerazione per portarsi alla velocità centrale
− una parte centrale a velocità costante
− una parte finale di decelerazione per portarsi alla velocità finale

10.6.1 Accelerazione iniziale


È una parte con accelerazione costante, sulla traiettoria programmata, per raggiungere la
velocità centrale a partire dalla velocità finale del tratto precedente.
Questa parte può mancare se la velocità centrale è uguale alla velocità finale del tratto
precedente.

10.6.2 Velocità centrale costante


La velocità centrale è, a seconda che il blocco sia in lavoro o in rapido:
− la feed programmata, eventualmente modificata con override
− il rapido, ridotto a 1/5 più override se c'è provapezzo
La velocità centrale effettiva di lavoro può essere ridotta nei seguenti casi:
− la feed programmata provoca, su uno o più degli assi interessati al movimento, una
velocità superiore al rapido/1.2: la velocità è ridotta al (rapido/1,2). Ciò permette, con
override al massimo (120%), di non superare la velocità di rapido.
− il tratto è circolare con piccolo raggio di curvatura, tanto che le accelerazioni risultanti
sono incompatibili con quelle di taratura della macchina: la velocità è ridotta alla
massima compatibile con le accelerazioni di taratura.
− il tratto è circolare in correzione raggio a curvatura interna: la velocità è ridotta nella
stessa proporzione in cui è ridotto il raggio di curvatura della traiettoria del centro

312 D. ELECTRON
CNC Z32 Programmazione Cap.10 - Geometria

utensile rispetto al raggio di curvatura del profilo programmato. Ciò significa che viene
mantenuta costante la velocità di esecuzione del profilo piuttosto che la velocità di
traslazione del centro utensile. Per sicurezza non è previsto un aumento della velocità
del centro utensile in caso di curvatura esterna.
La parte centrale a velocità costante può non esistere se i tratti iniziali o finali di accelerazione e
decelerazione sono complessivamente più lunghi del tratto completo.

10.6.3 Decelerazione finale


Raccorda la velocità centrale alla velocità finale del tratto.
La velocità finale è forzata a zero (e quindi si ha un posizionamento nel punto finale) nei
seguenti casi:
− il movimento attuale o il seguente è in G0
− non è attiva G12 e il movimento seguente interessa uno o più assi fuori dal piano di
lavoro
− a fine movimento è programmata una funzione ausiliaria (S, T, M, MA, MB, MC) o una
funzione 'con arresto' (G4, G25, G28, G29 ecc.)
Negli altri casi si dovrebbe avere una continuità della velocità e quindi la velocità finale viene
mantenuta, finche è possibile, pari alla velocità centrale costante.
Nelle seguenti condizioni si ha però una diminuzione della velocità finale rispetto alla velocità
centrale costante:
− il movimento successivo ('G1', 'G2' o 'G3'), deve essere eseguito con una 'F' inferiore:
la velocità finale è ridotta alla velocità iniziale del movimento successivo. Se la velocità
centrale del movimento successivo è superiore, la velocità finale è lasciata invariata.
− il segmento o l'arco di cerchio hanno uno spigolo finale che, considerate le
accelerazioni degli assi del piano di lavoro, porterebbe a un errore di traiettoria
maggiore di 0,005: la velocità finale è ridotta alla velocità che dà un errore di 0,005.
− a fine movimento, per effetto di G12/G13, si ha una attivazione o disattivazione di moto
nel terzo asse: la velocità finale è ridotta a un minimo di circa 20 mm/min.
− la lunghezza del tratto successivo non è sufficiente a garantire il possibile arresto degli
assi (sempre tenuto conto delle accelerazioni consentite dagli assi in gioco): la velocità
finale è ridotta alla velocità che consente l'arresto degli assi alla fine del tratto
successivo.

10.6.4 Velocità con G12 attiva


Abbiamo visto come la velocità finale del tratto programmato può essere ridotta se esiste una
attivazione o disattivazione del terzo asse a fine tratto. Quando G12 è attiva si hanno le seguenti
modalità:
− la velocità centrale è costante e mantenuta uguale a quella programmata sulla
traiettoria (ossia la velocità nel piano viene ridotta se è programmato il terzo asse, in
modo che la velocità vettoriale risultante sia pari alla feed programmata).
− non sono presi in considerazione eventuali spigoli dati da variazioni di pendenza nel
terzo asse: solo se il terzo asse è attivato o disattivato la velocità è ridotta nei punti
iniziali e finali corrispondenti. Il programmatore faccia attenzione agli overshoot che si
possono verificare.

D. ELECTRON 313
Cap.10 – Geometria CNC Z32 Programmazione

314 D. ELECTRON
CNC Z32 Programmazione Cap.11 - Rotazione Traslazione Specularità Fattore di Scala

CAPITOLO 11

11. ROTAZIONE, TRASLAZIONE, SPECULARITÀ, FATTORE


DI SCALA

11.1 TRASFORMAZIONE DELLE QUOTE PROGRAMMATE


Abbiamo finora visto che le quote sono programmate con una istruzione costituita da:
− indirizzo contenente il nome asse
− espressione o valore numerico rappresentativo della quota.
Per ottenere una più semplice ed efficiente programmazione è possibile imporre allo Z32 di
applicare alle quote programmate alcune trasformazioni standard, e precisamente:
1. rototraslazione
2. specularità
3. fattore di scala
Con queste funzioni il CN trasforma le quote programmate nelle quote che appartengono alla
nuova figura, rototraslata, speculare, amplificata o ridotta.
Si noti che il CN agisce sulle quote programmate e non sulle quote rilevate: ciò significa che le
quote visualizzate sono sempre quelle rilevate rispetto all'origine attiva e che quindi sono
rappresentative della quota reale dell'asse.
Per esempio, se si programma:
DA10 AA100
La quota dell'asse AA a fine movimento è di 110 rispetto all'origine attiva, e 110 sarà la quota
visualizzata.
I parametri usati per queste funzioni sono:
IR, JR coordinate centro di rotazione
QR rotazione
DA, DB, DC traslazione
IS, JS coordinate centro di specularità
QS inclinazione asse di specularità
KP fattore di scala nel piano
KT fattore di scala terzo asse
KM fattore moltiplicatore singolo asse
KD fattore additivo singolo asse

I parametri utilizzati per queste funzioni sono, come tutti i parametri, modali, ossia il valore
Ordine di programmato rimane fino a che un nuovo valore si sostituisce al precedente.
esecuzione
Al reset, i parametri sono posti a zero, tranne KP e KT, che sono posti ad 1 per avere fattore di
scala unitario.
Se più trasformazioni sono attive, si veda meglio in seguito, lo Z32 opera nell'ordine:
1) Rotazione: è applicata ad AA, AB, al centro cerchio I, J e alla pendenza QF.
2) Traslazione: è applicata alle quote AA, AB, AC, e al centro cerchio I, J, eventualmente
già ruotate.

D. ELECTRON 315
Cap.11 - Rotazione Traslazione Specularità Fattore di Scala CNC Z32 Programmazione

3) Specularità: il centro di specularità IS, JS, e la pendenza dello asse di specularità QS


sono riferiti all'origine non rototraslata. La specularità è applicata alle quote AA, AB, al
centro cerchio I, J, e alla pendenza QF, già rototraslate. Sono scambiate tra loro G2/G3
e G41/G42 se attive.
4) Fattore di scala: le quote della figura che risultano dalle tre trasformazioni precedenti
riferite alla origine non modificata sono moltiplicate per il fattore di scala. Sono
interessati : quote AA, AB, AC, centro cerchio I, J e il raggio RA.
Si noti ancora che i calcoli di cui sopra sono fatti solo per determinare i movimenti degli assi, e
non vanno a modificare i parametri. Per esempio, se è programmato AA 100, e la quota modificata
(per effetto di rototraslazione, specularità, fattore di scala) è di 150, il parametro AA, se usato nei
calcoli successivi, mantiene il valore 100 e non assume il valore 150.
La G53 (sospensione correzioni origini e lunghezze) sospende anche rototraslazione,
specularità e fattore di scala.
Ciò permette di programmare i movimenti della macchina in punti fissi (tipico il cambio utensili),
senza annullare le correzioni quote, che possono essere ripristinate da un successivo G54.

11.2 ROTAZIONE
La figura programmata viene ruotata di un angolo QR (in gradi sessagesimali) intorno al centro
di rotazione di coordinate (IR, JR) riferite all'origine attiva.
La rotazione è sempre abilitata (non ha bisogno di 'G' particolari) se QR diverso da zero.
Al reset è QR = IR = JR = 0.
La rotazione è applicata a:
− quote assi (AA, AB)
− centro cerchio (I, J)
− pendenza (QF)

316 D. ELECTRON
CNC Z32 Programmazione Cap.11 - Rotazione Traslazione Specularità Fattore di Scala

11.2.1 Moti assi e rotazione


Ricordiamo il comportamento dello Z32 in assenza di rotazione.
Se è programmato un solo asse del piano, lo Z32 non muove l'asse non programmato, anche
se questo, per vicende di programmazione, contiene una quota variata.
L'esempio che segue mostra il diverso risultato che si ha programmando uno o due assi del
piano in diverse condizioni.

Fino all'istruzione N3 i tre programmi sono uguali, e portano gli assi nella origine OX1 OY1.
All'istruzione N4 i parametri X e Y sono entrambi zero, ossia individuerebbero la nuova origine OX2
OY2. I movimenti ottenuti sono quelli riportati in figura: solo se sono programmati entrambi gli assi
(progr. 3) la nuova origine è raggiunta, altrimenti si muove solo l'asse programmato.
Se è attiva la rotazione (ossia QR non zero) la programmazione di un solo asse (moto parallelo
a un asse della figura non ruotata) provoca in realtà un movimento inclinato e quindi chiede il
movimento anche dell'altro asse.
Perciò, se QR non zero, anche se è programmato un solo asse, lo Z32 non limita il movimento
al solo asse programmato, ma muove entrambi gli assi, in modo da raggiungere il punto ruotato
con una traiettoria inclinata. Nel caso dell'esempio che segue il comportamento della macchina è
diverso dall'esempio precedente:

NOTE:
N1 al reset è QR = IR = JR = 0
N3 non dà moti assi perché nessuna quota è programmata
N4 anche se è programmato solo X, poiché è QR non zero, si muove Y fino alla quota 0
(valore parametro)
N6 essendo QR=0, pur contenendo il parametro Y il valore zero, l'asse Y non si muove

D. ELECTRON 317
Cap.11 - Rotazione Traslazione Specularità Fattore di Scala CNC Z32 Programmazione

11.3 TRASLAZIONE
La figura programmata è traslata delle quantità DA (primo asse), DB (secondo asse), DC (terzo
asse).
La traslazione è abilitata (senza 'G' particolari) se uno o più dei tre parametri DA, DB, DC sono
non zero.
Al reset è DA = DB = DC = 0.
La traslazione è applicata a:
− quote assi (AA, AB, AC)
− centro cerchio (I, J)

11.3.1 Moti assi e traslazione


La sola traslazione non forza il movimento di assi non programmati. Esempio:
Alla istruzione N4 i parametri X e Y sono = 0 e, con la traslazione DA, DB individuano il punto di
coordinate X=40, Y=20. Solo programmando entrambi gli assi (programma 3) il punto finale viene
raggiunto.

318 D. ELECTRON
CNC Z32 Programmazione Cap.11 - Rotazione Traslazione Specularità Fattore di Scala

11.4 SPECULARITÀ
La figura programmata è trasformata nella figura speculare rispetto all'asse di specularità
individuato dal punto di coordinate (IS, JS) e dalla pendenza QS.
La specularità deve essere abilitata da G56 (modale). G55 annulla G56 e quindi la specularità.
Al reset è IS = JS = QS = 0 ed è attivo G55 (specularità non attiva).
La specularità (G56 attiva) provoca lo scambio di G2 con G3 e di G41 con G42.
G56 può essere attiva in correzione raggio (G41/G42) ma non può essere programmata con
G41/G42 attive.
L'asse di specularità è la retta di inclinazione QS e passante per il punto di coordinate IS, JS.
QS, IS, JS sono riferite all'origine attiva e non sono rototraslate.
La specularità è applicata a:
− quote assi (AA, AB)
− centro cerchio (I, J)
− pendenza (QF)

11.4.1 Moti assi e specularità


Anche la specularità, come la rotazione, può richiedere il moto di un asse non programmato.
Perciò, in modo identico alla rotazione, se durante la specularità attiva (G56) è programmato
uno dei due assi del piano di lavoro, automaticamente lo Z32 considera anche l'altro programmato
e lo porta al punto corrispondente al valore del parametro relativo.

D. ELECTRON 319
Cap.11 - Rotazione Traslazione Specularità Fattore di Scala CNC Z32 Programmazione

11.5 FATTORE DI SCALA


Tutti gli elementi del piano che compongono la figura programmata sono moltiplicati per KP
(costante nel piano), mentre la quota AC è moltiplicata per KT (costante nel terzo asse). Gli
KT=1
elementi del piano modificati sono:
KP=1al
RESET − quote assi (AA, AB)
− centro cerchio (I, J)
− raggio cerchio (RA)
Gli elementi geometrici dell'utensile non sono modificati dal fattore di scala.
Al reset è KP = KT = 1.

Il programmatore faccia attenzione che, in correzione raggio, il fattore di scala può trasformare
un profilo da compatibile a incompatibile e viceversa, se ci sono rientranze dello stesso ordine di
grandezza del raggio fresa. Vedere anche capitolo “Correzione raggio utensile”.

11.6 PARAMETRI CORRETTIVI DELLE QUOTE


Per la modifica delle quote programmate sono disponibili:
− DA DB e DC sommati alle quote programmate del primo secondo e terzo asse del piano
− KP moltiplicato ad entrambe le quote del piano di lavoro, oltre ai parametri I, J e RA
(centro e raggio cerchio)
− KT moltiplicato alla quota del terzo asse
Sono disponibili altri fattori moltiplicativi ed additivi, non riferiti al piano di lavoro ma ai singoli
assi, che hanno effetto cumulativo con i parametri già esistenti.
Per esempio, se una macchina ha gli assi continui X Y Z B C, sono programmabili:
KMX KMY KMZ KMB KMC come termini moltiplicativi

320 D. ELECTRON
CNC Z32 Programmazione Cap.11 - Rotazione Traslazione Specularità Fattore di Scala

KDX KDY KDZ KDB KDC come termini additivi


Se KM o KD non sono seguite da un nome di asse continuo sono considerati normali parametri.
Non si ha quindi errore se si esegue un part-program che contenesse già i parametri KM o KD.
A tutti gli effetti i parametri triletterali sopra elencati sono parametri, ossia possono essere sia
scritti sia letti ed usati in espressioni matematiche.
Sono tutti azzerati all'accensione.
L'efficacia di KM e KD è sospesa con G53 attiva.
Questi parametri correttivi hanno effetto solo sulle quote programmate. Le quote visualizzate
rimangono quelle effettive dove si trova l'asse (quindi diverse da quelle programmate).
Contrariamente a KP, che agisce anche sulle coordinate del centro e sul raggio, i parametri
correttivi KM agiscono solo sulle quote. Il loro scopo è quello di modificare profili ottenuti con molti
tratti lineari corti, mentre hanno scarsa applicabilità nel caso di movimenti programmati circolari.
Comunque spetta al programmatore decidere caso per caso.
L'efficacia come termini correttivi delle quote si ha solo dopo che questi parametri sono stati
programmati in riga ISO.
Per esempio:
KMX1.035 KMY0.96
Attiva due fattori di scala, uno su asse X e uno su asse Y
La programmazione di KM o KD in riga evoluta modifica i parametri ma da sola non attiva la
correzione. Per esempio:
!KMX=1.5!
ha l'effetto di modificare il parametro KMX, ma non attiva la correzione se prima non era attiva.
Se però in precedenza la correzione era già attiva, essa rimane attiva col nuovo parametro
programmato in riga evoluta.

ATTENZIONE
L'attivazione dei parametri correttivi è immediata in fase di analisi della
riga e quindi dipende dalla posizione nella riga. Se nella stessa riga ISO è
programmata prima la quota di un asse e poi un parametro correttivo su
quello stesso asse, la quota programmata non viene corretta.
È importante la sequenza con la quale vengono applicate le correzioni, in quanto darebbe un
diverso risultato applicare prima l'addizione e poi la moltiplicazione rispetto al viceversa. La
sequenza è:
1) Moltiplicazione KM..
2) Addizione KD..
3) Moltiplicazione KT e KP
4) Addizione DA DB DC
La programmazione di KM o KD molto alti (per esempio risultato di una formula errata in cui ci
fosse una divisione per zero) può portare a comportamenti imprevedibili (dipende dalle
caratteristiche dell’asse) con possibili errori di movimento CN0013. Per questo il valore massimo
programmabile per KM e KD è inferiore a 131072, un numero sicuramente molto superiore alle
esigenze di programmazione ma tale da non provocare errori di calcolo interni del CN. Se si
programmano valori maggiori o uguali a 131072 viene allarme di programmazione CN2C14
PARAMETRI INCOMPATIBILI.

D. ELECTRON 321
Cap.11 - Rotazione Traslazione Specularità Fattore di Scala CNC Z32 Programmazione

322 D. ELECTRON
CNC Z32 Programmazione Cap.12 - Correzione raggio utensile

CAPITOLO 12

12. CORREZIONE RAGGIO UTENSILE

12.1 CORREZIONE RAGGIO UTENSILE


Quando si programma un profilo da contornare col controllo numerico, non si conosce in genere
il raggio dell'utensile col quale il profilo verrà eseguito: l'utensile infatti può variare per molte ragioni
(disponibilità, affilatura, differente utensile in sgrossatura e in finitura ...).
Lo Z32 permette di programmare il profilo del pezzo ed esegue automaticamente le modifiche al
profilo in funzione del raggio effettivamente disponibile.
È chiaro che il percorso del centro fresa (ossia i moti degli assi della macchina) è diverso da
quello che sarebbe necessario per descrivere con un utensile puntiforme (R=0) il profilo
programmato.
Nell'esempio di figura è indicato il percorso del centro fresa (A...G) corrispondente al profilo
programmato (1...6).

Si noti che:
− gli spigoli interni non possono essere lavorati a causa del raggio utensile (zone 'X')
− sono inseriti alcuni tratti di raccordo (non programmati) attorno agli spigoli esterni (B e D)
− alcuni tratti programmati sono eliminati a causa del raggio utensile (tratto 5)
In generale, se in un programma è attivata (con G41/G42) la correzione raggio, lo Z32 esegue,
su ogni tratto del profilo programmato, una serie di operazioni per trasformarlo nel percorso di
centro fresa.
Le principali operazioni che lo Z32 fa sui tratti programmati per ottenere il percorso del centro
fresa sono:

Traslazione del segmento rettilineo di una quantità pari


al raggio utensile.

D. ELECTRON 323
Cap.12 - Correzione raggio utensile CNC Z32 Programmazione

Riduzione del raggio di un arco di cerchio interno di una


quantità pari al raggio utensile. Eliminazione dell'arco di
cerchio se il raggio risultante è negativo.

Aumento del raggio di un arco di cerchio esterno di una


quantità pari al raggio utensile.

Inserzione di un arco di raccordo di raggio pari al raggio


utensile attorno a uno spigolo esterno.

Riduzione di lunghezza o eliminazione dei tratti


programmati che interferiscono con altri punti del profilo.

Questa ultima prestazione richiede allo Z32 di esplorare in avanti il profilo per ottenere le
informazioni necessarie.
I tratti successivi di profilo programmato possono infatti interferire col tratto che via via è in
esecuzione e quindi richiedere al tratto in esecuzione un diverso punto finale.

324 D. ELECTRON
CNC Z32 Programmazione Cap.12 - Correzione raggio utensile

Il tratto successivo che interferisce può


essere, in dipendenza dal tipo di profilo, anche
molto più avanti.

Nell'esempio di figura il tratto 9 va ad interferire col tratto 1: per risolvere questo caso il CN
dovrebbe esplorare avanti per almeno 9 tratti, oltre ai raccordi da inserire intorno agli spigoli.
A causa dei limiti fisici, imposti dalla dimensione di memoria e dai tempi di calcolo, si è dovuto
limitare il numero dei tratti esplorati, considerando anche che, qualunque sia il numero di tratti fatti
calcolare al CN, è sempre possibile immaginare un profilo più complesso.
Con due tratti in avanti si possono già risolvere i casi più normali di profilo: lo Z32 quindi, se il
programmatore non richiede prestazioni diverse, esplora in avanti fino a che non ha definito due
tratti di profilo successivi a quello in esame (tre tratti in tutto).
Per esempio si consideri il classico caso di un gradino di altezza inferiore al raggio utensile:
questo caso è pienamente risolto dallo Z32 con l'esplorazione di tre tratti.
I tratti di cui è composto il profilo modificato col raggio utensile sono:
1. tratto iniziale orizzontale
2. raccordo circolare attorno allo spigolo programmato
1. tratto verticale
2. tratto finale orizzontale

Lo Z32 esegue perciò in sequenza le seguenti elaborazioni:


1) TRATTO INIZIALE ORIZZONTALE
Il tratto 2 si raccorda.
Il tratto 3 si raccorda.
Sono stati esaminati tre tratti e quindi il tratto 1 è passato alla esecuzione senza modifiche.
2) RACCORDO CIRCOLARE
Il tratto 3 si raccorda.
Il tratto 4 interseca il 2: i tratti 2 e 4 sono modificati in conseguenza e il tratto 3 è eliminato.

D. ELECTRON 325
Cap.12 - Correzione raggio utensile CNC Z32 Programmazione

Il procedimento continua fino a che non sono stati esaminati tre tratti.
Abbiamo prima detto che lo Z32 in condizioni normali esplora tre tratti: ciò è sufficiente a
risolvere un grande numero di casi pratici. È evidente però che si possono pensare casi in cui il
profilo è incompatibile con la entità della esplorazione in avanti dello Z32.
Un esempio di caso limite è quello di una tasca rettangolare di larghezza 'A' e profondità 'B'
(vedere figura), con BA (tasca più profonda che larga). I tratti in cui è scomposto il percorso del
centro fresa sono i seguenti:
1. tratto iniziale orizzontale
2. raccordo circolare di entrata
3. tratto verticale di entrata
4. fondo
5. tratto verticale di uscita
6. raccordo circolare di uscita
7. tratto finale orizzontale

Ai fini della compensazione raggio, sono possibili tre casi:


1. diametro utensile minore della larghezza (2*R<A)
2. diam. utens. maggiore del doppio della larghezza (R<A)
3. diametro utensile intermedio
Esaminiamo per ogni caso e per ogni tratto il comportamento dello Z32.

DIAMETRO UTENSILE MINORE DELLA LARGHEZZA


Tratto 1. Il tratto 2 si raccorda, il tratto 3 si raccorda: il tratto 1 è eseguito invariato.
Tratto 2. Il tratto 3 si raccorda, il tratto 4 interseca il tratto 3: sono accorciati i tratti 3 e 4, il
tratto 2 è eseguito invariato.
Tratto 3. Il tratto 4 si raccorda, il tratto 5 interseca il 4: sono accorciati i tratti 4 e 5, il tratto 3 è
eseguito (più corto perché accorciato in precedenza).
Tratto 4. Il tratto 5 si raccorda, il tratto 6 si raccorda: il tratto 4 è eseguito.
Tratto 5. Il tratto 6 si raccorda, il 7 si raccorda: il 5 è eseguito.
Tratto 6. Il 7 si raccorda...
Il profilo è eseguito correttamente.

326 D. ELECTRON
CNC Z32 Programmazione Cap.12 - Correzione raggio utensile

DIAMETRO UTENSILE MAGGIORE DEL DOPPIO DELLA LARGHEZZA


Il raggio utensile è maggiore della larghezza: la fresa è quindi molto più grossa della tasca.
Tratto 1. Il 2 si raccorda, il 3 si raccorda: l'1 è eseguito.
Tratto 2. Il 3 si raccorda, il 4 non si raccorda e non interseca: il 4 è eliminato. Si procede col
5 che non si raccorda e non interseca: anche il 5 è eliminato. Il 6 interseca il 2: il 3 è
eliminato, il 6 e il 2 sono accorciati di conseguenza.
Si procede col 7 che si raccorda e quindi (con 2 tratti avanti già esplorati) il 2 è eseguito.
Tratto 3. Era eliminato.
Tratto 4. Era eliminato.
Tratto 5. Era eliminato.
Tratto 6. Il 7 si raccorda...
Il profilo è eseguito solo in parte, perché l'utensile si 'appoggia’ sui due spigoli, senza entrare
nella tasca: comunque l'utensile fa quello che può.

DIAMETRO UTENSILE MAGGIORE DELLA LARGH. E MINORE DEL DOPPIO


L'utensile non entra nella tasca, ma è più piccolo del doppio della larghezza.
Tratto 1. Il 2 si raccorda, il 3 si raccorda: l'1 è eseguito
Tratto 2. Il 3 si raccorda, il 4 interseca il 3: il 3 e il 4 sono accorciati e il 2 (avendo due tratti
avanti) è passato all'esecuzione. A questo punto il CN ha già commesso un errore non
recuperabile, in quanto il 2 doveva essere accorciato.
Tratto 3. Il 4 si raccorda, il 5 non si raccorda e non interseca: è eliminato. Il 6 non si raccorda
e non interseca nessuno dei tratti in esame (avrebbe intersecato il 2, se non fosse stato
passato all'esecuzione): il 6 è eliminato. Il 7 non si raccorda e non interseca: è eliminato.
Il procedimento prosegue fino al termine della correzione raggio, in quanto nessuno del tratti
successivi si raccorderà con quelli in esame, e a questo punto il controllo darà allarme 'PROFILO
INCOMPATIBILE'.
In modo simile possono essere esaminati i vari casi: in generale si può dire che i casi di
'PROFILO INCOMPATIBILE' si verificano sempre quando si hanno delle rientranze nel profilo di
dimensioni inferiori al diametro utensile.
Il programmatore ha la possibilità di richiedere allo Z32 un numero diverso di tratti sbrogliati, se
le condizioni del profilo lo richiedono. La funzione è la G109, che deve essere seguita da una lettera
da A a E per specificare il numero dei tratti da esplorare:

G109A tre tratti (attiva al reset)


G109B quattro tratti
G109C cinque tratti
G109D sei tratti
G109E sette tratti
Un esempio di caso che viene risolto interamente con 7 tratti (G109E) è indicato in figura.
Il tratto 1 interseca il tratto 8 (perché il diametro utensile è più grosso dell'apertura). Quando il
CN esamina il tratto 1, il tratto 7 in avanti interseca già il tratto 3, e i tratti 4, 5 e 6 vengono eliminati:
il successivo tratto 8 interseca il tratto 1 e quindi anche i tratti 2 e 3 sono eliminati e il tratto 1
accorciato.

D. ELECTRON 327
Cap.12 - Correzione raggio utensile CNC Z32 Programmazione

Se la stessa figura venisse eseguita con tre tratti (la normale G109A) il CN non si accorgerebbe
dell'apertura più stretta dell'utensile ed entrerebbe nel profilo.
È inoltre possibile programmare la funzione G109R ,che forza l'inserimento di un raccordo
anche intorno allo spigolo interno e quindi elimina, in pratica, l'errore PROFILO INCOMPATIBILE.
La G109R viene annullata dalla G109N; può essere programmata immediatamente prima dei
blocchi che provocano PROFILO INCOMPATIBILE: può essere quindi più chiaro, dai movimenti
eseguiti, quale è la situazione che provoca l'allarme.
Si faccia attenzione che, con G109R attiva, l'utensile può entrare nel profilo programmato e
possono rimanere raccordi lunghi sugli spigoli interni in caso di profilo complesso.

12.1.1 Attacco al profilo


A ogni inizio programma lo Z32 è forzato nel modo NON CORREZIONE RAGGIO (G40).
Per far entrare lo Z32 nel modo 'CORREZIONE RAGGIO' occorre programmare G41 (pezzo a
destra) o G42 (pezzo a sinistra).
Questo momento di 'attacco al profilo’ richiede alcune operazioni geometriche particolari: le
quote programmate non dovranno più essere interpretate come quote a cui si deve portare il centro
fresa, ma come quote del profilo del pezzo: la traiettoria del centro fresa sarà spostata di una
quantità pari al raggio utensile dalla traiettoria programmata.
In aggiunta ai modi di programmare il profilo già descritti nel capitolo “Geometria” se ne
aggiungono perciò alcuni altri, caratteristici dell'attacco al profilo.
Al solito si farà uso degli assi 'X' e 'Y' per indicare il primo e il secondo asse del piano di
contornatura, ma gli assi potranno essere diversi, se il piano di contornatura (impostato con G25...)
è diverso.
Dopo G40, G41, G42 è attivo G1 modale, e quindi non viene errore se si danno quote
compatibili con la programmazione di G1.
Resta il fatto che la programmazione di G0 (solo dopo G40) o G2 o G3 al blocco che segue G40
G41 o G42 è regolarmente valida ed accettata.

Correzione raggio e sistemi di tipo tornio


Per sistemi di tipo tornio, prima della programmazione delle funzioni G41 o G42, occorre
impostare la correzione vettoriale del raggio utensile. A questo proposito fare riferimento alla
funzione G150.

328 D. ELECTRON
CNC Z32 Programmazione Cap.12 - Correzione raggio utensile

G41/G42 - programmate X... Y... QF... - attacco in tangenza


Insieme alla funzione preparatoria G41 (inizio correzione raggio con pezzo a destra) o G42
(inizio correzione raggio con pezzo a sinistra) sono programmate:
− le due quote finali del piano di lavoro
− la pendenza finale del tratto di raccordo
La pendenza finale è programmata come descritto al capitolo della Geometria.
Il raccordo al profilo è fatto con un arco di cerchio che porta la fresa a sfiorare il punto
programmato, pronta per eseguire un tratto che parta dal punto programmato con pendenza QF.
La lunghezza e la curvatura dell'arco di cerchio sono calcolate automaticamente dal CN e
dipendono dal punto di partenza del raccordo.
Negli esempi che seguono è illustrato il movimento dell'utensile per tre diversi attacchi al profilo
con pendenza finale zero.

I pregi di questo modo di attacco al profilo sono che, se la pendenza è programmata


correttamente, l'utensile entra sul profilo lungo la tangente e quindi 'segna’ il profilo in modo
minimo.
D'altra parte si hanno due inconvenienti:
− il calcolo di QF può non essere semplicissimo
− il raccordo di attacco al profilo non è considerato un elemento del profilo e quindi non
viene accorciato se interferisce con tratti successivi di profilo.
Esempio con QF errato:

....
T2 M6 (RAGGIO=10)
G0 X0 Y0
G41 X25 Y0 QF0 (QF errata)
G1 X50 Y35
...

D. ELECTRON 329
Cap.12 - Correzione raggio utensile CNC Z32 Programmazione

Il QF deve essere programmato esatto perché se è errato (in fig. è 0 anziché 54.46) l'utensile
può entrare nel profilo.
Questi problemi possono essere superati con i seguenti altri modi di attacco al profilo.

G41/G42 - programmate X... Y... - attacco rettilineo


Sono programmate solo le quote del punto iniziale del profilo.
Il movimento iniziale di raccordo è un segmento di retta, che viene trattato a tutti gli effetti come
un elemento del profilo e quindi può venire accorciato se interferisce con altri tratti del profilo.
....
T2 M6 (RAGGIO=10)
G0 X0 Y0
G41 X25 Y0
G1 X50 Y35
...

È aggiunto un tratto fittizio di profilo xx che


porta l'utensile al punto iniziale del profilo P1:
l'utensile non entra nel profilo reale ma si
arresta sulla bisettrice dello spigolo P1.

G41/G42 - programmato QF... - attacco rettilineo


È programmata solo la pendenza iniziale: come si vede nell'esempio, può essere calcolata in
modo molto grossolano senza errori sul profilo reale.
Non viene generato movimento di assi.
......
T1 M6 (RAGGIO 10)
G0 X0 Y0
G41 QF0
G1 X25 Y0
G1 X50 Y35
...

Non si ha movimento nel blocco G41 QF. Se QF è errato (come in figura, 0 anziché circa 20
gradi) l'errore si ha solo nel tratto in G1 che porta l'utensile al primo punto reale del profilo P1, ma
l'utensile essendo ancora fuori non si hanno errori sul pezzo.

G41/G42 - programmate X... Y... I… J… - attacco rettilineo sulla normale al profilo


Nel caso di profili chiusi e se non si vuole usare l’attacco al profilo circolare (G41/G42 X Y QF)
occorre programmare due volte (all’inizio e alla fine) un tratto di profilo lungo almeno quanto il
raggio utensile, altrimenti si lascia un dente sul profilo finito.

330 D. ELECTRON
CNC Z32 Programmazione Cap.12 - Correzione raggio utensile

La G41/G42 X Y I J fa un attacco lineare senza necessità di sovrapposizione.


Questo modo fa conto che il profilo inizi nel punto programmato (con X Y) nella stessa direzione
che avrebbe un tratto circolare di centro I J. Il movimento di attacco al profilo è quindi un tratto
lineare che porta il centro utensile sulla congiungente tra il centro (I J) e il punto finale (X Y) a una
distanza dal punto finale pari al raggio utensile (R).
Si possono avere vari casi:
- se il primo tratto di profilo è proprio un cerchio I J può essere il centro
- se si vuole un attacco ortogonale I J può essere il centro utensile all’inizio del movimento di
attacco al profilo (ossia può coincidere col punto finale precedente)
- in ogni caso I J può essere un punto qualsiasi che stia sulla semiretta ortogonale al profilo nel
punto di attacco dalla parte dell’utensile.

G41 /G42 - senza quote


Si può programmare per esempio una sequenza di questo tipo:
...
N20 G41 (senza nessuna quota)
N21 G1 X10 Y4 (G1 può essere omesso, sono obbligatorie entrambe le quote)
N22 ...
Il blocco N21 specifica il primo punto del profilo da raggiungere in correzione raggio.
Il blocco N22 contiene il primo movimento in correzione raggio, che può essere uno qualsiasi di
quelli ammessi dalla geometria di Z32 a partire dal punto N21.
Il movimento di attacco al profilo porterà l'utensile tangente al profilo nel punto programmato in
N21 (il centro dell'utensile sarà sulla verticale del profilo nel punto N21, a una distanza pari al
raggio).
Con questo tipo di attacco si può programmare un profilo chiuso (in cui l'ultimo tratto si richiude
sul punto N21 dell'esempio) senza lasciare il piccolo "dente" di materiale che viene specificando le
quote del primo punto nella stessa riga che contiene G41.

12.1.2 Distacco dal profilo


Situazione analoga all'attacco al profilo è quella del distacco dal profilo: anche in questo caso il
CN deve cambiare il significato assegnato alle quote programmate, ma in senso contrario, ossia
deve passare dall'interpretazione delle quote come quote del profilo a quote del centro fresa.
La funzione 'G' da usare è la G40.
Come per l'attacco al profilo (paragrafo precedente) anche nel primo blocco di movimento dopo
G40 si deve programmare il tipo di movimento (G0, G1, G2 o G3).

G40 X... Y...


Con G40 X Y il CN esegue un tratto circolare tangente all'ultimo tratto del profilo eseguito e
porta il centro fresa sul punto finale indicato.

G40 senza quote


Se non si programmano le quote finali del raccordo viene cessata la correzione raggio
direttamente nel punto finale del profilo programmato: il blocco successivo avrà le coordinate del
centro fresa come punto di partenza.
Se si programma alla chiusura di una correzione raggio G40 accompagnato da G0 e una quota,
per esempio:

D. ELECTRON 331
Cap.12 - Correzione raggio utensile CNC Z32 Programmazione

N30 G40 G0 Z20


Viene allarme di programmazione CN 1D14.

12.1.3 Gestione della velocità


La FEED programmata è in generale la velocità con la quale il programmatore vuole che il
profilo sia contornato dall'utensile. Normalmente il CN mantiene (compatibilmente con i limiti
dinamici delle accelerazioni consentite) costante e pari alla F programmata la velocità del centro
fresa.
In correzione raggio, normalmente il programmatore desidera mantenere costante la velocità di
contornatura del profilo, che è quella della periferia della fresa, piuttosto che del centro.
Per tratti rettilinei la velocità del centro e della periferia dell'utensile sono uguali, mentre ci sono
differenze per tratti circolari.
Si ha un incremento della velocità di traslazione della periferia rispetto al centro negli archi
interni, e una diminuzione negli archi esterni.
Durante la correzione raggio, lo Z32 mantiene il più possibile costante la velocità di traslazione
della periferia piuttosto che del centro fresa: in ogni caso sono però ESCLUSI aumenti di velocità
del centro fresa rispetto alla velocità programmata. Ciò per evitare problemi nel caso di lavorazioni
in sgrossatura in cui è possibile anche la fresatura dal pieno.

12.1.4 Raggio zero o negativo


È consentito che il raggio utensile sia zero o negativo: nel caso di raggio zero si avrà
l'esecuzione del profilo programmato, mentre con raggio negativo si ha l'equivalente di uno
scambio tra G41 e G42.
Il raggio negativo può avere un senso nel caso che il profilo sia stato calcolato (per esempio da
un sistema di programmazione automatica) già per il raggio fresa tipico, e che la correzione raggio
sia fatta dall'operatore alla macchina per correggere l'eventuale usura o differenza dell'utensile
impiegato.
Si faccia ATTENZIONE che in questo caso, essendo il raggio comunicato allo Z32 fittizio e non
reale, si perde l'adattamento della velocità del centro fresa e la costanza della velocità di traslazione
periferica: nei blocchi dove questo adattamento occorre, dovrà essere riprogrammata la FEED.
Nel caso di raggi utensile molto piccoli (inferiori a circa 3 micron) si possono avere errori sul
profilo interpolato di un massimo di circa 2 micron, che dovrebbero essere tollerati senza difficoltà
in qualsiasi applicazione, in quanto inferiori agli altri errori che influiscono sul risultato finale (errori
di inseguimento, di temperatura, di geometria utensile ecc.). Se però non sono tollerati errori di
questa entità, si raccomanda di non programmare raggi utensili molto piccoli (ossia si deve
programmare il raggio utensile fisico e non la correzione rispetto al raggio teorico.

332 D. ELECTRON
CNC Z32 Programmazione Cap.12 - Correzione raggio utensile

12.1.5 Blocco singolo


L’attivazione del blocco singolo provoca l’arresto della macchina e l’esecuzione di un blocco alla
volta (blocco inteso come operazione elementare; in una riga ci possono essere più blocchi
elementari) premendo il pulsante di START.
Il funzionamento è il seguente:
− quando viene attivato il blocco singolo il CN tenta di arrestare gli assi esattamente alla
fine del movimento in corso
− se il blocco singolo viene attivato a ridosso della fine del movimento ciò non è possibile
perché gli assi devono frenare in traiettoria con le accelerazioni di taratura. In questo
caso il movimento prosegue nel blocco successivo fino all'arresto degli assi che può
quindi avvenire in un punto intermedio e non esattamente a fine blocco. Se il profilo è
composto di molti tratti corti l'arresto può avvenire anche molti blocchi dopo
− partendo da assi fermi con blocco singolo attivo, una sola pressione del pulsante
START avvia il movimento

12.1.6 Esecuzione di profili chiusi in correzione raggio


Prendiamo come esempio di profilo chiuso in correzione raggio il seguente programma:
...
N10 G0 X-40 Y0
N11 G41 X-20 Y0 QF0
N12 G1 X0 Y0
N13 G2 X0 Y-40 I0 J-20
N14 G2 X0 Y0 I0 J-20
N15 G1 X20 Y0
...
il cerchio completo programmato con due semicerchi in N13 N14 può essere eseguito o non
eseguito in dipendenza dalle approssimazioni di calcolo (dipende dal raggio, dalle quote
programmate ...).
Il modo certo di eseguire il cerchio è di aggiungere nella riga N14 una "G109X" per forzare il
passaggio da quel punto, ma questo accorgimento, non usuale per altri CN, può con facilità
sfuggire al programmatore.
Nello Z32 esiste il riconoscimento di un profilo chiuso programmato. Se il profilo è chiuso (cosa
che si riconosce perché i punti finali di due blocchi coincidono) è comunque eseguito.
Si ritiene infatti che il CN possa "interpretare" in questo senso la volontà del programmatore.
Nel caso in questione la coincidenza dei punti finali di N12 ed N14 fa riconoscere il profilo chiuso
e quindi forza l'esecuzione del cerchio.
Per evitare incertezze dovute alle approssimazioni di calcolo i due punti sono considerati
coincidenti se le loro quote coincidono a meno di 0,002 unità programmate.
L'eventuale movimento del terzo asse non è considerato, ossia un profilo è considerato chiuso
anche se nel frattempo il terzo asse si è mosso.

D. ELECTRON 333
Cap.12 - Correzione raggio utensile CNC Z32 Programmazione

334 D. ELECTRON
CNC Z32 Programmazione Cap.13 - Prestazioni speciali

CAPITOLO 13

13. PRESTAZIONI SPECIALI

13.1 TASTATORE DI MISURA - G61


Lo Z32 contiene un completo ciclo di misura che, grazie alla gestione delle dimensioni fisiche del
tastatore, risulta di estrema semplicità di uso e di messa a punto.
Perché sia possibile effettuare il ciclo di misura occorre che la macchina sia predisposta dal
costruttore con le opportune tarature.
Il blocco con movimento di misura è costituito da:
G61 AA... AB... AC... DM...
G61 è la funzione preparatoria che imposta la misura (vale solo nel blocco).
AA, AB, AC sono le quote finali massime del movimento di ricerca (come al solito, possono
essere usati i nomi assi, p. es. X, Y, Z, che devono essere i tre assi della terna di lavoro (scelta con
G25...). Possono essere programmate 1, 2 o 3 quote finali, sempre scelte fra le tre della terna.
DM è la distanza, misurata sulla traiettoria, dal punto finale entro la quale si prevede di trovare il
contatto. Se DM non è programmata nel blocco è usato dal CN il valore attuale del parametro DM
(=0 se mai programmato).

Il ciclo eseguito è:
1) accostamento in rapido (A-B in figura): se in questo tratto è trovato il contatto la misura
è presa lo stesso, ma con possibile pericolo per il tastatore dovuto all'alto spazio di
frenata
2) ricerca a velocità media fino al massimo (punto C)
3) a contatto avvenuto, inversione del senso di moto con accelerazione doppia della
taratura e ritorno indietro sulla traiettoria programmata fino alla perdita del contatto.
Durante l'inversione di moto ad accelerazione doppia è temporaneamente sospeso
l'allarme per errore di inseguimento.
4) ricerca in avanti a velocità lentissima
5) presa delle quote precise al momento del contatto e restituzione in forma di parametri
Se al punto 3 il contatto resta ancora attivato quando gli assi sono tornati al punto iniziale (A in
figura) il CN dà allarme CN0513.

D. ELECTRON 335
Cap.13 - Prestazioni speciali CNC Z32 Programmazione

Se al punto 4 (ricerca in avanti a velocità lentissima) la macchina arretra di più di 1,5 mm dal
punto del primo contatto viene allarme CN0613.
I parametri restituiti dopo un ciclo di misura sono:
AM quota di contatto del primo asse della terna (definita con G25...)
BM quota di contatto secondo asse
CM quota di contatto terzo asse.
I parametri AM BM CM sono calcolati a partire dalle quote misurate al momento del contatto
riferite all'origine attiva e tenendo conto delle dimensioni fisiche del tastatore.
Se nelle fasi 2 o 4 non è trovato il contatto entro la traiettoria massima programmata, il CN non
dà errore, ma restituisce tre parametri AM, BM, CM molto grandi (più di 100.000): ciò permette al
programmatore di prendere delle decisioni e deviare il programma in caso di mancato contatto.
Nota bene: in caso di non contatto, tutti e tre i parametri sono restituiti molto grandi,
indipendentemente dal numero di assi interessati al movimento di misura.
I parametri usati per correggere le quote con le dimensioni fisiche del tastatore sono:
− lunghezza L
− raggi AP, AN, BP, BN
Nella figura è rappresentato il tastatore equivalente, composto di quattro archi di ellisse.
Il CN calcola da solo quale parametro usare e con quale coefficiente di direzione in funzione
dell'inclinazione del tratto programmato.

I parametri :
L , AN , AP , BN , BP
rappresentativi delle dimensioni fisiche del tastatore devono essere
già presenti in memoria quando si esegue la misura: essi possono
essere messi nella descrizione dell'utensile tastatore e devono
essere in precedenza calcolati o meglio misurati in modo
automatico con apposita macro di calibrazione.

Nella figura che segue è rappresentato il diagramma di velocità in funzione del tempo, per un
movimento di misura completo. La velocità è calcolata sulla traiettoria, come in G0/G1.

336 D. ELECTRON
CNC Z32 Programmazione Cap.13 - Prestazioni speciali

Si tenga presente che, se lo spazio di frenata da rapido a lento è superiore alla distanza AB,
tutta la ricerca (incluso il tratto programmato come rapido) viene eseguita alla velocità di ricerca
lenta.
In generale il tratto di decelerazione da rapido a lento può essere eseguito tutto o in parte a
velocità lenta se il rapido non era stato completamente raggiunto.
In ricerca blocco G61 è ignorato: il blocco si trasforma in blocco di movimento fino alle quote
finali. I parametri AM BM CM non sono modificati.
Se si desidera che il programma possa essere ripreso senza problemi anche in ricerca blocco,
dovrà essere cura del programmatore salvare in memoria permanente (per esempio nella sezione
parametri) i risultati delle varie misure per poterle poi simulare in ricerca blocco.

13.1.1 Ciclo di misura G61 con un solo contatto


La procedura a doppio contatto permette di avere ottime precisioni ma richiede una maggiore
perdita di tempo, per questo motivo si è resa disponibile un modalità di G61 con contatto singolo.
Il ciclo operativo è composto da:
1 – movimento di accostamento in rapido
2 – rallentamento alla velocità di ricerca
3 – presa delle quote al momento del contatto e restituzione in forma di parametri
Questa modalità si attiva programmando il parametro "J" nella riga di G61:
G61 Z-100 DM20 J100
Il parametro J definisce la velocità di ricerca, espressa in mm/min o pollici/min, quindi
nell'esempio richiede una velocità di 100 mm/min (se la macchina è in mm). Il campo di valori
ammessi per il parametro J è compreso tra un minimo di circa 0,23 mm/min e un massimo di 6000
mm/min.
Il valore massimo di 6000 mm/min è fisso ed indipendente dai valori di velocità di ricerca definiti
in taratura.
Valori esterni a questo campo ammesso sono forzati ai limiti più vicini, in particolare valori
negativi sono forzati a 0,23 mm/min.
Durante il movimento di misura gli assi della macchina devono fermarsi immediatamente
quando si incontra il segnale del tastatore, si hanno quindi brusche accelerazioni che possono non
essere compatibili con la dinamica degli assi macchina, in particolare quando il controllo degli assi
è rigido (G113X).
Poiché quando è programmato J i valori ammessi per il movimento di misura sono molto alti
(fino a 6000 mm/min) è necessario forzare la G113P, si ha quindi la seguente tabella di
funzionamento:

Modo attivo prima della G61 Modo durante G61 normale (senza J) Modo durante G61 con J
programmato

G113P G113P G113P

G113F G113F G113P

G113X G113P G113P

D. ELECTRON 337
Cap.13 - Prestazioni speciali CNC Z32 Programmazione

ATTENZIONE
le velocità massime di ricerca consentite durante la G61 con
programmazione di J sono molto alte (fino a 6000 mm/min). L'utente deve
controllare che gli spazi di frenata conseguenti alla velocità programmata
siano compatibili con l'extra-corsa consentito dal tastatore di misura
utilizzato.
Si faccia attenzione al fatto che il bit di misura viene controllato da Z32 ogni 2 millisec, quindi si
ha un'incertezza nella misura che dipende dalla velocità di ricerca, come riportato nella tabella
seguente:
velocità ricerca mm/min incertezza di misura micron
30 1
100 3,3
200 6,7
300 10
Si deve anche tener conto del fatto che a velocità elevate possono essere rilevanti i ritardi dovuti
alla risposta meccanica del tastatore, che ovviamente non sono stati considerati nella tabella qui
sopra.

13.1.2 G61 KA1 ciclo di misura su piani rototraslati


Con G116 attiva, programmando G61 KA1 nei parametri AM, BM, CM, vengono restituite le
quote misurate degli assi XYZ, espresse nel sistema di coordinate rototraslato da G116 (la G61
senza KA1 le restituisce nel sistema di coordinate dritto). Se G116 non è attiva la G61 KA1 si
comporta esattamente come la G61.
Per attivare G61 KA1 basta programmare il parametro KA1 in una posizione qualsiasi sulla riga
di attivazione di G61.
Esempi:
G61 X0 Y0 Z18 KA1 DM2
G61 KA1 X10 Y5 Z25 DM2
Nei paragrafi che seguono si danno alcuni esempi di applicazione.

13.1.3 Macro per la calibrazione del tastatore


Scopo: determinare i cinque parametri correttivi L, AN, AP, BN, BP e scriverli nella descrizione
dell'utensile tastatore che è sul mandrino.
Sulla macchina è montato un riferimento, con centro nella origine attiva, che può essere una
sfera di raggio HR o meglio un cubo di lato 2*HR.
Parametri di entrata:
HR raggio sfera
R raggio presunto del tasto
L lunghezza presunta del tastatore
Tolleranze: si ammette che gli errori siano contenuti entro +- 1mm max e che non ci sia bisogno
di ulteriori approssimazioni.

338 D. ELECTRON
CNC Z32 Programmazione Cap.13 - Prestazioni speciali

PROGRAMMA %
AN0 AP0 BN0 BP0 (PREDISPONE CORREZIONI ZERO)
G0 AC<HR+1> (POSIZIONA PER MISURA TERZO ASSE)
AA0 AB0 (MISURA L)
G61 AC<HR-1> DM2
!IF AM>99000;GON9! (SE NON TROVATO CONTATTO ALLARME)
L<L+CM-HR> (CALCOLA ED ATTIVA NUOVA L)
(MISURA AN)
G0 AA<HR+R+1> (ESCE)
AC<-R> (SCENDE)
G61 AA<HR+R-1> (TOCCA)
!IF AM>99000; GON9! AN=AM-HR!
G0 AA<HR+R+1>
(misura AP)
G0 AC<HR+1>
AA<-HR-R-1>
AC<-R>
G61 AA<-HR-R+1>
!IF AM>99000; GON9! AP=-(AM+HR)!
G0 AA<-HR-R-1>
(misura BN)
G0 AC<HR+1>
AA0 AB<HR+R+1>
AC<-R>
G61 AB<HR+R-1>
!IF AM>99000; GON9! BN=BM-HR!
G0 AB<HR+R+1>
(MISURA BP)
G0 AC<HR+1>
AB<-HR-R-1>
AC<-R>
G61 AB<-HR-R+1>
!IF AM>99000; GON9! BP=-(BM+HR)!
G0 AB<-HR-R-1>
(ESCE IN AC)
AC<HR+1>
(SCRIVE NUOVI CORRETTORI UTENSILE SU MANDRINO)
!:WSL=L,AN=AN,BN=BN,AP=AP,BP=BP!
G26 (FINE)
(RIGA ERRORE)
N9 MANCA CONTATTO

D. ELECTRON 339
Cap.13 - Prestazioni speciali CNC Z32 Programmazione

Si noti come sono stati scelti i segni nel calcolo di AN, AP, BN, BP in funzione del fatto che
questi quattro parametri sono positivi e circa uguali, con tasto ben centrato, al raggio tasto.

13.1.4 Macro per azzeramento origini XY a centro foro


Scopo: azzerare le origini correnti al centro di un foro.
Parametri in entrata:
H raggio foro
HT tolleranza
HA quota Z di misura
HC uscita lunga in Z
AP, AN, BP, BN, L correttori tasto
Parametri in uscita:
DI, DJ spostamento centro foro
OX* e OY* aggiustate a centro foro

PROGRAMMA
%
G0 X0 Y0 (MUOVE X E Y E SCENDE A QUOTA MISURA)
Z<HA>
G61 X<HR-AP+HT> DM<2*HT> (TASTA IN X)
!IF AM>99000; GON9! DI=AM!
G0 X0 (STACCA IL TASTO)
G61 X<-HR+AN-HT>
!IF AM>99000; GON9! DI=(DI+AM)/2!
G0 X (TASTA IN Y)
G61 Y<HR-BP+HT>
!IF AM>99000; GON9! DJ=BM!
G0 Y0
G61 Y<-HR+BN-HT>
!IF AM>99000; GON9! DJ=(DJ+BM)/2!
!:ROX*=AM;AM=AM+DI;:WOX*=AM! (CORREGGE ORIGINE)
!:ROY*=BM;BM=BM+DJ;:WOY*=BM!
G0 X0 Y0 (ESCE)
Z<HC>
G26
(SEGNALE ERRORE)
N9 MANCA CONTATTO

Notare l'indirizzamento indiretto dell'origine in corso col carattere '*'.


Notare anche i due tratti in rapido tra le due misure in X e le due misure in Y. Il tastatore infatti è
in contatto col pezzo dopo una G61: se si ripete immediatamente un'altra G61 senza staccare il
tasto si può avere un errore CN0513

340 D. ELECTRON
CNC Z32 Programmazione Cap.13 - Prestazioni speciali

13.1.5 Ricerca blocco con movimenti di misura


In questo esempio si suggerisce il modo per eseguire con sicurezza la ricerca blocco quando
nel programma sono contenuti movimenti di misura.
Il programma memorizza in una sezione parametri locale i risultati delle varie misure fatte, in
modo da poterli poi utilizzare in ricerca blocco per ricreare le stesse condizioni esistenti durante lo
svolgimento effettivo del programma.
ESEMPIO DI PROGRAMMA %
G37PL parametri locali
... misura per determinare AM e BM
//N9 !:RPM1=AM, M2=BM! solo in ricerca blocco legge i risultati memorizzati
N10 G61... i parametri che interessano sono AM e BM: in ricerca
blocco non sono modificati
N11 !:WPM1=AM, M2=BM! memorizza il risultato per una ricerca blocco successiva
... misura per determinare CM
//N30 !:RPM3=CM!
N31 G61 ...
N32 !:WPM3=CM!
N33 ...
... misura per determinare AM BM CM
//N63 !:RPM4=AM, M5=BM, M6=CM!
N64 G61 ...
N65 !:WPM4=AM, M5=BM, M6=CM!
...
M2
:PA
M1=0
M2=0
M3=0
M4=0
M5=0
M6=0
...
Dopo l'esecuzione reale (non in ricerca blocco) del programma al posto di M1, M2, M3, M4, M5,
M6, inizialmente posti = 0, saranno scritti dallo Z32 i risultati delle varie misure effettuate.

13.2 MOTO CON STOP DA LOGICA G62


L'uso di G62 è destinato al costruttore della macchina utensile, per i suoi cicli fissi o
sottoprogrammi di sistema, in quanto richiede una stretta interfaccia con la logica programmabile.
Può essere eventualmente usata dall'utente finale solo in base alle specifiche istruzioni date dal
costruttore.
G62 è attiva solo nel blocco e richiede l'arresto all'inizio e alla fine del movimento (ossia il
movimento non deve appartenere a una contornatura aperta o con correzione raggio o G33).
Questa G permette di interrompere con un segnale di logica (bit 0EC) il movimento
programmato.

D. ELECTRON 341
Cap.13 - Prestazioni speciali CNC Z32 Programmazione

I movimenti programmati successivamente ripartono dal punto di interruzione anziché dalla fine
programmata del movimento interrotto. Alla fine del movimento sono restituiti (come per i
movimenti di misura G61) i tre parametri AM BM e CM con questa codifica:
(AM=BM=CM) = 0 se il movimento è stato interrotto
(AM=BM=CM)>100.000 se il movimento è stato completato
Scopo di questa G è di permettere programmi che in qualche modo si adattino ad eventi che si
rivelano durante il movimento.
Per esempio, si immagini che, durante un movimento di lavoro (foratura, fresatura ecc.) si abbia
a disposizione un dispositivo che riveli la rottura o usura eccessiva dell'utensile. Con la G62 si può
organizzare un sistema che permette l'immediata interruzione del lavoro e la sua eventuale ripresa
dopo il cambio dell'utensile. Il sistema è composto da:
A) Dispositivo di misura (montato sulla macchina) che rivela le condizioni di arresto (rottura o
usura utensile)
B) Gestione nella logica di macchina (fatta dal costruttore) del segnale di arresto ed
elaborazione del bit di logica 0EC.
C) Programma-pezzo (meglio se ciclo fisso) contenente la G62 in tutti i blocchi di movimento
che devono essere controllati, con istruzioni per la gestione dei parametri di ritorno (AM, BM, CM)
Esempio di programma-pezzo:
.....
N10 T45 M6 (FRESA)
N20 G0 X0 Y0 Z0 F400 M3 M7
N30 G1 Z-30 (MOVIMENTO NON CONTROLLATO)
N40 G62 X100 (MOTO IN G1 CON CONTROLLO UTENSILE)
N50 !IF AM>99000; EB! GON100!
N60 ... (CONTINUA LA LAVORAZIONE)
...
N100 ... (GESTIONE DELL'UTENSILE USURATO)
...
Al momento dell'eventuale interruzione, lo Z32 acquisisce le quote intermedie come quote iniziali
del movimento successivo: queste quote possono essere leggermente diverse dalle quote
programmate per i fuori zero degli assi. Per esempio:
...
N10 G0 X0 Y0 Z0
N20 G62 G1 Z-100
N30 Z0
...
La riga N30 riporta l'asse Z a 0 in ogni caso (con o senza interruzione). Se c'è un fuori zero di
+0,01 mm sull'asse X e il movimento è interrotto, la quota X durante il ritorno può essere di +0,02
mm (parte dal fuori zero precedente e aggiunge ancora il fuori zero). Se invece è programmato:
...
N30 X0 Y0 Z0
...
il ritorno è fatto senza raddoppio del fuori zero.

342 D. ELECTRON
CNC Z32 Programmazione Cap.13 - Prestazioni speciali

Si noti che, anche se il movimento viene interrotto e sono acquisite le quote al momento
dell'interruzione, il parametro individuato dal nome asse mantiene il valore finale programmato.
Consideriamo i due esempi:
... ...
N10 G1 X0 Y0 Z0 N10 G1 X0 Y0 Z0
N20 G62 Z-100 N20 G62 Z-100
N30 X-50 N30 Z<Z> X-50
... ...
(esempio 1) (esempio 2)

I due programmi differiscono solo nella riga N30: se si ha una interruzione per esempio alla
quota Z=-47,53 mm, nel caso 1 N30 genera un moto parallelo all'asse X con quota Z=-47,53
costante, nel caso 2 N30 genera un movimento a due assi fino alle quote finali X-50 Z-100 (il
parametro Z conserva il valore programmato -100).
G62 può essere programmata anche su movimenti in G2 o G3, ma non per movimenti composti
né in correzione raggio.
Quando, durante un movimento con G62, è attivato il comando di stop (bit di logica 0EC) la
velocità è portata a zero con rampa di decelerazione controllata ed assi in traiettoria (come con
FEED HOLD).
Il passaggio alla riga successiva di programma si ha dopo l'arresto degli assi: se prima
dell'arresto il comando di stop cessa (ossia il bit 0EC torna a 0) il movimento riprende con rampa di
accelerazione fino alla velocità programmata. Nella logica programmabile si deve tenere conto di
questa caratteristica (per esempio memorizzando 0EC) per evitare eventuali pendolamenti (il
sensore utensile usurato potrebbe cessare di rivelare il difetto se la velocità di avanzamento scende
a zero).

13.3 RICERCA BLOCCO CON FUNZIONI SPECIALI


La ricerca blocco dello Z32 permette di riprendere un programma interrotto con estrema
sicurezza, perché forza l'unità centrale di calcolo a ripercorrere, durante la ricerca, tutta la strada
già percorsa in esecuzione normale.
Ciò è vero per programmi normali, quando le informazioni disponibili per lo Z32 all'interno di un
programma sono sempre identiche, anche in successive esecuzioni dello stesso programma.
In alcuni casi in ricerca blocco non è possibile avere certe informazioni (disponibili in esecuzione
normale), mentre in altri casi esse possono cambiare in quanto cambiate alla fonte.
Nei paragrafi seguenti sono esaminate le fonti anomale di informazione e un modo generale per
risolvere i problemi connessi.

13.3.1 Lettura dati da memoria CMOS


L'istruzione principale con la quale lo Z32 legge da memoria CMOS è la istruzione evoluta ':R'.
Con questa operazione si possono leggere:
− origini
− parametri
− dati nella descrizione utensili
I dati memorizzati possono essere cambiati dallo stesso programma-pezzo e quindi non essere
ripetibili in successive esecuzioni quando siano richieste prestazioni particolari, come:
− spostamento origini

D. ELECTRON 343
Cap.13 - Prestazioni speciali CNC Z32 Programmazione

− conteggio di pezzi
− gestione vita utensile
− gestione posto random
− ...
Anche il richiamo in una riga ISO di una origine (p. es. OX1) può essere non ripetibile se l'origine
stessa viene modificata dal programma.

13.3.2 Comunicazione da logica G101


Il programma-pezzo può interrogare la logica di macchina con l'istruzione G101 per ricevere
informazioni sullo stato fisico della macchina (presenza di particolari attrezzature, riconoscimento
del pezzo ecc.).
Lo stato fisico della macchina visto in ricerca blocco può essere diverso da quello visto in
esecuzione, sia perché il funzionamento della logica è diverso nei due casi, sia perché lo stato
fisico può essere stato cambiato proprio dalla esecuzione del programma.

13.3.3 Movimenti di misura G61 e con stop G62


Il risultato di una misura può influenzare lo svolgimento di un programma in molti modi:
− riconoscimento del pezzo e scelta di sottoprogramma
− misura del sovrametallo e scelta di numero di passate o di utensile
− ...
Analogamente i moti con stop G62.
In ricerca blocco sono in linea generale esclusi movimenti assi: la misura o il controllo dei bits di
logica nel caso di moto con stop non possono essere quindi effettuati. I risultati non sono perciò
significativi.
Si noti che eseguire i soli movimenti di misura in ricerca blocco, oltre ad essere estremamente
complesso (es.: quando montare o riporre il tastatore?) non risolve il problema in generale: per
esempio, se il tastatore è usato per misurare il sovrametallo, il solo fatto di aver eseguito parte della
lavorazione cambia il risultato.

13.3.4 Esempio di soluzione


Dalle poche considerazioni esposte nei paragrafi precedenti risulta evidente che esistono
innumerevoli situazioni diverse e che ognuna di esse può richiedere una soluzione appropriata.
La D.Electron non ha perciò tentato di risolvere il problema in modo generale ed automatico, ma
ha lasciato al programmatore il compito di determinare volta per volta la soluzione più appropriata.
Lo strumento generale che si consiglia è quello già descritto nel paragrafo relativo alla “Ricerca
blocco con movimenti di misura”.
In generale, se si desidera che un programma possa essere interrotto e ripreso senza
complicazioni per l'operatore, si deve:
1) Individuare quali sono i punti del programma in cui sono lette informazioni che cambiano
nel corso dell'esecuzione. In particolare sono da mettere in evidenza:
− operazioni evolute ':R'
− richiamo di origini (es. OX1 ecc.)
− operazioni G101
− movimenti in G61 o in G62
2) Creare nella sezione parametri (preferibilmente locale) un numero di parametri
rappresentativi delle informazioni variabili ricevute nel corso del programma.

344 D. ELECTRON
CNC Z32 Programmazione Cap.13 - Prestazioni speciali

3) Memorizzare durante l'esecuzione i risultati variabili ricevuti


4) Inserire blocchi doppio barrati in modo che in ricerca blocco siano sostituiti ai valori attuali
quelli memorizzati nella sezione parametri dalla precedente esecuzione.

13.4 ASSI CONTINUI CICLICI


Un asse continuo definito come ciclico ha alcune peculiarità di comportamento da chiarire.
Per le note che seguono si fa l'ipotesi di un asse "B" (in gradi) con ciclicità di 360 gradi.
Un passo rilevatore dell'asse B è 0,001 gradi. Ciò significa che un giro completo del contatore
(che è su 28 bit pari a circa 268 milioni) comprende circa 745 giri dell'asse B, ossia circa 268.000
gradi (esattamente 268.435,456 gradi).
Si fa anche la verosimile ipotesi che i fine corsa dell'asse B siano stati posti al massimo (quindi
praticamente eliminati).

13.4.1 Acquisizione del punto iniziale


In alcuni momenti il CN acquisisce le quote degli assi e da quel punto parte con i movimenti
programmati. Questi momenti sono:
− l'accensione (per tutti gli assi)
− il reset (per tutti gli assi)
− l'attivazione di un asse (G28) dopo una disattivazione (G29)
Nel caso di assi normali la posizione è unica e non equivoca e coincide con la posizione fisica
dell'asse.
Nel caso di assi ciclici invece sono possibili più posizioni (una per ogni giro): all'accensione, al
reset e all'attivazione (G28) la posizione acquisita è quella (positiva o negativa) che non superi
metà di un giro.
Per l'asse B prima descritto, se la posizione fisica è a 359 gradi, la quota acquisita sarà -1.

13.4.2 Programmazione di più giri


Se l'asse B è per esempio a 10 gradi, si può programmare un giro completo con: B370.
Dal punto di vista della programmazione, un asse continuo non è ciclico (a meno che non sia
definito come “asse ciclico posizionato per la via più breve”): quindi si possono programmare un
numero indefinito di giri.
Si hanno a disposizione 5 interi, quindi si può programmare fino a 99999,999.
Usando formule matematiche si può andare oltre (il formato floating point di Z32 gestisce numeri
con fino a 9 cifre significative).
In casi particolari si può aver bisogno di ancora più giri: basta fare un ciclo di G29 e G28 per
ricominciare daccapo. Al G29 si riparte da un numero molto basso perché la quota iniziale è
acquisita con le modalità sopra viste.
Nota importante sulla programmazione di movimenti rotativi indefiniti.
Ammettiamo di avere un asse C rotativo con ciclicità di 360 gradi, ed ammettiamo che lo si
voglia far rotare indefinitamente in una direzione. È un errore programmare:
N1 C<C+179>
!GON1!
perché il parametro C non è ciclico, e quindi dopo un certo tempo si hanno problemi di numero
troppo elevato sul parametro C.

D. ELECTRON 345
Cap.13 - Prestazioni speciali CNC Z32 Programmazione

Il modo corretto di programmare un movimento indefinito è quello di impedire al parametro C di


incrementare indefinitamente, per esempio:
N1 C<C+179>
!IF C>360;C=C-360!
!GON1!

13.4.3 Quota acquisita dalla G105


La quota acquisita dalla G105 (che trasferisce nel parametro nome asse la quota attuale) è
quella più vicina allo zero. Per esempio:
N1 G0 B0
N2 B3599
N3 G105
La quota acquisita dopo la G105 è -1.
Si faccia attenzione che se si programmasse:
N4 B<B>
l'asse B farebbe 10 giri indietro (da B3599 a B-1).

13.4.4 Riposizionamento dopo una ricerca blocco


Dopo una ricerca blocco (oppure se si riattiva l'esecuzione dopo un errore) può essere richiesto
un riposizionamento.
Il riposizionamento non è mai superiore a mezzo giro, anche se la quota fisica dell'asse è
programmata a molti giri. Per esempio:
N1 B0
N2 B36000
N3 B36001
Ammettiamo che l'asse sia a zero (posizione equivalente a 36000 a 100 giri di distanza) e che si
faccia una ricerca blocco a N3: la posizione fisica è diversa di 100 giri da quella programmata, ma il
riposizionamento non viene richiesto, perché per questo scopo la posizione 0 e la posizione 36000
sono identiche
La visualizzazione della quota per assi ciclici è stata cambiata: prima era sempre positiva da
zero a una ciclicità, ora è positiva o negativa intorno allo zero di metà ciclicità.

13.4.5 Assi ciclici per la via più breve


Gli assi continui potevano essere definiti ciclici, ma non agli effetti della programmazione: la
ciclicità dell'asse serviva solo ad evitare la saturazione del contatore fisico ed agiva sulla quota
iniziale acquisita con G28. Una volta acquisita la quota iniziale la programmazione era assoluta (si
potevano programmare anche più giri).
C’è una taratura che permette di considerare gli assi continui ciclici come ciclici a tutti gli effetti:
per questi assi, indipendentemente dalla quota programmata e dalla posizione iniziale, lo
spostamento è ottenuto per la via più breve.

346 D. ELECTRON
CNC Z32 Programmazione Cap.13 - Prestazioni speciali

ATTENZIONE
Un asse continuo ciclico e posizionato per la via più breve potrebbe anche
essere usato per interpolazione circolare, ma sarebbe molto difficile
trovare la giusta quota del centro (che dovrebbe tenere conto dei giri
accumulati). In pratica si può dire che un asse continuo ciclico
posizionato per la via più breve non può essere usato per interpolazione
circolare.

13.4.6 Programmazione assi ciclici per via più breve con direzione
In taratura di Z32 si può scegliere l'opzione di programmare movimenti di assi ciclici con
raggiungimento della posizione finale per la via più breve.
Per garantire una compatibilità con alcuni CAM esistenti, è stata introdotta un'altra opzione, che
permette di evitare comunque il movimento di più di un giro, ma che permette di scegliere la
direzione di movimento.
Se questa opzione è attiva viene forzato in modo non standard il significato del carattere
programmato: il segno non indica più una quota negativa, ma la direzione del movimento, e la
quota dell'asse è considerata sempre positiva, da 0 fino alla ciclicità.
Per esempio, se l'asse B è ciclico, se è attiva l'opzione di posizionamento degli assi ciclici per la
via più breve con scelta della direzione:
B-10
richiede di posizionare l'asse B alla quota +10, con direzione di movimento negativa.
Se si conferma la quota programmata in precedenza (sia con segno positivo che negativo) non
si ottiene nessun movimento.
Attenzione: la forzatura del significato del segno e la generazione dei movimenti si porta
dietro alcune eccezioni al normale comportamento di Z32:
1) avendo il segno programmato un significato diverso dal segno aritmetico, il parametro
programmato B viene forzato al suo valore assoluto. Quindi, dopo aver programmato
B-10, il contenuto aritmetico del parametro B non è -10, ma +10.
2) se si programma B con una espressione (per esempio B<HA-1>) il valore assegnato a
B è comunque il valore assoluto: il segno negativo viene perduto. Si consiglia, per
compatibilità con eventuali modifiche future, di non programmare assi ciclici con scelta
direzione tramite espressioni
3) nel caso che l'asse sia "morto" (es. G29B) si ha comunque la prestazione, già presente
per gli assi ciclici normali, che l'asse non viene reso vivo durante il movimento se la
posizione programmata è poco distante da quella attuale ed entro la soglia di
posizionamento. Ciò però significa che può non venire fatto un movimento pari a quasi
un giro intero, se viene programmata una quota entro la soglia di posizionamento ma
con specifica di movimento di segno contrario. Si consiglia, per avere una certezza di
funzionamento, di non programmare assi ciclici con scelta direzione non vivi
4) l'asse ciclico con posizionamento per la via più breve e specifica della direzione non
deve essere uno dei tre assi della terna di lavoro. Z32 non dà allarme, ma in questo
caso la direzione programmata può non essere rispettata.

13.5 MACCHINA IN POLLICI


È possibile mettere lo Z32 in pollici.
Elenchiamo i vari aspetti interessati.
Una volta definita la macchina in pollici si hanno i seguenti effetti:

D. ELECTRON 347
Cap.13 - Prestazioni speciali CNC Z32 Programmazione

− la visualizzazione delle quote (programma TERMS) degli assi continui lineari (quindi in
pollici) è con 2 interi e 5 decimali fino a 99.99999, con 3 interi e 4 decimali fino a
999.9999 e con 4 interi e 3 decimali con quote superiori. Gli assi rotativi mantengono la
visualizzazione precedente.
− la feed impostata è interpretata in unità visualizzate/minuto, e quindi in pollici/minuto
per gli assi lineari e gradi/minuto (salvo differenti tarature) per gli assi rotativi
− la scrittura dei parametri operata con il campo di riga evoluta: W ... è fatta con 5
decimali. Restano i limiti dei 6 interi e di un totale di 9 cifre significative. Per esempio
può risultare 1234,56789 oppure 12345,6789 oppure 123456,789. Il massimo numero
scrivibile è 999999,999; se il numero è maggiore viene comunque limitato a
999999,999.
Per il momento se si definisce la macchina in pollici:
− la copiatura (G111) non funziona
− le macro (G110) non funzionano
L’attivazione di queste prestazioni potrà essere fatta in un secondo tempo su richiesta.

13.6 OFFSET DI LAVORAZIONE PILOTATI DA PULSANTI DI JOG


(JOGOFFSET)
Soprattutto nelle lavorazioni di stampi, può essere utile creare degli offset di lavorazione durante
una esecuzione automatica. Questo può essere fatto con Z32 utilizzando i tasti di JOG fissi,
JOGX+, JOGX-, JOGY+ ...
La prestazione JOGOFFSET permette l’impostazione di offset di lavorazione pilotati da pulsanti
di jog durante l’esecuzione automatica.
Questa prestazione deve essere abilitata dal costruttore della macchina che deve apportare
opportune modifiche al PLC, si raccomanda di consultare accuratamente le informazioni fornite dal
costruttore stesso.
Quando questa prestazione è abilitata:
- se è impostato un jog di spazio (incrementi 1 mm, 0.1, 0.01, 0.005), premendo uno dei tasti di
jog fissi si ha uno spostamento della posizione dell’asse pari allo spazio impostato.
- se non è impostato un jog di spazio si ha uno spostamento dell’asse nella direzione
selezionata col pulsante a velocità di micrometrico (2 mm/min) che dura finché il pulsante è
premuto.
È possibile creare offset solo in esecuzione, ossia dopo la scelta programma automatico o in
semiauto. Si faccia attenzione che lo stato di Z32 in esecuzione inizia dopo la scelta programma e
permane fino a fine programma o ad un reset, quindi è possibile creare offset per esempio anche
durante una ricerca blocco.
Sono offsettabili solo gli assi continui vivi, con esclusione degli assi rotativi legati alla G117
dinamica (per questi assi si può usare la G124).
Se su un asse continuo vivo viene creato un offset e poi l’asse viene reso non vivo dal part-
program (con G29) l’asse rimane nella posizione raggiunta ma gli offset si perdono, ossia se l’asse
viene nuovamente reso vivo dal part-program (con G28) gli offset ripartono da zero.
Un reset azzera tutti gli offset.
Il movimento che genera l’offset di spazio ha velocità e tempo che dipendono dallo spazio
impostato:
spazio in mm 1 velocità in mm/min 60 tempo in sec 1
0.1 11.7 0.51
0.01 4.7 0.13

348 D. ELECTRON
CNC Z32 Programmazione Cap.13 - Prestazioni speciali

0.05 2.3 0.13


Per le macchine in pollici le velocità rimangono fisicamente identiche ma cambia lo spazio:
spazio pollici 0.1 velocità in mm/min 60 tempo in sec 2.54
0.01 11.7 1.3
0.001 4.7 0.32
0.0001 2.3 0.065
Una volta attivato, il movimento in jog di spazio viene completato anche se il pulsante viene
rilasciato. Il movimento in jog di spazio viene interrotto solo se:
- viene premuto il pulsante di STOP
- l’asse diventa non offsettabile (G53, non vivo, fine programma, fine abilitazione)
La programmazione di G53 elimina ed annulla tutti gli offset. Quando la G53 viene disattivata
con G54 tutti gli offset ripartono da zero. Se, come è di norma, la G53 è inserita nel cambio
utensile, il cambio utensile azzera automaticamente tutti gli offset.
La visualizzazione delle quote è quella programmata, quindi la quota visualizzata non cambia se
viene variato l’offset di jog.
Una G105 (trasferimento delle quote attuali nei parametri assi) legge la quota visualizzata e non
la quota fisica. Per esempio se la quota programmata era X100, è stato accumulato un offset di jog
di +3.784 mm (quindi la quota fisica è X103.784) il parametro X viene inizializzato dalla G105 a
X100.
I fine corsa previsionali non possono tener conto degli offset di jog, dato che i finecorsa
previsionali agiscono a livello di part-program mentre gli offset di jog agiscono in tempo reale.
I fine corsa previsionali sono comunque attivi, e tengono conto del normale campo di lavoro,
senza l’effetto degli offset di jog.
In più, se ci sono offset di jog non zero, sono attivi anche i fine corsa di tempo reale (come nel
caso delle formule permanenti o delle rotazioni G117) che possono determinare errori del tipo
CNEx13 (vicinanza eccessiva al finecorsa) oppure CNFx13 (velocità eccessiva in direzione del
finecorsa).

13.7 RIPOSIZIONAMENTO SPECIALE IN RTCP


Il problema che risolve questa prestazione si pone in questi termini: si sta eseguendo una
lavorazione in una gola inclinata (quindi con testa inclinata e con G117 attiva); per un qualsivoglia
motivo la lavorazione viene interrotta e si estrae l’utensile dalla gola.
Vogliamo successivamente riprendere la lavorazione dal punto in cui questa era stata interrotta:
si esegue una ricerca blocco e poi si passa in attività di esecuzione automatica; a questo punto il
CN, se la prestazione è abilitata, esegue un riposizionamento speciale che non consta di semplici
movimenti dei singoli assi fisici.
Questa prestazione deve essere abilitata dal costruttore della macchina che deve apportare
opportune modifiche al PLC, quindi si raccomanda di consultare accuratamente le informazioni
fornite dal costruttore stesso.
Tale riposizionamento si struttura nelle seguenti fasi:
1) Vengono riproposti nella lista degli assi da riposizionare gli assi rotativi, sia quelli legati a
G117 sia quelli non legati a G117, e gli eventuali assi lineari fuori posizione che non siano gli assi
numlog. 0, 1 e 2 (che sono gli assi trascinati dal moto degli assi rotativi collegati a G117). Si tenga
presente che il riposizionamento degli assi rotativi della G117 implica un moto trascinato degli assi
lineari XYZ. Se è attiva una G118 durante tutto il riposizionamento viene disattivata e viene
riattivata solo dopo che sono stati riposizionati tutti quanti gli assi.

D. ELECTRON 349
Cap.13 - Prestazioni speciali CNC Z32 Programmazione

2) Una volta riposizionati gli assi specificati al punto 1) viene proposto il riposizionamento del
primo asse con numero logico più basso (0 o 1 o 2) che non sia l’asse utensile. Si tenga presente
che il riposizionamento di questo asse avviene nel sistema di riferimento ruotato secondo gli angoli
degli assi della testa.
3) Riposizionato l’asse specificato nel punto 2) viene proposto il riposizionamento del secondo
asse, che tra i due assi rimasti da riposizionare non è l’asse utensile. Si tenga presente che il
riposizionamento di questo asse avviene nel sistema di riferimento ruotato secondo gli angoli degli
assi della testa.
4) Infine viene proposto il riposizionamento dell’asse utensile. Si tenga presente che il
riposizionamento di questo asse avviene nel sistema di riferimento ruotato secondo gli angoli degli
assi della testa. Questo ultimo movimento è quello che permette l’affondo dentro la gola inclinata.
Note:
- Questo tipo di riposizionamento speciale funziona solo con part-program che abbiano la G117
attiva nel punto di interruzione, altrimenti si ha il riposizionamento non speciale.
- Il segnale di logica che abilita la prestazione, viene testato al momento dell’entrata in attività di
automatico dopo aver eseguito una ricerca blocco: il sistema eseguirà il tipo di riposizionamento in
dipendenza del segnale al momento suddetto ed anche se lo stato del segnale dovesse cambiare
durante l’attività di riposizionamento ciò non avrà effetto sul tipo di riposizionamento eseguito; per
cambiare tipo di riposizionamento si dovrà eventualmente uscire con ESC dall’attività di automatico
e rientrarvi con il segnale di logica allo stato desiderato, in tal modo si avrà un cambio del tipo di
riposizionamento.

13.8 ASSI DISCRETI


L’asse discreto è un tipo di asse macchina le cui caratteristiche sono intermedie tra quelle degli
assi continui e quelle degli assi indexati.
Gli assi continui sono gli assi di lavoro della macchina (sono comandabili da part-program,
possono interpolare, si possono muovere in jog ecc…). Gli assi indexati invece sono accessibili
solo a livello di logica di macchina: il costruttore predispone le funzioni ausiliarie (M. MA, MB o MC)
con le quali è possibile comandare le posizioni degli assi.
In qualche caso (è tipico il caso della tavola girevole che deve lavorare solo bloccata da una
ghiera dentata di passo 1 grado) può essere utile (il giudizio lo dà il costruttore della macchina
utensile) definire un asse “discreto” che risulta a metà strada tra l’asse continuo e l’asse indexato.
Dal punto di vista della programmazione e uso l’asse discreto ha le seguenti caratteristiche:
- è un normale asse continuo (salvo le limitazioni che seguono), e quindi si può comandare
da part-program e da semiautomatico, si può muovere in jog
- si possono programmare solo le quote intere, altrimenti viene allarme CN2C14 –
PARAMETRI INCOMPATIBILI. Attenzione alle approssimazioni di calcolo se il valore
numerico è ottenuto con una formula matematica: se B è un asse discreto e per esempio si
programma B<2/5*5> oppure B<2.5*5> viene allarme (il valore ottenuto è circa
2,0000000018 e quindi non è intero). In generale, se si devono usare delle formule
matematiche, sono da evitare le divisioni e i valori numerici frazionari, mentre somme,
sottrazioni, e moltiplicazioni conservano l’intero. Attenzione: se si fa RESET durante una
esecuzione l’asse viene congelato nel punto dove si trova, anche se non è intero.
- non ammette origini supplementari. L’asse discreto è sempre riferito all’origine base, sia da
part-program che da attività di jog.
- non ammette formule permanenti.
- non è inseribile nella terna di lavoro. La programmazione di G25, se nella lista dei tre assi ha
un asse discreto, provoca errore CN2C14 – PARAMETRI INCOMPATIBILI. Come
conseguenza sull’asse discreto è possibile solo una interpolazione lineare, in G0 o G1. Non
è possibile l’interpolazione circolare o la correzione raggio.

350 D. ELECTRON
CNC Z32 Programmazione Cap.13 - Prestazioni speciali

- in jog c’è una coda di movimento fino a raggiungere l’intero più vicino. Per esempio se si
abbandona il pulsante di jog di velocità alla quota 2,499 l’asse si ferma alla quota di 2,000,
mentre se si abbandona alla quota di 2,501 va alla quota 3,000. Attenzione: se si fa RESET
durante il movimento in jog l’asse viene congelato nel punto dove si trova, anche se non è
intero.
- in caso di attività 7 (zero assi) è cosigliato programmare un post-posizionamento intero. Per
esempio, se B è discreto, è utile (per evitare di arrestare l’asse in un punto sbagliato)
comandare 7 ENTRA: B0 (oppure B1 o B2 ecc…).

D. ELECTRON 351
Cap.13 - Prestazioni speciali CNC Z32 Programmazione

352 D. ELECTRON
CNC Z32 Programmazione Cap.14 - Prestazioni obsolete

CAPITOLO 14

14. PRESTAZIONI OBSOLETE

14.1 G98 INTERPOLAZIONE LINEARE SPECIALE (5 ASSI)


È frequente la necessità di programmare profili complessi, nel piano o nello spazio, che non
sono riconducibili semplicemente a tratti lineari o circolari (nel piano) oppure a tratti lineari o ad elica
(nello spazio). In questo caso il metodo correntemente usato è di programmare una sequenza di
tratti lineari molto corti che approssima la curva o la superficie da ottenere. La precisione
dell'approssimazione è tanto migliore quanto più i tratti sono corti.
I programmi-pezzo da inserire nel CN con questo metodo sono in genere molto lunghi:
normalmente i punti finali dei segmenti che compongono il profilo sono ottenuti da un calcolatore
esterno e trasmessi direttamente al controllo numerico (ossia senza la scrittura manuale
dell'operatore).
Con l'uso di movimenti in G1 (eventualmente con G12) l'esecuzione di un programma-pezzo
così formato è possibile (fino a tre assi contemporanei) ma scarsamente efficiente, per le seguenti
ragioni:
− eccessivo tempo di elaborazione del singolo tratto in G1, e quindi bassa velocità di
esecuzione
− interpretazione dei singoli tratti lineari come profilo reale, e quindi esecuzione il più
possibile precisa degli spigoli programmati (che invece sono frutto
dell'approssimazione in tratti di retta)
− nel caso di tre assi contemporanei, limitazioni alla massima pendenza del terzo asse se
è attiva G12, posizionamento e quindi arresto a fine di ogni tratto se non attiva G12.
L'interpolazione in G98 permette di migliorare il comportamento dello Z32 in tutti questi aspetti,
ed in più permette l'interpolazione lineare di 5 assi contemporanei.
La G98 predispone lo Z32 a ricevere una sequenza di tratti lineari da eseguire in lavoro.
G98 è modale con arresto.
Gli assi programmati devono essere vivi. Se si tenta di programmare un asse non vivo in G98
viene allarme CN 3A14 ASSE NON VIVO.
Divieto La G98 è disattivata da G99.
Con G98 attiva sono vietati:
− la programmazione di G (escluse G99 e G26)
− la programmazione di: origini, L, M, MA, MB, MC, S, T
− la correzione raggio
− la programmazione di formule permanenti <<...>>
Queste limitazioni sono state introdotte per ottimizzare la velocità di esecuzione nel modo di più
frequente utilizzo.
Con G98 attiva sono invece consentiti:
− la programmazione di F
− l'esecuzione di righe evolute
− l'esecuzione di formule permanenti <<...>>
− il salto a sottoprogrammi permanenti

D. ELECTRON 353
Cap.14 - Prestazioni obsolete CNC Z32 Programmazione

Si noti che le formule (<<...>>) e i sottoprogrammi permanenti (G27P...) non possono essere
attivate con G98 attiva ma se sono attivati in precedenza rimangono attivi e sono eseguiti anche
durante G98.
Non La G98 sospende l'efficacia di G0, G1, G2, G3, ossia le quote programmate dopo G98 sono
funziona sempre interpretate come quote finali di tratto lineare come in G1. G99 ripristina la situazione
precedente alla G98.
La G98 sospende inoltre l'efficacia di:
− rototraslazione
− specularità
− fattore di scala
Con G98 attiva, è consentito programmare in una riga ISO gli indirizzi I, J, QF, RA.
Contrariamente a quanto accade senza G98 attiva però I, J, QF, RA non assumono speciali
significati di elementi di profilo, e valgono solo come parametri. Con G98 attiva perciò è equivalente
programmare per esempio I30 in riga ISO oppure !I=30! in riga evoluta.
Da quanto sopra, si vede che, con G98 attiva si sono eliminate una quantità di operazioni che
erano a carico dello Z32, e che si presume siano fatte dal calcolatore che determina i punti del
profilo (correzione raggio, elaborazioni sulle quote programmate, calcoli geometrici). La possibilità
di esecuzione di righe evolute e quindi di calcoli matematici permette, a scelta dell'operatore e per
quanto necessario, di ripristinare parte delle funzioni eliminate.

14.1.1 Errore di inseguimento


Questo paragrafo è dedicato al programmatore esperto che voglia approfondire l'effetto della
G98 sugli errori di lavorazione.
In un sistema a controllo numerico, le traiettorie da eseguire sono calcolate a intervalli di tempo
fissi dall'interpolatore, per ogni punto calcolato sono controllate le posizioni effettive degli assi ed è
inviato agli stessi un comando di velocità che recuperi eventuali errori e faccia mantenere la
traiettoria calcolata.
Esistono due grandi classi di sistemi di controllo numerico:
A) Sistemi con errore proporzionale. In questi sistemi il comando di velocità inviato agli
assi della macchina utensile è proporzionale all'errore di inseguimento, che risulta perciò
NECESSARIO al movimento degli assi. Gli assi rimangono indietro rispetto alla posizione
calcolata dall'interpolatore di una quantità che dipende dalla velocità, dalla prontezza della
macchina ecc.
B) Sistemi con correzione di errore. In questi sistemi il comando di velocità è corretto, in
modo tale da annullare l'errore di inseguimento teorico se la velocità resta costante sulla
traiettoria. La posizione del punto calcolato e la posizione fisica degli assi coincidono,
salvo gli errori di taratura e le perturbazioni al regolare moto degli assi.
Entrambi i sistemi hanno pregi e difetti. Il sistema A, che è più semplice da un punto di vista
calcolo ed era perciò il solo usato agli inizi del controllo numerico, ha un movimento più 'morbido’
ma errori di traiettoria più grandi rispetto al sistema B.
Lo Z32 adotta, nei normali movimenti in G1 G2 G3, il sistema di tipo B, per ottenere la migliore
precisione sul profilo. L'errore di inseguimento è quindi compensato ed è teoricamente zero, salvo
al solito errori di taratura e perturbazioni esterne.
Nel caso di traiettorie approssimate con spezzate, ossia tratti di retta di piccola lunghezza, i
sistemi di tipo B sono sfavoriti per molte ragioni, principalmente il maggior volume di calcoli da
eseguire, la pretesa di riproduzione esatta degli spigoli programmati (che non sono propri del profilo
ma sono introdotti dall'approssimazione a spezzata), la difficoltà nel calcolo della distanza di
frenatura ( lo spazio di frenata può includere molti tratti prima del punto finale).
Con G98 attiva, per ottimizzare il risultato, lo Z32 passa in errore proporzionale (ossia sistema
tipo A).

354 D. ELECTRON
CNC Z32 Programmazione Cap.14 - Prestazioni obsolete

L'errore di inseguimento che risulta è dato dalla formula:


e = v / kv
dove e = errore in mm., v = velocità dell'asse in mm./sec., kv = guadagno dell'asse in 1/sec.
Come esempio pratico, se F=1000 mm/min, kv=20/sec, si ha un errore di inseguimento di:
e = 1000/60/20 = 0,833 mm.
Questo errore di inseguimento non è uguale all'errore di esecuzione del profilo in quanto l'errore
di inseguimento è tipicamente parallelo al profilo. In particolare:
1) se il profilo è rettilineo e parallelo agli assi non si ha errore di profilo
2) se il profilo è rettilineo e inclinato si ha un errore sul profilo solo se i kv degli assi
interessati non sono uguali. L'errore massimo, se le differenze tra i kv sono modeste è
per traiettorie piane con inclinazione di 45 gradi e vale:
eb = e * d / 2
Dove e è l'errore di traiettoria prima definito, d è l'errore percentuale tra i kv dei due assi
interessati al movimento. Per esempio, se F=1000 mm/min, kv1=20/sec, kv2=22/sec, si ha:
e=0,833 mm d=10%=0,1 eb=41,7 micron
3) se il profilo è curvilineo all'errore precedente si somma un altro errore dovuto al fatto che
gli assi restano sempre all'interno della curva senza mai raggiungerla. È dato da:
ec = e * e / (4 * r)
Dove e è l'errore in traiettoria prima definito, r è il raggio di curvatura. Per esempio se r=50
mm, F=1000 mm/min, kv=20 si ha:
e= 0.833 mm ec= 3 micron
Si noti come questi errori non sono presenti nel modo normale dello Z32, in quanto sono
compensati in anticipo dal controllore degli assi.
Poiché le tarature standard tengono conto degli errori assai ridotti che si hanno nel modo
normale, può verificarsi, in G98 a F elevate, l'errore di inseguimento:
CN0013
Si consiglia perciò di controllare (per esempio facendo eseguire alla macchina lunghi tratti in
G98 paralleli agli assi) se, alle massime velocità di lavoro alla quale si intende usare la G98 nasce
l'errore CN0013, ed eventualmente allargare le soglie di errore (operazione riservata al costruttore
della macchina utensile).

Allargamento della soglia di errore in G98


Con la G113P si può avere errore proporzionale anche con movimenti rapidi della macchina.
Questo aumenta molto l'errore di inseguimento. Per esempio, se il rapido è a 30 m/min (=500
mm/sec) e Kv=30 l'errore di inseguimento durante il movimento diventa di 500/30=16.7 mm.
Poichè con tarature normali l'errore ammesso durante il movimento è basso (tra 2 e 4 mm) in
questa condizione si avrebbe un superamento della soglia e quindi un allarme CN0013.
C’è un automatismo che, quando è attiva G98 oppure G113P, aumenta di 8 volte l'errore
ammesso durante il movimento.

Errori CN Dx13. Controllo più stretto dei movimenti assi


Gli errori relativi al movimento assi sono:
− CN0013: errore durante il movimento
− CN0113: errore durante il posizionamento
Con l'aumento dei rapidi assi e con l'uso sempre più frequente dei moti morbidi (G98 o G113P)
è stato necessario aumentare anche la soglia dell'errore CN0013 a valori eccessivamente elevati.

D. ELECTRON 355
Cap.14 - Prestazioni obsolete CNC Z32 Programmazione

È stato creato un controllo molto più stretto dei movimenti assi, e della loro effettiva rispondenza
al comando di velocità. Il controllo è attivo in tutti i modi di funzionamento della macchina e su tutti
gli assi, inclusi gli assi indexati o comandati da logica.
In pratica per ogni asse viene integrato per un certo tempo (un ciclo di integrazione dura 384
millisecondi) il riferimento di velocità e viene calcolato lo spostamento teorico corrispondente.
Lo spostamento calcolato viene confrontato con quello rilevato e quindi viene calcolato l'errore.
La tolleranza ammessa sull'errore è calcolata con una somma di componenti, che sono: 1/16
della velocità attuale, più 1/256 del rapido, più una velocità in mm/minuto pari all'errore di
posizionamento moltiplicato per 5000. Per esempio, se un asse si sta muovendo alla velocità di
4000 mm/min, il rapido asse è 20 m/min e l'errore di posizionamento è 0,015, l'errore di velocità
ammesso è di 4000/16 + 20000/256 + 0,015*5000 = 250 + 78,1 + 75 = 403,1 mm/min. In 0,384
secondi quindi l'errore massimo accumulato dall'asse può essere di 2.58 mm. Se è maggiore,
scatta l'allarme.
Una volta determinato che l'asse ha un comportamento errato, viene segnalato l'errore alla
logica di macchina e, nel caso che l'asse in errore sia un asse vivo controllato da part-program,
viene l'allarme CNDx13, dove x è il numero logico dell'asse in errore.
Questo tipo di controllo è efficiente anche nel caso che il rilevatore di quote di un asse si blocchi
in una condizione tale che le schede non siano in grado di rilevarlo e quindi non venga errore
CNxx12.
Proprio per l'efficienza del controllo, che potrebbe risultare incompatibile su macchine con assi
eccessivamente imprecisi, è stato previsto di poterlo disattivare con un'apposita taratura.

14.1.2 Gestione dell'accelerazione seconda


Diamo una descrizione della gestione delle accelerazioni durante i movimenti di Z32.
La limitazione dell'accelerazione seconda è efficace in tutte le situazioni, inclusi i cambiamenti di
velocità durante la lavorazione nel caso di tratti programmati molto corti.
L'effetto di questa gestione è un comportamento più morbido degli assi e una minore
ripercussione sulla finitura del pezzo dei cambiamenti di velocità dovuti per esempio a rallentamenti
in prossimità di spigoli o curve a raggio stretto.
Una conseguenza di questa gestione è che l'effetto del parametro n di taratura ("n" individuale
per ogni asse e "ntar" globale per tutti gli assi) è più forte, soprattutto con n elevati (4 o più): il
posizionamento finale in questi casi è più morbido, ma anche più lento. Può essere consigliabile,
data la migliore gestione dell'accelerazione seconda legata ad n, non usare valori elevati di n in
taratura.

14.1.3 G99 e velocità massima


Essendo gli assi in ritardo rispetto all'interpolatore, nei sistemi tipo A (errore proporzionale) è
possibile arrestare bruscamente l'interpolatore senza che si abbia il sorpasso della quota finale
programmata.
Ciò semplifica molto la gestione della velocità, soprattutto quando il profilo è composto di tratti
molto corti, in quanto non è necessario esplorare in avanti anche per molti tratti per accorgersi in
tempo che si deve rallentare: basta semplicemente arrestare l'interpolatore e gli assi si portano alla
quota finale.
Questa caratteristica è appunto usata dallo Z32: per terminare l'interpolazione in G98, basta
programmare G99 (anche senza quote).
Quanto sopra detto, ossia che non si ha il sorpasso della quota finale programmata, è vero per
velocità inferiori a:
vmax = 120 * a / kv

356 D. ELECTRON
CNC Z32 Programmazione Cap.14 - Prestazioni obsolete

dove vmax è in mm/min, a è in mm/(sec*sec) kv in 1/sec.


Accelerazioni tipiche delle macchine utensili sono da 500 a 2000 mm/sec*sec, i kv relativi da 15
a 25 /sec. Si hanno perciò velocità massime consentite da 4000 a 9600 mm/min, che possono
essere considerate soddisfacenti per movimenti di lavoro.

14.1.4 Considerazioni pratiche


Dalle considerazioni teoriche sopra esposte si possono dedurre alcune linee di guida per
l'applicazione della G98, che sono:
− usare sempre la G98 nel caso che il profilo debba essere approssimato con tratti lineari
− controllare con tratti rettilinei paralleli agli assi la massima velocità di lavoro (F) alla
quale compare l'errore CN0013 e NON programmare in G98 Feed superiori. Se si
vogliono F superiori, consultare il costruttore della macchina utensile per un eventuale
allargamento delle soglie di errore.
− cercare di approssimare il profilo con tratti non eccessivamente corti, per non limitare
eccessivamente la velocità di esecuzione.
− tenere conto di una ulteriore riduzione di velocità nel caso che siano inserite righe
evolute o calcoli di espressioni.
− anche con tratti lunghi, non tenere F superiori a 2000-3000 mm/min, per non avere
sorpasso della quota finale programmata a fine profilo (G99): in caso di necessità,
programmare una Feed ridotta per un tratto di almeno 5-10 mm prima della G99.
− tenere conto dei maggiori errori di esecuzione che si hanno con G98 rispetto al modo
normale. Gli errori possono essere di qualche centesimo di mm in condizioni normali di
lavoro: in caso di necessità, si tenga conto che un abbassamento della velocità riduce
in proporzione questo tipo di errori.

14.1.5 Esempi
Come esempio di uso della G98, si danno due programmi per la esecuzione di ellissi, senza e
con correzione raggio.
Le equazioni parametriche dell'ellisse sono:
X = HA * cos HT Y = HB * sen HT
dove HA e HB sono i semiasse in direzione X e Y rispettivamente, e HT è il parametro angolare
che, incrementato da 0 a 360 gradi, fa percorrere l'ellisse al punto calcolato.
Le equazioni parametriche dell'ellisse con correzione raggio sono:
HC = HA * sen HT
HD = HB * cos HT
X = HA * cos HT + R * HD / rquad (HC2 + HD2)
Y = HB * sen HT + R * HC / rquad (HC2 + HD2)
dove HA e HB sono i semiassi, HT è il parametro angolare variabile da 0 a 360, R è il raggio
dell'utensile, HC e HD sono due parametri intermedi usati per abbreviare i calcoli.

ELLISSE SENZA CORREZIONE RAGGIO%


N1 T1 M6
N2 F400 S1500 M3 parametri di lavoro
N3 OX1 OY1 OZ1 origini di lavoro
N4 HA60 HB120 HF1 HT<HF> semiassi, incremento, angolo iniziale

D. ELECTRON 357
Cap.14 - Prestazioni obsolete CNC Z32 Programmazione

N5 G0 X<HA> Y0 Z0 posiziona su un vertice dell'ellisse


N6 G1 Z-10 discesa in lavoro
N7 G98 può essere programmato da solo
N8 HT<HT+HF> X<HA*CSHT> Y<HB*SNHT> prossimo punto
N9 !IF HT<360;GON8! ripete
N10 G99 X<X> non è obbligatoria una quota con G99
N11 Z0 il moto è in G1, attiva prima di G98
N12 M2

ELLISSE CON CORREZIONE RAGGIO %


N1 T1 M6 nella descrizione utensile è compreso R
N2 F400 S1500 M3
N3 OX1 OY1 OZ1
N4 HA60 HB120 HF1 HT<-HF>
N5 G0 X<HA+R> Y0 Z0 vertice corretto col raggio
N6 G1 Z-10
N7 G98
N8 HT<HT+HF> HC<HA*SNHT> HD<HB*CSHT>
N8,2 HE<R/RQ(HC*HC+HD*HD)>
N8,5 X<HA*CSHT+HD*HE>Y<HB*SNHT+HC*HE> punto ellisse
N9 !IF HT<360;GON8! ripete
N10 G99 X<X>
N11 Z0 M2

Il programmatore noti come le istruzioni da N7 a N10, completamente parametrizzate, possono


essere usate per l'esecuzione di qualsiasi ellisse.
Se il raggio dell'utensile R è positivo si ha una correzione all'esterno dell'ellisse, se R è negativo
la correzione si ha all'interno: in quest'ultimo caso, il programmatore si accerti che il R non sia più
grande del raggio di curvatura minimo dell'ellisse (ossia che l'utensile sia abbastanza piccolo per
contornare tutta l'ellisse dall'interno), in caso contrario, con questo semplice programma, l'utensile
'entra’ nel profilo.
Se si vuole una ellisse nello spazio, e disposta su un piano inclinato intorno all'asse Y, basta
inserire, nel blocco di movimento che calcola anche i punti dell'ellisse, anche il calcolo del punto in
Z, per esempio:
X<...> Y<...> Z<HG * X>
dove HG è l'inclinazione.

358 D. ELECTRON

Potrebbero piacerti anche