Sei sulla pagina 1di 390

D.

ELECTRON
dal 1977 Alta Tecnologia
per la Macchina Utensile

CNC
Z32

MANUALE DI PROGRAMMAZIONE

Documento M96
C9 - 23.2.15

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 ........................................................................................................................30
2.1.20 G37 - commutazione files locali/globali.................................................................................................................31
2.1.21 G38 - riattivazione cambio utensile ........................................................................................................................32
2.1.22 G39 - sospensione cambio utensile.........................................................................................................................33
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 .........................................................................................................34
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 ..................................................................................................35
2.1.30 G54 - attivazione correzione origini e lunghezze ...................................................................................................35
2.1.31 G55 - disattivazione specularità..............................................................................................................................36

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 ........................................................................................................................................37
2.1.36 G70 - G71 - programmazione in pollici/millimetri.................................................................................................38
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 ............................................................................................................42
2.1.40 G91 - programmazione quote assi incrementale.....................................................................................................42
2.1.41 G93 - programmazione feed come inverso del tempo ............................................................................................44
2.1.42 G94 - feed in mm/1'................................................................................................................................................45
2.1.43 G95 - feed in mm/giro ............................................................................................................................................45
2.1.44 G96 - mandrino in metri/min (velocità di taglio costante)......................................................................................46
2.1.45 G97 - mandrino in giri/min.....................................................................................................................................47
2.1.46 G98 - interpolazione lineare speciale (obsoleta) ....................................................................................................47
2.1.47 G99 - annulla G98 (obsoleta) .................................................................................................................................47
2.1.48 G100 - comunicazione a logica ..............................................................................................................................47
2.1.49 G101 - comunicazione da logica ............................................................................................................................48
2.1.50 G102 - salva stato...................................................................................................................................................48
2.1.51 G103 - ripristina stato.............................................................................................................................................49
2.1.52 G104 - lettura dell'utensile sul mandrino................................................................................................................50
2.1.53 G105 - acquisizione quote assi...............................................................................................................................50
2.1.54 G106 - programmazione radiale.............................................................................................................................51
2.1.55 G107 - programmazione diametrale .......................................................................................................................51
2.1.56 G108 - limitazione accelerazione e velocità...........................................................................................................51
2.1.57 G109 - personalizzazione correzione raggio ..........................................................................................................52
2.1.58 G110 - macrofunzioni per svuotatura.....................................................................................................................55
2.1.59 G111 - funzioni speciali di copiatura .....................................................................................................................63
2.1.60 G112 - sincronizzazione con logica ML.................................................................................................................63
2.1.61 G113H - G113L - interpolazione a 2 millisecondi .................................................................................................64
2.1.62 G113P - G113F - G113X scelta tra moto proporzionale, feed-forward, MODO X ...............................................64
2.1.63 G113X KA1 - evoluzione dell'interpolazione nel MODO X .................................................................................65
2.1.64 G113X KA2 - migliore gestione velocità/accelerazioni del MODO X ..................................................................66
2.1.65 G113C - G113N - correzioni traiettorie per moti morbidi .....................................................................................66
2.1.66 G113A - G113B - G113Z - arrotondamento ..........................................................................................................66
2.1.67 G113V - G113S - per gestione avanzata della velocità..........................................................................................67
2.1.68 G114 - attivazione del calcolo della velocità .........................................................................................................67
2.1.69 G115 - disattivazione del calcolo della velocità.....................................................................................................68
2.1.70 G116 - lavorazioni su piano inclinato ....................................................................................................................69
2.1.71 G117 - RTCP per teste rotative ..............................................................................................................................71
2.1.72 G118 - RTCP per tavola girevole...........................................................................................................................71
2.1.73 G118 HR1 - RTCP per tavola girevole con movimenti combinati lineari/rotativi .................................................71
2.1.74 G118 HR2 - RTCP statico per tavola girevole.......................................................................................................72
2.1.75 G118S - RTCP statico con programmazione quote assi tavola girevole. ...............................................................72
2.1.76 G119 - per semiautomatico e jog con allarmi rilevatori .........................................................................................73
2.1.77 G120 - RTCP per tavola girevole - coordinate del centro tavola ...........................................................................73
2.1.78 G121 - fattori di scala differenziati per zone..........................................................................................................73
2.1.79 G122 - RTCP compensazione errori montaggio pezzo su tavole tilting.................................................................73
2.1.80 G123 - limitazione del campo di lavoro .................................................................................................................74
2.1.81 G124 - attivazione volantini degli assi rotativi in G117 .........................................................................................77
2.1.82 G125 - G125 KA1 - G125 KA101 - taratura assi per alta velocità ........................................................................79
2.1.83 G126 - lavorazione pezzi in movimento.................................................................................................................79
2.1.84 G127 - disattiva lavorazione pezzi in movimento ..................................................................................................79
2.1.85 G128 - G129 - G130 funzioni per lock di processo ...............................................................................................79
2.1.86 G131 - velocità costante sulla punta utensile .........................................................................................................79
2.1.87 G132 KA1 - lavorazione cammes globoidali .........................................................................................................80
2.1.88 G132 KA2 - lavorazione cammes cilindriche.........................................................................................................82

ii D. ELECTRON
Indice CNC Z32 Programmazione

2.1.89 G132 KA3 - lavorazione cammes polari ................................................................................................................84


2.1.90 G133 KA0 ÷ KA5 - per gestione doppio mandrino e mandrini tavola ...................................................................86
2.1.91 G134 KA0 ÷ KA3 - commutazione macchina tipo fresa/macchina tipo tornio ......................................................86
2.1.92 G135 I1 - G135 J1 - gestioni avanzate dell'alta velocità.........................................................................................89
2.1.93 G136 - micrososta...................................................................................................................................................90
2.1.94 G137 - G138 - per blocco singolo e ricerca blocco ................................................................................................91
2.1.95 G139 - assi concorrenti...........................................................................................................................................91
2.1.96 G141 - G140 - correzione tridimensionale raggio utensile .....................................................................................92
2.1.97 G142 - G143 - allontanamento utensile dal pezzo (RETRACT) ............................................................................94
2.1.98 G144 - sospensione part-program e attivazione di JOG o volantini .......................................................................96
2.1.99 G144 KA1 - sospensione part-program e attivazione di attività di JOG.................................................................97
2.1.100 G145 - stop and go .................................................................................................................................................98
2.1.101 G146 - gestione del controllo altezza .....................................................................................................................98
2.1.102 G147 - G148 - controllo della velocità in movimento ............................................................................................98
2.1.103 G149 - gestione assi cilindrici ..............................................................................................................................102
2.1.104 G150 - impostazione correzione raggio per torni .................................................................................................104
2.1.105 G151 - posizionamento grossolano del mandrino.................................................................................................106
2.1.106 G152 KA1 - G153 KA1 - salvataggio/ripristino origini attive .............................................................................106
2.1.107 G154 - ricerca blocco per lunghezza ....................................................................................................................106
2.1.108 G155 - funzionalità "raster"..................................................................................................................................107
2.1.109 G156 - gestione visualizzazione grafica tornio.....................................................................................................110
2.1.110 G157 HX - per collegamento tra part-program e fast-codos.................................................................................111
2.1.111 G158 - G159 - forzatura asse ciclico/non ciclico..................................................................................................111
2.1.112 G160 - per limitare le velocità assi e mandrino ....................................................................................................112
2.1.113 G161 - riservata al simulatore...............................................................................................................................112
2.1.114 G163 - maschiatura sincronizzata, con controllo della posizione mandrino.........................................................112
2.1.115 G164 - compensazione di un particolare tipo di chatter .......................................................................................114
2.1.116 G200 HX0 / G200 HX1 - impostazione modo DNC ............................................................................................114
2.1.117 G200 HX2 / G200 HX3 - disinserimento calcio all'inversione.............................................................................114
2.1.118 G200 HX4 / G200 HX5 - programmazione del cerchio completo .......................................................................115
2.1.119 G200 HX6 / G200 HX7 - modifica velocità di ricerca lenta in G61 ....................................................................115
2.1.120 G200 HX8 / G200 HX9 - maschiatura rigida senza inversione mandrino............................................................115
2.1.121 G200 HX10 - per abilitare la G113X KA1 a tempo. ............................................................................................116
2.1.122 G200 HX11 / G200 HX12 - modalità sosta G4 precisa sotto G113X ..................................................................117
2.1.123 G200 HX13 / G200 HX14 - per compatibilità all'indietro con Z16 .....................................................................117
2.1.124 G200 HX15 / G200 HX16 - elimina l'aumento apparente di RA per cerchi di piccolo diametro.........................118
2.1.125 G200 HX17 / G200 HX18 - tolleranza sulla programmazione del cerchio ..........................................................118
2.1.126 G201 - analisi della risposta dinamica della struttura ...........................................................................................119
2.1.127 G241 - G242 - posizionamento al punto iniziale di correzione raggio futura.......................................................119
2.1.128 G410 - G420 - galleggiamento anti-tallonamento utensile per tornio...................................................................120
2.1.129 G800 - G801 - G802 - gestione cicli fissi e macro da disco .................................................................................123
2.1.130 G880÷G899 - G900÷G999 - gestione cicli fissi e macro da disco .......................................................................128

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

3.1 FUNZIONI AUSILIARIE 'M'.......................................................................................................................................133


3.1.1 M 'ISO'......................................................................................................................................................................133
3.1.2 M 'speciali'................................................................................................................................................................134

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

3.3 FEED ...............................................................................................................................................................................135

3.4 SPEED .............................................................................................................................................................................136

3.5 QUOTE ASSI..................................................................................................................................................................136

D. ELECTRON iii
CNC Z32 Programmazione Indice

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

3.7 ORIGINI E LUNGHEZZE............................................................................................................................................138


3.7.1 Origini ......................................................................................................................................................................139
3.7.2 Origine condizionata alla sua esistenza ....................................................................................................................140
3.7.3 Offset delle origini ...................................................................................................................................................141
3.7.4 Origine Unica ...........................................................................................................................................................141
3.7.5 Lunghezza utensile ...................................................................................................................................................142
3.7.6 Gestione origini e lunghezza ....................................................................................................................................142
3.7.7 DDL e DDR per variazione Lunghezza e Raggio utensile .......................................................................................143
3.7.8 DLX e DLZ per variazione Lunghezze utensile (Tornio) ........................................................................................143
3.7.9 LEF e REF valore efficace Lunghezza e Raggio utensile ........................................................................................144

3.8 PARAMETRI .................................................................................................................................................................144


3.8.1 Nomi assi..................................................................................................................................................................145
3.8.2 Parametri di sistema .................................................................................................................................................145
3.8.3 Parametri utente .......................................................................................................................................................147
3.8.4 Array di parametri PAR[512]...................................................................................................................................147
3.8.5 Array di parametri di logica PAL[512] ....................................................................................................................148
3.8.6 Array di parametri di logica PLS[512].....................................................................................................................148
3.8.7 Array di parametri permanenti PRM[...] ..................................................................................................................148
3.8.8 Array di parametri POS[12] .....................................................................................................................................149
3.8.9 Array di parametri ZFP[1023]..................................................................................................................................149
3.8.10 Array di parametri SET[60] .................................................................................................................................149
3.8.11 Parametri triletterali..............................................................................................................................................152
3.8.12 Uso dei parametri .................................................................................................................................................152
3.8.13 Programmazione di parametri con espressioni .....................................................................................................153
3.8.14 Parametri in memoria permanente........................................................................................................................155
3.8.15 Parametri #, #A ÷ #Q e ##[33] in tempo reale .....................................................................................................156

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


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

4. UTENSILI - ESECUZIONE RIGA ISO ............................................................................. 167

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


4.1.1 Gestione random ......................................................................................................................................................169
4.1.2 Utensili multiuso e gestione random ........................................................................................................................171
4.1.3 Gestione vita utensile ...............................................................................................................................................172
4.1.4 Gestione delle famiglie utensili ................................................................................................................................173

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

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

5.1 RIGHE EVOLUTE ........................................................................................................................................................177


5.1.1 Definizione di parametri con calcolo di espressioni.................................................................................................177
5.1.2 Conversione cartesiane/polari e viceversa................................................................................................................178

5.2 SALTI..............................................................................................................................................................................178
5.2.1 Salto a una riga senza ritorno ...................................................................................................................................178
5.2.2 Salto a una serie di righe con ritorno........................................................................................................................179

iv D. ELECTRON
Indice CNC Z32 Programmazione

5.2.3 Salti a sottoprogrammi..............................................................................................................................................182


5.2.4 Parametrizzazione dei salti a riga e a sottoprogramma.............................................................................................183
5.2.5 !GOP..-N..! e !GOP..-N..-N..!...................................................................................................................................184
5.2.6 Campo G26, fine sottoprogramma per DNC ............................................................................................................184

5.3 CONDIZIONAMENTI ..................................................................................................................................................185

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


5.4.1 Letture e scritture multiple........................................................................................................................................188
5.4.2 Origine attiva ............................................................................................................................................................188
5.4.3 Posto utensile............................................................................................................................................................189
5.4.4 Lettura e scrittura in ricerca blocco ..........................................................................................................................189
5.4.5 Istruzioni :C e :S (estensioni delle istruzioni :R e :W)..............................................................................................190
5.4.6 Istruzione :E per cancellazione origine in CMOS ....................................................................................................191

