Sei sulla pagina 1di 271

OPENcontrol

Manuale di Programmazione Avanzata

NUMERO DOCUMENTO: 45004616J


RIF. RELEASE: 5.0.2
EDIZIONE: 07
AUTORE: PRIMA ELECTRO S.p.A.
DATA: Febbraio 2018

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.

COPYRIGHT 2017- Prima Electro S.p.A.


Tutti i diritti riservati. Questo documento non può essere riprodotto, né interamente né in parte, senza
autorizzazione scritta.
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

Edizione Data Note Autore

07 Febbraio 2018 Prima Electro S.p.A.

45004616J 2
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

Contenuto

1. ISTRUZIONI DI SICUREZZA .......................................................................................................... 10


1.1 Introduzione ............................................................................................................................................................................... 10
1.1.1 Riferimenti ................................................................................................................................................ 10
1.2 Attenzione e Note ................................................................................................................................................................... 10

1.3 Legenda ....................................................................................................................................................................................... 10

1.4 Aggiornamenti relativi alla presente edizione .................................................................................................................... 11

2. PROGRAMMAZIONE MEDIANTE ALIAS ...................................................................................... 12


2.1 Definizione degli alias ............................................................................................................................................................... 12
2.1.1 File di definizione degli alias globali .......................................................................................................... 12

2.2 Variabili di controllo caricamento del file degli alias globali........................................................................................... 12


2.2.1 ALIASLD – Stato di caricamento del file degli alias globali ........................................................................ 12
2.2.2 ALIASLN – Numero della riga errata ......................................................................................................... 13

2.3 Utilizzo degli alias...................................................................................................................................................................... 13

2.4 Sostituzione degli alias nelle stringhe ................................................................................................................................... 13

3. PROGRAMMAZIONE XML ............................................................................................................ 14


3.1 File corrispondenze parametri XML (Mapping File) ........................................................................................................ 15
3.1.1 Definizione del comando XML .................................................................................................................. 15
3.1.2 Definizione dei parametri di chiamata paramacro ................................................................................... 16
3.1.3 Definizione del blocco ISO parametrico .................................................................................................... 17
3.2 Variabili di verifica caricamento del Mapping File ............................................................................................................. 18
3.2.1 XMLMAP – Stato di caricamento del Mapping File ................................................................................... 18
3.2.2 XMLMAPLN – Numero della riga errata .................................................................................................... 18
3.3 Componenti del programma XML ....................................................................................................................................... 19
3.3.1 Parametro ................................................................................................................................................. 19
3.3.2 Blocco XML ................................................................................................................................................ 19

4. VIRTUALIZZAZIONI E TRASFORMAZIONI 3D ............................................................................ 21


4.1 Virtualizzazioni disponibili ....................................................................................................................................................... 21
4.1.1 UVP – Programmazione in coordinate polari............................................................................................ 21
4.1.2 UVC – Programmazione in coordinate cilindriche .................................................................................... 23
4.1.3 UVA – Programmazione di assi non ortogonali ........................................................................................ 25
4.1.4 LTH – Compensazione velocità relativa .................................................................................................... 26
4.2 Trasformazioni 3D disponibili ............................................................................................................................................... 28
4.2.1 UPR – Rotazione della terna cartesiana .................................................................................................... 28
4.2.2 Esempi di uso di UPR................................................................................................................................. 33

45004616J 3
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

4.2.3 G35 G36 – Rotazione della terna cartesiana ............................................................................................. 35


4.2.4 G37 – G38 – G39 Rototraslazione della terna cartesiana dati 3 punti ...................................................... 36
4.2.5 Tool Center Point (TCP) ............................................................................................................................. 38
4.2.6 Programmazione dei vettori direzione utensile/compensazione ............................................................. 42
4.2.7 Configurazione TCP per compensazione raggio utensile .......................................................................... 44
4.2.8 TCPDEF – Identificativo cinematica di default .......................................................................................... 46
4.2.9 TCPACT - Identificativo cinematica attiva ................................................................................................. 46
4.2.10 TCP – Tool Center Point per macchine con testa Prismatica .................................................................... 47
4.2.11 TCP – Tool Center Point della sola lunghezza utensile.............................................................................. 64
4.2.12 TCP – Tool Center Point per macchine generiche ..................................................................................... 67
4.2.13 $PROGMODE - Programmazione assi rotativi in coordinate sferiche (Phi e Theta) ................................. 88
4.2.14 TCP – UPR e correttori utensile................................................................................................................. 89

4.3 Funzioni di calcolo 3D ............................................................................................................................................................. 90


4.3.1 CTD – Calcolo direzione utensile ............................................................................................................... 90
4.3.2 RFT – Calcolo quote assi rotativi relative alla direzione utensile .............................................................. 93
4.3.3 G77 – Calcolo quote giunto date le quote pezzo ...................................................................................... 95

5. PROGRAMMAZIONE AD ALTA VELOCITÀ (SPLINES) ................................................................ 96


5.1 Programmazione dei punti e caratteristiche del profilo ................................................................................................. 96

5.2 Gestione del cambio di curvatura ........................................................................................................................................ 97

5.3 Gestione spigoli ......................................................................................................................................................................... 97

5.4 SPL – Definizione assi ad alta velocità ................................................................................................................................. 98

5.5 G61 G60 – Ingresso e uscita da programmazione ad alta velocità .............................................................................. 99

5.6 G62 – G63 – G66 – G67 – Interruzione del profilo ..................................................................................................... 100

5.7 MAXLEN – Lunghezza massima spline .............................................................................................................................. 102

5.8 TBS / TBSG0 – Tolleranza sull’asse a velocità di lavoro / rapido per spline ........................................................... 103

5.9 SNMT – Soglia di movimento nullo per spline ................................................................................................................ 104

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.12 DPMODE – Modo di gestione discontinuità ................................................................................................................... 106

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

5.16 CURMODE – Modo gestione cambio curvatura ........................................................................................................... 108

5.17 IDMODE – Modo di gestione discontinuità interne ...................................................................................................... 109

5.18 CEND – Tipo di continuità per condizioni finali ............................................................................................................ 109

5.19 SPL3D – Trasformazione cinematica per Spline ............................................................................................................. 110

6. FILTRI .............................................................................................................................................. 111


6.1 Generalità ................................................................................................................................................................................. 111

45004616J 4
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

6.2 FLT – Programmazione dei filtri ......................................................................................................................................... 112


6.2.1 Id_filtro = 1: Media mobile sul comando ................................................................................................ 114
6.2.2 Id_filtro = 2: Compensazione dell’accelerazione centripeta ................................................................... 115
6.2.3 Id_filtro = 3: Compensazione stacco-inversione ..................................................................................... 115
6.2.4 Id_filtro = 4: Ritardo ................................................................................................................................ 115

7. CICLI FISSI ...................................................................................................................................... 117


7.1 CICLI FISSI G8n ...................................................................................................................................................................... 117

7.2 Caratteristiche del ciclo fisso .............................................................................................................................................. 118

7.3 Movimenti di un ciclo fisso ................................................................................................................................................... 119

7.4 G81 – Ciclo fisso di foratura ............................................................................................................................................... 121

7.5 Ciclo di lamatura ..................................................................................................................................................................... 123

7.6 G83 – Ciclo di foratura profonda ...................................................................................................................................... 124


7.6.1 Ciclo rompi truciolo ................................................................................................................................. 125

7.7 DRP – Distanza di ripresa foro G83 .................................................................................................................................. 126

7.8 G84 – Ciclo di maschiatura senza trasduttore ............................................................................................................... 127

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

7.12 TRP – Percentuale di ritorno di maschiatura .................................................................................................................. 134

7.13 TMD – Modalità di esecuzione della maschiatura .......................................................................................................... 135

7.14 G85 – Ciclo di alesatura (o di maschiatura tramite Tapmatic) ................................................................................... 136

7.15 G86 – Ciclo di barenatura .................................................................................................................................................... 137

7.16 G89 – Ciclo di barenatura con lamatura .......................................................................................................................... 138


7.16.1 Uso di due quote R in un ciclo fisso ........................................................................................................ 139
7.16.2 Aggiornamento delle quote del ciclo fisso .............................................................................................. 140
7.16.3 Aggiornamento delle quote R (inferiore e superiore) durante la lavorazione ....................................... 141

8. CICLI DI TASTATURA.................................................................................................................... 144


8.1 Gestione del tastatore elettronico..................................................................................................................................... 144

8.2 Predisposizione di un ciclo di tastatura ............................................................................................................................. 146


8.2.1 DDP – Definizione dei parametri di tastatura ......................................................................................... 146
8.2.2 Misurazione dinamica del diametro della sfera ...................................................................................... 146
8.2.3 Riqualifica del tastatore .......................................................................................................................... 146
8.2.4 Misurazione dinamica della lunghezza del tastatore .............................................................................. 147
8.2.5 Predisposizione del tastatore ................................................................................................................. 147
8.3 Cicli di tastatura ...................................................................................................................................................................... 148
8.3.1 G72 – Misura di un punto con compensazione ...................................................................................... 148
8.3.2 G73 – Misura dei parametri di un foro ................................................................................................... 149
8.3.3 G74 – Ciclo di riqualifica dell’utensile ..................................................................................................... 150

45004616J 5
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

8.4 UPA – Aggiornamento dell’ascissa del tastatore ............................................................................................................ 151

8.5 UPO – Aggiornamento dell’ordinata del tastatore ........................................................................................................ 151

8.6 Gestione degli errori di tastatura ....................................................................................................................................... 151

8.7 Operazioni con un tastatore mobile.................................................................................................................................. 151


8.7.1 Riqualifica delle origini tramite tastatura di superfici di riferimento ..................................................... 152
8.7.2 Riqualifica delle origini centrando su un foro ......................................................................................... 153
8.7.3 Verifica dei diametri dei fori ................................................................................................................... 153
8.7.4 Verifica delle quote dei piani e delle profondità dei fori ........................................................................ 155
8.8 Operazioni che utilizzano un tastatore fisso ................................................................................................................... 156

9. CICLI DI LAVORAZIONE PER SISTEMI DI TORNITURA ........................................................... 157


9.1 Generalità ................................................................................................................................................................................. 157

9.2 Programmazione del profilo................................................................................................................................................. 158

9.3 Comandi di sgrossatura e finitura ...................................................................................................................................... 159


9.3.1 SPA - Sgrossatura parassiale senza prefinitura ....................................................................................... 159
9.3.2 SPF – Sgrossatura parassiale con prefinitura .......................................................................................... 163
9.3.3 SPP – Sgrossatura parallela al profilo...................................................................................................... 165
9.3.4 CLP – Finitura di un profilo ...................................................................................................................... 167

9.4 FIL – Ciclo di filettatura ........................................................................................................................................................ 168

9.5 TGL – Ciclo di taglio gole .................................................................................................................................................... 172

10. GESTIONE COMUNICAZIONI ................................................................................................. 175


10.1 Generalità ................................................................................................................................................................................. 175
10.1.1 Comandi di gestione del video grafico .................................................................................................... 175
10.1.2 Comandi di accesso a file ........................................................................................................................ 175
10.1.3 Comandi di accesso a porte seriali .......................................................................................................... 175
10.1.4 Comandi di accesso a informazioni generiche ........................................................................................ 175

10.2 Comandi di gestione del video grafico .............................................................................................................................. 176


10.2.1 DIS – Visualizzazione di valori a video ..................................................................................................... 176
10.2.2 DER – Sospensione esecuzione programma con segnalazione di errore ................................................ 176
10.2.3 DEW – Visualizzazione di avvertimenti a video ...................................................................................... 177
10.2.4 DIF – Definizione dei campi di Input ....................................................................................................... 178
10.2.5 INP – Inserimento dati da tastiera .......................................................................................................... 180

10.3 Comandi di accesso a file ..................................................................................................................................................... 182


10.3.1 OPN – apertura di un canale di comunicazione ...................................................................................... 182
10.3.2 WRT – Scrittura di file ............................................................................................................................. 184
10.3.3 REA – Lettura da file ................................................................................................................................ 186
10.3.4 CLO – chiusura del canale ....................................................................................................................... 188
10.3.5 DEL – Cancellazione di un file ................................................................................................................. 189
10.3.6 CPY – copia di un file ............................................................................................................................... 189
10.3.7 REN – Rinomina un file............................................................................................................................ 190
10.4 Comandi di gestione delle porte seriali ............................................................................................................................ 191
10.4.1 SOP - Abilitazione e configurazione della porta seriale .......................................................................... 191

45004616J 6
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

10.4.2 GET – Ricezione dati da linea seriale ....................................................................................................... 194


10.4.3 PUT – trasmissione dati su linea seriale .................................................................................................. 196
10.4.4 SRS – Reset della linea seriale ................................................................................................................. 197
10.4.5 SCL – Disattivazione della porta seriale .................................................................................................. 198
10.5 Comandi di accesso a informazioni generiche ................................................................................................................ 199
10.5.1 GDT – Lettura data e ora del controllo numerico ................................................................................... 199

11. COMANDI RELATIVI ALLA GESTIONE MULTIPROCESSO ................................................... 200


11.1 Generalità ................................................................................................................................................................................. 200

11.2 Note funzionali sulla sincronizzazione tra processi ....................................................................................................... 201


11.2.1 Note sulla funzionalità “WAIT” ............................................................................................................... 201
11.2.2 Note sulla funzionalità "SEND" ............................................................................................................... 201
11.2.3 Scambio dati ........................................................................................................................................... 201
11.2.4 Reset processi sincronizzati .................................................................................................................... 201

11.3 PRO – Definizione del processo di default ...................................................................................................................... 202

11.4 SND- Invio di un messaggio di sincronizzazione ............................................................................................................ 203

11.5 WAI – Attesa di un messaggio di sincronizzazione ....................................................................................................... 205

11.6 EXE – Attivazione automatica di un part program ........................................................................................................ 207

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.11 RAP $A – Lettura della posizione dell’asse ................................................................................................................. 213

11.12 CON – Comando di CYCLE ON ................................................................................................................................. 215

11.13 COF – Comando di CYCLE OFF .................................................................................................................................. 216

11.14 HON – Comando di HOLD ON .................................................................................................................................. 217

11.15 HOF – Comando di HOLD OFF ................................................................................................................................... 218

11.16 RES – Comando di RESET ............................................................................................................................................... 219

11.17 SMD – Set modo operativo............................................................................................................................................. 220

11.18 SAX – Selezione asse per movimento manuale ......................................................................................................... 221

11.19 DIR – Direzione movimenti manuali ............................................................................................................................. 222

11.20 JOG – Valore di Jog incrementale ................................................................................................................................. 223

11.21 FHO – Attivazione/Deattivazione di FEEDHOLD .................................................................................................... 224

11.22 PLS – Lettura delle variabili SW del WinPLUS ........................................................................................................... 225

11.23 PLR – Lettura delle variabili WORD del WinPLUS .................................................................................................. 227

11.24 PLD – Lettura delle variabili DOUBLE del WinPLUS .............................................................................................. 227

11.25 Note sulla funzionalità “ASSI MIGRANTI” .................................................................................................................. 228


11.25.1 Generalità ............................................................................................................................................... 228
11.25.2 Condizioni per l'acquisizione di un asse .................................................................................................. 228

45004616J 7
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

11.26 GTA – Acquisizione assi (Get Axes) ............................................................................................................................ 229


11.26.1 Inibizione delle operazioni di acquisizione e rilascio assi........................................................................ 230
11.26.2 Informazioni inizializzate dopo un comando GTA................................................................................... 230
11.26.3 Informazioni mantenute dopo un comando GTA ................................................................................... 231
11.26.4 Gestione delle condizioni di errore ......................................................................................................... 238

12. VARIABILI TECNOLOGICHE ..................................................................................................... 239


12.1 Introduzione ............................................................................................................................................................................. 239

12.2 Variabili e tabelle ..................................................................................................................................................................... 239


12.2.1 Tabella Origini ......................................................................................................................................... 240
12.2.2 Tabella Utensili........................................................................................................................................ 240
12.2.3 Tabella Offset Utensili ............................................................................................................................. 241
12.2.4 Tabella Utente ........................................................................................................................................ 241
12.2.5 Tabella tecnologica estesa ...................................................................................................................... 241
12.2.6 Tabella dei magazzini .............................................................................................................................. 242
12.2.7 Tabella delle pocket ................................................................................................................................ 242
12.2.8 Variabili di input/output WinPLUS .......................................................................................................... 242
12.2.9 Variabili di tabella mappate su PD .......................................................................................................... 243
12.2.10 Accesso alle variabili di tabella ............................................................................................................... 244
12.2.11 Accesso alle variabili di input .................................................................................................................. 245
12.2.12 Accesso alle variabili di output ............................................................................................................... 245
12.2.13 Variabili Output sincronizzate ................................................................................................................. 246
12.3 LCK – Bloccagio/Sbloccaggio delle tabelle WinPLUS.................................................................................................... 247

12.4 POCKACC – Accesso in scrittura alla tabella pocket .................................................................................................. 249

12.5 LOA – Caricamento delle tabelle in memoria ................................................................................................................ 250

13. USO DI MAGAZZINI E POCKET .............................................................................................. 251


13.1 Introduzione ............................................................................................................................................................................. 251

13.2 TOL – SRC: Ricerca di un utensile in magazzino (generica) ....................................................................................... 252

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.6 TOL – FAM: Conteggio di utensili di una famiglia .......................................................................................................... 256

13.7 TOL – LOA: Caricamento di un utensile a magazzino ................................................................................................. 257

13.8 TOL – UNL: Spostamento di un utensile da magazzino ............................................................................................... 258

13.9 TOL – LIF: Aggiornamento valore di vita utensile ......................................................................................................... 259

13.10 PKT – SRC: Ricerca di pocket libera ............................................................................................................................ 260

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

14. APPENDICE A: GESTIONE ERRORI DA PART PROGRAM .................................................... 263


14.1 Generalità ................................................................................................................................................................................. 263

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.3 Codici identificatori ambienti di sistema: STA ................................................................................................................ 264

14.4 Errori durante il ciclo di tastatura ...................................................................................................................................... 264

14.5 Errori nella gestione "Assi Migranti" .................................................................................................................................. 265

14.6 Errori nella gestione multiprocesso ................................................................................................................................... 266

14.7 Errori nel bloccaggio di una tabella .................................................................................................................................... 266

14.8 Errori nella gestione file da Part Program ........................................................................................................................ 267

14.9 Errori nella gestione porte seriali da Part Program ....................................................................................................... 267

14.10 Errori nell’input da utente ............................................................................................................................................... 268

14.11 Errori durante operazioni su magazzini e pocket ...................................................................................................... 269

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.2 Attenzione e Note


Questo manuale distingue due tipi di istruzioni di sicurezza:
ATTENZIONE è I’equivalente inglese di WARNING ed è usato per richiamare I'attenzione su situazioni che
possono portare a gravi condizioni di errore, danni fisici e morte.
Le NOTE sono usate per richiamare I'attenzione del lettore o fornire ulteriori informazioni utili
sull'argomento trattato. Le NOTE sono meno critiche dei richiami indicati con "ATTENZIONE", ma non
dovrebbero essere trascurate.

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:

ATTENZIONE! Tensione Pericolosa: avverte di situazioni in cui è presente un livello di


tensione che può provocare danni fisici e/o danni alle apparecchiature.
II testo accanto al simbolo spiega come evitare il pericolo di danno.

ATTENZIONE! Pericolo Generico: avverte di situazioni che possono provocare danni


fisici e/o danni alle apparecchiature ma per cause non elettriche. II testo accanto al
simbolo spiega come evitare il pericolo.

Nota: Fornisce o mette in rilievo ulteriori informazioni sull'argomento.

45004616J 10
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

1.4 Aggiornamenti relativi alla presente edizione


La presente emissione è conseguente alle seguenti modifiche apportate al manuale con riferimento alla
versione software 3.4.5 di OPENcontrol.

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

2. PROGRAMMAZIONE MEDIANTE ALIAS

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.

2.1 Definizione degli alias


Un blocco di definizione alias permette di associare a una stringa, un’istruzione o una costante di
utilizzo frequente. Durante l’esecuzione del programma, agli eventuali alias presenti, sono sostituite le
istruzioni o costanti corrispondenti. Un blocco di definizione alias non produce del codice operativo;
durante l'esecuzione del programma il controllo ignora i blocchi di definizione alias.
Un blocco di definizione alias ha la sequente struttura: {define} {nome alias} {valore alias}.
La definizione di un alias può essere seguita solo da un eventuale commento, ma non da altre istruzioni.
La stringa “valore alias”, deve contenere istruzioni e/o valori riconosciuti dal controllo.

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

