Sei sulla pagina 1di 226

Ambiente OEM:

Descrizione della
Programmazione (DP)
Documentazione Utente

Valido per:

Prodotto: Kvara SW 162


dalla versione 3.14

Edizione: Giugno 2003


Codice: 91752.DP.1.I

Esa/Gv s.r.l.
15 via Zamboni, CP 43
41011 Campogalliano Modena Italy
tel. +39 059 851414 - fax +39 059 851313
http://www.esagv.it - E-mail: info@esagv.it
Restrizioni La riproduzione, la trasmissione, l’uso di questo documento o dei suoi contenuti sono
da ritenersi vietati senza l’espressa autorizzazione scritta di Esa/Gv. Tutti i diritti sono
riservati.
La modifica di questo documento (sia esso in forma elettronica che cartacea), anche se
autorizzata, invalida le garanzie specificate di seguito.

Garanzie È possibile che il prodotto offra delle prestazioni non descritte in questa
documentazione. Esa/Gv non si impegna a preservare queste funzionalità nelle nuove
versioni del prodotto ne a garantirne l’assistenza.

È stato effettuato un controllo affinché i contenuti di questo documento corrispondano al


prodotto documentato. Ciononostante non é escluso possano esistere delle discrepanze;
Esa/Gv non garantisce, perciò, la completa rispondenza e completezza di quanto scritto.
Le informazioni contenute in questo documento vengono periodicamente riviste e,
qualora necessario, emesse nuove edizioni.

Questo documento é stato redatto in parziale conformità alla norma ANSI/IEEE std
1063-1987 “IEEE Standard for software User Documentation”.

Edizioni Questo documento é soggetto a modifiche senza preavviso. Le modifiche possono


comportare la riedizione o la revisione del documento.
La riedizione implica la completa sostituzione del documento.
La revisione comporta delle sostituzioni/aggiunte/eliminazione di pagine del documento.
Ogni pagina é identificata dal codice del documento riportato in basso.

Note
MS-DOS® Marchio registrato da Microsoft Corporation.

ii 91752.DP.1.I Esa/Gv
L’elenco storico delle edizioni di questo documento é riportato nella tabella seguente:

Evoluzione del documento


Edizione Codice Documento Release Tipo di edizione
06/11/2000 91752.DP.0.I 0 Originale
04/06/2003 91752.DP.1.I 1 Revisione

Gestione modifiche
Release Capitoli - Pagine Descrizione

Esa/Gv 91752.DP.1.I iii


iv 91752.DP.1.I Esa/Gv
DP Descrizione della Programmazione

Descrizione della Programmazione

Note per il lettore ........................................................................................................... i


Spiegazione dei simboli ....................................................................................................................... ii
Convenzioni tipografiche .................................................................................................................... iii
Glossario ............................................................................................................................................ iv

1 Introduzione ............................................................................................................ 1.1


1.1 Definizioni ...................................................................................................................................1.1
1.2 Convenzioni usate nella descrizione della sintassi.....................................................................1.4

2 Programmazione Standard .................................................................................... 2.1


2.1 Impostazione di un programma..................................................................................................2.1
2.1.1 Un programma CN ........................................................................................................2.1
2.1.2 Inizio programma ..........................................................................................................2.2
2.1.3 Selezione modo ISO .....................................................................................................2.3
2.1.4 Fine programma............................................................................................................2.3
2.1.5 Numero blocco ..............................................................................................................2.4
2.1.6 Messaggi .......................................................................................................................2.4
2.2 Impostazione delle Condizioni di Lavorazione............................................................................2.5
2.2.1 Definizione di un punto..................................................................................................2.5
2.2.2 Quote aggiuntive per interpolazioni...............................................................................2.6
2.2.3 Programmazione assoluta delle quote..........................................................................2.7
2.2.4 Programmazione incrementale .....................................................................................2.8
2.2.5 Selezione unità di misura ..............................................................................................2.8
2.2.6 Selezione traslazione origine.........................................................................................2.9
2.2.7 Annulla traslazione origine ..........................................................................................2.10
2.2.8 Traslazione origine additiva.........................................................................................2.11
2.2.9 Selezione del piano di lavoro.......................................................................................2.12
2.2.10 Selezione del piano di contornatura e del verso della correzione in lunghezza ........2.13
2.3 Programmazione del moto .......................................................................................................2.14
2.3.1 Comando di movimentazione......................................................................................2.14
2.3.2 Traslazione in rapido ...................................................................................................2.15
2.3.3 Interpolazione lineare ..................................................................................................2.17
2.3.4 Interpolazione circolare ...............................................................................................2.18
2.3.5 Filettatura ....................................................................................................................2.20
2.3.6 Maschiatura.................................................................................................................2.22

Esa/Gv 91752.DP.1.I i
Descrizione della Programmazione DP

2.3.7 Arresto temporizzato ...................................................................................................2.23


2.3.8 Arresto esatto..............................................................................................................2.23
2.4 Interpolazioni speciali ...............................................................................................................2.24
2.4.1 Interpolazioni con assi ausiliari....................................................................................2.24
2.4.2 Programmazione cilindrica..........................................................................................2.25
2.5 Orientamento Mandrino............................................................................................................2.27
2.5.1 M19: Orientamento mandrino .....................................................................................2.27
2.5.2 Orientamento al volo del mandrino .............................................................................2.28
2.6 Programmazione della velocità assi e mandrino......................................................................2.29
2.6.1 Impostazione velocità di avanzamento .......................................................................2.29
2.6.2 Modalità feed continuo ................................................................................................2.31
2.6.3 Modalità feed continuo con look-ahead velocità .........................................................2.32
2.6.4 Selezione modalità di avanzamento............................................................................2.34
2.6.5 Impostazione velocità di rotazione mandrino ..............................................................2.35
2.6.6 Selezione modalità di rotazione mandrino ..................................................................2.36
2.6.7 Inverso del tempo........................................................................................................2.39
2.7 Programmazione assi polari.....................................................................................................2.41
2.7.1 Assi polari con limitazione di corsa .............................................................................2.41
2.7.2 Assi tondi.....................................................................................................................2.42
2.7.3 Selezione della direzione e del numero di giri.............................................................2.44
2.7.4 Programmazione delle velocità in presenza di assi polari...........................................2.48
2.8 Funzioni ausiliarie .....................................................................................................................2.50
2.8.1 Funzioni M e T.............................................................................................................2.50
2.9 Compensazione utensile ..........................................................................................................2.52
2.9.1 Correzione lunghezza utensile ....................................................................................2.52
2.9.2 Compensazione raggio utensile ..................................................................................2.53

3 Programmazione Avanzata .................................................................................... 3.1


3.1 Selezione modo Linguaggio di Automazione..............................................................................3.1
3.2 Programmazione parametrica ....................................................................................................3.2
3.2.1 Tipi di Variabili ...............................................................................................................3.2
3.2.2 Variabili globali di sistema.............................................................................................3.2
3.2.3 Variabili numeriche predefinite......................................................................................3.3
3.2.4 Assegnare una Variabile numerica predefinita .............................................................3.3
3.2.5 Variabili Simboliche .......................................................................................................3.4
3.2.6 Dichiarazione di Variabili Simboliche ............................................................................3.5
3.2.7 Assegnamento di Variabili Simboliche ..........................................................................3.7

ii 91752.DP.1.I Esa/Gv
DP Descrizione della Programmazione

3.2.8 Espressioni....................................................................................................................3.8
3.2.9 Utilizzo del #QNAN......................................................................................................3.17
3.3 Controllo del flusso di programmazione ...................................................................................3.18
3.3.1 Salto incondizionato ....................................................................................................3.18
3.3.2 Test .............................................................................................................................3.19
3.3.3 Test Condizionato .......................................................................................................3.20
3.3.4 Blocco WHILE .............................................................................................................3.21
3.3.5 Blocco REPEAT ..........................................................................................................3.23
3.3.6 Blocco FOR.................................................................................................................3.25
3.3.7 Interruzione di ciclo - BREAK ......................................................................................3.26
3.3.8 Ripetizione...................................................................................................................3.27
3.3.9 Livelli di annidamento: sottoprogrammi e cicli fissi .....................................................3.28
3.3.10 Inizio sottoprogramma (ciclo fisso) ...........................................................................3.29
3.3.11 Fine sottoprogramma (ciclo fisso).............................................................................3.31
3.3.12 Fine programma........................................................................................................3.31
3.3.13 Chiamata a sottoprogramma CFU (ciclo fisso utente) ..............................................3.31
3.3.14 Chiamata a sottoprogramma CFS (ciclo fisso di sistema)........................................3.33
3.3.15 Annulla la modalitá di un ciclo fisso ..........................................................................3.34
3.3.16 Chiamata aggancio in “C” .........................................................................................3.35
3.3.17 Uscita forzata con errore dall’interprete ....................................................................3.36
3.4 Funzioni speciali .......................................................................................................................3.37
3.4.1 Arresto pre-elaborazione.............................................................................................3.37
3.4.2 Visualizzazione messagi in fase con l’esecutore ........................................................3.37
3.4.3 Lettura e scrittura di un registro di memoria ...............................................................3.38
3.4.4 Impostare un Output fisico o logico.............................................................................3.39
3.4.5 Abilitazione maschiatura idraulica ...............................................................................3.40
3.4.6 Definizione Assi di Percorso........................................................................................3.41
3.4.7 Definizione Assi appartenenti al Canale......................................................................3.42
3.4.8 Correzione a Zone.......................................................................................................3.43
3.4.9 Abilitazione Esecuzione Simulata Programma ...........................................................3.44
3.4.10 Identificatore numero canale in esecuzione..............................................................3.44
3.4.11 Lettura quota di tastatura ..........................................................................................3.45
3.4.12 Lettura quota dell’asse ..............................................................................................3.46
3.5 Trasformazioni del sistema di riferimento ................................................................................3.47
3.5.1 PRS - Preset origine macchina ...................................................................................3.47
3.5.2 DEF - Ridefinizione run-time del nome degli assi .......................................................3.48
3.5.3 SYS - Riassegnazione run-time del nome degli assi ..................................................3.48

Esa/Gv 91752.DP.1.I iii


Descrizione della Programmazione DP

3.5.4 MIR - Lavorazione speculare ......................................................................................3.49


3.5.5 ROT – Rotazione del piano di contornatura................................................................3.52
3.5.6 SHF – Traslazione Origine ..........................................................................................3.53
3.5.7 MLV – Selezione del livello di trasformazione matriciale ............................................3.54
3.5.8 Definizione di un piano inclinato..................................................................................3.56
3.5.9 Abilitazione di un piano inclinato .................................................................................3.57
3.6 Geometria automatica del piano ..............................................................................................3.58
3.6.1 Smusso fra due tratti lineari ........................................................................................3.58
3.6.2 Raccordo fra due tratti lineari ......................................................................................3.59
3.7 Funzioni ausiliare del Correttore utensile .................................................................................3.60
3.7.1 Gestione Sovrametallo................................................................................................3.60
3.7.2 Attacco e distacco in tangenza....................................................................................3.61
3.7.3 Gestione Vita ed Usura Utensile .................................................................................3.63
3.8 Correttore utensile tridimensionale...........................................................................................3.64
3.8.1 TWI: Impostazione mandrino ......................................................................................3.64
3.8.2 THD: Impostazione portautensile................................................................................3.64
3.8.3 Convenzione per gli angoli di rotazione.......................................................................3.65
3.8.4 Orientamento tramite Coordinate assi polari...............................................................3.65
3.8.5 Orientamento tramite Angoli di Eulero ........................................................................3.66
3.8.6 Orientamento tramite Imbardata-Beccheggio-Rollio (RPY) ........................................3.68
3.8.7 Orientamento tramite componenti di un vettore parallelo all’asse dell’utensile...........3.70
3.8.8 Compensazione raggio utensile tramite componenti di un vettore .............................3.72
3.8.9 Determinazione automatica del piano di appartenenza e lavorazione con asse in
tangenza ....................................................................................................................3.73
3.8.10 Discriminazione tra i taglienti intercambiabili di un utensile ......................................3.77
3.8.11 Compensazione profondità di lavorazione lungo l’asse dell’utensile ........................3.79
3.8.12 Compensazione profondità di lavorazione lungo il raggio dell’utensile .....................3.80
3.9 Strategie di attacco al pezzo.....................................................................................................3.81
3.9.1 Definizioni....................................................................................................................3.81
3.9.2 Attacco al pezzo lungo l’asse e/o lungo il raggio dell’utensile .....................................3.82
3.9.3 Distacco dal pezzo lungo l’asse e/o lungo il raggio dell’utensile .................................3.85
3.9.4 Compensazione dipendente da una sezione dell’utensile lungo la traiettoria nel suo
punto di attacco..........................................................................................................3.89
3.9.5 Compensazione dipendente da una sezione dell’utensile lungo la traiettoria nel suo
punto di distacco ........................................................................................................3.93
3.10 Feed Control...........................................................................................................................3.94
3.10.1 Impostazioni o Modifica dei parametri per il controllo automatico delle velocità.......3.94
3.11 Posizionamenti Sincroni ed Asincroni ad Assi indipendenti ...................................................3.96

iv 91752.DP.1.I Esa/Gv
DP Descrizione della Programmazione

3.11.1 Posizionamenti sincroni ad assi indipendenti............................................................3.96


3.11.2 Posizionamenti asincroni ad assi indipendenti..........................................................3.97
3.11.3 Orientamento parallelo del mandrino ........................................................................3.98
3.12 Modifica dei parametri di un asse...........................................................................................3.99
3.12.1 Abilitazione Errore di Inseguimento...........................................................................3.99
3.12.2 Impostazione tempo di accelerazione di un asse .....................................................3.99
3.12.3 Impostazione tempo di decelerazione di un asse ...................................................3.100
3.12.4 Impostazione tempo di decelerazione di emergenza di un asse ............................3.100
3.12.5 Impostazione velocità massima dell`asse...............................................................3.101
3.12.6 Impostazione tempo di rampa ad ‘S’ di un asse .....................................................3.102
3.12.7 Impostazione del jerk di un asse.............................................................................3.103
3.13 Modifica dei parametri di interpolazione ...............................................................................3.104
3.13.1 Impostazione tempo di accelerazione di interpolazione..........................................3.104
3.13.2 Impostazione tempo di decelerazione di interpolazione..........................................3.104
3.13.3 Impostazione velocità massima di interpolazione ...................................................3.105
3.13.4 Impostazione tempo di rampa ad ‘S’ di interpolazione............................................3.105
3.13.5 Impostazione del jerk in interpolazione ...................................................................3.106

4 Cicli Fissi di Sistema (CFS).................................................................................... 4.1


4.1 Macro Istruzione G192 - generazione di un reticolo di punti ......................................................4.2
4.2 Macro Istruzione G193 - generazione di punti distribuiti su un arco di circonferenza ................4.5
4.2.1 Ciclo Fisso G81: foratura ..............................................................................................4.7
4.2.2 Ciclo Fisso G83: foratura con scarico o rottura truciolo ................................................4.9
4.2.3 Ciclo Fisso G84: maschiatura .....................................................................................4.12
4.2.4 Ciclo Fisso G86: Alesatura..........................................................................................4.13
4.2.5 Ciclo Fisso G88: foratura di pareti distanziate ............................................................4.15
4.2.6 Ciclo Fisso G133: Filettatura.......................................................................................4.16

5 Parametri Utensili ................................................................................................... 5.1


5.1 Definizioni ...................................................................................................................................5.1
5.2 Diagramma ER (Entity Relationship) delle entità di un centro di lavoro di cui vengono gestite la
geometria e la cinematica ..........................................................................................................5.3
5.2.1 Legenda ........................................................................................................................5.3
5.2.2 Diagramma....................................................................................................................5.4
5.3 Altre definizioni ...........................................................................................................................5.5
5.4 Descrittore testa .........................................................................................................................5.6
5.4.1 Struttura dati..................................................................................................................5.6
5.4.2 Descrizione geometria e attuatori .................................................................................5.7

Esa/Gv 91752.DP.1.I v
Descrizione della Programmazione DP

5.2 Diagramma ER (Entity Relationship) delle entità di un centro di lavoro di cui vengono gestite la
geometria e la cinematica ..........................................................................................................5.3
5.2.1 Legenda ........................................................................................................................5.3
5.2.2 Diagramma....................................................................................................................5.4
5.3 Altre definizioni ...........................................................................................................................5.5
5.4 Descrittore testa .........................................................................................................................5.6
5.4.1 Struttura dati..................................................................................................................5.6
5.4.2 Descrizione geometria e attuatori .................................................................................5.7
5.5 Descrittore portautensile...........................................................................................................5.13
5.5.1 Struttura dati................................................................................................................5.13
5.5.2 Descrizione geometria ................................................................................................5.13
5.6 Descrittore utensile o tagliente di un utensile ...........................................................................5.15
5.6.1 Struttura dati................................................................................................................5.15
5.6.2 Descrizione geometria ................................................................................................5.15
5.6.3 Descrizione altri dati tecnologici ..................................................................................5.17
5.6.4 Logica di gestione .......................................................................................................5.18
5.6.5 Utensili guasti ..............................................................................................................5.18

FINE SOMMARIO

vi 91752.DP.1.I Esa/Gv
DP Note per il lettore

Note per il lettore

Generalità Le informazioni contenute in questo documento sono applicabili solamente alle


versioni software riportate nel frontespizio.

È possibile che non tutte le funzioni esplicabili dal prodotto siano descritte nella
presente documentazione; in questi casi Esa/Gv non é, comunque, obbligata a garantire
queste funzioni né a preservarle nelle future versioni.

Scopo Lo scopo di questo documento è aiutare l’operatore durante la programmazione delle


lavorazioni.

Utenti Questo documento contiene informazioni rivolte a:


ù tecnico con buona conoscenza della tecnologia della lavorazione e del processo
produttivo. Conoscenze di base dell’informatica.

Uso del documento Il documento è suddiviso in capitoli che descrivono le modalità di programmazione, il
linguaggio e concetti di base sulle lavorazioni.

Notifica dei problemi Per gli eventuali problemi che si dovessero presentare durante lo studio di questo
documento vi preghiamo di contattare Esa/Gv.

Esa/Gv 91752.DP.1.I i
Note per il lettore DP

Spiegazione dei simboli

A fianco del testo possono comparire simboli grafici. Questi vengono impiegati per
mettere in evidenza informazioni di particolare rilevanza.

Attenzione
Questo simbolo viene impiegato qualora la mancata osservanza di opportune
precauzioni possa provocare lievi danni materiali e alle persone.

Pericolo
Questo simbolo appare qualora la mancata osservanza di opportune precauzioni o
l’effettuazione di manovre errate possa provocare danni gravi alle persone e/o ai
materiali.

Importante
Questo simbolo appare nella documentazione per segnalare la presenza di informazioni
di particolare importanza. La lettura di queste sezioni é da considerarsi indispensabile
per la buona comprensione del documento.

Opzione
Questo simbolo appare ad indicare sezioni del documento che descrivono funzionalità
o parti presenti solo su opzione. L’utilizzo di prestazioni in opzione deve essere
concordata con il costruttore della macchina.

Costruttore
Questo simbolo appare ad indicare sezioni del documento riservate al costruttore della
macchina.

Parola chiave
Questo simbolo appare a segnalare sezioni del documento che descrivono funzionalità
ad accesso tutelato da chiavi d’accesso software.

CN
Questo simbolo appare a segnalare sezioni del documento che descrivono funzionalità
disponibili solo su CN e non su PC.

PC
Questo simbolo appare a segnalare sezioni del documento che descrivono funzionalità
disponibili solo su PC e non su CN.

ii 91752.DP.1.I Esa/Gv
DP Note per il lettore

Convenzioni tipografiche

Per facilitare l’individuazione delle informazioni in questo documento si fa uso di


particolari convenzioni tipografiche. Tali convenzioni vengono illustrate di seguito.

Tastiera e video Vengono adottate le seguenti convenzioni.


ù I nomi dei tasti serigrafati vengono evidenziati in grassetto e racchiusi tra parentesi
quadre. Se Il nome del tasto è preceduto da “pulsante” si fa riferimento a un tasto
della pulsantiera.
− [ENTER]. Identifica il tasto che riporta la dicitura ENTER.
− [+] indica il tasto + della tastiera mentre pulsante [+] indica il tasto + della
pulsantiera.
ù I nomi dei tasti funzione vengono evidenziati in grassetto corsivo e racchiusi tra
parentesi quadre.
− [Menu Plc]. Identifica il tasto funzione che riporta la dicitura Menu Plc.
ù I riferimenti ai campi e/o messaggi presenti sul video vengono scritti utilizzando il
grassetto corsivo.
ù Il testo specifico che deve essere digitato dall’utente é scritto in sottolineato.
− Se il manuale indica “digitare ok ” si deve digitare esattamente il testo “ok”.
ù Tasti DIREZIONE o DIREZIONALI é il nome collettivo delle frecce SU, GIÙ,
SINISTRA e DESTRA.
ù La pressione, in sequenza, di serie di tasti viene scritta separando con il carattere
“>“ gli identificatori dei tasti da premere.
− [Manuale] > [START]. Descrive la pressione, in sequenza, dei tasti [Manuale]
e [START].
ù La pressione contemporanea di più tasti viene denotata separando con il carattere
“+” gli identificatori dei tasti stessi.
− à] Descrive la pressione contemporanea dei tasti [SHIFT] e [à
[SHIFT] + [à à].

Testo Vengono adottate le seguenti convenzioni.


ù Viene impiegato il corsivo per evidenziare termini specialistici.
ù Viene impiegato il grassetto per porre in evidenza vocaboli di particolare
importanza.

Esa/Gv 91752.DP.1.I iii


Note per il lettore DP

Glossario

CNC Sigla che abbrevia Computerized Numerical Control ed indica l’apparecchiatura di


governo della macchina, cioè il dispositivo elettronico tramite il quale vengono
programmati i cicli di lavorazione, vengono movimentati gli assi ecc...
Corrisponde ad una delle apparecchiature il cui funzionamento è descritto da questo
manuale.

BCR Sigla che abbrevia BarCode Reader ed indica il dispositivo che legge una etichetta
stampata con codifica a barre.

NC Rappresenta lo stato Normalmente Chiuso di un ingresso o di un uscita.

NA Rappresenta lo stato Normalmente Aperto di un ingresso o di un uscita.

FINE PREFAZIONE

iv 91752.DP.1.I Esa/Gv
DP Introduzione

1 Introduzione
In questo capitolo verranno introdotti concetti fondamentali che stanno alla base della
programmazione del CNC.
Si utilizzeranno esempi che contengono istruzioni del linguaggio di programmazione
con l’unico scopo di evidenziarne alcuni aspetti, mentre la spiegazione di ogni istruzione
è rimandata al capitolo ad essa dedicato.

1.1 Definizioni

Programma Un programma è una sequenza di blocchi, o linee di programma che specificano le


diverse fasi della lavorazione.

Blocco Un blocco è composto da una o più parole e termina con il carattere line feed (tasto
[RETURN])

Parola Una parola è composta da un codice letterale e da un numero, non separati da spazi

Esempio di un blocco costruito da tre parole:


N100 X100.00 Y100.00

I caratteri N, X ed Y identificano il tipo delle parole del blocco.

Esempio:

Blocco

G17 G2 X200 R60


Parola Parola
Parola Parola

Parola

X200
Tipo di
Parola Campo

Figura 1.1 - Composizione di un Blocco e di una Parola

Esa/Gv 91752.DP.1.I 1.1


Introduzione DP

Non tentare di eseguire la sequenza di comandi dell’esempio precedente sulla


macchina. Tutti i dati specificati sono puramente fittizi.

Esecuzione di un L’esecuzione di un programma equivale ad eseguire i blocchi che lo compongono


programma nell’ordine stabilito per realizzare una o più lavorazioni.

Flusso di esecuzione Il flusso di esecuzione è la sequenza con cui le istruzioni di un programma o di una lista
vengono eseguite. Nei casi più semplici l’esecuzione avviene sequenzialmente partendo
dalla prima istruzione e terminando con l’ultima (flusso sequenziale); in altri casi il
flusso può essere alterato ripetendo o condizionando l’esecuzione di alcune istruzioni
(flusso non sequenziale).

Asse Un asse è un insieme di meccanica ed elettronica grazie al quale il CN può controllare la


posizione di un elemento della macchina rispetto ad un punto di riferimento.

Per individuare un punto nello spazio tridimensionale sono necessari tre assi ortogonali
tra loro, convenzionalmente definiti X, Y, e Z (assi principali).
L’asse Z è generalmente parallelo all’asse di rotazione del mandrino.
È possibile definire i seguenti assi:

X Asse principale
Y Asse principale
Z Asse principale
U Asse ausiliario parallelo ad X
V Asse ausiliario parallelo ad Y
W Asse ausiliario parallelo ad Z
A Asse rotativo con asse di rotazione parallelo a X
B Asse rotativo con asse di rotazione parallelo a Y
C Asse rotativo con asse di rotazione parallelo a Z

La quota di un asse è sempre riferita ad un punto (origine) e può essere impostata in:
ù Millimetri o pollici per assi lineari
ù Gradi per assi rotativi

Origine Un’origine è un punto nello spazio a cui fanno riferimento le quote degli assi.
A seguito del ciclo di taratura, che viene normalmente effettuato ad ogni accensione del
CNC, gli assi vengono riferiti all’origine macchina, ai fini della programmazione di un
pezzo è però possibile riferire le quote all’origine pezzo, che risulterà traslata rispetto
all’origine macchina di un valore contenuto nei parametri origini in base alla posizione
in cui si trova il sistema di bloccaggio del pezzo.

1.2 91752.DP.1.I Esa/Gv


DP Introduzione

Funzione modale Una funzione di programmazione (o indirizzo) si dice modale se il suo effetto si propaga
anche nei blocchi successivi, fino alla attivazione di un’altra funzione mutuamente
esclusiva con la prima.
Una funzione non modale, i cui effetti si esplicano soltanto nel blocco in cui viene
programmata, si definisce anche autocancellante.

Funzione di default Una funzione di programmazione modale si dice di default se essa viene attivata
automaticamente all’inizio del programma.

Esa/Gv 91752.DP.1.I 1.3


Introduzione DP

1.2 Convenzioni usate nella descrizione della sintassi

Nella descrizione della sintassi di ogni istruzione si farà ricorso ad una notazione
convenzionale:

Testo maiuscolo, ad Indica il nome di un indirizzo all’interno di un comando.


es.: Y, R,I, J, ...

Quota Indica un campo in cui si può introdurre:


ù Un valore numerico con segno e decimali che viene usato per indicare una qualsiasi
coordinata o distanza. Variando il parametro che indica l'unità di visualizzazione,
viene automaticamente convertito da millimetri a pollici o viceversa. In pollici
vengono aggiunte due cifre decimali rispetto alla rappresentazione in millimetri;
ù Una variabile (vedi “Concetti di programmazione”, sezione “Programmazione
parametrica”).

Angolo Indica un campo in cui si introduce:


ù Un’angolo espresso in gradi/frazioni decimali di grado (da 0.00 a 359.99). Non è
possibile utilizzare il sistema sessagesimale. Nel caso che si introduca un valore
superiore o uguale a 360 oppure negativo questo verrà normalizzato cioè, ricondotto
in un’escursione da 0 a 359.99.
ù Una variabile.

FINE CAPITOLO

1.4 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2 Programmazione Standard

2.1 Impostazione di un programma

2.1.1 Un programma CN
Un programma CN o part-program è una sequenza di blocchi che definiscono la
lavorazione di un pezzo (part) su una macchina utensile a controllo numerico.

INIZIO PROGRAMMA

NBLOCCO PAROLE COMMENTO

NBLOCCO PAROLE COMMENTO

NBLOCCO PAROLE COMMENTO

... ...

FINE PROGRAMMA

Esa/Gv 91752.DP.1.I 2.1


Programmazione Standard DP

2.1.2 Inizio programma

Sintassi commento %numero_programma

Descrizione Il blocco di inizio programma deve precedere tutti gli altri blocchi del programma
stesso.

Commento Stringa composta da una serie di caratteri alfanumerici


che rappresenta una breve descrizione del programma.
È obbligatorio inserire un commento prima del simbolo
%.
Numero_programma Numero che identifica univocamente il programma,
deve corrispondere al numero del part-program.

Esempio
FILETTO 3/8 GAS %1200
....
....
corpo del programma
....
....
M30

Vedi anche Inizio sottoprogramma ( “Programmazione avanzata”).

2.2 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.1.3 Selezione modo ISO

Sintassi MODE = ISO


MODE = AUTO (default)

Descrizione Assegnando alla variabile di sistema MODE il valore ISO, viene selezionato il modo di
funzionamento che permette la scrittura di un part-program secondo la normativa
ISO/DIS 6983 (I e II parte) Draft International Standard, edizione Settembre 1982 (I
parte) e Luglio 1988 (II parte).

In questa modalità non è possibile usufruire delle prestazioni rese disponibili dal
Linguaggio di Automazione.

In modalità di programmazione ISO i commenti vengono codificati con le parentesi


tonde seguite da un asterisco.

Esempio
(* INSERT WORKING PROGRAM OF THE PIECE)
N5 G17 (*PIANO LAVORO X-Y)
N15 G0 B90 (*RUOTA TAVOLA CNC A 90 GRADI )
N20 T1 M6 (*RECALLS TOOL/SPINDLE )
(*PUNTA DIAMETRO 10 )
N30 D1 (*CORRETTORE ASSOCIATO ALL'UTENSILE)
N40 G0 X0 Y0
N50 Z125

Vedi anche

2.1.4 Fine programma

Sintassi M2 oppure M30

Descrizione Il blocco di fine programma provoca l'arresto dell'esecuzione del programma.

Esempio
FILETTO 3/8 GAS %1200
....
....
corpo del programma
....
....
M30

Vedi anche Inizio programma.

Esa/Gv 91752.DP.1.I 2.3


Programmazione Standard DP

2.1.5 Numero blocco

Sintassi Nnumero_blocco

Descrizione Il numero del blocco è una parola opzionale che, se presente, deve precedere le altre
parole del blocco.
Il numero del blocco non ha altra utilità che quella di costituire un riferimento univoco
al blocco in cui si trova.

Numero_blocco Numero che identifica univocamente il blocco.

Esempio
COMMENTO %1
N10 X100 Y100 (trasla al punto P1(X100,Y100))
N20 Y200 (trasla al punto P2(X100,Y200))
G04 F1
....
....
M30

2.1.6 Messaggi

Sintassi (testo)

Descrizione Se è attivato il modo di programmazione ISO, il testo contenuto entro le parentesi tonde
() viene visualizzato

testo Sequenza di caratteri alfanumerici.

Esempio
N100 (ERRORE: PREMERE RESET)
N110 G04 F1
N120 JMP 110 (loop infinito in attesa del reset)

2.4 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.2 Impostazione delle Condizioni di Lavorazione

2.2.1 Definizione di un punto

Sintassi Xquota Yquota Zquota Uquota Vquota Wquota Aquota Bquota Cquota

Descrizione Il codice di un asse seguito da una quota definisce la posizione del punto rispetto
all’asse stesso.
Per definire un punto è richiesto che le parole relative a tutti gli assi esistenti siano nello
stesso blocco.
Qualora venga omessa la parola relativa ad un asse esistente, si assume che la posizione
del punto rispetto a tale asse sia la stessa del punto precedente.

Xquota
Yquota
Zquota
Uquota
Vquota
Wquota
Aquota
Bquota
Cquota

Esempio
X100 Y100 (trasla al punto P1(X100,Y100))
Y200 (trasla al punto P2(X100,Y200))

Vedi anche Comando di movimentazione.

Esa/Gv 91752.DP.1.I 2.5


Programmazione Standard DP

2.2.2 Quote aggiuntive per interpolazioni

Sintassi Iquota (valore lungo l’asse X)


Jquota (valore lungo l’asse Y)
Kquota (valore lungo l’asse Z)
Rquota (raggio di una circonferenza)

Descrizione Le quote aggiuntive vengono utilizzate per definire alcuni dati dimensionali caratteristici
delle interpolazioni.
I codici I, J e K vengono utilizzati per definire le coordinate del centro nelle
interpolazioni circolari e il passo nelle filettature e maschiature.
Il codice R viene utilizzato soltanto per definire il raggio nelle interpolazioni circolari.

Iquota
Jquota
Kquota
Rquota

Esempio Vedi esempi nelle funzioni.

Vedi anche Interpolazione circolare, Filettatura, Machiatura.

2.6 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.2.3 Programmazione assoluta delle quote

Sintassi G90

Tipo di funzione Modale, di default, mutuamente esclusiva con G91.

Descrizione Con la programmazione assoluta le quote sono espresse rispetto all’origine degli assi,
relativa al sistema di riferimento attivo.

Esempio
G90 X200 Y300 (trasla al punto P1(X200,Y300)
Y700 (trasla al punto P2(X200,Y700)
X1000 (trasla al punto P3(X1000,Y700)
Y300 (trasla al punto P4(X1000,Y300)
X200 (trasla al punto P4(X200,Y300)

Vedi anche Definizione di un punto, Programmazione incrementale.

y
G91
G90
G90

G91

G91 G91 x
G90
G90

Figura 2-1 - Programmazione incrementale e assoluta

Esa/Gv 91752.DP.1.I 2.7


Programmazione Standard DP

2.2.4 Programmazione incrementale

Sintassi G91

Tipo di funzione Modale, mutuamente esclusiva con G90.

Descrizione Con la programmazione incrementale le quote sono espresse rispetto all’ultimo punto
raggiunto.
Le quote I, J, K, si riferiscono anch’esse all’ultima quota raggiunta dai relativi assi X, Y,
Z.

Esempio
X100 Y100 trasla al punto P1(X200,Y300)
G91 Y100 trasla al punto P2(X100,Y200)
X100 trasla al punto P3(X200,Y200)
Y-100 trasla al punto P4(X200,Y100)

Vedi anche Definizione di un punto, Programmazione assoluta.

2.2.5 Selezione unità di misura

Sintassi G70 (quote in pollici)


G71 (quote in millimetri)

Tipo di funzione Modale, default impostabile da parametro macchina.

Descrizione Con le funzioni di selezione dell’unità di misura è possibile impostare le quote del
programma secondo il sistema metrico o imperiale.
Vengono così interpretate come espresse in pollici le quote che seguono gli indirizzi
degli assi ad esclusione di quelli rotativi (A,B,C), le quote che esprimono il centro di un
cerchio e il valore del raggio.

Esempio
X100 Y100 (trasla al punto P1(X100,Y100))
G70 G91 Y3 (trasla al punto P2(X100,Y100+3*25.4))

Vedi anche Definizione di un punto.

2.8 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.2.6 Selezione traslazione origine

Sintassi G54 per selezione traslazione origine 1


G55 per selezione traslazione origine 2
G56 per selezione traslazione origine 3
G57 per selezione traslazione origine 4

Tipo di funzione Modale, mutuamente esclusiva con G53.

Descrizione La traslazione origine permette di selezionare una tra le quattro origini pezzo impostabili
dall’operatore dall’interfaccia utente. Nei blocchi successivi a quello di programmazione
dell’origine pezzo, i valori posizione, i movimenti dell’utensile si riferiscono al punto
zero attualmente selezionato.
Può essere effettuata solo sugli assi cartesiani XYZ.

Esempio
X100 Y100 (trasla al punto P1(X100,Y100))
G54 Y200 (trasla al punto P2(Xinalterato,Y200) con
riferimento all’origine pezzo 1)

Vedi anche Definizione di un punto, Annulla traslazione origine.


y

5
G54

G5

G56

Figura 2.2 - Programmazione origini pezzo

Esa/Gv 91752.DP.1.I 2.9


Programmazione Standard DP

2.2.7 Annulla traslazione origine

Sintassi G53

Tipo di funzione Autocancellante, di default, mutuamente esclusiva con G54, G55, G56, G57.

Descrizione La programmazione di questa funzione in un blocco provoca l'esclusione delle funzioni


di "spostamento origine" e di "compensazione utensile". Le quote programmate sono
perciò considerate rispetto all’origine macchina.
Questa funzione è impiegata per portarsi su punti fissi della macchina, indipendenti dal
riferimento pezzo come ad esempio la posizione del magazzino utensili.

Esempio
G54 X100 Y100 (trasla al punto P1(X100,Y100) con
riferimento all’origine del pezzo)
G53 X1000 Y2000 (trasla al punto P2(X1000,Y2000) con
riferimento all’origine macchina)
X100 Y200 (trasla al punto P3(X100,Y200) con riferimento
all’origine del pezzo)

Vedi anche Definizione di un punto, Selezione traslazione origine.

2.10 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.2.8 Traslazione origine additiva

Sintassi G58 Xquota Yquota .....per traslazione origine additiva 1


G59 Xquota Yquota .....per traslazione origine additiva 2

Tipo di funzione Modale.

Xquota
Yquota
Zquota

Descrizione La traslazione origine additiva permette di sommare all’origine pezzo, ulteriori


spostamenti origine, in modo tale da definire delle origini locali in alcuni punti del
pezzo.
I valori di traslazione sono definiti, per gli assi della terna principale (XYZ) o per quelli
della terna ausiliaria (UVW), dai valori impostati nello stesso blocco.
Per annullare la traslazione additiva è necessario impostare i valori di traslazione pari a
zero.

Esempio
X100 Y100 (trasla al punto P1(X100,Y100))
G58 Y50 (sposta l’origine a P2(X0, Y50))
X100 Y100 (trasla al punto P3(Xinalterato,Y+50))
G58 Y0 (ripristina l’origine pezzo)

Vedi anche Definizione di un punto, Selezione traslazione origine.

Esa/Gv 91752.DP.1.I 2.11


Programmazione Standard DP

2.2.9 Selezione del piano di lavoro

Sintassi G17 (selezione piano XY, compensazione lunghezza utensile su asse Z)


G18 (selezione piano ZX, compensazione lunghezza utensile su asse Y)
G19 (selezione piano YZ, compensazione lunghezza utensile su asse X)

Tipo di funzione Modale.


Default: G18 se non esiste l’asse Y (tornio), altrimenti G17.

Descrizione La selezione del piano di lavoro definisce:


ù il piano su cui viene realizzato l’arco di circonferenza in una interpolazione
circolare,
ù l’asse su cui viene effettuata la compensazione lunghezza utensile,
ù il piano per la correzione del raggio utensile.

Y
G2
G2
G17
G19 G3

G3

X
G2

G18
G3
Z

Figura 2-3 - Piani di lavoro

Esempio
X100 Y100 (trasla al punto P1(X100,Y100))
G17 G2 X200 R60 (effettua un arco di circonferenza sul
piano XY)

Vedi anche Interpolazione circolare,, Compensazione utensile.

2.12 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.2.10 Selezione del piano di contornatura e del verso della correzione in lunghezza

Sintassi G16 <nome I asse> <nome II asse> <nome III asse> <verso correz. in lungh.>

Tipo di funzione Modale.

Descrizione Seleziona il piano di contornatura (ovvero dove viene eseguita la correzione raggio
utensile) attraverso la scelta del primo e del secondo asse. E` possibile selezionare
qualsiasi piano di contornatura.
Inoltre con la G16 è possibile selezionare il verso e l’asse della correzione in lunghezza
tramite la scelta del III asse e il relativo segno (‘+’ o ‘-’). Il terzo asse può essere scelto
liberamente fra gli assi cartesiani configurati. Non è quindi possibile eseguire la
correzione utensile in lunghezza direttamente su un asse ausiliario UVW o polare ABC.