5.5 ALTRI .............................................................................................................................................................................191


5.5.1 Funzione :L per caricare files da disco .....................................................................................................................191
5.5.2 Funzione :L- per scaricare files su disco...................................................................................................................194
5.5.3 Funzione :L254 esecuzione multipla in DNC...........................................................................................................194
5.5.4 Programmazione parametrica del nome file eseguito in DNC..................................................................................196
5.5.5 DNC strutturato ........................................................................................................................................................197
5.5.6 Istruzione :P stampa su video stringhe e valori parametri ........................................................................................197
5.5.7 Istruzione :D stampa su video stringhe e valori di parametri....................................................................................198
5.5.8 Istruzione :F scrittura stringa su file .........................................................................................................................199
5.5.9 File documentazione ("DOC") per ricerca blocco con blocco opzionale .................................................................200
5.5.10 Istruzione INPUT - Introduzione parametri di part-program da tastiera ..............................................................203

6. FUNZIONI DI PROGRAMMAZIONE STRUTTURATA .................................................... 205

6.1 PROGRAMMAZIONE STRUTTURATA...................................................................................................................205


6.1.1 Struttura IF - ELSEIF - ELSE - END IF...................................................................................................................205
6.1.2 Struttura DO - EXIT DO - LOOP.............................................................................................................................209
6.1.3 Struttura GOTO LN..................................................................................................................................................211
6.1.4 Struttura DEFINE - END DEFINE ..........................................................................................................................212
6.1.5 Istruzione OUT.........................................................................................................................................................213
6.1.6 Istruzione WAIT.......................................................................................................................................................214

6.2 Subroutines temporanee ................................................................................................................................................215

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

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


7.1.1 G800K1: FORATURA SEMPLICE.........................................................................................................................221
7.1.2 G800K2: FORATURA PROFONDA CON ROTTURA TRUCIOLO ....................................................................222
7.1.3 G800K3: FORATURA PROFONDA CON SCARICO TRUCIOLO ......................................................................223
7.1.4 G800K4: MASCHIATURA .....................................................................................................................................224
7.1.5 G800K5: ALESATURA...........................................................................................................................................225
7.1.6 G800K6: BARENATURA .......................................................................................................................................226
7.1.7 G800K7: FORATURA PROFONDA MISTA CON ROTTURA E SCARICO TRUCIOLO..................................227
7.1.8 G800K8: FORATURA DI DUE PARETI DISTANZIATE.....................................................................................228
7.1.9 G800K9: FORATURA DI TRE ZONE DIFFERENZIATE ....................................................................................229
7.1.10 G800K10: FRESA-ALESATURA INTERNA.....................................................................................................231
7.1.11 G800K11: FRESA-ALESATURA ESTERNA ....................................................................................................232

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

D. ELECTRON v
CNC Z32 Programmazione Indice

7.2.1 G801K1: LINEA DATI PUNTO INIZIALE ED INCREMENTI ...........................................................................235


7.2.2 G801K2: LINEA DATI PUNTO INIZIALE, ANGOLO E DISTANZA FRA I PUNTI.........................................235
7.2.3 G801K3: LINEA DATI PUNTO INIZIALE E PUNTO FINALE...........................................................................236
7.2.4 G801K4: RETICOLO DATI INCREMENTI SU RIGA E SU COLONNA............................................................237
7.2.5 G801K5: RETICOLO DATI PUNTO INIZIALE, INCREMENTI ED ANGOLI...................................................237
7.2.6 G801K6: RETICOLO DATI PUNTI INIZIALI E FINALI DI RIGA E DI COLONNA ........................................238
7.2.7 G801K7: CIRCONFERENZA DATI ANGOLO INIZIALE E INCREMENTO TOTALE ....................................239
7.2.8 G801K8: CIRCONFERENZA DATI ANGOLO INIZIALE E DISTANZA ANGOLARE ....................................240
7.2.9 G801K9: CIRCONFERENZA DATI L'ANGOLO INIZIALE E L'ANGOLO FINALE .........................................241
7.2.10 G801K10: RETTANGOLO DATO IL CENTRO E IL PASSO ..........................................................................242
7.2.11 G801K11: RETTANGOLO DATO IL CENTRO ED I LATI .............................................................................242
7.2.12 G801K12: RETTANGOLO DATO UNO SPIGOLO E IL PASSO ....................................................................243
7.2.13 G801K13: RETTANGOLO DATO UNO SPIGOLO ED I LATI .......................................................................244

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


7.3.1 G802K1: SGROSSATURA DI CAVE CIRCOLARI ..............................................................................................247
7.3.2 G802K2: SGROSSATURA DI CAVE RETTANGOLARI NOTO IL CENTRO CAVA .......................................249
7.3.3 G802K3: SGROSSATURA DI CAVE RETTANGOLARI NOTO UNO SPIGOLO .............................................251
7.3.4 G802K4: FINITURA DI CAVE CIRCOLARI ........................................................................................................253
7.3.5 G802K5: FINITURA DI CAVE RETTANGOLARI NOTO IL CENTRO CAVA .................................................255
7.3.6 G802K6: FINITURA DI CAVE RETTANGOLARI NOTO UNO SPIGOLO .......................................................257
7.3.7 G802K7: ASOLA RETTILINEA ............................................................................................................................259
7.3.8 G802K8: ASOLA CIRCOLARE NOTO IL CENTRO ASOLA..............................................................................261
7.3.9 G802K9: ASOLA CIRCOLARE NOTO IL CENTRO DI CURVATURA .............................................................263
7.3.10 G802K10: FILETTATURA DI UN FORO CON FRESA MONOTAGLIENTE................................................265
7.3.11 G802K11: FILETTATURA DI UN FORO CON FRESA A PETTINE..............................................................266
7.3.12 G802K12: FILETTATURA DI UN PERNO CON FRESA MONOTAGLIENTE .............................................267
7.3.13 G802K13: FILETTATURA DI UN PERNO CON FRESA A PETTINE ...........................................................268
7.3.14 G802K14: SPIANATURA...................................................................................................................................269

7.4 ESEMPI ..........................................................................................................................................................................270

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


PERMANENTI.............................................................................................................................. 275

8.1 CICLI FISSI ...................................................................................................................................................................275


8.1.1 Esempio di Foratura .................................................................................................................................................276
8.1.2 Esempio di Foratura con sosta..................................................................................................................................277
8.1.3 Esempio di Foratura profonda..................................................................................................................................277
8.1.4 Esempio di Maschiatura ...........................................................................................................................................278
8.1.5 Esempio di Alesatura con ritorno in lavoro..............................................................................................................278
8.1.6 Esempio di Alesatura con ritorno a mandrino fermo................................................................................................278
8.1.7 Esempio di Barenatura con ritorno a mandrino orientato.........................................................................................279
8.1.8 Esempio di Fresalesatura interna..............................................................................................................................279
8.1.9 Esempio di Foratura con entrata/uscita in lavoro e pausa a fine foro .......................................................................280

8.2 SOTTOPROGRAMMI PERMANENTI .....................................................................................................................280


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

9. FORMULE PERMANENTI ............................................................................................... 285

9.1 GENERALITÀ ...............................................................................................................................................................285


9.1.1 Contenuto delle formule permanenti ........................................................................................................................287
9.1.2 Sintassi della riga ISO con formule permanenti .......................................................................................................287

vi D. ELECTRON
Indice CNC Z32 Programmazione

9.1.3 Attivazione disattivazione variazione di formule permanenti...................................................................................287


9.1.4 Raccordi iniziali e finali ...........................................................................................................................................288
9.1.5 Compilazione delle formule permanenti...................................................................................................................291
9.1.6 Tempi di esecuzione .................................................................................................................................................291
9.1.7 Controllo dei fine corsa ............................................................................................................................................292
9.1.8 Controllo delle velocità massime..............................................................................................................................293
9.1.9 Formule attive e G53 ................................................................................................................................................293
9.1.10 Applicazioni .........................................................................................................................................................294

10. GEOMETRIA ................................................................................................................ 297

10.1 GENERALITÀ ...........................................................................................................................................................297

10.2 PROFILI GEOMETRICI NEL PIANO...................................................................................................................297


10.2.1 Definizioni geometriche .......................................................................................................................................297
10.2.2 Elementi che individuano un profilo.....................................................................................................................298
10.2.3 Modi di programmazione dei tratti di profilo .......................................................................................................301
10.2.4 Rette chiuse ..........................................................................................................................................................303
10.2.5 Rette aperte...........................................................................................................................................................304
10.2.6 Cerchi chiusi .........................................................................................................................................................305
10.2.7 Cerchi aperti .........................................................................................................................................................309
10.2.8 Combinazioni retta - cerchio.................................................................................................................................310
10.2.9 Programmazione del cerchio completo.................................................................................................................312

10.3 RACCORDI E SMUSSI.............................................................................................................................................314


10.3.1 Smussi automatici .................................................................................................................................................314
10.3.2 Raccordi automatici..............................................................................................................................................316
10.3.3 Campo di esistenza di raccordi .............................................................................................................................326

10.4 ESEMPI DI PROGRAMMAZIONE ........................................................................................................................327


10.4.1 Piastra sagomata 1 ................................................................................................................................................327
10.4.2 Piastra sagomata 2 ................................................................................................................................................329
10.4.3 Elica a tre pale ......................................................................................................................................................331

10.5 PROFILI SU TRE ASSI ............................................................................................................................................332

10.6 GESTIONE DELLA VELOCITÀ.............................................................................................................................332


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

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

11.1 TRASFORMAZIONE DELLE QUOTE PROGRAMMATE ................................................................................335

11.2 ROTAZIONE..............................................................................................................................................................336
11.2.1 Moti assi e rotazione.............................................................................................................................................337

11.3 TRASLAZIONE .........................................................................................................................................................338


11.3.1 Moti assi e traslazione ..........................................................................................................................................338

11.4 SPECULARITÀ .........................................................................................................................................................339


11.4.1 Moti assi e specularità ..........................................................................................................................................339

D. ELECTRON vii
CNC Z32 Programmazione Indice

11.5 FATTORE DI SCALA...............................................................................................................................................340

11.6 PARAMETRI CORRETTIVI DELLE QUOTE .....................................................................................................340

12. CORREZIONE RAGGIO UTENSILE ............................................................................ 343

12.1 CORREZIONE RAGGIO UTENSILE ....................................................................................................................343


12.1.1 Attacco al profilo..................................................................................................................................................348
12.1.2 Distacco dal profilo ..............................................................................................................................................351
12.1.3 Gestione della velocità .........................................................................................................................................352
12.1.4 Raggio zero o negativo.........................................................................................................................................352
12.1.5 Blocco singolo......................................................................................................................................................353
12.1.6 Esecuzione di profili chiusi in correzione raggio .................................................................................................353

13. PRESTAZIONI SPECIALI ............................................................................................. 355

13.1 TASTATORE DI MISURA - G61 ............................................................................................................................355


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

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

13.3 RICERCA BLOCCO CON FUNZIONI SPECIALI...............................................................................................363


13.3.1 Lettura dati da memoria CMOS ...........................................................................................................................363
13.3.2 Comunicazione da logica G101............................................................................................................................364
13.3.3 Movimenti di misura G61 e con stop G62 ...........................................................................................................364
13.3.4 Esempio di soluzione ...........................................................................................................................................364

13.4 ASSI CONTINUI CICLICI.......................................................................................................................................365


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

13.5 MACCHINA IN POLLICI........................................................................................................................................368

13.6 OFFSET DI LAVORAZIONE PILOTATI DA PULSANTI DI JOG (OFFSETJOG) ........................................368

13.7 RIPOSIZIONAMENTO SPECIALE IN RTCP ......................................................................................................369

13.8 ASSI DISCRETI.........................................................................................................................................................370

14. PRESTAZIONI OBSOLETE.......................................................................................... 373

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


14.1.1 Errore di inseguimento .........................................................................................................................................374
14.1.2 Gestione dell'accelerazione seconda.....................................................................................................................376
14.1.3 G99 e velocità massima........................................................................................................................................376
14.1.4 Considerazioni pratiche........................................................................................................................................377

viii D. ELECTRON
Indice CNC Z32 Programmazione

14.1.5 Esempi ..................................................................................................................................................................377

D. ELECTRON ix
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)


È 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. È
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.

Conversione automatica in BLANK di eventuali caratteri TAB contenuti nel part-program


Eventuali caratteri “TAB” (codice ascii 09) contenuti nel part-program possono portare ad errori
CN di vario tipo (soprattutto CN1D14 ERRORE PROGRAMMA, ma anche CN2C14 PARAMETRI
INCOMPATIBILI, a seconda del posizionamento del TAB) non facilmente comprensibili.
Per questo motivo i caratteri "TAB" vengono automaticamente convertiti in caratteri “BLANK”
(spazio) che è meglio gestito e riconosciuto dall'interprete del part-program.

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.

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

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.
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

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

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.
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

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

N2 T1 M6
per certi tipi di cambio utensile si può anticipare la ricerca del prossimo utensile
N3 T2
...
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.

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

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

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!

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

%N1G41... è trovato con !GO%N1!


/N12G41... è trovato con !GO/N12!
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

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