Esempio non valido:


{define} {LINEARE} {G1} E100=0 ; La definizione di un alias NON può essere seguita da altre istruzioni

2.1.1 File di definizione degli alias globali


Gli alias globali sono validi per tutti i programmi e per tutte le macro.
Gli alias globali, se presenti, sono definiti nel file AliasGlobal.txt.
Ogni riga del file può contenere solo un blocco di definizione alias o un commento.

2.2 Variabili di controllo caricamento del file degli alias globali


Il controllo dispone di due variabili di sola lettura per verificare lo stato di caricamento del file degli
alias globali. La prima variabile permette di conoscere lo stato di caricamento del file degli alias globali,
mentre la seconda specifica il numero di linea dove è presente un errore nel file degli alias globali.

2.2.1 ALIASLD – Stato di caricamento del file degli alias globali


La variabile ALIASLD permette di conoscere lo stato di caricamento del file degli alias globali.
Può assumere i seguenti valori:
0: il file degli alias globali non è stato caricato.
1: file degli alias globali caricato.
2: caricamento del file degli alias globali interrotto a causa di un errore nel file.
3: file degli alias globali caricato, ma non è stato trovato nessuna definizione di alias

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

2.2.2 ALIASLN – Numero della riga errata


La variabile ALIASLN contiene il numero della riga errata nel caso in cui il caricamento del file degli alias
globali fallisca.
Il valore di questa variabile è diverso da zero soltanto nel caso in cui la variabile ALIASLD sia 2.

2.3 Utilizzo degli alias


Una volta definito, un alias globale o locale può essere utilizzato all’interno di tutti i blocchi del
programma.
L’alias è richiamato mediante la sintassi {nome alias}.

Esempio di utilizzo degli alias:

File AliasTab.txt (definizione degli alias globali):


{define} {LINEARE} {G1} ; Associa alla stringa “LINEARE”, l’istruzione “G1”

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

2.4 Sostituzione degli alias nelle stringhe

ATTENZIONE: la sostituzione degli alias nelle espressioni di tipo “stringa” o ‘stringa’, è


eseguita solo se la stringa è delimitata da doppi apici (“””), ma non è eseguita se delimitata
da apici singoli (“’”).

Esempio di sostituzione degli alias nelle stringhe:


{define} {PROVA1} {MIASTRINGA}
{define} {PROVA2} {"MIASTRINGA"}

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

Esempi di comandi XML mappati su paramacro:


Mapping File:
<XML_MOVE> 5 double X double Y double FEED
<XML_MODE> integer ABSOLUTE
<XML_CIRC> INLINE :Gmode: X:Xpos: Y:Ypos: I:Ival: J:Jval:

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

Esempi di comandi XML ricodificati in blocchi ISO:


Mapping File:
XML_CIRC INLINE :Gmode: X:Xpos: Y:Ypos: I:Ival: J:Jval:
XML_LIN INLINE G:Gmode: X :Xpos: Y =:Ypos:
XML_ABSOLUTE INLINE G90
XML_INCR INLINE G91 ; Sets incremental mode
XML_ASS_SYNC INLINE & :VarName: = :Expr:

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

3.1 File corrispondenze parametri XML (Mapping File)


Il mapping file è il file che definisce quali comandi XML corrispondano a una chiamata a paramacro e
quali debbano essere ricodificati come blocco ISO.
Il mapping file definisce anche:
 i nomi dei parametri del comando XML e la loro mappatura sulle variabili H (comando XML
mappato su paramacro)
 il blocco ISO, parametrizzato, che corrisponde al comando XML (comando XML ricodificato)

Il nome del file è fisso ed è XMLrules.txt.


Eventuali modifiche del mapping file saranno attive dopo il riavvio del sistema o dopo l’esecuzione del
comando PLC di aggiornamento del mapping file.

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.

3.1.1 Definizione del comando XML


Tale sezione contiene il nome del comando XML.
Il nome comando XML è formato da una stringa di caratteri alfanumerici e dai caratteri ′_′ e ′-′, racchiusa
tra i caratteri ′<′ e ′>′.

Il primo carattere del comando XML deve essere una lettera maiuscola.

45004616J 15
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

3.1.2 Definizione dei parametri di chiamata paramacro


Se il comando XML necessita di parametri, questi saranno elencati dopo il nome del comando.

Sintassi:

indice tipo1 param1 tipo2 param2 …….. tipon paramn

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.

Esempi di comandi XML con chiamata a paramacro:


<ABSOLUTE_PROGRAMMING> double AccVal  il valore del parametro AccVal verrà caricato nella
variabile H0 al momento della chiamata della paramacro.
<ACCURACY> 10 double Xstart double Xend  il valore del parametro Xstart verrà caricato nella
variabile H10 al momento della chiamata della paramacro e il valore del parametro Xend verrà caricato
nella variabile H11.

45004616J 16
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

3.1.3 Definizione del blocco ISO parametrico


Se il comando XML deve essere ricodificato come blocco ISO, allora il nome del comando XML nel
mapping file deve essere seguito dalla sintassi seguente:

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

Esempi di comandi XML ricodificati su blocchi ISO:


<SUB_START> INLINE (RPT, !RPTCNT)
 il comando SUB_START verrà ricodificato ed eseguito come : (RPT, !RPTCNT)
<G1_X> INLINE G1 X :PosX: F2500
 il commando G1X verrà ricodificato come: G1 XvalorediPosX F2500

45004616J 17
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

3.2 Variabili di verifica caricamento del Mapping File


Il controllo dispone di due variabili di sola lettura che permettono di verificare l’avvenuto caricamento
del Mapping File.
La prima variabile permette di conoscere lo stato di caricamento del Mapping File, mentre la seconda
specifica il numero di linea dove è presente un errore nel mapping file.

3.2.1 XMLMAP – Stato di caricamento del Mapping File


La variabile XMLMAP permette di conoscere lo stato di caricamento del Mapping File.
Può assumere i seguenti valori:
0: il Mapping File non è stato caricato
1: Mapping File caricato
2: Mapping file in corso di aggiornamento
3: Errore di sintassi nel file
4: Errore di nome comando XML troppo lungo
5: Errore di nome parametro troppo lungo
6: Errore di sezione INLINE troppo lunga
7: Errore di elemento non riconosciuto
8: Errore di indice di parametro troppo grande

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.

3.2.2 XMLMAPLN – Numero della riga errata


La variabile XMLMAPLN contiene il numero della riga errata nel caso in cui il caricamento del Mapping
File fallisca.
Il valore di questa variabile è diverso da zero solo quando il valore della variabile XMLMAP è maggiore di
2.

45004616J 18
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

3.3 Componenti del programma XML


3.3.1 Parametro
Un parametro è una stringa composta da caratteri alfanumerici e dai caratteri ′-′ e ′_′ che identifica un
parametro di un comando XML.
Per esempio, i seguenti sono parametri XML validi:
Speed
ID
X
FLOW_ID

3.3.2 Blocco XML


I blocchi XML sono i blocchi che permettono di eseguire un comando XML con i suoi parametri.
Un blocco XML può occupare più di una linea di part program.
La seguente tabella mostra la sintassi utilizzata dai blocchi XML:
Inizio blocco comando XML assegnazione parametri fine blocco
< BLOCCO COMANDO ASSEGNAZIONE PARAMETRI />

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

Per esempio, i seguenti possono essere comandi XML validi:


ABSOLUTE
CIRCLE
CUT_FAST
GET-TOOL

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″

Esistono due nomi di parametro predefiniti e riservati: BLOCKNUMBER e MARKER.


Il parametro BLOCKNUMBER permette di definire il numero di blocco corrispondente al blocco XML.
Il parametro MARKER assegna al blocco XML una label di tipo marker. Per maggiori informazioni sulle
label di tipo marker fare riferimento al Manuale di programmazione.

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

Indica che questo blocco XML ha come numero di blocco 13.

<INCREMENTAL_PROGRAMMING MARKER = “PROGINCR” />


Indica che a questo blocco è associato il marker PROGINCR e corrisponderebbe al seguente blocco (che
però non è accettato da OPENControl in quanto si tratta di una sintassi non valida):
$”PROGRINCR”<INCREMENTAL_PROGRAMMING />

45004616J 20
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

4. VIRTUALIZZAZIONI E TRASFORMAZIONI 3D

Le virtualizzazioni e le funzioni di trasformazione 3D sono un insieme di prestazioni che permettono di


gestire in un qualunque spazio tridimensionale gli assi reali della macchina utensile.
Le virtualizzazioni vengono utilizzate nel caso in cui gli assi reali della macchina utensile non
corrispondono ad assi cartesiani ortogonali. Le funzioni di trasformazione 3D permettono di definire un
sistema di riferimento cartesiano roto-traslato rispetto a quello reale della macchina o di programmare
direttamente il movimento della punta utensile senza dover tenere conto della cinematica di macchina.

4.1 Virtualizzazioni disponibili


COMANDO FUNZIONE
UVP Programmazione in coordinate polari
UVC Programmazione in coordinate cilindriche
UVA Programmazione di assi non ortogonali
LTH Compensazione velocità relativa

4.1.1 UVP – Programmazione in coordinate polari


Il comando UVP permette di programmare una macchina dotata di un sistema di riferimento polare (un
asse lineare e un asse rotativo) come se fosse dotata di due assi ortogonali.

Sintassi

(UVP, af1af2, av1av2, r)


(UVP)

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

Il raggio minimo viene calcolato tramite la seguente formula:


𝐹 360
𝑟= ∗
𝑉𝑚𝑎𝑥 2𝜋
Dove:
r raggio minimo
F velocità di avanzamento programmata (mm/min o inch/min)
Vmax velocità di rapido dell’asse rotativo

La limitazione sulla velocità di avanzamento viene effettuata dinamicamente, così da permettere


avanzamenti a velocità elevata in punti di lavoro sufficientemente lontani dal centro di lavorazione.

Esempio di programmazione in coordinate polari

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

4.1.2 UVC – Programmazione in coordinate cilindriche


Il comando UVC permette di programmare una macchina dotata di un sistema di riferimento cilindrico
come se fosse dotata di due assi ortogonali.

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

(DIS,"ESEMPIO UVC");- Programmazione in coordinate cilindriche -


T1.1M6
S2000F300M3
B0
XY20Z10
E30=60;RAGGIO DEL CILINDRO
(UVC,B,W,E30)
G16WY
E31=2*3.1415*E30
G41G1W0Y20
Z-12
G1W80Y20
G2W98.77813Y28.49601I80J45
G1W122.4554Y52.08126
G2W140.171Y60I140.71J35
G1W180Y60
G2W205Y35I280J35
G3W220Y20I220J35
G40G1W277
GZ20
(UVC)
M30

45004616J 24
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

4.1.3 UVA – Programmazione di assi non ortogonali


Il comando UVA permette di programmare assi non ortogonali come se invece lo fossero.

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

Esempio di programmazione in coordinate polari


N1 T1.1M6 V
N2 S1000M3
N7
N3 GX0Y0
30
N4 (UVA,XY,UV,45)
N5 G1U20VF110 N8 N6
N6 V30 N9
10
N7 U0
-10 0 20 U
N8 V0 N5
N9 U-10V10
N10 (UVA)
N11 GX50

4.1.4 LTH – Compensazione velocità relativa


In molte applicazioni il percorso di lavorazione è funzione del movimento contemporaneo degli assi
cartesiani della macchina e di un asse rotante.
Nel programma devono essere programmate sia le quote cartesiane sia la quota dell’asse rotante.

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

Esempio di programmazione in modalità LTH

Nel seguente esempio si ipotizza di lavorare su un tubo quadrato di semilato 40mm.


La posizione dell’asse del tornio è X=100, Y=200, Z=20.

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

4.2 Trasformazioni 3D disponibili


COMANDO FUNZIONE

UPR
G35 Rototraslazione della terna cartesiana XYZ nello spazio
G36
G37-38-39
Programmazione in quote pezzo
TCP
Movimentazione lungo la direzione utensile

4.2.1 UPR – Rotazione della terna cartesiana


Nota
Comando non disponibile con OPEN-10
Con OPEN-20:
o UPR tipo (0, 1, 4) richiede l’opzione A30
o UPR tipo (10, 14) richiede l’opzione A39
o UPR tipo (2, 3, 6, 12, 16) richiede l’opzione A40
L’opzione A39 include l’opzione A30
L’opzione A40 include l’opzione A39
L’opzione A40 richiede l’opzione A31 o A32
Con OPEN-30 non è richiesta nessuna opzione, sono inclusi tutti i tipi di UPR

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

1 - Incrementale: le rototraslazioni sono riferite alla terna in uso all’atto


della programmazione. Questo tipo di rotazione è possibile se è già stata
programmata una precedente rotazione (assoluta la prima volta,
incrementale le volte successive)

2 - Assoluto con trasformazione su 5 assi: le caratteristiche sono simili al


tipo 0, ma la rotazione degli assi lineari influenza la posizione dei due
assi rotativi. All'attivazione della funzione UPR, gli assi rotativi assumono
un nuovo valore che individua la posizione dell'asse utensile rispetto al
nuovo sistema virtuale

45004616J 28
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

3 - Incrementale con trasformazione su 5 assi: le caratteristiche sono simili


al tipo 1 a cui vanno aggiunte le considerazioni descritte nel punto
precedente

4 - Piano di rotazione determinato automaticamente in base alla


direzione dell’asse utensile

6 - come 4 ma con trasformazione 5 assi (vedi 2)

10 - Globale assoluto: le caratteristiche sono le stesse del tipo 0, ma la


rotazione programmata rimane attiva anche con successivi UPR di tipo
non globale

12 - Globale di tipo 2: le caratteristiche sono simili al tipo 2 ma la rotazione


programmata rimane attiva anche con successivi UPR di tipo non globale

14 - Globale di tipo 4: le caratteristiche sono simili al tipo 4 ma la rotazione


programmata rimane attiva anche con successivi UPR di tipo non globale

16 - Globale di tipo 6: le caratteristiche sono simili al tipo 6 ma la rotazione


programmata rimane attiva anche con successivi UPR di tipo non globale

99 - senza ulteriori parametri, disabilita tutte le modalità UPR attive


compresa la rototraslazione globale.

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.

o1 valore delle traslazioni dell’origine rispetto al sistema di riferimento attuale.


o2 Gli assi cui si riferiscono le traslazioni sono gli assi specificati dai parametri
o3 ax1, ax2 e ax3.
Nel caso di UPR assoluto la coordinata è riferita all’origine in uso all’atto della
programmazione UPR.
Nel caso di UPR incrementale la coordinata rappresenta l’incremento rispetto
all’origine “UPR” già in uso.
Nel caso in cui o1,o2,o3 non siano presenti, l'origine del sistema di riferimento
coincide con l'origine del sistema fisico in uso

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.

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

Le modalità 4 e 6, ed i corrispondenti di tipo globale, determinano il nuovo piano di rotazione in base


alla direzione dell’utensile (quindi in base alla posizione degli assi rotativi). Il nuovo piano, ipotizzando
la programmazione (UPR, 4, XYZ,...) avrà l’asse Z’ coincidente con la direzione utensile, l’asse X’
giacente nel primo quadrante del piano XY originario, l’asse Y’ di conseguenza in base alla regola di
descrizione della terna cartesiana.

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.

Compatibilità sintassi Serie10


È possibile utilizzare la vecchia sintassi del controllo Serie10 nella quale vengono specificati i nomi degli
assi virtuali.

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

4.2.2 Esempi di uso di UPR


Negli esempi che seguono si presuppone che il sistema di riferimento sia rappresentato dalla terna
cartesiana XYZ. Negli esempi 1, 2, 3, 4, 5 l'origine del sistema di riferimento coincide con l'origine in uso
all'atto della programmazione di UPR.

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

Il sistema ruotato è ottenuto tramite:


4.2.2.2 (UPR,1,XYZ, 10, 0, 0, 3, 8, 5)
Traslazione dell’origine rispetto al sistema di
riferimento attivo (X′′Y′′Z′′)
Rotazione di 10° intorno all’asse X′′

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

4.2.3 G35 G36 – Rotazione della terna cartesiana


I codici G35 e G36 permettono di definire una rototraslazione di tre assi appartenenti al processo.
Rappresentano un caso particolare del triletterale UPR.

Sintassi

G35 ax1 o1 ax2 o2 ax3 o3 [a r1 b r2 c r3]


G36 ax1 o1 ax2 o2 ax3 o3 [a r1 b r2 c r3]
G35
G36

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.

Le tre rotazioni specificate vengono effettuate nel seguente ordine:


1. Rotazione intorno al terzo asse specificato nel triletterale (ax3)
2. Rotazione interno al secondo asse della terna generata dalla prima rotazione
3. Rotazione intorno al terzo asse della terna generata dalla seconda rotazione

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.

xi1 yi1 zi1 Coordinate teoriche del primo punto.


I valori possono essere espressi direttamente utilizzando un numero reale oppure
indirettamente utilizzando una variabile o un parametro E.

xi2 yi2 zi2 Coordinate teoriche del secondo punto.


I valori possono essere espressi direttamente utilizzando un numero reale oppure
indirettamente utilizzando una variabile o un parametro E.

xi3 yi3 zi3 Coordinate teoriche del terzo punto.


I valori possono essere espressi direttamente utilizzando un numero reale oppure
indirettamente utilizzando una variabile o un parametro E.

xf1 yf1 zf1 Coordinate reali del primo punto.


I valori possono essere espressi direttamente utilizzando un numero reale oppure
indirettamente utilizzando una variabile o un parametro E.

xf2 yf2 zf2 Coordinate reali del secondo punto.


I valori possono essere espressi direttamente utilizzando un numero reale oppure
indirettamente utilizzando una variabile o un parametro E.

xf3 yf3 zf3 Coordinate reali del terzo punto.


I valori possono essere espressi direttamente utilizzando un numero reale oppure
indirettamente utilizzando una variabile o un parametro E.

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

4.2.5 Tool Center Point (TCP)


Nota: comando non disponibile con OPEN-10, richiede l’opzione A31 o A32 con OPEN-20,
è incluso in OPEN-30
L’opzione A32 include l’opzione A31

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:

Programmazione in quote pezzo (TCP, 1):


Le quote programmate sono riferite al pezzo.
Questa modalità deve essere utilizzata quando i profili da eseguire interessano sia il movimento
degli assi lineari (1÷3) sia quello degli assi rotativi (1÷2) e si vuole che l'utensile sia sempre a
contatto con la superficie da lavorare. Inoltre le quote degli assi lineari sono riferite al pezzo.
Il sistema, infatti, si assume il compito di compensare gli spostamenti adeguando
automaticamente la posizione dei tre assi lineari in funzione degli assi rotativi in modo tale da
mantenere la punta dell'utensile sul profilo definito degli assi lineari.

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

Movimentazione nel piano utensile:


o Movimento lungo direzione utensile (TCP, 5):

Questa modalità permette di eseguire movimenti lungo la direzione dell'utensile.


Alla sua attivazione viene generato dal sistema un asse virtuale il cui nome deve essere stato
precedentemente caratterizzato in AMP o definito nella variabile di cinematica $TDNAME.
La movimentazione dell’asse virtuale comporta un movimento degli assi lineari tale per cui
l'utensile si sposta lungo la direzione da esso indicata, ovvero lungo la direzione individuata
dalla posizione degli assi rotativi.

Direzione
utensile

45004616J 39
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

o Movimento lungo il piano utensile (TCP, 5, 1, 2):

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.

c) Gli assi all'atto dell'attivazione di (TCP,5) sono riferiti.


In questo caso, indipendentemente dal fatto che l'interruzione si sia verificata oppure no durante
una lavorazione con modalità TCP, la direzione dell'utensile è data dalla posizione attuale degli
assi rotativi (e non da quella degli assi al momento dell'interruzione, che comunque, in
condizioni di lavoro normali, coincidono).

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

4.2.6 Programmazione dei vettori direzione utensile/compensazione


In tutte le modalità TCP precedentemente descritte è possibile programmare, oltre alle quote assi,
anche differenti vettori/versori.

Lunghezza
utensile
Raggio
utensile

[p, q, d]
[i, j, k] Raggio spigolo

[m, n, o]

Le terne disponibili sono:


i, j, k: versore direzione utensile
I parametri i, j, k permettono di specificare l’asse direzione utensile orientato dalla punta
dell’utensile verso il suo attacco