Le prestazioni che fornisce la G16 sono, quindi:


ù definire il piano della correzione raggio (che è anche il piano di lavorazione).
ù definire l’asse e il verso di correzione in lunghezza;

G17 à G16 X Y Z+
G18 à G16 Z X Y+
G19 à G16 Y Z X+

Esempio
G16 U Z Y+

Esa/Gv 91752.DP.1.I 2.13


Programmazione Standard DP

2.3 Programmazione del moto

2.3.1 Comando di movimentazione

Sintassi Xquota Yquota Zquota Uquota Vquota Wquota Aquota Bquota Cquota

Descrizione La semplice definizione del punto di arrivo costituisce la programmazione di una


traslazione degli assi della macchina al punto impostato.
Le modalità con cui viene effettuata questa traslazione dipendono dalle selezioni
effettuate.

X, Y, Z, U, V, W quota Coordinata lineare (in mm) del punto di arrivo.


A, B, C quota Coordinata angolare (in gradi) del punto di arrivo.

Esempio
X100 Y100 (trasla al punto P1(X100,Y100))
Y200 (trasla al punto P2(X100,Y200))

Vedi anche Definizione di un punto, Traslazione in rapido.

2.14 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.3.2 Traslazione in rapido

Sintassi G0

Tipo di funzione Modale, di default, mutuamente esclusiva con G1, G2, G3, G33, G63.

Descrizione La modalità di traslazione in rapido permette di raggiungere il punto di arrivo nel più
breve tempo possibile, compatibilmente con i limiti definiti nei parametri macchina.
I movimenti in rapido vengono utilizzati per raggiungere le posizioni iniziali della
lavorazione, per raggiungere i punti di cambio utensile, ecc.
La velocità di percorrenza espressa con il codice F viene ignorata.
Se è abilitata l’opzione Rapido ad assi indipendenti ( parametri macchina) ciascun asse
coinvolto nella movimentazione, si muove alla sua velocità massima ed in modo
autonomo. Se l’opzione non è abilitata, gli assi si muovono in modo interpolato alla
massima velocità, che rispetti le caratteristiche di ciascuno degli assi coinvolti.

Esa/Gv 91752.DP.1.I 2.15


Programmazione Standard DP

Per gli assi con limitazioni di corsa A, B, C il modulo di conteggio non viene
considerato.
Per gli assi tondi (ovvero senza limitazioni di corsa) A, B, C valgono le seguenti
considerazioni:
ù la quota target, presa in modulo 360, determina l’angolo da raggiungere;
ù la direzione è determinata in modo da raggiungere la quota target con il tragitto
minore possibile (max. 180°); se quota target e quota precedente sono uguali l’asse
rimane fermo; se la differenza è 180° la direzione è, per convenzione, tale da non
passare per lo 0; se la quota target è 180° e la quota precedente è 0°, o viceversa, il
posizionamento avviene passando per 90°;
ù Il forzamento del verso di percorrenza si ottiene sommando o sottraendo 360°;
ù La percorrenza di uno o più giri si ottiene sommando o sottraendo 360° per il
numero di giri + 1. Per realizzare un giro completo, quindi, si programma la stessa
quota alla quale l’asse si trova + o - 720°.

Esempio
G0 X100 Y100 (trasla in rapido al punto P1(X100,Y100))
Y200 (trasla in rapido al punto P2(X100,Y200))
.
G0 A120.000
G0 A120.000 (* asse fermo a 120 *)
G0 A120.000
G0 A200.000 (* asse avanti fino a 200, 80 percorsi *)
G0 A120.000
G0 A40.000 (* asse indietro fino a 40, 80 percorsi *)
G0 A40.000
G0 A320.000 (* asse indietro fino a 320, 80 percorsi
*)
G0 A320.000

Vedi anche Comando di movimentazione, Interpolazione lineare

2.16 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.3.3 Interpolazione lineare

Sintassi G1

Tipo di funzione Modale, mutuamente esclusiva con G0, G2, G3, G33, G63.

Descrizione La modalità di interpolazione lineare permette di raggiungere il punto di arrivo (entro la


soglia di tolleranza fine) percorrendo una traiettoria lineare alla velocità impostata con
la funzione F.
Qualora nella interpolazione siano coinvolti degli assi rotativi, che per loro natura non
possono seguire un percorso rettilineo, questi partono e arrivano contemporaneamente
agli assi lineari.
Per gli assi con limitazioni di corsa A, B, C il modulo di conteggio non viene
considerato.
Per gli assi tondi (ovvero senza limitazioni di corsa) A, B, C valgono le seguenti
considerazioni:
ù la quota target, presa in modulo 360, determina l’angolo da raggiungere;
ù la direzione é determinata dal fatto che la posizione angolare precedente sia
inferiore o superiore alla quota target, consideratone il segno; se sono uguali l’asse
rimane fermo;
ù la percorrenza di uno o più giri si ottiene sommando o sottraendo 360° per il
numero di giri. Per realizzare un giro completo, quindi, si programma la stessa
quota alla quale l’asse si trova + o - 360°.

Esempio
G0 X100 Y100 (trasla in rapido al punto P1(X100,Y100))
G1 X200 Y200 F1000 (raggiunge il punto P2(X100,Y200) con
moto rettilineo e velocità pari a 1000 mm/min)

G0 A120.000
G1 A120.000 (* asse fermo a 120 *)
G1 A200.000 (* asse avanti fino a 200 *)
G0 A120.000
G1 A-160.000 (* asse indietro fino a 200 *)
G0 A120.000
G1 A60.000 (* asse indietro fino a 60 *)
G0 A120.000
G1 A420.000 (* asse avanti fino a 60 *)

G0 A0.000
G0 A120.000
G1 A480.000 (* asse 1 giro avanti e torna a 120 *)
G0 A120.000

Vedi anche Comando di movimentazione, Traslazione in rapido, Interpolazione circolare,


Impostazione velocità di avanzamento.

Esa/Gv 91752.DP.1.I 2.17


Programmazione Standard DP

2.3.4 Interpolazione circolare

Sintassi G2 (senso di percorrenza orario)


G3 (senso di percorrenza antiorario)

Tipo di funzione Modale, mutuamente esclusiva con G0, G1, G33, G63.

Descrizione La modalità di interpolazione circolare permette di raggiungere il punto di arrivo (entro


la soglia di tolleranza fine) percorrendo un arco di circonferenza sul piano di lavoro
selezionato, alla velocità impostata con la funzione F.
L’arco di circonferenza viene definito, oltre che dal punto di arrivo, dalle coordinate del
centro (codici I, J e K) oppure dal valore del raggio (codice R).
Le coordinate del centro sono assolute o incrementali rispetto al punto di inizio dell’arco
in base alla modalità selezionata.
Qualora venga programmato il punto finale fuori dal piano di percorrenza dell’arco di
circonferenza, l’interpolazione diventerà elicoidale.
Quando si programma il raggio, per realizzare un arco di circonferenza superiore a 180°
è necessario impostarlo con segno negativo.
Non è possibile effettuare G2-G3 con più di quattro assi correntemente selezionati come
assi di percorso.

Esempio
G0 X0.0 Y0.0 (trasla in rapido al punto P1(X0,Y0))
G2 F100 X100 Y0 I50 J0 (Raccordo circolare in senso orario
al punto P2(X100, Y0) con centro C(X50, Y0))
G3 X0 Y0 R50 (Raccordo circolare come il precedente ma
in senso antiorario e con la definizione del
raggio (50) anziché del centro)
G2 X100 Y0 Z100 I50 J0 (Stesso arco di circonferenza, con
cambio di piano
(elicoidale))

2.18 91752.DP.1.I Esa/Gv


DP Programmazione Standard

P2

P1
G3 -R

G3

Figura 2.4 - Programmazione circolare specificando il raggio positivo o negativo

Vedi anche Quote aggiuntive per interpolazione, Comando di movimentazione, Selezione del
piano di lavoro.

Esa/Gv 91752.DP.1.I 2.19


Programmazione Standard DP

2.3.5 Filettatura

Sintassi G33 Zquota Kpasso (cilindrica)


G33 Zquota Xquota Kpasso (conica)

Tipo di funzione Modale, mutuamente esclusiva con G0, G1, G2, G3, G63.

Descrizione Esegue una filettatura cilindrica, conica o piana dal punto attuale al punto di arrivo
programmato, con il passo programmato.
Non consentita se è attiva una delle seguenti funzioni: G95, G96.
Nella filettatura il mandrino deve avere il trasduttore di posizione.
La velocità di avanzamento di ciascun asse dipende dalla velocità del mandrino
(impostata dal codice S) e dal passo di filettatura.
L'angolo del mandrino di partenza della filettatura è sempre pari a zero.

Zquota punto finale in direzione longitudinale


Kpasso passo costante di filettatura
Xquota punto finale in direzione radiale

Esempio
S200 M3 (avviamento mandrino)
G0 X20 Z100 (avvicinamento al pezzo)
G33 Z70 K2 (filettatura cilindrica per 30 mm con
passo 2)
G0 X30 (allontanamento dal pezzo)

Vedi anche Quote aggiuntive per interpolazioni, Maschiatura.

2.20 91752.DP.1.I Esa/Gv


DP Programmazione Standard

x
K

z
Z

Z z

Figura 2.5 - Parametri geometrici filettatura G33

Esa/Gv 91752.DP.1.I 2.21


Programmazione Standard DP

2.3.6 Maschiatura

Sintassi G63 Zquota Kpasso

Tipo di funzione Modale, mutuamente esclusiva con G0, G1, G2, G3, G33.

Descrizione Esegue una maschiatura rigida dal punto attuale al punto di arrivo programmato, con il
passo programmato.
Nella maschiatura il mandrino deve avere il trasduttore di posizione.
La velocità di rotazione del mandrino utilizzata per la maschiatura è quella impostata
sotto il codice S. La velocità di avanzamento in direzione longitudinale dipende dalla
velocità di rotazione del mandrino e dal passo di maschiatura.
Se il passo viene impostato con segno positivo il mandrino effettua una rotazione
destrorsa in caso di quote asse Z crescenti e sinistrorsa con quote asse Z decrescenti;
viceversa con passo di segno negativo.
Zquota punto finale
Kpasso

Esempio
M19 (orientamento mandrino)
S200 (selezione velocità mandrino)
G0 Z100 (avvicinamento al pezzo)
G63 Z70 K-2 (maschiatura destrorsa per 30 mm con passo 2)
G4 F0.2 (sosta di 2 decimi)
G63 Z100 K-2 S1000(estrazione utensile dal pezzo)
G0 Z200 (allontanamento dal pezzo)

Vedi anche Quote aggiuntive per interpolazioni, Filettatura.

2.22 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.3.7 Arresto temporizzato

Sintassi G4 Ftempo

Tipo di funzione Autocancellante, mutuamente esclusiva con G0, G1, G2, G3, G33, G63.

Descrizione La funzione di arresto temporizzato provoca una sosta pari al tempo programmato in
secondi nel parametro F.

Ftempo [sec]

Esempio
G4 F2.5 (sosta di 2.5 secondi)
X100 Y200 (trasla al punto P2(X100,Y200))

Vedi anche Arresto esatto..

2.3.8 Arresto esatto

Sintassi G9

Tipo di funzione Autocancellante.

Descrizione La funzione di arresto esatto forza il raggiungimento del punto di arrivo entro la soglia
di tolleranza fine (programmata dai parametri macchina) nella modalità di traslazione in
rapido, in cui normalmente verrebbe utilizzata la soglia grossolana per abilitare il
passaggio al blocco successivo.

Esempio
G0 G9 X100 Y200 (trasla al punto P1(X100,Y200) con soglia
fine)

Vedi anche Traslazione in rapido, Arresto temporizzato.

Esa/Gv 91752.DP.1.I 2.23


Programmazione Standard DP

2.4 Interpolazioni speciali

2.4.1 Interpolazioni con assi ausiliari

Descrizione E` possibile interpolare con gli assi ausiliari UVW così come viene fatto con gli assi
cartesiani XYZ (v. G0, G1, G2, G3, G33, G63, G133).
Come per gli assi cartesiani è poi possibile eseguire correzione utensile raggio e in
lunghezza, sovrametallo (SVR/SVL), programmazione inverso del tempo (G93) e
selezione del sistema di riferimento (G58-G59).

Per decidere quali assi sono coinvolti nella correzione utensile in raggio, ad esempio,
viene testata prima la presenza degli assi cartesiani corrispondenti al piano selezionato e
in mancanza di essi viene testata la presenza degli assi ausiliari corrispondenti per poi
andare a testare la presenza degli assi rotativi.
Se ad esempio è attivo il piano G17, e sono correntemente attivi (cioè sono nella
maschera degli assi selezionati, non sono stati esclusi tramite CON[]=0) gli assi
YUVWA, verranno selezionati per la correzione utensile raggio gli assi UY.
La priorità con cui vengono scelti è la seguente:
assi cartesiani XYZ => assi ausiliari UVW => assi polari ABC.

Esempio
F100
D1
CON[A] = 0
G16 U Y Z+
G0 U0 Y0 Z0
G2 U200 Z30 R100
G0 U0 Y0 Z0
D0
G0 U0 Y0 Z0
D1
G16 W X Y+
G0 W0 X0 Y0
G2 W200 X0 Y30 R100
G0 W0 X0 Y0

2.24 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.4.2 Programmazione cilindrica

Descrizione E` possibile interpolare con gli assi ausiliari lineari XYZ UVW e contemporaneamente
con gli assi rotativi ABC (v. G0, G1, G2, G3).
Per affrontare il problema delle interpolazioni circolari con un asse lineare e uno
circolare, si è seguito un approccio del tipo “mm = gradi”: si imposta la quota dell’asse
rotativo in gradi ma, essi, vengono interpretati come mm dal CNC. In altre parole le
quote degli assi polari sono gradi e sono anche mm sul campo se l’operatore ha
calcolato la quota in gradi in modo corretto (ovvero moltiplicando la quota in mm per
57.299 e dividendo per il raggio del cilindro).
Per evitare una bocciatura della lavorazione da parte del CNC (che controlla che le
informazioni della G02 portino ad avere un cerchio) bisogna, cioè, avere sempre la
quota in gradi (che lo slave interpreta come mm) compatibile con quella in mm.
Questo approccio comporta che, se le informazioni numericamente combaciano ma la
conversione da mm a gradi fatta dall’operatore non è stata fatta correttamente, viene
interpolato un arco di ellisse.
Inoltre non deve essere noto il raggio del cilindro e, quindi, non è necessario entrare in
una modalità particolare per effettuare la programmazione cilindrica: è sufficiente
interpolare gli assi ABC come se fossero cartesiani. Si noti che il raggio del cilindro
deve comunque essere noto all’operatore che esegue i calcoli.
Infine, questa impostazione, permette di rispettare il modulo 360 gradi del cilindro, in
quanto si impostano dei gradi nell’asse polare.

Esempio
F1000
D1
G16 B Y X+
G42
G01 Y0 B0
G01 Y120
B30
G93 F2 G02 Y90 B60 R30
G01 Y70
G03 Y60 B70 R10
G01 B150
G03 Y70 B190 R75
G01 Y110 B230
G02 Y120 B270 R75
G01 B360
G40
G58 Y200
G41
G94 F1000
G01 Y0 B0
G01 Y120
B30
G93 F2 G02 Y90 B60 R30
G94 F1000
G01 Y70
G03 Y60 B70 R10
G01 B150
G03 Y70 B190 R75
G01 Y110 B230
G02 Y120 B270 R75
G01 B360
G40

Esa/Gv 91752.DP.1.I 2.25


Programmazione Standard DP

Vedi Anche Programmazione del moto, Comando di movimentazione, Traslazione in rapido,


Interpolazione lineare, Interpolazione circolare.

2.26 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.5 Orientamento Mandrino

2.5.1 M19: Orientamento mandrino

Sintassi M19 Sangolo

Tipo di funzione Autocancellante.

Descrizione Esegue l’orientamento del mandrino. L’angolo di orientamento viene impostato con il
codice S o, in assenza di questo, è definito nei dati macchina.
Per effettuare l’orientamento il mandrino deve essere dotato del trasduttore di posizione.
La velocità di rotazione del mandrino utilizzata per l’orientamento è definita nei
parametri.
È un comando di posizionamento a loop chiuso, corrisponde ad un posizionamento di un
asse polare.
Sangolo

Esempio
M19 S45(orientamento mandrino a 45 gradi)

Vedi Anche Orientamento al volo del mandrino.

Esa/Gv 91752.DP.1.I 2.27


Programmazione Standard DP

2.5.2 Orientamento al volo del mandrino

Sintassi M19 Sangolo

Descrizione La modalità orientamento al volo, consente di effettuare la commutazione da loop aperto


a loop chiuso. Partendo da una situazione in cui il mandrino sta ruotando a loop aperto è
possibile un posizionamento senza doverlo arrestare.

Fase 1 Il PLC azzera il bit di Rotazione.


Fase 2 Il mandrino decelera fino alla Vdec.
Fase 3 Il processo assume l’eventuale accelerazione programmata e decelera fino a
Vstop.
Fase 3 Vstop viene mantenuta fino ad avere un errore di posizione tale da generare la
tensione di uscita attuale.
Fase 4 Si chiude l’anello ed esegue il posizionamento.
* Nella versione attuale Vstop coincide con Vdec (SP_VELM19 quindi non si
ha il cambio di accelerazione della Fase 3).

Vdac

Vmax

Vdec
Vstop

Chiusura anello T

Figura 2.6 - Controllo sulla velocità del mandrino in caso di orientamento al volo

Esempio
S1500 M3 ;Rotazione Loop Aperto
M19 S45.0 ;Orientamento a Loop Chiuso orientamento al volo

S1500 M3 ;Rotazione Loop Aperto


M5 ;Stop Mandrino
M19 S45.0 ;Orienta mandrino Modalità precedente

Vedi Anche M19: Orientamento mandrino.

2.28 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.6 Programmazione della velocità assi e mandrino

2.6.1 Impostazione velocità di avanzamento

Sintassi Fvelocità

Tipo di funzione Modale.

Descrizione Il codice F consente l’impostazione della velocità di percorrenza della traiettoria per le
funzioni di interpolazione.
La velocità viene normalmente espressa in mm/min, nel caso di traiettoria percorsa da
assi rotativi l’unità di misura è il grado/min, esiste una modalità di lavoro (G95) in cui la
velocità viene espressa in mm/giro mandrino.
Con uno o più assi cartesiani e nessun asse polare si programma la velocità sulla
traiettoria descritta dagli assi cartesiani in mm/min. (in modo G94).

Con un asse polare e nessun asse cartesiano si programma la velocità dell’asse polare in
gradi/min. (in modo G94).
Con più assi polari e nessun asse cartesiano si programma sempre in gradi/min. (in
modo G94) considerando, però, che la velocità agisce su di un vettore n-dimensionale,
le cui componenti sulle varie dimensioni sono gli angoli percorsi dagli assi polari.
Se si desidera che due assi polari A e B spazzino angoli rispettivamente di 30° (∆A) e
40° (∆B) impiegando 0.20min. (t), si calcola prima il modulo del vettore, in questo caso
bidimensionale (S, angolo spazzato in gradi):

2 2 2 2
S ∆A ∆B 30 40 50

quindi, si divide per il tempo (t) per ottenere la velocità angolare (V) in gradi/min:
S 50
V 250.0
t 0.20

Con assi polari e assi cartesiani contemporaneamente si programma la velocità sulla


traiettoria descritta dagli assi cartesiani in mm/min (in modo G94).
Gli assi polari interpolano linearmente nello stesso tempo impiegato dai cartesiani.

Questo utilizzo è caratteristico delle applicazioni che prevedono:


ù un utensile in tangenza coassiale con l’asse di imbardata (es.: taglio del vetro non in
sagoma con testina con asse numerico in tangenza);
ù una componente di velocità dell’asse polare non predominante (trascurabile rispetto
a quella di avanzamento sugli assi cartesiani).

Se ci si trova in una delle seguenti situazioni:


ù lo spazio percorso dagli assi X ed Y è nullo o troppo piccolo per poter modulare la
velocità degli assi polari con l’accuratezza richiesta;

Esa/Gv 91752.DP.1.I 2.29


Programmazione Standard DP

ù è necessario computare esternamente la velocità su vettore n-dimensionale, con


dimensioni incommensurabili tra loro (spazi lineari con angoli);
utilizzare il modo “programmazione della velocità come inverso del tempo“ G93.

Esempi
G0 X100 Y100 (trasla al punto P1(X100,Y100))
G1 Y200 F500 (lineare al punto P2(X100,Y200) con velocità
500 mm/min)

G00 X0.000 Y0.000


G01 X30.000 Y40.000 F25.0
G00 A0.000 (*** UN SOLO ASSE POLARE ***)
G01 A30.000 F3000 (velocità asse polare 3000 gradi/min)

G00 A0.000 B0.000 (*** PIÙ ASSI POLARI ***)


G01 A30.000 B40.000 F250.0 (vedi esempio pag precedente)

G00 X0.000 Y0.000 A0.000 (*** ASSI CARTESIANI E POLARI ***)


G01 X30.000 Y40.000 A20.000 F25.0 (velocità in mm/min)

G00 A0.000 B0.000 (*** INVERSO DEL TEMPO ***)


G93 F250.0 G01 A30.000 B40.000 (posizionamento in 1/250
sec)

Vedi anche Interpolazione lineare, Inverso del tempo, Arresto temporizzato.

2.30 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.6.2 Modalità feed continuo

Sintassi G64 (abilitazione)


G61 (disabilitazione)

Tipo di funzione Modale, di default disabilitata.

Descrizione Nella modalità feed continuo si effettua il passaggio da un blocco al successivo senza
forzare l’arresto degli assi.
Esistono tuttavia alcuni comandi che interrompono il ciclo continuo e forzano l’arresto
degli assi al termine del blocco in cui sono programmati, ad esempio le funzioni G4, G9,
M e T.
La disabilitazione del feed continuo, implica un arresto forzato degli assi già al termine
del blocco che programma G61.

Esempio
G0 X100 Y100 (trasla al punto P1(X100,Y100))
G1 G64 Y200 F500 (lineare al punto P2(X100,Y200) senza
arresto)
G2 G61 X200 R50 (arco di circonferenza al punto P3(X200,
Y200) con arresto)

Vedi anche Impostazione velocità di avanzamentom, Modalità feed continuo con look-ahead
velocità.

Esa/Gv 91752.DP.1.I 2.31


Programmazione Standard DP

2.6.3 Modalità feed continuo con look-ahead velocità

Descrizione Da parametri macchina è possibile abilitare il look-ahead velocità


[Parametri CanaleàOpz:Look Ahead Velocità].
Se il look ahead sulla velocità è abilitato in modalità feed continuo, il profilo di velocità
si raccorda nel tratto corrente alla velocità del tratto successivo ovvero:

Vout[K] = Vmax[K+1]

L’avvicinamento al pezzo è di solito determinato da un posizionamento G0, mentre la


lavorazione nel pezzo è eseguita da una interpolazione, G1,G2,G3. In modalità feed
continuo il passaggio da una velocità all’altra determina un transitorio all’interno del
pezzo talvolta indesiderato. Abilitando il look-ahead sulla velocità è possibile anticipare
la transizione, in modo tale che all’interno del pezzo la lavorazione avvenga a velocità
costante.

Vdac

look ahead velocitá


disabilitato
VG0

VG1 look ahead


velocitá abilitato

G0 G1 T

pezzo

Figura 2.7 - Transitorio della velocità con e senza velocità

2.32 91752.DP.1.I Esa/Gv


DP Programmazione Standard

Esempio
;LOOK AHEAD ABILITATO
;******* REPORT *******
F10000 G64
G0 Y500 X100 ;Vmaxà833333 Voutà166666
G1 X1000 ;Vmaxà166666 Voutà166666
G61
G1 X1000 ;Vmaxà166666 Voutà0

;LOOK AHEAD DISABILITATO


;******* REPORT *******
F10000 G64
G0 Y500 X100 ;Vmaxà833333 Voutà833333
G1 X1000 ;Vmaxà166666 Voutà166666
G61
G1 X1000 ;Vmaxà166666 Voutà0

Vedi anche Modalità feed continuo.

Esa/Gv 91752.DP.1.I 2.33


Programmazione Standard DP

2.6.4 Selezione modalità di avanzamento

Sintassi G94 (avanzamento in mm/min)


G95 (avanzamento in mm/giro)

Tipo di funzione Modale, di default avanzamento in mm/min.

Descrizione La velocità di percorrenza della traiettoria viene definita dal codice F e può essere
assoluta (in mm/min) o relativa alla velocità di rotazione del mandrino (in mm/giro).
Se il mandrino non è dotato di trasduttore di posizione, nella modalità avanzamento in
mm/giro viene utilizzata la velocità di rotazione teorica.

Programmando G95, che consente di interpretare i valori di F come mm/giro, si può


condizionare la velocità degli assi lineari alla velocità di rotazione del mandrino. Se
aumenta la velocità di rotazione del mandrino aumenta la velocità degli assi lineari.

La velocità vettoriale è determinata dalla seguente relazione

V = S rpm ∗ F [ mm min]
dove
Srpm è il numero di giri al minuto del mandrino
F avanzamento al giro impostato da G95

Esempio
G0 X100 Y100 (trasla al punto P1(X100,Y100))
S1000 M3 (avviamento mandrino)
G95 F2.1 (abilita avanzamento in mm/giro )
G1 Y200 (lineare al punto P2(X100,Y200) con velocità
legata alla velocità di rotazione del mandrino à
1000 giri/min *2.1mm/giro= 2100 mm/min)

Vedi anche Impostazione velocità di avanzamento, Selezione modalità di rotazione mandrino.

2.34 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.6.5 Impostazione velocità di rotazione mandrino

Sintassi Svelocità

Tipo di funzione Modale.

Descrizione Il codice S consente l’impostazione della velocità di rotazione del mandrino.


La velocità viene normalmente espressa in giri/min, ma esiste una modalità di lavoro in
cui la velocità viene espressa come velocità di taglio in m/min (G96).

Velocità velocità di rotazione, giri/min o m/min.

Esempio
S500 M3 (avviamento mandrino a 500 rpm in senso orario)

Vedi anche Selezione modalità di rotazione mandrino.

Esa/Gv 91752.DP.1.I 2.35


Programmazione Standard DP

2.6.6 Selezione modalità di rotazione mandrino

Sintassi G96 (velocità di taglio costante)


G97 (velocità di rotazione costante)

Tipo di funzione Modale, di default velocità di rotazione costante G97.

Descrizione Con questa funzione è possibile mantenere costante la velocità di taglio del materiale
ottimizzando così la lavorazione.
La velocità di rotazione del mandrino è definita dal codice S e può essere assoluta (in
giri/min) o relativa alla posizione dell’asse lineare a cui è associato, ad esempio X
(velocità di taglio in m/min).
Questa funzione è caratteristica delle macchine da tornitura, in cui la posizione dell’asse
X determina il diametro del pezzo nel punto di lavoro.

La velocità del mandrino viene naturalmente limitata al valore massimo consentito.


Quando viene disabilitata la modalità velocità di taglio costante la velocità di rotazione
del mandrino viene mantenuta pari all’ultimo valore raggiunto.

Selezionando G96 il valore di S viene interpretato come m/min, e affinché la velocità di


taglio si mantenga costante, la velocità di rotazione del mandrino deve essere modulata
dal raggio della circonferenza da percorrere, per esempio se il diametro si riduce, il
numero di giri del mandrino aumenta.

S G 96 [ m min]
V MAND [rpm] =
2πR[m]

dove
R rappresenta la quota dell’asse lineare,
SG96 rappresenta la velocità di taglio costante impostata da G96

Dalla relazione mostrata si osserva come la velocità di rotazione del mandrino sia
inversamente proporzionale alla quota R.

riduzione dei
giri mandrino

aumento dei
giri mandrino

Figura 2.8 - G96 Variazione della velocità in funzione del raggio di tornitura

2.36 91752.DP.1.I Esa/Gv


DP Programmazione Standard

È possibile combinare questa modalità di funzionamento con G95 che abilita la


programmazione di F in mm/giro, così da garantire la percorrenza di aree costanti in
intervalli di tempo costanti.

S'rpm
V'
V
Srpm

A Y
A'

Figura 2.9 - G95-G96 Lavorazione ad Area Costante

Osservando la figura, si nota che impostando la velocità di taglio costante, vale la


seguente relazione:

Srpm > S’rpm

Se si programma G95, si lega in modo proporzionale la velocità di avanzamento V ad S


da cui risulta che:

V> V’

In queste condizioni in un certo intervallo di tempo ∆t, l’area lavorata è data da:

A=2πr × V∆t = 2πr × f(Srpm)∆t = 2πr × f(g(1/r))∆t


À=2πR × V’∆t = 2πR × f(S’rpm)∆t =2πR × f(g(1/R))∆t

dove f(S)=K × S e S= g(1/r)= K’ × 1/r

A=À= 2π × cost

Esempio
(* attivazione velocità di taglio costante G96)

G0 X100 Y100 (*X raggio)


S500 M3 (*mandrino a 500 rpm)
G96 S100 (*velocità di taglio cost 100 mt/min
mandrino:159 rpm à X=100)
G4 F1
G1 X50 Y50 F1000 (*mandrino arriva a 318 rpm à X=50 )
G97
G4 F1
S500 (*mandrino a 500 rpm )

Esa/Gv 91752.DP.1.I 2.37


Programmazione Standard DP

G4 F1
M5 (*arresta mandrino)

(* attivazione contemporanea di G95 e G96)

G0 X100 Y100
S500 M3 (*mandrino a 500 rpm )
G96 S100 (*mandrino a 159 rpm )
G4 F5
G95 F1 (*provvisorio 159 mm/min --> Vmax=2650 Hz)
G1 X50 (*mandrino arriva a 318 rpm velocità318 mm/min
Vmax=5300Hz)
G1 Y50 (*velocità 318 mm/min --> Vmax=5300Hz)
G97 G94
G4 F1
S500 (*mandrino a 500 rpm )
G4 F1
M5
M30

Vedi anche Impostazione velocità di rotazione mandrino.

2.38 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.6.7 Inverso del tempo

Sintassi G93 F < inverse_feed >

Tipo di funzione Modale, esclusiva con G94 e G95, all’accensione del CNC è disabilitata.

1
Descrizione Dove inverse_feed, che si esprime in min , è il rapporto:

V
F=
L

V è una velocità espressa in una qualsiasi unità di misura, sull’unità di tempo.


L è la lunghezza del tratto secondo la stessa unità di misura.

da cui l’unità di misura di F risulta essere:

 u 
 
 min  1
= = min −1
u min

Seleziona, per il blocco corrente, la programmazione della velocità come inverso (o


reciproco) del tempo.

Casistica Si usa il modo “programmazione della velocità come reciproco del tempo“ attivato con
G93, ad esempio:
ù quando si programmano sia assi polari che rettangolari nello stesso blocco e lo
spazio percorso dagli assi X ed Y é nullo o troppo piccolo per poter modulare la
velocità degli assi polari con l’accuratezza richiesta;
ù quando è necessario computare esternamente la velocità come vettore n-
dimensionale avente dimensioni incommensurabili tra loro (es.: spazi ed angoli).

Esempio A è l’asse di imbardata di un mandrino e determina un grosso spostamento lineare della


punta della utensile a contatto con il materiale anche in presenza di angoli spazzati
piccoli. Si deve programmare una lavorazione che coinvolge gli assi X, Y, Z ed A, con
opportuna velocità di avanzamento sul materiale. L’avanzamento sugli assi lineari è
estremamente limitato, tanto che non è possibile regolare con precisione la velocità
fisica del quarto asse (è, quindi, quella impressa alla punta dell’utensile) mediante la
classica programmazione in mm/min.. Un tale avanzamento può essere stato estrapolato
da un programma CAD/CAM, tramite opportuni calcoli che hanno richiedono la
considerazione dello spazio percorso dalla punta dell’utensile e della cinematica della
macchina.

Per questo ci si avvale della programmazione della velocità inversa del tempo (G93).

Esa/Gv 91752.DP.1.I 2.39


Programmazione Standard DP

Gli assi debbano muoversi da:

X0.000 Y0.000 Z0.000 A0.000

a:

X0.010 Y0.010 Z0.023 A100.000

interpolando linearmente.

Si conosce lo spazio percorso dalla punta dell’utensile durante l’interpolazione (diversa


dallo spazio percorso dagli assi cartesiani X, Y e Z):

400 mm

Si conosce la velocità lineare di avanzamento dalla punta dell’utensile durante


l’interpolazione:

1600 mm/min

Come velocità in G93 si programmerà:

1600
F= =4
400

(il reciproco è il tempo di percorrenza, 0.25min)

Si avrà:

G00 X0.000 Y0.000 Z0.000 A0.000


G93 F4 G01 X0.010 Y0.010 Z0.023 A100.000 (posizionamento in
¼ di secondo)

G94 F1000 (ristabilisce la velocità in mm/min)

2.40 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.7 Programmazione assi polari

2.7.1 Assi polari con limitazione di corsa


Le quote espresse sono assolute, nell’intervallo dalla quota minima a quella massima
comprese. Il comportamento, per quando riguarda lo spazio percorso, è simile a quello
di un asse cartesiano.

Ad es.:

G0 C-90.000
G0 C270.000 ;L’asse si muove avanti di 360 gradi

G0 C315.000
G1 F5000 C45.000 ;L’asse si muove indietro di 270 gradi

G0 C45.000
G1 F3000 C315.000 ;L’asse si muove avanti di 270 gradi

Il comportamento descritto è modificabile tramite alcuni operatori che consentono di


condizionare la direzione ed il numero di giri dell’asse polare. Vedere la sezione
Selezione della direzione e del numero di giri. Si noterà, in tale sezione, che il
comportamento descritto equivale a quello dell’operatore AC.

Esa/Gv 91752.DP.1.I 2.41


Programmazione Standard DP

2.7.2 Assi tondi

Funzionamento in La quota programmata determina, in funzione del modulo di conteggio, la posizione da


rapido raggiungere e non la quota assoluta dell’asse. Se la quota non appartiene all’intervallo
[0..mod) viene ricondotta a tale intervallo.

La direzione é quindi determinata in modo da raggiungere la posizione programmata


con la percorrenza minore possibile. Se la posizione programmata e quella a cui l’asse
si trova sono uguali l’asse rimane fermo.

Ad es.:

G0 C-90.000
G0 C270.000 ;L’asse non si muove

G0 C315.000
G0 C45.000 ;L’asse si muove avanti di 90 gradi

G0 C45.000
G0 C315.000 ;L’asse si muove indietro di 90 gradi

Il comportamento descritto è modificabile tramite alcuni operatori che consentono di


condizionare la direzione ed il numero di giri dell’asse polare. Vedere la sezione
Selezione della direzione e del numero di giri. Si noterà, in tale sezione, che il
comportamento descritto equivale a quello dell’operatore DC.

Funzionamento in Se si programma una quota nell’intervallo [0..mod) l’asse raggiungerà la posizione


feed richiesta senza passare per lo 0. Ad es.:

G0 C-90.000
G1 F5000 C270.000 ;L’asse non si muove

G0 C315.000
G1 F5000 C45.000 ;L’asse si muove indietro di 270 gradi

G0 C45.000
G1 F5000 C315.000 ;L’asse si muove avanti di 270 gradi

É anche possibile programmare una quota esterna all’intervallo [0..mod), senza alcuna
limitazione. In tal caso, lo spazio da percorrere viene determinato considerando la quota
programmata e la posizione corrente, solo quest’ultima nell’intervallo [0..mod). Dopo
l’esecuzione del blocco, la quota programmata sarà ricondotta all’intervallo [0..mod) e
costituirà la nuova posizione corrente; questo significa che programmare per un asse
tondo quote esterne all’intervallo [0..mod) ne causerà sempre la movimentazione,
indipendentemente dalla posizione corrente.

Ad es.:

2.42 91752.DP.1.I Esa/Gv


DP Programmazione Standard

G0 C45.000
G1 F5000 C405.000 ;L’asse si muove avanti di 360 gradi
G1 C405.000 ;L’asse si muove ancora avanti di 360 gradi
G1 C45.000 ;L’asse rimane fermo
G1 C-315.000 ;L’asse si muove indietro di 360 gradi
G1 C-315.000 ;L’asse si muove ancora indietro di 360 gradi
G1 C45.000 ;L’asse rimane fermo

Il comportamento sopra descritto è modificabile tramite alcuni operatori che consentono


di condizionare la direzione ed il numero di giri dell’asse polare. Vedere la sezione
Selezione della direzione e del numero di giri. Si noterà, in tale sezione, che il
comportamento sopra descritto equivale a quello dell’operatore AC.

Esa/Gv 91752.DP.1.I 2.43


Programmazione Standard DP

2.7.3 Selezione della direzione e del numero di giri


Sono disponibili alcuni operatori per condizionare la direzione ed il numero di giri
dell’asse polare. Questi operatori sono implementati come una serie di funzioni che
producono dei valori che devono assegnati all’indirizzo degli assi polari di cui si
richiede la movimentazione condizionata. Ad es.:

G0 C=DC(45.000)
G1 F5000 C=ACP(1,45.000)

Questi operatori hanno lo stesso effetto sui blocchi eseguiti in rapido ed in feed.

Posizionamento <asse_polare>=IC(<quota_incrementale>)
incrementale (IC)

Es.:

C=IC(-25.000)

L’asse viene mosso in modo da percorrere lo spazio definito da <quota_incrementale>,


in senso positivo o negativo a seconda del segno. La quota raggiunta sarà data dalla
somma algebrica della quota corrente con <quota_incrementale>, ricondotta
all’intervallo [0..mod) in caso di asse tondo.

Posizionamento <asse_polare>=AC(<quota_assoluta>)
assoluto (AC)

Es.:

C=AC(45.000)

In caso di asse con limitazione di corsa, <quota_assoluta> é espressa nell’intervallo


dalla quota minima a quella massima comprese. Il comportamento, per quando riguarda
lo spazio percorso, è simile a quello di un asse cartesiano. Ad es.:

C=AC(-90.000)
C=AC(270.000) ;L’asse si muove avanti di 360 gradi

C=AC(315.000)
C=AC(45.000) ;L’asse si muove indietro di 270 gradi

C=AC(45.000)
C=AC(315.000) ;L’asse si muove avanti di 270 gradi

In caso di asse tondo, se si programma un valore di <quota_assoluta> nell’intervallo


[0..mod) l’asse raggiungerà la posizione richiesta senza passare per lo 0. Ad es.:

C=AC(-90.000)
C=AC(270.000) ;L’asse non si muove

C=AC(315.000)
C=AC(45.000) ;L’asse si muove indietro di 270 gradi

C=AC(45.000)
C=AC(315.000) ;L’asse si muove avanti di 270 gradi

2.44 91752.DP.1.I Esa/Gv


DP Programmazione Standard

Sempre in caso di asse tondo, è anche possibile programmare un valore di


<quota_assoluta> esterno all’intervallo [0..mod), senza alcuna limitazione. In tal caso,
lo spazio da percorrere viene determinato considerando <quota_assoluta> e la
posizione corrente, solo quest’ultima nell’intervallo [0..mod). Dopo l’esecuzione del
blocco, <quota_assoluta> sarà ricondotta all’intervallo [0..mod) e costituirà la nuova
posizione corrente; questo significa che programmare per un asse tondo una funzione
AC con valori di <quota_assoluta> esterni all’intervallo [0..mod) ne causerà sempre la
movimentazione, indipendentemente dalla posizione corrente.

Ad es.:

C=AC(45.000)
C=AC(405.000) ;L’asse si muove avanti di 360 gradi
C=AC(405.000) ;L’asse si muove ancora avanti di 360 gradi
C=AC(45.000) ;L’asse rimane fermo
C=AC(-315.000);L’asse si muove indietro di 360 gradi
C=AC(-315.000);L’asse si muove ancora indietro di 360 gradi
C=AC(45.000) ;L’asse rimane fermo

Posizionamento <asse_polare>=DC(<posizione_assoluta>)
assoluto con la minor
percorrenza (DC)

Es.:

C=DC(45.000)

<posizione_assoluta> determina, in funzione del modulo di conteggio, la posizione da


raggiungere e non la quota assoluta dell’asse. Se <posizione_assoluta> non appartiene
all’intervallo [0..mod) viene ricondotta a tale intervallo.

La direzione é quindi determinata in modo da raggiungere la posizione programmata


con la percorrenza minore possibile. Se la posizione programmata e quella a cui l’asse
si trova sono uguali l’asse rimane fermo.

Ad es.:

C=DC(-90.000)
C=DC(270.000) ;L’asse non si muove

C=DC(315.000)
C=DC(45.000) ;L’asse si muove avanti di 90 gradi

C=DC(45.000)
C=DC(315.000) ;L’asse si muove indietro di 90 gradi

In caso di asse con limitazione di corsa (modulo 360):

C=AC(765.000) ;La posizione dell’asse risulterà 45 gradi


(765 MOD 360)
C=DC(315.000) ;L’asse si muove indietro di 90 gradi e
raggiunge la posizione di 675

Esa/Gv 91752.DP.1.I 2.45


Programmazione Standard DP

Posizionamento <asse_polare>=ACP(<posizione_assoluta>)
assoluto in verso
positivo (ACP)
<asse_polare>=ACP(<n_giri>,<posizione_assoluta>)

Es.:

C=ACP(45.000)
C=ACP(2,45.000)

<posizione_assoluta> determina, in funzione del modulo di conteggio, la posizione da


raggiungere e non la quota assoluta dell’asse. Se <posizione_assoluta> non appartiene
all’intervallo [0..mod) viene ricondotta a tale intervallo.

La posizione richiesta viene raggiunta muovendo l’asse in senso positivo. Se la


posizione programmata e quella a cui l’asse si trova sono uguali l’asse rimane fermo.

Ad es.:

C=DC(-90.000)
C=ACP(270.000) ;L’asse non si muove

C=DC(315.000)
C=ACP(45.000) ;L’asse si muove avanti di 90 gradi

C=DC(45.000)
C=ACP(315.000) ;L’asse si muove avanti di 270 gradi

In caso di asse con limitazione di corsa (modulo 360):

C=AC(765.000) ;La posizione dell’asse risulterà 45 gradi


(765 MOD 360)
C=ACP(315.000);L’asse si muove avanti di 270 gradi e
raggiunge la posizione di 1035

È possibile esprimere un numero di giri addizionale <n_giri>. Nel caso venga


programmato, la <posizione_assoluta> raggiunta sarà la stessa, ma allo spazio
normalmente percorso per raggiungerla in verso positivo verrà aggiunto il numero di giri
richiesto.

C=DC(-90.000)
C=ACP(1,270.000) ;L’asse si muove avanti di 360 gradi

C=DC(315.000)
C=ACP(1,45.000) ;L’asse si muove avanti di 450 gradi

C=DC(45.000)
C=ACP(1,315.000) ;L’asse si muove avanti di 630 gradi

In caso di asse con limitazione di corsa (modulo 360):

C=AC(765.000) ;La posizione dell’asse risulterà 45 gradi (765 MOD 360)


C=ACP(1,315.000) ;L’asse si muove avanti di 630 gradi e raggiunge la
posizione di 1395

2.46 91752.DP.1.I Esa/Gv


DP Programmazione Standard

Posizionamento <asse_polare>=ACN(<posizione_assoluta>)
assoluto in verso
negativo (ACN)
<asse_polare>=ACN(<n_giri>,<posizione_assoluta>)

Es.:

C=ACN(45.000)
C=ACN(2,45.000)

<posizione_assoluta> determina, in funzione del modulo di conteggio, la posizione da


raggiungere e non la quota assoluta dell’asse. Se <posizione_assoluta> non appartiene
all’intervallo [0..mod) viene ricondotta a tale intervallo.

La posizione richiesta viene raggiunta muovendo l’asse in senso negativo. Se la


posizione programmata e quella a cui l’asse si trova sono uguali l’asse rimane fermo.

Ad es.:

C=DC(-90.000)
C=ACN(270.000) ;L’asse non si muove

C=DC(315.000)
C=ACN(45.000) ;L’asse si muove indietro di 270 gradi

C=DC(45.000)
C=ACN(315.000) ;L’asse si muove indietro di 90 gradi

In caso di asse con limitazione di corsa (modulo 360):

C=AC(765.000) ;La posizione dell’asse risulterà 45 gradi (765 MOD 360)


C=ACN(315.000);L’asse si muove indietro di 90 gradi e raggiunge la
posizione di 675

È possibile esprimere un numero di giri addizionale <n_giri>. Nel caso venga


programmato, la <posizione_assoluta> raggiunta sarà la stessa, ma allo spazio
normalmente percorso per raggiungerla in verso negativo verrà aggiunto il numero di
giri richiesto.

C=DC(-90.000)
C=ACN(1,270.000) ;L’asse si muove indietro di 360 gradi

C=DC(315.000)
C=ACN(1,45.000) ;L’asse si muove indietro di 630 gradi

C=DC(45.000)
C=ACN(1,315.000) ;L’asse si muove indietro di 450 gradi

In caso di asse con limitazione di corsa (modulo 360):

C=AC(765.000) ;La posizione dell’asse risulterà 45 gradi


(765 MOD 360)
C=ACN(1,315.000) ;L’asse si muove indietro di 450 gradi e
raggiunge la posizione di 315

Esa/Gv 91752.DP.1.I 2.47


Programmazione Standard DP

2.7.4 Programmazione delle velocità in presenza di assi polari

Interpolazione con Si programma la velocità sulla traiettoria descritta dagli assi cartesiani in mm/min (in
uno o più assi modo G94).
cartesiani e nessun
polare

Es.:

G00 X0.000 Y0.000


G01 X30.000 Y40.000 F5000

Interpolazione con
uno o più assi polari e
nessuno cartesiano

Un solo asse polare


Si programma la velocità dell’asse polare in gradi/min (in modo G94).

Es.:

G00 C0.000
G01 C30.000 F3000

Più assi polari Si programma sempre in gradi/min (in modo G94) considerando, però, che la velocità
agisce su di un vettore n-dimensionale, le cui componenti sulle varie dimensioni sono gli
angoli percorsi dagli assi polari.
Se si desidera che due assi polari A e B spazzino angoli rispettivamente di 30° (∆A) e
40° (∆B) impiegando 0.20min. (t), si calcola prima il modulo del vettore, in questo caso
bidimensionale (S, angolo spazzato in gradi):

2 2 2 2
S ∆A ∆B 30 40 50

quindi, si divide per il tempo (t) per ottenere la velocità angolare (V) in gradi/min:

S 50
V 250.0
t 0.20

Si programmerà, quindi:

G00 C0.000 B0.000


G01 C30.000 B40.000 F250.0

Interpolazione in Si programma la velocità sulla traiettoria descritta dai soli assi cartesiani in mm/min (in
presenza sia di assi modo G94).
cartesiani che di assi
polari
Gli assi polari interpolano linearmente nello stesso tempo impiegato dai cartesiani.

2.48 91752.DP.1.I Esa/Gv


DP Programmazione Standard

Es.:

G00 X0.000 Y0.000 A0.000


G01 X30.000 Y40.000 C20.000 F2500

In alcune situazioni può essere più conveniente programmare la velocità come inverso
del tempo tramite la modalità G93. Un caso del genere può essere quando la
componente sugli assi cartesiani è estremamente ridotta e si vuole modulare
accuratamente la velocità degli assi polari.

Programmazione della In modo G93 non vengono fatte distinzioni in base ai tipi di assi presenti in un blocco, in
velocità come quanto viene espresso il reciproco del tempo di percorrenza del blocco e non uno spazio
reciproco del tempo lineare/angolare per unità di tempo.

Es.:

G00 X0.000 C0.000 B0.000


G93 F250.0 G01 X150.000 C30.000 B40.000

Esa/Gv 91752.DP.1.I 2.49


Programmazione Standard DP

2.8 Funzioni ausiliarie

2.8.1 Funzioni M e T

Funzioni M Le funzioni ausiliarie M (miscellanea) sono generalmente di tipo impiantistico e


vengono definite dal costruttore della macchina, (ad eccezione delle funzioni M2, M19 e
M30).
Nella assegnazione delle funzioni M viene comunque raccomandato il rispetto dei
seguenti standard:

Funzione Significato
M0 Arresto incondizionato
M1 Arresto opzionale
M2 Fine programma (non ridefinibile)
M3 Rotazione oraria mandrino
M4 Rotazione antioraria mandrino
M5 Arresto mandrino
M6 Cambio utensile
M7 Attivazione refrigerante 1
M8 Attivazione refrigerante 2
M9 Disattivazione refrigerante
M10 Bloccaggio
M11 Sbloccaggio
M19 Orientamento mandrino (non ridefinibile)
M30 Fine programma (non ridefinibile)
M40 Cambio gamma automatico
M41 Selezione gamma 1
M42 Selezione gamma 2
M43 Selezione gamma 3
M44 Selezione gamma 4
M48 Ripristino override
M49 Esclusione override
M60 Cambio pezzo

Le funzioni M garantiscono una sincronizzazione del canale con gli avvenimenti del
sistema, attraverso uno scambio di dati con il PLC.
È possibile selezionare da parametri macchina una gestione (Abilita Overlapped M) che
consenta una riduzione dei tempi di attesa nello scambio dei segnali di sincronismo.

2.50 91752.DP.1.I Esa/Gv


DP Programmazione Standard

Funzioni T Le funzioni ausiliarie T vengono utilizzate per indicare e predisporre l’utensile che
dovrà essere montato con il successivo comando M6.
La funzione T indica il numero dell’utensile, ma non ha alcun legame con la
compensazione utensile che invece è gestita dalla funzione D.

Ordine di esecuzione L'ordine di esecuzione dei comandi in un blocco è il seguente:


ù Funzioni T
ù Funzioni S
ù Funzioni M
ù Movimentazioni
ù Temporizzazioni

In un blocco può essere presente un solo comando per ogni tipo descritto, con
l'eccezione delle funzioni M che possono essere fino a 3.

Esa/Gv 91752.DP.1.I 2.51


Programmazione Standard DP

2.9 Compensazione utensile

2.9.1 Correzione lunghezza utensile

Tabella correttori La funzione D permette di selezionare il numero del correttore utensile, D0 disabilita la
utensile compensazione utensile.
Nel CNC è presente una tabella, accessibile all’operatore, in cui per ogni correttore è
possibile impostare una serie di dati che definiscono le modalità e le caratteristiche della
compensazione utensile. L’elemento 0 della tabella non è disponibile: se ad esempio
nella defcn sono definiti 10 utensili quelli disponibili sono quelli da 1 a 9.

Programmando il codice Dxx dal canale sono acquisite le informazioni relative


all’utensile ed è abilitata automaticamente la correzione in lunghezza dell’utensile che
tiene conto della lunghezza dell’utensile lungo l’asse ortogonale alla lavorazione. La
lunghezza utensile viene sommata alla quota impostata sull’asse indicato.

Nota: prima di utilizzare la funzione Dxx è obbligatorio definire i versori sia del piano
di lavoro specificato sia dell’utensile. Nel caso più semplice, in cui si effettua una
lavorazione sul piano XY (G17) utilizzando un utensile che lavora perpendicolarmente
al piano lungo l’asse Z, bisogna impostare i seguenti versori:

EI0 EJ0 EK1 Versore per il piano di lavoro


EP0 EQ0 ER1 Versore per l’utensile

Vedi Anche Selezione del piano di lavoro,Compensazione raggio utensile.

2.52 91752.DP.1.I Esa/Gv


DP Programmazione Standard

2.9.2 Compensazione raggio utensile

Sintassi G40 (disabilitazione compensazione raggio utensile)


G41 (abilitazione compensazione a sinistra del percorso)
G42 (abilitazione compensazione a destra del percorso)

Tipo di funzione Modale, default disabilitata.

Descrizione La compensazione del raggio utensile consente di effettuare la contornatura, di un


percorso posto su un piano, compensando automaticamente il raggio dell’utensile.
Il valore del raggio utensile, necessario per calcolare il percorso reale, viene ricavato dal
correttore D selezionato.

La compensazione del raggio utensile avviene nel piano selezionato, quindi di default la
correzione avviene sul piano XY (G17).

Per abilitare in modo corretto la compensazione raggio utensile è necessario:


ù aver selezionato il correttore utensile Dxx da utilizzare;
ù programmare G41o G42.

In modalità compensazione attiva:


ù È necessario che ogni comando di movimentazione riguardi almeno uno dei due assi
di contornatura, altrimenti l’algoritmo di compensazione restituirà errore.
ù Non è possibile modificare il verso di correzione o il piano di contornatura senza
disabilitare la correzione stessa.
ù Non è possibile programmare due posizionamenti in rapido consecutivi.

Due tratti contigui di lavorazione corretti del raggio utensile, possono essere raccordati
in modo diverso:
ù se i due tratti formano un angolo convesso viene eseguito il tratto corrente seguito
da un raccordo circolare con il punto di inizio del successivo,
ù se i due tratti formano un angolo concavo viene eseguito il tratto corrente fino al
punto di intersezione dei due tratti.

La disattivazione della compensazione del raggio utensile G40, viene considerata dal
tratto di lavorazione successivo.

Nelle due figure successive sono mostrate lavorazioni con correzione G41 e G42 con
utilizzo di fresa a candela.

Esa/Gv 91752.DP.1.I 2.53


Programmazione Standard DP

G41
X

Y
Z

G42
X

Y
Z

Figura 2.10 - Correzione G42 con fresa a candela

2.54 91752.DP.1.I Esa/Gv


DP Programmazione Standard

Nella figura seguente è mostrato il caso di correzione utensile G42 per un pezzo
lavorato al tornio,

G18: Piano ZX

X
Morsetto
G1
G1 G1
G3 G42
G1
G2
R G1

Morsetto

Figura 2.11 - Correzione utensile in tornitura

e di seguito per un pezzo alesato:

G3
R
G1 G1
G1
G1
G1
G41 Z

Figura 2.12 - Correzione utensile in alesatura

Esa/Gv 91752.DP.1.I 2.55


Programmazione Standard DP

G41

percorso
programmato

G42

G41

percorso
programmato

G42

G41

percorso
programmato

G42

Figura 2.13 - Compensazione utensile: percorso programmato e percorso corretto

2.56 91752.DP.1.I Esa/Gv


DP Programmazione Standard

Controllo Interferenza L’algoritmo di correzione utensile riconosce la presenza di interferenza ( o sovrataglio)


su tratto lineare o su arco di circonferenza, solo se si verifica che la direzione del
percorso del centro dell’utensile differisce da quella del percorso programmato di un
angolo compreso tra 90° e 270°.
Ad esempio sono riconosciuti i seguenti tipi di interferenza:

utensile

percorso
corretto

percorso
programmato
I due percorsi
differiscono di
180gradi

utensile
percorso
corretto

percorso
programmato

i due percorsi
hanno direzione
opposta

Figura 2.14 - Interferenza su tratti lineari e su arco di circonferenza

Esa/Gv 91752.DP.1.I 2.57


Programmazione Standard DP

Esempio
G0 G41 X100 Y100 (trasla al punto P1(X100-raggio
utensile,Y100))
G1 Y200 F500 (lineare al punto P2(X100-raggio
utensile,Y200))
G2 G40 X200 R50 (arco di circonferenza al punto
P3(X200+raggio utensile, Y200))

Vedi Anche Correzione lunghezza utensile.

FINE CAPITOLO

2.58 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3 Programmazione Avanzata

3.1 Selezione modo Linguaggio di Automazione

Sintassi MODE = AUTO (default)

Descrizione Viene selezionato il modo di funzionamento che permette la scrittura di un part program
secondo le prestazioni disponibili con il Linguaggio di Automazione Esa-Gv, di seguito
elencate.
In questa modalità i commenti vengono codificati con il “punto e virgola” e il carattere
riservato ISO Std. “%” è utilizzato per l’identificazione delle variabili. Per il resto il
Linguaggio di Automazione si può considerare una estensione del linguaggio ISO.

Vedi Anche Programmazione Standard:Selezione modo ISO.

Esa/Gv 91752.DP.1.I 3.1


Programmazione Avanzata DP

3.2 Programmazione parametrica

La programmazione parametrica consente di utilizzare delle variabili in luogo di valori


numerici o stringa. Questo permette di programmare in modo flessibile, garantendo la
chiarezza del codice.

3.2.1 Tipi di Variabili


Sono disponibili tre tipi di variabili:
ù Variabili globali di sistema: variabili di sistema o di utente messe accessibili sia dal
CNC che dall’interfaccia operatore.
ù Variabili predefinite: variabili di tipo numerico indirizzabili tramite i codici Vaxx,
VLxx, VGxx.
ù Variabili Simboliche: variabili il cui nome e tipo sono definiti dall’utente.

3.2.2 Variabili globali di sistema

Sintassi %nomeregistro
% nomeregistro.numerobit
E’ possibile, dall’intero del sistema (CNC, UI, PLC), accedere a variabili globali
definite in shared memory.

Descrizione Per accedere ai registri e alle strutture in shared memoryoccorre che il carattere %
preceda il nome del registro da referenziare. Se il nome del registro è seguito da
.numerobit significa che si intende testare o modificare un solo bit.
Il numero del bit deve essere compatibile con la dimensione del registro:

Tipo registro Range ammesso


BYTE da 0 a 7
WORD da 0 a 15
DWORD da 0 a 31

Esempio
%regtool[0].0=1 ;setta il bit 0 del reg. %regtool[0]
%regtool[0].1=0 ;resetta il bit 1 del reg. %regtool[0]
%regtool[0].2=1 ;setta il bit 2 del reg. %regtool[0]

3.2 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.2.3 Variabili numeriche predefinite


Sono variabili numeriche predefinite dal sistema, accessibili utilizzando i codici
VA(variabili automatiche) VL(variabili locali) o VG(variabili globali) seguito dal
numero del parametro.
Tutti i valori numerici contenuti nelle parole possono essere espressi tramite un
parametro o una espressione, esclusi il codice N.

I parametri si suddividono nel modo seguente:

VA xxx Automatici Visibili solo all'interno del programma o sottoprogramma


VL xxx Locali Visibili solo all'interno del canale
VG xxx Globali Visibili da tutti i canali

3.2.4 Assegnare una Variabile numerica predefinita

Sintassi VA, VL, VG numero = espressione

Descrizione Il contenuto del parametro posto a sinistra del simbolo = di assegnamento viene
impostato al valore della espressione che si trova a destra.

Esempio
G0 X0 Y0 ;Trasla al punto P1(X0, Y0)
VA1 = 100 VA2 = 200 ;Assegna due parametri
G1 F1000 XVA1 YVA2 ;Lineare al punto P2(X100,Y200)

Vedi Anche Espressioni

Esa/Gv 91752.DP.1.I 3.3


Programmazione Avanzata DP

3.2.5 Variabili Simboliche


Il programmatore puó utilizzare variabili personalizzate (il nome e il tipo sono stabiliti
dall’utente), alle quali puó assegnare valori numerici, stringa o riferimento. L’utilizzo di
questo tipo di variabili consente di rendere il codice piú comprensibile. Per poter
utilizzare le variabili simboliche é necessario che il parametro macchina [Sistema-
>Configura Canale->Variabili locali per livello Subroutine] sia diverso da zero.

Variabili di Tipo:

NUMERICO variabili che contengono numeri sia reali (numeri con virgola
decimale), che interi.
I numeri vengono espressi in decimale con eventuale virgola e
segno, sono ammesse al massimo 9 cifre intere e non è permessa
la notazione esponenziale.
Le espressioni vengono elaborate in binario con una precisione di
14 cifre.
STRINGA variabili che contengono sequenze di caratteri
RECORD variabili che consentono di accedere alle informazioni relative ad
un altro oggetto che puó essere una variabile simbolica, un
registro di ingresso/uscita, un registro utente definito in defcn,
ecc

3.4 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.2.6 Dichiarazione di Variabili Simboliche

Sintassi DBL symb [=valore numerico] [,symb [=valore numerico]]


STR symb [= stringa] [,symb [= stringa]]
REC symb [= ^valore] [,symb [= ^valore]]

symb=nomevar[[numero elem]]

Descrizione Prima di poter utilizzare delle variabili simboliche nella stesura di un PP, è necessario
averle precedentemente dichiarate.

DBL dichiara che i simboli che seguono sono di tipo numerico


STR dichiara che i simboli che seguono sono di tipo stringa
REC dichiara che i simboli che seguono sono di tipo record

Le variabili simboliche che saranno usate devono essere dichiarate all’inizio del PP.

Il nome di una variabile simbolica:

ù è composto da al max 32 caratteri alfanumerici;


ù non puó corrispondere ad una parola chiave del linguaggio di programmazione;
ù non puó cominciare con il carattere ‘_ ‘.

In fase dichiarativa è possibile inizializzare le variabili, cioè specificare il loro valore


iniziale prima che siano utilizzate nel PP. Se tale valore non è specificato, viene assunto
un valore di default, coerente con il tipo di dato dichiarato.

TIPO DI DATO VALORE DI DEFAULT


numerico 0.0 zero
stringa "" stringa vuota
record NULLO nessun riferimento

E’ possibile dichiarare (ed eventualmente inizializzare) sulla stessa riga più simboli
dello stesso tipo, separandoli con ‘,’(virgola).

Il riconoscimento delle variabili è sensibile alle maiuscole/minuscole (ad es.:


Dimension non è lo stesso di DIMENSION o di dimension).

Si possono dichiarare degli array monodimensionali per esempio

DBL QuoteX[10] ; vettore di 10 variabili di tipo Numerico

In questo modo è possibile strutturare dati omogenei tra loro al fine di consentirne
l’accesso per indice. Poiché un vettore è costituito da n elementi, non è possibile
inizializzarlo in fase di dichiarazione.

Visibilità delle E’ possibile definire variabili personalizzate all’interno di un qualsiasi modulo di


variabili programmazione (PP principale, subroutine e cicli fissi).

Esa/Gv 91752.DP.1.I 3.5


Programmazione Avanzata DP

Le variabili definite nel PP od in una sua subroutine sono attive e visibili fino alla sua
conclusione, quindi anche durante l’esecuzione di una subroutine invocata.

Pp principale %1
DBL NRiga ; numero di righe da eseguire
DBL NFORI, MAXY
...
...

NRiga = 20
JSR “foratura” Esegue una riga di fori : foratura
N10 .....
IF (NRiga > 20) JMP 10
.....
RET

Non è possibile che due o piú variabili dichiarate allo stesso livello di subroutine
abbiano lo stesso nome, mentre è ammesso per variabili definite a livelli di subroutine
differenti. L’omonimia tra variabili di livello di subroutine differente viene risolta
secondo le seguenti regole:

ù una variabile è sempre visibile all’interno del modulo in cui è definita;


ù una variabile è visibile nei moduli invocati dal PP/Subroutine se questi non
dichiarano una variabile con lo stesso nome

Principale % 1

DBL AUX1 = 35,


DBL AUX2 = 2

VL0 = AUX2 ; VL0 = 2

JSR 112 -> LIVELLO1 : 112


DBL AUX2 = 10

VL2 = AUX2 ; VL2 = 10


VL3 = AUX1 ; VL3 = 35

JSR “SUB1” >LIVELLO2 :SUB1


DBL AUX1 = 0

VL4 = AUX2 ; VL4 = 10


VL5 = AUX1 ; VL5 = 0

Esempio
DBL mezz, MIN=0, QuoteX[10]
REC PUNT[3] ;Array di 3 puntatori nulli
REC POINTER = ^mezz
STR SUBROUTINE, NAME[3], SUB=”esempio.cfu”

3.6 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.2.7 Assegnamento di Variabili Simboliche

Sintassi symb = valore compatibile


symb = nomevar[numero elem]

Assegnazione di La variabile di tipo record a sinistra del simbolo di assegnamento (=), in seguito ad una
variabili di tipo record assegnazione, contiene il riferimento al simbolo assegnato. Una volta che una variabile
record è stata assegnata puó essere utilizzata in sostituzione del simbolo che essa
referenzia.
Una variabile di tipo record può essere assegnata ad un’altra variabile di tipo record .

REC PUNT[10]
DBL Luce, Finecorsa

PUNT[0] = ^%C23 ;PUNT[0] e’ in grado di accedere al


;registro logico C23

PUNT[0] = 15.2 equivale a %C23=15.2

PUNT[1] = ^%QW3.1 ;PUNT[1] è in grado di accedere al


; bit 1 del registro di uscita QW3
PUNT[2] = ^%IW8 ;PUNT[2] e’in grado di accedere al
;registro di ingresso IW8
PUNT[3] = ^%subroutine[0].name
;PUNT[3] e’in grado di accedere alla
;struttura in defcn subroutine[0].name
PUNT[4] = ^Luce ;PUNT[4] e’in grado di accedere alla
;variabile di tipo numerico Luce
PUNT[5] = ^VA20 ;PUNT[5] e’in grado di accedere alla
;variabile predefinita VA20
PUNT[6] = ^VG2 ;PUNT[5] e’in grado di accedere alla
;variabile predefinita VG2
PUNT[7] = ^VL13 ;PUNT[5] e’in grado di accedere alla
;variabile predefinita VL13

L’utilizzo delle variabili record puó rivelarsi utile qualora sia necessario accedere
frequentemente a variabili in shared memory, in quanto consente un accesso più
rapido.

Assegnazione di Il contenuto della variabile posta a sinistra del simbolo di assegnamento (=) viene
variabili di tipo impostato al valore della espressione che si trova a destra.
numerico
Un valore numerico puó essere assegnato oltre che ad una variabile definita di tipo
DBL, anche una variabile record che faccia riferimento ad un simbolo di tipo numerico.

DBL QuotaX
REC PUNT

QuotaX = 100 ; QuotaX 100.0

PUNT = ^ QuotaX
PUNT = 300 ; equivale a QuotaX 300.0

Esa/Gv 91752.DP.1.I 3.7


Programmazione Avanzata DP

Assegnazione di Il contenuto della variabile posta a sinistra del simbolo di assegnamento (=) viene
variabili di tipo stringa impostato al valore stringa che si trova a destra.
Un valore stringa puó essere assegnato, oltre che ad una variabile definita di tipo STR,
anche una variabile record che faccia riferimento ad un simbolo di tipo stringa

STR SUB= “fora100.cfu”


REC PUNT

SUB = “1098.cfu” ; SUB “1098.cfu”

PUNT = ^ SUB
PUNT = “foratura.cfu” ; equivale a SUB “foratura.cfu”

3.2.8 Espressioni
Le espressioni vengono create con la combinazione di operandi ed opertatori come
avviene in algebra.
Si possono utilizzare espressioni:
ù Per assegnare il valore risultante ad una variabile, compare alle destra del segno “=”
che segue la variabile a cui il calcolo viene assegnato.

Es. MyVar = (VarA ** VarB) * SIN(VarC)/COS(VarD)


ù Come condizione di una istruzione IF; l’espressione viene risolta e il risultato viene
valutato dall’istruzine IF.

Es. IF( ( (VarA ** VarB) * SIN(VarC)/COS(VarD) ) > 0 ) THEN


ù In linea ad una qualsiasi istruzione ISO

Es. GO X(VarA ** VarB) Y(SIN(VarC)/COS(VarD) )


M(VarA-VarB)

3.8 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

Tipo operando Sintassi


costante numero
variabile predefinita VA, VL, VG numero
variabile simbolica simbolo
0x<numero> Costante esadecimale
%C <numero registro> registri di I/O logico
%IW <numero registro> registri di Input fisico
%QW <numero registro> registri di Output fisico
elem. di vettore simbolico glob. %nome_minuscolo_var[num.el.]
var. di sistema globale %nome_ minuscolo_var
var. di sistema glob. Strutturata %nome_ minuscolo_var.membro
var. di sistema globale sincrona ?%nome_ minuscolo_var
operatore
somma (+) espressione+espressione
sottrazione (-) espressione-espressione
moltiplicazione (*) espressione*espressione
divisione (/) espressione/espressione
negazione (-) -espressione
Elevamento a potenza espressione ** espressione

Funzione Sintassi
radice quadrata SQRT(espressione)
seno SIN(espressione)
coseno COS(espressione)
tangente TAN(espressione)
arcoseno ASIN(espressione)
arcocoseno ACOS(espressione)
arcotangente ATAN(espressione)
valore assoluto ABS(espressione)
arrotondamento ROUND(espressione)
troncamento FIX(espressione)
arrotondamento per eccesso FUP(espressione)
somma (per dword) ADD(espressione, espressione)
sottrazione (per dword) SUB(espressione, espressione)
moltiplicazione (per dword) MUL(espressione, espressione)

Esa/Gv 91752.DP.1.I 3.9


Programmazione Avanzata DP

Operatori Booleani Descrizione


<espress> AND <espress> operazione and bit a bit
<espress> & <espress> operazione and bit a bit
<espress> OR <espress> operazione or bit a bit
<espress> | <espress> operazione or bit a bit
<espress> && <espress> operazione and logica (sulla intera parola)
<espress> || <espress> operazione or logica (sulla intera parola)
SHR(<espress1>, <espress2>) shift right espress1 di espress2 bits
SHL(<espress1>, <espress2>) shift left espress1 di espress2 bits
MOD(<espress1>, <espress2>) resto divisione espress1 modulo espress2

Descrizione Le espressioni possono essere costituite da costanti e parametri legati dagli operatori e
dalle funzioni elencate.
Gli operatori vengono eseguiti in ordine algebrico, ma è possibile variare l'ordine di
esecuzione con le parentesi tonde ( ).

I numeri vengono espressi in decimale con eventuale virgola e segno, sono ammesse al
massimo 9 cifre intere e non è permessa la notazione esponenziale.

Le espressioni vengono elaborate con una precisione di 14 cifre; porre attenzione al


fatto che i numeri con parte decimale e quelli da essi derivati tramite elaborazioni sono
sempre approssimati e quindi non permettono i confronti di uguaglianza.

Va notato che anche il numero di un parametro può essere definito con una espressione,
ottenendo così un accesso con indice.

Esempio
VA1 = 2
VA2 = 2000.0
VA3 = VA[VA1] ;accesso con indice
VA4 = 45.0
VA5 = VA2 + (VA3 * SIN(VA4)) * VA2
G01 F1000 XVA2 YVA5
VA1 = VA1 + 1

N100 %regasync[0] = %nc[1].du[0]


N200 %regasync[1] = %nc[1].du[1]

N600 VA[0] = 1
N600 VL[0] = 2
N600 VG[0] = 3

N900?%regtool[0] = 4.1 * 2 - 1
N900?%regtool[0] = 1
N900?%regtool[0] = 1

N900 %regtool[0].0 = 1
N900 %regtool[0].1 = 0
N900 %regtool[0].2 = 1

N1000?VA[0] = 123.0 * -1

3.10 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

N1000?VA[1] = 123.0 * -2

N1020 VA0 = %regtool[0]

dove nella shared memory è stato definito:

dword regasync[10]

dword regtool[10]

typedef struct{
RETAIN dword du[10];
} DU;

DU nc[5];

Somma Calcola la somma algebrica di due operandi.

Sintassi esp1 + esp2

Sottrazione Calcola la differenza di due operandi

Sintassi esp1 - esp2

Negazione Cambia il segno ad un operando: un operando con valore negativo diventa positivo e
viceversa.

Sintassi - esp1

Moltiplicazione Calcola il prodotto di due operandi.

Sintassi esp1 * esp2

Divisione Calcola il rapporto tra due operandi.

Sintassi esp1 / esp2


Il valore del dividendo (nell’esempio la variabile esp2) deve essere diversa da 0.

Modulo della Calcola il resto di una divisione.


divisione

Sintassi MOD(esp1,esp2)
Esempio:
VAR1 = MOD(5,2)
Il risultato di questa divisione è 2 ed il resto è 1; quindi la variabile VAR1 vale 1.

Esa/Gv 91752.DP.1.I 3.11


Programmazione Avanzata DP

Elevamento a potenza Calcola l’elevamento a potenza della base A con l’esponente B;

Sintassi A ** B
Questo operatore ha alcuni limiti nei valori che può utilizzare:
ù Genera un errore di dominio se A e B valgono entrambi 0.
ù Genera un errore di dominio se A<0 e B non è un valore intero.

Radice quadrata Calcola la radice quadrata del valore associato.

Sintassi SQRT(espr)
Il valore di espr non deve essere negativo.

Valore assoluto Calcola il valore assoluto dell’operando associato, cioè se il valore dell’operando è
positivo rimane inalterato, altrimenti lo rende positivo.

Sintassi ABS(espr)

Arrotondamento Approssima un valore non intero all’intero inferiore più prossimo al valore originale.
all’intero inferiore

Sintassi FIX(espr)
Esempio:
VARA = FIX(3.123)
Il risultato dell’operazione è 3.

Arrotondamento Approssima un valore non intero all’intero superiore più prossimo al valore originale.
all’intero superiore

Sintassi FUP(espr)
Esempio:
VARA = FUP(3.123)
Il risultato dell’operazione è 4.

Operatori Gli operatori elencati di seguito utilizzano come operandi variabili o costanti che
trigonometrici esprimono angoli, oppure forniscono come risultato un angolo.
Gli angoli hanno la caratteristica numerica che il loro valore è periodico, cioè valori
esterni all’intervallo -360° ÷ +360° possono essere ricondotti all’interno di questo
intervallo; l’operazione di ricondurre il valore di un angolo all’interno dell’intervallo
illustrato viene detta normalizzazione dell’angolo.

La normalizzazione di un angolo la si ottiene applicando all’angolo da normalizzare la


funzione di modulo a 360°.

3.12 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

Sintassi ALPHA = MOD(BETA,360)


Normalizza il valore dell’angolo contenuto nella variabile BETA e ne mette il risultato
nella variabile ALPHA.
La normalizzazione è implicita e non deve essere calcolata, cioè le funzioni SIN(420) e
SIN(60) sono equivalenti.
Tutti gli angoli sono espressi in gradi.

Arco-Coseno Calcola l’arcocoseno del valore associato.


È la funzione inversa del coseno; il valore del parametro deve essere compreso tra -1 e
1.

Sintassi ACOS(espr)
Il valore calcolato è un angolo.

Arco-Seno Calcola l’arcoseno del valore associato.


È la funzione inversa del seno; il valore del parametro deve essere compreso tra -1 e 1.

Sintassi ASIN(espr)
Il valore calcolato è un angolo.

Arco-Tangente Calcola l’arcotangente del valore associato.


È la funzione inversa della tangente; il valore del parametro deve essere compreso tra
-∞ e +∞.

Sintassi ATAN(espr)
Il valore calcolato è un angolo.

Coseno Calcola il coseno del valore associato.

Sintassi COS(espr)
Espr è un angolo, ed il valore calcolato è compreso tra -1 e 1.

Seno Calcola il seno del valore associato.

Sintassi SIN(espr)
Espr è un angolo, ed il valore calcolato è compreso tra -1 e 1.

Tangente Calcola la tangente del valore associato.

Sintassi TAN(expr)
Espr è un angolo, ed il valore calcolato è compreso tra -∞ e +∞..

Operatori logici Gli operatori logici hanno la caratteristica di valutare solo due valori di una variabile.
(booleani)
I valori considerati sono valori booleani, VERO o FALSO.

Esa/Gv 91752.DP.1.I 3.13


Programmazione Avanzata DP

Ad una variabile viene associato il valore VERO se il suo contenuto non è zero, mentre
viene associato il valore FALSO se il suo contenuto è zero.
Il risultato di un confronto fornisce sempre un risultato booleano, VERO o FALSO.

Confronta se uguale Questo operatore è significativo se utilizzato in una espressione all’interno di una
istruzione di salto condizionato (IF).
Confronta due operandi e torna VERO se questi nono uguali, oppure FALSO se questi
non sono uguali.

Sintassi espr1 == espr2


IF( espr1 == espr2 ) JMP .....

Confronta se Questo operatore è significativo se utilizzato in una espressione all’interno di una


maggiore o uguale istruzione di salto condizionato (IF).
Confronta due operandi e torna VERO se il primo è maggiore o uguale al secondo,
altrimenti FALSO se è minore.

Sintassi espr1 >= espr2


IF( espr1 >= espr2 ) JMP .....

Confronta se Questo operatore è significativo se utilizzato in una espressione all’interno di una


maggiore istruzione di salto condizionato (IF).
Confronta due operandi e torna VERO se il primo è maggiore del secondo, altrimenti
FALSO se è minore oppure sono uguali.

Sintassi espr1 > espr2


IF( espr1 > espr2 ) JMP .....

Confronta se diverso Questo operatore è significativo se utilizzato in una espressione all’interno di una
istruzione di salto condizionato (IF).
Confronta due operandi e torna VERO se questi sono diversi, oppure FALSO se questi
sono uguali.

Sintassi espr1 != espr2


IF( espr1 != espr2 )JMP .....

Confronta se minore Questo operatore è significativo se utilizzato in una espressione all’interno di una
o uguale istruzione di salto condizionato (IF).
Confronta due operandi e torna VERO se il primo è minore o uguale al secondo,
altrimenti FALSO se è maggiore.

Sintassi espr1 <= espr2


IF( espr1 <= espr1 ) JMP .....

Confronta se minore Questo operatore è significativo se utilizzato in una espressione all’interno di una
istruzione di salto condizionato (IF).
Confronta due operandi e torna VERO se il primo è minore del secondo, altrimenti
FALSO se è maggiore oppure sono uguali.

3.14 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

Sintassi espr1 < espr2


IF( espr1 < espr1 ) JMP .....

And Permette di comporre più espressioni logiche, quindi nel salto condizionato possono
essere espresse condizioni di test complesse.
L’operatore AND ritorna VERO se entrambi gli operatori che associa sono VERI; in
ogni altra condizione ritorna FALSO.

Sintassi Espr1 && Espr2

La tabella che segue riassume i possibili risultati che si ottengono applicando l’operatore
AND.

A B Espr1 && Espr2


VERO VERO VERO
VERO FALSO FALSO
FALSO VERO FALSO
FALSO FALSO FALSO

Di seguito viene illustrata una istruzione di salto condizionato con 2 condizioni


associate con un operatore AND.

IF (Var1 > Var2) && (Var3 < Var4) JMP .....

Or Permette di comporre più espressioni logiche, quindi possono nel salto condizionato
essere espresse condizioni di test complesse.
L’operatore OR ritorna VERO se almeno uno degli operatori che associa è VERO; solo
se entrambi sono FALSI l’operatore OR ritorna FALSO.

Sintassi espr1 || espr2

La tabella che segue riassume i possibili risultati che si ottengono applicando l’operatore
OR.

Espr1 Espr2 Espr1 || Espr2


VERO VERO VERO
VERO FALSO VERO
FALSO VERO VERO
FALSO FALSO FALSO

Di seguito viene illustrata una istruzione di salto condizionato con 2 condizioni


associate con un operatore OR.

IF (Var1 > Var2) || (Var3 < Var4) JMP .....

Esa/Gv 91752.DP.1.I 3.15


Programmazione Avanzata DP

Negazione Mediante l’operatore in oggetto viene variato il valore logico di una espressione.
L’operatore NOT ritorna VERO se l’operando ad esso associato è FALSO e ritorna
FALSO se l’operando è VERO.

Sintassi ! espr1

La tabella che segue riassume i possibili risultati che si ottengono applicando l’operatore
NOT.

Espr1 ! Espr1
VERO FALSO
FALSO VERO

Di seguito viene illustrata una istruzione di salto condizionato con 1 condizione negata.

IF NOT (A = B) GOTO .....

3.16 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.2.9 Utilizzo del #QNAN


Il #QNAN (Quiet Not A Number) è una configurazione particolare che una variabile può
assumere per indicare che non è presente alcun valore numerico lecito. Ad esempio, il
#QNAN si trova nei parametri di un ciclo fisso che non sono stati esplicitamente
programmati e per cui non è disponibile un valore di default. Siccome il linguaggio ISO
non assegna un indirizzo se questo contiene un #QNAN, è possibile programmare,
all’interno dei cicli fissi, ad es., delle istruzioni che muovono un set di assi che dipende
dalla combinazione dei parametri programmati senza dover controllare una per una tutte
le combinazioni; ad es., se nella riga seguente all’interno di un ciclo fisso:

G0 XVA1 YVA2

...VA1 e VA2 sono parametri, questa riga verrà automaticamente interpretata come
sopra solo se entrambi i valori saranno stati esplicitamente programmati, oppure:

G0 XVA1

oppure:

G0 YVA2

...a seconda che sia presente rispettivamente solo la prima variabile o solo la seconda, e
così via.
Se si svolgono operazioni su di una variabile #QNAN, questa danno sempre risultato
#QNAN.
I confronti booleani tra variabili di cui almeno una è #QNAN hanno un risultato
imprevedibile. Per questo confrontare un numero con #QNAN non è possibile con
qualcosa del tipo IF ( a == QNAN() )!!! A questo scopo occorre utilizzare la funzione
ISQNAN(n), ad es.:

IF (ISQNAN( VA2 )) ...

Per generare un #QNAN utilizzare QNAN().

Esa/Gv 91752.DP.1.I 3.17


Programmazione Avanzata DP

3.3 Controllo del flusso di programmazione

3.3.1 Salto incondizionato

Sintassi JMP numero


JMP.label

JMPF numero
JMPF.label

Descrizione Permette di modificare la scansione sequenziale del part program, il prossimo blocco
elaborato é quello specificato da ’numero’ o dalla label (etichetta), Le label sono
identificate da .stringaalfanumerica.
L’utilizzo dell’istruzione JMPF al posto della JMP permette di velocizzare il ciclo, la
JMPF ammette solo salti a linea che seguono la linea corrente, cioè ammette solo salti in
avanti

Esempio
N100 ;segnalazione errore
N110 G04 F1 ;attesa
N120 JMP 110 ;loop infinito

dX=0
.LOOP
G0 X(100+dX) Y(210+dX)
dX = dX + 0.5
IF (dX < 10 ) JMP .LOOP

Vedi Anche Programmazione Std: Numero Blocco.

3.18 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.3.2 Test

Sintassi IF (espressione = = espressione) <funzioni> ;uguale


IF (espressione != espressione) <funzioni> ;diverso
IF (espressione > espressione) <funzioni> ;maggiore
IF (espressione < espressione) <funzioni> ;minore
IF (espressione > = espressione) <funzioni> ;maggiore o uguale
IF (espressione < = espressione) <funzioni> ;minore o uguale
IF (!espressione) <funzioni> ;uguale a zero
IF (espressione) <funzioni> ;diverso da zero

Descrizione Effettua il confronto tra due espressioni ed esegue il resto del blocco se la condizione
logica indicata è vera.
Nota: il confronto fra il primo e secondo membro della istruzione IF vuole fatto fra
variabili omogenee in quanto a dimensione e segno. In altre parole è scorretto
confrontare una word (16 bit) con segno (ad esempio una %QW) con una word senza
segno (ad esempio 0xFFFF scritta esplicitamente). Per poter effettuare il confronto è
necessario effettuare il casting della variabile con segno:

;IF(%QW2 == 0xFFFF) JMP 110 scorretto!!!

IF((%QW2 & 0xFFFF) == 0xFFFF) JMP 110 ; corretto

Esempio
N100 VA1 = 100.0 ;inizializza parametro
N200 G0 XVA1 ;posiziona X
N300 M80 ;esegue lavorazione
N400 VA1 = VA1 + 10.0 ;incrementa parametro
N500 IF (VA1 < 205.0) JMP 200 ;ripete il ciclo 10 volte,
poi prosegue

IF(%C2.1==1) JMP 100


IF((%C2 && %C3 && %C4) || %C2.1 || %C2) JMP 110

IF(%IW1 > 100) JMP 10


; IF(%QW2 == 0xFFFF) JMP 10 scorretto!!!
IF((%QW2 & 0xFFFF) == 0xFFFF) JMP 10 ; corretto
IF(%QW2 == 0x1B) JMP 10
IF(%QW2 == %cnerr.err) JMP 10
IF(%QW2.15) JMP 10
IF(%C2.1 == 1) JMP 10

Vedi Anche Test Condizionato

Esa/Gv 91752.DP.1.I 3.19


Programmazione Avanzata DP

3.3.3 Test Condizionato

Sintassi IF condizione THEN


Blocco 1
ELSE
Blocco 2
ENDIF

Descrizione Esegue il controllo della condizione; se questa è vera viene eseguito il blocco di
istruzione che segue (blocco 1 della sintassi), se la condizione è falsa viene eseguito il
blocco di istruzioni che segue la chiave ELSE (blocco 2 della sintassi, se presente).
L’esecuzione si ricongiunge dopo la parola chiave ENDIF.
Un blocco di istruzioni interno ad un IF-THE-ELSE può a sua volta contenere altri IF-
THEN-ELSE; il livello di nesting massimo è di 5 annidamenti.

Esempio
IF( MyVar > 100 ) THEN
G0 X100 Y 100
G4 F2
M19 S45
MyVar = 0
ELSE
MyVar = MyVar + 1
G0 Z0
ENDIF

Vedi Anche Test

3.20 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.3.4 Blocco WHILE

Sintassi WHILE (condizione)


Blocco
ENDW

Descrizione Esegue il blocco di istruzioni fintanto che l’espressione rimane vera, non appena la
condizione diventa falsa, il controllo passa al blocco che segue l’ENDW.
Se la condizione è falsa alla prima iterazione, il blocco non viene eseguito nemmeno una
volta.

Esempio
WHILE( MyVar != 100 )
G0 X100 Y 100
G4 F2
M19 S45
MyVar = MyVar+1
ENDW

Siccome che questo blocco di istruzioni viene valutato da uno stadio di preelaborazione
eseguito in anticipo rispetto all’esecuzione in tempo reale della movimentazione della
macchina, si consiglia di usare condizioni che non possono variare in tempo reale. Si
utilizza questo costrutto per creare iterazioni di parametrica ma non per bloccare
l’elaborazione fino al verificarsi di un evento (es attivazione di un segnale di input).
L’esempio che segue non è un esempio di buona programmazione.

Esempio di uso
improprio
G0 X100 Y100
WHILE( “%IW0.0” == 0 )
G4 F1
ENDW

In questo esempio si effettua il test di un ingresso fisico nella fase di preelaborazione,


l’istruzione che precede verrà eseguita non appena l’esecutore real-time la prende in
esame; il blocco WHILE ha quindi il tempo di iterare diverse volte prima che il blocco
G0 venga eseguito aspettando che l’evento si verifichi; ad ogni iterazione del ciclo
WHILE viene preparata una istruzione G4 da inviare al blocco esecutore mentre il
blocco di preelaborazione continua ad iterare senza sosta attendendo l’evento di fine
iterazione.

Un modo per sincronizzare il blocco di preelaborazione con l’esecutore è quello di usare


una itruzione SYN.

G0 X100 Y100
WHILE( “%IW0.0” == 0 )
SYN
G4 F1
ENDW

Esa/Gv 91752.DP.1.I 3.21


Programmazione Avanzata DP

Questo metodo blocca lo stadio di preelaborazione fino a che lo stadio di esecuzione ha


eseguito ogni istruzione; nell’esempio equivale ad attendere che il blocco G0 sia
terminato prima di eseguire il blocco G4; nelle successive iterazioni, un nuovo blocco
G4 verra inviato all’esecutore solo quando questo ha consumato il precedente, si
introduce di fatto una temporizzazione sul blocco di preelaborazione.

Vedi Anche REPEAT, FOR, BREAK

3.22 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.3.5 Blocco REPEAT

Sintassi REPET
Blocco
UNTIL (condizione)

Descrizione Esegue il blocco di istruzioni fintanto che l’espressione è falsa, non appena la
condizione diventa vera il controllo passa al blocco che segue l’UNTIL.
Questo costrutto garantisce l’esecuzione del blocco di istruzioni che racchiude almeno
una volta, infatti il blocco viene prima eseguito e solo successivamente si valuta la
condizione; se questa è vera il blocco non viene reiterato, viceversa viene eseguito
nuovamente fino al verificarsi della condizione di uscita.

Esempio
REPEAT
G0 X100 Y 100
G4 F2
M19 S45
MyVar = MyVar+1
UNTIL ( MyVar == 100 )

Siccome che questo blocco di istruzioni viene valutato da uno stadio di preelaborazione
eseguito in anticipo rispetto all’esecuzione in tempo reale della movimentazione della
macchina, si consiglia di usare condizioni che non possono variare in tempo reale. Si
utilizza questo costrutto per creare iterazioni di parametrica ma non per bloccare
l’elaborazione fino al verificarsi di un evento (es attivazione di un segnale di input).
L’esempio che segue non è un esempio di buona programmazione.

Esempio di uso
improprio
G0 X100 Y100
REPEAT)
G4 F1
UNTIL ( “%IW0.0” != 0 )

In questo esempio si effettua il test di un ingresso fisico nella fase di preelaborazione,


l’istruzione che precede verrà eseguita non appena l’esecutore real-time la prende in
esame; il blocco WHILE ha quindi il tempo di iterare diverse volte prima che il blocco
G0 venga eseguito aspettando che l’evento si verifichi; ad ogni iterazione del ciclo
WHILE viene preparata una istruzione G4 da inviare al blocco esecutore mentre il
blocco di preelaborazione continua ad iterare senza sosta attendendo l’evento di fine
iterazione.

Un modo per sincronizzare il blocco di preelaborazione con l’esecutore è quello di usare


una itruzione SYN.

G0 X100 Y100
REPEAT
SYN
G4 F1

Esa/Gv 91752.DP.1.I 3.23


Programmazione Avanzata DP

UNTIL ( “%IW0.0” != 0 )

Questo metodo blocca lo stadio di preelaborazione fino a che lo stadio di esecuzione ha


eseguito ogni istruzione; nell’esempio equivale ad attendere che il blocco G0 sia
terminato prima di eseguire il blocco G4; nelle successive iterazioni, un nuovo blocco
G4 verra inviato all’esecutore solo quando questo ha consumato il precedente, si
introduce di fatto una temporizzazione sul blocco di preelaborazione.

Vedi Anche WHILE, FOR, BREAK

3.24 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.3.6 Blocco FOR

Sintassi FOR index=start TO end BY step


Blocco
ENDFOR
Dove :
index è il nome della variabile che si usa come contatore del numero delle iterazioni
start è il valore iniziale del contatore
end è il valore finale del contatore, ovvero la condizione che determina la fine
dell’iterazione
step è l’incremento che si applica ad ogni iterazione al contatore; può assumere anche
valori decimali e/o negativi, in tal caso start deve essere maggiore di end.

Descrizione Ripete il blocco di istruzioni per un numero di iterazioni necessario per portare la
variabile index dal valore start al valore end incrementandola ad ogni iterazione del
valore step.
Se si omette la parte “BY step”, si assume che l’incremento sia unitario.

Esempio L’esempio che segue esegue 25 iterazioni (da 0 a 100 a passo 2,5)
DBL ind;

FOR ind=0 TO 100 BY 2,5


G0 X100+(ind*2) Y(ind/2)
G1 X(ind/2) Y100+(ind*2)
G4 F (ind/10)
ENDFOR

L’esempio che segue è identico al precedente ma usa un incremento unitario, quindi


esegue 100 iterazioni.

DBL ind;

FOR ind=0 TO 100


G0 X100+(ind*2) Y(ind/2)
G1 X(ind/2) Y100+(ind*2)
G4 F (ind/10)
ENDFOR

Vedi Anche WHILE, REPEAT, BREAK

Esa/Gv 91752.DP.1.I 3.25


Programmazione Avanzata DP

3.3.7 Interruzione di ciclo - BREAK

Sintassi BREAK

Descrizione Interrompe un qualsiasi ciclo di iterazione portando l’esecuzione alla prima istruzione
che segue il ciclo di iterazione che contiene il BREAK;
L’interruzione di un ciclo di iterazione annidato ad uno o più ciclo di iterazione, non
provoca l’arresto dell’iterazione dei cicli più esterni.
L’istruzione BREAK è utilizzabile sia per i cicli FOR, che per i cicli WHILE e
REPEAT.

Esempio
DBL ind;

FOR ind=0 TO 100 BY 2,5


G0 X100+(ind*2) Y(ind/2)
G1 X(ind/2) Y100+(ind*2)

IF( %C0.0 == 1 ) BREAK

G4 F (ind/10)
ENDFOR

Vedi Anche WHILE, REPEAT, FOR

3.26 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.3.8 Ripetizione

Sintassi RPT blocco iniziale, blocco finale, numero ripetizioni

Descrizione Permette di ripetere una sequenza di blocchi per tante volte quanto e’ numero
ripetizioni. La sequenza di blocchi da ripetere è individuata da blocco iniziale e blocco
finale.
Blocco iniziale, blocco finale possono essere identificati da:
ù costante numerica;
ù espressione
ù label.

Numero ripetizioni, può essere specificato da una espressione.


È consentito l’annidamento fino a 3 livelli.

Esempio
G0 X0 Y0 Z200
G0 B0 ; posizionamento tavola a 0 gradi
RPT 10, 70, 1 ; ripeti una volta la sequenza N10-N70
10, 70, 1 ; ripeti una volta la sequenza N10-N70
G0 B45 ; posizionamento tavola a 45 gradi
RPT G0 B90 B45 ; posizionamento tavola a 90 gradi
RPT 10, 70, 1 ; ripeti una volta la sequenza N10-N70

;(Definizione Parametri Tecnologici Foratura)


N10 T1 M6
N20 G81 DR125 DE100 DH125 FW150 FR15000
N30 X10 Y10 ; foratura
N40 G80 ; annulla la modalità di G81
N50 T1 M6
;(Definizione Parametri Tecnologici Maschiatura)
N60 G84 DR125 DE100 DH125 RW150 RR15000
N70 RPT 30, 30, 1 ; esegue la maschiatura nello stesso
; punto in cui è stata effettuata la
; foratura
N100 M30

Vedi Anche Vedi utilizzo con Cicli Fissi di Sistema e Macro Istruzioni.

Esa/Gv 91752.DP.1.I 3.27


Programmazione Avanzata DP

3.3.9 Livelli di annidamento: sottoprogrammi e cicli fissi

Livelli di Utilizzando le chiamate ai cicli fissi o alle subroutine (sottoprogrammi) è possibile


annidamento: rendere modulare la stesura di un programma. Questo tipo di programmazione, oltre a
sottoprogrammi e rendere piú leggibile il codice, favorisce la possibilitá di riutilizzare parti di codice giá
cicli fissi scritto. Un sottoprogramma puó invocare a sua volta un sottoprogramma fino ad un
massimo di 5 chiamate annidate.

PPrincipale %2

sub 1 : 1

sub 2 : 2

livello n

livello 2

livello 1

livello 0

Figura 3.1 -

3.28 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.3.10 Inizio sottoprogramma (ciclo fisso)

Sintassi prototype: nome ciclo fisso

dove:

prototype = param1,param2, ...

param n =[parametro]val di default oppure parametro

Descrizione Il blocco di inizio sottoprogramma (ciclo fisso di utente) contiene un commento, il


carattere di inizio sottoprogramma ":" e il numero del sottoprogramma (nome del ciclo
fisso). I cicli fissi di utente (nomefile.cfu) possono essere liberamente scritti dall’utente.
La descrizione che segue riguarda i soli cicli fissi di sistema.
Il blocco di inizio sottoprogramma (ciclo fisso di sistema) contiene il prototype, il
carattere di inizio sottoprogramma ":" e il numero del sottoprogramma (nome del ciclo
fisso). I cicli fissi di sistema (nomefile.cfs) sono preimpostati dal costruttore.
Ogni sottoprogramma deve iniziare con il relativo blocco di inizio.

Prototype I vari parametri possono essere elencati in qualsiasi ordine. Possono avere
qualsiasi indirizzo monoletterale (ovvero possono essere elencati fino a 26
parametri da A a Z). Contengono tutti valori numerici tranne il T ed E che
possono essere seguiti da una stringa racchiusa da virgolette.
I parametri contenenti valori numerici sono passati al ciclo fisso tramite le
variabili automatiche di tipo double VA0 => VA25.
Numero Numero che identifica univocamente il programma, deve corrispondere al
ciclo fisso numero del part-program.

Un parametro dichiarato autocancellante nel protoype deve essere racchiuso fra


parentesi quadre, e alla chiamata può essere:
ù esplicitato => al ciclo fisso viene passato, ovviamente, il valore esplicitato;
ù omesso => se nel prototype è presente un valore di default per tale parametro, viene
passato il valore di default, se nel prototype non è presente un valore di default per
tale parametro, viene passato QNAN (Not A Number).