F feed
PAR[ ] parametro con indice
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

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

X123456,2
X0,1234567

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.
È 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 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
− è subito necessaria la precisione degli assi posizionati (non c'è tempo per il successivo
recupero della posizione)

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

− 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
N6 X25 Z30
N7 Y0

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

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.
Attenzione: in tratti geometrici circolari G2/G3 è consentito programmare un terzo asse senza la
previa programmazione del G12. Per dettagli vedere paragrafo "Profili su tre assi" nel capitolo
Geometria".
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.
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.
Attenzione: la funzione G25 può essere definita come trasparente al RESET e/o all'accensione
(l'ultimo stato programmato permane anche dopo un RESET e/o al successivo riavvio). Per questa
prestazione consultare il costruttore della macchina utensile.
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.
È 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.

G33/G95 con G113X attiva


La G113X è incompatibile con i movimenti in G33 (filettatura) o G95 (mm/giro).
La programmazione di G33 o G95 con G113X attiva ha il seguente comportamento:
- è eseguito un arresto
- la G113X è eliminata
- la G33 o G95 è eseguita nel modo G113 che le compete (tipico G113F)
- se durante G33/G95 non si disattiva la G113X (per esempio con G115 o G113P o G113F), a
fine G33/G95 la G113X è riattivata.
Se si tenta di attivare G113X con G95 (mm/giro) attiva viene allarme CN2C14 PARAMETRI
INCOMPATIBILI.
È da ricordare che se si disattiva la G33 con un G0 rimane attiva la G95 (mm/giro), quindi NON
viene riattivata la G113X. Per avere la riattivazione automatica di G113X si deve terminare la G95 con
G94 (mm/min).

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).

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

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
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

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

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:
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

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

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
...

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

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

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
....
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.

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

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:
...
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.

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

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.
Attenzione: la funzione G43 può essere definita come trasparente al RESET e/o all'accensione
(l'ultimo stato programmato permane anche dopo un RESET e/o al successivo riavvio). Per questa
prestazione consultare il costruttore della macchina utensile.
Dopo che è stata attivata la G43 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.
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.
Attenzione: la funzione G44 può essere definita come trasparente al RESET e/o all'accensione
(l'ultimo stato programmato permane anche dopo un RESET e/o al successivo riavvio). Per questa
prestazione consultare il costruttore della macchina utensile.
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.

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

Attenzione: la funzione G45 può essere definita come trasparente al RESET e/o all'accensione
(l'ultimo stato programmato permane anche dopo un RESET e/o al successivo riavvio). Per questa
prestazione consultare il costruttore della macchina utensile.
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 le correzioni origini e lunghezza, nonché le trasformazioni di quote: rototraslazione,
specularità, fattore di scala.
Modale, con arresto.
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).

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

...
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à.

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”.

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

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.
− 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.

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

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.
È 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:
- 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.
- È 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)

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

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:
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

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

- 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!,
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.
È 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

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

- 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
- 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

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

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.
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

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

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
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 ...).

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

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.

G91 indipendente da HX e con quote assi anche con espressioni


La G91 (programmazione incrementale) "standard" ha questi limiti nelle condizioni d'uso:
- il parametro HX costituisce un "moltiplicatore" della quota programmata (HX1 = quota in micron,
HX1000 = quota in mm)
- la quota asse deve essere programmata con valore numerico esplicito e non come risultato di una
espressione.
Con opportune impostazioni macchina (consultare per questo il costruttore della macchina utensile)
si può forzare un modo diverso di programmazione incrementale G91:
- non più dipendente dal parametro HX (le quote sono sempre in mm, come nella programmazione
non incrementale)
- le quote assi possono essere programmate anche con espressioni.
Per esempio, con questa modalità di G91 attiva:
G91
HA3.42
G0 X38.432 Y<HA+0.563>
Programma un punto spostato in incrementale di 38.432 mm in X e di 3.42+0.563 = 3.983 mm in Y.

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

- 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.

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

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
...

G33/G95 con G113X attiva


La G113X è incompatibile con i movimenti in G33 (filettatura) o G95 (mm/giro).
La programmazione di G33 o G95 con G113X attiva ha il seguente comportamento:
- è eseguito un arresto
- la G113X è eliminata
- la G33 o G95 è eseguita nel modo G113 che le compete (tipico G113F)
- se durante G33/G95 non si disattiva la G113X (per esempio con G115 o G113P o G113F), a
fine G33/G95 la G113X è riattivata.
Se si tenta di attivare G113X con G95 (mm/giro) attiva viene allarme CN2C14 PARAMETRI
INCOMPATIBILI.
È da ricordare che se si disattiva la G33 con un G0 rimane attiva la G95 (mm/giro), quindi NON
viene riattivata la G113X. Per avere la riattivazione automatica di G113X si deve terminare la G95 con
G94 (mm/min).

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.

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

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.

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.
Per evitare velocità eccessive quando la distanza è molto ridotta, con G96 attiva il parametro MS
MS
(che può essere programmato anche in precedenza) determina la massima velocità (in giri/minuto)
max
mandrino consentita. La MS attiva è quella presente al momento dell'ultima S programmata: se viene
speed
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

46 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.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)
...

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

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.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).

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

2.1.51 G103 - ripristina stato


Ripristina l'ultimo stato programma salvato con G102 e predispone al ripristino lo stato salvato in
precedenza.
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

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

N12 G102
N13 G53 non cambia nulla perché non ci sono origini e L non era attiva
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.).

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

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.
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.

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

G108A trasferisce il valore del parametro HX in un limite di accelerazione, G108F trasferisce il


parametro HX in un limite di velocità.
Per esempio:
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)

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

G109B quattro tratti


G109C cinque tratti
G109D sei tratti
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.

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

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.

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".

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

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
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
È 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.
È 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. È 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.

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

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
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

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

− 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
− 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.

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

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


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)

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

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
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

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

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.
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):

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

AN prelunghezza a cui calcolare le quote


HX numero riga iniziale (identico a G110T1)
HY numero riga finale (identico a G110T1)
Parametri di uscita:
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).

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

Suggerimenti pratici
La G110 permette di realizzare macro di sgrossatura/svuotatura anche di notevole complessità.
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:

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

− si trovano le intersezioni N1/P1


− si trovano le intersezioni N2/P2

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.

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

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.

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).
Attenzione: il ciclo di interpolazione a 8 mS è una modalità obsoleta, ancora supportata per
compatibilità con sistemi ancora funzionanti con questa modalità. Sono comunque molto rare le
occasioni in cui gli 8 mS di ciclo siano davvero utili.
Si sono invece verificati dei casi in cui l'esecuzione di vecchie macro contenenti l'istruzione G113L
(attivazione del modo 8 mS) ha provocato un funzionamento non corretto di cui è stato difficile
diagnosticare le cause.
Per questo motivo è stata eliminata l'efficacia della G113L per sistemi che nascano in taratura a 2
mS, lasciandone l'efficacia solo per sistemi che nascano in taratura a 8 mS.
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.

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

− 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.
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 costruttore della macchina utensile.
Queste funzioni fanno parte del sistema dell’Alta velocità, per maggiori dettagli sul funzionamento e
le strategie di uso vedere il manuale relativo M146 “Alta velocità”.
G113X, G113X KA1, G113X KA2 e sistemi di tipo tornio
Le funzioni G113X, G113X KA1 e G113X KA2 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 G113X KA1 - evoluzione dell'interpolazione nel MODO X


La funzione G113X KA1 migliora e completa il modo d'interpolazione della G113X (MODO X). Con
l'introduzione di algoritmi per alta velocità più efficienti. Con G113X KA1 si possono ridurre gli errori di
lavorazione ad una frazione di quelli (già molto bassi) ottenibili con la G113X.
Si programma con G113X KA1 e richiede che la G114 già stata attivata in precedenza.

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

Prima dell'attivazione di G113X KA1 occorre che tutti gli assi interessati al movimento (ossia tutti gli
assi vivi) siano in precedenza stati tarati con la funzione G125 KA1.
Queste funzioni fanno parte del sistema dell’Alta velocità, per maggiori dettagli sul funzionamento e
le strategie di uso vedere il manuale relativo M146 “Alta velocità”.

2.1.64 G113X KA2 - migliore gestione velocità/accelerazioni del MODO X


La G113X KA2 è una prestazione che migliora la gestione delle velocità e delle accelerazioni di
macchina rispetto alla G113X KA1, I cambiamenti apportati con questa modalità di interpolazione
consentono generalmente un migliore grado di finitura oppure, se si usano parametri dinamici della
G114 più veloci (K = accelerazione e J = jerk) un minore tempo di esecuzione.
Si attiva semplicemente programmando G113X KA2 invece che G113X KA1.
Per il resto è identica alla G113X KA1, ossia:
- la qualifica degli assi si fa con G125 KA1
- richiede la G114 attiva e i parametri di G114 sono gli stessi
ATTENZIONE: poiché si tratta di una prestazione che incide su molti aspetti del controllo di
movimento, dovrebbe essere utilizzata soltanto se necessaria e col supporto del costruttore della
macchina o di D.Electron.
Queste funzioni fanno parte del sistema dell’Alta velocità, per maggiori dettagli sul funzionamento e
le strategie di uso vedere il manuale relativo M146 “Alta velocità”.

2.1.65 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.66 G113A - G113B - G113Z - arrotondamento


Funzioni tipiche del sistema Alta velocità (G114).
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).

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

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.67 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.68 G114 - attivazione del calcolo della velocità


Modale.
Funzione tipica dell’alta velocità.
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)

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

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.

2.1.69 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à”.

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

2.1.70 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).
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).

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

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

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

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

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.71 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.72 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 è:
G118N [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.73 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
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)”.

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

2.1.74 G118 HR2 - RTCP statico per tavola girevole


Modale.
La speciale funzione G118 HR2 statica serve per la gestione dell'RTCP (rotation tool centre point)
tavola. La G118 HR2 calcola le correzioni da applicare agli assi (XYZ) dovute alla posizione attuale,
ovvero alle quote fisiche degli assi rotativi legati alla G118 (ovvero agli assi tavola).
L'effetto risultante dalla programmazione della G118 HR2 è la traslazione dell'origine pezzo in
funzione delle quote degli assi tavola. Il sistema di riferimento non viene ruotato, gli assi lineari restano
allineati con gli assi macchina.
Successivamente alla programmazione della G118 HR2, movimenti degli assi tavola legati alla
G118 non producono moti di trascinamento sugli assi lineari, né il ricalcolo automatico dell'origine
pezzo. Per ricalcolare l'origine dopo una rotazione occorre disattivare la G118 HR2 (programmando
G118 E) riprogrammare la G118 HR2.
Il formato generale per l'attivazione della G118 HR2 è:
G118N HR2 [KA…] [RA…] [X… Y… Z…]
oppure
G118 ‘nome asse’ HR2 [KA…] [RA…] [X… Y… Z…]
La funzionalità della G118 HR2 è equivalente alla G118 S con la differenza che:
- G118 HR2 calcola la traslazione dell'origine in funzione delle quote attuali degli assi rotativi tavola
- La G118 S calcola la traslazione dell'origine in funzione delle quote degli assi rotativi programmate
sulla stessa riga di programmazione della G118S.
Per una descrizione dettagliata sull'uso e sul funzionamento della prestazione vedere l'apposito
manuale M154 “Rotazioni (RTCP)”.

2.1.75 G118S - RTCP statico con programmazione quote assi tavola girevole.
Modale.
La speciale funzione G118S serve per la gestione dell’RTCP (rotation tool centre point) tavola.
La G118S calcola le correzioni da applicare agli assi lineari (XYZ) dovute alle quote programmate
degli assi tavola.
La funzionalità della G118S è equivalente alla G118 HR2 con la differenza che:
- G118 HR2 calcola la traslazione dell'origine in funzione delle quote attuali degli assi rotativi tavola
- La G118 S calcola la traslazione dell'origine in funzione delle quote degli assi rotativi programmate
sulla stessa riga di programmazione della G118S.
Il formato generale per l'attivazione della G118S nel caso monorotativo è:
G118S quota asse tavola [KA…] [RA…] [X… Y… Z…]
oppure nel caso birotativo possono essere:
G118S quota asse trainante quota asse trainato [KA…] [RA…] [X… Y… Z…]
G118S quota asse trainante [KA…] [RA…] [X… Y… Z…]
G118S quota asse trainato [KA…] [RA…] [X… Y… Z…]
Per una descrizione dettagliata sull'uso e sul funzionamento della prestazione vedere l'apposito
manuale M154 “Rotazioni (RTCP)”.

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

2.1.76 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.77 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.78 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”.

2.1.79 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 è:

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

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

2.1.80 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.
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.

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

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
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

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

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
G0Y300 Y va a 300
G0X50 X va a 30 anche se programmato 50

Esempi di programmazione ed uso di G123


ESEMPIO 1%
G0X0Y0Z0

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

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.81 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
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.

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

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
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

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

G0A15B35X10 ok

2.1.82 G125 - G125 KA1 - G125 KA101 - taratura assi per alta velocità
Per ottenere le migliori prestazioni dal controllo degli assi col “MODO X”, che si attiva con la G113X
o G113X KA1 o G113X KA2, è consigliabile effettuare più di una taratura G125 (almeno due) per ogni
asse interessato.

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.83 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.84 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.85 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”.