m, n, o: versore direzione normale al profilo di lavoro.


I parametri m, n, o vengono utilizzati per definire la direzione normale alla superficie di lavoro.

p, q, d: versore direzione applicazione raggio utensile


I parametri p,q,d definiscono il vettore su cui applicare la compensazione raggio (a partire dal
centro dell’utensile). Per una fresa a candela il raggio spigolo è nullo e i versori pqd coincidono
con mno

u, v, w: vettore di compensazione parassiale per compensazione raggio


utensile
I parametri u, v, w costituiscono una metodologia alternativa ai versori mno e pqd per il calcolo
della compensazione raggio utensile: compensazione che, anziché agire in direzione
perpendicolare al profilo programmato (mno), è ottenuta spostando il punto programmato lungo
la direzione uvw di una quantità pari al raggio.

Il vettore uvw può essere di modulo anche non unitario.

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

4.2.7 Configurazione TCP per compensazione raggio utensile

Se non si vuole compensazione raggio utensile, o la si vuole ma


=> $COMPRAD(idCinem) = 0
gestita mediante G41/G42 oppure dal vettore uvw

Se si vuole compensazione raggio utensile con angoli


$TOOLANG, $TORANG (corrispondenti alle L399 e L358 della => $COMPRAD(idCinem) = 1
Serie 10)

Se si vuole compensazione raggio utensile programmando i


=> $COMPRAD(idCinem) = 2
versori mno

Se si vuole compensazione raggio utensile programmando i


=> $COMPRAD(idCinem) = 3
versori mno e pqd

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

Al contrario, utilizzando i fattori di compensazione, le coordinate XYZ programmate vengono


inizialmente offsettate di un valore pari al raggio utensile nella direzione di uvw.
Sul profilo così compensato, sono quindi riportati fedelmente tutti gli spigoli del profilo programmato da
cui conseguono, rispetto all’utilizzo di mno, potenziali “brusche” variazioni di direzione del percorso
utensile durante la lavorazione. Inoltre la feed viene applicata sul profilo compensato e risulta di
conseguenza non più perfettamente congruente a quella impostata che è invece riferita al profilo
programmato (ovviamente con utensili di piccolo raggio la differenza può risultare trascurabile).

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

4.2.8 TCPDEF – Identificativo cinematica di default


Questo comando permette di specificare l’identificativo della cinematica di default alla quale si
referiscono i comandi TCP.

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.

4.2.9 TCPACT - Identificativo cinematica attiva


La variabile di sola lettura TCPACT contiene l’identificativo della cinematica attualmente in uso.
Il suo valore è compreso tra 0 e 4, dove 0 indica che il TCP non è attivo.

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.

La testa di tipo Double-Twist è un caso particolare di questa macchina.

La modalità TCP viene disabilitata con (TCP) oppure RESET.

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

DESCRIZIONE NOME VARIABILE VALORI VALIDI


Offset testa orizzontale (asse rotativo primario)
È il valore di offset, espresso in gradi, che si deve
associare all'asse della testa orizzontale al fine di far
coincidere il piano contenente l'utensile con il piano XZ
della macchina.
Per determinare tale offset ruotare l'asse orizzontale
in modo tale che il piano che contiene l'utensile
coincida con il piano XZ, e che dopo tale rotazione un
$OFFSROTP(idCinem) -360 ÷ 360°
movimento positivo della testa basculante direzioni
l'utensile verso Z-.
A questo punto prendere la quota a video, moltiplicare
per il verso di rotazione della testa orizzontale e
cambiare segno.
Il movimento corrisponde alla rotazione dell’asse
orizzontale necessaria a portare la testa nella
posizione mostrata in figura 2.9
Offset testa basculante (asse rotativo secondario)
(valore dipendente dal portautensile attivo).
È il valore di offset, espresso in gradi, che si deve
associare all'asse della testa basculante al fine
posizionare l’utensile lungo la direzione Z-
$OFFSROTT(idCinem,
Per determinare tale offset ruotare l'asse basculante in -360 ÷ 360°
ToolHold)
modo tale da portare la testa nella posizione mostrata
in figura 2.9
A questo punto prendere la quota a video, moltiplicare
per il verso di rotazione della testa basculante e
cambiare segno.
Parametro A (distanza lungo X tra Pc e Pr)
Distanza lungo il primo asse (X) tra il punto di controllo
Pc e il punto di rotazione Pr. Tale distanza deve essere
$PCPRX(idCinem)
espressa in mm e ha valore positivo quando nel passare
da Pc a Pr ci si muove lungo la direzione negativa
dell’asse.
Parametro B (distanza lungo Y tra Pc e Pr).
Distanza lungo il secondo asse (Y) tra il punto di
controllo Pc e il punto di rotazione Pr. Tale distanza
$PCPRY(idCinem)
deve essere espressa in mm e ha valore positivo
quando nel passare da Pc a Pr ci si muove lungo la
direzione negativa dell’asse.
Parametro C (distanza lungo Z tra Pc e Pr).
Distanza lungo il terzo asse (Z) tra il punto di controllo
Pc e il punto di rotazione Pr. Tale distanza deve essere
$PCPRZ(idCinem)
espressa in mm e ha valore positivo quando nel passare
da Pc a Pr ci si muove lungo la direzione negativa
dell’asse.

45004616J 49
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

DESCRIZIONE NOME VARIABILE VALORI VALIDI


Parametro D (distanza lungo X tra Pr e Pu).
Distanza lungo il primo asse (X) tra il punto di
rotazione Pr e il punto di attacco utensile Pu. Tale $PRPUX(idCinem,
distanza deve essere espressa in mm e ha valore ToolHold)
positivo quando nel passare da Pr a Pu ci si muove
lungo la direzione negativa dell’asse.
Parametro E (distanza lungo Y tra Pr e Pu).
Distanza lungo il secondo asse (Y) tra il punto di
rotazione Pr e il punto di attacco utensile Pu. Tale $PRPUY(idCinem,
distanza deve essere espressa in mm e ha valore ToolHold)
positivo quando nel passare da Pr a Pu ci si muove
lungo la direzione negativa dell’asse.
Parametro F (distanza lungo Z tra Pr e Pu).
Distanza lungo il terzo asse (Z) tra il punto di rotazione
Pr e il punto di attacco utensile Pu. Tale distanza deve $PRPUZ(idCinem,
essere espressa in mm e ha valore positivo quando nel ToolHold)
passare da Pr a Pu ci si muove lungo la direzione
negativa dell’asse.
Lunghezza 1 (rinvio angolare).
Distanza tra il centro del rinvio ed il centro del $L1(idCinem, ToolHold)
mandrino (lunghezza L1 in figura 2.12).
Lunghezza 2 (rinvio angolare).
Distanza tra centro testa e centro del rinvio angolare $L2(idCinem, ToolHold)
(lunghezza L2 in figura 2.12).
Angolo α (rinvio angolare).
$ALFA (idCinem,
Angolo di scostamento rispetto alla direzione Y- -180 ÷ 180°
ToolHold)
(angolo α in figura 2.12)
Angolo β (rinvio angolare).
$BETA(idCinem,
Angolo di scostamento rispetto alla verticale (angolo β -90 ÷ 90°
ToolHold)
in figura 2.12).
Inclinazione asse orizzontale (alternativo a Id testa
orizzontale)
Si considererà la testa orizzontale alla posizione fissa
$TILTROTP(idCinem) -360 ÷ 360°
così specificata.
È un valore segnato, funzione del "verso testa
orizzontale" configurato.
Inclinazione asse verticale (alternativo a Id testa
verticale)
Si considererà la testa verticale alla posizione fissa così
$TILTROTT(idCinem) -360 ÷ 360°
specificata.
È un valore segnato, funzione del "verso testa
verticale" configurato.
Tipo compensazione raggi utensile:
0 nessuna compensazione da TCP
1 compensazione con angoli $TOOLANG, $TORANG $COMPRAD(idCinem) 0÷3
2 compensazione con versori (mno)
3 compensazione con versorsi (mno e pqd)

45004616J 50
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

DESCRIZIONE NOME VARIABILE VALORI VALIDI


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 (vedi
$TORANG(idCinem) 0 ÷ 90°
figura 2.14)
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
$OPRADP(idCinem)
valore serve a 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
$OPRADT(idCinem)
valore serve a 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.
Modalità limiti operativi: è una variabile a bit che
serve ad abilitare/disabilitare il controllo dei limiti
$OPLIMMODE(idCinem) 0 ÷ 15
operativi sulla punta utensile. Per il suo significato
vedere a fine tabella
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).
$TDNAME(idCinem)
Deve essere un nome asse valido e, al momento
dell’attivazione TCP, non deve già esistere un asse con
lo stesso nome

45004616J 51
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

DESCRIZIONE NOME VARIABILE VALORI VALIDI


Nome asse “ascissa per direzione utensile”, tra apici.
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
Nome asse “ordinata per direzione utensile”, tra apici.
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
$P1HEAD(idCinem, 0)
Posizione del primo punto misurato per la correzione
$P1HEAD(idCinem, 1)
del disallineamento della testa dopo montaggio
$P1HEAD(idCinem, 2)
$P2HEAD(idCinem, 0)
Posizione del secondo punto misurato per la correzione
$P2HEAD(idCinem, 1)
del disallineamento della testa dopo montaggio
$P2HEAD(idCinem, 2)
$P3HEAD(idCinem, 0)
Posizione del terzo punto misurato per la correzione
$P3HEAD(idCinem, 1)
del disallineamento della testa dopo montaggio
$P3HEAD(idCinem, 2)
Programmazione assi rotativi in coordinate sferiche
(Phi e Theta). Per il suo significato fare riferimento al $PROGMODE(idCinem) 0÷1
relativo 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 per programmazione rotativi in coordinate $NEGLIMOPH(idCinem)
sferiche)
Limite operativo positivo per asse virtuale Phi (valido
solo per programmazione rotativi in coordinate $POSLIMOPH(idCinem)
sferiche)
Limite operativo negativo per asse virtuale Theta
(valido solo per programmazione rotativi in coordinate $NEGLIMOP(idCinem)
sferiche)
Limite operativo positivo per asse virtuale Theta
(valido solo per programmazione rotativi in coordinate $POSLIMOP(idCinem)
sferiche)
Offset per asse virtuale Phi: valore di angolo in cui si
$OFFSROTH(idCinem)
ha lo zero di Phi.
Offset per asse virtuale Theta: valore di angolo in cui
$OFFSROTV(idCinem)
si ha lo zero di Theta

45004616J 52
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

$OPLIMMODE - Modalità limiti operativi:


Premesso che, quando il TCP è attivo, i limiti operativi sui giunti (configurati in AMP) vengono controllati
sempre e solo durante l’interpolazione del movimento (fase realtime).
E’ possibile pilotare il controllo dei limiti operativi, configurati in AMP sulla punta utensile, in base alla
variabile $OPLIMMODE e più precisamente: quando la variabile $OPLIMMODE è nulla vengono controllati i
limiti operativi sulla punta utensile sia a livello di precalcolo che in fase realtime; quando la variabile
$OPLIMMODE vale 1 viene disabilitato, a livello di precalcolo, il controllo sulla punta utensile.
Inoltre i bit 1, 2 e 3 vengono utilizzati per attivare il controllo realtime del limite operativo riferito alla
punta utensile.

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

Fig. 2.11 Vista dall’alto

Z
Y
Angolo +
-180° +180°

Pu Y

L1 X
X Angolo +
(antiorario)


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°

Fig. 2.13 Configurazione angolo di contatto $TOOLANG

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.

Raggio utensile Lunghezza


$TORANG

90° Raggio spigolo

Fig. 2.14 Utensile di tipo toroidale

Raggio utensile

Lunghezza
utensile
$TORANG

Raggio spigolo

90°

Fig. 2.14 Utensile di tipo sferico

45004616J 57
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

Esempio di configurazione di una macchina con testa prismatica

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.

Le righe “Esempio” descrivono tutte la configurazione della stessa 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

La variabile associata a questo parametro è $TILTBASC, il cui unico indice identifica la


cinematica.

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

La variabile associata a questo parametro è $DIRROTP, il cui unico indice identifica la


cinematica.

Esempio: $DIRROTP(1) = -1 (testa sx 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.

La variabile associata a questo parametro è $OFFSROTP, il cui unico indice identifica la


cinematica.

Esempio: $OFFSROTP(1) = -90° (testa sx Figura b)

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.

Esempio: $DIRROTT(1) = -1 (testa sx Figura e)

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

La scelta di questi punti è libera, ma è opportuno effettuarla in modo da semplificare la


misurazione delle varie distanze tra i punti.
Quando è possibile è consigliato scegliere PC e PU in modo che si trovino alla stessa quota
verticale (posizione sul terzo asse lineare TCP, in genere Z): questa scelta permette
all’utilizzatore finale di non preoccuparsi se il TCP sia attivo o meno quando andrà a determinare
in macchina una origine pezzo in Z (preset origine); in entrambi i casi la quota in Z coincide.
Se possibile è consigliato scegliere come punto P R il punto di intersezione dei due assi rotativi
(immaginandoli proiettati sul piano XZ).

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

possiamo evidenziare che rispetto al punto PU:


 l’asse di rotazione orizzontale (asse WORK) è spostato verso X+ (offsetX) e Y+ (offsetY)
 il punto di intersezione tra i due assi rotativi WORK e TOOL (vista frontale) è spostato
verso Z+ (offsetZ)
A questo punto si scelgono i tre punti PU, PR e PC come detto sopra:
 PU sul naso mandrino
 PR sull’asse di rotazione basculante (TOOL) nel punto di intersezione tra i due assi rotativi
(front view di Figura f)
 PC sull’asse di rotazione orizzontale (WORK) alla stessa quota Z di Pu
Questa scelta di punti si può schematizzare così:

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)

$PCPRX(1)= 0 ; nessuno spostamento lungo X


$PCPRY(1)= + offsetY ; segno positivo poiché lo spostamento è verso Y-
$PCPRZ(1)= - offsetZ ; segno negative poiché lo spostamento è verso Z+
$PRPUX(1,1)= + offsetX ; segno positivo poiché lo spostamento è verso X-
$PRPUY(1,1)= 0 ; nessuno spostamento lungo Y
$PRPUZ(1,1)= + offsetZ ; segno positivo poiché lo spostamento è verso Z-

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

4.2.11 TCP – Tool Center Point della sola lunghezza utensile


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)


indipendentemente dall'orientamento e dal tipo dell'utensile (sferico o toroidale). La posizione
controllata dal sistema coincide con il punto di innesto dell'utensile nel mandrino.
L'attivazione di questo algoritmo viene fatta direttamente nel programma tramite il triletterale TCP.
La modalità TCP viene disabilitata con (TCP) oppure RESET.

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

Definizione direzione utensile e direzione normale alla superficie


Come già detto, questo tipo di TCP richiede che vengano specificate la direzione dell’utensile e la
direzione normale alla superficie di lavoro. Ad ogni punto programmato è quindi associato un versore che
indica la direzione utensile, identificato dai parametri i, j, k, e un versore normale alla superficie di
lavoro, identificato dai parametri m, n, o.
Prima dell’attivazione del TCP è necessario definire la posizione iniziale dei due vettori
programmandone i valori.
Con TCP attivo non è possibile programmare m, n, o, i, j, o k senza un corrispondente movimento degli
assi appartenenti al TCP. Il vettore da essi definito non deve esser nullo e, se i parametri non vengono
programmati su di un blocco, si considera che le due direzioni non siano mutate.

45004616J 66
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

4.2.12 TCP – Tool Center Point per macchine generiche


Nota: comando non disponibile con OPEN-10, richiede l’opzione A32 con OPEN-20, è
incluso in OPEN-30
L’opzione A32 include l’opzione A31

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

Tool  Assi lineari  1° tavola  2° tavola  [3° tavola ] Pezzo

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

Tale struttura può essere schematizzata tramite la seguente tabella:


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

Dove le abbreviazioni significano rispettivamente:

LI1 Primo asse lineare della catena cinematica.


LI2 Secondo asse lineare della catena cinematica.
LI3 Terzo asse lineare della catena cinematica.
WRK Asse rotativo più vicino al pezzo.
TOL Asse rotativo più vicino all’utensile.
MID Asse rotativo intermedio.

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

Machine Bed Machine Bed Machine Bed Machine Bed


Toll B23 B12 WRK

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

Descrizione della catena Cinematica di macchina


Scopo della descrizione della catena cinematica di macchina è definire come il movimento di un asse si
propaga sui successivi.
Occorre stabilire le traslazioni e le rotazioni per passare da un sistema di riferimento al successivo per
tutti gli assi “reali” della macchina (lineari e rotativi) e per tre assi “fittizi”: l’asse utensile, l’asse pezzo
e l’asse rinvio angolare. Le rotazioni per passare da una terna cartesiana all’altra devono essere eseguite
sempre nell’ordine asse X, asse Y ed asse Z.

Le regole da rispettare per definire tali trasformazioni sono le seguenti:


Definire una terna cartesiana arbitraria solidale con il machine bed e una terna cartesiana per
ogni componente della catena cinematica.
Partendo dalla terna relativa al MB spostarsi, attraverso i componenti di destra della catena
cinematica di macchina, fino ad arrivare alla terna relativa al Pezzo.
Partendo dalla terna relativa al MB spostarsi, attraverso i componenti di sinistra della catena
cinematica di macchina, fino ad arrivare alla terna relativa al Tool.
Nel passaggio da una terna di un componente alla successiva determinare prima le traslazioni
sulla terna di partenza e poi le rotazioni per portare l’asse Z + dalla posizione della terna di
partenza a quella di arrivo.

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

Asse pezzo: o asse Work, la terna cartesiana deve corrispondere al sistema di


riferimento con cui è stato programmato il pezzo e come questo viene
staffato sulla macchina

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+

In questo caso la catena cinematica, partendo dall’utensile e andando al pezzo è la seguente:

Tool Rot Rot Rot Lin 3 Lin 2 Lin 1 Rot Rot Rot Pezzo
T --- B A Z X Y --- --- --- P

TOL WRK LI3 LI2 LI1

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:

Machine bed -> Asse Y -> Pezzo.

Machine bed  Asse Y

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.

Machine bed  Asse X

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

Occorre definire il disassamento tra il centro di rotazione di B ed il punto di attacco utensile-mandrino;


tale valore, essendo una traslazione, deve essere applicato rispetto alla terna “Asse B” e nel nostro caso
equivale al valore K rispetto all’asse Y.
Poiché non è presente il rinvio angolare non è necessario definire le traslazioni e le rotazioni e le terne
cartesiane “asse utensile” e “asse rinvio angolare” coincideranno.

In base a quanto descritto sino ad ora, la catena cinematica può essere riepilogata dalla seguente
tabella:

Asse da Rotazione Rotazione Rotazione


Offset X Offset Y Offset Z
raggiungere su X su Y su Z
Y 0 0 0 +90 0 +180
Pezzo 0 0 0 +90 0 +180
X 0 0 0 0 +90 0
Z 0 0 0 0 -90 0
A 0 0 0 0 0 0
B 0 0 0 -90 0 0
Utensile 0 K 0 +90 0 0
Rinvio
0 0 0 0 0 0
angolare

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

In questo caso la catena cinematica, partendo dall’utensile e andando al pezzo è la seguente:


Tool Rot Rot Rot Lin 3 Lin 2 Lin 1 Rot Rot Rot Pezzo
T --- Z Y X --- C --- P

LI3 LI2 LI1 WRK

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:

Machine bed -> Asse C -> Pezzo

Machine bed  Asse C

Z Z Z
Y Y Y
Nessuna rotazione Nessuna rotazione
X X X

Machine Bed Asse C 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 Y -> Asse Z -> Utensile.

Machine bed  Asse X

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

Asse Y Posizione intermedia Asse Z

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:

$CINTYPE(idCinem) = 10 ;macchina con configurazione generica

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

asse utensileasse rotativo utensileverticaleordinataascissaasse rotativo workasse pezzo

che corrisponde ad una cinematica di tipo MIX (in cui manca il terzo rotativo opzionale). Si imposta di
conseguenza il corrispondente parametro:

$MAC(idCinem) = 1 ;cinematica di tipo MIX

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:

$BED(idCinem) = 0 ;machine bed di tipo WRK

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

MB  ascissa  ordinata  verticale  tool  utensile


MB  asse work  pezzo

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

$CINVRT(idCinem,0) = 0 ; offset di LI3 lungo l’ascissa