Nel caso al parametro sia assegnato il valore Nan, si può usufruire di una particolare
funzionalità dei comandi ISO: quando un indirizzo ISO è seguito da un valore Nan, tale
indirizzo viene ignorato. Nel caso di una movimentazione con un asse seguito da Nan,
ad esempio, tale asse è ignorato (può anche non appartenere, quindi, agli assi disponibili
da parametri macchina). Nel caso di un indirizzo G o M o F seguito da Nan, la
movimentazione o il comando PLC o l’impostazione della velocità non sono eseguiti
(nel caso della movimentazione, rimangono validi eventuali indirizzi che seguono, che
verranno eseguiti con la funzione modale attiva). Questa modalità di funzionamento, in
presenza di un valore Nan, è stata estesa agli indirizzi:

G, M, T, D, F, S,
X, Y, Z, U, V, W, A, B, C,
R, I, J, K,
TGR (i tre valori che seguono l’indirizzo TGR), SVR, SVL,
CHA (smusso), RAD (raccordo),

Esa/Gv 91752.DP.1.I 3.29


Programmazione Avanzata DP

Un parametro dichiarato modale nel prototype non deve essere racchiuso fra parentesi
quadre e, alla chiamata, può essere:
ù esplicitato => al ciclo fisso viene passato, ovviamente, il valore esplicitato;
ù omesso => se è la prima chiamata di quel ciclo fisso di quel livello di nesting viene
dato errore, se non è la prima chiamata di quel ciclo fisso di quel livello di nesting
viene passato l’ultimo valore esplicitato per quel ciclo fisso in quel livello di
nesting.

Si noti che la modalità è mantenuta solo all’interno del livello di nesting.


È obbligatorio inserire un prototype prima del simbolo:.

Esempio Un esempio di part program è il seguente (a livello di nesting 0):

N30 F100
N40 G17 G0 X 0 Y 0
N50 G100 B 20.0 E "stringa" C 30.0
N197 B 60.0 ;chiamata modale a G100
N58 G80 ;annulla la modalità di G100
N59 JMP 197 ;salta a due linee dopo
N60 G01 X VL100 Y VL104
N197 M10
N199 M30
N200 END

ciclo fisso G100(a livello di nesting 1):

[B] C E [F] 30.0 [G] [N]:100 ;prototype


G1 X VA1 Y VA2 ;uso i val. 20.0, 30.0 dei param. B e C
G1 X VA6 Y VA1 A VA6 ;uso Nan, 30.0, Nan dei param.G, C, G
CALL MrlChangeTool(3,10) ;aggancio C
VL104 = 33
VL100 = 66
G101 A 10 B 11 C 12
RET

e il ciclo fisso G101(a livello di nesting 2):

[A] 10.0 B [C] 25.2:101 ;prototype


G1 X VA0 Z VA1 ;uso i val. 10.0, 11.0 dei param. A e B
RET

Vedi Anche Chiamata a sottoprogramma(ciclo fisso utente). Chiamata a sottoprogramma (ciclo


fisso di sistema).

3.30 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.3.11 Fine sottoprogramma (ciclo fisso)

Sintassi RET

Descrizione Provoca il ritorno al programma chiamante.

3.3.12 Fine programma

Sintassi END

Descrizione Provoca la terminazione del programma.

3.3.13 Chiamata a sottoprogramma CFU (ciclo fisso utente)

Sintassi JSR numero expr.1 expr.2 ... expr.n


JSR “nome” expr.1 expr.2 ... expr-.n
JSR variabile expr.1 expr.2 ... expr.n

Descrizione Prima di passare al blocco successivo viene eseguito il sottoprogramma indicato.


Il sottoprogramma da eseguire può essere specificato:
ù dal numero;
ù dal nome alfanumerico compreso tra i doppi apici “”;
ù dal contenuto di una variabile di tipo stringa (variabile simbolica di sistema -
%nomesub- o variabile simbolica definita dall’utenet).

Il CN cerca questi sottoprogrammi nelle directory di sistema opportunamente impostate.

E' possibile passare al sottoprogramma dei parametri in modo esplicito; i valori numerici
dei parametri vengono ritrovati dal sottoprogramma nei registri automatici VA0, VA1,
... VAn, nell'ordine in cui sono stati impostati.
Il massimo livello di annidamento dei sottoprogrammi è 5.

Esempio Programma principale:

STR NOMESUB

JSR 1 10.0 VA12 (VA10+VA20)

Sottoprogramma di foratura:1
G0 XVA1 YVA2 ;raggiunge posizione foro
G1 ZVA0 F1000 ;esegue foratura
G0 Z100 ;esce dal pezzo
RET ;ritorno al programma principale

Esa/Gv 91752.DP.1.I 3.31


Programmazione Avanzata DP

NOMESUB = “fori”
JSR NOMESUB 10.0 VA12 (VA10+VA20)
JSR “fori” 10.0 VA12 (VA10+VA20)

Sottoprogramma di foratura:fori
G0 XVA1 YVA2 ;raggiunge posizione foro
G1 ZVA0 F1000 ;esegue foratura
G0 Z100 ;esce dal pezzo
RET ;ritorno al programma principale

Vedi anche Inizio sottoprogramma(ciclo fisso). Fine sottoprogramma(ciclo fisso).

3.32 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.3.14 Chiamata a sottoprogramma CFS (ciclo fisso di sistema)

Sintassi G numero par expr par expr ...

dove

par: [A, B, ..., Z] parametro presente nel prototype

Tipo di funzione Modale

Descrizione Prima di passare al blocco successivo viene eseguito il sottoprogramma indicato.


Il numero che segue il codice G indica il sottoprogramma da eseguire, che il CN cerca
nelle directory di sistema opportunamente impostate.
I parametri che compaiono nello stesso blocco, devono essere tra quelli previsti dal
prototype del ciclo fisso, in caso contrario viene segnalato errore. I parametri non
assegnati alla chiamata utilizzano il valore di default se sono autocancellanti, oppure il
valore precedentemente assegnato se sono modali.
I parametri sono accessibili dal ciclo fisso attraverso le variabili automatiche
VA0..VA26, VA0 conterrà il valore del parametro A, VA1 il valore del parametro B,
ecc.
Il massimo livello di annidamento dei sottoprogrammi è 5.

Dopo la prima chiamata ad un ciclo fisso di sistema é possibile invocarlo nei blocchi
successivi specificando i soli parametri che variano rispetto alla chiamata precedente.

Esempio Programma principale:

N30 F100
N40 G17 G0 X 0 Y 0

N50 G100 B 20.0 E "stringa" C 30.0 N197


B 60.0 ;chiamata modale a G100

N58 G80 ;annulla la modalità di G100


N59 JMP 197 ;salta a due linee dopo
N60 G01 X VL100 Y VL104
N197 M10
N199 M30
N200 END

[B] C E [F] 30.0 [G] [N]:100 ;prototype

Vedi anche Inizio sottoprogramma(ciclo fisso). Fine sottoprogramma(ciclo fisso) G80: annulla
la modalità di un ciclo fisso.

Esa/Gv 91752.DP.1.I 3.33


Programmazione Avanzata DP

3.3.15 Annulla la modalitá di un ciclo fisso

Sintassi G80

Descrizione Nei blocchi successivi alla chiamata di un ciclo fisso di sistema, la presenza di uno o più
parametri relativi al ciclo fisso determina la sua esecuzione.
G80 elimina la modalità del ciclo fisso, cioè permette di svincolare dal ciclo fisso
l’interpretazione dei blocchi successivi alla sua chiamata

Allo stesso modo è possibile eliminare la modalità di un ciclo fisso invocando una
funzione G0, G1,G2 ecc...

Esempio Programma principale:

N30 F100
N40 G17 G0 X 0 Y 0

N50 G100 B 20.0 E "stringa" C 30.0 N197


B 60.0 ;chiamata modale a G100

N58 G80 ;annulla la modalità di G100


B 45.0 ;posizionamento dell’asse polare B

oppure
G0 B 45.0 ;posizionamento dell’asse polare B

[B] C E [F] 30.0 [G] [N]:100 ;prototype

Vedi anche Inizio sottoprogramma(ciclo fisso). Fine sottoprogramma(ciclo fisso).

3.34 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.3.16 Chiamata aggancio in “C”

Sintassi CALL <nome funzione> (<param1>, <param>,...)

<param>=<espressione>|^<variabile di output>

Descrizione Dove:
nome funzione rappresenta il nome della funzione in “C” agganciata,

Fra parentesi tonde sono elencati i parametri passati alla funzione (max 32 parametri).
L’accesso ai parametri da parte del ciclo fisso C avviene tramite un contatore degli
argomenti passati ed una lista che li contiene, rispettivamente iArgc e Args. Args per
ogni parametro ne specifica il tipo ed il valore. Queste informazioni consentono di
controllare se il tipo del parametro passato è coerente con quello atteso, la correttezza
della chiamata al ciclo fisso può essere verificata all’interno del ciclo fisso stesso.

Infine, avrà accesso al descrittore del canale ISO e ad una serie limitata di funzionalità .

Esempio
CALL MrlPtiDrill (3, 10)

Vedi anche

Esa/Gv 91752.DP.1.I 3.35


Programmazione Avanzata DP

3.3.17 Uscita forzata con errore dall’interprete

Sintassi ERROR( err_nr )

Descrizione Questa istruzione provoca l’arresto dell’esecuzione del programma con la


visualizzazione di un messaggio di errore che dipende dal valore di err_nr.
La si può utilizzare per segnalare anomalie verificate nella parte di automazione
realizzata in ISO.
L’istruzione ERROR ha effetto diretto solo sul canale che sta eseguendo il programma
che la invoca, altri canali in esecuzione parallela continuano la loro esecuzione a meno
di un intervento da parte del PLC.
Il codice di errore può essere compreso tra 0 e 999, anche se si consiglia di utilizzare
valori superiori a 768 per evitare conflitti con segnalazioni utilizzate dal firmware del
CNC.
Per personalizzare il messaggio da associare all’errore si deve personalizzare il file
RunXXX.err, dove con XXX si intende il triletterale che distingue la lingua della
traduzione (ITA, GER, FRA, ENG ...). La gestione dell’allarme generato è esattamente
la stessa che si deve avere per allarmi generati autonomamente dal CN

Esempio
IF( (VL10 < 1000) AND (VL10 > 0) ) THEN
G0 X VL10
ELSE
ERROR( 800 )
ENDIF

Nell’esempio si controlla il campo di esistenza della variabile VL10 prima di utilizzarla


per un posizionamento, se la variabile è fuori dal campo di esistenza ammesso si segnala
una anomalia.

3.36 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.4 Funzioni speciali

3.4.1 Arresto pre-elaborazione

Sintassi SYN

Tipo di funzione Autocancellante.

Descrizione Arresta l'elaborazione del part program finché l'esecuzione del blocco precedente non è
stata completata.
In assenza di questo comando l'elaborazione del part program è sempre in anticipo di
alcuni blocchi rispetto alla esecuzione per garantire migliori prestazioni.
Questo comando viene utilizzato in particolare per garantire che le informazioni
utilizzate nella parametrica (derivanti ad es. dalla quota di un asse o dallo stato di un
finecorsa) siano verificate al momento giusto e non in anticipo.

Esempio
N100 G1 G91 X-0.5 Y-0.5 ;avvicina di un passo
SYN ;attende assi in posizione
IF (VG500 == 0) JMP 100 ;se non ha raggiunto il finecorsa
effettua un altro passo

3.4.2 Visualizzazione messagi in fase con l’esecutore

Sintassi $ (testo)

Tipo di funzione Autocancellante

Descrizione Visualizza il testo indicato tra parentesi in modo sincrono con l’ esecuzione dei blocchi
che lo precedono.

Esa/Gv 91752.DP.1.I 3.37


Programmazione Avanzata DP

3.4.3 Lettura e scrittura di un registro di memoria

Sintassi VA, VL, VG numero_parametro = %identificatore


[?]%identificatore = VA, VL, VG numero_parametro

Descrizione Consente di leggere e scrivere un registro in shared memory.


‘?’ indica che la scrittura è sincrona con l’esecuzione.
Porre attenzione alla unità di misura utilizzata dalla variabile intera, nel caso di una
quota questa viene memorizzata in millesimi di millimetro (µm), quindi, per disporre di
un valore in virgola mobile utilizzabile con la parametrica, è necessario dividerlo per
1000.

Esempio
?%MYMEAS = VA11

Vedi anche Impostare un Output fisico o logico

3.38 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.4.4 Impostare un Output fisico o logico

Sintassi ?%QW <numero output> = 1 ;setta output fisico in modo sincrono


?%QW <numero output> = 0 ;resetta output fisico in modo sincrono
[?]%C <numero output> = 1 ;setta output logico in modo sincrono o asincrono
[?]%C <numero output> = 0 ;resetta output logico in modo sincrono o asincrono

Descrizione Il carattere ‘?’ indica che l’operazione deve essere eseguita in modo sincrono con
l’esecuzione degli altri blocchi di part program.

?%QW10.4 = 1 ; setta il quinto bit dell’output fisico 10


?%QW10.4=0 ; resetta il quinto bit dell’output fisico 10
?%QW10=10 ; assegna il valore 0x01010 all’output fisico 10

Le scritture sugli output fisici devono essere sincrone con l’esecuzione, per garantire la
consistenza dello stato degli IO che sono accessibili anche dal PLC.

?%C10.2 = 1 ; setta il terzo bit dell’output logico 10


?%C10.2 = 0 ; resetta il terzo bit dell’output logico 10
?%C10= 14 ; assegna il valore 0x01110 all’output logico 10

Si può testare il valore di un input fisico o logico, tramite un IF.


Le scritture di registri fisici (%QW) devono essere fatte in modo sincrono (perché le
modifiche al registro non siano sovrascritte dal refresh del PLC). Le scritture di registri
logici (%C) possono anche essere asincrone se il registro in questione non è usato dal
PLC.

Esempio
?%C2.0 = 1
?%C2 = 13
%C2.1 = 0
%C2 = 14
?%QW2.1 = 1

IF(%QW2 > 100) JMP 110


IF(%IW2.1==1) JMP 200
IF(%C2.1==1) JMP 100

IF((%C2 && %C3 && %C4) || %C2.1 || %C2) JMP 120

Vedi anche Lettura e scrittura di un registro di memoria

Esa/Gv 91752.DP.1.I 3.39


Programmazione Avanzata DP

3.4.5 Abilitazione maschiatura idraulica

Sintassi ADP[Asse, Modo]

Descrizione E’ un comando speciale implementato per risolvere i problemi di non linearità degli assi
idraulici. La maschiatura, è sostanzialmente una interpolazione lineare fra un asse e un
mandrino; il comportamento non lineare di un asse idraulico, soprattutto nelle fasi di
accelerazione e decelerazione, e il fatto che l'utensile e il pezzo sono vincolati in modo
rigido, si traduce in lavorazioni difettose. È stato realizzato un algoritmo di
autoapprendimento dell'errore reale che si ha, istante per istante, sulla posizione dei due
assi; questo viene poi utilizzato per correggere la tensione di controllo del pistone
idraulico per minimizzare l'errore stesso.

Asse Nome asse Pistone Idraulico .


Modo Può assumere uno dei seguenti valori:
ù INIT inizializza lo stato della funzione
ù START sincronizza la partenza del ciclo di
apprendimento
ù STOP ferma il ciclo di apprendimento

Esempio
ADP[Z,INIT]
ADP[Z,START]
G63 S1200 Z0 K5.0 ; maschiatura avanti
G63 S1500 Z80 K-5.0 ; maschiatura indietro
ADP [Z,STOP]

3.40 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.4.6 Definizione Assi di Percorso

Sintassi CON [Asse1, Asse2, ..., Asse n] = 1 ; coppia ON


CON [Asse1, Asse2, ..., Asse n] = 0 ; coppia OFF

Tipo di funzione Modale.

Descrizione CON[Lista Assi] = 1: Coppia ON


Aggiorna il registro che contiene la maschera degli assi di percorso inserendo 1 in
corrispondenza agli assi specificati in Lista Assi.

CON[Lista Assi] = 0: Coppia OFF


Aggiorna il registro che contiene la maschera degli assi di percorso resettando i bit in
corrispondenza agli assi specificati in Lista Assi.

La Maschera Assi di Percorso contiene:

1 in corrispondenza agli assi che devono essere in coppia perché coinvolti


nell’interpolazione programmata;
0 in corrispondenza agli assi che non sono coinvolti nell’interpolazione
programmata.

Lista Assi Elenco degli assi che devono essere in coppia per eseguire
l’interpolazione programmata.
Al Reset del Canale gli assi considerati in coppia coincidono con gli assi
configurati nel canale.
Nota: i comandi CON (così come la G16) non hanno conseguenze
elettromeccaniche; per averle è necessario appoggiarsi al PLC: CON fa
agire il PLC per mettere in coppia/fuori coppia l’asse in questione.
Viceversa potrebbe essere il PLC a compiere l’azione per primo e poi
segnalarlo al canale ISO che ne prende nota internamente tramite le CON.

Esempio
N100 G0 X100 Y200 Z300 ;linear3d
N200 CON[Y] = 0
N300 X200 ;linear2d
N400 CON[Z] = 0
N500 X300 ;singolo
N600 CON[Y,Z] = 1
N700 Z0 ;linear3d

Esa/Gv 91752.DP.1.I 3.41


Programmazione Avanzata DP

3.4.7 Definizione Assi appartenenti al Canale

Sintassi GRP [Asse1, Asse2, ..., Asse n] = 1 ; Assi associati al canale


GRP [Asse1, Asse2, ..., Asse n] = 0 ; Assi disassociato dal canale

Tipo di funzione Modale.

Descrizione GRP[Lista Assi] = 0


Gli assi della lista vengono liberati dal canale che non li utilizzerà più in seguito.
Successive istruzioni che richiedono il movimento di un asse precedentemente liberato,
causa una segnalazione di errore.
GRP[Lista Assi] = 1
Dichiara che il canale ha in gestione la lista degli assi definiti dall’istruzione; la lista
degli assi definiti si va ad aggiungere agli assi che già erano in gestione al canale. Gli
assi a cui si fa riferimento devono essere stati associati al canale in modo statico nella
tabella di configurazione al canale. Si utilizza questo comando per ripristinare una
precedente azione di liberazione di uno o più assi (GRP[..]=0).

Assi condivisi Questo comando viene utilizzato per gestire risorse condivise tra più canali; in questo
scenario si deve avere una configurazione in cui due o più canali hanno uno o più assi
condivisi.
Un asse è condiviso tra più canali quando lo stesso numero logico (system wide)
compare nella configurazione statica di più canali. Gli assi condivisi possono avere
nome diverso sui diversi canali (es. condivisione di X su CH 0 e U su CH 1).

Si deve progettare l’automazione (part program e PLC), in modo che ogni canale possa
agganciare un asse solo quando serve realmente (GRP[ax]=1) e lo rilasci non appena
questo non serve più (GRP[ax]=0).
L’elaborazione di una funzione GRP causa la pubblicazione della maschera degli assi
associati al canale (CO_PATAX, cn[..]rc[30]) oltre alla attivazione di un segnale di
strobe (M_STB_GET, cn[..].rc8.17). L’esecuzione è sospesa in attesa del sincronismo di
acknowledge del PLC (M_ACK_GET, cn[..].rc0.29).
Per maggiori dettagli vedere il manuale “Registri di interfaccia”.

Esempio
G0 X100 Y200 Z300 ;linear3d
GRP[Y] = 0
G1 X200 Z100
Z0
X0
GRP[Y] = 1
G0 X100 Y200

3.42 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.4.8 Correzione a Zone

Sintassi CZO[Asse] = 0 ;correzione a zone disabilitata


CZO[Asse] = 1 ;correzione a zone abilitata

Tipo di funzione Modale.

Descrizione La correzione a zone riduce gli errori derivanti dalle non linearità meccaniche del
sistema di movimentazione. Sono disponibili 255 zone (definite da 256 punti) di uguale
lunghezza, comprese tra un valore minimo ed un valore massimo, per le quali può essere
specificata la correzione opportuna.

Quote inferiori al minimo programmato vengono corrette col valore del primo punto
programmato; quote superiori al massimo sono corrette col valore dell’ultimo punto
programmato.

Soltanto dopo una prima fase di apprendimento, in cui vengono memorizzati i valori di
compensazione, si può attivare la correzione a zone. In questa modalità, ad ogni quota
calcolata viene sommato lo scostamento relativo.

Esempio
CICLO DI APPRENDIMENTO COMPENSAZIONE ASSE Z %1101

CZO[Z] = 0 ; Disabilito Correzione a Zone

VA0 = 0 ; Qta Min [mm]


VA1 = 1000 ; Qta Max [mm]
VA2 = 255 ; Numero Zone
VA3 = ( VA1 - VA0 ) / VA2 ; Size Zona i_esima
VA4 = 0 ; Indice Sample
VA5 = 0 ; Quota Incrementale
VA10 = %ax[2].pa[40] ; Indice Buffer CZone associata

G0 ZVA0 AVA0

N100 POS[Z] = VA5 POS[A] = VA5 FA[Z] = 10000 FA[A] = 10000


N200 SYN
N300 VA6 = QTA(Z)
N400 VA7 = QTA(A)
N500 %czone[VA10].sam[VA4] = ( VA7 - VA6 ) * 1000
N600 VA4 = VA4 + 1
N700 VA5 = VA5 + VA3

RPT 100, 700, VA2

%czone[VA10].qtamin = 0
%czone[VA10].qtamax = VA1 * 1000
%czone[VA10].nzone = VA2

Esa/Gv 91752.DP.1.I 3.43


Programmazione Avanzata DP

M10 ; Coppia Off


CZO[Z] = 1 ; Invia Buffer ed Abilita Correzione a Zone
M11 ; Coppia On
M30

3.4.9 Abilitazione Esecuzione Simulata Programma

Descrizione Il canale si porta nel modo TEST ed esegue:


ù una verifica sintattica delle linee del programma,
ù calcoli parametrici,
ù correzioni raggio e compensazioni lunghezza,
ù analisi di fattibilità (Percorso consentito dal CUT, quote limite SW),
ù esegue controllo di flusso parametrico (IF, JMP).

Esempio
/N100 IF (VG500 != 0) JMP 1000

3.4.10 Identificatore numero canale in esecuzione

Sintassi ChanNr = WHO();

Descrizione Ritorna il numero del canale su cui il programma sta girando.


Si deve utilizzare questa funzione per programmi generici che devono però differenziare
il ciclo tra un canale e l’altro.

Esempio
DBL ChanNr, ChanSpeed;

ChanNr = WHO()

; Legge la velocità programmata al canale


ChanSpeed = %cn[ChanNr].rc[26]

;Differenzio il ciclo per canale 0 e per altri canali


IF( ChanNr == 0 ) THEN
......
ELSE
......
ENDIF

3.44 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.4.11 Lettura quota di tastatura

Sintassi Sample = GET(Ax);

Descrizione Ritorna la quota acquisita da un ciclo di tastatura per l’asse indicato;


Ax può assumere uno dei nomi assi previsti (X, Y, Z, U, V, W, A, B, C).
Quando si utilizza un comando del linguaggio di automazione (_singfc(..) ), questo
causa il congelamento della quota dell’asse a cui fa riferimento al verificarsi di un
evento (chiusura o apertura di un contatto logico o fisico). Succeswssivamente si utilizza
la funzione GET per rendere il valore congelato disponibile per calcoli parametrici.
L’utilizzo tipico è quello di acquisire informazioni per sulla posizione del pezzo da
lavorare e successivamente rielaborare calcoli sulla lavorazione.

Esempio
DBL ChanNr, ChanSpeed;

_singfc( VMAX, X, 2, 1000, 0, “%IW1.15”, 0 )

SYN
VA0 = GET( X )
SFH[X] = VA0

Nell’esempio si esegue un posizionamento con l’asse X fino al rilascio del contatto


associato all’input IW1.15. Al verificarsi di questo evento, la quota dell’asse X viene
congelata. L’istruzione SYN che segue forza la sospensione dello stadio di
preelaborazione fino al completamento del ciclo di tastatura (comando _singfc). In
questo modo la funzione GET accede al valore campionato solo quando questo è
realmente stato acquisito; senza l’istruzione SYN, la GET avrebbe lavorato in anticipo
rispetto alla funzione di tastatura portando all’acquisizione di un valore non valido.

Esa/Gv 91752.DP.1.I 3.45


Programmazione Avanzata DP

3.4.12 Lettura quota dell’asse

Sintassi VL0 = QTA(Ax) ; Quota Teorica


VL0 = QCALC(Ax) ; Quota Teorica

VL0 = QMEAS(Ax) ; Quota Reale

Descrizione Queste tre funzioni ritornano la quote dell’asse a cui fanno riferimento; le prime due
sono funzioni omonime, quindi entrambe ritornano la quota teorica dell’asse, la terza
invece ritorna la quota misurata.
L’omonimia tra le prime due funzioni esiste per motivi di compatibilità con vecchi
programmi.
Il valore ritornato da tutte le tre funzioni è espresso in millimetri, mentre il tipo di dato è
a doppia precisione.

Esempio
DBL QTeor, QReal, FwError;

SYN
QTeor = QCALC(X)
QReal = QMEAS(X)
FwError = ABS(QTeor – QReal)

Nell’esempio si realizza una funzione IMPROPRIA per un canale ISO, ovvero si


effettua il calcolo dell’errore di inseguimento acquisendo la quota teorica e la quota
misurata dell’asse X. L’operazione è impropria perché tra le due acquisizioni l’asse
sicuramente cambierà posizione. Lo si valuti quindi solo per motivi didattici; il valore
istantaneo dell’errore di inseguimento è pubblicato in tempo reale in un registro del CN.

3.46 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.5 Trasformazioni del sistema di riferimento

3.5.1 PRS - Preset origine macchina

Sintassi PRS[Asse] = <expr>

Descrizione Carica la quota specificata nel registro di conteggio dell'asse (operazione detta anche
taratura immediata). Si ottiene l’effetto di forzare l’origine dell’asse selezionato alla
quota determinata dall’espressione.
Il preset origine macchina è indipendente dal livello MLV, cioè ogni volta che si
imposta un nuovo valore di origine per l’asse, questo e’ valido per ogni livello di
trasformazione delle coordinate MLV.

Esempio
PRS[X]=100
PRS[Y]=100 ;forza l’origine macchina nel punto P0(100,100)
G0 X200 Y200 ;trasla al punto P1(X200,Y200) del nuovo
;sistema di riferimento

Vedi anche ROT, .

Esa/Gv 91752.DP.1.I 3.47


Programmazione Avanzata DP

3.5.2 DEF - Ridefinizione run-time del nome degli assi

Sintassi DEF [nome primo asse] = <nome secondo asse>

Tipo di funzione Modale.

Descrizione Ridefinisce il nome del primo asse col il nome del secondo asse. Dal blocco successivo
a quello di programmazione della DEF quando si trova il nome del primo asse, viene
letto dall’interprete come se fosse il secondo asse. Per ridefinire il primo asse come
primo asse bisogna utilizzare la sintassi:

DEF [<nome primo asse>] = <nome primo asse>

Esempio
DEF[X] = U
G33 Z-32.9 X 7 K 3 ;interpretato come G33 Z-32.9 U 7 K 3
DEF[X] = X

Vedi anche SYS,.

3.5.3 SYS - Riassegnazione run-time del nome degli assi

Sintassi SYS [nome primo asse] = <nome secondo asse>

Tipo di funzione Modale.

Descrizione Riassegna il nome del primo asse col il nome del secondo asse. Dal blocco successivo a
quello di programmazione della SYS quando si trova il nome del primo asse, viene letto
dall’interprete come se fosse il secondo asse. Per ridefinire il primo asse come primo
asse bisogna utilizzare la sintassi:

SYS [<nome primo asse>] = <nome primo asse>

A differenza dell’istruzione DEF, la SYS è sensibile alla trasformazione matriciale


impostata con MLV, cioè se si programma una SYS a MLV=2, impostando MLV=1
questa viene disabilitata. Inoltre la SYS è in grado di correggere la direzione delle
interpolazioni circolari quando vengono scambiati tra loro gli assi del piano di
contornatura.

Esempio
SYS[X] = U
G33 Z-32.9 X 7 K 3 ;interpretato come G33 Z-32.9 U 7 K 3
SYS[X] = X

3.48 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

Vedi anche DEF, ROT.

3.5.4 MIR - Lavorazione speculare

Sintassi MIR [nome asse] = 0, 1

Tipo di funzione Modale.

Descrizione MIR [asse] =1

imposta la specularità delle lavorazioni rispetto all’asse. La specularità viene


programmata invertendo la direzione dell’asse .
MIR [ asse] = 0
annulla l’effetto del mirroring sull’asse specificato

Se la specularità è attiva si invertono in modo automatico il senso di rotazione


programmato (G2,G3) e la compensazione del raggio utensile programmata (G41, G42).
Una volta eseguito il profilo di un pezzo è possibile replicarlo in modo speculare
utilizzando l’istruzione MIR, garantendo in questo modo una maggiore leggibilità del
codice.

Y
G
2
1
G

G1

pezzo
programmato

MIR[Y]=0
MIR[X]=1

x
MIR[Y]=1 MIR[Y]=1
MIR[x]=1 MIR[X]=0

Figura 3.2 - Lavorazione speculare

Esa/Gv 91752.DP.1.I 3.49


Programmazione Avanzata DP

Esempio
test specularità %1

F60000 D1

JSR “pezzo1”

MIR[X]=1
JSR “pezzo1”

MIR[Y]=1
JSR “pezzo1”

MIR[X]=0
JSR “pezzo1”

M30

;ATTENZIONE: per garantire che il verso di


;correzione del raggio utensile sia corretto
;la compensazione deve essere attivata e
;disattivata nella sequenza di lavorazione del pezzo

3.50 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

specularitá:pezzo1
G41
G0 X0 Y0
G1 X500 Y500
G1 X1000 Y1000
G2 X1500 Y500 R500
G1 X500
G40 G0 X0 Y0
RET

Vedi anche ROT, MLV.

Esa/Gv 91752.DP.1.I 3.51


Programmazione Avanzata DP

3.5.5 ROT – Rotazione del piano di contornatura

Sintassi ROT[piano] = angolo

Il piano di rotazione deve essere selezionato tra:


- EA Rotazione attorno all’asse X
- EB Rotazione attorno all’asse Y
- EC Rotazione attorno all’asse Z

L’angolo è espresso in gradi

Tipo di funzione Modale.

Descrizione Imposta un angolo di rotazione che verrà applicato alle istruzioni di movimentazione
assi che seguono la ROT.
La rotazione avviene rispetto alle origini pezzo; eventuali traslazioni dell’origine
(ottenute con le istruzioni SHF) vengono applicate dopo la rotazione. Se si intende
traslare e poi ruotare, si deve programmare la rotazione con un livello matriciale (MLV)
inferiore a quello utilizzato per programmare la traslazione

Esempio
ROT[EC]=45
SHF[X]=100
G0 X 0 Y 0 Z 0 F 3000
G1 X 300 F 3000
G1 X 0 Y 300
G1 X 0 Y 0
M30

Se invece si intende prima effettuare una traslazione e poi la rotazione


ROT[EC]=45
MLV=1
SHF[X]=100
G0 X 0 Y 0 Z 0 F 3000
G1 X 300 F 3000
G1 X 0 Y 300
G1 X 0 Y 0
M30

Vedi anche MLV, SHF.

3.52 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.5.6 SHF – Traslazione Origine

Sintassi SHF[Nome asse] = quota

Si applica solo agli assi X, Y e Z.

Tipo di funzione Modale.

Descrizione Trasla il sistema di riferimento. È applicata al livello della matrice di trasformazione


attiva. Programmare delle traslazioni a diversi livelli della matrice di trasformazione,
significa applicare al livello i-esimo tutte le traslazioni programmate nei livelli compresi
tra 0 ed i.
La selezione di un livello della matrice (MLV=k) comporta l’applicazione solo delle
traslazioni attive tra il livello 0 ed il livello k; la programmazione delle traslazioni
eseguita ai livelli compresi tra i e k non viene persa, ciò significa che il ripristino di un
livello della matrice più profondo comporta la riattivazione delle traslazioni fino al
livello i.

Esempio
G0 X0 Y0 F300
MLV = 1
SHF[X] = 100
G1 X0 Y0
MLV = 2
SHF[Y] = 100
G1 X0 Y0
MLV = 0
G1 X0 Y0
MLV = 2
G2 X0 Y0 I-50 J-50
M30

Esa/Gv 91752.DP.1.I 3.53


Programmazione Avanzata DP

Nell’esempio si realizza la seguente interpolazione:

Figura 3.3 -

3.5.7 MLV – Selezione del livello di trasformazione matriciale

Sintassi MLV = 0...5

Tipo di funzione Modale.

La programmazione di MLV consente di congelare i sistemi di riferimento che si


ottengono tramite le operazioni di trasformazione SHF, MIR, SYS e successivamente di
Descrizione
ripristinarli.

Di default è attivo il livello MLV 0, le operazioni di trasformazione programmate, senza


specificare un livello diverso, sono eseguite sul sistema di riferimento macchina.

Programmando MLV=n (n nuovo livello) le successive trasformazioni del sistema di


riferimento vengono associate al livello n. Ogni volta che si passa ad un nuovo livello,
questo eredita il sistema di riferimento associato al livello precedente, quindi le nuove
trasformazioni vengono concatenate a quelle già effettuate.

Si possono utilizzare fino a 6 livelli MLV, da 0 a 5.


Le traslazioni origini pezzo (G54...G57) e le traslazioni origini locali (G58, G59) se
programmate sono attive qualunque sia il livello MLV corrente.

Esempio
; LIVELLO 0
SHF[X] = 500 ; traslazione sull’asse X
MIR[X] = 1 ; specularità dell’asse X
G0 X100 Y100
G0 Y200
G0 X200
G0 Y100
G0 X100

3.54 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

; LIVELLO 1: eredita la specularità e la traslazione su X