2.1.86 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

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

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.

2.1.87 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à:

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

- 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
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

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

- 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.88 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)
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:

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

(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
- 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>)

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

- 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.89 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
(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

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

(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
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

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

- 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.90 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.91 G134 KA0 ÷ KA3 - commutazione macchina tipo fresa/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.
Con la G134 KA0 si forza il funzionamento fresa mentre con G134 KA1, G134 KA2 o G134 KA3 si
forza il funzionamento tornio.
Se non è programmato KA o sono programmati valori diversi da 0,1,2,3 viene allarme CN2C14
PARAMETRI INCOMPATIBILI.

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

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 CN1D14 ERRORE
PROGRAMMA).
Se il funzionamento è forzato:
- per fresa forzata a funzionare come tornio (G134KA1/G134KA2/G134KA3) 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 G134 KA2 o G134 KA3.
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 G134 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 o G134 KA3.
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:
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)

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

… (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.
Funzionamento della G134 KA3
La funzione G134 KA3 permette di attivare la modalità di tipo tornio specificando sulla riga di
programmazione quale tra gli assi X e Z sarà usato come diametrale e quale come longitudinale.
Sintassi (identica per macchine in mm e in pollici):
G134 KA3 X0 Z1 (attiva Z come diametrale e X longitudinale)
G134 KA3 X1 Z0 (attiva X come diametrale e Z longitudinale)
Caratteristiche:
Con arresto (come le G134 KA0,KA1,KA2).
Dà allarme CN2C14 PARAMETRI INCOMPATIBILI, se:
- non sono programmati X e Z con una delle due combinazioni indicate

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

- sono attive o G53 o formule permanenti o G116,G117,G118 o G16


- nella riga sono programmati altri parametri o assi
- ai numeri logici 0,1,2 sono assegnati in taratura nomi assi diversi da X,Y,Z
Dopo l'attivazione:
- se era programmato X1Z0, X diventa il diametrale tornio, Z il longitudinale
- se era programmato X0Z1, Z diventa il diametrale tornio, X il longitudinale
- le lunghezze utensile LX e LZ sono applicate rispettivamente agli assi X e Z, non a radiale e
longitudinale come con le altre G134
- i nomi degli assi visualizzati corrispondono sempre agli assi fisici e non agli assi convenzionali
tornio, che sarebbero X = diametrale Z = longitudinale
- con G134 KA0 si termina l'effetto di G134 KA3 (torna una fresa)
- la programmazione di G53 termina l'operazione tornio
- l'eventuale G113X attiva viene disattivata ed è forzata la G113F
- si disattiva con G53 o con G134 KA0
Alla disattivazione:
- sono eliminate le eventuali attivazioni di G96 m/min o G95mm/giro
- è eliminata l'eventuale programmazione e/o visualizzazione diametrale
- non è ripristinata l'eventuale G113X (forzata a G113F dalla modalità tornio), quindi è compito
del programmatore eventualmente riprogrammare la G113X.

2.1.92 G135 I1 - G135 J1 - gestioni avanzate dell'alta velocità


Modale.
Le prestazioni della G135 fanno parte del sistema dell'alta velocità (G114 e G113X o G113X KA1 o
G113X KA2).per maggiori dettagli sulle caratteristiche e le strategie d'uso vedere il manuale M146
“Alta velocità”.

Funzione G135 I1
Durante l'esecuzione di una traiettoria la funzione G135 I1 permette di modificare la gestione dei
rallentamenti dovuti a cambiamenti di curvatura (aumentando o diminuendo il jerk di curvatura
applicato nei punti in cui avviene un cambio di curvatura, come le transizioni retta-cerchio o cerchio-
cerchio).
Se la G135 I1 viene usata per ottenere un aumento del jerk di curvatura, nei punti in cui la curvatura
della traiettoria cambia, si noteranno minori rallentamenti della macchina, il tempo di esecuzione sarà
più basso.
Se la G135 I1 viene usata per ottenere una diminuzione del jerk di curvatura, nei punti in cui la
curvatura della traiettoria cambia, si noteranno maggiori rallentamenti della macchina, il tempo di
esecuzione sarà più alto.
La sintassi di programmazione è:
G135 I… [HX…]
G135 I0 Annulla gestione avanzata G135 I1
Programmazione per ottenere un aumento della velocità di esecuzione:
G135 I1 Attiva gestione G135 I1, nessun aumento del jerk di curvatura
G135 I1 HX0 Nessun aumento del jerk di curvatura
G135 I1 HX1 Aumento del jerk di curvatura di 2 volte
G135 I1 HX2 Aumento del jerk di curvatura di 4 volte

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

G135 I1 HX3 Aumento del jerk di curvatura di 8 volte


G135 I1 HX4 Aumento del jerk di curvatura di 16 volte
Programmazione per ottenere una diminuzione della velocità di esecuzione:
G135 I1 HX-1 Diminuzione del jerk di curvatura di 2 volte
G135 I1 HX-2 Diminuzione del jerk di curvatura di 4 volte
G135 I1 HX-3 Diminuzione del jerk di curvatura di 8 volte
G135 I1 HX-4 Diminuzione del jerk di curvatura di 16 volte
Note:
- Il parametro HX può essere programmato solo come numero intero da -4 a +4.
- Tenere conto che l'effetto complessivo di HX negativo di G135 e di J di G114 è comunque limitato
a +6. Quindi se J di G114 = 5, valori di HX di G135I1 minori di -1 non saranno efficaci.

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.

2.1.93 G136 - micrososta


Questa prestazione serve per ottenere arresti macchina e soste si brevissima durata.
È 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:
G1 F5000 X100
G136 TT0.002 HX1
è del tutto equivalente a:
G1 F5000 X100 G136 TT0.002 HX1

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

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.94 G137 - G138 - per blocco singolo e ricerca blocco


Dopo la funzione G137 (modale senza arresto, annullata al RESET e inizio programma) inizia un
blocco di istruzioni che non devono essere interrotte né dal blocco singolo né dalla ricerca blocco.
Questo blocco di istruzioni termina con la programmazione della G138.
In altre parole, tutte le istruzioni comprese tra la G137 e la G138 sono considerate come un unico
blocco, pertanto saranno eseguite tutte nel caso di esecuzione in blocco singolo e non sarà possibile
riprendere un'esecuzione in ricerca blocco all'interno di una sezione compresa tra G137 e G138.
G138 annulla la G137, inoltre la riga che contiene la G138 è interrotta dal blocco singolo anche se
la riga non è operativa.

2.1.95 G139 - assi concorrenti


La G139 "assi concorrenti" serve nel caso di macchine con due assi paralleli, dove la posizione di
uno dei due assi (asse compensante) modifica la posizione dell'altro (asse compensato) rispetto al
pezzo in lavoro.
Per esempio è il caso in cui il mandrino si muove lungo l'asse Y (asse compensato), ed il pezzo è
su una tavola che si muove lungo un asse V (asse compensante), parallelo allo stesso asse Y.
Nel seguito per brevità si identificherà l'asse compensato come asse Y e l'asse compensante come
asse V, ma la G139 agisce su qualsiasi coppia di assi che sia opportunamente indicata nelle
impostazioni di macchina. Riferirsi alle specifiche del costruttore della macchina utensile per ulteriori
dettagli.
La distanza dell'utensile dal pezzo è influenzata dalla posizione sia di V (posizione del pezzo
nell'esempio) che di Y (posizione del mandrino nell'esempio).
L'effetto del movimento di V su Y si potrebbe compensare variando l'origine di Y, ma per comodità
di uso si può invece usare la G139.
La compensazione dell'asse Y si ottiene programmando:
G139
La G139 legge la posizione di V rispetto alla sua origine supplementare (inclusiva di eventuale
lunghezza L) e compensa automaticamente l'origine di Y in funzione di tale valore. Ovvero, utilizza la
quota di V per variare l'origine di Y.
La variazione origine effettuata sull'asse Y dalla G139 è effettuata automaticamente internamente
al controllo e non comporta variazioni visibili nella tabella origini.
Tramite RST(89÷91) è possibile leggere le correzioni attualmente impostate dalla G139 alle origini
dei tre assi lineari. Il valore è in mm. Nell'esempio, essendo compensato l'asse Y, il valore che riporta
la correzione attualmente impostata è RST(90).
Caratteristiche della G139:
- è una funzione con arresto, provoca anche l'immediato ricalcolo delle compensazioni con le
posizioni attuali
- gli assi definiti in taratura come “concorrenti” devono essere continui (num.logico 0÷12) ed
esistenti, altrimenti la G139 provoca un allarme CN2C14 PARAMETRI INCOMPATIBILI

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

- G139 "fotografa" la posizione di V rispetto all'origine base e attiva la compensazione di Y rispetto


alla posizione di V, ovvero modifica la quota di Y in funzione della posizione di V.
- insieme a G139 è possibile programmare solo N (numero riga) # e #A, ma nessun asse né
parametro di sistema (HX,HY,HR,HT,I,J,K ecc...) né altre G, altrimenti viene allarme CN2C14
PARAMETRI INCOMPATIBILI
- per calcolare il segno della compensazione si assume che un movimento di V in senso positivo ha
lo stesso effetto di Y in positivo (allontana l'utensile dal pezzo)
- la G53 sospende la compensazione dovuta alla G139, la G54 la riprende
- programmare G139 con G53 attiva è ammesso come predisposizione. La G139 rimarrà sospesa
fino alla successiva G54
- se con G139 attiva si muove V la compensazione di Y non cambia ma resta quella congelata dalla
G139, per calcolare la nuova compensazione è necessario programmare nuovamente la G139.
- durante la ricerca blocco la posizione di V letta dalla G139 non è quella fisica ma quella
programmata. In questo modo, si garantisce che, al termine della ricerca blocco, le compensazioni
attive su Y siano le stesse che si hanno durante l'esecuzione reale. Però se la posizione fisica
differisce da quella programmata di meno dell'errore di posizionamento di taratura viene presa la
posizione fisica, per evitare differenze dovute a piccoli errori di posizionamento o di bloccaggio
dell'asse V.
- se la tavola V muove una tavola girevole su cui si applica la G118, le quote di centro tavola della
G118 (che non tengono conto della G139):
- devono obbligatoriamente essere prese con G120 quando V=0 (altrimenti si hanno errori di
posizione)
- possono essere scritte da PLC con FFWRCENTAV
- possono essere scritte da part-program con SET[27],[28],[29]
- i parametri di PLC ZZCENTAV (per mandrino 0 e 1) e ZZCENTAV2 (mandrino 2) non tengono
conto della G139, ovvero esprimono le quote del centro tavola quando V=0.
- la G139 è trasparente al RESET (il suo effetto rimane dopo un RESET), ma si perde allo
spegnimento.

2.1.96 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

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

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.
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

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

- 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
- 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.97 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:

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

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.
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.

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

- 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 G142K.. è 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.
- 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.98 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.

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

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 "OFFSETJOG" 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
OFFSETJOG attiva).

2.1.99 G144 KA1 - sospensione part-program e attivazione di attività di JOG


È simile alla G144.
La differenza è che con KA1 la G144 attiva un JOG a tutti gli effetti (come se fosse stato premuto
Esc 4 Enter) e quindi mette a disposizione dell'operatore la riga di comando del JOG, questo gli
consente di selezionare gli assi e di dare ogni altra impostazione relativa all'attività di JOG.
Sintassi:
G144 asse1 [eventuali altri assi] KA1 [F feed]
Esempio:
G144XY KA1 F20000
E' ammessa solo in un part-program, se programmata in MDI genera allarme CN1D14 ERRORE
PROGRAMMA.
E' una funzione con arresto.
Almeno un asse continuo deve essere programmato, ma possono essere programmati tutti gli assi
che devono poter essere mossi in jog.
L'eventuale Feed programmata nella riga non ha effetto sulla G144 ma rimane attiva per le righe di
part-program successive.
Non sono ammessi altri parametri nella riga.
Il movimento in JOG è eseguito in G113P, le eventuali G113F o G113X attive prima di G144 sono
momentaneamente disattivate e sono ripristinate alla ripartenza del part-program. Poiché in G113P
l'errore di inseguimento è proporzionale alla velocità, se la velocità impostata è eccessiva e le tarature
di macchina non la supportano possono comparire allarmi CN0013 che interrompono il JOG.
La velocità di JOG è quella di default, ma può essere cambiata dall'operatore impostando la feed
da tastiera.
Poiché dopo la G144 KA1 è a tutti gli effetti attivo un JOG, si possono comandare movimenti con
pulsanti fissi, in micrometrico o lavoro o rapido a seconda del selettore, eventuali volantini se abilitati,
assi commutati se selezionati nella riga...
Dopo il movimento in JOG, premendo START il part-program riparte dal punto finale senza bisogno
di riposizionamento. E' compito del programmatore definire, dopo la G144, movimenti di assi
compatibili con qualsiasi spostamento effettuato durante la G144.
La G144 sospende la prestazione "OFFSETJOG" 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
OFFSETJOG attiva).

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

2.1.100 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.101 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.102 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 modo 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]

dove:

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

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:
- G148 attiva

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

- 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
- 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

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