$CINVRT(idCinem,1) = 0 ; offset di LI3 lungo l’ordinata
$CINVRT(idCinem,2) = 0 ; offset di LI3 lungo il verticale
$CINVRT(idCinem,3) = 0 ; rotazione di LI3 attorno all’ascissa
$CINVRT(idCinem,4) = - 90 ; rotazione di LI3 attorno all’ordinata
$CINVRT(idCinem,5) = - 90 ; rotazione di LI3 attorno alla verticale

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

$CINROTT(idCinem,0) = 0 ; offset rotativo TOOL lungo l’ascissa


$CINROTT(idCinem,1) = 0 ; offset rotativo TOOL lungo l’ordinata
$CINROTT(idCinem,2) = + pivot ; offset rotativo TOOL lungo il verticale (PIVOT)
$CINROTT(idCinem,3) = + 90 ; rotazione rotativo TOOL attorno all’ascissa
$CINROTT(idCinem,4) = 0 ; rotazione rotativo TOOL attorno all’ordinata
$CINROTT(idCinem,5) = 0 ; rotazione rotativo TOOL attorno alla verticale

tool rot tool


Z Per passare dal rotativo tool al riferimento dell’asse utensile, è
Y necessaria dapprima una traslazione lungo Y- pari al pivot (a sinistra) e
quindi una rotazione -90 attorno a X (a destra).
X Y
pivot
Z
X

45004616J 85
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

$CINT(idCinem,toolHold,0) = 0 ; offset TOOL lungo l’ascissa


$CINT(idCinem,toolHold,1) = - pivot ; offset TOOL lungo l’ordinata (-PIVOT)
$CINT(idCinem,toolHold,2) = 0 ; offset TOOL lungo il verticale
$CINT(idCinem,toolHold,3) = - 90 ; rotazione TOOL attorno all’ascissa
$CINT(idCinem,toolHold,4) = 0 ; rotazione TOOL attorno all’ordinata
$CINT(idCinem,toolHold,5) = 0 ; rotazione TOOL attorno alla verticale

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

Z Per passare quindi dal riferimento del MB (a


sinistra) al riferimento del rotativo work (a destra)
MB tenendo conto dei due spiazzamenti meccanici
Y evidenziati sopra, è necessaria dapprima una
traslazione lungo Z- (offsetZ) e lungo Y- (offsetY) e
work rot quindi una rotazione di -90° attorno a Y. La
offsetZ X configurazione del rotativo work risulterà di
conseguenza la seguente:
X
offsetY Y
Z
$CINROTP(idCinem,0) = 0 ; offset rotativo WORK lungo l’ascissa
$CINROTP(idCinem,1) = - offsetY ; offset rotativo WORK lungo l’ordinata
$CINROTP(idCinem,2) = - offsetZ ; offset rotativo WORK lungo il verticale
$CINROTP(idCinem,3) = 0 ; rotazione rotativo WORK attorno all’ascissa
$CINROTP(idCinem,4) = - 90 ; rotazione rotativo WORK attorno all’ordinata
$CINROTP(idCinem,5) = 0 ; rotazione rotativo WORK attorno alla verticale

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

Termina così anche la configurazione delle seconda catena cinematica.


Si noti che, come conseguenza di questa configurazione, il riferimento finale ottenuto per l’utensile e
per il pezzo coincidono perfettamente per cui le due sezioni in cui la macchina è stata suddivisa vanno
ad agire esattamente nello stesso punto.
Non essendo fisicamente presente un terzo asse rotativo, i corrispondenti parametri vanno messi a zero.

$CINROTM(idCinem,0) = 0 ; offset terzo rotativo lungo l’ascissa


$CINROTM(idCinem,1) = 0 ; offset terzo rotativo lungo l’ordinata
$CINROTM(idCinem,2) = 0 ; offset terzo rotativo lungo il verticale
$CINROTM(idCinem,3) = 0 ; rotazione terzo rotativo attorno all’ascissa
$CINROTM(idCinem,4) = 0 ; rotazione terzo rotativo attorno all’ordinata
$CINROTM(idCinem,5) = 0 ; rotazione terzo rotativo attorno alla verticale

45004616J 87
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

4.2.13 $PROGMODE - Programmazione assi rotativi in coordinate sferiche (Phi e Theta)


La variabile $PROGMODE, a seconda del valore assunto, permette di attivare la gestione degli assi
rotativi come se fossero:

1- le coordinate Φ (phi) e θ (theta) di un sistema


sferico.
2- i rotativi di una testa Double Twist

$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

4.2.14 TCP – UPR e correttori utensile


Se si ha la necessità di lavorare in contemporanea con una cinematica attiva, una rotazione dei piani
cartesiani e con utensili è buona norma seguire il seguente ordine di programmazione:


hn oppure Tx,n Attivazione correttore utensile

(TCP,1) oppure (TCP,5) Attivazione della cinematica di macchina