MLV=1
SHF[Y]=300 ; traslazione sull’asse Y
MIR[Y]=1 ; specularità dell’asse Y

MIR[X]=1 ; compensa la specularità su X ereditata


; dal LIVELLO 0

G0 X100 Y100
G0 Y200
G0 X200
G0 Y100
G0 X100

;LIVELLO 0
MLV=0 ; ripristino il sistema di coordinate del livello 0
; SHF e MIR solo su X

SHF[X]=0 ;elimina la traslazione sull’asse X


MIR[X]=0 ;elimina la specularità a livello 0
G0 X100 Y100
G0 Y200
G0 X200
G0 Y100
G0 X100

M30

Vedi anche SYS, DEF.

Esa/Gv 91752.DP.1.I 3.55


Programmazione Avanzata DP

3.5.8 Definizione di un piano inclinato

Sintassi MAT[asse1] = [a11 a12 a13 a14]


MAT[asse2] = [a21 a22 a23 a24]
MAT[asse3] = [a31 a32 a33 a34]

Tipo di funzione Modale.

Descrizione La definizione di un piano inclina la si ottiene programmando la matrice di


trasformazione ottenuta dalle formule geometriche conosciute.
Sono necessari sempre tre termini (righe) della matrice, ognuna per ogni asse della terna
cartesiana:

MAT[X] = ...
MAT[Y] = ...
MAT[Z] = ....

Queste possono essere esplicitate in un qualsiasi ordine. Il numero di colonne è 4 per


specificare anche il fulcro della rotazione, ovvero l’offset del piano inclinato rispetto al
sistema di riferimento.

Dopo aver definito un piano inclinato, la programmazione di profili da seguire avviene


come se si stesse lavorando sul piano XY (G17).

Esempio
DBL a11, a12, a13, a14
DBL a21, a22, a23, a24
DBL a31, a32, a33, a34
DBL alfa = 45

; Matrice < DROTX >


a11 = 1.0 a12 = 0.0 a13 = 0.0 a14 = 0.0
a21 = 0.0 a22 = COS(alfa) a23 = -SIN(alfa) a24 = 0.0
a31 = 0.0 a32 = SIN(alfa) a33 = COS(alfa) a24 = 0.0

MAT[ X ] = [ a11 a12 a13 a14 ]


MAT[ Y ] = [ a11 a12 a13 a14 ]
MAT[ Z ] = [ a11 a12 a13 a14 ]

G41
G61
G0 X0 Y0 Z0
G1 X300 F3000
G2 X0 Y0 I150 J0 F1000

Vedi anche DYNMOD

3.56 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.5.9 Abilitazione di un piano inclinato

Sintassi DYNMOD = 0|1

Descrizione Questa funzione abilita (DYNMOD=1) o disabilita (DYNMOD=0) la gestione delle


matrici di trasformazione per la definizione di un piano inclinato.
Se si disabilita un la matrice, un successivo ripristino non richiede la riprogrammazione
della matrice stessa.

Esempio
DBL a11, a12, a13, a14
DBL a21, a22, a23, a24
DBL a31, a32, a33, a34
DBL alfa = 45

; Matrice < DROTX >


a11 = 1.0 a12 = 0.0 a13 = 0.0 a14 = 0.0
a21 = 0.0 a22 = COS(alfa) a23 = -SIN(alfa) a24 = 0.0
a31 = 0.0 a32 = SIN(alfa) a33 = COS(alfa) a24 = 0.0

MAT[ X ] = [ a11 a12 a13 a14 ]


MAT[ Y ] = [ a11 a12 a13 a14 ]
MAT[ Z ] = [ a11 a12 a13 a14 ]

G41
G61
G0 X0 Y0 Z0
G1 X300 F3000
G2 X0 Y0 I150 J0 F1000

DYNMOD = 0 ; Disabilitazione MATRICI

G41
G61
G0 X0 Y0 Z0
G1 X300 F3000
G2 X0 Y0 I150 J0 F1000

DYNMOD = 1

G0 X1000 Y1000
G1 X600 F4000
G3 X1000 I800 J1000

M30

Esa/Gv 91752.DP.1.I 3.57


Programmazione Avanzata DP

3.6 Geometria automatica del piano

3.6.1 Smusso fra due tratti lineari

Sintassi CHA <expr>

Tipo di funzione Autocancellante.

Descrizione Introduce uno smusso fra due tratti lineari. L’entità dello stesso (espressa dopo
l’indirizzo CHA) rappresenta la distanza dei nuovi due spigoli dallo spigolo che viene
smussato.

Esempio
N100 G01 X100.0 CHA 10.0
N200 G01 X200.0 Y 100.0

P4=(200,100)

P3

P1=(0,0) P2
P2'=(100,0)
10.0

10.0

Figura 3.4 - Smusso fra due tratti lineari

Vedi anche Raccordo fra due tratti lineari.

3.58 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.6.2 Raccordo fra due tratti lineari

Sintassi RAD <expr>

Tipo di funzione Autocancellante.

Descrizione Introduce un raccordo fra due tratti lineari. L’entità dello stesso (espressa dopo
l’indirizzo RAD) rappresenta il raggio del raccordo. Il raccordo, per definizione, sarà
tangente al tratto lineare in entrata e a quello in uscita.

Esempio
N100 G01 X100.0 RAD 10.0
N200 G01 X200.0 Y 100.0

P4=(200,100)

10.0

P3
P1=(0,0) P2
P2'=(100,0)

Figura 3.5 - Raccordo fra due tratti lineari

Vedi anche Smusso fra due tratti lineari.

Esa/Gv 91752.DP.1.I 3.59


Programmazione Avanzata DP

3.7 Funzioni ausiliare del Correttore utensile

3.7.1 Gestione Sovrametallo

Sintassi SVR <expr>


SVL <expr>

Tipo di funzione Modale.

Descrizione SVR: Sovrametallo radiale ovvero sul profilo.


SVL: Sovrametallo in lunghezza ovvero in profondità

SVR: programmazione del valore del sovrametallo da lasciare sul profilo lavorato
L’informazione SVR relativa al sovrametallo modifica il valore della compensazione del
raggio utensile se è attivata la correzione (G41, G42) è Raggio Tool + SVR
Disabilitato da Svr 0.0 o da G40 che disabilita la compensazione raggio utensile.

SVL: programmazione sovrametallo lungo l’asse di profondità, cioè l’asse compensato


in lunghezza.
È attivato dalla selezione di un correttore D, esegue una compensazione in lunghezza
pari a SVL nella direzione ortogonale al piano di contornatura selezionato (G17, G18,
G19).
Disabilitato da D0 o Svl 0.0

Esempio N.B. SVL 1 è importante lo spazio !


D1 F2000
G18 G42 SVR 10.0 G00 X250.0 Z250.0
G01 X250.0 Z400.0
G40 G0 X0 Z0

Vedi anche Selezione del Piano di lavoro, Selezione del Piano di contornatura e del verso della
correzione in lunghezza, correzione lunghezza utensile, compensazione raggio
utensile.

3.60 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.7.2 Attacco e distacco in tangenza

Sintassi TGR K<Kr> A<Alfa> B<Beta>


TGR R<r> A<Alfa> B<Beta>

Tipo di funzione Modale.

Descrizione K Kr è il numero di raggi utensile per determinare il raggio di curvatura dell’attacco,


R r è il raggio direttamente il raggio di curvatura dell’attacco
A Alfa è l’ampiezza del tratto circolare di attacco,
B Beta è l’ampiezza del tratto circolare di distacco.

Programmando TGR si abilitano l’attacco e il distacco in tangenza. Vengono effettuati


in modo automatico se è attivo il correttore utensile.
Viene eseguito un attacco in tangenza ogni volta che si incontra G0 seguito da G1 o G2
o G3, inserendo un arco di circonferenza opportuno prima di arrivare sulla superficie del
pezzo, così da attaccarla in modo tangenziale per non rovinare il pezzo. L’arco di
circonferenza introdotto dipende dall’angolo di attacco (Alfa) e dal raggio di curvatura.
In modo analogo viene eseguito il distacco in tangenza ogni volta che si incontra G1 o
G2 o G3 seguito da G0.

Per disabilitare l’attacco e il distacco in tangenza occorre riprogrammare

TGR K0 A0 B0

oppure G40 che disabilita il correttore utensile.

Esempio
TGR K3.0 A45.0 B30.0 (attacco a 45 gradi, distacco a 30
gradi, ampiezza tre raggi utensile)

Esa/Gv 91752.DP.1.I 3.61


Programmazione Avanzata DP

G1

G3

Utensile

Beta

Kr raggi
Sovrametallo utensile
o r raggio di
curvatura

Figura 3.6 - Raccordo in tangenza

3.62 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.7.3 Gestione Vita ed Usura Utensile

Sintassi VTL <espressione>

Descrizione Incrementa il contenuto del campo vita utensile corrente (del correttore selezionato) del
valore assunto dall’espressione.
Se il valore è nullo (VTL0) viene annullato il contenuto del campo vita utensile
corrente.

Gestisce la vita utensile in Conteggio, utilizzando due campi nel record correttore:
ù Preset Vita Utensile
ù Vita Utensile Corrente

Quando la Vita Corrente è > di Preset Vita viene generato un allarme.

Associato ad ogni campo che caratterizza geometricamente l’utensile è stato mappato un


registro per apportare delle correzioni fini a queste dimensioni.

Queste compensazioni saranno abilitate:


ù dalla selezione del correttore Dn (compensazioni in lunghezza),
ù dalle funzioni modali G41/G42 (compensazioni raggio Utensile).

Nella release 0.0 questa compensazione è manuale.

Esempio
D1
G17 G1 X100 Y200
VTL1

Esa/Gv 91752.DP.1.I 3.63


Programmazione Avanzata DP

3.8 Correttore utensile tridimensionale

3.8.1 TWI: Impostazione mandrino

Sintassi TWInumero

Descrizione Dichiara il mandrino correntemente utilizzato.

Esempio
TWI 9

3.8.2 THD: Impostazione portautensile

Sintassi THDnumero

Descrizione Dichiara il portautensile correntemente utilizzato.

Esempio
THD 16

3.64 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.8.3 Convenzione per gli angoli di rotazione


Si adotta la seguente convenzione:

A B

X Y

Figura 3.7 - Convenzione per la programmazione di angoli

3.8.4 Orientamento tramite Coordinate assi polari

Indirizzo Significato
Rotary Head Fork Rotary Head
A Dipendente dalla (rotazione intorno (rotazione intorno all’asse Z)
cinematica all’asse Z)
B Dipendente dalla (rotazione intorno (rotazione intorno all’asse X)
cinematica all’asse X)(*)

(*) In realtà l’asse B non è programmabile, poiché non esiste fisicamente in questa
configurazione un attuatore in grado di movimentarlo. La quota impostata deve
corrisponde all’angolo di predisposizione dell’utensile, tale informazione servirà per
eseguire un controllo di fattibilità.

Se una testa è stata selezionata con TWI, A e B sono coordinate riferite agli assi
attuatori caratteristici della testa selezionata e vengono tenute in considerazione dalla
correzione utensile tridimensionale. Se si desidera muovere gli assi fisici A e B occorre
dare TWI0.

Se agli assi attuatori non possono raggiungere le posizioni suddette si ottiene un errore.

Le coordinate degli assi polari non possono subire trasformazioni matriciali. Se si


vogliono effettuare dette trasformazioni (ad es.: per ruotare anche l’angolo quando è
attiva una rototraslazione) occorre programmare l’orientamento dell’utensile con un
notazione indipendente dalla cinematica (es.: angoli di Eulero).

Esempio
TWI4THD2
G0 X10.00 Y10.00 Z8.00 A0.00 B45.00

Esa/Gv 91752.DP.1.I 3.65


Programmazione Avanzata DP

Vedi anche Orientamento tramite Angoli di Eulero, orientamento tramite Imbardata-


Beccheggio-Rollio (RPY), orientamento tramite componenti di un vettore parallelo
all’asse dell’utensile.

3.8.5 Orientamento tramite Angoli di Eulero

Sintassi MVD=EUL (default)

Descrizione Impostazione dell’interpretazione degli indirizzi EA, EB.

EA = <expr>
EB = <expr>

EA à Rotazione intorno all’asse Z, parallelo all’asse dell’utensile.


EB à Rotazione intorno all’asse X.

Se si vuole variare l’angolazione senza variare l’intersezione dell’utensile con la


superficie da lavorare, devono comunque essere programmate le coordinate degli assi di
contornatura alle stesse quote; in caso contrario non si ha alcun movimento.

Utilizzare G16 per reimpostare la compensazione parassiale.

Esempio
TWI4THD2
MVD=EUL
G0 X10.00 Y10.00 Z8.00 EC0.00 EA45.00

La testa programmata con TWI sia di tipo qualunque con portautensile che punta in
direzione della faccia superiore con gli assi polari in posizione di riferimento.

Faccia Programmazione
superiore EA0.00 EB0.00
anteriore EA0.00 EB90.00
destra EA90.00 EB90.00
posteriore EA180.00 EB90.00
sinistra EA270.00 EB90.00

3.66 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

Z
EB

EA Y

Figura 3.8 - Parallelepipedo a cui sono riferiti i parametri di lavorazione

In alcune applicazioni può essere opportuno abbinare a queste operazioni delle


trasformazioni matriciali per ridefinire gli assi sulle diverse facce e riferirli ad origini
convenienti, in modo da semplificare la programmazione.

Vedi anche Orientamento tramite coordinate assi polari, orientamento tramite Imbardata-
Beccheggio-Rollio (RPY), orientamento tramite componenti di un vettore parallelo
all’asse dell’utensile.

Esa/Gv 91752.DP.1.I 3.67


Programmazione Avanzata DP

3.8.6 Orientamento tramite Imbardata-Beccheggio-Rollio (RPY)

Sintassi MVD = RPY

Descrizione Impostazione dell’interpretazione degli indirizzi EA, EB, EC.

EA = <expr>
EB = <expr>
EC = <expr>

EA à Rotazione intorno all’asse X (Rollio).


EB à Rotazione intorno all’asse Y (Beccheggio).
EC à Rotazione intorno all’asse Z, parallelo all’asse dell’utensile (Imbardata).

Da notare che, se si vuole variare l’angolazione senza variare l’intersezione dell’utensile


con la superficie da lavorare, devono comunque essere programmate le coordinate degli
assi di contornatura alle stesse quote; in caso contrario non si ha alcun movimento.

Se alla successiva movimentazione l’utensile selezionato non può raggiungere


l’orientamento necessario si ottiene un errore.
Utilizzare G16 per reimpostare la compensazione parassiale

Esempio
TWI4THD2
MVD=RPY
G0 X10.00 Y10.00 Z8.00 EC0.00 EB17.93 EA24.32

La testa programmata con TWI sia di tipo qualunque con portautensile che punta in
direzione della faccia superiore con gli assi polari in posizione di riferimento.

Faccia Programmazione
superiore EC0.00 EB0.00 EA0.00
destra EC0.00 EB90.00 EA0.00
posteriore EC90.00 EB90.00 EA0.00
sinistra EC180.00 EB90.00 EA0.00
anteriore EC270.00 EB90.00 EA0.00

3.68 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

Z EC
EA
EB Y

Figura 3.9 - Parallelepipedo a cui sono riferiti i parametri di lavorazione

ORDINE DELLE ROTAZIONI:


1) EC rotazione intorno all’asse Z
2) EB rotazione intorno all’asse Y
3) EA rotazione intorno all’asse X

Vedi anche Orientamento tramite coordinate assi polari, orientamento tramite Imbardata-
Beccheggio-Rollio (RPY), orientamento tramite componenti di un vettore parallelo
all’asse dell’utensile.

Esa/Gv 91752.DP.1.I 3.69


Programmazione Avanzata DP

3.8.7 Orientamento tramite componenti di un vettore parallelo all’asse dell’utensile

Sintassi EP <expr>
EQ <expr>
ER <expr>

Descrizione Se è attivata la compensazione in lunghezza dell’utensile (Dn), è necessario specificare


l’orientamento dell’utensile, programmando i componenti del vettore ô parallelo
all’utensile stesso:

EP à componente X del vettore parallelo all’asse dell’utensile


EQ à componente Y del vettore parallelo all’asse dell’utensile
ER à componente Z del vettore parallelo all’asse dell’utensile

Del vettore viene considerato solo l’orientamento. È quindi possibile introdurre tre
dimensioni di significato noto all’utente come i coseni direttori del versore parallelo
all’asse utensile, la cui direzione va dalla punta dell’utensile verso la base.

Da notare che, se si vuole variare l’angolazione senza variare l’intersezione dell’utensile


con la superficie da lavorare, devono comunque essere programmate le coordinate degli
assi di contornatura alle stesse quote; in caso contrario non si ha alcun movimento.

Se alla successiva movimentazione l’utensile selezionato non può raggiungere


l’orientamento necessario si ottiene un errore.
Utilizzare G16 per reimpostare la compensazione parassiale.

Esempio
G0 X10.00 Y10.00 Z8.00 EP0.707 EQ0.707 ER0.00

La testa programmata con TWI sia di tipo qualunque con portautensile che punta in
direzione della faccia superiore con gli assi polari in posizione di riferimento.

Faccia Programmazione
superiore EP0.00 EQ0.00 ER1.00
destra EP1.00 EQ0.00 ER0.00
posteriore EP0.00 EQ1.00 ER0.00
sinistra EP-1.00 EQ0.00 ER0.00
anteriore EP0.00 EQ-1.00 ER0.00

3.70 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

Figura 3.10 - Parallelepipedo a cui sono riferiti i versori che descrivono l’utensile

In alcune applicazioni può essere opportuno abbinare a queste operazioni delle


trasformazioni matriciali per ridefinire gli assi sulle diverse facce e riferirli ad origini
convenienti, in modo da semplificare la programmazione.

Vedi anche Orientamento tramite coordinate assi polari, orientamento tramite Angoli di
Eulero, orientamento tramite Imbardata-Beccheggio-Rollio (RPY).

Esa/Gv 91752.DP.1.I 3.71


Programmazione Avanzata DP

3.8.8 Compensazione raggio utensile tramite componenti di un vettore

Sintassi EI = <expr>
EJ = <expr>
EK = <expr>

Descrizione La compensazione tridimensionale del raggio utensile dipende dall’angolo di


intersezione tra l’utensile e la superficie da lavorare. E’ possibile specificare
esplicitamente il verso della compensazione dell’utensile programmando il vettore n
ortogonale alla superficie di lavorazione.

EI à componente X del vettore in direzione del quale si desidera effettuare la


compensazione raggio utensile
EJ à componente Y del vettore in direzione del quale si desidera effettuare la
compensazione raggio utensile
EK à componente Z del vettore in direzione del quale si desidera effettuare la
compensazione raggio utensile

Del vettore viene considerato solo l’orientamento. È quindi possibile introdurre tre
dimensioni di significato noto all’utente come anche i coseni direttori del versore
compensazione raggio utensile.

Se EI,EJ,EK sono nulli si annulla la compensazione tridimensionale.

Esempio
G1 X10.00 Y10.00 Z8.00 EI0.707 EJ0.00 EJ0.707

Y
X

[EI,EJ,EK]
Z [EP,EQ,ER]

Figura 3.11 - Informazioni necessarie alla correzione utensile tridimensionale: vettore


ortogonale alla superficie da lavorare e vettore parallelo all’asse utensile

3.72 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

[EP, EQ, ER]

[EP, EQ, ER]

[EI, EJ, EK]


[EI, EJ, EK]

Figura 3.12 - Esempi di programmazione del versore [EI,EJ,EK] normale alla


superficie e del versore [EP,EQ,ER] che descrive l’orientamento dell’utensile

3.8.9 Determinazione automatica del piano di appartenenza e lavorazione con asse in


tangenza

Sintassi PADSID = 0..4

Descrizione Stabilisce la posizione dell’asse dell’utensile rispetto al percorso programmato.

Per indicare il valore di PADSID è necessario identificare una sistema di riferimento


ausiliario che ha l’asse Y’ coincidente con il percorso programmato, l’asse X’
ortogonale a Y’ e appartenente al piano di interpolazione selezionato, l’asse Z’
ortogonale al piano X’, Y’. Il valore di PADSID indica su quale dei quattro quadranti,
determinati dagli assi Z’,Y’ giace l’asse dell’utensile.

PADSID = 0 compensazione lunghezza utensile, non determinata automaticamente


PADSID = 1 l’asse dell’utensile rimane nel quadrante I (in alto a destra)
PADSID = 2 l’asse dell’utensile rimane nel quadrante II (in alto a sinistra)
PADSID = 3 l’asse dell’utensile rimane nel quadrante III (in basso a sinistra)
PADSID = 4 l’asse dell’utensile rimane nel quadrante IV (in basso a destra)
Se PADSID è attivato, indipendentemente dall’impostazione del selettore MVD, gli
indirizzi EA ed EB hanno il seguente significato:

EB = Angolo che l’utensile forma con la normale al piano di interpolazione


EA = Rotazione addizionale intorno all’asse Z (normale al piano di interpolazione)

Esa/Gv 91752.DP.1.I 3.73


Programmazione Avanzata DP

Z
2

Y B
X
AB = percorso programmato
1

PADSID = 1
EA = 0 EB = 45

Sistema di riferimento Z'


(II) (I)
ausiliario

B
Z'
Y'
Y' X'

A X'
Y'≡AB (III) (IV)
X' ∈ G17 (piano di interpolazione)
X' ⊥ Y'
Z' ⊥ X' e Z' ⊥ Y'

Figura 3.13 -

3.74 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

Alcune condizioni di indeterminazione o impossibilità possono verificarsi adottando


questa modalità: se il piano selezionato è G17 ed è programmata una movimentazione
lungo l’asse Z, è impossibile determinare in modo univoco il sistema di riferimento
ausiliario.
Se si programma EA diverso da 0, l’utensile viene ruotato dell’angolo specificato
intorno all’asse normale al piano di interpolazione a partire dalla posizione
autodeterminata; di conseguenza, l’asse dell’utensile non risulterà più normale alla
lavorazione (eccettuate singolaritá con EB a 0 od a 90 gradi).

Y
AB = percorso programmato
X

Z' B
Y'

A X'

PADSID = 1
EA = 0 EB =90

G0 Z100
G0 X50 Y50
G1 Y100

Figura 3.14 -

Attenzione Quando la determinazione automatica del piano di appartenenza è attiva non devono
essere programmati gli indirizzi EP, EQ, ER.

Esa/Gv 91752.DP.1.I 3.75


Programmazione Avanzata DP

Y
Z

X
B

EI 0 EJ 0 EK1
PADSID = 1
EA0 EB90

Attenzione Se si utilizza una fresa a disco è necessario specificare il vettore [EI, EJ, EK] ed il
valore di EA deve essere sempre zero (EA=0).

Esempio

PADSID=1
EA0.00 EB45.00
G0 X10.00 Y10.00 Z8.00
G2 X10.00 Y10.00 Z8.00 I40.00 J40.00

3.76 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.8.10 Discriminazione tra i taglienti intercambiabili di un utensile

Sintassi ICDSID =0..5

Descrizione Stabilisce con quale dei taglienti disponibili, alternativi tra di loro (es.: quelli di una
lama) deve essere seguito il percorso programmato.
E’ possibile stabilire se l’utensile deve asportare materiale a destra o a sinistra del
percorso, analogamente al correttore utensile 2D(G41,G42). Se si utilizza questo
automatismo (in tabella: l’utensile rimane a sinistra/destra del percorso
programmato),deve essere programmato il versore raggio utensile ( EI, EJ, EK).

Un’altra possibilità è quella di determinare automaticamente il tagliente da utilizzare in


funzione del versore materiale. Se si utilizza questo automatismo (in tabella: l’utensile
utilizza sceglie un tagliente adatto tra quelli disponibili), deve essere programmato il
versore raggio utensile ( EI, EJ, EK).

Se, in presenza di correzione utensile tridimensionale, non è possibile asportare


materiale nella direzione stabilita col tagliente selezionato viene segnalato un errore.

ICDSID=0 il centro della lama segue il percorso programmato


ICDSID=1 l’utensile rimane a sinistra del percorso programmato
ICDSID=2 l’utensile rimane a destra del percorso programmato
ICDSID=3 l’utensile utilizza un tagliente adatto tra quelli disponibili
ICDSID=4 l’utensile utilizza il tagliente più distante dal porta utensile (DEFAULT)
ICDSID=5 l’utensile utilizza il tagliente più vicino al porta utensile

Per prevenire danni nel caso non si selezioni un tagliente adeguato, al reset del canale
l’impostazione tagliente più distante dal portautensile diviene attiva.

Quando vengono selezionati il tagliente quello più vicino al portautensile od il centro


della lama, il sovrametallo in lunghezza (SVL) e la profondità assiale (DEA) vengono,
rispettivamente, invertiti di segno od annullati.

Reversibilità Se si seleziona una delle seguenti modalità:


ù ICDSID=0 il centro della lama segue il percorso programmato;
ù ICDSID=1 l’utensile rimane a sinistra del percorso programmato;
ù ICDSID=2 l’utensile rimane a destra del percorso programmato;

Il CNC assume l’utensile come reversibile. Questo significa che, nell’impossibilità di


predisporre i vari cinematismi per orientare l’utensile come richiesto, sarà possibile
tentare assumendo l’orientamento opposto.

Questo comportamento è utile nel caso si abbia un mandrino con un numero di gradi di
libertà non sufficiente e l’orientamento sia determinato automaticamente, ovvero,
opportune matrici di trasformazione siano in grado di alterarlo. La lavorazione risultante
può essere fattibile con l’utensile anche se, in presenza di più gradi di libertà, si sarebbe
optato per un diverso orientamento dello stesso.

Esa/Gv 91752.DP.1.I 3.77


Programmazione Avanzata DP

Notare che la modalità per cui il centro della lama segue il percorso programmato non
ha una variante che implica che l’utensile non è reversibile, quindi utilizzarla solo se
l'utensile e' veramente reversibile per prevenire problemi.

[EP,EQ,ER]

[EI,EJ,EK]

DER

[m,n,o]

dThick/2
(ICDSID=1)

Figura 3.15 -

L’utensile a disco è corretto automaticamente di metà spessore (dThick/2), rimane a


sinistra del percorso programmato (direzione rappresentata in figura dal vettore [m,n,o])
avendo programmato ICDSID=1. Utilizza il tagliente più distante dal porta utensile.

[EP,EQ,ER]
[EI,EJ,EK]

[m,n,o]

DER dThick/2
(ICDSID=1)

Figura 3.16 -

L’utensile a disco è corretto automaticamente di metà spessore (dThick/2), rimane a


sinistra del percorso programmato (direzione rappresentata in figura dal vettore [m,n,o])
avendo programmato ICDSID=1. Utilizza il tagliente più vicino al porta utensile.

3.78 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.8.11 Compensazione profondità di lavorazione lungo l’asse dell’utensile

Sintassi DEA <expr>

Tipo Funzione Modale.

Descrizione DEA esprime la profondità di lavorazione lungo la direzione dell’asse dell’utensile. Le


coordinate vengono compensate in modo automatico, considerando questa componente.

La compensazione può essere modulata tra il punto iniziale e finale di un tratto di


lavorazione. Sull’attuale versione la modulazione non è consentita se il tratto, una volta
compensato, non è un segmento di retta od un arco di cerchio (in genere se il tratto non è
rettilineo e l’asse dell’utensile non è perpendicolare al piano dell’arco).
Da notare che, se si vuole variare la profondità senza variare l’intersezione dell’utensile
con la superficie da lavorare (es.: foratura), devono comunque essere programmate le
coordinate degli assi di contornatura alle stesse quote; in caso contrario non si ha alcun
movimento

Esempio
EP0.707 EQ0.707 ER0.00 ; vettore correttore utensile
G0 X10.0 Y10.0 Z8.0 DEA-5.00 ; impostazione DEA -5.00
DEA5.00 G0 X10.00 Y10.00 ; modifica solo la profondità
; di lavorazione

G17 ; selezione del piano di lavoro


G0 X10.0 Y10.0 Z8.0 DEA-5.00
DEA5.00 G0 X10.00 Y10.00

Vedi Anche Gestione sovrametallo

Esa/Gv 91752.DP.1.I 3.79


Programmazione Avanzata DP

3.8.12 Compensazione profondità di lavorazione lungo il raggio dell’utensile

Sintassi DER <expr>

Tipo Funzione Modale.

Descrizione DER esprime la profondità di lavorazione in direzione del raggio dell’utensile.


Quando DER è impostato ad un valore diverso da 0, la compensazione utensile
tridimensionale deve essere attiva (ECLMOD=1) oppure il versore raggio utensile deve
essere descritto con EI, EJ ed EK.

La compensazione può essere modulata tra il punto iniziale e finale di un tratto di


lavorazione. La modulazione non è consentita se il tratto, una volta compensato, non è
un segmento di retta od un arco di cerchio.
Da notare che, se si vuole variare la compensazione senza variare l’intersezione
dell’utensile con la superficie da lavorare, devono comunque essere programmate le
coordinate degli assi di contornatura alle stesse quote; in caso contrario non si ha alcun
movimento.

Esempio
EI0.707 EJ0.707 EK0.00 ; vettore correzione utensile
G0 X10.00 Y10.00 Z8.00 DER-5.00
DER5.00 G0 X10.00 Y10.00

Vedi Anche Gestione sovrametallo

3.80 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.9 Strategie di attacco al pezzo

3.9.1 Definizioni

ù Attacco Radiale(RAM): modo di attacco al pezzo che prevede un percorso di


avvicinamento in direzione radiale all’utensile. Può essere molto utile per
l’approccio al materiale di una fresa a candela o di una fresa a disco quando viene
tratta come fresa a candela.
ù Attacco Assiale(AAM): modo di attacco al pezzo che prevede un percorso di
avvicinamento in direzione assiale all’utensile. Può essere molto utile per
l’approccio al materiale di una fresa a candela per effettuare una tasca o un’asola.

geometria G1
dell'utensile AAM
G0

G1 RAM
G0

Figura 3.17 - Attacco Assiale e Radiale al pezzo

Esa/Gv 91752.DP.1.I 3.81


Programmazione Avanzata DP

3.9.2 Attacco al pezzo lungo l’asse e/o lungo il raggio dell’utensile

Sintassi EAMMOD =0 |1

Tipo Funzione Modale.

Descrizione Attiva o disabilita la politica di attacco lungo l’asse o lungo la direzione del raggio
dell’utensile.

Se EAMMOD=1, ogni volta che viene programmato G0 viene eseguito l’attacco assiale
o radiale al pezzo in base ai valori dei parametri EAMAAH o EAMRAH.

Sintassi EAMFED = <expr>

Tipo Funzione Modale.

Descrizione Seleziona la velocità di percorrenza del tratto lineare di avvicinamento al pezzo. Se il


parametro non viene specificato, di default viene assunto il valore 0.

Sintassi EAMAAH = <expr>

Tipo Funzione Modale.

Descrizione Se diverso da zero abilita la modalitá di attacco assiale al pezzo. Il valore programmato
stabilisce la lunghezza del tratto lineare di avvicinamento al pezzo, ovvero la distanza
dalla superficie della sommità dell’utensile prima dell’entrata nel materiale. La distanza
non viene influenzata dalla profondità di lavorazione impostata con DEA, mentre viene
influenzata dal sovrametallo in lunghezza impostato con SVL.
Se solo questo parametro è impostato, l’attacco avviene lungo l’asse dell’utensile.

Sintassi EAMRAH = <expr>

Tipo Funzione Modale.

3.82 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

Descrizione Se diverso da zero abilita la modalitá di attacco radiale al pezzo. Il valore programmato
stabilisce la lunghezza del tratto lineare di avvicinamento al pezzo, ovvero la distanza
dell’utensile dal punto individuato sulla superficie prima dell’entrata nel materiale. La
distanza non viene influenzata dalla profondità di lavorazione impostata con DER,
mentre viene influenzata dal sovrametallo sul raggio impostato con SVR.

Se solo questo parametro è impostato, l’attacco avviene lungo la direzione del raggio
dell’utensile.
Quando EAMRAH è impostato a valori diversi da 0, deve essere programmato il
versore raggio utensile ( EI, EJ, EK).

Esempio
EAMMOD=1 ; Abilitazione attacco assiale/radiale
EAMFED=1000 ; impostazione velocità di attacco

EAMAAH=10.00
G0 X10.00 Y10.00 Z8.00 DEA 20.00 ; attacco ASSIALE

EAMRAH=10.00
G0 X10.00 Y10.00 Z8.00 DER 20.00 ; attacco RADIALE

Sintassi EAMAIH = <expr>

Tipo Funzione Modale.

Descrizione E’ possibile suddividere il tratto lineare di attacco al pezzo programmato con EAMAAH
in due segmenti da percorrere con velocità differenti, una specificata da EAMFED,
l’altra specificata da EAMFAI.
EAMAIH esprime il secondo tratto lineare di avvicinamento al pezzo lungo l’asse
dell’utensile a partire dalla superficie del pezzo.

Sintassi EAMFAI = <expr>

Tipo Funzione Modale.

Descrizione Il primo tratto lineare è percorso alla velocità definita dal parametro EAMFED, mentre
il secondo tratto di avvicinamento al pezzo, è percorso alla velocità impostata con
EAMFAI.

Esa/Gv 91752.DP.1.I 3.83


Programmazione Avanzata DP

G0 EP0 EQ0 ER1


versore utensile

G0

EAMAAH
pr G1 velocitá
og EAMFED
ra
m
m
at
o

EP0 EQ0 ER1


G0
versore utensile
G1 velocitá
G0 EAMFAI
EAMAAH
pr
og
ra
m
m
EAMAIH

at
o
G1 velocitá
EAMFED

Figura 3.18 - Parametri caratteristici dell’attacco assiale (a un solo tratto


avvicinamento e a due tratti di avvicinamento)

3.84 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.9.3 Distacco dal pezzo lungo l’asse e/o lungo il raggio dell’utensile

Sintassi XAMMOD = 0 | 1

Tipo Funzione Modale.

Descrizione Attiva o disattiva la politica di distacco lungo l’asse o lungo la direzione del raggio
dell’utensile, in base al valore dei parametri XAMAAH e XAMRAH.