- 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 è
G148XYZ trascinato di conseguenza (comunque
2 G1X..Y..Z..A.. 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)

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

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.103 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:
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

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

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

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.

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

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.104 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
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:

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

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-
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.

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

2.1.105 G151 - posizionamento grossolano del mandrino


Il posizionamento grossolano del mandrino serve per fermare il mandrino, orientandolo sull'angolo
impostato col parametro HT oppure 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 si ottiene programmando G151 HT..(opzionale) sulla riga dove viene
programmata M19:
G151 M19 HT45 = richiede un posizionamento grossolano unideirezionale all'angolo di 45 gradi
M19 G151 = richiede un posizionamento grossolano unideirezionale all'angolo mandrino zero
M19 = posizionamento standard
La G151 vale solo nel blocco e quindi non è modale.

2.1.106 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.107 G154 - ricerca blocco per lunghezza


La G154 serve per la ricerca blocco per lunghezza, utilizzata soprattutto per macchine da taglio
lamiera (laser o plasma).
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

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

- 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.108 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.
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.

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

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.
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.

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

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)
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.

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

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.109 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.
È una funzione modale con arresto.
Se si prova a programmarla su una fresa dà allarme CN2C14 (parametri incompatibili).
Sintassi di attivazione:
G156 HX... HY...
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.

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

La funzione G156 è da considerarsi riservata a D.Electron per lo sviluppo di interfacce


dedicate a sistemi di tipo tornio

2.1.110 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.111 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
- nella stessa riga dove sono contenute G158 o G159 non possono essere programmati HX o HY,
altrimenti viene allarme CN2C14 - PARAMETRI INCOMPATIBILI.

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

2.1.112 G160 - per limitare le velocità assi e mandrino


Funzione con arresto.
Formati possibili:
G160 KA0 (ripristina le condizioni di taratura)

Non è consentita la programmazione di KA con valore diverso da 0, altrimenti viene errore CN2C14
PARAMETRI INCOMPATIBILI
Nota: il Reset e l'inizio esecuzione programma ripristinano le condizioni di taratura, come G160KA0.
G160 HT.. X.. Y.. Z.. (limita le velocità di rapido)

Il parametro HT indica la velocità massima del mandrino in giri/min


Il mandrino può essere solo quello principale, altrimenti la programmazione di HT non ha effetto.
Valori negativi dei limiti di velocità sono interpretati come valori zero.
Insieme a G160 deve essere obbligatoriamente programmato almeno uno tra HT e nomi assi,
altrimenti viene errore CN2C14 PARAMETRI INCOMPATIBILI.
I valori programmati delle veloctà assi sono in mm/min anche se la macchina è in pollici.
Se si programmano più G160, ogni volta gli enti non programmati (assi o mandrino) rimangono con
le limitazioni precedenti (di taratura o forzate da una precedente G160).

2.1.113 G161 - riservata al simulatore


La G161 è una "G" di part-program riservata per uso interno al simulatore software D.Electron.

2.1.114 G163 - maschiatura sincronizzata, con controllo della posizione mandrino


La funzione per la maschiatura rigida finora era esclusivamente la G63.
Con questa funzione (G63) l'inversione del mandrino è comandata nell'istante in cui il movimento di
maschiatura oltrepassa la quota programmata, quindi si ha un movimento più lungo (overshoot) dovuto
alla rampa di frenatura del mandrino.
Si può compensare questo overshoot calcolando il tempo di frenatura e programmando un
movimento più corto, ma non è sempre facile prevedere la rampa del mandrino, soprattutto se è
presente una limitazione dell'accelerazione seconda (jerk), quindi la precisione ottenuta non è mai
molto elevata.
È stata perciò introdotta una nuova funzione di maschiatura rigida, la G163, che si programma per
esempio con:
G163 K1 Z-20
Il modo di programmare è identico a quello della G63, ma con la G163 la rampa del mandrino è
automaticamente calcolata e controllata dal CN, in modo tale che il movimento si arresti esattamente
alla quota programmata.
Non è quindi più necessario programmare una corsa più corta.
La precisione ottenibile dipende da molti fattori, tra i quali la dinamica del mandrino, il passo di
maschiatura e la velocità di inversione richiesta: può variare tra pochi centesimi di mm a qualche
decimo di mm.
La G163 supporta anche la velocità di ritorno (uscita dal filetto) diversa dall'entrata. Per esempio:
G163 K1 Z-20 I2

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

Il parametro I2, programmato nella stessa riga della G163, richiede una speed mandrino due volte
più alta della velocità di entrata.
I (opzionale) è il moltiplicatore da applicare alla speed mandrino durante l'uscita.
Il campo ammissibile per I va da 0.5 a 4. Valori esterni a questo intervallo non sono accettati e la
velocità di uscita è fatta alla stessa velocità dell'entrata.
La G163 può eseguire anche maschiature sincronizzate profonde con rottura truciolo. Il parametro
J programmato nella stessa riga della G163 attiva la funzionalità di maschiatura sincronizzata
profonda.
La sintassi generalizzata di programmazione per G163 quindi è:
G163 XYZ K [I] J [HX]
dove:
- XYZ = punto finale di maschiatura
- K = passo del filetto
- I [opzionale] = moltiplicatore della velocità di uscita (default 1)
- J = lunghezza del singolo tratto di maschiatura in avanti (maschiatura profonda)
- HX [opzionale] = moltiplicatore di J per ottenere la lunghezza del ritorno indietro (default 1,5)
Nella stessa riga dove è programmata G163 non sono ammessi i parametri HY HR HT KA: se c'è
uno di questi parametri viene allarme CN2C14 parametri incompatibili.
Esempio:
G0 Z50 S1000 M3
G163 Z0 K1.5 I1.3 J10 HX2
richiede una maschiatura profonda (50 mm tra Z50 e Z0) con filetto passo 1,5 composta di:
- avanti per 10 mm a S1000
- ritorno indietro di 20 mm (perché HX2) a S1300 (perché I=1,3)
- ripetizione fino al completamento
Note supplementari:
- se la lunghezza della filettatura non è almeno K+0.005 (un giro + 5 micron) viene allarme CN2C14
PARAMETRI INCOMPATIBILI
- il pulsante di STOP o FEED-HOLD arrestano il mandrino in G163.
- la maschiatura in avanti è fatta per tratti costanti. Se J non è sottomultiplo esatto della profondità
di maschiatura il J viene automaticamente cambiato, in più di max 20% e poi in meno fino a quanto
serve, per arrivare a un sottomultiplo esatto della profondità richiesta.
- se il ritorno indietro comporta una quota di uscita oltre il punto iniziale (Z50 nell'esempio) l'uscita è
comunque limitata alla quota iniziale.
- se J<(2*K) (incluso J<0) viene errore CN2C14 PARAMETRI INCOMPATIBILI.
Speciale comportamento in caso di pressione del pulsante STOP
Con opportune impostazioni macchina è possibile attivare un comportamento speciale in caso di
pressione del pulsante di STOP durante una maschiatura, in particolare:
- non acquisire provvisoriamente lo STOP
- invertire immediatamente la rotazione mandrino (o mantenerlo in rotazione inversa se già
presente) ed estrarre l'utensile dal foro fino a inizio maschiatura prima di arrestare l'esecuzione.
Per dettagli riferirsi alle specifiche date dal costruttore della macchina utensile.

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

2.1.115 G164 - compensazione di un particolare tipo di chatter


Questa prestazione consente di eliminare un particolare tipo di chatter di finitura, in particolare su
fresatrici dotate di testa rotativa con motori torque.
Poiché si tratta di una prestazione ancora sperimentale e allo stato attuale con limitazioni operative
che ne impediscono l'impiego generale non se ne descrivono i dettagli.
In caso di necessità consultare D.Electron.

2.1.116 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.117 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.

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

2.1.118 G200 HX4 / G200 HX5 - programmazione del cerchio completo


L’esecuzione all’interno di un part-program della riga:
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.119 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.120 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.

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

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.
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
È 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.121 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.

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

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.

2.1.122 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)
NOTA: la G200HX11 modalità sosta G4 precisa con G113X è riservata a casi speciali per i quali
può essere alternativamente usata la G136 (micrososta). Con la modalità sosta precisa la G4 diventa
(come la G136) una funzione senza arresto. Questo può portare ad una asincronia fra la riga
visualizzata e quella in corso di esecuzione.

2.1.123 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.

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

2.1.124 G200 HX15 / G200 HX16 - elimina l'aumento apparente di RA per cerchi di
piccolo diametro
Prestazione particolarmente utile per macchine a taglio laser.
Il parametro RA programmato nella riga con G114 è utilizzato, con G113X attiva, per ammorbidire il
profilo programmato. L'effetto di RA è:
- sugli spigoli (dove è più utile l'ammorbidimento) la deviazione dalla traiettoria può essere diverse
volte RA
- sui cerchi di diametro grande (>100 volte RA) la deviazione dalla traiettoria è circa pari ad RA
- sui cerchi di diametro piccolo (<100 volte RA) la deviazione dalla traiettoria è gradualmente
aumentata per ottenere che un eventuale spigolo arrotondato con un arco di cerchio di raggio
molto piccolo sia eseguito almeno con la stessa morbidezza di uno spigolo vero e proprio.
Questo graduale aumento apparente di RA può essere dannoso nelle macchine a taglio laser
quando siano ad eseguire cerchi (fori) con diametro molto piccolo, perché la riduzione di diametro può
diventare inaccettabile.
È quindi stata introdotta la funzione di predisposizione G200 HX15 (annullata da G200 HX16) che
elimina l'aumento apparente di RA sui tratti circolari di diametro piccolo.
La G200 HX15 è con arresto parziale, ossia non può essere programmata durante la correzione
raggio o con profilo aperto (viene errore profilo incompatibile) ma non provoca una sosta.

2.1.125 G200 HX17 / G200 HX18 - tolleranza sulla programmazione del cerchio
Un cerchio può essere programmato, a partire da un punto definito precedente, con centro e punto
finale.
Se la geometria programmata è perfetta, il punto precedente (dal quale inizia il cerchio) e il punto
finale sono alla stessa distanza (pari al raggio) dal centro del cerchio.
Se la geometria non è perfetta invece il raggio individuato dal punto precedente e quello individuato
dal punto finale sono diversi e si genera uno “scalino” di quote.
Al di sopra di una certa tolleranza (circa 0,06 mm) il CN non accetta il profilo e genera un allarme
CN4614 PUNTO PRECEDENTE NON SUL CERCHIO.
Esistono però alcune applicazioni in cui la precisione con cui il CAM fornisce i profili è scarsa e la
tolleranza standard (0,06 mm) può essere superata.
È possibile estendere la tolleranza di circa 4 volte (quindi sono ammessi errori fino a circa 0,25
mm) programmando:
G200 HX17
L'effetto della G200 HX17 è trasparente al RESET e a inizio programma (ossia una volta
programmata permane fino allo spegnimento).
Attenzione: la funzione G200 HX17 può essere definita come permanente all'accensione (questo
rende il suo effetto permanente già all'avvio della macchina). Per questa prestazione consultare il
costruttore della macchina utensile.
Il ripristino della tolleranza standard più bassa si ottiene programmando:
G200 HX18
Spetta al programmatore valutare se la maggiore tolleranza è compatibile con le caratteristiche
della macchina.

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

2.1.126 G201 - analisi della risposta dinamica della struttura


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

2.1.127 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 …)

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

N10 G41 (inizio correzione raggio)


N11 X10 Y5 (punto iniziale del profilo)
N004 G1 X20 Y5 (primo tratto di profilo)
... (profilo)
Esecuzione:
- 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.128 G410 - G420 - galleggiamento anti-tallonamento utensile per tornio


Le funzioni G410 e G420 servono per abilitare il controllo sulle zone d'ombra nell'esecuzione di un
profilo in correzione raggio su una macchina di tipo tornio. Chiameremo nel seguito questa prestazione
"Galleggiamento anti-tallonamento utensile".
La prestazione va utilizzata con gli utensili tipici da tornio per la lavorazione di un profilo.
Requisiti per la programmazione di G410/G420:
- deve essere programmata la funzione G150 che definisce l'orientamento dell'utensile con uno dei
seguenti orientamenti:

G150 KA1 o G150 KA3 o G150 KA5 o G150 KA7

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

X
G150KA3 G150KA1
TAG TAG

TAG TAG

G150KA5 G150KA7

