Descrizione della
Programmazione (DP)
Documentazione Utente
Valido per:
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.
Questo documento é stato redatto in parziale conformità alla norma ANSI/IEEE std
1063-1987 “IEEE Standard for software User Documentation”.
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:
Gestione modifiche
Release Capitoli - Pagine Descrizione
Esa/Gv 91752.DP.1.I i
Descrizione della Programmazione DP
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
iv 91752.DP.1.I Esa/Gv
DP Descrizione della Programmazione
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
È 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.
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
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
Glossario
BCR Sigla che abbrevia BarCode Reader ed indica il dispositivo che legge una etichetta
stampata con codifica a barre.
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
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:
Blocco
Parola
X200
Tipo di
Parola Campo
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).
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.
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.
Nella descrizione della sintassi di ogni istruzione si farà ricorso ad una notazione
convenzionale:
FINE CAPITOLO
2 Programmazione Standard
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
... ...
FINE PROGRAMMA
Descrizione Il blocco di inizio programma deve precedere tutti gli altri blocchi del programma
stesso.
Esempio
FILETTO 3/8 GAS %1200
....
....
corpo del programma
....
....
M30
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.
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
Esempio
FILETTO 3/8 GAS %1200
....
....
corpo del programma
....
....
M30
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.
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
Esempio
N100 (ERRORE: PREMERE RESET)
N110 G04 F1
N120 JMP 110 (loop infinito in attesa del reset)
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))
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
Sintassi G90
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)
y
G91
G90
G90
G91
G91 G91 x
G90
G90
Sintassi G91
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)
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))
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)
5
G54
G5
G56
Sintassi G53
Tipo di funzione Autocancellante, di default, mutuamente esclusiva con G54, G55, G56, G57.
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)
Xquota
Yquota
Zquota
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)
Y
G2
G2
G17
G19 G3
G3
X
G2
G18
G3
Z
Esempio
X100 Y100 (trasla al punto P1(X100,Y100))
G17 G2 X200 R60 (effettua un arco di circonferenza sul
piano XY)
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.>
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.
G17 à G16 X Y Z+
G18 à G16 Z X Y+
G19 à G16 Y Z X+
Esempio
G16 U Z Y+
Sintassi 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))
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.
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
Sintassi G1
Tipo di funzione Modale, mutuamente esclusiva con G0, G2, G3, G33, G63.
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
Tipo di funzione Modale, mutuamente esclusiva con G0, G1, G33, G63.
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))
P2
P1
G3 -R
G3
Vedi anche Quote aggiuntive per interpolazione, Comando di movimentazione, Selezione del
piano di lavoro.
2.3.5 Filettatura
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.
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)
x
K
z
Z
Z z
2.3.6 Maschiatura
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)
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))
Sintassi G9
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)
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
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
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)
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
Sintassi Fvelocità
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
Esempi
G0 X100 Y100 (trasla al punto P1(X100,Y100))
G1 Y200 F500 (lineare al punto P2(X100,Y200) con velocità
500 mm/min)
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à.
Vout[K] = Vmax[K+1]
Vdac
G0 G1 T
pezzo
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
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.
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)
Sintassi Svelocità
Esempio
S500 M3 (avviamento mandrino a 500 rpm in senso orario)
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.
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
S'rpm
V'
V
Srpm
A Y
A'
V> V’
In queste condizioni in un certo intervallo di tempo ∆t, l’area lavorata è data da:
A=À= 2π × cost
Esempio
(* attivazione velocità di taglio costante G96)
G4 F1
M5 (*arresta mandrino)
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
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
u
min 1
= = min −1
u min
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).
Per questo ci si avvale della programmazione della velocità inversa del tempo (G93).
a:
interpolando linearmente.
400 mm
1600 mm/min
1600
F= =4
400
Si avrà:
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
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
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.:
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
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)
Posizionamento <asse_polare>=AC(<quota_assoluta>)
assoluto (AC)
Es.:
C=AC(45.000)
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
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
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)
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
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)
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
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
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)
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
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
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.:
Interpolazione con
uno o più assi polari e
nessuno cartesiano
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:
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.
Es.:
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.:
2.8.1 Funzioni M e T
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.
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.
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.
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.
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:
La compensazione del raggio utensile avviene nel piano selezionato, quindi di default la
correzione avviene sul piano XY (G17).
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.
G41
X
Y
Z
G42
X
Y
Z
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
G3
R
G1 G1
G1
G1
G1
G41 Z
G41
percorso
programmato
G42
G41
percorso
programmato
G42
G41
percorso
programmato
G42
utensile
percorso
corretto
percorso
programmato
I due percorsi
differiscono di
180gradi
utensile
percorso
corretto
percorso
programmato
i due percorsi
hanno direzione
opposta
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))
FINE CAPITOLO
3 Programmazione Avanzata
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.
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:
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]
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)
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
symb=nomevar[[numero elem]]
Descrizione Prima di poter utilizzare delle variabili simboliche nella stesura di un PP, è necessario
averle precedentemente dichiarate.
Le variabili simboliche che saranno usate devono essere dichiarate all’inizio del PP.
E’ possibile dichiarare (ed eventualmente inizializzare) sulla stessa riga più simboli
dello stesso tipo, separandoli con ‘,’(virgola).
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.
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:
Principale % 1
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”
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
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
PUNT = ^ QuotaX
PUNT = 300 ; equivale a QuotaX 300.0
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
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.
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)
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.
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
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
N1000?VA[1] = 123.0 * -2
dword regasync[10]
dword regtool[10]
typedef struct{
RETAIN dword du[10];
} DU;
DU nc[5];
Negazione Cambia il segno ad un operando: un operando con valore negativo diventa positivo e
viceversa.
Sintassi - esp1
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.
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.
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.
Sintassi ACOS(espr)
Il valore calcolato è un angolo.
Sintassi ASIN(espr)
Il valore calcolato è un angolo.
Sintassi ATAN(espr)
Il valore calcolato è un angolo.
Sintassi COS(espr)
Espr è un angolo, ed il valore calcolato è compreso tra -1 e 1.
Sintassi SIN(espr)
Espr è un angolo, ed il valore calcolato è compreso tra -1 e 1.
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.
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.
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.
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.
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.
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.
La tabella che segue riassume i possibili risultati che si ottengono applicando l’operatore
AND.
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.
La tabella che segue riassume i possibili risultati che si ottengono applicando l’operatore
OR.
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.
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.:
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
3.3.2 Test
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:
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
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
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
G0 X100 Y100
WHILE( “%IW0.0” == 0 )
SYN
G4 F1
ENDW
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 )
G0 X100 Y100
REPEAT
SYN
G4 F1
UNTIL ( “%IW0.0” != 0 )
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;
DBL ind;
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;
G4 F (ind/10)
ENDFOR
3.3.8 Ripetizione
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.
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
Vedi Anche Vedi utilizzo con Cicli Fissi di Sistema e Macro Istruzioni.
PPrincipale %2
sub 1 : 1
sub 2 : 2
livello n
livello 2
livello 1
livello 0
Figura 3.1 -
dove:
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.
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),
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.
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
Sintassi RET
Sintassi END
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.
STR NOMESUB
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
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
dove
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.
N30 F100
N40 G17 G0 X 0 Y 0
Vedi anche Inizio sottoprogramma(ciclo fisso). Fine sottoprogramma(ciclo fisso) G80: 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...
N30 F100
N40 G17 G0 X 0 Y 0
oppure
G0 B 45.0 ;posizionamento dell’asse polare B
<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
Esempio
IF( (VL10 < 1000) AND (VL10 > 0) ) THEN
G0 X VL10
ELSE
ERROR( 800 )
ENDIF
Sintassi SYN
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
Sintassi $ (testo)
Descrizione Visualizza il testo indicato tra parentesi in modo sincrono con l’ esecuzione dei blocchi
che lo precedono.
Esempio
?%MYMEAS = VA11
Descrizione Il carattere ‘?’ indica che l’operazione deve essere eseguita in modo sincrono con
l’esecuzione degli altri blocchi di part program.
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.
Esempio
?%C2.0 = 1
?%C2 = 13
%C2.1 = 0
%C2 = 14
?%QW2.1 = 1
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.
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]
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
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
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
G0 ZVA0 AVA0
%czone[VA10].qtamin = 0
%czone[VA10].qtamax = VA1 * 1000
%czone[VA10].nzone = VA2
Esempio
/N100 IF (VG500 != 0) JMP 1000
Esempio
DBL ChanNr, ChanSpeed;
ChanNr = WHO()
Esempio
DBL ChanNr, ChanSpeed;
SYN
VA0 = GET( X )
SFH[X] = VA0
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)
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
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:
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
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:
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
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
Esempio
test specularità %1
F60000 D1
JSR “pezzo1”
MIR[X]=1
JSR “pezzo1”
MIR[Y]=1
JSR “pezzo1”
MIR[X]=0
JSR “pezzo1”
M30
specularitá:pezzo1
G41
G0 X0 Y0
G1 X500 Y500
G1 X1000 Y1000
G2 X1500 Y500 R500
G1 X500
G40 G0 X0 Y0
RET
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
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
Figura 3.3 -
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
MLV=1
SHF[Y]=300 ; traslazione sull’asse Y
MIR[Y]=1 ; specularità dell’asse Y
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
M30
MAT[X] = ...
MAT[Y] = ...
MAT[Z] = ....
Esempio
DBL a11, a12, a13, a14
DBL a21, a22, a23, a24
DBL a31, a32, a33, a34
DBL alfa = 45
G41
G61
G0 X0 Y0 Z0
G1 X300 F3000
G2 X0 Y0 I150 J0 F1000
Esempio
DBL a11, a12, a13, a14
DBL a21, a22, a23, a24
DBL a31, a32, a33, a34
DBL alfa = 45
G41
G61
G0 X0 Y0 Z0
G1 X300 F3000
G2 X0 Y0 I150 J0 F1000
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
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
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)
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.
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.
TGR K0 A0 B0
Esempio
TGR K3.0 A45.0 B30.0 (attacco a 45 gradi, distacco a 30
gradi, ampiezza tre raggi utensile)
G1
G3
Utensile
Beta
Kr raggi
Sovrametallo utensile
o r raggio di
curvatura
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
Esempio
D1
G17 G1 X100 Y200
VTL1
Sintassi TWInumero
Esempio
TWI 9
Sintassi THDnumero
Esempio
THD 16
A B
X Y
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.
Esempio
TWI4THD2
G0 X10.00 Y10.00 Z8.00 A0.00 B45.00
EA = <expr>
EB = <expr>
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
Z
EB
EA Y
Vedi anche Orientamento tramite coordinate assi polari, orientamento tramite Imbardata-
Beccheggio-Rollio (RPY), orientamento tramite componenti di un vettore parallelo
all’asse dell’utensile.
EA = <expr>
EB = <expr>
EC = <expr>
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
Z EC
EA
EB Y
Vedi anche Orientamento tramite coordinate assi polari, orientamento tramite Imbardata-
Beccheggio-Rollio (RPY), orientamento tramite componenti di un vettore parallelo
all’asse dell’utensile.
Sintassi EP <expr>
EQ <expr>
ER <expr>
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.
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
Figura 3.10 - Parallelepipedo a cui sono riferiti i versori che descrivono l’utensile
Vedi anche Orientamento tramite coordinate assi polari, orientamento tramite Angoli di
Eulero, orientamento tramite Imbardata-Beccheggio-Rollio (RPY).
Sintassi EI = <expr>
EJ = <expr>
EK = <expr>
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.
Esempio
G1 X10.00 Y10.00 Z8.00 EI0.707 EJ0.00 EJ0.707
Y
X
[EI,EJ,EK]
Z [EP,EQ,ER]
Z
2
Y B
X
AB = percorso programmato
1
PADSID = 1
EA = 0 EB = 45
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 -
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.
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
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).
Per prevenire danni nel caso non si selezioni un tagliente adeguato, al reset del canale
l’impostazione tagliente più distante dal portautensile diviene attiva.
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.
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 -
[EP,EQ,ER]
[EI,EJ,EK]
[m,n,o]
DER dThick/2
(ICDSID=1)
Figura 3.16 -
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
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
3.9.1 Definizioni
geometria G1
dell'utensile AAM
G0
G1 RAM
G0
Sintassi EAMMOD =0 |1
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.
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.
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
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.
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.
G0
EAMAAH
pr G1 velocitá
og EAMFED
ra
m
m
at
o
at
o
G1 velocitá
EAMFED
3.9.3 Distacco dal pezzo lungo l’asse e/o lungo il raggio dell’utensile
Sintassi XAMMOD = 0 | 1
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.
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.
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.
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.
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.
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.
Esempio
XAM e EAM attivi %1
F900000
G58 X100 Z200 ;impostazione origine aux.
VA0 = 0
VA1 = 400
VA0=VA0+VA1
N60 SHF[X]=VA0
RPT 10,60,2
XAMAHH
mato
ro gram
G0 p
XAMAIH
ato
amm
rogr
G1 velocitá G0 p
XAMFED
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 -
[EI,EJ,EK]
[EP,EQ,ER]
[m,n,o]
P DER
ESC
Figura 3.21 -
[EI,EJ,EK] [EP,EQ,ER]
DER
[m,n,o]
P
ESC
[EI,EJ,EK] [EP,EQ,ER]
[m,n,o]
P DER
ESC
Figura 3.23 -
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.
3.10.1 Impostazioni o Modifica dei parametri per il controllo automatico delle velocità
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>
Descrizione
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.
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
Esempio
G0 X200 POSA[U]=300 POSA[B]=200 FA[U]=150 FA[B]=300
Esempio
G1 B0 F1000 POSA[S] = 45.0
Z200
X0 Y0
WAITP[S]
Esempio
FWR[X] = 0
FWR[X] = 1
Esempio
ACC[X] = 1.2
Esempio
DEC[X] = 1.5
Esempio
DEE[X] = 1.5
Descrizione Modifica in modo sincrono il valore in mm/min, della velocità massima dell’asse
specificato.
VEL[x]
ACS[x]
DEE[x] t
DEC[x]
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.
Vmax
Acc
t
tempo
rampa ad S
tempo di
accelerazione
rampas.vsd
Esempio
JRK[X] = 22500
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
Esempio
DECTRJ = 1.2
Esempio
VELTRJ= 1000
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
Esempio
JRKTRK = 22500
FINE CAPITOLO
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.
Sintassi G192 X<> Y<> IA<> JA<> NRA<> IB<> JB<> NRB<>
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
Y+
< IA > = 5.00
10.00
X (coordinate P0x) X+
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
Y+
< IA >= 5.00
30.00
Y < JA >= 1.50
(coordinate P0y)
< JB>= 5.00
10.00
X (coordinate P0x) X+
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
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
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
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
2 5
3 4
Sintassi G83 DR<> DE<> DH<> FW<> FR<> WE<> NI<> WI<>
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
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.
3 WI
NI numero d'incrementi
(in questo caso = 3)
4 WI
DE
5 WE
Esempio Esecuzione della maschiatura di un foro con senso del mandrino destrorso in ingresso,
sinistrorso in uscita, quindi RW è positiva.
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
Esempio Esecuzione di due fori, quindi tramite ciclo fisso G86, relativa alesatura
Sintassi G88 DRA<> DEA<> DH<> DRB<> DEB<> FW<> FR<> WE<>
1 5 DRA DH
2 DEA
3 DRB
DEB
4 WE
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>
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.
Sono, invece, modali se non compare la G133 e se è ancora attiva (non è stata eseguita
G80 o funzione G di movimentazione).
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
Nelle figure sono mostrati i vari tipi di lavorazione in base al parametro R uscita a
strappo.
Filettatura Cilindrica
Uscita Passante
G133 R 0.0 ...
Filettatura Cilindrica
Uscita a Strappo
G133 R 0.1 ...
Filettatura Cilindrica
Uscita a smusso
es.: G133 R0.7 ...
Filettatura a tuffo:
G133 B0.0 ...
Tallonatura:
es.: G133 B 30.0 T0.0 ...
B
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)
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
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.
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.
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.
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.
Pezzo Parte fissata temporaneamente ad una tavola al fine di essere lavorata tramite
asportazione di materiale.
5.2.1 Legenda
La notazione può non rispettare le normative di disegno.
Attributo
Entità
Identificatore
Associazione
1a1 1 ad N
1a1 1aN M ad N Specializzazione
od 1 a 0 od 1 a 0
5.2.2 Diagramma
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
Reca
Sul
installato
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
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.
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.
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
C
l'orientamento dell'asse
testa =Z-
PIVOT1 (X0,Y0,Z0)
rispetto all'origine testa
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 -
Z Y X
X Y Z X Y Z
Y Z Z Y
X X
Z Y
Figura 5.6 -
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.
(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 -
Per motivi di sinteticità ci si riferirà sia all’utensile che al tagliente di un utensile con la
parola utensile.
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
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
Il descrittore dTRad è usato per descriverla geometria delle frese sferiche e toriche,
come è illustrato nella seguente figura:
dTRad=dRad
dTRad
dRad dRad dRad
dTRad=0
dThick
A
dRad
dLenZ
A dZ2
Sez. A-A
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
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.
FINE CAPITOLO
Completezza
Accuratezza
Leggibilità
Proprietà di linguaggio
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
Commenti: ________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
Riportate, se lo ritenete opportuno, il vostro recapito nello spazio sottostante:
Nome: ______________________________________________________________________________________________
Ditta: ______________________________________________________________________________________________
Indirizzo: ____________________________________________________________________________________________
Tel: ____________________________ Fax: ______________________________________________________________