L’attivazione di una delle modalità speciali di estrazione deve essere programmata


prima dell’attacco al pezzo.
Attivando l’estrazione radiale o assiale, dopo aver riconosciuto il primo G0, che
determina l’attacco al pezzo, ogni volta che si incontra G1 o G2 o G3 seguito da G0
viene eseguita l’estrazione programmata.

XAMMOD=0 determina l’estrazione dal pezzo.

Sintassi XAMFED = <expr>

Tipo Funzione Modale.

Descrizione Seleziona la velocità di percorrenza del tratto lineare di allontanamento dal pezzo. Se il
parametro non viene specificato, di default viene assunto il valore 0.

Sintassi XAMAAH =<expr>

Tipo Funzione Modale

Descrizione Se diverso da zero abilita la modalitá di distacco assiale dal pezzo. Il valore
programmato stabilisce la lunghezza del tratto lineare di allontanamento dal pezzo,
ovvero la distanza dalla superficie della sommità dell’utensile dopo l’estrazione dal
pezzo. La distanza non viene influenzata dalla profondità di lavorazione impostata con
DEA, mentre viene influenzata dal sovrametallo in lunghezza impostato con SVL.
Se solo questo parametro è impostato, il distacco avviene lungo l’asse dell’utensile.

Sintassi XAMRAH = <expr>

Tipo di funzione Modale

Esa/Gv 91752.DP.1.I 3.85


Programmazione Avanzata DP

Descrizione Se diverso da zero abilita la modalitá di distacco radiale dal pezzo. Il valore
programmato stabilisce la lunghezza del tratto lineare di allontanamento dal pezzo,
ovvero la distanza dell’utensile dal punto individuato sulla superficie dopo l’uscita dal
materiale. La distanza non viene influenzata dalla profondità di lavorazione impostata
con DER, mentre viene influenzata dal sovrametallo sul raggio impostato con SVR.

Se solo questo parametro è impostato, il distacco avviene lungo un raggio dell’utensile.


Quando XAMRAH è impostato a valori diversi da 0, deve essere programmato il
versore raggio utensile (EI, EJ, EK).

Sintassi XAMAIH = <expr>

Tipo Funzione Modale.

Descrizione E’ possibile suddividere il tratto lineare di distacco al pezzo programmato con


XAMAAH in due segmenti da percorrere con velocità differenti, una specificata da
XAMFED, l’altra specificata da XAMFAI.
XAMAIH esprime la lunghezza del primo tratto lineare di allontanamento dal pezzo
lungo l’asse dell’utensile a partire dalla superficie del pezzo.

Sintassi XAMRIH = <expr>

Tipo di funzione Modale

Descrizione E’ possibile suddividere il tratto lineare di distacco radiale al pezzo programmato con
XAMRAH in due segmenti da percorrere con velocità differenti, una specificata da
XAMFED, l’altra specificata da XAMFAI.
XAMRIH esprime la lunghezza del primo tratto lineare di allontanamento dal pezzo
lungo l’asse dell’utensile a partire dalla superficie del pezzo.

Sintassi XAMFAI = <expr>

Tipo Funzione Modale.

Descrizione Il primo tratto lineare è percorso alla velocità definita da XAMFED, mentre il secondo
tratto di allontanamento al pezzo, è percorso alla velocità specificata da XAMFAI.

3.86 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

Esempio
XAM e EAM attivi %1

F900000
G58 X100 Z200 ;impostazione origine aux.

EAMMOD =1 ;Attivazione attacco assiale


EAMFED =9000
EAMAAH =100

XAMMOD =1 ;attivazione distacco assiale


XAMFED =9000
XAMAAH =500

D1 ;selezione correttore utensile

EP0 EQ0 ER1 ;orientamento dell’utensile

VA0 = 0
VA1 = 400

N10 G0 X100 Y100 Z10 ;distacco e attacco


N20 G2 Y300 R100
N30 G1 X300 Z10
N40 G1 Y100
N50 G1 X100

VA0=VA0+VA1
N60 SHF[X]=VA0

RPT 10,60,2

XAMMOD = 0 ; estrazione dal pezzo


M30

Esa/Gv 91752.DP.1.I 3.87


Programmazione Avanzata DP

EP0 EQ0 ER1


versore utensile G0
G1 velocitá
XAMFED

XAMAHH
mato
ro gram
G0 p

EP0 EQ0 ER1


versore utensile G0
G1 velocitá
XAMFAI
XAMAHH

XAMAIH

ato
amm
rogr
G1 velocitá G0 p
XAMFED

Figura 3.19 - Parametri caratteristici del distacco assiale (a un solo tratto di


allontanamento e a due tratti di allontanamento)

3.88 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.9.4 Compensazione dipendente da una sezione dell’utensile lungo la traiettoria nel


suo punto di attacco

Sintassi ESCMOD= ON|OFF

Tipo di funzione Modale

Descrizione Attiva/disattiva la compensazione dipendente da una sezione di taglio dell’utensile lungo


la traiettoria nel suo punto di attacco.
La sezione dell’utensile a contatto col materiale dipende dalla profonditá a cui è
programmata la lavorazione (DER).
Quando ESCMOD è attiva, le quote di attacco alla lavorazione sono compensate lungo
la traiettoria in base a tale sezione in modo che il punto di inizio lavorazione
programmato sia sulla superficie dell’utensile.

Quando ESCMOD è attivo, il versore raggio utensile deve essere descritto con EI, EJ ed
EK e l’asse di rotazione dell’utensile ed il vettore normale alla superficie devono essere
normali alla traiettoria entro una certa tolleranza. La traiettoria deve essere lineare ed il
tratto di lavorazione sufficientemente lungo da consentire di compensare l’utensile nel
punto di attacco; se, tuttavia, la lavorazione è costituita da un solo blocco G1 ed anche
la compensazione sul punto di distacco è attiva, il tratto di lavorazione deve essere lungo
almeno come la somma delle due compensazioni.

Figura 3.20 -

Esa/Gv 91752.DP.1.I 3.89


Programmazione Avanzata DP

[EI,EJ,EK]

[EP,EQ,ER]

[m,n,o]
P DER

ESC

Figura 3.21 -

Parametri Compensazione lungo la traiettoria dipendente dalla sezione di un utensile a


disco. P è il punto di inizio lavorazione, ESC è la compensazione lungo la traiettoria,
[m,n,o] il versore avanzamento.

3.90 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

[EI,EJ,EK] [EP,EQ,ER]

DER
[m,n,o]
P

ESC

Figura 3.22 - Compensazione lungo la traiettoria dipendente dalla sezione di un


utensile toroidale

Esa/Gv 91752.DP.1.I 3.91


Programmazione Avanzata DP

[EI,EJ,EK] [EP,EQ,ER]

[m,n,o]
P DER

ESC

Figura 3.23 -

Compensazione lungo la traiettoria dipendente dalla sezione di un utensile cilindrico.


L’impostazione di DER non è significativa dal momento che la sezione dell’utensile è
costante (purché con valori superiori a 0).

3.92 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.9.5 Compensazione dipendente da una sezione dell’utensile lungo la traiettoria nel


suo punto di distacco

Sintassi XSCMOD= ON|OFF

Tipo di funzione Modale

Descrizione Attiva/disattiva la compensazione dipendente da una sezione di taglio dell’utensile lungo


la traiettoria nel suo punto di distacco.
Quando attivata, le quote di distacco della lavorazione sono compensate lungo la
traiettoria in modo che il punto di fine lavorazione programmato giaccia sulla superficie
dell’utensile, considerata la profondità di lavorazione specificata con DER.

Quando XSCMOD è attivo, il versore raggio utensile deve essere descritto con EI, EJ ed
EK. L’asse di rotazione dell’utensile deve essere normale alla traiettoria entro una certa
tolleranza. La traiettoria deve essere lineare ed il tratto di lavorazione sufficientemente
lungo da consentire di compensare l’utensile nel punto di distacco; se, tuttavia, la
lavorazione è costituita da un solo blocco G1 ed anche la compensazione sul punto di
attacco è attivata, il tratto di lavorazione deve essere lungo almeno come la somma delle
due compensazioni.

Esa/Gv 91752.DP.1.I 3.93


Programmazione Avanzata DP

3.10 Feed Control

3.10.1 Impostazioni o Modifica dei parametri per il controllo automatico delle velocità

Sintassi FDCDLE= 0|1

Tipo Funzione Modale.

Descrizione Deceleration Look-Ahead Enable.

FDCDLE =1 Abilita l’algoritmo per il controllo automatico delle velocità che consente
di stabilire le velocità di percorrenza dei tratti, tenendo conto della dinamica degli assi,
dei cinematismi utilizzati, delle proprietà della lavorazione entro un certo numero di
passi (per il momento, non impostabile).

FDCDLE=1 Abilita
FDCDLE=0 Disabilita

Sintassi FDCTC0=<expr>
FDCTC1= <expr>
FDCTC2= <expr>
FDCTC3= <expr>

Tipo Funzione Modale.

Descrizione

3.94 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

FDCTC0 à Vel. di Riferimento Passaggio discontinuitá a 90 gradi [mm/min]


Regola le caratteristiche di decelerazione quasi istantanea degli assi
cartesiani.
Valori troppo bassi determinerebbero di profili discontinui poco fluidi, al
contrario valori troppo alti sollecitano troppo la meccanica, generando
così delle oscillazioni parassite ed overshoot in presenza di forti
discontinuità.
FDCTC1 à Vel. Angolare Riferimento Passaggio arco-linea [°/min]
Regola le caratteristiche di decelerazione quasi istantanea degli assi
polari.
Valori troppo bassi determinano profili discontinui con asse in tangenza
poco fluidi, mentre valori troppo alti determinano ritardi nell’arresto
dell’asse vector in presenza di passaggio da tratti curvi a tratti rettilinei, o
a tratti curvi con maggior raggio di curvatura.
FDCTC2 à Vel. di Riferimento Passaggio discontinuitá à0 gradi [mm/min]
Regola le caratteristiche di accelerazione quasi istantanea degli assi
cartesiani .
Valori troppo bassi determinerebbero di profili discontinui poco fluidi, al
contrario valori troppo alti sollecitano troppo la meccanica, generando
così delle oscillazioni parassite ed overshoot anche in presenza di deboli
discontinuitá.
FDCTC3 à Vel. Angolare Riferimento Passaggio linea-arco [°/min]
Regola le caratteristiche di accelerazione quasi istantanea degli assi
polari.
Valori troppo bassi determinano profili discontinui con asse in tangenza
poco fluidi, mentre valori troppo alti determinano ritardi nell’arresto
dell’asse vector in presenza di passaggio da tratti curvi a tratti rettilinei, o
a tratti curvi con minor raggio di curvatura.

Esa/Gv 91752.DP.1.I 3.95


Programmazione Avanzata DP

3.11 Posizionamenti Sincroni ed Asincroni ad Assi indipendenti

3.11.1 Posizionamenti sincroni ad assi indipendenti.

Sintassi POS[Asse] = quota


FA[Asse] = velocità

Tipo Funzione Autocancellante.

Descrizione Il posizionamento dell’asse selezionato non è controllato dal processo principale del
canale, ma dal processo corrispondente all’asse, che utilizza i parametri caratteristici
dell’asse stesso .
FA[ ] specifica la velocità di posizionamento in mm/min.

E’ possibile programmare nello stesso blocco la movimentazione degli assi di


posizionamento e degli assi di contornatura. Gli assi partono allo stesso istante, ma
possono arrivare al loro target in tempi diversi, dal momento che ciascuno degli assi
movimentati con POS utilizza accelerazione e velocità diversa.
La commutazione del blocco ISO avviene quando tutti gli Assi hanno raggiunto il target.

Esempio
G1 X100 Y50 F1000 POS[U]=200 POS[B]=50 FA[U]=500 FA[B]=2000
G0 X0 Y0 ;questo blocco è eseguito solo quando i
;posizionamenti di X,Y,A e B sono terminati

Vedi Anche Posizionamento asinconi ad assi indipendenti.

3.96 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.11.2 Posizionamenti asincroni ad assi indipendenti

Sintassi POSA[Asse] = quota


FA[Asse] = velocità
WAITP[Lista Assi]

Tipo Funzione Autocancellante.

Descrizione La movimentazione dell’asse selezionato non è controllata dal processo principale


canale, ma dal processo corrispondente all’asse.
E’ possibile programmare nello stesso blocco ISO la movimentazione degli assi di
contornatura e degli assi di posizionamento (POSA[]), in questa situazione gli assi
partono allo stesso istante, ad arrivano al loro target in tempi diversi.
Utilizzando POSA invece di POS la commutazione del blocco ISO non attende che
l’asse raggiunga il target degli assi di posizionamento.

FA[ ] stabilisce la velocità di posizionamento[mm/min].

L’istruzione WAITP[] consente di risincronizzarsi attendendo il termine del


posizionamento dell’asse/i specificato.

Esempio
G0 X200 POSA[U]=300 POSA[B]=200 FA[U]=150 FA[B]=300

WAITP[B] ; attende il posizionamento di B


X300 POSA[B]=300
WAITP[U] ; attende il posizionamento di U
POSA[U]=350
X400
WAITP[U,B] ; attende il posizionamento di U e B

Vedi Anche Posizionementi sincroni ad assi indipendenti.

Esa/Gv 91752.DP.1.I 3.97


Programmazione Avanzata DP

3.11.3 Orientamento parallelo del mandrino

Sintassi POSA[S] = quota


WAITP[Lista Assi]

Tipo Funzione Autocancellante.

Descrizione L’istruzione POSA[S] consente di orientare il mandrino.


La commutazione del blocco ISO non attende che il mandrino abbia terminato
l’orientamento.
Con l’istruzione WAITP[S] si attende il termine dell’orientamento.

Esempio
G1 B0 F1000 POSA[S] = 45.0
Z200
X0 Y0
WAITP[S]

Vedi Anche Orientamento Mandrino, Orientamento al volo del mandrino.

3.98 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.12 Modifica dei parametri di un asse

I parametri che caratterizzano la dinamica di un asse sono impostati nei parametri


macchina ([Parametri][Sistema][Parametri Asse]).
Le seguenti istruzioni consentono di modificare direttamente da PartProgram tali
parametri.

3.12.1 Abilitazione Errore di Inseguimento

Sintassi FWR[Asse] = 0|1

Tipo Funzione Modale.

Descrizione Abilita o Disabilita in modo sincrono il controllo sull’errore di inseguimento.


Asse: Nome asse.
Modo: 0 Disabilita Controllo su Errore Inseguimento
Modo: 1 Abilita Controllo su Errore Inseguimento

Esempio
FWR[X] = 0
FWR[X] = 1

3.12.2 Impostazione tempo di accelerazione di un asse

Sintassi ACC[Asse] = <expr>

Tipo Funzione Modale.

Descrizione Modifica in modo sincrono la accelerazione dell’asse specificato.


L’accelerazione impostata esprime il tempo [in secondi] necessario per raggiungere la
velocità massima.

Esempio
ACC[X] = 1.2

Esa/Gv 91752.DP.1.I 3.99


Programmazione Avanzata DP

3.12.3 Impostazione tempo di decelerazione di un asse

Sintassi DEC[Asse] = espressione

Tipo Funzione Modale.

Descrizione Modifica in modo sincrono la decelerazione dell’asse specificato.


L’espressione esprime il tempo [in secondi] per compiere una decelerazione pari al delta
velocità massimo.

Esempio
DEC[X] = 1.5

3.12.4 Impostazione tempo di decelerazione di emergenza di un asse

Sintassi DEE[Asse] = <expr>

Tipo Funzione Modale.

Descrizione Modifica in modo sincrono la decelerazione di emergenza dell’asse specificato.


L’espressione specifica il valore di decelerazione in secondi necessaria a compiere il
delta velocità massimo in una condizione di emergenza.

Esempio
DEE[X] = 1.5