NOTA: la figura si riferisce ad un piano di lavoro in cui il primo asse è l'asse Z e il secondo asse è
l'asse X, ovvero ad un piano di lavoro G25ZX. I codici di orientamento sono infatti da intendersi riferiti
al piano di lavoro. Se il piano di lavoro fosse diverso dal piano ZX (ad esempio XZ), la figura superiore
andrebbe rifatta con l'asse orizzontale pari al primo asse del piano (X) e l'asse verticale pari al
secondo asse del piano (Z).
Altri orientamenti utensile non sono supportati dalla prestazione.
- deve essere definito il parametro triletterale di part program TAG (può essere inserito anche in
tabella utensile) che specifica l'angolo minimo di tallonamento utensile, in gradi. L'angolo TAG
rappresenta l'angolo tra la parte utensile soggetta al tallonamento e il primo asse del piano di lavoro. Il
parametro TAG viene azzerato al reset.
- deve essere definito il raggio utensile R per la correzione raggio del profilo (se non si desidera la
correzione raggio, si deve programmare R0).
Restrizioni e condizioni di allarme:
- questa prestazione è usabile solo su una macchina di tipo tornio
- programmando G410/G420 senza che sia attiva una tra G150KA1/KA3/KA5/KA7 si verifica errore
CN1D14.
- con G410/G420 si possono programmare solo i movimenti del primo e del secondo asse del
piano, altrimenti si verifica errore CN1D14.
Funzionamento:
Una volta attivata G410 (o G420), nell'esecuzione di un profilo in correzione raggio, il CN tiene
conto dell'angolo di tallonamento utensile ed elimina i tratti di profilo che non sono lavorabili.
Il funzionamento è del tutto simile a quello di un profilo in correzione raggio:
G410 attiva una G41 più il “Galleggiamento anti-tallonamento utensile”
G420 attiva una G42 più il “Galleggiamento anti-tallonamento utensile”
G40 definisce la fine del profilo in correzione raggio con il “Galleggiamento anti-tallonamento
utensile”
La funzione G0 definisce la fine del profilo.

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

Note:
- Nel caso di G410/G420 (galleggiamento anti-tallonamento utensile) i blocchi geometrici passati
per la simulazione sono quelli che si hanno prima dell'eventuale elaborazione dovuta al galleggiamento
anti-tallonamento, cioè sono i blocchi geometrici originali.
- Il parametro triletterale TAG, che specifica l'angolo minimo di tallonamento utensile, può essere
sia programmato da part-program che preso da tabella utensile.
- Il parametro TAG, eventualmente contenuto nella descrizione utensile, è accessibile da riga
evoluta di part-program, sia in lettura :R, :C che in scrittura :W, :S.
Esempio di profilo eseguito con utensile a spigolo vivo (raggio utensile = 0):
G0Z0X210
TAG30 (TAG può essere inserito in tabella utensile e non programmato)
R0 (R può essere inserito in tabella utensile e non programmato)
G150KA1
G420
G1Z0X200 X
Z-20 G150KA1
X180
TAG
Z-40
X210
G3I-50J210Z-60X210
G3I-70J210Z-80X210 Z

Z-95
G40
In figura si può notare:
- il profilo originale
- il percorso della punta dell'utensile
- le zone d'ombra non lavorate
Esempio di profilo con raggio utensile diverso da zero:
G0Z0X210
TAG30 (TAG può essere inserito in tabella utensile e non programmato)
R5 (R può essere inserito in tabella utensile e non programmato)
G150KA1
G420
G1Z0X200
X
Z-20
X180 G150KA1

Z-40
TAG
X210
G3I-50J210Z-60X210
G3I-70J210Z-80X210
Z-95 Z
G40

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

Nella figura precedente, si vede l'effetto combinato della correzione raggio e del controllo del
tallonamento utensile.
In figura si può notare:
- il profilo originale
- il percorso del centro del settore raggiato dell'utensile
- le zone d'ombra non lavorate

2.1.129 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:
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

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

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-G999. 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-G999 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
Associa i valori dei parametri AA, AB, AC, agli assi programmati nell'ordine sulla riga di G881÷G899
o G901÷G999 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)

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

- 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-G999, 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/999 si possono
programmare G800 KA0, G801 KA0, G802 KA0, G881-G899 KA0, G901-G999 KA0 e in cicli/macro
programmati con G881/G889 e G901/G999 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.
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.

D. ELECTRON 125
Cap.2 - Funzioni preparatorie CNC Z32 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/999 si possono
programmare G800 KA0, G801 KA0, G802 KA0, G881-G899 KA0, G901-G999 KA0 e in cicli/macro
programmati con G881/G889 e G901/G999 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 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).

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

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..]
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:

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

- 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/999 si possono
programmare G800 KA0, G801 KA0, G802 KA0, G881-G899 KA0, G901-G999 KA0 e in cicli/macro
programmati con G881/G889 e G901/G999 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 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.130 G880÷G899 - G900÷G999 - gestione cicli fissi e macro da disco


ATTENZIONE: L’uso delle funzioni G880÷G899, G900÷G999 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÷G999 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÷G999 (gestione macro di lavorazione da disco).

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

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.… G999, 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.
È 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
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÷G999 e vengono mantenuti fino alla successiva programmazione di G880÷G999 (cioè ad ogni
G880÷G999 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.

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

G900÷G999 (gestione macro di lavorazione da disco)


Le funzioni G900, G901,...G999 hanno finalità equivalenti a G802. In particolare:
G900 è equivalente a G802 K0 (disattiva il ciclo fisso e resetta i parametri ZFP[ ] associati)
G901÷G999 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÷G999 sono tutti quelli usabili per G802:
MMA÷MMZ, NA÷NZ, E, I, J, K, KA0, HX0, HX1, F, (…)
Con G901÷G999 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.
È inoltre possibile programmare fino a tre nomi assi continui fra quelli definiti sulla macchina.
La sintassi completa di programmazione quindi è:
G901÷G999 [MMA÷MMZ] [NA÷NZ] [E] [I] [J] [K] [KA0] [HX..]
[NomiAssiContinui] [F..] (...)
Quando viene programmata una G901÷G999 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 G901÷G999 del primo asse G25
ZFP[705] = quota programmata con G901÷G999 del secondo asse G25
ZFP[706] = quota programmata con G901÷G999 del terzo asse G25
ZFP[707] = quota attuale del primo asse programmato con G901÷G999
ZFP[708] = quota programmata del primo asse programmato con G901÷G999
ZFP[709] = quota attuale del secondo asse programmato con G901÷G999
ZFP[710] = quota programmata del secondo asse programmato con G901÷G999
ZFP[711] = quota attuale del terzo asse programmato con G901÷G999
ZFP[712] = quota programmata del terzo asse programmato con G901÷ G999
NOTA: i parametri ZZFP[701]÷ZFP[712] vengono aggiornati tutte le volte che si programma una tra
G880÷G999 e vengono mantenuti fino alla successiva programmazione di G880÷G999 (cioè ad ogni
G880÷G999 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.
A differenza della G802 è possibile programmare una G901÷G999 dentro una macro richiamata da
un'altra G901÷G999. È consentito un solo livello di annidamento e se viene superato si verifica errore
CN1D14 (cioè non è possibile che la macro richiamata da una G9xx che a sua volta è in una macro
richiamata da una G9xx contenga una riga in cui è programmata un'altra G9xx).
Esempio:
macro G901: macro G902: macro G903:
G0X0Y0Z0 G0X10Y20Z20 G0X20Y30Z40
G1F5000X100 G1F9000Y100 G1F7000Z100

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

........... ........... ...........


G902 G903 ...........
........... ........... ...........
G26 G26 G26
si programma in un part-program una G901 questa a sua volta richiama la macro G902 che
provoca errore CN1D14 nel momento in cui richiama la macro G903.
Inoltre la programmazione di una G9xx dentro una macro richiamata da un'altra G9xx ha le
seguenti particolarità rispetto ad una G9xx non annidata:
- programmando una G9xx annidata non vengono modificati i parametri ZFP[701] ÷ ZFP[712]
- non si possono programmare né HX1 né HX0, pena errore CN1D14
- non si possono programmare i nomi degli assi continui, pena errore CN1D14
- non si possono programmare i parametri AA, AB, AC, pena errore CN1D14
Per il resto valgono le regole di programmazione delle G9xx non annidate.
Una G9xx annidata ha associata la subtemp 68 (cioè la macro associata viene caricata nella
subtemp 68).

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

132 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 133
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.
NOTA: per sistemi di tipo tornio la programmazione di una M6 non arresta il mandrino ed 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
contablocchi Durante l'esecuzione del sottoprogramma associato alle M speciali è bloccato il conteggio del
Video non numero progressivo (ossia in ricerca blocco la M speciale è un solo blocco che non può essere
aggiornato ripreso in un punto intermedio.
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).

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

Il sottoprogramma associato alla M speciale può essere eseguito in blocco singolo.


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.

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

Se si tratta di assi rotativi con visualizzazione di gradi (e millesimi di grado), programmare F100
significa 100 gradi/minuto.
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.

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

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
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

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

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 “__”. È invece permesso usare parametri come “_X” o “_A”.
Gli esempi che seguono chiariscono le varie situazioni:
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
tare 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.

138 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 139
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 Y = -27,38.
Le origini con caratteri numerici possono essere programmate con espressione, cioè il numero
dell'origine può essere il risultato di un'espressione, per esempio:
OX<1> equivale a OX1
OY<20+3> equivale a OY23
HX340 OZ<HX+5> equivale a OZ345
La programmazione delle origini richiede l'arresto (vedere capitolo “Funzioni preparatorie G” -
paragrafo funzioni G).
Al reset o all'accensione 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.
È 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 Origine condizionata alla sua esistenza


Questa istruzione è riservata alla scrittura di macro evolute.
Con questa istruzione si può attivare un'origine solo nel caso che essa esista (definita in tabella
origini) e senza dare allarme nel caso che non esista, usando al posto del carattere 'O' maiuscolo il
carattere 'o' minuscolo. Esempio:
OX18
Dà allarme se l'origine OX18 non esiste
oX18

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

Non attiva la OX18 e non dà allarme, se la OX18 non esiste.

3.7.3 Offset delle origini


L'origine 'OF' si somma in modo automatico all'origine supplementare programmata.
L'origine 'OF' (es. XOF per asse X) può essere scritta/letta nella sezione origini supplementari
attiva, o direttamente o mediante le istruzioni evolute :W/:R.
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>!
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.4 Origine Unica


L'Origine Unica permette di attivare su tutti gli assi macchina l'origine specificata con il comando
"Onumero", per esempio:
O1
questo evita di dover ripetere la programmazione dell'origine su tutti i singoli assi, nell'esempio
OX1 OY1 OZ1 ecc...
Il comando "Onumero" origine unica è valido da part-program, MDI e da attività 4 JOG.
Caratteristiche:
- il numero è fino a 3 cifre, da 1 a 999. Non è ammesso il numero zero (riservato all'origine
base), per tornare alle origini base si devono programmare OX0, OY0 ecc.
- dopo la O deve esserci un numero in chiaro, non sono ammesse origini con lettera o numeri
programmati con espressione.
- le origini attivate sono sempre quelle globali (file 126 per il processo zero) e la richiesta di
origine unica include anche la programmazione di G37OG, che commuta da eventuali origini locali
a quelle globali.
- l'attivazione di qualsiasi origine (e quindi anche dell'origine unica) in attività 4 è incompatibile
con l'esecuzione automatica: un'eventuale esecuzione automatica interrotta da un'attività 4 non può
essere ripresa dopo l'attivazione di una qualsiasi origine, inclusa l'origine unica.
- se per uno o più assi l'origine richiesta non esiste in tabella non viene allarme e l'origine resta
la precedente.

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

3.7.5 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.6 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)
− 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

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

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.7 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.8 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.
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.

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

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.7.9 LEF e REF valore efficace Lunghezza e Raggio utensile


LEF restituisce il valore efficace della lunghezza utensile L, composto da L+DDL.
REF restituisce il valore efficace del raggio utensile R, composto da R+DDR.
Esempio di uso:
HA=LEF+5
HA assume il valore di L+DDL+5
Poiché LEF e REF non sono parametri ma valori ottenuti con un calcolo, non è possibile
modificarne il valore e l'eventuale tentativo genera un allarme CN1D14 errore programma.

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.

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

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)

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

LEF valore efficace lunghezza utensile (L+DDL)


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
REF valore efficace raggio utensile (R+DDR)
RR raggio di raccordo
S speed
T utensile programmato
TA posto dell'utensile sul mandrino
TAG angolo minimo di tallonamento utensile (G410/G420 - tornio)
TAO acronimo di Tool Adaptive Override (prestazione TAO)
TRC acronimo di Tool Reference Current (prestazione TAO)
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.

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

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
− 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 Array di parametri PAR[512]


Per aumentare il numero dei parametri e rendere più flessibile l'indirizzamento dei parametri
stessi lo Z32 mette a disposizione un array di parametri indicizzato PAR[...].

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

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.
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"

3.8.5 Array di parametri di logica PAL[512]


È 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).

3.8.6 Array di parametri di logica PLS[512]


È 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).

3.8.7 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.

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

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.
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.

3.8.8 Array di parametri POS[12]


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.

3.8.9 Array di parametri ZFP[1023]


È 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.10 Array di parametri SET[60]


È un insieme di parametri accessibili tramite l'array SET[60] e riguardanti le tarature RTCP ed i
fine corsa degli assi continui.
I parametri SET[.] possono essere usati in lettura da qualsiasi part-program (anche non di
sistema) ed in lettura/scrittura da sottoprogrammi CMOS di sistema, ossia con numero maggiore di
127, e in sottoprogrammi temporanei ovvero subtemp di sistema (ossia con numero compreso tra
65 e 72 inclusi).

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

La programmazione di un parametro SET[.] da part-program utente genera l'allarme CN2C14