(UPR,0,… Attivazione piani rototraslati

(UPR) Disattivazione piani rototraslati


(TCP) Disattivazione della cinematica di macchina
h0 Disattivazione correttore utensile

45004616J 89
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

4.3 Funzioni di calcolo 3D

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.

4.3.1 CTD – Calcolo direzione utensile


Questo comando, puramente matematico, permette di richiedere al sistema, il calcolo del versore
perpendicolare a un piano dati quattro punti, oppure, il calcolo della direzione utensile a partire dalle
posizioni di due assi rotativi.
La modalità di calcolo direzione utensile non è disponibile nel caso di TCP a 3 o 4 assi.

Sintassi

( CTD,1, PNTVAR[(]n[)], IJKVAR[(]m[)] )


( CTD,2, ROTVAR[(]p[)], IJKVAR[(]m[)] )

dove:

PNTVAR E’ il nome di una variabile contenente 4 punti nelle coordinate XYZ nel sistema di
riferimento programma. (*)

n È l’indice da cui partire a leggere le 12 quote relative ai 4 punti in input. Può


essere espresso con un numero intero oppure con un parametro E.

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

e memorizzati nelle variabili E a partire dal P2


P3
l’indice 0, si vuole calcolare il versore
P1
perpendicolare al piano per i primi 3 punti Y
e il cui verso è definito dalla posizione di P4
rispetto al suddetto piano. P4
IJK5
Si voglia poi salvare il risultato del calcolo nella
variabile utente !IJK costituita da 10 double
Le linee di programma da eseguire saranno:
X

E0 = 3, 1, 20, 2, 5, 20, 6, 4, 20 IJK1
E9 = 1, 1, 10
(CTD, 1, E0, !IJK(1))

Al termine del comando la variabile !IJK conterrà, a partire dall’indice 1 i seguenti valori: 0.0, 0.0, -1.0

Se si prende invece come quarto punto P5(2,2,30) si otterrà il versore !IJK5:



E0 = 3, 1, 20, 2, 5, 20, 6, 4, 20
E9 = 2, 2, 30
(CTD, 1, E0, !IJK(5))

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

Se invece il rotativo utensile, dell’esempio precedente, fosse a -45°


le linee di programma da eseguire sarebbero:

E0 = -45, 90 IJK3
(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

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

( RFT, IJKVAR[(]n[)], ROTRIFVAR[(]m[)], AngToll, ROTVAR[(]p[)] )

dove:

IJKVAR E’ il nome di una variabile contenente le componenti del vettore direzione


utensile espresso nel sistema di riferimento assoluto (giunti). (*)

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

m È l’indice da cui partire a leggere le 2 quote relative agli assi rotativi di


riferimento. Può essere espresso con un numero intero oppure con un parametro E.

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

4.3.3 G77 – Calcolo quote giunto date le quote pezzo


Questo comando permette di calcolare quali siano le quote giunto finali per un movimento programmato
utilizzando le quote pezzo.

Sintassi

G77 [codici-G] [operandi ]

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

5. PROGRAMMAZIONE AD ALTA VELOCITÀ (SPLINES)

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.

5.1 Programmazione dei punti e caratteristiche del profilo


Un profilo è un insieme di punti che formano il part-program ISO della superficie da lavorare generato
dal CAD/CAM nel quale devono essere rispettate le caratteristiche descritte in questo paragrafo.
Sui punti programmati verrà costruita una curva polinomiale che descriverà la traiettoria da percorrere.
Tale traiettoria passerà per i punti programmati a meno di una soglia di tolleranza configurabile. Le
modalità di congiungimento dei punti verranno definite dai codici G0, G1, G10, G2 e G3 programmabili
assieme ai punti.

Per un corretto calcolo delle curve polinomiali, si consiglia di programmare i punti


utilizzando almeno 5 cifre dopo il punto decimale (es 10.37854); nel caso in cui la
programmazione non sia sufficientemente precisa potrebbero insorgere delle piccole
irregolarità sul profilo.

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

5.2 Gestione del cambio di curvatura


È importante, nel caso della programmazione ad alta velocità, riuscire a identificare i cambi di curvatura
poiché in questi casi il comportamento delle spline potrebbe non essere soddisfacente.
Per esempio si supponga di avere un tratto curvilineo seguito da un tratto rettilineo. La spline sul tratto
rettilineo tenderebbe a oscillare o a generare una “gobba”, è quindi importante riuscire a individuare e
ridurre il più possibile questo fenomeno.

p2 p3
p1

Senza gestione Con gestione


cambio curvatura cambio curvatura

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.

5.3 Gestione spigoli


La mancata individuazione di spigoli potrebbe generare delle errate oscillazioni sulle splines.

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.

Senza gestione Con gestione


spigoli spigoli
I parametri di configurazione per questa funzione sono: DAC, DAV e DPMODE.

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

5.4 SPL – Definizione assi ad alta velocità


Nota: comando non disponibile con OPEN-10, richiede l’opzione A38 con OPEN-20 e
OPEN-30

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

5.5 G61 G60 – Ingresso e uscita da programmazione ad alta velocità


I codici G61 e G60 determinano l’ingresso e l’uscita dalla programmazione ad alta velocità.

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

G60 È il blocco che segnala la fine della 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

5.6 G62 – G63 – G66 – G67 – Interruzione del profilo


I codici G62 – G63 – G66 e G67 introducono un’interruzione del profilo programmato così da separare il
profilo in due curve differenti.

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

5.7 MAXLEN – Lunghezza massima spline


La variabile permette di definire la lunghezza massima dei polinomi generati.
È consigliato utilizzare un valore maggiore di 5 mm (o pollici), valori inferiori potrebbero rallentare la
lavorazione.

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

5.9 SNMT – Soglia di movimento nullo per spline


È possibile definire una soglia di movimento nullo per le curve generate.

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

valore è il valore della soglia espresso nell’unità di misura attiva

Caratteristiche:
Se la distanza tra due punti generati successivi è inferiore alla soglia di movimento nullo, allora il
secondo punto non viene preso in considerazione.

5.10 TBV / TBVG0– Precisione sui versori a velocità di lavoro / di rapido


Le variabili TBV e TBVG0 definiscono la banda di tolleranza da utilizzare nella generazione delle curve
polinomiali calcolate a seguito della programmazione sui versori sia nel caso di movimenti a velocità di
lavoro (TBV) che a velocità di rapido (TBVG0).

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

5.12 DPMODE – Modo di gestione discontinuità


La variabile permette di definire il codice di transizione che il controllo inserisce quando l’angolo tra
due elementi del profilo HSM supera l’angolo di soglia per discontinuità.

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.

5.13 CURLEN – Lunghezza minima tratto lungo per cambio curvatura


La variabile definisce la lunghezza minima che deve assumere il “tratto lungo” per poter gestire la
variazione di curvatura.
La modalità di gestione del cambio di curvatura è definita dalla variabile CURMODE.

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

5.14 CURRAP – Rapporto lunghezza tratto lungo/corto per cambio curvatura


La variabile definisce il valore minimo del rapporto tra la lunghezza del tratto lungo e del tratto corto
affinché venga individuata la variazione di curvatura.

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

Senza gestione Con gestione


cambio curvatura cambio curvatura

La modalità di gestione del cambio di curvatura è definita dalla variabile CURMODE.

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

5.16 CURMODE – Modo gestione cambio curvatura


La variabile definisce il comportamento adottato dal controllo nel cambio di curvatura.

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

5.17 IDMODE – Modo di gestione discontinuità interne


La variabile permette di definire il codice di transizione che il controllo inserisce quando incontra una
discontinuità nel profilo risultante dall’algoritmo di programmazione ad alta velocità.
Gli spigoli presenti sul profilo originale sono trattati dalle variabili DAC, DAV e DPMODE, è però possibile
che l’algoritmo di ottimizzazione del percorso generi ulteriori spigoli, soprattutto se le soglie di
tolleranza richieste sono molto basse.

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

5.18 CEND – Tipo di continuità per condizioni finali


La variabile definisce le condizioni di calcolo da imporre sull’inizio e sulla fine (relativamente ai punti
programmati) di ogni tratto di curva.
La programmazione di tale valore può influire sulla “dolcezza” della curva generata.

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

Nel caso di fine curva le considerazioni diventano:


1. Viene forzato il passaggio per l’ultimo punto
2. Viene forzato il passaggio per l’ultimo punto e anche la derivata prima, equivale a imporre la
direzione congiungente gli ultimi due punti
3. Viene forzato il passaggio per l’ultimo punto, la derivata prima e la derivata seconda, equivale a
imporre la curvatura generata dagli ultimi tre punti

45004616J 109
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

5.19 SPL3D – Trasformazione cinematica per Spline


Attiva o meno l’High Speed Machine (HSM), ossia l’algoritmo di trasformazione cinematica delle Splines
da quote pezzo a quelle giunto

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

Nota: comando non disponibile con OPEN-10.


La programmazione SPL3D = 1 richiede l’opzione A33 con OPEN-20 e OPEN-30.
Il controllo di presenza dell’opzione viene eseguito alla programmazione di G61.
In caso di opzione non presente viene generato l’errore 50/62
Opzione non abilitata (A33 High Speed Enable)
L’opzione A33 include l’opzione A38.
L’opzione A33 richiede l’opzione A31 o A32

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.

In modalità HSM (SPL3D = 1) non vengono gestiti:


Cinematiche con solo lunghezza utensile (cinematiche tipo 2)
Programmazione lungo la direzione utensile (TCP,5)
UPR con gestione dei rotativi (UPR tipo >=2)
Virtualizzazioni (UVC, UVP, UVA, LTH)

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

6.2 FLT – Programmazione dei filtri


Il triletterale FLT permette di configurare e abilitare dei filtri che agiscono sulla geometria e sulla
dinamica del movimento degli assi.

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

(FLT, modo1, id_filtro [,asse] [, parametri])


(FLT, modo2 [,id_filtro [,assi]])

dove:
modo1 Rappresenta la modalità di tipo non esecutiva effettuabile sul filtro:

R : lettura di parametri; è possibile leggere i valori dei parametri di un filtro


precedentemente scritti con lo stesso triletterale o
configurati in ODM. I parametri devono essere
variabili numeriche, in caso contrario viene
segnalato errore di formato.
Sintassi ammesse:
(FLT, R, id_filtro[, nome_asse, parametri])
Per questa modalità il numero di parametri
programmati deve essere uguale a quello gestito
dal filtro specificato nel triletterale

W : scrittura di parametri; permette di configurare il filtro, scrivendone i


relativi parametri, ma non di abilitarlo. In questa
modalità i parametri possono essere sia variabili
che numeri.
N.B.: La prima configurazione di un filtro comporta
l’allocazione di una “risorsa filtro”. In totale
possono essere allocate al massimo 64 “risorse
filtro”.
Sintassi ammesse:
(FLT, W, id_filtro, parametri)
(FLT, W, id_filtro, nome_asse, parametri)
Per queste modalità il numero di parametri
programmati deve essere uguale a quello gestito
dal filtro specificato nel triletterale

S : richiesta stato filtro ; -1 = filtro non configurato


0 = filtro non attivo
1 = filtro attivo
Lo stato viene caricato nella variabile specificata
dall’unico parametro ammesso da questo comando
Sintassi ammesse:
(FLT, S, id_filtro[, nome_asse, parametro)

45004616J 112
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

modo2 Rappresenta la modalità esecutiva effettuabile sul filtro:

E : abilitazione ; permette l’attivazione contemporanea di uno o


tutti i filtri su uno o più assi del processo elencati
in nome_assi
D = disabilitazione ; permette la disattivazione contemporanea di uno o
tutti i filtri su uno o più assi del processo elencati
in nome_assi
C = cancellazione ; Permette di liberare una “risorsa filtro” quando
non si intende più utilizzarlo. Questo comando può
essere utilizzato a fronte di un errore (-5) di risorse
esaurite in fase di configurazione di un nuovo filtro.
Sintassi ammesse:
(FLT, modo2)
(FLT, modo2, id_filtro)
(FLT, modo2, id_filtro, nomi_assi)

id_filtro Identificativo del filtro su cui operare. È obbligatorio se programmato con il


modo1. Per maggiori dettagli sul valore da inserire in questo campo si faccia
riferimento ai paragrafi successivi, che descrivono le tipologie dei filtri conosciuti.

asse Programmazione con il modo1, Specifica l’asse su cui applicare l’algoritmo di


filtraggio può essere:
Un singolo carattere ASCII, se l’asse è programmato per nome.
Un carattere ‘/’ seguito da un numero intero, se programmato per ID.
Se non specificato il sistema applicherà il comando di scrittura (unica operazione
ammessa) a tutti gli assi del processo.

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

6.2.1 Id_filtro = 1: Media mobile sul comando


È possibile, con questo tipo di filtro mediare tutti i punti e le velocità inviate ai servoamplificatori su di
un numero configurabile di campioni. Questa prestazione permette di migliorare il comportamento
dinamico del sistema elettromeccanico in presenza di programmazione per punti realizzata con
tolleranze abbastanza basse. Effettuando una media mobile sui punti è possibile arrotondare di fatto gli
spigoli della poligonale generata dai sistemi CAD.

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

6.2.2 Id_filtro = 2: Compensazione dell’accelerazione centripeta


Con questo tipo di filtro è possibile introdurre un fattore correttivo sulla posizione comandata di un
punto. Il fattore correttivo è pari all’accelerazione sul punto divisa per il guadagno del filtro. Un
ulteriore contributo è presente se VFF è attiva.

Parametro Descrizione

Guadagno del filtro (Kv).


1 Deve essere positivo ed è espresso in migliaia di giri al minuto.
Il parametro è obbligatorio.

6.2.3 Id_filtro = 3: Compensazione stacco-inversione


Con questo tipo di filtro è possibile intervenire sul comportamento degli assi durante l’inversione di
direzione.

Parametro Descrizione

Guadagno di salita picco inversione (Ks).


1 Deve essere compreso tra 0 e 1.
Il parametro è obbligatorio.
Guadagno di discesa picco inversione (Kd).
2 Deve essere compreso tra 0 e 1.
Il parametro è obbligatorio.
Ampiezza di applicazione del filtro: indica il range di applicazione del filtro intorno
3
all’inversione di direzione.

6.2.4 Id_filtro = 4: Ritardo


Con questo tipo di filtro è possibile ritardare, di un tempo configurabile, l’emissione verso gli assi dei
punti e delle relative dinamiche di movimentazione calcolate durante la fase di interpolazione.

Parametro Descrizione

1 Numero di punti (campionature) di ritardo

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

disabilitare tutti i filtri su tutti gli assi del processo = (FLT, D)


>

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.

(FLT, W, 1, 8, 0.54) Controllo ERF standard e nessuna riduzione errore su cerchi.


(FLT, W, 1, 8, 0.54, 1) Controllo ERF stretto e nessuna riduzione errore su cerchi.
(FLT, W, 1, 8, 0.54, 3) Controllo ERF stretto e riduzione errore su cerchi.
(FLT, W, 1, 8, 0.54, 3, 180) Controllo ERF stretto, riduzione errore su cerchi e ottimizzazione
velocità archi fino a 180 gradi.

45004616J 116
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

7. CICLI FISSI

7.1 CICLI FISSI G8n


I codici da G81 a G89 definiscono i cicli fissi che consentono di programmare una serie di operazioni
multiple (foratura, maschiatura, alesatura, ecc.) senza ripetere i parametri o i comandi di ogni singola
operazione.
Nel blocco contenente la dichiarazione di ciclo fisso G81-G89 non occorre programmare alcun movimento
assi. Il ciclo viene così memorizzato ma non ancora eseguito.
Il ciclo comincia ad essere applicato dal blocco successivo alla definizione del ciclo fisso G81-G89. Per
ripetere un ciclo dopo averlo eseguito una volta è sufficiente programmare le coordinate di partenza del
ciclo successivo. Nel solo caso di G84 è possibile eseguire immediatamente l’operazione di maschiatura
direttamente quando si programma la G84 (vedi variabile TMD).
Gli "assi mandrino" per il ciclo fisso possono essere assegnati nel blocco di definizione del ciclo fisso. Per
esempio, nel blocco G81 R Y-20, l'asse Y è "l'asse mandrino" per il ciclo fisso.
Le funzioni G8n sono modali. Prima di programmare un nuovo ciclo fisso bisogna cancellare il precedente
usando G80. La funzione G80 deve essere programmata in un blocco dopo l'ultimo ciclo da eseguire. Non
è possibile programmare un G8n se è attiva la correzione del profilo (G41/G42).
Quando un ciclo fisso richiede un tempo di sosta (G82, G83, G84 (opzionalmente), G89), ci sono due
differenti modi per ottenerlo:
usare come valore di default il tempo definito in AMP
programmare un blocco contenente la variabile DWT = tempo (in secondi)

45004616J 117
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

7.2 Caratteristiche del ciclo fisso


La seguente tabella elenca i cicli fissi disponibili con le relative caratteristiche.

CICLO FISSO DISCESA SOSTA ROTAZIONE RITORNO


G81 foratura in lavoro no normale in rapido
G82 lamatura in lavoro si normale in rapido
G83 foratura profonda in lavoro intermittente (discesa no normale in rapido
con scarico in lavoro intervallata da risalite
truciolo in rapido)
G84 Maschiatura senza in lavoro avviamento rotazione no rotazione in lavoro ad R1 in
trasduttore mandrino invertita rapido ad R2 se
presente
G84 Maschiatura con in lavoro avviamento rotazione si da rotazione in lavoro ad R1 in
trasduttore mandrino cnf invertita rapido ad R2 se
presente
G85 alesatura o in lavoro no normale in lavoro ad R1 in
maschiatura con rapido ad R2 se
Tapmatic presente
G86 barenatura in lavoro avvio rotazione no arresto stop avviamento rapido
mandrino
G89 barenatura con in lavoro si normale in lavoro ad R1 in
lamatura rapido ad R2 se
presente
G80 cancella cicli fissi

45004616J 118
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

7.3 Movimenti di un ciclo fisso


Quando viene programmato un ciclo fisso, gli assi seguono questa sequenza di movimenti.
1. Posizionamento rapido sull'asse del foro
2. Accostamento rapido al piano di lavoro (quota R1)
3. Avanzamento a velocità di lavoro fino alla quota programmata (Z)
4. Funzioni di ciclo a fondo foro
5. Ritorno rapido o a velocità di avanzamento di lavoro alla quota R (R2 se la quota di ritorno è
diversa da quella di avvicinamento R1).

Movimento di avanzamento

Rapido

Esempi di cicli fissi


In questa sezione vengono mostrati due casi tipici di cicli fissi.

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

7.4 G81 – Ciclo fisso di foratura


Sintassi

G81 [codici-G] R.. [R..] asse.. [F.. ] [ausiliaria]

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.

R Definisce la quota di ritorno dopo la Z


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

F Definisce la velocità di avanzamento utilizzata durante l'operazione di ciclo fisso. Può


essere programmata con l'indirizzo F seguito dal valore.

ausiliaria Funzione programmabile ausiliaria: M, S, T. In un blocco si possono programmare fino a 4


funzioni M, una S (velocità di rotazione mandrino) ed una T (selezione dell'utensile).

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

7.5 Ciclo di lamatura


Sintassi

G82[codici-G] R.. [R..] asse.. [F.. ] [ausiliaria]

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

asse Quota di fine foro (vedere G81).


F

F Velocità di avanzamento (vedere G81).


Z
ausiliaria Altre funzioni M, S, T, (vedere G81).

Esempio:
La figura seguente illustra una lavorazione di lamatura.

G82 R5 Z-15 F.. M..


X.. Y..

45004616J 123
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

7.6 G83 – Ciclo di foratura profonda


Sintassi

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

R Quota di inizio foro (vedere G81).

R Quota di ritorno (vedere G81).

asse Quota di fine foro (vedere G81).

I Definisce l'incremento della profondità dopo


ciascun ciclo di estrazione, per lo scarico
del truciolo. È dato dall'indirizzo I seguito
dal valore.

J Definisce il minimo incremento della profondità dopo il quale il ciclo procede con
incrementi costanti. È dato dall'indirizzo J seguito dal valore.

K Definisce il fattore di decremento di I fino a raggiungere J. È dato dall'indirizzo K seguito


dal valore.

F Velocità di avanzamento (vedere G81).

ausiliaria Altre funzioni M, S, T, (vedere G81).

Caratteristiche:
Il codice G83 può generare movimenti differenti a seconda che i parametri I, J e K siano programmati
oppure no.

Se i parametri I, J e K sono programmati, vengono generati i seguenti spostamenti:


1. Avvicinamento in rapido sull'asse del foro da eseguire
2. Avvicinamento in rapido alla quota R1.
3. Avanzamento a velocità di lavoro alla quota R 1 + I
4. Ritorno in rapido alla quota R1 (scarico truciolo)
Il ritorno alla R iniziale avviene ad ogni movimento di scarico truciolo.
5. Avvicinamento in rapido alla quota:
R = Rprecedente + I – X (dove X vale 1 per default o, nel caso di programmazione
della variabile DRP, assume il valore assegnato a tale variabile.)
6. Calcolo del nuovo valore di I con le formule:
I = Iprecedente * K se I * K > J
I=J se I * K < J
Ripetizione dei punti 2-3-4-5-6 fino al raggiungimento della quota finale in Z.

45004616J 124
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

7.6.1 Ciclo rompi truciolo


Se i parametri J e K non sono programmati, vengono generati i seguenti spostamenti:
1. Avvicinamento in rapido sull'asse del foro
2. Avvicinamento in rapido a quota R1
3. Avanzamento a velocità di lavoro alla quota R + I
4. Sosta dell'asse mandrino per il tempo programmato nel DWT od in mancanza di questo per il
tempo di sosta caratterizzato.
5. Ripetizione dei punti 3 e 4 fino al raggiungimento della quota finale in Z.

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

7.7 DRP – Distanza di ripresa foro G83


Il comando DRP definisce in mm la distanza di ripresa foro nei cicli G83 (con IJK programmati).
Tale valore viene inizializzato ad 1 dal sistema. Può essere assegnato da Tastiera o da Part Program.

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

Il RESET ripristina il valore 1.

45004616J 126
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

7.8 G84 – Ciclo di maschiatura senza trasduttore


Questo codice G84 opera con un mandrino senza trasduttore. Il mandrino deve essere nella modalità
esclusiva di appartenenza ad un processo.

Sintassi

G84 [codici-G] R.. [R..] asse.. [F.. ]

dove:

codici-G Altri codici G compatibili con il ciclo


fisso G84 (consultare "Codici G
R2
compatibili" nel Cap. 2).
K
R1
R Quota di avvicinamento in rapido al
piano di lavorazione. Questo
parametro viene dato con l’indirizzo F
z
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.

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.

F Definisce la velocità di avanzamento usata quando viene eseguita un'operazione di ciclo


fisso. Viene programmata con un indirizzo F seguito dal valore della velocità di
avanzamento.

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

7.9 G84 – Ciclo di maschiatura con trasduttore montato sul mandrino


Sintassi

G84 [codici-G] R.. [R..] [I..] asse.. K.. [F.. ] [ausiliaria]

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.

Durante un ciclo di maschiatura il controllo non prende in considerazione il pulsante CYCLE


STOP (tranne che nel tratto di avvicinamento in rapido) ed il selettore di FEED OVERRIDE. La
disabilitazione del selettore di SPINDLE SPEED OVERRIDE, deve essere eseguita dalla logica di
macchina. Per abortire il ciclo di maschiatura si può utilizzare una funzione di logica
(vedere descrizioni delle variabili nei manuali WinPLUS).

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

G84 [codici-G] R.. [R..] [I..] asse.. K..[ausiliaria]

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

A fronte dell’esecuzione di un comando di RESET (che peraltro ferma il programma in


esecuzione) i parametri TKG e TAG vengono cancellati e necessitano di una nuova assegnazione
per la corretta esecuzione della maschiatura rigida.

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

7.11 TKG – Guadagno a velocità costante in maschiatura rigida / TAG – Guadagno di


accelerazione in maschiatura rigida
Le due variabili descrivono i coefficienti compensativi del ritardo di applicazione dei comandi da parte
del servosistema di controllo degli assi e del mandrino nel caso di maschiatura rigida.

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.

V asse Errore a V costante


Z

Valore SD21

Errore in acc. e dec.

45004616J 133
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

7.12 TRP – Percentuale di ritorno di maschiatura


Il comando TRP definisce la variazione percentuale della velocità di ritorno in un ciclo di maschiatura.
Questo comando viene scritto normalmente nel programma, ma può anche essere introdotto da tastiera
o tramite interfaccia utente.

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

7.13 TMD – Modalità di esecuzione della maschiatura


Il comando TMD definisce la modalità con cui eseguire l’operazione di maschiatura con trasduttore.
Questo comando viene scritto normalmente nel programma, ma può anche essere introdotto da tastiera
o tramite interfaccia utente.

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.

Bit 2 Abilita l’esecuzione immediata della maschiatura a fronte della programmazione


della G84, senza dover specificare alcun movimento aggiuntivo.

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

7.14 G85 – Ciclo di alesatura (o di maschiatura tramite Tapmatic)


Sintassi

G85 [codici-G] R.. [R..] asse.. [F.. ] [ausiliaria]

dove:
codici-G Altri codici G compatibili con il ciclo fisso G85
(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.

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.

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

45004616J 136
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

7.15 G86 – Ciclo di barenatura


Il mandrino deve essere nella modalità esclusiva di appartenenza ad un processo.

Sintassi

G86 [codici-G] R.. [R..] asse.. [F.. ] [ausiliaria]

dove:
codici-G Altri codici G compatibili con il ciclo
fisso G86 (consultare "Codici G
compatibili" nel Cap. 2).
R2

R Quota di avvicinamento in rapido al


R1
piano di lavorazione. Questo
parametro viene dato con l’indirizzo
R seguito da un numero reale. Può
F
essere programmata direttamente z
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.

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.

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

45004616J 137
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

7.16 G89 – Ciclo di barenatura con lamatura


Sintassi

G89 [codici-G] R.. [R..] asse.. [F.. ] [ausiliaria]

dove:
codici-G Altri codici G compatibili con il ciclo fisso G89
(consultare "Codici G compatibili" nel Cap. 2).

R Quota di avvicinamento in rapido al piano di R2

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

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.

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

45004616J 138
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

7.16.1 Uso di due quote R in un ciclo fisso


Si può utilizzare questo tipo di programmazione di ciclo fisso quando devono essere eseguiti, maschiati,
alesati, ecc. dei fori che sono sullo stesso piano ma separati da ostacoli (staffe, fori ripetitivi su sotto-
piani, ecc.).

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

7.16.2 Aggiornamento delle quote del ciclo fisso


Aggiornamento delle quote del ciclo fisso
Quando un ciclo fisso è attivo, è possibile programmare blocchi di avvicinamento in rapido, quote di
ritorno e quote di profondità per aggiornare le fasi del ciclo senza dover cancellare e successivamente
riprogrammare il ciclo.

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

7.16.3 Aggiornamento delle quote R (inferiore e superiore) durante la lavorazione

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

8.1 Gestione del tastatore elettronico


Un tastatore elettronico è un dispositivo di misura che può essere installato sul mandrino e controllato
come un utensile associato a dei correttori di lunghezza e di diametro. Inoltre, il tastatore può essere
installato in una posizione fissa ed utilizzato come comparatore elettronico per realizzare la riqualifica
della lunghezza dell'utensile. La figura seguente mostra un tastatore elettronico con le proprie
dimensioni tipiche.

Tastatore elettronico

I codici G che realizzano i cicli di misura sono i seguenti:

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.

Durante un ciclo di tastatura possono verificarsi i seguenti errori:


Se la tastatura non avviene prima di raggiungere il punto di sicurezza, il tastatore ritorna al punto di
partenza del ciclo, il controllo visualizza un messaggio e il sistema entra in condizione di errore.
L'esecuzione del ritorno in rapido è subordinata ad un parametro di caratterizzazione della macchina
od al corrispondente parametro "modalità" del triletterale DPP.
Se il tastatore non effettua il RESET in modo appropriato mentre torna indietro al punto di partenza
dopo un ciclo di tastatura terminato con successo, viene visualizzato un messaggio e il sistema entra
in condizione di errore.
Se la tastatura viene effettuata durante la fase di avvicinamento rapido, il tastatore ritorna al punto
di partenza del ciclo, il controllo visualizza un messaggio e il sistema entra in condizione di errore.

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

8.2 Predisposizione di un ciclo di tastatura


La prima volta che si utilizza un tastatore oppure ogni volta che cambiano le condizioni del ciclo di
tastatura, bisogna:

1. definire i parametri di tastatura


2. misurare dinamicamente il diametro della sfera del tastatore
3. riqualificare il tastatore rispetto all'asse mandrino
4. misurare dinamicamente la lunghezza del tastatore

8.2.1 DDP – Definizione dei parametri di tastatura


Per definire i parametri di tastatura introdotti tramite MDI o da programma si usa il comando DPP.
Questi parametri possono anche essere definiti tramite interfaccia utente. Nel caso in cui essi non
vengano definiti, il sistema assume come valori quelli definiti in AMP.

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)

Le quote di "avvicinamento", "sicurezza" e "velocità" vengono visualizzate nell'unità di misura


del processo configurata in AMP.

8.2.2 Misurazione dinamica del diametro della sfera


Per misurare dinamicamente il diametro apparente della sfera del tastatore, utilizzare un anello
campione, un cilindro o dispositivi simili, il centro dei quali viene assunto come origine assoluta 99 per
gli assi X ed Y.

8.2.3 Riqualifica del tastatore


Prima di utilizzare il tastatore, il centro della sua sfera è normalmente scostato rispetto all'asse del
mandrino. Per centrare la sfera di prova sull'asse del mandrino, è necessario riqualificare il tastatore.
Usare il foro dell'anello campione, un cilindro o dispositivi simili per effettuare tale operazione. Il centro
del foro è assunto essere l'origine 99 per gli assi X ed Y.

45004616J 146
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

8.2.4 Misurazione dinamica della lunghezza del tastatore


Per misurare dinamicamente la lunghezza del tastatore, utilizzare l'anello di riqualifica, un cilindro o
dispositivi simili la cui superficie di riferimento viene posta l'origine 99 per l'asse Z.

8.2.5 Predisposizione del tastatore


Per predisporre il tastatore occorre:
1. Utilizzare un anello di riqualifica campione.
2. Installare l'anello di riqualifica sull'asse rotativo B con la superficie frontale nell'origine assoluta
99 dell'asse rotativo B.
3. Posizionare il centro del foro dell'anello sull'origine assoluta 99 per gli assi X ed Y .
4. Posizionare il piano superiore dell'anello sull'origine assoluta 99 per l'asse Z.
I valori iniziali memorizzati nel correttore del tastatore sono:
Length1 = lunghezza nominale del tastatore rispetto all'asse della sfera.
Diameter = 0 (diametro sfera tastatore)

Esempio di riqualifica del tastatore:


N1 (DIS, "DPP, UPA, UPO, ")
N2 T30.30 M6 - tastatore in mandrino
N3 (UAO, 99)
N4 (DPP, 10, 12, 600) - definisce i parametri di tastatura
N5 UPA=0
N6 UPO=0
N7 E30=... - assegna il diametro al foro dell'anello campione
N8 E31=E30/2
N9 E32=... - assegna la distanza da Z=0 alla superficie di
tastatura sull'asse Z (di solito = 0)
N10 E33=E31+10
N11 GB0 - solo se l'anello è installato su tavola girevole
N12 XY
N13 Z-4
N14 G73 rE31 E40 - misura le coordinate del foro (centro e raggio)
N15 Z100
N16 (DIS, "UPA=", E40, "UPO=", E41)
N17 M0
N18 UPA=E40 - riqualifica l'ascissa del tastatore
N19 UPO=E41 - riqualifica l'ordinata del tastatore
N20 E34=(E30-E42*2) - diametro della sfera apparente
N21 (DIS, "DIAMETER=", E34)
N22 M0
N23 (RQP, 30, 30, dE34) - riqualifica il valore del correttore diametro
N24 T30.30 M6 - abilita il nuovo correttore
N25 GXYE33
N26 G72 ZE32 E43 - misura la quota Z sulla superficie dell'anello
N27 E35=E43-E32 - scostamento tra valore dinamico e valore teorico
N28 Z100
N29 (DIS "VARIANCE.Z=", E35)
N30 M0
N31 (RQP, 30, 30, LE35) - riqualifica del correttore lunghezza Z
N32 M30

45004616J 147
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

8.3 Cicli di tastatura


I seguenti codici G definiscono cicli di tastatura:

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.

8.3.1 G72 – Misura di un punto con compensazione


G72 consente di misurare le coordinate di un punto nello spazio muovendo il tastatore con movimento
lineare.

Sintassi

G72 asse1 [ asse2] [asse3] E-par

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.

E-par Definisce il parametro E(x) per la


memorizzazione della quota misurata
del primo asse, in ordine di
configurazione, programmato in G72; le
quote degli altri assi vengono memorizzate sequenzialmente nei parametri E(x+1)
e E(x+2) sempre in ordine di configurazione.

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

8.3.2 G73 – Misura dei parametri di un foro


G73 consente di utilizzare un tastatore per misurare le dimensioni di un foro nel piano di interpolazione
attivo e di memorizzarle in parametri E.

Sintassi

G73 rvalore.. E-par1

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

8.3.3 G74 – Ciclo di riqualifica dell’utensile


G74 è un ciclo di riqualifica dell'utensile. Con l'utensile inserito nel mandrino, G74 usa un tastatore fisso
(del tipo comparatore elettronico) per misurare gli scostamenti tra i punti misurati e i punti teorici.

Sintassi

G74 asse1 [ asse2] [asse3] E-par

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

8.4 UPA – Aggiornamento dell’ascissa del tastatore


Definisce il valore di riqualifica del tastatore per l'asse delle ascisse (normalmente X).

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.

8.5 UPO – Aggiornamento dell’ordinata del tastatore


Definisce il valore di riqualifica del tastatore per l'asse delle ordinate (normalmente Y).

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.

8.6 Gestione degli errori di tastatura


I cicli G72-G73-G74 permettono di gestire gli errori di tastatura sia automaticamente sia da part
program. La scelta fra questi due modi può essere effettuata settando il parametro ERR.
Per maggiori informazioni sulla gestione da part program degli errori, consultare l'APPENDICE A:
GESTIONE ERRORI DA PART PROGRAM.

8.7 Operazioni con un tastatore mobile


Con i cicli di tastatura G72 e G73 si possono eseguire le seguenti operazioni:
Riqualifica delle origini tramite:
tastatura delle superfici di riferimento
centratura su un foro

Controllo delle dimensioni di:


diametri
piani e profondità fori

45004616J 151
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

8.7.1 Riqualifica delle origini tramite tastatura di superfici di riferimento


Esistono due condizioni che possono portare a riqualificare le origini tastando una superficie di
riferimento. Entrambe sono modifiche dell'origine dovute ai seguenti eventi.
Variazioni della temperatura (deriva termica)
Uso di un nuovo pallet per la lavorazione.

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

Nuovo pallet per la lavorazione


Programma principale:
M... ;cambio di pallet
N199 T30.30M6 ;tastatore sul mandrino
N200 (UAO,2) 02
N201 GXY
N202 E10=2
N203 E34=-250
/N204 (CLS,TEST4)

Sottoprogramma TEST4:
N500 G72 Y(E34) E30
N501 E31=E30-E34
N502 (RQO,E10,Y(E31)) ;riqualifica l'origine 2 per l'asse Y

8.7.2 Riqualifica delle origini centrando su un foro


Prima di eseguire questo ciclo di riqualifica è necessario programmare il posizionamento degli assi X ed Y
sul foro ed il posizionamento del tastatore all'interno dello stesso.

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)

8.7.3 Verifica dei diametri dei fori


È possibile utilizzare un tastatore per verificare i diametri dei fori. Con una programmazione appropriata
è possibile confrontare i valori rilevati con i valori ammessi e decidere se continuare la lavorazione o
saltare ad un blocco contenente un'etichetta.

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.

Diametro del foro e tolleranza: D=100 +0.02/-0.015


Programma:
"A1" N111
N112 GZ-150
N113 (DIS,"ALESATURA FORO D=100")
N114 F..S..T13.13 M6
N115 GX-120 Y80 M13
.
.
.
N129 (DIS,"VERIFICA TOLLERANZA FORO D=100")
N130 T14.14 M6 ;tastatore sul mandrino
N131 GX-120 Y80 ;posizionamento con XY sul centro del foro
N132 Z-85 ;posizionamento Z
N133 G73 r50 E30 ;raggio del foro memorizzato in E32
N134 E32=E32*2
N135 (DIS,E32)
N136 (GTO,A3,E32>100.02)
N137 (GTO,A4,E32<99.985)
N138 GZ150
N139 (DIS,"PEZZO IN TOLLERANZA")
.
.
.
N2100 M30
"A3" N2101 (TOU,13)
(DIS, "Foro troppo grande")
N2102 M00
"A4" N2103 (TOU,13)
(DIS, "Foro troppo piccolo")
/N2104 (GTO,A1)

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

8.8 Operazioni che utilizzano un tastatore fisso


Utilizzando un ciclo di tastatura G74 con un tastatore in posizione fissa (come un comparatore
elettronico) e un utensile montato in mandrino è possibile:
riqualificare l'utensile (modificando automaticamente i correttori dell'utensile)
verificare l'integrità dell'utensile.

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. CICLI DI LAVORAZIONE PER SISTEMI DI TORNITURA

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.

Tipo ciclo Triletterale


Sgrossatura parassiale senza prefinitura SPA
Sgrossatura parassiale con prefinitura SPF
Sgrossatura parallela al profilo SPP
Ciclo di finitura CLP
Ciclo di filettatura FIL
Ciclo di taglio gole TGL

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

9.2 Programmazione del profilo


Un profilo è un programma composta da blocchi di movimento che deve essere richiamato da un ciclo di
sgrossatura o di finitura.
I blocchi contenuti nel programma devono essere Gcode di movimento e il movimento deve svolgersi nel
piano, sono quindi ammessi i codici di tipo G0, G1, G10, G2 e G3, è anche ammessa la programmazione
diretta della posizione di un asse.
NON sono ammessi altri tipi di Gcode, codici M, T, S o triletterali in genere.

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

Il programma seguente descrive un profilo di sgrossatura valido.

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

9.3 Comandi di sgrossatura e finitura


9.3.1 SPA - Sgrossatura parassiale senza prefinitura
Questo comando permette di effettuare la sgrossatura di un profilo con passate di lavoro parallele
all’asse ordinata o ascissa.

Sintassi

(SPA, prof, asse, numpass [, ax1 sovram1[, ax2 sovram2]])

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

Punto di attacco inizio profilo Punto di attacco


Z- Z+

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

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

Esempio di sgrossatura di un profilo con passate di lavoro parallele all’asse X.

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

Esempio di sgrossatura di un profilo con passate di lavoro parallele all’asse Z.

45004616J 162
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

9.3.2 SPF – Sgrossatura parassiale con prefinitura


Questo comando permette di effettuare la sgrossatura di un profilo con passate di lavoro parallele
all’asse ordinata o ascissa e con parte finale della passata parallela al profilo.

Sintassi

(SPF, prof, asse, numpass [, ax1 sovram1[, ax2 sovram2]])

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

9.3.3 SPP – Sgrossatura parallela al profilo


Questo comando è studiato per la sgrossatura di pezzi preformati, cioè di pezzi forniti di un sovrametallo
grossomodo costante sul pezzo grezzo.

Sintassi

(SPP, prof, numpass , ax1, sovram1, sovram2, ax2, sovram3, sovram4)

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

9.3.4 CLP – Finitura di un profilo


Questo comando permette di effettuare la finitura di un profilo.

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

9.4 FIL – Ciclo di filettatura


Questo comando permette di programmare in un solo blocco una filettatura cilindrica o conica che verrà
eseguita in una o più passate.

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

standard è necessario definire la profondità e l’angolo usando gli appositi parametri a e


b. 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 metrica).
a vala angolo del filetto per filettatura non standard (H = 2). . È un valore reale che può
essere definito direttamente con un numero reale o indirettamente usando una
variabile locale o di sistema.
b valb profondità del filetto per filettatura non standard (H = 2). È un valore reale che può
essere definito direttamente con un numero reale o indirettamente usando una
variabile locale o di sistema.
r valr raggio di uscita per uscita con interpolazione circolare. È richiesto nel caso in cui sia
stata richiesta un’uscita con raccordo. È un valore reale che può essere definito
direttamente con un numero reale o indirettamente usando una variabile locale o di
sistema.

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à

Filet. Metrica Filet. Whitworth Filet. Non standard


Angolo 60° 50° a
Profondità f(passo) f(passo) b

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”

Filettatura a due angoli


Punto di taglio

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

9.5 TGL – Ciclo di taglio gole


Il ciclo di taglio gole genera una sequenza di lavorazione per eseguire una gola parallela all’asse ascissa
od ordinata. La gola può essere interna o esterna.

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:

N1 T1.1 M6 S.. F..


N2 G X50 Z-40
N3 DWT=2
N4 (TGL,Z-20,X30,5,40,R2,R0)
N5G X10 Z100

Gola parallela all’asse Z con raccordo esterno di raggio 2

Esempio 2:

N1 T1.1 M6
N2 G X20 Z5
N3 DWT=2
N4 (TGL,X50,Z-5,5)

Gola parallela all’asse X.

45004616J 173
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

Esempio 3:

N1 T1.1 M6 S.. F.. M..


N2 G X25
N3 Z-25
N4 TMR=2
N5 (TGL,Z-10,X40,5)

Gola interna parallela all’asse Z.

45004616J 174
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

10. GESTIONE COMUNICAZIONI

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

10.1.1 Comandi di gestione del video grafico


I comandi in questa classe sono:
COMANDO FUNZIONE
DIS Visualizza a schermo numeri, stringhe o il contenuto di variabili
DER Permette all’utente di generare un messaggio di errore
DEW Permette all’utente di generare un messaggio di avviso (warning)
DIF Definisce il formato di una finestra per l’introduzione dati da utente
INP Permette l’introduzione di dati da parte dell’utente

10.1.2 Comandi di accesso a file


I comandi di questa classe sono:
COMANDO FUNZIONE
OPN Apre, in lettura o scrittura, un canale di comunicazione associato a un file
WRT Scrive su file
REA Legge da file
CLO Chiude uno o tutti i file aperti
DEL Cancella un file
CPY Copia un file
REN Rinomina un file

10.1.3 Comandi di accesso a porte seriali


COMANDO FUNZIONE
SOP Apre la connessione verso una linea seriale
SCL Chiude una o tutte le connessioni aperte verso linee seriali
SRS Effettua un reset della linea seriale specificata
GET Attiva la ricezione dati dalla porta seriale specificata
PUT Attiva la trasmissione dati verso porta seriale specificata

10.1.4 Comandi di accesso a 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

10.2 Comandi di gestione del video grafico


10.2.1 DIS – Visualizzazione di valori a video
Il comando DIS consente all'operatore di visualizzare dei valori nella zona video riservata al colloquio con
l'operatore.

Sintassi

(DIS,operando [,operando ] [,operando] [,operando] [,operando ])

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.

10.2.2 DER – Sospensione esecuzione programma con segnalazione di errore


Il comando DER consente all'operatore di sospendere il programma e di visualizzare un codice di errore
nella finestra video degli errori.

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

10.2.3 DEW – Visualizzazione di avvertimenti a video


Il comando DEW consente all'operatore di visualizzare un codice di avvertimento nella finestra video
degli avvertimenti.

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

10.2.4 DIF – Definizione dei campi di Input


Il comando DIF consente di definire tutti gli aspetti dimensionali ed estetici delle finestre di input, cioè
le caratteristiche con cui verranno visualizzati i dati stabiliti con il comando INP. Questa istruzione
permette di utilizzare impostazioni diverse da quelle di default.

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

10.2.5 INP – Inserimento dati da tastiera


Questo comando stabilisce il collegamento tra i dati che devono essere introdotti da tastiera e le
relative destinazioni (variabili). Consente di programmare il titolo della finestra di input ed i commenti
che consentono di identificare i singoli campi. Esso si avvale di una struttura stabilita da DIF per
l'allocazione dei dati nella finestra di input. Se la struttura di default è soddisfacente non è necessario
specificare un numero di DIF nel comando. Al momento dell'esecuzione attiva lo stato INPUT del sistema.

Sintassi

(INP, [ NdifId, ] [ Ttitolo, ] label1, lenLab1, var1


[,label2, lenLab2, var2]
[,label3, lenLab3, var3]
[,label4, lenLab4, var4]
[,label5, lenLab5, var5]
[,label6, lenLab6, var6]
[,label7, lenLab7, var7]
[,label8, lenLab8, var8]

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

10.3 Comandi di accesso a file


10.3.1 OPN – apertura di un canale di comunicazione
Questo comando permette di aprire un file associandolo a un numero di canale e specificando il tipo di
operazione che si intende effettuare sul file stesso.
Per canale si intende un numero intero compreso tra 1 e 8 associato al file specificato nella riga del
comando, che consente una gestione più semplificata da pare delle altre istruzioni di gestione file.

Sintassi

(OPN, canale, nomefile, [tipoFile,] modo)

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

10.3.2 WRT – Scrittura di file


Questo comando permette di scrivere un record nel file corrispondente al canale specificato. Un record
può essere composto da un singolo dato o da più dati o variabili specificati nel comando. Se vengono
specificati più valori questi verrranno scritti nel record (e nel file) nello stesso ordine in cui sono stati
specificati nel comando.

Sintassi

(WRT, canale,[R valore,] valore [, ..., valore])

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:

(WRT, 1, E1, SC3.4, @PLUS_SHORT)

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:

(WRT, 1, L1, “ABCD”, @SHORT_PLC)

(REA, 1, !USE, !PROVA.4CH, @SHORT_PLC)

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

10.3.3 REA – Lettura da file


Questo comando permette di leggere un record dal file corrispondente al canale specificato. Un record
può essere composto da un singolo dato o da più dati o variabili.

Sintassi

(REA, canale, [FRB | R | FRC valore,] variabile [, ..., variabile])

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.

File di tipo ASCII


La conversione di un parametro numerico nel formato della variabile in input viene effettuato
automaticamente. Il comando considera unoo spazio, un segno oppure un carattere alfabetico come
terminatori validi per i campi numerici; se, durante la lettura di un variabile numerica, non viene letto
almeno un carattere numerico il sistema segnala un errore di formato.
Nel caso di lettura di un campo stringa non esiste un vero terminatore, ma il comando cercherà di
leggere un numero di caratteri (byte) pari a quanto specificato dalla variabile presente nel comando.
Se viene specificato in lettura un numero di variabili diverso da quello dei campi presenti in un record
del file, non viene segnalato errore, ma vengono caricate in sequenza le variabili fino al completamento
del record.

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:

(REA, 3, R42, E1, SN1, H1)


Legge il recordo 42 del file binario associato al canale 3 e pone i suoi dati nelle variabili E1, SN1, H1. Il
puntatore del file si posiziona all’inizio del record 13.

Esempio 3:
Si supponga che il record in lettura del file ASCII associato al canale 1 sia composto dai seguenti campi:

-5.00 +3400 PLUTO

La lettura con diversi tipi di comando porterà a letture differenti:

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

(REA, 1, E1)  E1 = -5.00

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

10.3.4 CLO – chiusura del canale


Questo comando esegue la chiusura del file associate al canale specificato.
Se non viene specificato nessun canale, vengono chiusi tutti i canali aperti appartenenti al processo.

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

10.3.5 DEL – Cancellazione di un file


Questo comando esegue la cancellazione del file specificato.

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.

10.3.6 CPY – copia di un file


Questo comando esegue la copia di un file.

Sintassi

(CPY, nomefile1, nomefile2)

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

10.3.7 REN – Rinomina un file


Questo comando permette di rinominare un file.

Sintassi

(REN, nomefile1, nomefile2)

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

10.4 Comandi di gestione delle porte seriali


La gestione delle linee seriali si effettua utilizzando comandi che permettono di:

Abilitare e configurare le linee seriali definendo i parametri di comunicazione e tutti i


terminatori necessari alla gestione dei dati e dei messaggi.
Trasmettere dati di qualsiasi tipo come: dati numerici, dati contenuti in variabili numeriche,
dati alfanumerici (stringhe), dati alfanumerici contenuti in variabili di tipo stringa.
I dati trasmessi costituiscono il messaggio, che può avere una lunghezza massima di 128 caratteri
compresi i terminatori di dato e di messaggio.
Ricevere dati di qualsiasi tipo come: dati numerici, dati contenuti in variabili numeriche, dati
alfanumerici (stringhe), dati alfanumerici contenuti in variabili di tipo stringa.
La lunghezza del messaggio ricevuto non deve essere superiore a 180 caratteri compresi i
terminatori compresi i terminatori di dato e di messaggio.
Chiudere le linee seriali al termine della comunicazione.
Effettuare un reset di una linea seriale.

10.4.1 SOP - Abilitazione e configurazione della porta seriale


Nota: comando non disponibile con OPEN-10, richiede l’opzione A47 con OPEN-20 e
OPEN-30

Il comando permette di riservare l’utilizzo della porta seriale specificata e di configurare le


caratteristiche fisiche della comunicazione.

Sintassi

(SOP, numPorta, Baud, size, bitStop, parity, protocollo, tipoflusso,


TXtimeout, TXretry, RXtimeout, RXretry [/ numSepDataTx,
terminator, numSepDataRx, terminator, numTermMessTx,
terminator, numTermMessRx, terminator])

Dove:
numPorta numero della porta seriale che si desidera aprire. I controlli OPEN gestiscono fino a
4 linee seriali

Baud Velocità di trasmissione in baud. È possibile utilizzare i seguenti valori:


50 75 110 134 150 300
600 1200 1800 2000 2400 3600
4800 7200 9600 14400 19200 38400
56000 57600 115200 128000 256000

Size lunghezza della parola in bit, i valori ammessi sono:


5, 6, 7, 8

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

Tipo flusso Maschera a bit per identificare il tipo di flusso di comunicazione:


FlowCtrl Descrizione
0x0001 DTR abilitato
0x0002 DTR HandShake
0x0004 RTS abilitato
0x0008 RTS HandShake
0x0010 Gestione CTS attivata
0x0020 Gestione DSR attivata
0x0040 Ignora ricezione se DSR off
0x0080 Xon Xoff continuo
0x0100 Gestione Xoff
0x0200 Gestione Xon
0x0400 Gestione terminatore in ricezione
0x8000 Pulizia buffer ricezione dopo RTS off (valido soltanto per CE5.0)

Parity Tipo di controllo della parità, i tipi disponibili sono:


Nessuna parità
Parità dispari
Parità pari
Mark parity
Space parity

Txtimeout timeout di trasmissione in millisecondi. Se 0 il timeout non è attivo

Txretry numero di tentativi di ripetizione trasmissione in caso di errore

Rxtimeout timeout di ricezione in millisecondi. Se 0 il timeout non è attivo

Rxretry numero di tentativi di ripetizione ricezione in caso di errore

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.

terminator è l’insieme di caratteri utilizzato come separatore di dati o come terminatore di


messaggio. Può essere:
Un numeor intero
Un carattere alfanumerico posto tra apici
Un insieme di caratteri alfanumerici posti tra apici
Nel caso in cui il numero di separatori / terminatori sia superiore a 1 (per esempio
numSepDataRx uguale a 2) e si usino come separatori / terminatori dei caratteri
alfanumerici, essi possono essere posti tutti insieme tra gli stessi apici oppure
messi singolarmente tra apici e separati tra loro dalla virgola.

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:

(SOP, 1, 9600, 8, 1, 2, 0, 1024, 500, 3, 750, 0/0, 1, 10, 2, “ ”, 10, 1, 13)


Linea seriale 1, comunicazione a 9600 baud, parola di 8 bit, un bit di stop, parità pari, nessun protocollo
di trasmissione, gestione terminatore in ricezione, 500 millisecondi di timeout in trasmissione e 3 retry
in trasmissione, 750 millisecondi di timeout in ricezione e nessun retry in ricezione, nessun separatore
dati in trasmissione, 1 separatore dati in ricezione (il numero 10), due terminatori messaggio in
trasmissione (il carattere spazio e il numero 10) e un terminatore messaggio in ricezione (il numero 13)

(SOP, 2, 2400, 7, 2, 2, 1, 1152, 4000, 0, 0, 3 / 2, “ ”,“ ”, 3, “ ”, 9, 13, 2, 13, 10, 1, 13)


Linea seriale 2, comunicazione a 2400 baud, parola di 7 bit, 2 bit di stop, parità pari, protocollo logico
(Xon, Xoff), gestione terminatore di messaggio e Xon, Xoff continuo, 4 secondi di timeout in trasmissione
senza retry, nessun timeout e 3 retry in ricezione, due separatori di dato in trasmissione (due caratteri
spazio), tre separatori dato in ricezione (il carattere spazio e i numeri 9 e 13), due terminatori
messaggio in trasmissione (i numeri 13 e 10), un terminatore messaggio (il numero 13)

(SOP, 3, 38400, 5, 1, 1, 0, 0, 5000, 0, 1000, 5)


Linea seriale 3, baud rate 38400 baud, parola di 5 bit, 1 bit di stop, parità dispari, nessun protocollo
logico, nessuna configurazione per il tipo di flusso, timeout di trasmissione di 5 secondi e nessun retry,
timeout di ricezione di 1 secondo e 5 retry, nessun separatore di dati e nessun terminatore di messaggio
né in trasmissione né in ricezione.

45004616J 193
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

10.4.2 GET – Ricezione dati da linea seriale


Nota: comando non disponibile con OPEN-10, richiede l’opzione A47 con OPEN-20 e
OPEN-30

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

(GET, numPorta, variabile[,….., variabile])

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.

(GET, 2, L30, L31, !MYVAR, SC0.10)


Attesa di tre dati di tipo double e di una stringa di 10 caratteri dalla linea seriale 2.

45004616J 195
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

10.4.3 PUT – trasmissione dati su linea seriale


Nota: comando non disponibile con OPEN-10, richiede l’opzione A47 con OPEN-20 e
OPEN-30

Questo comando permette di trasmettere dati sulla linea seriale specificata.

Sintassi

(PUT, numPorta, dato [,…..,dato])

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.

(PUT, 4, “Messaggio”, E1, SC0.4, $CINTYPE(1))


Trasmissione sulla linea seriale 4 di una costante stringa di 9 caratteri, di una variabile numerica double,
di una variabile stringa di 4 caratteri e di una variabile short. Se sono stati configurati separatori di dato
questi verrano inseriti tra le variabili, il messaggio terminerà con i terminatori di messaggio, se
configurati.

45004616J 196
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

10.4.4 SRS – Reset della linea seriale


Nota: comando non disponibile con OPEN-10, richiede l’opzione A47 con OPEN-20 e
OPEN-30

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

10.4.5 SCL – Disattivazione della porta seriale


Nota: comando non disponibile con OPEN-10, richiede l’opzione A47 con OPEN-20 e
OPEN-30

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

10.5 Comandi di accesso a informazioni generiche


10.5.1 GDT – Lettura data e ora del controllo numerico
Questo comando permette di memorizzare in alcune variabili il valore corrente di data e ora del
controllo numerico.

Sintassi

(GDT, [DdateFormat,] [ThourFormat,] dateVar, hourVar [, dVar])

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

(GDT, D2, T1, SC0.10, !TIME(0).11CH, E42)


Legge data e ora nel format AAAA/MM/GG e in formato 12 ore. I dati vengono salvati nelle variabili
stringa SC e !TIME e nelle variabili E42, E43, E44, E45, E46, E47.

45004616J 199
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

11. COMANDI RELATIVI ALLA GESTIONE MULTIPROCESSO

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.

La seguente tabella riassume questi comandi:


Triletterale Funzionalità
PRO Determina il processo di default al quale inviare i comandi o le sincronizzazioni.
SND Invia un messaggio di sincronizzazione al processo specificato.
WAI Pone il processo in cui è eseguito in stato di WAIT; il processo interessato rimane
bloccato in questo stato fino all'arrivo di un messaggio da un altro processo.
EXE Attiva l'esecuzione automatica di un part program nel processo specificato.
ECM Esecuzione di un blocco di MDI sul processo specificato.
RTP Lettura utensile programmato o corrente sul processo specificato
ROP Lettura correttore programmato o corrente sul processo specificato
GPS Lettura stato e modo sul processo specificato
RAP Lettura posizione asse del processo specificato
CON Comando di CYCLE ON sul processo specificato
COF Comando di CYCLE OFF sul processo specificato
HON Comando di HOLD ON sul processo specificato
HOF Comando di HOLD OFF sul processo specificato
RES Comando di RESET sul processo specificato
SMD Comando di selezione modo operativo (SETMODE) sul processo specificato
SAX Selezione dell’asse per movimenti manuali sul processo specificato
DIR Definizione della direzione del movimento manuale sul processo specificato
JOG Definizione del passo per il movimento manuale incrementale sul processo specificato
FHO Invio di comando arresto movimento sul processo specificato
GTA Gestione della migrazione di risorse "assi" tra processi.
PLS Lettura di una o più variabili SW di WinPLUS
PLR Lettura di una variabile di stato di tipo WORD
PLD Lettura di una variabile di stato di tipo LREAL

I comandi SND e WAI sono sincronizzati di default.

45004616J 200
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

11.2 Note funzionali sulla sincronizzazione tra processi


11.2.1 Note sulla funzionalità “WAIT”
I messaggi di sincronizzazione che un processo riceve vengono registrati in un'area di memoria detta
"CODA MESSAGGI"; quest' area è locale, ed è perciò riservata a quel processo (ogni processo ne possiede
una). Se durante l'esecuzione di un part program viene eseguito il triletterale (WAI,Pn), il processo deve
porsi in attesa di un messaggio liberatorio dal processo n, questo messaggio viene perciò ricercato
all'interno della CODA MESSAGGI:

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.

11.2.2 Note sulla funzionalità "SEND"


Tramite il triletterale SND si inviano messaggi di sincronizzazione al processo specificato; tale messaggio
può essere sincrono, oppure asincrono:
Se è sincrono, il processo che ha eseguito la SND passerà nello stato di WAIT in attesa di un ACK
(segnalazione di messaggio utilizzato) dal processo destinatario della SND.
Se è Asincrono, il processo che ha eseguito la SND prosegue l'esecuzione del part program
comunque; senza cioè aspettare che il messaggio abbia effettivamente fatto ripartire il processo
destinatario della SND.

ll RESET del processo o l'attivazione di un altro part program azzerano la coda messaggi del
processo stesso.

11.2.3 Scambio dati

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.

11.2.4 Reset processi sincronizzati


Se si effettua un reset, bisogna eseguirlo sia sui processi che mandano messaggi di sincronizzazione
(SND), sia sui processi che hanno ricevuto i messaggi di sincronizzazione (WAI).
Questo per evitare che rimangano messaggi non desiderati nella "CODA MESSAGGI" dei processi, che
potrebbero portare a malfunzionamenti.

45004616J 201
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

11.3 PRO – Definizione del processo di default


Il triletterale PRO permette al programmatore di specificare il processo di default al quale sono riferiti i
comandi di sincronizzazione: il numero di processo è infatti opzionale in tutti i comandi di questo tipo.

Sintassi

(PRO, numero processo)

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.

Il RESET del sistema o l'attivazione di un altro part program annullano le


precedenti definizioni del processo di default.

45004616J 202
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

11.4 SND- Invio di un messaggio di sincronizzazione


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

Il triletterale SND permette di inviare un messaggio di sincronizzazione e, opzionalmente, dei dati al


processo specificato.

Sintassi

(SND [,P numero processo], synchro [,dato] [,dato] ......... [,dato])

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:

Tipo dato: lunghezza in byte


Boolean / Byte 2
Short 3
Real 5
Double 9
Stringa n° caratteri+2

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.

I modi multi-sincrono e multi-asincrono permettono di inviare più messaggi verso un processo


destinatario senza che venga generato alcun errore. Naturalmente è possibile inviare un solo messaggio
di tipo multi-sincrono poiché la sua esecuzione pone il processo mittente in stato di WAIT.

Esempio:
(SND,P1,S,E1,SN12,"TOOL",SC0.30,@BOOL_PLUS(0),33.6)

Calcolo del numero dei byte trasmessi:


Variabile o costante: Tipo: lunghezza in byte:
E1 Double 9
SN12 Double 9
"TOOL" Stringa 6
SC0.30 Stringa 32
@BOOL_PLUS(0) Boolean 2
33.6 Double 9
Totale: 67 byte trasmessi

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

1 - SND in modo sincrono:


Il processo 1 invia una (SND,P2,S,E1) al processo 2, il quale si trova nello stato di WAIT
(WAI,P1,SC0). Visto che il tipo della variabile trasmessa non è congruente con quella da ricevere,
e la SND è stata programmata con modo sincrono, si verifica che:
entrambi i processi visualizzeranno l'errore "23/510 Caricamento dati fallito", e i rispettivi part
program non potranno proseguire.

2 - SND in modo asincrono:


Il processo 1 invia una (SND,P2,A,E1) al processo 2, nel cui part program è stata programmata una
funzione (WAI,P1,SC0.30).

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

11.5 WAI – Attesa di un messaggio di sincronizzazione


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

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

(WAI [,P numero processo] [,variabile] [,variabile] ......... [,variabile])

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

Esempi di utilizzo dei comandi SND e WAI

45004616J 206
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

11.6 EXE – Attivazione automatica di un part program


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

Il triletterale EXE permette di attivare ed eseguire in modo automatico un part program sul processo
specificato.

Sintassi

(EXE,nome part program [,P numero processo])

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

11.7 ECM – Esecuzione di un blocco in modo MDI nel processo specificato


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

Il triletterale ECM permette di attivare l'esecuzione automatica di un blocco in modo MDI sul processo
specificato.

Sintassi

(ECM,comando [,P numero processo] [,S])

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

Esempio di sincronizzazione su 2 processi e di utilizzo del comando EXE:

;N1 SNA_N ;N1 SNB_N


;N2 MULTIPROCESSO: ;N2 MULTIPROCESSO
; SINCRONIZZAZIONE ; SINCRONIZZAZIONE
N3 (DIS,"PROGRAMMA SYSTEM 1") N3 (DIS,"PROGRAMMA SYSTEM 2")
N4 (EXE,SNB_N,P2) N4 SN5=0
N5 T2.2M6 N5 T4.4M6
N6 S1500F500M3  N6 (WAI,P1)
N7 XYZ N7 S400F400M3
N8 E25=0 N8 XY
N9 G81R-14Z-35 N9 E25=0
N10 (RPT,6) N10 G84R-10Z-22
N11 (ROT,E25) N11 (RPT,6)
N12 X-80Y N12 (ROT,E25)
N13 E25=E25+60 N13 X-80Y
N14 (ERP) N14 E25=E25+60
N15 G80Z50 N15 (ERP)
N16 (ROT,0) N16 (ROT,0)
N17 (SND,P2,A)  N17 G80ZM5
N18 (CLS,MA)  N18 (WAI,P1)
N19 (SND,P2,S)  N19 GZ40
N20 GZ90  N20 (WAI,P1)
N21 (SND,P2,A)  N21 E8=0
N22 (WOS,SN5>=9)  N22 T2,2M6
N23 S200F500M3 N23 S1300F500M3
N24 X-10Y50 N24 G81R2Z-25
N25 Z-25 "D" N25
N26 G1G41X N26 G91X10
N27 G2IJ N27 G90
N28 G1G40X10 N28 E8=E8+1
N29 GZM5  N29 #SN5=E8
N30 M30 N30 (GTO,D,E8<10)
N31 G80M5

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

(RTP [,P num pro], tipo, variabile1 [,variabile2])

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.

tipo Parametro che specifica il tipo di utensile da leggere, vale:


A: se deve essere letto il numero di utensile attivo al momento dell’esecuzione del
comando
N: se deve essere letto il numero di utensile programmato

variabile1 È la variabile nella quale verrà caricato il numero o nome dell’utensile richiesto.

variabile2 È la variabile numerica nella quale verrà caricato il relativo record.

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

(ROP [,P num pro], tipo, variabile)

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.

tipo È il parametro che specifica quale correttore utensile leggere, vale:


A: se deve essere letto il numero del correttore utensile attivo al momento
dell’esecuzione del comando
N: se deve essere letto il numero del correttore utensile programmato

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

11.10 GPS – Lettura dello stato e modo del processo


Con questa istruzione si esegue la lettura dello stato, del sottostato e del modo del processo.
L'operazione viene eseguita sul processo specificato o sul processo di default ed i dati letti vengono
caricati nelle variabili specificate.

Sintassi

(GPS [,P num pro], variabile1, variabile2, variabile3)

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

11.11 RAP $A – Lettura della posizione dell’asse


Queste due istruzioni permettono di eseguire la lettura della quota dell'asse specificato nella riga di
comando.

Sintassi

(RAP [,P num pro], nome asse, tipo lettura, variabile)


$A(nome asse, tipo lettura)

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.

nome asse È il nome ASCII dell'asse di cui si desidera leggere la posizione.


tipo lettura È il tipo di quota che si vuole leggere. Questo parametro può essere direttamente
un numero compreso tra 0 e 10 o il contenuto di una variabile locale o di sistema.
Il significato di questo parametro è il seguente:
0 quota INTERPOLATA ASSOLUTA (riferita allo zero asse)
1 quota PROGRAMMATA in esecuzione
2 quota DA PERCORRERE (DTG)
3 quota REALE ASSOLUTA (riferita allo zero asse)
4 quota ERRORE
5 quota INTERPOLATA (comprensiva di origini ed offset utensile)
6 quota REALE (comprensiva di origini e offset utensile)
7 quota PROGRAMMATA all’atto dell’analisi dell’istruzione
8 quota INTERPOLATA TASTATA (comprensiva di origini ed offset utensile)
9 quota CARTESIANA TASTATA
10 quota GIUNTO TASTATA
11 quota GIUNTO ASSOLUTA (riferita allo zero asse)
12 quota di ritorno sul profilo INTERPOLATA ASSOLUTA (riferita allo zero
asse)
13 quota di ritorno sul profilo CARTESIANA ASSOLUTA (riferita allo zero asse)
14 quota di ritorno sul profilo GIUNTO ASSOLUTA (riferita allo zero asse)
15 quota CARTESIANA ASSOLUTA (quota punta utensile nel sistema di
riferimento assoluto)
16 quote finali giunto per un movimento eseguito in G77
variabile È la variabile numerica, locale o di sistema nella quale verrà caricata la quota
letta dall'istruzione.

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

11.12 CON – Comando di CYCLE ON


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

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

11.13 COF – Comando di CYCLE OFF


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

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

11.14 HON – Comando di HOLD ON


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

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

11.15 HOF – Comando di HOLD OFF


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

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

11.16 RES – Comando di RESET


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

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

11.17 SMD – Set modo operativo


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

Con questa istruzione viene definito il modo operativo per il processo specificato.

Sintassi

(SMD [,P numproc] ,modo)

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

11.18 SAX – Selezione asse per movimento manuale


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

Questa istruzione esegue la selezione dell'asse su cui dovrà essere eseguito un movimento manuale.

Sintassi

(SAX [, P numproc] , nome asse)

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.

nome asse È il nome ASCII dell'asse su cui si intende eseguire il movimento.

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

11.19 DIR – Direzione movimenti manuali


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

Questa istruzione definisce, per il processo selezionato, la direzione che deve assumere l'asse
selezionato durante il movimento manuale.

Sintassi

(DIR [, P numproc] , segno)

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

11.20 JOG – Valore di Jog incrementale


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

Con questa istruzione viene stabilito il valore dei singoli passi di movimento, durante un movimento
manuale incrementale, nel processo specificato.

Sintassi

(JOG [, P numproc] , jog value)

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

11.21 FHO – Attivazione/Deattivazione di FEEDHOLD


Nota: comando non disponibile con OPEN-10, richiede l’opzione A44 con OPEN-20 e
OPEN-30

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

(FHO [, P numproc], enable)

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.

enable È un numero che può valere 0, 1 oppure 2 e che rappresenta il comando di


abilitazione o disabilitazione del FEEDHOLD.
Con il valore 1 si ha l'attivazione, cioè l'arresto immediato del movimento; con 2 si
ha l’arresto alla fine del movimento programmato ed attualmente in esecuzione;
con 0 si riabilita il movimento.

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

11.22 PLS – Lettura delle variabili SW del WinPLUS


Con questo comando è possibile leggere il valore a livello di bit o di intera word (16 bit) delle variabili
SW di WinPLUS. I valori letti vengono memorizzati nelle variabili locali o di sistema specificate nel
comando.

Sintassi

(PLS, numero SW, numero bit, [ & maschera], variabile


[,numero SW, numero bit, [ & maschera], variabile ]
[,numero SW, numero bit, [ & maschera], variabile ]
[,numero SW, numero bit, [ & maschera], variabile ]
[,numero SW, numero bit, [ & maschera], variabile ]
[,numero SW, numero bit, [ & maschera], variabile ]
[,numero SW, numero bit, [ & maschera], variabile ]
[,numero SW, numero bit, [ & maschera], variabile ]
[,numero SW, numero bit, [ & maschera], variabile ]
[,numero SW, numero bit, [ & maschera], variabile ])

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.

numero bit È il numero del bit all'interno della variabile SW prescelta.


Deve avere un valore compreso tra 0 e 16. I valori tra 0 e 15 indicano il bit, mentre
il valore 16 indica che si vuole leggere l'intera word. 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

11.23 PLR – Lettura delle variabili WORD del WinPLUS


Con questo comando è possibile leggere il valore delle variabili MW, GW, PW oppure SW di WinPLUS. I
valori letti vengono memorizzati nelle variabili locali o di sistema specificate nel comando.

Sintassi

(PLR, tipo, indice_word, variabile)

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

indice_word È l’indice della variabile da leggere.


Può essere un numero intero o il contenuto di una variabile locale o di sistema
specificata nel comando.

variabile È una variabile numerica locale o di sistema in cui verrà copiato il contenuto della
word prescelta.

11.24 PLD – Lettura delle variabili DOUBLE del WinPLUS


Con questo comando è possibile leggere il valore delle variabili MD, GD, PD oppure SD di WinPLUS. I
valori letti vengono memorizzati nelle variabili locali o di sistema specificate nel comando.

Sintassi

(PLD, tipo, indice_var, variabile)

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

indice_var È l’indice della variabile da leggere.


Può essere un numero intero o il contenuto di una variabile locale o di sistema
specificata nel comando.

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

11.25 Note sulla funzionalità “ASSI MIGRANTI”


11.25.1 Generalità
La funzionalità "assi migranti" permette ad uno o più processi di acquisire o rilasciare le "risorse assi",
indipendentemente dalla caratterizzazione dei processi stessi. L'acquisizione, od il rilascio di un asse
avviene infatti associando un nome asse (X,Y,Z,...) ad un identificatore compreso tra quelli configurati
in AMP (164).
Il nome asse è univoco solamente all'interno di un determinato processo.
L'identificatore di un asse (ID) è univoco su tutta la macchina.

11.25.2 Condizioni per l'acquisizione di un asse


Vi sono alcune condizioni da rispettare quando si intende programmare l'acquisizione di un asse:
L'asse richiesto deve essere caratterizzato in AMP (deve esistere l'identificativo richiesto
nell'ambito dei processi configurati).
Quando un processo richiede di acquisire uno o più assi, essi debbono essere stati
precedentemente rilasciati dal loro processo di appartenenza oppure essere assi PLC disponibili.
Il nome dell'asse deve essere valido; deve cioè essere uno di quelli permessi nella
programmazione.
L'identificatore (ID) dell'asse non deve essere associato ad un asse mandrino.
L'identificativo (ID) dell'asse deve essere un numero compreso tra 1 e 64.
Il nome che si vuole associare all'asse non deve essere già usato dal processo stesso come pseudo
asse.

45004616J 228
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

11.26 GTA – Acquisizione assi (Get Axes)


Nota: comando non disponibile con OPEN-10, richiede l’opzione A34 con OPEN-20 e
OPEN-30

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.

asse1 … asse12 È il nome dell’asse che sarà visualizzato in posizione n-esima.

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

11.26.1 Inibizione delle operazioni di acquisizione e rilascio assi.


Vi sono dei casi in cui le operazioni eseguite dal triletterale GTA sono inibite:
Con la modalità correzione raggio utensile attiva (G41-G42)
In presenza di ciclo fisso attivo (G81-89)
Nello stato di HOLD
Nello stato IDLE-MAS
Abbandonare o acquisire un asse sul quale è attiva la correzione lunghezza utensile (h oppure T)
nel caso in cui il relativo flag ‘permette migrazione assi con lunghezza utensile attiva’ sia
settato a 0.
Rilascio di assi condivisi con la logica

11.26.2 Informazioni inizializzate dopo un comando GTA


Piano di interpolazione.
Il piano di interpolazione sarà composto da una coppia tra i primi tre assi programmati in base
alla "G" di cambio piano attiva --> G17, G18, G19.
Qualora il numero degli assi definiti nel comando GTA sia inferiore a 3, verranno forzati
rispettivamente il primo ed il secondo asse come ascissa e come ordinata.
Per un corretto funzionamento occorre programmare con la G16 il piano di interpolazione
desiderato.

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.

Selezione asse per i movimenti manuali.


Dopo l'esecuzione di un comando GTA sarà eseguita la selezione, per i movimenti manuali, del
primo asse in ordine di visualizzazione.

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

11.26.3 Informazioni mantenute dopo un comando GTA


Axis locked
Origini incrementali e temporanee.

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:

La programmazione di tutti gli assi, anche di quelli già appartenenti al processo, è


obbligatoria e permette di ridefinire sia il nome dell'asse che l'ordine di visualizzazione.

(GTA,X1,Y2,Z5,A6/Y,Z,X)

Nomi assi ai quali associare i correttori lunghezza 1, 2 e 3


Acquisizione asse con ID 6 associato al nome asse A
Acquisizione asse con ID 5 associato al nome asse Z
Asse ID 2 già appartenente al processo
Asse ID 1 già appartenente al processo
Comando Get Axes

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)

Nomi assi ai quali associare il correttore lunghezza 1


Acquisizione asse con ID 6 associato al nome asse Y
Acquisizione asse con ID 5 associato al nome asse X
Comando Get Axes

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)

Comando Get Axes

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)