3.100 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.12.5 Impostazione velocità massima dell`asse

Sintassi VEL[Asse] =<expr>

Tipo Funzione Modale.

Descrizione Modifica in modo sincrono il valore in mm/min, della velocità massima dell’asse
specificato.

Esempio VEL[X] = 1000

VEL[x]

ACS[x]
DEE[x] t
DEC[x]

Figura 3.24 - Parametri caratteristici di un asse

Esa/Gv 91752.DP.1.I 3.101


Programmazione Avanzata DP

3.12.6 Impostazione tempo di rampa ad ‘S’ di un asse

Sintassi ACS[Asse] =<expr>

Tipo Funzione Modale.

Descrizione Imposta in modo sincrono il parametro che caratterizza la rampa ad `S` dell’asse
specificato. Il tempo di rampa definisce il tempo che impiega l'accelerazione a
raggiungere il valore massimo programmato.
Il valore del ritardo della rampa ad ‘S’ non deve essere maggiore della metà del tempo
di accelerazione.

Esempio ACS[X] = 1.5

Vmax

Acc

t
tempo
rampa ad S

tempo di
accelerazione
rampas.vsd

Figura 3.25 - Rampa ad S

3.102 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.12.7 Impostazione del jerk di un asse

Sintassi JRK[Asse] =<expr>

Tipo di funzione Modale

Descrizione Imposta in modo sincrono il parametro che caratterizza la variazione dell’accelerazione


(JERK) dell’asse associato. Il valore impostato indica la variazione di accelerazione
nell’unità di tempo, e si esprime in mm/sec3.

Esempio
JRK[X] = 22500

Esa/Gv 91752.DP.1.I 3.103


Programmazione Avanzata DP

3.13 Modifica dei parametri di interpolazione

I parametri che caratterizzano la dinamica di interpolazione sono impostati nei parametri


macchina ([Parametri][Sistema][Parametri Canale]).
Le seguenti istruzioni consentono di modificare direttamente da PartProgram tali
parametri.

3.13.1 Impostazione tempo di accelerazione di interpolazione

Sintassi ACCTRJ = <expr>

Tipo di funzione Modale

Descrizione Modifica in modo sincrono la accelerazione caratteristica delle interpolazioni del canale.
L’accelerazione impostata esprime il tempo [in secondi] necessario per raggiungere la
velocità massima.

Esempio
ACCTRJ = 1.2

3.13.2 Impostazione tempo di decelerazione di interpolazione

Sintassi DECTRJ = <expr>

Tipo di funzione Modale

Descrizione Modifica in modo sincrono la decelerazione caratteristica delle interpolazioni del


canale. L’espressione esprime il tempo [in secondi] per compiere una decelerazione pari
al delta velocità massimo.

Esempio
DECTRJ = 1.2

3.104 91752.DP.1.I Esa/Gv


DP Programmazione Avanzata

3.13.3 Impostazione velocità massima di interpolazione

Sintassi VELTRJ =<expr>

Tipo di funzione Modale

Descrizione Modifica in modo sincrono il valore in mm/min, della velocità massima di


interpolazione del canale.

Esempio
VELTRJ= 1000

3.13.4 Impostazione tempo di rampa ad ‘S’ di interpolazione

Sintassi ACSTRJ =<expr>

Tipo di funzione Modale

Descrizione Imposta in modo sincrono il parametro che caratterizza la rampa ad `S` di interpolazione
del canale. Il tempo di rampa definisce il tempo che impiega l'accelerazione a
raggiungere il valore massimo programmato. Il valore del ritardo della rampa ad ‘S’
non deve essere maggiore della metá del tempo di accelerazione.

Esempio
ACS[X] = 1.5

Esa/Gv 91752.DP.1.I 3.105


Programmazione Avanzata DP

3.13.5 Impostazione del jerk in interpolazione

Sintassi JRKTRJ =<expr>

Tipo di funzione Modale

Descrizione Imposta in modo sincrono il parametro che caratterizza la variazione dell’accelerazione


(JERK) durante una interpolazione del canale. Il valore impostato indica la variazione di
accelerazione nell’unità di tempo, e si esprime in mm/sec3.

Esempio
JRKTRK = 22500

FINE CAPITOLO

3.106 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

4 Cicli Fissi di Sistema (CFS)

Definizione I Cicli Fissi di Sistema sono le funzioni G preparatorie G81-G89 che consentono di
definire i parametri tecnologici delle lavorazioni di foratura, maschiatura, alesatura.
L’attivazione del ciclo fisso avviene nel primo blocco ISO che esplicita un indirizzo di
movimentazione (X, Y).
Per la definizione della geometria (insieme dei punti cartesiani dove eseguire la stessa
lavorazione tecnologica) sono fornite le Macroistruzioni G192-G193.
G192: Reticolo Fori
G193: Fori su Arco di Circonferenza.

Esa/Gv 91752.DP.1.I 4.1


Cicli Fissi di Sistema (CFS) DP

4.1 Macro Istruzione G192 - generazione di un reticolo di punti

Sintassi G192 X<> Y<> IA<> JA<> NRA<> IB<> JB<> NRB<>

Interfaccia Ciclo Fisso G192:


X Coordinata P0x
Y Coordinata P0y
IA Riga: Componente Incremento su X
JA Riga: Componente Incremento su Y
NRA Riga: Numero fori
IB Colonna: Componente Incremento su X
JB Colonna: Componente Incremento su Y
NRB Colonna: Numero fori

Tipo di funzione Autocancellante.

Descrizione Definisce la geometria per la generazione di un reticolo di punti


I parametri passati nella chiamata hanno le seguenti caratteristiche:

IA: se omesso IA = 0
JA: se omesso JA = 0
NRA: se omesso si assume NRA = 1
IB: se omesso IB = 0
JB: se omesso JB = 0
NRB: se omesso NRB = 1

Esempio
Foratura,centratura %1181
N10 G0 X0 Y0 Z200
(Definizione Parametri Tecnologici)
N20 G81 DR125 DE100 DH125 FW150 FR15000
(Attivazione Ciclo Fisso Foratura)
N30 G192 X-25 Y-25 IA10 JA5 NRA5 IB5 JB10 NRB6
N50 G80
N60 M10
N70 M30
N80 END

4.2 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

Macro istruzione G192


( Reticolo di fori )

Y+
< IA > = 5.00

< JB >= 5.00


30.00
Y
(coordinate P0y)

< NRB >=4

< NRA >=6

10.00
X (coordinate P0x) X+

G192 X<> Y<> IA<> JA<> NRA<> IB<> JB <> NRB<>


X Coordinata P0x
Y Coordinata P0y
IA Riga: componente incremento su X
JA Riga: componente incremento su Y
NRA Riga: numero fori
IB Colonna: componente incremento su X
JB Colonna: componente incremento su Y
NRB Colonna: numero fori

In questo caso:
G192 X 10.00 Y 30.00 IA 5.00 NRA 6 JB 5.00 NRB 4
JA se omesso = 0
IB se omesso = 0

Figura 4.1 - Profilo eseguito dalla MacroIstruzione G192

Esa/Gv 91752.DP.1.I 4.3


Cicli Fissi di Sistema (CFS) DP

Macro istruzione G192


( Reticolo di fori )

Y+
< IA >= 5.00

30.00
Y < JA >= 1.50
(coordinate P0y)
< JB>= 5.00

< IB >= 1.50

< NRB > = 4

< NRA > = 6

10.00
X (coordinate P0x) X+

G192 X<> Y<> IA<> JA<> NRA<> IB<> JB <> NRB<>


X Coordinata P0x
Y Coordinata P0y
IA Riga: componente incremento su X
JA Riga: componente incremento su Y
NRA Riga: numero fori
IB Colonna: componente incremento su X
JB Colonna: componente incremento su Y
NRB Colonna: numero fori

In questo caso:
G192 X 10.00 Y 30.00 IA 5.00 JA 1.50 NRA 6 JB 1.50 JB 5.00 NRB 4

Figura 4.2 - Profilo eseguito dalla MacroIstruzione G192

4.4 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

4.2 Macro Istruzione G193 - generazione di punti distribuiti su un arco di


circonferenza

Sintassi G193 X<> Y<> AR<> I<> J<> NR<>

Interfaccia Ciclo Fisso G193:


X Coordinata P0x
Y Coordinata P0y
AR Angolo tra due fori
I Centro Cx
J Centro Cy
NR Numero Fori

Tipo di funzione Autocancellante.

Descrizione Definisce la geometria per la generazione di punti distribuiti su un arco di circonferenza.


I parametri passati nella chiamata hanno le seguenti caratteristiche:

AR: se omesso AR = 360


I: obbligatorio
J: obbligatorio
NR: se omesso NR = 1

Esempio
Foratura,centratura %1181
N10 G0 X0 Y0 Z200
(Definizione Parametri Tecnologici)
N20 G81 DR125 DE100 DH125 FW150 FR15000
(Attivazione Ciclo Fisso Foratura)
N30 G193 X0 Y0 AR90 I100 J0 NR3
N50 G80
N60 M10
N70 M30
N80 END

Esa/Gv 91752.DP.1.I 4.5


Cicli Fissi di Sistema (CFS) DP

Macro istruzione G193


(Fori su arco di circonferenza)

Y+

AR 20.00

50.00 NR = 5
Coordinate
per
P0y

30.00

40.00
45.00
I X+
Coordinate per
P0x

G193 X< > Y< > AR< > I< > J< > NR< >

X Coordinata P0x
Y Coordinata P0y
AR Angolo tra due fori, se l'angolo è positivo esegue una foratura in senso antiorario,
l' angolo è negativo esegue una foratura in senso orario.
I Centro Cx
J Centro Cy
NR Numero Fori

In questo caso:
G193 X 45.00 Y 50.00 AR -20.00 I 40.00 J 30.00 NR 5
AR se omesso AR = 360
NR se omesso NR = 1

Figura 4.3 - Profilo eseguito dalla MacroIstruzione G193

4.6 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

4.2.1 Ciclo Fisso G81: foratura

Sintassi G81 DR<> DE<> DH<> FW<> FR<> WE<>

Interfaccia Ciclo Fisso G81:


DR (VA23) Quota Z raggiunta in Rapido (Dimension Rapid)
DE (VA3) Quota Z di fine foro raggiunta in Feed (Dimension End)
DH (VA4) Quota Z di ritorno alto (Dimension Home)
FW (VA5) Velocità di lavoro asse Z (Feed Work)
FR (VA6) Velocità di ritorno alto (Feed Return)
WE (VA7) Tempo di sosta fine foro (Wait End)

Tipo di funzione Modale.

Descrizione Definisce i parametri tecnologici da utilizzare in foratura


La funzione G80 (messa sola sulla linea del PP), oppure una movimentazione G0 Z
(quota) cancellano esplicitamente la modalità G81.
I parametri passati nella chiamata hanno le seguenti caratteristiche:

DR: modale
DE: modale
DH: se omesso si assume DH = DR
FW: modale
FR: se omesso si assume Vel max (dati macchina).
WE: se omesso si assume WE = 0

Esempio
Foratura,centratura %1181

N10 G0 X0 Y0 Z200
(Definizione Parametri Tecnologici)
N20 G81 DR125 DE100 DH125 FW150 FR15000
(Attivazione Ciclo Fisso Foratura)
(P0x, P0y = 10, 10)
(P1x, P1y = 40, 50)
N30 X10 Y10
N40 X40 Y50
N50 G80 (messa sola sulla linea )
N60 M10
N70 M30
N80 END

Esa/Gv 91752.DP.1.I 4.7


Cicli Fissi di Sistema (CFS) DP

Ciclo Fisso G81 Centratura e Foratura

2 5

3 4

P0x, P0y P1x, P1y

1) Posizionamento degli assi X,Y (P0x, P0y) primo foro.


2) Discesa rapida di Z per inizio lavoro DR .
3) Quota Z di fine foro raggiunta in FeedDE.
4) Quota Z di ritorno altoDH.
5) Posizionamento degli assi X,Y (P1x, P1y).

Figura 4.4 - Profilo eseguito dal ciclo fisso G81

4.8 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

4.2.2 Ciclo Fisso G83: foratura con scarico o rottura truciolo

Sintassi G83 DR<> DE<> DH<> FW<> FR<> WE<> NI<> WI<>

Interfaccia Ciclo Fisso G83:


DR (VA23) Quota Z raggiunta in Rapido (Dimension Rapid)
DE (VA3) Quota Z di fine foro raggiunta in Feed (Dimension End)
DH (VA4) Quota Z di ritorno alto (Dimension Home)
FW (VA5) Velocità di lavoro asse Z (Feed Work)
FR (VA6) Velocità di ritorno alto (Feed Return)
WE (VA7) Tempo di sosta fine foro (Wait End)
NI (VA19) Numero di Incrementi (Number Increment)
WI (VA23) Tempo si sosta tra incrementi (Wait Increment)

Definisce i parametri tecnologici da utilizzare in foratura con scarico truciolo o rottura


truciolo.

Tipo di funzione Modale.

Descrizione Definisce i parametri tecnologici da utilizzare in foratura.


La funzione G80 (messa sola sulla linea del PP), oppure una movimentazione G0 Z
(quota) cancellano esplicitamente la modalità G83.
I parametri passati nella chiamata sono autocancellanti.
Il parametro DE determina la profondità dei fori, mentre DH la quota prefissata
dell’asse Z per uscire dal pezzo.
Con NI, si determina il numero di fasi della lavorazione. Viene preso il dato della
profondità e diviso per il numero espresso in NI, ottenendo così automaticamente
l’incremento per ogni fase di lavorazione.
Verrà eseguita quindi una prima fase di foratura raggiungendo il primo punto calcolato
per l’asse Z. A questo punto si attua il ritorno in rapido fino alla quota descritta in DR .
L’asse Z riparte in rapido fino a raggiungere un nuovo punto dato dalla quota da cui si
era precedentemente allontanato, meno la quota di 1mm. Da qui, con una
movimentazione di tipo G1, viene ripresa la foratura fino al nuovo punto che viene
calcolato automaticamente dal ciclo.
Queste fasi si ripeteranno fino a che non si è raggiunto la quota indicata in DE.

I parametri passati nella chiamata hanno le seguenti caratteristiche:


DR: modale
DE: modale
DH: se omesso si assume DH = DR
FW: modale
FR: se omesso si assume Vel max (dati macchina).
WE: se omesso si assume WE = 0
NI: modale
WI: se omesso si assume WI = 0

Esa/Gv 91752.DP.1.I 4.9


Cicli Fissi di Sistema (CFS) DP

Esempio Esecuzione di una foratura profonda suddivisa in 5 fasi.


Prova foratura a tratti %1183

N10 G0 X0 Y0 Z200
(Definizione Parametri Tecnologici)
N20 G83 DR125 DE100 DH125 FW150 FR15000 NI5
(Attivazione Ciclo Fisso Foratura)
(P0x, P0y = 10, 10)
(P1x, P1y = 40, 50)
N30 X10 Y10
N40 X40 Y50
N50 G80(messa sola sulla linea )
N60 M10
N70 M30
N80 END

4.10 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

Ciclo fisso G83 con scarico o rottura truciolo.

- Con scarico truciolo con WE diverso da 0.


WI non programmato

2 DR in questo caso DH=DR.

3
a NI numero d'incrementi
4 (in questo caso = 3)
a

DE
5
WE
1) Posizionamento degli assi X,Y (asse del foro).
2) Posizionamento di Z in rapido DR.
3-4-5) Numero d'incrementi programmato in NI.
5) Quota di fine foro programmata in DE, con tempo di sosta
programmato in WE.
Al termine di ogni incremento l'utensile viene richiamato in
rapido alla quota programmata in DH (se non è programmata
DH=DR ) per riportarsi di nuovo in Feed alla profondità già
lavorata meno una quantità < a > fissa a 1mm.

- Con rottura truciolo con WE = 0.

DR in questo caso DH=DR.


2

3 WI
NI numero d'incrementi
(in questo caso = 3)
4 WI

DE
5 WE

1) Posizionamento degli assi X,Y (asse del foro).


2) Posizionamento di Z in rapido DR.
3-4-5) Numero d'incrementi programmato in NI.
Incrementi 3 e 4 contempo di sosta programmato WI.
5) Quota di fine foro programmata in DE, con tempo di sosta
programmato in WE.

Figura 4.5 - Profilo eseguito dal ciclo fisso G83

Esa/Gv 91752.DP.1.I 4.11


Cicli Fissi di Sistema (CFS) DP

4.2.3 Ciclo Fisso G84: maschiatura

Sintassi G84 DR<> DH<> DE<> RW<> RR<> WE<> P<>

Interfaccia Ciclo Fisso G84:


DR (VA23) Quota Z raggiunta in Rapido (Dimension Rapid)
DE (VA3) Quota Z di fine foro raggiunta in Feed (Dimension End)
DH (VA4) Quota Z di ritorno alto (Dimension Home)
DW (VA5) Velocità di lavoro asse Z (Revolution Work)
RR (VA6) Velocità di ritorno alto (Revolution Return)
WE (VA7) Tempo di sosta fine foro (Wait End)
P (VA19) Passo (Pitch)

Tipo di funzione Modale.

Descrizione Esegue ciclo fisso di maschiatura


La funzione G80 (messa sola sulla linea del PP), oppure una movimentazione G0 Z
(quota) cancellano esplicitamente la modalità G84.
Il parametro DE identifica la quota di fine maschiatura
Una volta stabilite le quote X, Y del foro e la quota di avvicinamento al pezzo, è
importante definire la velocità di lavoro dell’asse Z RW, infatti un valore positivo
comporta una rotazione destrorsa del mandrino, viceversa si avrà una rotazione
sinistrorsa mettendo un (-) davanti alla velocità di lavoro RW.
Raggiunta la quota di fine maschiatura, viene introdotto un arresto temporizzato, quindi
invertendo il senso di rotazione mandrino, si ritorna, con la nuova velocità programmata
in RH, alla quota scritta nel parametro DH.

I parametri passati nella chiamata hanno le seguenti caratteristiche:


DR: modale
DE: modale
DH: se omesso si assume DH = DR
RW: modale
RR: se omesso assume il valore RW
WE: se omesso si assume WE = 0
P: modale

4.12 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

Esempio Esecuzione della maschiatura di un foro con senso del mandrino destrorso in ingresso,
sinistrorso in uscita, quindi RW è positiva.

Prova MASCHIATURA %1184


N10 G0 X0 Y0 Z200
(Definizione Parametri Tecnologici)
N20 G84 DR125 DE100 DH125 RW150 RR15000 P0.75
(Attivazione Ciclo Fisso Foratura)
(P0x, P0y = 10, 10)
(P1x, P1y = 40, 50)
N30 X10 Y10
N40 X40 Y50
N50 G80(messa sola sulla linea )
N60 M10
N70 M30
N80 END

4.2.4 Ciclo Fisso G86: Alesatura

Sintassi G86 DR<> DE<> DH<> FW<> FR<> WE<>

Interfaccia Ciclo Fisso G86:


DR (VA23) Quota Z raggiunta in Rapido (Dimension Rapid)
DE (VA3) Quota Z di fine foro raggiunta in Feed (Dimension End)
DH (VA4) Quota Z di ritorno alto (Dimension Home)
FW (VA5) Velocità di lavoro asse Z (Feed Work)
FR (VA6) Velocità di ritorno alto (Feed Return)
WE (VA7) Tempo di sosta fine foro (Wait End)

Tipo di funzione Modale.

Descrizione Esegue ciclo fisso di alesatura con sosta a fondo del foro e ritorno con mandrino fermo.

La funzione G80 (messa sola sulla linea del PP), oppure una movimentazione G0 Z
(quota) cancellano esplicitamente la modalità G86.

DR: modale
DE: modale
DH: se omesso si assume DH = DR
FW: modale
FR: se omesso si assume Vel max (dati macchina
WE: se omesso si assume WE = 0

Esa/Gv 91752.DP.1.I 4.13


Cicli Fissi di Sistema (CFS) DP

Esempio Esecuzione di due fori, quindi tramite ciclo fisso G86, relativa alesatura

Prova ALESATURA CON RITORNO MANDRINO FERMO %1185


N10 G0 X0 Y0 Z200
(Definizione Parametri Tecnologici)
N20 G86 DR125 DE100 DH125 FW150 FR15000
(Attivazione Ciclo Fisso Foratura)
(P0x, P0y = 10, 10)
(P1x, P1y = 40, 50)
N30 X10 Y10
N40 X40 Y50
N50 G80(messa sola sulla linea )
N60 M10
N70 M30
N80 END

4.14 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

4.2.5 Ciclo Fisso G88: foratura di pareti distanziate

Sintassi G88 DRA<> DEA<> DH<> DRB<> DEB<> FW<> FR<> WE<>

Interfaccia Ciclo Fisso G88:


DRA (VA23) Quota Z prima parete raggiunta in Rapido (Dimension Rapid PtoA)
DEA (VA3) Quota Z di fine foro raggiunta in Feed (Dimension End PtoA)
DH (VA4) Quota Z di ritorno alto (Dimension Home)
DRB (VA23) Quota Z seconda parete raggiunta in (Dimension Rapid PtoB)
Rapido
DEB (VA3) Quota Z di fine foro raggiunta in Feed (Dimension End PtoB)
FW (VA5) Velocità di lavoro asse Z (Feed Work)
FR (VA6) Velocità di ritorno alto (Feed Return)
WE (VA7) Tempo di sosta fine foro (Wait End)

Tipo di funzione Modale.

Descrizione Esegue ciclo fisso di foratura di pareti distanziate


La funzione G80 (messa sola sulla linea del PP), oppure una movimentazione G0 Z
(quota) cancellano esplicitamente la modalità G88.
I parametri passati nella chiamata sono autocancellanti.
Dopo l’avvicinamento, ha inizio la prima fase eseguendo la foratura della prima parete
alla velocità impostata con FW e alla profondità indicata da DEA.
Completata la prima foratura, viene eseguito un rapido dell’asse Z fino a raggiungere la
quota programmata in DRB. Da qui si procede alla foratura della seconda parete sempre
con la velocità programmata in FW, fino a raggiungere la quota impostata con DEB.
Infine viene retratto l’asse Z in rapido fino alla quota programmata in DH.

Esempio Esecuzione della foratura di due pareti distanziate.

Foratura di pareti distanziate:%1188


N10 G0 X0 Y0 Z200
(Definizione Parametri Tecnologici)
N20 G88 DRA125 DEA100 DH125 DRB80 DEB60 FW150 FR15000
(Attivazione Ciclo Fisso Foratura)
(P0x, P0y = 10, 10)
(P1x, P1y = 40, 50)
N30 X10 Y10
N40 X40 Y50
N50 G80(messa sola sulla linea )
N60 M10
N70 M30
N80 END

Esa/Gv 91752.DP.1.I 4.15


Cicli Fissi di Sistema (CFS) DP

Ciclo fisso G88 (foratura di pareti distanziate).

1 5 DRA DH

2 DEA

3 DRB

DEB
4 WE

1) Avvicinamento dell'asse Z in rapido fino alla quota DRA.


2) Foratura della prima parete fino alla quota DEA con velocità FW.
3) Rapido di Z fino alla quota DRB.
4) Foratura della seconda parete fino alla quota DEB con velocità FW.
5) Dopo il tempo di sosta WE, ritorno con velocità FR fino a DH.

G88 DRA<> DEA<> DH<> DRB<> DEB<> FW<> FR<> WE<>

Figura 4.6 - Profilo eseguito dal ciclo fisso G88

4.2.6 Ciclo Fisso G133: Filettatura

Sintassi G133 X<exp> Z<exp> K<exp> P<exp> H<exp> A<exp> B<exp> S<exp> L<exp>
T<exp> F<exp> V<exp> R<exp> W<exp>

oppure:

G133 U<exp> Z<exp> K<exp> P<exp> H<exp> A<exp> B<exp> S<exp> L<exp>
T<exp> F<exp> V<exp> R<exp> W<exp>

Interfaccia Ciclo Fisso G133:

4.16 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

Z [VA1] Coordinata Pf asse Z


X o U [VA0] Coordinata Pf asse X o U
K [VA2] Passo Filettatura
P [VA3] Profondità Filettatura (Qta Inizio Lavoro X - Qta Fine Lavoro X)
H [VA4] Altezza Ritorno (Qta Ritorno Parziale X - Coord Pf X)
A [VA5] Angolo Attacco
B [VA6] Angolo
(se 0 è di Tuffo)
(se è diverso da zero è di Tallonatura)
S [VA7] Numero Passate Sgrossatura
L [VA8] Numero Passate Lucidatura
T [VA9] Tipo
(se è 0 è a Profondità' Costante)
(se è 1 è ad Area Asportazione Costante)
F [VA10] Velocità rapido Asse X
V [VA11] Velocità rapido Asse Z
R [VA15] Uscita a Smusso
(se è 0 è uscita passante)
(se è 0.1 è uscita a strappo)
(se è maggiore di 0.5 è il passo dell’uscita a smusso)
W Profondità aggiuntiva dopo ultima passata di lucidatura. Viene sommata alla
quota target dell’asse radiale (X o U) per effettuare una ulteriore passata dopo
la lucidatura.
* [VA12] Coordinata Pi asse X
* [VA13] Coordinata Pi asse Z
* [VA14] Modo Programmazione asse X (0: radiale, 1: diametrale)
* [VA16] Piano Selezionato
(se è 0 è Programmazione Tornio piano ZX)
(se è 1 è Programmazione Tornio piano ZU)
*: registri utilizzati internamente e non disponibili alla chiamata del ciclo fisso.

Tipo di funzione Modale ed esclusiva con le funzioni G di movimentazione (G0, G1,..).

Descrizione Esegue ciclo fisso filettatura (TALLONATURA, TUFFO) eventualmente con uscita a
smusso o a strappo, raccordando una filettatura conica di lunghezza pari alla finestra
programmata col parametro R.
La funzione G80 cancella esplicitamente la modalità G133.
I parametri passati nella chiamata sono obbligatori se la nella linea compare G133
(viene generato un allarme se non sono tutti presenti), non è importante l’ordine con cui
sono elencati.

Esa/Gv 91752.DP.1.I 4.17


Cicli Fissi di Sistema (CFS) DP

Sono, invece, modali se non compare la G133 e se è ancora attiva (non è stata eseguita
G80 o funzione G di movimentazione).

Nelle figure sono visualizzati i parametri da utilizzare nel ciclo fisso.


I parametri che derivano dalle quote dell’asse X sono opportunamente modificati nel
caso la programmazione dell’asse sia diametrale, per esempio se la programmazione è
diametrale la profondità P derivante dalla differenza della quota X di inizio lavoro e la
quota X di fine lavoro è automaticamente dimezzata.

X Quota ritorno
parziale
G1 velocitá V

G1 velocitá F H

zione
lavora Quota X
punto finale
(X,Z)

QuotaX Quota X
Fine lavorazione Inizio lavorazione

K X
P

Figura 4.7 - Parametri geometrici della lavorazione

Nelle figure sono mostrati i vari tipi di lavorazione in base al parametro R uscita a
strappo.

4.18 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

Filettatura Cilindrica
Uscita Passante
G133 R 0.0 ...

Figura 4.8 - Filettatura: uscita passante

Filettatura Cilindrica
Uscita a Strappo
G133 R 0.1 ...

Figura 4.9 - Filettatura: uscita a strappo

Esa/Gv 91752.DP.1.I 4.19


Cicli Fissi di Sistema (CFS) DP

Filettatura Cilindrica
Uscita a smusso
es.: G133 R0.7 ...

Figura 4.10 - Filettatura: uscita a smusso

Nelle figure sono mostrate le lavorazioni a tuffo o a tallonatura in base alla


programmazione del parametro B.

Filettatura a tuffo:
G133 B0.0 ...

Figura 4.11 - Filettatura a tuffo

4.20 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

Tallonatura:
es.: G133 B 30.0 T0.0 ...
B

Figura 4.12 - Filettatura: parametro caratteristico della tallonatura

Le figure seguenti mostrano le lavorazioni ad area costante o a profondità costante in


base alla programmazione del parametro T.

Esa/Gv 91752.DP.1.I 4.21


Cicli Fissi di Sistema (CFS) DP

B/2

A0=h0*h0tg(B/2)
Ai=hi*hitg(B/2)
A0
dA Area costante :
h0 Atot /n=A0
dA
P P*(Ptg(B/2)/n=h0*h0tg(B/2)
dA da cui si ricava
h1 h0=P/sqrt(n)
h2 dA=A1-A0=A0
h3
h12-h02=h0 h1=sqrt(2)h0
in generale h1=sqrt(i+1)h0

B/2

P/S

K/S
K=P ∗ tg(B/2)

Figura 4.13 - Filettatura ad Area Costante (sopra) e a Profondità Costante (sotto)

Esempio Filettatura a 3 principi %100


N100 G1 X<quota inizio> Z<quota inizio> F<>

4.22 91752.DP.1.I Esa/Gv


DP Cicli Fissi di Sistema (CFS)

N200 G133 X<> Z<> K<> P<> H<> A 0 B<> S<> L<> T<> F<> V<>
N300 A120
N400 A240
N500 G1 X<fuori ingombro> Z<fuori ingombro> F<>

FINE CAPITOLO

Esa/Gv 91752.DP.1.I 4.23


Cicli Fissi di Sistema (CFS) DP

4.24 91752.DP.1.I Esa/Gv


DP Parametri Utensili

5 Parametri Utensili

5.1 Definizioni

Centro di lavoro Anche Macchina utensile. Macchina che comprende uno o più dispositivi di fissaggio
atti a tenere bloccati altrettanti pezzi la lavorazione ed una o più unità operatrici che
effettuano di fatto le lavorazioni asportando materiale dai pezzi.

Si dividono in centri di fresatura e di tornitura a seconda che sia la rotazione


dell’utensile o del pezzo a causare l’asportazione di materiale da quest’ultimo.

Unità operatrice Unità atta all’effettuazione di lavorazioni su di un pezzo movimentata in modo


parassiale parassiale, comprendente una o più teste.

Tavola parassiale Piano dotato di dispositivo di fissaggio atto a tenere bloccato un pezzo ed a fornirgli un
riscontro. A volte é movimentata in modo parassiale. In genere è presente solo sulle
fresatrici.

In alcuni casi, per motivi meccanici, la tavola fornisce la movimentazione lungo alcuni
degli assi cartesiani e l’unità operatrice parassiale lungo i rimanenti.

Testa Cinematismo in grado di orientare nello spazio un singolo mandrino per cambio utensile
o più portautensili e di trasmettervi un moto rotativo al fine di asportare materiale dal
pezzo durante la lavorazione.

Può avere nessuno, uno o più gradi di libertà.

Quando l’oggetto dell’orientamento è un singolo mandrino la testa stessa è spesso


denominata mandrino.

Tavola polare Cinematismo in grado di orientare nello spazio un piano atto a tenere bloccato un pezzo
ed a fornirgli un riscontro, dotato di un sufficiente numero di gradi di libertà.

In alcuni casi, per motivi meccanici, la tavola polare fornisce alcuni gradi di libertà e la
testa i rimanenti necessari.

Dispositivo di cambio Dispositivo in grado di trasmettere un moto rotativo ad un cono di aggancio per cambio
utensile utensile in grado di trasmetterlo, a sua volta, ad uno o più portautensili.

Cono per cambio Dispositivo atto a collegare ad un mandrino per cambio utensile uno o più utensili serrati
utensile tramite dei portautensili, trasmettendogli il moto rotativo del mandrino.

I coni di aggancio coi relativi portautensili sono, in genere, intercambiabili tra loro e
vengono abbinati al mandrino in funzione delle lavorazioni da effettuare.

Esa/Gv 91752.DP.1.I 5.1


Parametri Utensili DP

Portautensile Dispositivo in grado di serrare un singolo utensile trasmettendogli il moto rotativo del
mandrino. La trasmissione a volte fa’ utilizzo di un meccanismo in grado di disassare
l’utensile per consentire l’effettuazione di lavorazioni multiple in abbinamento con altri
utensili (l’intero gruppo di portautensili è spesso detto portautensile multiplo), o di
inclinarlo per effettuare lavorazioni inclinate (l’intero gruppo di portautensili è spesso
detto testina inclinata).

Utensile con uno o Dispositivo in grado di asportare materiale dal pezzo durante la lavorazione tramite uno
più taglienti o più taglienti che lavorano singolarmente o contemporaneamente e che ricevono un
movimento rotativo (fresatrice) o rimangono fissi mentre il pezzo ruota (tornio).

Utensile o Tagliente Dispositivo in grado di asportare materiale dal pezzo durante la lavorazione. Il tagliente
è l’entità finale della catena cinematica che inizia con l’unità operatrice parassiale, ed è
proprio il tagliente che, in genere, deve dare luogo ad una lavorazione con le
caratteristiche programmate.

Utensile è lo stesso che tagliente di un utensile quando ve ne è uno solo.

Lavorazione Asportazione controllata di materiale da un pezzo effettuata tramite i taglienti di un


utensile, al fine di lasciare una superficie dalle caratteristiche volute.

Pezzo Parte fissata temporaneamente ad una tavola al fine di essere lavorata tramite
asportazione di materiale.

5.2 91752.DP.1.I Esa/Gv


DP Parametri Utensili

5.2 Diagramma ER (Entity Relationship) delle entità di un centro di lavoro di


cui vengono gestite la geometria e la cinematica

5.2.1 Legenda
La notazione può non rispettare le normative di disegno.

Attributo

Entità
Identificatore
Associazione

Associazione Associazione Associazione Associazione Associazione

1a1 1 ad N
1a1 1aN M ad N Specializzazione
od 1 a 0 od 1 a 0

Figura 5.1 - Legenda simboli diagrammi ER (Entity Relationship)

Esa/Gv 91752.DP.1.I 5.3


Parametri Utensili DP

5.2.2 Diagramma

Varie caratteristichei tecnologiche a


seconda del fabbricante
Centro di lavoro

Possiede Possiede Possiede

Origine assi, ridefinizione assi, ecc. Origine assi, ridefinizione assi, ecc.
Unità operatrice Tavola
parassiale parassiale
Varie caratteristichei tecnologiche a Varie caratteristichei tecnologiche a
seconda del fabbricante seconda del fabbricante

Possiede

Abbinata
TWI-Code
a Cinematica,
Cinematica, attuatori orientamento Testa Tavola polare attuatori
Tecnologia (RPM trascinamento Min/ orientamento
Max, ...)

Tiene Tiene
Possiede Possiede
bloccato bloccato

Identificatore mandrino per cambio Dispositivo cambio


utensile
Pezzo Origine pezzo, ecc.
utensile

Reca
Sul
installato

Identificatore per cambio utensile


Cono di aggancio per Estremi lavorazione, orientamento
Lavorazione della l., tecnologia della l.
cambio utensile
Famiglia

Possiede Effettua

THD-Code

Geometria Portautensile
Tecnologia (RPM Max, ...)

Reca
installato

D-Code
Dati dimensionali
Utensile Utensile o
MTL-Code Possiede Vita ed Usura
con più taglienti Tagliente
Stato (guasto, ...)
Tecnologia (RPM, destrorso/
sinistrorso, avanzamento, ...)

Figura 5.2 - Diagramma ER delle entità di un centro di lavoro di cui vengono gestite la
geometria e la cinematica

5.4 91752.DP.1.I Esa/Gv


DP Parametri Utensili

5.3 Altre definizioni

Pivot Si definiscono pivot i centri di rotazione dei cinematismi atti ad orientare l’utensile.

Il cinematismo terminale controlla il moto della punta dell’utensile, quelli non terminali
controllano il pivot del cinematismo successivo.

In presenza di due cinematismi, ad es., si intende che il primo controlla il moto del pivot
del secondo, il secondo ed ultimo controlla il moto della punta dell’utensile.

Tool Center Point Tool Center Point Programming (qui abbreviato in TCP) è una delle denominazioni
Programming comunemente adottate per il tipo di gestione che consente di programmare direttamente
il punto sulla sommità dell’utensile a contatto con il materiale e gli angoli di
lavorazione. Tutte le complesse operazioni necessarie per determinare le posizioni dei
cinematismi sono effettuate dal CNC.

I vantaggi principali sono la semplicità di programmazione e l’indipendenza delle


lavorazioni dall’utensile e dalla cinematica della macchina.

Esa/Gv 91752.DP.1.I 5.5


Parametri Utensili DP

5.4 Descrittore testa

È selezionato da una tabella tramite il comando TWI.

5.4.1 Struttura dati


Proprietà di una testa
Identificatore array strutture
twi[n]

Si suggerisce di specificare come etichetta di struttura l’identificatore stesso in caratteri


maiuscoli.

5.6 91752.DP.1.I Esa/Gv


DP Parametri Utensili

5.4.2 Descrizione geometria e attuatori

costante in campo della Parametro in Significato


Shared.H struttura defcn
XCLTWIDATA
TWI_KINE TWI_KINEMAT byte yKine Tipo di cinematismo:
ICS_CLASS
ù 1 = ROTARY_HEAD
Kine
ù 2 = FORK_ROTARY_HEAD
ù 3 = OBLIQUE_AXIS_ROTARY_HEAD
ù 4 = ROTARY_TABLE_AND_TILT_HEAD
ù 5 = FORK_TABLE
TWI_MINRPM ULONG dword Numero minimo di giri/minuto
ulMinRPM; dwMinRPM
TWI_MAXRPM ULONG dword Numero massimo di giri/minuto
ulMaxRPM; dwMaxRPM
TWI_CCW BOOLEAN byte yCCW Verso normale di rotazione sinistrorso
bCCW;
tipo:ROTARY_
HEAD_DATA
RH_X0 double dX0 double dX Coordinata X primo pivot (rif. allo zero della
testa)
RH_Y0 double dY0 double dY Coordinata Y primo pivot (rif. allo zero della
testa)
RH_Z0 double dZ0 double dZ Coordinata Z primo pivot (rif. allo zero della
testa)
RH_ORIENT XCL_ORIENTA byte yOrient Orientamento asse Z testa:
TION Orient
ù 6 = X+
ù 4 = X-
ù 8 = Y+
ù 2 = Y-
ù 9 = Z+
ù 1 = Z-
RH_EC double Dec double dEC Rotazione intorno all’asse Z
RH_ECREV BOOLEAN byte bECRev Inversione verso attuatore rotazione intorno
bECRev all’asse Z
RH_ECAX XCL_DRIVER byte yECAx Attuatore rotazione intorno all’asse Z, scelto tra:
ECAx
ù 0 = NC
ù 7=A
ù 8=B
ù 9=C
ù 10 = Asse mandrino
tipo: FORK_
ROTARY_
HEAD_DATA

Esa/Gv 91752.DP.1.I 5.7


Parametri Utensili DP

costante in campo della Parametro in Significato


Shared.H struttura defcn
XCLTWIDATA
FRH_X0 double dX0 double dX Coordinata X primo pivot (rif. allo zero della
testa)
FRH_Y0 double dY0 double dY Coordinata Y primo pivot (rif. allo zero della
testa)
FRH_Z0 double dZ0 double dZ Coordinata Z primo pivot (rif. allo zero della
testa)
FRH_ORIENT XCL_ORIENTA byte yOrient Orientamento asse Z testa:
TION Orient
ù 6 = X+
ù 4 = X-
ù 8 = Y+
ù 2 = Y-
ù 9 = Z+
ù 1 = Z-
FRH_EC double dEC double dEC Rotazione intorno all’asse Z
FRH_ECREV BOOLEAN byte bECRev Inversione verso attuatore rotazione intorno
bECRev all’asse Z
FRH_ECAX XCL_DRIVER byte yECAx Attuatore rotazione intorno all’asse Z, scelto tra:
ECAx
ù 0 = NC
ù 7=A
ù 8=B
ù 9=C
ù 10 = Asse mandrino
FRH_X1 double dX1 double dXx Coordinata X’ del secondo pivot
FRH_Y1 double dY1 double dYy Coordinata Y’ del secondo pivot
FRH_EB double dEB double dEB Rotazione intorno all’asse Y
FRH_EBREV BOOLEAN byte bEBRev Inversione verso attuatore rotazione intorno
bEBRev all’asse Y
FRH_EBAX XCL_DRIVER byte yEBAx Attuatore rotazione intorno all’asse Y, scelto tra:
EBAx
ù 0 = NC
ù 7=A
ù 8=B
ù 9=C
ù 10 = Asse mandrino
FRH_X2 double dX2 double dXX Coordinata X” del portautensile
double _dUnused -- -
FRH_Z2 double dZ2 double dZZ Coordinata Z” del portautensile

Tramite questi descrittori può essere effettuata la compensazione utensile


tridimensionale per calcolare automaticamente la posizione degli assi cartesiani in base
alle coordinate di lavorazione, della posizione degli attuatori angolari del mandrino e
della geometria del portautensile.

5.8 91752.DP.1.I Esa/Gv


DP Parametri Utensili

Quando un attuatore non è connesso, in fase di lavorazione viene verificato che la quota
alla quale un attuatore verrebbe posizionato, al netto della rotazione addizionale, sia 0
(entro una tolleranza prevista nei parametri macchina). Questo consente di verificare la
fattibilità delle lavorazioni in presenza di utensili predisposti manualmente come, ad
esempio, testine inclinate.

Le teste sono anche orientabili in base a parametri di lavorazione indipendenti dalla


cinematica.

Esa/Gv 91752.DP.1.I 5.9


Parametri Utensili DP

l'orientamento dell'asse
Z' testa =Z-
dX1

PIVOT2

PIVOT1 (X0,Y0,Z0)
rispetto all'origine testa

X'

dZ2

dX2

portautensile

Y'
dY1

X'
PIVOT2

PIVOT1 (X0,Y0,Z0)
rispetto all'origine testa

Figura 5.3 - Parametri caratteristici di una testa FORK_ROTARY_AHEAD

5.10 91752.DP.1.I Esa/Gv


DP Parametri Utensili

C
l'orientamento dell'asse
testa =Z-

PIVOT1 (X0,Y0,Z0)
rispetto all'origine testa

Figura 5.4 - Parametri caratteristici di una testa rotativa

Il campo Orientation stabilisce l’ordine ed il verso degli assi del sistema di coordinate
base del mandrino, tramite l’individuazione del nuovo asse Z del mandrino. Questo
indica il vettore orientamento utensile (che punta dalla sommità dell’utensile verso il
portautensile) col mandrino in posizione di riferimento. Sono possibili 6 impostazioni.

Y+
Z+

8 9

X- 4 6 X+

1 2

Z-
Y-

Figura 5.5 -

Esa/Gv 91752.DP.1.I 5.11


Parametri Utensili DP

Z Y X

X Y Z X Y Z

Orient=9 Orient=6 Orient=8

Y Z Z Y

X X

Z Y

Orient=1 Orient=4 Orient=2

Figura 5.6 -

5.12 91752.DP.1.I Esa/Gv


DP Parametri Utensili

5.5 Descrittore portautensile

È selezionato da una tabella tramite il comando THD.

5.5.1 Struttura dati


Proprietà di un portautensile
Identificatore array strutture
thd[n]

Si suggerisce di specificare come etichetta di struttura l’identificatore stesso in caratteri


maiuscoli.

5.5.2 Descrizione geometria


costante in campo della P Significato
Shared.H struttura di tipo a
XCLTHDDATA r
a
THD_Z0 double dZ0 double dZzero Coordinata Z pivot (si somma a Z”)
THD_FLG THD_TRANSFOR byte yFlg Ordine delle trasformazioni relative al pivot:
MATION
ù 1 = Prima rotazione intorno all’asse Z,
Transformation
poi traslazione X’ Y’ pivot (vedi (1));
ù 2 = Prima traslazione, poi rotazione
(consigliato).
THD_C Double dC double dC Rotazione intorno all’asse Z
THD_X1 double dX1 double dTXx Coordinata X’ del pivot
THD_Y1 double dY1 double dTYy Coordinata Y’ del pivot
THD_B double dB double dB Rotazione intorno all’asse Y
ù THD_X2 ù double dX2 double dXX Coordinata X” della base dell’utensile (si
somma a X’)
ù THD_Z2 ù double dZ2 double dZZ Coordinata Z” della base dell’utensile (verrà
sommata alla lunghezza utensile)
DATI TECNOLOGICI
T dword U Numero massimo di giri/minuto
H dwMaxRPM
L
T byte yRev
B Trasmissione con inversione senso rotazione

LOGICA DI GESTIONE
THD_IDX word wToolIdx Indice descrittore utensile installato (0=non
presente), utilizzato a seconda
dell’applicazione
THD_CONE dword dwCone Identificatore univoco cono di aggancio per
cambio utensile. Un portautensile multiplo è
differisce da uno singolo per la presenza di
più portautensili cono lo stesso cono di
aggancio per cambio utensile.

Esa/Gv 91752.DP.1.I 5.13


Parametri Utensili DP

(1) In genere lo si usa per la configurazione di portautensili non verticali che trovano
posto su di una testa priva sia di un attuatore numerico che di un sistema di orientamento
manuale; per questi è spesso più facile configurare la posizione assoluta del
portautensile ed il relativo orientamento che non configurarne la posizione che avrebbe
il portautensile immaginando di ruotare la testa in modo da farlo puntare verso l’asse
di riferimento. Se è vero che la soluzione ideale sarebbe l’introduzione di una testa TWI
con le coordinate del portautensile, è anche vero che, in presenza di molti portautensili
(es.: una macchina foratrice), il numero delle tabelle delle teste sarebbe elevato al solo
scopo di differenziare le coordinate cartesiane del portautensile; se, però, il portautensile
fosse orientabile meccanicamente e la rotazione introducesse delle compensazioni su
dX1 e dY1 sarebbe definitivamente necessario configurare una testa.

dA

dX1

dZ0
Z'

X'

dZ2

dX2

dB

Figura 5.7 -

5.14 91752.DP.1.I Esa/Gv


DP Parametri Utensili

5.6 Descrittore utensile o tagliente di un utensile

È selezionato da una tabella tramite il comando D.

Per motivi di sinteticità ci si riferirà sia all’utensile che al tagliente di un utensile con la
parola utensile.

5.6.1 Struttura dati


Proprietà di un utensile
Identificatore array strutture
ced[n]

Si suggerisce di specificare come etichetta di struttura l’identificatore stesso in caratteri


maiuscoli.

5.6.2 Descrizione geometria

Proprietà di un utensile
costante in campo della Parametro Significato
SHARED.H struttura in defcn
XCLCEDDATA
CED_RAD double dRad double dRad Raggio
CED_TRAD double dTRad double dTRad Raggio raccordo per fresa torica
CED_LENZ double dLenZ double dLenZ Lunghezza dell’utensile da foratura/fresatura
(verrà sommata alla Z” della base
dell’utensile)
CED_THICK double dThick double dThick Spessore/Distanza tra taglienti
intercambiabili;
CED_LENX double dLenX double dLenX Lunghezza ausiliaria per utensili da tornitura
(verrà sommata alla Y” della base
dell’utensile)
CED_LENY double dLenY double dLenY Lunghezza ausiliaria per utensili da tornitura
(verrà sommata alla X” della base
dell’utensile)
CED_WEAIDX -- word wWeaIdx Indice estensione dati utensile per gestione
usura

Più descrittori possono essere utilizzati in abbinamento ad un solo portautensile al fine


di gestire più taglienti dello stesso utensile di cui importa differenziare la geometria,
l’usura, ecc..

Esa/Gv 91752.DP.1.I 5.15


Parametri Utensili DP

I descrittori dLenX, Y e Z sono usati o meno a seconda del tipo di utensile ed hanno il
significato illustrato nella seguente figura:

dLenY
dLenZ

dRad

dRad

dLenX

Figura 5.8 - Utilizzo degli offset sul piano di compensazione per gli utensili da tornio e
da fresatrice

+ = Centro della base del portautensile

Il descrittore dTRad è usato per descriverla geometria delle frese sferiche e toriche,
come è illustrato nella seguente figura:

dTRad=0 utensile cilindrico


0< dTRad < dRad utensile torico
dTRad =dRad utensile sferico

dLenZ dLenZ dLenZ

dTRad=dRad
dTRad
dRad dRad dRad
dTRad=0

Figura 5.9 - A partire da sinistra, parametri di un utensile cilindrico, di uno torico, di


uno sferico

5.16 91752.DP.1.I Esa/Gv


DP Parametri Utensili

dThick
A

dRad

dLenZ
A dZ2

Sez. A-A

Figura 5.10 - Configurazione di un utensile con taglienti contrapposti intercambiabili


in lavorazione (fresa a disco)

5.6.3 Descrizione altri dati tecnologici

Proprietà di un utensile
costante incampo della Parametro in Significato
SHARED.H struttura defcn
XCLCEDDATA
CED_MINRPM ULONG dword Numero minimo di giri/minuto
ulMinRPM dwMinRPM
CED_MAXRPM ULONG dword Numero massimo di giri/minuto
ulMaxRPM dwMaxRPM
CED_STDRPM ULONG dword Numero di giri/minuto se non specificato
ulStdRPM dwStdRPM diversamente (0=non impostare
automaticamente alla selezione dell’utensile)
CED_CCW BOOLEAN byte bCCW Utensile sinistrorso
bCCW
CED_MAXFEE double double Velocità massima di avanzamento lineare
D dMaxFeed dMaxFeed
CED_STDFEED double dStdFeed double dStdFeed Velocità di avanzamento lineare se non
specificato diversamente (0=non impostare
automaticamente alla selezione dell’utensile)
CED_DIR BOOLEAN bDir byte bDir Abilita controllo verso di taglio
CED_TG BOOLEAN bTg byte bTg Abilita controllo tangenza utensile al percorso
(es.: lama o fresa sagomata)
CED_TGTHRE double dTgThre double dTgThre Max. angolo scostamento ammesso rispetto al
percorso

Esa/Gv 91752.DP.1.I 5.17


Parametri Utensili DP

5.6.4 Logica di gestione

Proprietà di un utensile
costante in campo della Parametro in Significato
SHARED.H struttura defcn
XCLCEDDATA
CED_STATUS -- word wTStat Eventi che possono condizionare l’utilizzo
dell’utensile
D2-Dn D1 D0
Non utilizzati Utensile Utensile non
guasto (1) presente

(1) Impostato a mezzo fallimento ciclo di misura utensile, verifica con raggio laser, ecc..
Azzerare quando l’utensile viene sostituito.

5.6.5 Utensili guasti


La rottura di un utensile potrebbe essere segnalata al CNC da opportuni sistemi di
riscontro. Ad esempio, un laser potrebbe rilevare la rottura di un utensile una volta
installato sul mandrino. A seconda della applicazione, questo causa:
ù la messa in allarme del canale CNC;
ù la ricerca e l’installazione di un utensile nuovo. In questo caso deve essere reso noto
al CNC l’organizzazione degli utensili in gruppi all’interno dei quali gli utensili
sono intercambiabili tra loro (famiglie di utensili).

FINE CAPITOLO

5.18 91752.DP.1.I Esa/Gv


Che cosa pensate di questo manuale ?
Vi saremmo grati se voleste darci la vostra opinione in merito alla qualità del presente manuale, relativamente ai seguenti aspetti:
Aspetto da considerare Ottimo Buono Sufficiente Insufficiente Pessimo

Reperibilitá delle informazioni

Organizzazione degli argomenti

Completezza

Accuratezza

Leggibilità

Proprietà di linguaggio

Impostazione della pagina

Quantitá Illustrazioni

Qualitá Illustrazioni

Vi preghiamo di darci una valutazione relativamente alla qualità complessiva di ciascun capitolo del manuale che avete consultato:
Numero capitolo Ottimo Buono Sufficiente Insufficiente Pessimo

Riportate, per cortesia, il codice del manuale in questo spazio:


(il codice è riportato nel frontespizio)

Commenti: ________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
Riportate, se lo ritenete opportuno, il vostro recapito nello spazio sottostante:
Nome: ______________________________________________________________________________________________
Ditta: ______________________________________________________________________________________________
Indirizzo: ____________________________________________________________________________________________
Tel: ____________________________ Fax: ______________________________________________________________

Grazie per l’aiuto!


Potete inviarci queste informazioni via FAX, il nostro numero è 059-851313 oppure spedirli a: Esa-Gv - Ufficio
Documentazione Tecnica - 15 via Zamboni, CP 43 - 41011 Campogalliano.
http://www.esagv.it - E-Mail: info@esagv.it