PARAMETRI INCOMPATIBILI.
Il dettaglio dei singoli parametri SET[ ] è il seguente:
SET[0] = (G117) con la lunghezza mandrino in direzione X tipo 0 (in mm) se G117 monorotativa,
con la distanza centri rotazione in direzione X tipo 0 (in mm) se G117 birotativa
SET[1] = (G117) con la lunghezza mandrino in direzione Y tipo 0 (in mm) se G117 monorotativa,
con la distanza centri rotazione in direzione Y tipo 0 (in mm) se G117 birotativa
SET[2] = (G117) con la lunghezza mandrino in direzione Z tipo 0 (in mm) se G117 monorotativa,
con la distanza centri rotazione in direzione Z tipo 0 (in mm) se G117 birotativa
SET[3] = (G117) con la lunghezza mandrino in direzione X tipo 1 (in mm) se G117 monorotativa,
con la distanza centri rotazione in direzione X tipo 1 (in mm) se G117 birotativa
SET[4] = (G117) con la lunghezza mandrino in direzione Y tipo 1 (in mm) se G117 monorotativa,
con la distanza centri rotazione in direzione Y tipo 1 (in mm) se G117 birotativa
SET[5] = (G117) con la lunghezza mandrino in direzione Z tipo 1 (in mm) se G117 monorotativa,
con la distanza centri rotazione in direzione Z tipo 1 (in mm) se G117 birotativa
SET[6] = (G117) con la lunghezza mandrino in direzione X tipo 0 (in mm) (valida solo per G117
birotativa)
SET[7] = (G117) con la lunghezza mandrino in direzione Y tipo 0 (in mm) (valida solo per G117
birotativa)
SET[8] = (G117) con la lunghezza mandrino in direzione Z tipo 0 (in mm) (valida solo per G117
birotativa)
SET[9] = (G117) con la lunghezza mandrino in direzione X tipo 1 (in mm) (valida solo per G117
birotativa)
SET[10] = (G117) con la lunghezza mandrino in direzione Y tipo 1 (in mm) (valida solo per G117
birotativa)
SET[11] = (G117) con la lunghezza mandrino in direzione Z tipo 1 (in mm) (valida solo per G117
birotativa)
SET[12] = (G117) con il coseno direttore dell'angolo tra asse trainato ed asse X (valida solo per
G117 birotativa)
SET[13] = (G117) con il coseno direttore dell'angolo tra asse trainato ed asse Y (valida solo per
G117 birotativa)
SET[14] = (G117) con il coseno direttore dell'angolo tra asse trainato ed asse Z (valida solo per
G117 birotativa)
SET[15] = (G117) con il coseno direttore dell'angolo tra asse trainante ed asse X
SET[16] = (G117) con il coseno direttore dell'angolo tra asse trainante ed asse Y
SET[17] = (G117) con il coseno direttore dell'angolo tra asse trainante ed asse Z
SET[18] = (G118) con la distanza tra centri di rotazione in direzione X (in mm) (valida solo per
G118 birotativa)
SET[19] = (G118) con la distanza tra centri di rotazione in direzione Y (in mm) (valida solo per
G118 birotativa)
SET[20] = (G118) con la distanza tra centri di rotazione in direzione Z (in mm) (valida solo per
G118 birotativa)
SET[21] = (G118) con il coseno direttore dell'angolo tra asse trainato ed asse X (valida solo per
G118 birotativa)
SET[22] = (G118) con il coseno direttore dell'angolo tra asse trainato ed asse Y (valida solo per
G118 birotativa)

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

SET[23] = (G118) con il coseno direttore dell'angolo tra asse trainato ed asse Z (valida solo per
G118 birotativa)
SET[24] = (G118) con il coseno direttore dell'angolo tra asse trainante ed asse X
SET[25] = (G118) con il coseno direttore dell'angolo tra asse trainante ed asse Y
SET[26] = (G118) con il coseno direttore dell'angolo tra asse trainante ed asse Z
SET[27] = (G118) con la coordinata asse X del centro rotazione della tavola in mm
SET[28] = (G118) con la coordinata asse Y del centro rotazione della tavola in mm
SET[29] = (G118) con la coordinata asse Z del centro rotazione della tavola in mm
SET[30] = (G118) tipo G118 (mono o birotativa)
SET[31] = (G118) numero logico asse trainante
SET[32] = (G118) verso (passi/giro) asse trainante
SET[33] = (G118) numero logico asse trainato
SET[34] = (G118) verso (passi/giro) asse trainato
Con l'insieme di parametri SET[0]÷SET[34] si ha accesso ad un set di tarature di G117/G118
(RTCP) leggibili e scrivibili da sottoprogrammi di sistema e sottoprogrammi temporanei che
eseguono G8xx e G9xx. Tramite questi parametri si possono modificare tutte quante le tarature
riguardanti G118 e una parte di quelle riguardanti G117, come si può fare tramite il programma di
impostazioni macchina TARAT.
I parametri SET[...] sovrascrivono le tarature impostate dal programma TARAT.
Questi parametri danno la possibilità di avere un numero indefinito di set di tarature G118, a
seconda delle necessità dell'utente.
In un part-program, prima di programmare G118 si dovranno scrivere per mezzo dei parametri
SET[.] le tarature G118 desiderate: al momento dell'attivazione di G118 verranno usate le tarature
attualmente valide (ultime programmate) ed eventuali variazioni di tarature tramite i parametri
SET[.] programmate dopo l’attivazione di G118 non avranno alcun effetto fino a una successiva
riattivazione di G118.
ATTENZIONE: SET[32] e SET[34] sono due tarature che nel programma TARAT sono
denominate “passi/giro asse trainato” e “passi/giro asse trainante” di G118, ma l'unica informazione
che il CNZ32 usa di questi dati è il segno, che determina il verso positivo o negativo dell'asse
rotativo corrispondente, o il valore 0 che indica che G118 non è definita in taratura e che provoca
un errore CN5414 se si programma G118.
Per questo motivo tali tarature sono qui denominate "verso" in alternativa a "passi/giro" ed
hanno il seguente comportamento:
- in lettura:
SET[32] e SET[34] rendono:
-1 = (verso negativo) se il valore letto è negativo
1 = (verso positivo) se il valore letto è positivo
0 = se il valore letto è zero
- in scrittura:
SET[32] e SET[34] scrivono:
-1 = (verso negativo) se il valore passato da scrivere è negativo
1 = (verso positivo) se il valore passato da scrivere è positivo
0 = se il valore passato da scrivere è zero
N.B. "Verso positivo" indica che la quota dell'asse rotativo e il corrispondente angolo usato per il
calcolo delle correzioni di G118 hanno lo stesso segno. "Verso negativo" indica che la quota

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

dell'asse rotativo e il corrispondente angolo usato per il calcolo delle correzioni di G118 hanno
segno opposto.
I parametri SET[35]÷SET[60] servono per variare le tarature dei fine corsa per i 13 assi continui.
Nel dettaglio i singoli parametri hanno il seguente significato:
SET[35] = fine corsa positivo asse con numero logico 0, in mm o gradi
SET[36] = fine corsa negativo asse con numero logico 0, in mm o gradi
SET[37] = fine corsa positivo asse con numero logico 1, in mm o gradi
SET[38] = fine corsa negativo asse con numero logico 1, in mm o gradi
...
SET[59] = fine corsa positivo asse con numero logico 12, in mm o gradi
SET[60] = fine corsa negativo asse con numero logico 12, in mm o gradi
Sono accessibili in lettura e scrittura e commutati di processo.
Nota: le dimensioni degli assi lineari sono in millimetri anche se la macchina è in pollici.
La modifica dei fine corsa rimane anche al RESET e a inizio programma, ma non è permanente
allo spegnimento: all'accensione sono attivati i fine corsa definiti in taratura.
Il nuovo fine corsa è scritto immediatamente con i parametri SET[35]÷SET[60], ma il suo effetto
può essere ritardato anche di molti blocchi perché non va a influenzare i blocchi eventualmente
presenti nel buffer del look-ahead. È compito dell'installatore curarsi delle eventuali
sincronizzazioni.

3.8.11 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.
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.12 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'.

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

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.13 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
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

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

− 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
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:

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

-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.14 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
X1=10
HB=37,45
CK=12345.678

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

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.15 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.
È 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.

156 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 157
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.
È 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

158 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 la posizione angolare del mandrino in gradi, riferita allo zero
rilevatore e quindi inclusiva dell'origine base del mandrino.
È specialmente utile per cicli di barenatura dove l'estrazione del bareno deve essere preceduta
da un disassamento orientato nella direzione dell'utensile.

D. ELECTRON 159
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.
È 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.

160 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 161
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.

RST(42) ÷ RST(44) differenza quote XYZ tra origine rotata e non rotata da G118
Le funzioni RST(42), RST(43) e RST(44) restituiscono il valore in mm della differenza, per i tre
assi XYZ al momento dell'attivazione di G118, tra le quote dell'origine attiva non rotata e quelle
dell'origine attiva rotata secondo le quote degli assi rotativi di G118.

RST(45) ÷ RST(47) correzioni quote assi XYZ dovute alla G118


Le funzioni RST(45), RST(46) e RST(47) restituiscono il valore in mm delle correzioni, per gli
assi XYZ, dovute alla G118.

RST(48) ÷ RST(50) quote misura AM BM CM di G61/G61KA1 nel sistema non rototraslato da G116
Le funzioni RST(48), RST(49) e RST(50) restituiscono le quote di misura AM, BM, e CM rese da
G61/G61KA1 nel sistema non rototraslato da una eventuale G116 attiva durante la misura.
In particolare:
se G61 o errore misura
- RST(48) = AM
- RST(49) = BM
- RST(50) = CM
se G61KA1 e misura terminata correttamente
- RST(48) = AM riportato nel sistema di riferimento non rototraslato da eventuale G116
- RST(49) = BM riportato nel sistema di riferimento non rototraslato da eventuale G116
- RST(50) = CM riportato nel sistema di riferimento non rototraslato da eventuale G116

RST(51) stato correzione lunghezza utensile L


La funzione RST(51) restituisce lo stato della correzione lunghezza utensile L:
1 se L utensile viene sommata (G43)
-1 se L utensile viene sottratta (G44)
0 se non è attiva o è sospesa la correzione lunghezza utensile (G45/G53)

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

RST(52) stato L utensile rispetto alla lunghezza mandrino in G117


La fuzione RST(52) restituisce lo stato della correzione L utensile rispetto alla lunghezza
mandrino in G117. In particolare:
0 se per G117 la L utensile ha lo stesso segno della lunghezza mandrino
1 se per G117 la L utensile ha segno opposto alla lunghezza mandrino

RST(53) gradi/giro dell'asse rotativo trainato di G117


La funzione RST(53) restituisce i gradi/giro dell'asse rotativo trainato di G117 (di solito 360).

RST(54) gradi/giro dell'asse rotativo trainante di G117


La funzione RST(54) restituisce i gradi/giro dell'asse rotativo trainante di G117 (di solito 360).

RST(55) gradi/giro dell'asse rotativo trainato di G118


La funzione RST(55) restituisce i gradi/giro dell'asse rotativo trainato di G118 (di solito 360).

RST(56) gradi/giro dell'asse rotativo trainante di G118


La funzione RST(56) restituisce i gradi/giro dell'asse rotativo trainante di G118 (di solito 360).

RST(57) ÷ RST(72) valore delle origini base degli assi


Le funzioni da RST(57) a RST(72) restituiscono i valori delle origini base degli assi in ordine di
numero logico.
L'unità di misura del valore restituito è millimetri o pollici in accordo con la taratura macchina.

RST(73) stato G142 (retract)


La funzione RST(73) restituisce lo stato di G142:
1 = se G142 è stata programmata dopo l'ultimo reset o inizio programma
0 = in tutti gli altri casi

RST(74) posizione mandrino rispetto all'origine base


La funzione RST(74) restituisce la quota del mandrino riferita all'origine base.

RST(75) ÷ RST(83) coefficenti della matrice di rotazione della G116 (aij)


Le funzioni da RST(75) a RST(83) contengono i coefficienti della matrice di rotazione della G116
(aij).
Nel dettaglio (aij = coefficiente che sta sulla riga i e sulla colonna j della matrice):
| RST(75) = a11 RST(76) = a12 RST(77) = a13 |
| |
| RST(78) = a21 RST(79) = a22 RST(80) = a23 |
| |
| RST(81) = a31 RST(82) = a32 RST(83) = a33 |
Le colonne di questa matrice individuano le componenti dei versori degli assi coordinati del
sistema di riferimento ruotato da G116, espressi nel sistema di riferimento originale.
Ad esempio programmando:
G116 K90 (ruota il sistema di riferimento di 90 gradi intorno a Z)
G116 J90 (ruota il nuovo sistema di riferimento, ottenuto dalla prima rotazione di 90 gradi intorno
a Z, intorno alla propria Y).
La matrice ottenuta è:

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

| RST(75) = a11 = 0 RST(76) = a12 = -1 RST(77) = a13 = 0 |


| |
| RST(78) = a21 = 0 RST(79) = a22 = 0 RST(80) = a23 = 1 |
| |
| RST(81) = a31 = -1 RST(82) = a32 = 0 RST(83) = a33 = 0 |