Nomi assi ai quali associare i correttori lunghezza 1 e 2


Asse ID 2 già appartenente al processo
Asse ID 1 già appartenente al processo
Comando Get Axes

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)

Nome asse al quale associare il correttore lunghezza 1


Acquisizione asse con ID 4 associato al nome asse P
Asse ID 2 già appartenente al processo
Asse ID 1 già appartenente al processo
Parametro per perdita origini su tutti gli assi
Comando Get Axes

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)

Nome asse al quale associare il correttore lunghezza 2


Nessun asse associato al correttore lunghezza 1
Acquisizione asse con ID 4 associato al nome asse P
Asse ID 2 già appartenente al processo
Asse ID 1 già appartenente al processo
Parametro per mantenimento origini sugli assi
Comando Get Axes

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)

Nome asse al quale associare il correttore lunghezza 1


Acquisizione asse con ID 4 associato al nome asse P
Asse ID 2 già appartenente al processo, con cambio nome
Asse ID 1 già appartenente al processo
Parametro per mantenimento origini sugli assi
Comando Get Axes

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:

(GTA) sul processo 2 per il rilascio di A e B


(GTA,T2,Y1,X2,B4/B)

Nome asse al quale associare il correttore lunghezza 1


Acquisizione asse con ID 4 associato al nome asse B
Asse ID 2 già appartenente al processo, con cambio nome
Asse ID 1 già appartenente al processo, con cambio nome
Parametro per mantenimento origini sugli assi
Comando Get Axes

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)

