Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Il contenuto di questo manuale è a solo scopo illustrativo e può essere soggetto a variazioni senza che ne
sia data comunicazione preventiva. La Prima Electro S.p.A. non assume responsabilità per errori o
conseguenti danni che possano risultare dall'uso o da errate interpretazioni delle procedure contenute in
questa pubblicazione.
45004616J 2
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Contenuto
45004616J 3
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
5.6 G62 – G63 – G66 – G67 – Interruzione del profilo ..................................................................................................... 100
5.8 TBS / TBSG0 – Tolleranza sull’asse a velocità di lavoro / rapido per spline ........................................................... 103
5.10 TBV / TBVG0– Precisione sui versori a velocità di lavoro / di rapido...................................................................... 104
5.11 DAC / DAV – Angolo di soglia per discontinuità assi lineari / assi rotativi ............................................................. 105
5.13 CURLEN – Lunghezza minima tratto lungo per cambio curvatura ........................................................................... 106
5.14 CURRAP – Rapporto lunghezza tratto lungo/corto per cambio curvatura ............................................................ 107
5.15 SMTFORM – Soglia sui coseni direttori per attivazione dello smoothing ............................................................... 107
45004616J 4
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
7.9 G84 – Ciclo di maschiatura con trasduttore montato sul mandrino ........................................................................ 129
7.10 G84 – Ciclo di maschiatura rigida con trasduttore montato sul mandrino ............................................................ 131
7.11 TKG – Guadagno a velocità costante in maschiatura rigida / TAG – Guadagno di accelerazione in
maschiatura rigida ................................................................................................................................................................................. 133
45004616J 5
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 6
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
11.7 ECM – Esecuzione di un blocco in modo MDI nel processo specificato ................................................................. 208
11.8 RTP – Lettura del numero utensile programmato o attivo nel processo ................................................................ 210
11.9 ROP – Lettura del numero del correttore utensile programmato o attivo nel processo .................................. 211
11.10 GPS – Lettura dello stato e modo del processo ....................................................................................................... 212
11.23 PLR – Lettura delle variabili WORD del WinPLUS .................................................................................................. 227
11.24 PLD – Lettura delle variabili DOUBLE del WinPLUS .............................................................................................. 227
45004616J 7
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
13.3 TOL – SLIF: Ricerca di utensile con vita specificata ...................................................................................................... 253
13.4 TOL – SDIR: Ricerca di utensile a partire da una pocket ............................................................................................ 254
13.5 TOL – LDIR: Ricerca di utensile a partire da una pocket e con vita definita ......................................................... 255
13.11 PKT – CLS: Ricerca di pocket più vicina a pocket di riferimento ......................................................................... 261
13.12 PKT – NEA: Ricerca di pocket libera più vicina ......................................................................................................... 262
45004616J 8
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
14.2 ERR – Abilita/Disabilita la gestione errori nel Part Program ....................................................................................... 263
14.9 Errori nella gestione porte seriali da Part Program ....................................................................................................... 267
14.12 Errori durante il calcolo quote giunto date le quote pezzo (G77) ....................................................................... 270
45004616J 9
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
1. ISTRUZIONI DI SICUREZZA
1.1 Introduzione
Questo manuale integra il manuale di programmazione e descrive le procedure utilizzate per la scrittura
di Part Program con il sistema OPENcontrol su macchine complesse. Vengono fornite ai programmatori
tutte le informazioni necessarie per la creazione di programmi per il controllo della macchina.
1.1.1 Riferimenti
Per ulteriori informazioni:
OPENcontrol Manuale di programmazione
OPENcontrol Manuale di Caratterizzazione Software
OPENcontrol Manuale di Uso
I capitoli di questo manuale descrivono gli elementi del linguaggio (comandi e funzioni) utilizzati per
trattare una specifica attività, es. programmazione XML, virtualizzazioni 3D, programmazione ad alta
velocità (spline), gestione multiprocesso. Per meglio assistere il programmatore, la descrizione dei
comandi è stata integrata con degli esempi di programmazione.
Tutto quanto descritto nel capitolo 1 del Manuale di programmazione di OPENcontrol (paragrafi
“Comandi”, “Convenzioni sintattiche” e “Terminologia”) è valido anche per il presente manuale.
1.3 Legenda
ATTENZIONE: il lettore è informato di situazioni che possono provocare gravi danni fisici e/o gravi danni
alle apparecchiature con i seguenti simboli:
45004616J 10
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
CAPITOLO AGGIORNAMENTO
Capitolo 5
5.3 Aggiunta breve descrizione della nuova gestione degli spigoli con CURMODE = 6 e
SMTFORM
5.4 Modificata intera descrizione del triletterale SPL
5.15 Aggiunto paragrafo relativo al nuovo comando SMTFORM
5.16 Aggiunta descrizione CURMODE = 6 e relative caratteristiche
Capitolo 6
6.2 Modificato descrizione di alcuni parametri
6.2.1 In tabella parametri modificato intervallo validità del parametro 4 del filtro
6.2.4 Introdotto descrizione nuovo filtro
Capitolo 10
10.2.5 Aggiunto riferimento agli altri tasti che permettono di chiudere il dialog della INP
Capitolo 11
11.11 Aggiunto descrizione modalità 16 per RAP
11.25.2 Cambiato definizione assi da “ausiliari” in “PLC”
45004616J 11
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Mediante gli alias è possibile ridefinire parti del linguaggio di uso frequente.
Il controllo gestisce due tipi di alias:
Alias globali: parsificati all’accensione del sistema e validi per tutti i processi.
Alias locali: parsificati all’attivazione del programma o della para macro e validi solo all’interno del
programma o della paramacro.
Esempi validi:
{define} {LINEARE} {G1} ; Associo alla stringa LINEARE l’istruzione G1
{define} {RESET} {E100=0} ; Associo alla stringa RESET la cancellazione della variabile E100
Tutti gli alias definiti prima di un eventuale errore nel file degli alias globali vengono correttamente
caricati e attivati dal controllo.
45004616J 12
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Part Program 1:
{define} {LATO} {5} ; Associa alla stringa “LATO” il valore “5”
{LINEARE} X{LATO} ; Viene espansa in esecuzione nell’istruzione G1 X5
Part Program 2:
{define} {LATO} {10} ; Associa alla stringa “LATO” il valore “10”
{LINEARE} X{LATO} ; Viene espansa in esecuzione nell’istruzione G1 X10
(DIS, “{PROVA1}”) ; Visualizza MIASTRINGA perchè '{PROVA1}' è delimitata da doppi apici (“'”)
(DIS, ‘{PROVA1}’) ; Visualizza {PROVA1} perchè {PROVA1} è delimitata da apici singoli (“’”)
(DIS, {PROVA2}) ; Visualizza MIASTRINGA perchè PROVA2 non è delimitata e i doppi apici,
obbligatori nel triletterale DIS, sono definiti nell’alias.
45004616J 13
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
3. PROGRAMMAZIONE XML
Nota: comandi non disponibili con OPEN-10, è richiesta l’opzione A42 con OPEN-20 e
OPEN-30
I controlli della famiglia OPEN eseguono i comandi XML in due modalità: o richiamando una paramacro il
cui nome corrisponde al comando XML o generando un blocco ISO parametrizzato.
Nel caso di comandi XML eseguiti tramite paramacro eventuali parametri presenti nel comando XML
vengono assegnati alle variabili H definite nel controllo.
È possibile definire un file di corrispondenze (nel seguito mapping file) che permette di definire quali
comandi XML devo essere associati a paramacro e quali devono essere ricodificati come blocchi ISO.
Comandi XML:
Comando XML ISO paramacro Valori di H e HF
H5 = 42
H6 = ??
H7 = 1000
<XML_MOVE FEED=”1000” X=”42” /> XML_MOVE
HF5 = 1
HF6 = 0
HF7 = 1
H10 = 23
<XML_MODE,10 ABSOLUTE=”23” /> XML_MODE
HF10 = 1
H0 = 15
H1 = 16
H2 = 8
<CIRCLE X=”15” Y=”16” R=”8” /> CIRCLE
HF0 = 1
HF1 = 1
HF2 = 1
H0= 16
H1= 8
H2 = 15
<CIRCLE Y=”16” R=”8” X=”15” /> CIRCLE
HF0 = 1
HF1 = 1
HF2 = 1
H0 = 10
H1 = ??
H2 = 2
HS = “T”
<XML_TOOL X=”10” NAME=”T” NUM=”2” /> XML_TOOL
HF0 = 1
HF1 = 0
HF2 = 1
HFS = 1
45004616J 14
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Comandi XML :
Comando XML Blocco ISO risultante
< XML_CIRC Gmode=”G2” Xpos = “10”
G2 X10 Y110 I 10 J0
Ypos=”110” Ival=” 10” Jval =“0” />
<XML_ABSOLUTE/> G90
<XML_INCR /> G91 ; Sets incremental mode
< XML_LIN Xpos=”42” Gmode=”10” Ypos=”24” G10 X 42 Y =24
<XML_ASS_SYNC VarName=”E0” Expr= “(42 +
N10& E0 = (42 + 24) / 2
24) / 2” BLOCKNUMBER=”10”/>
Ogni riga del mapping file corrisponde a un comando XML e può essere suddivisa in due parti: la
definizione del comando XML e la sua risoluzione.
Non è possibile ricodificare un comando XML su di un blocco ISO se non esiste il mapping file o se il
comando non appare in tale file.
Se non esiste un file di corrispondenze o se il comando XML non appare in tale file, il controllo chiamerà
comunque una paramacro con lo stesso nome del comando XML e i parametri verranno assegnati alle
variabili H a seconda della loro posizione nel comando XML. Questo implica che modificando la posizione
dei parametri tra due chiamate di un comando questi verranno assegnati a variabili H differenti. In
questo caso non è possibile utilizzare parametri di tipo stringa.
Il primo carattere del comando XML deve essere una lettera maiuscola.
45004616J 15
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi:
dove:
indice è un numero intero che indica l’indice della variabile H corrispondente al primo parametro
del comando XML. Indice è opzionale, se non è specificato allora il primo parametro XML
verrà associato alla variabile H0.
tipo è una stringa di caratteri che specifica il tipo di parametro; i tre tipi permessi sono:
integer, double e string
param è il nome utilizzato per indicare il parametro all’interno del file XML. È una stringa
costituita da caratteri alfanumerici e dai caratteri ′-′ e ′_′. La posizione del parametro
indica a quale variabile H esso sia associata, l’indice della variabile H è calcolato secondo
questa formula
indiceH = posizione param + indice
Il valore di indice non si applica nel caso di parametro di tipo stringa, inoltre il parametro
stringa non viene preso in considerazione nel calcolo della posizione nella formula
precedente.
Un comando XML che appaia nel mapping file non può utilizzare parametri che non siano stati definiti.
È possibile definire, per ogni comando XML, un solo parametro di tipo stringa che verrà mappato sulla
variabile HS.
I parametri sono associati alle variabili H in modo consecutivo a partire dall’indice specificato da indice
o, se questo è assente, da 0. Il primo parametro verrà quindi associato alla variabile H indice, il secondo a
Hindice+ 1 e così via per tutti i parametri
Per quanto riguarda l’indicizzazione degli altri parametri, il parametro di tipo stringa è trasparente e
non influisce sul computo degli indici degli altri parametri.
Un comando XML può non utilizzare tutti i parametri definiti nel mapping file. Se un parametro è
utilizzato in una chiamata di un comando XML allora il flag HF corrispondente alla variabile H associata
al parametro verrà settato ad 1.
45004616J 16
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi:
INLINE blocco_ISO_parametrico
Dove:
INLINE è la parola chiave che permette di identificare un comando XML che sarà
ricodificato in blocco ISO
blocco_ISO_parametrico è il blocco ISO che verrà eseguito dal controllo a ogni chiamata del
comando XML. Il blocco può contenere dei parametri che sono valorizzati
nella chiamata al blocco XML, la sintassi dei parametri è la seguente:
:nomeParametro:
dove nomeParametro è una stringa alfanumerica comprensiva dei caratteri
_ e -.
45004616J 17
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
La variabile assume il valore 2 quando viene eseguito dal PLC il comando di caricamento del file.
Durante la fase di caricamento non è possibile eseguire del codice XML, ogni tentativo di esecuzione
fallirà e verrà emesso un errore.
45004616J 18
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Inizio blocco
Il campo inizio blocco è obbligatorio. Permette all’interprete del programma di passare in modalità XML.
Comando XML
Il campo comando XML è obbligatorio e specifica il comando XML da eseguire
È formato da una stringa di caratteri alfanumerici, ′-′ e ′_′.
Assegnazione parametrica
Il campo assegnazione parametri è opzionale e permette di assegnare valori ai parametri di un comando
XML. Un blocco assegnazione parametri è formato da un insieme di assegnazioni che rispettano la sintassi
seguente:
parametro = ″valore″
Nel caso di comandi XML valore può essere un numero, una variabile o un’espressione algebrica.
Nel caso di comandi XML ricodificati valore è una stringa ASCII che non contiene il carattere di ritorno a
capo.
Esempio:
<ABSOLUTE_PROGRAMMING BLOCKNUMBER = “13” X=”12.3” NOME = “TEST” \>
45004616J 19
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 20
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
4. VIRTUALIZZAZIONI E TRASFORMAZIONI 3D
Sintassi
dove:
af1 Nome dell’asse fisico lineare
af2 Nome dell’asse fisico rotativo
av1 Nome dell’asse virtuale ascissa
av2 Nome dell’asse virtuale ordinata
r Raggio minimo entro il quale non deve entrare il percorso utensile. Può essere
specificato direttamente tramite un numero reale o tramite una variabile
nessun parametro Disattiva la modalità UVP
Caratteristiche:
Questo tipo di virtualizzazione viene utilizzata nel caso si voglia movimentare un asse lineare (X) e uno
rotativo (C) programmando però le quote su un piano cartesiano UV; la posizione del generico punto P di
coordinate (U,V) nel piano virtuale viene tradotta nelle coordinate (X,C) degli assi fisici.
45004616J 21
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Il parametro r (raggio minimo) deve essere programmato tenendo conto della velocità di
avanzamento F programmata, in modo da evitare che venga richiesta all’asse rotativo una
velocità superiore a quella di rapido
E0=110*180/(3.14159*800) 5 V
T1.1M6
S1000M3 20
GC0X50Y0
5
(UVP,XC,UV,E0)
G16 UV
0 U
G1G42U20VF110 cor_pol1drw
V20
r3
20
5
U-15 20
b5
V-20 15 20
r5 0
U0
G40G2U20V0I20J-20
(UVP)
GX50
45004616J 22
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
(UVC,af1,av1,r)
(UVC)
dove:
af1 Nome dell’asse fisico rotativo
av1 Nome dell’asse virtuale
r Valore del raggio del cilindro sul quale viene eseguito il profilo. . Può essere
espresso direttamente tramite un numero reale o tramite una variabile
nessun parametro Disabilita la modalità UVC
Caratteristiche:
Questo tipo di virtualizzazione viene utilizzata nel caso si voglia movimentare un asse lineare (Y) ed un
rotativo (B) programmando le quote in un piano cartesiano WY. Mentre i movimenti di Y virtuale
coincidono con quelli di Y fisico, ogni spostamento di W corrisponde ad un arco di cerchio, funzione del
raggio del cilindro, che deve essere tradotto in uno spostamento angolare dell'asse fisico B.
45004616J 23
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio
60
45
35
20 20
W
0 0
140.71
180
377
220
80
0
45004616J 24
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
(UVA,af1af2,av1av2,alpha)
(UVA)
dove:
af1 nome del primo asse fisico
af2 nome del secondo asse fisico
av1 nome dell’asse virtuale ascissa
av2 nome dell’asse virtuale ordinata
alpha angolo, in gradi, sotteso dai due semiassi positivi degli assi lineari fisici. Può essere
espresso direttamente tramite un numero reale o tramite una variabile
nessun parametro disattiva la modalità UVA
Caratteristiche:
Questo tipo di virtualizzazione viene utilizzata nel caso si vogliano movimentare due assi lineari (X e Y)
che non sono tra loro ortogonali programmando però le quote su un piano virtuale (UV) ortogonale.
L’asse U, ascissa della nuova coppia di assi sarà coassiale all’asse X mentre l’asse V sarà perpendicolare
a U, formante un angolo di 90°- alpha con l’asse Y.
L’origine di UV sarà coincidente con quella di XY. La posizione del generico punto P di coordinate (U,V)
nel piano virtuale viene tradotta nelle coordinate (X,Y) degli assi fisici. Mentre i movimenti di U
coincidono con quelli dell’asse fisico X ogni spostamento di V viene tradotto in un movimento interpolato
di X e Y.
a X
Z U
Il segno del parametro alpha è positivo se l’asse X, nel posizionarsi sull’asse Y, compie una rotazione in
senso antiorario, negativo se il senso è orario (nella figura alpha è positivo)
Non sono ammessi valori di alpha pari a 0° o 180°, ciò implicherebbe due assi lineari fisici paralleli.
45004616J 25
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
In questo tipo di lavorazione, la velocità che vede l’utensile non è quella programmata ma quella
relativa utensile <--> pezzo.
Può essere utile richiedere al controllo di modificare la velocità di esecuzione in modo tale che la
velocità relativa coincida con quella programmata.
Sintassi
(LTH,al1al2,at,ar,mode)
(LTH)
dove:
al1 nome del primo asse macchina ortogonale all’asse del tornio (deve essere di tipo lineare)
al2 nome del secondo asse macchina ortogonale all’asse del tornio (deve essere di tipo
lineare)
at nome dell’asse macchina lungo il quale è posizionato l’asse del tornio (deve essere
di tipo lineare)
ar nome dell’asse macchina che ruota il tornio (deve essere di tipo rotante)
mode parametro che abilita il tipo di operazione eseguita dal controllo:
Se 0 il controllo corregge la velocità programmata e calcola la velocità relativa
durante il movimento.
Se 1 il controllo calcola esclusivamente la velocità relativa durante il movimento,
ma non corregge la velocità programmata.
nessun parametro disattiva la modalità LTH
45004616J 26
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Xm
Cvx
Y
p Cvy
C
Cvt
Ym
C
Z Xp
p
G99
G90
G10 Z(40+20) C0
G10 X100 Y200
G92 X0 Y0 Z40
(LTH,YZ,X,C,0)
G01 X135 Y35 Z40 C0
G01 X135 Y27.027 Z46.468 C11.905
G01 X135 Y18.942 Z50.73 C22.5
G01 X135 Y9.488 Z53.58 C33.949
G01 X135 Y0 Z54.497 C45
G01 X135 Y-9.488 Z53.58 C56.051
G01 X135 Y-18.942 Z50.73 C67.5
G01 X135 Y-27.027 Z46.468 C78.095
G01 X135 Y-35+ Z40 C90
G01 X135 Y-30+ Z40 C90
(LTH)
G99
45004616J 27
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
UPR
G35 Rototraslazione della terna cartesiana XYZ nello spazio
G36
G37-38-39
Programmazione in quote pezzo
TCP
Movimentazione lungo la direzione utensile
Il comando UPR (USE PLANE ROTATED) permette la definizione di una rototraslazione di una terna di assi
cartesiani e di una rotazione degli assi rotativi.
Sintassi
(UPR, tipo, ax1 ax2 ax3 [, [an1] r1, [an2] r2, [an3] r3] [, o1, o2, o3] [, rr1, rr2])
(upr, tipo, ax1 ax2 ax3 [, [an1] r1, [an2] r2, [an3] r3] [, o1, o2, o3] [, rr1, rr2])
(UPR, 99)
(UPR)
dove:
tipo Rappresenta il tipo di UPR, i valori accettati sono i seguenti:
0 - Assoluto: le rototraslazioni sono riferite agli assi fisici o al piano di
rotazione globale
45004616J 28
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
ax1 nomi degli assi lineari su cui applicare la rototraslazione (es. XYZ)
ax2
ax3
an1r1 coppia di parametri che indicano nome asse e valore della rotazione (in gradi)
an2r2 relativa a quell’asse. Se il nome dell’asse non è specificato allora la rotazione
an3r3 viene applicata all’asse corrispondente alla posizione in cui appare il valore di
rotazione.
rr1 Sono valori di angoli, espressi in gradi e interni all’angolo giro (compresi
rr2 -360° e +360°), che identificano l'origine dei due assi rotativi.
Sono da considerarsi sempre anch’essi come traslazioni degli assi fisici.
nessun parametro (UPR) senza parametri disabilita la modalità UPR lasciando solo quella globale, se
presente.
Se non è stata programmata una rotazione globale i comandi (UPR) e (UPR,99)
sono equivalenti.
45004616J 29
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
upr Programmando il triletterale minuscolo è possibile variare gli angoli e/o origini
senza disabilitare l'algoritmo UPR e senza uscire dalla modalità "MOVIMENTO
CONTINUO".
Il triletterale (upr,........) minuscolo deve essere usato solamente per variare i
parametri del (UPR,....), di tipo non globale, programmato in precedenza.
Non è possibile variare la sequenza degli assi.
Non è possibile programmare una rotazione di tipo globale
Per determinare il senso di rotazione della terna virtuale fare riferimento alla
regola della mano destra.
Caratteristiche:
La funzionalità UPR permette di programmare qualunque funzione di macchina in uno spazio ruotato con
angoli definiti a piacere rispetto alla terna cartesiana della macchina utensile.
Questo consente all'operatore di programmare nel normale sistema cartesiano (XYZ) la definizione del
profilo da lavorare, e poi delegare al controllo numerico il compito di ricalcolare la movimentazione
degli assi secondo i piani derivanti dalla rotazione.
La programmazione di un UPR globale permette di applicare una rototraslazione iniziale alla quale tutti i
successivi UPR fanno riferimento. Questo consente di eseguire lo stesso part program, che a sua volta
può contenere altre istruzioni di trasformazione geometriche, anche se il pezzo da lavorare è, ad
esempio, staffato sul bancale con orientamenti differenti.
L’attivazione di un UPR di tipo globale non viene vista come UPR precedente ai fini della
programmazione incrementale o minuscola.
L’attivazione di un UPR di tipo globale annulla una qualunque virtualizzazione precedente con
conseguente azzeramento degli eventuali spiazzamenti.
Nel caso di utilizzo di UPR di tipo 2, 3, 4 e 6 o dei corrispondenti di tipo globale, il sistema necessita
delle caratteristiche della macchina che vanno inserite nella tabella TCP secondo le regole definite dal
TCP stesso e poi attivate. Quando UPR e (TCP, 5) sono attivi in contemporanea, i movimenti sull'asse
utensile influenzeranno il movimento degli assi virtuali.
Le modalità 2 e 3 fanno si che l'asse utensile, individuato dalla programmazione degli assi rotativi,
assuma nel sistema di riferimento virtuale la stessa posizione che ha nel sistema di riferimento
individuato dalla terna cartesiana.
45004616J 30
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Y’
Z’
Y X’
Non è possibile programmare un’origine di tipo UAO o UTO con una virtualizzazione attiva. Eventuali
origini incrementali (UIO) applicate sul piano ruotato vengono eliminate al successivo UPR.
Le origini sugli assi rotativi attuate con un comando di UIO non sono gestite.
Al comando di RESET viene disabilitata la modalità UPR.
Nel caso di UPR globale, i valori di r1, r2, r3 devono essere compresi tra –90° e +90°.
Per angoli esterni a tale intervallo, l’algoritmo di generazione della posizione degli assi
rotativi, nel passaggio da una virtualizzazione all’altra, potrebbe generare delle rotazioni
indesiderate, ma comunque congruenti alla posizione dell’utensile.
L’UPR è insensibile alla DAN: gli assi che si devono specificare nell’upr sono i
nomi degli assi fisici, indipendentemente da eventuali comandi di DAN effettuati
precedentemente.
Modalità di rotazione:
La rotazione della terna cartesiana viene eseguita in modo sequenziale rispetto agli angoli di rotazione
programmati; questo comporta che:
A. Il sistema di coordinate ax1 ax2 ax3 viene ruotato di un angolo r1 intorno all'asse ax1
B. Il nuovo sistema di coordinate ax1' ax2' ax3', derivante dalla rotazione descritta al punto A), viene
ruotato di un angolo r2 intorno all'asse ax2'
C. Il nuovo sistema di coordinate ax1'' ax2'' ax3'' derivante dalle rotazioni descritte ai punti A) e B), viene
ruotato di un angolo r3 intorno all'asse ax3''
Come risultato di queste operazioni si ha il sistema di riferimento ruotato identificato dagli assi ax1 ax2
ax3.
45004616J 31
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Le operazioni A) B) e C) sono eseguite in modo sequenziale rispetto agli angoli ed agli assi
programmati nel triletterale; pertanto l'ordine di definizione degli angoli e degli assi fisici è
fondamentale.
Sintassi
(UPR, tipo, ax1 ax2 ax3, av1 av2 av3 [, [an1] r1, [an2] r2, [an3] r3] [, o1, o2, o3] [, rr1, rr2])
(upr, tipo, ax1 ax2 ax3, av1 av2 av3 [, [an1] r1, [an2] r2, [an3] r3] [, o1, o2, o3] [, rr1, rr2])
av1 av2 av3 nomi dei tre assi virtuali interessati dalla movimentazione (es. UVW)
Caratteristiche:
Il controllo OPEN, a fronte di un comando UPR nella sintassi S10, non genera fisicamente i tre assi
virtuali ma esegue internamente il comando (DAN, av1 ax1, av2 ax2, av3 ax3) es. (DAN, UX,VY,WZ).
Dopo questo UPR, è possibile quindi programmare immediatamente gli assi virtuali.
Se nel programma si ha un comando di DAN in modo da poter programmare nuovamente gli assi fisici
piuttosto che i virtuali, il sistema muoverà gli assi fisici come richiesto.
Il comando (UPR) ripristina automaticamente l’associazione nomi-assi attiva prima della rotazione piani.
45004616J 32
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 1:
GYXZ Il sistema ruotato è ottenuto tramite:
(UPR, 0, XYZ, 30,45,60) Rotazione di 30° del sistema XYZ intorno
G1F5400 all’asse X (XYZ X′Y′Z′)
X100.4 Y9.12 Z-70 Rotazione di 45° del sistema X′Y′Z′ intorno
X70.345 Z-20 all’asse Y′ (X′Y′Z′ X′′Y′′Z′′)
Rotazione di 60° del sistema X′′Y′′Z′′ intorno a
Z′′
Esempio 2:
GYXZ Il sistema ruotato è ottenuto tramite:
(UPR, 0, XYZ, X10,Z80,0) Rotazione di 10° del sistema XYZ intorno
G1F4000 all’asse X (XYZ X′Y′Z′)
X50 Y70 Rotazione di 80° del sistema X′Y′Z′ intorno
X90 all’asse Z′
Esempio 3:
GXYZ20 Il sistema ruotato è ottenuto tramite:
(UPR, 0, ZYX, 80, 0, 10) Rotazione di 80° del sistema ZYX intorno
G1F3000 all’asse Z (XYZ X′Y′Z′)
Z50 Y70 Rotazione di 10° del sistema Z′Y′X′ intorno
X90 all’asse X′
Esempio 4:
GXYZ Il sistema ruotato è ottenuto tramite:
(UPR, 0, ZYX, Y50, Z60,0) Rotazione di 50° del sistema ZYX intorno
G1F3000 all’asse Y (ZYX Z′Y′X′)
Z50 Y70 Rotazione di 60° del sistema Z′Y′X′ intorno
X90 all’asse Z′
Esempio 5:
GXYZ Il sistema ruotato è ottenuto tramite:
(UPR, 0, XYZ, 30, 0,0) Rotazione di 30° del sistema XYZ intorno
G1F3000 X50Y0 all’asse Z (XYZ X′Y′Z′)
Y30
.
Il nuovo sistema è ottenuto tramite:
4.2.2.1 (UPR,1,XYZ,60, 0, 0)
Rotazione di 60° del sistema X′Y′Z′ intorno
all’asse X′
45004616J 33
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 6:
GXYZ Il sistema ruotato è ottenuto tramite:
(UPR, 0, XYZ, 30, 45, 60, 10.8, 20, -30.2) Traslazione dell’origine del sistema di
G1F5400 riferimento nei punti X10.8, Y20, Z-30.2 nel
X100.4 Y9.12 Z-70 sistema di riferimento attivo
X90 Rotazione di 30° del sistema XYZ intorno
all’asse X (XYZ X′Y′Z′)
Rotazione di 45° del sistema X′Y′Z′ intorno
all’asse Y′ (X′Y′Z′ X′′Y′′Z′′)
Rotazione di 60° del sistema X′′Y′′Z′′ intorno
all’asse Z′′
Esempio 7:
GXYZ Il sistema ruotato è ottenuto tramite:
(UPR, 0, XYZ, 30, 45, 60, 10.8, 20, -30.2) Traslazione dell’origine rispetto al sistema di
G1F5400 riferimento attivo
X100.4 Y9.12 Z-70 Rotazione di 30° del sistema XYZ intorno
X90 all’asse X (XYZ X′Y′Z′)
Rotazione di 45° del sistema X′Y′Z′ intorno
all’asse Y′ (X′Y′Z′ X′′Y′′Z′′)
Rotazione di 60° del sistema X′′Y′′Z′′ intorno
all’asse Z′′
Esempio 8:
In questo caso si vuole applicare una rotazione iniziale di 90° intorno all’asse Z, al part program
dell’esempio 2
GYXZ Il sistema ruotato è ottenuto tramite:
Rotazione di 90° del sistema XYZ intorno
(UPR,10,XYZ, 0,0,90) all’asse Z (XYZ X′Y′Z′)
(UPR, 0, XYZ, X10,Z80,0) Rotazione di 10° del sistema XYZ intorno
G1F4000 all’asse X (X′Y′Z′ X′′Y′′Z′′)
X50 Y70 Rotazione di 80° del sistema X′′Y′′Z′′ intorno
X90 all’asse Z′
45004616J 34
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
ax1 nome dell’asse cui si riferisce il primo parametro della rototraslazione.
ax2 nome dell’asse cui si riferisce il secondo parametro della rototraslazione.
ax3 nome dell’asse cui si riferisce il terzo parametro della rototraslazione.
o1 valore della traslazione che deve essere applicata al corrispondente asse
o2 Il valore si può esprimere in modo diretto usando un numero reale oppure
o3 indirettamente usando una variabile o un parametro E.
r1 valore della rotazione che deve essere applicata al corrispondente asse.
r2 Il valore si può esprimere in modo diretto usando un numero reale oppure
r3 indirettamente usando una variabile o un parametro E.
(nessun parametro) Se chiamati senza alcun parametro i due codici disattivano la rototraslazione
Caratteristiche:
Il codice G35 corrisponde ad un UPR di tipo 10 (globale assoluto) e il codice G36 corrisponde ad un UPR
di tipo 0 (assoluto).
La rototraslazione utilizza come sistema di riferimento la terna ordinata ax1, ax2, ax3.
L’esecuzione del codice G35 senza parametri corrisponde ad un UPR 99, equivalente quindi alla
rimozione di tutti gli UPR attivi. L’esecuzione del codice G36 senza parametri corrisponde alla rimozione
dell’UPR lasciando però attivo un eventuale UPR globale.
45004616J 35
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
4.2.4 G37 – G38 – G39 Rototraslazione della terna cartesiana dati 3 punti
I codici G37, G38 e G39 permettono di definire implicitamente una rototraslazione corrispondente a un
UPR di tipo 10.
Il codice G37 permette di definire le coordinate teoriche dei 3 punti presi come riferimento.
Il codice G38 permette di definire le coordinate reali dei 3 punti presi come riferimento.
Il codice G39 calcola e applica la rototraslazione che permette di passare a un sistema di riferimento in
cui la coordinate reali corrispondano a quelle teoriche.
Sintassi
G37 ax1[xi1, xi2, xi3] ax2[yi1, yi2, yi3] ax1[zi1, zi2, zi3]
G38 ax1[xf1, xf2, xf3] ax2[yf1, yf2, yf3] ax3[zf1, zf2, zf3]
G39 [i j k]
dove:
ax1, ax2, ax3 Nomi degli assi del sistema di riferimento utilizzato per definire i tre punti di
riferimento.
I, j, k Nomi degli assi utilizzati come sistema di riferimento della rototraslazione. i,j, e k
devono essere gli stessi assi utilizzati per definire le coordinate dei punti teorici e
reali. L’ordine di i, j, e k può essere differente da quello di ax1, ax2 e ax3. Se i, j
e k non sono presenti, allora il comando G39 disattiva la rototraslazione
eventualmente attiva.
45004616J 36
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Caratteristiche:
Per poter attivare la rototraslazione è necessario definire, tramite i codici G37 e G38, le coordinate
teoriche e quelle reali dei tre punti presi come riferimento.
I tre punti di riferimento devono essere non allineati, in caso contrario non sarà possibile definire la
rotraslazione necessaria per passare dai punti teorici a quelli reali
La rototraslazione generata dal codice G39 è di tipo globale assoluta, quindi assimilabile ad un UPR di
tipo 10.
Nel caso vengano attivate rototraslazioni locali dopo l’esecuzione della G39 (per esempio UPR, 0), la
terna cartesiana dovrà essere coerente con quella specificata dal comando G39
La disattivazione di una rototraslazione generata tramite il codice G39 si può effettuare chiamando il
comando G39 senza specificare alcuna terna o, analogamente alla virtualizzazione UPR di tipo globale,
tramite il triletterale (UPR, 99).
Esempio:
Si desidera lavorare il pezzo seguente:
Nel quale i tre cerchi indicano i punti di riferimento le cui coordinate saranno P 1(x1, y1, z1), P2(x2, y2, z2)
e P3(x3, y3, z3).
Il pezzo grezzo è però stato staffato in modo non preciso, la figura mostra il disallineamento del grezzo
rispetto alla posizione teorica (tratto nero).
Utilizzando un sistema di misura, come per esempio dei tastatori, sarà possibile misurare le posizioni
reali dei punti di riferimento. Tali posizioni saranno P1(x', y', z'), P2(x'', y'', z'') e P3(x''', y''', z''').
Ipotizzando che la terna di riferimento sia XYZ, allora sarà possibile inserire i seguenti comandi per poter
tenere conto del disallineamento del pezzo da lavorare:
G37 X[x1, x2, x3] Y[y1, y2, y3] Z[z1, z2, z3]
G38 X[x', x'', x'''] Y[y', y'', y'''] Z[z', z'', z''']
G39 XYZ
45004616J 37
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questa prestazione permette la programmazione di una macchina a 5 assi (3 lineari e 2 rotativi) riferita
alla punta dell'utensile piuttosto che al centro di rotazione degli assi (centro della testa).
È possibile predefinire fino a 4 configurazioni cinematiche e per ognuna di esse definire 4 portautensili
differenti. Al momento dell’attivazione del TCP sarà possibile quale cinematica e quale portautensile
attivare.
Se all’atto della programmazione del TCP c’è un utensile attivo, solo la lunghezza 1, il diametro 1
(raggio) e diametro 2 (raggetto) del relativo correttore saranno presi in carico e gestiti dalla cinematica.
L'attivazione di questo algoritmo viene fatta direttamente nel programma tramite il triletterale TCP.
Esistono due modalità Tool Center Point:
Le due figure seguenti mostrano la diversa traiettoria della punta utensile a fronte di un
movimento del rotativo A a seconda che il TCP sia attivo o meno.
La prima figura mostra il comportamento quando il TCP non è attivo, in questo caso il
movimento del rotativo A modifica la quota della punta utensile lungo la direzione dell’asse Z,
generando un profilo differente da quello programmato.
Profilo
centro testa
Profilo
programmato
Profilo ottenuto
senza TCP
Quando il TCP è attivo (seconda figura) il controllo introduce un movimento lungo l’asse Z che
permette di annullare lo scostamento della punta utensile dal profilo programmato dovuto al
movimento dell’asse rotativo A.
45004616J 38
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Profilo
Centro testa
Profilo Profilo
programmato ottenuto
con TCP attivo
Direzione
utensile
45004616J 39
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questa modalità permette di eseguire movimenti lungo i tre assi del piano identificato
dall’utensile.
Alla sua attivazione vengono generati dal sistema 3 assi virtuali, i cui nomi devono essere stati
precedentemente caratterizzati in AMP o definiti nelle variabili di cinematica $TDNAME,
$TANAME e $TONAME. Tali assi determinano una terna cartesiana avente asse verticale
parallelo alla direzione utensile e asse ascissa e asse ordinata coerentemente sul piano
perpendicolare.
$TANAME $TDNAME
$TONAME
Gli assi virtuali possono essere programmati singolarmente o in contemporanea agli altri assi; in
tal caso le prestazioni date da (TCP,5) si sommano a quelle del (TCP,1); può inoltre essere mosso
in manuale.
La modalità 5 può essere utile sia per eseguire fori inclinati sia per estrarre l'utensile dal pezzo
in seguito al verificarsi di un'anomalia che ha provocato l'interruzione della lavorazione.
In questo secondo caso si possono avere 3 differenti situazioni:
a) Gli assi rotativi, all'atto dell'attivazione di (TCP,5), non sono riferiti e la precedente
interruzione si è verificata durante una lavorazione che utilizzava una qualunque modalità
TCP.
In questo caso il sistema individua automaticamente la direzione dell'utensile in base alle
posizioni assunte dagli assi rotativi prima del verificarsi dell'anomalia.
Questo è possibile anche dopo un eventuale spegnimento del sistema essendo tali posizioni
memorizzate in un'area di memoria non volatile. Va tenuto presente che i valori che individuano
la posizione degli assi rotativi sono modificabili tramite il data entry MANUAL SETUP e da PLC
tramite la funzione ToolCenterPointWrite (funzione utile nel caso in cui si voglia variare la
direzione di estrazione dell'utensile).
b) Gli assi rotativi, all'atto dell'attivazione di (TCP,5), non sono riferiti e la precedente
interruzione si è verificata durante una lavorazione che NON utilizzava la modalità TCP.
In questo caso è necessario comunicare al sistema la direzione dell'utensile, ovvero la posizione
45004616J 40
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
degli assi rotativi, in quanto eventuali posizioni memorizzate precedentemente dal sistema
possono non essere significative. Le posizioni possono essere comunicate o tramite la funzione
PLC ToolCenterPointWrite o tramite il data-entry di MANUAL SETUP.
NOTA:
Per l'utilizzo della funzione ToolCenterPointWrite o del data entry di MANUAL SETUP fare
riferimento ai manuali LIBRERIA 4Control e MANUALE D'USO.
In tutte le modalità TCP, la logica di macchina può comunicare in tempo reale all'interpolatore
una eventuale variazione della lunghezza e raggio utensile, del raggio spigolo, nonché degli
angoli di contatto con il pezzo. In questo modo è possibile compensare l'usura dell'utensile
durante la lavorazione.
L’algoritmo di gestione della modalità (TCP,5) genera fino a 3 nuovi assi andando a diminuire
così il numero di assi messi a disposizione per Processo
45004616J 41
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Lunghezza
utensile
Raggio
utensile
[p, q, d]
[i, j, k] Raggio spigolo
[m, n, o]
45004616J 42
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Percorso programmato
Percorso compensato
Vettore u v w
45004616J 43
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Le differenze fondamentali, nell’utilizzo dei vettori uvw o dei versori mno, pqd per la compensazione
raggio utensile nello spazio, sono una relativa alla geometria del profilo e l’altra alla dinamica con cui
viene eseguito.
Dal punto di vista geometrico, uno spigolo compensato utilizzando il versore mno (e/o pqd) viene
deformato, a causa della natura stessa del versore (vettore unitario), comportando un’entrata nel profilo
in corrispondenza dello spigolo. Al contrario utilizzando uvw, dove non c’è la precedente limitazione
dovuta al versore risultante, la distanza del centro utensile dal punto programmato può essere
opportunamente modulata per evitare che l’utensile “entri” nel pezzo ed il profilo eseguito rispetti
quindi fedelmente il profilo programmato.
Quanto appena detto può essere schematizzato nelle seguenti figure, dove il profilo compensato (centro
utensile) è indicato dalla retta tratteggiata e la posizione dell’utensile nei due diversi casi.
mno uvw
X0Y0 m 0 n1 o0 X0Y0 u 0 v 1 w 0
X20 m 0.707 n 0.707 o 0 X20 u 1 v 1 w 0
Y-20 m 1 n0 o0 Y-20 u 1 v 0 w 0
Dal punto di vista dinamico, i versori mno, vengono interpolati insieme ai punti programmati tra il
valore nel punto iniziale (punto programmato precedente) e quello nel punto finale (punto programmato
successivo). Questo significa che si ha una variazione progressiva e uniformemente distribuita del punto
di contatto tra utensile e pezzo. Inoltre la feed viene calcolata rispetto al profilo pezzo e risulta quindi
congruente con quella programmata.
45004616J 44
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Conclusione
Il tipo di modalità da utilizzare, per la compensazione raggio utensile nello spazio, dipende da quello
che si vuole ottenere:
la programmazione mno determina un profilo meno fedele rispetto a quello programmato ma
eseguito in modo più fluido e dinamicamente corretto. Questa programmazione si adatta
maggiormente a profili curvilinei per punti.
la programmazione uvw comporta un profilo più fedele a quello programmato ma eseguito in
modo più “brusco”. Inoltre per valori di raggio grandi la velocità tecnologica programmata
potrebbe non essere rispettata. Questa programmazione si adatta di più a profili spigolosi per
enti geometrici.
Mentre i parametri mno sono modali, ovvero vengono sempre applicati sugli assi in base
all’ultimo valore programmato, i parametri uvw NON LO SONO e la mancata
programmazione equivale alla programmazione con il valore 0
45004616J 45
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
TCPDEF = idCin
dove:
idCin è un valore numerico che specifica l’identificativo della cinematica di default del TCP. Può
essere specificato direttamente tramite un numero intero compreso tra 1 e 4 o
indirettamente tramite un parametro E.
Caratteristiche:
Il valore di questa variabile viene utilizzato durante l’attivazione della funzione TCP se non viene
specificato nessun identificativo di cinematica nel triletterale.
Esempio:
…
(TCP, 1,1)
(DIS, TCPACT) ; Verrà visualizzato il valore 1
(TCP)
(DIS, TCPACT) ; Verrà visualizzato il valore 0
…
45004616J 46
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
4.2.10 TCP – Tool Center Point per macchine con testa Prismatica
Nota: comando non disponibile con OPEN-10, richiede l’opzione A31 con OPEN-20, è
incluso in OPEN-30
Questa prestazione permette la programmazione di una macchina a 5 assi (3 lineari e 2 rotativi) riferita
alla punta dell'utensile piuttosto che al centro di rotazione degli assi (centro della testa).
È possibile anche utilizzare questa prestazione nel caso di macchine senza rotativi o con un solo asse
rotativo.
L'attivazione di questo algoritmo viene fatta direttamente nel programma tramite il triletterale TCP.
Programmando il triletterale minuscolo (tcp,n), è possibile variare alcuni parametri senza disabilitare
l'algoritmo TCP e senza uscire dalla modalità di "MOVIMENTO CONTINUO". Il triletterale (tcp,n) minuscolo
deve essere usato solamente per variare i parametri del (TCP,n) programmato in precedenza. La
prestazione di cambio parametri in continuo è disponibile anche per la modalità 5.
Sintassi
(TCP,1[, idCinem])
(TCP,5[, idCinem, modo])
(tcp,1)
(tcp,5)
dove:
idCinem Identificativo della cinematica che dovrà essere attivata. Se questo parametro è
assente verrà caricata la cinematica di default specificata dalla variabile TCPDEF.
modo Modo attivato per TCP direzione utensile, i seguenti valori sono accettati:
1 – Genera l’asse virtuale direzione utensile
2 – Genera l’asse direzione utensile e il piano virtuale perpendicolare
3 – Genera l’asse direzione utensile e la proiezione sul piano XY del piano
perpendicolare all’utensile
11 – Come 1 ma con aggiornamento quota virtuale
12 – Come 2 ma con aggiornamento quote virtuali
13 - Come 3 ma con aggiornamento quote virtuali
Caratteristiche:
L'algoritmo di TCP necessita per il suo funzionamento di alcune informazioni relative alla geometria della
macchina, mentre quelle relative all’utensile vengono stabilite dal sistema in base all’utensile in uso.
Vengono gestire teste che montino fino a quattro utensili, ognuno dei quali può eventualmente essere
angolare.
Nel seguito della descrizione delle caratteristiche del TCP, la terna cartesiana dei tre assi lineari TCP
verrà identificata con la terna cartesiana classica XYZ dove X corrisponde al primo asse lineare, Y al
secondo e Z al terzo. I due assi rotativi verranno identificati come testa orizzontale e testa basculante.
La valutazione dei parametri di configurazione deve essere fatta dopo aver posizionato la testa in
modo tale che l’utensile da configurare sia posizionato in verticale lungo la direzione Z- e che l'asse
45004616J 47
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
di rotazione del basculante sia parallelo al piano XZ come illustrato nelle figure 2.9, 2.10, 2.11. Nel
caso in cui la testa non sia di tipo double-twist l’asse di rotazione del basculante deve attraversare il
I e il III quadrante del piano XZ (come in figura 2.9).
Tali parametri devono essere caricati nelle rispettive variabili di configurazione TCP durante la fase di
configurazione dell’AMP tramite ODM, tramite PLC utilizzando le apposite funzioni oppure direttamente
da part program assegnandone i valori.
Quando il parametro relativo all’inclinazione del secondo asse rotativo (asse basculante) vale 90° la
testa prismatica corrisponde a una testa di tipo Double Twist.
Le modalità direzione utensile 11, 12 e 13, programmabili a fronte del TCP,5, permettono di generare gli
assi virtuali come le modalità 1, 2 e 3 con in più l’aggiornamento automatico delle quote virtuali quando
vengono mossi gli assi fisici corrispondenti. Le quote degli assi virtuali saranno riferite rispetto al sistema
di riferimento attivo all’atto della programmazione del comando TCP,5.
La tabella seguente elenca i parametri necessari alla configurazione di una testa prismatica.
DESCRIZIONE NOME VARIABILE VALORI VALIDI
Macchina con testa prismatica $CINTYPE(idCinem) 1
Identificativo del primo asse lineare $ABSID(idCinem) 1 ÷ 64
Identificativo del secondo asse lineare $ORDID(idCinem) 1 ÷ 64
Identificativo del terzo asse lineare $VRTID(idCinem) 0 ÷ 64
Identificativo del primo asse rotativo (asse orizzontale) $ROTPID(idCinem) 0 ÷ 64
Identificativo del secondo asse rotativo (asse
$ROTTID(idCinem) 0 ÷ 64
basculante)
Portautensile attivo $TOOLHOLD(idCinem) 1÷4
Verso testa orizzontale.
Definisce il verso di rotazione per programmazione
positiva della testa orizzontale vista dall'alto e vale: $DIRROTP(idCinem) -1 ; 1
+1 per verso orario
- 1 per verso antiorario
Verso asse basculante.
Definisce il verso di rotazione per programmazione
positiva della testa basculante vista laterale sinistra e
$DIRROTT(idCinem) -1 ; 1
vale:
+1 per verso orario
- 1 per verso antiorario
Inclinazione dell’asse attorno a cui ruota l’asse
basculante rispetto alla verticale della macchina (90° $TILTBASC(idCinem) 0 ÷ 90°
per testa di tipo Double-Twist)
45004616J 48
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 49
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 50
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 51
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 52
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Bit 0 = 0/1 abilita/disabilita il controllo dei limiti operativi sulla punta utensile a livello
di precalcolo
Bit 1 = 0/1 disattiva/attiva il controllo del limite operativo sulla punta utensile
rispettivamente per il primo asse TCP
Bit 2 = 0/1 disattiva/attiva il controllo del limite operativo sulla punta utensile
rispettivamente per il secondo asse TCP
Bit 3 = 0/1 disattiva/attiva il controllo del limite operativo sulla punta utensile
rispettivamente per il terzo asse TCP
Ad esempio assegnando alla variabile $OPLIMMODE il valore 7 si richiede, per quanto riguarda i limiti
operativi sulla punta utensile, la disattivazione del controllo a livello di precalcolo ma la si attiva sugli
assi X e Y a livello realtime.
45004616J 53
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Le figure che seguono illustrano i parametri di caratterizzazione della compensazione applicati ad una
macchina schematizzata nelle viste frontale, laterale, e dall'alto.
+Z
Asse di rotazione
testa orizzontale
+D +A Pc
Punto controllato
Inclinaz.
+C
Asse di rotazione
testa basculante
Pr
+F Pu
Pw
-X +X
-Z
Fig. 2.9 Vista frontale
Asse di rotazione
+Z testa orizzontale +B +E Punto controllato
Pc
Asse di rotazione
+C testa basculante
Pr
+F Pu
Pw
orario antiorario
Verso di rotazione
testa basculante -Y
+Y
-Z
Fig. 2.10 Vista laterale
45004616J 54
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
+Y
+D +A
Pc Asse di rotazione
+ testa basculante
B
+ Pr Punto controllato
E orario
Asse di rotazione
Pu testa orizzontale
antiorario
-X +X
-Y
Z
Y
Angolo +
-180° +180°
Pu Y
L1 X
X Angolo +
(antiorario)
0°
L2 Direzione
utensile
Angolo + Z
Pw
Direzione
utensile +90° -90°
Y
Angolo +
(orario) 0°
Direzione
utensile
Fig. 2.12 Rinvio angolare
45004616J 55
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
+Z
Asse di rotazione
testa orizzontale
+B Asse di rotazione
testa verticale
+C
Punto controllato
-X +X
-Z
90°
180° 0°
Angolo di compensazione
raggio utensile
270°
45004616J 56
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Le figure seguenti illustrano il significato dei parametri TCP usati per la gestione di utensili sferici e
toroidali.
0°
$TORANG
Raggio utensile
0°
Lunghezza
utensile
$TORANG
Raggio spigolo
90°
45004616J 57
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Supponiamo di voler configurare una macchina con almeno 5 assi e testa di tipo prismatico, gli assi della
macchina sono X, Y, Z, C, B.
Per prima cosa andranno definiti gli assi appartenenti al TCP, in questo caso tutti. L’associazione si può
fare in ODM o direttamente in un part program utilizzando le variabili relative del TCP descritte nella
tabella presente in questo paragrafo.
Nel caso di configurazione da part program è necessario assegnare le seguenti variabili, la cinematica
utilizzata sarà la cinematica 1:
$ABSID(1)=1 ;ID X (abscissa)
$ORDID(1)=2 ;ID Y (ordinate)
$VRTID(1)=3 ;ID Z (vertical)
$ROTPID(1)=6 ;ID C (WORK rotary)
$ROTTID(1)=5 ;ID B (TOOL rotary)
Nel seguito presenteremo la procedura generale per configurare il TCP di una macchina con testa
prismatica.
Una volta definiti gli assi TCP e portati alla posizione 0 si può procedere alla configurazione TCP
propriamente detta; i parametri da assegnare sono i seguenti:
1. Angolo di inclinazione: l’angolo di inclinazione tra l’asse di rotazione del rotativo orizzontale
(WORK) e del rotativo basculante (TOOL) di una testa prismatica tipicamente è pari a 45° o 50°
mentre in una double-twist è sempre pari a 90°. L’angolo si misura in senso orario partendo
dall’asse rotativo orizzontale, come si vede nella figura seguente:
Figura a
Esempio: $TILTBASC(1) = 45
2. Verso rotazione asse rotativo orizzontale (asse WORK): per determinare il verso di rotazione
dell’asse rotativo orizzontale è necessario programmare un movimento in verso positivo e
osservare la sua rotazione nel piano XY (corrisponde a guardare la testa “dall’alto”). Se la
rotazione avviene in senso orario, allora il verso sarà positivo (+1). Se la rotazione avviene in
senso antiorario allora il verso sarà negativo (-1).
45004616J 58
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
La figura seguente mostra i due casi possibili. L’immagine di sinistra mostra un asse con verso
negativo, quella di destra un asse con verso positivo.
Figura b
3. Offset asse rotativo orizzontale (asse WORK): per determinare l’eventuale offset da inserire sul
rotativo orizzontale (asse WORK) è necessario ruotare l’asse orizzontale in modo che il piano che
contiene gli assi di rotazione dei due assi rotativi TCP sia parallelo al piano XZ della macchina
(vedi anche figura 2.9) e che l’asse del basculante (asse TOOL) intersechi il primo e terzo
quadrante. Per identificare correttamente i quadranti attraversati bisogna prendere in
considerazione un piano cartesiano centrato nell’intersezione degli assi di rotazione dell’asse
orizzontale e del basculante.
La figura seguente mostra il caso in cui il valore di offset è 0° (immagine di sinistra) poiché la
testa si trova già nella posizione corretta e il caso in cui il valore di offset richiesto è ±180°
(immagine di destra) poiché la testa si trova nella posizione opposta a quella richiesta. Nel
secondo caso, infatti, l’asse di rotazione del basculante interseca il secondo e il quarto
quadrante. Il segno dell’offset dipende dal movimento effettuato e dal segno del verso di
rotazione dell’asse rotativo orizzontale.
Il valore di offset da configurare è uguale al valore di rotazione necessario a posizionare la testa
nella posizione richiesta moltiplicato per l’opposto del segno del verso di rotazione dell’asse
orizzontale (asse WORK).
Figura c
Se si prende come riferimento la Figura b il valore di offset da impostare sarà di -90° per la testa
di sinistra e 90° per la testa di destra. I valori di offset sono ricavati in questo modo:
Testa sx: 90° (movimento) * -1 (verso rotazione) * 1 (opposto del verso) = -90°
Testa dx: -90°(movimento) * 1 (verso rotazione) * -1 (opposto del verso) = 90°
Al termine di questa fase la testa dovrà presentarsi come nella figura seguente:
45004616J 59
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Figura d
Come si può notare il piano individuato dagli assi di rotazione di C e B è parallelo al piano XZ
della macchina. Questa è la posizione che dovrà avere la testa nel prosieguo della
configurazione.
4. Verso rotazione asse rotativo basculante (asse TOOL): per determinare il verso di rotazione
dell’asse basculante occorre guardare il senso della rotazione dell’asse ponendosi nel lato X-
della testa.
Se la rotazione avviene in senso orario, allora il verso sarà positivo (+1). Se la rotazione avviene
in senso antiorario allora il verso sarà negativo (-1).
La figura seguente mostra i due casi possibili. L’immagine di sinistra mostra un asse con verso
negativo, quella di destra un asse con verso positivo.
Figura e
La variabile associata a questo parametro è $DIRROTT, il cui unico indice identifica la
cinematica.
5. Offset asse rotativo basculante (asse TOOL): Per determinare l’eventuale offset dell’asse
rotativo basculante bisogna ruotare l'asse basculante in modo tale da posizionare l’utensile lungo
la direzione verticale (terzo asse lineare del TCP). La posizione corretta della testa è mostrata
nella figura 2.9.
Raggiunta tale posizione, il valore di offset si calcola in modo simile all’offset dell’asse rotativo
orizzontale: bisogna moltiplicare il valore di posizione dell’asse basculante per l’opposto del
segno del verso di rotazione dell’asse.
45004616J 60
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Nel caso di teste multi-mandrino bisogna impostare l’offset dei vari mandrini utilizzando un
portautensile per ogni mandrino. Nel caso di 4 mandrini, tipicamente sfasati di 90°, e verso di
rotazione negativo (antiorario) dell’asse basculante si avrà:
$OFFSROTT(1,1) = 0
$OFFSROTT(1,2) = 90
$OFFSROTT(1,3) = 180
$OFFSROTT(1,4) = - 90
La variabile associata a questo parametro è $OFFSROTT che richiede due indici: il primo
identifica la cinematica e il secondo il portautensili.
Esempio: $OFFSROTT(1,1) = 0 (Testa sx Figura e)
6. Spiazzamenti meccanici della testa: per poter definire gli spiazzamenti meccanici della testa
bisogna come prima cosa definire i punti PC, PR e PU rispettando le seguenti esigenze:
PC è un punto scelto a piacere lungo l’asse di rotazione del rotativo orizzontale (WORK)
PR è un punto scelto a piacere lungo l’asse di rotazione del rotativo basculante (TOOL)
PU individua il naso mandrino, si tratta del punto a partire dal quale si misura la
lunghezza dell’utensile innestato nel mandrino
Esistono due set di spiazzamenti: il primo relativo alla testa (distanza tra PC e PR) il secondo
relativo al portautensile (distanza tra PR e PU). Ogni set è formato da 3 parametri, uno per ogni
spostamento lungo un asse lineare TCP.
Questi sei parametri permettono di descrivere lo spostamento che porta da P C a PU passando per
PR.
Prendendo come esempio la seguente testa, nella quale l’unico punto con una corrispondenza
fisica è PU (punto innesto dell’utensile):
Figura f
45004616J 61
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Figura g
Per spostarsi da PC a PR sarà quindi necessario spostarsi lungo Z+ e in seguito lungo Y-.
Il valore da settare nei vari parametri deve essere l’opposto del valore dello spostamento effettuato,
cioè il parametro è positivo quando lo spostamento è effettuato verso la direzione negativa dell’asse.
Le variabili associate a questi parametri sono: $PCPRX, $PCPRY, $PCPRZ e indicano, rispettivamente, lo
spostamento, con il segno scelto opportunamente, lungo il primo, il secondo e il terzo asse lineare TCP.
Tutte e tre le variabili richiedono un solo indice che identifica la cinematica.
In seguito, per andare dal punto PR al punto Pu bisogna fare uno spostamento verso Z- e poi uno
spostamento verso X-.
Le variabili associate a questi parametri sono: $PRPUX, $PRPUY, $PRPUZ e indicano, rispettivamente,
lo spostamento, con il segno scelto opportunamente, lungo il primo, il secondo e il terzo asse lineare
TCP. Tutte e tre le variabili richiedono due indici, il primo identifica la cinematica e il secondo il
portautensili.
Esempio: (Figura g)
45004616J 62
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
La configurazione minima di una testa prismatica si può considerare conclusa una volta terminati i
parametri descritti nell’elenco numerato qui sopra.
Nel caso di testa prismatica può essere comodo abilitare la gestione delle coordinate sferiche. Infatti
con questo tipo di testa, volendo ad esempio posizionare l’utensile orizzontale diretto verso X+, non è
possibile programmare semplicemente (riferendoci alla testa dell’esempio)
C0B90
in quanto invece, al ruotare di B, anche C deve essere mosso in una relazione che dipende dalla
inclinazione del basculante ($TILTBASC). Le coordinate sferiche abilitano un algoritmo interno che
trasforma le quote programmate (nel nostro esempio C0B90) in uno spostamento fisico opportuno dei
due rotativi per ottenere la posizione finale richiesta.
45004616J 63
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
(TCP,1,[idCinem])
(TCP,5,[idCinem, modo])
(tcp,1)
dove:
idCinem Identificativo della cinematica che dovrà essere attivata. Se questo parametro è
assente verrà caricata la cinematica di default specificata dalla variabile TCPDEF.
Modo Modo attivato per TCP direzione utensile, i seguenti valori sono accettati
1 - Genera l’asse virtuale direzione utensile
2 - Genera l’asse direzione utensile e il piano virtuale perpendicolare
3 - Genera l’asse direzione utensile e la proiezione sul piano XY del piano
perpendicolare all’utensile
Caratteristiche:
L'algoritmo di TCP necessita per il suo funzionamento di alcune informazioni relative all'utensile in uso.
Tali parametri devono essere caricati nelle rispettive variabili di configurazione TCP durante la fase di
configurazione dell’AMP tramite ODM, tramite PLC utilizzando le apposite funzioni oppure direttamente
da part program assegnando i valori.
Questo tipo di TCP richiede di definire, per ogni movimento programmato, sia la direzione
(orientamento) dell’utensile che la direzione perpendicolare alla superficie da lavorare.
La tabella seguente elenca i parametri necessari alla configurazione della cinematica di macchina.
VALORI
DESCRIZIONE NOME VARIABILE
VALIDI
Tipo di cinematica descritta $CINTYPE(idCinem) 2
Identificativo del primo asse lineare $ABSID(idCinem) 1 ÷ 64
Identificativo del secondo asse lineare $ORDID(idCinem) 1 ÷ 64
Identificativo del terzo asse lineare (asse
$VRTID(idCinem) 1 ÷ 64
orizzontale o asse rotativo più vicino al pezzo)
Identificativo del primo asse rotativo (asse
$ROTPID(idCinem) 1 ÷ 64
orizzontale o asse rotativo più vicino al pezzo)
Identificativo del secondo asse rotativo (asse
$ROTTID(idCinem) 1 ÷ 64
basculante o asse rotativo più vicino all’utensile)
Portautensile attivo $TOOLHOLD(idCinem) 1÷4
45004616J 64
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
VALORI
DESCRIZIONE NOME VARIABILE
VALIDI
Tipo compensazione raggi utensile:
0 nessuna compensazione
1 compensazione con angoli $TOOLANG, $TORANG $COMPRAD(idCinem) 0÷3
2 compensazione con versori (mno)
3 compensazione con versori (mno e pqd)
Attivazione compensazione utensile realtime
0 compensazione realtime disattivata $COMPRT(idCinem) 0;1
1 compensazione realtime attivata
Angolo di contatto tra pezzo e utensile. È l’angolo
sotteso tra il centro dell’utensile ed il punto di $TOOLANG(idCinem) 0 ÷ 360°
contatto dell’utensile col pezzo (vedi figura 2.13)
Angolo di contatto (α) per utensili sferici o toroidali
$TORANG(idCinem) 0 ÷ 90°
(vedi figura 2.13)
Raggio operativo rotativo pezzo
Se 0 il sistema stima automaticamente lo sbraccio
massimo tra punta utensile e asse di rotazione, se
diverso da 0 il sistema utilizza il valore impostato,
tale valore serve a limitare la dinamica di rotazione $OPRADP(idCinem)
dell’asse al fine di evitare errori di asservimento
sugli assi lineari del TCP indotti dalla rotazione
dell’asse rotativo. Si consiglia di lasciare a 0 questo
valore.
Raggio operativo rotativo utensile
Se 0 il sistema stima automaticamente lo sbraccio
massimo tra punta utensile e asse di rotazione, se
diverso da 0 il sistema utilizza il valore impostato,
tale valore serve a limitare la dinamica di rotazione $OPRADT(idCinem)
dell’asse al fine di evitare errori di asservimento
sugli assi lineari del TCP indotti dalla rotazione
dell’asse rotativo. Si consiglia di lasciare a 0 questo
valore.
Modalità limiti operativi $OPLIMMODE(idCinem)
Nome asse direzione utensile.
Viene utilizzato solo per modo direzione utensile
(TCP,5).
$TDNAME(idCinem)
Deve essere un nome asse valido e, al momento
dell’attivazione TCP, non deve già esistere un asse
con lo stesso nome
Nome asse “ascissa per direzione utensile”
Viene utilizzato solo per modo direzione utensile
(TCP,5).
$TANAME(idCinem)
Deve essere un nome asse valido e, al momento
dell’attivazione TCP, non deve già esistere un asse
con lo stesso nome
45004616J 65
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
VALORI
DESCRIZIONE NOME VARIABILE
VALIDI
Nome asse “ordinata per direzione utensile”
Viene utilizzato solo per modo direzione utensile
(TCP,5).
$TONAME(idCinem)
Deve essere un nome asse valido e, al momento
dell’attivazione TCP, non deve già esistere un asse
con lo stesso nome
45004616J 66
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questa prestazione permette di definire una serie di trasformazioni geometriche per descrivere una
vasta gamma di cinematiche per macchine a 5 assi (3 lineari e 2 rotativi), oppure per macchine a 6 assi
(3 lineari e 3 rotativi).
L'attivazione di questo algoritmo viene fatta direttamente nel programma tramite il triletterale TCP.
La modalità TCP viene disabilitata con (TCP) oppure RESET.
Il triletterale (tcp,n) minuscolo deve essere usato solamente per variare i parametri del (TCP,n)
programmato in precedenza. La prestazione di cambio parametri in continuo è disponibile anche per la
modalità 5.
Sintassi
(TCP,1,[idCinem])
(TCP,5,[idCinem, modo])
(tcp,1)
(tcp,5)
dove:
idCinem Identificativo della cinematica che dovrà essere attivata. Se questo parametro è
assente verrà caricata la cinematica di default specificata dalla variabile TCPDEF.
Modo Modo attivato per TCP direzione utensile, i seguenti valori sono accettati
1 – Genera l’asse virtuale direzione utensile
2 – Genera l’asse direzione utensile e il piano virtuale perpendicolare
3 – Genera l’asse direzione utensile e la proiezione sul piano XY del piano
perpendicolare all’utensile
11 – Come 1 ma con aggiornamento quota virtuale rispetto all’origine attiva
12 – Come 2 ma con aggiornamento quote virtuali rispetto all’origine attiva
13 - Come 3 ma con aggiornamento quote virtuali rispetto all’origine attiva
Caratteristiche:
L’operazione fondamentale per definire la cinematica della macchina è individuare la “Catena
Cinematica” ovvero definire la sequenza dei movimenti degli assi e definire come il movimento di un
asse si propaga sul successivo. Tale catena deve partire dall’utensile ed arrivare al pezzo. Le
cinematiche gestite dal TCP per macchine generiche prevedono 1 o 2 o 3 assi rotativi e 3 assi lineari con
la possibilità di gestire gli assi rotativi con quattro differenti disposizioni:
a) Due assi o tre rotativi tutti montati sulla testa (Double twist / prismatica) che si muovono
attorno al pezzo. In questo caso la catena cinematica è così definita (cinematica tipo TOL):
Tool 1° Rot testa 2° Rot testa [3° Rot testa ] Assi lineari Pezzo
45004616J 67
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
b) Un asse rotativo associato ad una tavola girevole su cui viene posizionato il pezzo da lavorare ed
uno o due assi rotativi montati sulla testa. In questo caso la catena cinematica è così definita
(cinematica tipo MIX):
Tool 1° Rot testa [2° Rot testa ] Assi lineari Tavola girevole Pezzo
c) Due o tre assi rotativi associati a rispettive tavole girevoli su cui viene posizionato il pezzo da
lavorare. In questo caso la catena cinematica è così definita (cinematica tipo WRK):
d) Uno o due assi rotativi associati alle rispettive tavole girevoli su cui viene posizionato il pezzo da
lavorare ed un asse rotativo montato sulla testa. In questo caso la catena cinematica è così
definita (cinematica tipo MIXM):
Tool Rot testa Assi lineari 1° Tavola girevole [2° Tavola ] Pezzo
MIX T --- TOL MID LI3 LI2 LI1 WRK --- --- P
WRK T --- --- --- LI3 LI2 LI1 TOL MID WRK P
MIXM T --- --- TOL LI3 LI2 LI1 MID WRK --- P
Altro elemento base della catena cinematica è il “Machine Bed” ovvero il “Punto fermo”.
Si tratta di un punto “teorico” solidale con il terreno, rispetto al quale la sequenza di movimentazione
degli assi (catena) può essere spezzata in due tronconi. Le movimentazioni del primo troncone non
influiscono sulle movimentazioni del secondo troncone.
Nella catena cinematica è possibile avere 4 possibili dislocazioni del “Punto fermo”, che possono essere
schematizzate come segue:
Cinematica Tool Rot Rot Rot Lin 3 Lin 2 Lin 1 Rot Rot Rot Pezzo
TOL T TOL MID WRK LI3 LI2 LI1 --- --- --- P
MIX T --- TOL MID LI3 LI2 LI1 WRK --- --- P
WRK T --- --- --- LI3 LI2 LI1 TOL MID WRK P
MIXM T --- --- TOL LI3 LI2 LI1 MID WRK --- P
45004616J 68
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
È prevista una estensione della cinematica di macchina che consente di posizionare gli assi rotativi
(sempre e solo due) anche a cavallo degli assi lineari. In tal senso si possono descrivere quelle macchine
che utilizzano soluzioni cinematiche definite come “canotti”.
Le ulteriori catene cinematiche realizzabili sono:
e) Uno o due assi rotativi associati alle rispettive tavole girevoli su cui viene montato il pezzo da
lavorare ed un “canotto” associato al secondo asse lineare, in questo caso la catena cinematica è
così definita (cinematica tipo WC1):
Tool -> Assi lineari (3° e 2°) -> Rot -> Asse lineare (1°) -> 1° Tavola -> [2° Tavola ->] Pezzo
f) Uno o due assi rotativi associati alle rispettive tavole girevoli su cui viene montato il pezzo da
lavorare ed un “canotto” associato al terzo asse lineare, in questo caso la catena cinematica è
così definita (cinematica tipo WC2):
Tool -> Asse lineari (3°) -> Rot -> Assi lineari (2° e 1°) -> 1° Tavola -> [2° Tavola ->] Pezzo
g) Uno o due assi rotativi montati sulla testa che si muove attorno al pezzo ed un “canotto”
associato al secondo asse lineare, in questo caso la catena cinematica è così definita (cinematica
tipo TC1):
Tool -> 1° Rot testa [2° Rot ] Assi lineari (3° e 2°) -> Rot -> Asse lineare (1°) -> Pezzo
h) Un asse rotativo montato sulla testa che si muove attorno al pezzo ed un “canotto” associato al
terzo asse lineare, in questo caso la catena cinematica è così definita (cinematica tipo TC2):
Tool -> 1° Rot testa [2° Rot ] Asse lineare (3°) -> Rot -> Assi lineari (2° e 1°) -> Pezzo
i) Ultima configurazione che prevede due “canotti” e un rotativo sulla testa, in questo caso la
catena cinematica è così definita (cinematica tipo C12):
Tool -> [Rot ->] Asse lineare (3°) -> Rot -> Asse lineare (2°) -> Rot -> Asse lineare (1°) -> Pezzo
Tale struttura può essere schematizzata (utilizzando il simbolismo definito precedentemente) dalla
seguente tabella:
Cinematica Tool Rot Rot Lin 3 Rot Lin 2 Rot Lin 1 Rot Rot Pezzo
WC1 T --- --- LI3 --- LI2 TOL LI1 MID WRK P
WC2 T --- --- LI3 TOL LI2 --- LI1 MID WRK P
TC1 T TOL MID LI3 --- LI2 WRK LI1 --- --- P
TC2 T TOL MID LI3 WRK LI2 --- LI1 --- --- P
C12 T --- TOL LI3 MID LI2 WRK LI1 --- --- P
45004616J 69
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Tale estensione si propaga anche alla definizione del “Machine Bed” che deve prevedere due ulteriori
posizioni, schematizzate come segue:
Cinematica Tool Rot Rot Lin 3 Rot Lin 2 Rot Lin 1 Rot Rot Pezzo
WC1 T --- --- LI3 --- LI2 TOL LI1 MID WRK P
WC2 T --- --- LI3 TOL LI2 --- LI1 MID WRK P
TC1 T TOL MID LI3 --- LI2 WRK LI1 --- --- P
TC2 T TOL MID LI3 WRK LI2 --- LI1 --- --- P
C12 T --- TOL LI3 MID LI2 WRK LI1 --- --- P
Machine Bed Machine Bed Machine Bed Machine Bed Machine Bed Machine Bed
TOL BC2 B23 BC1 B12 WRK
La definizione delle terne deve essere fatta con la macchina nella posizione di Homing.
Le terne cartesiane dei componenti della catena cinematica devono rispettare le seguenti convenzioni:
Assi lineari: la direzione Z+ della terna cartesiana deve corrispondere alla direzione positiva
dell’asse, le direzioni degli assi X e Y non hanno significato particolare
45004616J 70
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Assi rotativi: la direzione Z+ della terna cartesiana deve corrispondere alla normale
rispetto al senso positivo di rotazione dell’asse (antiorario), le direzioni
degli assi X e Y non hanno particolare significato
Asse utensile: o asse Tool, la direzione Z + della terna cartesiana deve andare dalla punta
utensile verso l’attacco mandrino, immaginando di rimuovere il rinvio
angolare se presente, le direzioni degli assi X e Y non hanno particolare
significato. L’origine di tale terna deve essere posta sul punto di attacco
dell’utensile al mandrino (in pratica come se l’utensile valesse lunghezza
0)
Asse rinvio angolare: la direzione Z+ della terna cartesiana deve andare dalla punta utensile
verso l’attacco mandrino, le direzioni degli assi X e Y non hanno
particolare significato. L’origine di tale terna deve essere posta sul punto
di attacco dell’utensile al mandrino (in pratica come se l’utensile valesse
lunghezza 0)
Attacco
Mandrino Y
Rinvio Z
Angolare + +
X
Utensile +
Terna Cartesiana
45004616J 71
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
La tabella seguente elenca i parametri necessari alla configurazione della cinematica di macchina.
VALORI
DESCRIZIONE NOME VARIABILE
VALIDI
Macchina con configurazione generica $CINTYPE(idCinem) 10
Identificativo del primo asse lineare $ABSID(idCinem) 1 ÷ 64
Identificativo del secondo asse lineare $ORDID(idCinem) 1 ÷ 64
Identificativo del terzo asse lineare $VRTID(idCinem) 0 ÷ 64
Identificativo del primo asse rotativo (asse rotativo più $ROTPID(idCinem)
0 ÷ 64
vicino al pezzo)
Identificativo del secondo asse rotativo (rotativo più vicino
$ROTTID(idCinem) 0 ÷ 64
all’utensile)
Identificativo del terzo asse rotativo (rotativo intermedio) $ROTMID(idCinem) 0 ÷ 64
Portautensile attivo $TOOLHOLD(idCinem) 1÷4
Tipo di cinematica:
0 La macchina ha una cinematica di tipo a) (TOL)
1 La macchina ha una cinematica di tipo b) (MIX)
2 La macchina ha una cinematica di tipo c) (WRK)
3 La macchina ha una cinematica di tipo d) (WC1)
$MAC(idCinem) 0÷8
4 La macchina ha una cinematica di tipo e) (WC2)
5 La macchina ha una cinematica di tipo f) (TC1)
6 La macchina ha una cinematica di tipo g) (TC2)
7 La macchina ha una cinematica di tipo h) (C12)
8 La macchina ha una cinematica di tipo i) (MIXM)
Posizione del machine bed:
0 Il punto fermo è tra il pezzo e gli assi lineari (dopo primo
asse) (WRK)
1 Il punto fermo è posto tra il primo canotto e il primo asse
lineare (B12)
2 Il punto fermo è posto sul primo canotto (dopo secondo
lineare) (BC1) $BED(idCinem) 0÷5
3 Il punto fermo è posto tra il secondo canotto e il secondo
asse lineare (B23)
4 Il punto fermo è posto sul secondo canotto (dopo terzo
lineare) (BC2)
5 Il punto fermo è posto tra l’utensile e il terzo asse lineare
(TOL)
Traslazione del primo asse lineare lungo l’asse ascissa $CINABS(idCinem, 0)
Traslazione del primo asse lineare lungo l’asse ordinata $CINABS(idCinem, 1)
Traslazione del primo asse lineare lungo l’asse verticale $CINABS(idCinem, 2)
Rotazione del primo asse lineare lungo l’asse ascissa $CINABS(idCinem, 3)
Rotazione del primo asse lineare lungo l’asse ordinata $CINABS(idCinem, 4)
Rotazione del primo asse lineare lungo l’asse verticale $CINABS(idCinem, 5)
Traslazione del secondo asse lineare lungo l’asse ascissa $CINORD(idCinem, 0)
Traslazione del secondo asse lineare lungo l’asse ordinata $CINORD(idCinem, 1)
Traslazione del secondo asse lineare lungo l’asse verticale $CINORD(idCinem, 2)
Rotazione del secondo asse lineare lungo l’asse ascissa $CINORD(idCinem, 3)
Rotazione del secondo asse lineare lungo l’asse ordinata $CINORD(idCinem, 4)
Rotazione del secondo asse lineare lungo l’asse verticale $CINORD(idCinem, 5)
Traslazione del terzo asse lineare lungo l’asse ascissa $CINVRT(idCinem, 0)
45004616J 72
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
VALORI
DESCRIZIONE NOME VARIABILE
VALIDI
Traslazione del terzo asse lineare lungo l’asse ordinata $CINVRT(idCinem, 1)
Traslazione del terzo asse lineare lungo l’asse verticale $CINVRT(idCinem, 2)
Rotazione del terzo asse lineare lungo l’asse ascissa $CINVRT(idCinem, 3)
Rotazione del terzo asse lineare lungo l’asse ordinata $CINVRT(idCinem, 4)
Rotazione del terzo asse lineare lungo l’asse verticale $CINVRT(idCinem, 5)
Traslazione del primo asse rotativo lungo l’asse ascissa $CINROTP(idCinem, 0)
Traslazione del primo asse rotativo lungo l’asse ordinata $CINROTP(idCinem, 1)
Traslazione del primo asse rotativo lungo l’asse verticale $CINROTP(idCinem, 2)
Rotazione del primo asse rotativo lungo l’asse ascissa $CINROTP(idCinem, 3)
Rotazione del primo asse rotativo lungo l’asse ordinata $CINROTP(idCinem, 4)
Rotazione del primo asse rotativo lungo l’asse verticale $CINROTP(idCinem, 5)
Traslazione del secondo asse rotativo lungo l’asse ascissa $CINROTT(idCinem, 0)
Traslazione del secondo asse rotativo lungo l’asse ordinata $CINROTT(idCinem, 1)
Traslazione del secondo asse rotativo lungo l’asse verticale $CINROTT(idCinem, 2)
Rotazione del secondo asse rotativo lungo l’asse ascissa $CINROTT(idCinem, 3)
Rotazione del secondo asse rotativo lungo l’asse ordinata $CINROTT(idCinem, 4)
Rotazione del secondo asse rotativo lungo l’asse verticale $CINROTT(idCinem, 5)
Traslazione del terzo asse rotativo lungo l’asse ascissa $CINROTM(idCinem, 0)
Traslazione del terzo asse rotativo lungo l’asse ordinata $CINROTM(idCinem, 1)
Traslazione del terzo asse rotativo lungo l’asse verticale $CINROTM(idCinem, 2)
Rotazione del terzo asse rotativo lungo l’asse ascissa $CINROTM(idCinem, 3)
Rotazione del terzo asse rotativo lungo l’asse ordinata $CINROTM(idCinem, 4)
Rotazione del terzo asse rotativo lungo l’asse verticale $CINROTM(idCinem, 5)
Traslazione dell’asse Work lungo l’asse ascissa $CINW(idCinem, 0)
Traslazione dell’asse Work lungo l’asse ordinata $CINW(idCinem, 1)
Traslazione dell’asse Work lungo l’asse verticale $CINW(idCinem, 2)
Rotazione dell’asse Work lungo l’asse ascissa $CINW(idCinem, 3)
Rotazione dell’asse Work lungo l’asse ordinata $CINW(idCinem, 4)
Rotazione dell’asse Work lungo l’asse verticale $CINW(idCinem, 5)
$CINT(idCinem,
Traslazione dell’asse Tool lungo l’asse ascissa
toolHold, 0)
$CINT(idCinem,
Traslazione dell’asse Tool lungo l’asse ordinata
toolHold, 1)
$CINT(idCinem,
Traslazione dell’asse Tool lungo l’asse verticale
toolHold, 2)
$CINT(idCinem,
Rotazione dell’asse Tool lungo l’asse ascissa
toolHold, 3)
$CINT(idCinem,
Rotazione dell’asse Tool lungo l’asse ordinata
toolHold, 4)
$CINT(idCinem,
Rotazione dell’asse Tool lungo l’asse verticale
toolHold, 5)
$CINR(idCinem,
Traslazione dell’asse rinvio angolare lungo l’asse ascissa
toolHold, 0)
$CINR(idCinem,
Traslazione dell’asse rinvio angolare lungo l’asse ordinata
toolHold, 1)
45004616J 73
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
VALORI
DESCRIZIONE NOME VARIABILE
VALIDI
$CINR(idCinem,
Traslazione dell’asse rinvio angolare lungo l’asse verticale
toolHold, 2)
$CINR(idCinem,
Rotazione dell’asse rinvio angolare lungo l’asse ascissa
toolHold, 3)
$CINR(idCinem,
Rotazione dell’asse rinvio angolare lungo l’asse ordinata
toolHold, 4)
$CINR(idCinem,
Rotazione dell’asse rinvio angolare lungo l’asse verticale
toolHold, 5)
Tipo compensazione raggi utensile:
0 nessuna compensazione
1 compensazione con angoli $TOOLANG, $TORANG $COMPRAD(idCinem) 0÷3
2 compensazione con versori (mno)
3 compensazione con versorsi (mno e pqd)
Attivazione compensazione utensile realtime:
0 compensazione realtime disattivata $COMPRT(idCinem) 0÷1
1 compensazione realtime attivata
Angolo di contatto tra pezzo e utensile. È l’angolo sotteso
tra il centro dell’utensile ed il punto di contatto $TOOLANG(idCinem) 0 ÷ 360°
dell’utensile col pezzo (vedi figura 2.13)
Angolo di contatto (α) per utensili sferici o toroidali (vedi
$TORANG(idCinem) 0 ÷ 90°
figura 2.13)
Raggio operativo rotativo pezzo
Se 0 il sistema stima automaticamente lo sbraccio massimo
tra punta utensile e asse di rotazione, se diverso da 0 il
sistema utilizza il valore impostato, tale valore serve a
$OPRADP(idCinem)
limitare la dinamica di rotazione dell’asse al fine di evitare
errori di asservimento sugli assi lineari del TCP indotti dalla
rotazione dell’asse rotativo. Si consiglia di lasciare a 0
questo valore.
Raggio operativo rotativo utensile
Se 0 il sistema stima automaticamente lo sbraccio massimo
tra punta utensile e asse di rotazione, se diverso da 0 il
sistema utilizza il valore impostato, tale valore serve a
$OPRADT(idCinem)
limitare la dinamica di rotazione dell’asse al fine di evitare
errori di asservimento sugli assi lineari del TCP indotti dalla
rotazione dell’asse rotativo. Si consiglia di lasciare a 0
questo valore.
Raggio operativo rotativo intermedio
Se 0 il sistema stima automaticamente lo sbraccio massimo
tra punta utensile e asse di rotazione, se diverso da 0 il
sistema utilizza il valore impostato, tale valore serve a
$OPRADM(idCinem)
limitare la dinamica di rotazione dell’asse al fine di evitare
errori di asservimento sugli assi lineari del TCP indotti dalla
rotazione dell’asse rotativo. Si consiglia di lasciare a 0
questo valore.
45004616J 74
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
VALORI
DESCRIZIONE NOME VARIABILE
VALIDI
Modalità limiti operativi: è una variabile a bit che serve ad
abilitare/disabilitare il controllo dei limiti operativi sulla
$OPLIMMODE(idCinem) 0 ÷ 15
punta utensile. Per il suo significato fare riferimento al TCP
per macchine con testa Prismatica
Modalità di applicazione del filtro media punti.
Se 0, il filtro di tipo 1 attivo viene applicato a livello dei
giunti. Questa è la gestione di default del filtro in cui si ha
un miglior tempo di lavorazione a scapito della finitura
$FLTMODE(idCinem) 0÷1
Se 1, il filtro di tipo 1 attivo viene applicato a livello della
punta utensile: migliore finitura a scapito del tempo di
lavorazione (su cambio tcp in continuo si perde il tempo di
svuotamento del filtro)
Nome asse direzione utensile, tra apici.
Viene utilizzato solo per modo direzione utensile (TCP,5).
Deve essere un nome asse valido e, al momento $TDNAME(idCinem)
dell’attivazione TCP, non deve già esistere un asse con lo
stesso nome
Nome asse “ascissa per direzione utensile”, tra apici.
Viene utilizzato solo per modo direzione utensile (TCP,5).
Deve essere un nome asse valido e, al momento $TANAME(idCinem)
dell’attivazione TCP, non deve già esistere un asse con lo
stesso nome
Nome asse “ordinata per direzione utensile”, tra apici.
Viene utilizzato solo per modo direzione utensile (TCP,5).
Deve essere un nome asse valido e, al momento $TONAME(idCinem)
dell’attivazione TCP, non deve già esistere un asse con lo
stesso nome
Programmazione assi rotativi in coordinate sferiche (Phi e
Theta). Per il suo significato fare riferimento al relativo $PROGMODE(idCinem) 0÷1
paragrafo
Verso dell’asse virtuale Phi
$DIRROTH(idCinem) -1 ; 1
-1 se coerente alla figura 2.15
Verso dell’asse virtuale Theta
$DIRROTV(idCinem) -1 ; 1
+1 se coerente alla figura 2.15
Limite operativo negativo per asse virtuale Phi (valido solo
$NEGLIMOPH(idCinem)
per programmazione rotativi in coordinate sferiche)
Limite operativo positivo per asse virtuale Phi (valido solo
$POSLIMOPH(idCinem)
per programmazione rotativi in coordinate sferiche)
Limite operativo negativo per asse virtuale Theta (valido
$NEGLIMOP(idCinem)
solo per programmazione rotativi in coordinate sferiche)
Limite operativo positivo per asse virtuale Theta (valido
$POSLIMOP(idCinem)
solo per programmazione rotativi in coordinate sferiche)
Offset per asse virtuale Phi: valore di angolo in cui si ha lo
$OFFSROTH(idCinem)
zero di Phi.
Offset per asse virtuale Theta: valore di angolo in cui si ha
$OFFSROTV(idCinem)
lo zero di Theta
45004616J 75
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 1:
Supponiamo di avere una macchina in cui il pezzo è staffato su una tavola (asse Y) e con una testa
birotativa (assi rotativi A e B) solidale agli assi X e Z. Tali assi si muovono in modo indipendente dall’asse
Y.
Z+
A+
B+
X+
T
P
Y+
Tool Rot Rot Rot Lin 3 Lin 2 Lin 1 Rot Rot Rot Pezzo
T --- B A Z X Y --- --- --- P
La macchina ha una cinematica di tipo “TOL” (due rotativi vicini all’utensile), il “punto fermo” è
posizionato tra l’asse X e l’asse Y quindi di tipo “B12” e in effetti le due sezioni della catena cinematica
si muovono indipendentemente.
Esempio 2:
Riferendoci alla macchina precedente procediamo a definire tutte le terne necessarie alla
configurazione della cinematica di macchina.
45004616J 76
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Innanzitutto, per semplicità, posizioniamo il Machine Bed sul centro di rotazione dell’asse rotativo A, a
tale posizione faremo corrispondere anche lo “zero” degli assi lineari X, Y e Z. Con tale semplificazione
le origini delle terne associate agli assi A, X, Y, Z e Machine Bed giacciono nello stesso punto.
Assumiamo inoltre di posizionare l’origine di programmazione del pezzo nella stessa posizione: le
eventuali variazioni di origine potranno essere programmate utilizzando la normale programmazione in
codice ISO. A questo punto siamo in grado di definire la catena cinematica e quindi di definire le
sequenze di roto-traslazioni da applicare sulle varie terne sopra definite.
Il primo segmento della catena cinematica parte dal Machine Bed e raggiunge il pezzo, quindi il percorso
da descrivere è definito dalla sequenza:
Asse Y Pezzo
Il secondo segmento della catena cinematica parte sempre dal Machine Bed e raggiunge l’utensile,
quindi il percorso da descrivere è definito dalla sequenza:
Machine bed -> Asse X -> Asse Z -> Asse A -> Asse B -> Utensile.
Asse X Asse Z
45004616J 77
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Asse Z Asse A
Asse A Asse B
Nel momento in cui il centro di rotazione dei due assi giace sullo stesso punto non occorre definire
alcuna traslazione; nel caso opposto, ovvero nel momento in cui i due centri sono disassati, occorre
definire la traslazione da effettuare nel passare dalla terna “Asse A” alla terna “Asse B”. L’applicazione
delle traslazioni deve essere effettuata prima della rotazione, e calcolata rispetto alla terna di partenza
(nel nostro caso “Asse A”).
Asse B Utensile
In base a quanto descritto sino ad ora, la catena cinematica può essere riepilogata dalla seguente
tabella:
45004616J 78
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 3:
Supponiamo di avere una macchina in cui il pezzo è staffato su una tavola girevole (asse C) che si muove
su un piano XY e con l’utensile solidale all’asse Z come mostrato in figura A. Tale macchina può essere
facilmente configurata come se gli assi X e Y fossero solidali con Z ma di verso opposto, come mostrato
in figura B.
Z+
Y+
Z+
C+ C+ X+
Machine Bed
Y+
X+
Figura A Figura B
La macchina ha una cinematica di tipo “WRK” (due rotativi vicini al pezzo), il “punto fermo” è
posizionato tra gli assi lineari e il pezzo quindi di tipo “WRK”. Manca fisicamente un rotativo, questo
verrà configurato ponendo il suo identificativo a 0.
Procediamo a definire tutte le terne necessarie alla configurazione della cinematica di macchina.
Z
Y Z
Z X X
Y Z+
Y+ Y
X
Y
Z Z
Y X+
X
Z
Y X Z
P
Y
C+ X
X
Machine Bed
45004616J 79
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Innanzitutto, per semplicità, posizioniamo il Machine Bed sul centro di rotazione dell’asse rotativo C, a
tale posizione faremo corrispondere anche lo “zero” degli assi lineari X, Y e Z. Con tale semplificazione
le origini delle terne associate agli assi C, X, Y, Z e Machine Bed giacciono nello stesso punto.
Assumiamo inoltre di posizionare l’origine di programmazione del pezzo nella stessa posizione: le
eventuali variazioni di origine potranno essere programmate utilizzando la normale programmazione in
codice ISO. A questo punto siamo in grado di definire la catena cinematica e quindi di definire le
sequenze di roto-traslazioni da applicare sulle varie terne sopra definite.
Il primo segmento della catena cinematica parte dal Machine Bed e raggiunge il pezzo, quindi il percorso
da descrivere è definito dalla sequenza:
Z Z Z
Y Y Y
Nessuna rotazione Nessuna rotazione
X X X
Il secondo segmento della catena cinematica parte sempre dal Machine Bed e raggiunge l’utensile,
quindi il percorso da descrivere è definito dalla sequenza:
Machine bed -> Asse X -> Asse Y -> Asse Z -> Utensile.
Z Y
Y Rotazione di 90°
Z
attorno a Y
X X
Machine Bed Asse X
Asse X Asse Y
Y Z
Rotazione di -90° Y
Z
attorno a X
X X
Asse X Asse Y
Asse Y Asse Z
Z Z
Z
Y X Y
Rotazione di -90° Y Rotazione di -90°
X attorno a Y attorno a Z X
45004616J 80
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Asse Z Utensile
Z Z
Y Y
Nessuna rotazione
X X
Asse Z Utensile
In base a quanto descritto sino ad ora, la catena cinematica può essere riepilogata dalla seguente
tabella:
Asse da raggiungere Offset X Offset Y Offset Z Rotazione su X Rotazione su Y Rotazione su Z
C 0 0 0 0 0 0
Pezzo 0 0 0 0 0 0
X 0 0 0 0 90 0
Y 0 0 0 -90 0 0
Z 0 0 0 0 -90 -90
Utensile 0 0 0 0 0 0
Rinvio angolare 0 0 0 0 0 0
45004616J 81
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 4:
Si vuole descrivere la procedura di configurazione del TCP per una macchina così composta:
un mandrino trasla in orizzontale (asse ascissa) ed in verticale (asse verticale) e ruota (asse tool)
attorno all’asse ordinata
il pezzo è montato su una tavola che ruota (asse work) attorno all’asse ascissa; la tavola inoltre
trasla in orizzontale (asse ordinata)
La configurazione di questa macchina viene rappresentata nella seguente figura, dove sono anche
evidenziate le direzioni di movimento positivo di tutti gli assi.
vertical
tool
abscissa
work
ordinate
Appare subito evidente la configurazione TCP di una macchina di questo tipo non può essere fatta
tramite la configurazione di tipo “Double Twist” ma piuttosto utilizzando la configurazione “Generica
(HSM)”. Per questo si imposta opportunamente il seguente parametro:
Iniziando dunque con la configurazione del TCP, la prima considerazione che si può fare è che, per
comodità di ragionamento, l’asse ordinata, che trasla la tavola, può concettualmente essere associato al
gruppo di assi che muovono il mandrino (invertendone opportunamente la direzione di movimento
positivo): ne risulta la figura seguente, sulla quale si va quindi a ragionare.
45004616J 82
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
vertical
ordinate
tool
abscissa
work
Per la individuazione del tipo di cinematica si considera che per andare dall’utensile al pezzo, si deve
procedere secondo la sequenza
che corrisponde ad una cinematica di tipo MIX (in cui manca il terzo rotativo opzionale). Si imposta di
conseguenza il corrispondente parametro:
Come è noto il Machine Bed è un punto di riferimento che può essere posizionato, in modo arbitrario
secondo la convenienza, come punto da cui partire per giungere all’utensile ed al pezzo rispettivamente:
osservando la precedente figura, in cui la macchina appare scomposta in due sezioni, risulta evidente di
dover posizionare il Machine Bed tra l’ascissa ed il rotativo work (tipo WRK). Si imposta di conseguenza il
corrispondente parametro:
Dopo aver opportunamente configurato gli ID degli assi lineari e rotativi negli appositi campi ed il
numero di porta-utensile attivo, si procede con la configurazione dei parametri di roto-traslazione del
TCP.
In base a quanto detto sopra, è chiaro che, partendo dal Machine Bed, si può arrivare all’utensile ed al
pezzo rispettivamente tramite le seguenti due catene cinematiche indipendenti
Si procede quindi alla configurazione della prima catena determinandone i relativi parametri di roto-
traslazione. Per questo definiamo come “pivot” lo sbraccio del mandrino ovvero la distanza tra l’asse di
rotazione del rotativo tool ed il naso del mandrino.
45004616J 83
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
vertical
ordinate
tool pivot
abscissa
work
controlled point
Z
Secondo le convenzioni, la terna di riferimento del MB (a
sinistra) si pone solidale alla terna cartesiana della
MB abscissa macchina.
Per passare dalla terna del MB a quella dell’ascissa (a
Y Y destra), non è necessaria alcuna traslazione ma solo una
rotazione +90° attorno a Y. Ciò si concretizza con
Z l’impostazione dei seguenti parametri:
X X
$CINABS(idCinem,0) = 0 ; offset di LI1 lungo l’ascissa
$CINABS(idCinem,1) = 0 ; offset di LI1 lungo l’ordinata
$CINABS(idCinem,2) = 0 ; offset di LI1 lungo il verticale
$CINABS(idCinem,3) = 0 ; rotazione di LI1 attorno all’ascissa
$CINABS(idCinem,4) = + 90 ; rotazione di LI1 attorno all’ordinata
$CINABS(idCinem,5) = 0 ; rotazione di LI1 attorno alla verticale
abscissa Z
ordinate Per passare dalla terna dell’ascissa (a sinistra) a
quella dell’ordinata (a destra), non è necessaria
Y alcuna traslazione ma solo una rotazione -90°
Z Y attorno a X.
X X
$CINORD(idCinem,0) = 0 ; offset di LI2 lungo l’ascissa
$CINORD(idCinem,1) = 0 ; offset di LI2 lungo l’ordinata
$CINORD(idCinem,2) = 0 ; offset di LI2 lungo il verticale
$CINORD(idCinem,3) = - 90 ; rotazione di LI2 attorno all’ascissa
$CINORD(idCinem,4) = 0 ; rotazione di LI2 attorno all’ordinata
$CINORD(idCinem,5) = 0 ; rotazione di LI2 attorno alla verticale
45004616J 84
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
ordinate vertical
Z Z Z Per passare dalla terna dell’ordinata (a sinistra)
a quella del verticale, non è necessaria alcuna
traslazione ma solo una prima rotazione -90°
X Y attorno a Y (al centro) seguita da una seconda
Y Y rotazione -90° attorno a Z (a destra).
X X
Z
vertical tool rotary
Z Per passare dalla terna del verticale (a sinistra) a
Y Y quella del rotativo tool, è necessaria dapprima
una traslazione lungo Z+ pari al pivot (al centro)
e quindi una rotazione +90 attorno a X (a destra).
Y X X
pivot
Z
X
45004616J 85
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Termina così la configurazione della prima delle due catene cinematiche in cui è stata suddivisa la
macchina.
Per configurare le seconda catena, occorre per prima cosa considerare che il rotativo work si trova
disassato rispetto gli altri assi sia lungo l’ordinata (offsetY) che lungo la verticale (offsetZ).
vertical
ordinate
tool
abscissa
work offsetZ
offsetY
45004616J 86
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
work
Z
Per passare infine dal riferimento del rotativo work (a
sinistra) al riferimento dell’asse pezzo (a destra), è
work rot
Y necessaria dapprima una traslazione lungo Y+ (offsetY) e
lungo X+ (offsetZ) e quindi una rotazione +90 attorno a Y.
offsetZ
X
X Y
offsetY
Z
$CINW(idCinem,0) = + offsetZ ; offset asse WORK lungo l’ascissa
$CINW(idCinem,1) = + offsetY ; offset asse WORK lungo l’ordinata
$CINW(idCinem,2) = 0 ; offset asse WORK lungo il verticale
$CINW(idCinem,3) = 0 ; rotazione asse WORK attorno all’ascissa
$CINW(idCinem,4) = + 90 ; rotazione asse WORK attorno all’ordinata
$CINW(idCinem,5) = 0 ; rotazione asse WORK attorno alla verticale
45004616J 87
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
$PROGMODE = 1
Mettendo $PROGMODE = 1 è possibile programmare i
rotativi di una qualunque macchina, con cinematica
complessa a piacere, come se fossero una testa
orizzontale (phi) e una basculante (theta) i cui valori
identificano la direzione utensile della macchina reale. Il
controllo OPEN, a partire dalle quote phi e theta
determina la direzione utensile nello spazio 3D e
attraverso la configurazione cinematica calcola i
corrispondenti valori degli assi rotativi fisici.
I parametri di tabella, successivi a $PROGMODE (da
$DIRROTH a $OFFSROTV), vengono utilizzati per la
Fig. 2.15 Sistema di coordinate sferico
suddetta gestione.
Caratteristiche:
Φ: testa orizzontale, ha lo zero lungo X+ e ruota positivo in senso antiorario attorno a Z+
Θ: testa basculante, ha lo zero lungo Z+ e ruota positivo in senso orario attorno a Y+
Ad ogni attivazione del TCP, le quote dei rotativi virtuali vengono sempre inizializzate tra 0° e 360°
per Φ e tra 0° e 180° per Θ, alle quali vengono poi applicati eventuali offset e segni di rotazione.
Questo tipo di gestione è incompatibile se la macchina reale non ha 2 rotativi oppure se il tipo di
cinematica configurata è di tipo 2 (TCP della sola lunghezza utensile). In questo caso il sistema
segnala errore nella configurazione del TCP
Il sistema non genera effettivamente 2 assi virtuali e a livello di programmazione il nome degli assi
rotativi rimane invariato, ma i valori programmati devono essere intesi nel sistema di riferimento
sferico: l’asse fisico rotativo orizzontale o Work rappresenta Φ e l’asse fisico basculante o Tool
rappresenta Θ. Fisicamente, i rotativi si muoveranno poi di un valore tale da portare l’utensile nella
direzione desiderata
I limiti operativi dei rotativi sferici vengono verificati solo a livello di precalcolo mentre in realtime
vengono verificati quelli sui giunti dei rotativi fisici.
$PROGMODE = 2
Con questo valore è possibile programmare i rotativi di una macchina con testa Prismatica e solo questa,
come se fossero un rotativo orizzontale e un basculante di una testa Double Twist Serie10, nella quale il
rotativo orizzontale virtuale coincide con quello fisico mentre il basculante virtuale viene ruotato per
appoggiarlo all’asse X o Y fisico. Mettendo $PROGMODE = 2, cioè, si fornisce la completa compatibilità
con i programmi Serie10. A tale scopo, i parametri di tabella, successivi a $PROGMODE (quelli relativi al
rotativo orizzontale phi non devono essere compilati) devono essere configurati con gli stessi valori presi
dalla tabella TCP del controllo Serie10.
45004616J 88
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
…
hn oppure Tx,n Attivazione correttore utensile
…
(TCP,1) oppure (TCP,5) Attivazione della cinematica di macchina
…
(UPR,0,… Attivazione piani rototraslati
…
45004616J 89
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
COMANDO FUNZIONE
CTD Calcolo vettore direzione utensile
RFT Calcolo quote assi rotativi relative alla direzione utensile
Calcola le quote giunto finali corrispondenti a un movimento definito
G77
in quote pezzo, cioè riferite alla punta utensile.
Sintassi
dove:
PNTVAR E’ il nome di una variabile contenente 4 punti nelle coordinate XYZ nel sistema di
riferimento programma. (*)
ROTVAR E’ il nome di una variabile contenente le quote dei due assi rotativi appartenenti
alla cinematica attiva. La prima quota deve essere quella del rotativo più vicino
all’utensile mentre la seconda del rotativo più vicino al pezzo. (*)
p È l’indice da cui partire a leggere le 2 quote relative agli assi rotativi. Può essere
espresso con un numero intero oppure con un parametro E.
IJKVAR E’ il nome di una variabile che al termine del comando conterrà le componenti del
vettore unitario richiesto. Tale versore sarà espresso nel sistema di riferimento
assoluto (giunti). (*)
m È l’indice da cui partire a salvare le 3 componenti (ijk) del versore utensile. Può
essere espresso con un numero intero oppure con un parametro E.
(*) Se la variabile è una E, una H, una L oppure una SN non è necessario programmare l’indice tra
parentesi. Se invece è una variabile utente (!), WinPlus (@) oppure tabella ($) allora l’indice deve
essere programmato tra parentesi
45004616J 90
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Caratteristiche
CTD,1:
Permette di calcolare il versore perpendicolare a un piano definito dai primi 3 punti e il cui verso è
determinato dalla posizione del 4° punto rispetto a tale piano.
Esempi:
Dati 4 punti di coordinate
Z
P1(3,1,20), P2(2,5,20), P3(6,4,20), P4(1,1,10) P5
Al termine del comando la variabile !IJK conterrà, a partire dall’indice 1 i seguenti valori: 0.0, 0.0, -1.0
Al termine del comando la variabile !IJK conterrà, a partire dall’indice 5 i seguenti valori: 0.0, 0.0, 1.0
45004616J 91
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
CTD,2:
Permette di calcolare il versore direzione utensile relativo alla cinematica attiva con assi rotativi nelle
posizioni date. Non è necessario che le posizioni fisiche degli assi rotativi coincidano con quelle
programmate nel comando.
Per poter eseguire questo comando deve essere stata attivata in precedenza una cinematica con
comando TCP.
Questa modalità di calcolo non è disponibile per macchine con TCP 3 o 4 assi, non avrebbe senso calcolar
l’inclinazione per assi fissi o inesistenti.
Esempi:
Il seguente programma permette di conoscere le componenti della direzione utensile di una cinematica
tipo DoubleTwist supponendo il rotativo più vicino
all’utensile a 45° e quello più vicino al pezzo a 90°.
Le componenti del versore vengono salvate nella
variabile utente !IJK, costituita da 10 double, a partire dall’indice 3.
… IJK3
(TCP,1)
E0 = 45, 90
(CTD, 2, E0, !IJK(3))
Al termine del comando la variabile !IJK conterrà, a partire dall’indice 3 i seguenti valori: 0.7, 0.0, 0.7
Al termine del comando la variabile !IJK conterrà, a partire dall’indice 3 i seguenti valori: -0.7, 0.0, 0.7
45004616J 92
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
4.3.2 RFT – Calcolo quote assi rotativi relative alla direzione utensile
Questo comando, puramente matematico, permette di richiedere al sistema, il calcolo delle quote dei
due assi rotativi di una cinematica attiva che posizionerebbero l’utensile lungo il versore ijk
programmato. Se richiesta, viene poi eseguita un’ottimizzazione della soluzione trovata, ossia viene
scelta una soluzione approssimata entro la tolleranza programmata.
Sintassi
dove:
n È l’indice da cui partire a leggere le 3 componenti del vettore in input. Può essere
espresso con un numero intero oppure con un parametro E.
ROTRIFVAR E’ il nome di una variabile contenente le quote di riferimento dei due assi rotativi
appartenenti alla cinematica attiva. La prima quota deve essere quella del rotativo
più vicino all’utensile mentre la seconda del rotativo più vicino al pezzo. (*)
AngToll È un angolo in gradi corrispondente a una tolleranza. Può essere espresso con un
numero reale oppure con una variabile.
ROTVAR E’ il nome di una variabile che al termine del comando conterrà le quote dei due
assi rotativi che portano l’utensile nella direzione desiderata. La prima quota è
quella del rotativo più vicino all’utensile mentre la seconda è del rotativo più
vicino al pezzo. (*)
p È l’indice da cui partire a salvare le 2 quote degli assi rotativi. Può essere espresso
con un numero intero oppure con un parametro E.
(*) Se la variabile è una E, una H, una L oppure una SN non è necessario programmare l’indice tra
parentesi. Se invece è una variabile utente (!), WinPlus (@) oppure tabella ($) allora l’indice deve
essere programmato tra parentesi
Caratteristiche
Dato il vettore direzione utensile e data una soluzione di riferimento, il sistema, in base alle
caratteristiche di macchina attive, calcola i valori delle quote degli assi rotativi che portano l’utensile
lungo quella direzione e verso.
In caso di più soluzioni valide, il sistema sceglie quella più vicina alle posizioni di riferimento.
Se l’angolo di tolleranza non è nullo, viene cercata una soluzione non esatta (approssimata entro tale
tolleranza) che minimizzi lo spostamento dell’asse rotativo più vicino al pezzo. AngToll rappresenta
l’angolo di scostamento accettabile tra la direzione utensile ottenuta a partire dalle quote di riferimento
e quella ottenuta dal calcolo dei rotativi cercati.
Per poter eseguire questo comando deve essere stata attivata in precedenza una cinematica con
comando TCP.
45004616J 93
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando non può essere eseguito nel caso di TCP 3/4 assi: non avrebbe senso calcolare le quote
di assi rotativi fissi o inesistenti.
Esempio:
Si supponga, su una macchina tipo DoubleTwist con rotativo utensile che ruota attorno all’asse X e
rotativo pezzo che ruota attorno all’asse Z, di voler conoscere le quote degli assi rotativi, corrispondenti
alla direzione utensile IJK1 e che tali quote siano le più vicine possibili alla coppia 0, 0 (rotativo
utensile, rotativo pezzo di riferimento).
Il seguente programma darà come soluzione E5 = 0.97, E6 = 90.0 e E10 = 0.0, E11 = 0.0
…
(TCP,1)
!IJK(1) = 0.017, 0, 0.999
E0 = 0, 0
E2 = 0 IJK1
(RFT, !IJK(1), E0, E2, E5) IJK rif
E2 = 1
(RFT, !IJK(1), E0, E2, E10)
45004616J 94
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
codici-G Altri codici G compatibili con G77 (v. Manuale di Programmazione cap. 2.5 "Codici G”).
operandi Possono essere utilizzati tutti gli operandi permessi in un blocco G code a esclusione di:
Codici M
Codici T
Codici S
Attributi del movimento
Caratteristiche:
Il comando permette di conoscere quali saranno le posizioni giunto, cioè le posizioni fisiche assolute,
degli assi alla fine di un movimento programmato utilizzando le quote cartesiane, cioè le quote pezzo
riferite alla punta dell’utensile.
I valori calcolati delle posizioni giunto degli assi sono disponibili accedendo alla variabile $A
corrispondente all’asse desiderato e utilizzando il tipo lettura 16.
I valori sono validi fino all’esecuzione della successiva G77. Il RESET NON resetta tali valori.
Il calcolo delle quote giunto comprende anche la verifica del non superamento dei limiti operativi degli
assi, sia per quanto riguarda i limiti giunto che quelli punta utensile.
È possibile filtrare tali errori attivando la gestione degli errori da part program; in tale caso l’eventuale
errori di superamento dei limiti operativi verrà segnalato dalle variabili dedicate STE e STA (per maggiori
dettagli consultare il cap. 14 “APPENDICE A: GESTIONE ERRORI DA PART PROGRAM”).
45004616J 95
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
La prestazione di programmazione ad alta velocità (High Speed Machining, nel seguito HSM) permette la
lavorazione di superfici (profili) definite per punti su macchine utensile che hanno fino a 12 assi.
Per poter utilizzare la prestazione HSM il parametro “Interpolazione ad Alta Velocità” dell’AMP deve
essere settato a Sì nella configurazione del processo che dovrà utilizzarla.
I tratti percorsi in G00 saranno considerati come dei singoli posizionamenti; ogni punto verrà collegato
col successivo tramite un moto “lineare” da effettuarsi con le caratteristiche dinamiche dei
posizionamento in rapido (ogni tratto in G00 partirà da una velocità nulla e terminerà a velocità nulla).
Per tale motivo la modalità G00 non effettuerà il calcolo della curva polinomiale. Al termine di un tratto
in G00 non verrà effettuata alcuna sosta (sincronismi di fine movimento, entrata in tolleranza, ecc...)
ma si ripartirà immediatamente col movimento successivo. Tale comportamento è assimilabile alla
programmazione in uno stesso blocco dei codici G01 e G09.
p3
p1 p4
p2
p0
Nel caso di G01 o G10 ogni punto verrà geometricamente collegato con i successivi tramite una curva
polinomiale, quindi la traiettoria generata potrà essere considerata “continua”. Tale collegamento verrà
interrotto dalla programmazione di una G00 oppure dalla programmazione di appositi codici G descritti
di seguito.
p3
p1 p4
p2
p0
45004616J 96
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Nel caso di G2 o G3 l’interpolazione circolare viene sostituita da una curva polinomiale, quindi la
traiettoria generata è un’approssimazione dell’arco di circonferenza. L’errore introdotto è comunque
inferiore alla banda di tolleranza programmata per le splines (variabili TBS).
p p p
1 p
p 2 3
4 p
0
5 p
6
p2 p3
p1
Nel punto di “cambio di curvatura” il sistema introdurrà automaticamente una G62, una G63 oppure
potrà inserire dei punti all’interno del tratto più lungo. Il numero di punti inseriti dipende dal rapporto
tra le lunghezze dei tratti lungo e corto.
I parametri che entrano in gioco in questo caso sono gestiti dalle variabili CURLEN, CURRAP e
CURMODE.
L’approccio dinamico ottimale per affrontare uno spigolo sarebbe di fermarsi a velocità 0 e poi ripartire
sul tratto successivo. Talvolta però la fermata può essere dannosa in quanto l’utensile, ruotando,
continua ad asportare materiale e quindi si potrebbero creare delle “tacche” sul pezzo.
Per evitare questo inconveniente è possibile definire se e come fermarsi sullo spigolo.
Nel caso in cui sia settato il parametro CURMODE=6, la gestione degli spigoli si può configurare anche
tramite il parametro SMTFORM.
45004616J 97
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Il comando SPL permette di definire su quali assi applicare l’alta velocità e quali assi concorrono al
calcolo della velocità sul profilo. Questo triletterale viene influenzato dalla variabile FEEDROT, come
descritto successivamente.
Sintassi
(SPL, [nomiassi1][,nomiassi2])
dove:
nomiassi1 Se FEEDROT = 0 è la lista dei nomi assi per cui è programmata la velocità (Feed) e
sui quali calcolare la lunghezza delle splines. Gli altri eventuali assi (rotativi e/o
aggiuntivi) non vengono coinvolti nel calcolo della velocità/lunghezza ma
“inseguono” l’esecuzione del profilo.
Nel caso in cui FEEDROT = 1 rappresenta invece la lista dei nomi assi per cui è
programmata la velocità, mentre la lunghezza della spline viene calcolata sugli
assi definiti con nomiassi2. L’eventuale programmazione di un asse rotativo, in
aggiunta a quelli lineari, provoca un ricalcolo automatico della velocità in modo
che la stessa lungo gli assi lineari rimanga invariata (analogamente all'attivazione
del parametro FEEDROT in una lavorazione senza splines).
nomiassi1 è un sottoinsieme di nomiassi2, se non programmata il parametro verrà
calcolato sugli assi cartesiani del processo .
nomiassi2 E’ la lista dei nomi assi su cui calcolare le Splines: è un sottoinsieme degli assi
configurati nel processo. Se non programmato, le Spline verranno calcolate su tutti
gli assi del processo
Esempio:
Processo 1 configurato con assi XYZABC e U
(SPL, XA, XYZAC) Il profilo delle Splines sarà costituito dagli assi XYZAC la cui velocità sarà calcolata
considerando i soli assi XA. Se FEEDROT=0, la lunghezza sarà calcolata sugli assi
XA, se FEEDROT=1, la lunghezza sarà calcolata sugli assi XYZAC e, inoltre, viene
attivato il ricalcolo della velocità in modo che la stessa sui lineari rimanga
invariata.
(SPL, , XYAC) Se FEEDROT=0, velocità e lunghezza della Spline di assi XYAC saranno calcolate sui
soli assi del piano XY, se FEEDROT=1, la velocità sarà calcolata su XY e la
lunghezza su XYAC.
(SPL, XY) Se FEEDROT=0, velocità e lunghezza saranno calcolate sugli assi XY, se FEEDROT=1,
velocità sarà calcolata su XY, mentre la lunghezza su XYZABC e U. In entrambi i
casi il profilo delle Splines sarà costituito dagli assi XYZABC e U.
45004616J 98
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
G61
G60
Sintassi:
G61 È il codice che segnala l’inizio della programmazione ad alta velocità. Tutti i blocchi di movimento
successivi verranno processati dall’algoritmo di programmazione ad alta velocità.
Caratteristiche:
Entrambi i codici devono essere programmati da soli nel blocco.
Quando è attiva la programmazione ad alta velocità non è possibile effettuare le seguenti azioni:
Attivare la trasformazione TCP e tcp (cambio TCP in continuo)
Attivare la trasformazione UPR e upr (cambio UPR in continuo)
Cambiare il piano di interpolazione attivo (codici G16, G17, G18 e G19)
Effettuare la migrazione assi (triletterale GTA)
Associare un nuovo nome a un asse (triletterale DAN)
Condividere un asse con il PLC (triletterale AXS)
Programmare G79
45004616J 99
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
G62
G63
G66
G67
Caratteristiche:
Questi codici G permettono di separare i profili in modo da forzare l’uso di due curve differenti, una
generata utilizzando i punti definiti prima del codice G relativo e l’altra generata utilizzando i punti
definiti dopo il codice G.
I codici G differiscono per quanto riguarda la continuità e le caratteristiche dinamiche sul punto del
profilo comune alle due curve.
Qui di seguito sono elencati questi comportamenti:
G62: le due curve generate sono raccordate e continue. La seconda curva avrà un’inclinazione
iniziale pari a quella di uscita della curva precedente.
A livello dinamico, nel caso di G62 non verrà generata alcuna rampa di decelerazione e
accelerazione per raccordare le due curve.
G62
p3
p1 p4
p2
p0
L’utilizzo deI codice G62 è particolarmente utile quando si vogliono definire curve “simili” e
ripetitive (a patto che lo siano anche i punti programmati).
Supponiamo di avere un profilo definito da 100 punti di cui i primi 50 rappresentano la prima
passata di lavorazione (da p1 a p50) e gli altri 50 (da p50 a p99) lo stesso profilo leggermente
spostato (seconda passata).
p1
p50 p99
Essendo i punti compresi tra p1 e p50 “simili” ai punti compresi tra p50 e p99 accadrà che le
condizioni di calcolo delle due curve polinomiali saranno simili. Verranno pertanto generate due
curve quasi uguali e “parallele”.
Nel caso in cui non sia stata programmata la funzione G62 sul punto p50 può accadere che il CN
generi delle curve non perfettamente parallele. Questo effetto, normalmente indesiderato, è
dovuto al fatto che il calcolo dei polinomi tiene conto della “storia” precedente lungo le
traiettorie calcolate.
45004616J 100
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Appare evidente che la “storia” del punto p1 è diversa da quella del punto p50. Nel caso di p1,
infatti, la “storia” è inesistente, mentre in p50 il CN conosce tutto l’andamento dovuto ai primi 49
punti.
Inserendo la funzione G62 si ottiene l’effetto di cancellare la “storia” precedente, ottenendo un
andamento geometrico pressoché identico a quello calcolato a partire da p1.
Nel caso di lavorazioni con più passate quindi, la mancata programmazione di G62 avrebbe
l’indesiderato effetto di avere diversi livelli di lavorazione tra una passata e l’altra.
G63: l’inclinazione della prima curva non influisce su quella della seconda curva, per mantenere
la continuità tra le due curve viene inserito un raccordo dipendente dalla precisione con cui
viene richiesto il calcolo delle splines.
A livello dinamico potrebbe essere generato un rallentamento sul punto di raccordo delle due
curve.
G66
p3
p1 p4
p2
p0 Raccordo
p2
G66: l’inclinazione della prima curva non influisce su quella della seconda curva, si introduce
una discontinuità tra le due curve, cioè in corrispondenza della G66 ci sarà uno spigolo.
G66
p3
p1 p4
p2
p0
A livello dinamico la discontinuità verrà affrontata a velocità nulla. La prima curva verrà
terminata con una rampa di decelerazione sino a velocità nulla, la seconda curva partirà con una
rampa di accelerazione per raggiungere la velocità di lavorazione richiesta.
G6
6
45004616J 101
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
G67: il comportamento è simile a quello del codice G66, le due curve sono discontinue. A livello
dinamico la discontinuità verrà affrontata a una velocità (vs) tale per cui gli assi possano
affrontare lo spigolo senza avere problemi dinamici. Il valore di velocità viene calcolato in base
alle accelerazioni sopportabili da ogni asse
v
G6
7
vs
Sintassi
MAXLEN = valore
dove:
valore è un numero reale positivo che indica la lunghezza massima dei polinomi generati.
Può essere programmato direttamente o indirettamente tramite un parametro E.
L’unità di misura utilizzata è quella attiva nel sistema.
45004616J 102
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
5.8 TBS / TBSG0 – Tolleranza sull’asse a velocità di lavoro / rapido per spline
Le due variabili definiscono, per ogni asse, la banda di tolleranza da utilizzare nella generazione delle
curve polinomiali.
È possibile definire bande diverse per i movimenti a velocità di lavoro e a velocità di rapido.
Sintassi
TBS(axis) = valore
TBSG0(axis) = valore
dove:
axis il parametro indica a quale asse si riferisca il valore di tolleranza.
Può essere specificato in due modi:
Tramite un carattere ASCII che identifica il nome dell’asse
Tramite un numero intero compreso tra 1 e 64 che specifica l’identificativo
dell’asse
valore è il valore della tolleranza espresso nell’unità di misura attiva. Può essere espresso
direttamente tramite un numero reale o indirettamente utilizzando un parametro
E
Caratteristiche:
Le curve polinomiali generate passano arbitrariamente vicino ai punti programmati. Questa variabile
permette di definire, per ogni asse, di quanto la curva generata possa distare dalla poligonale
corrispondente al profilo programmato.
Se il movimento programmato interessa più assi, allora la banda di tolleranza applicata alla curva
generata sarà la minore tra le bande degli assi interessati dal movimento.
45004616J 103
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
SNMT(axis) = valore
dove:
axis il parametro indica a quale asse si riferisca la soglia di movimento nullo.
Può essere specificato in due modi:
Tramite un carattere ASCII che identifica il nome dell’asse
Tramite un numero intero compreso tra 1 e 64 che specifica l’identificativo
dell’asse
Caratteristiche:
Se la distanza tra due punti generati successivi è inferiore alla soglia di movimento nullo, allora il
secondo punto non viene preso in considerazione.
Sintassi
TBV = valore
TBVG0 = valore
dove:
valore valore di tolleranza proporzionale al valore della banda di tolleranza degli assi
lineari. È un valore compreso tra 0 e 1.
Il valore 0 disabilita la gestione della tolleranza sui versori
Caratteristiche:
Il valore della banda di tolleranza per la generazione delle curve polinomiali calcolate sui versori è
importante poiché dalla precisione con cui vengono calcolate le curve sui versori deriva la precisione di
posizionamento degli assi rotativi.
Si suggerisce di impostare un valore pari a 0.1 volte il valore di tolleranza definito per gli assi lineari.
45004616J 104
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
5.11 DAC / DAV – Angolo di soglia per discontinuità assi lineari / assi rotativi
Le due variabili permettono di definire un angolo di soglia tra gli elementi del profilo HSM oltrepassato il
quale il sistema introduce automaticamente un codice di transizione.
È possibile definire sia un angolo di soglia per quanto riguarda gli assi lineari (DAC) che per gli assi
rotativi (DAV).
Sintassi
DAC = valore
DAV = valore
dove:
valore indica il valore in gradi dell’angolo di soglia. Può essere programmato
direttamente tramite un numero reale compreso tra 0 e 179° o indirettamente
tramite un parametro E.
Caratteristiche:
L’uso del parametro di angolo di soglia per le discontinuità permette di identificare la presenza di spigoli
nei profili HSM programmati.
La mancata individuazione di spigoli potrebbe generare errate oscillazioni sulle splines. L’approccio
ottimale per affrontare uno spigolo sarebbe di fermarsi a velocità zero e poi ripartire sul tratto
successivo.
Talvolta il fatto di fermarsi può essere dannoso in quanto l’utensile, ruotando, continua ad asportare
materiale e quindi potrebbe creare “tacche” sul pezzo.
p2 Angolo
p3
G66
p1 automatico
Il tipo di codice di transizione che viene inserito automaticamente dipende dalla configurazione in AMP e
può essere modificato tramite la variabile DPMODE.
45004616J 105
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
DPMODE = valore
dove:
valore è uno dei valori permessi per la variabile e vale:
1. per inserire un codice G66
2. per inserire un codice G67
3. per inserire un codice G63
Caratteristiche:
La variabile permette di definire quale sia il codice di transizione che il controllo inserisce
automaticamente quando l’angolo tra elementi del profilo HSM supera il valore dell’angolo di soglia per
discontinuità.
Il valore dell’angolo di soglia dipende dalla configurazione in AMP e può essere modificato tramite la
variabile DAC per quanto riguarda gli assi lineari e tramite la variabile DAV per quanto riguarda gli assi
rotativi.
Sintassi
CURLEN = valore
dove:
valore è il valore della lunghezza minima espressa nell’unità di misura attiva per il tratto lungo.
Può essere programmato direttamente con un numero reale o indirettamente tramite un
parametro E.
45004616J 106
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
CURRAP = valore
dove:
valore è il valore del rapporto tra il tratto lungo e il tratto corto del profilo. È espresso
nell’unità di misura attiva per il tratto lungo. Può essere programmato
direttamente con un numero reale o indirettamente tramite un parametro E.
Caratteristiche:
Questa variabile permette di definire un valore di soglia nel rapporto tra due tratti di profilo per attivare
la gestione del cambio di curvatura.
Per esempio se CURRAP vale 6, allora la distanza tra p1 e p2 deve essere almeno sei volte maggiore di
quella tra p2 e p3 affinché si attivi il cambio di curvatura
p2 p3
p1
5.15 SMTFORM – Soglia sui coseni direttori per attivazione dello smoothing
Questa variabile permette di definire una soglia tra i coseni direttori degli elementi adiacenti del profilo
HSM, oltre la quale viene eseguito lo smoothing della traiettoria in quel punto, ma solo se è attiva
CURMODE=6.
Sintassi
SMTFORM = valore
dove:
valore indica il valore della soglia della differenza dei coseni direttori. Può essere
programmato tramite un numero reale compreso tra 0 e 1, dove 0 corrisponde ad
un angolo di soglia tra i segmenti adiacenti pari a 180 gradi, mentre 1 di 90 gradi.
Caratteristiche:
Se l'angolo è maggiore di 90 gradi, ovvero differenza dei coseni direttori maggiore di 1, lo smoothing
viene sempre eseguito, indipendentemente dal valore di questo parametro.
Analogamente ai parametri DAC e DAV, l'uso di un parametro che definisce una soglia nella differenza
tra i coseni direttori (i.e. un angolo di soglia) tra elementi adiacenti del profilo permette di identificare
la presenza di spigoli.
45004616J 107
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
CURMODE = valore
dove:
valore è uno dei valori permessi per la variabile e vale:
3. per inserire un codice G63
4. per inserire un codice G62
5. per eseguire un infittimento dei punti introducendo punti intermedi sul tratto lungo
6. per eseguire uno smoothing della traiettoria ed infittirla introducendo dei punti
nelle zone più spigolose.
Caratteristiche di CURMODE=6:
Lo smoothing viene eseguito spostando il punto interessato verso l'interno della traiettoria fino ad un
massimo della tolleranza consentita (regolabile con il comando TBS).
Successivamente, per ottenere una rampa di decelerazione il più possibile uniforme vengono inseriti dei
punti nell'intorno del punto interessato, distribuendoli in analogia con la disposizione dei nodi di
Chebyshev.
La presenza di zone spigolose viene individuata grazie ad un valore di soglia, definito tramite il
parametro SMTFORM.
Lo scopo di questo tool è quello di creare un profilo più uniforme, entro i limiti della tolleranza,
smussando gli angoli più acuti, dove potrebbero esserci oscillazioni nelle Splines.
45004616J 108
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
IDMODE = valore
dove:
valore è uno dei valori permessi per la variabile e vale:
1. per inserire un codice G66
2. per inserire un codice G67
3. per inserire un codice G63
Sintassi
CEND = valore
dove:
valore è uno dei valori permessi per la variabile e vale:
1. punto programmato
2. punto programmato e derivata prima
3. punto programmato e derivata seconda
Caratteristiche:
A seconda del valore della variabile cambia il tipo di continuità sul punto generato all’inizio e alla fine di
ogni tratto di curva.
Nel caso di inizio curva l’effetto dei diversi valori della variabile è il seguente:
1. Viene forzato il passaggio per il primo punto
2. Viene forzato il passaggio per il primo punto e anche la derivata prima, equivale a imporre la
direzione congiungente i primi due punti
3. Viene forzato il passaggio per il primo punto, la derivata prima e la derivata seconda, equivale a
imporre la curvatura generata dai primi tre punti
45004616J 109
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
SPL3D = valore
dove:
valore Può valere 0 (di default) oppure 1. Con 0 la trasformazione cinematica viene
effettuata dall’algoritmo del TCP mentre con 1 viene attivata la trasformazione
cinematica da parte dell’algoritmo di alta velocità.
Caratteristiche:
Quando è attiva una cinematica di macchina, ossia è stato programmato un TCP, e si è abilitata la
trasformazione cinematica per Splines (SPL3D = 1), il sistema entra in modalità HSM: la Spline in quote
pezzo viene prima trasformata, applicando la cinematica inversa, e poi rigenerata sulle quote dei giunti.
Così facendo la dinamica può essere calcolata in modo preciso sfruttando la massima dinamica che gli
assi possono offrire pur garantendo la velocità programmata sul profilo pezzo.
45004616J 110
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
6. FILTRI
6.1 Generalità
I filtri sono oggigiorno utilizzati nei più svariati impieghi: per regolarizzare un set di valori, per
processare dati eliminandone una specifica parte, per analizzare segnali tagliando le alte frequenze
oppure per la pre-compensazione a banda finita dei loops di controllo.
Questo capitolo descrive i vari tipi di filtri configurabili e quindi applicabili nel controllo OPEN, nati con
lo scopo di migliorare dal punto di vista geometrico e dinamico le prestazioni della macchina utensile e
quindi la qualità della finitura del pezzo eseguito.
45004616J 111
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Tale programmazione ha una funzione sia preparatoria (nel senso che permette la scrittura dei parametri
del filtro) che esecutiva (nel senso che permette l’attivazione o meno della funzionalità di filtraggio) a
seconda della modalità definita nel comando stesso.
Sintassi
dove:
modo1 Rappresenta la modalità di tipo non esecutiva effettuabile sul filtro:
45004616J 112
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
nomi_assi Programmazione con il modo2, è l’elenco dei nomi degli assi di processo a cui
applicare l’algoritmo di filtraggio.
È possibile specificare gli assi tramite:
Un singolo carattere ASCII, se l’asse è programmato per nome.
Un carattere ‘/’ seguito da un numero intero, se programmato per ID.
parametri Da usare solo nella programmazione con il modo1, è l’elenco dei parametri
associati al filtro. Il numero dei parametri deve essere coerente con quello gestito
dal filtro.
Caratteristiche:
La scrittura dei parametri è permanente, ossia il valore originale viene ripristinato solo all’accensione
successiva della macchina e non sul RESET.
45004616J 113
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Alla media può essere applicato un “Fattore di forma” in modo da pesare maggiormente il contributo del
punto centrale della media. Ciò consente di eseguire profili più fedeli, a discapito però
dell’arrotondamento e di avere un comportamento dinamico più morbido, specie durante i “salti di
velocità”.
Nel momento in cui si applica un fattore di forma è possibile richiedere una particolare cura nel suo
rispetto durante l’esecuzione della lavorazione, come effetto collaterale si ha una riduzione della
dinamica dei movimenti. Assieme a tale parametro è possibile richiedere una compensazione dei moti
circolari, in modo da ridurre l’errore di forma (cerchi più piccoli) che si innescano sui moti circolari in
presenza di filtri. È inoltre possibile abilitare un maggiore controllo dell'ERF nei raccordi circolari di
piccolo raggio.
Nel momento in cui si abilita il maggiore controllo dell'ERF e la riduzione dell'errore sui cerchi (Bit 0 e 1
del parametro 3) è possibile eseguire i cerchi, nel rispetto dell'ERF, ad una velocità superiore; con il
parametro 4, si abilita questa ottimizzazione per archi di cerchio di angolo inferiore all'angolo
impostato. Il parametro è espresso in gradi.
Parametro Descrizione
Numero di punti
Limite inferiore e superiore di campionamento (L). Il numero totale di punti presi in
considerazione per calcolare il riferimento medio applicato al sistema sarà uguale a 2*L+1
1
(punto attuale + L punti precedenti + L punti successivi).
Il valore di L massimo è 128, il minimo è 2.
Il parametro è obbligatorio.
Fattore di forma
2 Fattore di forma con valore tra 0.5 (profilo più fedele) e 1 (profilo più filante).
Non obbligatorio, se omesso si assume valore 1.0.
Modalità di esecuzione
Bit 0 (peso 1) maggiore controllo ERF, negli spigoli.
Bit 1 (peso 2) riduzione errore su cerchi.
3 Bit 2 (peso 4) maggiore controllo ERF su raccordi circolari di piccolo raggio.
Bit 3 (peso 8) abilita il controllo dell'ERF nei profili eseguiti in look ahead con CRV attivo.
Bit 4 (peso 16) abilita il controllo dell'ERF nei profili eseguiti in HSM.
Non obbligatorio, se omesso si assume valore 0.
Arco limite di ottimizzazione velocità.
Uguale a 0: ottimizzazione non attiva.
Uguale a 360: ottimizzazione sempre attiva.
4 Compreso tra 0 e 360: ottimizzazione attiva per archi aventi angolo inferiore al limite
richiesto.
Se i bit 0 e 1 del parametro 3 non sono impostati si assume il valore 0.
Non obbligatorio, se omesso si assume valore 0.
45004616J 114
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Parametro Descrizione
Parametro Descrizione
Parametro Descrizione
Esempio 1:
Si voglia configurare, sugli assi lineari del processo, un filtro che esegua la media mobile dei punti
limitata a tre campioni.
(FLT, W, 1, X , E1) E1 = L = 3
(FLT, W, 1, Y , E1) Il numero totale di riferimenti su cui verrà calcolata la media
(FLT, W, 1, Z , E1) sarà 7: punto attuale + 3 punti precedenti e 3 successivi
45004616J 115
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 2:
Si voglia configurare, su tutti gli assi del processo, il filtro dell’esempio precedente
(FLT, W, 1, E1)
Esempio 3:
Si supponga di voler:
abilitare il filtro dell’esempio 1 solo sugli assi lineari => (FLT, E, 1, XYZ)
conoscere lo stato di abilitazione del filtro sugli assi Y, A e B = (FLT, S, 1, Y, E2)
>
dopo il comando si avrà: E2 = 1, E3 = 0, E4 = -1 (FLT, S, 1, A, E3)
(FLT, S, 1, B, 4)
abilitare il filtro dell’esempio 1 su tutti gli assi del processo = (FLT, E, 1)
>
Esempio 4:
Si voglia configurare, sugli tutti gli assi lineari del processo, un filtro che esegua la media mobile su 8
punti applicando un fattore di forma (Hamming) pari a 0,54.
45004616J 116
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
7. CICLI FISSI
45004616J 117
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 118
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Movimento di avanzamento
Rapido
Il seguente è un ciclo fisso con quota di avvicinamento uguale alla quota di ritorno.
G81 R1 . . Z. .
R = quota di avvicinamento
Z = profondità del foro
Movimento di
avanzamento
Rapido
R1
45004616J 119
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Il seguente è un ciclo fisso con la quota di ritorno diversa dalla quota di avvicinamento.
G81 R. . R. . Z. .
R = quota di avvicinamento (R1)
R = quota di ritorno (R2)
Movimento di avanzamento
Z = profondità del foro
Rapido
R2
R1
45004616J 120
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
dove:
codici-G Altri codici G compatibili con il ciclo fisso G81
(consultare "Codici G compatibili" nel Cap. 2).
R2
R Quota di avvicinamento in rapido al piano di
lavorazione. Questo parametro viene dato con R1
l’indirizzo R seguito da un numero reale. Può
essere programmata direttamente con numeri
decimali o indirettamente con parametri E. La
F
quota di avvicinamento è obbligatoria.
asse Definisce la quota della profondità del foro. È data dal nome asse lungo il quale effettuare
il ciclo fisso (tipicamente Z) seguito dal valore della profondità del foro. Tale valore può
essere programmato direttamente con un numero decimale o indirettamente con un
parametro E.
45004616J 121
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio:
NOTA:
0.Z significa posizione Z=0
Programma:
N30 G1Z30
N31 (DIS,"PUNTA A ELICA D=6.5")
N32 S1100 T3.03 M6
N33 X0Y0Z10
N34 G81 R3 Z-10 F95 M3
1 N35 X15 Y15
2 N36 Y60
3 N37 X80
4 N38 Y15
N39 G80 Z50 M5
N40 M30
45004616J 122
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
dove:
codici-G Altri codici G compatibili con il ciclo fisso G82
(consultare "Codici G compatibili" nel Cap. 2).
R2
R Quota di inizio foro (vedere G81).
R1
R Quota di ritorno (vedere G81).
Esempio:
La figura seguente illustra una lavorazione di lamatura.
45004616J 123
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
G83 [codici-G] R.. [R..] asse.. I.. [J..] [K..] [F.. ] [ausiliaria]
dove:
codici-G Altri codici G compatibili con il ciclo fisso
G83 (consultare "Codici G compatibili" nel
Cap. 2).
J Definisce il minimo incremento della profondità dopo il quale il ciclo procede con
incrementi costanti. È dato dall'indirizzo J seguito dal valore.
Caratteristiche:
Il codice G83 può generare movimenti differenti a seconda che i parametri I, J e K siano programmati
oppure no.
45004616J 124
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio
NOTA:
0.Z significa posizione Z=0
Programma:
8
N65 (DIS,"PUNTA A ELICA D=6")
0.Z
N66 S930 F65 T6.6 M6 -12
N67 G83 R18 Z-55 I20 K.8 J6 M13
-28
1 N68 X-15.81 Y-22.2
-40.8
2 N69 X23
-51.04
3 N70 X9 Y35.8 -55
N71 G80 Z50 M5
N72 M30
45004616J 125
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
DRP = valore
dove:
valore Può essere programmato direttamente o indirettamente con un parametro E.
Esempio:
DRP=0.01 ripresa foro a 0.01mm
DRP=5 ripresa foro a 5 mm
45004616J 126
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
R Definisce la quota di ritorno dopo la lavorazione. Questo parametro viene dato con
l'indirizzo R seguito dal valore di ritorno. In assenza di questa quota, la quota di
avvicinamento viene assunta automaticamente dal controllo come quota di ritorno. Questa
coordinata può essere programmata direttamente con numeri decimali o indirettamente
con un parametro E.
asse Definisce la quota di fine maschiatura. È data dal nome asse lungo il quale effettuare il
ciclo fisso (tipicamente Z) seguito dal valore della quota di fine maschiatura. Tale valore
può essere programmato direttamente con un numero decimale o indirettamente con un
parametro E.
Caratteristiche:
L'accostamento in rapido dell'utensile al pezzo in lavorazione dovrebbe sempre terminare ad una
distanza dal pezzo uguale a cinque volte il passo di maschiatura (per profondità di maschiatura inferiori
o uguali a 3 diametri) o sette volte il passo di maschiatura (per profondità superiori a 3 diametri).
La velocità di avanzamento da programmare per la maschiatura deve essere calcolata tramite la
seguente formula:
F = S * p * 0.9
45004616J 127
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
dove:
S È la velocità di rotazione del mandrino
p È il passo del maschio
0.9 È il fattore di decremento della velocità di avanzamento per mantenere in tiro il compensatore a
molla del portautensili.
La quota finale deve essere decrementata di una quantità pari al 10% della corsa effettiva di lavoro del
maschio.
Se la corsa di lavoro non è sufficientemente lunga per consentire all'asse di raggiungere la velocità di
avanzamento programmata e di fermarsi con decelerazione calcolata in base al tempo di arresto della
rotazione del mandrino, viene segnalato errore.
In un blocco G84 non sono ammesse funzioni M.
Esempio:
NOTA:
0.Z significa posizione Z=0
Programma:
N90 (DIS,"MASCHI M8 - COMPENS. A TRAZIONE")
N91 S280 F315 T8.8 M6 M13
N92 G84 R7 Z-15
N93 X-51.96 Y-30
N94 X51.96
N95 X Y60
N96 G80 Z50 M5
Questo programma è valido per operazioni di maschiatura destrorse perché nel blocco N91è stata
programmata la funzione M13. Per operazioni di maschiatura sinistrorse, è sufficiente programmare la
funzione M14 (o M04) invece di M13 (o M03).
45004616J 128
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
dove:
codici-G Altri codici G compatibili con il ciclo fisso G84 (consultare "Codici G compatibili"
nel Cap.2).
R Quota di avvicinamento in rapido al piano di lavorazione. Questo parametro viene
dato con l’indirizzo R seguito da un numero reale. Può essere programmata
direttamente con numeri decimali o indirettamente con parametri E. La quota di
avvicinamento è obbligatoria.
R Definisce la quota di ritorno dopo la lavorazione. Questo parametro viene dato con
l'indirizzo R seguito dal valore di ritorno. In assenza di questa quota, la quota di
avvicinamento viene assunta automaticamente dal controllo come quota di
ritorno. Questa coordinata può essere programmata direttamente con numeri
decimali o indirettamente con un parametro E.
I Sfasamento rispetto alla posizione angolare zero del mandrino espressa in gradi. I
viene utilizzato nelle maschiature per modificare la posizione angolare del maschio
ad inizio lavorazione. Viene programmato con l'indirizzo I. Vale solo se definito il
passo di maschiatura K.
asse Definisce la quota di fine maschiatura. È data dal nome asse lungo il quale
effettuare il ciclo fisso (tipicamente Z) seguito dal valore della quota di fine
maschiatura. Tale valore può essere programmato direttamente con un numero
decimale o indirettamente con un parametro E.
K Definisce il passo di filettatura del maschio. Viene dato dall'indirizzo K seguito da
un valore.
F Definisce la velocità di avanzamento utilizzata durante un'operazione di ciclo fisso.
È programmata dall'indirizzo F seguito dal valore.
ausiliaria Altre funzioni M, S, T, (vedere G81).
Caratteristiche:
Quando viene montato il trasduttore sul mandrino, il codice G84 può essere programmato in due modi:
Usando la velocità di avanzamento F, calcolata come nel caso precedente.
Usando il passo di filettatura K. In tal caso il controllo calcola automaticamente la velocità di
avanzamento moltiplicando per K il numero di giri del mandrino.
L’esecuzione del ciclo di maschiatura può esssere eseguito includendo una sosta a fine foro (utilizza la
variabile DWT che esprime in secondi il tempo di sosta) ed un ritorno con velocità diversa (simile alla
maschiatura senza trasduttore utilizzando la variabile TRP). Inoltre la maschiatura può essere eseguita
immediatamente sul blocco di G84, senza dover effettuare movimenti successivi alla sua
programmazione. Si veda la variabile TMD.
45004616J 129
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio:
N90 (DIS,"MASCHIO M8")
N91 S280 T8.8 M6 M3
N92 G84 R7 Z-15 K1
N93 X-51.96 Y-30
N94 X51.96
N95 X Y60
N96 G80 Z50 M5
45004616J 130
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
7.10 G84 – Ciclo di maschiatura rigida con trasduttore montato sul mandrino
Sintassi
dove:
codici-G Altri codici G compatibili con il ciclo fisso G84 (consultare "Codici G compatibili"
nel Cap.2).
R Quota di avvicinamento in rapido al piano di lavorazione. Questo parametro viene
dato con l’indirizzo R seguito da un numero reale. Può essere programmata
direttamente con numeri decimali o indirettamente con parametri E. La quota di
avvicinamento è obbligatoria.
R Definisce la quota di ritorno dopo la lavorazione. Questo parametro viene dato con
l'indirizzo R seguito dal valore di ritorno. In assenza di questa quota, la quota di
avvicinamento viene assunta automaticamente dal controllo come quota di
ritorno. Questa coordinata può essere programmata direttamente con numeri
decimali o indirettamente con un parametro E.
I Sfasamento rispetto alla posizione angolare zero del mandrino espressa in gradi. I
viene utilizzato nelle maschiature per modificare la posizione angolare del maschio
ad inizio lavorazione. Viene programmato con l'indirizzo I.
asse Definisce la quota di fine maschiatura. È data dal nome asse lungo il quale
effettuare il ciclo fisso (tipicamente Z) seguito dal valore della quota di fine
maschiatura. Tale valore può essere programmato direttamente con un numero
decimale o indirettamente con un parametro E.
K Definisce il passo di filettatura del maschio. Viene dato dall'indirizzo K seguito da
un valore.
ausiliaria Altre funzioni M, S, T, (vedere G81).
Caratteristiche:
Per la corretta realizzazione del ciclo di maschiatura rigida è necessaria una predisposizione realizzata
tramite il caricamento di due parametri di macchina con i valori appropriati, che tipicamente variano da
macchina a macchina. I parametri interessati sono denominati TKG e TAG.
Sarà quindi necessario fare precedere i cicli di maschiatura rigida dall’assegnazione di questi due
parametri con i valori ricavati in fase di installazione della macchina.
Si consiglia di inserire il caricamento di questi dati nelle variabili AMP ad esse associate oppure in una
paramacro (per esempio G840) da chiamarsi una volta sola nell’ambito del programma che effettua la
maschiatura rigida. La paramacro sarà quindi così strutturata:
TKG=……
TAG=……
L’esecuzione del ciclo di maschiatura può esssere eseguito includendo una sosta a fine foro (utilizza la
variabile DWT che esprime in secondi il tempo di sosta) ed un ritorno con velocità diversa (simile alla
maschiatura senza trasduttore utilizzando la variabile TRP). Inoltre la maschiatura può essere eseguita
immediatamente sul blocco di G84, senza dover effettuare movimenti successivi alla sua
programmazione. Si veda la variabile TMD.
45004616J 131
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
N.B. Per le modalità di calcolo dei corretti valori dei parametri si rimanda al “Manuale di
caratterizzazione”.
45004616J 132
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
TKG = valore
TAG = valore
dove:
valore è un valore reale che descrive il ritardo di applicazione dei comandi a velocità
costante (TKG) e nelle fasi di accelerazione e decelerazione (TAG).
Caratteristiche:
Per una corretta realizzazione del ciclo di maschiatura rigida è necessario ricercare e memorizzare,
utilizzando la stessa configurazione di VFF che si utilizzerà durante la lavorazione, i parametri di
guadagno a velocità costante e in accelerazione e decelerazione.
Per identificare i valori corretti da assegnare ai due parametri è necessario effettuare dei cicli di
maschiatura in assenza del pezzo.
Durante la maschiatura nella variabile SD21 (nel caso in cui si lavori con il processo 1, altrimenti il valore
verrà salvato nella SD relativa al processo in uso) viene salvato l’errore tra la posizione teorica e quella
letta sull’asse di maschiatura durante il processo di maschiatura rigida e nella variabile SD22 viene
salvata la posizione corrente del’asse di maschiatura.
I valori ottimali di TKG e TAG sono quelli che minimizzano l’errore, che cioè minimizzano il valore in
SD21.
Operativamente è preferibile agire per primo sul parametro TKG, portando quanto più possibile vicino a
0 l’errore a velocità costante e trascurando l’andamento dell’errore in fase di accelerazione. Una volta
calcolato il valore per il parametro TKG si potrà passare alla ricerca del valore ottimale per il parametro
TAG.
I valori stabiliti per i parametri TAG e TKG saranno validi per tutti i tipi di maschiatura, anche con passi
e velocità di mandrino diverse da quelli utilizzati per le prove.
Valore SD21
45004616J 133
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
TRP = valore
dove:
valore Può essere programmato direttamente con un numero intero o indirettamente con
un parametro E di tipo intero.
Esempio:
TRP = 110 rappresenta +10% della F programmata
TRP = 10 rappresenta - 90% della F programmata
La funzionalità è valida solo per cicli di maschiatura con mandrino senza trasduttore o con
mandrini con trasduttore solo in base a quanto espresso dalla variabile TMD.
45004616J 134
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
TMD = valore
dove:
valore Può essere programmato direttamente con un numero intero o indirettamente con
un parametro E di tipo byte. E’ una variabile di tipo binario, ove ogni bit abilita
una particolare gestione della operazione del ciclo di maschiatura.
Bit 0 Abilita la sosta a fine foro. Il valore del tempo di sosta è programmato tramite la
variabile DWT ed è espresso in secondi.
Bit 1 Abilita l’utilizzo della variabile TRP per eseguire il ritorno con una velocità
differente rispetto a quella con cui è stato eseguito il ciclo di andata. Tramite il
valore TRP (valore massimo 32000) di definisce una percentuale di override della
velocità di rotazione del mandrino durante la fase di ritorno. Variando la velocità
di rotazione del mandrino (100 = 100% quindi uguale alla velocità programmata con
la S) si varia la velocità con cui si esce dal foro. Ad esempio programmando
TRP=200 la fase di ritorno sarà eseguita con un mandrino che ruota a velocità
doppia; la velocità di ritorno dell’asse di maschiatura sarà proporzionale ad esso in
funzione del valore del passo K di filettatura.
Esempio:
TMD = 1 Esegue la maschiatura con attesa a fine foro
TMD = 7 Esegue la maschiatura con attesa, ritorno a velocità diversa e esecuzione immediata
La funzionalità è valida solo per cicli di maschiatura con mandrino con trasduttore.
45004616J 135
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
dove:
codici-G Altri codici G compatibili con il ciclo fisso G85
(consultare "Codici G compatibili" nel Cap. 2).
asse Definisce la quota di fine alesatura/maschiatura. È data dal nome asse lungo il quale
effettuare il ciclo fisso (tipicamente Z) seguito dal valore della quota di fine
alesatura/maschiatura. Tale valore può essere programmato direttamente con un numero
decimale o indirettamente con un parametro E.
45004616J 136
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
codici-G Altri codici G compatibili con il ciclo
fisso G86 (consultare "Codici G
compatibili" nel Cap. 2).
R2
R Definisce la quota di ritorno dopo la lavorazione. Questo parametro viene dato con
l'indirizzo R seguito dal valore di ritorno. In assenza di questa quota, la quota di
avvicinamento viene assunta automaticamente dal controllo come quota di ritorno. Questa
coordinata può essere programmata direttamente con numeri decimali o indirettamente
con un parametro E.
asse Definisce la quota di fine barenatura. È data dal nome asse lungo il quale effettuare il
ciclo fisso (tipicamente Z) seguito dal valore della quota di fine maschiatura. Tale valore
può essere programmato direttamente con un numero decimale o indirettamente con un
parametro E.
45004616J 137
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
dove:
codici-G Altri codici G compatibili con il ciclo fisso G89
(consultare "Codici G compatibili" nel Cap. 2).
asse Definisce la quota di fine barenatura. È data dal nome asse lungo il quale effettuare il
ciclo fisso (tipicamente Z) seguito dal valore della quota di fine maschiatura. Tale valore
può essere programmato direttamente con un numero decimale o indirettamente con un
parametro E.
45004616J 138
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio:
NOTA:
0.Z significa posizione Z=0
Programma:
N42 (DIS,"PUNTA AD ELICA D=10")
N43 S850 F100 T4.4 M6
N44 G81 R-10 R2 Z-36 M3
N45 X35 Y40
N46 X65 Y80
N47 X35 Y120
N48 G80 Z50 M5
45004616J 139
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
I blocchi di programma formati dagli elementi X, Y, R (discesa), R (ritorno), Z vengono eseguiti nel
seguente ordine:
1. X ed Y
2. R (discesa) aggiornato - nuova quota di avvicinamento rapido
3. Z aggiornato - nuova profondità
4. R (ritorno) aggiornato - nuova quota di ritorno
La tabella seguente riassume i formati dei blocchi di programma utilizzati per aggiornare le fasi dei cicli
fissi:
BLOCCO AZIONE
X.. Y.. Z.. Esegue un ciclo fisso in XY con una nuova profondità Z.
X.. Y.. R.. Esegue un ciclo fisso in XY con un nuovo piano di avvicinamento in rap. R.
X.. Y.. R.. R.. Esegue un ciclo fisso in XY con nuove quote di avvicinamento (R) e di ritorno (R).
X.. Y.. R.. Z.. Esegue un ciclo fisso in XY con avvicinamento in rapido R e profondità Z nuovi.
X.. Y.. R.. R.. Z.. Esegue un ciclo fisso in XY con avvicinamento in rapido R, quota di ritorno R e
profondità Z nuovi.
R.. Aggiorna il piano di avvicinamento in rapido R, non esegue il ciclo fisso nella
posizione corrente.
R.. R.. Aggiorna il piano di avvicinamento in rapido R e la quota di ritorno R; non esegue il
ciclo fisso nella posizione corrente.
R.. Z.. Aggiorna il piano di avvicinamento in rapido R, e la profondità Z; non esegue il
ciclo fisso nella posizione corrente.
R.. R.. Z.. Aggiorna le dimensioni di piano di avvicinamento in rapido R, ritorno R e
profondità Z; non esegue il ciclo fisso nella posizione corrente.
45004616J 140
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 1:
NOTA:
0.Z significa posizione Z=0
Programma:
N35 (DIS,"PUNTA A ELICA D=8")
N36 S1000 F100 T4.4 M6
N37 G81 R3 Z-42 M3
1 N38 X15 Y15
2 N39 X65
3 N40 Y85 R-13
4 N41 X15
N42 G80 Z50 M5
45004616J 141
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 2:
NOTA:
0.Z significa posizione Z=0
Programma:
N42 (DIS,"PUNTA A ELICA D=8")
N43 S1000 F100 T5.5 M6
N44 G81 R-18 Z-46 M13
1 N45 X25 Y25
2 N46 X75 R-18 R-8
3 N47 Y75 R-8 R2 Z-25
4 N48 Y175 R-3 Z-46
5 N49 X110
N50 G80 Z50 M5
45004616J 142
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 3:
NOTA:
0.Z significa posizione Z=0
Programma:
N42 (DIS,"PUNTA A ELICA D=8")
N43 S1000 F100 T4.4 M6
N44 G81 R-18 Z-42 M3 M8
1 N45 X25 Y25
2 N46 X75 R-18 R4
3 N47 Y125 R-14 R4
4 N48 Y225 R-18
5 N49 X110
6 N50 G80 Z2 M5
45004616J 143
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
8. CICLI DI TASTATURA
Tastatore elettronico
CODICE G FUNZIONE
G72 Misura le coordinate di un punto nello spazio
G73 Misura le coordinate del centro ed il raggio di un cerchio
G74 Misura lo scostamento da punti teorici (per tastatori installati in una posizione fissa).
Il controllo memorizza i valori misurati nei parametri E definiti nel ciclo di tastatura.
Quando il controllo esegue un ciclo di tastatura per misurare un punto, vengono eseguiti i seguenti
movimenti:
1. Spostamento in rapido sul punto di avvicinamento (Pa)
2. Avanzamento a velocità di misura (Vm) fino al punto teorico di tastatura, arresto e memorizzazione
delle quote. Se non avviene la tastatura, gli assi si spostano fino al punto di sicurezza (Ps).
3. Ritorno in rapido alla posizione di inizio ciclo (centro del foro in G73). L'esecuzione di tale fase è
subordinata ad un parametro di caratterizzazione della macchina, configurato in AMP, od al
corrispondente parametro "modalità" del triletterale DPP.
45004616J 144
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Il seguente diagramma mostra gli spostamenti e la velocità di avanzamento tipici di un ciclo di tastatura.
NOTA:
Se il ciclo di tastatura viene eseguito con G27, G26 o G28 attivi, sia il moto di avvicinamento che la
tastatura vengono eseguiti in continuo, mentre il movimento di fermata che si ha dopo aver trovato
l’input del tastatore avviene in modalità punto - punto.
I valori ottenuti con i cicli di tastatura sono sempre espressi nell'unità di misura corrente del
processo.
45004616J 145
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
(DPP,avvicinamento,sicurezza,velocità [ , modalità ] )
dove:
avvicinamento È la quota di avvicinamento espressa in mm o pollici.
sicurezza È la quota di sicurezza espressa in mm o pollici.
velocità È la velocità di misurazione espressa in mm/min o pollici/min.
modalità È un valore che indica se eseguire la fase di ritorno in rapido a fine tastatura.
Può assumere i valori:
0 = esegue la fase di ritorno
1 = non esegue la fase di ritorno
Se il parametro manca viene assunto per default 0.
Esempio:
Istruzioni digitate da programma
(DPP,10,12,1000)
45004616J 146
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 147
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
G72 Misura di un punto con compensazione del diametro della sfera del tastatore
G73 Misura dei parametri di un foro
G74 Misura degli scostamenti tra punti misurati e punti teorici senza compensazione del diametro della
sfera del tastatore
Nei cicli G72-G73-G74 i parametri E vengono abbinati agli assi nell'ordine in cui gli assi sono
caratterizzati (AMP) e visualizzati, non nell'ordine in cui vengono programmati.
Sintassi
dove:
asse1. . . asse3 Sono gli assi interessati al ciclo di
tastatura. Le quote programmate nel
blocco G72 sono quelle teoriche del
punto. È possibile programmare fino a
due assi e due quote nel blocco G72.
Caratteristiche:
Le coordinate misurate dal tastatore sono memorizzate in parametri E partendo dal parametro E
specificato nel ciclo G72 ed espresse nell'unità di misura corrente. Il controllo effettua la misura con
correzione utensile attiva sul tastatore (lunghezza utensile più raggio sfera tastatore, analogamente a
Serie/10). Per raggiungere un alto grado di precisione, la superficie deve essere perpendicolare allo
spostamento di misura.
Esempio:
Gli assi sono configurati nell'ordine X Y Z.
G72 X100 Y50 E32
G72 Y50 X100 E32
In entrambi i casi i valori calcolati dal controllo per X ed Y vengono memorizzati in E32 ed E33
rispettivamente.
45004616J 148
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
rvalore Definisce il raggio teorico del foro. Il valore
del raggio può essere programmato
direttamente o indirettamente tramite un
parametro E
E-par1 Indica il parametro E da cui iniziare la
memorizzazione dei seguenti valori:
primo parametro E: ascissa del centro
(normalmente X)
secondo parametro E: ordinata del
centro (normalmente Y)
terzo parametro E: raggio del foro
Caratteristiche:
I tre valori rilevati durante l'operazione di tastatura (coordinate del centro del cerchio e raggio) vengono
memorizzati nei parametri E in ordine sequenziale partendo dal parametro E specificato, espressi
nell'unità di misura corrente.
Prima di attivare il ciclo G73, gli assi della macchina utensile devono essere posizionati sul centro del
foro. Il controllo effettua le misure con correzione utensile attiva sul tastatore.
Movimenti di tastatura
Esempio:
G73 r100 E55
Le coordinate del centro del cerchio (ascissa e ordinata) e il raggio effettivo vengono memorizzati
rispettivamente in E55, E56 ed E57.
45004616J 149
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
asse1... asse3 Sono fino a tre assi simultanei.
E-par Definisce il parametro E(x) per
la memorizzazione dello scostamento
tra il punto misurato ed il punto
programmato del primo asse E
programmato in G74; le quote di
scostamento degli altri assi, se
programmati, vengono memorizzate
G74 a
sequenzialmente nei parametri E
xi
(x+1) ed E (x+2). s
Caratteristiche:
G74 può essere utilizzato per riqualificare un utensile o per controllarne l'usura. Il calcolo delle quote
misurate non tiene conto del correttore dell'utensile, in quanto verifica la dimensione effettiva
dell'utensile.
Le fasi del ciclo G74 sono simili a quelle del ciclo G72. La differenza è costituita da come il controllo
esegue i calcoli sulle quote misurate. Il controllo non considera il diametro della sfera del tastatore e
memorizza gli scostamenti dalle dimensioni teoriche nei parametri specificati nel blocco G74, nell'unità
di misura corrente.
Esempio:
G74 X60 E41
dove: E41 è dato dalla formula: E41 = Pm - Pt
in cui: Pm è il punto misurato
Pt è il punto teorico
45004616J 150
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
UPA = valore
dove:
valore È il valore di riqualifica per l'asse delle ascisse espresso in millimetri o pollici.
La variabile UPA è di tipo non volatile, il suo valore cioè permane anche dopo lo
spegnimento del controllo.
Sintassi
UPO = valore
dove:
valore È il valore di riqualifica per l'asse delle ordinate espresso in millimetri o pollici.
La variabile UPO è di tipo non volatile, il suo valore cioè permane anche dopo lo
spegnimento del controllo.
45004616J 151
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Deriva termica
In questo caso si usa un cubo di riqualifica posizionato sulla macchina ad una quota precisa conosciuta.
Programma principale:
.
.
.
N99 E33=-300
.
.
.
/N100 (CLS,TEST3)
Sottoprogramma TEST3:
N500 (DIS,"RQO-DT")
N501 G72 Y(E33) E32 ;Distanza misurata memorizzata in E32
N502 E32=E32-E33
N503 (RQO,1,Y(E32)) ;Riqualifica l'origine 1 per l'asse Y
N504 (RQO,2,Y(E32)) ;Riqualifica l'origine 2 per l'asse Y
N505 (RQO,3,Y(E32)) ;Riqualifica l'origine 3 per l'asse Y
45004616J 152
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sottoprogramma TEST4:
N500 G72 Y(E34) E30
N501 E31=E30-E34
N502 (RQO,E10,Y(E31)) ;riqualifica l'origine 2 per l'asse Y
Esempio:
N200 (DIS,"RIQUALIFICA ORIGINI ASSI X E Y")
N201 T11.11 M6
N202 GX180 Y60
N203 Z-130
N204 G73 r50 E35 ; Ciclo di misura su foro di diametro 100. Le coordinate X ed
; Y vengono memorizzate nei parametri E35 ed E 36
N205 E35=E35-180
N206 E36=E36-60
N207 (RQO,1,X(E35),Y(E36)) ;Riqualifica l'origine 1 per X (E35) ed Y (E36)
Nel programma seguente il controllo rileva lo scostamento tra il diametro effettivo del foro e quello
teorico e confronta questo valore con le tolleranze ammesse. Il confronto ha tre esiti possibili, ad
ognuno dei quali corrisponde un'azione di risposta:
il diametro del foro è entro le tolleranze consentite: l’esecuzione del programma continua.
il diametro del foro è superiore alle tolleranze consentite: l'utensile T13 viene dichiarato fuori
uso (etichetta A3). Il programma si arresta (M00) ed il pezzo viene scartato.
il diametro del foro è inferiore alle tolleranze consentite: l'utensile T13 viene dichiarato fuori
uso (etichetta A4). Il programma effettua un salto all'etichetta A1, dove il ciclo di alesatura del
foro è ripetuto usando l'utensile alternativo.
45004616J 153
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio:
Il seguente è un esempio di verifica di un diametro.
45004616J 154
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
8.7.4 Verifica delle quote dei piani e delle profondità dei fori
È possibile utilizzare un tastatore per verificare le quote dei piani e le profondità dei fori. Con una
programmazione appropriata si possono confrontare i valori rilevati con i valori ammessi e decidere se
continuare la lavorazione o effettuare un salto ad un blocco contenente una etichetta.
Nel seguente esempio di programmazione, il controllo rileva lo scostamento tra le quote effettive e
quelle teoriche e confronta questo valore con le tolleranze consentite. Il confronto ha tre risultati
possibili:
La lavorazione continua
La lavorazione si arresta e il pezzo viene scartato a causa della quota troppo lunga
L'utensile viene riqualificato e il programma viene ripetuto dall'etichetta C1 perché la quota è
troppo corta.
Esempio:
Il seguente è un esempio di verifica delle quote di un piano
Dimensioni richieste, rispetto allo 0 sull'asse Z: -80 ± 0.1
Programma:
.
.
.
"C1" N252
N253 (DIS," . . .")
N254 F. . S. . T23.23 M6
.
.
.
N267 (DIS,"VERIFICA PIANO QUOTA - 80")
N268 T30.30 M6 ;Tastatore sul mandrino
N269 GX150 Y35 ;Posizionamento XY sul punto da verificare
N270 G72 Z-80 E30 ;Misura della distanza e memorizzazione in E30
N271 (GTO,C2,E30 < -80.1) ;Salta a C2 se E30 < quota minima
N272 (GTO,C3,E30 > -79.9) ;Salta a C3 se E30 > quota massima
N273 (DIS,"PEZZO IN TOLLERANZA")
.
.
.
N2100 M30
"C2" N2101 (DIS,E30) ;Quota troppo lunga
N2102 M00
"C3" N2103 (DIS,E30) ;Quota troppo corta
N2104 E31=-80-E30 ;Differenza tra quota teorica e misurata
N2105 (RQT,23,23,LE31) ;Riqualifica correttore 23 in lunghezza (Z)
N2106 (GTO,C1)
45004616J 155
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 1:
Il seguente è un esempio di riqualifica dei correttori di lunghezza dell'utensile.
N170 G X100 Y100 ;Posizionamento sul punto di misurazione (posizione del tastatore)
N180 G74 Z-50 E30 ;Misura scostamento e valore memorizzato in E30
N190 (RQT,10,1,LE30) ;Riqualifica del correttore 1 dell'utensile 10 in lunghezza (Z) del valore E30
Esempio 2:
Il seguente è un esempio di riqualifica del correttore lunghezza e diametro dell'utensile.
N200 G X100 Y100 ;Posizionamento sul punto di misura (posizione del tastatore)
N210 G74 Z-50 E30 ;Misura scostamento (asse Z) e valore memorizzato in E30
N220 G X150
N230 Z-60
N240 G74 X130 E31 ;Misura scostamento (asse X) e valore memorizzato in E31
N250 E31=E31*2
N260 (RQT,10,1,LE30,dE31) ; Riqualifica il correttore 1 dell'utensile 10 in lunghezza (Z) del
; valore in E30 e in diametro (d) del valore in E31.
Esempio 3:
Il seguente è un esempio di verifica integrità utensile utilizzando la gestione dell'errore in tastatura (vedi
APPENDICE A: GESTIONE ERRORI DA PART PROGRAM).
C).
N480 (DIS,"UTENSILE D=10")
N490 T10.10M6
.....
.....
N600 (DPP,10,5,500)
N610 (UAO,9)
N620 GXY
N630 ERR=1 ;Errore gestito da programma
N640 G74 Z0 E35 ;misura lunghezza utensile
N650 (GTO,A2,STE=1) ;salta ad A2 se l'utensile è rotto (la tastatura non è avvenuta
;nella quota di sicurezza di 5 mm)
N660 ERR=0 ;errore gestito da sistema
.....
.....
N1500 M30
"A2" N2001 (TOU,10) ;dichiara fuori uso l'utensile 10
N2002 (DIS,"TOOL K.O.")
N2003 M0
45004616J 156
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
9.1 Generalità
Questo capitolo descrive i comandi che permettono di definire e richiamare cicli speciali all’interno di
un part-program.
Questi cicli vengono solitamente utilizzati nei sistemi di tornitura; la tabella seguente mostra i differenti
tipi di ciclo e il triletterale a loro associato.
Tutti i cicli di sgrossatura e il ciclo di finitura richiedo la definizione del profilo da sgrossare, questo
profilo è descritto in un part program dedicato.
45004616J 157
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Nel caso non vengano rispettate le regole succitate non è garantita la buona interpretazione del profilo
descritto.
Esempio:
Il programma seguente descrive un profilo di sgrossatura NON valido, poiché contiene un triletterale.
N1 G1X0Z0
N2 X10
N3 Z-50
(UAO, 1)
N4 X20Z-60
G1Z0X30
Z-15
Z-21.89647 X53.89007
G3 Z-24.96913 X59.54982 I-36.30806 J49.73002
G1 Z-54.61563 X93.78267
G3 Z-68.22330 X100 I-68.22330 J82
G1 Z-76
X140
45004616J 158
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
prof nome del part program che contiene il profilo. Questo parametro può essere una
stringa alfanumerica (eventualmente racchiusa tra doppi apici) che contiene il
nome e il percorso del file che deve essere aperto. È anche possibile specificare il
nome del file in modo indiretto tramite una variabile di tipo stringa. In questo caso
non è permesso utilizzare i doppi apici e il nome della variabile deve essere
preceduto dal simbolo ?
asse indica il nome dell’asse ascissa o ordinata lungo il quale eseguire le passate di
sgrossatura o lungo il quale lasciare il sovrametallo programmato
numpass indica il numero di passate di sgrossatura. È un numero intero compreso tra 1 e
255 e può essere espresso direttamente con un numero intero o indirettamente
utilizzando una variabile locale o di sistema.
ax1
ax2 nome dell’asse (ascissa o ordinata del piano di interpolazione) sul quale lasciare il
sovrametallo.
sovram1
sovram2 valore del sovrametallo che verrà lasciato sull’asse corrispondente. È un valore
reale positivo che può essere programmato direttamente con un numero o
indirettamente utilizzando una variabile locale o di sistema
Caratteristiche:
In base al punto di attacco e alla direzione del profilo, il controllo stabilisce quale sia il segno corretto
da applicare al sovrametallo.
Il punto di attacco deve essere esterno al campo di sgrossatura di un valore almeno pari al valore
programmato di sovrametallo.
Nel caso in cui il profilo contenga delle cavità, queste vengono automaticamente sorvolate durante
l’esecuzione del ciclo di sgrossatura.
Il profilo deve essere monotono per l’asse di sgrossatura, in caso contrario il controllo
segnala errore
Il profilo può contenere delle cavità, ma, l’andamento delle quote lungo l’asse di
sgrossatura deve essere sempre monotono (crescente o decrescente).
45004616J 159
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Per determinare quale debba essere la relazione tra direzione di sviluppo del profilo e punto di attacco
fare riferimento al seguente schema:
X+
direzione di sviluppo direzione di sviluppo
profilo SPA, Z Punto di attacco SPA, Z
profilo
1 passata 1 passata
SPA, X SPA, X
1 passata 1 passata
SPA, X SPA, X
1 passata 1 passata
Punto di attacco
1 passata 1 passata direzione di sviluppo
direzione di sviluppo
profilo SPA, Z SPA, Z profilo
X-
X X
Direzione profilo
Direzione profilo
Z Z
X X
Direzione ciclo
Direzione profilo
Direzione profilo
Direzione ciclo
Z Z
La direzione di sviluppo del profilo deve essere definita considerando quale sia la direzione
assunta dall’utensile per effettuare il ciclo di sgrossatura.
45004616J 160
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 1:
……
Direzione di incremento delle passate
X ……
……
T1.1M6 S1000 F2000
G16ZX
G0 X143 Z1.5
(SPA, PROF1, X, 12, X1, Z1)
……
……
……
PROF1:
G1 Z-76 X140 ; P1
Direzione di sviluppo X100 ; P2
del profilo Z-64.82309 ; P3
G2 Z-55.82309 X95.17692 I-64.82309 J64 ;P4
G1 Z-26.29165 X61.07696 ; P5
Direzione del ciclo G2 Z-20.80127 X50.0962 I-33.79165 J35.09618 ; P6
G1 Z-15 X30 ; P7
Z0 ; P8
45004616J 161
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 2:
……
X ……
……
T2.3 M6 S1500 F2500
Direzione di
G16ZX
incremento G0 X143 Z1.5
delle passate (SPA, PROF2, Z, 9, X1, Z1)
……
……
……
PROF2
Direzione di sviluppo del
G1X30Z0 ; P1
profilo
Z-15X30 ; P2
Z-20.80127 X50.09619 ; P3
G3 Z-26.29165 X61.07696 I-33.79165 J35.09618 ; P4
Direzione del ciclo
G1 Z-55.82309 X95.17692 ; P5
G3 Z-64.82309 X100 I-64.82309 J64 ; P6
G1 Z-75 ; P7
Z X140 ; P8
45004616J 162
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
prof nome del part program che contiene il profilo. Questo parametro può essere una
stringa alfanumerica (eventualmente racchiusa tra doppi apici) che contiene il
nome e il percorso del file che deve essere aperto. È anche possibile specificare il
nome del file in modo indiretto tramite una variabile di tipo stringa. In questo caso
non è permesso utilizzare i doppi apici e il nome della variabile deve essere
preceduto dal simbolo ?
asse indica il nome dell’asse ascissa o ordinata lungo il quale eseguire le passate di
sgrossatura o lungo il quale lasciare il sovrametallo programmato
numpass indica il numero di passate di sgrossatura. È un numero intero compreso tra 1 e
255 e può essere espresso direttamente con un numero intero o indirettamente
utilizzando una variabile locale o di sistema.
ax1
ax2 nome dell’asse (ascissa o ordinata del piano di interpolazione) sul quale lasciare il
sovrametallo.
sovram1
sovram2 valore del sovrametallo che verrà lasciato sull’asse corrispondente. È un valore
reale positivo che può essere programmato direttamente con un numero o
indirettamente utilizzando una variabile locale o di sistema
Caratteristiche:
In base al punto di attacco e alla direzione del profilo, il controllo stabilisce quale sia il segno corretto
da applicare al sovrametallo.
Il punto di attacco deve essere esterno al campo di sgrossatura di un valore almeno pari al valore
programmato di sovrametallo.
Nel caso in cui il profilo contenga delle cavità, queste vengono automaticamente sorvolate durante
l’esecuzione del ciclo di sgrossatura.
Per quanto riguarda la relazione tra punto di attacco, direzione del profilo e direzione del
ciclo fare riferimento al comando SPA.
Il profilo deve essere monotono per l’asse di sgrossatura, in caso contrario il controllo
segnala errore.
Se il profilo contiene delle cavità, queste vengono sgrossate in cicli di sgrossatura successivi.
45004616J 163
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio:
Il profilo descritto nell’esempio seguente contiene una cavità tra i punti P 6 e P11. Il controllo effettuerà
due cicli di sgrossatura, nel primo sorvolerà la cavità, mentre nel secondo ciclo procederà a sgrossarla.
Le due immagini mostrano il comportamento durante i due cicli di sgrossatura.
…… PROF3
…… G1 X62 Z0 ; P1
T3.5 M6 S1450 F3000 X68 Z-6 ; P2
G16ZX X68 Z-15 ; P3
G0 X90 Z2 X74 Z-15 ; P4
(SPZF, PROF3, Z, 7, X1, Z1) G3 X76 Z-17 ;P5
…… G1 X76 Z-36.41616 ;P6
…… G3 X75.02113 Z-39.50633 R10 ;P7
…… G1 X57.89620 Z-65.85888 ; P8
G2 X68.972 Z-76.05843 R8 ; P9
G1 X70.07055 Z-76.20560 ;P10
G3 X76 Z-80.06931 R4 ; P11
G1 X76 Z-92 ; P12
X86 Z-97 ;P13
45004616J 164
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
prof nome del part program che contiene il profilo. Questo parametro può essere una
stringa alfanumerica (eventualmente racchiusa tra doppi apici) che contiene il
nome e il percorso del file che deve essere aperto. È anche possibile specificare il
nome del file in modo indiretto tramite una variabile di tipo stringa. In questo caso
non è permesso utilizzare i doppi apici e il nome della variabile deve essere
preceduto dal simbolo ?
numpass indica il numero di passate di sgrossatura. È un numero intero compreso tra 2 e
255 e può essere espresso direttamente con un numero intero o indirettamente
utilizzando una variabile locale o di sistema.
ax1
ax2 nome dell’asse (ascissa o ordinata del piano di interpolazione) sul quale lasciare il
sovrametallo.
sovram1
sovram3 valore del sovrametallo che verrà lasciato sull’asse corrispondente. È un valore
reale positivo che può essere programmato direttamente con un numero o
indirettamente utilizzando una variabile locale o di sistema
sovram2
sovram4 valore del sovrametallo iniziale sull’asse corrispondente. È un valore reale positivo
che può essere programmato direttamente con un numero o indirettamente
utilizzando una variabile locale o di sistema
Caratteristiche:
I valori di sovrametallo devono essere sempre specificati anche nel caso in cui siano nulli.
Per quanto riguarda la relazione tra punto di attacco, direzione del profilo e direzione del
ciclo fare riferimento al comando SPA.
45004616J 165
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 1:
……
……
T1.3 M6 S1450 F3000
G16ZX
G0 X143 Z2
(SPP, PROF2, 4, Z, 1, 10, X, 1, 10)
……
Esempio 2
……
……
T2.5 M6 S2500 F3000
G16ZX
G0 X84 Z3
(SPP, PROF5, 4, X, 0, 10, Z, 0, 0)
……
……
PROF5
G1Z0X60 ; P1
Z-25.85786 X60 ; P2
G3 Z-32.92893 X57.07107 R10 ; P3
G1 Z-47.07107 X 42.92893 ; P4
G2 Z-54.14214 X40 R10 ; P5
G1 Z-65.85786 X40 ; P6
G2 Z-72.92893 X42.92893 R10 ; P7
G1 Z-87.07107 X57.07107 ;P8
G3 Z-94.14214 X60 R10 ;P9
G1 Z-110 X60 ;P10
45004616J 166
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
(CLP, prof)
dove:
prof nome del part program che contiene il profilo. Questo parametro può essere una
stringa alfanumerica (eventualmente racchiusa tra doppi apici) che contiene il
nome e il percorso del file che deve essere aperto. È anche possibile specificare il
nome del file in modo indiretto tramite una variabile di tipo stringa. In questo caso
non è permesso utilizzare i doppi apici e il nome della variabile deve essere
preceduto dal simbolo ?
Caratteristiche:
Durante l’esecuzione del macrociclo di finitura di un profilo vengono attivate eventuali funzioni di tipo F
(funzioni di dinamica) eventualmente associate ai blocchi del profilo stesso.
45004616J 167
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
(FIL, ax1 pos1, [ax2 pos2,] passo, numPas [,F valF] [,R valR] [,G valG] [,P valP] [,M valM] [,T valT [,r
valr]] [,H valH [,a vala] [,b valb]])
dove:
ax1 pos1 nome dell’asse ascissa o ordinata e quota finale per l’asse indicato. La quota finale può
essere definita direttamente con un numero reale o indirettamente usando una
variabile locale o di sistema.
ax2 pos2 nome dell’asse ascissa o ordinata e quota finale per l’asse indicato. La quota finale può
essere definita direttamente con un numero reale o indirettamente usando una
variabile locale o di sistema. Si tratta di un parametro utilizzato nelle filettature
coniche.
passo valore del passo di filettatura. È un valore di tipo reale che può essere definito
direttamente con un numero reale o indirettamente usando una variabile locale o di
sistema.
numPas numero di passate di filettatura. È un numero intero compreso tra 1 e 255. Può essere
definito direttamente con un numero intero o indirettamente usando una variabile
locale o di sistema.
F valF numero di passate di lucidatura. È un parametro intero compreso tra 0 e 255. Può
essere definito direttamente con un numero intero o indirettamente usando una
variabile locale o di sistema. È un parametro opzionale, il suo valore di default è 0
(nessuna passata di lucidatura).
R valR Distanza dell’utensile dal pezzo nel ritorno. È un valore reale che può essere definito
direttamente con un numero reale o indirettamente usando una variabile locale o di
sistema. È un parametro opzionale, il suo valore di default è 1mm (o pollice a seconda
dell’unità di misura attiva).
G valG parametro che indica se si desidera eseguire una filettatura interna (1) o esterna (0).
Può essere programmato direttamente con un numero intero o indirettamente usando
una variabile locale o di sistema. È un parametro opzionale, il suo valore di default è 0
(filettatura esterna).
P valP numero di principi della filettatura. È un parametro intero compreso tra 1 e 255. Può
essere definito direttamente con un numero intero o indirettamente usando una
variabile locale o di sistema. È un parametro opzionale, il suo valore di default è 1.
M valM parametro che specifica la modalità di entrata: vale 0 per una sgrossatura a un angolo
(fianco) e 1 per una sgrossatura a due angoli (zig-zag). Può essere programmato
direttamente con un numero intero o indirettamente usando una variabile locale o di
sistema. È un parametro opzionale, il suo valore di default è 0 (sgrossatura a 1 angolo).
T valT parametro che specifica la modalità di uscita. Esistono tre possibili modalità di uscita:
filettatura con gola finale (0), filettatura senza gola finale (con strappo) (1) e uscita
con interpolazione circolare (raccordo) (2). Può essere programmato direttamente con
un numero intero o indirettamente usando una variabile locale o di sistema. È un
parametro opzionale, il suo valore di default è 0 (filettatura con gola finale).
H valh Tipo di filettatura: sono supportati tre tipi di filettatura: filettatura metrica (0),
filettatura whitworth (1) e filettatura non standard (2). Nel caso di filettatura non
45004616J 168
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Caratteristiche:
Il ciclo di filettatura non può essere eseguito nella modalità dinamica G28.
Nel caso sia stato scelto un tipo di filettatura non standard (H = 2) il valore del passo deve soddisfare la
disuguaglianza seguente:
𝑣𝑎𝑙𝑎
𝑃𝑎𝑠𝑠𝑜 > 2 ∗ 𝑣𝑎𝑙𝑏 ∗ 𝑡𝑎𝑛 ( ) ∗ 𝑣𝑎𝑙𝑝
2
I posizionamenti sono calcolati scivolando lungo il fianco del filetto in modo che le passate avvengano a
sezione di truciolo costante.
Nel caso di filettature a più principi, il passo da definire è quello della singola spira. Il sistema esegue
ogni passata su tutti i principi prima di passare all’esecuzione delle passate successive. L’esecuzione dei
vari principi è realizzata introducendo uno sfasamento rispetto alla posizione angolare zero del mandrino
invece che spostando il punto di partenza delle filettature.
Nel caso di filettature con gola finale è necessario programmare la posizione finale teorica, poiché il
ciclo fisso prevede una maggiorazione della corsa pari a metà del passo.
I parametri a (angolo del filetto) e b (profondità del filetto) sono richiesti solo nel caso di filettature non
standard.
(a)
Angolo
(b) Profondità
45004616J 169
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Nel caso di filettature a strappo, l’utensile raggiunge la quota programmata e poi esce filettando conico
sul diametro di ritorno.
Sempre nel caso di filettature a strappo non è consigliato lavorare in modalità SEMIAUTO poiché si
otterrebbe una gola finale e non lo strappo.
Nel caso di filettatura conica, la massima conicità ammessa è uguale a ½ dell’angolo del filetto.
Filettatura ad un angolo
Punto di taglio
ciclo 1
ciclo 2
ciclo 3
ciclo “n”
ciclo 1
ciclo 2
ciclo 3
ciclo “n”
45004616J 170
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio:
N35 T5.5 M6
N36 G0 G97 X24 Z37 S250 M3 M8
N37 (FIL, Z4, 2, 5, F1, R2)
N38 G0 X250 Z215
45004616J 171
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
(TGL, ax1 pos1, ax2 pos2, toolDim, [ ext, BR1 dim1, BR2 dim2] )
dove:
ax1 pos1 nome dell’asse ascissa o ordinata e quota finale della gola. La gola realizzata sarà
parallela a questo asse. La quota finale può essere definita direttamente con un
numero reale o indirettamente usando una variabile locale o di sistema.
ax2 pos2 nome dell’asse ascissa o ordinata e quota finale (interna) della gola. La quota
finale può essere definita direttamente con un numero reale o indirettamente
usando una variabile locale o di sistema.
toolDim larghezza dell’utensile. Può essere definita direttamente con un numero reale o
indirettamente usando una variabile locale o di sistema.
ext quota dell’asse ortogonale alla gola di inizio del raccordo / smusso esterno.
BR1 Parametro che permette di richiedere un raccordo o smusso all’esterno della gola.
I valori accettati sono B per richiedere uno smusso e R per richiedere un raccordo.
dim1 dimensione del raccordo / smusso all’esterno della gola. Può essere definita
direttamente con un numero reale o indirettamente usando una variabile locale o
di sistema.
BR2 Parametro che permette di richiedere un raccordo o smusso sul fondo della gola. I
valori accettati sono B per richiedere uno smusso e R per richiedere un raccordo.
dim2 dimensione del raccordo / smusso sul fondo della della gola. Può essere definita
direttamente con un numero reale o indirettamente usando una variabile locale o
di sistema.
Caratteristiche:
Il comando TGL deve essere preceduto da un blocco di movimento in G0/G1/G10 per portare l’utensile
sul punto di inizio ciclo.
Il sistema forza automaticamente una sosta alla fine del ciclo. Il tempo di sosta è definito dalla variabile
DWT. Se non si vuole effettuare la sosta è necessario assegnare il valore 0 alla variabile DWT prima di
eseguire il taglio gola.
Alla fine del ciclo di taglio gola l’utensile ritorna sul punto di inizio ciclo programmato sul blocco
precedente il comando di taglio gola.
45004616J 172
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 1:
Esempio 2:
N1 T1.1 M6
N2 G X20 Z5
N3 DWT=2
N4 (TGL,X50,Z-5,5)
45004616J 173
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 3:
45004616J 174
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
10.1 Generalità
Questo capitolo descrive i comandi che consentono di inviare e ricevere informazioni attraverso un part
program. Questi comandi permettono di accedere a:
Video grafico
File binari e ASCII
Porte seriali
Informazioni generiche
COMANDO FUNZIONE
GDT Legge il valore di data e ora correnti del controllo
45004616J 175
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
operando Può essere un numero, una variabile o una stringa ASCII. Possono essere
visualizzati fino a cinque operandi che nell'insieme non possono eccedere i 100
caratteri.
Se operando è un numero, può assumere i valori tipici delle variabili (formato 5,5).
Se operando è una variabile, può essere qualsiasi variabile utilizzata nei blocchi di
assegnazione.
Se operando è una stringa ASCII, può essere un messaggio per l'operatore. Il
messaggio può avere fino a 100 caratteri ASCII. Nel comando DIS il testo del
messaggio deve essere scritto tra doppi apici (" ")
Esempi:
(DIS,100) visualizza il valore 100
(DIS,E27) visualizza il valore corrente di E27
(DIS,MSA) visualizza il valore corrente di MSA (valore sovrametallo)
(DIS,"QUESTO E' UN ESEMPIO") visualizza la stringa QUESTO E' UN ESEMPIO.
Sintassi
(DER,operando)
dove:
operando Può essere un numero o una variabile.
Se operando è un numero, può assumere i valori tipici delle variabili (formato 5,5).
Se operando è una variabile, può essere qualsiasi variabile utilizzata nei blocchi di
assegnazione.
Esempi:
(DER,100) sospende il programma con la generazione di un errore di codice
100.
(DIS,E27) sospende il programma con la generazione di un errore di codice
pari al valore corrente di E27.
45004616J 176
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
(DEW,operando)
dove:
operando Può essere un numero o una variabile.
Se operando è un numero, può assumere i valori tipici delle variabili (formato 5,5).
Se operando è una variabile, può essere qualsiasi variabile utilizzata nei blocchi di
assegnazione.
Esempi:
(DEW,100) visualizza l’avvertimento di codice 100.
(DEW,E27) visualizza l’avvertimento avente codice valore pari al valore
corrente di E27
45004616J 177
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
(DIF, difId, iniR, iniC, iniFldR, iniFldC, passo, numEle [, bgkCol, labCol, fldCol])
dove:
difId Identificativo del set di configurazione di una finestra di input. Possono essere definite
fino a 10 strutture identificabili con i numeri da 1 a 10. L’identificativo 0 corrisponde al
default e non è modificabile.
iniR È la posizione verticale di inizio della finestra di input. Il valore ammesso è compreso tra
0 e 63 e può essere specificato direttamente tramite un numero intero o tramite una
variabile.
iniC È la posizione orizzontale di inizio della finestra di input. Il valore ammesso è compreso
tra 0 e 255 e può essere specificato direttamente tramite un numero intero o tramite
una variabile.
iniFldR È la riga della finestra di input in cui verrà posizionata l’etichetta del primo campo
programmato con INP.
Il valore ammesso è compreso tra 0 e 63 e può essere specificato direttamente tramite un numero intero
o tramite una variabile.
iniFldC È la colonna della finestra di input in cui verrà posizionata l’etichetta del primo campo
programmato con INP.
Il valore ammesso è compreso tra 0 e 255 e può essere specificato direttamente tramite un numero
intero o tramite una variabile.
passo È il numero di righe vuote tra una riga di dati e la successiva. Il valore ammesso è
compreso tra 0 e 63 e può essere specificato direttamente tramite un numero intero o
indirettamente tramite una variabile. Il valore di passo deve tenere conto dello spazio
disponibile nella finestra e della quantità di dati da visualizzare. Il valore 0 corrisponde a
non lasciare alcuna riga vuota.
Se la finestra visualizzata contiene una solo riga di dati il valore di passo viene utilizzato per definire la
posizione inferiore della zona di input.
numEle È il numero di campi di input che devono essere visualizzati affiancati sulla stessa riga. Il
numero di elementi è compreso tra 1 e 4 e può essere specificato direttamente tramite
un numero intero o indirettamente tramite una variabile.
bgkCol Definisce il colore dello sfondo della finestra di input. L'introduzione di questo dato è
opzionale. Il tipo di colore può venire specificato tramite un codice numerico compreso
tra 0 e 15; la corrispondenza tra codice e colore viene definita dalla tabella di
corrispondenze fornita più avanti; il colore può anche essere definito direttamente
tramite il suo codice RGB, in questo caso il numero corrispondente deve essere
preceduto dal carattere #. Il parametro può essere specificato direttamente tramite un
numero (nel caso di codice RGB il numero può essere espresso anche numero
esadecimale nella forma 0xnnnnnn) o indirettamente tramite una variabile. Se questo
parametro non è stato specificato viene utilizzato il colore di default che è il blu.
labCol Definisce il colore dello dell’etichetta dei campi della finestra di input. L'introduzione di
questo dato è opzionale. Il tipo di colore può venire specificato tramite un codice
numerico compreso tra 0 e 15; la corrispondenza tra codice e colore viene definita dalla
45004616J 178
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
tabella di corrispondenze fornita più avanti; il colore può anche essere definito
direttamente tramite il suo codice RGB, in questo caso il numero corrispondente deve
essere preceduto dal carattere #. Il parametro può essere specificato direttamente
tramite un numero (nel caso di codice RGB il numero può essere espresso anche numero
esadecimale nella forma 0xnnnnnn) o indirettamente tramite una variabile. Se questo
parametro non è stato specificato viene utilizzato il colore di default che è il bianco.
fldCol Definisce il colore dello utilizzato nei campi della finestra di input. L'introduzione di
questo dato è opzionale. Il tipo di colore può venire specificato tramite un codice
numerico compreso tra 0 e 15; la corrispondenza tra codice e colore viene definita dalla
tabella di corrispondenze fornita più avanti; il colore può anche essere definito
direttamente tramite il suo codice RGB, in questo caso il numero corrispondente deve
essere preceduto dal carattere #. Il parametro può essere specificato direttamente
tramite un numero (nel caso di codice RGB il numero può essere espresso anche numero
esadecimale nella forma 0xnnnnnn) o indirettamente tramite una variabile. Se questo
parametro non è stato specificato viene utilizzato il colore di default che è il bianco.
Caratteristiche
La tabella delle corrispondenze tra codice numerico e colore utilizzata per i parametri bgkCol, labCol e
fldCol è la seguente:
0 Nero
1 Blu
2 Verde
3 Ciano
4 Rosso
5 Magenta
6 Marrone
7 Grigio chiaro
8 Grigio
9 Blu chiaro
10 Verde chiaro
11 Ciano chiaro
12 Rosso chiaro
13 Magenta chiaro
14 Giallo
15 Bianco
I set di configurazione della finestra di input vengono mantenuti in memoria anche dopo l’esecuzione di
un reset di sistema.
L’identificativo 0 corrisponde al set di configurazione di default che corrisponde ai seguenti parametri:
iniR =0
iniC =0
iniFldR =1
iniFldC =1
passo =1
bgkCol =1
labCol = 15
fldCol = 15
Il comando DIF corrispondente a una configurazione di questo tipo sarebbe:
(DIF, 1, 0, 0, 1, 1, 1, 1, 1, 15, 15)
Dove gli ultimi tre parametri non sono necessari.
45004616J 179
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
difId identifica la configurazione della finestra di input che si desidera utilizzare. È un numero
compreso tra 0 e 10 che può essere specificato direttamente tramite un numero intero o
indirettamente tramite una variabile. Il valore 0 corrisponde alla configurazione di
default.
Se il parametro non viene specificato il controllo utilizza la configurazione di default.
titolo è il titolo che verrà associato alla finestra di input. Può essere specificato direttamente
tramite una stringa di caratteri racchiusa tra apici singoli o doppi, oppure tramite una
variabile.
label1 - 8 è il contenuto dell’etichetta che descrive il campo che l’utente deve compilare. Può
essere specificato direttamente tramite una stringa di caratteri racchiusa tra apici singoli
o doppi, oppure indirettamente tramite una variabile.
La lunghezza della stringa non può eccedere il valore del parametro lenLab
corrispondente.
lenLab1 - 8 specifica la lunghezza del campo etichetta.Questo campo permette all’utilizzatore di
allineare sulla stessa colonna più campi di input, indipendentemente dalla lunghezza
effettiva della stringa di etichetta. Può essere specificato direttamente tramite una
stringa racchiusa tra apici singoli o doppi, oppure indirettamente tramite una variabile.
La dimensione di un campo label non può eccedere il valore del parametro lenLab
corrispondente.
var1 - 8 è una variabile il cui valore corrente sarà visualizzato nella finestra di input e che sarà
aggiornata con i dati introdotti dall’utente
Caratteristiche:
Dopo l’esecuzione del triletterale INP il controllo passa in stato di INPUT. L’uscita dallo stato di INPUT
avviene dopo aver ricevuto i valori richiesti all’utente.
I valori visualizzati nel campo riservato all’utente corrispondono ai valori correnti delle variabili di
destinazione.
L’uscita dallo stato di INPUT avviene chiudendo la finestra di input apparsa a seguito dell’esecuzione del
triletterale INP.
È possibile chiudere la finestra cliccando sui bottoni OK e cancel, cliccando sulla croce della finestra
45004616J 180
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
oppure con la pressione dei tasti: Invio, ESC, Home, End, PageUp, PageDown.
La pressione del tasto Invio corrisponde alla pressione del tasto OK.
La pressione de tasto ESC corrisponde alla pressione del tasto Cancel
Nel caso di pressione del bottone cancel o della croce i valori della variabili di destinazione non vengono
aggiornati e la variabile STE assume il valore 20.
Eventuali errori di formato nell’assegnazione di variabili di sistema possono essere gestiti da part
program ponendo la variabile ERR a 1 verificando che il valore della variabile STE sia 21.
Esempio 1:
E1 = 1000; valore feed
(INP,'VALORE FEED',15,E1)
Con i comandi riportati sopra si otterrà una finestra di input con le caratteristiche (dimensioni e colori)
di default del comando DIF che conterrà il commento "VALORE FEED" seguito da uno spazio di 4 caratteri
(lunghezza 15 meno la lunghezza effettiva del commento) e dal valore corrente della variabile E1 (nel
nostro caso 1000). Detto valore può quindi essere modificato con nuovi dati introdotti da tastiera e
validato tramite la pressione del bottone OK.
Esempio 2:
(INP,T'PROVA INPUT','CAMPO 1',20,SC0.20)
Questo comando visualizza una finestra di input intitolata "PROVA INPUT" con un campo di 20 caratteri
che visualizzerà il contenuto della variabile SC0.20 preceduto dal commento "CAMPO 1".
Esempio 3:
(INP,N1,'CAMPO 1',20,SC0.20,"CAMPO 2", 20, E3,'CAMPO 3',20,@PLUS)
Questa istruzione visualizzerà una finestra di input (con caratteristiche definite nel comando DIF 1),
senza titolo, con i contenuti delle variabili SC0.20, E3 e @PLUS, preceduti rispettivamente dai commenti
"CAMPO 1", "CAMPO 2" e "CAMPO 3".
45004616J 181
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
canale numero intero compreso tra 1 e 8 che viene associato al file in apertura. Può
essere espresso direttamente con un numero intero o indirettamente utilizzando
una variabile locale o di sistema.
nomefile nome del file che sarà associato al canale specificato. Questo parametro può
essere una stringa alfanumerica (eventualmente racchiusa tra doppi apici) che
contiene il nome e il percorso del file che deve essere aperto. È anche possibile
specificare il nome del file in modo indiretto tramite una variabile di tipo stringa.
In questo caso non è permesso utilizzare i doppi apici e il nome della variabile
deve essere preceduto dal simbolo ?. Nel caso di apertura del file in scrittura è
necessario specificare in nomefile anche un path logico per accedere al file
tipoFile tipo del file che verrà aperto. È un parametro di tipo carattere e vale:
A per i file di testo (ASCII)
B per i file di tipo binario
La scelta del tipo file influisce sullo svolgimento delle operazioni di scrittura e
lettura del file. Se questo parametro non è specificato si considera che il file sia di
tipo ASCII.
modo indica la modalità di apertura del file. Sono disponibili tre modalità, indicate da un
carattere:
R Apertura del file in lettura, il file deve esistere
W Apertura del file in scrittura, se il file se non esiste viene creato. In realtà
si tratta di un append
A Apertura del file in scrittura, aggiungendo i nuovi dati in coda
Caratteristiche:
Il numero massimo di file (e quindi di canali) che possono essere aperti contemporaneamente da un
processo è 8.
Se non è stato specificato il tipo di file il controllo assume che il file sia di tipo ASCII.
Se il comando prevede l’apertura del file in lettura questo dovrà essere esistente. Se invece il file è
stato aperto in scrittura (o append) non è necessario che sia esistente: in questo caso esso verrrà creato
dal controllo.
Alcuni errori generati dal comando OPN possono essere gestiti automaticamente oppure da part
program. La scelta tra questi due modi viene effettuata settando opportunamente la variabile ERR.
Per maggiori informazioni sulla gestione da part program degli errori, consultare l'APPENDICE A:
GESTIONE ERRORI DA PART PROGRAM.
45004616J 182
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 1:
(OPN, 1, PROGRAM\PROVA, A, W)
Apre in scrittura il file ASCII PROVA situato nella directory logica PROGRAM e lo associa al canale 1
Esempio 2:
E1 = 3
SC0.8 = “DATIIN”
(OPN, E1, ?SC0.8, B, R)
Apre in lettura il file binario DATIN situato in una delle directory visibili al part program e lo
associa al canale 3
Esempio 3:
(OPN, 8, “TEST”, R)
Apre in lettura il file ASCII situato in una delle directory visibili al part program e lo associa al
canale 8
45004616J 183
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
canale numero intero compreso tra 1 e 8 che viene associato al file in apertura. Può essere
espresso direttamente o indirettamente utilizzando una variabile locale o di sistema.
R valore numero del record sul quale effettuare la scrittura. Questo parametro è valido e accettato
soltanto nel caso in cui il file in scrittura sia di tipo binario.
valore elenco delle variabili o delle costanti stringa che devono essere scritte nel file. Il numero
massimo di valori che possono essere scritti è 32.
Se il file sul quale si sta scrivendo è un file ASCII il comando accetta una sola variabile di
tipo carattere – stringa. Non ci sono limitazioni per quanto riguarda le stringhe costanti.
Per quanto riguarda i file di tipo binario tutte le scritture devono ricalcare la stessa
struttura della prima scrittura (tutti i record devono essere uguali al primo record scritto).
È possibile specificare un intervallo di variabili che devono essere scritte (es. E0|E9 indica
le prima dieci variabili E). Questa sintassi può essere utilizzata con le variabili di tipo E, H
o L ed è la seguente:
[E|H|L]indi|[E|H|L]indf
Indi e indf sono gli indici iniziale e finale dell’intervallo, sono accettati sia intervalli
crescenti che decrescenti. La variabile iniziale e finale devono essere dello stesso tipo (E,
H o L).
Caratteristiche:
Se il file è di tipo binario e non è stato specificato il numero di record nel comando WRT, la scrittura
verrà effettuata in coda al file, cioè dopo l’ultimo record già presente nel file; se il file è vuoto ciò
corrisponde a scrivere il primo record del file.
La prima operazione di scrittura su di un file binario (cioè su di un file appena creato) identifica il tipo di
record presenti nel file. Il record scritto durante la prima scrittura rappresenta quindi il record campione
da utilizzare per le successive operazioni di lettura o scrittura: tutte le operazioni successive dovranno
essere eseguite con lo stesso numero, tipo e sequenza di variabili della prima scrittura.
Se, per esempio, la prima scrittura è stata eseguita tramite il comando seguente:
cioè con una variabile di tipo double, quattro caratteri e una variabile di tipo short, i comandi successivi
di accesso a quel file dovranno rispettare tale successione di tipi e dimensioni.
I seguenti sono perciò comandi validi:
45004616J 184
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Comandi contenenti altri tipi o quantità di variabili o con diverse sequenze delle stesse provocherebbero
un errore di esecuzione.
Se il file è di tipo ASCII, la scrittura avverrà sempre dopo l’ultimo record del file. Se di desidera quindi
modificare i record di un file ASCII è quindi necessario aprire il file in lettura e, leggendolo
sequenzialmente, scrivere i record letti, eventualmente modificati, in un nuovo file diverso da quello
originale.
Le modifiche effettuate tramite il comando WRT vengono apportate al file “fisico” dopo la chiusura del
canale corrispondente. Se si desidera leggere un file appena scritto è necessario chiudere il canale
corrispondente usando il comando CLO e quindi riaprirlo in lettura.
Alcuni errori generati dal comando WRT possono essere gestiti automaticamente oppure da part
program. La scelta tra questi due modi viene effettuata settando opportunamente la variabile ERR.
Per maggiori informazioni sulla gestione da part program degli errori, consultare l'APPENDICE A:
GESTIONE ERRORI DA PART PROGRAM.
Esempio 1:
(WRT, 1, SC5.80)
Scrive nel file associato al canale 1 80 caratteri prelevandoli dalla variabile SC5
Esempio 2:
(WRT, 3, R12, E7, E8, E9)
Scrive nel record 12 del file binario associato al canale 3 prelevando i dati dalle variabili E7, E8 ed
E8. Il puntatore al file si posiziona all’inizio del record 13.
45004616J 185
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
canale numero intero compreso tra 1 e 8 che identifica il file che deve essere letto. Può essere
espresso direttamente o indirettamente utilizzando una variabile locale o di sistema.
FRB valore
FRC valore
R valore Numero del record da leggere. Questo parametro è valido e accettato soltanto nel caso
in cui il file in lettura sia di tipo binario. Se la parola chiave cui si riferisce valore è R o
FRB valore indica la posizione del record da inizio file, se invece è FRC valore indica
l’offset dalla posizione corrente
variabile elenco delle variabili o delle costanti stringa che devono essere lette dal file. Il numero
massimo di valori che possono essere letti è 32.
Per quanto riguarda i file di tipo binario tutte le letture devono disporre di parametri
variabile coerenti in numero e tipo per il tipo di record che si sta leggendo.
È possibile specificare un intervallo di variabili che devono essere lette (es. E0|E9
indica le prima dieci variabili E). Questa sintassi può essere utilizzata con le variabili di
tipo E, H o L ed è la seguente:
[E|H|L]indi|[E|H|L]indf
Indi e indf sono gli indici iniziale e finale dell’intervallo, sono accettati sia intervalli
crescenti che decrescenti. La variabile iniziale e finale devono essere dello stesso tipo
(E, H o L).
Caratteristiche:
Se il file è di tipo ASCII o di tipo binario e il comando non contiene il numero di record da leggere, allora
verrà letto il recordo successivo a quello dell’ultima operazione di lettura effettuata. Nel caso della
prima lettura verrà letto il primo record del file.
Alcuni errori generati dal comando OPN possono essere gestiti automaticamente oppure da part
program. La scelta tra questi due modi viene effettuata settando opportunamente la variabile ERR.
Per maggiori informazioni sulla gestione da part program degli errori, consultare l'APPENDICE A:
GESTIONE ERRORI DA PART PROGRAM.
45004616J 186
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 1:
(REA, 1, SC5.20)
Legge dal file associato al canale 1 20 caratteri e li pone nei premi venti caratteri della variabile SC5.
Esempio 2:
Esempio 3:
Si supponga che il record in lettura del file ASCII associato al canale 1 sia composto dai seguenti campi:
(REA, 1, E1, E2, E3) Errore di formato poiché non è possibile assegnare un campo numerico alla
variabile E3
(REA, 1, SC0.8, E1, SC10.80) SC0 = “-5.00 +3” E1 = 400 SC10 = “PLUTO”
Al termine di ogni lettura il puntatore è posizionato sul record successivo a quello appena letto, dunque
per l’ultimo esempio di lettura i campi successivi a -5.00 presenti sul record vengono perduti.
45004616J 187
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
(CLO[, canale])
dove:
canale numero intero compreso tra 1 e 8 che viene associato al file in apertura. Può
essere espresso direttamente o indirettamente utilizzando una variabile locale o di
sistema. Se questo parametro non viene specificato vengono chiusi tutti i canali
associati al processo corrente.
Caratteristiche:
Se non è stato specificato il numero di canale questo comando chiude tutti file aperti dal processo.
Il RESET di sistema chiude tutti i file aperti, è quindi equivalente all’esecuzione del comando CLO senza
parametri.
Alcuni errori generati dal comando CLO possono essere gestiti automaticamente oppure da part program.
La scelta tra questi due modi viene effettuata settando opportunamente la variabile ERR.
Per maggiori informazioni sulla gestione da part program degli errori, consultare l'APPENDICE A:
GESTIONE ERRORI DA PART PROGRAM.
Esempi:
(CLO, 2) Chiude il file associato al canale 2
(CLO) Chiude tutti i file aperti dal processo interessato
45004616J 188
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
(DEL, nomefile)
dove:
nomefile Questo parametro può essere una stringa alfanumerica (eventualmente racchiusa
tra doppi apici) che contiene il nome e il percorso del file che deve essere
cancellato. È anche possibile specificare il nome del file in modo indiretto tramite
una variabile di tipo stringa. In questo caso non è permesso utilizzare i doppi apici
e il nome della variabile deve essere preceduto dal simbolo ?.
Caratteristiche:
È possibile cancellare un file solamente se non sono in uso dal sistema e, nel caso di file corrispondenti a
part program, non selezionati da alcun processo. Se il file da cancellare non esiste, il comando genera un
errore di esecuzione
Alcuni errori generati dal comando DEL possono essere gestiti automaticamente oppure da part program.
La scelta tra questi due modi viene effettuata settando opportunamente la variabile ERR.
Per maggiori informazioni sulla gestione degli errori da part program, consultare l'APPENDICE A:
GESTIONE ERRORI DA PART PROGRAM.
Sintassi
dove:
nomefile1 Questo parametro può essere una stringa alfanumerica (eventualmente racchiusa tra
doppi apici) che contiene il nome e il percorso del file originale. È anche possibile
specificare il nome del file in modo indiretto tramite una variabile di tipo stringa. In
questo caso non è permesso utilizzare i doppi apici e il nome della variabile deve
essere preceduto dal simbolo ?..
nomefile2 Questo parametro può essere una stringa alfanumerica (eventualmente racchiusa tra
doppi apici) che contiene il nome e il percorso del file destinazione. È anche
possibile specificare il nome del file in modo indiretto tramite una variabile di tipo
stringa. In questo caso non è permesso utilizzare i doppi apici e il nome della
variabile deve essere preceduto dal simbolo ?.
Caratteristiche:
Alcuni errori generati dal comando CPY possono essere gestiti automaticamente oppure da part program.
La scelta tra questi due modi viene effettuata settando opportunamente la variabile ERR.
Per maggiori informazioni sulla gestione degli errori da part program, consultare l'APPENDICE A:
GESTIONE ERRORI DA PART PROGRAM.
45004616J 189
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
nomefile1 Questo parametro può essere una stringa alfanumerica (eventualmente racchiusa tra
doppi apici) che contiene il nome e il percorso del file originale. È anche possibile
specificare il nome del file in modo indiretto tramite una variabile di tipo stringa. In
questo caso non è permesso utilizzare i doppi apici e il nome della variabile deve
essere preceduto dal simbolo ?..
nomefile2 Questo parametro può essere una stringa alfanumerica (eventualmente racchiusa tra
doppi apici) che contiene il nome e il percorso del file destinazione. È anche
possibile specificare il nome del file in modo indiretto tramite una variabile di tipo
stringa. In questo caso non è permesso utilizzare i doppi apici e il nome della
variabile deve essere preceduto dal simbolo ?.
Caratteristiche:
Questo comando è equivalente a effettuare la copia del primo file verso il secondo file e in seguito
cancellare il primo file.Alcuni errori generati dal comando CPY possono essere gestiti automaticamente
oppure da part program. La scelta tra questi due modi viene effettuata settando opportunamente la
variabile ERR. Per maggiori informazioni sulla gestione da part program degli errori, consultare
l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 190
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
Dove:
numPorta numero della porta seriale che si desidera aprire. I controlli OPEN gestiscono fino a
4 linee seriali
bitStop numero di bit di stop, i valori ammessi sono 1 (un bit di stop), 15 (1bit e mezzo) e
2 (2 bit)
protocollo Protocollo utilizzato per la trasmissione, sono possibili due valori
0 nessun protocollo
1 protocollo logico (Xon, Xoff)
45004616J 191
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
numSepDataTx
numSepDataRx numero di caratteri che compongono il separatore dati in trasmissione o in
ricezione. I valori validi appartengono all’intervallo 3-0. Se il separatore di dati
vale 0 il relativo separatore non è utilizzato.
numTermMessTx
numTermMessRx numero di caratteri che compongono il terminatore messaggio in trasmissione o in
ricezione. I valori validi appartengono all’intervallo 3-0 Se il terminatore di
messaggio vale 0 il relativo terminatore non è utilizzato.
45004616J 192
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Caratteristiche:
Tutti i parametri del triletterale SOP si possono esprimere direttamente utilizzando un numero o
indirettamente tramite una variabili locale o di sistema.
Dopo l’esecuzione del comando SOP è necessario, per poter riconfigurare uno o più parametri della linea
seriale, eseguire il comando SCL per chiudere la linea e quindi un nuovo comando SOP con i parametri
aggiornati.
È possibile che i parametri di configurazione validi per una data linea seriale siano meno di quelli
effettivamente configurabili tramite il triletterale SOP. In questo caso consultare la documentazione
hardware relativa alla porta seriale che si desidera configurare.
Un processo può abilitare contemporaneamente tutte le linee seriali di cui dispone il sistema OPEN (fino
a 4).
Se il comando SOP viene eseguito senza errori, la linea seriale abilitata può essere utilizzata unicamente
dal processo che ha eseguito il comando e non può essere utilizzata da nessun altro processo.
Esempi:
45004616J 193
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando pone il processo nel quale è programmato in attesa di dati provenienti dalla linea
seriale specificata. I dati in ricezione vengono memorizzati nelle variabili secondo l’ordine di arrivo e di
programmazione (i primi dati ricevuti vengono memorizzati nelle prime variabili programmate).
Sintassi
dove:
numPorta numero della porta seriale dalla quale si desidera leggere. I valori validi vanno da
1 a 4.
Variabile Elenco delle variabili nelle quali verranno posti i dati in arrivo dalla linea seriale. È
possibile specificare fino a un massimo di 32 variabili locali o di sistema.
Caratteristiche:
La porta dalle quale si attendono i dati deve essere stata già abilitata e configurata dal processo attivo
tramite il triletterale SOP.
I dati contenuti nel messaggio di ricezione verranno salvati nelle variabili specificate nel triletterale; il
messaggio è costituito da uno o più dati, separati tra loro con i caratteri separatori dati ricezione, e
termina con uno dei caratteri terminatori messaggio ricezione. Se nessuno di questi terminatori è stato
specificato al momento della configurazione della porta seriale, allora il controllo considererà che il
messaggio sia formato da un solo dato di tipo carattere (1 byte).
Il triletterale GET è sospensivo, cioè l’esecuzione del part program non riprende fino a quando la GET
non viene considerata terminata; per considerare terminato il comando deve verificarsi una delle
condizioni seguenti:
è stato ricevuto un carattere e non sono stati configurati terminatori di messaggio in ricezione
è stato ricevuto uno dei terminatori di messaggio configurati
è stato richiesto un RESET o un CYCLE STOP al processo che sta eseguendo il comando
è scaduto il timeout di ricezione o sono stati eseguiti tutti i retry configurati. In questo caso tutti
i caratteri ricevuti vengono persi e la linea seriale reinizializzata.
Se il dato atteso è di tipo numerico (per esempio si attende un dato numerico da porre nella variabile
E1), allora il messaggio in arrivo dovrà contenere un valore numerico espresso in caratteri ASCII, che
verrà automaticamente convertito in forma binaria. Questa conversione non viene effettuata se:
la variabile specificata è di tipo carattere (stringa)
si riceve un carattere alla volta, cioè non è stato specificato nessun terminatore di messaggio in
ricezione
Se nel triletterale GET sono state programmate più variabili allora devono essere stati specificati, al
momento della configurazione tramite il triletterale SOP, almeno un carattere terminatore dati
ricezione e almeno un carattere terminatore messaggio in ricezione.
Alcuni errori generati dal comando GET sono gestibili da part program: per l’elenco completo di tali
errori si rimanda all’'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
Questo comando non può essere programmato in MDI con lo stato CYCLE_STOP attivo.
45004616J 194
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempi:
(GET, 1, SC10)
Attesa di un dato di 10 caratteri (escluso il terminatore di messaggio ricezione) dalla porta seriale 1.
(GET, 3, E1)
Se è stato configurato il terminatore di messaggio ricezione: attesa di un dato numerico codificato in
ASCII dalla porta seriale 3.
Se non è stato configurato il terminatore di messaggio ricezione: attesa di un singolo carattere, salvato
in E1 senza alcuna conversione.
45004616J 195
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
numPorta numero della porta seriale utilizzata per inviare i dati. I valori validi vanno da 1 a 4.
Dato dato da trasmettere: può essere una costante oppure una variabile locale o di sistema.
Caratteristiche:
La porta utilizzata per inviare i dati deve essere stata già abilitata e configurata dal processo attivo
tramite il triletterale SOP.
I dati numerici programmati nel comando PUT, sia quelli immediati che quelli programmati tramite
variabile, vengono convertiti in caratteri ASCII prima di essere trasmessi. Le stringhe e il contenuto delle
variabili tipo stringa non subiscono alcuna conversione e vengono inviati direttamente.
L’insieme dei caratteri ricavati dalle variabili o dalle costanti specificate nel triletterale PUT costituisce
il messaggio da trasmettere: esso può essere lungo al massimo 180 caratteri, compresi i separatori di
dato e i terminatori di messaggio (se previsti nella configurazione).
La trasmissione termina:
per scadenza del timeout di trasmissione e per esaurimento del numero di tentativi di
trasmissione (numero di retry trasmissione): in questo caso la linea viene automaticamente
reinizializzata
per la conclusione, senza errori, della trasmissione seriale
per l’arrivo di un RESET o di un cycle stop al processo che sta eseguendo il comando
Alcuni errori generati dal comando PUT sono gestibili da part program, per l’elenco completo di questi
errori si rimanda all’'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
Questo comando non può essere programmato in mod MDI con lo stato CYCLE_STOP attivo.
Esempi:
(PUT,2 SC10)
Trasmissione sulla linea 1 di un messaggio formato di un solo dato di 10 caratteri e degli eventuali
terminatori di messaggio.
(PUT, 1, E1)
Trasmissione sulla linea seriale 1 del contenuto della variabile E1 e degli eventuali terminatori di
messaggio.
45004616J 196
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando permette di effettuare la re inizializzazione di una linea seriale già aperta e
configurata.
Sintassi
(SRS [, numPorta])
dove:
numPorta numero della porta seriale che si desidera reinizializzare. I valori validi vanno da 1
a 4. Se non specificato verranno re inizializzate tutte le linee seriali appartenenti
al processo corrente.
Caratteristiche:
Questo comando permette di effettuare la reinizializzazione di una o tutte le porte seriali aperte e
configurate dal processo corrente. Questo triletterale non si può programmare in modo MDI con lo stato
CYCLE_STOP attivo.
Esempi:
(SRS, 2)
Reinizializzazione della linea seriale 2
(SRS)
Reinizializzazione di tutte le linee seriale aperte dal processo corrente
45004616J 197
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando disattiva la linea seriale specificata rendendola disponibile ad altri possibili utilizzatori.
Se non viene specificato il numero di linea seriale, vengono disattivate tutte le linee seriali attive del
processo nel quale è stato programmato il comando.
Sintassi
(SCL [, numPorta])
dove:
numPorta numero della porta seriale che si desidera disattivare. I valori validi vanno da 1 a
4. Se non specificato verranno disattivate tutte le linee seriali appartenenti al
processo corrente.
Caratteristiche:
Se la linea seriale per la quale si chiede la disattivazione non è attiva, il comando non fa nulla e non
genera alcun errore. Questo triletterale non si può programmare in modo MDI con lo stato CYCLE_STOP
attivo.
Esempi:
(SCL, 4)
Disattivazione della linea seriale 4
(SRS)
Disattivazione di tutte le linee seriale aperte dal processo corrente
45004616J 198
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
Dove:
dateFormat è un numero intero che indica quale sia il tipo di formato richiesto per la stringa di
output contenente la data corrente. I valori validi e i corrispondenti formati sono i
seguenti:
0: GG / MM / AAAA
1: MM / GG / AAAA
2: AAAA / MM / GG
Se il parametro non viene specificato viene utilizzato il formato di default GG /
MM / AAAA.
hourFormat è un numero intero che indica se la stringa dell’ora debba essere scritta utilizzato
il formato a 24 o 12 ore. I valori validi per il parametro sono:
0: 24 ore
1: 12 ore
Se il parametro non viene specificato viene utilizzato il format di default su 24
ore.
dateVar è la variabile di tipo stringa dove verrà memorizzata la data corrente. Deve essere
lunga non meno 10 caratteri
hourVar è la variabile di tipo stringa dove verrà memorizzata l’ora corrente. Deve essere
lunga non meno 11 caratteri.
dVar è una variabile di tipo vettore (per esempio E, H, L…). A partire da quella
specificata verranno memorizzati i valori GG, MM, AAAA, HH, MM, SS. In totale
verranno quindi aggiornate 6 variabili. È necessario che il vettore sia
sufficientemente grande per accogliere questi sei valori
Esempi:
(GDT, LS0, LS1)
Legge data e ora salvandole nelle variabili LS0 e LS1
45004616J 199
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
11.1 Generalità
Questo capitolo descrive i comandi interprocesso.
In particolare vengono descritte le funzionalità che consentono al programmatore di sincronizzare
l'esecuzione parallela di part program su processi diversi, o di utilizzare la risorsa "assi" da un processo
ad un altro a seconda delle esigenze.
45004616J 200
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Se il messaggio non è ancora presente nella CODA MESSAGGI, il processo si pone nello stato
WAIT sospendendo l'esecuzione del part program.
Se il messaggio è già in CODA MESSAGGI, il processo prosegue con l'esecuzione del part
program, ed il messaggio viene eliminato dalla CODA MESSAGGI.
Se nella coda è presente un messaggio proveniente da un processo diverso da n, esso non
viene eliminato, ma conservato per essere utilizzato nel momento opportuno (la
programmazione di una WAI del processo appropriato).
Il processo può infatti uscire dallo stato di WAIT solo quando in coda è presente un messaggio il cui
mittente n è il processo specificato nell'istruzione WAI.
Se però nel comando WAI è specificato come processo il processo 0, allora qualunque processo mittente
può far uscire dallo stato di WAIT il processo in attesa.
ll RESET del processo o l'attivazione di un altro part program azzerano la coda messaggi del
processo stesso.
I comandi SND e WAI consentono lo scambio di dati tra processi, quali variabili locali o di sistema,
costanti, stringhe.
Questi dati vengono inviati (SND) o ricevuti (WAI) dai processi in causa e possono essere specificati nella
programmazione delle rispettive funzioni; per maggiori dettagli consultare la sintassi dei due triletterali,
nelle pagine che seguono.
45004616J 201
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
numero processo Processo di default se non specificato nei comandi di sincronizzazione.
Può essere un numero od una variabile locale o di sistema, e deve assumere valori
compresi tra 1 e 24.
45004616J 202
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
numero processo Processo a cui inviare il messaggio.
Può essere un numero, o una variabile locale o di sistema e deve essere compreso tra
1 e 24.
Se questo numero è uguale al numero del processo che sta eseguendo il comando SND,
viene generato l'errore "23/500 Programmato numero di processo corrente".
Qualora numero processo non fosse specificato, il messaggio verrà inviato al processo
di default dichiarato con il triletterale PRO.
synchro parametro che specifica le modalità del comando SND:
S funzionamento in modo sincrono:
il processo corrente passa nello stato WAIT; questo stato permane finché il
processo destinatario non ha ricevuto effettivamente il messaggio (lo ha cioè
cancellato dalla sua coda ed ha ripreso l'esecuzione del part program).
A funzionamento in modo asincrono:
non appena il messaggio è stato inviato, l'esecuzione del part program riprende.
MS funzionamento in modo multi-sincrono:
il modo multi-sincrono permette di effettuare un comando SND sincrono verso un
processo che ha ancora messaggi multi-asincroni in attesa.
MA funzionamento in modo multi-asincrono:
il modo multi-asincrono permette di accumulare più comandi SND verso lo stesso
processo.
dati I dati, opzionali ed al massimo 20, sono valori numerici, stringhe tra apici, variabili
locali o di sistema.
Il sistema preleva i dati programmati (direttamente o come contenuto delle variabili)
e li trasmette al processo specificato insieme al messaggio di sincronizzazione.
La dimensione totale dei dati non può superare i 1250 byte; per la lunghezza dei vari
tipi di dato consultare la seguente tabella:
45004616J 203
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Caratteristiche:
I modi sincrono e asincrono permettono l’invio di un solo messaggio verso un dato processo, nel caso
venga inviato un secondo messaggio a un processo destinatario il controllo genererà un errore 23/511 –
Messaggio ancora in coda per entrambi i processi.
Esempio:
(SND,P1,S,E1,SN12,"TOOL",SC0.30,@BOOL_PLUS(0),33.6)
Il sistema genera l'errore "23/509 Invio dati troppo lungo" quando si tenta di trasmettere un numero di
byte maggiore di 1250.
Situazioni di errore:
Vi sono due casi in cui viene generato l'errore "23/510 Caricamento dati fallito":
Visto che il dato trasmesso non è congruente con quello che il processo 2 si aspettava di ricevere,
e che la SND è di tipo asincrono, si verifica che:
Il processo 1 prosegue l'esecuzione del suo part program
Il processo 2 visualizza l'errore 23/510 e l'esecuzione del suo part program non potrà proseguire
45004616J 204
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Il triletterale WAI pone il processo in cui è programmato nello stato di WAIT, in attesa cioè di un
messaggio di sincronizzazione dal processo specificato; se il messaggio atteso è già presente nella coda
messaggi si prosegue nell'esecuzione del part program e si risponde al task mittente se quest'ultimo
aveva eseguito il comando SND di tipo S (sincrono).
Sintassi
dove:
numero processo Processo da cui si aspetta il messaggio.
Può essere un numero, od una variabile locale o di sistema e deve essere compreso
tra 0 e 24 .
Se questo numero è uguale al numero del processo che sta seguendo il comando
WAI, viene generato l'errore "23/500 Programmato numero di processo
corrente".
Qualora numero processo non fosse specificato, il messaggio verrà inviato al
processo di default dichiarato con il triletterale PRO.
variabili Lista delle variabili, al massimo 20, nelle quali ricevere i valori inviati dal processo
che ha emesso il comando SND. Se il numero o il tipo delle variabili programmate
non sono congruenti con quelli inviati dal processo mittente viene generato l'errore
"23/510 Caricamento dati fallito" (vedere anche la funzione SND per ulteriori
dettagli).
In stato WAIT, all'arrivo del messaggio di sincronizzazione con dei dati associati,
l'invio dell'eventuale ACK richiesto dal mittente viene effettuato dopo che il
caricamento dei dati nelle variabili programmate si è concluso; quindi, se il
caricamento dei dati fallisce (per errore di numero o di formato), viene trasmesso un
ACK negativo al processo mittente dei dati.
Nel caso in cui numero processo fosse uguale a 0, allora qualunque processo
mittente sarà ritenuto valido per quanto riguarda la sincronizzazione. Se la
sincronizzazione richiede dati associati il processo mittente deve rispettare il
numero ed il tipo di dati richiesti.
45004616J 205
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
PROCESSO 1 PROCESSO 2
( P R O ,2 ) (S N D ,P 1 ,A )
;in v io d e l m e s s a g g io a l p r o c e s s o 1
; e p r o s e g u im e n to d e ll'e s e c u z io n e
; d e l p a rt p ro g r a m .
; Il m e s s a g g io è p o s to
; n e lla c o d a d e l p r o c e s s o 1
( W A I) ( W A I,P 1 ,E 4 4 , E 2 ,!M Y _ U S E R 1 .5 C H )
; Il m e s s a g g io è ; S ta to W A IT ( d a p ro c e s s o 1 )
; g ià p re s e n te n e lla c o d a
; il p a r t p r o g r a m p ro s e g u e ; l'a rr iv o d e l m e s s a g g io d a l p ro c e s s o 1 p ro v o c a :
; 1 ) Il c o n te n u to d e lla v a r ia b ile E 3 d e l p ro c e s s o 1
( S N D ,S ,E 3 ,3 4 ," P IP P O " ) ; v ie n e c o p ia t o n e lla v a r ia b ile E 4 4
; 2 ) Il v a lo re 3 4 v ie n e c o p ia to n e lla v a ria b ile E 2
; 3 ) L a s tr in g a " P IP P O " è c o p ia ta n e lla v a r ia b ile !M Y U S E R 1 .5 C H
; s ta to d i w a it p e r S N D s in c ro n a ; 4 ) Il m e s s a g g io v ie n e c a n c e ll a to d a lla C O D A M E S S A G G I
; 5 ) R ip r e s a d e ll'e s e c u z io n e d e l p a rt p r o g r a m
; Il p r o c e s s o 2 h a r ic e v u to
; il m e s s a g g io e d il p a r t p ro g r a m
; r ip a r te
45004616J 206
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Il triletterale EXE permette di attivare ed eseguire in modo automatico un part program sul processo
specificato.
Sintassi
dove:
nome part program Nome del part program da eseguire nel modo automatico (AUTO).
nome part program deve essere specificato tramite una stringa di caratteri
maiuscoli, oppure una variabile stringa preceduta dalla chiave "?" (punto
interrogativo).
nome part program può essere semplicemente un nome di file oppure essere
specificato con un indirizzo logico, attraverso un DRIVE configurato in AMP. Se
viene specificato il path, il sistema ricava automaticamente l’indirizzo fisico
associato al DRIVE. Si hanno a disposizione 127 caratteri alfanumerici in totale per
specificare il nome file, comprensivo di percorso ed eventuale estensione. Per
maggiori dettagli su come specificare il nome file si faccia riferimento al paragrafo
“I file di programma” del capitolo 1 di questo manuale.
numero processo Processo su cui attivare il part program.
Può essere un numero, o una variabile locale o di sistema e deve essere compreso
tra 1 e 24.
Se questo numero è uguale al numero del processo che sta eseguendo il comando
EXE, viene generato l’errore “23/500 Programmato numero di processo
corrente”.
Qualora numero processo non fosse specificato, il messaggio verrà inviato al
processo di default dichiarato con il triletterale PRO.
Caratteristiche:
Il comando EXE forza il modo automatico sul processo specificato, quindi attiva il part program e lo
manda in esecuzione. Si ricorda che i comandi associati alle azioni menzionate ("SETMODE", "SPG" e
"CYCLE") possono essere filtrati dal PLC.
Se tali comandi giungono ad un processo che non è in grado di eseguirli, per esempio perché si trova
nello stato di "RUN", oppure "HOLD" ecc., viene visualizzato l'errore “23/512 Comando EXE o ECM
fallito”.
Al termine dell’esecuzione del part program, il processo destinatario resta in modo automatico. Gli
errori ritornati dal comando EXE possono essere gestiti da part program attraverso le variabili STE ed
ERR. Si veda a completamento l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
Esempi:
(EXE, MAIN_PROG ,P3) attiva l'esecuzione sul processo 3 del part program MAIN_PROG
(PRO,2)
SC1.10="MAIN_2"
(EXE,?SC1.10) attiva l'esecuzione sul processo 2 del part program MAIN_2
45004616J 207
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Il triletterale ECM permette di attivare l'esecuzione automatica di un blocco in modo MDI sul processo
specificato.
Sintassi
dove:
comando È il blocco di part program che verrà eseguito dal processo destinatario.
Può essere una stringa tra apici singoli o doppi, oppure una variabile di tipo
stringa.
Gli apici singoli si usano quando nel blocco di part program vi sono apici doppi.
numero processo Processo su cui eseguire il blocco di codice.
Può essere un numero, od una variabile locale o di sistema e deve essere compreso
tra 1 e 24.
Se questo numero è uguale al numero del processo che sta eseguendo il comando
ECM, viene generato l'errore “23/500 Programmato numero di processo
corrente”.
Qualora numero processo non fosse specificato, il messaggio verrà inviato al
processo di default dichiarato con il triletterale PRO.
S parametro opzionale che forza il funzionamento in modo sincrono
Caratteristiche:
ECM forza il modo "MDI" sul processo specificato, invia il blocco programmato al processo destinatario e
lo esegue su quel processo.
Si ricorda che i comandi usati ("SETMODE" e "CYCLE") possono essere filtrati dal PLC.
Il comando ECM di default (senza il parametro S) è di tipo asincrono; questo significa che dopo
l'esecuzione di ECM il part program mittente prosegue con i blocchi successivi indipendentemente dal
fatto che l’esecuzione del blocco inviato tramite ECM su di un altro processo sia conclusa oppure no.
È importante perciò non inviare un altro comando ECM sullo stesso processo finché non è terminata
l'esecuzione del comando precedente.
Se questo avviene, viene segnalato l'errore "23/512 Comando EXE o ECM fallito".
Il comando ECM con il parametro S è di tipo sincrono; questo significa che, dopo l’esecuzione di ECM, il
part program attende che l’esecuzione del blocco sul processo destinatario sia terminata prima di
proseguire con i blocchi successivi.
In generale, se i comandi di forzature del modo "MDI" o "CYCLE ON" giungono ad un processo che non è in
grado di eseguirli, per esempio perché si trova nello stato di "RUN", oppure "HOLD" ecc. , viene
visualizzato l'errore "23/512 Comando EXE o ECM fallito".
Gli errori ritornati dal comando ECM possono essere gestiti da part program attraverso le variabili STE ed
ERR. Si veda a completamento l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 208
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 1:
(ECM,'(DIS,"PROVA")',P2,S) Visualizza la stringa PROVA in processo 2. Attende fine dell’esecuzione
(ECM,"E1=12",P2) Setta il valore della variabile locale E1 del processo 2 al valore 12.
Esempio 2:
(PRO,2) Definisce il processo 2 come processo di default
SC0.5="E1=12" Prepara il comando nella variabile SC0.5
(ECM,SC0.5) Esegue ECM con comando costituito dal contenuto della variabile
45004616J 209
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
11.8 RTP – Lettura del numero utensile programmato o attivo nel processo
Con questa istruzione si esegue la lettura del numero di utensile attivo o programmato e, se richiesto, il
record (pagina) su cui tale utensile è mappato. L'operazione viene eseguita sul processo specificato o sul
processo di default ed il dato letto viene caricato sulla variabile programmata.
Sintassi
dove:
num pro È il numero del processo sul quale viene eseguita la lettura del numero di utensile.
Se questo parametro non viene specificato, l'operazione viene eseguita sul
processo di defaultpredisposto precedentemente con il comando PRO.
Questo parametro, se esiste, può essere direttamente un numero, compreso tra 1
e 24, o una variabile locale o di sistema.
variabile1 È la variabile nella quale verrà caricato il numero o nome dell’utensile richiesto.
Caratteristiche
Se non è stato programmato precedentemente il processo di default e se non è stato inserito nella riga
di comando il parametro Pnum pro, l'operazione di lettura verrà eseguita sul processo corrente, cioè
quello che sta eseguendo l'istruzione.
Il parametro variabile1 può essere sia una variabile di tipo stringa che una variabile numerica di tipo
reale. Nel primo caso il nome utensile verrà sempre copiato nella variabile. Nel secondo caso il nome
utensile verrà convertito in numero reale e verrà copiato nella variabile solo nel caso in cui il nome
utensile corrisponda a un numero intero non negativo; in ogni altro caso l’esecuzione del triletterale
fallirà.
Esempi:
(RTP,N,E1)
Questo comando legge il numero di utensile programmato nel processo corrente (se PRO non è stato
programmato) e lo pone nella variabile E1.
(RTP,P3,A,LS3)
Questo comando legge il numero di utensile attivo del processo 3 e lo pone nella variabile LS3.
(RTP,A,E1,E2)
questo comando pone nella variabile E1 il numero di utensile attivo, sul processo corrente, e nella
variabile E2 la pagina o record sulla quale tale utensile è mappato.
45004616J 210
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
11.9 ROP – Lettura del numero del correttore utensile programmato o attivo nel
processo
Con questa istruzione si esegue la lettura del numero del correttore utensile attivo o programmato.
L'operazione viene eseguita sul processo specificato o sul processo di default ed il dato letto viene
caricato sulla variabile programmata.
Sintassi
dove:
num pro È il numero del processo sul quale viene eseguita la lettura del numero del
correttore utensile. Se questo parametro non viene specificato, l'operazione viene
eseguita sul processo di default predisposto precedentemente con il comando PRO.
Questo parametro, se esiste, può essere direttamente un numero, compreso tra 1
e 24 o una variabile locale o di sistema.
variabile È la variabile numerica nella quale verrà caricato il dato letto dall'istruzione.
Caratteristiche:
Se non è stato programmato precedentemente il processo di default e se non è stato inserito nella riga
di comando il parametro Pnum pro, l'operazione di lettura del correttore utensile verrà eseguita sul
processo corrente (quello che sta eseguendo l'istruzione).
Esempi:
(ROP,N,SN3)
Questo comando legge il numero del correttore utensile programmato nel processo corrente (se non è
stato programmato precedentemente il comando PRO) e lo pone nella variabile SN3.
(ROP,P2,A,!ABC(1))
Questo comando legge il numero del correttore utensile attivo del processo 2 e lo pone nella variabile
utente !ABC(1).
45004616J 211
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
num pro È il numero del processo sul quale viene eseguita la lettura dello stato e del modo.
Se questo parametro non viene specificato, l'operazione viene eseguita sul
processo di default predisposto precedentemente con il comando PRO.
Questo parametro, se esiste, può essere direttamente un numero, compreso tra 1
e 24, o una variabile locale o di sistema.
variabile1
variabile2
variabile3 Sono tre variabili numeriche nelle quali verranno caricati i dati rispettivamente
dello stato, del sottostato e del modo del processo letti dall'istruzione.
La corrispondenza tra i valori numerici ed il loro significato è la seguente:
Val. let. Stato Val. let. Sotto-stato Val. let. Modo
1 IDLE 1 DUMMY 1 MDI
2 RUN 2 riservato 2 AUTO
Part Program
3 HOLD 3 3 STEP
eseguito in hold
4 RUNH 4 BLOCK RETRACE 4 MANUAL JOG
5 HRUN 5 Active Reset 5 INCR. JOG
6 ERROR 6 MAS 6 RETURN PROFILE
7 WAIT 7 riservato 7 HOME
8 RESET 8 8 HANDWHEEL
9 EMERGENCY 9 9
10 INPUT 10 10
Per il significato degli stati, sottostati e modi riportati in questa tabella, fare riferimento al manuale di
uso di OPENcontrol.
Caratteristiche
Se non è stato programmato precedentemente il processo di default e se non è stato inserito nella riga
di comando il parametro Pnum pro, l'operazione di lettura verrà eseguita sul processo corrente (quello
che sta eseguendo il comando).
Esempi:
(GPS,E1,E2,E3)
Questo comando legge lo stato, il sottostato ed il modo del processo corrente e li pone rispettivamente
nelle variabili E1, E2 ed E3.
(GPS,P4,!UT(1),!UT(2),!UT(3))
Questo comando legge lo stato, il sottostato ed il modo del processo 4 e li pone nelle variabili utente
!UT(1 ÷ 3).
45004616J 212
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
num pro È il numero del processo sul quale viene eseguita la lettura della quota dell'asse.
Se questo parametro non viene specificato, l'operazione viene eseguita sul
processo di default predisposto precedentemente con il comando PRO.
Questo parametro, se esiste, può essere direttamente un numero, compreso tra 1
e 24, o una variabile locale o di sistema.
45004616J 213
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Caratteristiche:
La variabile $A contiene il valore di posizione di tipo e dell’asse richiesti. Il processo cui appartiene
l’asse è il processo corrente. Utilizzando la variabile $A è possibile inserire i valori di posizioni assi
direttamente in un’espressione logico algebrica.
Le quote lette con il triletterale RAP o con la variabile $A sono espresse nell'unità di misura corrente del
processo a cui si rivolge il comando di lettura, tranne ovviamente per gli assi di tipo rotativo, le cui
quote sono espresse in gradi. Per gli assi di tipo ROLLOVER le quote lette sono normalizzate all’interno
del passo rollover.
Nel caso di comando RAP se il nome asse è P è obbligatorio inserire il numero processo (anche
se si tratta del processo di default). Nel caso di tipo di lettura 7, il comando tiene conto di
eventuali DAN attive sull’asse programmato.
Esempi:
Se si desidera leggere la quota reale assoluta dell'asse X, del processo di default, ponendola nella
variabile E4 e quindi visualizzarla sullo schermo, si possono utilizzare i seguenti comandi:
(RAP,X,3,E4)
(DIS,E4)
Volendo leggere la quota da percorrere dell'asse Z del processo 3 inserendola nella variabile SN5, si fa
uso del seguente comando:
(RAP,P3,Z,2,SN5)
Se si vuole effettuare un controllo sul valore di posizione reale assoluta dell’asse Z utilizzando la
variabile $A si possono eseguire i seguenti comandi:
(IF, $A(Z, 3) < 100.42) ; Cicla finchè la posizione reale assoluta di Z non è inferiore a 100.42
(DLY, 1)
(ENDIF)
Se si desidera leggere le quote punta utensile degli assi X, Y e Z a cui tornare dopo un HOLD, si possono
utilizzare i seguenti comandi:
(RAP,X,12,E4)
(RAP,Y,12,E5)
(RAP,Z,12,E6)
(DIS,E4, E5, E6)
45004616J 214
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questa istruzione fornisce, al processo specificato, il comando di CYCLE ON, equivalente alla pressione
del tasto CYCLE START.
Sintassi
(CON [, P numproc])
dove:
numproc È un numero compreso tra 1 e 24 che identifica il processo sul quale sarà eseguito
il comando di CYCLE ON. Questo parametro può essere un numero che identifica
direttamente il processo oppure una variabile locale o di sistema che contiene il
numero del processo interessato.
Caratteristiche
La funzione svolta dal comando dipende dalla modalità operativa in corso.
Se il parametro Pnumproc non è stato specificato, il comando di CYCLE ON sarà fornito al processo di
default predisposto precedentemente con l'istruzione PRO.
Esempio:
(CON, P3)
Sarà fornito il comando CYCLE ON al processo 3.
45004616J 215
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questa istruzione fornisce, al processo specificato, il comando di CYCLE OFF, equivalente al rilascio del
tasto CYCLE START.
Sintassi
(COF [, P numproc])
dove:
numproc È un numero compreso tra 1 e 24 che identifica il processo sul quale sarà eseguito
il comando di CYCLE OFF. Questo parametro può essere un numero che identifica
direttamente il processo oppure una variabile locale o di sistema che contiene il
numero del processo interessato.
Caratteristiche
La funzione svolta dal comando dipende dalla modalità operativa in corso.
Se il parametro Pnumproc non è stato specificato, il comando di CYCLE OFF sarà fornito al processo di
default predisposto precedentemente con l'istruzione PRO.
Esempio:
(COF)
Sarà fornito il comando CYCLE OFF al processo di default.
45004616J 216
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questa istruzione fornisce, al processo specificato, il comando di HOLD ON, equivalente alla pressione
del tasto CYCLE STOP (HOLD).
Sintassi
(HON [, P numproc])
dove:
numproc È un numero compreso tra 1 e 24 che identifica il processo sul quale sarà eseguito
il comando di HOLD ON. Questo parametro può essere un numero che identifica
direttamente il processo oppure una variabile locale o di sistema che contiene il
numero del processo interessato.
Caratteristiche:
Se il parametro Pnumproc non è stato specificato, il comando di HOLD ON sarà fornito al processo di
default predisposto precedentemente con l'istruzione PRO.
Se il processo di default non è stato programmato precedentemente e se in questo comando non è stato
inserito il parametro Pnumproc, il comando viene eseguito sul processo corrente (quello che sta
eseguendo l'istruzione in corso).
Esempio:
(HON, P2)
Sarà fornito il comando HOLD ON al processo 2.
45004616J 217
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questa istruzione fornisce, al processo specificato, il comando di HOLD OFF, equivalente alla pressione
del tasto CYCLE STOP (HOLD) in stato di CYCLE STOP o HOLD.
Sintassi
(HOF [, P numproc])
dove:
numproc È un numero compreso tra 1 e 24 che identifica il processo sul quale sarà eseguito
il comando di HOLD OFF. Questo parametro può essere un numero che identifica
direttamente il processo oppure una variabile locale o di sistema che contiene il
numero del processo interessato.
Caratteristiche
Se il parametro Pnumproc non è stato specificato, il comando di HOLD OFF sarà fornito al processo di
default predisposto precedentemente con l'istruzione PRO.
Esempio:
(HOF) Sarà fornito il comando HOLD OFF al processo di default.
45004616J 218
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Con questa istruzione viene fornito, al processo specificato, un comando di reset, equivalente alla
pressione del tasto RESET del pannello operatore.
Sintassi
(RES [, P numproc])
dove:
numproc È un numero compreso tra 1 e 24 che identifica il processo sul quale sara
effettuato il RESET. Questo parametro può essere un numero che identifica
direttamente il processo oppure una variabile locale o di sistema che contiene il
numero del processo interessato.
Caratteristiche:
Se il parametro Pnumproc non è stato specificato, il comando di RESET sarà fornito al processo di default
predisposto precedentemente con l'istruzione PRO.
Se il processo di default non è stato programmato precedentemente e se in questo comando non è stato
inserito il parametro Pnumproc, il comando viene eseguito sul processo corrente (quello che sta
eseguendo l'istruzione in corso).
Esempio:
(RES,P4)
Sarà fornito il comando RESET al processo 4.
45004616J 219
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Con questa istruzione viene definito il modo operativo per il processo specificato.
Sintassi
dove:
numproc È un numero compreso tra 1 e 24 che identifica il processo. Questo parametro può
essere un numero che identifica direttamente il processo o una variabile locale o
di sistema che contiene il numero del processo interessato.
modo È il modo operativo che si vuole selezionare. Questo parametro può assumere i
seguenti valori:
1 MDI
2 Auto
3 Blocco/blocco
4 Manuale continuo
5 Manuale incrementale
6 Ritorno sul profilo
7 Ciclo di home
8 Volantino
Caratteristiche:
Se il parametro Pnumproc non è stato specificato, il comando SMD sarà fornito al processo di default
predisposto precedentemente con l'istruzione PRO.
Se il processo di default non è stato programmato precedentemente e se in questo comando non è stato
inserito il parametro Pnumproc, il comando viene eseguito sul processo corrente (quello che sta
eseguendo l'istruzione in corso).
Esempio:
(SMD,P4,3)
Viene impostato sul processo 4 il modo operativo blocco/blocco.
45004616J 220
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questa istruzione esegue la selezione dell'asse su cui dovrà essere eseguito un movimento manuale.
Sintassi
dove:
numproc È un numero compreso tra 1 e 24 che identifica il processo. Questo parametro può
essere un numero che identifica direttamente il processo oppure una variabile
locale o di sistema che contiene il numero del processo interessato.
Caratteristiche:
Se il parametro Pnumproc non è stato specificato, il comando SAX sarà fornito al processo di default
predisposto precedentemente con l'istruzione PRO.
Se il processo di default non è stato programmato precedentemente e se in questo comando non è stato
inserito il parametro Pnumproc, il comando viene eseguito sul processo corrente (quello che sta
eseguendo l'istruzione in corso).
Esempio:
(SAX,Z)
Viene predisposto per il movimento manuale l'asse Z nel processo corrente o, se definito, nel processo di
default.
Nel caso in cui il nome asse sia P è obbligatorio inserire il numero di processo (anche se si
tratta del processo di default).
45004616J 221
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questa istruzione definisce, per il processo selezionato, la direzione che deve assumere l'asse
selezionato durante il movimento manuale.
Sintassi
dove:
numproc È un numero compreso tra 1 e 24 che identifica il processo. Questo parametro può
essere un numero che identifica direttamente il processo o una variabile locale o
di sistema che contiene il numero del processo interessato.
segno È il segno che definisce la direzione del movimento. I valori ammessi sono +
oppure -.
Caratteristiche
Se il parametro Pnumproc non è stato specificato, il comando DIR sarà fornito al processo di default
predisposto precedentemente con l'istruzione PRO.
Se il processo di default non è stato programmato precedentemente e se in questo comando non è stato
inserito il parametro Pnumproc, il comando viene eseguito sul processo corrente (quello che sta
eseguendo l'istruzione in corso).
Esempio:
(DIR,P3,+)
Viene predisposta la direzione positiva per il movimento manuale nel processo 3.
45004616J 222
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Con questa istruzione viene stabilito il valore dei singoli passi di movimento, durante un movimento
manuale incrementale, nel processo specificato.
Sintassi
dove:
numproc È un numero compreso tra 1 e 24 che identifica il processo. Questo parametro può
essere un numero che identifica direttamente il processo o una variabile locale o
di sistema che contiene il numero del processo interessato.
jog value È un valore numerico che esprime il passo di spostamento durante il movimento
manuale incrementale.
Può essere un numero, oppure una variabile locale o di sistema.
Esso verrà considerato in mm od in pollici a seconda dell'unità configurata per il
processo.
Caratteristiche
Se il parametro Pnumproc non è stato specificato, il comando di JOG sarà fornito al processo di default
predisposto precedentemente con l'istruzione PRO.
Se il processo di default non è stato programmato precedentemente e se in questo comando non è stato
inserito il parametro Pnumproc, il comando viene eseguito sul processo corrente (quello che sta
eseguendo l'istruzione in corso).
Esempio:
(JOG,P2,0.1)
Sarà fornito 0.1 mm (o 0.1 pollici) come valore di passo per il movimento manuale incrementale nel
processo 2.
45004616J 223
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Con questa istruzione si esegue un arresto durante la lavorazione del processo specificato. Ai fini pratici
corrisponde alla forzatura a zero della velocità di lavoro.
Sintassi
dove:
numproc È un numero compreso tra 1 e 24 che identifica il processo. Questo parametro può
essere un numero che identifica direttamente il processo oppure una variabile
locale o di sistema che contiene il numero del processo interessato.
Caratteristiche:
Se il parametro Pnumproc non è stato specificato, il comando di FEEDHOLD sarà fornito al processo di
default predisposto precedentemente con l'istruzione PRO.
Esempio:
(FHO,P4,1)
Si arresta il movimento di lavorazione del processo 4.
45004616J 224
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
numero SW È il numero della variabile SW da leggere.
Può essere specificato direttamente con un numero intero o indirettamente
tramite una variabile locale o di sistema.
maschera È un parametro che si può programmare solo se è stata scelta la lettura dell'intera
word (numero bit = 16). È la rappresentazione decimale della maschera a bit, cioè
una word con 1 nelle posizioni dei bit di cui si vuole avere il valore e che si applica
in AND al contenuto della variabile SW prescelta prima di salvarne il valore nella
variabile locale o di sistema specificata.
Può essere specificato direttamente con un numero intero o indirettamente
tramite una variabile locale o di sistema.
variabile È una variabile numerica locale o di sistema in cui verrà inserito il contenuto del
bit o della word prescelta.
Caratteristiche:
Questo triletterale può contenere un massimo di 10 letture di variabili SW, che possono essere bit della
stessa variabile o bit/word di variabili diverse.
Per il significato delle bit o word di ciascuna variabile SW, si prega di fare riferimento ai capitoli relativi
a "Variabili di stato del sistema" e "Variabili di stato del processo" del Manuale di Applicazione WinPLUS.
45004616J 225
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempi:
Dopo l'esecuzione del comando:
(PLS,1,16, E1)
E1 conterrà il livello di Security attivo.
Con il comando:
(PLS,23,2,SN2)
la variabile SN2 conterrà 1 se nel processo 1 è attiva la funzione G18 e 0 se non è attiva.
Eseguendo il comando:
(PLS,26,16,&1792,E0)
E0 avrà il valore 0 se nel processo 1 non è attivo nessun ciclo di tastatura.
Con il comando:
(PLS,27,0,E1,47,0,E2,67,0,E3,87,0,E4)
il contenuto delle variabili interessate sarà il seguente:
E1 sarà 0 se nel processo 1 non è attivo nessun ciclo fisso
E2 sarà 0 se nel processo 2 non è attivo nessun ciclo fisso
E3 sarà 0 se nel processo 3 non è attivo nessun ciclo fisso
E4 sarà 0 se nel processo 4 non è attivo nessun ciclo fisso
45004616J 226
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
tipo È un parametro intero che permette di scegliere quale tipo di variabile di stato di
tipo WORD leggere:
0 : classe GW
1 : classe MW
2 : classe PW
3 : classe SW
variabile È una variabile numerica locale o di sistema in cui verrà copiato il contenuto della
word prescelta.
Sintassi
dove:
tipo È un parametro intero che permette di scegliere quale tipo di variabile di stato di
tipo DOUBLE leggere:
0 : classe GD
1 : classe MD
2 : classe PD
3 : classe SD
variabile È una variabile numerica locale o di sistema in cui verrà copiato il contenuto della
variabile prescelta.
45004616J 227
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 228
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
La programmazione del triletterale GTA permette la migrazione di uno o più assi da un processo ad un
altro, nonché di ridefinire l'associazione correttori/assi.
GTA permette inoltre di impostare l'ordine di visualizzazione degli assi.
Sintassi
(GTA, [Tvalue,] asse1 ID1 [, asse2 ID2 ] … [,asse12 ID12] [ / [asse1C] [,asse2C]…[, asse5C]])
(GTA)
dove:
value È un parametro intero che può valere:
0: perdita origini attivate (equivalente all'omettere il parametro T0 )
1: mantenimento origini attivate sugli assi riprogrammati con ID ed ordine
invariati. Questi assi possono aver cambiato nome.
2: mantenimento origini attivate su tutti gli assi settati, indipendentemente
dall’ordine di programmazione degli ID.
ID1 … ID12 È l’identificativo associato all’asse. Può essere programmato direttamente con un
numero intero compreso tra 1 e 64, oppure indirettamente tramite un parametro
E.
asse1C … asse 5C Sono i nomi degli assi sui quali saranno applicati i correttori lunghezza durante
un'eventuale successiva attivazione di un correttore.
nessun parametro (GTA) senza parametri rilascia tutti gli assi del processo attivo rendendoli
disponibili per la migrazione in un altro processo.
Caratteristiche:
Quando si utilizza il triletterale GTA, è obbligatorio dichiarare tutti gli assi che il processo deve
utilizzare, anche se già appartenenti al processo stesso. Non specificare un asse nel comando GTA
significa rilasciarlo per renderlo disponibile ad altri processi.
Quando un comando GTA è eseguito, l'ordine di visualizzazione degli assi è quello dichiarato nel
comando; GTA può quindi essere utilizzato per cambiare l'ordine di visualizzazione degli assi.
Il comando di RESET non ripristina i cambiamenti derivanti dall'utilizzo del GTA. Per ripristinare la
configurazione assi specificata in AMP è necessario riavviare il controllo.
Durante le operazioni di cambio utensile, e in particolare durante il comando di attivazione offset, gli
assi ai quali associare i correttori lunghezza devono essere già acquisiti dal processo.
45004616J 229
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Origini.
Se il parametro "Tvalue" è omesso oppure è impostato con "value=0" le origine attive saranno
resettate.
Se il parametro "Tvalue" è impostato con value=1 le origini verranno mantenute sugli assi
riprogrammati con ID ed ordine invariati, anche se questi hanno cambiato nome.
Se il parametro “Tvalue” è impostato con value = 2 le origini verranno mantenute su tutti gli assi
programmati anche se con ID differenti.
Mirror.
Il mirror sarà resettato su tutti gli assi.
Fattore di scala.
Il fattore di scala sarà resettato su tutti gli assi.
Rotazione "ROT".
La rotazione attivata da part program con il triletterale "ROT" sarà annullata.
Limiti operativi.
I valori dei limiti operativi di tutti gli assi saranno quelli di configurazione.
Correttori lunghezza.
Gli identificativi degli assi ai quali saranno associati i correttori lunghezza saranno programmati
opzionalmente sul triletterale GTA. Le associazioni di default definite in AMP saranno perse.
Verranno riattivate dopo una riaccensione del controllo.
45004616J 230
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 1:
Condizioni iniziali:
Il processo interessato detiene gli assi X (con ID 1), ed Y (con ID 2).
Obiettivo da raggiungere:
Mantenere la proprietà degli assi X e Y (ID 1 e 2).
Acquisire gli assi con ID 5 e 6 ed assegnare loro i nomi Z ed A.
Associare il correttore lunghezza 1 all'asse Y (ID 2).
Associare il correttore lunghezza 2 all'asse Z (ID 5).
Associare il correttore lunghezza 3 all’asse X (ID 1).
Ottenere l’ordine di visualizzazione (sul video di sistema); X,Y,Z,A.
Esempio di programmazione:
(GTA,X1,Y2,Z5,A6/Y,Z,X)
45004616J 231
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 2:
Condizioni iniziali:
Il processo interessato detiene gli assi X (con ID 1), ed Y (con ID 2).
Obiettivo da raggiungere:
Rilasciare gli assi X e Y (ID 1 e 2).
Acquisire gli assi con ID 5 e 6 e chiamarli X ed Y.
Associare il correttore lunghezza 1 all'asse Y (ID 6).
Ottenere l'ordine di visualizzazione (sul video di sistema) X,Y.
Esempio di programmazione:
(GTA,X5,Y6/Y)
Esempio 3:
Condizioni iniziali:
Il processo interessato detiene un numero imprecisato di assi.
Obiettivo da raggiungere:
Rilasciare tutti gli assi in suo possesso.
Esempio di programmazione:
(GTA)
45004616J 232
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 4:
Condizioni iniziali:
Il processo interessato detiene gli assi X,Y,Z,A,B con ID 1,2,3,4,5.
Obiettivo da raggiungere:
Mantenere le proprietà degli assi con ID 1 e 2 (X,Y).
Rilasciare gli assi Z,A,B con ID 3,4,5.
Associare il correttore lunghezza 1 all'asse X (ID 1).
Associare il correttore lunghezza 2 all'asse Y (ID 2).
Esempio di programmazione:
(GTA,X1,Y2 /X,Y)
Esempio 5:
Condizioni iniziali:
Il processo interessato detiene gli assi X,Y,Z con ID 1,2,3.
Agli assi X,Y,Z è associata l'origine 1.
Obiettivo da raggiungere:
Mantenere le proprietà degli assi con ID 1 e 2 (X,Y).
Rilasciare l'asse Z (ID 3).
Acquisire l'asse P con ID 4.
Associare il correttore lunghezza 1 all'asse P (ID 4).
Ottenere L'ordine di visualizzazione (sul video di sistema): X,Y,P.
Perdere l'origine associata di tutti gli assi.
Esempio di programmazione:
(GTA,T0,X1,Y2,P4/P)
45004616J 233
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 6:
Condizioni iniziali:
Il processo interessato detiene gli assi X,Y,Z con ID 1,2,3.
Agli assi X,Y,Z è associata l'origine 1.
Obiettivo da raggiungere:
Mantenere le proprietà degli assi con ID 1 e 2 (X,Y).
Rilasciare l'asse Z (ID 3).
Acquisire l'asse P con ID 4.
Associare il correttore lunghezza 2 all'asse P (ID 4).
Ottenere l'ordine di visualizzazione (sul video di sistema): X,Y,P.
Mantenere l'origine associata agli assi con ID 1 e ID 2.
Esempio di programmazione:
(GTA,T1,X1,Y2,P4/,P)
45004616J 234
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 7:
Condizioni iniziali:
Il processo interessato detiene gli assi X,Y,Z con ID 1,2,3.
Agli assi X,Y,Z è associata l'origine 1.
Obiettivo da raggiungere:
Mantenere le proprietà dell'asse con ID 1 (X).
Mantenere le proprietà dell'asse con ID 2 (Y) cambiando il nome in (A).
Rilasciare l'asse Z (ID 3).
Acquisire l'asse P con ID 4.
Associare il correttore lunghezza 1 all'asse P (ID 4).
Ottenere l'ordine di visualizzazione (sul video di sistema): X,A,P.
Mantenere l'origine associata agli assi con ID 1 e ID 2.
Esempio di programmazione:
(GTA,T1,X1,A2,P4/P)
45004616J 235
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 8:
Condizioni iniziali:
Il processo interessato detiene gli assi X,Y,Z con ID 1,2,3.
Agli assi X,Y,Z è associata l'origine 1.
Un 2 processo detiene gli assi A,B con ID 4,5 ai quali è associata una origine 2
Obiettivo da raggiungere:
Mantenere le proprietà degli assi con ID 1 e 2, ma con nomi invertiti.
Rilasciare l'asse Z (ID 3).
Acquisire l'asse B con ID 4 precedentemente rilasciato dal processo 2.
Associare il correttore lunghezza 1 all'asse B (ID 4).
Ottenere l'ordine di visualizzazione (sul video di sistema): Y,X,B.
Mantenere l'origine associata a tutti gli assi, ovvero origine 1 su assi con ID 1 (Y), 2 (X) e origine 2
su asse ID 4 (B).
Esempio di programmazione:
45004616J 236
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio 9:
Condizioni iniziali:
Il processo interessato detiene gli assi X,Y,Z con ID 1,2,3.
L’asse con ID 4 è condiviso con il PLC (SHARED)
Obiettivo da raggiungere:
Mantenere la proprietà degli assi con ID1, 2 e 3
Scambiare l’ascissa con l’ordinata
Acquisire l’asse con ID 4
Ottenere l’ordine di visualizzazione (sul video di sistema): X, Y, Z, W
Esempio di programmazione:
(GTA,X2,Y1,Z3,W4)
NOTA:
Un asse condiviso con il PLC non può essere rilasciato tramite GTA (il sistema segnala errore 22/117) e,
ovviamente, appartenendo al PLC, se pur visibile dall’ambiente di processo, non può essere
programmato.
Se serve utilizzare il comando GTA su un processo in cui siano presenti uno o più assi condivisi con il PLC
è necessario pertanto riconfermare gli assi condivisi come scritto nell’esempio.
45004616J 237
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 238
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
12.1 Introduzione
Il linguaggio ISO implementato dal sistema OPEN Control permette l’accesso in lettura e/o scrittura ad
un certo numero di variabili tecnologiche appartenenti sia alle tabelle WinPLUS, sia caratteristiche di
altre funzioni.
Questo capitolo descrive le variabili tecnologiche e le modalità di accesso.
Nella prima famiglia esistono quattro tabelle che contengono variabili tecnologiche, mentre la seconda
famiglia contiene tre tabelle.
La prima è in forma di matrice tridimensionale, questa tabella è generalmente chiamata tabella
tecnologica estesa.
Le altre due tabelle sono rispettivamente la tabella magazzini e la tabella delle tasche per gli utensili
(tabella delle pocket).
I valori degli Input e degli Output e alcune informazioni contenute nelle variabili PD e PW (appartenenti
quindi alle variabili di stato assi) sono accessibili utilizzando apposite variabili tecnologiche.
Le quattro tabelle appartenenti alla prima famiglia sono essenzialmente gestite dalla logica di macchina
(consultare il Manuale di Applicazione WinPLUS).
Ogni tabella è suddivisa in pagine (record), ciascuna delle quali contiene tutte le informazioni relative
all'oggetto gestito. Il numero di pagine per ogni tabella gestite dal sistema è il seguente:
Il numero della pagina della tabella rappresenta l'indice riportato nel nome della variabile interessata.
Per ognuna delle tabelle indicate, il tipo, la quantità e l'identificativo dei singoli parametri variano in
funzione della tabella stessa. Per comodità viene riportato uno schema delle pagine tipo di ciascuna
tabella; per maggiori dettagli, si prega di fare riferimento al Manuale di Applicazione WinPLUS.
È possibile bloccare l'accesso in scrittura alle tabelle WinPLUS agli altri utilizzatori, rendendone quindi
l'utilizzo esclusivo fino a quando non viene tolto il blocco stesso. Questo si attua con il comando
triletterale LCK descritto al fondo di questo capitolo.
45004616J 239
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
I valori letti o scritti nelle tabelle WinPLUS non sono influenzati dall'unità di misura
corrente (G70/G71) ma vengono considerati come valori assoluti. Pertanto, va tenuto
presente che i valori numerici che rappresentano delle lunghezze sono riferiti all'unità di
misura della macchina come configurato in AMP tramite l’ODM; è cura dell'operatore
effettuare eventuali conversioni.
La tabella Origini può contenere fino a 100 records, ovvero vengono gestite 100 origini. Ogni record
contiene informazioni riguardanti un’origine. Queste informazioni sono divise in campi. Per ogni record
della tabella esiste un campo Origine associato ad ogni asse configurato. Il numero di campo di un asse
corrisponde al suo identificatore fisico come definito nella configurazione di macchina.
Poiché il sistema supporta fino a 64 assi, ogni record possiede 64 campi Origine.
Nome
Campo Formato Significato Struttura
Variabile
LREAL Valore origine per gli assi
OriginValue $ORIG ARRAY[1…64]
ARRAY configurati
ExType RISERVATO
ExInde RISERVATO
La tabella Utensili può contenere fino a 250 records, ovvero vengono gestiti 250 utensili. Ogni record
contiene informazioni riguardanti un singolo utensile. Queste informazioni sono divise in campi.
Per ogni record della tabella vengono gestiti campi riguardanti la vita utensile, lo stato attuale
dell’utensile, il correttore associato, 10 campi di tipo INT e 10 campi di tipo LREAL ad uso utente.
Nome
Campo Formato Significato Struttura
Variabile
ToolCode $TNAME STRINGA Nome utensile 32 caratteri
UNSIGNED
Status $TSTATUS Stato utensile
SHORT
LifeType $TLIFETYPE SHORT Tipo di vita utensile
Valore massimo vita
MaxLife $MAXLIFE LREAL
utensile
Valore rimanente vita
RemLife $REMLIFE LREAL
utensile
OffsNum $OFFSNUM SHORT Numero offset associato
ExType RISERVATO
ExInd RISERVATO
dUser $TDUSER LREAL Ad uso utente ARRAY[1...10]
sUser $TSUSER SHORT Ad uso utente ARRAY[1...10]
45004616J 240
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
La tabella Offset Utensili può contenere fino a 300 records, ovvero vengono gestiti 300 offset utensili,
questo permette di definire più offset per un singolo utensile. Ogni record contiene informazioni
riguardanti le dimensioni di un singolo utensile. Queste informazioni sono divise in campi.
Per ogni record della tabella vengono gestiti campi riguardanti le lunghezze, i diametri, l’orientamento
dell’utensile, 10 campi di tipo INT e 10 campi di tipo LREAL ad uso utente.
La tabella utente può contenere fino a 100 records. Ogni record contiene 4 campi di tipo LREAL ad
esclusivo uso utente e alle quali il sistema non accede.
Nome
Campo Variabile Formato Significato Struttura
UserVal $USERVAR LREAL Ad uso utente ARRAY[1…4]
45004616J 241
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
La tabella magazzini contiene 10 records. Ogni record contiene campi riguardanti il tipo di magazzino, il
numero di pocket che lo compongono, il numero di righe del magazzino, 10 campi di tipo SHORT e 10
campi di tipo LREAL a uso utente.
Nome
Campo Formato Significato Struttura
Variabile
Type $MAGTYPE SHORT Tipo del magazzino
Number of Numero di pocket presenti
$MNUMPOCK SHORT
pockets nel magazzino
Number of Numero di righe nel caso
$MROWPOCK SHORT
Rows di magazzino planare
dUser $MDUSER LREAL Ad uso utente ARRAY[1…10]
sUser $MSUSER SHORT Ad uso utente ARRAY[1…10]
La tabella pocket contiene 2560 records. Ogni record contiene campi riguardanti lo stato, il tipo di
posizionamento, il tipo della pocket, la dimensione e l’utensile contenuto.
L’accesso a un record si può fare in due modi: o utilizzando l’indice assoluto o utilizzando un doppio
indice: il primo dei quali contiene l’indice del magazzino cui appartiene la pocket e il secondo indica la
posizione della pocket nel magazzino.
Nome
Campo Formato Significato Struttura
Variabile
Stato della pocket:
Status $PSTATUS SHORT
occupata / libera
Accesso fisso o random
Random $PRANDOM SHORT
alla pocket
Type $PTYPE SHORT Tipo della pocket
Class $PCLASS SHORT Dimensione delle pocket
Indice dell’utensile
Tool Index $PTOOL SHORT
caricato in pocket
45004616J 242
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Ogni variabile può essere considerata come un array di 64 elementi, uno per ogni asse potenzialmente
presente sulla macchina. L’indice di ogni elemento corrisponde all’identificativo fisico dell’asse ed è
perciò compreso tra 1 e 64.
Nome
Formato Significato
Variabile
$AXOWNER SHORT Indica il processo a cui è associato l’asse (0 se associato al PLC)
$AXNAME SHORT Nome asse in ASCII decimale (0 se asse non configurato)
$AXORIG LREAL Valore dell’origine corrente
$AXOFG92 LREAL Valore del correttore di G92 corrente
$AXTOFF LREAL Valore del correttore utensile corrente
$TOT_OFFS LREAL Valore del correttore totale corrente dell’asse
$CURORIG SHORT Indica il numero dell’origine attiva al momento sull’asse
$AXORIGINC LREAL Valore dell’origine incrementale sull’asse
$AXORIGTMP LREAL Valore dell’origine temporanea sull’asse
Valore di rotazione del piano di interpolazione impostata
$AXROTVAL LREAL
tramite ROT o da Process Video
$AXSCALE LREAL Valore del fattore di scala applicato all’asse
$AXOFFNUM USHORT Numero del correttore attivo sull’asse.
Modalità di programmazione del correttore.
Può assumere i seguenti valori:
$AXOFFPRG USHORT 0 -Correttore non presente
1 - Correttore programmato tramite comando h
2 - Correttore programmato tramite codice T
$AXOFFIND SHORT Valore dell’indice della lunghezza del correttore attivo sull’asse
Maschera di stato dell’asse.
Il significato dei vari bit è il seguente:
bit 0: Origine assoluta attiva
bit 1: Origine temporanea attiva
bit 2: Origine incrementale attiva
$AXPRGSTAT SHORT
bit 3: Mirror attivo
bit 4: Rotazione del piano attiva
bit 6: G92 attiva
bit 7: Fattore di scala attivo
bit 8: Asse locked
Flag che indica se l’asse appartenga alla virtualizzazione TCP
$AXTCPON SHORT
attiva
Flag che indica se l’asse appartenga alla virtualizzazione UPR
$AXUPRON SHORT
attiva
45004616J 243
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
nomevar(record)
dove:
nomevar Nome variabile tecnologica
record Numero del record cui appartiene la variabile richiesta
indiceriga Indice della variabile array richiesta o della riga cui appartiene l’elemento
richiesto nel caso di tabella tecnologica estesa
indicecolonna Indice della colonna cui appartiene l’elemento richiesto nel caso di tabella
tecnologica estesa
Esempio:
(DIS, $TNAME(6)) ; Visualizza il nome dell’utensile salvato nel record 6 della tabella utensili
$ORIG(45, 3) = -10 ; Setta il valore dell’origine 45 per l’asse di ID 3
$PTECH(1, 42, 24) = 13 ; Setta a 13 il valore dell’elemento in posizione (42, 24) della seconda matrice
della tabella tecnologica estesa
45004616J 244
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
$I(indicetotale)
$I(word,bit)
$IW(word)
dove:
indicetotale Indice del bit da leggere/scrivere calcolato come:
Indice della word * 16 + bit
word WORD alla quale accedere
indice Indice del bit da leggere/scrivere all’interno della WORD selezionata
Esempi:
E0 = $I(129) ; Assegna ad E0 il valore del bit 1 della input word 8
E0 = $I(8,1) ; Assegna ad E0 il valore del bit 1 della input word 8
E0 = $IW(12) ; Assegna ad E0 il valore della input word 12
Sintassi
$O(indicetotale)
$O(word,bit)
$OW(word)
dove:
indicetotale Indice del bit da leggere/scrivere calcolato come:
Indice_word * 16 + bit
word WORD alla quale accedere
indice Indice del bit da leggere/scrivere all’interno della WORD selezionata
Esempi:
$O(129) = E0 ; Assegna al bit 1 della output word 8 il valore di E0
$O(8,1) = E0 ; Analoga alla precedente
$OW(12) = 45 ; Assegna alla output word 12 il valore numerico 45
45004616J 245
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
indice Indice dell’output word che contiene i bit da modificare al termine dell’esecuzione
dell’ente di movimento. Può essere espresso direttamente tramite un numero
intero compreso tra 0 e 511 o indirettamente tramite un parametro E o una
variabile.
valore valore che l’output word deve assumere al termine dell’esecuzione dell’ente di
movimento dell’ente di movimento precedente. Può essere espresso direttamente
tramite un numero intero compreso tra 0 e 65535 o indirettamente tramite un
parametro E o una variabile.
maschera Maschera su 16 bit per identificare quali bit della word devono essere forzati al
termine dell’esecuzione dell’ente di movimento. Può essere espresso direttamente
tramite un numero intero compreso tra 0 e 65535 o indirettamente tramite un
parametro E o una variabile.
Caratteristiche:
I campi valore e maschera possono essere espressi utilizzando la notazione esadecimale avendo cura di
precedere il numero esadecimale dal prefisso 0x oppure OX .
Esempi:
G1X100F100
($OW, 12, 0xF000, 0xFF00)
Appena l’asse X sarà in posizione i bit 8-9-10-11 dell’output word 12 verranno forzati a 0 ed i bit 12-13-
14-15 ad 1
G1X100F100
($OW, 128, 16, 16, 1.5)
1,5 millisecondi dopo che l’asse X sarà in posizione il bit 3 dell’output word 128 verrà forzato a 1
G1X100F100
($OF, 0x01, 0x03)
Dopo che l’asse X sarà in posizione si forzerà il FastOut1 a 1 ed il FastOut2 a 0
45004616J 246
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
numero tabella È un numero compreso tra 1 e 4 che identifica il numero della tabella cui si vuole
riservare l'accesso in scrittura. Può essere un numero intero o una variabile locale
o di sistema ed il suo valore assume il seguente significato:
1 tabella utensili
2 tabella offset utensili
3 tabella origini
4 tabella utente
0|1 Il valore 1 indica che la tabella specificata deve essere modificata per cui viene
segnalato che la programmazione se ne riserva l'uso esclusivo. Se la tabella è già in
modifica da parte di un'altro utilizzatore viene generato l'errore:
23/537 Tabella WinPLUS già bloccata in scrittura
Caratteristiche:
L'accesso in scrittura alle variabili di tabella è sempre permesso e non è strettamente necessario
riservarsi l'uso della relativa tabella; è però consigliabile bloccare la tabella per essere certi che nessun
altro utilizzatore acceda agli stessi campi in memoria sui quali sta agendo la programmazione. Questo
vale anche per gli altri possibili utilizzatori.
Utilizzare il triletterale LCK per togliere il bloccaggio (cioè l'esclusiva di scrittura) alla tabella solo
quando questa era stata precedentemente riservata da part program. Si rischia altrimenti di rendere
disponibile in scrittura una tabella riservata da altri utilizzatori (ad esempio, dalla logica di macchina).
45004616J 247
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio:
Quello che segue è un esempio di utilizzo corretto di scrittura su alcune variabili della tabella utensili.
...
...
ERR = 1 abilita la gestione degli errori da part program
"LOOP"
(LCK,1,1)
(GTO,LOOP,STE=14) 14 = tabella già riservata in scrittura; attesa della sua disponibilità
$OFFSNUM(4) = 12
$TDUSER(1) = 3.45
$TCODE(2) = 13
$TSUSER (2) = 6
(LCK,1,0) sbloccaggio della tabella utensili
ERR = 0 disabilitazione della gestione errori da part program
...
...
45004616J 248
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
POCKACC = valore
dove:
valore È il valore del flag di accesso in scrittura. Il valore 1 corrisponde a scrittura
abilitata, il valore 0 a scrittura non permessa. Il valore di default è 0.
Caratteristiche:
L’accesso in scrittura alla variabili della tabella pocket è, di default, non abilitato poiché una modifica
errata di tali valori potrebbe portare al danneggiamento della macchina.
Se è necessario modificare la tabella pocket è possibile utilizzare la variabile POCKACC per rimuovere la
protezione in scrittura della tabella.
Si consiglia, una volta terminate le modifiche necessarie, di ripristinare la protezione in scrittura della
tabella assegnando il valore 0 alla variabile POCKACC
45004616J 249
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
nometabella È il nome del file dal quale leggere i dati che verranno caricati nella tabella. Il
nome del file comprende la sua estensione specifica.
par1 È un parametro che assume significato diverso in funzione del tipo di tabella da
caricare:
Tabella utensili: par1 è il numero del magazzino a cui gli utensili appartengono
ed è obbligatorio nel caso di utilizzo dei magazzini
Tabella origini: par1 è il numero del processo a cui appartengono gli assi per i
quali verranno aggiornati i valori di origine
Tabella estesa par1 è la parte bidimensionale della tabella estesa che verrà
caricata con i valori presenti nel file di input
par2 È un parametro significativo solo nel caso in cui la tabella da caricare sia la tabella
utensili e sia anche presente il parametro par1 Indica se vadano aggiornati oppure
no i valori pocket in tabella utensili.
I valori ammessi sono:
0 non aggiorna pocket
1 aggiorna pocket
Di default i valori pocket non vengono aggiornati
Caratteristiche:
Il comando LOA permette di caricare in memoria le tabelle tecnologiche.
Il tipo di tabella che verrà caricato viene identificato tramite l’estensione del file stesso. Le estensioni
ad oggi supportate sono le seguenti:
.TOL tabella utensili
.OFS tabella offset utensili
.ORG tabella origini
.USR tabella utente
.TEC tabella estesa
Tutte le tabelle, ad eccezione della tabella estesa, vengono caricate nella memoria dual port. La tabella
estesa viene caricata nella sola memoria temporanea del controllo.
45004616J 250
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
13.1 Introduzione
Il linguaggio ISO implementato dal sistema OPEN Control permette di effettuare alcune operazioni sui
magazzini e le pocket utensili.
Tali operazioni non comportano spostamenti reali dell’utensile da o verso il magazzino, ma si limitano
ad aggiornare le relative tabelle. Lo spostamento fisico degli utensili deve essere gestito dall’utilizzatore
del sistema utilizzando funzioni PLC o paramacro e subroutines dedicate.
Ricerca in magazzino di un utensile con vita a partire da una pocket TOL LDIR
Conteggio degli utensili di una stessa famiglia associati a un magazzino TOL FAM
Nota: tutti questi comandi e sottocomandi richiedono l’opzione A22 con OPEN-10, OPEN-
20 e OPEN-30
45004616J 251
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
tool è il nome dell'utensile che si vuole cercare nel magazzino. È una stringa racchiusa
tra doppio o singolo apice
mag è l’indice del magazzino all’interno del quale si vuole ricercare l’utensile. Può
essere espresso direttamente con un numero intero compreso tra 1 e 10 oppure
indirettamente usando una variabile locale o di sistema
toolInd è un parametro di uscita e contiene l’indice in tabella utensili dell’utensile trovato
in magazzino. Questo parametro deve essere una variabile locale o di sistema
pockInd è un parametro di uscita e contiene l’indice in magazzino della pocket dove è
stato caricato l’utensile cercato. Questo parametro deve essere una variabile
locale o di sistema
Caratteristiche:
La funzione permette di cercare il primo utensile presente a magazzino il cui nome corrisponde a quello
passato nel parametro tool.
La ricerca è fatta partendo da inizio tabella e si arresta sul primo utensile pronto il cui nome corrisponde
a quello cercato.
Nel caso in cui non ci siano utensili corrispondenti l’esecuzione termina con errore.
Gli errori ritornati dal comando possono essere gestiti da part program attraverso le variabili STE ed ERR,
per maggior dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 252
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando permette di cercare all’interno di un magazzino un utensile di nome dato e la cui vita
residua sia maggiore di un certo valore.
Sintassi
dove:
tool è il nome dell'utensile che si vuole cercare nel magazzino. È una stringa racchiusa
tra doppio o singolo apice
mag è l’indice del magazzino all’interno del quale si vuole ricercare l’utensile. Può
essere espresso direttamente con un numero intero compreso tra 1 e 10 oppure
indirettamente usando una variabile locale o di sistema
lifeVal è il valore di vita residua richiesta. Può essere espresso direttamente con un
numero reale oppure indirettamente usando una variabile locale o di sistema
toolInd è un parametro di uscita e contiene l’indice in tabella utensili dell’utensile trovato
in magazzino. Questo parametro deve essere una variabile locale o di sistema
pockInd è un parametro di uscita e contiene l’indice in magazzino della pocket dove è
stato caricato l’utensile cercato. Questo parametro deve essere una variabile
locale o di sistema
Caratteristiche:
La funzione permette di cercare all’interno di un magazzino un utensile di nome dato e la cui vita sia il
più possibile vicina e maggiore al valore di vita residua passato in ingresso.
Se più di un utensile soddisfa la condizione di avere vita residua maggiore o uguale al parametro in
ingresso, allora viene scelto l’utensile con vita residua più bassa. Se tutti gli utensili trovati hanno vita
inferiore al valore richiesto, allora il comando termina con errore, ma i parametri di uscita vengono
aggiornati con l’indice e la pocket dell’utensile che più si avvicina al valore richiesto.
Gli errori ritornati dal comando possono essere gestiti da part program attraverso le variabili STE ed ERR,
per maggior dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 253
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando permette di cercare all’interno di un magazzino un utensile di nome dato partendo da
una specifica pocket.
Sintassi
dove:
tool è il nome dell'utensile che si vuole cercare nel magazzino. È una stringa racchiusa
tra doppio o singolo apice
mag è l’indice del magazzino all’interno del quale si vuole ricercare l’utensile. Può
essere espresso direttamente con un numero intero compreso tra 1 e 10 oppure
indirettamente usando una variabile locale o di sistema
pockIni è l’indice della pocket del magazzino dalla quale iniziare la ricerca dell’utensile.
Può essere espresso direttamente con un numero intero oppure indirettamente
usando una variabile locale o di sistema
dir direzione della ricerca. I valori permessi sono:
0 ricerca ottimizzata, significa che la ricerca viene effettuata
contemporamente in avanti e indietro (senso orario e senso antiorario)
1 ricerca in avanti o in senso orario
2 ricerca indietro o in senso antiorario
Questo parametro non è utilizzato nel caso di magazzini di tipo planare. Può
essere espresso direttamente con un numero intero oppure interettamente usando
una variabile locale o di sistema
toolInd è un parametro di uscita e contiene l’indice in tabella utensili dell’utensile trovato
in magazzino. Questo parametro deve essere una variabile locale o di sistema
pockInd è un parametro di uscita e contiene l’indice in magazzino della pocket dove è
stato caricato l’utensile cercato. Questo parametro deve essere una variabile
locale o di sistema
Caratteristiche:
La funzione permette di cercare all’interno di un magazzino un utensile di nome dato.
La ricerca si effettua a partire dalla pocket definita nell’apposito parametro e nella direzione scelta
dall’utilizzatore.
Il comando termina con errore se non viene trovato nessun utensile.
Gli errori ritornati dal comando possono essere gestiti da part program attraverso le variabili STE ed ERR,
per maggior dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 254
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
13.5 TOL – LDIR: Ricerca di utensile a partire da una pocket e con vita definita
Nota: richiede l’opzione A22 con OPEN-10, OPEN-20 e OPEN-30
Questo comando permette di cercare all’interno di un magazzino un utensile di nome dato partendo da
una specifica pocket e la cui vita residua sia maggiore di un valore dato.
Sintassi
dove:
tool è il nome dell'utensile che si vuole cercare nel magazzino. È una stringa racchiusa
tra doppio o singolo apice
mag è l’indice del magazzino all’interno del quale si vuole ricercare l’utensile. Può
essere espresso direttamente con un numero intero compreso tra 1 e 10 oppure
indirettamente usando una variabile locale o di sistema
lifeVal è il valore di vita residua richiesta. Può essere espresso direttamente con un
numero reale oppure indirettamente usando una variabile locale o di sistema
pockIni è l’indice della pocket del magazzino dalla quale iniziare la ricerca dell’utensile.
Può essere espresso direttamente con un numero intero oppure indirettamente
usando una variabile locale o di sistema
dir direzione della ricerca. I valori permessi sono:
3 ricerca ottimizzata, significa che la ricerca viene effettuata
contemporaneamente in avanti e indietro (senso orario e senso
antiorario)
4 ricerca in avanti o in senso orario
5 ricerca indietro o in senso antiorario
Questo parametro non è utilizzato nel caso di magazzini di tipo planare. Può
essere espresso direttamente con un numero intero oppure indirettamente usando
una variabile locale o di sistema
toolInd è un parametro di uscita e contiene l’indice in tabella utensili dell’utensile trovato
in magazzino. Questo parametro deve essere una variabile locale o di sistema
pockInd è un parametro di uscita e contiene l’indice in magazzino della pocket dove è
stato caricato l’utensile cercato. Questo parametro deve essere una variabile
locale o di sistema
Caratteristiche:
Questa funzione permette di cercare un utensile la cui vita residua sia il più vicina possibile al valore
richiesto. La ricerca viene effettuata a partire da una pocket specificata e nella direzione richiesta.
Nel caso in cui più utensili abbiano una vita residua maggiore del valore richiesto viene scelto l’utensile
cui valore di vita residua più si avvicina al valore richiesto. Se due o più utensili hanno lo stesso valore di
vita residua, allora viene scelto l’utensile più vicino alla pocket di partenza.
Se tutti gli utensili trovati hanno vita inferiore al valore richiesto, allora il comando termina con errore,
ma i parametri di uscita vengono aggiornati con l’indice e la pocket dell’utensile che più si avvicina al
valore richiesto.
Gli errori ritornati dal comando possono essere gestiti da part program attraverso le variabili STE ed ERR,
per maggior dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 255
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando restituisce il numero di tutti gli utensili pronti all’uso che appartengono a un magazzino
dato. Vengono contati separatamente gli utensili a magazzino e quelli fuori magazzino.
Sintassi
dove:
tool è il nome della famiglia di utensili che si vuole cercare nel magazzino. È una
stringa racchiusa tra doppio o singolo apice
mag è l’indice del magazzino all’interno del quale si vuole ricercare l’utensile. Può
essere espresso direttamente con un numero intero compreso tra 1 e 10 oppure
indirettamente usando una variabile locale o di sistema
toolInMag è un parametro di uscita e contiene il numero di utensili a magazzino. Questo
parametro deve essere una variabile locale o di sistema
toolOutMag è un parametro di uscita e contiene il numero di utensili fuori magazzino. Questo
parametro deve essere una variabile locale o di sistema
Caratteristiche:
Questa funzione permette di contare quanti utensili di una data famiglia (utensili con lo stesso codice
utensile) appartengano al magazzino dato. Vengono contati separatamente gli utensili a magazzino e
quelli fuori magazzino.
Se nessun utensile della famiglia richiesta appartiene al magazzino la funzione termina con errore.
Gli errori ritornati dal comando possono essere gestiti da part program attraverso le variabili STE ed ERR,
per maggior dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 256
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Sintassi
dove:
tool è l’indice in tabella utensile dell’utensile che verrà caricato a magazzino. Può
essere espresso direttamente con un numero intero compreso tra 1 e 300 oppure
indirettamente usando una variabile locale o di sistema
mag è l’indice del magazzino all’interno del quale si vuole ricercare l’utensile. Può
essere espresso direttamente con un numero intero compreso tra 1 e 10 oppure
indirettamente usando una variabile locale o di sistema
pock è l’indice della pocket del magazzino dove verrà caricato l’utensile. Può essere
espresso direttamente con un numero intero oppure indirettamente usando una
variabile locale o di sistema
Caratteristiche:
Questa funzione permette di caricare a magazzino un utensile.
Il caricamento avviene se l’utensile e la pocket sono compatibili e se la pocket è contrassegnata come
vuota.
Gli errori ritornati dal comando possono essere gestiti da part program attraverso le variabili STE ed ERR,
per maggior dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 257
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando permette di spostare un utensile che era a magazzino verso il cambio utensili o verso il
mandrino.
Sintassi
dove:
toolInd è l’indice in tabella utensile dell’utensile che verrà scaricato dal magazzino. Può
essere espresso direttamente con un numero intero compreso tra 1 e 300 oppure
indirettamente usando una variabile locale o di sistema
magNum è l’indice del magazzino all’interno del quale si vuole ricercare l’utensile. Può
essere espresso direttamente con un numero intero compreso tra 1 e 10 oppure
indirettamente usando una variabile locale o di sistema
pockInd è l’indice della pocket del magazzino da dove verrà scaricato l’utensile. Può
essere espresso direttamente con un numero intero oppure indirettamente usando
una variabile locale o di sistema
position è la nuova posizione dell’utensile: al momento il comando accetta le posizioni
seguenti:
0: Fuori magazzino
1: A magazzino
2: Sul mandrino
3: Sul cambio utensile
Caratteristiche:
Questa funzione permette di spostare un utensile, che precedentemente era a magazzino, verso il
mandrino, sul cambio utensile o fuori magazzino.
Gli errori ritornati dal comando possono essere gestiti da part program attraverso le variabili STE ed ERR,
per maggior dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 258
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando permette di aggiornare il valore del parametro vita rimanente di un utensile.
Sintassi
dove:
toolInd è l’indice in tabella utensile dell’utensile che verrà scaricato dal magazzino. Può
essere espresso direttamente con un numero intero compreso tra 1 e 250 oppure
indirettamente usando una variabile locale o di sistema
value è il valore che verrà sottratto al valore corrente di vita dell’utensile. Può essere
espresso direttamente con un numero reale oppure indirettamente usando una
variabile locale o di sistema
remLife è un parametro di uscita e contiene il valore aggiornato di vita attuale
dell’utensile. Questo parametro deve essere una variabile locale o di sistema
toolStatus è un parametro di uscita e contiene il valore aggiornato di stato dell’utensile.
Questo parametro deve essere una variabile locale o di sistema
Caratteristiche:
La funzione aggiorna automaticamente gli elementi della tabella utensili, nel caso in cui il valore
aggiornato di vita rimasta sia inferiore o uguale a zero il controllo provvede a dichiarare scaduto
l’utensile e azzera il valore di vita rimasta.
I valori aggiornati di vita rimasta e stato dell’utensile vengono copiati nelle variabili corrispondenti ai
parametri remLife e toolStatus del comando.
Gli errori ritornati dal comando possono essere gestiti da part program attraverso le variabili STE ed ERR,
per maggior dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 259
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando permette di cercare, all’interno di un magazzino una pocket compatibile con un
utensile dato.
Sintassi
dove:
tool è l’indice in tabella utensile dell’utensile per il quale cercare una pocket
compatibile. Può essere espresso direttamente con un numero intero compreso tra
1 e 300 oppure indirettamente usando una variabile locale o di sistema
mag è l’indice del magazzino all’interno del quale si vuole ricercare la pocket. Può
essere espresso direttamente con un numero intero compreso tra 1 e 10 oppure
indirettamente usando una variabile locale o di sistema
dir direzione della ricerca. I valori permessi sono:
0 ricerca ottimizzata, significa che la ricerca viene effettuata
contemporamente in avanti e indietro (senso orario e senso antiorario)
1 ricerca in avanti o in senso orario
2 ricerca indietro o in senso antiorario
Questo parametro non è utilizzato nel caso di magazzini di tipo planare. Può
essere espresso direttamente con un numero intero oppure interettamente usando
una variabile locale o di sistema
pockIni è l’indice della pocket del magazzino dalla quale iniziare la ricerca della pocket
compatibile con l’utensile. Può essere espresso direttamente con un numero intero
oppure indirettamente usando una variabile locale o di sistema
pock è un parametro di uscita e contiene l’indice della pocket del magazzino
compatibile con l’utensile. Questo parametro deve essere una variabile locale o di
sistema
Caratteristiche:
Questa funzione permette di identificare la prima pocket, a partire da quella indicata e nella direzione
di ricerca richiesta, che sia compatibile con l’utensile di indice dato.
Affinchè un utensile e una pocket siano compatibili devono avere:
lo stesso tipo di accesso: casuale o fisso
la stessa forma
la stessa dimensione
la pocket dev’essere libera
Nel caso in cui utensile e pocket siano entrambi con tipo di accesso fisso, la pocket deve essere stata
precedentemente riservata all’utensile corrente.
Gli errori ritornati dal comando possono essere gestiti da part program attraverso le variabili STE ed ERR,
per maggior dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 260
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando permette di identificare quale, tra due pocket, sia più vicina a una terza pocket di
riferimento, considerata come la pocket corrente.
Sintassi
(PKT, CLS, mag, pockCur, pock1, pock2, dir, pockInd, hDis, vDis)
dove:
mag è l’indice del magazzino all’interno del quale si vuole ricercare la pocket. Può essere espresso
direttamente con un numero intero compreso tra 1 e 10 oppure indirettamente usando una
variabile locale o di sistema
pockCur è l’indice nel magazzino della pocket corrente o pocket di riferimento. Può essere espresso
direttamente con un numero intero oppure indirettamente usando una variabile locale o di
sistema
pock1
pock2 sono gli indici nel magazzino delle pocket delle quali si vuole effettuare il confronto di
distanza dalla pocket corrente. Possono essere espressi direttamente con un numero intero
oppure indirettamente usando variabili locali o di sistema
dir direzione della ricerca. I valori permessi sono:
0 ricerca ottimizzata, significa che la ricerca viene effettuata
contemporaneamente in avanti e indietro (senso orario e senso antiorario)
1 ricerca in avanti o in senso orario
2 ricerca indietro o in senso antiorario
Questo parametro non è utilizzato nel caso di magazzini di tipo planare. Può essere espresso
direttamente con un numero intero oppure indirettamente usando una variabile locale o di
sistema
pockInd è un parametro di uscita e contiene l’indice della pocket più vicina alla pocket di riferimento.
Questo parametro deve essere una variabile locale o di sistema
hDis è un parametro di uscita e contiene la distanza tra la pocket di riferimento e la più vicina
delle due pocket del confronto. Nel caso di magazzini planari contiene la distanza orizzontale
tra le due pocket. Questo parametro deve essere una variabile locale o di sistema
vDis è un parametro di uscita e contiene la distanza verticale tra la pocket di riferimento e la più
vicina delle due pocket del confronto. Questo parametro è significativo soltanto nel caso di
magazzini di tipo planare. Questo parametro deve essere una variabile locale o di sistema
Caratteristiche:
Questa funzione permette di identificare quale, tra due pocket, sia la più vicina a una terza pocket
restituendo anche la distanza tra la pocket di riferimento e la pocket più vicina.
Nel caso di magazzini di tipo planare il valore di distanza restituito è spezzato nelle due coordinate
orizzontale e verticale. In questo caso il controllo considera che la distanza unitaria, cioè la distanza tra
due pocket adiacenti, sia la stessa per entrambe le direzioni.
Nel caso di magazzini di tipo lineare o circolare il parametro vDis non è significativo e viene azzerato.
Gli errori ritornati dal comando possono essere gestiti da part program attraverso le variabili STE ed ERR,
per maggior dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 261
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Questo comando permette di cercare in un magazzino la pocket libera compatibile con l’utensile
specificato e che sia la più vicina alla pocket data.
Sintassi
dove:
toolInd è l’indice dell’utensile per il quale si sta cercando la pocket. Può essere espresso
direttamente con un numero intero compreso tra 1 e 250 oppure indirettamente
usando una variabile locale o di sistema
mag è l’indice del magazzino all’interno del quale si vuole ricercare la pocket. Può
essere espresso direttamente con un numero intero compreso tra 1 e 10 oppure
indirettamente usando una variabile locale o di sistema
pockCur è l’indice nel magazzino della pocket corrente o pocket di riferimento. Può essere
espresso direttamente con un numero intero oppure indirettamente usando una
variabile locale o di sistema
pockInd è un parametro di uscita e contiene l’indice della pocket libera più vicina alla
pocket di riferimento. Questo parametro deve essere una variabile locale o di
sistema
Caratteristiche:
Questa funzione permette di identificare la pocket libera compatibile con l’utensile dato più vicina alla
pocket di riferimento.
Affinché la ricerca si possa effettuare è necessario che l’utensile non sia già a magazzino.
Nel caso in cui un utensile sia a posizione fissa verrà restituito l’indice della pocket assegnata
all’utensile, nel caso in cui la pocket sia già occupata la funzione restituirà un errore.
Gli errori ritornati dal comando possono essere gestiti da part program attraverso le variabili STE ed ERR,
per maggior dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART PROGRAM.
45004616J 262
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
14.1 Generalità
Questa appendice descrive la funzionalità che consente al programmatore di gestire nel part program
alcuni errori riscontrati dal sistema eseguendo specifiche istruzioni in modo tale da non bloccare
l'esecuzione del part program stesso.
Sintassi
ERR = valore
dove:
valore Può essere un numero od una variabile locale o di sistema e deve valere 0 o 1.
Se vale 0, la gestione degli errori nel part program è disabilitata e qualsiasi errore
riscontrato blocca l'esecuzione del programma stesso; l'errore viene quindi
visualizzato. Se vale 1, la gestione da part program degli errori è attiva.
Caratteristiche:
Ponendo ERR=1, la gestione da Part Program degli errori è abilitata.
All'accensione il sistema si predispone con ERR=0.
Le pagine seguenti descrivono:
I valori di STA identificanti i diversi ambienti di sistema ed il loro significato
I comandi di programmazione che possono generare uno degli errori gestibili nel part program.
I codici numerici relativi a questi errori (il valore della variabile STE) e relativo significato.
Il numero dell'errore 23/xxx che sarebbe visualizzato nel caso di ERR=0 (Vedi appendice B Manuale di
Programmazione).
Per quanto riguarda gli errori relativi agli ambienti di sistema diversi dall’ambiente processo (cod.23)
fare riferimento al manuale degli errori.
45004616J 263
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio:
Verifica della presenza del pezzo utilizzando il metodo della gestione dell'errore:
(DPP,30,15,500)
G0 Z50
X80 Y100
ERR = 1
G72 Z0 E1
(GTO,END,STE = 1)
ERR = 0
.......................................
.......................................
"END" (DIS, "PEZZO NON PRESENTE")
M...
G72, G73, G74 modificano il valore della variabile STE (se ERR=1); è quindi consigliabile
utilizzare la variabile STE subito dopo il comando che ne va a modificare il valore.
45004616J 264
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 265
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
ERR = 1
(ECM,”G1 X100 F1000”,P2,S)
(GTO, ERROR,STE <> 0)
ERR = 0
.......................................
.......................................
;. . . . .
"ERROR"
;. . . . . ;Gestione dei casi di errore
45004616J 266
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Esempio:
ERR = 1
(DEL, “PROGRAMS\MISSING”)
(OPN, 1, “PROGRAMS\MISSING”, R)
(IF, (STA = 23) && (STE = 32))
(DIS, “File inesistente”)
(OPN, 3, “PROGRAMS\MISSING”, W)
(OPN, 3, "PROGRAMS\MISSING1", W)
(IF, (STA = 23) && (STE = 30))
(DIS, "Canale già in uso")
(ENDIF)
(ENDIF)
LS0 = “ABCDEFGHJIKLMNOPQRSTUVXYWZ”
(WRT, 3, LS0, LS0, LS0, LS0, LS0, LS0,LS0, LS0, LS0, LS0)
(IF, (STA = 23) && (STE = 39))
(DIS, “Record troppo lungo”)
(ENDIF)
(OPN, 1, “PROGRAMS\MISSING”, W)
(IF, (STA = 23) && (STE = 31))
(DIS, “File gia’ aperto”)
(ENDIF)
ERR = 0
45004616J 267
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Errore visualizzato
STA STE Descrizione
se ERR = 0
23 20 Chiusura finestra tramite il pulsante Cancel o tramite icona ---
23 21 Errore nel caricamento dati ---
23 22 Chiusura finestra tramite il pulsante PgUp ---
23 23 Chiusura finestra tramite il pulsante PgDown ---
23 24 Chiusura finestra tramite il pulsante Home ---
23 25 Chiusura finestra tramite il pulsante End ---
45004616J 268
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
45004616J 269
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
14.12 Errori durante il calcolo quote giunto date le quote pezzo (G77)
Errore visualizzato se
Comando STA STE Descrizione
ERR=0
45004616J 270
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata
Contacts:
PRIMA ELECTRO S.p.A.
OSAI Business Unit
Strada Carignano, 48/2
Moncalieri (TO) - ITALY
Tel. +39 011 9899 800
Web: www.osaicnc.com
e-mail: sales@primaelectro.com
45004616J 271