Il 0% ha trovato utile questo documento (0 voti)
44 visualizzazioni345 pagine

Workbook Prog p2 Kss 8 r3 v1 It

Caricato da

L Galeotti
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
44 visualizzazioni345 pagine

Workbook Prog p2 Kss 8 r3 v1 It

Caricato da

L Galeotti
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 345

Training

Programmazione robot 2
KUKA System Software 8.5

Documentazione di formazione

Edizione: 01.08.2019
PROG P2 KSS 8 R3 V1
KUKA College

Luca Galeotti, A.C.M.I. SpA


Programmazione robot 2

© Copyright 2019
KUKA Deutschland GmbH
Zugspitzstraße 140
D-86165 Augsburg
Germania

E' vietato riprodurre o consegnare a terzi questa documentazione o parti di essa salvo l'esplicita
autorizzazione del KUKA Deutschland GmbH.
Nell'unità di controllo possono essere operative ulteriori funzioni non descritte in questa docu-
mentazione. L'utente però non ha il diritto di pretendere queste funzioni in caso di sostituzione o
di assistenza.
Il contenuto di questa documentazione e stato verificato circa la sua conformità con l'hardware
e il software descritto. Nonostante ciò non si possono escludere eventuali divergenze, per cui
non si garantisce la conformità totale. Le informazioni di questa documentazione, comunque,
sono controllate regolarmente ed eventuali correzioni saranno integrate nell'edizione successiva.
Ci riserviamo il diritto di apportare modifiche tecniche che non hanno effetto sulla funzione.
KIM-PS5-DOC
Traduzione della documentazione originale

Pubblicazione: Pub COLLEGE PROG P2 KSS 8 R3 (PDF-COL) it


PB12451

Struttura del libro: PROG P2 KSS 8 R3 V1.17


BS9829

Versione: PROG P2 KSS 8 R3 V1

2/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Indice

1 Introduzione.............................................................................................. 9
1.1 Descrizione del seminario..................................................................................... 9

2 Documentazione del sistema robot....................................................... 11


2.1 Panoramica: documentazione del sistema robot................................................. 11
2.2 KUKA Xpert........................................................................................................... 11
2.3 KUKA Xpert URL................................................................................................... 12
2.4 Registrazione......................................................................................................... 13
2.5 Accesso................................................................................................................. 14
2.6 Uso di KUKA Xpert Basic..................................................................................... 15
2.7 Esercizio: Uso di KUKA Xpert Basic.................................................................... 17

3 Messa in servizio del robot.................................................................... 19


3.1 Vista d'insieme....................................................................................................... 19
3.2 Misurazione base indiretta.................................................................................... 19
3.2.1 Esercizio: Misurazione di base e utensile............................................................ 24
3.3 Gruppi utenti sul controllo..................................................................................... 25
3.3.1 Cambio gruppo utenti............................................................................................ 26
3.3.2 Modifica della password........................................................................................ 28
3.3.3 Gestione dei diritti sul controllo............................................................................ 29
3.3.3.1 Assegnazione dei modi operativi ai gruppi utenti................................................ 29
3.3.3.2 Assegnazione dei gruppi funzionali ai gruppi utenti............................................ 30

4 Programmazione riconoscimento collisione........................................ 33


4.1 Panoramica: Programmazione riconoscimento collisione.................................... 33
4.2 Cos'è/cosa fa un riconoscimento collisione?........................................................ 33
4.2.1 Visualizzazione dei valori attuali........................................................................... 34
4.3 Configurazione del riconoscimento collisione per lo spostamento manuale....... 35
4.3.1 Proseguimento dopo una collisione...................................................................... 38
4.3.2 Esercizio: Configurazione del riconoscimento collisione per lo spostamento
manuale................................................................................................................. 41
4.4 Utilizzo del riconoscimento collisione in frasi di movimento................................ 42
4.4.1 Configurazione di record di dati per l'uso in moduli inline.................................. 42
4.4.2 Attivazione del riconoscimento di collisione nel modulo inline............................ 44
4.4.3 Esercizio: Configurazione del riconoscimento collisione per il funzionamento
del programma...................................................................................................... 46

5 Programmazione strutturata................................................................... 47
5.1 Vista d'insieme....................................................................................................... 47
5.2 Obiettivo di una metodo di programmazione univoco......................................... 47
5.3 Mezzi ausiliari per la creazione di programmi robot strutturati............................ 47
5.4 Operazioni con FOLD........................................................................................... 50
5.5 Nomi di file sensati .............................................................................................. 52
5.6 Indentazione di righe di comando........................................................................ 52
5.7 Come si crea un diagramma di programmazione................................................ 52
5.8 Esercizio: Strutturazione di programmi................................................................. 55

6 Introduzione al livello esperto................................................................ 57

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 3/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

6.1 Vista d'insieme....................................................................................................... 57


6.2 Creazione di programmi mediante modelli........................................................... 57
6.3 Adattamento delle viste in Esplora....................................................................... 59
6.4 Adattamento della vista nell'editor........................................................................ 60
6.5 Ricerca ed eliminazione di errori nel programma................................................ 61

7 Programmazione con WorkVisual.......................................................... 65


7.1 Vista d'insieme....................................................................................................... 65
7.2 Familiarizzazione con l'ambiente di configurazione WorkVisual.......................... 65
7.3 Creazione di una versione portatile di WorkVisual.............................................. 66
7.4 Collegamento di un PC WorkVisual al sistema di controllo................................ 68
7.5 Panoramica dell'interfaccia grafica WorkVisual.................................................... 69
7.6 Personalizzazione di WorkVisual per la programmazione................................... 70
7.7 Modalità WorkVisual.............................................................................................. 71
7.8 Programmazione online con WorkVisual.............................................................. 72
7.8.1 Caricamento della struttura del file nella vista di programmazione e diagnosi... 72
7.8.2 Modifica di singoli programmi e trasmissione mirata al sistema di controllo...... 75
7.8.3 Debugging online di programmi............................................................................ 78
7.9 Utilizzo dell'editor KRL.......................................................................................... 81
7.9.1 Descrizione dell'interfaccia grafica........................................................................ 82
7.9.2 Funzioni di editazione generali............................................................................. 83
7.9.3 Visualizzazione delle funzioni e variabili.............................................................. 84
7.9.4 Ricerca e sostituzione in file................................................................................. 86
7.9.5 Rinomina di variabili.............................................................................................. 87
7.9.6 Completamento automatico................................................................................... 88
7.9.7 Snippet – Immissione rapida di istruzioni KRL.................................................... 89
7.9.8 Correzione Quickfix............................................................................................... 90
7.9.9 Dichiarazione automatica di variabili.................................................................... 90
7.9.10 Eliminazione di variabili non utilizzate.................................................................. 92
7.9.11 Visualizzazione dell'utilizzo di variabili.................................................................. 93
7.9.12 Operazioni con fold............................................................................................... 95

8 Variabili e dichiarazioni........................................................................... 97
8.1 Vista d'insieme....................................................................................................... 97
8.2 Archivio dati in KRL.............................................................................................. 97
8.2.1 Convenzioni di nomenclatura................................................................................ 98
8.2.2 Doppia dichiarazione di variabili........................................................................... 98
8.2.3 Tipi di dati.............................................................................................................. 98
8.2.4 Creazione di variabili............................................................................................. 99
8.2.5 Durata e validità delle variabili.............................................................................. 99
8.2.6 Dichiarazione di variabile in funzione dell'allocazione di memoria...................... 100
8.2.7 Dati di sistema KUKA........................................................................................... 100
8.3 Operazioni con tipi di dati semplici....................................................................... 101
8.3.1 Dichiarazione di variabili....................................................................................... 101
8.3.2 Inizializzazione di variabili con tipi di dati semplici.............................................. 103
8.3.3 Manipolazione di valori di variabili di tipi di dati semplici con KRL.................... 106
8.3.4 Esercizio: Predisposizione per il programma di palettizzazione.......................... 111
8.3.5 Esercizio: Variabili semplici................................................................................... 112
8.4 Visualizzazione delle variabili................................................................................ 113

4/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

8.5 Rappresentazione di variabili globali in una visualizzazione............................... 115


8.6 Array/campi con KRL............................................................................................ 118
8.6.1 Esercizio: Programmazione di campi................................................................... 124
8.7 Strutture con KRL.................................................................................................. 125
8.7.1 Esercizio: Creazione di strutture proprie ............................................................. 128
8.8 Il tipo dati di enumerazione ENUM...................................................................... 129
8.8.1 Esercizio: Creazione della variabile del tipo di dati ENUM................................. 131
8.9 Accordo di segnale................................................................................................ 132

9 Sottoprogrammi e funzioni..................................................................... 135


9.1 In generale............................................................................................................. 135
9.2 Collegamento di programmi robot........................................................................ 135
9.2.1 Operazioni con sottoprogrammi locali.................................................................. 136
9.2.2 Operazioni con sottoprogrammi globali................................................................ 139
9.3 Trasferimento di parametri a sottoprogrammi...................................................... 141
9.4 Programmazione di funzioni.................................................................................. 145
9.5 Operazioni con funzioni standard KUKA.............................................................. 148
9.6 Esercizio: Sottoprogrammi con trasferimento di parametri ................................. 150
9.7 Esercizio: Programmazione di funzioni proprie ................................................... 151

10 Programmazione messaggi con KRL.................................................... 153


10.1 Vista d'insieme....................................................................................................... 153
10.2 Messaggi definiti dall'utente in generale............................................................... 153
10.2.1 Programmazione di messaggi semplici................................................................ 155
10.2.1.1 Emissione del messaggio di notifica.................................................................... 155
10.2.1.2 Emissione del messaggio di conferma................................................................. 159
10.2.1.3 Emissione del messaggio di stato........................................................................ 162
10.2.1.4 Emissione del messaggio di dialogo.................................................................... 166

11 Creazione e modifica di movimenti programmati............................... 173


11.1 Vista d'insieme....................................................................................................... 173
11.2 Programmazione di movimenti singoli SPLINE mediante KRL........................... 173
11.3 Movimento di frase singola con SPTP................................................................. 174
11.4 Movimento di singola frase con SLIN e SCIRC.................................................. 176
11.4.1 Parametro di movimento....................................................................................... 180
11.5 Programmazione di movimenti relativi e assoluti con KRL................................. 186
11.6 Calcolo o manipolazione di posizioni robot.......................................................... 190
11.7 Modifica mirata di bit di Stato e Turn................................................................... 191
11.8 Esercizio: Palettizzazione e depalettizzazione..................................................... 197
11.9 Operatore geometrico............................................................................................ 198
11.9.1 Esercizio: Operatore geometrico........................................................................... 202

12 Programmazione di movimenti spline................................................... 203


12.1 Cos'è uno SPLINE?.............................................................................................. 203
12.2 Programmazione dei blocchi SPLINE in KRL...................................................... 205

13 Operazioni con variabili di sistema....................................................... 209


13.1 In generale............................................................................................................. 209
13.2 Misurazione tempo di ciclo con timer................................................................... 209
13.3 Esercizio: Misurazione tempo ciclo e ottimizzazione........................................... 212

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 5/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

14 Programmazione degli interrupt............................................................ 213


14.1 In generale............................................................................................................. 213
14.2 Programmazione di routine di interrupt................................................................ 213
14.3 Frenatura del robot e interruzione del movimento di corsa................................. 218
14.4 Esercizio: Programmazione degli interrupt........................................................... 224

15 Applicazione di funzioni logiche nel programma robot..................... 225


15.1 Vista d'insieme....................................................................................................... 225
15.2 Introduzione alla programmazione logica............................................................. 225
15.3 Visualizzazione delle variabili................................................................................ 226
15.3.1 Visualizzazione di ingressi e uscite...................................................................... 227
15.3.2 Visualizzazione di flag, contatori e timer.............................................................. 229
15.4 Programmazione logica semplice......................................................................... 230
15.4.1 Programmazione di funzioni semplici di commutazione...................................... 231
15.4.2 Programmazione delle funzioni di attesa in KRL................................................. 232
15.5 Programmazione di logica con SPLINE e frasi singole SPLINE......................... 235
15.5.1 Programmazione di trigger spline......................................................................... 236
15.5.1.1 Programmazione di trigger in KRL....................................................................... 236
15.5.1.2 Informazioni di programmazione........................................................................... 240
15.5.2 Programmazione dell'arresto condizionato........................................................... 244
15.5.2.1 Programmazione dell'arresto condizionato con KRL............................................ 245
15.5.3 Area di traslazione costante................................................................................. 248
15.5.3.1 Programmazione dell'area di traslazione costante con KRL............................... 249
15.5.3.2 Informazioni di programmazione........................................................................... 250
15.5.4 Programmazione del blocco temporale spline..................................................... 252

16 Submit interpreter.................................................................................... 257


16.1 Vista d'insieme....................................................................................................... 257
16.2 Familiarizzazione con il (multi) submit interpreter................................................ 257
16.3 Gestione dei submit.............................................................................................. 259
16.4 Programmazione di submit................................................................................... 261
16.5 Esercizio: Programmazione di submit.................................................................. 263

17 Configurazione degli spazi di lavoro per la sicurezza dell'impian-


to................................................................................................................ 265
17.1 Utilizzo del livello Esperto..................................................................................... 265
17.2 Utilizzo degli spazi di lavoro per la protezione dell'impianto............................... 265
17.3 Configurazione dello spazio di lavoro cartesiano................................................. 268
17.4 Configurazione di spazi di lavoro riferiti agli assi................................................ 273
17.5 Esclusione del monitoraggio dello spazio di lavoro............................................. 275
17.6 Esercizio: Configurazione degli spazi di lavoro per la protezione dell'impianto.. 277

18 Come si lavora con WorkVisual............................................................ 279


18.1 Panoramica: Come si lavora con WorkVisual...................................................... 279
18.2 Caricamento di un progetto esistente in WorkVisual........................................... 279
18.3 Salvataggio locale di un progetto WorkVisual...................................................... 281
18.4 Trasferimento (installazione) del progetto al sistema di controllo robot.............. 282
18.4.1 Conferma del progetto sul controllo..................................................................... 287
18.4.2 Attivazione della configurazione di sicurezza modificata..................................... 289
18.4.3 Gestione progetto ampliata sullo smartPAD......................................................... 290

6/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

18.4.3.1 Punti di ripristino.................................................................................................... 293


18.5 Esercizio: Utilizzo di progetti tramite WorkVisual................................................. 295
18.6 Amministrazione dell'utensile e della base........................................................... 296
18.6.1 Amministrazione dell'utensile e della base tramite WorkVisual........................... 297
18.6.1.1 Aggiunta utensile................................................................................................... 299
18.6.1.2 Aggiunta base........................................................................................................ 301
18.6.1.3 Creazione utensile esterno e base....................................................................... 302
18.7 Modifica di finecorsa software.............................................................................. 304
18.7.1 Modifica di finecorsa software tramite WorkVisual............................................... 307
18.7.2 Esercizio: Impostazione dei finecorsa software del robot.................................... 310

19 Allegato..................................................................................................... 311
19.1 Programmazione di messaggi estesi.................................................................... 311
19.1.1 Struttura di messaggi estesi................................................................................. 311
19.1.2 Variabili e strutture nei messaggi definiti dall'utente............................................ 311
19.1.3 Funzioni nei messaggi definiti dell'utente............................................................. 314
19.1.4 Intervento con un messaggio di istruzioni............................................................ 316
19.1.5 Intervento con un messaggio di stato.................................................................. 317
19.1.6 Intervento con un messaggio di conferma........................................................... 319
19.1.7 Intervento con un messaggio di attesa................................................................ 321
19.1.8 Ulteriori variabili e strutture nei dialoghi............................................................... 323
19.1.8.1 Funzioni nei dialoghi............................................................................................. 323
19.1.8.2 Intervento con dialoghi.......................................................................................... 326
19.2 Modulo inline COLLDETECT................................................................................ 329
19.2.1 COLLDETECT: SetDefault.................................................................................... 330
19.2.2 COLLDETECT: SetLimits...................................................................................... 330
19.2.3 COLLDETECT: OFF.............................................................................................. 331
19.2.4 COLLDETECT: SaveMax...................................................................................... 332
19.2.4.1 Esempio programma............................................................................................. 334
19.2.5 COLLDETECT: UseDataSet.................................................................................. 335
19.3 Variabili di sistema................................................................................................ 336
19.3.1 Variabili di sistema per WITH............................................................................... 336
19.3.2 Blocco SPLINE: Variabili di sistema con WITH................................................... 337
19.3.3 Riconoscimento collisione - Variabili di sistema................................................... 338

Index 343

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 7/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

8/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Introduzione
1 Introduzione

1.1 Descrizione del seminario

Descrizione

Fig. 1-1: Frontespizio

Il seminario Programmazione robot 2 fornisce una conoscenza avanzata


del linguaggio di programmazione specifico KUKA Robot Language, in
breve KRL. Sulla base del seminario Programmazione robot 1 verranno
spiegate strategie che consentono di realizzare progetti di programmazio-
ne più complessi. Inoltre, saranno presentate nuove ed interessanti funzio-
ni del software KUKA 8.5.
La documentazione didattica non copre l'intera gamma di funzioni del
software KUKA e si concentra sui contenuti di base, spiegati con esem-
pi. La descrizione completa è riportata nella documentazione liberamen-
te accessibile e scaricabile comodamente online da KUKA Expert.

Obiettivi di apprendimento

• Creazione di un programma di palettizzazione che, sulla base di una


posizione appresa, calcola e accosta un numero arbitrario di posizioni
di appoggio componenti.
• Emissione di informazioni per l'utente e interazione con l'utente tramite
messaggi.
• Rappresentazione dello stato dell'impianto con l'aiuto di un proprio
blocco dati.
• Reazione a errori e ripristino automatico di uno stato definito dell'im-
pianto.

Versioni del software

Questi esercizi didattici sono stati testati con le seguenti versioni:


Software e opzioni Versione
KUKA System Software 8.5.6
GripperSpotTech 4.1.3

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 9/345


Luca Galeotti, A.C.M.I. SpA
Introduzione Programmazione robot 2

10/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Documentazione del sistema robot


2 Documentazione del sistema robot

2.1 Panoramica: documentazione del sistema robot

Nella presente unità didattica sono esposti i seguenti contenuti:


• Presentazione del KUKA Xpert
• Registrazione
• Uso del KUKA Xpert Basic

2.2 KUKA Xpert

Descrizione

Fig. 2-1

KUKA Xpert è una banca dati semantica di conoscenze contenente infor-


mazioni e documentazioni tecniche su tutti i prodotti KUKA. Sulla base di
dati collegati semanticamente, supporta il sistema per rispondere alle do-
mande sui prodotti KUKA.
Tutte le informazioni su un argomento sono visibili a colpo d'occhio. I ri-
sultati della ricerca si possono limitare utilizzando vari filtri. Una ricerca a
testo libero è sempre possibile.
La responsabilità e il rischio per l'uso delle informazioni contenute in
KUKA Xpert è esclusivamente a carico dell'utente. È esclusa qualsivo-
glia richiesta di risarcimento danni nei confronti di KUKA.

Licenze

Per KUKA Xpert sono disponibili diversi pacchetti di licenze combinabili fra
loro. La tabella seguente riporta quali tipi di informazione sono contenuti
nelle rispettive licenze:
KUKA Xpert Ba- Contiene la documentazione tecnica per i prodotti
sic KUKA, come:

• Istruzioni per il montaggio e il funzionamento


• Istruzioni per l'uso e la programmazione
• Specifiche
• Sicurezza
• Informazioni basilari sul prodotto
• Informazioni sui pezzi di ricambio
KUKA Xpert Basic è già incluso in tutte le altre licen-
ze.
KUKA Xpert Ba- Oltre ai contenuti di KUKA Xpert Basic, contiene an-
sic Plus che l'accesso a documenti specifici del cliente.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 11/345


Luca Galeotti, A.C.M.I. SpA
Documentazione del sistema robot Programmazione robot 2

KUKA Xpert Contiene un accesso illimitato a tutti i contenuti di


KUKA Xpert. Cioè:

• Database dei casi, con oltre 20.000 messaggi che


includono cause e soluzioni
• Oltre 500 istruzioni di lavoro, ad es. per la sostitu-
zione dei pezzi di ricambio, la programmazione e
la regolazione
• Oltre 300 variabili di sistema per le versioni KSS
5 - 8.5
• Informazioni per la manutenzione, come quantità
d'olio, pressioni e tensioni della cinghia dentata
per ogni robot
• Linee guida come istruzioni passo dopo passo
per l'implementazione di alcune funzioni nei siste-
mi bus.
• Descrizioni di funzioni, ad es. spiegazioni dei pa-
rametri delle funzioni nei sistemi bus
• Download ad es. di codici o file di configurazione
• Forze di processo
• Carichi flange
• Dati di precisione
• Schemi di compatibilità

2.3 KUKA Xpert URL

Viene visualizzato solo un estratto della licenza Basic. Gli altri schemi di
licenza non fanno parte di questo corso.

Descrizione

Ai documenti accompagnatori del prodotto KUKA viene allegato un foglio


informativo KUKA Xpert URL. Questo contiene i link alle documentazioni e
ulteriori informazioni sui singoli componenti del sistema (robot/controllo/
software).
KUKA Xpert Basic contiene le informazioni seguenti:
• Documentazione tecnica
• Informazioni sul prodotto
• Informazioni sui pezzi di ricambio
Per l’utilizzo di KUKA Xpert Basic è necessario un login my.KUKA.
Il foglio informativo KUKA Xpert URL è strutturato come segue:

Fig. 2-2: Foglio informativo KUKA Xpert URL

12/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Documentazione del sistema robot


Pos. Descrizione
1 PN: Codice prodotto
SN: Numero di serie
2 Codice articolo e denominazione del prodotto
3 KUKA Xpert URL
4 KUKA Xpert URL come codice QR

2.4 Registrazione

La registrazione avviene sul portale my.KUKA. Il portale my.KUKA è un


portale clienti KUKA globale e il punto di accesso digitale per le imprese.
Attraverso il portale, i clienti possono accedere a informazioni aggiuntive
specifiche, funzioni e servizi digitali. Se il login my.KUKA non è ancora di-
sponibile, si deve creare un nuovo account.
È possibile registrarsi solo con il proprio indirizzo e-mail aziendale. La
registrazione con un indirizzo e-mail privato è esclusa.

Procedimento

1. Immettere il link sul foglio informativo o scansionare il codice QR. In


alternativa cliccare qui: https://xpert.kuka.com.
2. Cliccare su Non hai ancora un account my.KUKA? per creare un
nuovo account.

Fig. 2-3

Pos. Spiegazione
1 Login per i clienti
2 Login per i collaboratori KUKA
3 Inoltro al modulo di registrazione

3. Compilare il modulo di registrazione e accettare l’informativa sulla pri-


vacy e le condizioni d'uso. Verrà inviata un’e-mail di registrazione al-
l’indirizzo indicato.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 13/345


Luca Galeotti, A.C.M.I. SpA
Documentazione del sistema robot Programmazione robot 2

Fig. 2-4

4. Nell’e-mail inviata, cliccare sul pulsante Verify your Account. Si apre


una pagina web.
5. Impostare la password e compilare le altre informazioni.

2.5 Accesso

Procedimento

1. Inserire il link https://xpert.kuka.com/Account/Login#/.


2. Fare clic su Login for customers per effettuare il login.

Fig. 2-5

Pos. Spiegazione
1 Login per i clienti
2 Login per i collaboratori KUKA
3 Inoltro al modulo di registrazione

3. Cliccare su Login o immettere l’indirizzo e-mail e la password e clic-


care su Login. https://xpert.kuka.com/Account/Login#/

14/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Documentazione del sistema robot


Fig. 2-6

2.6 Uso di KUKA Xpert Basic

Descrizione

KUKA Xpert Basic contiene tutta la documentazione tecnica nonché le in-


formazioni di base sul prodotto e sui pezzi di ricambio.

Vista d'insieme

Fig. 2-7: Panoramica KUKA Xpert

Pos. Spiegazione
1 Panoramica: determinazione delle sessioni
Cerca: campo di ricerca
Spazio di lavoro: storico delle ultime ricerche
2 Prodotto: impostazione dei singoli filtri per il rispettivo prodotto.
È possibile una selezione multipla.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 15/345


Luca Galeotti, A.C.M.I. SpA
Documentazione del sistema robot Programmazione robot 2

Pos. Spiegazione
3 Tipo di informazioni: impostazione dei singoli filtri per il
rispettivo tipo di informazione. Il risultato della ricerca può esse-
re filtrato in un secondo tempo. A seconda dei filtri già selezio-
nati o dei risultati di ricerca potrebbero essere offerti ulteriori fil-
tri dinamici.
4 Ricerca a testo libero
5 Mostra i termini di ricerca nel loro contesto all'interno del risulta-
to della ricerca.
6 Aiuto
Impostazioni
Logoff

16/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Documentazione del sistema robot


2.7 Esercizio: Uso di KUKA Xpert Basic

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Uso di KUKA Xpert Basic
Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 17/345


Luca Galeotti, A.C.M.I. SpA
Documentazione del sistema robot Programmazione robot 2

18/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Messa in servizio del robot


3 Messa in servizio del robot

3.1 Vista d'insieme

Nella presente unità didattica sono esposti i seguenti contenuti:


• Amministrazione dell'utensile e della base
• Amministrazione gruppi utenti

3.2 Misurazione base indiretta

Descrizione

Fig. 3-1: Misurazione della base, indiretta

Un sistema di coordinate della base necessario in un punto non raggiun-


gibile, può essere misurato in modo indiretto. A tal fine, dei quattro punti
spaziali devono essere note le coordinate con riferimento al sistema di
coordinate desiderato. I punti spaziali vengono accostati durante la misu-
razione con un utensile noto. Ora il robot può calcolare/rilevare il sistema
di coordinate base.
I quattro punti di solito si trovano in un dispositivo in cui si lavora il pez-
zo.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 19/345


Luca Galeotti, A.C.M.I. SpA
Messa in servizio del robot Programmazione robot 2

Presupposto

Fig. 3-2: Metodo indiretto

• Un utensile misurato è montato sulla flangia di attacco.


• Le coordinate dei 4 punti della nuova base, riferite al sistema di coor-
dinate non raggiungibile, devono essere note,
ad es. da CAD. I 4 punti sono raggiungibili per il TCP.
» Distanza dall'origine delle coordinate
• Modo operativo T1

20/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Messa in servizio del robot


Esempio dall'industria automobilistica

Fig. 3-3: Punto zero veicolo

Il sistema di coordinate di riferimento (1) della carrozzeria non verniciata


può essere misurato solo con il metodo indiretto.

Procedimento

La misurazione base si può effettuare solo con un utensile già misurato


in precedenza (il TCP deve essere noto).

1. È stata aggiunta una nuova base tramite l'amministrazione dell'utensile


e della base.

Le procedure fondamentali per l'amministrazione dell'utensile e della


base sono riportate nella documentazione didattica Programmazio-
ne robot 1.

2. Con il pulsante Misurazione selezionare il metodo Indiretto.

Fig. 3-4: Misurazione della base, selezione

3. Selezione dell'utensile di riferimento

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 21/345


Luca Galeotti, A.C.M.I. SpA
Messa in servizio del robot Programmazione robot 2

Fig. 3-5: Selezione dell'utensile di riferimento

• Selezionare l'utensile di riferimento (1) nell'omonima finestra a


discesa.
4. Immissione e apprendimento dei punti di riferimento

Fig. 3-6: Apprendimento del punto di commutazione

22/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Messa in servizio del robot


• Nella tabella (A) per i quattro punti da apprendere (1-4), immettere
l'offset corrispondente per l'origine delle coordinate di base da de-
terminare.
• Accostare la riga (1) per il primo punto di riferimento con l'utensile
di riferimento.
La riga attiva viene evidenziata in blu.
• Registrare il punto con il pulsante Touch-Up (5).
I valori determinati vengono visualizzati nel campo Trasformazione.
• Ripetere la procedura per i restanti punti di riferimento (3-4).

Se i valori di riferimento (A) vengono modificati dopo l'apprendimen-


to, il punto interessato deve essere nuovamente appreso.

Con il pulsante Avvicinamento (PTP) è possibile avvicinare ripetutamen-


te i punti già acquisiti.

I quattro punti di misurazione non devono trovarsi su una retta. Ci deve


essere un'angolazione minima tra i punti (impostazione standard 2,5°).

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 23/345


Luca Galeotti, A.C.M.I. SpA
Messa in servizio del robot Programmazione robot 2

3.2.1 Esercizio: Misurazione di base e utensile

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Misurazione utensile perno

Compito

• Esercizio: Misurazione utensile gripper, metodo a 2 punti

Compito

• Esercizio: Misurazione base tavolo, metodo a 3 punti

Compito

• Esercizio: Misurazione base indiretta

Compito

24/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Messa in servizio del robot


3.3 Gruppi utenti sul controllo

Descrizione

Fig. 3-7: Gruppi utenti

• Tramite i gruppi utente è possibile assegnare funzioni e autorizzazioni


in modo mirato sull’unità di controllo robot a diverse cerchie di perso-
ne.
• Tutti i gruppi utenti, tranne il gruppo utenti di default, sono protetti da
una password.
La password predefinita per tutti i gruppi è "kuka".
• Per evitare usi impropri, la password deve essere cambiata separata-
mente per ciascun gruppo.
I gruppi di utenti Admin, Safety Commissioner e Safety Maintenance
Staff sono estremamente sensibili in questo contesto.

• Ulteriori autorizzazioni possono essere assegnate a ciascun gruppo di


utenti tramite la gestione dei diritti. La gestione delle autorizzazioni è
disponibile solo per il gruppo di utenti Amministratore.

Gruppi utenti

• Operatore
Diritti fortemente limitati: l’operatore non può eseguire alcuna funzione
che modifichi in modo permanente il sistema.
• Utente
L’utente può eseguire funzioni necessarie per il normale funzionamen-
to del robot.
Esempio: Programmazione di semplici programmi di controllo assi tra-
mite moduli inline.
• Esperto
l’esperto può eseguire funzioni per le quali sono necessarie conoscen-
ze specifiche.
Esempio: Programmazione di programmi di esperti.
• Addetto alla manutenzione di sicurezza
Questo gruppo di utenti può attivare un'interfaccia di sicurezza prepa-
rata sul controllo (dal responsabile della sicurezza) o configurazioni di
celle sicure per le persone (ad es. SafeOperation) utilizzando un codi-
ce di attivazione.
Il personale alla manutenzione di sicurezza ha ulteriori diritti.
Il gruppo utenti è protetto da password. La password impostata da ku-
ka deve essere cambiata.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 25/345


Luca Galeotti, A.C.M.I. SpA
Messa in servizio del robot Programmazione robot 2

• Addetto alla messa in servizio in sicurezza


Questo gruppo di utenti è autorizzato a modificare l'interfaccia di sicu-
rezza sul controllo o a configurare le configurazioni delle celle di sicu-
rezza personali (ad es. SafeOperation).
Il gruppo utenti è protetto da password. La password impostata da ku-
ka deve essere cambiata.
• Amministratore
L’amministratore può eseguire quasi tutte le funzioni (compresa la tec-
nologia di sicurezza).
Il gruppo di utenti ha accesso alla gestione dei diritti.
Il gruppo utenti è protetto da password. La password impostata da ku-
ka deve essere cambiata.

3.3.1 Cambio gruppo utenti

Visualizzazione del gruppo di utenti corrente

• Sulla smartHMI il simbolo Gruppo utenti indica tramite il numero dei


suoi segmenti bianchi il gruppo utenti attualmente selezionato.
• Esempio: 3 segmenti bianchi = Esperto

Fig. 3-8: Gruppo utenti: Esperto

26/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Messa in servizio del robot


Procedimento

Fig. 3-9: Cambia gruppo d'utente

1. Sulla smartHMI toccare il simbolo Gruppo utenti (1).


Oppure: Nel menu principale selezionare Configurazione > Gruppo
utenti.
Si apre la finestra per la selezione del gruppo utenti.
2. Cambiare gruppo:
• Per passare al gruppo utenti di default, premere Standard.
Standard non viene visualizzato, se ci si trova già nel gruppo
utenti di default.
• Per passare a un altro gruppo utenti, selezionare il gruppo utenti
desiderato (2).
Immettere quindi la password (3) e confermare con Accedi (4).

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 27/345


Luca Galeotti, A.C.M.I. SpA
Messa in servizio del robot Programmazione robot 2

3.3.2 Modifica della password

Procedimento

Fig. 3-10: Modifica password

1. Sulla smartHMI toccare il simbolo Gruppo utenti (1).


Oppure: Nel menu principale selezionare Configurazione > Gruppo
utenti.
Si apre la finestra per la selezione del gruppo utenti.
2. Selezionare il gruppo di utenti (2) di cui si desidera modificare la pas-
sword.
3. In basso nella barra pulsanti premere Password ... (3).
4. Immettere la vecchia password. Immettere due volte la nuova pas-
sword. (4)
Per ragioni di sicurezza, le immissioni vengono visualizzate criptate.
Viene differenziato tra lettere maiuscole e minuscole.
5. OKpremere (5). La nuova password è valida da subito.

28/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Messa in servizio del robot


3.3.3 Gestione dei diritti sul controllo

Descrizione

Fig. 3-11

La voce di menu Gestione dei diritti è disponibile sul controllo solo per il
gruppo utenti Amministratore.
Con la Gestione dei diritti si può stabilire,
• quali modi operativi sono a disposizione dei singoli gruppi di utenti.
(>>> 3.3.3.1 "Assegnazione dei modi operativi ai gruppi utenti" Pagi-
na 29)
• quali gruppi funzionali sono a disposizione dei singoli gruppi di uten-
ti.
(>>> 3.3.3.2 "Assegnazione dei gruppi funzionali ai gruppi utenti" Pagi-
na 30)

AVVISO
L'amministratore deve garantire che l'apporto di modifiche comporti un
lavoro sicuro e costruttivo e che la configurazione sia conforme alle nor-
me in vigore.

3.3.3.1 Assegnazione dei modi operativi ai gruppi utenti

Descrizione

• L'amministratore può assegnare separatamente ad ogni gruppo utenti i


modi operativi che devono essere disponibili.
• Esempi:
‒ I modi operativi non richiesti nell'impianto, ad es. il modo automati-
co, possono essere nascosti.
‒ Il modo operativo T2 può essere disabilitato per determinati gruppi
utenti.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 29/345


Luca Galeotti, A.C.M.I. SpA
Messa in servizio del robot Programmazione robot 2

Procedimento

Fig. 3-12: Gestione dei diritti, Modi operativi

1. È richiesto il profilo utente Amministratore.


Percorso di menu: Tasto robot > Configurazione > Gruppo utenti >
Amministratore
2. Aprire la gestione dei diritti.
Percorso di menu: Pulsante del robot > Messa in servizio > Gestione
dei diritti
3. Passare alla scheda Modi operativi (1).
4. Nella matrice, assegnare i modi operativi (2) ai gruppi utenti (1) atti-
vando o disattivando il segno di spunta .

5. Chiudere la finestra Gestione dei diritti cliccando sul simbolo .


6. Rispondere con Sì alla domanda: "Salvare la modifica?".

3.3.3.2 Assegnazione dei gruppi funzionali ai gruppi utenti

Descrizione

• La maggior parte delle funzioni del System Software è assegnata a


cosiddetti gruppi funzionali.
• Per ciascuno di questi gruppi funzionali, nella gestione dei diritti si de-
finisce quale gruppo utenti è come minimo richiesto per eseguire le
funzioni corrispondenti.
‒ L’amministratore può assegnare ai gruppi funzionali altri gruppi
utenti.
‒ Ogni singolo utente può visualizzare quale gruppo funzionale è as-
segnato attualmente a quale gruppo utenti.
‒ L’assegnazione delle singole funzioni ai gruppi funzionali non può
essere modificata.
Le informazioni relative a quali funzioni appartengono a quale
gruppo funzionale, sono riportate di seguito.

30/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Messa in servizio del robot


Esempio

• La funzione "Impostazione dell'override manuale" fa parte del gruppo


funzionale Impostazioni generali del procedimento manuale. Que-
st'associazione è invariabile.
• Di serie al gruppo funzionale Impostazioni generali del procedimen-
to manuale è assegnato il gruppo utenti Operatore:
‒ Utilizzatori del gruppo funzionale Operatore o superiore hanno
quindi il diritto di impostare l'override manuale.
‒ L'amministratore può modificare l'associazione.

Procedimento

Fig. 3-13: Gruppi funzionali

1. È richiesto il profilo utente Amministratore.


Percorso di menu: Tasto robot > Configurazione > Gruppo utenti >
Amministratore
2. Aprire la gestione dei diritti.
Percorso di menu: Pulsante del robot > Messa in servizio > Gestione
dei diritti
3. Passare alla scheda di registro Gruppi funzionali (1).
4. Nella matrice cercare il gruppo funzionalo (2) da assegnare e toccare
nella finestra a discesa associata (3). Nell'elenco visualizzato assegna-
re i gruppi utenti (4) desiderati.
5. Ripetere la procedura per ulteriori gruppi funzionali.

6. Chiudere la finestra Gestione dei diritti cliccando sul simbolo .


7. Rispondere con Sì alla domanda: "Salvare la modifica?".

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 31/345


Luca Galeotti, A.C.M.I. SpA
Messa in servizio del robot Programmazione robot 2

32/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione riconoscimento collisione


4 Programmazione riconoscimento collisione

4.1 Panoramica: Programmazione riconoscimento collisione

Nella presente unità didattica sono esposti i seguenti contenuti:


• Cos'è/cosa fa un riconoscimento collisione?
• Configurazione del riconoscimento collisione per lo spostamento ma-
nuale
• Utilizzo del riconoscimento collisione in frasi di movimento

4.2 Cos'è/cosa fa un riconoscimento collisione?

Fig. 4-1: Collisione

Se un robot urta un oggetto, il controllo robot aumenta i momenti degli as-


si per superare la resistenza. Ciò può determinare il danneggiamento di
robot, utensili o altre parti. Il riconoscimento della collisione riduce il ri-
schio di tali danni controllando i momenti degli assi.

Funzione del monitoraggio

Fig. 4-2: Riconoscimento collisione

Pos. Descrizione
1 Limite di monitoraggio adattativo Limit [min/max]
2 Coppia effettiva

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 33/345


Luca Galeotti, A.C.M.I. SpA
Programmazione riconoscimento collisione Programmazione robot 2

Pos. Descrizione
3 Accelerazione
4 Frenatura

• Rappresentazione del movimento di un robot con fasi di accelerazione


(3) e di frenatura (4)
• Monitoraggio della coppia effettiva (3) rispetto al valore massimo/mini-
mo (1) configurato separatamente per ogni asse del robot
(>>> 4.2.1 "Visualizzazione dei valori attuali" Pagina 34)
• Il rilevamento delle collisioni è disponibile in qualsiasi modo operativo
L'esempio precedente mostra un movimento del robot. Il robot accelera
(3) e frena (4) lungo una traiettoria. Durante questo movimento, la coppia
effettiva (2) viene monitorata rispetto al valore massimo/minimo ammissibi-
le configurato (1). I valori di monitoraggio $COLLMON_MAX[n] sono defi-
niti separatamente per ogni asse del robot. Il riconoscimento collisione è a
disposizione dell'operatore/programmatore in qualsiasi modo operativo.

Utilizzo del riconoscimento collisione

• Riconoscimento collisione durante lo spostamento manuale


(>>> 4.3 "Configurazione del riconoscimento collisione per lo sposta-
mento manuale" Pagina 35)
• Riconoscimento collisione all'interno di un programma tramite record di
dati predefiniti
(>>> 4.4 "Utilizzo del riconoscimento collisione in frasi di movimento"
Pagina 42)
• Riconoscimento collisione permanentemente attivo tramite valori confi-
gurati
(>>> 19.2.4.1 "Esempio programma" Pagina 334)

4.2.1 Visualizzazione dei valori attuali

Descrizione

La finestra Riconoscimento collisione - Vista funge da monitor per ana-


lizzare una collisione. In caso di collisione, oltre a un messaggio revocato,
nella tabella viene visualizzato il corrispondente "LED" (6). Tramite una ta-
bella dei valori è possibile confrontare i valori di picco rilevati con quelli
configurati e, se necessario, adattati mediante le finestre di configurazione
dello spostamento manuale o del record di dati.

Procedimento

1. Percorso di menu: Configurazione > Riconoscimento collisione > Vi-


sta

Fig. 4-3: Percorso del menu

2. Vista riconoscimento collisione

34/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione riconoscimento collisione


Fig. 4-4: Vista riconoscimento collisione

Pos. Descrizione
1 Numero asse
2 Il limite attualmente attivo per ogni asse. Può essere il limite
per lo spostamento manuale o il limite per l'esecuzione del
programma.
Più piccolo è il valore impostato, più sensibile è il riconosci-
mento. "0" significa che il riconoscimento non è attivo per
questo asse.
3 Gli stessi valori visualizzati anche nella stessa colonna nelle
finestre Riconoscimento collisione - Configurazione spo-
stamento manuale e Riconoscimento collisione - Confi-
gurazione del record di dati. L'operatore può reimpostare
a zero i valori.

‒ 0 … 500
4 I valori correnti per il riconoscimento della collisione per lo
spostamento manuale

‒ I valori si basano sulla colonna Valori standard della fi-


nestra Riconoscimento collisione - Configurazione
spostamento manuale.
‒ Inoltre è considerato anche il fattore Offset valori stan-
dard della finestra Opzioni di spostamento manuale.
5 ‒ Grigio: il riconoscimento della collisione non è attivo.
‒ Verde: il riconoscimento collisione è attivo.
6 ‒ Grigio: nessuna collisione.
‒ Rosso: il controllo ha rilevato una collisione.
7 Azzera i valori di picco per tutti gli assi.

4.3 Configurazione del riconoscimento collisione per lo spostamento ma-


nuale

Descrizione

Finché non si effettua la configurazione o il rilevamento dei valori, il rico-


noscimento collisione per lo spostamento manuale non è attivo.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 35/345


Luca Galeotti, A.C.M.I. SpA
Programmazione riconoscimento collisione Programmazione robot 2

Presupposto

Procedimento

1. Nel menu principale selezionare Configurazione > Riconoscimento


collisione > Configurazione spostamento manuale.

Fig. 4-5: Percorso del menu

2. Si apre la finestra Riconoscimento collisione - Configurazione spo-


stamento manuale.

Fig. 4-6: Ripristina i valori di picco

Azzerare i valori di picco precedenti con il pulsante Ripristina valori di


picco.
3. Spostare il robot manualmente in modo assiale, cartesiano e lungo tut-
ti gli assi e tutte le direzioni. Durante la traslazione si modificano i va-
lori nella colonna Valore di picco.

Fig. 4-7: Assegnazione dei valori di picco

Spostare il robot finché i valori nella colonna Valore di picco non


cambiano più.

36/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione riconoscimento collisione


È fondamentale che la finestra Riconoscimento collisione - Confi-
gurazione spostamento manuale sia aperta mentre viene spostato
il robot. Solo in questo caso saranno determinati anche i valori di
picco per quegli assi per i quali il riconoscimento collisione è (anco-
ra) inattivo.

Valore Descrizione
Asse Numero asse
Valore di picco Valori che il sistema di controllo del robot deter-
mina continuamente in background quando gli
assi sono in movimento. Viene visualizzato il va-
lore più alto calcolato dall'ultimo reset ($COLL-
MON_MAX[]). L'operatore può reimpostare a ze-
ro i valori.

‒ 0 … 500
Il calcolo viene eseguito sia durante lo sposta-
mento manuale sia durante il funzionamento del
programma. Presupposto richiesto affinché si rile-
vino i valori:

‒ Il riconoscimento collisione è attivo.


‒ Oppure durante lo spostamento manuale: la
finestra Riconoscimento collisione - Confi-
gurazione spostamento manuale è aperta.
Assegna Trasferisce il valore dal campo Valore di picco
al campo Valori standardaggiungendo un offset
definito internamente.
Valori standard Valore di default per il riconoscimento della colli-
sione durante lo spostamento manuale Il valore
può essere modificato.

‒ 0 … 500
Più piccolo è il valore impostato, più sensibile è il
riconoscimento. "0" significa che il
riconoscimento non è attivo per questo asse. De-
fault: 0.
Assegna tutti i Trasferisce tutti i valori dalla colonna Valore di
valori di picco picco alla colonna Valori standardaggiungendo
un offset definito internamente.
Ripristina i valori Azzera i valori di picco per tutti gli assi.
di picco
Salva Memorizza tutti i valori di picco immessi manual-
mente.

4. Salvare i valori di picco nella colonna Valori standard con il pulsante


Salva. Ogni valore viene maggiorato automaticamente di 10.

I valori si possono sovrascrivere anche manualmente nel campo Valori


standard. Il valore nuovo viene raffigurato in blu e salvato con il pulsan-
te Salva.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 37/345


Luca Galeotti, A.C.M.I. SpA
Programmazione riconoscimento collisione Programmazione robot 2

4.3.1 Proseguimento dopo una collisione

Descrizione

Se i valori determinati per il riconoscimento collisione per lo spostamento


manuale sono troppo sensibili o se si verifica una reazione di arresto, è
possibile sovrascrivere temporaneamente tali valori. Vedi anche:

Reazione in caso di una collisione

Quando questi si discostano da un determinato campo di tolleranza, si ve-


rificano le seguenti reazioni:
• Il robot si arresta con uno STOP 2.
• Messaggio Conf. riconoscimento collisione asse {Numero asse}
• Il segnale $COLL_ALARM diventa TRUE.
• Il controllo robot richiama il programma CollDetect_UserAction.
Percorso: R1\Program\CollDetect_UserAction.src

Fig. 4-8: CollDetect_UserAction

Di default non contiene alcuna istruzione. Se necessario, l’utente può


programmare in CollDetect_UserAction le reazioni da lui desiderate.

Il programma CollDetect_UserAction viene richiamato dal controllo robot


tramite l’interrupt $STOPMESS. In fase di programmazione occorre
quindi considerare le limitazioni rilevanti per i programmi di interrupt.

Procedimento

1. Confermare il messaggio
• Se c'è il messaggio Conf. riconoscimento collisione asse {Numero
asse}, lo si deve confermare prima di poter di nuovo spostare il ro-
bot. Il segnale $COLL_ALARM diventa di nuovo FALSE, se
$STOPMESS non compare più.
• Se dopo una collisione riconosciuta si procede con lo spostamento
manuale, il riconoscimento è escluso automaticamente per 60 ms.
2. Sbloccare il robot con lo spostamento Traccia

38/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione riconoscimento collisione


Fig. 4-9: Tipo di spostamento traccia

• Aprire il menu contestuale dell'occupazione tasti (1).


• Selezionare come tipo di spostamento Traccia (2) e sbloccare al-
l'indietro il robot dalla collisione.
• Se non si riesce a spostare il robot, con il pulsante Opzioni (2) ac-
cedere alle opzioni di spostamento manuale.

Quando si esce dalla collisione mediante Traccia, accertarsi che sia-


no attivi l'utensile corretto e i relativi dati di carico. Anche una velo-
cità dello spostamento manuale troppo elevata può talvolta impedire
l'allontanamento dalla zona di collisione.

AVVISO
In seguito allo spegnimento senza preavviso del monitoraggio, una
direzione errata di traslazione potrebbe spostare ulteriormente il ro-
bot all'interno della zona di collisione, finché non si verifica una nuo-
va disattivazione. Ne possono derivare danni all'utensile, all'impianto
o al pezzo.

3. Se necessario: escludere il riconoscimento di collisione

Fig. 4-10: Ignora riconoscimento di collisione

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 39/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Passare alla scheda di registro Riconoscimento collisione (1) ed esclu-


Programmazione riconoscimento collisione

dere il riconoscimento collisione con il pulsante Ignora riconoscimen-


to di collisione (2).
4. Tentare nuovamente di far uscire all'indietro il robot dalla zona di colli-
sione utilizzando il tipo di spostamento Traccia. (>>> Fig. 4-9) (3)

Offset valori standard

Fig. 4-11: Offset valori standard

Tramite il menu Opzioni di spostamento manuale, i limiti configurati per lo


spostamento manuale (>>> 4.3 "Configurazione del riconoscimento colli-
sione per lo spostamento manuale" Pagina 35) possono essere tempora-
neamente regolati per essere più o meno sensibili. Mediante corse o mo-
vimenti di prova si può avvicinare il robot al valore desiderato. La differen-
za percentuale non rimane memorizzata e, se lo si desidera, deve essere
immessa nella configurazione spostamento manuale.

40/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione riconoscimento collisione


4.3.2 Esercizio: Configurazione del riconoscimento collisione per lo sposta-
mento manuale

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Configurazione del riconoscimento collisione per lo
spostamento manuale

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 41/345


Luca Galeotti, A.C.M.I. SpA
Programmazione riconoscimento collisione Programmazione robot 2

4.4 Utilizzo del riconoscimento collisione in frasi di movimento

Descrizione

Fig. 4-12: ColDetect nel modulo inline

Nel modulo inline si può assegnare un limite specifico per il riconoscimen-


to collisione ad ogni singola frase di movimento tramite il parametro Col-
Detect. Per poter selezionare tali limiti nel modulo inline, occorre preconfi-
gurarli già nei record di dati.

Procedimento

1. Configurazione dei record di dati


(>>> 4.4.1 "Configurazione di record di dati per l'uso in moduli inline"
Pagina 42)
2. Assegnare un record di dati nel modulo inline.

4.4.1 Configurazione di record di dati per l'uso in moduli inline

Descrizione

La configurazione del record di dati per il riconoscimento collisione do-


vrebbe avvenire dopo la creazione di un programma finito. Solo allora so-
no noti tutti i punti critici di un ciclo di programma che vanno monitorati
per evitare collisioni. Il record di dati può essere anche determinato auto-
maticamente utilizzando il modulo inline COLLDETECT > SaveMax. A tale
scopo, il programma del robot viene eseguito alla velocità programmata e
i valori di picco rilevati vengono preinseriti nel record di dati preseleziona-
to.

Procedimento

1. Percorso di menu: Configurazione > Riconoscimento collisione >


Configurazione del record di dati

42/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione riconoscimento collisione


Fig. 4-13: Percorso del menu

2. Selezionare/creare e configurare un record di dati.

Fig. 4-14: Configurazione del record di dati

Selezionare il record di dati nella finestra (5). Assegnare un nome


esplicito al record di dati tramite il pulsante "Modifica nome" (6) per fa-
cilitare l'assegnazione univoca nel modulo inline. I valori di picco (2)
già determinati possono essere trasferiti nella colonna Valori del
record di dati (4) utilizzando i tasti freccia (3).
Pos. Descrizione
1 Numero asse
2 Valori che il sistema di controllo del robot determina conti-
nuamente in background quando gli assi sono in movimento.
Viene visualizzato il valore più alto calcolato dall'ultimo reset
($COLLMON_MAX[]). L'operatore può reimpostare a zero i
valori.

‒ 0 … 500
Il calcolo viene eseguito sia durante lo spostamento manua-
le sia durante il funzionamento del programma. Presupposto
richiesto affinché si rilevino i valori:

‒ Il riconoscimento collisione è attivo.


‒ Oppure durante lo spostamento manuale: la finestra Ri-
conoscimento collisione - Configurazione sposta-
mento manuale è aperta.
3 Trasferisce il valore dal campo Valore di picco al campo
Valori del record di datiaggiungendo un offset definito inter-
namente.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 43/345


Luca Galeotti, A.C.M.I. SpA
Programmazione riconoscimento collisione Programmazione robot 2

Pos. Descrizione
4 Valore di default per il riconoscimento della collisione duran-
te il funzionamento del programma. Il valore può essere mo-
dificato.

‒ 0 … 500
Più piccolo è il valore impostato, più sensibile è il riconosci-
mento. "0" significa che il riconoscimento non è attivo per
questo asse. Default: 0.
5 Selezionare il record di dati di cui si vuole visualizzare i va-
lori nella tabella.
6 Il nome del record di dati può essere modificato (max. 24
caratteri).
7 Trasferisce tutti i valori dalla colonna Valore di picco alla
colonna Valori del record di datiaggiungendo un offset de-
finito internamente.
8 Azzera i valori di picco per tutti gli assi.

3. Dopo la configurazione, salvare i valori con il tasto Salva.

4.4.2 Attivazione del riconoscimento di collisione nel modulo inline

Descrizione

Per attivare il riconoscimento della collisione per un movimento, l’utente


seleziona un record di dati nel modulo inline. Per ogni modulo inline/movi-
mento si può assegnare un record di dati separato.

Procedimento

Frase di movimento

Fig. 4-15: ColDetect

1. Aprire l'attributo ColDetect (1) nel modulo inline aperto.


2. Selezionare il record di dati (2) desiderato e trasferirlo nel modulo inli-
ne.
3. Ripetere il processo per tutti gli altri moduli inline.

44/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione riconoscimento collisione


Blocco spline

All'interno di un blocco spline i segmenti spline ereditano di default l'impo-


stazione del blocco. L'operatore ha però la possibilità di inserire imposta-
zioni distinte per ogni segmento.

Fig. 4-16: Selezione parametri

A tale scopo visualizzare il campo ColDetect tramite Cambia parametri >


Riconoscimento collisione e selezionare il record di dati desiderato.

Esempio:

SPLINE S1 Vel=0.6 m/s CPDAT1 ColDetect[1]


SLIN P1 Vel=0.6 m/s CPDAT2 ColDetect[2]
SPL P2 Vel=1.0 m/s CPDAT3 ColDetect[1]
SLIN P3 Vel=0.6 m/s CPDAT4 ColDetect[3]
ENDSPLINE

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 45/345


Luca Galeotti, A.C.M.I. SpA
Programmazione riconoscimento collisione Programmazione robot 2

4.4.3 Esercizio: Configurazione del riconoscimento collisione per il funziona-


mento del programma

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Configurazione del riconoscimento collisione per il fun-
zionamento del programma

Compito

46/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione strutturata
5 Programmazione strutturata

5.1 Vista d'insieme

Nella presente unità didattica sono esposti i seguenti contenuti:


• Metodica di programmazione unitaria
• Mezzi ausiliari per la creazione di programmi robot strutturati
• Diagramma di programmazione

5.2 Obiettivo di una metodo di programmazione univoco

Descrizione

• venire a capo a problemi complessi mediante una struttura fortemente


articolata
• riprodurre in maniera comprensiva il processo che ne è alla base
(senza essere dotati di conoscenze approfondite di programmazione)
• aumentare l'efficacia durante la manutenzione, modifica e ampliamento
di programmi

Programmazione lungimirante

permette di

• scomporre compiti complessi in compiti particolari semplici


• ridurre il dispendio di tempo complessivo richiesto per la programma-
zione
• sostituire i componenti di uguale prestazione
• sviluppare i componenti separatamente gli uni dagli altri

6 requisiti per un programma robot

1. Efficienza
2. Assenza di errori
3. Chiarezza
4. Semplicità di manutenzione
5. Trasparenza
6. Convenienza

5.3 Mezzi ausiliari per la creazione di programmi robot strutturati

Qual è il significato di un commento?

I commenti sono complementi/osservazioni nell'ambito di linguaggi di pro-


grammazione. Tutti i linguaggi di programmazione consistono in istruzioni
per il computer (codici) e in indicazioni per l'elaboratore del testo (com-
menti). Se un testo originale viene ulteriormente elaborato (compilato, in-
terpretato ecc.), i commenti saranno ignorati dal software operativo e non
incideranno pertanto minimamente sul risultato.
Nel sistema di controllo KUKA si ricorre a commenti riga, vale a dire, i
commenti si esauriscono automaticamente alla fine della riga.
I commenti da soli non rendono un programma leggibile, possono tuttavia
aumentare notevolmente la leggibilità di un programma ben strutturato. I
commenti consentono al programmatore di inserire nel programma osser-

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 47/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

vazioni o chiarimenti, senza che quest'ultimi vengano registrati dal control-


Programmazione strutturata

lo come sintassi.
Spetta al programmatore garantire che il contenuto dei commenti sia con-
forme allo stato attuale delle istruzioni di programmazione. Le modifiche al
programma comportano pertanto anche la verifica e l'eventuale adegua-
mento dei commenti.
Il contenuto di un commento, e quindi la sua utilità, possono essere libe-
ramente scelti dall'operatore e non sono soggetti a sintassi vincolanti. In
linea di massima, i commenti vengono fissati in linguaggio "umano", o nel-
la lingua dell'autore o in una lingua di uso comune.
• Osservazioni sul contenuto o sulla funzione di un programma
• Contenuto e utilità a discrezione dell'utente
• Migliorata leggibilità di un programma
• Contributo alla strutturazione di un programma
• Il programmatore è responsabile degli aggiornamenti
• KUKA ricorre a commenti riga
• I commenti non vengono registrati dal controllo come sintassi

Informazioni in merito al testo di origine complessivo

All'inizio di un testo di origine, l'autore può aggiungere note preliminari, tra


le quali il nome dell'autore, la licenza, la data di creazione, l'indirizzo a cui
rivolgersi in caso di domande, l'elenco di altri file richiesti, ecc.

DEF PICK_CUBE()
;Questo programma prende il cubo dal magazzino
;Autore: Max Mustermann
;Data di creazione: 09/08/2011
INI
...
END

Articolazione del testo di origine

I titoli e i paragrafi possono essere contrassegnati come tali. Spesso si ri-


corre al riguardo non solo a strumenti linguistici, bensì anche a strumenti
grafici, convertibili mediante testi.

DEF PALLETIZE()
;*****************************************************
;*Questo programma pallettizza 16 cubi sul tavolo*
;*Autore: Max Mustermann------------------------------*
;*Data di creazione: 09.08.2011-----------------------*
;*****************************************************
INI
...
;------------Calcolo delle posizioni----------------
...
;------------Palettizzazione dei 9 cubi---------------
...
;------------Depalettizzazione dei 9 cubi---------------
...
END

Spiegazioni delle singole righe

È possibile in questo modo spiegare la modalità operativa o il significato


di una parte di testo (ad es. riga di programmazione), per consentirne in
un secondo momento la migliore comprensione ad altri o all'autore stesso.

48/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione strutturata
DEF PICK_CUBE()

INI

SPTP HOME Vel=100% DEFAULT

SPTP Pre_Pos ; Accostamento posizione preliminare per la


presa

SLIN Grip_Pos ; Accostamento della posizione di presa cubo


...

END

Indicazione sulle operazioni da eseguire

I commenti possono contrassegnare elementi di codice insufficienti o fare


da segnaposto per elementi completi di codice mancanti.

DEF PICK_CUBE()

INI

;Qui si deve inserire il calcolo delle posizioni delle


palette!

SPTP HOME Vel=100% DEFAULT

SPTP Pre_Pos ; Accostamento posizione preliminare per la


presa

SLIN Grip_Pos ; Accostamento della posizione di presa cubo

;Qui manca la chiusura del gripper

END

Impostazione come commento

Impostare come commento la parte integrante di un codice che tempora-


neamente non si vuole eseguire, ma eventualmente utilizzare in un secon-
do momento. Una volta che la parte di codice è impacchettata nel com-
mento, non è più considerata come codice dal compilatore cioè è pratica-
mente inesistente.

DEF Palletize()

INI

PICK_CUBE()

;CUBE_TO_TABLE()

CUBE_TO_MAGAZINE()

END

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 49/345


Luca Galeotti, A.C.M.I. SpA
Programmazione strutturata Programmazione robot 2

5.4 Operazioni con FOLD

Che cosa comporta l'utilizzo di fold in un programma robot?

• In FOLD è possibile nascondere parti del programma


• I contenuti dei FOLD non sono visibili per l'utente
• I contenuti dei FOLD vengono elaborati del tutto normalmente durante
l'esecuzione del programma
• l'impiego di fold contribuisce a migliorare la leggibilità di un program-
ma

Quali esempi per l'uso di fold sono disponibili?

Sul controllo KUKA, il sistema utilizza già di serie fold, ad es. per la visua-
lizzazione di moduli inline. Tali fold aumentano la comprensibilità dei valori
immessi nel modulo inline e nascondono all'operatore parti non rilevanti
del programma.
Sussiste inoltre la possibilità per l'utente (a partire dal gruppo utenti
Esperto) di creare fold personalizzate. Le fold possono essere impiegate
dal programmatore per comunicare all'operatore ciò che si verifica in un
determinato punto del programma, pur mantenendo in secondo piano la
sintassi effettiva KRL.

Fold chiusa

In generale, le fold una volta create sono visualizzate dapprima chiuse.

DEF Main()
...
INI ; KUKA FOLD chiusa

SET_EA ; FOLD generata dall'utente chiusa

SPTP HOME Vel=100% DEFAULT ; KUKA FOLD chiusa

SPTP P1 CONT Vel=100% TOOL[2]:Gripper BASE[2]:Table


...
SPTP HOME Vel=100% Default

END

Procedimento

1. "Nascondere" in una fold la seguente sezione del programma affinché


la sua rappresentazione per l'operatore dell'impianto risulti semplifica-
ta.

INI
...
MsgDialog(answer,"How many cubes to
palletize?",,,"1000","100","10")
SWITCH answer
case 5
CubesCount = 10
case 6
CubesCount = 100
case7
CubesCount = 1000
ENDSWITCH
MSGNotify("Cubes to palletize:%1,,CubesCount)

50/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione strutturata
2. Programmazione di una fold

INI
...
;FOLD dialog_cubes_count
MsgDialog(answer,"How many cubes to
palletize?",,,"1000","100","10")
SWITCH answer
case 5
CubesCount = 10
case 6
CubesCount = 100
case7
CubesCount = 1000
ENDSWITCH
MSGNotify("Cubes to palletize:%1,,CubesCount)
;ENDFOLD Abfrage

La sezione viene "nascosta" in una fold inserendo ;FOLD nome del


fold all'inizio e ;ENDFOLD nome del fold alla fine del testo di
origine.
3. Visualizzazione dopo la conferma della fold

INI
...
dialog_cubes_count
...

Durante l'esecuzione del programma all'operatore dell'impianto appare


ora solo il nome della fold. Il vantaggio è un snellimento del testo di
origine abbinato ad una migliore visione d'insieme.
4. Visualizzazione dei contenuti della fold

Fig. 5-1: Apertura o chiusura di fold

Evidenziare la fold da aprire e aprila con il seguente percorso di me-


nu: Pulsante Modifica > Fold > Apri/chiudi FOLD attuale

INI
...
dialog_cubes_count
MsgDialog(answer,"How many cubes to
palletize?",,,"1000","100","10")
SWITCH answer
case 5
CubesCount = 10
case 6
CubesCount = 100
case7
CubesCount = 1000
ENDSWITCH

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 51/345


Luca Galeotti, A.C.M.I. SpA
Programmazione strutturata Programmazione robot 2

MSGNotify("Cubes to palletize:%1,,CubesCount)
...

;FOLD e ;ENDFOLD vengono nascoste all'apertura.


Per visualizzarle a scopo di modifica, attivare Dettagli.
Percorso di menu: Pulsante Modifica > Vista > Dettagli (ASCII)

5.5 Nomi di file sensati

Che cosa si ottiene da un contrassegno sensato di nomi di dati?

Per indicare con precisione la funzione di dati e segnali in un programma


robot, si consiglia di avvalersi per l'assegnazione di nomi di termini signifi-
cativi. Ad esempio:
• nomi con testo esteso per segnali di ingresso e di uscita
• nomi Tool e Base
• dichiarazioni di segnale per segnali di ingresso e di uscita
• nomi punto

5.6 Indentazione di righe di comando

Che cosa provoca l'indentazione di righe di comando?

Per chiarire il contesto di moduli di programma si raccomanda di imposta-


re un rientro per sequenze annidate di comandi nel testo del programma
e di scrivere direttamente una sotto l'altra le istruzioni a pari profondità di
nidificazione.
L'effetto ottenuto è meramente visivo, riguarda solo il valore di un pro-
gramma come mezzo di comprensione interumano.

DEF INSERT()
INT PART, COUNTER
INI
SPTP HOME Vel=100% DEFAULT
LOOP
FOR COUNTER = 1 TO 20
PART = PART+1
;Indentazione di formulari inline impossibile!!!
SPTP P1 CONT Vel=100% TOOL[2]:Gripper BASE[2]:Table
PTP XP5 ; Movimento con KRL
ENDFOR
...
ENDLOOP

5.7 Come si crea un diagramma di programmazione

Cos'è un diagramma di programmazione?

Un diagramma di programmazione è un organigramma per un program-


ma, definito anche diagramma di flusso o schema a blocchi di un pro-
gramma. Si tratta di una rappresentazione grafica per la conversione di un
algoritmo in un programma e descrive la sequenza di operazioni finalizza-
ta alla soluzione di un compito. I simboli per i diagrammi di programma-
zioni sono standardizzati nella norma DIN 66001. I diagrammi di program-
mazione sono utilizzati spesso, indipendentemente dai programmi compu-
terizzati, anche per la rappresentazione grafica di processi e attività.

52/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

La leggibilità di un algoritmo di programma ne risulta notevolmente miglio-

Programmazione strutturata
rata a confronto con una descrizione basata su codice, dal momento che
la rappresentazione grafica aumenta considerevolmente la distiguibilità
della struttura.
Si evitano così più facilmente, alla conversione successiva in codici di pro-
gramma, errori di struttura e programmazione, in quando un'applicazione
corretta di un diagramma di programmazione consente la conversione di-
retta nei codici di programma. Al contempo, si riceve con la creazione di
un diagramma di programmazione una documentazione del programma
da creare.
• Utensile per la strutturazione del flusso di un programma
• Flusso del programma più leggibile
• Errori di struttura più facilmente individuabili
• Documentazione simultanea del programma

Simboli del diagramma di flusso


Inizio e fine di un processo o di
un programma

Collegamento di istruzioni e ope-


razioni

Diramazione

Istruzioni generali nel codice di


programma

Richiamo di sottoprogramma

Istruzione input/output

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 53/345


Luca Galeotti, A.C.M.I. SpA
Programmazione strutturata Programmazione robot 2

Esempio di diagramma di programmazione

Fig. 5-2

Come viene creato un diagramma di programmazione

A partire dall'immaginazione dell'utente, il problema viene perfezionato


gradualmente, finché si è in grado di valutare sufficientemente i compo-
nenti così elaborati da poterli trasferire in KRL.
Gli abbozzi generantisi nelle fasi di progettazione consecutive si differen-
ziano per profondità crescente di dettaglio.
1. Articolazione a grandi linee dello svolgimento complessivo su circa 1 -
2 pagine
2. Ripartizione del compito generale in compiti particolari
3. Articolazione a grandi linee dei compiti particolari
4. Perfezionamento dell'articolazione dei compiti particolari
5. Trasposizione in codice KRL

54/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione strutturata
5.8 Esercizio: Strutturazione di programmi

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Strutturazione di programmi

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 55/345


Luca Galeotti, A.C.M.I. SpA
Programmazione strutturata Programmazione robot 2

56/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Introduzione al livello esperto


6 Introduzione al livello esperto

6.1 Vista d'insieme

Nella presente unità didattica sono esposti i seguenti contenuti:


• Creazione di programmi mediante modelli
• Adattamento della visualizzazione in Esplora e nell'Editor
• Ricerca ed eliminazione di errori nel programma

6.2 Creazione di programmi mediante modelli

Descrizione

• Se viene selezionato il gruppo di utenti Esperti e viene creato un nuo-


vo programma sul controllore, il controllore chiede quale modello deve
essere utilizzato per questo.
• I template sono corpi di programma ("modelli") che vengono utilizzati
come modelli di copia per la creazione di nuovi programmi.
• In linea di massima, sono disponibili i seguenti template.

Fig. 6-1: Selezione template

‒ Cell: un programma Cell a disposizione può essere solo sostituito


o, in caso di cancellazione del Cell, creato nuovamente.
‒ Expert: modulo costituito da file SRC e DAT, nei quali sono pre-
senti solo l'intestazione e la fine del programma.
‒ Expert Submit: file Submit supplementare (SUB) costituito da inte-
stazione e fine del programma.
‒ Function: creazione di funzione SRC, nella quale viene creata so-
lo l'intestazione della funzione con una variabile BOOL. È disponi-
bile la fine della funzione, deve essere tuttavia programmato il ri-
torno.
‒ Modulo: modulo costituito da file SRC e DAT, nei quali sono pre-
senti l'intestazione e la fine del programma e la struttura base (INI
e 2x SPTP HOME).

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 57/345


Luca Galeotti, A.C.M.I. SpA
Introduzione al livello esperto Programmazione robot 2

‒ Submit: file Submit supplementare (SUB) costituito da intestazione


e fine del programma e struttura base (DECLARATION, INI,
LOOP/ENDLOOP).

Modifica template

Fig. 6-2: Modelli

Predefinizione ≙ predefined

• I template, disponibili per la creazione del programma, si trovano sul


controllo sotto il seguente
percorso del file: C:\KRC\ROBOTER\TEMPLATE
• I template non sono altro che corpi di programma predefiniti, che fun-
zionano come modelli di copia.
• I template possono essere modificati come i programmi "normali", fun-
zioni, ecc.

AVVISO
Se un template viene modificato, questa modifica ha un effetto immedia-
to ogni volta che viene creato un nuovo programma!

58/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Introduzione al livello esperto


6.3 Adattamento delle viste in Esplora

Descrizione

Utilizzo della vista dettagli

Nel gruppo di utenti esperti, oltre alla vista del modulo, è possibile utilizza-
re anche la vista dettagliata.
• Visualizzazione modulo

Fig. 6-3: Visualizzazione modulo

‒ Nella vista modulo, un programma viene sempre visualizzato come


una voce.
‒ Il programma attuale *.src e l'elenco dati corrispondente *.dat non
possono essere modificati singolarmente.

Se il modulo viene duplicato, tutti i file necessari vengono sempre


portati con sé.

• Vista dettagli

Fig. 6-4: Vista dettagli

‒ Nella vista dettagli vengono visualizzati separatamente il program-


ma attuale *.src e l'elenco dati corrispondente *.dat.
‒ Entrambi i file possono essere modificati e copiati/cancellati sepa-
ratamente.

Se il modulo è duplicato, assicurarsi che entrambi i file *.src e *.dat


siano sempre presenti.

Procedimento

• Aprire il menù di contesto con il pulsante Edit. Selezionare la funzione


Filtro.

Fig. 6-5: Edit, filtro

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 59/345


Luca Galeotti, A.C.M.I. SpA
Introduzione al livello esperto Programmazione robot 2

• Nella finestra di selezione che si apre, è possibile passare dalla vista


modulo alla vista dettagliata.

Fig. 6-6: Selezione filtro

6.4 Adattamento della vista nell'editor

Descrizione

• La vista nell'editor può essere adattata per quanto riguarda il funziona-


mento e la visualizzazione.
• Il livello di dettaglio può anche essere adattato alle esigenze dell'uten-
te.

Procedimento

1. Aprire un programma nell'editor dello smartPAD.

Fig. 6-7: Vista

Percorso di menu: Pulsante Edit > Vista


• Riga DEF

60/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Viene visualizzato il corpo del programma (intestazione e FINE).

Introduzione al livello esperto


DEF program()
...
END

• Dettagli (ASCII)
Vengono visualizzati i caratteri ASCII nascosti.

...
;FOLD SPTP HOME VEL=100% DEFAULT;%{PE}%NJZJATOBASUS....
...

• Invio a capo
Nell'impostazione predefinita, è possibile scorrere lo schermo oriz-
zontalmente.
Se l'interruzione di riga è attiva, le righe di programma più lunghe
vengono interrotte alternativamente.
• Interlinea normale/ridotta
La distanza tra le righe del programma è maggiore o minore.
2. Esempio: vista estesa nell'editor con linea DEF, vista di dettaglio e in-
terruzione di riga di piccole dimensioni.

Fig. 6-8: Vista dettagli, Editor

La vista estesa aiuta a trovare gli errori di sintassi per numero di riga.
(>>> 6.5 "Ricerca ed eliminazione di errori nel programma" Pagina 61)
Inoltre, tutte le eventuali fold esistenti devono essere aperte.

6.5 Ricerca ed eliminazione di errori nel programma

Descrizione

Fig. 6-9: Programma errato

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 61/345


Luca Galeotti, A.C.M.I. SpA
Introduzione al livello esperto Programmazione robot 2

• Di regola, non si possono verificare errori di programmazione quando


si creano programmi con i moduli inline.
• Tuttavia, se il linguaggio robot KRL-KUKA è programmato nel linguag-
gio di alto livello, possono verificarsi errori di sintassi durante l'immis-
sione testuale.
• Questi non sono leggibili dal controllo e vengono visualizzati come er-
rori.
• Il programma/file difettoso è contrassegnato da una X rossa.

Procedimento

1. Selezionare il modulo contenente errori nel navigatore


(>>> Fig. 6-9)
2. Selezionare il menu Lista errori

Fig. 6-10: Richiamo elenco degli errori

3. Si apre la visualizzazione di errori (nome programma.ERR).

Fig. 6-11: Visualizzazione errori

• Gli errori di sintassi riconosciuti vengono visualizzati in una tabella


nel display degli errori.
• Contrassegnare la linea con il mouse (1). La riga è evidenziata in
blu.
• Informazioni più dettagliate vengono visualizzate in una finestra se-
parata (2).
• Il programma si apre con il tasto di Visualizzazione (3).
4. Il cursore passa alla riga di sintassi con gli errori. L'errore può essere
analizzato e corretto.

62/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Introduzione al livello esperto


Fig. 6-12: Errore di sintassi

In questo esempio, il numero di riga 46 visualizzato nella visualizza-


zione dell'errore non è identico al numero di riga visualizzato nel
programma 13. Questo perché la vista è ridotta. (>>> 6.4 "Adatta-
mento della vista nell'editor" Pagina 60)

5. Uscire dall'Editor e salvare

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 63/345


Luca Galeotti, A.C.M.I. SpA
Introduzione al livello esperto Programmazione robot 2

64/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


7 Programmazione con WorkVisual

7.1 Vista d'insieme

Nella presente unità didattica sono esposti i seguenti contenuti:


• Familiarizzazione dell'ambiente di configurazione WorkVisual
• Creazione di una versione portatile di WorkVisual
• Collegamento di un PC WorkVisual al sistema di controllo
• Programmazione online con WorkVisual
• Uso dell'editor KRL

7.2 Familiarizzazione con l'ambiente di configurazione WorkVisual

Descrizione

Fig. 7-1: WorkVisual

L'ambiente di sviluppo KUKA WorkVisual è utilizzato per la configurazio-


ne completa dell'armadio di comando KR C4.
Mediante l'interfaccia si possono richiamare (selezionare) le funzioni se-
guenti:

• Configurazione delle cinematiche robot, ad es. assi addizionali


• Strutturazione e connessione logiche di bus di campo sulla base dei
file di descrizione del dispositivo
• Gestione di testi estesi per ingressi e uscite
• Creazione offline di programmi robot
• Modifica della configurazione di sicurezza
• Funzioni di diagnosi
• Visualizzazione di messaggi
• Panoramica di sistema del controllo robot
• Registrazione e analisi con oscilloscopio

Gestione progetto

Fig. 7-2: File di progetto WorkVisual

• WorkVisual può essere utilizzato per gestire pacchetti tecnologici spe-


cifici per il sistema di controllo e per le periferiche, file di descrizione
dei dispositivi, dati macchina e cataloghi.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 65/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

• Attraverso le procedure guidate e le finestre di configurazione si crea-


no singole funzioni complete specifiche per il cliente.
Esempi: configurazione del bus di campo, configurazione di assi sup-
plementari, programmazione ecc.
• Le configurazioni ultimate sono salvate nel WorkVisual in cosiddetti
progetti.
• I progetti vengono compressi in un file con estensione *.wvs (formato
KUKA) e trasferiti tramite WorkVisual al controllo basato su KR C4.
• È possibile anche la procedura inversa, vale a dire progetti ultimati e
in grado di funzionare possono essere caricati nuovamente in ambien-
te WorkVisual a fini di archiviazione o modifica.
• La trasmissione come tale avviene mediante una connessione di rete
convenzionale.
KLI- KUKA Line Interface oppure KSI- KUKA Service Interface

7.3 Creazione di una versione portatile di WorkVisual

Descrizione

Fig. 7-3: Chiavetta USB KUKA.Recovery

• In alternativa all'installazione standard si può creare ed eseguire una


versione portatile di WorkVisual.
• L'installazione si può eseguire, ad esempio, su una chiavetta USB.

I progetti e le directory specifiche dell'utente si trovano all'interno della


struttura a cartelle della versione portatile.

Vantaggi

• Si possono installare, separatamente l'una dall'altra, versioni più vec-


chie e più recenti di WorkVisual.
• I file di descrizione dei dispositivi e i pacchetti di opzioni sono organiz-
zati in diverse versioni di WorkVisual specifiche per il progetto.
In alternativa, al riguardo si deve nominare la gestione dei pacchetto
di opzioni nell'installazione di un WorkVisual.

• La versione portatile di WorkVisual non è legata né al dispositivo né al


luogo di applicazione.

Download

Fig. 7-4: WorkVisual in Internet

66/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


• La versione gratuita di WorkVisual si può scaricare comodamente da
Internet.
https://www.kuka.com/de-de/services/downloads?terms=Langua-
ge:en:1;product_name:KUKA.WorkVisual;&q=workvisual

Procedimento

1. Estrarre il file WorkVisual scaricato e aprire la cartella di installazione.


2. Collegare il dispositivo d'installazione (ad es. la chiavetta USB) al PC.
3. Aprire il percorso d'installazione ed eseguire il file d'installazione Por-
tableCreator.exe.

Fig. 7-5: Percorso d'installazione

Percorso del file: Tools > PortableCreator > PortableCreator.exe


4. Finestra del percorso d'installazione

Fig. 7-6: Percorso d'installazione

• Fare clic sul pulsante … (1) e selezionare la directory in cui si de-


sidera creare la versione portatile.
• Altre impostazioni (2)
‒ Create a sub directory with the build label
Crea una nuova cartella con il nome della versione WorkVi-
sual.
‒ Overwrite existing destination directory
Sovrascrive un'eventuale versione precedente con la nuova.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 67/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

• Eseguire l'installazione cliccando su Extract.


5. Viene creata la versione portatile e completata.

Fig. 7-7: Creation completed

• Quando è completata, sul margine inferiore della finestra viene vi-


sualizzato un link.
• Fare clic sul link o passare manualmente alla directory.
• Avviare il programma WorkVisual.exe. Viene avviata la versione
portatile.
6. Chiudere il programma WorkVisual portable creator.

7.4 Collegamento di un PC WorkVisual al sistema di controllo

Descrizione

• Per poter scambiare progetti PC con il controllo attraverso WorkVisual,


è necessario realizzare un collegamento di rete.
• Fino alla versione software KSS 8.2 era disponibile solo l'interfaccia
KLI - KUKA Line Interface che deve essere configurata separatamen-
te. Questa interfaccia è ancora disponibile, insieme alla KSS 8.5.
• A partire dalla versione software KSS 8.3 è disponibile la nuova inter-
faccia KSI - KUKA Service Interface, che risulta molto più semplice da
utilizzare.
• Con l'update da KSS 8.2 a KSS 8.3 anche questa interfaccia viene at-
tivata sui sistemi di controllo "più vecchi".

Collegamento del PC WorkVisual a KSI

Fig. 7-8: Connessione attraverso CSP

Pos. Descrizione
1 Portatile con WorkVisual
2 Cavo di rete
3 Armadio di comando KR C4
A Collegamento KSI dietro lo sportello del CSP

1. L'impostazione di rete del PC WorkVisual (1) è configurata su DHCP


(ottenimento automatico di un indirizzo di rete).

68/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


2. Portare il cavo di rete (2) dal PC WorkVisual (1) all'interfaccia KSI -
KUKA Service Interface (A) dell'armadio di comando (3).
3. L'interfaccia KSI - KUKA Service Interface (A) si trova dietro lo sportel-
lo del CSP - Controller System Panel.

Il KR C4 assegna automaticamente al PC collegato un indirizzo IP.

ATTENZIONE
Non collegare in nessun caso l'interfaccia KSI - KUKA Service Interface
a una rete IT esistente. Questo causerebbe conflitti di indirizzi e malfun-
zionamenti!

7.5 Panoramica dell'interfaccia grafica WorkVisual

• Sull'interfaccia grafica, non tutti gli elementi sono visibili di default,


bensì possono essere mostrati o nascosti secondo le necessità.
• Oltre alle finestre e agli editor qui raffigurati ne sono disponibili altri
che possono essere visualizzati tra l'altro mediante le voci di menu Fi-
nestra e Editor.

Fig. 7-9: Panoramica dell'interfaccia grafica

Pos. Descrizione
1 Barra dei menu
2 Barre dei pulsanti

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 69/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

Pos. Descrizione
3 Campo Editor
Se è aperto un editor, esso verrà visualizzato qui. Come illustra-
to in questo esempio, possono essere aperti più editor contem-
poraneamente. Saranno pertanto disposti gli uni sugli altri e se-
lezionabili tramite schede di registro.
4 Pulsante Aiuto
5 Finestra Struttura del progetto

6 Finestra Cataloghi
In questa finestra vengono visualizzati tutti i cataloghi inseriti.
Gli elementi nei cataloghi possono essere inseriti nella finestra
Struttura del progetto nelle schede di registro Apparecchi o
Geometria.
7 Finestra Settori di lavoro

8 Finestra Messaggi

9 Finestra Proprietà
Quando un oggetto è selezionato, le rispettive proprietà verran-
no visualizzate in questa finestra. Le proprietà possono essere
modificate. Alcune proprietà in campi di colore grigio non posso-
no essere modificate.
10 Icona Analisi progetto WorkVisual

7.6 Personalizzazione di WorkVisual per la programmazione

Descrizione

Fig. 7-10: Vista adattata dell'editor KRL

WorkVisual e in particolare l'editor KRL si possono adattare per quanto ri-


guarda il comportamento, le preimpostazioni e la visualizzazione. Nell'e-
sempio, sono stati modificati il carattere, i colori e l'impostazione secondo
cui tutti moduli inline devono essere chiusi di default.

Procedimento

1. Richiamo delle opzioni

70/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


Fig. 7-11: Voce di menu Opzioni

Percorso di menu: Strumenti > Opzioni


2. Personalizzazione del KRL

Fig. 7-12: Personalizzazione dell'editor KRL

Nella scheda Text Editor si può definire il comportamento dell'editor al-


l'apertura dei programmi. Nell'esempio è stato attivato "Fold chiuse di
default".
Sono disponibili voci di menu separate per il completamento del codi-
ce, i tipi di carattere nell'editor e per la tavolozza dei colori.

7.7 Modalità WorkVisual

Descrizione

• WorkVisual può essere utilizzato in due modalità:


‒ Configurazione e messa in servizio
Settore per lavori incentrati su progetti specifici, come ad es. il la-
voro con l'Editor KRL, la configurazione hardware, la configurazio-
ne del bus di campo e la configurazione di sicurezza.
‒ Programmazione e diagnosi
Settore per la diagnosi online, come ad es. la diagnosi dell'hard-
ware e la registrazione trace.
• La selezione può avvenire tramite la voce di menù Vista o tramite la
finestra Settori di lavoro:
1. Selezionare i menu Finestra > Settori di lavoro.
2. Nella finestra Settori di lavoro, fare clic sul modo desiderato. La
selezione attiva viene visualizzata in arancione.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 71/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

Fig. 7-13: Finestra Settori di lavoro

7.8 Programmazione online con WorkVisual

Descrizione

• Sul sistema di controllo con WorkVisual è possibile


‒ creare
‒ manipolare
(>>> 7.8.3 "Debugging online di programmi" Pagina 78)
‒ unire
‒ eseguire il debugging di singoli programmi
(>>> 7.8.3 "Debugging online di programmi" Pagina 78)
• Questa funzione va intesa come un'integrazione del sistema di proget-
tazione esistente e non lo sostituisce.
• WorkVisual crea una copia locale del file system per la modifica.
È qui che vengono apportate le modifiche.
• Se uno o più programmi vengono sincronizzati dopo la modifica, ciò
avviene generalmente nel progetto attivo in corso.
• Con il trasferimento di singoli file, il programmatore risparmia molto
tempo rispetto al trasferimento di un progetto completo.

Questa funzionalità è disponibile solo per i controlli robot con il KUKA


System Software versione 8.3.15 o superiore o con il VW System Soft-
ware versione 8.3.11 o superiore.

7.8.1 Caricamento della struttura del file nella vista di programmazione e


diagnosi

Procedimento

1. WorkVisual è connesso tramite le interfacce cliente KLI o KSI al siste-


ma di controllo ed è aperto.
2. Passare nell'area di lavoro Programmazione e diagnosi.

Fig. 7-14: Spazio di lavoro, programmazione e diagnosi

3. Connessione al sistema di controllo

72/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


Fig. 7-15: Richiesta di connessione con il sistema di controllo

• Si apre l'ambiente di lavoro Programmazione e diagnosi.


• Nella barra di menù cliccare sull'icona Crea collegamento (1)
4. Selezione sistema di controllo

Fig. 7-16: Controlli disponibili

• All'occorrenza impostare il filtro per il tipo di sistema di controllo, la


versione del software o il nome (1).
• Tutti i sistemi di controllo disponibili vengono visualizzati (2) in ba-
se al filtro impostato.
• Evidenziare il controllo desiderato.
Informazioni dettagliare sulle celle e sul sistema di controllo vengo-
no visualizzate nella finestra (3).
• Scaricare l'attuale struttura del file mediante il pulsante OK (4).

La procedura si può ripetere per più sistemi di controllo.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 73/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

Barre dei pulsanti in Esplora di KRC

Pulsan- Descrizione
te
Visualizza o dissolve file e cartelle cancellati.

Monitora le modifiche del file system del controllo robot: que-


sto simbolo precede il nome dei file eventualmente modificati.
Visualizzazione modulo
Mostra i file SRC e DAT come raggruppati in un modulo sul
controllo del robot.
Visualizza tutti i sottoprogrammi di un modulo nella directory
di lavoro. Quando si clicca due volte su un sottoprogramma,
mostra il punto in cui il sottoprogramma è stato definito in
Editor.
Apre il nodo selezionato e tutti i rispettivi sottonodi.

Chiude il nodo selezionato e tutti i rispettivi sottonodi.

Simboli in Esplora di KRC

Simbo- Descrizione
lo
Il file è stato modificato.

Modulo che contiene un file SRC e/o un file DAT.

Sottoprogramma in un file SRC.

Il file o la cartella è invariato(a).

Il file o la cartella è stato(a) rinominato(a).

Il file è stato rinominato e modificato.

Il file o la cartella è stato(a) spostato(a).


Questo simbolo viene visualizzato anche quando il file è stato
rinominato prima o dopo lo spostamento.
Il file o la cartella è stato(a) cancellato(a).
Un file cancellato non può essere più modificato.
Il file o la cartella è stato(a) aggiunto(a) nella cartella di lavo-
ro.
Questo simbolo viene visualizzato anche quando il file, una
volta aggiunto, è stato modificato, rinominato o spostato.
Il file è stato modificato.

Il file è stato spostato e modificato.

74/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


Simboli nella visualizzazione modulo

Simbo- Descrizione
lo
Il modulo è stato modificato e spostato.

Il modulo è stato modificato e rinominato.

Il file SRC o DAT è stato modificato, l'altro file è stato cancel-


lato.
Il file SRC o DAT è stato modificato, l'altro file è invariato.

Il file SRC o DAT è stato cancellato, l'altro file è invariato.

Il file SRC o DAT è stato spostato, l'altro file è invariato.

Il file SRC o DAT è stato rinominato, l'altro file è invariato.

Il file SRC o DAT è stato modificato, l'altro file è stato modifi-


cato e rinominato.
Il file SRC o DAT è stato modificato e rinominato, l'altro file è
invariato.

7.8.2 Modifica di singoli programmi e trasmissione mirata al sistema di con-


trollo

Procedimento

1. La struttura dei file del sistema di controllo desiderato è stata caricata


nella vista di programmazione e diagnosi.
(>>> 7.8.1 "Caricamento della struttura del file nella vista di program-
mazione e diagnosi" Pagina 72)
2. Modificare e salvare i programmi nell'editor KRL.

Fig. 7-17: Modifica di programmi

• Aprire in Esplora di KRC la struttura a cartelle del controllo deside-


rato (1)
• Aprire il programma da editare *.src o *.dat con un doppio clic (2).
• Effettuare (3) come sempre le modifiche nell'editor KRL
Il file modificato viene marcato nella struttura ad albero con un se-

gno si spunta rosso .

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 75/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

• Con il simbolo del dischetto (4) salvare le modifiche.


3. Trasferire le modifiche al controllo mediante il pulsante (3).

Fig. 7-18: Pulsanti

1 Crea collegamento ---


2 Crea stato del controllo Ctrl + shift + D
3 Trasferisci modifiche sul con- Ctrl + U
trollo
4 Carica file e cartelle dal controllo Ctrl + D

4. Finestra di trasmissione

Fig. 7-19: Trasferisci modifiche

• Nella finestra di trasmissione selezionare con un segno di spunta i


file che si vuole trasferire al controllo.
• Eventuali problemi di connessione sono visualizzati nella parte in-
feriore della finestra.
Il gruppo utenti corrispondente deve essere attivo sul controllo.
5. Conferma dell'accesso remoto

Fig. 7-20: Autorizzazione all'accesso remoto

• Con il pulsante SÌ autorizzare l'accesso remoto sullo smartPAD.


• In WorkVisual avviare il trasferimento con OK (3).

Creazione di un nuovo programma/modulo

1. Aggiungere il programma/modulo in Esplora di KRC

76/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


Fig. 7-21: Aggiungi

a. Selezionare la cartella desiderata e aprirla (1).


b. Con il tasto destro del mouse aprire il menu contestuale e selezio-
nare Aggiungi (2) .
2. Aggiungere dal modello

Fig. 7-22: Seleziona modello

a. Selezionare tra i modelli definiti dall'utente quello desiderato (1),


ad es. Modulo.
b. Assegnare un nome al programma (2).
c. Memorizzare il nuovo programma con il pulsante OK (3).
3. Vista in Esplora di KRC

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 77/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

Fig. 7-23: Modulo aggiunto

Come già noto, il nuovo programma/modulo viene visualizzato in


Esplora di KRC.

7.8.3 Debugging online di programmi

Descrizione

• In WorkVisual l'esecuzione di un programma può essere monitorata in


diretta nella vista di diagnosi.
• Quest'ultima offre informazioni dettagliate rispetto alla vista smartPAD.
‒ La posizione del puntatore di programma e di avanzamento viene
visualizzata in tempo reale nel tabulato del programma.
‒ La posizione del robot viene visualizzata rispetto alla base attiva e
all'utensile.
‒ I messaggi nella relativa finestra possono essere letti e confermati.
‒ È possibile controllare e monitorare variabili.

78/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


Vista d'insieme

Fig. 7-24: Modo di debug

Pos. Descrizione
1 Directory di lavoro in modalità di debugging
2 Programma in esecuzione nella modalità di debugging
3 Posizione attuale del puntatore di frase
4 Posizione attuale del puntatore di avanzamento
5 Finestra di monitoraggio

6 Finestra di debugging

Punta- Descrizione
tore
Puntatore di frase
Il punto di destinazione viene accostato.
Puntatore di avanzamento

Il puntatore di frase si trova in un sottoprogramma.

Il puntatore di frase e quello di avanzamento si trovano nella


stessa riga. Il punto di destinazione è stato raggiunto con arre-
sto preciso.
Il puntatore di frase e quello di avanzamento si trovano nella
stessa riga. Il punto di destinazione viene accostato.
Puntatore di frase
Il punto di destinazione è stato raggiunto con arresto preciso.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 79/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

Punta- Descrizione
tore
Il puntatore di frase si trova in una riga più in alto nel program-
ma.
Il puntatore di frase si trova in una riga più in basso nel pro-
gramma.
Il puntatore di frase si trova in un sottoprogramma. L'attuale ri-
ga di programma si trova più in alto nel programma.
Il puntatore di frase si trova in un sottoprogramma. L'attuale ri-
ga di programma si trova più in basso nel programma.

Pulsan- Descrizione
te
Avvia la modalità di debugging.

Termina la modalità di debugging.

Procedimento

1. Il programma da analizzare è stato selezionato ed avviato sul control-


lo.
Il programma e il controllo devono essere sincronizzati.
2. Avvia la sessione di debugging.

Fig. 7-25: Avvia debugging

• Nell'intestazione della finestra di debugging selezionare il controllo


(1) da collegare.
• Cliccare sul simbolo e avviare la sessione di debugging.
3. Vista della finestra di debugging

Fig. 7-26: Finestra di debugging

• Visualizzazione dell'attuale tipo di esecuzione del programma


• La sessione può essere interrotta in qualsiasi momento con il sim-
bolo .
4. Vista KRL

80/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


Fig. 7-27: Mostra KRL

Nella finestra di debugging si può avviare o interrompere solamente una


sessione di lettura. Il programma stesso viene avviato/arrestato diretta-
mente sul sistema di controllo per garantire gli aspetti di sicurezza.

Simboli nella modalità di debugging

Simbo- Descrizione
lo
Il programma è vincolato.

Il programma non è selezionato.

Il programma è selezionato ed è stato terminato.

Il programma è selezionato e viene eseguito.

Il programma è selezionato ed è stato arrestato.

Il programma è selezionato ed è stato resettato.

7.9 Utilizzo dell'editor KRL

Descrizione

L'editor KRL implementato in WorkVisual rappresenta un moderno am-


biente di sviluppo per creare comodamente programmi su PC.
In questa sezione didattica si trattano le attività seguenti.

• Descrizione dell'interfaccia grafica Editor KRL


(>>> 7.9.1 "Descrizione dell'interfaccia grafica" Pagina 82)
• Descrizione colori dell'editor KRL
• Visualizzazione delle dichiarazioni di variabili in un file
• Ricerca e sostituzione in file
(>>> 7.9.4 "Ricerca e sostituzione in file" Pagina 86)
• Rinomina di variabili
(>>> 7.9.5 "Rinomina di variabili" Pagina 87)
• Completamento automatico
(>>> 7.9.6 "Completamento automatico" Pagina 88)
• Snippet – Immissione rapida per istruzioni KRL
(>>> 7.9.7 "Snippet – Immissione rapida di istruzioni KRL" Pagi-
na 89)

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 81/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

• Correzione Quickfix
(>>> 7.9.8 "Correzione Quickfix" Pagina 90)
• Correzione o dichiarazione automatica di variabili non dichiarate
(>>> 7.9.9 "Dichiarazione automatica di variabili" Pagina 90)
• Eliminazione di variabili non utilizzate
(>>> 7.9.10 "Eliminazione di variabili non utilizzate" Pagina 92)
• Visualizzazione delle variabili
(>>> 7.9.11 "Visualizzazione dell'utilizzo di variabili" Pagina 93)
• Operazioni con fold
(>>> 7.9.12 "Operazioni con fold" Pagina 95)

Ulteriori funzionalità sono riportate nella seguente documentazione:


KUKA.WorkVisual 5.0 per KUKA System Software 8.2, 8.3 e 8.5

7.9.1 Descrizione dell'interfaccia grafica

Descrizione dell'interfaccia grafica Editor KRL

Descrizione

• L'Editor KRL consente di modificare con facilità i programmi KUKA.


• Lo svolgimento di test o l'esecuzione di programmi non è possibile.
• Percorso di menu: Editor > Editor KRL

Fig. 7-28: Interfaccia utente Editor KRL

82/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


Pos. Descrizione
1 Area di programma
Qui è possibile inserire il codice o modificarlo. L'editor KRL offre
numerose funzioni che assistono il programmatore.
2 Lista dei sottoprogrammi in questo file
Per raggiungere un sottoprogramma, selezionarlo nella lista: Il
cursore salta alla riga DEF di questo sottoprogramma.
Quando il file non contiene sottoprogrammi, la lista è vuota.
3 Lista delle dichiarazioni delle variabili
Questa lista si riferisce sempre al sottoprogramma selezionato
attualmente nella lista dei sottoprogrammi. Per raggiungere una
dichiarazione, selezionare la variabile nella lista: Il cursore salta
alla riga con la dichiarazione di queste variabili.
Quando non ci sono dichiarazioni di variabili, la lista è vuota.
4 Barra di analisi
I segni indicano errori o discrepanze nel codice.

• Il mouseover sul segno consente di visualizzare una descri-


zione comandi in cui è descritto l'errore.
• Facendo clic sul segno, il cursore salta al punto corrispon-
dente nel programma. Per alcuni errori/discrepanze viene of-
ferta una correzione automatica.
5 Il quadratino ha il colore dell'errore grave presente al momento.
Quando non sono presenti errori/discrepanze, il quadrato è ver-
de.

7.9.2 Funzioni di editazione generali

Funzioni di editazione generali

Seleziona

• Selezionare una porzione di testo: fare clic dove si vuole fare iniziare
la selezione e tenere premuto il tasto sinistro del mouse. Trascinare il
mouse finché si è selezionata la porzione desiderata, poi rilasciare il
tasto del mouse.
Tenere premuto insieme il tasto ALT durante la selezione per sele-
zionare un settore rettangolare.

• Selezionare una riga: fare clic sul numero della riga.


Lavorazione

• Le funzioni di editazione di uso corrente possono essere richiamate


con il menu contestuale. Di queste fanno parte:
‒ Taglia, Incolla, Copia, Cancella
‒ Annulla, Ripristina
‒ Trova …
• Il menu contestuale presenta inoltre i comandi elencati di seguito.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 83/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

• Non tutti i formati file supportano tutti i comandi.


• I comandi che si riferiscono alle porzioni selezionate, hanno effetto
su tutto il file quando non è selezionata alcuna porzione.

Voce di menu Descrizione


Modifica > Converti in lettere Converte la porzione di testo selezionata dalle lettere mi-
maiuscole nuscole a quelle maiuscole.
Modifica > Converti in lettere Converte la porzione di testo selezionata dalle lettere
minuscole maiuscole a quelle minuscole.
Modifica > Inizia con maiuscola Converte tutti caratteri iniziali nella porzione di testo sele-
zionata in lettere maiuscole.
Modifica > Converti tab in spazi Sostituisce nell'area evidenziata i tabulatori con spazi vuo-
ti.
Indicazione: Con il parametro Grandezza di riferimento
è possibile configurare quanti spazi sono inclusi in un ta-
bulatore.
Modifica > Converti spazi in tab Sostituisce nell'area evidenziata gli spazi vuoti con tabula-
tori.
Modifica > Indentazione Inserisce nella porzione selezionata in ogni riga degli spa-
zi vuoti iniziali (aggiuntivi).
Indicazione: Con il parametro Grandezza di riferimento
è possibile configurare quanti spazi vuoti inserire.
Modifica > Rimuovi spazi inizia- Rimuove tutti gli spazi vuoti iniziali nelle righe della por-
li zione selezionata.
Fold > Apri tutti Apre tutti i fold del file attualmente visualizzato.
Fold > Chiudi tutti Chiude tutti i fold del file attualmente visualizzato.
Formatta I rientri, i capoversi, ecc. nell'intero file vengono adattati
allo standard. Lo standard valido dipende dal formato del
file.
Crea commento definitivo Crea un commento modificabile sulla riga.
Crea commento modificabile Crea un commento definitivo sulla riga.
Rinomina (>>> "Rinomina variabili" Pagina 87)
Vai alla dichiarazione (>>> "Visualizzazione delle variabili" Pagina 93)
Incolla snippet (>>> "Snippet – Immissione rapida per istruzioni KRL"
Pagina 89)

7.9.3 Visualizzazione delle funzioni e variabili

Visualizzazione di funzioni e variabili

Fig. 7-29: Visualizzazione delle funzioni e delle variabili

84/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Se nell'editor sono aperti un programma *.src o una lista di dati *.dat, ci

Programmazione con WorkVisual


sono due finestre a discesa nell'intestazione.
• Panoramica delle funzioni (1)
Tutte le funzioni dichiarate all'interno del file *.SRC (ad esempio i sot-
toprogrammi locali) sono elencate e possono essere selezionate con il
mouse.
• Visualizzazione variabili (2)
Sono visualizzate tutte le variabili dichiarate che sono contenute nella
funzione (1) selezionata.

Panoramica dell'uso

Fig. 7-30: Panoramica delle applicazioni, variabili

1. Marcare una variabile nel testo di origine (1).


2. Con il tasto destro del mouse aprire il menu contestuale e cliccare su
Trova uso (2).
3. Si apre la finestra Trova uso (3) .

Nell'esempio la visualizzazione dell'uso è ridotta. Per i programmi più


complessi, l'uso è visualizzato per l'intero modulo di programma.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 85/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

7.9.4 Ricerca e sostituzione in file

Trova e sostituisci nei file

Descrizione

• In WorkVisual è disponibile una funzione di ricerca con cui è possibile


cercare nel testo di tutti i file dell'intero progetto.
Gli ambiti in cui può avvenire la ricerca possono essere selezionati
nella finestra di ricerca.
• È possibile però limitare la ricerca ad un singolo file o a una determi-
nata porzione di file opportunamente selezionata.
Procedimento

1. Per effettuare la ricerca in un unico file, aprirlo.


2. Se si vuole effettuare la ricerca in una porzione specifica del file, sele-
zionarla.
3. Aprire la finestra di ricerca: CTRL+F

Fig. 7-31: Ricerca WorkVisual

4. Oppure: Aprire la finestra per Trova e sostituisci: STRG+H

86/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


Fig. 7-32: Trova e Sostituisci

5. Attivare le impostazioni desiderate e fare clic su Trova oppure su So-


stituisci o Sostituisci tutti.

7.9.5 Rinomina di variabili

Rinomina variabili

Descrizione

• Un nome di variabile può essere modificato con un'unica azione in


tutti i punti in cui ricorre.
• Questo è possibile anche se la variabile è stata dichiarata in un file
DAT e utilizzata in più file SRC.
Presupposto

• I file che presentano il nome della variabile non contengono errori di


sintassi.
• La conversione automatica non agisce nei file contenenti errori di sin-
tassi.
Procedimento

1. Selezionare su una posizione qualsiasi la variabile desiderata.


2. Fare clic con il tasto destro del mouse e selezionare Rinomina nel
menu contestuale.
3. Si apre una finestra. Modificare il nome e confermare con OK.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 87/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

Fig. 7-33: Rinomina di variabile

7.9.6 Completamento automatico

Completamento automatico

Descrizione

• L'editor KRL presenta una funzione di completamento automatico.


• All'inserimento del codice compare automaticamente una lista conte-
nente i seguenti elementi:
‒ Parole chiave KRL
‒ Nomi di variabili conosciuti
‒ Nomi di funzioni conosciuti
‒ Tipi di dati specifici utente conosciuti (STRUC o ENUM)
‒ Snippet (>>> "Snippet – Immissione rapida per istruzioni KRL"
Pagina 89)
Procedimento

• Inserire le prime lettere dell'istruzione desiderata, della variabile, ecc.


nella riga di programma corrispondente.
• Si apre il completamento automatico:

Fig. 7-34: Completamento automatico

88/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


• In alto alla lista vengono visualizzati gli elementi corrispondenti ai ca-
ratteri già inseriti.
La priorità di questi elementi è ordinata in base alla frequenza del loro
impiego, ciò significa che la selezione si adegua costantemente al
comportamento dell'utente.
• Se necessario, è possibile selezionare un elemento nella lista per ap-
plicarlo direttamente nel testo di programma con il tasto Enter.
Questo consente di evitare, ad esempio, di dovere sempre digitare i
nomi complessi delle variabili.

Navigazione nella lista di completamento:


• Scorrere
• Oppure: digitare le prime lettere dell'elemento desiderato. La marca-
tura salta su quel punto.

7.9.7 Snippet – Immissione rapida di istruzioni KRL

Snippet – Immissione rapida per istruzioni KRL

Descrizione

• Per istruzioni KRL di uso corrente è a disposizione un'immissione rapi-


da nell'editor KRL.
• Quando si desidera programmare ad es. un loop FOR, non occorre
immettere la sintassi completa FOR … = … TO … STEP ….
• Invece, basta selezionare l'istruzione nella lista di completamento.
• Devono essere compilate manualmente solo le parti variabili della sin-
tassi.
Procedimento

1. Quando s'inizia a digitare il codice, appare la lista di completamento.


Rilevare l’istruzione selezionata nella lista con il tasto TAB. Oppure fa-
re doppio clic su un'altra istruzione.

Fig. 7-35: Rilevare con il tasto TAB o fare doppio clic

2. La sintassi KRL viene inserita automaticamente. La prima posizione


variabile è evidenziata in blu. Inserire il valore desiderato.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 89/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

Fig. 7-36: La prima posizione variabile è evidenziata in blu

3. Saltare con il tasto TAB alla posizione variabile successiva. Inserire il


valore desiderato.
4. Ripetere il passo 3 per tutte le posizioni variabili.
5. Per terminare le operazioni di modifica, premere il tasto Enter.
Alternative

1. La lista di snippet può essere richiamata anche separatamente: fare


clic con il tasto destro del mouse e selezionare nel menu contestuale
la voce Inserisci snippet.
2. È anche possibile immettere uno snippet come segue: digitare l'abbre-
viazione e premere il tasto TAB.
3. (Per ottenere l'abbreviazione richiamare la lista con gli snippet. Sele-
zionare l'istruzione. Viene visualizzata una descrizione comandi. La
2ª riga contiene le possibili abbreviazioni).

7.9.8 Correzione Quickfix

Correzione Quickfix

Descrizione

• La scritta rossa nel codice e le evidenziazioni nella barra di analisi in-


dicano errori o discrepanze nel codice.
Procedimento

• Per alcuni di questi errori/discrepanze viene offerta una correzione au-


tomatica, il "Quickfix".
• Compare una spia Quickfix.

Fig. 7-37: Spia Quickfix

• Sul tasto freccia vicino alla spia l'utente ha la possibilità di visualizzare


diverse possibilità di risoluzione e di selezionarne una.

7.9.9 Dichiarazione automatica di variabili

Correzione o dichiarazione automatica di variabili non dichiarate

Le variabili non dichiarate sono visualizzate come segue:

• Nel codice con una sottolineatura ondulata rossa


• Nella barra di analisi con una linea rossa
• Eccezioni:
‒ Il colore rosso può però anche indicare un altro errore.

90/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


‒ Quando si tratta di una variabile non dichiarata, per mouseover
sulla sottolineatura ondulato o sulla linea viene visualizzata la se-
guente descrizione comandi:
La dichiarazione delle variabili [nome] non è stata trovata.
Procedura:

1. Porre il cursore all'interno del nome sottolineato oppure direttamente


davanti alla prima lettera o direttamente dopo l'ultima.

Fig. 7-38: variabile non dichiarata

Oppure: Nella barra di analisi fare clic sulla linea.


Vicino al nome della variabile appare quindi la spia Quickfix.
2. Controllare che il nome della variabile non sia stato scritto involontaria-
mente in modo errato (diverso da quello della dichiarazione).
• In caso positivo: correggere. La sottolineatura / linea rossa scom-
pare. Non sono necessarie altre operazioni!
• In caso negativo: continuare con il passo successivo.
3. Muovere il puntatore del mouse sulla spia Quickfix. Vicino alla spia
compare una freccia.
Fare clic sulla freccia. Vengono visualizzate le seguenti opzioni:

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 91/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

Fig. 7-39: Dichiarazione della variabile

• Dichiara variabile locale


• Dichiara variabile nell'elenco dati
4. Fare clic sull'opzione desiderata.
5. Solo con Dichiarare variabile nella lista dati: si apre la lista dati.
Aprire la fold BASISTECH EXT.
6. È stato inserito automaticamente uno snippet per la dichiarazione della
variabile. Il tipo di dati presunto è evidenziato in blu. Dopo la dichiara-
zione si trova il commento: ; Questa variabile è per ....

Fig. 7-40: Variabile dichiarata automaticamente nella lista .dat

• Mantenere o modificare il tipo di dati secondo necessità.


• Saltare al commento con il tasto TAB. Modificare il commento se-
condo necessità.

Questo commento viene visualizzato nella descrizione comandi della


lista di completamento, quando vi è selezionata la variabile.

7.9.10 Eliminazione di variabili non utilizzate

Eliminazione di variabili non utilizzate

Descrizione

• Le variabili non utilizzate sono visualizzate come segue:


‒ nel codice con una sottolineatura ondulata blu

92/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


‒ nella barra di analisi con una linea blu
• Passando con il mouse sulla sottolineatura ondulata o sulla linea si vi-
sualizza un suggerimento tool con relativa descrizione.
Procedimento

1. Porre il cursore all'interno del nome sottolineato oppure direttamente


davanti alla prima lettera o direttamente dopo l'ultima.
Oppure: Nella barra di analisi fare clic sulla linea.
Vicino al nome della variabile appare quindi la spia Quickfix.
2. Muovere il puntatore del mouse sulla spia Quickfix. Vicino alla spia
compare una freccia.

Fig. 7-41: Cancellare la variabile o commentarla

Fare clic sulla freccia. Vengono visualizzate le seguenti opzioni:


• Elimina dichiarazione
• Crea commento definitivo alla dichiarazione
3. Fare clic sull'opzione desiderata.

7.9.11 Visualizzazione dell'utilizzo di variabili

Visualizzazione delle variabili

Saltare alla dichiarazione di una variabile

1. Posizionare il cursore all'interno del nome della variabile oppure diret-


tamente davanti alla prima lettera o dopo l'ultima.
2. Fare clic con il tasto destro e selezionare Vai alla dichiarazione nel
menu contestuale.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 93/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

Fig. 7-42: Menù - tasto destro del mouse

3. Il cursore seleziona il nome della variabile nella sezione della dichiara-


zione.
Nell'esempio:

...
DECL INT counter
...

Visualizzazione di tutti gli usi di una variabile

1. Solo se la finestra non è ancora visualizzata Trova utilizzi:


Selezionare i menu Finestra > Trova utilizzi.
2. Posizionare il cursore all'interno del nome della variabile oppure diret-
tamente davanti alla prima lettera o dopo l'ultima.
3. Fare clic con il tasto destro del mouse e nel menu contestuale sele-
zionare Trova utilizzi Vedi anche: (>>> Fig. 7-42)
Nella finestra Trova utilizzi compare una scheda di registro con il no-
me Usi di [nome variabile]. Tutti gli usi sono elencati qui in modo det-
tagliato (file con percorso, numero righe, ecc.)

Fig. 7-43: Utilizzo dei filtri

94/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione con WorkVisual


4. Se necessario: fare doppio clic su una riga della lista. Viene selezio-
nato il punto corrispondente nel programma.
Ora è possibile eseguire ad es. Rinomina.

7.9.12 Operazioni con fold

Lavorare con i fold

Descrizione

• Il contenuto dell'editor KRL, analogamente ad un normale programma


KRL, può essere strutturato con fold.
• Con questo metodo, i programmi possono essere organizzati in modo
più chiaro.
Aprire un fold

• Fare doppio clic sulla casella del fold chiuso.


• Oppure: Fare clic sul segno più.
• Il fold viene aperto.

Fig. 7-44: Fold aperto

Chiudere un fold

• Fare clic sul segno meno.


• Il fold viene chiuso.

Fig. 7-45: Fold chiuso

Aprire o chiudere tutti i fold

• menu contestuale: Fold > Apri tutti i fold oppure Chiudi tutti i fold

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 95/345


Luca Galeotti, A.C.M.I. SpA
Programmazione con WorkVisual Programmazione robot 2

96/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
8 Variabili e dichiarazioni

8.1 Vista d'insieme

Nella presente unità didattica sono esposti i seguenti contenuti:


• Archivio dati in KRL
• Operazioni con tipi di dati semplici
• Visualizzazione delle variabili
• Array/Campi
• Strutture
• Tipo dati di enumerazione ENUM
• Dichiarazione di segnale

8.2 Archivio dati in KRL

In generale sulle variabili

Fig. 8-1: Variabile

• Nella programmazione robot con KRL, una variabile è in senso gene-


rale semplicemente un contenitore per operandi ("valori"), che possono
presentarsi nel corso di un processo robot.
• Una variabile ha un indirizzo specifico assegnatole nella memoria del
calcolatore.
• Una variabile è contrassegnata da un nome che non è una parola
chiave KUKA.
• Ogni variabile è connessa a un determinato tipo di dati
• La dichiarazione del tipo di dati deve sempre precedere l'utilizzo.
• In KRL si differenzia tra variabili locali e globali.

Fig. 8-2: Caratteristiche distintive delle variabili

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 97/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

8.2.1 Convenzioni di nomenclatura

Nella scelta del nome di variabile è necessario tenere conto delle regole seguenti:

• I nomi in KRL non devono superare i 24 caratteri.


• I nomi in KRL possono contenere lettere (A - Z), cifre (0 - 9) e i carat-
teri speciali "_" e "$".
• I nomi in KRL non devono incominciare con delle cifre.
• I nomi in KRL non devono essere parole chiave.
• La scrittura maiuscola o minuscola è irrilevante.

Consigli

• ricorrere a nomi di variabile sensati e di chiara interpretazione,


• non avvalersi di nomi criptici o abbreviazioni,
• servirsi di lunghezze di nomi adeguate, non impiegare quindi ogni vol-
ta tutti i 24 caratteri.

8.2.2 Doppia dichiarazione di variabili

Descrizione

Una doppia dichiarazione risulta sempre dall'utilizzo degli stessi nomi di


variabile (sequenza di caratteri).
Non si tratta di una doppia dichiarazione se lo stesso nome di variabile è
usato in un file *.SRC/*.DAT e in $config.dat. In questo caso, la variabile
locale ha priorità sulla variabile globale se la variabile è definita dal pro-
gramma in cui è stata dichiarata.
Se la variabile viene definita da un altro programma allora viene definita
la variabile globale.

8.2.3 Tipi di dati

Tipi di dati standard predefiniti

• BOOL: risultati classici "SÌ"/"NO"


• REAL: numero a virgola mobile, risultato di operazioni di calcolo per
evitare errori di arrotondamento
• INT: numero intero, variabile numerica classica per loop di conteggio o
contapezzi
• CHAR: solo un carattere
Stringa o testo può essere realizzato solo come campo CHAR

Tipi di dati Numero Numero in vir- Valori lo- Carattere


semplici intero gola mobile gici singolo
Parola chiave INT REAL BOOL CHAR
Gamma valori -231 ... ± 1.1 10-38... ± TRUE/ Set di ca-
(231-1) 3.4 10+38 FALSE ratteri
ASCII
Esempi -199 o 56 -0.0000123 o TRUE o "A" o "q"
3.1415 FALSE oppure
"7"

98/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
Campi/matrice

Voltage[10] = 12.75
Voltage[11] = 15.59

• salvataggio di più variabili dello stesso tipo mediante indici


• all'inizializzazione o alla modifica dei valori l'indice deve essere immes-
so
• le dimensioni massime del campo dipendono dai requisiti di spazio del
tipo di dati

Tipo dati di enumerazione

color = #red

• tutti i valori del tipo di enumerazione sono definiti con nome al mo-
mento della creazione (testo in chiaro)
• il sistema stabilisce anche la sequenza

Tipo di dati composto/struttura

Date = {day 14, month 12, year 1996}

• tipo di dati composto da componenti di tipi di dati diversi


• i componenti possono essere costituiti da tipi semplici di dati, ma an-
che da strutture
• è possibile l'accesso a singoli componenti

8.2.4 Creazione di variabili

Dichiarazione di variabili

• la dichiarazione deve sempre precedere l'utilizzo.


• ogni variabile deve essere assegnata a un tipo di dati.
• nell'assegnare i nomi attenersi alle convenzioni di nomenclatura.
• la parola chiave per la dichiarazione èDECL.
• la parola chiave DECL può essere omessa per i quattro tipi di dati
semplici.
• Le assegnazioni di valori hanno luogo nell'avanzamento.
• la dichiarazione di variabili può avvenire in punti diversi. Ciò non ha
effetti sulla durata e sulla validità delle rispettive variabili.

8.2.5 Durata e validità delle variabili

Durata

• Per durata operativa si intende il periodo nel quale alla variabile è ri-
servata la locazione di memoria.
• Le variabili runtime liberano nuovamente lo spazio a loro disposizione
quando si esce dal programma o dalla funzione.
• Le variabili in una lista dati ricevono permanentemente il loro valore
corrente (ultimo) nello spazio a disposizione.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 99/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

Validità

• Le variabili dichiarate localmente sono disponibili e visibili solo nel pro-


gramma in cui sono state dichiarate.
• Le variabili globali risultano in una lista dati centrale (globale).
• Le variabili globali possono essere create anche in liste dati locali e al
momento della dichiarazione viene loro assegnata la parola chiave
globale.

8.2.6 Dichiarazione di variabile in funzione dell'allocazione di memoria

Variabile nel file *.SRC

• Una variabile creata nel file *.SRC si chiama variabile run time.
• Questo tipo di variabile non può essere sempre visualizzata.
• È disponibile solo nella routine del programma dove è stata dichiarata.
Ciò significa che le variabili sono disponibili durante l'esecuzione del
programma.
• Libera nuovamente lo spazio a sua disposizione quando viene rag-
giunta l'ultima riga del programma (riga END)

Variabile nel file *.DAT locale

• può essere sempre visualizzata durante lo svolgimento del programma


del rispettivo file *.SRC,
• il valore della variabile viene mantenuto dopo la fine del programma,
• è disponibile nel file *.SRC completo, vale a dire anche nei sottopro-
grammi locali
• può essere creata anche come variabile globale,
• riceve il valore corrente nel file *.DAT e inizia con il valore salvato a
un richiamo successivo.
• Una variabile dichiarata globalmente è disponibile anche globalmente.
In tutte le routine del programma è consentito un accesso in lettura e
scrittura se il file DAT viene utilizzato con la parola chiave PUBLIC e
alla dichiarazione anche con la parola chiave GLOBAL.

Variabile nel file di sistema $CONFIG.DAT

• è disponibile in tutti i programmi (globalmente),


• può essere sempre visualizzata, anche se non è attivo alcun program-
ma
• è disponibile globalmente, ossia in tutte le routine del programma è
consentito un accesso in lettura e scrittura,
• memorizza il valore corrente nel $CONFIG.DAT.

8.2.7 Dati di sistema KUKA

Descrizione

• I dati di sistema KUKA si trovano in tutti i tipi di dati, ad esempio co-


me
‒ tipo di dati di enumerazione, quali ad es. modo operativo
‒ struttura, come data/ora
• Le informazioni di sistema si ottengono dalle variabili di sistema KU-
KA. Queste

100/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
‒ estraggono l'informazione di sistema attuale,
‒ modificano le configurazioni correnti di sistema,
‒ sono predefinite e iniziano con il carattere "$"
‒ $DATE (ora e data correnti)
‒ $POS_ACT (posizione attuale robot)
‒ $MODE_OP (attuale modo operativo)
‒ ...

8.3 Operazioni con tipi di dati semplici

Di seguito vengono chiarite la creazione, inizializzazione e modifica di va-


riabili. Si ricorre qui solo ai tipi di dati semplici.
Tipi di dati semplici con KRL

• Numeri interi (INT)


• Numero in virgola mobile (REAL)
• Valori logici (BOOL)
• Carattere unico (CHAR)

8.3.1 Dichiarazione di variabili

Principio della dichiarazione di variabili

Struttura del programma modello nel file SRC

• le variabili devono essere dichiarate nella parte riservata alla dichiara-


zione
• la parte riservata all'inizializzazione ha inizio con la prima assegnazio-
ne di valore, nella maggior parte dei casi tuttavia con la riga "INI"
• nella parte riservata all'istruzione vengono assegnati o modificati valori

DEF main( )
; Sezione delle dichiarazioni
...
; Sezione di inizializzazione
INI
...
; Sezione delle istruzioni
SPTP HOME Vel=100% DEFAULT
...
END

Modifica di vista standard

• L'attivazione della riga DEF è possibile solo come Esperto


• Il procedimento è necessario per passare alla parte riservata alla di-
chiarazione per moduli precedenti alla riga "INI"
• Per poter vedere la riga DEF e END, importante anche per il trasferi-
mento di variabili in sottoprogrammi
Progettazione di dichiarazione di variabili

• Stabilire la durata operativa


• Definizione di validità/disponibilità
• Definizione di tipo di dati
• Assegnazione di nome e dichiarazione

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 101/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

Procedimento di dichiarazione di variabile con tipo di dati semplice

Creazione di variabile nel file SRC

1. Gruppo utenti Esperto


2. Attivare la riga DEF
3. Aprire il file SRC nell'Editor
4. Procedere alla dichiarazione della variabile

DEF MY_PROG ( )
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
INI
...
END

5. Chiudere e salvare il programma


Creazione di variabile nel file DAT

1. Gruppo utenti Esperto


2. Aprire il file DAT nell'Editor
3. Procedere alla dichiarazione della variabile

DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL INT counter1
DECL REAL price1
DECL BOOL error1
DECL CHAR symbol1
...
ENDDAT

AVVISO
Non utilizzare variabili utilizzate nel file SRC. Ciò porta ad una dop-
pia dichiarazione.

4. Chiudere e salvare la lista dati


Creazione di variabile nel $CONFIG.DAT

1. Gruppo utenti Esperto


2. Nella cartella SYSTEM aprire $CONFIG.DAT nell'Editor

DEFDAT $CONFIG
BASISTECH GLOBALS
AUTOEXT GLOBALS
USER GLOBALS
BackupManagerConfig
Conveyor
ENDDAT

3. Selezionare la fold "USER GLOBALS" e aprirla con il softkey "Fold


open/cls"
4. Procedere alla dichiarazione della variabile

DEFDAT $CONFIG
...

102/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
;==================================
; Userdefined Types
;==================================
;==================================
; Userdefined Externals
;==================================
;==================================
; Userdefined Variables
;==================================
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
...
; *******************************************
;Make your modifications -ONLY- here
; *******************************************

ENDDAT

$CONFIG.DAT può essere modificato nel corso degli aggiornamenti


software e tramite pacchetti tecnologici. È esclusa solo la sezione
evidenziata a parte "Make your modifications -ONLY- here".

5. Chiudere e salvare la lista dati


Creazione di variabile globale nel file DAT

1. Gruppo utenti Esperto


2. Aprire il file DAT nell'Editor
3. Espandere la lista dati nell'intestazione del programma con la parola
chiave PUBLIC

DEFDAT MY_PROG PUBLIC

4. Procedere alla dichiarazione della variabile

DEFDAT MY_PROG PUBLIC


EXTERNAL DECLARATIONS
DECL GLOBAL INT counter
DECL GLOBAL REAL price
DECL GLOBAL BOOL error
DECL GLOBAL CHAR symbol
...
ENDDAT

AVVISO
Non utilizzare nomi utilizzati in CONFIG.DAT. Ciò porta ad una dop-
pia dichiarazione.

5. Chiudere e salvare la lista dati

8.3.2 Inizializzazione di variabili con tipi di dati semplici

Descrizione dell'inizializzazione con KRL

• Al termine della dichiarazione, per una variabile è riservata solo una


locazione di memoria, il cui valore è sempre un valore non valido.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 103/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

• Nel file SRC, la dichiarazione e l'inizializzazione hanno luogo sempre


in due righe separate.
• Nel file DAT la dichiarazione e l'inizializzazione avvengono sempre su
una riga (se si desidera l'inizializzazione).
Una costante può essere dichiarata solo in una lista dati e deve esse-
re inizializzata immediatamente.
Se il contenuto dell'ultima variabile assegnata deve essere "visibile"
nell'elenco dei dati, qui deve avvenire anche una "prima inizializzazio-
ne".
• La sezione inizializzazione ha inizio nel file *.src con la prima asse-
gnazione del valore.

Principio dell'inizializzazione

Inizializzazione di numeri interi

• Inizializzazione come numero decimale

value = 58

• Inizializzazione come numero binario

value = 'B111010'

Calcolo: 1*32+1*16+1*8+0*4+1*2+0*1 = 58
Binario 25 24 23 22 21 20
Dec 32 16 8 4 2 1

• Inizializzazione esadecimale

value = 'H3A'

HEX Digit Calcolo Totali


A 10 * 160 = 10
3 3 * 161 = 48
Calcolo: 3*16 +10 = 58 58

Hex 0 1 2 3 4 5 6 7 8 9 A B C D E F
Dec 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Procedimento d'inizializzazione con KRL

Dichiarazione e inizializzazione nel file SRC

1. Aprire il file SRC nell'Editor


2. È stata eseguita la dichiarazione
3. Procedere all'inizializzazione

DEF MY_PROG ( )
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
INI
counter = 10
price = 0.0

104/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
error = FALSE
symbol = "X"
...
END

4. Chiudere e salvare il programma


Dichiarazione e inizializzazione nel file DAT

1. Aprire il file DAT nell'Editor


2. È stata eseguita la dichiarazione
3. Procedere all'inizializzazione

DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL INT counter = 10
DECL REAL price = 0.0
DECL BOOL error = FALSE
DECL CHAR symbol = "X"
...
ENDDAT

4. Chiudere e salvare la lista dati


Dichiarazione nel file DAT e inizializzazione nel file SRC

1. Aprire il file DAT nell'Editor


2. Eseguire la dichiarazione

DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
...
ENDDAT

3. Chiudere e salvare la lista dati


4. Aprire il file SRC nell'Editor
5. Procedere all'inizializzazione

DEF MY_PROG ( )
...
INI
counter = 10
price = 0.0
error = FALSE
symbol = "X"
...
END

6. Chiudere e salvare il programma

Dichiarazione e inizializzazione di una costante

Descrizione

• Le costanti vengono create con la parola chiave CONST.


• Le costanti possono essere create unicamente in liste dati.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 105/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione di costanti
Variabili e dichiarazioni

1. Aprire il file DAT nell'Editor.


2. Procedere alla dichiarazione e inizializzazione.

DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL CONST INT max_size = 99
DECL CONST REAL PI = 3.1415
...
ENDDAT

3. Chiudere e salvare la lista dati.

8.3.3 Manipolazione di valori di variabili di tipi di dati semplici con KRL

Elenco delle opzioni per la modifica dei valori di variabili con KRL

I valori delle variabili vengono modificati in routine di programma (file


SRC) differentemente a seconda dei compiti. Qui di seguito vengono trat-
tati i metodi più comuni. Pur essendo possibili, le manipolazioni mediante
operazioni bit e funzioni standard non verranno approfondite in questa se-
de.
Manipolazione dei dati tramite

• Sistemi di calcolo fondamentali


‒ (+) addizione
‒ (-) sottrazione
‒ (*) moltiplicazione
‒ (/) divisione
• Operazioni comparative
‒ (==) identico/parità
‒ (<>) impari
‒ (>) maggiore
‒ (<) minore
‒ (>=) maggiore di
‒ (<=) minore di
• Operazioni logiche
‒ (NOT) inversione
‒ (AND) AND logico
‒ (OR) OR logico
‒ (EXOR) OR esclusivo
• Operazioni bit
‒ (B_NOT) inversione bit per bit
‒ (B_AND) operazione AND bit per bit
‒ (B_OR) disgiunzione inclusiva bit per bit
‒ (B_EXOR) disgiunzione esclusiva bit per bit
Funzioni standard

• Funzione assoluta
• Funzione radice
• Funzione sinusoidale e cosinusoidale
• Funzione tangente

106/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
• Funzione arcoseno
• Funzione arcotangente
• più funzioni per manipolazione di stringhe

Contesti nella manipolazione di dati

Modifica di valore mediante utilizzo del tipo di dati REAL e INT


• Arrotondamento per eccesso/per difetto

; Dichiarazione
DECL INT A,B,C
DECL REAL R,S,T
; Inizializzazione
A = 3 ; A=3
B = 5.5 ; B=6 (a partire da x.5 arrotondare per
eccesso)
C = 2.25 ; C=2 (arrotondare per difetto)
R = 4 ; R=4.0
S = 6.5 ; S=6.5
T = C ; T=2.0 (si applica il valore arrotondato per
difetto)

Regola generale
Fase 1: si calcola il risultato intermedio (a destra di =).
Fase 2: segue l'assegnazione del valore che deve essere arrotonda-
to a seconda del tipo di dati target (INT come tipo di dati target).

• Risultati di operazioni aritmetiche (+;-;*)


Risultato Operando 1 Operazione Operando 2
INT INT +/-/* INT
REAL INT +/-/* REAL
REAL REAL +/-/* INT
REAL REAL +/-/* REAL

Regola generale
Non appena un operando è REAL, il risultato è anch'esso REAL.

; Dichiarazione
DECL INT D,E
DECL REAL U,V
; Inizializzazione
D = 2
E = 5
U = 0.5
V = 10.6
; Sezione delle istruzioni (Manipolazione dati)
D = D*E ; D = 2 * 5 = 10
E = E+V ; E= 5 + 10.6 = 15.6 -> Arrotondamento per eccesso
E=16
U = U*V ; U= 0.5 * 10.6 = 5.3
V = E+V ; V= 16 + 10.6 = 26.6

• Risultati di operazioni aritmetiche (/)

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 107/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Particolarità di operazioni aritmetiche con valori interi:


Variabili e dichiarazioni

‒ Per i risultati intermedi di operazioni con numeri assolutamente in-


teri vengono eliminate tutte le cifre dopo la virgola.
‒ Per l'assegnazione di valori a una variabile con numeri interi, il ri-
sultato viene arrotondato secondo le regole normali di calcolo.

; Dichiarazione
DECL INT F
DECL REAL W
; Inizializzazione
F = 10
W = 10.0
; Sezione delle istruzioni (Manipolazione dati)
; INT / INT -> INT
F = F/2 ; F=5
F = 10/4 ; F=2 (10/4 = 2.5 -> Tagliare decimale)
; REAL / INT -> REAL
F = W/4 ; F=3 (10.0/4=2.5 -> Arrotondamento per eccesso)
W = W/4 ; W=2.5

Operazioni comparative
Con operatori di confronto è possibile creare delle espressioni logiche. Il
risultato di un confronto corrisponde sempre al tipo di dati BOOL.
Operatore/KR
Descrizione Tipi di dati ammessi
L
== identico/parità INT, REAL, CHAR, BOOL
<> diverso da INT, REAL, CHAR, BOOL
> maggiore INT, REAL, CHAR
< minore INT, REAL, CHAR
>= maggiore o INT, REAL, CHAR
uguale
<= minore o INT, REAL, CHAR
uguale

; Dichiarazione
DECL BOOL G,H
; Inizializzazione/Sezione delle istruzioni
G = 10>10.1 ; G=FALSE
H = 10/3 == 3 ; H=TRUE
G = G<>H ; G=TRUE

Operazioni logiche
Con operazioni logiche è possibile creare delle espressioni logiche. Il risul-
tato di tale operazione corrisponde sempre al tipo di dati BOOL.
A EXOR
Operazioni NOT A A AND B A OR B
B
A=FALSE B=FALSE TRUE FALSE FALSE FALSE
A=FALSE B=TRUE TRUE FALSE TRUE TRUE
A=TRUE B=FALSE FALSE FALSE TRUE TRUE
A=TRUE B=TRUE FALSE TRUE TRUE FALSE

108/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
; Dichiarazione
DECL BOOL K,L,M
; Inizializzazione/Sezione delle istruzioni
K = TRUE
L = NOT K ; L=FALSE
M = (K AND L) OR (K EXOR L) ; M=TRUE
L = NOT (NOT K) ; L=TRUE

Gli operatori vengono eseguiti secondo il loro ordine di priorità


Priorità Operatore
1 NOT (B_NOT)
2 Moltiplicazione (*); divisione(/)
3 Addizione (+), sottrazione (-)
4 AND (B_AND)
5 EXOR (B_EXOR)
6 OR (B_OR)
7 qualsiasi comparazione (==; <>; ...)

; Dichiarazione
DECL BOOL X, Y
DECL INT Z
; Inizializzazione/Sezione delle istruzioni
X = TRUE
Z = 4
Y = (4*Z+16 <> 32) AND X ; Y=FALSE

Procedimento di manipolazione di dati

1. Stabilire il tipo di dati per la variabile o le variabili


2. Stabilire la validità e durata delle variabili
3. Procedere alla dichiarazione delle variabili
4. Inizializzare la variabile
5. Nelle routine del programma, vale a dire sempre nel file *.SCR, mani-
polare la variabile
6. Chiudere e salvare il file *.SRC

Comando ALT

ALT viene utilizzato principalmente durante la fase di programmazione a


fini di test, ad es. per visualizzare il contenuto di una variabile runtime.
• Il comando HALT arresta il programma. L'istruzione di movimento ese-
guita per ultima viene però ancora completata.
• Il programma può essere proseguito solo con il tasto Start. In seguito
viene eseguita l'istruzione successiva ad HALT.

In un programma interrupt, il programma viene interrotto solo dopo l'e-


secuzione completa dell'avanzamento.

Esempio:

DEF program()
DECL BOOL a,b
INI
...
SPTP XP1

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 109/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

a=$IN[1]
b=$IN[2]
HALT
IF ((a == TRUE) AND (b == FALSE)) THEN
..
ENDIF
...

110/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
8.3.4 Esercizio: Predisposizione per il programma di palettizzazione

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Strutturazione di programmi

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 111/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

8.3.5 Esercizio: Variabili semplici

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Variabili semplici

Compito

112/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
8.4 Visualizzazione delle variabili

Visualizzazione e modifica del valore di una variabile

1. Percorso di menu: Tasto robot > Display > Variabile > Singola

Fig. 8-3: Percorso del menu

2. Si apre la finestra Visualizza variabili - Singole.

Fig. 8-4: Finestra Visualizza variabili - singole

Pos. Descrizione
1 Nome delle variabili che deve essere modificato
2 Nuovo valore che si intende assegnare alle variabili
3 Programma in cui si cercano le variabili
Con variabili di sistema il campo Modulo è irrilevante.
4 Questo campo ha due stati:

‒ : il valore visualizzato non viene aggiornato automati-


camente.

‒ : il valore visualizzato viene aggiornato automatica-


mente.
Passaggio da uno stato all'altro:

‒ premere Aggiorna.
‒ In alternativa: Shift + Enter

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 113/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

3. Visualizzazione del valore della variabile


• Immettere il nome delle variabili nel campo Nome.
• Se un programma è selezionato, viene registrato automaticamente
nel campo Modulo.
Se si deve visualizzare una variabile da un altro programma, inse-
rire il programma come segue:
/R1/Nome programma
Non indicare alcuna cartella tra /R1/ e il nome del programma. Ac-
canto al nome del programma non indicare alcuna estensione di fi-
le.
• Premere il tasto Invio.
Nel campo Valore attuale viene visualizzato il valore attivo delle
variabili. Se non viene visualizzato alcunché, significa che alle va-
riabili non è ancora stato assegnato un valore.
• Inserire il valore desiderato nel campo Valore nuovo.
• Premere il tasto Invio.
Nel campo Valore attuale viene visualizzato il nuovo valore.

Visualizzazione informazioni di sistema

• Visualizzazione di flag, contatori e timer


Percorso di menu: Tasto del robot > Display > Variabile

Fig. 8-5: Percorso del menu

Ora si possono selezionare le diverse variabili di sistema:

‒ Flags ciclici
‒ Flags
‒ Contatore
‒ Timer
• Visualizzazione di ingressi e uscite

114/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
Fig. 8-6: Percorso di menu: Ingressi e uscite

Percorso di menu: Tasto robot > Display > Variabile > Ingressi/uscite

8.5 Rappresentazione di variabili globali in una visualizzazione

La visualizzazione variabili viene utilizzata per rappresentare in una


tabella le variabili globali compilate dal programmatore e il loro valore at-
tuale. Il contenuto della variabile viene visualizzato in modo sincrono al
tempo di esecuzione.
• Fase 1
Configurazione della visualizzazione variabili
• Fase 2
Visualizzazione variabili per l'utente/il programmatore

Un ulteriore sviluppo è l'opzione installabile KUKA.HMI easy, che per-


mette di visualizzare graficamente, a schermo intero, le variabili e gli
stati estesi sullo smartPAD.

Configurazione della visualizzazione variabili

Nella visualizzazione le variabili sono raccolte in gruppi. Le variabili posso-


no essere modificate.
Il numero di gruppi e il tipo di variabili contenute vengono definiti nella
configurazione. Per default la visualizzazione variabili è vuota.

Procedimento

1. Nel menu principale selezionare Visualizzazione > Variabile > In ge-


nerale > Configurazione.
Si apre la finestra Visualizzazione variabili - configurazione.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 115/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

Fig. 8-7: Configurazione visualizzazione variabili

2. Eseguire le impostazioni desiderate. Evidenziare una cella per editarla.


3. Premere OK per salvare la configurazione e chiudere la finestra.

Pos. Descrizione
1
• Simbolo a due frecce circolari : aggiornamento automati-
co della visualizzazione quando si modifica il valore delle
variabili.
• Nessun simbolo a due frecce circolari: la visualizzazione
non viene aggiornata automaticamente.
2 Nome descrittivo
3 Percorso e nome delle variabili
Nota: per le variabili di sistema basta il nome. Per le altre va-
riabili si deve inserire come segue:
/R1/nome programma/nome variabile
Non indicare alcuna cartella tra /R1/ e il nome del programma.
Accanto al nome del programma non indicare alcuna estensio-
ne di file.
4 Gruppo utenti a partire dal quale è possibile modificare l'attuale
gruppo.
5 Gruppo utenti a partire dal quale è possibile visualizzare l'attua-
le gruppo.
6 Larghezza in mm della colonna evidenziata. Digitare il valore
desiderato e confermare con il tasto Enter.
7 Altezza in mm della riga evidenziata. Digitare il valore desidera-
to e confermare con il tasto Enter.

116/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
Pulsante Descrizione
Visualizzazione Commuta sulla visualizzazione variabili.

Inserisci Visualizza altri pulsanti:

• Riga precedente: Inserisce una nuova riga


sopra la riga evidenziata.
• Riga sotto: Inserisce una nuova riga sotto
la riga evidenziata.
• Gruppo precedente: Inserisce un nuovo
gruppo a sinistra del gruppo corrente.
• Gruppo dietro: Inserisce un nuovo gruppo
a destra del gruppo corrente.
Cancella Visualizza altri pulsanti:

• Riga: La riga evidenziata viene cancellata.


• Gruppo: Il gruppo corrente viene cancella-
to.

Utilizzo della visualizzazione variabili

Nella visualizzazione le variabili sono raccolte in gruppi. Le variabili posso-


no essere modificate.
Il numero di gruppi e il tipo di variabili contenute vengono definiti nella
configurazione. Per default la visualizzazione variabili è vuota.

Procedimento

1. Selezionare nel menu principale Visualizzazione > Variabile > In ge-


nerale > Visualizza.
Si apre la finestra Indicazione delle variabili.

Fig. 8-8: Finestra Indicazione delle variabili

2. Selezionare il gruppo desiderato.


3. Evidenziare la cella che si vuole modificare. Eseguire la modifica tra-
mite il pulsante.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 117/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

4. Premere OK per salvare la modifica e chiudere la finestra.

Pos. Descrizione
1
Simbolo a due frecce circolari : aggiornamento automatico
della visualizzazione quando si modifica il valore delle variabili.
Nessun simbolo a due frecce circolari: la visualizzazione non
viene aggiornata automaticamente.
2 Nome descrittivo
3 Valore della variabile. Per ingressi/uscite è indicato lo stato:

• Grigio: inattivo (FALSE)


• Verde: attivo (TRUE)
4 Per ciascun gruppo è disponibile una scheda di registro.
Sono disponibili i seguenti pulsanti:
Pulsante Descrizione
Configurazione Passa alla configurazione della visualizzazione
variabili.

Aggiorna Aggiorna la visualizzazione.


Annulla Info Disattiva l'aggiornamento automatico.
Avvia Info Attiva l'aggiornamento automatico.
Per ogni gruppo si possono aggiornare auto-
maticamente fino a 12 variabili.
Edit Diverse funzioni a seconda della colonna in cui
è marcata una cella:

• ColonnaStato: attiva e disattiva l'aggiorna-


mento automatico.
• ColonnaNome: commuta la cella nella mo-
dalità di modifica in modo che sia possibile
cambiare il nome.
• ColonnaValore: commuta la cella nella mo-
dalità di modifica in modo che sia possibile
cambiare la voce.
Per gli ingressi/uscite Edit modifica lo stato
(TRUE/FALSE).
Il pulsante Edit è disponibile nel gruppo Utente
solo se è stato abilitato nella configurazione
della visualizzazione variabili.
Nota: I valori di variabili di sola lettura non
possono essere modificati.

8.6 Array/campi con KRL

Descrizione

I campi, denominati anche matrici, offrono spazio disponibile in memoria


per più variabili dello stesso tipi di dati, differenziabili mediante indici
• lo spazio disponibile per i campi è finito, vale a dire che le dimensioni
massime del campo dipendono dai requisiti di spazio del tipo di dati

118/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
• per la dichiarazione si devono conoscere le dimensioni del campo e il
tipo di dati
• l'indice iniziale nel KRL inizia sempre con 1
• un'inizializzazione può avvenire sempre singolarmente
• un'inizializzazione nel file SRC può aver luogo anche mediante loop

Dimensioni campo

• Campo unidimensionale

Fig. 8-9: Campo unidimensionale

DECL BOOL dimension[4]


dimension[3]=TRUE

• Campo bidimensionale

Fig. 8-10: Campo bidimensionale

DECL REAL dimension[4,4]


dimension[2,1]=3.25

• Campo tridimensionale

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 119/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

Fig. 8-11: Campo tridimensionale

DECL INT dimension[4,4,4]


dimension[3,4,1]=21

I campi quadridimensionali o superiori non sono supportati dal KRL

Validità delle variabili di campo

La vita operativa e la validità di variabili di campo è la stessa come per


l'utilizzo di variabili di tipo di dati semplice

Dichiarazione del campo nel file SRC

DEF MY_PROG ( )
DECL BOOL error[10]
DECL REAL value[50,2]
DECL INT parts[10,10,10]
INI
...
END

Dichiarazione del campo nel file DAT

DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL BOOL error[10]
DECL REAL value[50,2]
DECL INT parts[10,10,10]
...
ENDDAT

Creazione nell'elenco dati (anche $CONFIG.DAT)

Dichiarazione e inizializzazione del campo nel file SRC

• Ogni campo separato mediante richiamo indice

DECL BOOL error[10]


INI
error[1]=FALSE

120/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
error[2]=FALSE
error[3]=FALSE
error[3]=FALSE
error[4]=FALSE
error[5]=FALSE
error[6]=FALSE
error[7]=FALSE
error[8]=FALSE
error[9]=FALSE
error[10]=FALSE

• Mediante loop adatti

DECL BOOL error[10]


DECL INT x
INI

FOR x = 1 TO 10
error[x]=FALSE
ENDFOR

Al termine del loop, x presenta il valore 11

Dichiarazione e inizializzazione del campo nel file DAT

• ogni campo separato mediante richiamo indice e indicazione finale di


valori nell'elenco dati

DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL BOOL error[10]
error[1]=FALSE
error[2]=FALSE
error[3]=FALSE
error[4]=FALSE
error[5]=FALSE
error[6]=FALSE
error[7]=FALSE
error[8]=FALSE
error[9]=FALSE
error[10]=FALSE

• dichiarazione non consentita e inizializzazione nell'elenco dati

DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL BOOL error[10]
DECL INT size = 32
error[1]=FALSE
error[2]=FALSE
error[3]=FALSE
error[4]=FALSE
error[5]=FALSE
error[6]=FALSE
error[7]=FALSE
error[8]=FALSE
error[9]=FALSE
error[10]=FALSE

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 121/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

Genera dieci messaggi di errore "Blocco inizializzazione non è nella


sezione iniziale"

Il campo completo può essere visualizzato selezionando nel menu


principale Visualizza > Variabile > Singolo e inserendo, nel campo
Nome, il nome delle variabili tra parentesi quadre senza indice (ad
es. error[])

Dichiarazione del campo nel file DAT e inizializzazione del campo nel file SRC

Dichiarazione dei campi nell'elenco dati e inizializzazione nel file SRC

• Se un campo viene creato in questo modo nell'elenco dati, i valori cor-


renti non possono essere visionati nell'elenco dati; i valori correnti
possono essere solo controllati nella visualizzazione delle variabili.

DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL BOOL error[10]

DEF MY_PROG ( )
INI
error[1]=FALSE
error[2]=FALSE
error[3]=FALSE
...
error[10]=FALSE

oppure

DEF MY_PROG ( )
INI
FOR x = 1 TO 10
error[x]=FALSE
ENDFOR

Inizializzazione campo mediante loop

Inizializzazione mediante loop

• Campo unidimensionale

DECL INT parts[15]


DECL INT x
FOR x = 1 TO 15
parts[x]= 4
ENDFOR

• Campo bidimensionale

DECL INT parts_table[10,5]


DECL INT x, y
FOR x = 1 TO 10
FOR y = 1 TO 5
parts_table[x, y]= 6
ENDFOR
ENDFOR

• Campo tridimensionale

122/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
DECL INT parts_palette[5,4,3]
DECL INT x, y, z
FOR x = 1 TO 5
FOR y = 1 TO 4
FOR z = 1 TO 3
parts_palette[x, y, z]= 12
ENDFOR
ENDFOR
ENDFOR

Procedura di programmazione di matrici

1. Definire i tipi di dati per il campo


2. Stabilire la validità e durata del campo
3. Eseguire la dichiarazione del campo (SRC o DAT, qui SRC)
4. Inizializzare gli elementi di campo
5. Nelle routine del programma, vale a dire sempre nel file SRC, manipo-
lare il campo
6. Chiudere e salvare il file SRC

DEF MY_PROG ( )
DECL REAL palette_size[10]
DECL INT counter
INI
; Inizializzazione
FOR counter = 1 TO 10
palette_size[counter] = counter * 1.5
ENDFOR
...
; Cambiare valore individualmente
palette_size[8] = 13
...
; Confronto di valori
IF palette_size[3] > 4.2 THEN
...

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 123/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

8.6.1 Esercizio: Programmazione di campi

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Programmazione di campi

Compito

124/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
8.7 Strutture con KRL

Variabili con più informazioni singole

Fig. 8-12: Strutture, esempio auto

Tipo di dati composto: Struttura

• I campi consentono di raggruppare insieme variabili dello stesso tipo


di dati. Nella realtà, tuttavia, le variabili sono costituite per lo più da ti-
pi di dati differenti.
• Un auto presenta ad esempio una potenza motore o un
chilometraggio del tipo Integer. Per il prezzo si presta il tipo Real. La
presenza di un climatizzatore corrisponde piuttosto al tipo di dati Bool.
• L'insieme di tutto ciò descrive un auto.

• Una struttura può essere autodefinita con la parola chiave STRUC.


• una struttura è un'interconnessione di tipi di dati diversi.

STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition

• Perché sia utilizzata, una struttura deve essere dapprima definita.

Definizione di una struttura ("modello")

• Strutture create localmente non sono più valide quando si raggiunge


la riga END
• Strutture utilizzate in più programmi devono essere dichiarate nel
$CONFIG.DAT
• Strutture autodefinite devono terminare con TYPE per essere meglio
riconosciute
• In una struttura possono essere utilizzati tipi di dati semplici INT,
REAL, BOOL e CHAR.

STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition

• In una struttura possono essere integrati campi CHAR.

STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition,


CHAR car_model[15]

• In una struttura possono essere utilizzate anche strutture note, come


una posizione POS.

STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition,


POS car_pos

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 125/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

• Dopo la definizione della struttura deve essere dichiarata una variabile


di lavoro

STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition


DECL CAR_TYPE my_car

Inizializzazione/modifica di una struttura

• L'inizializzazione può essere eseguita con parentesi.


• Per un'inizializzazione con parentesi è consentito utilizzare solo co-
stanti (valori fissi).
• Non occorre osservare un ordine nell'assegnazione di valori.

my_car = {motor 50, price 14999.95, air_condition TRUE}

my_car = {price 14999.95, motor 50, air_condition TRUE}

• In una struttura non devono essere specificati tutti gli elementi di strut-
tura.
• Una struttura viene inizializzata con un elemento di struttura.
• Valori non inizializzati sono o vengono impostati su sconosciuto.

my_car = {motor 75} ; Valore sconosciuto per prezzo e


climatizzatore

• L'inizializzazione può essere eseguita anche con punto separatore.

my_car.price = 9999.0

• Un elemento di struttura può essere sempre rimodificato singolarmente


con punto separatore. Gli altri elementi di struttura non vengono né
cancellati né modificati.

my_car = {price 14999.95, motor 50, air_condition TRUE}


my_car.price = 12000.0 ; I valori relativi a motore e
climatizzatore vengono mantenuti

Tuttavia:

my_car = {price 14999.95, motor 50, air_condition TRUE}


my_car = {price 12000.0} ; I valori relativi a motore e
climatizzatore vengono cancellati

Strutture KUKA predefinite risalenti alle posizioni

KUKA opera con strutture predefinite archiviate nel sistema. Gli esempi
sono riportati nelle posizioni e nella programmazione di messaggi.
• AXIS: STRUC AXIS REAL A1, A2, A3, A4, A5, A6
• E6AXIS: STRUC E6AXIS REAL A1, A2, A3, A4, A5, A6, E1, E2, E3,
E4, E5, E6
• FRAME: STRUC FRAME REAL X, Y, Z, A, B, C
• POS: STRUC POS REAL X, Y, Z, A, B, C INT S,T
• E6POS: STRUC E6POS REAL X, Y, Z, A, B, C, E1, E2, E3, E4, E5,
E6 INT S,T

Inizializzazione di una struttura con una posizione

• per un'inizializzazione con parentesi è consentito utilizzare solo co-


stanti (valori fissi)

126/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition,
POS car_pos
DECL CAR_TYPE my_car
my_car = {price 14999.95, motor 50, air_condition TRUE,
car_pos {X 1000, Y 500, A 0}}

• l'inizializzazione può essere eseguita anche con punto separatore

my_car.price = 14999.95
my_car.motor = 50
my_car.air_condition = TRUE
my_car.car_pos = {X 1000, Y 500, A 0}

• per l'inizializzazione con punto separatore possono essere impiegate


anche delle variabili

my_car.price = my_price*0.85
my_car.car_pos.X = x_value
my_car.car_pos.Y = 750+y_value

Creazione di una struttura

1. Definizione della struttura

STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition

2. Dichiarazione delle variabili operative

DECL CAR_TYPE my_car

3. Inizializzazione delle variabili operative

my_car = {motor 50, price 14999.95, air_condition TRUE}

4. Modifica dei valori e/o confronto di valori delle variabili operative

my_car.price = 5000.0

my_car.price = value_car

IF my_car.price >= 20000.0 THEN


...
ENDIF

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 127/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

8.7.1 Esercizio: Creazione di strutture proprie

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Creazione di strutture proprie

Compito

128/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
8.8 Il tipo dati di enumerazione ENUM

Testo in chiaro come valore di variabile

Fig. 8-13

• il tipo dati di enumerazione consiste in un numero limitato di costanti,


quali verde, giallo o blu

ENUM COLOR_TYPE green, orange, purple, yellow

• le costanti sono nomi liberamente selezionabili


• le costanti sono definite dal programmatore
• perché sia utilizzato, un tipo di enumerazione deve essere dapprima
definito
• una variabile operativa, come colore della cassa, del tipo
COLOR_TYPE può assumere sempre solo un valore di una costante
• l'assegnazione di valore di una costante ha luogo sempre con il sim-
bolo #

Utilizzo di un tipo dati di enumerazione

Disponibilità/utilizzo

• è possibile ricorrere solo a costanti conosciute


• un tipo di enumerazione può essere ampliato in modo limitato (più di
250 costanti e più di 2000 caratteri)
• un tipo di enumerazione può essere utilizzato da solo

ENUM COLOR_TYPE green, orange, purple, yellow

• un tipo di enumerazione può essere integrato in una struttura

ENUM COLOR_TYPE green, orange, purple, yellow


STRUC CAR_TYPE INT motor, REAL price, COLOR_TYPE car_color

• i tipi dati di enumerazione, utilizzati in più programmi, devono essere


dichiarati nel $CONFIG.DAT
• i tipi di enumerazione autodefiniti devono terminare con TYPE per es-
sere meglio riconosciuti

Creazione di un tipo dati di enumerazione

1. Definizione delle variabili di enumerazione e delle costanti

ENUM LAND_TYPE de, be, cn, fr, es, br, us, ch

2. Dichiarazione delle variabili operative

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 129/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

DECL LAND_TYPE my_land

3. Inizializzazione delle variabili operative

my_land = #be

4. Confronto di valori delle variabili operative

IF my_land == #es THEN


...
ENDIF

130/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
8.8.1 Esercizio: Creazione della variabile del tipo di dati ENUM

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Strutturazione di programmi

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 131/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

8.9 Accordo di segnale

Descrizione

Fig. 8-14: SEGNALE

SEGNALE collega variabili di segnale predefinite per ingressi o uscite con


un nome. Un tale collegamento, cioè un accordo SEGNALE, è necessario
per poter indirizzare ingressi o uscite analogici. Un ingresso o un'uscita
può ricorrere in diversi accordi SEGNALE. Un accordo SEGNALE aumen-
ta la leggibilità di un programma per il programmatore e l'operatore.
L'utente può concordare segnali nei seguenti file:

• Nella sezione EXTERNAL DECLARATIONS dei file DAT


• Nella sezione dichiarazione nei file SRC
• Nella sezione USER GLOBALS nel file $CONFIG.DAT
Esistono anche accordi SEGNALE predefiniti nel sistema. Si trovano nella
cartella KRC:\STEU\STEU\MADA nel file $machine.DAT. Tali accordi si
possono disattivare nel file $machine.DAT tramite la parola chiave FALSE.

Sintassi

Accordo di nomi segnali per ingressi o uscite:


<GLOBAL> SIGNAL Nome segnale variabile segnale <TO Variabile se-
gnale>
Chiusura di un accordo SEGNALE predefinito:
SIGNAL Nome segnale sistema FALSE

Spiegazione della sintassi

Elemento Descrizione
GLOBAL Possibile solo per segnali definiti in un file DAT.

Nome se- Nome a piacere


gnale
Variabile di Variabili di segnale predefinite. È possibile selezionare i
segnale seguenti tipi:

• $IN[x]
• $OUT[x]
• $ANIN[x]
• $ANOUT[x]

132/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Variabili e dichiarazioni
Elemento Descrizione
TO Riassume diversi ingressi o uscite binari in sequenza
(max. 32) in un ingresso o uscita digitale. I segnali rias-
sunti si possono indirizzare in modo decimale, esadeci-
male (prefisso H) o come combinazione di bit (prefisso
B). È possibile anche un’elaborazione con operatori boo-
leani.
Nome se- Il nome di segnale predefinito nel sistema, ad es. $T1.
gnale di si-
stema
FALSE Chiude un accordo SEGNALE predefinito nel sistema. Gli
ingressi o le uscite che si riferiscono all’accordo SEGNA-
LE sono pertanto di nuovo disponibili per altri scopi.
FALSE non è qui un valore booleano ma una parola
chiave. L’opzione TRUE non è disponibile. Per rendere di
nuovo valido l’accordo SEGNALE disattivato con FALSE
si deve cancellare la riga di programma contenente FAL-
SE.

Esempio 1

All'uscita $OUT[7] viene assegnato il nome START_PROCESS. Viene setta-


ta l'uscita $OUT[7].

SIGNAL START_PROCESS $OUT[7]


START_PROCESS = TRUE

Esempio 2

Con il comando KRL SEGNALE si possono riunire più bit singoli in un by-
te, in una stringa dati o in una doppia stringa dati nell'interfaccia del pro-
gramma.
Esempio: Trasmissione di un numero di programma dal PLC al KR C4.

DEF Programm()
SIGNAL programmnummer $IN[1] TO $IN[8] ; Riepilogo in 1 byte
INI
...
SWITCH programmnummer ; Selezione mediante numeri
programma trasmessi
CASE 1
programm_1()
...
CASE 2
...
END

Esempio 3

Un gripper deve essere aperto con l'uscita digitale $OUT[25] e chiuso con
l'uscita digitale &OUT[26].
• Realizzazione semplice

...
; ### Chiudere pinza ###
$OUT[25]=TRUE
...
; ### Aprire pinza ###
$OUT[26]=FALSE

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 133/345


Luca Galeotti, A.C.M.I. SpA
Variabili e dichiarazioni Programmazione robot 2

...

Svantaggi: senza commenti è difficile leggere il programma. Se la


pinza viene "ricablata" e pilotata tramite altre uscite, il programma
deve essere adattato in ogni punto del lancio.

• Utilizzo del segnale


$CONFIG.DAT

SIGNAL gripper $OUT[25] TO $OUT[26]


INT open = 1
INT close = 2

$OUT[25] $OUT26]
INT
21 20
0 1 ≙ 1
1 0 ≙ 2
programm.src

...
; ### Il gripper viene aperto
gripper = open
...
; ### Il gripper viene chiuso
gripper = close
...

Vantaggi: una riassegnazione del gripper ad un altro campo di usci-


ta avviene solo in $CONFIG.DAT. La programmazione nel program-
ma di lavoro rimane invariata e può essere letta senza commenti.

134/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Sottoprogrammi e funzioni
9 Sottoprogrammi e funzioni

9.1 In generale

Nella presente unità didattica sono esposti i seguenti contenuti:


• Sottoprogrammi locali
• Sottoprogrammi globali
• Trasferimento di parametri a sottoprogrammi
• Programmazione di funzioni

9.2 Collegamento di programmi robot

Descrizione

• La tecnica dei sottoprogrammi offre la possibilità di strutturare in ma-


niera modulare i programmi robot e quindi di allestirli in modo efficien-
te dal punto di vista strutturale.
• Lo scopo non è quello di scrivere tutte le istruzioni in un programma,
ma di salvare in programmi separati determinati cicli, calcoli o proces-
si.
• L'utilizzo di sottoprogrammi comporta molti vantaggi:
‒ Il programma principale acquisisce una struttura chiara ed è facil-
mente leggibile, perché la lunghezza del programma viene ridotta.
‒ I sottoprogrammi possono essere sviluppati separatamente: lo sfor-
zo di programmazione può essere suddiviso, le fonti di errore sono
ridotte al minimo.
‒ I sottoprogrammi possono essere riutilizzati più volte.
‒ Migliore manutenibilità e gestione dei singoli moduli di programma/
sottoprogrammi.
• Ci sono sostanzialmente due tipi di sottoprogrammi diversi:
‒ Sottoprogrammi globali
(>>> "Sottoprogrammi globali" Pagina 139)
(>>> 9.2.2 "Operazioni con sottoprogrammi globali" Pagina 139)
‒ Sottoprogrammi locali
(>>> "Sottoprogrammi locali" Pagina 136)
(>>> 9.2.1 "Operazioni con sottoprogrammi locali" Pagina 136)

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 135/345


Luca Galeotti, A.C.M.I. SpA
Sottoprogrammi e funzioni Programmazione robot 2

9.2.1 Operazioni con sottoprogrammi locali

Sottoprogrammi locali

Fig. 9-1: Schema: sottoprogrammi locali

• I sottoprogrammi locali sono programmi integrati in un programma


principale, ovvero le istruzioni sono contenute nello stesso file SRC.
• Le coordinate dei punti del sottoprogramma sono memorizzate nello
stesso file DAT.

Definizione di sottoprogrammi locali

• i sottoprogrammi locali seguono il programma principale e sono con-


trassegnati da DEF Nome_Sottoprogramma( ) ed END

DEF MY_PROG( )
; Questo è il programma principale
...
END
_______________________________________
DEF LOCAL_PROG1( )
: Questo è il sottoprogramma locale 1
...
END
_______________________________________
DEF LOCAL_PROG2( )
: Questo è il sottoprogramma locale 2
...
END
_______________________________________
DEF LOCAL_PROG3( )
: Questo è il sottoprogramma locale 3
...
END

• un file SRC può comprendere fino a 255 sottoprogrammi locali


• i sottoprogrammi locali possono essere richiamati più volte
• per il nome di programma locale sono richieste le parentesi

136/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Sottoprogrammi e funzioni
Contesti nell'operare con sottoprogrammi locali

• al completamento di un sottoprogramma locale segue un ritorno indie-


tro all'istruzione successiva al richiamo del sottoprogramma

DEF MY_PROG( )
; Questo è il programma principale
...
LOCAL_PROG1( )
...
END
_______________________________________
DEF LOCAL_PROG1( )
...
LOCAL_PROG2( )
...
END
_______________________________________
DEF LOCAL_PROG2( )
...
END

• possono essere annidati l'uno nell'altro non più di 20 sottoprogrammi


• le coordinate dei punti vengono salvate nel rispettivo elenco DAT e so-
no disponibili per il programma completo (*.src)

DEF MY_PROG( )
; Questo è il programma principale
...
SPTP P1 Vel=100% PDAT1
...
END
_______________________________________
DEF LOCAL_PROG1( )
...
; questa posizione è uguale a quella nel programma
principale
SPTP P1 Vel=100% PDAT1
...
END

DEFDAT MY_PROG
...
DECL E6POS XP1={X 100, Y 200, Z 300 ... E6 0.0}
...
ENDDAT

• con RETURN è possibile terminare un sottoprogramma e ritornare così


al modulo del programma in fase di richiamo, nell'esempio dopo LO-
CAL_PROG1().

DEF MY_PROG( )
; Questo è il programma principale
...
LOCAL_PROG1( )
...
END
_______________________________________
DEF LOCAL_PROG1( )

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 137/345


Luca Galeotti, A.C.M.I. SpA
Sottoprogrammi e funzioni Programmazione robot 2

...
IF $IN[12]==FALSE THEN
RETURN ; Ritorno al programma principale
ENDIF
...
END

Svolgimento di un richiamo del sottoprogramma

Fig. 9-2: Svolgimento di un richiamo del sottoprogramma

• Ogni programma inizia con una riga DEF e termina con una riga END.
• Se nel programma principale si richiama un sottoprogramma, solita-
mente quest'ultimo viene elaborato da DEF a END.
• Al raggiungimento della riga END, il puntatore di programma si riposi-
ziona sul programma da richiamare (programma principale).

AVVISO
Per uscire anzitempo da un sottoprogramma (quindi prima della riga
END), si può programmare il comando RETURN nel sottoprogramma
stesso. La lettura di questa riga di programma provoca l'interruzione an-
ticipata del sottoprogramma.

Procedimento di creazione di sottoprogrammi locali

1. Gruppo utente Esperto


2. Aprire il file SRC nell'Editor
3. Attivare la riga DEF

DEF MY_PROG( )
...
END

4. Saltare con il cursore sotto la riga END


5. Assegnare una nuova intestazione locale di programma con DEF, no-
me del programma e parentesi

DEF MY_PROG( )
...
END
DEF PICK_PART( )

6. Completare il nuovo sottoprogramma con un'istruzione END

138/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Sottoprogrammi e funzioni
DEF MY_PROG( )
...
END
DEF PICK_PART( )
END

7. Dopo aver premuto Return, viene frapposta una barra tra il program-
ma principale e il sottoprogramma

DEF MY_PROG( )
...
END
_______________________________________
DEF PICK_PART( )
END

8. È possibile ora riprendere l'elaborazione del programma principale e


del sottoprogramma
9. Chiudere e salvare il programma

9.2.2 Operazioni con sottoprogrammi globali

Sottoprogrammi globali

Fig. 9-3: Schema esemplificativo per sottoprogrammi globali

• Un sottoprogramma globale è un programma robot autonomo che vie-


ne richiamato da un altro programma robot.
• La diramazione dei programmi può svolgersi in modo specifico sulla
scorta delle esigenze, ovvero un programma può fungere una volta da
programma principale e un'altra volta da sottoprogramma.

Definizione di sottoprogrammi globali

• i sottoprogrammi globali sono dotati di file SRC e DAT indipendenti

DEF GLOBAL1( )
...
END

DEF GLOBAL2( )
...

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 139/345


Luca Galeotti, A.C.M.I. SpA
Sottoprogrammi e funzioni Programmazione robot 2

END

• i sottoprogrammi globali possono essere richiamati più volte

Contesti nell'operare con sottoprogrammi locali

• al completamento di un sottoprogramma locale segue un ritorno indie-


tro all'istruzione successiva al richiamo del sottoprogramma

DEF GLOBAL1( )
...
GLOBAL2( )
...
END

DEF GLOBAL2( )
...
GLOBAL3( )
...
END

DEF GLOBAL3( )
...
END

• possono essere annidati l'uno nell'altro non più di 20 sottoprogrammi


• le coordinate dei punti vengono salvate nel rispettivo elenco DAT e so-
no disponibili solo per il corrispettivo programma

DEF GLOBAL1( )
...
SPTP P1 Vel=100% PDAT1
END

DEFDAT GLOBAL1( )
DECL E6POS XP1={X 100, Z 200, Z 300 ... E6 0.0}
ENDDAT

Coordinate differenti per P1 nel Global2 ( )

DEF GLOBAL2( )
...
SPTP P1 Vel=100% PDAT1
END

DEFDAT GLOBAL2( )
DECL E6POS XP1={X 800, Z 775, Z 999 ... E6 0.0}
ENDDAT

• con RETURN è possibile terminare un sottoprogramma e ritornare co-


sì al modulo del programma in fase di richiamo, nell'esempio dopo
GLOBAL2().

140/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Sottoprogrammi e funzioni
DEF GLOBAL1( )
...
GLOBAL2( )
...
END

DEF GLOBAL2( )
...
IF $IN[12]==FALSE THEN
RETURN ; Ritorno a GLOBAL1( )
ENDIF
...
END

Procedimento di programmazione con sottoprogrammi globali

1. Gruppo utente Esperto


2. Creare un nuovo programma

DEF MY_PROG( )
...
END

3. Ricreare il secondo programma

DEF PICK_PART( )
...
END

4. Aprire nell'Editor il file SRC del programma MY_PROG


5. Programmare il richiamo di sottoprogramma mediante nome program-
ma e parentesi

DEF MY_PROG( )
...
PICK_PART( )
...
END

6. Chiudere e salvare il programma

9.3 Trasferimento di parametri a sottoprogrammi

Descrizione del trasferimento di parametri

• Sintassi

DEF MY_PROG( )
...
CALC (K, L)
...
END

DEF CALC(R:IN, S:OUT) ;


Possibilità di trasferimento comeIN/OUT-Parametro
...
END

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 141/345


Luca Galeotti, A.C.M.I. SpA
Sottoprogrammi e funzioni Programmazione robot 2

• Il trasferimento di parametri può avere luogo sia in sottoprogrammi lo-


cali, sia globali

Principio del trasferimento di parametri

• Trasferimento di parametri come parametri IN (Call by value):


‒ il valore della variabile resta inalterato nel programma principale,
vale a dire, si continua a lavorare con il valore precedente del pro-
gramma principale
‒ il sottoprogramma può leggere il valore della variabile ma non de-
finirlo
• Trasferimento di parametri come parametri OUT (Call by reference):
‒ anche il valore della variabile viene modificato nel programma prin-
cipale, vale a dire, viene applicata la valenza del sottoprogramma
‒ il sottoprogramma legge il valore, lo modifica e riscrive il nuovo va-
lore

• Trasferimento di parametri a sottoprogrammi locali

DEF MY_PROG( )
DECL REAL r,s
...
CALC_1(r)
...
CALC_2(s)
...
END
_______________________________________
DEF CALC_1(num1:IN)
; Il valore "r" è trasferito soltanto a num1 per lettura
DECL REAL num1
...
END
_______________________________________
DEF CALC_2(num2:OUT)
; Il valore "s" è trasferito a num2, cambiato e riscritto
DECL REAL num2
...
END

• Trasferimento di parametri a sottoprogrammi globali

DEF MY_PROG( )
DECL REAL r, s
...
CALC_1(r)
...
CALC_2(s)
...
END

DEF CALC_1(num1:IN)
; Il valore "r" è trasferito soltanto a num1 per lettura
DECL REAL num1
...
END

142/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Sottoprogrammi e funzioni
DEF CALC_2(num2:OUT)
; Il valore "s" è trasferito a num2, cambiato e riscritto
DECL REAL num2
...
END

• Trasferimento di valori sempre possibile a tipi di dati uguali


• Trasferimento di valori ad altri tipi di dati:

DEF MY_PROG( )
DECL DATATYPE1 value
CALC(value)
END
_______________________________________
DEF CALC(num:IN)
DECL DATATYPE2 num
...
END

DATATYPE 1 DATATYPE 2 Nota


BOOL INT, REAL, ERRORE ( ... parametro non compa-
CHAR tibile)
INT REAL viene utilizzato il valore INT come
valore REAL
INT CHAR viene utilizzato il carattere dalla ta-
bella ASCII
CHAR INT viene utilizzato il valore INT dalla ta-
bella ASCII
CHAR REAL viene utilizzato il valore REAL dalla
tabella ASCII
REAL INT vengono arrotondati i valori REAL
REAL CHAR vengono arrotondati i valori REAL,
viene utilizzato il carattere dalla ta-
bella ASCII

• Trasferimento di più parametri

DEF MY_PROG( )
DECL REAL w
DECL INT a, b
...
CALC(w, b, a)
...
CALC(w, 30, a)
...
END
_______________________________________
DEF CALC(ww:OUT, bb:IN, aa:OUT)
;1.) w <-> ww, b -> bb, a <-> aa
;2.) w <-> ww, 30 -> bb, a <-> aa
DECL REAL ww
DECL INT aa, bb
...
END

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 143/345


Luca Galeotti, A.C.M.I. SpA
Sottoprogrammi e funzioni Programmazione robot 2

I valori non possono essere trasferiti se nel sottoprogramma si cal-


cola anche senza questi valori. Esempio: CALC(w,, a)

• Trasferimento di parametri con campi


‒ i campi possono essere trasferiti solo completamente in un nuovo
campo
‒ i campi possono essere trasferiti solo con parametri OUT (Call by
reference)

DEF MY_PROG( )
DECL CHAR name[10]
...
name[]="PETER"
calc(name[])
...
END
_______________________________________
DEF calc(my_name[]:OUT)
; Creare campo nel sottoprogramma sempre senza dimensione
del campo
; La dimensione del campo è funzione del campo di partenza
DECL CHAR my_name[]
...
END

Trasferimento di campi completi: FELD_1D[] (unidimensionale),


FELD_2D[,] (bidimensionale), FELD_3D[,,] (tridimen-
sionale)

‒ possono essere trasferiti anche singoli elementi di campo

DEF MY_PROG( )
DECL CHAR name[10]
...
name[]="PETER"
CALC(name[1])
...
END
_______________________________________
DEF calc(symbol:IN)
; È trasferito soltanto un carattere
DECL CHAR symbol
...
END

Quando si trasferiscono singoli elementi di campo può esservi


come destinazione solo una variabile e non un campo. Qui
viene trasferita nel sottoprogramma solo la lettera "P".

Procedimento di trasferimento di parametri

Considerazioni preliminari

1. Definizione dei parametri richiesti nel sottoprogramma


2. Calcolo del tipo di trasferimento dei parametri (parametri IN o OUT)
3. Definizione dei tipi di uscita e di destinazione (nel caso ideale lo stes-
so tipo di dati)
4. Definizione della sequenza di trasferimento dei parametri

144/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Sottoprogrammi e funzioni
Da osservare: il primo parametro inviato viene scritto sul primo para-
metro nel sottoprogramma, il secondo sul secondo parametro nel
sottoprogramma e così via.

Procedimento

1. Caricamento del programma principale nell'editor


2. Nel programma principale, dichiarazione, inizializzazione ed eventuale
manipolazione di variabili
3. Creazione di richiamo di sottoprogramma con trasferimento di variabile
4. Chiusura e salvataggio del programma principale
5. Caricamento di sottoprogramma nell'editor
6. Completamento della riga DEF con variabili e IN/OUT
7. Nel sottoprogramma, dichiarazione, inizializzazione ed eventuale mani-
polazione di variabili
8. Chiusura e salvataggio del sottoprogramma
Esempio completo:

DEF MY_PROG( )
DECL REAL w
DECL INT a, b
w = 1.5
a = 3
b = 5
CALC(w, b, a)
; valori attuali
; w = 3.8
; a = 13
; b = 5
END
_______________________________________
DEF CALC(ww:OUT, bb:IN, aa:OUT)
; w <-> ww, b -> bb, a <-> aa

DECL REAL ww
DECL INT aa, bb
ww = ww + 2.3 ; ww = 1.5 + 2.3 =3.8 ->w
bb = bb + 5 ; bb = 5 + 5 = 10
aa = bb + aa ; aa = 10 + 3= 13 -> a
END

9.4 Programmazione di funzioni

Definizione di funzioni con KRL

• Una funzione è un sottoprogramma che rifornisce un determinato valo-


re al programma principale.
• Sono spesso necessari determinati valori di immissione per consentire
il calcolo del valore di ritorno.
• Nell'intestazione della funzione viene definito il tipo di dati che deve
essere riscritto nel programma principale.
• Il valore da trasmettere viene trasferito con l'istruzione RETURN (re-
turn_value).
• Esistono funzioni locali e globali.
• Sintassi di una funzione:

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 145/345


Luca Galeotti, A.C.M.I. SpA
Sottoprogrammi e funzioni Programmazione robot 2

DEFFCT DATATYPE NAME_FUNCTION( )


...
RETURN(return_value)
ENDFCT

Principio di funzioni con KRL

• il nome del programma è al contempo il nome di variabile di un deter-


minato tipo di dati
• richiamo di una funzione globale

DEF MY_PROG( )
DECL REAL result, value
INI
...
result = CALC(value)
...
END

DEFFCT REAL CALC(num:IN)


DECL REAL return_value, num
...
RETURN(return_value)
ENDFCT

L'istruzione RETURN(return_value) deve precedere l'istruzione


ENDFCT.

• richiamo di una funzione locale

DEF MY_PROG( )
DECL REAL result, value
INI
...
result = CALC(value)
...
END
_______________________________________
DEFFCT REAL CALC(num:IN)
DECL REAL return_value, num
...
RETURN(return_value)
ENDFCT

• Utilizzo di parametri IN / OUT per il trasferimento di valori


‒ trasferimento di valori come parametri IN

DEF MY_PROG( )
DECL REAL result, value
INI
value = 2.0
result = CALC(value)
; value = 2.0
; result = 1000.0
END

DEFFCT REAL CALC(num:IN)


DECL REAL return_value, num

146/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Sottoprogrammi e funzioni
num = num + 8.0
return_value = num * 100.0
RETURN(return_value)
ENDFCT

Resta inalterato il valore trasferito value.

‒ trasferimento di valori come parametri OUT

DEF MY_PROG( )
DECL REAL result, value
INI
value = 2.0
result = CALC(value)
; value = 10.0
; result = 1000.0
END

DEFFCT REAL CALC(num:OUT)


DECL REAL return_value, num
num = num + 8.0
return_value = num * 100.0
RETURN(return_value)
ENDFCT

Il valore trasferito value viene riscritto in forma modificata.

Procedimento di programmazione di funzioni

1. Definizione del valore che deve essere fornito dalla funzione (tipo di
dati di ritorno)
2. Definizione dei parametri richiesti nella funzione (tipo di dati di trasferi-
mento)
3. Calcolo del tipo di trasferimento dei parametri (parametri IN o OUT)
4. Determinazione se si richiede una funzione locale o globale
5. Caricamento del programma principale nell'editor
6. Nel programma principale, dichiarazione, inizializzazione ed eventuale
manipolazione di variabili
7. Creazione di richiamo di funzione
8. Chiusura e salvataggio del programma principale
9. Creazione di funzione (globale o locale)
10. Caricamento di funzione nell'editor
11. Completamento della riga DEFFCT con tipo di dati, variabili e IN/OUT
12. Nella funzione, dichiarazione, inizializzazione e manipolazione di varia-
bili
13. Creazione di una riga RETURN(return_value)
14. Chiusura e salvataggio della funzione

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 147/345


Luca Galeotti, A.C.M.I. SpA
Sottoprogrammi e funzioni Programmazione robot 2

9.5 Operazioni con funzioni standard KUKA

Elenco di funzioni standard KUKA

Fig. 9-4: Calcolatrice

Funzioni matematiche:
Descrizione Funzione KRL
Importo ABS(x)
Radice SQRT(x)
Seno SIN(x)
Coseno COS(x)
Tangente TAN(x)
Arcocoseno ACOS(x)
Arcotangente ATAN2(y,x)
Funzioni per variabili di stringa:
Descrizione Funzione KRL
Calcolo della lunghezza di stringa durante la di- StrDeclLen(x)
chiarazione
Lunghezza di una variabile di stringa dopo l'ini- StrLen(x)
zializzazione
Cancellazione del contenuto di una variabile di StrClear(x)
stringa
Estensione di variabile di stringa StrAdd(x,y)
Confronto del contenuto di una variabile di StrComp( x,y,z)
stringa
Copia di variabile di stringa StrCopy(x,y)
Funzioni per emissione messaggi:
Descrizione Funzione KRL
Revoca del messaggio Set_KrlMsg(a,b,c,d)
Revoca del dialogo Set_KrlDLg(a,b,c,d)
Verifica del messaggio Exists_KrlMsg(a)
Verifica del dialogo Exists_KrlDlg(a,b)

148/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Sottoprogrammi e funzioni
Descrizione Funzione KRL
Cancellazione del messaggio Clear_KrlMsg(a)
Estrazione tampone messaggi Get_MsgBuffer(a)

Principio di utilizzo di funzioni standard KUKA

Ogni funzione standard viene richiamata con parametri di trasferimento:

• con valori fissi

result = SQRT(16)

• variabili di tipo di dati semplice

result = SQRT(x)

• variabili costituite da campi

result = StrClear(Name[])

• variabili costituite da tipi dati di enumerazione


• variabili costituite da strutture
• con più variabili differenti

result = Set_KrlMsg(#QUIT, message_parameter, parameter[],


option)

message_parameter, parameter[1...3] e option sono strutture KU-


KA predefinite

Ogni funzione richiede una variabile adatta nella quale è possibile salvare
il risultato della suddetta funzione:

• funzioni matematiche riportano un valore REAL


• funzioni di stringa riportano valori BOOL o INT

; Cancellare uno string


result = StrClear(Name[])

• funzioni di messaggio riportano valori BOOL o INT

; Cancellare un messaggio (BOOL: cancellato?)


result = Clear_KrlMsg(Valore di restituzione)

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 149/345


Luca Galeotti, A.C.M.I. SpA
Sottoprogrammi e funzioni Programmazione robot 2

9.6 Esercizio: Sottoprogrammi con trasferimento di parametri

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Sottoprogrammi con trasferimento di parametri

Compito

150/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Sottoprogrammi e funzioni
9.7 Esercizio: Programmazione di funzioni proprie

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Programmazione di funzioni proprie

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 151/345


Luca Galeotti, A.C.M.I. SpA
Sottoprogrammi e funzioni Programmazione robot 2

152/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione messaggi con KRL


10 Programmazione messaggi con KRL

10.1 Vista d'insieme

Nella presente unità didattica sono esposti i seguenti contenuti:


• Messaggi definiti dall'utente in generale
• Emissione del messaggio di notifica
• Emissione del messaggio di conferma
• Emissione del messaggio di stato
• Emissione del messaggio di dialogo

10.2 Messaggi definiti dall'utente in generale

Caratteristiche della programmazione di messaggi

Fig. 10-1: "Hello World"

• Con KRL il programmatore può programmare messaggi propri.


• Si possono revocare contemporaneamente più messaggi.
• I messaggi revocati restano in una memoria tampone messaggi finché
non vengono nuovamente cancellati.
• I messaggi di notifica non vengono gestiti nella memoria tampone
messaggi. (principio "fire and forget").
• I messaggi possono essere controllati o cancellati facilmente, ma non i
messaggi di notifica.
• In ogni messaggio si possono integrare fino a 3 parametri.

Elementi di un messaggio

Fig. 10-2: Struttura di un messaggio

Pos. Descrizione
1 Messaggio
2 Data e ora
3 Mittente
4 Numero messaggio

Per ogni tipo di messaggio utilizzato si possono configurare ulteriori pa-


rametri per la visualizzazione.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 153/345


Luca Galeotti, A.C.M.I. SpA
Programmazione messaggi con KRL Programmazione robot 2

Fig. 10-3: Emissione di messaggi

Nella finestra del messaggio di KUKA.HMI viene visualizzato un simbolo


per ogni messaggio. I simboli sono associati ai tipi di messaggio e non
possono essere modificati dal programmatore.
Si possono programmare i seguenti tipi di messaggi:
Simbolo Tipo
Messaggio di conferma

Messaggio di stato

Messaggio di notifica

Messaggio di attesa

Messaggio di dialogo (viene visualizzato in una finestra


POP-UP)

Ai diversi tipi di messaggio non è connessa alcuna reazione prestabilita


del sistema robot (ad es. il robot rallenta o si ferma il programma). Le
reazioni desiderate devono essere programmate.

In che modo si possono creare i messaggi?

• Messaggi fissi memorizzati dal sistema di base.


• Funzioni di messaggio semplici, predefinite, programmate.
(>>> 10.2.1 "Programmazione di messaggi semplici" Pagina 155)
• Emissione di messaggi completamente programmabili mediante varia-
bili complesse e strutture.
(>>> 19.1 "Programmazione di messaggi estesi" Pagina 311)

154/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione messaggi con KRL


10.2.1 Programmazione di messaggi semplici

Descrizione

Fig. 10-4: MSGLIB nella struttura del file

Il controllo emette messaggi interni di sistema tramite il modulo fisso


MsgLib. Per semplificare la programmazione dei messaggi, è possibile
accedere a strutture predefinite incluse. L'uso e la funzione sono descritti
nelle sezioni didattiche seguenti.
Percorso di menu: R1 > System > MsgLib

10.2.1.1 Emissione del messaggio di notifica

Descrizione

Fig. 10-5: Simbolo del messaggio di notifica

• Con la funzione globale KUKA MsgNotify() è possibile emettere mes-


saggi di notifica per l'operatore dell'impianto.
• Questa funzione KUKA viene utilizzata dal controllo del sistema anche
per l'emissione di messaggi.
• Il comportamento del messaggio viene influenzato da parametri.

Sintassi

MsgNotify( “Text[80]“ ,“ Absender[26]“, Int-Par, “String-


Par“, MeldungsNr, {Meldungsoptionen})

Testo [80] è limitato a 80 caratteri

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 155/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Mittente [26] è limitato a 26 caratteri


Programmazione messaggi con KRL

Struttura per opzioni di messaggio generali

(>>> "Struttura per opzioni di messaggio generali" Pagina 313)


Clear_P_SAW e CLEAR_P_Reset non hanno alcun effetto sui messag-
gi di notifica

Sintassi

{log_to_db TRUE, vl_stop TRUE, clear_p_reset FALSE,


clear_p_saw TRUE}

Procedimento

Nota con messaggio di testo

Fig. 10-6: Messaggio di notifica

MsgNotify ("Hello World")

Il testo del messaggio è limitato a 80 caratteri. Se si supera tale limite, il


testo del messaggio viene troncato.

Nota con testo del messaggio e mittente

Fig. 10-7: Messaggio di notifica

MsgNotify ("Hello World","College")

Un secondo campo di testo nella lista dei parametri è utilizzato per la vi-
sualizzazione del mittente. La lunghezza massima di questo campo è di
26 caratteri.

Messaggio di notifica con valore intero

Fig. 10-8: Messaggio di notifica

MsgNotify ("Hello World from %1","College",1967)

Se nel primo campo di testo viene utilizzato il metacarattere %1 allora si


può trasmettere un valore intero. Nell'esempio in alto l'anno 1967. Questa
costante può essere sostituita anche da una variabile.

Messaggio di notifica con CHAR-ARRAY

Fig. 10-9: Messaggio di notifica

MsgNotify ("Hello World from %1","College", ,"the year


2525")

156/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

In questo esempio, il metacarattere è sostituito all'emissione da un altro

Programmazione messaggi con KRL


campo di testo. Anche questo può essere sostituito da una variabile
(CHAR-ARRAY).
Mantenere tassativamente libera la posizione del parametro 3 mediante
il metacarattere , , .

Messaggio di notifica con numero messaggio

Fig. 10-10: Messaggio di notifica

MsgNotify ("Hello World from %1","College",1967, ,404)

Se si vuole emettere anche un numero di messaggio, utilizzare la posizio-


ne 5 nella lista dei parametri. I parametri non utilizzati devono essere
mantenuti liberi con , , . Il numero del messaggio può essere selezionato
arbitrariamente ed è adatto per un database di messaggi proprio del clien-
te.

Messaggio di notifica con ulteriori opzioni messaggio

Fig. 10-11: Voce nel registro

MsgNotify ("Hello World from %1","College",1967,404,


{LOG_TO_DB TRUE, VL_STOP TRUE})

Nella sesta posizione della lista dei parametri si possono assegnare ulte-
riori opzioni di messaggio. Nell'esempio, il messaggio viene scritto nel re-
gistro LOG_TO_DB TRUE e viene attivato l'arresto dell'avanzamento.
VL_STOP TRUE.

Messaggio di notifica in generale

MsgNotify( “Testo[80]“ ,“ Mittente[26]“, Int-Par, “String-


Par“, N. messaggio, {Opzioni messaggio})

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 157/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Esercizio: Programmazione di un messaggio di notifica


Programmazione messaggi con KRL

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Programmazione di un messaggio di notifica

Compito

158/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

10.2.1.2 Emissione del messaggio di conferma

Programmazione messaggi con KRL


Descrizione

Fig. 10-12: Messaggio di conferma

Con la funzione KUKA MsgQuit() è possibile emettere messaggi di con-


ferma. L'operatore del robot può ricevere avvertenze sulla situazione, la
cui ricezione deve essere confermata. Di regola con la funzione KUKA
MsgQuit() è possibile emettere sempre un solo messaggio di conferma.
Se sono necessari più messaggi di conferma contemporaneamente, si de-
ve ricorrere ad un'emissione di messaggi programmata specificamente per
il cliente mediante strutture.

Procedimento

I parametri e le opzioni della funzione messaggio MsgQuit() corrispon-


dono a quelle del messaggio di notifica. (>>> 10.2.1.1 "Emissione del
messaggio di notifica" Pagina 155)

Messaggio di conferma

Fig. 10-13: Messaggio di conferma

MsgQuit("parts missing")

Esempio di messaggio di conferma

Fig. 10-14: Messaggio di conferma

MsgQuit("parts missing","College")

Esempio di messaggio di conferma

Fig. 10-15: messaggio di conferma

MsgQuit("parts missing %1","College",7)

Esempio di messaggio di conferma

Fig. 10-16: messaggio di conferma

DECL CHAR text[26]


INI

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 159/345


Luca Galeotti, A.C.M.I. SpA
Programmazione messaggi con KRL Programmazione robot 2

text[]= "on station one"

MsgQuit("parts missing %1","College",,text[])

Esempio di messaggio di conferma

Fig. 10-17: messaggio di conferma

DECL INT value


INI
value=2019

MsgQuit(parts missing: %1", "College", 7,,value)

Esempio di messaggio di conferma

MsgQuit(parts missing: %1", "College", 7,,2019,


{Clear_p_SAW TRUE, Clear_P_reset false})

vedi anche: (>>> 10.2.1.1 "Emissione del messaggio di notifica" Pagi-


na 155)

160/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Esercizio: Programmazione di un messaggio di conferma

Programmazione messaggi con KRL


Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: programmazione di un messaggio di conferma

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 161/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

10.2.1.3 Emissione del messaggio di stato


Programmazione messaggi con KRL

Descrizione

Fig. 10-18: Simbolo del messaggio di stato

Con la funzione KUKA MsgState() è possibile emettere messaggi di stato.


Il messaggio di stato viene designato spesso così perché deriva dal lancio
del KRL con il trasferimento #STATE. Viene utilizzato per supportare l'ope-
ratore dell'impianto nella correzione guidata degli stati errati dell'impianto.
Il messaggio di stato rientra tra i messaggi amministrati di cui se ne pos-
sono revocare contemporaneamente un massimo di 100 nella relativa me-
moria tampone. I messaggi di stato vengono cancellati dalla rispettiva me-
moria tampone con la funzione CLEAR_KRLMSG(). Inoltre le opzioni
Clear_P_SAW e Clear_P_Reset ne permettono il controllo del comporta-
mento.

Procedimento

Revoca di un messaggio di stato

Fig. 10-19: messaggio di stato

DECL INT ticketNr


DECL BOOL deleted

INI

deleted=false

MsgState(ticketNr, "missing air pressure")

deleted=CLEAR_KRLMSG(ticketNr)

Se la cancellazione del messaggio non è stata programmata, il messaggio


rimane nella relativa finestra finché non si deseleziona il programma. Per
la cancellazione è disponibile la funzione CLEAR_KRLMSG() che può es-
sere cancellata tramite un numero di ticket assegnato dal sistema. Il nu-
mero di ticket viene assegnato arbitrariamente dal software di sistema.
CLEAR_KRLMSG() restituisce un valore booleano con cui si conferma o
meno l'avvenuta cancellazione.

Fig. 10-20: Numero di ticket

162/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione messaggi con KRL


Nella funzione di sistema di MsgState il nHandler è il numero del ticket.
Questo viene scritto come parametro :OUT durante il richiamo del sotto-
programma nella variabile ticketNr (nell'esempio).

Attesto del robot

La revoca mediante la funzione MsgState() non arresta automaticamente


il programma robot o il robot stesso. In questo caso il programmatore
stesso deve definire la reazione alla situazione in una specifica routine di
interrogazione. Nell'esempio ampliato seguente, il messaggio viene can-
cellato dopo che l'ingresso 12 è stato impostato su TRUE.

DECL INT ticketNr


DECL BOOL deleted

INI

deleted=false

MsgState(ticketNr, "missing air Pressure")


REPEAT
IF $IN[12] THEN
deleted=CLEAR_KRLMSG(ticketNr)
ENDIF
UNTIL deleted

Una volta cancellato con successo il messaggio di stato, la funzione


CLEAR_KRLMSG definisce la variabile deleted con TRUE. Il loop re-
peat-UNTIL viene terminato.

I parametri e le opzioni del messaggio di stato MsgState() corrispondo-


no a quelle del messaggio di notifica. (>>> 10.2.1.1 "Emissione del
messaggio di notifica" Pagina 155)

Esempio di messaggio di stato

Fig. 10-21: Messaggio di stato

...
MsgState(ticketNr, "missing air pressure","College")
...

Esempio di messaggio di stato

Fig. 10-22: Messaggio di stato

...
MsgState(ticketNr, "missing air pressure on gripper
%1","College",2)
...

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 163/345


Luca Galeotti, A.C.M.I. SpA
Programmazione messaggi con KRL Programmazione robot 2

Esempio di messaggio di stato

Fig. 10-23: Messaggio di stato

...
MsgState(ticketNr, "missing air pressure on
%1","College",,"gripper 4")
...

Esempio di messaggio di stato

Fig. 10-24: Messaggio di stato

...
MsgState(ticketNr, "missing air pressure on
%1","College",,"gripper 4",2019)
...

164/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Esercizio: Programmazione di un messaggio di stato

Programmazione messaggi con KRL


Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Programmazione di un messaggio di stato

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 165/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

10.2.1.4 Emissione del messaggio di dialogo


Programmazione messaggi con KRL

Descrizione

Fig. 10-25: Simbolo del messaggio di dialogo

Con la funzione MsgDialog() è possibile generare interrogazioni autopro-


grammate sullo smartPAD. Queste sono indicate per fornire all'operatore
dell'impianto una selezione per il corso successivo del programma tramite
i pulsanti con dicitura. Una finestra di dialogo arresta il programma in que-
sto punto e attende un'interazione. Si possono programmare 7 pulsanti/
softkey al massimo. La dicitura è limitata a dieci caratteri. La risposta del
pulsante premuto viene memorizzata nella variabile INT answer e può es-
sere valutata nelle fasi successive del programma.

Procedimento

Esempio di messaggio di dialogo

Fig. 10-26: Messaggio di dialogo

DECL INT answer

INI

MsgDialog(answer,"How many cubes to


palletize?",,,"100","10")

SWITCH answer
CASE 6
;Istruzione
CASE 7
;Istruzione
ENDSWITCH

166/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione messaggi con KRL


Esempio di messaggio di dialogo

Fig. 10-27: Messaggio di dialogo

...
MsgDialog(answer,"How many cubes to
palletize?","College",,"100","10")
...

Esempio di messaggio di dialogo

Fig. 10-28: Messaggio di dialogo

...
MsgDialog(answer,"How many %1 size cubes to
palletize?","College","BIG","100","10")
...

Parametri di trasferimento dei pulsanti

Sintassi

MsgDialog(nAnswer:OUT,sText[]:IN,sTextPar[]:IN,
sDialogSK1[]:IN,
sDialogSK2[]:IN,sDialogSK3[]:IN,sDialogSK4[]:IN,
sDialogSK5[]:IN,
sDialogSK6[]:IN,sDialogSK7[]:IN
NoBrakes:IN,nMsgNr:IN,MsgOUT:IN)

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 167/345


Luca Galeotti, A.C.M.I. SpA
Programmazione messaggi con KRL Programmazione robot 2

Pos. Descrizione
1-3 Parametri di trasferimento per la rappresentazione
della finestra di dialogo
4-10 Parametri di trasferimento per i pulsanti
11-13 Parametri per il comportamento del messaggio

Ordine dei pulsanti

A differenza della sezione precedente, la strutturazione della lista dei pa-


rametri è "invertita". La funzione di dialogo manca delle informazioni sul
numero totale di pulsanti contenuti nel richiamo. Per questo motivo la "di-
rezione di lettura" per il programmatore è da destra a sinistra.

Fig. 10-29: Messaggio di dialogo

MsgDialog(answer,"how many cubes to palletize?"


,,,"key7","key6","key5","key4","key3","key2","key
1")

Valutazione del valore di ritorno

A seconda del numero dei pulsanti cambia anche il valore di ritorno. Il va-
lore intero atteso può essere determinato come segue.
8 - Numero dii pulsanti = Pulsanti iniziali

Esempio

Se si utilizzano solo due pulsanti, il valore intero 6 viene utilizzato per il


primo pulsante e il valore 7 per il secondo pulsante.

Fig. 10-30: Messaggio di dialogo

MsgDialog(answer,"How many cubes to palletize?"


,,,"key2 A:7","key1 A:6")

168/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione messaggi con KRL


Esempio

Se si utilizzano tre pulsanti, il valore iniziale numerico è 8-3 = 5.

Fig. 10-31: Messaggio di dialogo

MsgDialog(answer,"How many cubes to palletize?"


,,,"key3 A:7"key2 A:6","key1 A:5")

Esempio

Solo se tutti i pulsanti previsti sono stati completamente programmati, la


numerazione dei pulsanti corrisponde al valore di ritorno.

Fig. 10-32: Messaggio di dialogo

MsgDialog(answer,"how many cubes to palltetize?"


,,,"Key6 A:6","Key5 A:5",Key4 A:4","Key3
A:3","Key2 A:2","Key1 A:1")

Il valore di ripristino previsto si può testare tramite un semplice messag-


gio di notifica.
MSGNotify("the return value is %1",,answer)

Valutazione del valore di ritorno

Procedimento

La funzione del messaggio di dialogo non prevede un'ulteriore valutazione


del valore di ritorno. Tale valore deve essere valutato con una funzione di
controllo adeguata.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 169/345


Luca Galeotti, A.C.M.I. SpA
Programmazione messaggi con KRL Programmazione robot 2

Fig. 10-33: Messaggio di dialogo

DECL INT answer


DECL INT CubesCount

INI
answer = 0
CubesCount = 0

MsgDialog(answer,"How many cubes to


palletize?",,,"1000","100","10")
SWITCH answer
case 5
CubesCount = 10
case 6
CubesCount = 100
case 7
CubesCount = 1000
ENDSWITCH
MSGNotify("Cubes to palletize:%1",,CubesCount)

Fig. 10-34: Valore di ritorno nell'emissione di messaggi

Parametri per il comportamento del messaggio

I parametri e le opzioni della funzione messaggio MsgDialog() corri-


spondono a quelle del messaggio di notifica. (>>> 10.2.1.1 "Emissione
del messaggio di notifica" Pagina 155)

Parametro Breve descrizione


12° Dopo la revoca del dialogo i freni del robot
vengono attivati.
13° Emissione di un numero di messaggio
14° Trasferimento delle opzioni {Vl_Stop True, ...}

170/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Esercizio: Programmazione di un messaggio di dialogo

Programmazione messaggi con KRL


Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Programmazione di un messaggio di dialogo

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 171/345


Luca Galeotti, A.C.M.I. SpA
Programmazione messaggi con KRL Programmazione robot 2

172/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


11 Creazione e modifica di movimenti programmati

11.1 Vista d'insieme

Nella presente unità didattica sono esposti i seguenti contenuti:


• Programmazione di movimenti con KRL
• Programmazione di movimenti relativi con KRL
• Programmazione di blocchi spline mediante KRL
• Calcolo e manipolazione di posizioni robot
• Modifica mirata di Stato e Turn
• Accostamento di posizioni con l'operatore geometrico

11.2 Programmazione di movimenti singoli SPLINE mediante KRL

Definizione di un movimento

Fig. 11-1: Moduli inline frase singola movimento SPTP/SLIN/SCIRC

Dati richiesti per un movimento

• Tipo di movimento SPTP, SLIN, SCIRC


• Posizione di destinazione ed event. posizione ausiliaria
• Arresto preciso o approssimazione
• Velocità - SPTP (%) e movimento lungo la traiettoria (m/s)
• Utensile - TCP e carico
• Sistema di coordinate base
• Utensile guidato da robot o esterno
• Accelerazione e jerk (modifica dell'accelerazione)
• Eventuali parametri di approssimazione
• Gestione dell'orientamento per movimenti lungo la traiettoria
• Angolo circolare per un movimento circolare CIRC
• Gestione di orientamento con punto intermedio e punto di destinazione
di un movimento circolare

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 173/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

11.3 Movimento di frase singola con SPTP

Fig. 11-2: Movimento SPTP

• SPTP - Spline Point To Point è un movimento riferito all'asse.


• il robot guida il TCP lungo il movimento più veloce fino al punto di
destinazione.
• La traiettoria più veloce non corrisponde generalmente alla traiettoria
più corta e quindi non è una retta.
• Poiché gli assi del robot si muovono in senso rotatorio, le traiettorie
curvilinee possono essere eseguite più velocemente rispetto alle traiet-
torie lineari.
SPTP può essere programmato come segmento in un blocco spline PTP
o come movimento singolo.
Si può copiare un movimento singolo SPTP in un blocco spline PTP, ma
solo se non contiene alcuna assegnazione a variabili di sistema che sono
qui vietate.

Sintassi

SPTP punto di destinazione <WITH SysVar1 = valore1 <, SysVar2 = valo-


re2 , …>> <C_SPL>

174/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


Spiegazione della sintassi

Elemento Descrizione
punto di de- Tipo: AXIS, E6AXIS, POS, E6POS, FRAME
stinazione
Le coordinate cartesiane si riferiscono al sistema di coor-
dinate BASE.
Se non sono specificati tutti i componenti del punto di
destinazione, il sistema di controllo applica per i compo-
nenti mancanti i valori della posizione precedente. Quan-
do la posizione precedente è il punto di destinazione di
un cerchio con angolo circolare, vengono acquisiti i valori
del punto di destinazione effettivamente raggiunto, non
quelli del punto di destinazione programmato.
Se al controllo robot non è nota alcuna posizione prece-
dente, i componenti mancanti vengono acquisiti dalla po-
sizione attuale del robot.
SysVar (>>> 19.3.1 "Variabili di sistema per WITH" Pagina 336)
Valore Assegnazione di valore alla variabile di sistema
Nel caso di segmenti SPTP: l'assegnazione vale solo per
questo segmento.
L'assegnazione alle variabili di sistema può avvenire an-
che mediante richiamo di funzione. Per queste funzioni
valgono le stesse restrizioni di quelle per le funzioni nel
trigger.

C_SPL • Con C_SPL: Il punto di destinazione viene approssi-


mato. $APO definisce quando ha inizio al più presto
l'approssimazione.
Possibile solo per movimenti singoli, non per seg-
menti.
• Senza C_SPL: il punto di destinazione viene raggiun-
to con precisione.

Fino al System Software 8.2 l'identificativo per l'approssimazione con


spline era "C_DIS". Se in versioni superiori di 8.x vengono utilizzati pro-
grammi che si basano su 8.2 o versioni precedenti e che contengono
C_DIS, non è necessario modificare quest'ultimo in C_SPL, ma può es-
sere lasciato così.

Esempi

• Il robot accosta una posizione dal file DAT; la posizione è stata dappri-
ma appresa tramite modulo inline e accosta tale punto P3

SPTP XP3 C_SPL

• Il robot accosta una posizione immessa


‒ con riferimento agli assi (AXIS o E6AXIS)

SPTP {A1 0, A2 -80, A3 75, A4 30, A5 30, A6 110}

‒ posizione nello spazio (con utensile attualmente attivo e base)

SPTP {X 100, Y -50, Z 1500, A 0, B 0, C 90, S 3, T 35}


• Il robot si muove solo con immissione di uno o più aggregati

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 175/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

SPTP {A1 30} ; soltanto A1 è spostato a 30°

SPTP {X 200, A 30} ; soltanto in X a 200mm e A a 30°

• Il robot trasla con valori modificati mediante utilizzo di WITH

SPTP XP10 WITH $TOOL=tool_data[2], $LOAD=load_data[2] ; Il


punto P10 viene accostato con TOOL2

11.4 Movimento di singola frase con SLIN e SCIRC

Tipi di movimento SLIN e SCIRC

Fig. 11-3: Movimenti lungo la traiettoria

176/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


Tipo di movimento Significato Esempio di utilizzo
Lineare: lineare Applicazioni di traiettoria, ad
es.:
• Movimento diritto lungo la
traiettoria: • Saldatura in continuo
• Il TCP dell'utensile viene • Incollatura
guidato dalla partenza al • Saldatura / Taglio laser
punto di destinazione con
una velocità costante e
un orientamento definito.
• Velocità e orientamento si
riferiscono al TCP.
Circolare: circolare Applicazioni di traiettoria co-
me con SLIN:
• Il movimento lungo la
traiettoria circolare è defi- • cerchi, raggi, curvature
nito dal punto iniziale, dal
punto intermedio e dal
punto di destinazione.
• Il TCP dell'utensile viene
guidato dalla partenza al
punto di destinazione con
una velocità costante e
un orientamento definito.
• Velocità e orientamento si
riferiscono al TCP dell'u-
tensile (sistema di coordi-
nate tool).
SLIN, SCIRC:
SLIN e SCIRC possono essere programmati come segmento in un blocco
spline CP o come movimento singolo.
Si può copiare un movimento singolo SLIN o SCIRC in un blocco spline
CP, ma solo se non contiene alcuna assegnazione a variabili di sistema
che sono qui vietate.

Sintassi

SLIN:
SLIN punto di destinazione <WITH SysVar1 = valore1 <, SysVar2 = valo-
re2, …, >> <C_SPL>
SCIRC:
SCIRC punto intermedio, punto di destinazione <, CA angolo circolare>
<WITH SysVar1 = valore1 <,SysVar2 = valore2 , … >> <C_SPL>

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 177/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

Spiegazione della sintassi

Elemento Descrizione
Punto inter- Tipo: POS, E6POS, FRAME
medio
Le coordinate si riferiscono al sistema di coordinate BA-
Punto di de- SE.
stinazione
Se non sono specificati tutti i componenti del punto di
destinazione, il sistema di controllo applica per i compo-
nenti mancanti i valori della posizione precedente. Se
questa posizione precedente è il punto di destinazione di
un cerchio con angolo circolare, si opera la seguente di-
stinzione:

• Quando la posizione precedente si trova al di fuori di


un blocco spline, vengono acquisiti i valori del punto
di destinazione effettivamente raggiunto, non quelli
del punto di destinazione programmato.
• Quando la posizione precedente si trova in un blocco
spline, vengono acquisiti i valori del punto di destina-
zione programmato, non quelli del punto di destina-
zione effettivamente raggiunto.
Se al controllo robot non è nota alcuna posizione prece-
dente, i componenti mancanti vengono acquisiti dalla po-
sizione attuale del robot.
Angolo cir- Unità: gradi; senza limitazione
colare
SysVar (>>> 19.3.1 "Variabili di sistema per WITH" Pagina 336)
Valore Assegnazione di valore alla variabile di sistema
Nel caso di segmenti: l'assegnazione vale solo per que-
sto segmento.
L'assegnazione alle variabili di sistema può avvenire an-
che mediante richiamo di funzione. Per queste funzioni
valgono le stesse restrizioni di quelle per le funzioni nel
trigger.

C_SPL • Con C_SPL: Il punto di destinazione viene approssi-


mato. $APO definisce quando ha inizio al più presto
l'approssimazione.
Possibile solo per movimenti singoli, non per seg-
menti.
• Senza C_SPL: il punto di destinazione viene raggiun-
to con precisione.

Fino al System Software 8.2 l'identificativo per l'approssimazione con


spline era "C_DIS". Se in versioni superiori di 8.x vengono utilizzati pro-
grammi che si basano su 8.2 o versioni precedenti e che contengono
C_DIS, non è necessario modificare quest'ultimo in C_SPL, ma può es-
sere lasciato così.

Esempi

SLIN:

• Il robot si porta su una posizione calcolata e accosta tale punto DE-


POSITO[4]

178/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


SLIN ABLAGE[4] C_SPL

• Il robot si porta al punto P4 con questi valori di accelerazione

SLIN P4 WITH $ACC={CP 1.8, ORI1 120, ORI2 140}

SCIRC

• Il robot accosta le posizioni precedentemente apprese dal file DAT e


un angolo circolare di 190°.

SCIRC XP3, XP4, CA 190

• Il robot accosta le posizioni indicate e un angolo circolare di 180°.

SCIRC {X 100, Y ...}, {X 150, Y ...}, CA 180

• Angolo circolare positivo (CA>0): il cerchio viene percorso nel sen-


so programmato: punto iniziale-punto intermedio-punto di destinazione

Fig. 11-4: Angolo circolare CA = +290°

• Angolo circolare negativo (CA<0): il cerchio in senso contrario a


quello programmato: punto iniziale-punto di destinazione-punto inter-
medio

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 179/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

Fig. 11-5: Angolo circolare CA = -290°

11.4.1 Parametro di movimento

Funzione dei parametri di movimento

Preimpostazioni per la programmazione di movimento

• Possono essere applicate impostazioni esistenti:


‒ dall'esecuzione della riga INI
‒ dall'ultimo modulo inline
‒ dalle ultime impostazioni delle variabili di sistema pertinenti
• Modifica o inizializzazione delle variabili di sistema pertinenti
Variabili di sistema dei parametri di movimento

• Utensile: $TOOL e $LOAD


‒ attivazione del TCP misurato

$TOOL = tool_data[x] ; x = 1...16

‒ attivazione dei dati di carico corrispondenti

$LOAD = load_data[x] ; x = 1...16


• Base di riferimento / base di lavoro:: $BASE
‒ attivazione della Base misurata

$BASE = base_data[x] ; x = 1...32


• Utensile guidato da robot o esterno: $IPO_MODE
‒ utensile guidato da robot

$IPO_MODE = #BASE

‒ utensile esterno

$IPO_MODE = #TCP
• Velocità:

180/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


‒ per movimento PTP

$VEL_AXIS[x] ; x=1...12 per ogni asse

‒ per movimenti lungo la traiettoria LIN o CIRC

$VEL.CP = 2.0 ; [m/s] Velocità lungo la traiettoria

$VEL.ORI1 = 150 ; [°/s] Velocità di orientamento

$VEL.ORI2 = 200 ; [°/s] Velocità di rotazione

Nella maggior parte dei casi, la direzione di lavoro dell'utensile è


l'asse X. La velocità di rotazione è appunto la rotazione intorno
a questo asse X con l'angolo C. Per la velocità di orientamento
il movimento ha luogo intorno agli altri due angoli (A e B).
• Accelerazione
‒ per movimento PTP

$ACC_AXIS[x] ; x=1...12 per ogni asse

‒ per movimenti lungo la traiettoria LIN o CIRC

$ACC.CP = 2.0 ; [m/s²] Accelerazione della traiettoria

$ACC.ORI1 = 150 ; [°/s²] Accelerazione dell'orientamento

$ACC.ORI2 = 200 ; [°/s²] Accelerazione della rotazione


• Jerk
‒ con movimento SPTP

$GEAR_JERK[1...12] = 0 ... 100 Jerk riduttore degli assi


A1 fino a E6 in percentuale (1...100)
SPTP XP10 WITH GEAR_JERK[1]=22, GEAR_JERK[2]=66

‒ per movimenti lungo la traiettoria SLIN o SCIRC

$JERK={CP 50.0,ORI 50000.0,AX {A1 1000.0,A2 1000.0,A3


1000.0,A4 1000.0,A5 1000.0,A6 1000.0,E1 1000.0,E2 1000.0,E3
1000.0,E4 1000.0,E5 1000.0,E6 1000.0}}

L'aggregato comprende i componenti seguenti:

‒ CP: modifica dell'accelerazione della traiettoria in [m/s3]


‒ ORI: modifica dell'accelerazione dell'orientamento in [°/s3]
‒ AX: modifica dell'accelerazione degli assi in [°/s3] in caso di
assi rotatori o in [m/s3] in caso di assi lineari

SLIN XP13 WITH $JERK = {CP 44} ; [m/s³] Modifica


dell'accelerazione della traiettoria
• Distanza di approssimazione
‒ per frasi singole SPLINE SLIN, SCIRC e con SPTP: C_SPL
La distanza dal punto di destinazione deve essere inferiore al va-
lore $APO.CDIS

$APO.CDIS = 250.0 ; [mm] Distanza


SPTP XP3 C_SPL
SLIN XP4 C_SPL

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 181/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

‒ solo per movimento PTP: C_PTP

$APO.CPTP = 50 ; Valore di approssimazione in [%] per C_PTP


PTP XP3 C_PTP

‒ per movimenti lungo la traiettoria LIN, CIRC: C_ORI


L'angolo di orientamento dominante deve essere inferiore al valore
$APO.CORI

$APO.CORI = 50.0 ; [°] Angolo


SLIN XP4 C_ORI

‒ per movimenti lungo la traiettoria LIN, CIRC: C_VEL


La velocità nella fase di frenatura sul punto di destinazione deve
essere inferiore al valore $APO.CVEL

$APO.CVEL = 75.0 ; [%] percento


LIN XP4 C_VEL
• Gestione dell'orientamento: solo per LIN e CIRC
‒ per LIN e CIRC: $ORI_TYPE

$ORI_TYPE = #CONSTANT

Durante il movimento lungo la traiettoria l'orientamento resta


costante. Per il punto finale viene ignorato l'orientamento pro-
grammato

Fig. 11-6: Gestione dell'orientamento costante


$ORI_TYPE = #VAR

Durante il movimento lungo la traiettoria, l'orientamento varia


continuamente rispetto all'orientamento del punto di destinazio-
ne.

182/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


Fig. 11-7: Standard oppure PTP polso


$ORI_TYPE = #JOINT

Durante il movimento lungo la traiettoria, l'orientamento dell'u-


tensile varia continuamente dalla posizione iniziale a quella fi-
nale. Questo avviene per via del congiungimento lineare del-
l'angolo dell'asse del polso. I problemi posti da tale particolarità
del polso possono essere evitati grazie a questa opzione. Si
verifica una rotazione nella direzione di lavoro dell'utensile. L'o-
rientamento nella direzione di lavoro dell'utensile non è possibi-
le.
‒ solo per CIRC: $CIRC_TPYE
La variabile $CIRC_TYPE non ha alcun significato, quando ha
luogo con $ORI_TYPE = #JOINT un congiungimento lineare
dell'angolo dell'asse del polso.


$CIRC_TYPE = #PATH

Orientamento relazionato alla traiettoria durante il movimento


circolare

Fig. 11-8: Orientamento costante, relazionato alla traiettoria


$CIRC_TYPE = #BASE

Orientamento relazionato allo spazio durante il movimento cir-


colare

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 183/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

Fig. 11-9: Orientamento costante, relazionato alla base

Configurazione cerchio SCIRC

Per i movimenti SCIRC il controllo robot può considerare l'orientamento


programmato del punto intermedio. Se e in quale misura esso venga con-
siderato può essere stabilito dall'utente:
• Con la programmazione tramite sintassi KRL: mediante la variabile di
sistema $CIRC_MODE
• Con la programmazione mediante moduli inline: nella finestra delle op-
zioni Parametri di movimento, scheda di registro Configurazione
cerchio
Allo stesso modo, inoltre, può essere stabilito per le istruzioni SCIRC con
angolo circolare se il punto di destinazione debba avere l'orientamento
programmato o se l'orientamento debba essere condotto conformemente
all'angolo circolare.
$CIRC_MODE è descrivibile solo mediante un'istruzione SCIRC. Impossi-
bile leggere $CIRC_MODE.
Sintassi KRL

• Per punti intermedi:


$CIRC_MODE.AUX_PT.ORI = ComportamentoPI
• Per punti di destinazione:
$CIRC_MODE.TARGET_PT.ORI = ComportamentoPD

184/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


Elemento Descrizione
Comporta- Tipo di dati: ENUM/menu pulldown
mentoPI
• #INTERPOLATE: nel punto intermedio il TCP ha l'o-
Comporta- rientamento programmato.
mento di
• #IGNORE: il controllo robot ignora l'orientamento pro-
orientamento
grammato del punto intermedio. L'orientamento di
nel punto in-
partenza del TCP viene portato sul percorso più bre-
termedio
ve nell'orientamento di destinazione.
• #CONSIDER (default):
In linea di principio ci sono 2 percorsi di come l'orien-
tamento di partenza possa essere eseguito con una
rotazione nell'orientamento di destinazione: uno più
breve e uno più lungo. Con #CONSIDER il controllo
robot sceglie la strada che si avvicina di più all'orien-
tamento programmato del punto intermedio. Può suc-
cedere che il TCP accetti l'orientamento programmato
del punto intermedio da qualche parte sul percorso.
Non deve però succedere per forza.
Comporta- Tipo di dati: ENUM/menu pulldown
mentoPD
• #INTERPOLATE: sul punto di destinazione effettivo
Comporta- viene ipotizzato l'orientamento programmato del
mento di punto di destinazione.
orientamento
(Unica possibilità per SCIRC senza indicazione del-
nel punto di
l'angolo circolare. Se viene settato #EXTRAPOLATE,
destinazione
viene comunque eseguito #INTERPOLATE).
• #EXTRAPOLATE: l'orientamento viene adattato al-
l'angolo circolare.
Se l'angolo circolare allunga il movimento, nel punto
di destinazione programmato viene ipotizzato l'orien-
tamento programmato. Fino al punto effettivo di desti-
nazione viene conseguentemente proseguito l'orienta-
mento.
Se l'angolo circolare accorcia il movimento, l'orienta-
mento programmato non viene raggiunto.
(Default per SCIRC con indicazione dell'angolo circo-
lare)

Maggiori informazioni sulla configurazione del cerchio SCIRC e sul


comportamento di orientamento SCIRC sono riportate nella documen-
tazione per il cliente e in quella didattica Programmazione robot 1.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 185/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

11.5 Programmazione di movimenti relativi e assoluti con KRL

Movimento assoluto

Fig. 11-10: Movimento assoluto dell'asse A3

Accostamento della posizione di destinazione mediante valori assoluti. Qui


l'asse A3 viene posizionato a 45°.

SPTP {A3 45}

Movimento relativo

Fig. 11-11: Movimento relativo dell'asse A3

SPTP_REL {A3 45}

Accostamento della posizione di destinazione, con proseguimento dalla


posizione attuale del tratto corrispondente al valore specificato. Qui l'asse
A3 viene posizionato di 45° dalla posizione attuale a 135°.
Un'istruzione REL si riferisce sempre alla posizione attiva del robot. Se
si interrompe un movimento REL, il robot percorre per questo motivo,
dalla posizione di interruzione, ancora una volta l'intero movimento REL.

SPTP_REL:
SPTP_REL può essere programmato come segmento in un blocco spline
PTP o come movimento singolo.

186/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Si può copiare un movimento singolo SPTP_REL in un blocco spline PTP,

Creazione e modifica di movimenti programmati


ma solo se non contiene alcuna assegnazione a variabili di sistema che
sono qui vietate.
SLIN_REL, SCIRC_REL:
SLIN_REL e SCIRC_REL possono essere programmati come segmento in
un blocco spline CP o come movimento singolo.
Si può copiare un movimento singolo SLIN_REL o SCIRC_REL in un
blocco spline CP, ma solo se non contiene alcuna assegnazione a
variabili di sistema che sono qui vietate.
I movimenti relativi SPTP_Rel, SLIN_REL e SCIRC_REL sono disponibi-
li solo a partire da Software KSS 8.3.6

Sintassi

SPTP_REL:
SPTP_REL punto di destinazione <WITH SysVar1 = valore1 <, SysVar2 =
valore2 , …>> <C_SPL><#BASE|#TOOL>
Elemento Descrizione
punto di de- Tipo: AXIS, E6AXIS, POS, E6POS, FRAME
stinazione
Il punto di destinazione può essere specificato come pun-
to cartesiano o riferito agli assi. Il sistema di controllo in-
terpreta le coordinate come relative al punto di destina-
zione della frase precedente.
Se non sono specificati tutti i componenti del punto di
destinazione, il sistema di controllo applica ai componenti
mancanti il valore 0. Quindi i valori assoluti di questi
componenti rimangono invariati.
I dati relativi a stato e turn, se presenti, vengono consi-
derati dal sistema di controllo. (Ciò diversamente da
SLIN_REL, SCIRC_REL e SPL_REL, dove sono ignora-
ti!)
Valore Assegnazione di valore alla variabile di sistema
Nel caso di segmenti SPTP: l'assegnazione vale solo per
questo segmento.
L'assegnazione alle variabili di sistema può avvenire an-
che mediante richiamo di funzione. Per queste funzioni
valgono le stesse restrizioni di quelle per le funzioni nel
trigger.
C_SPL • Con C_SPL: Il punto di destinazione viene approssi-
mato. $APO definisce quando ha inizio al più presto
l'approssimazione.
Possibile solo per movimenti singoli, non per seg-
menti.
• Senza C_SPL: il punto di destinazione viene raggiun-
to con precisione.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 187/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

Elemento Descrizione
#BASE, Consentito solo quando il punto di destinazione è stato
#TOOL indicato in modo cartesiano.

• #BASE (default): le coordinate di questo punto di de-


stinazione si riferiscono al sistema di coordinate che
appartiene alla base fisica.
• #TOOL: le coordinate di questo punto di destinazione
si riferiscono al sistema di coordinate che appartiene
all'utensile fisico.
$IPO_MODE non influisce in alcun modo sul significato
di #BASE e #TOOL.
SLIN_REL:
SLIN_REL punto di destinazione <WITH SysVar1 = valore1 <, SysVar2 =
valore2, …, >> <C_SPL><#BASE|#TOOL>
SCIRC_REL:
SCIRC_REL punto intermedio, punto di destinazione <, CA angolo circo-
lare> <WITH SysVar1 = valore1 <,SysVar2 = valore2 , … >>
<C_SPL><#BASE|#TOOL>
Elemento Descrizione
Punto inter- Tipo: POS, E6POS, FRAME
medio
Il punto deve essere specificato in coordinate cartesiane.
punto di de- Il sistema di controllo interpreta le coordinate come relati-
stinazione ve al punto di destinazione del movimento precedente.
Se non sono specificati tutti i componenti del punto, il si-
stema di controllo applica ai componenti mancanti il valo-
re 0. Quindi i valori assoluti di questi componenti riman-
gono invariati.
I dati relativi a stato e turn, se presenti, vengono ignorati
dal sistema di controllo. (Ciò diversamente da
SPTP_REL, dove vengono considerati!)
Nel caso del punto intermedio vengono inoltre ignorati gli
angoli di orientamento.
Il punto intermedio non può essere approssimato. Viene
sempre accostato con precisione.
Angolo cir- Unità: gradi; senza limitazione
colare
Valore Assegnazione di valore alla variabile di sistema
Nel caso di segmenti: l'assegnazione vale solo per que-
sto segmento.
L'assegnazione alle variabili di sistema può avvenire an-
che mediante richiamo di funzione. Per queste funzioni
valgono le stesse restrizioni di quelle per le funzioni nel
trigger.
C_SPL • Con C_SPL: Il punto di destinazione viene approssi-
mato. $APO definisce quando ha inizio al più presto
l'approssimazione.
Possibile solo per movimenti singoli, non per seg-
menti.
• Senza C_SPL: il punto di destinazione viene raggiun-
to con precisione.

188/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


Elemento Descrizione
#BASE, • #BASE (default): le coordinate di questo punto di de-
#TOOL stinazione si riferiscono al sistema di coordinate che
appartiene alla base fisica.
• #TOOL: le coordinate di questo punto di destinazione
si riferiscono al sistema di coordinate che appartiene
all'utensile fisico.
$IPO_MODE non influisce in alcun modo sul significato
di #BASE e #TOOL.

Esempio

• L'asse 2 viene traslato di 30° in direzione negativa. Tutti gli altri assi
non si muovono.

PTP_REL {A2 -30}

• Il robot si muove dalla posizione attuale di 100 mm in direzione X e di


200 mm in direzione Z negativa. Y, A, B, C e S restano costanti. T
viene calcolato in base al percorso più breve.

PTP_REL {X 100,Z -200}

• Il TCP si muove dalla posizione attuale di 100 mm in direzione X e di


200 mm in direzione Z negativa nel sistema di coordinate BASE. Y, A,
B, C e S restano costanti. T risulta da un movimento.

LIN_REL {X 100,Z -200} ; #BASE è impostazione di default

L'indicazione #BASE o #TOOL si riferisce solo all'istruzione LIN_REL


di cui fa parte. Non ha effetto sulle istruzioni successive.
• Il TCP si muove dalla posizione attuale di 100 mm in direzione X ne-
gativa nel sistema di coordinate TOOL. Y, Z, A, B, C e S restano co-
stanti. T risulta da un movimento.
Questo esempio si presta per spostare l'utensile all'indietro lungo la ri-
spettiva direzione di lavoro. Il presupposto è che la direzione di lavoro
dell'utensile sia stata misurata in direzione X.

LIN_REL {X -100} #TOOL

• Il punto di destinazione del movimento circolare viene definito da un


angolo circolare di 500°. Il punto di destinazione viene approssimato.

CIRC_REL {X 100,Y 30,Z -20},{Y 50},CA 500 C_VEL

• Sintassi, esempi

SPTP XHOME
SLIN XP1

SLIN_REL{X 0, Y 500, Z 0, A 0, B 0, C 0} WITH $BASE=


$NULLFRAME #BASE
SLIN_REL{X 400} WITH $TOOL=TOOL_DATA[1], $LOAD=LOAD_DATA[1]
C_SPL #TOOL
SLIN_REL{A 20}
SPTP_REL{A3 90} C_SPL
SPTP_REL{Z 50, B -30} WITH $VEL.AXIS[4]=90 C_SPL #TOOL
SPTP_REL{A1 100}

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 189/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

PTP_REL {A6 360}


A6 non si muove, in quanto il sistema di controllo interpreta la posizione
di destinazione e quella finale come identiche, in quanto ha luogo un
calcolo modulare.
SPTP_REL {A6 360}
A6 si muove di 360° in quanto non viene eseguito alcun calcolo modu-
lare.

11.6 Calcolo o manipolazione di posizioni robot

Descrizione

Posizioni di destinazione robot

• sono archiviate in strutture:


• Sono disponibili le seguenti strutture predefinite:
‒ AXIS
angolo asse A1 ... A6
‒ E6AXIS
angolo asse A1 ... A6 e E1 ... E6
‒ POS
posizione (X, Y, Z), orientamento (A, B, C) con stato e turn (S, T)
‒ E6POS
posizione (X, Y, Z), orientamento (A, B, C) con stato e turn (S, T)
e E1 ... E6
‒ FRAME -
posizione (X, Y, Z), orientamento (A, B, C)
• Le posizioni esistenti possono essere manipolate dal file DAT.
• I singoli aggregati di posizioni esistenti possono essere modificati in
modo mirato mediante separatore punto.

Principio

AVVISO
Durante il calcolo è importante osservare le corrette impostazioni TOOL
e BASE e attivarle infine mentre è in corso la programmazione del mo-
vimento. La mancata osservanza può comportare movimenti imprevisti e
collisioni.

Importanti variabili di sistema

• $POS_ACT: posizione attuale del robot. La variabile (E6POS) descrive


la posizione nominale del TCP riferita al sistema di coordinate BASE.
• $AXIS_ACT: posizione attuale del robot riferita agli assi (valore nomi-
nale). La variabile (E6AXIS) contiene l'angolo o la posizione dell'asse
corrente
Calcolo della posizione di destinazione assoluta

• modifica una sola volta la posizione da file DAT

XP1.x = 450 ; nuovo valore X 450mm


XP1.z = 30.0*distance ; Valore Z nuovo calcolato
SPTP XP1

190/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


• modifica la posizione da file DAT ad ogni ciclo

; Valore X ogni volta spostato di 450mm


XP2.x = XP2.x + 450
SPTP XP2

• La posizione viene applicata e salvata in una variabile

myposition = XP3
myposition.x = myposition.x + 100 ; al valore x viene
sommato 100mm
myposition.z = 10.0*distance ; Calcolare nuovo valore Z
myposition.t = 35 ; Settare valore Turn
SPTP XP3 ; La posizione non è stata cambiata
SPTP myposition ; Posizione calcolata

Procedimento

1. Caricare come Esperto il programma nell'Editor con il tasto Apri


2. Calcolare/manipolare la posizione. Se necessario, salvare tempo-
raneamente i nuovi valori calcolati in una nuova variabile
3. Verificare le preimpostazioni per la programmazione del movimento e
applicarle o reinizializzarle
• utensile ($TOOL e $LOAD)
• impostazioni base ($BASE)
• utensile guidato da robot o esterno ($IPO_MODE)
• Velocità
• Accelerazione
• event. distanza di approssimazione
• event. gestione dell'orientamento
4. Creare istruzione di movimento completa
• tipo di movimento (SPTP, SLIN, SCIRC, SPTP_REL, SLIN_REL,
SCIRC_REL)
• punto di destinazione (per SCIRC anche punto intermedio)
• per SCIRC event. angolo circolare (CA)
• attivare approssimazione (C_SPL, C_DIS)
5. In caso di ulteriore movimento indietro al punto 3
6. Chiudere e salvare l'Editor

11.7 Modifica mirata di bit di Stato e Turn

Descrizione

• Stato e Turn hanno la funzione di stabilire da più posizioni possibili


degli assi per la medesima posizione del TCP una posizione assi uni-
voca.
• Posizioni degli assi differenti a causa di valori Stato e Turn diversi

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 191/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

Posizione del robot Stato Turn

1 46

2 43

6 59

4 63

Valutazione di Stato & Turn

• Il controllo robot tiene conto di valori programmati di Stato e Turn solo


per movimenti SPTP.
• Con i movimenti della traiettoria (CP=SLIN e SCIRC) sono ignorati.
• La prima istruzione di movimento in un programma KRL è SPTP (HO-
ME)
‒ Questa è del tipo POS o E6POS e definisce una posizione di par-
tenza univoca
‒ (Anche istruzioni SPTP complete del tipo AXIS oppure E6AXIS so-
no possibili)

DEFDAT MAINPROGRAM ()
DECL POS XPOINT1={X 900, Y 0, Z 800, A 0, B 0, C 0, S 6,
T 27}
DECL FDAT FPOINT1 …

ENDDDAT

192/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


Ulteriori esempi

Stato (S) e Turn (T) sono parti integranti dei tipi di dati POS e E6POS:

STRUC POS REAL X, Y, Z, A, B, C, INT S, T

STRUC E6POS REAL X, Y, Z, A, B, C, E1, E2, E3, E4, E5, E6,


INT S, T

Funzione

STATUS

• L'indicazione di stato previene ambiguità in merito alla posizione del-


l'asse.
• Bit 0: indica la posizione del punto di intersezione degli assi del polso
(A4, A5, A6).
Posizione Valore
Zona sopratesta Bit 0 = 1
Il robot si trova nella zona sopratesta quando è
negativo il valore X del punto di intersezione degli
assi del polso, riferito al sistema di coordinate A1.
Zona base Bit 0 = 0
Il robot si trova nella zona base quando è positivo
il valore X del punto di intersezione degli assi del
polso, riferito al sistema di coordinate A1.

Fig. 11-12: Stato bit 0

• Bit 1: indica la posizione dell'asse 3. L'angolo al quale varia il valore


di bit 1 dipende dal tipo di robot.
Per robot i cui assi 3 e 4 si intersecano vale:

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 193/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

Posizione Valore
A3 ≥ 0° Bit 1 = 1
A3 < 0° Bit 1 = 0
Per robot con un offset tra asse 3 e 4, l'angolo al quale varia il valore
di bit 1 dipende dalle dimensioni del suddetto offset.

Fig. 11-13: Offset tra A3 e A4

• Bit 2: indica la posizione dell'asse 5.

Fig. 11-14: Bit 2

Posizione (riferimento: A4 = 0°) Valore


A5 è inclinato verso l'alto. Bit 2 = 1
A5 = 0° Bit 2 = 0
A5 è inclinato verso il basso.

Il segno dell'angolo dell'A5 non è determinante! È la direzione del-


l'inclinazione dell'A5, cioè verso l'alto o verso il basso, ad essere de-
terminante. D'altra parte l'indicazione della direzione si riferisce alla
posizione zero dell'A4.

194/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


• Bit 3 non viene utilizzato ed è sempre 0.
• Bit 4: indica se il punto è stato appreso o meno con un robot di pre-
cisione assoluta.
Il punto, indipendentemente dal valore del bit, può essere accostato
sia con robot di precisione assoluta e sia con robot di precisione non
assoluta. Il bit 4 è solo a titolo informativo e non incide sulla modalità
di calcolo del punto da parte del controllo robot. Ciò significa anche
che, quando un robot è programmato offline, è possibile ignorare
bit 4 .
Descrizione Valore
Il punto non è stato appreso con un robot di preci- Bit 4 = 0
sione assoluta.
Il punto è stato appreso con un robot di precisione Bit 4 = 1
assoluta.

TURN

• L'indicazione Turn consente di accostare anche angoli di assi superiori


a +180 ° o inferiori a -180 °, senza strategie particolari di traslazione
(ad es. punti intermedi). I singoli bit determinano per assi rotatori il se-
gno del valore degli assi nel modo seguente:
Bit = 0: angolo ≥ 0 °
Bit = 1: angolo < 0 °
• Tutti gli assi nello schema
Valore Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0 A6 ≥ A5 ≥ A4 ≥ A3 ≥ A2 ≥ A1 ≥
0 ° 0 ° 0 ° 0 ° 0 ° 0 °
1 A6 < A5 < A4 < A3 < A2 < A1 <
0 ° 0 ° 0 ° 0 ° 0 ° 0 °

• Esempio

DECL POS XP1 = {X 900, Y 0, Z 800, A 0, B 0, C 0, S 6, T


19}

T 19 corrisponde a T 'B010011'. Questo significa:


Asse Angolo Binario
A 1 negativo 1
A 2 negativo 2
A 3 positivo 4
A 4 positivo 8
A 5 negativo 16
A 6 positivo 32

Procedimento

1. Aprire il programma come Esperto.


2. Manipolare Stato e Turn. Salvare eventualmente temporaneamente i
nuovi valori calcolati in una nuova variabile
3. Verificare le preimpostazioni per la programmazione del movimento e
applicarle o reinizializzarle
• utensile ($TOOL e $LOAD)

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 195/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

• impostazioni base ($BASE)


• utensile guidato da robot o esterno ($IPO_MODE)
• Velocità
• Accelerazione
• event. distanza di approssimazione
• event. gestione dell'orientamento
4. Creare completamente il comando di movimento come frase singola
• tipo di movimento (SPTP, SLIN, SCIRC)
• punto di destinazione (per SCIRC anche punto intermedio)
• per CIRC event. angolo circolare (CA)
• attivare approssimazione (C_SPL, C_DIS)
5. In caso di ulteriore movimento indietro al punto 3
6. Chiudere e salvare l'Editor

196/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


11.8 Esercizio: Palettizzazione e depalettizzazione

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Palettizzazione e depalettizzazione

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 197/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

11.9 Operatore geometrico

Descrizione

L'operatore geometrico viene utilizzato per aggiungere posizioni geometri-


che. Questa aggiunta è chiamata anche "collegamento frame".
Mediante un operatore geometrico è possibile aggiungere la posizione di
prelievo dei pezzi alla posizione appresa o calcolata.
Un altro caso di applicazione è la strategia di ritiro mirata del robot in ca-
so di malfunzionamenti.

Fig. 11-15: Operatore geometrico

Nello scenario illustrato sopra, la posizione del cubo arancione (A) è stata
appresa in funzione del sistema di coordinate base (CS). Il sistema di
coordinate base (CS) si riferisce a sua volta al sistema di coordinate
$WORLD. La posizione appresa (A) è stata aggiunta con l'operatore geo-
metrico dell'offset (frame link), in modo che il robot possa afferrare il cubo
verde (B) nella posizione modificata.

Procedimento

R=A:B

Per lo spostamento del FRAME si deve rispettare una sequenza definita.


Prima avviene la traslazione, cioè lo spostamento in direzione X, Y e Z.
Quindi segue la rotazione che viene eseguita agli angoli A, B e C. Per la
rotazione è tassativo rispettare la sequenza (prima A, poi B, poi C). Altri-
menti ne derivano posizioni errate. Il risultato di un'addizione geometrica
differisce quindi a seconda dell'ordine degli operandi. La rappresentazione
grafica nell'esempio seguente mostra quanto detto.

198/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


Fig. 11-16: R = A : B

Si lavora con le variabili A e B del tipo FRAME.


CS = sistema di coordinate di origine (vedi sistema di coordinate world o
attuale sistema di coordinate base)
Fase 1 Spostamento A = {x 1, y 1, z 0, a 0, b
0, c 0}
Fase 2 Spostamento B = {x 3, y 2, z 0, a -45,
b 0, c 0}
Risultato Spostamento A:B = {x 4, y 3, z 0, a -45,
b 0, c 0}

R=B:A

Uno scambio dell'ordine nel collegamento frame porta ad un risultato di-


verso.

Fig. 11-17: R = B : A

Fase 1 Spostamento B = {x 3, y 2, z 0, a -45,


b 0, c 0}
Fase 2 Spostamento A = {x 1, y 1, z 0, a 0, b
0, c 0}
Risultato Spostamento B:A = {x 4.414, y 2, z 0, a
-45, b 0, c 0}

Esempio di sintassi 1

SLIN $POS_ACT : {x -100, y 0, z 0, a 0, b 0, c0}

Con questa istruzione, il robot ritrae l'utensile a 100mm dalla posizione


corrente ($POS_ACT) nella direzione opposta a quella di lavoro.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 199/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

La direzione di lavoro dell'utensile deve essere misurata correttamente e


fissata in X.

Modello esplicativo

Operando sinistro : Operando destro


$POS_ACT : {x -100, y 0, z 0, a 0, b 0, c 0}
Vai a questa posizione...
...con riferimento all'attuale si-
stema di coordinate di questa
posizione

Il sistema di coordinate della posizione $POS_ACT dipende dall'impo-


stazione attualmente attiva di TOOL e BASE.

Collegamento di 2 operandi

L'operatore geometrico può collegare i tipi di dati FRAME e POS/E6POS.


Alle variabili X, Y, Z, A, B e C si deve sempre assegnare un valore. Le
variabili S e T non sono influenzate dal collegamento e quindi non occorre
assegnare lodo un valore.
Il risultato è sempre del tipo di dati dell'operando più a destra di tutti.
A sinistra : A destra Risultato
POS : POS POS Stato e Turn vengo-
no rilevati dall'ope-
rando destro
FRAME : FRAME FRAME
POS : FRAME FRAME
FRAME : POS POS
E6POS : E6POS E6POS Stato, Turn e
E1...E6 vengono ri-
levati dall'operando
destro

Esempio di sintassi 2

DECL FRAME F = {X 1, Y 1, Z 1, A 0, B 0, C0}


DECL E6POS E = {X 2, Y 2, Z2, A 0, B 0, C 0, S 10, T 20,
E1 30, E2 40, E3 0, E4 0, E5 0, E6 0}
DECL POS result

result = F : E
;result = {X 3, Y 3, Z 3, A 0, B 0, C 0, S 10, T 20}

Se il risultato viene assegnato ad un altro tipo di dati, può verificarsi


una perdita di dati volontaria o involontaria.

Esempio di sintassi 3

; --> Il robot accosta il punto xP1:


SPTP xP1
; --> Il robot accosta una posizione a 200mm rispetto alla
base sopra xP1:
SPTP {X 0, Y 0, Z 200, A 0, B 0, C 0} : xP1
; --> Il robot arretra rispetto alla posizione xP1 di
100mm in direzione contraria a quella di lavoro:

200/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Creazione e modifica di movimenti programmati


SPTP xP1 : {X -100, Y 0, Z 0, A 0, B 0, C 0}

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 201/345


Luca Galeotti, A.C.M.I. SpA
Creazione e modifica di movimenti programmati Programmazione robot 2

11.9.1 Esercizio: Operatore geometrico

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Operatore geometrico

Compito

202/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione di movimenti spline


12 Programmazione di movimenti spline

12.1 Cos'è uno SPLINE?

Descrizione

Interpolazione SPLINE

Fig. 12-1: Interpolazione SPLINE

Gli spline non cercano di interpolare una funzione attraverso tutti i punti di
appoggio, ma solo a livello locale tramite due punti di appoggio. Questi
spline hanno un effetto di lisciatura e presentano una ondulazione molto
ridotta. In questo modo si possono raffigurare i profili in maniera più fede-
le alla realtà. Con maggiore frequenza si utilizzano spline lineari o cubici,
che vengono interpolati attraverso una funzione lineare o un polinomio di
3° o 4° grado (KUKA). Nei punti di appoggio lo spline deve essere dop-
piamente differenziabile con continuità. Incremento e curvatura di elementi
spline adiacenti devono coincidere.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 203/345


Luca Galeotti, A.C.M.I. SpA
Programmazione di movimenti spline Programmazione robot 2

Traiettoria spline

Fig. 12-2: Traiettoria curvilinea, blocco SPLINE

La traiettoria viene definita mediante nodi disposti sulla traiettoria. Il robot


calcola la traiettoria in base ai nodi. La velocità programmata viene man-
tenuta meglio che non nei tipi di movimento normali. Solo in alcuni casi si
ha una riduzione della velocità. Nei blocchi spline è inoltre possibile defini-
re aree speciali di traslazione costante, arresto condizionato. La traiettoria
rimane sempre uguale, indipendentemente da override, velocità o accele-
razione. Le circonferenze e i raggi stretti sono percorsi con grande preci-
sione.

204/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione di movimenti spline


12.2 Programmazione dei blocchi SPLINE in KRL

Blocco SPLINE CP con moduli inline

Fig. 12-3: Blocco SPLINE

Il blocco SPLINE qui raffigurato mostra la programmazione tramite mo-


duli inline. Una descrizione dettagliata si trova nella documentazione di-
dattica "Programmazione robot 1".

Blocco SPLINE CP KRL

SPLINE … ENDSPLINE definisce un blocco spline CP. Un blocco spline


CP può contenere:
• Segmenti SLIN, SCIRC e SPL (numero limitato solo dalla capacità di
memoria)
• PATH-trigger
• 1 blocco temporale (TIME_BLOCK …)
o 1 area di traslazione costante (CONST_VEL …)
• STOP WHEN PATH
• Commenti
• Righe vuote
Il blocco non deve contenere altre istruzioni, ad es. assegnazioni di varia-
bili o istruzioni logiche.
Sintassi
SPLINE < WITH SysVar1 = valore1 <, SysVar2 = valore2, … > >
Segment1

<SegmentN>
ENDSPLINE <C_SPL>

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 205/345


Luca Galeotti, A.C.M.I. SpA
Programmazione di movimenti spline Programmazione robot 2

Elemento Descrizione
SysVar
Valore Assegnazione di valore alla variabile di sistema. Il valore
non vale per segmenti ai quali viene assegnato un valore
proprio. A prescindere da questo caso, il valore vale co-
me di consueto fintanto che alla variabile di sistema vie-
ne assegnato un nuovo valore.
L'assegnazione alle variabili di sistema può avvenire an-
che mediante richiamo di funzione. Per queste funzioni
valgono le stesse restrizioni di quelle per le funzioni nel
trigger.
C_SPL • Con C_SPL: Il punto di destinazione viene approssi-
mato. $APO definisce quando ha inizio al più presto
l'approssimazione.
• Senza C_SPL: il punto di destinazione viene raggiun-
to con precisione.

Fino al System Software 8.2 l'identificativo per l'approssimazione con


spline era "C_DIS". Se in versioni superiori di 8.x vengono utilizzati pro-
grammi che si basano su 8.2 o versioni precedenti e che contengono
C_DIS, non è necessario modificare quest'ultimo in C_SPL, ma può es-
sere lasciato così.

SPLINE
SPL P1
TRIGGER WHEN PATH=GET_PATH() ONSTART DELAY=0 DO SUBPROG()
PRIO=-1
SPL P2
SLIN P3
SPL P4
SCIRC P5, P6 WITH $VEL.CP=0.2
SPL P7 WITH $ACC={CP 2.0, ORI1 200, ORI2 200}
SCIRC P8, P9
SPL P10
ENDSPLINE

Blocco SPLINE PTP KRL

PTP_SPLINE … ENDSPLINE definisce un blocco spline PTP. Un blocco


spline PTP può contenere:
• Segmenti SPTP (numero limitato solo dalla capacità di memoria)
• PATH-trigger
• 1 blocco temporale (TIME_BLOCK …)
• STOP WHEN PATH
• Commenti
• Righe vuote
Il blocco non deve contenere altre istruzioni, ad es. assegnazioni di varia-
bili o istruzioni logiche.
Sintassi
PTP_SPLINE < WITH SysVar1 = Valore1 <, SysVar2 = Valore2, … > >
Segment1

<SegmentN>
ENDSPLINE <C_SPL>

206/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione di movimenti spline


Elemento Descrizione
SysVar
Valore Assegnazione di valore alla variabile di sistema. Il valore
non vale per segmenti ai quali viene assegnato un valore
proprio. A prescindere da questo caso, il valore vale co-
me di consueto fintanto che alla variabile di sistema vie-
ne assegnato un nuovo valore.
L'assegnazione alle variabili di sistema può avvenire an-
che mediante richiamo di funzione. Per queste funzioni
valgono le stesse restrizioni di quelle per le funzioni nel
trigger.
C_SPL • Con C_SPL: Il punto di destinazione viene approssi-
mato. $APO definisce quando ha inizio al più presto
l'approssimazione.
• Senza C_SPL: il punto di destinazione viene raggiun-
to con precisione.

PTP_SPLINE WITH $ACC_AXIS[1]={CP 20, ORI1 80, ORI2 80}


SPTP P1
TRIGGER WHEN PATH=GET_PATH() ONSTART DELAY=0 DO
SUPBROG( ) PRIO=85
SPTP P2
SPTP P3
SPTP P4 WITH $ACC_AXIS[1]={CP 10}
ENDSPLINE C_SPL

Programmazione KRL di SPL, SLIN, SCIRC e SPTP

• SPL può essere impiegato solo in blocchi SPLINE CP.


• SLIN e SCIRC possono essere utilizzati come frase singola o in un
blocco SPLINE CP.
• SPTP può essere utilizzato come frase singola o in un blocco SPLINE
PTP.
• La programmazione è quasi uguale; solo SCIRC può essere aggiunti-
vamente dotato di un angolo circolare.
• Le parole chiave sono SPL, SLIN, SCIRC e SPTP.
• Si possono impiegare anche i movimenti relativi noti SLIN_REL,
SCIRC_REL e SPTP_REL.

Sintassi

• SPL:
SPL punto di destinazione < WITH SysVar1 = valore1 <,SysVar2 = va-
lore2 , …>>
• SLIN:
SLIN punto di destinazione <WITH SysVar1 = valore1 <, SysVar2 =
valore2, …, >> <C_SPL>
• SCIRC:
SCIRC punto intermedio, punto di destinazione <, CA angolo circola-
re> <WITH SysVar1 = valore1 <,SysVar2 = valore2 , … >> <C_SPL>
• SPTP:
SPTP punto di destinazione <WITH SysVar1 = valore1 <, SysVar2 =
valore2 , …>> <C_SPL>

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 207/345


Luca Galeotti, A.C.M.I. SpA
Programmazione di movimenti spline Programmazione robot 2

Elemento Descrizione
Punto inter- Tipo: POS, E6POS, FRAME
medio
Le coordinate si riferiscono al sistema di coordinate BA-
punto di de- SE.
stinazione
Se non sono specificati tutti i componenti del punto di
destinazione, il sistema di controllo applica per i compo-
nenti mancanti i valori della posizione precedente. Se
questa posizione precedente è il punto di destinazione di
un cerchio con angolo circolare, si opera la seguente di-
stinzione:

• Quando la posizione precedente si trova al di fuori di


un blocco spline, vengono acquisiti i valori del punto
di destinazione effettivamente raggiunto, non quelli
del punto di destinazione programmato.
• Quando la posizione precedente si trova in un blocco
spline, vengono acquisiti i valori del punto di destina-
zione programmato, non quelli del punto di destina-
zione effettivamente raggiunto.
Se al controllo robot non è nota alcuna posizione prece-
dente, i componenti mancanti vengono acquisiti dalla po-
sizione attuale del robot.
Angolo cir- Unità: gradi; senza limitazione
colare
SysVar (>>> 19.3.1 "Variabili di sistema per WITH" Pagina 336)
Valore Assegnazione di valore alla variabile di sistema
Nel caso di segmenti: l'assegnazione vale solo per que-
sto segmento.
L'assegnazione alle variabili di sistema può avvenire an-
che mediante richiamo di funzione. Per queste funzioni
valgono le stesse restrizioni di quelle per le funzioni nel
trigger.

C_SPL • Con C_SPL: Il punto di destinazione viene approssi-


mato. $APO definisce quando ha inizio al più presto
l'approssimazione.
Possibile solo per movimenti singoli, non per seg-
menti.
• Senza C_SPL: il punto di destinazione viene raggiun-
to con precisione.

208/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Operazioni con variabili di sistema


13 Operazioni con variabili di sistema

13.1 In generale

Nella presente unità didattica sono esposti i seguenti contenuti:


• Misurazione del tempo mediante timer

13.2 Misurazione tempo di ciclo con timer

Descrizione

Fig. 13-1

Le variabili di sistema $TIMER[Nr] servono per la misurazione di cicli tem-


porali.
• $TIMER[1]
• $TIMER[2]
• ...
• $TIMER[32]

L'immissione/indicazione di valori del timer $TIMER[Nr] ha luogo in milli-


secondi (ms).

Avvio e arresto di un timer con KRL

;avvio
$TIMER_STOP[Nr] = FALSE

;arresto
$TIMER_STOP[Nr] = TRUE

L'assegnazione di valori, l'avvio e l'arresto di un timer possono aver luo-


go anche manualmente tramite display.

Principio della misurazione tempo ciclo

Preassegnazione di un timer

• il valore preassegnato di un timer al momento della consegna è 0 ms


• il timer riceve il rispettivo valore attuale
• un timer può essere preimpostato su un valore qualsiasi o anche az-
zerato

; Timer 5 preimpostato con 0ms


$TIMER[5] = 0

; Timer 12 è impostato a 1,5 secondi


$TIMER[12] = 1500

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 209/345


Luca Galeotti, A.C.M.I. SpA
Operazioni con variabili di sistema Programmazione robot 2

; Timer 4 è resettato a -8 secondi


$TIMER[4] = -8000

• azzeramento e avvio di un timer

; Timer 7 Reset a 0ms


$TIMER[7] = 0
; Start Timer 7
$TIMER_STOP[7] = FALSE

• arresto di un timer e confronto finale

; Timer 7 funziona
...
; Stop Timer 7
$TIMER_STOP[7] = TRUE

; con 10 secondi o maggiore avviene ...


IF $TIMER[7] >= 10000 THEN
...

L'avvio e l'arresto di un timer hanno luogo sempre mediante l'avanza-


mento puntatore. L'istruzione WAIT SEC 0 è adatta per generare un
arresto dell'avanzamento.

Procedimento di misurazione tempo ciclo

1. Selezione di un timer "libero" dai 32 possibili temporizzatori


2. Preassegnazione / reset del timer
3. Avvio del timer in considerazione dell'avanzamento puntatore
4. Arresto del timer in considerazione dell'avanzamento puntatore
5. Eventuale salvataggio temporaneo del tempo di ciclo corrente o preas-
segnazione del timer

DEF MY_TIME( )
...
INI
$TIMER[1] = 0 ; Resettare TIMER 1
PTP HOME Vel=100% DEFAULT

WAIT SEC 0 ; Attivare arresto del processo avanzato


$TIMER_STOP[1]=FALSE ; Avviare misura tempo di ciclo

SPTP XP1
SPTP XP2
SLIN XP3
...
SPTP X50
SPTP XHOME

WAIT SEC 0 ; Attivare arresto del processo avanzato


$TIMER_STOP[1]=TRUE ; Arrestare misura tempo di ciclo

; Memorizzazione intermedia del tempo di ciclo attuale nel


Timer 12
$TIMER[12] = $TIMER[1]; ora il valore può essere letto
nella visualizzazione del timer
END

210/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Operazioni con variabili di sistema


TIMER_FLAG[n]

Fig. 13-2: Timer_Flag[n]

Ad ogni timer è assegnato un flag fisso. $TIMER[1] è collegato a $TI-


MER_FLAG[1] e così via. Se il timer è stato preimpostato con un valore
negativo in millisecondi ed avviato, allora nell'esempio $TIMER_FLAG[1] è
FALSE finché non si raggiunge 0 ms e non s'incrementa positivamente.
$TIMER_FLAG[1] è ora TRUE e viene visualizzato con un segno di spun-
ta rosso.
Percorso di menu: Tasto robot > Vista > Variabile > Timer

;**** Timer vorbelegen ****


$TIMER[1]= -20000

;**** Timer starten ****


$TIMER_STOP[1] = FALSE

$TIMER_FLAG può idealmente essere utilizzato in un submit o in un in-


terrupt per poter reagire parallelamente all'esecuzione del programma.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 211/345


Luca Galeotti, A.C.M.I. SpA
Operazioni con variabili di sistema Programmazione robot 2

13.3 Esercizio: Misurazione tempo ciclo e ottimizzazione

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Misurazione tempo ciclo e ottimizzazione

Compito

212/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione degli interrupt


14 Programmazione degli interrupt

14.1 In generale

Nella presente unità didattica sono esposti i seguenti contenuti:


• Programmazione di routine di interrupt
• Frenatura del robot e interruzione del movimento di corsa

14.2 Programmazione di routine di interrupt

Descrizione di routine di interrupt

Fig. 14-1: Intervento con routine di interrupt

• Con un evento definito, ad es. un input, il controllo interrompe il pro-


gramma in corso ed esegue un sottoprogramma definito.
• Un sottoprogramma richiamato da un interrupt è detto programma in-
terrupt.
• Si possono dichiarare max. 32 interrupt contemporaneamente.
• Possono essere attivi contemporaneamente max. 16 interrupt.
Fasi importanti per l'uso dell'interrupt

• Dichiarazione di interrupt
• Inserimento / disinserimento o blocco / consenso interrupt
• Eventuale arresto robot
• Eventuale rifiuto della pianificazione della traiettoria attuale e percorso
di una nuova traiettoria

Dichiarazione di interrupt in generale

• Con un evento definito, ad es. un input, il controllo interrompe il pro-


gramma in corso ed esegue un sottoprogramma definito.

Sintassi

<GLOBAL> INTERRUPT <WITH BRAKE <F|FF>> DECL Prio WHEN


Evento DO Sottoprogramma
• Globale
‒ Un interrupt viene riconosciuto soltanto a partire dal livello di pro-
gramma, in cui è stato dichiarato.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 213/345


Luca Galeotti, A.C.M.I. SpA
Programmazione degli interrupt Programmazione robot 2

Fig. 14-2: Validità interrupt

‒ Un interrupt dichiarato in un sottoprogramma non è riconosciuto


nel programma principale (qui interrupt 23)
‒ Un interrupt con la parola chiave GLOBALE anteposto nella dichia-
razione, è riconosciuto anche in un livello superiore (qui interrupt
2).
• WITH BRAKE <F|FF>
L'istruzione BRAKE viene eseguita contemporaneamente all'attivazione
dell'interrupt e poi viene elaborata la routine di interrupt.
Questo parametro è disponibile soltanto a partire dalla versione KSS
8.3. Nelle versioni precedenti del software, la condizione di interru-
zione deve essere programmata nell'effettiva routine di interruzione.

• Prio: Priorità
‒ Sono a disposizione le priorità 1, 2, 4 - 39 e 81 - 128.
‒ Le priorità 3 e 40 - 80 sono riservate all'utilizzo da parte del siste-
ma.
‒ L'interrupt 19 può essere riservato al test freni.
‒ Se si verificano più interrupt contemporaneamente, viene elaborato
prima l'interrupt avente la massima priorità e poi gli interrupt di
priorità inferiore. (1 = massima priorità)

214/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione degli interrupt


Fig. 14-3: Priorità di interrupt
• Evento: Evento al verificarsi del quale deve intervenire l'interrupt.
La manifestazione di questo evento viene riconosciuta da un fronte
(triggerato al fronte di salita).

• Programma interrupt
‒ Nome del programma interrupt che deve essere elaborato.
‒ Questo sottoprogramma viene denominato programma interrupt.
‒ Le variabile del tempo di esecuzione non possono essere trasmes-
se al programma interrupt come parametri
‒ Sono ammesse le variabili dichiarate in un elenco dati oppure me-
diante trasferimento di variabili.

Esempio: Dichiarazione di un interrupt

INTERRUPT DECL 23 WHEN $IN[12]==TRUE DO


INTERRUPT_PROG(20,VALUE)

• Interrupt locale
• Priorità: 23
• Evento: l'ingresso 12 viene rilevato come fronte positivo (crescente).
• Programma interrupt: INTERRUPT_PROG(20,VALUE)

Dopo la dichiarazione un interrupt è disattivato, almeno in un primo mo-


mento. L'interrupt deve essere attivato, prima di poter reagire all'evento
definito!

Descrizione

Inserimento/disinserimento/blocco/consenso di interrupt

Con l'istruzione INTERRUPT ...

Dopo una dichiarazione di interrupt, questo deve successivamente essere


attivato

• Si attiva un interrupt.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 215/345


Luca Galeotti, A.C.M.I. SpA
Programmazione degli interrupt Programmazione robot 2

• Si disattiva un interrupt.
• Si blocca un interrupt.
• Si consente un interrupt.

Sintassi

INTERRUPT Azione <Numero>


Azione

• ON: si attiva un interrupt.


• OFF: si disattiva un interrupt.
• DISABLE: Si blocca un interrupt attivo.
• ENABLE: Consente un interrupt bloccato.
Numero

• Numero (=priorità) dell'interrupt, a cui deve riferirsi l'azione.


• Si può tralasciare il numero.
In questo caso ON od OFF si riferiscono a tutti gli interrupt dichiarati,
DISABLE o ENABLE a tutti gli interrupt attivi.

Attivazione e disattivazione interrupt

Esempio
Attivazione e disattivazione di un interrupt

INTERRUPT DECL 20 WHEN $IN[22]==TRUE DO SAVE_POS( )


...
INTERRUPT ON 20
;L'interrupt viene rilevato ed eseguito (fronte positivo)
...
INTERRUPT OFF 20 ; Interrupt disinserito

• In questo caso l'interrupt viene attivato dal cambio di stato, ad es. con
$IN[22]==TRUE dal cambio da FALSE a TRUE. Lo stato quindi non
deve già essere in INTERRUPT ON, altrimenti l'interrupt non viene at-
tivato!
• Inoltre in questo caso occorre considerare: Il cambio di stato può ese-
guire al più presto un ciclo d'interpolazione dopo INTERRUPT ON.
‒ (Lo si può raggiungere programmando un WAIT SEC 0.012 dopo
INTERRUPT ON. Se non si desidera un arresto dell'avanzamento,
si può anche programmare un CONTINUE prima del WAIT SEC.)
‒ Il motivo è che INTERRUPT ON necessita di un ciclo d'interpola-
zione (= 12 ms), prima che l'interrupt sia attivo a tutti gli effetti. Se
lo stato cambia in anticipo, l'interrupt può non riconoscere il cam-
bio.

Imbroglio dei tasti


Se sussiste il pericolo che un interrupt venga avviato erroneamente due
volte a causa di sensori sensibili (“Imbroglio dei tasti”), ciò può essere
evitato disattivando l'interrupt nella prima riga del programma interrupt.
Comunque in questo caso anche un interrupt effettivamente presente
non può più essere riconosciuto durante l'elaborazione dell'interrupt. Pri-
ma del ritorno l'interrupt deve essere riattivato, se deve rimanere attivo.

Blocco e consenso interrupt

Esempio

216/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione degli interrupt


INTERRUPT DECL 21 WHEN $IN[25]==TRUE DO INTERRUPT_PROG( )
...
INTERRUPT ON 21
;L'interrupt viene rilevato ed eseguito immediatamente
(fronte positivo)
...
INTERRUPT DISABLE 21
;L'interrupt viene rilevato e memorizzato, ma non eseguito
(fronte positivo)
...
INTERRUPT ENABLE 21
; Solo ora si eseguono gli interrupt memorizzati
...
INTERRUPT OFF 21 ; Interrupt disinserito
...

Un interrupt bloccato viene rilevato e memorizzato. L'esecuzione avvie-


ne direttamente dopo il consenso dell'interrupt. Qui occorre verificare
l'assenza di rischi di collisione nei movimenti.

Procedimento

1. Dichiarazione di interrupt
• Fissare priorità
• Determinare evento scatenante
• Definire e creare routine di interrupt

DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )

END
_________________________________________________
DEF ERROR()

END

2. attivare e disattivare interrupt

DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
...
...
INTERRUPT OFF 25

END
_________________________________________________
DEF ERROR()

END

3. Ampliare il programma con movimenti e stabilire azioni nella routine di


interrupt

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 217/345


Luca Galeotti, A.C.M.I. SpA
Programmazione degli interrupt Programmazione robot 2

DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
SPTP XHOME
SPTP XP1
SPTP XP2
SPTP XHOME
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
$OUT[20]=FALSE
$OUT[21]=TRUE
END

Se i movimenti devono essere programmati nella routine di interrupt si


deve ricorrere alla precedente pianificazione della traiettoria. PTP, LIN e
CIRC

Variabili di sistema utili con arresto preciso

Fig. 14-4: Variabili di sistema con arresto preciso

Variabili di sistema utili nell'approssimazione

Fig. 14-5: Variabili di sistema nell'approssimazione

14.3 Frenatura del robot e interruzione del movimento di corsa

Descrizione

• Frenare il robot, quindi proseguire il "vecchio" movimento. (>>> "Fre-


natura del movimento del robot e prosecuzione del "vecchio" movi-
mento" Pagina 219)

218/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione degli interrupt


• Frenare il robot, interrompere il "vecchio" movimento e proseguire con
il nuovo movimento. (>>> "Frenatura del movimento del robot e inter-
ruzione del "vecchio" movimento" Pagina 220)

Frenatura del movimento del robot e prosecuzione del "vecchio" movimento

• Il robot viene fermato con BRAKE e riprende ad avanzare alla fine del-
la routine di interrupt con la traiettoria pianificata del programma prin-
cipale.
• Il robot viene fermato con BRAKE e fatto procedere nella routine di in-
terrupt. Al termine della routine di interrupt si riprende la traiettoria del
programma principale.

ATTENZIONE
In questo caso verificare l'assenza di rischio di collisione!
In caso di mancata osservanza, sussiste il pericolo di morte, lesioni gra-
vi o ingenti danni materiali.

• Per l'arresto sono disponibili due rampe di frenata (STOP 1 e STOP


2).
• Il programma interrupt prosegue solo se il robot è in arresto.
• Appena il programma interrupt è terminato, si prosegue il movimento
del robot già iniziato.
• Sintassi:
‒ BRAKE: STOP 2
‒ BRAKE F: STOP 1

BRAKE si può utilizzare solo in un programma interrupt.

Procedimento

1. Dichiarazione di interrupt
• Fissare priorità
• Determinare evento scatenante
• Definire e creare routine di interrupt
• Attivare e disattivare interrupt

DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
...
...
INTERRUPT OFF 25

END
_________________________________________________
DEF ERROR()

END

2. Ampliare il programma con movimenti, rallentare il robot nella routine


di interrupt e determinare la logica

DEF MY_PROG( )

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 219/345


Luca Galeotti, A.C.M.I. SpA
Programmazione degli interrupt Programmazione robot 2

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
SPTP XHOME
SPTP XP1
SPTP XP2
SPTP XHOME
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
BRAKE
$OUT[20]=FALSE
$OUT[21]=TRUE
END

Frenatura del movimento del robot e interruzione del "vecchio" movimento

• Il robot viene fermato con BRAKE e deve percorrere una nuova traiet-
toria al termine della routine di interrupt. Ciò si può realizzare con l'i-
struzione RESUME.
• Il robot viene fermato con BRAKE e fatto procedere nella routine di in-
terrupt. Al termine della routine di interrupt non si deve più proseguire
la traiettoria attuale, ma pianificarne una nuova. Anche questo proces-
so può essere realizzato con l'istruzione RESUME.

ATTENZIONE
Poiché non è possibile valutare con precisione quando viene attivato
l'interrupt, in tutte le posizioni possibili della corsa del robot in atto deve
essere attuabile una corsa senza collisioni all'interno della routine di in-
terrupt e della corsa successiva.
In caso di mancata osservanza, sussiste il pericolo di morte, lesioni gra-
vi o ingenti danni materiali.

220/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione degli interrupt


Funzioni di RESUME

Fig. 14-6: Interrupt con Resume

• RESUME annulla tutti i programmi interrupt in corso e anche tutti i sot-


toprogrammi in corso fino al livello sul quale è stato dichiarato l'inter-
rupt attuale.
• Al momento dell'istruzione RESUME, il puntatore di avanzamento non
deve trovarsi sul livello in cui è stato dichiarato l'interrupt, ma almeno
ad un livello più basso.
• RESUME può comparire solo in programmi di interrupt.
• Non appena un interrupt viene dichiarato GLOBAL non si può utilizzare
RESUME nella routine di interrupt.
• Le modifiche della variabile $BASE nel programma interrupt sono effi-
caci solo qui.
• Il processo avanzato del calcolatore, ovvero la variabile $ADVANCE,
non può essere modificata nel programma interrupt.
• I movimenti di corsa da interrompere con BRAKE e RESUME, fonda-
mentalmente devono essere programmati in un sottoprogramma.
• Il comportamento del controllo robot dopo RESUME dipende dalla se-
guente istruzione di movimento:
‒ Istruzione SPTP: avanza come movimento SPTP.
‒ Istruzione SLIN: avanza come movimento SLIN.
‒ Istruzione SCIRC: avanza sempre come movimento SLIN!
Se la prima istruzione di movimento dopo RESUME è un movimento
SCIRC, lo si esegue sempre come SLIN! In questo caso, il movimento ri-
sulta diverso rispetto a quanto inizialmente pianificato. Questo comporta-
mento deve essere preso in considerazione nella programmazione di istru-
zioni RESUME.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 221/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Da ogni posizione in cui potrebbe trovarsi in caso di RESUME, il robot de-


Programmazione degli interrupt

ve poter accostare senza rischi il punto di destinazione del movimento


SCIRC come SLIN.
L'istruzione RESUME si trova alla fine del sottoprogramma interrupt.

Procedimento

1. Dichiarazione di interrupt
• Fissare priorità
• Determinare evento scatenante
• Definire e creare routine di interrupt

DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
...
END
_________________________________________________
DEF ERROR()
...
END

2. Ampliamento programma con movimenti


• per poter interrompere, il movimento deve svolgersi in un sottopro-
gramma
• l'avanzamento puntatore deve rimanere nel sottoprogramma
• Attivare e disattivare interrupt

DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
SEARCH()
END
_________________________________________________
DEF SEARCH()
INTERRUPT ON 25
SPTP XHOME
SPTP XP1
SPTP XP2
SPTP XHOME
WAIT SEC 0 ; arrestare avanzamento puntatore
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
...
END

3. Elaborazione routine di interrupt


• I robot si arrestano
• Riposizionare robot su $POS_INT
• Rifiutare movimento attuale
• Nuovo movimento in programma principale

222/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione degli interrupt


DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
SEARCH()
END
_________________________________________________
DEF SEARCH()
INTERRUPT ON 25
SPTP HOME
SPTP XP1
SPTP XP2
SPTP XHOME
WAIT SEC 0 ; arrestare avanzamento puntatore
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
BRAKE
SPTP $POS_INT
RESUME
END

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 223/345


Luca Galeotti, A.C.M.I. SpA
Programmazione degli interrupt Programmazione robot 2

14.4 Esercizio: Programmazione degli interrupt

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Misurazione tempo ciclo e ottimizzazione

Compito

• Esercizio: Realizzazione di una corsa di ricerca tramite interrupt

Compito

224/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


15 Applicazione di funzioni logiche nel programma robot

15.1 Vista d'insieme

Nella presente unità didattica sono esposti i seguenti contenuti:


• Introduzione alla programmazione logica
• Visualizzazioni di variabili
• Programmazione logica semplice
• Programmazione di logica con SPLINE

15.2 Introduzione alla programmazione logica

Descrizione

Fig. 15-1: Ingressi e uscite digitali

• Per pilotare ad es. un utensile in un punto di programmazione definito


oppure per attendere un segnale, nel sistema di controllo sono dispo-
nibili interfacce bus di campo.
• Tramite questa interfaccia avviene la comunicazione con le periferi-
che tramite cui si possono utilizzare ingressi e uscite analogici e di-
gitali.

Spiegazione dei termini

Termine Spiegazione Esempio


Comunicazione Scambio di segnali Richiesta di uno stato
tramite un'interfaccia (gripper aperto/chiuso)
Unità periferiche “Ambiente” Utensile (ad es. grip-
per, pinza di saldatura,
ecc.), sensori, sistemi
di alimentazione di
materiale, ecc.
digitale Tecnica digitale: se- Segnale sensore: il
gnali a valore e a tem- pezzo è qui: valore 1
po discreti (TRUE/VERO), i pez-
zo non è qua: valore
0 (FALSE/FALSO)
analogico Rappresentazione di Misurazione della tem-
una grandezza fisica peratura

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 225/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Termine Spiegazione Esempio


Ingressi I segnali in arrivo al Segnale sensore: il
controllo mediante l'in- gripper è aperto/il grip-
terfaccia del bus di per è chiuso
campo
Uscite I segnali inviati dal Comando per la com-
controllo alle periferi- mutazione di una val-
che mediante l'inter- vola che determina la
faccia del bus di cam- chiusura di un gripper
po a ganasce.

15.3 Visualizzazione delle variabili

Visualizzazione e modifica del valore di una variabile

1. Percorso di menu: Tasto robot > Display > Variabile > Singola

Fig. 15-2: Percorso del menu

2. Si apre la finestra Visualizza variabili - Singole.

Fig. 15-3: Finestra Visualizza variabili - singole

Pos. Descrizione
1 Nome delle variabili che deve essere modificato
2 Nuovo valore che si intende assegnare alle variabili
3 Programma in cui si cercano le variabili
Con variabili di sistema il campo Modulo è irrilevante.

226/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


Pos. Descrizione
4 Questo campo ha due stati:

‒ : il valore visualizzato non viene aggiornato automati-


camente.

‒ : il valore visualizzato viene aggiornato automatica-


mente.
Passaggio da uno stato all'altro:

‒ premere Aggiorna.
‒ In alternativa: Shift + Enter

3. Visualizzazione del valore della variabile


• Immettere il nome delle variabili nel campo Nome.
• Se un programma è selezionato, viene registrato automaticamente
nel campo Modulo.
Se si deve visualizzare una variabile da un altro programma, inse-
rire il programma come segue:
/R1/Nome programma
Non indicare alcuna cartella tra /R1/ e il nome del programma. Ac-
canto al nome del programma non indicare alcuna estensione di fi-
le.
• Premere il tasto Invio.
Nel campo Valore attuale viene visualizzato il valore attivo delle
variabili. Se non viene visualizzato alcunché, significa che alle va-
riabili non è ancora stato assegnato un valore.
• Inserire il valore desiderato nel campo Valore nuovo.
• Premere il tasto Invio.
Nel campo Valore attuale viene visualizzato il nuovo valore.

15.3.1 Visualizzazione di ingressi e uscite

Descrizione

• Lo stato attuale degli ingressi e delle uscite digitali e analogici basati


su bus di campo può essere visualizzato sullo smartPAD.
• Le uscite possono essere definite mediante inserimento manuale.
A questo scopo sono necessari diritti utente corrispondenti.

Procedimento

• Percorso di menu: Tasto robot > Display > Variabile > Ingressi/uscite

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 227/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Fig. 15-4: Percorso di menu: Ingressi e uscite

• Passare al display desiderato (1).


‒ Ingressi e uscite digitali
(>>> "Ingressi e uscite digitali" Pagina 228)
‒ Ingressi e uscite analogici

Ingressi e uscite digitali

Esempio uscite digitali

Fig. 15-5: Uscite digitali

Pos. Descrizione
1 Numero dell'ingresso/uscita
2 Valore dell'ingresso/uscita. Se è presente un ingresso o un'usci-
ta TRUE, tale ingresso/uscita è contrassegnato/a in rosso.
3 Voce SIM: l'ingresso/uscita è simulato/a.
Voce SYS: il valore dell'ingresso/uscita è memorizzato in una
variabile di sistema. Questo ingresso/uscita è protetto da scrittu-
ra.
4 Nome dell'ingresso/uscita

228/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


Nº Pulsante Descrizione
-100 Retrocede nell'indicazione di 100 ingressi
o uscite.
U
+100 Avanza nell'indicazione di 100 ingressi o
uscite.
B Vai a Può essere immesso il numero dell'ingres-
so o dell'uscita cercato.
C Valore Commuta l'ingresso o l'uscita contrasse-
gnato/a fra TRUE e FALSE. Presupposto:
il pulsante di consenso è premuto.

• Valore non è disponibile nel modo


operativo AUT EXT.
• Per gli ingressi Valore è disponibile
solo se è attivata la simulazione.
D Nome Il nome dell'ingresso o dell'uscita contras-
segnata/o può essere modificato.

15.3.2 Visualizzazione di flag, contatori e timer

• Percorso di menu: Tasto del robot > Display > Variabile

Fig. 15-6: Percorso del menu

Ora si possono selezionare le diverse variabili di sistema:

‒ Flags ciclici
‒ Flags
‒ Contatore
‒ Timer
• Esempio: Contatore

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 229/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Fig. 15-7: Contatore

Pos. Descrizione
1 Numero del contatore
4 Valore del contatore
5 Nome del contatore

Pulsante Descrizione
Vai a Può essere immesso il numero del contatore
cercato.
Valore Per il contatore selezionato è possibile im-
mettere un valore.
Nome Il nome del contatore selezionato può essere
modificato.

15.4 Programmazione logica semplice

Descrizione

Nella programmazione dei robot KUKA si utilizzano segnali in ingresso e


in uscita per istruzioni logiche:
• OUT
Attivazione di un'uscita in un determinato punto del programma
• WAIT FOR
Funzione di attesa sulla base del segnale "Qui il controllo attende un
segnale:
‒Ingresso IN
‒Uscita OUT
‒Segnale di tempo TIMER
‒Indirizzo di memoria interno al controllo (avviso/1 bit di memoria)
FLAG o CYCFLAG (se analizzato sempre in modo ciclico)
• WAIT
Funzione di attesa in base al tempo» Il controllo attende in questo
punto del programma in base a un tempo inserito.

230/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


I comandi logici qui descritti sono un componente di base anche nelle
versioni precedenti del software. L'utilizzo è sempre un compromesso
tra il punto esatto di commutazione e l'arresto dell'avanzamento.
Si consiglia di verificare l'uso dei comandi di attivazione (commutazione
sulla traiettoria) in combinazione con i blocchi SPTP, SLIN, SCIRC e
SPLINE per la nuova progettazione.
In questo modo è possibile garantire un punto di commutazione preciso
indipendentemente da un arresto dell'avanzamento.

15.4.1 Programmazione di funzioni semplici di commutazione

Descrizione

AVVISO
Commutare un'uscita con $OUT[n] è un metodo di programmazione
semplice e veloce che, tuttavia, comporta effetti indesiderati per quanto
riguarda il punto di commutazione e il comportamento del puntatore di
avanzamento. Si consiglia di ricorrere alla programmazione mediante
trigger.

Commutazione con arresto avanzamento

Sintassi

• Attivazione di un'uscita con arresto avanzamento

$OUT[10]=TRUE

• Disattivazione di un'uscita con arresto avanzamento

$OUT[10]=FALSE

Descrizione

• Tramite commutazione di un'uscita si genera un arresto dell'avanza-


mento Il movimento si arresta nel punto o sul limite di approssimazio-
ne

...
SLIN P20 C_SPL
SLIN P21
$OUT[30]=TRUE
SLIN P22

Fig. 15-8: Commutazione con arresto avanzamento

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 231/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

15.4.2 Programmazione delle funzioni di attesa in KRL

Processo avanzato del calcolatore

1 DEF Depal_Box1()
2
3 INI
4 SPTP HOME VEL= 100 % DEFAULT
5 SPTP P1 VEL= 100 % PDAT1 Tool[5] Base[10]
6 SPTP P2 VEL= 100 % PDAT1 Tool[5] Base[10]
7 SLIN P3 VEL= 1 m/s CPDAT1 Tool[5] Base[10]
8 SLIN P4 VEL= 1 m/s CPDAT2 Tool[5] Base[10]
9 SPTP P5 VEL= 100% PDAT1 Tool[5] Base[10]
10 OUT 26'' State=TRUE
11 SPTP HOME VEL= 100 % DEFAULT
12
13 END

Riga
6 Posizione del puntatore principale
9 Eventuale posizione del puntatore (non visibile)
10 Record di istruzioni che attiva un arresto del processo
avanzato

• Il processo avanzato del calcolatore (non visibile per l'operatore) legge


i record di movimento in avanzamento rapido per consentire ai control-
li la pianificazione della traiettoria in caso di istruzioni di approssima-
zione.
• Tuttavia con il processo avanzato non si eseguono solo dati di movi-
mento, ma anche istruzioni aritmetiche e istruzioni che comandano
unità periferiche.
• Alcune istruzioni provocano un arresto del processo avanzato. Fra
queste figurano le istruzioni che influiscono sulle periferiche, ad es. le
istruzioni OUT (Chiusura gripper, Apertura pinza di saldatura).
• Se si arresta il puntatore, non si può effettuare l'approssimazione.

Istruzione di attesa WAIT FOR

WAIT FOR arresta il programma finché non è soddisfatta una determinata


condizione. Poi si continua con il programma.
WAIT FOR provoca un arresto dell'avanzamento.
Il compilatore non è in grado di riconoscere quando l'espressione, a
causa di una formulazione errata, non può mai assumere il valore
TRUE. In questo caso l'esecuzione del programma viene arrestata con-
tinuamente poiché il programma attende una condizione irrealizzabile.

Sintassi

WAIT FOR Condizione

232/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


Spiegazione della sintassi

Elemento Descrizione
Condizione Tipo: BOOL
Condizione alla quale il programma può proseguire.

• Se la condizione è FALSE, l'esecuzione del program-


ma viene arrestata finché la condizione non diventa
TRUE.
• Se la condizione è già TRUE al richiamo WAIT, l'ese-
cuzione del programma non viene arrestata.

Esempi

Interruzione dell'esecuzione del programma finché $IN[17] TRUE è:

WAIT FOR $IN[17]

Interruzione dell'esecuzione del programma finché BIT1 FALSE è:

WAIT FOR BIT1==FALSE

Connessioni logiche

• Con l'utilizzo di funzioni di attesa in base ai segnali trovano impiego


anche connessioni logiche.
• Con le connessioni logiche si possono combinare le interrogazioni di
segnali o stati diversi.
‒ È possibile creare dipendenze.
‒ Alcune determinate condizioni possono essere escluse.
Il risultato di una funzione con un operatore logico fornisce sempre un va-
lore rispondente a verità, ovvero alla fine risulta sempre "vero" (valore 1) o
"falso" (valore 0).

Fig. 15-9: Esempio e principio di una connessione logica

Gli operatori per le connessioni logiche sono:

• NOT | Questo operando viene utilizzato per negare, ovvero il valore


viene invertito (da "vero" diventa "falso").
• AND | Il risultato dell'espressione è vero, se sono vere entrambe le
espressioni collegate tra loro.
• OR | Il risultato dell'espressione è vero, se almeno una delle espres-
sioni collegate tra loro è vera.
• EXOR | Il risultato dell'espressione è vero, se entrambe le asserzioni
collegate dall'operatore hanno valori rispondenti a verità diversi.

Esempio

Attendere finché $IN[1] è TRUE e contemporaneamente IN[2] è FALSE


oppure solo uno dei due segnali è $IN[10] TRUE o $OUT [2] TRUE.

WAIT FOR ($IN[1] AND $IN[2]==FALSE) OR ($IN[10] EXOR


$OUT[20])

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 233/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Elaborazione con avanzamento (CONT)

• Le funzioni di attesa dipendenti dal segnale e programmate con avan-


zamento consentono di approssimare il punto indicato prima della riga
di comando.
• Tuttavia, la posizione attuale dell'avanzamento puntatore non è univo-
ca (valore standard: tre frasi di movimento), quindi il punto temporale
preciso per il controllo del segnale è indefinito (1)
• Inoltre non vengono riconosciute le variazioni di segnale dopo il con-
trollo del segnale stesso!

Fig. 15-10: WAIT FOR con movimenti di approssimazione

SPTP P1 Vel=100% PDAT1 Tool[1] Base[1]


SLIN P2 CONT Vel=100% PDAT2 Tool[1] Base[1]
WAIT FOR IN 10 'door_signal' CONT
SLIN P3 Vel=100% PDAT3 Tool[1] Base[1]

1. Posizione (1)
• WAIT FOR = TRUE prima del raggiungimento della posizione (2)
• » Il robot può percorrere la traiettoria di approssimazione senza
arresto di precisione.
2. Posizione (2)
• WAIT FOR = FALSE fino al raggiungimento della posizione (2)
• » Il robot rimane fermo all'inizio del profilo di approssimazione con
un arresto di precisione.
• Modifica a WAIT FOR = TRUE dopo il raggiungimento della posi-
zione (2)
• » Il robot prosegue il profilo sulla traiettoria di approssimazione.

Istruzione di attesa WAIT SEC

Arresta l'esecuzione del programma e la riprende dopo un tempo di attesa


che viene indicato in secondi.
WAIT SEC provoca un arresto dell'avanzamento.

Sintassi

WAIT SEC Tempo di attesa

234/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


Spiegazione della sintassi

Elemento Descrizione
Tempo di at- Tipo: INT, REAL
tesa
Secondi per i quali l'esecuzione del programma deve es-
sere interrotta. Se il valore è negativo, non c'è attesa.
Per tempi di attesa brevi, la precisione è determinata da
un multiplo di 12 ms.

Esempio

Fig. 15-11: Esempio di movimento per Logica

Pos. Avviso
1 Il movimento viene interrotto per 2 secondi sul punto P2.

Esempi

Interruzione dell'esecuzione del programma per 17,156 secondi:

WAIT SEC 17.156

Interruzione dell'esecuzione del programma come da valore della variabile


V_TEMPO in secondi:

WAIT SEC V_ZEIT

15.5 Programmazione di logica con SPLINE e frasi singole SPLINE

Descrizione

• Nella programmazione di frasi singole SPLINE (SLIN,SCIRC,SPTP) o


all'interno di blocchi SPLINE è possibile impiegare la logica nel modu-
lo inline, in caso di tali movimenti.
• Tale logica è disponibile anche come modulo inline separato. Mediante
KRL è naturalmente possibile anche o solo programmare questa logi-
ca.
• Sempre disponibili sono:
‒ Trigger (comando di commutazione sulla traiettoria)
‒ Arresto condizionato
• Solo in blocco SPLINE CP
‒ Area di traslazione costante
• Solo in blocco SPLINE CP e solo come comando KRL
‒ Blocco temporale

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 235/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

15.5.1 Programmazione di trigger spline

Descrizione

Fig. 15-12: Trigger con SPLINE

• Il trigger attiva un'istruzione definita dall'utente.


Nell'immagine di esempio l'uscita digitale 5.
• Il controllo robot esegue l'istruzione parallelamente al movimento del
robot.
• Il trigger può riferirsi, a scelta, al punto iniziale o di destinazione del
movimento.
• L'istruzione può essere attivata direttamente sul punto di riferimento
oppure essere spostata spazialmente e/o temporalmente.

Il trigger non può essere utilizzato per movimenti (S)PTP.

Se il trigger viene utilizzato in un blocco spline, esso non può trovarsi


tra l'ultimo segmento e ENDSPLINE.

Possibilità di programmazione

• Modulo inline finestra delle opzioni logica trigger


• Modulo inline spline trigger
• Programmazione mediante comando KRL TRIGGER WHEN PATH

15.5.1.1 Programmazione di trigger in KRL

Sintassi

TRIGGER WHEN PATH = distanza <ONSTART> DELAY = tempo DO


istruzione <PRIO = priorità>

Funzioni

PATH e DELAY possono richiamare funzioni. Le funzioni sono soggette al-


le restrizioni seguenti:

236/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


Spiegazione della sintassi

Elemento Descrizione
ONSTART Punto di riferimento del trigger

• Con ONSTART: Punto iniziale


• Senza ONSTART: Punto di destinazione

Percorso Tipo: REAL; variabile, costante o funzione; unità: mm


(eccezione: con spline PTP senza unità)
Spostamento spaziale rispetto al punto di riferimento. Se
non è auspicabile uno spostamento spaziale, immettere
distanza = 0.

• Valore negativo: spostamento in direzione dell'inizio


del movimento
• Valore positivo: spostamento in direzione della fine
del movimento
(>>> "Spostamento max." Pagina 238)
Tempo Tipo: REAL; variabile, costante o funzione; unità: ms
Spostamento temporale in riferimento alla distanza. Se
non è auspicabile uno spostamento temporale, immettere
tempo = 0.

• Valore negativo: spostamento in direzione dell'inizio


del movimento
• Valore positivo: il trigger viene attivato dopo la sca-
denza del tempo.
(>>> "Spostamento max." Pagina 238)
Istruzione Possibile:

• assegnazione valore a una variabile


Nota: sul lato sinistro dell'assegnazione non può es-
serci nessuna variabile del tempo di esercizio.
• Istruzione OUT; istruzione PULSE; istruzione CYC-
FLAG
• Richiamo di un sottoprogramma. In questo caso è
necessario indicare la priorità.
Priorità Tipo: INT; variabile o costante
Priorità del trigger. Rilevante solo se l'istruzione richiama
un sottoprogramma, ma in modo obbligatorio.
Sono a disposizione le priorità 1, 2, 4 - 39 nonché 81 -
128. Le priorità 40 - 80 sono riservate ai casi in cui la
priorità viene assegnata automaticamente dal sistema.
Se la priorità deve essere assegnata automaticamente
dal sistema, viene programmato: PRIO = -1.
Se più trigger richiamano contemporaneamente sottopro-
grammi, viene elaborato per prima il trigger con la
priorità massima, quindi i trigger con priorità inferiore. 1 =
priorità massima.

Se un trigger attiva un sottoprogramma, funge da interrupt attivo finché


il sottoprogramma non è stato portato a termine. Possono essere attivi
contemporaneamente max. 32 interrupt.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 237/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Spostamento max.

Il punto di commutazione può essere spostato solo entro determinati limiti.


Se vengono programmati spostamenti maggiori e, quindi, non validi, il
controllo robot commuta il trigger al più tardi al limite consentito. In T1/T2
emette inoltre un messaggio.
Spostamento massimo per tratto + valore negativotemporale:
I limiti valgono per lo spostamento complessivo risultante da spostamento
locale e temporale negativo.
Spostamento negativo massimo Spostamento positivo massimo
fino a ... fino a ...
Fino al punto iniziale (se questo Fino al punto di destinazione (se
non è approssimato) questo non è approssimato)
Se il punto iniziale è approssimato: Se il punto di destinazione è ap-
prossimato:
• Se il punto iniziale è un punto
PTP approssimato: • In caso di approssimazione
Fino alla fine della curva di ap- omogenea: fino al prossimo ar-
prossimazione resto preciso dopo l'istruzione
TRIGGER
• Se il punto iniziale è un altro
punto approssimato: • In caso di approssimazione mi-
sta (spline): fino al punto di
Fino all'inizio della curva di ap-
commutazione che avrebbe un
prossimazione
trigger ONSTART con PATH =
0 se si trovasse nel movimento
in cui viene approssimato.
• In caso di approssimazione mi-
sta (LIN/CIRC/PTP): fino all'ini-
zio della curva di approssima-
zione
Spostamento massimo per valore positivo temporale:
Lo spostamento temporale positivo può essere pari al massimo a 1000
ms. Ogni spostamento temporale compreso tra 0 e 1000 ms viene com-
mutato anche quando il programma è stato nel frattempo già deseleziona-
to!

Esempio

LIN P_2 C_DIS


TRIGGER WHEN PATH = -20.0 DELAY= -10 DO $OUT[2]=TRUE
LIN P_3 C_DIS
LIN P_4 C_DIS
LIN P_5

Nel grafico, una freccia indica la posizione approssimativa in cui l'istruzio-


ne $OUT[2]=TRUE verrebbe attivata.

238/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


Fig. 15-13: Esempio TRIGGER WHEN PATH

Ambito di commutazione: da P_2*start a P_5.


Se il punto P_2 non fosse approssimato, l’ambito di commutazione sareb-
be da P_2 a P_5.
Il campo di commutazione arriva a P_5, perché P_5 è il prossimo punto
di arresto preciso dopo il TRIGGER. Se il punto P_3 non fosse approssi-
mato, l’ambito di commutazione sarebbe da P_2 a P_3 perché P_3 è pro-
grammato come prossimo punto di arresto preciso dopo il Trigger.

Esempio

1 PTP P0
2 SPLINE
3 SPL P1
4 SPL P2
5 SPL P3
6 SPL P4
7 TRIGGER WHEN PATH=0 ONSTART DELAY=10 DO $OUT[5]=TRUE
8 SCIRC P5, P6
9 SPL P7
10 TRIGGER WHEN PATH=-20.0 DELAY=0 DO SUBPR_2() PRIO=-1
11 SLIN P8
12 ENDSPLINE

Il trigger nella riga 10 porterebbe allo stesso risultato che se si trovasse


direttamente davanti al blocco spline (quindi tra la riga 1 e la riga 2). In
entrambi i casi si riferisce all'ultimo punto del movimento spline, su P8.
Si consiglia, tuttavia, di posizionare il trigger come nell'esempio e non di-
rettamente davanti al blocco spline.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 239/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Fig. 15-14: Esempio TRIGGER WHEN PATH (per spline)

Restrizioni per funzioni nel trigger

I valori per DELAY e PATH possono essere assegnati tramite funzioni. Tali
funzioni sono soggette alle restrizioni seguenti:
• Il programma KRL, comprendente la funzione, deve presentare la pro-
prietà Nascosto.
• La funzione deve essere valida globalmente.
• Le funzioni possono contenere solo le istruzioni o gli elementi seguen-
ti:
‒ Assegnazioni valore
‒ Istruzioni IF
‒ Commenti
‒ Righe vuote
‒ RETURN
‒ Leggi variabile di sistema
‒ Richiama funzione KRL predefinita

15.5.1.2 Informazioni di programmazione

Domanda

Dove si trova il punto di riferimento di un trigger PATH se il punto


iniziale e quello di destinazione è approssimato?
Ciò dipende in prima linea dalla questione se l'approssimazione sia
omogenea o mista.

Approssimazione omogenea

• Da un movimento spline CP a un movimento spline CP


• Da un movimento spline PTP a un movimento spline PTP
• Da un movimento LIN o CIRC a un movimento LIN o CIRC
(>>> "punto di riferimento con approssimazione omogenea" Pagina 241)
Ogni movimento spline può essere un blocco spline o una frase singola.

240/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


Approssimazione mista

• Da un movimento spline CP a un movimento spline PTP o viceversa


Ogni movimento spline può essere un blocco spline o una frase singo-
la.
• Da un movimento PTP a un movimento LIN o CIRC o viceversa
(>>> "Punto di riferimento con approssimazione mista" Pagina 242)
Qui la posizione del punto di riferimento dipende aggiuntivamente dalla
questione se si tratti di movimenti spline o di movimenti tradizionali.

punto di riferimento con approssimazione omogenea

Descrizione

• Il principio viene spiegato alla luce di un esempio con blocchi spline


CP.
• Esso si applica anche ad altri tipi di approssimazione omogenea.

Esempio

SPLINE
...
SLIN P2
TRIGGER WHEN PATH=0 DELAY=0 DO ... ;Trigger 1
SLIN P3
ENDSPLINE C_SPL
SPLINE
TRIGGER WHEN PATH=0 ONSTART DELAY=0 DO ... ;Trigger 2
SLIN P4
...
ENDSPLINE

Trigger 1 e 2 si riferiscono entrambi a P3. P3 è approssimato. Il controllo


robot trasferisce il punto alla curva di approssimazione (= P3') in base alla
distanza di approssimazione.

Approssimazione del punto di destinazione

Punto di riferimento di trigger 1:


Il controllo robot calcola quanto distante sarebbe dall'inizio della curva di
approssimazione fino al punto di destinazione con arresto preciso. Questa
distanza viene trasferita alla curva di approssimazione.
Il percorso PStartApprox → P3 è della stessa lunghezza di PStartApprox →
P3'Trigger 1.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 241/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Fig. 15-15: Trigger 1: Punto di riferimento con approssimazione omo-


genea

PStartApprox Inizio della curva di approssimazione


P3 Punto di riferimento in caso di arresto preciso
P3'Trigger 1 Punto di riferimento in caso di approssimazione

Approssimazione del punto iniziale

Punto di riferimento di trigger 2:


Il controllo robot calcola quanto distante sarebbe dalla fine della curva di
approssimazione indietro fino al punto iniziale con arresto preciso. Questa
distanza viene trasferita alla curva di approssimazione.
Il percorso PEndApprox → P3 è della stessa lunghezza di PEndApprox →
P3'Trigger 2.

Fig. 15-16: Trigger 2: punto di riferimento con approssimazione omo-


genea

PEndApprox Fine della curva di approssimazione


P3 Punto di riferimento in caso di arresto preciso
P3'Trigger 2 Punto di riferimento in caso di approssimazione

Punto di riferimento con approssimazione mista

Esempio

PTP_SPLINE
...
SPTP P2
TRIGGER WHEN PATH=0 DELAY=0 DO ... ;Trigger 1

242/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


SPTP P3
ENDSPLINE C_SPL

SPLINE
TRIGGER WHEN PATH=0 ONSTART DELAY=0 DO ... ;Trigger 2
SLIN P4
...
ENDSPLINE

Trigger 1 e 2 si riferiscono entrambi a P3. P3 è approssimato.

Approssimazione del punto iniziale

Punto di riferimento di trigger 2:


Questo punto di riferimento deve essere osservato per primo in quanto
il punto di riferimento di trigger 1 si riferisce a esso!

Il punto di riferimento risulta secondo lo stesso principio dell'approssima-


zione omogenea.
(>>> "Approssimazione del punto iniziale " Pagina 242)

Approssimazione del punto di destinazione

Punto di riferimento di trigger 1:

• Il punto di riferimento di trigger 1 si trova nella stessa posizione di


quello di trigger 2.
• Il percorso PStartApprox → P3'Trigger 1 è di norma più breve di PStar-
tApprox → P3.

Fig. 15-17: Trigger 1: punto di riferimento con approssimazione mista

PStartApprox Inizio della curva di approssimazione


PEndApprox Fine della curva di approssimazione
P3 Punto di riferimento in caso di arresto preciso
P3' Punto di riferimento in caso di approssimazione

• Se il trigger 1 fosse spostato e a seguito dello spostamento arrivasse


a occupare una posizione tra PStartApprox e P3', ne risulterebbe la po-
sizione precisa seguente:
• Il controllo robot calcola a quale percentuale del percorso PStartApprox
→ P3 si troverebbe il punto di commutazione, se il punto di destina-
zione fosse un arresto preciso. Questa percentuale viene trasferita alla
curva di approssimazione. Il punto di commutazione si trova quindi al
x% del percorso PStartApprox → P3'Trigger 1

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 243/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Punto di riferimento in caso di approssimazione mista (LIN/CIRC/PTP)


Applicazione di funzioni logiche nel programma robot

Approssimazione del punto iniziale

Approssimazione PTP-CP:
Il punto di riferimento si trova alla fine della curva di approssimazione.

Approssimazione del punto di destinazione

Approssimazione CP-PTP:
Il punto di riferimento si trova all'inizio della curva di approssimazione.

15.5.2 Programmazione dell'arresto condizionato

Descrizione

Fig. 15-18: Spline con arresto condizionato

Pos. Spiegazione
1 Punto di frenata calcolato, in funzione del percorso e del-
la velocità
2 Possibile annullamento dell'espressione booleana -> ac-
celerazione alla velocità programmata
2 b Raggiungimento della velocità programmata dopo la riac-
celerazione.
3 Punto di arresto predefinito (mediante modulo inline o
KRL)

• L'"arresto condizionato" consente all'utente di definire un punto sulla


traiettoria in cui il robot si arresta qualora venga soddisfatta una deter-
minata condizione.
• Il punto in questione viene chiamato "punto di arresto". Non appena la
condizione non viene più soddisfatta, il robot riprende il movimento.
• Durante il tempo di esecuzione, il sistema di controllo del robot calcola
il punto entro cui deve frenare per potersi fermare al punto di arresto.
• Da questo punto (= "punto di frenata"), il sistema valuta se la condi-
zione è soddisfatta.

244/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


• Se la condizione è soddisfatta al punto di frenata, il robot frena per
potersi fermare al punto di arresto.
Se però la condizione cambia ancora in "non soddisfatta" prima che
venga raggiunto il punto di arresto, il robot accelera nuovamente e
non si ferma.
• Se la condizione per l'arresto viene soddisfatta solo dopo che il robot
ha già superato il BP, è troppo tardi per poter seguire una normale
rampa di frenata sul punto di arresto.
‒ In questo caso il robot si arresta con un ARRESTO DI EMERGEN-
ZA lungo la traiettoria e non si ferma in un punto prevedibile.
‒ Se il robot si è fermato dopo il punto di arresto mediante l'ARRE-
STO DI EMERGENZA, il programma può proseguire solo se la
condizione di arresto non è più soddisfatta.
• Se il robot si ferma prima del punto di arresto mediante l'ARRESTO
DI EMERGENZA lungo la traiettoria, quanto il programma viene conti-
nuato, avviene quanto segue:
‒ Se la condizione di arresto non è più soddisfatta:
Il robot prosegue.
‒ Se la condizione di arresto è ancora soddisfatta:
Il robot si muove fino al punto di arresto e rimane lì.

In generale può essere programmato un numero a piacere di arresti


condizionati. Tuttavia possono sovrapporsi al massimo 10 tratti "Punto di
frenata → punto di arresto".
Durante una frenata, il sistema di controllo del robot visualizza il se-
guente messaggio in T1/T2: Arresto condizionato attivo (riga {Numero di
riga}).

Possibilità di programmazione

• Nel blocco spline (CP e PTP) o nella frase singola spline:


Modulo inline finestra delle opzioni logica arresto condizionato
• Prima di un blocco spline (CP e PTP):
Modulo inline spline conditional stop
• Programmazione con comando KRL
STOP WHEN PATH

15.5.2.1 Programmazione dell'arresto condizionato con KRL

Posizioni

L'arresto condizionato può essere utilizzato sulle posizioni seguenti:


• Nella frase singola spline
• Nel blocco spline (CP e PTP)
Tra STOP WHEN PATH e ENDSPLINE deve esserci almeno 1 seg-
mento.
• Prima di un blocco spline (CP e PTP)
STOP WHEN PATH si riferisce in questo caso al blocco spline. Tra
STOP WHEN PATH e il blocco spline possono esserci istruzioni, ma
nessuna istruzione di movimento.

Sintassi

STOP WHEN PATH = offset <ONSTART> condizione IF

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 245/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Spiegazione della sintassi

Elemento Descrizione
ONSTART Punto di riferimento dell'istruzione

• Senza ONSTART: Punto di destinazione


• Con ONSTART: Punto iniziale
Se il punto di riferimento viene approssimato, valgono le
stesse regole del PATH-Trigger.

Offset Tipo: INT o REAL; costante, variabile o funzione; unità:


mm
Mediante offset si può spostare spazialmente il punto di
arresto.

• Valore positivo: spostamento in direzione della fine


del movimento
• Valore negativo: spostamento in direzione dell'inizio
del movimento
A quale punto si riferisca lo spostamento dipende dalla
questione se ONSTART è settato o meno. Se non è de-
siderato alcuno spostamento, deve essere programmato
offset=0.
Il punto di arresto non può essere spostato spazialmente
a piacere. Valgono gli stessi limiti del PATH-Trigger.
(>>> "Spostamento max." Pagina 238)
Condizione Tipo: BOOL
Condizione di arresto. Sono ammesse:

• una variabile booleana globale


• un nome di segnale
• un confronto
• un'operazione logica semplice: NOT, OR, AND o
EXOR

Il valore per l'offset può essere assegnato tramite una funzione. Si ap-
plicano le stesse restrizioni previste per le funzioni nel trigger.

Esempio

1 SPTP P1
2 SLIN P2
3 STOP WHEN PATH = -30 IF $IN[20]==TRUE ; si arresta 30 mm
prima di P3, se l'ingresso 20 è su TRUE
4 SLIN P3
5 SLIN P4

Esempio

I rientri non sono presenti di default e qui sono stati inseriti per maggiore
chiarezza.

246/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


Fig. 15-19: Esempio di programmazione inline (fold espansi)

Riga Descrizione
4 Se l'ingresso $IN[77] è FALSE, il robot si ferma 50 mm do-
po P2 e attende che $IN[77] diventi TRUE.

Fig. 15-20: STOP WHEN PATH Esempio

Punto Descrizione
BP Punto di frenata (Brake Point): Qui il robot deve incomincia-
re a frenare in modo da fermarsi nel punto di arresto.
Da questo punto il sistema di controllo del robot valuta se
la condizione è soddisfatta.
La posizione del BP dipende dalla velocità e dall'override e
non è evidente all'utente.
SP Punto di arresto (Stop Point)
Il tratto P2 → SP è lungo 50 mm.

Comportamento di frenatura

Situazione sul BP Comportamento del robot


$IN[77] == FALSE Il robot frena e si arresta sullo SP.
$IN[77] == TRUE Il robot non frena e non si ferma
sullo SP. Il programma viene ese-
guito come se l'istruzione STOP
WHEN PATH non fosse presente.
1. Sul BP $IN[77] == FALSE. 1. Il robot frena sul BP.
2. Tra BP e SP l'ingresso cambia 2. Se l'ingresso è TRUE, il robot
in TRUE. accelera nuovamente e non si
arresta sullo SP.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 247/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Situazione sul BP Comportamento del robot

1. Sul BP $IN[77] == TRUE. 1. Il robot non frena sul BP.


2. Tra BP e SP l'ingresso cambia 2. Se l'ingresso è FALSE, il robot
in FALSE. si arresta con un ARRESTO DI
EMERGENZA lungo la traietto-
ria e non si ferma in un punto
prevedibile.
Se la condizione per l'arresto viene soddisfatta solo dopo che il robot ha
già superato il BP, è troppo tardi per poter seguire una normale rampa di
frenata sullo SP. In questo caso il robot si arresta con un ARRESTO DI
EMERGENZA lungo la traiettoria e non si ferma in un punto prevedibile.
• Se il robot si è fermato dopo lo SP mediante l'ARRESTO DI EMER-
GENZA, il programma può proseguire solo se la condizione di arresto
non è più soddisfatta.
• Se il robot si ferma prima dello SP mediante l'ARRESTO DI EMER-
GENZA lungo la traiettoria, quanto il programma viene continuato, av-
viene quanto segue:
‒ Se la condizione di arresto non è più soddisfatta: il robot prose-
gue.
‒ Se la condizione di arresto è ancora soddisfatta: il robot raggiunge
lo SP e rimane lì.

15.5.3 Area di traslazione costante

Descrizione

• In un blocco spline CP è possibile definire un'area in cui il robot man-


tiene costantemente la velocità programmata, se possibile.
• L'area viene definita "area di traslazione costante".
‒ Per ogni blocco spline CP può essere definita un'area di traslazio-
ne costante.
‒ Un'area di traslazione costante viene definita mediante un'istruzio-
ne start e un'istruzione fine.
‒ L'area non può estendersi oltre il blocco spline.
‒ L'area può essere piccola quanto si vuole.

248/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


Fig. 15-21: Velocità costante, principio

• Se non è possibile mantenere costantemente la velocità programmata,


il sistema di controllo del robot lo segnala mediante un messaggio.
• Area di traslazione costante su più segmenti:
‒ Un'area di traslazione costante si può estendere su più segmenti
con velocità programmate diverse.
In questo caso la velocità più bassa vale per l'intera area.
‒ Anche nei segmenti con velocità programmata superiore la trasla-
zione verrà eseguita alla velocità minima.
In questo caso non sarà visualizzato alcun messaggio relativo al
mancato raggiungimento della velocità.
Ciò avviene solo nel caso non possa essere mantenuta la velocità
minima.

15.5.3.1 Programmazione dell'area di traslazione costante con KRL

Descrizione

Con CONST_VEL si definiscono aree di traslazione costante.


CONST_VEL si può utilizzare solo in blocchi spline CP.
Tra CONST_VEL END e ENDSPLINE deve esserci almeno 1 segmento
spline.
Un blocco spline CP può contenere 1 CONST_VEL o 1 TIME_BLOCK,
ma non entrambi.

Sintassi

CONST_VEL START = offset <ONSTART>


<Segmenti spline …>
...
CONST_VEL END = Offset <ONSTART>

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 249/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Spiegazione della sintassi

Elemento Descrizione
ONSTART Punto di riferimento dell'istruzione

• Con ONSTART: Punto iniziale


• Senza ONSTART: Punto di destinazione
Se il punto iniziale o di destinazione viene approssimato,
il punto di riferimento si ottiene come nell'approssimazio-
ne omogenea con PATH-Trigger.

Offset Tipo: INT o REAL; costante, variabile o funzione; unità:


mm
Mediante CONST_VEL START = offset è possibile spo-
stare spazialmente l'inizio dell'area.
Mediante CONST_VEL END = offset è possibile spostare
spazialmente la fine dell'area.

• Valore positivo: spostamento in direzione della fine


del movimento
• Valore negativo: spostamento in direzione dell'inizio
del movimento
A quale punto si riferisca lo spostamento dipende dalla
questione se ONSTART è settato o meno. Se non è de-
siderato alcuno spostamento, deve essere programmato
offset=0.

Il valore per l'offset può essere assegnato tramite una funzione. Si ap-
plicano le stesse restrizioni previste per le funzioni nel trigger.

Esempio

Qui l'area di traslazione costante si estende attraverso più segmenti con


diverse velocità programmate. La più bassa delle velocità, quindi 0,2 m/s,
vale in questo caso per l'intera area.

1 PTP P0
2 SPLINE WITH $VEL.CP = 2.5
3 SLIN P1
4 CONST_VEL START = +100
5 SPL P2 WITH $VEL.CP = 0.5
6 SLIN P3 WITH $VEL.CP = 0.2
7 SPL P4 WITH $VEL.CP = 0.4
8 CONST_VEL END = -50
9 SCIRC P5, P6
10 SLIN P7
11 ENDSPLINE

15.5.3.2 Informazioni di programmazione

Selezione di frase nell'area di traslazione costante

Se viene eseguita una selezione di frase in un'area di traslazione co-


stante, il controllo robot la ignora e viene visualizzato un messaggio a
questo proposito. I movimenti vengono eseguiti come se non fosse pro-
grammata alcuna area di traslazione costante.

250/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


La selezione di frase nell'area di traslazione costante può essere una
selezione di frase nella sezione di traiettoria definita dai valori di sposta-
mento. Non ha importanza in che frasi di movimento sono programmati
l'inizio e la fine dell'area.

Cos'è la selezione di frase?

Fig. 15-22: Esempio di area di traslazione costante (traiettoria)

Selezione di frase sul punto ... P1 P2 P3 P4


= Nell'area di traslazione costante? No No Sì No

Limiti massimi

• Quando il punto di partenza o il punto di destinazione del blocco spli-


ne è un arresto preciso:
‒ l'area di traslazione costante inizia nel punto di partenza.
‒ l'area di traslazione costante termina entro il punto di destinazione.
• Se il valore di spostamento è tale da determinare il superamento di
questi limiti, il sistema di controllo del robot riduce automaticamente
l'offset e appare il messaggio seguente: CONST_VEL {Start/End} =
{Offset} non realizzabile, {Nuovo offset} sarà utilizzato.
• Il sistema di controllo del robot riduce l'offset finché si crea un'area in
cui la velocità programmata può essere mantenuta costante. Ciò signi-
fica: il sistema di controllo sposta i limiti non necessariamente al punto
di partenza o di destinazione del blocco spline, ma eventualmente an-
cora di più verso l'interno.
• Lo stesso messaggio compare se l'area si trova fin dall'inizio all'interno
del blocco spline, ma è impossibile mantenere la velocità definita a
causa dell'offset. Anche in tal caso il sistema di controllo del robot ri-
duce l'offset.
• Quando il punto di partenza o il punto di destinazione del blocco spli-
ne è approssimato:
‒ l'area di traslazione costante parte non prima dell'inizio della curva
di approssimazione relativa al punto di partenza.
‒ l'area di traslazione costante termina non dopo l'inizio della curva
di approssimazione relativa al punto di destinazione.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 251/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Fig. 15-23: Limiti massimi in SPLINE/ENDSPLINE approssimata

Se l'offset è tale da determinare un superamento di questi limiti, il siste-


ma di controllo del robot imposta i limiti automaticamente all'inizio della
rispettivo curva di approssimazione. Non compaiono messaggi.

15.5.4 Programmazione del blocco temporale spline

Descrizione

Fig. 15-24: Esempio TIME_BLOCK

TIME_BLOCK può essere utilizzato in blocchi SPLINE CP e PTP. TI-


ME_BLOCK permette al programmatore di specificare il tempo (in secon-
di) in cui il robot deve eseguire questo blocco. Non si possono superare i
limiti del robot. All'interno di TIME_BLOCK è possibile eseguire singoli
segmenti di movimento a velocità diverse utilizzando TIME_BLOCK PART.
Ciò si ottiene mediante ponderazioni riferite al tempo specificato in TI-
ME_BLOCK.
Un blocco spline CP può contenere 1 blocco temporale o 1 area di tra-
slazione costante, ma non entrambi.

Sintassi

SPLINE

252/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

<Segmenti spline …>

Applicazione di funzioni logiche nel programma robot



TIME_BLOCK START
Segmento spline
<Segmenti spline …>
...
< <TIME_BLOCK PART = porzione_1>

Segmento spline
<Segmenti spline …>
...
TIME_BLOCK PART = porzione_N >
TIME_BLOCK END = tempo totale
<Segmenti spline …>

ENDSPLINE

Spiegazione della sintassi

Prima di TIME_BLOCK START e dopo TIME_BLOCK END non devono


trovarsi tassativamente segmenti spline. Si consiglia tuttavia di program-
mare come segue:
• Tra SPLINE e TIME_BLOCK START c'è almeno 1 segmento spline.
• Tra TIME_BLOCK END e ENDSPLINE c'è almeno 1 segmento spline.
Vantaggi:

• Il tempo totale programmato viene rispettato esattamente anche in ca-


so di approssimazione.
• I segmenti prima di TIME_BLOCK START consentono di accelerare al-
la velocità necessaria.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 253/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

Elemento Descrizione
Porzione Tipo: INT o REAL; costante, variabile o funzione
Porzione desiderata di tempo totale per tratto seguente:

• Dal punto prima di TIME_BLOCK PART=porzio-


ne_precedente
al punto prima di TIME_BLOCK PART=porzione
• Se porzione_precedente non esiste:
Dal punto prima di TIME_BLOCK START
al punto prima di TIME_BLOCK PART=porzione
Per "porzione desiderata" si intende: le porzioni vengono
rispettate dal controllo robot il più precisamente possibile.
Di norma esse però non vengono rispettate esattamente.
L'utente può assegnare le porzioni in maniera tale che
esse assieme diano come risultato 100. Egli può consi-
derare le porzioni come percentuali del tempo totale.
Le porzioni non devono però dare come risultato 100,
ma possono dare una qualsiasi somma! Il controllo robot
definisce la somma delle porzioni sempre uguale al tem-
po totale. In questo modo le porzioni possono essere uti-
lizzate e anche modificate in modo molto flessibile.
Se vengono assegnate porzioni, un TIME_BLOCK PART
deve sempre trovarsi direttamente prima di TIME_BLOCK
END. Nel mezzo non possono trovarsi segmenti.
Tempo totale Tipo: INT o REAL; costante, variabile o funzione; unità: s
Tempo di traslazione del tratto seguente:

• Dal punto prima di TIME_BLOCK START


fino al punto prima di TIME_BLOCK END
Il valore deve essere superiore a 0. Il tempo totale viene
esattamente rispettato. Qualora ciò non sia possibile, ad
es. perché è stato programmato un tempo troppo breve,
il robot percorre il tempo più veloce possibile. In T1 e T2
viene inoltre visualizzato un messaggio.

Se il valore della porzione o del tempo totale viene assegnato tramite


una funzione, valgono le stesse restrizioni di quelle per le funzioni nel
trigger.

Esempio

SPLINE
SLIN P1
SPL P2
TIME_BLOCK START
SLIN P3
TIME_BLOCK PART = 12.7
SPL P4
SPL P5
SPL P6
TIME_BLOCK PART = 56.4
SCIRC P7, P8
SPL P9
TIME_BLOCK PART = 27.8
TIME_BLOCK END = 3.9

254/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Applicazione di funzioni logiche nel programma robot


SLIN P10
ENDSPLINE

I punti da P2 a P9 vengono eseguiti esattamente nel tempo programmato


di 3,9 s. Il controllo robot definisce il tempo totale di 3,9 uguale alla som-
ma di tutte le porzioni, quindi 96,9 porzioni.
Percorso Tempo che il controllo robot assegna al tratto
P2 … P3 12,7 porzioni di 3,9 s = 0,51 s
P3 … P6 56,4 porzioni di 3,9 s = 2,27 s
P6 … P9 27,8 porzioni di 3,9 s = 1,12 s

Sel. frase

A seconda della riga sulla quale viene eseguita una selezione di frase, il
controllo robot pianifica o meno il blocco temporale.
Il blocco temporale viene pianifi-
Selezione di frase su riga ...
cato?
Nel blocco spline, prima di TI- Sì
ME_BLOCK START
TIME_BLOCK START No
Nel blocco temporale Il blocco spline viene eseguito co-
TIME_BLOCK END me se non fossero presenti istru-
zioni TIME_BLOCK.
Nel blocco spline, dopo TI-
ME_BLOCK END
Se il controllo robot non pianifica il blocco temporale, emette il messaggio
seguente: Blocco tempo ignorato per via di corsa SAK.

$PATHTIME

I dati dello spline temporale possono essere letti utilizzando la variabile di


sistema $PATHTIME. $PATHTIME viene riempito con dati non appena il
controllo robot conclude la progettazione del blocco spline. I dati restano
memorizzati finché non è stato progettato il blocco spline successivo.
$PATHTIME è una struttura composta dai seguenti componenti:
Componente Descrizione
REAL $PATHTIME.TOTAL Tempo effettivamente necessario
per il blocco spline completo (s)
REAL $PATHTIME.SCHEDULED Tempo totale progettato per il bloc-
co temporale (s)
REAL $PATHTIME.PROGRAM- Tempo totale programmato per il
MED blocco temporale (s)
INT $PATHTIME.N_SECTIONS Numero N delle righe TI-
ME_BLOCK_PART
REAL $PATHTIME.MAX_DEV Scostamento maggiore fra tutti i
TIME_BLOCK_PART tra il tempo
programmato e il tempo progettato
(%)
INT $PATHTIME.MAX_DEV_SEC- Numero del TIME_BLOCK_PART
TION con lo scostamento maggiore fra
tempo programmato e il tempo
progettato

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 255/345


Luca Galeotti, A.C.M.I. SpA
Applicazione di funzioni logiche nel programma robot Programmazione robot 2

256/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Submit interpreter
16 Submit interpreter

16.1 Vista d'insieme

Nella presente unità didattica sono esposti i seguenti contenuti:


• Cos'è un submit interpreter?
• Operazioni con un submit interpreter
• Gestione di più Multisubmit

16.2 Familiarizzazione con il (multi) submit interpreter

Descrizione

Cosa sono i submit?

Fig. 16-1: Multisubmit interpreter

Un submit è un programma KRL che viene eseguito, parallelamente in


background, in un loop continuo. È indipendente dall'attuale programma
robot o di movimenti. In un submit si possono eseguire interrogazioni e
istruzioni. Ad es. un ingresso che segnala se un "refrigeratore" è attivo.
Tramite il submit si possono anche revocare messaggi. Le istruzioni di
movimento non sono accettate. Se viene installato un pacchetto tecnologi-
co KUKA, una "voce" nel programma submit consente, tra l'altro, di inter-
rogare i tasti di stato. Questi possono poi essere valutati in modo indipen-
dente in un programma robot. Ad es. gripper aperto o chiuso.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 257/345


Luca Galeotti, A.C.M.I. SpA
Submit interpreter Programmazione robot 2

Dove si trovano i submit?

Fig. 16-2: Cartella submit

Il submit fisso di sistema SPS.SUB (1) è da sempre parte del software di


sistema KUKA. A partire dalla versione KSS 8.5, il programmatore può
creare, programmare e richiamare fino a sette ulteriori submit (2). Il
submit di sistema SPS.SUB si trova nella cartella R1 > System, i submit
specifici del cliente possono essere memorizzati anche in altre cartelle.
A partire dal software di sistema KUKA 8.3, Multisubmit può essere in-
stallato come aggiornamento gratuito.

AVVISO
Il submit fisso di sistema SPS.SUB è riservato per compiti interni al con-
trollo. Ciò significa che per compiti specifici del cliente si deve ricorrere
ai submit supplementari.

Come si crea un submit specifico per il cliente?

Fig. 16-3: Selezione template

La creazione di un submit specifico per il cliente avviene nello stesso mo-


do in cui si creano i "normali" programmi o funzioni del robot. Nella fine-
stra Selezione template si deve selezionare Submit.

258/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Submit interpreter
16.3 Gestione dei submit

Visualizzazione dello stato dei submit sullo smartPAD

La barra di stato della KUKA smartHMI contiene una visualizzazione col-


lettiva dello stato dei submit interpreter. Viene sempre visualizzato lo stato
più elevato attualmente disponibile tra tutti i submit interpreter.

Fig. 16-4: Stato submit interpreter

• La barra di stato dello smartPAD mostra lo stato dei submit


• Visualizzazione collettiva per tutti i submit
• Visualizzazione dello stato più elevato

Simbolo Colore/Descrizione
Verde
Almeno un submit interpreter è in stato ACTIVE.

Rosso
Almeno un submit interpreter è in stato STOP.
Nessun submit interpreter è in stato ACTIVE.
Giallo
Almeno un submit interpreter è in stato RESET.
Nessun submit interpreter è in stato STOP.
Nessun submit interpreter è in stato ACTIVE.
Grigio
Tutti i submit interpreter sono allo stato FREE.

Panoramica dei submit interpreter attualmente eseguiti

Se si tocca il pulsante "S" (1), sullo smartPAD si apre una lista di tutti i
dati attivi e inattivi trovati sul sistema. Nella prima riga (2) compare sem-
pre il "System Submit" SPS.SUB. Tutti i submit creati dall'operatore sono
elencati nelle righe seguenti (3). Il "punto esclamativo" sul pulsante "S" (1)
segnala che almeno un submit è inattivo.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 259/345


Luca Galeotti, A.C.M.I. SpA
Submit interpreter Programmazione robot 2

Fig. 16-5: Panoramica dei submit interpreter attualmente eseguiti

Con i pulsanti Seleziona/Avvia, Arresta e Deseleziona si possono gesti-


re globalmente gli slot assegnati.
Con il pulsante Visualizza/Assegna si possono assegnare i submit a sin-
goli slot. Per fare ciò servono diritti utente superiori.

Assegnazione dei submit

Fig. 16-6: Assegnazione dei submit

1. Per assegnare submit a singoli slot, questi ultimi vanno prima arrestati
e deselezionati. A tale scopo evidenziare lo slot da editare (2) e pre-
mere, uno dopo l'altro, i relativi pulsanti (1). L'indicatore di stato dello
slot diventa grigio.
2. Toccare lo slot nella finestra di selezione (2). Vengono elencati tutti i
submit disponibili sul controllo. I submit già assegnati sono in grigio e
non possono essere selezionati.
3. Se il submit deve essere attivato subito dopo la selezione, farlo trami-
te il pulsante Seleziona/Avvia.
Assegnazione dei colori all'indicatore

260/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Submit interpreter
Verde Giallo
ACTIVE RESET
Rosso Grigio
STOP FREE

Configurazione avvio a freddo

Fig. 16-7: Configurazione avvio a freddo

La schede di registro Configurazione avvio a freddo apre una panorami-


ca di tutti gli slot e dei rispettivi submit assegnati. Toccando il pulsante
corrispondente, il submit in primo piano verrà avviato automaticamente al
successivo avvio a freddo. Un segno di spunta verde segnala un submit
attivo.

16.4 Programmazione di submit

Procedimento

1. La programmazione avviene nello stato di arresto o nello stato selezio-


nato.
2. Il submit desiderato viene caricato nell'editor.
3. Eseguire le dichiarazioni e le inizializzazioni necessarie. Qui si devono
utilizzare le fold predisposte.
4. Se si vuole ampliare il programma in SPS.SUB, svolgere la fold USER
PLC.
5. Chiudere e salvare SUBMIT interpreter.
6. Se il submit non parte in automatico, avviarlo manualmente.

Esempio programma: Assi asincroni

IF (($IN[12] == TRUE) AND ( NOT $IN[13] == TRUE)) THEN


ASYPTP {E1 45}
ENDIF
...
IF ((NOT $IN[12] == TRUE) AND ($IN[13] == TRUE)) THEN
ASYPTP {E1 0}
ENDIF

Esempio programma: Programmazione lampeggiatore

Programma esemplificativo basato su una programmazione lampeggiatore


nel submit interpreter

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 261/345


Luca Galeotti, A.C.M.I. SpA
Submit interpreter Programmazione robot 2

DEF SPS( )
DECLARATIONS
DECL BOOL flash ;dichiarazione nel $CONFIG.dat
INI
flash = FALSE
$TIMER[32]=0 ; ripristinare TIMER[32]
$TIMER_STOP[32]=false ; avviare TIMER[32]
...
LOOP
...
USER PLC
IF ($TIMER[32]>500) AND (flash==FALSE) THEN
flash=TRUE
ENDIF
IF $TIMER[32]>1000 THEN
flash=FALSE
$TIMER[32]=0
ENDIF
; assegnazione a una spia luminosa (uscita 99)
$OUT[99] = flash
...
ENDLOOP

AVVERTENZA
Nei modi operativi test, $OV_PRO non può essere scritta dal submit-in-
terpreter, perché la modifica per utenti che lavorano al robot industriale
può essere inaspettata. Ciò potrebbe avere come conseguenza morte,
lesioni o danni a cose.

AVVERTENZA
Non elaborare i segnali e le variabili urgenti e rilevanti dal punto di vista
della sicurezza mediante il SUBMIT interpreter.

Se un file di sistema, ad es. $config.dat o $custom.dat, viene modificato


e quindi diventa errato, il submit-interpreter si deseleziona automatica-
mente. Se si corregge un errore nel file di sistema, il submit-interpreter
deve essere riselezionato manualmente.

AVVISO
Ogni arresto per istruzioni o loop di attesa in SPS.SUB va impedito per-
ché ritarda ulteriormente l'esecuzione del submit interpreter.
Se, invece, si vuole che ciò si verifichi allora definire un submit a parte.

AVVERTENZA
Non si controlla se il robot-interpreter e il submit-interpreter attingono al-
la stessa uscita contemporaneamente, perché in determinati casi può
essere anche voluto.
L'assegnazione delle uscite quindi deve essere controllata attentamente
dall'utente. In caso contrario si possono verificare segnali di uscita inat-
tesi, ad es. su dispositivi di sicurezza. Sussiste il pericolo di morte, gravi
lesioni fisiche o significativi danni materiali.

262/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Submit interpreter
16.5 Esercizio: Programmazione di submit

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Programmazione di submit

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 263/345


Luca Galeotti, A.C.M.I. SpA
Submit interpreter Programmazione robot 2

264/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Configurazione degli spazi di lavoro per la sicurezza dell'impianto


17 Configurazione degli spazi di lavoro per la sicurezza
dell'impianto

17.1 Utilizzo del livello Esperto

Nella presente unità didattica sono esposti i seguenti contenuti:


• Utilizzo degli spazi di lavoro per la protezione dell'impianto
• Configurazione dello spazio di lavoro cartesiano
• Configurazione dello spazio di lavoro riferito agli assi
• Esclusione del monitoraggio dello spazio di lavoro

17.2 Utilizzo degli spazi di lavoro per la protezione dell'impianto

Descrizione

• Spazi di lavoro sicuri per le persone


Gli spazi di lavoro sicuri per le persone servono a proteggere le per-
sone e possono essere allestiti solo con l'opzione supplementare Sa-
feOperation.
• Spazi di lavoro NON sicuri per le persone
Con il KUKA System Software 8.x si possono configurare spazi di la-
voro per il robot. Tali spazi servono solo a proteggere l'impianto.
È possibile configurare i seguenti spazi

‒ Spazi di lavoro riferiti agli assi


‒ Spazi di lavoro cartesiani

Spazi di lavoro riferiti agli assi

Fig. 17-1: Esempio di spazi di lavoro rif. agli assi per A1

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 265/345


Luca Galeotti, A.C.M.I. SpA
Configurazione degli spazi di lavoro per la sicurezza dell'impianto Programmazione robot 2

• Questi spazi di lavoro adatti esclusivamente per la protezione della


macchina vengono configurati direttamente nel KUKA System Soft-
ware.
• Si possono creare 8 spazi di lavoro cartesiani.
• Con gli spazi di lavoro riferiti agli assi si possono limitare ulteriormente
i campi stabiliti dal finecorsa software per proteggere il robot o l'uten-
sile o il pezzo in lavorazione.

Spazi di lavoro cartesiani

Fig. 17-2: Spazio di lavoro in generale

• Lo spazio di lavoro cartesiano si può estendere su una superficie di


lavoro o su una stazione di lavorazione azionata da più di una mac-
china o più di un robot.
• Per evitare che più macchine/robot si spostino contemporaneamente
nello spazio (segnale errato, errore di programmazione), questo viene
di solito commutato tramite l'esecuzione del programma.
• Cioè lo spazio di lavoro cambia l'autorizzazione per il robot sostanzial-
mente in:
‒ Spazio di segnalazione
‒ Spazio di lavoro (spazio autorizzato)
(>>> "Spazi consentiti" Pagina 266)
‒ Spazio protetto (spazio non autorizzato)
(>>> "Spazi NON consentiti" Pagina 267)

Spazi consentiti

Il robot non si può muovere al di fuori di tale spazio.

266/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Configurazione degli spazi di lavoro per la sicurezza dell'impianto


Fig. 17-3: TCP_INSIDE_STOP

• Con gli spazi di lavoro cartesiani si controlla la posizione della flangia


e del TCP. Non si può controllare se altre parti del robot violano lo
spazio di lavoro.
• Per creare forme complesse, è possibile attivare più spazi di lavoro
sovrapposti.
• Il robot può uscire dallo spazio di lavoro solo quando viene
commutato su inattivo o cambia stato.

Spazi NON consentiti

Il robot è autorizzato a muoversi solo al di fuori di tale spazio.

Fig. 17-4: TCP_OUTSIDE_STOP

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 267/345


Luca Galeotti, A.C.M.I. SpA
Configurazione degli spazi di lavoro per la sicurezza dell'impianto Programmazione robot 2

• Quando la stazione di lavorazione è occupata, un programma blocca


gli spazi di lavoro per il robot "inattivo".
• Durante l'esecuzione del programma, il robot attende l'autorizzazione
tramite accordo di segnale/istruzione di attesa, dopo che l'area è stata
nuovamente abilitata.
• In caso di applicazioni cellulari più complesse, il controllo dell'interbloc-
co reciproco tramite PLC è un'opzione.

17.3 Configurazione dello spazio di lavoro cartesiano

Procedimento

Metodo 1: configurazione tramite un vettore spaziale

1. Richiamo del monitoraggio dello spazio di lavoro

Fig. 17-5: Percorso del menu

Percorso di menu: Tasto del robot > Configurazione > Strumenti >
Monitoraggio spazio di lavoro> Esclusione o Configurazione
2. Definizione e configurazione del punto di origine dello spazio di lavoro

Fig. 17-6: Spazio di lavoro, origine

• Pianificare lo spazio di lavoro desiderato sull'area da proteggere

268/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Configurazione degli spazi di lavoro per la sicurezza dell'impianto


• Fissare un angolo adatto (punto di origine) per disegnare lo spa-
zio.
• Nel punto di origine ora definito viene inserito un sistema di coor-
dinate di origine "virtuale".
Questo sistema di coordinate è pensato per essere spostato e ruo-
tato dal $WORLD.
Gli orientamenti e quindi la rotazione del sistema di coordinate di
origine seguono i margini spaziali dello spazio di lavoro.
• Nella finestra di configurazione degli spazi di lavoro cartesiani, ol-
tre al numero e al nome dello spazio di lavoro, immettere i valori
determinati. (>>> "Finestra Spazi di lavoro cartesiani" Pagina 271)
3. Definizione della dimensione dello spazio di lavoro

Fig. 17-7: Spazio di lavoro, dimensione

• La dimensione dello spazio di lavoro si determina tramite una dia-


gonale spaziale.
• La diagonale si disegna dal punto di origine P1 al punto P2 (fine
della diagonale spaziale).
• Inserire la distanza del punto P2 (X1,Y1,Z1) dal punto di origine P1
nella finestra di configurazione Spazi di lavoro cartesiani.
(>>> "Finestra Spazi di lavoro cartesiani" Pagina 271)
• Attraverso il campo Modalità (5) definire la reazione del robot allo
spazio.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 269/345


Luca Galeotti, A.C.M.I. SpA
Configurazione degli spazi di lavoro per la sicurezza dell'impianto Programmazione robot 2

Metodo 2: misurazione mediante due vettori spaziali

Fig. 17-8: spazio di lavoro ruotato

• In questo esempio, lo spazio di lavoro viene ruotato sull'asse Y rispet-


to al sistema di coordinate world.
• L'origine (origin) non si trova esattamente al centro del parallelepipe-
do.
• Qui il sistema di coordinate di riferimento viene posizionato e ruotato
sul punto "origin".
• Calcolare la distanza dei punti P1 (X1,Y1,Z1) e P2 (X2,Y2,Z2) rispetto
all'origine (origin). (>>> "Finestra Spazi di lavoro cartesiani" Pagi-
na 271)
• Attraverso il campo Modalità (5) definire la reazione del robot allo spa-
zio.

Modi

Campo Mode Descrizione


#OFF Il monitoraggio dello spazio di lavoro è disattivato.
#INSIDE L'uscita definita viene settata, se il TCP o la flangia si trovano
all'interno dello spazio di lavoro.
#OUTSIDE L'uscita definita viene settata, se il TCP o la flangia si trovano
all'esterno dello spazio di lavoro.
#INSIDE_STOP L'uscita definita viene settata, se il TCP, la flangia o il punto ra-
dice del polso si trovano all'interno dello spazio di lavoro. (Pun-
to radice del polso = punto mediano dell'asse A5)
Inoltre si ferma il robot e vengono visualizzati dei messaggi. Il
robot può riprendere l'avanzamento, solo se il monitoraggio del-
lo spazio di lavoro è stato disattivato o bypassato.

270/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Configurazione degli spazi di lavoro per la sicurezza dell'impianto


Campo Mode Descrizione
#OUTSIDE_STOP L'uscita definita viene settata, se il TCP o la flangia si trovano
all'esterno dello spazio di lavoro.
Inoltre si ferma il robot e vengono visualizzati dei messaggi. Il
robot può riprendere l'avanzamento, solo se il monitoraggio del-
lo spazio di lavoro è stato disattivato o bypassato.
#TCP_INSIDE L'uscita definita viene settata, se il TCP si trova all'interno dello
spazio di lavoro.
#TCP_OUTSIDE L'uscita definita viene settata, se il TCP si trova all'esterno dello
spazio di lavoro.
#TCP_INSIDE_STOP L'uscita definita viene settata, se il TCP si trova all'interno dello
spazio di lavoro.
Inoltre si ferma il robot e vengono visualizzati dei messaggi. Il
robot può riprendere l'avanzamento, solo se il monitoraggio del-
lo spazio di lavoro è stato disattivato o bypassato.
#TCP_OUTSIDE_STOP L'uscita definita viene settata, se il TCP si trova all'esterno dello
spazio di lavoro.
Inoltre si ferma il robot e vengono visualizzati dei messaggi. Il
robot può riprendere l'avanzamento, solo se il monitoraggio del-
lo spazio di lavoro è stato disattivato o bypassato.

Il TCP può essere monitorato solo se il sistema di controllo del robot è


in possesso delle informazioni sull'utensile a cui deve riferirsi. Si utilizza
il valore corrente di $TOOL o, se non valido, l'ultimo valore valido.

Se già all'avvio del sistema di controllo non era disponibile un valore va-
lido per $TOOL, il TCP non può essere monitorato. Il controllo robot
emette un messaggio al riguardo.

Finestra Spazi di lavoro cartesiani

Fig. 17-9: Finestra Spazi di lavoro cartesiani

Pos. Descrizione
1 Numero dello spazio di lavoro (max. 8)
2 Denominazione dello spazio di lavoro

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 271/345


Luca Galeotti, A.C.M.I. SpA
Configurazione degli spazi di lavoro per la sicurezza dell'impianto Programmazione robot 2

Pos. Descrizione
3 Origine e orientamento dello spazio di lavoro riferito al sistema
di coordinate WORLD
4 Dimensioni dello spazio di lavoro in mm
5 Modo

Finestra Segnali

Fig. 17-10: Finestra Segnali

Pos. Descrizione
1 Per spazio di lavoro cartesiano: uscita che viene impostata
quando si viola lo spazio di lavoro.
2 Per spazio di lavoro riferito agi assi: uscita che viene impostata
quando si viola lo spazio di lavoro.
FALSE significa che a tale spazio di lavoro non è assegnata alcuna usci-
ta.

272/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Configurazione degli spazi di lavoro per la sicurezza dell'impianto


17.4 Configurazione di spazi di lavoro riferiti agli assi

Descrizione

Fig. 17-11: Esempio di spazi di lavoro rif. agli assi per A1

• Con gli spazi di lavoro riferiti agli assi si possono limitare ulteriormente
i campi stabiliti dal finecorsa software per proteggere il robot o l'uten-
sile e il pezzo in lavorazione.
• La configurazione e il funzionamento corrispondono a quelli degli spazi
di lavori cartesiani (>>> 17.3 "Configurazione dello spazio di lavoro
cartesiano" Pagina 268)

Procedimento

1. Richiamo del monitoraggio dello spazio di lavoro

Fig. 17-12: Percorso del menu

Percorso di menu: Tasto del robot > Configurazione > Strumenti >
Monitoraggio spazio di lavoro> Esclusione o Configurazione
2. Premere Rif. agli assi per passare alla finestra Spazi di lavoro rif.
agli assi.
3. Immettere i valori, selezionare il modo e premere Salva.
4. Premere Segnale. Si apre la finestra Segnali.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 273/345


Luca Galeotti, A.C.M.I. SpA
Configurazione degli spazi di lavoro per la sicurezza dell'impianto Programmazione robot 2

5. Nel gruppo Rif. agli assi: Con il numero dello spazio di lavoro regi-
strare l'uscita che deve essere impostata, quando si viola lo spazio di
lavoro.
6. Premere Salva.
7. Chiudere la finestra.

Finestra Zone di lavoro specifiche degli assi

Fig. 17-13: Finestra Zone di lavoro specifiche degli assi

Pos. Descrizione
1 Numero dello spazio di lavoro (max. 8)
2 Denominazione dello spazio di lavoro
3 Limite inferiore per l'angolo dell'asse
4 Limite superiore per l'angolo dell'asse
5 Modo

274/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Configurazione degli spazi di lavoro per la sicurezza dell'impianto


Finestra Segnali

Fig. 17-14: Finestra Segnali

Pos. Descrizione
1 Per spazio di lavoro cartesiano: uscita che viene impostata
quando si viola lo spazio di lavoro.
2 Per spazio di lavoro riferito agi assi: uscita che viene impostata
quando si viola lo spazio di lavoro.
FALSE significa che a tale spazio di lavoro non è assegnata alcuna usci-
ta.

Modi

Campo Mode Descrizione


#OFF Il monitoraggio dello spazio di lavoro è disattivato.
#INSIDE L'uscita definita viene settata, se l'asse si trova all'interno dello
spazio di lavoro.
#OUTSIDE L'uscita definita viene settata, se l'asse si trova all'esterno dello
spazio di lavoro.
#INSIDE_STOP L'uscita definita viene settata, se l'asse si trova all'interno dello
spazio di lavoro.
Inoltre si ferma il robot e vengono visualizzati dei messaggi. Il
robot può riprendere l'avanzamento, solo se il monitoraggio del-
lo spazio di lavoro è stato disattivato o bypassato.
#OUTSIDE_STOP L'uscita definita viene settata, se l'asse si trova all'esterno dello
spazio di lavoro.
Inoltre si ferma il robot e vengono visualizzati dei messaggi. Il
robot può riprendere l'avanzamento, solo se il monitoraggio del-
lo spazio di lavoro è stato disattivato o bypassato.

17.5 Esclusione del monitoraggio dello spazio di lavoro

Descrizione

• Se lo stato cambia mentre un robot con il suo TCP o la sua flangia si


trova all'interno di uno spazio di lavoro, il robot reagisce in base alla
configurazione.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 275/345


Luca Galeotti, A.C.M.I. SpA
Configurazione degli spazi di lavoro per la sicurezza dell'impianto Programmazione robot 2

• Una reazione può essere, ad esempio, l'arresto del robot. In questo


caso occorre ponticellare o disattivare il controllo dello spazio lavoro,
affinché il robot possa di nuovo uscire dallo spazio violato.

Procedimento

1. Nel menu principale selezionare Configurazione > Strumenti > Moni-


toraggio spazio di lavoro > Arresto sorvegliato della zona di lavo-
ro.
2. Fare uscire manualmente il robot dall'area violata.
Una volta che il robot è uscito dall'area violata, la sorveglianza della
zona di lavoro è di nuovo automaticamente attiva.

276/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Configurazione degli spazi di lavoro per la sicurezza dell'impianto


17.6 Esercizio: Configurazione degli spazi di lavoro per la protezione del-
l'impianto

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Configurazione del riconoscimento collisione per il fun-
zionamento del programma

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 277/345


Luca Galeotti, A.C.M.I. SpA
Configurazione degli spazi di lavoro per la sicurezza dell'impianto Programmazione robot 2

278/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


18 Come si lavora con WorkVisual

18.1 Panoramica: Come si lavora con WorkVisual

Nella presente unità didattica sono esposti i seguenti contenuti:


• Caricamento di un progetto esistente in WorkVisual
• Salvataggio locale di un progetto WorkVisual.
• Trasferimento (installazione) dei progetti al sistema di controllo
• Amministrazione dell'utensile e della base
• Modifica dei finecorsa software

18.2 Caricamento di un progetto esistente in WorkVisual

Descrizione

Fig. 18-1

• I progetti salvati su un controllo robot possono essere caricati in Work-


Visual.
• I progetti presenti sul WorkVisual possono essere caricati sul controllo
robot.
• Entrambi i processi richiedono una connessione di rete tra PC e con-
trollo robot.
• Il progetto viene salvato nella directory ....\WorkVisual Projects\Down-
loaded Projects.

Visualizzazione del progetto attivo sull'interfaccia grafica

Fig. 18-2: Visualizzazione di progetto sull'interfaccia grafica

• Premendo il pulsante del progetto sullo smartPAD è possibile visualiz-


zare il progetto attivo.
• Con il pulsante Apri si visualizza una panoramica di tutti i progetti at-
tualmente presenti nel sistema di controllo.
• Non sono necessari particolari diritti utente sul controllo.

Caricamento del progetto WorkVisual dal controllo

1. Sequenza di menu: File > Sfoglia per progetto

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 279/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

Fig. 18-3: Progetti nuovi, aprire, sfogliare

2. Esplora progetto si apre.

Fig. 18-4: Esplora progetto

A sinistra è selezionata la scheda di registro Trova (D).


3. Nel campo Celle disponibili espandere il nodo della cella desiderata.
Vengono visualizzati tutti i controlli robot di questa cella.
4. Espandere il nodo del controllo robot desiderato. Vengono visualizzati
tutti i progetti.
5. Selezionare il progetto desiderato (1) e fare clic su Apri (2). Il
progetto viene aperto in WorkVisual.
Schede di registro

• Ultimi file (A) visualizza gli ultimi file utilizzati


Percorso di menu: File > Ultimi file aperti (accesso rapido tramite fi-
nestra di selezione separata)
• Crea progetto (B) genera
‒ un nuovo progetto vuoto
‒ un nuovo progetto mediante modello
‒ un nuovo progetto sulla base di un progetto esistente
Percorso di menu: File > Nuovo
• Apri progetto (C) attiva l'apertura di progetti esistenti
Percorso di menu: File > Apri progetto
• Trova (D) è necessario per consentire il caricamento di un progetto
dal controllo robot
Percorso di menu: File > Sfoglia per progetto

280/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


Eliminazione degli errori

Può accadere che, nonostante la connessione di rete, nella finestra di ri-


cerca non compaia nessun controllo. Può essere d'aiuto procedere nel
modo seguente:

Fig. 18-5: Trova indirizzo IP

1. Nell'Esplora di WorkVisual, fare clic sul pulsante Lente d'ingrandi-


mento (1).
2. Si apre la finestra Find IP Addess (2).
3. Immettere l'indirizzo IP desiderato dell'armadio di comando.
4. Applicare l'indirizzo IP con OK (2).
5. Ora il controllo appare nella finestra Celle disponibili (3).

18.3 Salvataggio locale di un progetto WorkVisual

Fig. 18-6: Salvataggio del progetto caricato

1. Salvare il progetto nel percorso di menu: File > Salva con nome.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 281/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

2. Il nome del file inserito è ora visualizzato nella barra del titolo di Work-
Visual con "*". Ciò indica che il file non è ancora stato salvato in
WorkVisual.
3. In Esplora definire il percorso di salvataggio del progetto.
4. Stabilire il nome del file nell'omonima finestra di immissione.
5. Con il pulsante Edit proprietà si consiglia di definire brevemente il
progetto, oppure di inserire opzionalmente un'immagine di progetto.
6. Con il pulsante Salva è possibile salvare a questo punto il progetto
corrente nel percorso di file predefinito.

18.4 Trasferimento (installazione) del progetto al sistema di controllo robot

Descrizione

• Le modifiche nel progetto devono essere inviate mediante WorkVisual


al sistema di controllo.
• Tale procedura viene detta da KUKA "Installazione".
• Al momento di trasferire un progetto al controllo robot viene creato
dapprima sempre il codice.
• Presupposto per l'"Installazione" è la connessione di rete al controllo
robot reale.

Se sul controllo robot reale è presente un progetto che è stato trasferito


in una fase precedente e non è mai stato attivato, questo verrà sovra-
scritto in caso di trasferimento di un altro progetto.
Con il trasferimento e l'attivazione di un progetto viene sovrascritto un
progetto con lo stesso nome eventualmente presente sul controllo robot
reale (dopo la visualizzazione di una richiesta di conferma).

Funzioni

Crea codice

• Tale procedura consente di creare separatamente il codice e controlla-


re, pertanto, se la creazione ha luogo senza errori.
• Il richiamo ha luogo mediante:
‒ sequenza di menù Strumenti > Crea codice.

‒ oppure pulsante
‒ il codice viene visualizzato nella finestra Struttura del progetto
nella scheda di registro File.
Il codice generato automaticamente viene evidenziato in grigio
chiaro.

282/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


Fig. 18-7: Esempio di creazione di codice: prima - dopo

‒ Il codice viene creato. Una volta completato il procedimento, nella


finestra messaggi compare il seguente messaggio: È stato compi-
lato il progetto <"{0}" V{1}>. I risultati sono riportati nell'albero
file.

Procedimento

Avvio trasferimento progetto

• Nella barra di menù fare clic sul pulsante Installa …


• Si apre la finestra Trasferimento progetto.
• In alternativa il trasferimento del progetto può anche essere richiamato
tramite il percorso di menu: Strumenti > Installa.

Assegnazione sistema di controllo

1. Il sistema di controllo del progetto WorkVisual (2) è già assegnato al


sistema di controllo reale (4) mediante la freccia blu (3).

Fig. 18-8: Assegnazione sistema di controllo

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 283/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

Pos. Descrizione
1 Progressione del trasferimento progetto
2 Armadio di comando del progetto WorkVisual
3 Assegnazione del progetto all'armadio di comando reale
4 Armadio di comando reale nella rete degli impianti
5 Apre la finestra per la ricerca di armadi di comando nel-
la rete degli impianti
(>>> "Assegnazione sistema di controllo" Pagina 283)
6 Apre la finestra per il confronto progetti
7 Conferma dell'assegnazione dell'armadio di comando

2. Confermare l'assegnazione con il pulsante Avanti (7)

Ricerca dei sistemi di controllo disponibili nella rete

1. In WorkVisual è stato aperto Trasferimento progetto.


(>>> "Assegnazione sistema di controllo" Pagina 283)
2. A destra del simbolo dell'armadio visualizzato cliccare sul pulsante …
(5).
(>>> Fig. 18-8)
3. Si apre una finestra. Il filtro è impostato automaticamente in modo tale
che vengano visualizzati solo i comandi dello stesso tipo e della stes-
sa versione del comando virtuale. Questa impostazione può essere
modificata.

Fig. 18-9: Assegnazione di un progetto a un sistema di controllo

• Mediante i filtri Tipo e Versione (1) si può cercare specificamente


determinati sistemi di controllo.
• Se si conosce l'esatto nome del controllo allora lo si può cercare
direttamente nel campo di ricerca (2).
• Il risultato della ricerca viene ordinato in celle all'interno di una
struttura ad albero.
• Qui fare clic sul controllo di desiderato (3).

284/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


• Informazioni dettagliate sul sistema di controllo selezionato vengo-
no visualizzate nella finestra Informazioni sulla
cella/Informazioni sul controllo.
• Applicare la selezione con OK (5).

Risoluzione dei conflitti

Fig. 18-10: Risoluzione dei conflitti

• Se nel trasferimento del progetto sono presenti conflitti o discrepanze,


è visualizzata una finestra di eliminazione degli errori che indica le so-
luzioni dei conflitti.
• Selezionare la soluzione adatta tra quelle proposte (1) e applicarla con
il pulsante Continua (2).

È possibile tradurre e trasmettere il progetto solo quando tutti i conflitti


sono stati risolti.

Crea codice

• Dopo aver assegnato il sistema di controllo, WorkVisual genera dalla


configurazione grafica i file *.xml necessari per il sistema di controllo.

Fig. 18-11: Generazione codice

• Questa sequenza di lavoro può essere eseguita anche separatamente


in precedenza. Percorso di menu: Strumenti > Crea codice
• Se si rilevano errori durante la generazione del codice, la barra di
avanzamento diventa rossa e la generazione viene annullata.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 285/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

Trasferimento del progetto

• Nella successiva sequenza di lavoro il progetto finito è trasferito auto-


maticamente al sistema di controllo.

Fig. 18-12: Trasferimento del progetto

• In qualsiasi momento i progetti possono essere trasferiti al sistema di


controllo senza diritti di accesso espliciti.
Questi sono copiati sul sistema di controllo nella Gestione progetto.
• In caso di interruzione del collegamento durante il trasferimento, que-
sta sequenza di lavoro è annullata.

Attiva progetto.

• Dopo il trasferimento del progetto, questo può essere attivato diretta-


mente tramite WorkVisual. Se l'attivazione non riesce, ad es. perché i
diritti utente richiesti dal controllo non sono disponibili, è possibile riat-
tivare il progetto per il controllo tramite il simbolo (1).

Fig. 18-13: Attivazione di progetto non riuscita

• Se l'attivazione del progetto avviene con successo, è visualizzata una


barra di avanzamento verde. Premendo il pulsante Porta a termine
(1) la procedura guidata termina.

286/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


Fig. 18-14: Trasferimento del progetto effettuato con successo

• Qualora non si abbia risposto entro 30 min alla richiesta sul controllo
robot, il progetto viene comunque trasferito senza peraltro essere atti-
vo sul controllo robot. Il progetto può essere quindi attivato a parte.
(>>> Fig. 18-13)

18.4.1 Conferma del progetto sul controllo

Conferma dell'attivazione del progetto sullo smartPAD

1. A seconda delle modifiche nel progetto il profilo utente Esperto o Ad-


detto alla messa in servizio in sicurezza è necessario.
2. Sull'HMI dello smartPAD compare il messaggio "Input utente mancan-
te!".

Fig. 18-15: Messaggio di installazione

3. Sullo smartPAD si apre la finestra "Gestione progetto" con la domanda


"Vuoi autorizzare l'attivazione del progetto "1EG2-
R04-8_2_First_Test"?". Confermare l'attivazione con "Sì".

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 287/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

Fig. 18-16: Autorizzazione attivazione

4. Viene visualizzata un'altra finestra "Gestione progetto". All'interno sono


visualizzate le modifiche proposte.
Rispondere alla domanda "Continuare?" con "Sì".

Fig. 18-17: Visualizzazione delle modifiche

5. Sullo smartPAD un messaggio avvisa che la riconfigurazione è in cor-


so.

288/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


Fig. 18-18: Esecuzione della riconfigurazione.

6. Se nel progetto sono stati modificati parametri rilevanti sotto il profilo


della sicurezza, occorre acquisire il checksum modificato.
(>>> 18.4.2 "Attivazione della configurazione di sicurezza modificata"
Pagina 289)

18.4.2 Attivazione della configurazione di sicurezza modificata

Applicazione della somma di controllo modificata

1. Se in WorkVisual viene modificata la sicurezza, ad es. l'interfaccia di


sicurezza oppure i parametri SafeOperation, nella finestra messaggi
compare il seguente messaggio di errore: "Somma di controllo della
configurazione di sicurezza non corretta".

Fig. 18-19: Errore somma di controllo

2. Profilo utente Addetto alla messa in servizio in sicurezza necessario.


3. Aprire configurazione di sicurezza.
Percorso di menu: Tasto KUKA > Configurazione > Addetto alla mes-
sa in servizio in sicurezza
4. Nella finestra "Guida all'eliminazione dei problemi" selezionare la voce
"È appena stato attivato un progetto WorkVisual".

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 289/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

Fig. 18-20: Guida all'eliminazione dei problemi

5. Accettare la prima proposta premendo il pulsante "Attivare ora".


6. Nella finestra "Attivazione" rispondere alla domanda "Cambiare le se-
guenti parti della configurazione rilevante per la sicurezza?" con "Sì".
Viene eseguita la riconfigurazione.
7. Confermare il messaggio sullo smartPAD "Le modifiche sono state sal-
vate con successo" con il pulsante "OK".
8. Confermare il messaggio "Conferma: Somma di controllo della configu-
razione di sicurezza non corretta" con "Conferma tutto"

18.4.3 Gestione progetto ampliata sullo smartPAD

Descrizione

• Oltre al progetto attivo, sul sistema di controllo si possono "immagaz-


zinare" altri progetti non attivati.
• Questi progetti possono essere attivati in qualsiasi momento tramite lo
smartPAD, a condizione che si disponga dei relativi diritti utente.

290/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


Procedimento

Esempio: Attiva progetto.

1. Per copiare, cancellare, rinominare o attivare un progetto è richiesto


come minimo il gruppo utenti Esperto.
Se viene attivata anche una configurazione di sicurezza inclusa e mo-
dificata, allora è richiesto il gruppo utenti Addetto alla messa in ser-
vizio in sicurezza.
2. Richiamo della Gestione progetto
• Sull'interfaccia grafica toccare il simbolo della ruota dentata.
Viene visualizzato il progetto attualmente attivo sul controllo.

Fig. 18-21: Visualizzazione di progetto sull'interfaccia grafica

• Con il pulsante Apri si passa alla gestione progetto ampliata.

Fig. 18-22: Scheda di registro Progetti

• Nel campo Progetti disponibili toccare il progetto desiderato.


Il progetto selezionato viene evidenziato in blu.
• Attivare il progetto con il pulsante Attiva.

Fig. 18-23: Lista di azioni

• Attivare il progetto sul sistema di controllo.


(>>> 18.4.1 "Conferma del progetto sul controllo" Pagina 287)

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 291/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

Pos. Descrizione
Progetti speciali
1 Appare il progetto iniziale.
2 Ripristina lo stato di fornitura del controllo robot.
Diritti utente necessari: Gruppo funzionale Modifiche di pro-
grammi KRL critiche
3 Appare il progetto base.
4 Crea una copia del progetto base.
5 Appare il progetto attivo.
6 Salva il progetto attivo come progetto base. Il progetto attivo ri-
mane attivo e l'attuale progetto base è cancellato.
Diritti utente necessari: Gruppo funzionale Configurazione ge-
nerale
7 Crea una copia bloccata del progetto attivo.
Progetti disponibili
8 Lista dei progetti inattivi (eccetto progetto base e progetto inizia-
le)
9 Il simbolo indica che il progetto è bloccato.
10 In questo momento il progetto viene cancellato automaticamen-
te a condizione che prima non fosse attivato.
Questo lasso di tempo può essere impostato in WorkVisual per
ciascun progetto tramite Tempo per l’attivazione:. L'imposta-
zione di default è che il progetto non venga mai cancellato.
Non appena il progetto sul controllo robot è o era attivo una
volta, l'impostazione non ha più effetto: il progetto non viene
cancellato automaticamente.
In tutte le operazioni di copiatura si apre una finestra in cui è possibile im-
mettere un nome e una descrizione per la copia.

Pulsanti

Sono disponibili i seguenti pulsanti:


Pulsante Descrizione
Attiva Attiva il progetto selezionato.
Se il progetto selezionato è bloccato: crea una copia
del progetto selezionato. (Un progetto bloccato non
può essere attivato, se ne può attivare solo una co-
pia.) L'utente può poi decidere se attivare subito la
copia o se mantenere attivo il progetto attuale.
Presupposto: Gruppo d'utente Esperto
Se il progetto da attivare comprende delle modifiche
alle impostazioni di sicurezza: Gruppo d'utente Addet-
to alla messa in servizio in sicurezza
Pin Blocca il progetto.
Disponibile soltanto se è selezionato un progetto non
bloccato. Diritti utente necessari: Gruppo funzionale
Configurazione generale

292/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


Pulsante Descrizione
Unpin Sblocca il progetto.
Disponibile soltanto se è selezionato un progetto
bloccato. Diritti utente necessari: Gruppo funzionale
Configurazione generale
Copia Copia il progetto selezionato.
Cancella Cancella il progetto selezionato.
Disponibile soltanto se è selezionato un progetto non
attivo e non bloccato. Diritti utente necessari: Gruppo
funzionale Configurazione generale
Edit Apre una finestra in cui è possibile modificare il nome
e/o la descrizione del progetto selezionato.
Aggiorna Aggiorna la lista dei progetti. In questo modo vengo-
no visualizzati ad es. quei progetti trasferiti al control-
lo robot a partire dall'istante in cui si è aperta la vi-
sualizzazione.

18.4.3.1 Punti di ripristino

Descrizione

• Quando un progetto viene attivato sul controllo, quest'ultimo non can-


cella il progetto, ma lo colloca nel settore Punti di ripristino.
• Questo backup del progetto può essere ripristinato in qualsiasi mo-
mento con tutte le opzioni incluse.
• Se viene attivato un progetto che ha lo stesso nome del progetto già
attivo, quest'ultimo non viene sovrascritto bensì salvato nell'elenco di
ripristino.

Procedimento

Fig. 18-24: Punti di ripristino

Posizione Descrizione
Progetti (A) Elenco di tutti i progetti che sono stati trasferiti al
controllo, ma che non devono ancora essere attivati.
Punti di ripri- Elenco di tutti i progetti che erano già attivati sul con-
stino (B) trollo e che corrispondono ad un punto di ripristino.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 293/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

Pulsante Descrizione
Ripristina (1) Attiva il progetto selezionato.
Diritti utente necessari: Gruppo funzionale Configura-
zione generale
Cancella (2) Cancella il progetto selezionato.
Aggiorna (3) Aggiorna la lista dei progetti. In questo modo vengo-
no visualizzati ad es. quei progetti trasferiti al control-
lo robot a partire dall'istante in cui si è aperta la vi-
sualizzazione.

Gli ultimi cinque progetti attivati con successo sono disponibili come
punti di ripristino.

294/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


18.5 Esercizio: Utilizzo di progetti tramite WorkVisual

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Utilizzo di progetti tramite WorkVisual.

Compito

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 295/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

18.6 Amministrazione dell'utensile e della base

Descrizione

Fig. 18-25: Panoramica dei sistemi di coordinate

• Con il plugin amministrazione Tool/Base è disponibile un tool con il


quale i sistemi utensile e base si possono
‒ creare
‒ modificare
‒ cancellare
‒ copiare
‒ richiamare
.
• L'amministrazione Tool/Base è disponibile come segue
‒ sullo smartPAD del controllo
‒ in WorkVisual
(>>> 18.5.1 "Amministrazione dell'utensile e della base tramite
WorkVisual" Pagina 297)

• La successiva modifica dei sistemi di coordinate utensile e di base


può avere un effetto sui programmi già creati o sulle posizioni acqui-
site.
• Le modifiche dell'utensile e dei sistemi di coordinate di base devono
essere unite/regolarizzate con un'istantanea di archivio o di memoria
esistente.

296/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


18.6.1 Amministrazione dell'utensile e della base tramite WorkVisual

Descrizione

• L'amministrazione dell'utensile e della base di WorkVisual si concentra


sul controllo amministrativo e di coerenza, ad esempio in combinazio-
ne con programmi KRL.
• WorkVisual verifica la misura in cui i programmi o le tecnologie tra-
sversali sono influenzati da cambiamenti e offre soluzioni appropriate.
• Per motivi tecnici, la misurazione di un utensile o di una base è riser-
vata allo smartPAD.

Procedimento

Apertura dell'amministrazione Tool/Base

1. In WorkVisual aprire il progetto desiderato e attivarlo.


2. Percorso di menu: Editor > Amministrazione Tool/Base
3. L'Amministrazione Tool/Base si apre

Fig. 18-26: Amministrazione Tool / Base

Pos. Descrizione
1 Sistema di coordinate BASE occupato
2 Sistema di coordinate TOOL occupato
3 Qui vengono visualizzati i gruppi di sistemi di coordinate
TOOL e BASE presenti in questo progetto. Facendo clic su
un gruppo, questo viene indicato nella visualizzazione e tutti
gli altri gruppi vengono nascosti.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 297/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

Pos. Descrizione
4 Questo campo di selezione indica quali gruppi sono indicati
al momento nella visualizzazione. La lista di selezione con-
tiene tutti i gruppi esistenti. I gruppi possono essere visualiz-
zati o nascosti con le checkbox.
5 Crea un nuovo sistema di coordinate TOOL su questo con-
trollo.
6 Numero di sistemi di coordinate TOOL disponibili
Il numero può essere modificato.
7 Crea un nuovo sistema di coordinate BASE su questo con-
trollo.
8 Numero di sistemi di coordinate BASE disponibili
Il numero può essere modificato.
9 Crea un nuovo oggetto.
Un oggetto può contenere uno o più elementi.
10 Oggetti che sono stati creati o importati in questo progetto
Qui gli oggetti possono essere modificati o cancellati.
11 Utensile esterno occupato
Viene visualizzato e configurato in Basi (8).
12 Pezzo esterno occupato
Viene visualizzato e configurato in Tool (6).

Scheda di registro Geometria

Fig. 18-27: Scheda Geometria

• In aggiunta all'amministrazione Tool / Base, è possibile raffigurare il si-


stema di coordinate come struttura ad albero anche nella
finestra: Geometria > Struttura del progetto.
• Vedi la legenda: (>>> "Apertura dell'amministrazione Tool/Base" Pagi-
na 297)

298/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

18.6.1.1 Aggiunta utensile

Come si lavora con WorkVisual


Procedimento

Fig. 18-28: Aggiunta utensile

1. Cliccare sul pulsante (1). Si apre una finestra (2).


2. Nel campo Nome (3) digitare un nome per il sistema di coordinate.
3. Se i dati sono noti: espandere il campo Dettagli e inserire i dati di mi-
surazione.
4. Nel campo Indice (4) immettere il numero utensile (≙ $TOOL_DATA[in-
dice]).
5. Inserire numericamente l'offset TCP in X,Y,Z,A,B,C nel campo Misura-
zione (5).
6. Immettere i dati del carico (6) e il baricentro di massa.
7. Attivare il controllo dei dati di carico (7) o disattivarlo e configurare
quale reazione eseguire in caso di carico eccessivo o insufficiente.
Scelta Descrizione
Nessuna nessuna reazione
Avviso il controllo robot emette il seguente messaggio di sta-
to: Il controllo del carico del robot (tool {n.}) ha
rilevato un sovraccarico/un carico insufficiente.
Arrestare il controllo robot emette un messaggio di conferma
robot con lo stesso contenuto come per Avviso. Il robot si
arresta con uno STOP 2.

8. Se il numero utensile/l'indice di un utensile già utilizzato è stato spo-


stato in KRL, lo si può correggere con la funzione "Adattare l'utilizzo in
tutti i file KRL" (9).
9. Cliccare su OK (8). I dati vengono memorizzati.
10. L'utensile appare ora nell'Amministrazione Tool/Base.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 299/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

Gestione dei dati utensile

1. I dati utensile nell'amministrazione Tool / Base possono essere aperti


e visualizzati con il simbolo (1).

Fig. 18-29: Visualizzazione dati dell'utensile

2. Per cancellare nuovamente il sistema di coordinate utensile, fare clic


sul pulsante (2) e confermare il messaggio con Sì. Il sistema di
coordinate viene eliminato.

Modifica dell'ordine utensili

Fig. 18-30: Modifica dell'ordine utensili

1. Con il tasto sinistro del mouse afferrare e tenere premuto l'utensile da


spostare (1).
2. Trascinare l'utensile sulla posizione desiderata (2) e rilasciare il tasto
del mouse
3. Se l'utensile è già stato utilizzato in un programma KRL, il suo numero
può essere adattato automaticamente.

Fig. 18-31: Finestra di dialogo Adattamento dei file KRL

In questo caso nella finestra di dialogo "Adattare l’utilizzo in tutti i file


KRL?" rispondere con SÌ.
Viene adattato solo il modulo inline.
;prima $TOOL=TOOL_DATA[X_alt] ;dopo
$TOOL=TOOL_DATA[X_neu]

300/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

18.6.1.2 Aggiunta base

Come si lavora con WorkVisual


Procedimento

Fig. 18-32: Aggiunta della base

1. Cliccare sul pulsante (1). Si apre una finestra (2).


2. Nel campo Nome (3) digitare un nome per il sistema di coordinate.
3. Se i dati sono noti: espandere il campo Dettagli e inserire i dati di mi-
surazione.
4. Nel campo Indice (4) immettere il numero base (≙ $BASE_DATA[Indi-
ce]) .
5. Inserire numericamente l'origine delle coordinate base e la rotazione in
X,Y,Z,A,B,C nel campo Misurazione (5).
6. Se il numero base/l'indice di un sistema di coordinate base già utiliz-
zato è stato spostato in KRL, lo si può correggere con la funzione
"Adattare l'utilizzo in tutti i file KRL" (6).
7. Cliccare su OK (7). I dati vengono memorizzati.
8. La base appare ora nell'Amministrazione Tool/Base.

Ulteriori procedure

Lo spostamento, così come l'amministrazione dei sistemi di coordinate


base in WorkVisual, coincide con le procedure già note per i sistemi di
coordinate utensile.
(>>> 18.5.1.1 "Aggiunta utensile" Pagina 299)

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 301/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

18.6.1.3 Creazione utensile esterno e base


Come si lavora con WorkVisual

Fig. 18-33: Utensile esterno e base

Procedimento

1. Per creare un utensile esterno, il primo passo è quello di creare una


base con il nome dell'utensile.

Fig. 18-34: Creazione di un utensile esterno come base

2. Cliccare poi con il tasto destro del mouse sulla nuova Base appena
creata e, nel menu contestuale visualizzato, selezionare Converti in
utensile esterno.

Fig. 18-35: Converti in un utensile esterno

3. Se si vuole generare un pezzo guidato dal robot, allora nella prima


fase si deve creare un "utensile". Nella seconda fase poi aprire il me-
nu contestuale con il tasto destro del mouse e selezionare "Convertire
in pezzo".

302/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


Fig. 18-36: Convertire in pezzo

Contesto geometrico

• Una volta generati l'utensile esterno e il pezzo guidato dal robot, l'in-
terpolazione e la relazione tra i sistemi di coordinate possono essere
controllate in WorkVisual.
• Rappresentazione nel contesto geometrico
Oltre all'amministrazione Tool/Base aperta, aprire anche nella struttura
del progetto della scheda Geometria.

Fig. 18-37: Contesto geometrico

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 303/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

1 Il pezzo guidato dal robot Il sistema di coordinate si ri-


ferisce al TCP della Flange.
2 Utensile esterno Il sistema di coordinate si ri-
ferisce a quello World.
A Passando il cursore sul sim- Si apre un tooltip con il per-
bolo del pezzo guidato dal corso dell'oggetto (1)
robot
B Passando il cursore sul sim- Si apre un tooltip con il per-
bolo dell'utensile esterno corso dell'oggetto (2)

Il sistema di coordinate Flange è sempre attivo e non può essere


cancellato.

18.7 Modifica di finecorsa software

Descrizione

Esistono diverse possibilità di modifica dei finecorsa software:

• Immissione manuale dei valori desiderati.


• Adattamento automatico dei finecorsa a uno o più programmi.
Il controllo robot rileva al riguardo le posizioni minime e massime degli
assi riscontrate nei programmi. Tali valori possono essere quindi impo-
stati come finecorsa software.
• Modifiche dei finecorsa software tramite variabili di sistema
• Configurazione dei finecorsa software tramite il software di configura-
zione WorkVisual.

Presupposto

• Gruppo utenti Esperto


• Modo operativo T1, T2 o AUT

Procedimento

Per modificare manualmente il finecorsa software:


1. Nel menu principale selezionare Messa in servizio > Assistenza >
Finecorsa software. Si apre la finestra Finecorsa software.
2. Nelle colonne Negativo e Positivo modificare all'occorrenza il finecor-
sa.
3. Salvare le modifiche con Salva.
Per adattare il finecorsa software al programma:
1. Nel menu principale selezionare Messa in servizio > Assistenza >
Finecorsa software. Si apre la finestra Finecorsa software.
2. Cliccare su Rilevamento autom.. Viene visualizzato il seguente mes-
saggio: Rilevazione automatica in corso.
3. Avviare il programma al quale si intende adattare il finecorsa. Una vol-
ta completata l'esecuzione del programma, disattivarne la selezione.
Nella finestra Finecorsa software viene visualizzata la posizione mas-
sima e minima raggiunta da ogni asse.
4. Ripetere il passo 3 per tutti i programmi ai quali si intende adattare il
finecorsa.

304/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Nella finestra Finecorsa software viene visualizzata la posizione mas-

Come si lavora con WorkVisual


sima e minima raggiunta da ogni asse, e precisamente riferita com-
plessivamente ai programmi eseguiti.
5. Una volta completata l'esecuzione di tutti i programmi desiderati, pre-
mere nella finestra Finecorsa software su Fine.
6. Premere Salva, per applicare i valori rilevati come finecorsa software.
7. Modificare eventualmente ancora una volta i valori rilevati automatica-
mente.
Consiglio: ridurre i valori minimi rilevati di 5°. Aumentare i valori
massimi rilevati di 5°.
Il buffer previene che gli assi raggiungano i finecorsa mentre è in
corso il programma e intervenga pertanto un arresto.

8. Salvare le modifiche con Salva.

Descrizione

Finestra Finecorsa software:

Fig. 18-38: Prima del rilevamento automatico

Pos. Descrizione
1 Finecorsa corrente negativo
2 Posizione attiva dell'asse
3 Finecorsa corrente negativo

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 305/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

Fig. 18-39: Durante il rilevamento automatico

Pos. Descrizione
4 Posizione minima assunta dall'asse dall'inizio del rilevamento
5 Posizione massima assunta dall'asse dall'inizio del rilevamento

Pulsanti

Sono a disposizione i pulsanti seguenti (solo nel gruppo utenti Esperto):


Pulsante Descrizione
Rilevamento autom. Avvia il rilevamento automatico:
Il controllo robot scrive le posizioni minime e
massime assunte dagli assi a partire da que-
st'instante nella finestra Finecorsa software
nelle colonne Minimo e Massimo.
Fine Termina il rilevamento automatico. Trasferisce
nelle colonne Negativo e Positivo le posizioni
minime e massime rilevate senza tuttavia sal-
varle.
Salva Salva i valori nelle colonne Negativo e Positi-
vo come finecorsa software.

Modifica dei finecorsa software tramite variabili di sistema

• È possibile modificare i finecorsa software per il tempo di esecuzione


del programma (nel programma).
• Se si seleziona questo metodo, assicurarsi che ad ogni lancio del pro-
gramma vengano impostati i valori corretti.
• Questi vengono visualizzati come di consueto nell'interfaccia di confi-
gurazione familiare.
Sintassi

• softp_end[asse] = angolo massimo dell'asse orientato positiva-


mente

softp_end[1] = 120 ; L'asse 1 si arresta a 120°

306/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


• softp_end[asse] = angolo massimo dell'asse orientato negativa-
mente

softn_end[1] = -120 ; L'asse 1 si arresta a -120°

Finecorsa software nella configurazione dei dati macchina

Fig. 18-40: Finecorsa software nella configurazione dei dati macchina

I finecorsa software si possono adattare anche direttamente nei dati mac-


china. Indipendentemente dal metodo selezionato il valore modificato vie-
ne visualizzato in tutti i livelli di configurazione.
Percorso di menu: Tasto robot > Configurazione > Configurazione dati
macchina
Nella finestra di configurazione dei dati della macchina è possibile modi-
ficare parametri approfonditi, relativi agli assi, come ad esempio lo
strappo dell'asse o le simulazioni del driver di azionamento.

18.7.1 Modifica di finecorsa software tramite WorkVisual

Descrizione

• I finecorsa software eventualmente impostati in WorkVisual verranno


impostati sul controllo solo dopo il trasferimento e l'attivazione del pro-
getto.
• I finecorsa software si possono modificare e adattare sul controllo in
qualsiasi momento.

Procedimento

1. Il progetto da configurare è caricato in WorkVisual e il sistema di con-


trollo è impostato come attivo.
2. Richiamare la configurazione dei dati macchina

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 307/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

Fig. 18-41: Richiamo della configurazione dei dati macchina

• Marcare la cinematica nella struttura del progetto (1). La KR 16


R1610 nell'esempio raffigurato.
• Nel menu di scelta rapida aperto selezionare Configurazione dei
dati macchina (2).
3. Impostare i finecorsa software

Fig. 18-42: Finecorsa software

• Nella finestra principale scrollare nella sezione Finecorsa software.


• Immettere per ciascun asse rispettivamente un limite positivo e
uno negativo.

Finecorsa software per assi supplementari

Per gli assi supplementari procedere analogamente.

308/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Come si lavora con WorkVisual


1. Nel progetto WorkVisual aprire i dati macchina per l'asse supplementa-
re da configurare.
2. Impostare i finecorsa software

Fig. 18-43: Finecorsa software di un'unità lineare KUKA

• Nella finestra principale scrollare nella sezione Proprietà degli assi.


• Immettere la limitazione positiva e quella negativa.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 309/345


Luca Galeotti, A.C.M.I. SpA
Come si lavora con WorkVisual Programmazione robot 2

18.7.2 Esercizio: Impostazione dei finecorsa software del robot

Compito

Aprire il quaderno del corso e svolgere il compito indicato dall'istruttore.


• Esercizio: Impostazione dei finecorsa software del robot

Compito

310/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
19 Allegato

19.1 Programmazione di messaggi estesi

19.1.1 Struttura di messaggi estesi

Variabili complesse per la programmazione dei messaggi

• Struttura per mittente, numero messaggio, testo messaggio


• Struttura come metacarattere per i 3 parametri possibili
• Struttura per il comportamento generale del messaggio
• Struttura della scritta dei pulsante nei messaggi di dialogo
L'impostazione, la cancellazione o il controllo dei messaggi si effettua me-
diante funzioni standard KUKA predisposte. Ciò richiede parecchie variabi-
li.
Funzioni per la programmazione di messaggi

• Revoca del messaggio


• Verifica del messaggio
• Cancellazione del messaggio
• Revoca del dialogo
• Verifica del dialogo

19.1.2 Variabili e strutture nei messaggi definiti dall'utente

Struttura per mittente, numero messaggio, testo messaggio


Struttura KUKA predefinita: KrlMsg_T

STRUC KrlMsg_T CHAR Modul[24], INT Nr, CHAR Msg_txt[80]

• in base all'esempio

DECL KrlMsg_T mymessage


mymessage = {Modul[ ] "College", Nr 1906, Msg_txt[ ] "My
first Message"}

• Mittente: Modul[ ]"College"


‒ Modul[ ] può contere al massimo 24 caratteri.
‒ Il testo del mittente viene collocato nell'indicazione tra "< >" dal si-
stema.
• Numero del messaggio: Nr 1906
‒ Nr è un numero intero liberamente selezionabile
‒ I numeri utilizzati due volte non vengono riconosciuti.
• Testo messaggio: Msg_txt[ ] "My first Message"

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 311/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

‒ Msg_txt[ ] può contere al massimo 80 caratteri.


Se il Msg_txt[ ] deve essere nuovamente inizializzato per un
messaggio successivo, è dapprima necessario cancellare il "vec-
chio" contenuto. (>>> "Principio di utilizzo di funzioni standard KU-
KA" Pagina 149)

...
INT result
INI
...
result = StrClear(My_Message.Msg_txt[])
...

In alternativa:

...
INT X
INI
FOR x=1 TO 80...
My_Message.Msg_txt[x] = " "
ENDFOR
...

‒ Il testo viene riportato nella seconda riga del messaggio.

Selezione del tipo di messaggio

• Tipo di dati di enumerazione EKrlMsgType

ENUM EKrlMsgType Notify, State, Quit, Waiting

• #Quit: emissione di un messaggio di conferma

• #STATE: emissione di un messaggio di stato

• #NOTIFY: emissione di un messaggio di istruzioni

• #WAITING: emissione di un messaggio di attesa

Variabili nel testo del messaggio

In un testo di messaggio si deve rappresentare il valore di una variabile.


Ad esempio si deve visualizzare il numero di pezzi attuale. A tal fine il te-
sto del messaggio necessita dei cosiddetti metacaratteri. Il numero massi-
mo di metacaratteri è 3. La presentazione è %1, %2 e %3.
Per questo motivo si richiedono 3 set di parametri. Ogni set di parametri è
costituito dalla struttura KUKA KrlMsgPar_T:

Enum KrlMsgParType_T Value, Key, Empty


STRUC KrlMsgPar_T KrlMsgParType_T Par_Type, CHAR
Par_txt[26], INT Par_Int, REAL Par_Real, BOOL Par_Bool

Utilizzo dei singoli aggregati

• Par_Type: Tipo di parametro/metacarattere


‒ #VALUE: Il parametro viene integrato direttamente nella forma tra-
sferita nel testo di messaggio (quindi come stringa, valore
INT,REAL o BOOL)

312/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
‒ #KEY: Il parametro è una parola chiave, in base alla quale si effet-
tua la ricerca nella banca dati messaggi per caricare il testo corri-
spondente.
‒ #EMPTY: Il parametro è vuoto.
• Par_txt[26]: Testo o parola chiave per il parametro
• Par_Int: Trasmissione di un valore intero come parametro
• Par_Real: Trasmissione di un valore reale come parametro
• Par_Bool: Trasmissione di un valore di Boole come parametro, il te-
sto raffigurato è TRUE o FALSE
Esempi di programma per la trasmissione diretta di parametri nel metaca-
rattere:
Il testo del messaggio è Msg_txt[ ] "Guasto a %1"

DECL KrlMsgPar_T Parameter[3] ; creare 3 set di parametri


...
Parameter[1] = {Par_Type #VALUE, Par_txt[ ] "Finisher"}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
...

Messaggio emesso: Guasto al finisher


Poiché raramente i parametri sono creati da un input costante, i singoli
aggregati vengono trasmessi con il punto separatore.

Esempi di programma per la trasmissione di parametri nel metacarattere


con punto separatore:
Il testo del messaggio è Msg_txt[ ] "Mancano %1 componenti"

DECL KrlMsgPar_T Parameter[3] ; creare 3 set di parametri


DECL INT missing_part
...
missing_part = 13
...
Parameter[1] = {Par_Type #VALUE}
Parameter[1].Par_Int = missing_part
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
...

Messaggio emesso: Mancano 13 componenti

Struttura per opzioni di messaggio generali

Alla revoca di un messaggio, vengono ancora trasmesse 4 opzioni di


messaggio. Con queste opzioni si può intervenire su avanzamento, can-
cellazione del messaggio e immissione nella banca dati log.
• Struttura KUKA predefinita: KrlMsgOpt_T

STRUC KrlMsgOpt_T BOOL VL_Stop, BOOL Clear_P_Reset, BOOL


Clear_SAW, BOOL Log_To_DB

• VL_Stop: Arresto dell'avanzamento


‒ TRUE provoca un arresto dell'avanzamento. Il messaggio viene
settato in sincrono con il puntatore principale.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 313/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

‒ Default: TRUE
• Clear_P_Reset : Cancellazione al reset/deselezione del programma
‒ TRUE cancella tutti i messaggi di stato, di conferma e di attesa se
il programma viene resettato o deselezionato. Default: TRUE
‒ Default: TRUE

I messaggi di istruzioni si possono cancellare solo con le barre di


commutazione OK o Tutti OK.

• Clear_P_SAW: Cancellazione in caso di selezione di frasi dalla barra


di commutazione Sel. frase.
‒ TRUE cancella tutti i messaggi di stato, di conferma e di attesa se
si esegue una selezione di frasi dalla barra di commutazione Sel.
frase.
‒ Default: FALSE
• Log_To_DB: Immissione nella banca dati log
‒ TRUE consente di loggare questo messaggio nella banca dati log.
‒ Default: FALSE

19.1.3 Funzioni nei messaggi definiti dell'utente

Inserimento o generazione di un messaggio

Con questa funzione si inserire un messaggio nel programma KRL. Ciò si-
gnifica che il messaggio corrispondente viene elaborato nella memoria
tampone messaggi interna. I messaggi di istruzioni non gestiti nella me-
moria tampone messaggi rappresentano un'eccezione.
• Funzioni Build-In per la generazione di un messaggio

DEFFCT INT Set_KrlMsg(Type:IN, MyMessage:OUT,


Parameter[ ]:OUT, Option:OUT)
DECL EKrlMsgType Type
DECL KrlMsg_T MyMessage
DECL KrlMsgPar_T Parameter[ ]
DECL KrlMsgOpt_T Option

• Tipo: tipo di messaggio (#Notify, #State, #Quit, #Waiting)


• MyMessage: struttura per le informazioni generali sul messaggio (mit-
tente, numero messaggio, testo messaggio)
• Parametri[ ]: Campo dei 3 possibili parametri per i metacaratteri
%1, %2 e %3. Devono sempre essere trasmessi tutti e 3 i parametri,
anche quando i metacaratteri non vengono utilizzati.
• Opzione: struttura per opzioni generali sul messaggio (arresto dell'a-
vanzamento, logging nella banca dati messaggi, cancellazione
implicita del messaggio al momento del reset del programma o della
selezione frase)
• Valore di ritorno della funzione: viene definita "handle" (numero tic-
ket). Con questo "handle" è possibile controllare se il messaggio è
stato generato con successo. Inoltre l'"handle" costituisce anche il nu-
mero di identificazione nella memoria tampone messaggi. In tal modo
si può controllare o cancellare un determinato messaggio.

DEF MyProg( )
DECL INT handle
...

314/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
handle = Set_KrlMsg(Type, MyMessage, Parameter[ ], Option)

Quando si lavora con più messaggi, per ciascun messaggio deve


essere utilizzato o salvato temporaneamente un handle proprio.

‒ handle == -1: Impossibile generare il messaggio (per es. per-


ché la memoria tampone è piena).
‒ handle > 0: Il messaggio è stato generato con successo e vie-
ne gestito nella memoria tampone dei messaggi con il relativo nu-
mero identificativo.

I messaggi di istruzioni sono elaborati in base al principio "fire and


forget". Nei messaggi di istruzioni viene sempre restituito un handle
= 0, qualora il messaggio sia stato generato con successo.

Controllo di un messaggio

Con questa funzione si può verificare, se esiste ancora un determinato


messaggio con un handle definito. Si controlla quindi se il messaggio si
trova ancora nella memoria tampone dei messaggi.
• Funzioni Build-In per il controllo di un messaggio

DEFFCT BOOL Exists_KrlMsg(nHandle:IN)


DECL INT nHandle

• nHandle: L'handle predisposto dalla funzione “Set_KrlMsg(…)“ per


il messaggio
• Valore di ritorno della funzione:

DEF MyProg( )
DECL INT handle
DECL BOOL present
...
handle = Set_KrlMsg(Type, MyMessage, Parameter[ ], Option)
...
present= Exists_KrlMsg(handle)

‒ present == TRUE: questo messaggio è ancora nella memoria


tampone messaggi
‒ present == FALSE: questo messaggio non si trova più nella
memoria tampone messaggi (quindi è stato confermato o cancella-
to)

Cancellazione di un messaggio

Con questa funzione si può cancellare un messaggio. Ciò significa che il


messaggio corrispondente viene cancellato nella memoria tampone mes-
saggi interna.

• Funzioni Build-In per il controllo di un messaggio

DEFFCT BOOL Clear_KrlMsg(nHandle:IN)


DECL INT nHandle

• nHandle: L'handle predisposto dalla funzione “Set_KrlMsg(…)“ per


il messaggio

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 315/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

• Valore di ritorno della funzione:

DEF MyProg( )
DECL INT handle
DECL BOOL erase
...
handle = Set_KrlMsg(Type, MyMessage, Parameter[ ], Option)
...
eraser = Clear_KrlMsg(handle)

‒ eraser == TRUE: è stato possibile cancellare il messaggio


‒ eraser == FALSE: è stato impossibile cancellare questo mes-
saggio
Funzioni speciali per la cancellazione con la funzione
Clear_KrlMsg(handle):
‒ Clear_KrlMsg(-1): tutti i messaggi inizializzati da questo
processo vengono cancellati.
‒ Clear_KrlMsg(-99): tutte le applicazioni utente KRL ini-
zializzate vengono cancellate.

19.1.4 Intervento con un messaggio di istruzioni

Descrizione di un messaggio istruzioni definito dall'utente

Fig. 19-1: Messaggio di istruzioni

• I messaggi di istruzioni non vengono gestiti nella memoria tampone


messaggi.
• I messaggi di istruzioni si possono cancellare solo con le barre di
commutazione OK o Tutti OK.

Funzione di un messaggio di istruzioni definito dall'utente

• I messaggi di istruzioni sono adatti a fornire informazioni generali.


• Si genera solo un messaggio di istruzioni. Eventualmente si controlla,
se il messaggio è arrivato correttamente.
• Poiché i messaggi di istruzioni non vengono gestiti, se ne possono ge-
nerare ca 3 milioni.

Programmazione di messaggi di istruzioni definiti dall'utente

1. Caricamento del programma principale nell'editor


2. Dichiarazione variabili di lavoro per:
• mittente, numero messaggio, testo messaggio (da KrlMsg_T)
• campo con 3 elementi per i parametri (da KrlMsgPar_T)
• opzioni di messaggio generali (da KrlMsgOpt_T)
• "Handle" (come INT)

316/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
3. Inizializzare le variabili di lavoro con i valori desiderati
4. Programmare richiamo di funzione Set_KrlMsg(…)
5. All'occorrenza valutare "Handle", per stabilire se la collocazione si è
conclusa con successo
6. Chiudere e salvare il programma principale

Fig. 19-2: Messaggio di istruzioni

Esempio di programma per il suddetto annuncio:

DECL KRLMSG_T mymessage


DECL KRLMSGPAR_T Parameter[3]
DECL KRLMSGOPT_T Option
DECL INT handle
...
mymessage={modul[] "College", Nr 1906, msg_txt[] "My first
Message"}
Option={VL_STOP FALSE, Clear_P_Reset TRUE, Clear_P_SAW
FALSE, Log_to_DB TRUE}
;i metacaratteri[1..3] sono vuoti
Parameter[1] = {Par_Type #EMPTY}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
handle = Set_KrlMsg(#NOTIFY, mymessage, Parameter[ ],
Option)
...

19.1.5 Intervento con un messaggio di stato

Descrizione di un messaggio di stato definito dall'utente

Fig. 19-3: Messaggio di stato

• I messaggi di stato vengono gestiti nella memoria tampone messaggi.


• I messaggi di stato non possono essere cancellati di nuovo dalla bar-
ra di commutazione "Tutti OK".

Funzione di un messaggio di stato definito dall'utente

• I messaggi di stato sono adatti a indicare la modifica di uno stato (per


es. eliminazione di un ingresso).
• Il programma ad esempio viene fermato, finché non c'è più lo stato at-
tivo.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 317/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

Ai diversi tipi di messaggio non è connessa alcuna reazione presta-


bilita del sistema robot (ad es. il robot rallenta o si ferma il program-
ma). Le reazioni desiderate devono essere programmate.

• Nella memoria tampone messaggi si gestiscono max. 100 messaggi.


(messaggi di stato, di conferma, di attesa e dialoghi)
• Il messaggio di stato viene di nuovo cancellato con la funzione
Clear_KrlMsg( ).
• I messaggi di stato possono anche essere cancellati dalle impostazioni
nelle opzioni di messaggio del reset programma o all'uscita dal pro-
gramma o con una selezione frase

Programmazione di messaggi di stato definiti dall'utente

1. Caricamento del programma principale nell'editor


2. Dichiarazione variabili di lavoro per:
• mittente, numero messaggio, testo messaggio (da KrlMsg_T)
• campo con 3 elementi per i parametri (da KrlMsgPar_T)
• opzioni di messaggio generali (da KrlMsgOpt_T)
• "Handle" (come INT)
• variabile per il risultato del collaudo (come BOOL)
• variabile per il risultato della cancellazione (come BOOL)
3. Inizializzare le variabili di lavoro con i valori desiderati
4. Programmare richiamo di funzione Set_KrlMsg(…)
5. Arrestare il programma con un loop, finché non è più presente lo stato
da attivare
6. Cancellare messaggio di stato con il richiamo della funzione
Clear_KrlMsg( )
7. Chiudere e salvare il programma principale

Fig. 19-4: Messaggio di stato

Esempio di programma per il suddetto annuncio/messaggio:


Il messaggio di stato viene attivato mediante lo stato dell'ingresso 12
(FALSE) Il programma viene arrestato dopo la revoca del messaggio. Il
messaggio viene cancellato mediante lo stato dell'ingresso 12 (TRUE). Poi
si continua con il programma.
Il messaggio viene cancellato anche in caso di reset del programma o al-
l'uscita dal programma. Ciò accade impostando nelle opzioni di messaggio
Clear_P_Reset TRUE.

DECL KRLMSG_T mymessage


DECL KRLMSGPAR_T Parameter[3]
DECL KRLMSGOPT_T Option
DECL INT handle
DECL BOOL present, eraser
...
IF $IN[12]==FALSE THEN

318/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
mymessage={modul[] "College", Nr 1909, msg_txt[] "My
Messagetext"}
Option= {VL_STOP FALSE, Clear_P_Reset TRUE, Clear_P_SAW
FALSE, Log_to_DB TRUE}
;i metacaratteri[1..3] sono vuoti
Parameter[1] = {Par_Type #EMPTY}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
handle = Set_KrlMsg(#STATE, mymessage, Parameter[ ], Option)
ENDIF
eraser=FALSE
;loop per arresto fino alla cancellazione del messaggio
REPEAT
IF $IN[12]==TRUE THEN
eraser=Clear_KrlMsg(handle) ;Cancellazione del messaggio
ENDIF
present=Exists_KrlMsg(handle) ;controllo supplementare
UNTIL NOT(present) or eraser

19.1.6 Intervento con un messaggio di conferma

Descrizione di un messaggio di conferma definito dall'utente

Fig. 19-5: Messaggio di conferma

• I messaggi di conferma vengono gestiti nella memoria tampone mes-


saggi.
• I messaggi di conferma si possono cancellare con le barre di commu-
tazione OK o Tutti OK.

Funzione di un messaggio di conferma definito dall'utente

• I messaggi di conferma sono adatti a visualizzare informazioni, di cui


l'utente deve essere a conoscenza.
• Il programma ad esempio viene arrestato finché il messaggio non è
stato confermato.
Ai diversi tipi di messaggio non è connessa alcuna reazione presta-
bilita del sistema robot (ad es. il robot rallenta o si ferma il program-
ma). Le reazioni desiderate devono essere programmate.

• Nella memoria tampone messaggi si gestiscono max. 100 messaggi.


• Con il messaggio di conferma (contrariamente al messaggio di istru-
zioni) si può verificare, se l'utente lo ha confermato o meno.
• I messaggi di conferma possono anche essere cancellati con una fun-
zione del programma.
• I messaggi di conferma possono anche essere cancellati dalle impo-
stazioni nelle opzioni di messaggio del reset programma o all'uscita
dal programma o con una selezione frase.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 319/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

Programmazione di messaggi di conferma definiti dall'utente

1. Caricamento del programma principale nell'editor.


2. Dichiarazione variabili di lavoro per:
• mittente, numero messaggio, testo messaggio (da KrlMsg_T)
• campo con 3 elementi per i parametri (da KrlMsgPar_T)
• opzioni di messaggio generali (da KrlMsgOpt_T)
• "Handle" (come INT)
• variabile per il risultato del collaudo (come BOOL)
3. Inizializzare le variabili di lavoro con i valori desiderati.
4. Programmare richiamo di funzione Set_KrlMsg(…).
5. Controllare la condizione di conferma in un loop.
6. Controllare con il richiamo della funzione Exists_KrlMsg(...) se il
messaggio è stato già confermato dall'utente. Quando viene conferma-
to un messaggio, uscire dal loop di cui sopra.
7. Chiudere e salvare il programma principale.

Fig. 19-6: Messaggio di conferma

Esempio di programma per il suddetto annuncio/messaggio:


Il programma viene arrestato dopo la revoca del messaggio. Il messaggio
viene cancellato azionando il pulsante OK o Tutti OK. Poi si continua con
il programma.
Il messaggio viene cancellato anche in caso di reset del programma o al-
l'uscita dal programma. Ciò accade impostando nelle opzioni di messaggio
Clear_P_Reset TRUE.

DECL KRLMSG_T mymessage


DECL KRLMSGPAR_T Parameter[3]
DECL KRLMSGOPT_T Option
DECL INT handle
DECL BOOL present
...
mymessage={modul[] "College", Nr 1909, msg_txt[] "My
Messagetext"}
Option= {VL_STOP FALSE, Clear_P_Reset TRUE, Clear_P_SAW
FALSE, Log_to_DB TRUE}
;i metacaratteri[1..3] sono vuoti
Parameter[1] = {Par_Type #EMPTY}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
handle = Set_KrlMsg(#QUIT, mymessage, Parameter[ ], Option)

;loop per arresto fino alla cancellazione del messaggio


REPEAT
present=Exists_KrlMsg(handle)
UNTIL NOT(present)

320/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
19.1.7 Intervento con un messaggio di attesa

Descrizione di un messaggio di attesa definito dall'utente

Fig. 19-7: Messaggio di attesa

• I messaggi di attesa vengono gestiti nella memoria tampone messag-


gi.
• I messaggi di attesa possono di nuovo essere cancellati dalla barra di
commutazione Simulare.
• I messaggi di attesa non possono essere cancellati di nuovo dalla
barra di commutazione Tutti OK.

Funzione di un messaggio di attesa definito dall'utente

• I messaggi di attesa sono idonei ad aspettare il manifestarsi di uno


stato e a visualizzare il simbolo dell'attesa.
• Il programma ad esempio viene fermato finché non si ha lo stato atte-
so.
• Nella memoria tampone messaggi si gestiscono max. 100 messaggi.
• Il messaggio di attesa viene di nuovo cancellato con la funzione
Clear_KrlMsg( ).
• I messaggi di attesa possono anche essere cancellati dalle imposta-
zioni nelle opzioni di messaggio al reset del programma o all'uscita dal
programma o con una selezione frase.

Programmazione di messaggi di attesa definiti dall'utente

1. Caricamento del programma principale nell'editor.


2. Dichiarazione variabili di lavoro per:
• mittente, numero messaggio, testo messaggio (da KrlMsg_T)
• campo con 3 elementi per i parametri (da KrlMsgPar_T)
• opzioni di messaggio generali (da KrlMsgOpt_T)
• "Handle" (come INT)
• variabile per il risultato del collaudo (come BOOL)
• variabile per il risultato della cancellazione (come BOOL)
3. Inizializzare le variabili di lavoro con i valori desiderati.
4. Programmare richiamo di funzione Set_KrlMsg(…).
5. Arrestare il programma con un loop, finché non si presenta lo stato at-
teso o finché il messaggio non viene cancellato con il pulsante Simu-
lare.
6. Cancellare messaggio di attesa con il richiamo della funzione
Clear_KrlMsg( ).
7. Chiudere e salvare il programma principale.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 321/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

Fig. 19-8: Messaggio di attesa

Esempio di programma per il suddetto annuncio/messaggio:


Il programma viene arrestato dopo la revoca del messaggio. Il messaggio
viene cancellato mediante lo stato dell'ingresso 12 (TRUE). Poi si continua
con il programma.
Il messaggio viene cancellato anche in caso di reset del programma o al-
l'uscita dal programma. Ciò accade impostando nelle opzioni di messaggio
Clear_P_Reset TRUE.

DECL KRLMSG_T mymessage


DECL KRLMSGPAR_T Parameter[3]
DECL KRLMSGOPT_T Option
DECL INT handle
DECL BOOL present, eraser
...
IF $IN[12]==FALSE THEN
mymessage={modul[] "College", Nr 1909, msg_txt[] "My
Messagetext"}
Option= {VL_STOP FALSE, Clear_P_Reset TRUE, Clear_P_SAW
FALSE, Log_to_DB TRUE}
;i metacaratteri[1..3] sono vuoti
Parameter[1] = {Par_Type #EMPTY}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
handle = Set_KrlMsg(#WAITING, mymessage, Parameter[ ],
Option)
ENDIF
eraser=FALSE
;loop per arresto fino alla cancellazione del messaggio
REPEAT
IF $IN[12]==TRUE THEN
eraser=Clear_KrlMsg(handle) ;Meldung loeschen
ENDIF
present=Exists_KrlMsg(handle) ;kann über simuliere
geloescht worden sein
UNTIL NOT(present) or eraser

322/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
19.1.8 Ulteriori variabili e strutture nei dialoghi

Struttura per l'assegnazione dei pulsanti

Fig. 19-9: Dialogo

• Struttura KUKA predefinita: KrlMsgDlgSK_T

Enum KrlMsgParType_T Value, Key, Empty


Struc KrlMsgDlgSK_T KrlMsgParType_T Sk_Type, Char SK_txt[10]

• Sk_Type: Tipo dati di enumerazione per il tipo di didascalia dei pul-


santi come ENUM
‒ #VALUE: Il parametro viene integrato direttamente nella forma tra-
sferita nel testo di messaggio.
‒ #KEY: Il parametro è una parola chiave, in base alla quale si effet-
tua la ricerca nella banca dati messaggi per caricare il testo corri-
spondente.
‒ #EMPTY: Il pulsante non è assegnato
• Sk_txt[ ]: Campo per testo o parola chiave per il pulsante
• Esempio di programma per la didascalia di 7 pulsanti di un dialogo:

DECL KRLMSGDLGSK_T Softkey[7] ; Preparare 7 possibili


softkey
...
softkey[1]={sk_type #value, sk_txt[] "key1"}
softkey[2]={sk_type #value, sk_txt[] "key2"}
softkey[3]={sk_type #value, sk_txt[] "key3"}
softkey[4]={sk_type #value, sk_txt[] "key4"}
softkey[5]={sk_type #value, sk_txt[] "key5"}
softkey[6]={sk_type #value, sk_txt[] "key6"}
softkey[7]={sk_type #value, sk_txt[] "key7"}
...

Si possono assegnare max. 10 caratteri per pulsante. A seconda dei ca-


ratteri utilizzati risultano pulsanti di diversa larghezza.

19.1.8.1 Funzioni nei dialoghi

Impostazione di un dialogo

Con la funzione Set_KrlDlg( ) si genera un messaggio di dialogo Ciò


significa che il messaggio viene trasferito nella memoria tampone messag-
gi e viene visualizzato in una finestra di messaggi specifica con pulsanti.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 323/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

Fig. 19-10: Dialogo

• Funzioni Build-In per la generazione di un dialogo

DEFFCT Extfctp Int Set_KrlDlg (MyQuestion:OUT,


Parameter[ ]:OUT, Touchkey[ ]:OUT, Option:OUT)
DECL KrlMsg_T MyQuestion
DECL KrlMsgPar_T Parameter[ ]
DECL KrlMsgDlgSK_T Touchkey[ ]
DECL KrlMsgOpt_T Option

• MyQuestion: struttura per le informazioni generali sul messaggio (mit-


tente, numero messaggio, testo della domanda)
• Parametri[ ]: Campo per i 3 possibili parametri per i metacaratteri
%1, %2 e %3. Devono sempre essere trasmessi tutti e 3 i parametri,
anche quando i metacaratteri non vengono utilizzati.
• Touchkey[ ]: struttura per la didascalia dei 7 possibili pulsanti. De-
vono sempre essere trasmessi tutti e 7 i parametri, anche quando i
pulsanti non vengono utilizzati.
• Opzione: struttura per opzioni generali sul messaggio (arresto dell'a-
vanzamento, logging nella banca dati messaggi, cancellazione
implicita del messaggio al momento del reset del programma o della
selezione frase)
• Valore di ritorno del dialogo: "handle" per il dialogo. Con questo
"handle" è possibile controllare se il dialogo è stato revocato corretta-
mente. Inoltre l'"handle" costituisce anche il numero di identificazione
nella memoria tampone messaggi.

DEF MyProg( )
DECL INT handle
...
handle = Set_KrlDlg(MyQuestion, Parameter[ ], Touchkey[ ],
Option)

‒ handle == -1: Impossibile generare il dialogo (ad es. perché un


altro dialogo è ancora attivo e non si è ancora risposto ad esso
oppure la memoria tampone è piena)
‒ handle > 0: Il dialogo è stato generato con successo e viene
gestito nella memoria tampone dei messaggi con il relativo numero
identificativo.

324/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
Un dialogo può sempre essere generato, solo se non ci sono più al-
tri dialoghi.
La funzione genera solo il dialogo. Non attende, finché non si è ri-
sposto al dialogo.

Controllo e valutazione di un dialogo

Con la funzione Exists_KrlDlg( ) si può verificare se un determinato


dialogo esiste ancora. Si controlla quindi se il dialogo si trova ancora nella
memoria tampone dei messaggi.
Se viene fornita risposta al dialogo, la funzione informa su quale pulsante
è stato premuto.
• Funzioni Build-In per il controllo di un messaggio

DEFFCT BOOL Exists_KrlDlg(INT nHandle:IN, INT Answer:OUT)


DECL INT nHandle, answer

• nHandle: L'handle predisposto dalla funzione “Set_KrlDlg(…)“ per


il dialogo
• Answer: Conferma di quale pulsante è stato premuto. Il pulsante 1,
definito come "Button[1]", fornisce il valore 1
La funzione non attende, finché non si è risposto al dialogo, ma
scandaglia solo la memoria tampone in cerca del dialogo con
questo handle. L'interrogazione nel programma KRL deve quindi av-
venire ciclicamente e durare, finché non si è risposto al dialogo o
finché non è stata cancellata in altro modo.

• Valore di ritorno della funzione:

DEF MyProg( )
DECL INT handle, answer
DECL BOOL present
...
handle = Set_KrlDlg(MyQuestion, Parameter[ ], Touchkey[ ],
Option)
...
present = Exists_KrlDlg(handle, Answer)

‒ present == TRUE: Questo dialogo è ancora nella memoria tam-


pone messaggi
‒ present == FALSE: Questo dialogo non si trova più nella me-
moria tampone messaggi (quindi ha ottenuto riposta)
Answer adesso viene riscritta con il valore del pulsante premu-
to. Valori validi tra 1 e 7, in funzione dei numeri pulsante pro-
grammati.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 325/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

19.1.8.2 Intervento con dialoghi


Allegato

Descrizione di un dialogo definito dall'utente

Fig. 19-11: Dialogo

• Un dialogo può sempre essere generato, solo se non ci sono più altri
dialoghi.
• Si possono definire fino a 7 softkey.

Funzione di un dialogo definito dall'utente

• I dialoghi sono adatti a visualizzare domande, a cui l'utente deve ri-


spondere.
• Con la funzione Set_KrlDlg( ) si genera un dialogo.
• La funzione genera solo il dialogo. Non attende, finché non si è rispo-
sto al dialogo.
• Con la funzione Exists_KrlDlg( ) si può verificare se un determi-
nato dialogo esiste ancora.
• Anche questa funzione non attende, finché non si è risposto al dialo-
go, ma scandaglia solo la memoria tampone in cerca del dialogo con
questo handle.
• L'interrogazione nel programma KRL deve quindi avvenire ciclicamente
e durare, finché non si è risposto al dialogo o finché non è stata can-
cellata in altro modo.
• L'altro svolgimento del programma può essere effettuato indipendente-
mente dal softkey selezionato dall'utente.
Analisi dei pulsanti


• Dichiarazione e inizializzazione dei pulsanti

326/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
DECL KRLMSGDLGSK_T Softkey[7] ; Preparare 7 possibili
softkey
softkey[1]={sk_type #value, sk_txt[] "key1"} ; Conferma -> 1
softkey[2]={sk_type #value, sk_txt[] "key2"} ; Conferma -> 2
softkey[3]={sk_type #value, sk_txt[] "key3"} ; Conferma -> 3
softkey[4]={sk_type #value, sk_txt[] "key4"} ; Conferma -> 4
softkey[5]={sk_type #value, sk_txt[] "key5"} ; Conferma -> 5
softkey[6]={sk_type #value, sk_txt[] "key6"} ; Conferma -> 6
softkey[7]={sk_type #value, sk_txt[] "key7"} ; Conferma -> 7

• Analisi mediante Exists_KrlDlg(): il pulsante che è stato abbinato


all'indice 4, dà anche 4 come conferma.

; softkey nr. 4 dà 4 come conferma nelle variabili ANSWER


softkey[4]={sk_type #value, sk_txt[] "key4"}
present = exists_KrlDlg(handle ,ANSWER) ; ANSWER viene
descritta dal sistema

Programmazione di dialoghi definiti dall'utente

1. Caricamento del programma principale nell'editor.


2. Dichiarazione variabili di lavoro per:
• mittente, numero messaggio, testo messaggio (da KrlMsg_T)
• campo con 3 elementi per i parametri (da KrlMsgPar_T)
• 7 pulsanti possibili (da KrlMsgDlgSK_T)
• opzioni di messaggio generali (da KrlMsgOpt_T)
• "Handle" (come INT)
• variabile per il risultato del collaudo (come BOOL)
• variabile per il risultato della risposta, di cui è stato premuto il pul-
sante (come INT)
3. Inizializzare le variabili di lavoro con i valori desiderati.
4. Programmare richiamo di funzione Set_KrlDlg(…).
5. Arrestare il programma con un loop, finché non si è risposto al dialo-
go.
6. Valutare il dialogo con il richiamo funzione Exists_KrlDlg( ).
7. Pianificare e programmare altre diramazioni nel programma.
8. Chiudere e salvare il programma principale.

Fig. 19-12: Dialogo con 3 pulsanti

Esempio di programma per il suddetto annuncio/messaggio:


Non devono essere programmati tutti i pulsanti, ma devono essere lasciati
dei buchi (nr. 1, 4, 6). In questo modo, i pulsanti vengono automaticamen-

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 327/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

te disposti dal sistema uno accanto all'altro. Se si utilizzano solo i pulsanti


Allegato

1, 4 e 6, sono possibili solo le conferme 1,4 e 6.


Il programma viene arrestato dopo la revoca del dialogo e il dialogo viene
cancellato dopo la risposta. Poi si continua con il programma. Infine si
programma un distributore.
Il messaggio viene cancellato anche in caso di reset del programma o al-
l'uscita dal programma. Ciò accade impostando nelle opzioni di messaggio
Clear_P_Reset TRUE.

DECL KRLMSG_T myQuestion


DECL KRLMSGPAR_T Parameter[3]
DECL KRLMSGDLGSK_T Softkey[7] ;Preparare 7 possibili softkey
DECL KRLMSGOPT_T Option
DECL INT handle, answer
DECL BOOL present
...

myQuestion={modul[] "College", Nr 1907, msg_txt[] "My


Question?"}
Option= {VL_STOP FALSE, Clear_P_Reset TRUE, Clear_P_SAW
FALSE, Log_to_DB TRUE}
;i metacaratteri[1..3] sono vuoti
Parameter[1] = {Par_Type #EMPTY}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
softkey[1]={sk_type #value, sk_txt[] "key1"} ; Pulsante 1
softkey[2]={sk_type #EMPTY, sk_txt[] "key2"} ; Pulsante 2
softkey[3]={sk_type #EMPTY, sk_txt[] "key3"} ; Pulsante 3
softkey[4]={sk_type #value, sk_txt[] "key4"} ; Pulsante 4
softkey[5]={sk_type #EMPTY, sk_txt[] "key5"} ; Pulsante 5
softkey[6]={sk_type #value, sk_txt[] "key6"} ; Pulsante 6
softkey[7]={sk_type #EMPTY} ; Pulsante 7: sk_txt[] può
anche essere tralasciato
...

...; Revoca del dialogo


handle = Set_KrlDlg(myQuestion, Parameter[ ],Softkey[ ],
Option)
answer=0
REPEAT ; loop per arresto fino a che non si è risposto al
dialogo
present = exists_KrlDlg(handle ,answer) ; la risposta viene
descritta dal sistema
UNTIL NOT(present)
...
SWITCH answer
CASE 1 ; Pulsante 1
; Azione con pulsante 1
...
CASE 4 ; Pulsante 4
; Azione con pulsante 4
...
CASE 6 ; Pulsante 6
; Azione con pulsante 6
...
ENDSWITCH
...

328/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
19.2 Modulo inline COLLDETECT

Descrizione

Fig. 19-13: CollDetect

Il modulo inline COLLDETECT fornisce diverse funzioni che possono es-


sere utilizzate per gestire, generare automaticamente o impostare attiva-
mente record di dati per il rilevamento delle collisioni. Poiché i record di
dati utilizzati hanno un effetto sulle successive righe per il movimento,
questo modulo inline deve essere inserito prima delle frasi di movimento.

Procedimento

Fig. 19-14: Modulo inline COLLDETECT

1. Posizionare il cursore nella riga del programma dopo la quale va ag-


giunto il modulo inline COLLDETECT (1).
2. Percorso di menu: Istruzioni (2) > Parametri di movimento > Ricono-
scimento collisione (3)
3. Aprire il menu di selezione del modulo COLLDETECT aggiunto (4).
4. Attivare i parametri desiderati.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 329/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

Fig. 19-15: COLLDETECT

• SetDefault
(>>> 19.2.1 "COLLDETECT: SetDefault" Pagina 330)
• SetLimits
(>>> 19.2.2 "COLLDETECT: SetLimits" Pagina 330)
• Off
(>>> 19.2.3 "COLLDETECT: OFF" Pagina 331)
• SaveMax
(>>> 19.2.4 "COLLDETECT: SaveMax" Pagina 332)
• UseDataSet
(>>> 19.2.5 "COLLDETECT: UseDataSet" Pagina 335)

19.2.1 COLLDETECT: SetDefault

Descrizione

Fig. 19-16: COLLDETECT: SetDefault

Fig. 19-17: SET_TQ_VALUES ( )

• Utilizza valori standard per il riconoscimento della collisione


• Il valore SetDefault richiama il programma CollMonLib().
• Il sottoprogramma globale SET_TQ_VALUSES() imposta i valori utiliz-
zando la variabile di sistema $COLLMON_TOL_PRO[12]. (>>> "Va-
riabili di sistema" Pagina 339)

19.2.2 COLLDETECT: SetLimits

Descrizione

Fig. 19-18: COLLDETECT: SetLimits

330/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
Fig. 19-19: SET_TQ_VALUES ( )

• Per il riconoscimento collisione utilizza i valori specificati nel modulo


inline.
Una modifica dei valori comporta una modifica nella lista dei dati.

Fig. 19-20: Dialogo, modifica della lista dati

• Il valore SetLimits richiama il programma CollMonLib().


• Il sottoprogramma globale Set_TQ_VALUSES() imposta i valori utiliz-
zando la variabile di sistema $COLLMON_TOL_PRO. (>>> "Variabili
di sistema" Pagina 339)

COLLMONLIB.DAT

Percorso di menu: R1/System/collmonlib.DAT


Estratto

DEFDAT COLLMONLIB PUBLIC


...
INT NUM_COLLMON_SETTINGS=30
INT COLLMON_SETTING[30,12]
COLLMON_SETTING[1,1]=150
...
COLLMON_SETTING[30,12]=150
...
GLOBAL CHAR CDSet_NAME[30,24]
CDSet_NAME[1,]=" "
...
CDSet_NAME[30,]=" "
...
INT COLLMON_TOL_PRO[12]
COLLMON_TOL_PRO[1]=-1
...
COLLMON_TOL_PRO[12]=-1

ENDDAT

19.2.3 COLLDETECT: OFF

Descrizione

Fig. 19-21: COLLDETECT: OFF

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 331/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

Fig. 19-22: USE_CD_PARAMS (0)

• Richiama il sottoprogramma globale SET_CD_PARAMS() con i valori


0.
Percorso di menu: R1/System/collmonlib.SRC
Estratto

;used in old motion command to set all 12 values


;Expert call
GLOBAL DEF SET_CD_PARAMS (Index :IN)
DECL INT Index
IF (Index > 0) AND (Index < 31) THEN
USE_CM_PRO_SETTING (Index)
ELSE
SET_CM_PRO_INACTIVE()
ENDIF
END

• Salta in SET_CM_PRO_INACTIVE() e imposta i valori su 0 disattivan-


do così il riconoscimento collisione.

...
; Setzt die globalen Werte falls welche vorhanden oder
; deaktiviert die verbesserte Kollisions??berwachung indem
; $COLLMON_TOL_PRO[] auf Null gesetzt wird.
GLOBAL DEF SET_CM_PRO_INACTIVE()
INT I

IF $IMPROVED_COLLMON== TRUE THEN


FOR I=1 TO 12
IF (COLLMON_TOL_PRO[I] < 0) THEN ;no global
COLLMON_TOL_PRO[I] exists
$COLLMON_TOL_PRO[I]=0
ELSE
$COLLMON_TOL_PRO[I]=COLLMON_TOL_PRO[I] ;sets
$COLLMON_TOL_PRO[I] from global
ENDIF
ENDFOR
ELSE
FOR I=1 TO 6
$TORQMON[I]=0
ENDFOR
ENDIF
END
...

19.2.4 COLLDETECT: SaveMax

Descrizione

Il modulo inline SaveMax serve per riempire il record di dati


CDSet_Set[n.] con dati adatti al riconoscimento collisione. Questo avviene
tramite un ciclo di programma eseguito appositamente.

332/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
Fig. 19-23: COLLDETECT: SaveMax

Pos. Descrizione
DataSet • CDSet_Set[1] … [30]
Selezionare il record di dati da compilare. Il record di dati
viene compilato per tutti gli assi robot con:
$COLLMON_MAX[no. asse] + Offset
I record di dati contengono di norma il valore 150 per tutti
gli assi. Durante la compilazione tramite SaveMax questo
valore viene sovrascritto.
Offset Consiglio: Tra 10 e 20
Unità: %

Fig. 19-24: SAVE_CM_MAX_SETTING (n,n)

Percorso di menu: R1/System/collmonlib.SRC


Estratto

; Salva gli attuali valori $COLLMON_MAX[] in un


; Campo del record di dati Collmon. Un valore percentuale
di ridimensionamento
; Può essere indicato opzionalmente.
; Parametri SETTING_IDX: indice del record di dati Collmon
; Parametri OFFSET: offset opzionale su tutte le componenti
di $COLLMON_MAX[]. Valore di default=0.
; Expert call

GLOBAL DEF SAVE_CM_MAX_SETTING(SETTING_IDX:IN,OFFSET:IN)


INT SETTING_IDX,OFFSET,TEST,OFFSET_WERT,I

; Preimpostazione con valore di default 0


OFFSET_WERT=0

ON_ERROR_PROCEED
TEST=OFFSET

IF $ERR.NUMBER == 0 THEN
OFFSET_WERT=OFFSET; Usare i parametri
ENDIF

FOR I=1 to 12
COLLMON_SETTING[SETTING_IDX,I]=$COLLMON_MAX[I] +
OFFSET_WERT
ENDFOR

ERR_CLEAR($ERR)
END

Il modulo inline SaveMax legge $COLLMON_MAX[]. Per ottenere i valori


che si verificano in una specifica sequenza di movimento, $COLL-

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 333/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

MON_MAX[] deve quindi essere impostato su "0" all'inizio della sequenza


Allegato

di movimento.

Procedimento

Il procedimento seguente mostra un modo per determinare un valore di ri-


conoscimento delle collisioni adatto per una sezione del programma.
1. Nel programma impostare su 0 $COLLMON_MAX da [1] a [6].
Tale operazione va effettuata prima del primo movimento per il quale
si vuole rilevare il valore.
2. Dopo l’ultimo movimento per il quale si deve rilevare un valore, inseri-
re il modulo inline SaveMax:
selezionare la sequenza di menu Istruzioni > Parametri di movimen-
to > Riconoscimento collisione. Nel modulo inline selezionare la vo-
ce SaveMax.
3. Impostare i parametri nel modulo inline SaveMax:
• inserire in Offset il valore desiderato. Consiglio: tra "10" e "20".
• Selezionare in DataSet il record di dati CDSet_Set[n.] in cui salva-
re il valore.
4. Per tutti i movimenti per i quali si deve rilevare un valore, impostare il
parametro ColDetect su CDSet_Set[n.]. Selezionare lo stesso numero
come in SaveMax in DataSet.
5. Far svolgere il programma con la velocità programmata.
6. Selezionare di nuovo o riaprire il programma.
• Cancellare le righe in cui è impostato il valore "0" per $COLL-
MON_MAX da [1] a [6].
• Eliminare il modulo inline SaveMax.

È necessario attivare il riconoscimento della collisione già nei moduli in-


line, come descritto per il ciclo di rilevamento. Nel primo ciclo di rileva-
mento si applica per tutti gli assi il valore di tolleranza di default del
150%.
Di norma, questo valore di default è sufficiente per eseguire il ciclo di ri-
levamento senza l’intervento del riconoscimento della collisione. Se il ri-
conoscimento non interviene:
1. Nella finestra Riconoscimento collisione - Configurazione del re-
cord di dati impostare su "500" tutti i valori della colonna Valori del
record di dati.
2. Eseguire nuovamente il ciclo di rilevamento.

19.2.4.1 Esempio programma

Descrizione

1 INI
2
3 SPTP HOME Vel=100% DEFAULT
4
5 ; ##### REMINDER: azzerare i valori di picco tramite
PLUGIN ####
6 SPTP P1 Vel=100% PDAT 1 Tool[14]:D_Gripper Base[15]:D_Red
Base Straight
7 SLIN P2 CONT Vel=2 m/s CPDAT 1 Tool[14]:D_Gripper
Base[15]:D_Red Base Straigth ColDetect[1]
8 SLIN P3 CONT Vel=2 m/s CPDAT 2 Tool[14]:D_Gripper
Base[15]:D_Red Base Straigth ColDetect[1]

334/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
9 SLIN P4 CONT Vel=2 m/s CPDAT 3 Tool[14]:D_Gripper
Base[15]:D_Red Base Straigth ColDetect[1]
10
11; #### Utilizza ILF per SaveMax con un offset o utilizza
PLUGIN (+10)
12 COLLDETECT SaveMax DataSet[1] Offset=15
13 SPTP P5 CONT Vel=100%s PDAT 3 Tool[14]:D_Gripper
Base[15]:D_Red Base Straigth
14 SPTP HOME Vel=100% DEFAULT

Per generare automaticamente i record di dati per la determinazione dei


valori di picco, procedere come segue.
1. Il programma viene eseguito alla velocità corretta e con i dati di ca-
rico corretti.
2. Riga 5
I valori di picco del record di dati devono essere resettati manualmen-
te all'inizio del ciclo di programma tramite il noto plugin.
Se i valori di picco non vengono azzerati verranno applicati anche
per il ciclo di rilevamento provocando, ad esempio, una reazione di
arresto se l'impostazione è "troppo sensibile".

3. Riga 6 - 9
Il record di dati da "compilare" deve essere impostato come attivo per
le singole frasi di movimento.
Se non viene selezionato alcun record di dati, significa anche che
non ci sono valori "attivi" da poter adattare.

4. Riga 12
I valori raccolti vengono salvati nel record di dati selezionato. Questo
corrisponde a quello dei moduli inline.
AVVISO
Se il record di dati è stato definito dopo un ciclo di programma riu-
scito, il modulo inline (COLLDETECT) deve essere cancellato dal
programma. In questo modo si evita che venga ridefinito ogni volta
che il programma viene eseguito.

19.2.5 COLLDETECT: UseDataSet

Descrizione

Fig. 19-25: COLLDETECT: UseDataSet

Fig. 19-26: USE_CD_PARAMS (n)

1. Richiama il sottoprogramma globale SET_CD_PARAMS() con i valori


del DataSet selezionato.
Percorso di menu: R1/System/collmonlib.SRC
Estratto

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 335/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

;used in old motion command to set all 12 values


;Expert call

GLOBAL DEF SET_CD_PARAMS (Index :IN)


DECL INT Index
IF (Index > 0) AND (Index < 31) THEN
USE_CM_PRO_SETTING (Index)
ELSE
SET_CM_PRO_INACTIVE()
ENDIF
END

2. Salta in USE_CM_PRO_SETTINGS () e
• $COLLMON_TOL_PRO riceve i valori selezionati
• COLLMON_SETTINGS (Arrays)

; Salva gli attuali valori $COLLMON_TOL_COM[] in un


; Campo di parametri.
; Parametri SETTING_IDX: indice del record di dati Collmon
GLOBAL DEF SAVE_CM_COM_SETTING(SETTING_IDX:IN)
INT SETTING_IDX,I

FOR I=1 to 12
COLLMON_SETTING[SETTING_IDX,I]=$COLLMON_TOL_COM[I]
ENDFOR
END

19.3 Variabili di sistema

Una descrizione dettagliata e completa delle variabili di sistema si trova


nella documentazione del software corrispondente.

19.3.1 Variabili di sistema per WITH

Blocco spline, movimento singolo spline

Per blocchi spline e movimenti singoli spline sono descrivibili le seguenti


variabili di sistema con la riga WITH:
$ACC
$ACC_AXIS
$ACC_EXTAX
$APO
$BASE
$CIRC_TYPE
$COLLMON_TOL_PRO
$DERI
$ECO_LEVEL
$EXT_IPO_MODE
$GEAR_JERK
$IPO_MODE
$JERK
$JOINT_OFFSET
$LASER_MODE

336/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

$LOAD

Allegato
$LOAD_A1, $LOAD_A2, $LOAD_A3
$ORI_TYPE
$ROTSYS
$SPL_ORI_JOINT_AUTO
$SPL_VEL_MODE
$SPL_VEL_RESTR
$SYNC_ID
$SYNC_LIST
$TENSION
$TOOL
$VEL
$VEL_AXIS
$VEL_EXTAX
Inoltre per SCIRC: $CIRC_MODE

Segmento spline

Per segmenti spline sono descrivibili le seguenti variabili di sistema con la


riga WITH:
$ACC
$ACC_AXIS
$ACC_EXTAX
$CIRC_TYPE
$COLLMON_TOL_PRO
$DERI
$EX_AX_IGNORE
$GEAR_JERK
$JERK
$ORI_TYPE
$ROTSYS
$SYNC_ID
$TENSION
$VEL
$VEL_AXIS
$VEL_EXTAX
Inoltre per SCIRC: $CIRC_MODE

19.3.2 Blocco SPLINE: Variabili di sistema con WITH

Segmento spline

Per segmenti spline sono descrivibili le seguenti variabili di sistema con la


riga WITH:
$ACC
$ACC_AXIS
$ACC_EXTAX
$CIRC_TYPE
$COLLMON_TOL_PRO
$DERI
$EX_AX_IGNORE

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 337/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

$GEAR_JERK
Allegato

$JERK
$ORI_TYPE
$ROTSYS
$SYNC_ID
$TENSION
$VEL
$VEL_AXIS
$VEL_EXTAX
Inoltre per SCIRC: $CIRC_MODE
Le variabili di sistema sono descritte nell'omonimo capitolo.

19.3.3 Riconoscimento collisione - Variabili di sistema

Presupposto

I presupposti fondamentali per il riconoscimento di collisione sono:


• $IMPROVED_COLLMON == TRUE (Questa è l'impostazione di de-
fault.)
• $ADAP_ACC ≠ #NONE (Questa è l'impostazione di default.)
• I dati di carico sono corretti.

Il riconoscimento collisione può essere configurato tramite la smartHMI


(menu principaleConfigurazione > Riconoscimento collisione e modu-
lo inline COLLDETECT). In alternativa lo si può configurare tramite le
variabili di sistema. Importante: non utilizzare entrambi i metodi insie-
me.
Si consiglia di configurare il riconoscimento collisione tramite la smartH-
MI.

338/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
Variabili di sistema

Variabile di sistema Descrizione


$IMPROVED_COLLMON • TRUE (default):
‒ È disponibile il riconoscimento collisione. La sua atti-
vazione non è però automatica. Il fatto che sia attivo o
meno dipende da come vengono impostate le altre va-
riabili di sistema.
‒ Il precedente monitoraggio dei momenti (TORQMON)
non è più disponibile.
• FALSE:
‒ I programmi che contengono il precedente monitorag-
gio dei momenti (TORQMON) si comportano come in
precedenza. Le relative variabili di sistema sono di-
sponibili e si comportano come in precedenza.
Il precedente modulo inline TORQMON non (!) può
più essere programmato.
‒ L'attuale riconoscimento collisione non disponibile. I
punti del menu principale in Configurazione > Rico-
noscimento collisione non possono essere richiama-
ti. Le variabili di sistema non sono disponibili oppure
hanno un significato differente.
La variabile può essere modificata in KRC:\STEU\Mada\$cu-
stom.dat.
La variabile non può essere modificata mediante la funzione
di correzione variabili.
$COLLMON_ACTIVE_PRO Riconoscimento collisione per il funzionamento del program-
ma

• TRUE (default): Attivo


• FALSE: Non attivo
$COLLMON_ACTIVE_COM Riconoscimento collisione per lo spostamento manuale

• TRUE (default): Attivo


• FALSE: Non attivo
$COLL- Valore di default per la sensibilità del riconoscimento della
MON_TOL_PRO_DEF[1] … collisione durante il funzionamento del programma. All'avvio a
[12] freddo, alla selezione del programma e al reset di un pro-
gramma, $COLLMON_TOL_TOL_PRO viene impostato auto-
maticamente su $COLLMON_TOL_PRO_PRO_DEF.

• 0 … 500
"0" significa che il riconoscimento collisione non è attivo per
questo asse. Default: 0
La variabile può essere modificata in KRC:\STEU\Mada\$cu-
stom.dat.
La variabile non può essere modificata mediante la funzione
di correzione variabili.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 339/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

Variabile di sistema Descrizione


$COLL- Valore di default per la sensibilità del riconoscimento della
MON_TOL_COM_DEF[1] … collisione durante lo spostamento manuale. All'avvio a freddo
[12] $COLLMON_TOL_COM viene impostato automaticamente su
$COLLMON_TOL_COM_DEF.

• 0 … 500
"0" significa che il riconoscimento collisione non è attivo per
questo asse. Default: 0
La variabile può essere modificata in KRC:\STEU\Mada\$cu-
stom.dat.
La variabile non può essere modificata mediante la funzione
di correzione variabili.
Valore visibile ed modificabile in:
Finestra Riconoscimento collisione - Configurazione spo-
stamento manuale, colonna Valori standard
$COLLMON_TOL_PRO[1] … Valore per il riconoscimento della collisione durante il funzio-
[12] namento del programma

• 0 … 500
"0" significa che il riconoscimento collisione non è attivo per
questo asse. Default: 0
$COLLMON_TOL_COM[1] … Valore per il riconoscimento della collisione durante lo sposta-
[12] mento manuale

• 0 … 500
$COLLMON_TOL_COM basato su $COLL-
MON_TOL_COM_DEF. In $COLLMON_TOL_COM inoltre è
considerato anche il fattore Offset valori standard della fine-
stra Opzioni di spostamento manuale.
"0" significa che il riconoscimento collisione non è attivo per
questo asse. Default: 0
Valore visibile in:
Finestra Riconoscimento collisione - Vista, colonna Limite
manuale
$COLLMON_TOL_ACT[1] … Valore attualmente valido per il riconoscimento collisione
[12]
• Durante l'esecuzione del programma: $COLL-
MON_TOL_PRO
• Durante la procedura manuale: $COLLMON_TOL_COM
La variabile è di sola lettura.
Valore visibile in:
Finestra Riconoscimento collisione - Vista, colonna Limite
attivo

340/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Allegato
Variabile di sistema Descrizione
$COLLMON_MAX[1] … [12] $COLLMON_MAX contiene per ogni asse il valore più alto re-
gistrato dall'ultimo azzeramento. Il sistema di controllo del ro-
bot calcola i valori, senza interruzioni e in background, mentre
gli assi sono in movimento. Presupposto richiesto affinché si
rilevino i valori: $COLLMON_TOL_ACT[1] ≠ 0!
L'utente può azzerare $COLLMON_MAX. La lettura o la scrit-
tura di questa variabile provoca un arresto dell'avanzamento.
Ci si può evitare con CONTINUE.
Valore visibile nelle finestre seguenti, rispettivamente nella co-
lonna Valore di picco:

• Riconoscimento collisione - Configurazione sposta-


mento manuale
• Riconoscimento collisione - Configurazione del record
di dati
• Riconoscimento collisione - Vista
$COLL_ENABLE Lo stato di questo segnale viene visualizzato nella finestra Ri-
conoscimento collisione - Vista dal LED Riconoscimento
attivo.

• TRUE: Il riconoscimento collisione è attivo. (LED: verde)


• FALSE: Il riconoscimento della collisione non è attivo.
(LED: grigio)
La variabile è di sola lettura.
$COLL_ALARM Segnale che diventa TRUE quando è stata rilevata una colli-
sione. Il segnale rimane settato finché è presente $STOP-
MESS.
Lo stato viene visualizzato nella finestra Riconoscimento
collisione - Vista dal LED Collisione rilevata.

• TRUE: Il controllo ha rilevato una collisione. (LED: rosso)


• FALSE: Nessuna collisione. (LED: grigio)
La variabile è di sola lettura.

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 341/345


Luca Galeotti, A.C.M.I. SpA
Allegato Programmazione robot 2

342/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Index Ricerca ed eliminazione di errori nel


programma................................................ 61
Sottoprogrammi............................................ 135
Viste in Esplora......................................... 59
$ADAP_ACC.................................................338
Viste nell'editor.......................................... 60
$CIRC_MODE.............................................. 184
Creazione di programmi
$COLL_ALARM............................................ 341
Modelli........................................................57
$COLL_ENABLE.......................................... 341
$COLLMON_ACTIVE_COM.........................339
$COLLMON_ACTIVE_PRO......................... 339
$COLLMON_MAX................................ 334, 341 D
$COLLMON_TOL_ACT................................ 340 DECL...................................................... 99, 101
$COLLMON_TOL_COM............................... 340 DEFFCT........................................................145
$COLLMON_TOL_COM_DEF......................340 Dialogo..........................................................326
$COLLMON_TOL_PRO............................... 340 Dichiarazione................................................ 102
$COLLMON_TOL_PRO_DEF...................... 339 Dichiarazioni................................................... 97
$IMPROVED_COLLMON.....................338, 339 Documentazione del sistema robot................11
$PATHTIME.................................................. 255
$TIMER[Nr]................................................... 209
E
Editor di KRL
A Ricerca e sostituzione...............................86
Accordo di segnale.......................................132 Editor KRL...................................................... 82
Aiuto................................................................70 Completamento automatico...................... 88
Allegato......................................................... 311 Correzione Quickfix................................... 90
Amministrazione dell'utensile e della base..296 Dichiarazione automatica di variabili........ 90
Aggiunta base......................................... 301 Eliminazione di variabili.............................92
Aggiunta utensile.....................................299 Funzioni di editazione generali................. 83
Creazione dell'utensile esterno e della Operazioni con fold................................... 95
base.........................................................302 Rinomina di variabili..................................87
WorkVisual...............................................297 Snippet.......................................................89
Archivio dati in KRL....................................... 97 Visualizzazione dell'utilizzo di variabili......93
Area di traslazione costante........................ 249 EKrlMsgType.................................................312
Array..............................................................118 ENUM........................................................... 129
Arresto condizionato............................ 244, 245 Esempio di diagramma di programmazione..54
Arresto sorvegliato della zona di lavoro (voce Esercizio......................................................... 41
di menu)........................................................276 Configurazione degli spazi di lavoro per la
Attivazione del progetto............................... 287 protezione dell'impianto...........................277
Attivazione della configurazione di Configurazione del riconoscimento
sicurezza.......................................................289 collisione per il funzionamento del
Avanzamento.................................................. 99 programma................................................ 46
Creazione della variabile del tipo di dati
ENUM...................................................... 131
B Creazione di strutture proprie................. 128
Barra dei menu...............................................69 Impostazione dei finecorsa software del
Barre dei pulsanti........................................... 69 robot........................................................ 310
Base................................................................19 Misurazione di base e utensile.................24
Blocco spline................................................ 203 Misurazione tempo ciclo e
Blocco spline CP.......................................... 205 ottimizzazione.......................................... 212
Blocco spline PTP........................................ 206 Operatore geometrico............................. 202
Palettizzazione e depalettizzazione........ 197
Predisposizione per il programma di
palettizzazione..........................................111
C Programmazione degli interrupt..............224
Campi............................................................118 Programmazione di campi...................... 124
Cataloghi (Finestra)........................................ 70 Programmazione di funzioni proprie.......151
Commento...................................................... 47 Programmazione di submit..................... 263
Configurazione (voce di menu).................... 115 Programmazione di un messaggio di
Configurazione del riconoscimento collisione conferma..................................................161
per lo spostamento manuale......................... 41 Programmazione di un messaggio di
Creazione del programma dialogo..................................................... 171

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 343/345


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

Programmazione di un messaggio di Manipolazione...................................... 106, 107


notifica..................................................... 158 Messaggi.......................................................153
Programmazione di un messaggio di Messaggi (finestra)......................................... 70
stato.........................................................165 Messaggi utente........................................... 153
Sottoprogrammi con trasferimento di Messaggio di attesa.............................154, 321
parametri................................................. 150 Messaggio di conferma....................... 154, 319
Strutturazione di programmi......................55 Messaggio di dialogo................................... 154
Uso di KUKA Xpert Basic.........................17 Messaggio di istruzioni.................................316
Utilizzo di progetti tramite WorkVisual....295 Messaggio di notifica....................................154
Variabili semplici...................................... 112 Messaggio di stato...............................154, 317
Metodica di programmazione, esempio di
diagramma di programmazione..................... 54
F Misurazione indiretta...................................... 19
FALSE...........................................................133 Mittente......................................................... 311
Fold................................................................. 50 Movimento spline..........................................203
Funzioni................................................ 135, 145
Funzioni di commutazione........................... 231
Funzioni per emissione messaggi............... 148 N
Funzioni per variabili di stringa....................148 Nomi di dati.................................................... 52
Funzioni standard................................ 106, 148 Numero messaggio.......................................311
Funzioni standard KUKA..............................148
Funzioni, matematiche................................. 148
O
Operazioni bit............................................... 106
G Operazioni comparative................................106
Gestione dei diritti.......................................... 29 Operazioni logiche........................................106
Assegnazione gruppo utenti..................... 30
Modi operativi Gruppi utenti......................29
Gestione progetto ampliata P
smartPAD.................................................290 Parola chiave..................................................99
Gruppi utenti................................................... 25 Priorità.................................................. 109, 237
Modifica......................................................28 Progetto inattivo............................................292
Gruppo utenti Programmazione logica
Cambio.......................................................26 Logica semplice.......................................230
Programmazione strutturata........................... 47
Programmi robot...........................................148
I Collegamento...........................................135
Inizializzazione..............................................103 Funzioni................................................... 145
Interrupt.........................................................213 Trasferimento di parametri a
sottoprogrammi........................................ 141
Programmi robot strutturati
K Metodo di programmazione...................... 47
KRL Editor...................................................... 81 Mezzi ausiliari............................................47
KrlMsg_T.......................................................311 Proprietà (finestra)..........................................70
KrlMsgDlgSK_T............................................ 323 Punti di ripristino...........................................293
KrlMsgOpt_T.................................................313 Punto radice del polso................................. 270
KUKA Xpert.................................................... 11
Accesso..................................................... 14
Registrazione............................................. 13 R
URL............................................................12 Return...................................................137, 145
Uso.............................................................15 Riconoscimento collisione.............................. 33
Attivazione modulo inline.......................... 44
Configurazione spostamento manuale..... 35
L Frasi di movimento, utilizzo...................... 42
Livello esperto................................................ 57 Proseguimento dopo una collisione..........38
Logica, generale........................................... 225 Record di dati, moduli inline..................... 42
Visualizzazione dei valori attuali...............34
Riconoscimento collisione, variabili di
sistema......................................................... 338
M

344/345 | www.kuka.com PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019


Luca Galeotti, A.C.M.I. SpA
Programmazione robot 2

S Panoramica................................................69
Selezione del tipo di messaggio..................312 Programmazione online............................ 72
Settori di lavoro (finestra).............................. 70 Salvataggio locale................................... 281
Simboli del diagramma di flusso................... 53 Struttura del file ....................................... 72
Sistemi di calcolo fondamentali................... 106 Trasferimento/installazione del progetto. 282
Snippet – Immissione rapida per istruzioni Trasmissione di programmi al sistema di
KRL.................................................................89 controllo..................................................... 75
Sottoprogramma, globale ............................139 Caricamento di un progetto.................... 279
Sottoprogramma, locale............................... 136 WorkVisual portatile........................................66
Spazi di lavoro..............................................265
Configurazione dello spazio di lavoro
cartesiano................................................ 268
Configurazione di spazi di lavoro riferiti agli
assi.......................................................... 273
Esclusione del monitoraggio dello spazio di
lavoro.......................................................275
Struttura........................................................ 125
Struttura del progetto (Finestra).................... 70
Strutturazione di programma robot
Indentazione di righe di comando............ 52
Strutturazione di programmi robot
Diagramma di programmazione................52
Fold............................................................ 50
Nomi di file................................................ 52
Submit interpreter......................................... 257
Familiarizzazione..................................... 257
Gestione...................................................259
Programmazione......................................261

T
Tempo di ciclo.............................................. 209
Testo messaggio...........................................311
Timer............................................................. 209
Tipi di dati semplici...................................... 101
Tipo dati di enumerazione........................... 129
Trigger
Programmazione......................................236

V
Variabile, modifica................................ 113, 226
Variabile, visualizzazione singola.........113, 226
Variabili................................................... 97, 101
Variabili di sistema....................................... 209
Visualizzazione (voce di menu)................... 117
Visualizzazione delle variabili.......................113
Visualizzazione variabili................................ 115

W
WITH (variabili di sistema consentite) 336, 337
WorkVisual
Collegamento al sistema di controllo....... 68
Debugging online di programmi................78
Familiarizzazione....................................... 65
Installazione............................................... 66
Modalità..................................................... 71
Modifica di finecorsa software........304, 307

PROG P2 KSS 8 R3 V1 | Edizione: 01.08.2019 www.kuka.com | 345/345


Luca Galeotti, A.C.M.I. SpA

Potrebbero piacerti anche