Asse ID 4 condiviso con il PLC


Asse ID 3 già appartenente al processo
Asse ID 1 già appartenente al processo, con cambio nome
Asse ID 2 già appartenente al processo, con cambio nome
Comando Get Axes

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

11.26.4 Gestione delle condizioni di errore


In caso di errore, riscontrato durante l'esecuzione del triletterale (es. risorsa asse non disponibile, ID
asse inesistente, . . . ), il programmatore di part program può gestire l'evento nel modo standard, (stop
dell'esecuzione del part program e visualizzazione errore a video) oppure da part program utilizzando le
variabili "ERR" e "STE".
Per maggiori informazioni riguardanti queste variabili, consultare l'APPENDICE A: GESTIONE ERRORI DA
PART PROGRAM.

Esempio di acquisizione assi da parte di un processo:


;N1 SINUS_AM
;N2 ESECUZIONE SU PROC.1
;N3 ACQUISIZIONE ID9-ID10 (NUOVI ASSI A-B) DA PROC. 2
N6 (EXE,GTA1_AM,P2)
N7 (DLY,0.1)
N8 (GTA,X1,Y2,Z3,A9,B10/-Z)
N9 T1.1M6
N10 S1000M3
N11 G0G90XYZAB
N12 G1G91G28
N13 E25=0.03
N14 X0.2713Y0.0947Z-0.1852A-0.1815B0.1007tE25
N15 X0.2711Y0.0886Z-0.1887A-0.1776B0.1066tE25
N16 X0.2708Y0.0825Z-0.1922A-0.1736B0.1125tE25
N17 X0.2703Y0.0764Z-0.1955A-0.1696B0.1184tE25
N18 X0.2697Y0.0702Z-0.1987A-0.1654B0.1241tE25
N19 X0.2689Y0.0640Z-0.2017A-0.1610B0.1299tE25
...................................
...................................
...................................
N2010 X0.2697Y0.1241Z-0.1654A-0.1987B0.0702tE25
N2011 X0.2703Y0.1184Z-0.1696A-0.1955B0.0764tE25
N2012 X0.2708Y0.1125Z-0.1736A-0.1922B0.0825tE25
N2013 X0.2711Y0.1066Z-0.1776A-0.1887B0.0886tE25
N2014 X0.2713Y0.1007Z-0.1815A-0.1852B0.0947tE25
N2015 G0
N2016 (SND,P2,S)
N2017 (GTA,X1,Y2,Z3)
N2018 M30