Le tre colonne della matrice rappresentano le componenti dei versori degli assi coordinati del
sistema di riferimento ruotato espressi nel sistema di riferimento oiginale.
Nel caso dell'esempio, dalle colonne della matrice, si ha:
X' = a11*X + a12*Y + a13*Z = 0*X + 0*Y + (-1)*Z = -Z
Y' = a21*X + a22*Y + a23*Z = (-1)*X + 0*Y + 0*Z = -X
Z' = a31*X + a32*Y + a33*Z = 0*X + 1*Y +0*Z = Y
dove X', Y' e Z' sono gli assi coordinati del sistema ruotato, X, Y e Z sono quelli del sistema
dritto o non ruotato.

RST(84) stato G116 (rototraslazione)


La funzione RST(84) restituisce lo stato di G116:
1 = attiva
0 = no attiva

RST(85) ÷ RST(88) finecorsa assi trainante/trainato della G117 (RTCP testa)


Le funzioni da RST(75) a RST(83) contengono i finecorsa degli assi rotativi trainante/trainato
della G117 (RTCP testa), in particolare:
RST(85) = restituisce il valore del finecorsa positivo asse trainante RTCP testa (G117) in mm
RST(86) = restituisce il valore del finecorsa negativo asse trainante RTCP testa (G117) in mm
RST(87) = restituisce il valore del finecorsa positivo asse trainato RTCP testa (G117) in mm
RST(88) = restituisce il valore del finecorsa negativo asse trainato RTCP testa (G117) in mm
Casi particolari:
- se RTCP testa non definito in taratura ritorna sempre il valore 0
- se richiesto finecorsa di asse trainato ma RTCP testa è monorotativa ritorna sempre il valore 0
- se richiesto un finecorsa ma l'asse è senza quel finecorsa ritorna 2147483647 se finecorsa
positivo, e -2147483648 se finecorsa negativo.

RST(89) ÷ RST(91) variazione origini assi lineari per effetto della G139 (assi concorrenti)
Queste funzioni sono riservate ai programmatori di cicli fissi di sistema.
Le funzioni da RST(89) a RST(91) restituiscono i valori in mm impostate dalla G139 alle origini
dei tre assi lineari. Tali valori possono essere utilizzati per correggere la posizione del centro tavola,
RTCP tavola (G118), per effetto degli assi concorrenti G139, nel caso in cui la tavola sia mossa
dall'asse compensante di una coppia di assi concorrenti.

RST(92) ÷ RST(151) con stato programmazione parametri G881÷G899 e G901÷G999


Le funzioni da RST(92) a RST(151) ritornano lo stato di programmazione dei parametri di
G881÷G899 e di G901÷G999. Il dettaglio è il seguente:
parametri di G881÷G899
RST(92) = stato programmazione MHA-NA (1 = programmato, 0 = non programmato)

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

RST(93) = stato programmazione MHB-NB (1 = programmato, 0 = non programmato)


................................................
RST(117) = stato programmazione MHZ-NZ (1 = programmato, 0 = non programmato)
RST(118) = stato programmazione E (1 = programmato, 0 = non programmato)
RST(119) = stato programmazione I (1 = programmato, 0 = non programmato)
RST(120) = stato programmazione J (1 = programmato, 0 = non programmato)
RST(121) = stato programmazione K (1 = programmato, 0 = non programmato)
parametri di G901÷G999
RST(122) = stato programmazione MMA-NA (1 = programmato, 0 = non programmato)
RST(123) = stato programmazione MMB-NB (1 = programmato, 0 = non programmato)
................................................
RST(147) = stato programmazione MMZ-NZ (1 = programmato, 0 = non programmato)
RST(148) = stato programmazione E (1 = programmato, 0 = non programmato)
RST(149) = stato programmazione I (1 = programmato, 0 = non programmato)
RST(150) = stato programmazione J (1 = programmato, 0 = non programmato)
RST(151) = stato programmazione K (1 = programmato, 0 = non programmato)

NOTE:
- lo stato di programmazione dei parametri relativi a G881÷G899 viene resettato dalla
programmazione di G880, di G800K0, di G800KA0 oppure se si scatena un reset di macchina,
mentre viene mantenuto tra successive programmazioni di altre G881÷G899: cioè se si programma
G881NA3 e poi si programma G881NB2 si avrà RST(92) = 1 (NA programmato) e RST(93) = 1 (NB
programmato).
- lo stato di programmazione dei parametri relativi a G901÷G999 non viene mantenuto tra
successive programmazioni di G901÷G999: cioè se si programma G901NA3 e poi si programma
G901NB2 si avrà RST(122) = 0 (NA non programmato) e RST(123) = 1 (NB programmato). Lo
stato di programmazione dei parametri relativi a G901÷G999 viene resettato dalla programmazione
di G900 oppure se si scatena un reset di macchina.

ATTENZIONE: nel caso di G9xx richiamata da un'altra G9xx rimane attivo lo stato dei parametri
programmati sulla G9xx chiamante. Esempio:
nel part-program c'è:
G901 NA10 I20
la macro associata a G901 richiama una G902 come segue:
.......
G902 NB20 J30 K40
.......
G26
in questo caso dopo la chiamata a G902 si avrà comunque lo stato di programmazione dei
parametri restituito dagli RST( ) non influenzato da quanto programmato sulla riga di G902:
RST(122) = 1 (NA programmato su riga G901)
RST(123) = 0 (NB non programmato su riga G901)
RST(149) = 1 (I programmato su riga G901)

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

RST(150) = 0 (J non programmato su riga G901)


RST(151) = 0 (K=non programmato su riga G901)

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.

166 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 167
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 9
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.

168 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 169
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.

170 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 171
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

172 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.
È 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 173
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.

174 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 175
Cap.4 - Utensili, Esecuzione riga ISO CNC Z32 Programmazione

176 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 177
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:

178 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 179
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 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
N1 Z0 M3 posiziona Z e start mandrino

180 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

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 181
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).

182 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 183
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)

184 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
'='.

D. ELECTRON 185
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

Per esempio:
...
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

186 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

espressione matematica di programma-pezzo (che nel caso più semplice può essere una
costante).
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 e da
2 fino a 6 caratteri nel caso di origini, mentre può essere a 1 o 2 caratteri, oppure i parametri di
sistema DDL, DDR, DLX, DLZ, TAG, TAO e TRC 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.
Nel caso di origini con caratteri numerici (1-999) il nome dell'origine può essere programmato
con una espressione, cioè il numero dell'origine può essere il risultato di un'espressione.
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
!HX=2!:WOX<10*HX>=HA! fa OX20 = HA
!HX=4!:WOZ_3<10*HX><42+HY>! fa OZ_340 = HY + 42 (asse biletterale)

D. ELECTRON 187
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

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.

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.

188 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

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
È 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’.

D. ELECTRON 189
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

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)
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…), all'utensile sul mandrino (:SS…) e ad un'origine nella sezione origini attiva (:SO).
Nel caso di origini con caratteri numerici (1-999) il nome dell'origine può essere programmato
con una espressione, cioè il numero dell'origine può essere il risultato di un'espressione.
Esempi:
!:STCU=HA!
richiede di scrivere nella descrizione dell'utensile programmato, il parametro CU, prendendo il
valore dal parametro di part-program HA.

190 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

!:SSDDL=0!
richiede di scrivere nella descrizione dell'utensile sul mandrino, il parametro DDL al valore 0
Nel caso di origini:
G37OL (attiva la sezione locale delle origini, per esempio del file 30)
!:SOX1<123.67>! (scrive nella sezione locale del file 30 OX1=123,67)

G37OG (attiva la sezione globale delle origini, nel file 126)


HA3 HB2.345 (definisce i parametri)
!:SOX<HA+10><HB+1>! (scrive nel file origini globale OX13=3,345)
Se si richiedono operazioni diverse viene errore CN1D14, per esempio:
!: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 oppure l'origine non era già
presente in tabella e quindi vengono aggiunti in coda
- se HX=1 il parametro esisteva già nella descrizione utensile oppure l'origine era già presente
in tabella e quindi ne viene solo modificato il valore

5.4.6 Istruzione :E per cancellazione origine in CMOS


L'istruzione di riga evoluta ":E" serve per la cancellazione di un origine dalla tabella delle origini
attiva (file 126 per il processo zero, salvo variazione con G37OL).
Sintassi:
!EO[nome_asse][numero_origine]!
Esempio:
!:EOX1!
Cancella tutte le origini X1 (anche eventualmente duplicate) presenti nella tabella origini attiva.
Sono gestiti anche i nomi degli assi bilettera e le origini con più di un carattere numerico,
esempio:
!:EOX_112!
Cancella tutte le origini 12 dell'asse biletterale X1.
Può essere inserita in un campo di riga evoluta condizionato, per esempio:
!IF HA>0;:EOX3;EB!

5.5 ALTRI

5.5.1 Funzione :L per caricare files da disco


La funzione :L (L come Load) permette di caricare in modo veloce part-program residenti su
disco nella memoria operativa dello Z32.

D. ELECTRON 191
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

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 '!'
- 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.

192 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

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.
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

D. ELECTRON 193
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

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.

5.5.2 Funzione :L- per scaricare files su disco


Il comando :L- consente lo scarico di files dalla memoria operativa di Z32 su 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.
Alcuni esempi:
HA10 HB20
!:L-74-<HA+HB>! SCARICA IL FILE 74 IN C:\Z32\PPG\30
!:L-74-C:\Z32\FTOP<HA/2+HB>! SCARICA IL FILE 74 IN C:\Z32\FTOP25
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.3 Funzione :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:
!: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.

194 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

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.
concatenazione di righe di part-program col carattere "$" non permessa
La concatenazione di più righe col carattere "$" non è consentita in part-program eseguiti 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.

D. ELECTRON 195
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

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.

5.5.4 Programmazione parametrica del nome file eseguito in 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.

196 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

5.5.5 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.
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.6 Istruzione :P stampa su video stringhe e valori parametri


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)

D. ELECTRON 197
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

! è il carattere di apertura e chiusura campo (è valido anche il ";", escluso inizio riga).
- :Pn1-n2 sono obbligatori.
- 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.
- È 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

5.5.7 Istruzione :D stampa su video stringhe e valori di parametri


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.

198 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

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] ...!
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.8 Istruzione :F scrittura stringa su file


Il funzionamento dell'istruzione evoluta :F è 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]!

D. ELECTRON 199
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

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.

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.9 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

200 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

> introduce il file di Z32 dove risiedono i dati di documentazione


nnn è il numero file
Per esempio:
!DOC>102!
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

D. ELECTRON 201
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

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
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

202 D. ELECTRON
CNC Z32 Programmazione Cap.5 - Righe evolute, salti, condizionamenti, Read/Write

0
Gli “0” corrispondenti ai blocchi opzionali si trasformano in “1” se il selettore di blocco opzionale
è attivo in esecuzione.

5.5.10 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.

D. ELECTRON 203
Cap.5 - Righe evolute, salti, condizionamenti, Read/Write CNC Z32 Programmazione

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.
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.

204 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
Sono state aggiunte alcune istruzioni di "programmazione strutturata" che si affiancano alle
istruzioni esistenti e che possono, con qualche limitazione che vedremo, essere contenute in part-
program residenti nella memoria operativa di Z32 (lunghezza non superiore a 64k bytes) ed anche
in part-program 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
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:

D. ELECTRON 205
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

< 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.
Esempio 3:
--IF // ;in ricerca blocco
HA=1 ;in ricerca blocco prende il valore 1
--ELSE

206 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

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.
È 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
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.
È 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:

D. ELECTRON 207
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

--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.
È consentita la presenza contemporanea di istruzioni strutturate --IF e di istruzioni di salto non
strutturato (!GON…!) nello stesso file, questo 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:
!GON1!
--IF condizione
N1 ...
--END IF
...
M2
La riga N1 fa uscire dalla struttura di IF in modo incontrollato, l'END IF arriva quando lo IF non è
stato correttamente aperto 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.
È 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!
--END IF
oppure:
--IF condizione
!GOP10-N35-N70!
--END IF

208 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

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
G1 F1000 Z<Z-2>
X100
Y100
X0
Y0
--LOOP 2

D. ELECTRON 209
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

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
È 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:
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à

210 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

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.
È 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.
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.

D. ELECTRON 211
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

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.
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

212 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

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:
-- 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).

D. ELECTRON 213
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

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.
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)

214 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

--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.
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.

D. ELECTRON 215
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

Una singola subtemp può avere una lunghezza massima di 240KB.


È 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.
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).

216 D. ELECTRON
CNC Z32 Programmazione Cap.6 - Funzioni di programmazione strutturata

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 217
Cap.6 - Funzioni di programmazione strutturata CNC Z32 Programmazione

218 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 Z32 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 219
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.

220 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 221
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

222 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 223
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

Parametro opzionale per la gestione della velocità di uscita


(MHR): fattore moltiplicativo della speed mandrino durante l'uscita dal foro. Nel caso di
maschiatura rigida i valori ammessi sono: 0.5 <= MHR <= 4. Valori diversi sono ignorati.

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

224 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 225
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

226 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 227
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 :

228 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 229
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

230 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 231
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

232 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 233
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).
È 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.

234 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 235
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

236 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 237
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

238 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 239
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

240 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 241
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

242 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 243
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

244 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 245
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).

246 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 247
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

248 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 249
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

250 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 251
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

252 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 253
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

254 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 255
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

256 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 257
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

258 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 259
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

260 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 261
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

262 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 263
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 sgro