45004616J 238
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

12. VARIABILI TECNOLOGICHE

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.

12.2 Variabili e tabelle


Nei controlli della famiglia OPENcontrol esistono due famiglie di tabelle tecnologiche: la prima deriva
dalle tabelle presenti nei controlli Serie10 di OSAI, la seconda è stata introdotta appositamente per i
controlli OPENcontrol.

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:

Tabella N° Pagine Indice


Tabella Origini 100 Identificatore dell’origine
Tabella Utensili 250 Numero del record nella tabella
Tabella Offset Utensili 300 Identificatore del correttore
Tabella Utente 100 Numero della variabile User
3 indici per accesso alla alla matrice
Tabella tecnologica estesa Def. In AMP
tridimensionale
Tabella Magazzini 10 Identificatore del magazzino
Identificativo assoluto della pocket oppure
Indentificatore del magazzino cui appartiene
Tabella Pocket 2560
la pocket e identificatore della pocket nel
magazzino

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.

12.2.1 Tabella Origini


Nota: funzione non disponibile con OPEN-10, richiede l’opzione A43 con OPEN-20 e
OPEN-30

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

12.2.2 Tabella Utensili


Nota: funzione non disponibile con OPEN-10, richiede l’opzione A43 con OPEN-20 e
OPEN-30

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

12.2.3 Tabella Offset Utensili


Nota: funzione non disponibile con OPEN-10, richiede l’opzione A43 con OPEN-20 e
OPEN-30

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.

Campo Nome Variabile Formato Significato Struttura


Initial Len $OFFORIGVAL LREAL Lunghezza nominale dell’utensile ARRAY[1…5]
MaxChangeLen $OFFMAXRQ LREAL Usura massima lunghezza utensile ARRAY[1…5]
ActChangeLen $OFFCURRQ LREAL Usura corrente lunghezza utensile ARRAY[1…5]
InitialDim $DIAORIGVAL LREAL Diametro nominale utensile ARRAY[1…2]
MaxChangeDiam $DIAMAXRQ LREAL Usura massima diametro utensile ARRAY[1…2]
ActChangeLen $DIACURRQ LREAL Usura corrente diametro utensile ARRAY[1…2]
Orient $ORIENT SHORT Tipo di orientamento utensile
ExType RISERVATO
ExInd RISERVATO
dUser $ODUSER LREAL Ad uso utente ARRAY[1…10]
sUser $OSUSER SHORT Ad uso utente ARRAY[1…10]

12.2.4 Tabella Utente


Nota: funzione non disponibile con OPEN-10, richiede l’opzione A43 con OPEN-20 e
OPEN-30

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]

12.2.5 Tabella tecnologica estesa


La tabella dei materiali è rappresentata da una matrice tridimensionale le cui dimensioni sono definite
nell’AMP della macchina.
Il nome della variabile corrispondente alla tabella dei materiali è $PTECH, il primo indice della tabella è
il suo record e identifica una delle matrici bidimensionali disponibili, il secondo ed il terzo indice
indicano la riga e la colonna di un elemento.
Il comportamento della tabella estesa è controllato dal parametro AMP “controllo accesso variabile
$PTECH”. Se il valore è settato a falso l’accesso alla matrice avviene in modo “naturale” ovvero i tre
indici partono da zero. Se invece il parametro è settato a vero allora il primo record (primo indice della
matrice) è indicizzato a partire da 1, inoltre il primo elemento di ogni riga di una matrice serve come
flag di validità dei dati contenuti nella riga stessa: se l’elemento è diverso da zero allora i dati contenuti
nella riga saranno accessibili e validi, altrimenti l’accesso in lettura ai dati viene negato.
È possibile caricare il contenuto della tabella tecnologica estesa tramite il triletterale LOA.

45004616J 241
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

12.2.6 Tabella dei magazzini


Nota: funzione non disponibile con OPEN-10, richiede l’opzione A43 con OPEN-20 e
OPEN-30

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]

12.2.7 Tabella delle pocket


Nota: funzione non disponibile con OPEN-10, richiede l’opzione A43 con OPEN-20 e
OPEN-30

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

12.2.8 Variabili di input/output WinPLUS


Gli Input/Output di WinPLUS sono organizzati in 512 variabili di tipo WORD per un totale di 8192 segnali
di I/O.

45004616J 242
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

12.2.9 Variabili di tabella mappate su PD


Le seguenti variabili non appartengono alle tabelle e contengono valori legati alle caratteristiche degli
assi.
Alcune di queste variabili corrispondono ai dati presenti nella tabella Assi dei controlli della famiglia
S10-OSAI.
Nei controlli OPENControl queste variabili sono mappate su variabili di tipo PD e sono accessibili soltanto
in lettura; ogni tentativo di scrittura delle stesse genererà un errore di accesso alla variabile.

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

12.2.10 Accesso alle variabili di tabella


A seconda del tipo di variabile (array o variabile singola) esistono due metodi per accedere alle variabili
tecnologiche.

Sintassi variabile singola

nomevar(record)

Sintassi variabile array

nomevar(record, indiceriga, indicecolonna )

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

12.2.11 Accesso alle variabili di input


Esistono tre sintassi possibili per accedere alle variabili di input, le prime due permettono di
leggere/scrivere un bit di una WORD di input; la terza sintassi permette di leggere/scrivere una WORD di
input intera.

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

12.2.12 Accesso alle variabili di output


Esistono tre sintassi possibili per accedere alle variabili di output, le prime due permettono di
leggere/scrivere un bit di una WORD di output; la terza sintassi permette di leggere/scrivere una WORD
di output intera.

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

12.2.13 Variabili Output sincronizzate


È possibile imporre un cambiamento di stato su variabili di output al termine di un ente di movimento.
A seconda del triletterale utilizzato verranno modificati output “standard” o di tipo fast output.

Sintassi

($OW, indice, valore, maschera [ , delay ])


($OF, valore, maschera [ , delay ])

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.

delay Parametro opzionale che permette di introdurre un ritardo in millisecondi tra il


termine dell’esecuzione dell’ente di movimento e il cambio di stato dei segnali di
output. Può essere espresso direttamente tramite un numero ireale 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

12.3 LCK – Bloccagio/Sbloccaggio delle tabelle WinPLUS


Questa istruzione permette di segnalare al PLC, all'Editor delle Tabelle o ad altri applicativi che nella
tabella specificata si vogliono modificare i contenuti di uno o più campi e che pertanto la tabella stessa
non è accessibile a detti applicativi fino a quando, tramite un'altra istruzione LCK, la programmazione
non segnala che l'operazione di modifica è terminata.

Sintassi

(LCK, numero tabella, {0 | 1})

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

Questo errore è gestibile da part program predisponendo la variabile ERR = 1.


Per maggiori dettagli consultare l'APPENDICE A: GESTIONE ERRORI DA PART
PROGRAM.

Il valore 0 indica che la programmazione ha terminato l'utilizzo della tabella


specificata per cui essa viene resa nuovamente disponibile per gli altri utilizzatori.

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

12.4 POCKACC – Accesso in scrittura alla tabella pocket


Il codice POCKACC attiva l’accesso in scrittura alla variabili di tabella pocket.

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

12.5 LOA – Caricamento delle tabelle in memoria


Il comando LOA permette di caricare una tabella tecnologica a partire da un file residente su disco.

Sintassi

(LOA, nometabella [,par1 [, par2]] )

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. USO DI MAGAZZINI E POCKET

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.

Le operazione implementate dal linguaggio sono le seguenti:

Tipo operazione Comando Sottocomando

Ricerca in magazzino di un utensile TOL SRC

Ricerca in magazzino di un utensile con vita TOL SLIF

Ricerca in magazzino di un utensile a partire da una pocket TOL SDIR

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

Caricamento di un utensile a magazzino TOL LOA

Spostamento di un utensile da magazzino TOL UNL

Aggiornamento valore di vita utensile TOL LIF

Ricerca di pocket libera PKT SRC

Ricerca di pocket più vicina a una pocket di riferimento PKT CLS

Ricerca di pocket libera più vicina PKT NEA

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

13.2 TOL – SRC: Ricerca di un utensile in magazzino (generica)


Nota: richiede l’opzione A22 con OPEN-10, OPEN-20 e OPEN-30

Questo comando permette di ricercare all’interno di un magazzino un utensile di nome dato.

Sintassi

(TOL, SRC, tool, mag, toolInd, pockInd)

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

13.3 TOL – SLIF: Ricerca di utensile con vita specificata


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 e la cui vita
residua sia maggiore di un certo valore.

Sintassi

(TOL, SLIF, tool, mag, lifeVal, toolInd, pockInd)

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

13.4 TOL – SDIR: Ricerca di utensile a partire da una pocket


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.

Sintassi

(TOL, SDIR, tool, mag, pockIni, dir, toolInd, pockInd)

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

(TOL, LDIR, tool, lifeVal, mag, pockIni, dir, toolInd, pockInd)

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

13.6 TOL – FAM: Conteggio di utensili di una famiglia


Nota: richiede l’opzione A22 con OPEN-10, OPEN-20 e OPEN-30

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

(TOL, FAM, tool, mag, toolInMag, toolOutMag)

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

13.7 TOL – LOA: Caricamento di un utensile a magazzino


Nota: richiede l’opzione A22 con OPEN-10, OPEN-20 e OPEN-30

Questo comando permette di caricare a magazzino un utensile.

Sintassi

(TOL, LOA, toolInd, mag, pock)

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

13.8 TOL – UNL: Spostamento di un utensile da magazzino


Nota: richiede l’opzione A22 con OPEN-10, OPEN-20 e OPEN-30

Questo comando permette di spostare un utensile che era a magazzino verso il cambio utensili o verso il
mandrino.

Sintassi

(TOL, UNL, toolInd, magNum, pockInd, position)

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

13.9 TOL – LIF: Aggiornamento valore di vita utensile


Nota: richiede l’opzione A22 con OPEN-10, OPEN-20 e OPEN-30

Questo comando permette di aggiornare il valore del parametro vita rimanente di un utensile.

Sintassi

(TOL, LIF, toolInd, value, remLife, toolStatus)

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:

Questa funzione permette di aggiornare la vita rimanente di un utensile.

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

13.10 PKT – SRC: Ricerca di pocket libera


Nota: richiede l’opzione A22 con OPEN-10, OPEN-20 e OPEN-30

Questo comando permette di cercare, all’interno di un magazzino una pocket compatibile con un
utensile dato.

Sintassi

(PKT, SRC, toolInd, mag, pockIni, dir, pockInd)

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

13.11 PKT – CLS: Ricerca di pocket più vicina a pocket di riferimento


Nota: richiede l’opzione A22 con OPEN-10, OPEN-20 e OPEN-30

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

13.12 PKT – NEA: Ricerca di pocket libera più vicina


Nota: richiede l’opzione A22 con OPEN-10, OPEN-20 e OPEN-30

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

(PKT, NEA, toolInd, mag, pockCur, pockInd)

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. APPENDICE A: GESTIONE ERRORI DA PART PROGRAM

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.

VARIABILE DI SISTEMA FUNZIONE


ERR Abilita la gestione degli errori nel Part Program
Quando la gestione degli errori è affidata al programmatore (ERR=1),
STE contiene il codice d’errore generato dal comando precedente. È una
variabile di sistema di sola lettura.
Quando la gestione degli errori è affidata al programmatore (ERR=1),
STA contiene l’identificatore dell’ambiente di sistema che ha generato l’errore.
È una variabile di sola lettura.

14.2 ERR – Abilita/Disabilita la gestione errori nel Part Program


La variabile di sistema ERR abilita o disabilita la gestione di alcuni errori riscontrati dal sistema
eseguendo specifiche istruzioni.

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

14.3 Codici identificatori ambienti di sistema: STA


Valore variabile STA
Prefisso Ambiente generatore dell’errore
Decimale Esadecimale
IPC 17 0x11 Sistema operativo
CNS 18 0x12 Console
EMG 19 0x13 Emergenza
IO 20 0x14 IO management
PLC 21 0x15 Logica di macchina (PLC)
GMC 22 0x16 Interpolatori-movimento
CNC 23 0x17 Processo
OSW 24 0x18 OSWire
TBL 25 0x19 Tabelle
GEO 26 0x1A Libreria Geometrica
LOD 31 0x1F Loader
SER 32 0x20 SERVO
SEROSW 33 0x21 SERVO OSWIRE

14.4 Errori durante il ciclo di tastatura


Errore visualizzato
Comando STA STE Descrizione
se ERR=0
0 0 ciclo di tastatura terminato regolarmente ------
22 1 tastatura non avvenuta 22/86
G72
22 2 tastatore non rilasciato 22/87
G73
23 3 parametri tastatore non specificati 23/251
G74
tastatura avvenuta nella fase di avvicinamento 22/85
22 4
rapido

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

14.5 Errori nella gestione "Assi Migranti"


Errore visualizzato
Comando STA STE Descrizione
se ERR=0
0 0 esecuzione senza errori ------
23 10 ID asse non configurato 23/360
23 11 ID asse appartenente alla logica 23/361
GTA
23 12 ID asse appartenente ad un altro processo 23/362
23 13 ID asse appartenente ad un asse mandrino 23/364
23 15 ID asse configurato come PSEUDO asse 23/373

Esempio di programmazione GTA con gestione errore:


;. . . . .
;. . . . .
ERR = 1
;. . . . .
"RETRY"
(GTA,X1,Y2,Z5) ;Richiede acquisizione ID 1,2,5
(GTO,NEXT,STE<>12) ;Test errore asse occupato.
(DLY,0.5) ;Se l'asse è occupato attende che si liberi
(GTO,RETRY)
"NEXT"
(GTO,ERROR,STE<>0) ;In caso di altro errore abortisce l'operazione
G1 X10 Y10 F1000 ;Ad acquisizione avvenuta effettua la movimentazione
Z50
;. . . . .
;. . . . .
;. . . . .
"ERROR"
;. . . . . ;Gestione dei casi di errore

La gestione dell'errore da part program a cui si fa riferimento nell'esempio,


rappresenta anche un modo semplice per sincronizzare due processi, qualora un
processo debba attendere che uno o più assi si liberino sull'altro, prima di eseguire una
data lavorazione.
GTA modifica 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 265
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

14.6 Errori nella gestione multiprocesso


Errore visualizzato
Comando STA STE Descrizione
se ERR=0
0 0 Esecuzione senza errori ------
EXE
23 41 Comando EXE o ECM fallito 23/512
ECM
23 43 Numero processo errato 23/500

Esempio di programmazione ECM con gestione errore:


Verifica della corretta esecuzione del comando sincrono sul processo 2 utilizzando il metodo della
gestione dell'errore:

ERR = 1
(ECM,”G1 X100 F1000”,P2,S)
(GTO, ERROR,STE <> 0)
ERR = 0
.......................................
.......................................
;. . . . .
"ERROR"
;. . . . . ;Gestione dei casi di errore

14.7 Errori nel bloccaggio di una tabella


Errore visualizzato
Comando STA STE Descrizione
se ERR=0
0 0 Esecuzione senza errori ------
LCK
23 14 Bloccaggio della tabella fallito 23/537

Esempio di programmazione LCK con gestione errore:


;. . . . .
;. . . . .
ERR = 1
;. . . . .
"RETRY"
(LCK,1,1)
(GTO,NEXT,STE<>14) ;Test errore tabella già bloccata.
(DLY,0.5) ;Attesa
(GTO,RETRY)
"NEXT"

45004616J 266
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

14.8 Errori nella gestione file da Part Program


Errore visualizzato
Comando STA STE Descrizione
se ERR=0
Tutti 0 0 Esecuzione senza errori
23 30 Canale file già in uso 23/513
OPN 23 31 File già aperto 23/515
23 33 Raggiunto fine file 23/519
DEL
23 32 File non TROVATO 23/516
OPN
REA 23 38 Formato record file binario errato 23/526
WRT 23 39 Record troppo grande 23/527

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

14.9 Errori nella gestione porte seriali da Part Program


Errore visualizzato
Comando STA STE Descrizione
se ERR=0
Tutti 0 0 Esecuzione senza errori
SOP 49 44 Impossibile aprire la comunicazione su linea seriale 49/35
PUT 23 50 Timeout trasmissione dati su seriale 23/540
23 51 Timeout ricezione dati su seriale 23/541
GET
23 52 Caricamento dati da porta seriale fallito 23/543

45004616J 267
Prima Electro S.p.A. OPENcontrol – Manuale di Programmazione Avanzata

14.10 Errori nell’input da utente


Gli errori legati all’input utente sono presenti soltanto sulla variabile STE, ma non corrispondono a
nessun errore della libreria processo (errori del tipo 23/nnn)

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

14.11 Errori durante operazioni su magazzini e pocket


Errore visualizzato
Comando STA STE Descrizione
se ERR=0
Tutti 0 0 Esecuzione senza errori
La pocket dalla quale scaricare un
25 53 25/117
utensile è vuota
L’utensile che si vuole scaricare non è a
25 54 magazzino o non è nella pocket o nel 25/110
magazzino specificati
La direzione di ricerca richiesta non è
25 55 25/125
stata riconosciuta
La direzione di ricerca richiesta non è
25 56 25/126
compatibile con il tipo di magazzino
25 57 Tipo del magazzino non definito 25/102
L’indice della pocket è fuori dal
25 58 25/112
magazzino
La pocket e l’utensile sono di tipo diverso (fisso
25 59 25/105
o casuale)
La dimensione (classe) dell’utensile non
25 60 25/106
corrisponde a quella della pocket
TOL 25 62 Utensile già in magazzino 25/104
PKT 25 63 Pocket già utilizzata da un utensile 25/113
Utensile e pocket di tipo fisso ma non
25 64 25/109
compatibili
25 65 Una pocket bulk è già impegnata 25/116
25 66 Una pocket bulk è già impegnata 25/115
La forma dell’utensile e il tipo di
25 67 25/108
magazzino non sono compatibili
È stata cercata una pocket ingombro
25 68 25/114
che sarebbe fuori magazzino
25 69 Utensile non trovato 25/111
25 70 Indice del magazzino non valido 25/101
25 71 Configurazione del magazzino non coerente 25/131
25 72 Pocket non di tipo master 25/118
L’utensile trovato ha un valore di vita
25 73 25/120
rimasta minore di quanto richiesto
Alcuni utensili della tabella non sono
25 74 25/138
stati caricati

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

0 0 Esecuzione senza errori ------

Le quote finali calcolate tramite G77 superano i


G77 22 75 22/161
limiti operativi negativi

Le quote finali calcolate tramite G77 superano i


22 76 22/162
limiti operativi positivi

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

Copyright  2017 by PRIMA ELECTRO S.p.A.

45004616J 271

Potrebbero piacerti anche