Workbook Prog p2 Kss 8 r3 v1 It
Workbook Prog p2 Kss 8 r3 v1 It
Programmazione robot 2
KUKA System Software 8.5
Documentazione di formazione
Edizione: 01.08.2019
PROG P2 KSS 8 R3 V1
KUKA College
© 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
Indice
1 Introduzione.............................................................................................. 9
1.1 Descrizione del seminario..................................................................................... 9
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
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
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
Introduzione
1 Introduzione
Descrizione
Obiettivi di apprendimento
Descrizione
Fig. 2-1
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:
Viene visualizzato solo un estratto della licenza Basic. Gli altri schemi di
licenza non fanno parte di questo corso.
Descrizione
2.4 Registrazione
Procedimento
Fig. 2-3
Pos. Spiegazione
1 Login per i clienti
2 Login per i collaboratori KUKA
3 Inoltro al modulo di registrazione
Fig. 2-4
2.5 Accesso
Procedimento
Fig. 2-5
Pos. Spiegazione
1 Login per i clienti
2 Login per i collaboratori KUKA
3 Inoltro al modulo di registrazione
Descrizione
Vista d'insieme
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.
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
Compito
Descrizione
Presupposto
Procedimento
Compito
Compito
Compito
Compito
Compito
Descrizione
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.
Procedimento
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.
Descrizione
Procedimento
Descrizione
Procedimento
Pos. Descrizione
1 Limite di monitoraggio adattativo Limit [min/max]
2 Coppia effettiva
Pos. Descrizione
3 Accelerazione
4 Frenatura
Descrizione
Procedimento
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
Descrizione
Presupposto
Procedimento
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:
‒ 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.
Descrizione
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
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.
Compito
Compito
Descrizione
Procedimento
Descrizione
Procedimento
‒ 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:
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.
Descrizione
Procedimento
Frase di movimento
Esempio:
Compito
Compito
Programmazione strutturata
5 Programmazione strutturata
Descrizione
Programmazione lungimirante
permette di
1. Efficienza
2. Assenza di errori
3. Chiarezza
4. Semplicità di manutenzione
5. Trasparenza
6. Convenienza
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
DEF PICK_CUBE()
;Questo programma prende il cubo dal magazzino
;Autore: Max Mustermann
;Data di creazione: 09/08/2011
INI
...
END
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
Programmazione strutturata
DEF PICK_CUBE()
INI
END
DEF PICK_CUBE()
INI
END
DEF Palletize()
INI
PICK_CUBE()
;CUBE_TO_TABLE()
CUBE_TO_MAGAZINE()
END
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
DEF Main()
...
INI ; KUKA FOLD chiusa
END
Procedimento
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)
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
INI
...
dialog_cubes_count
...
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
MSGNotify("Cubes to palletize:%1,,CubesCount)
...
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
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
Diramazione
Richiamo di sottoprogramma
Istruzione input/output
Fig. 5-2
Programmazione strutturata
5.8 Esercizio: Strutturazione di programmi
Compito
Compito
Descrizione
Modifica template
Predefinizione ≙ predefined
AVVISO
Se un template viene modificato, questa modifica ha un effetto immedia-
to ogni volta che viene creato un nuovo programma!
Descrizione
Nel gruppo di utenti esperti, oltre alla vista del modulo, è possibile utilizza-
re anche la vista dettagliata.
• Visualizzazione modulo
• Vista dettagli
Procedimento
Descrizione
Procedimento
• 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.
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.
Descrizione
Procedimento
Descrizione
Gestione progetto
Descrizione
Vantaggi
Download
Procedimento
Descrizione
Pos. Descrizione
1 Portatile con WorkVisual
2 Cavo di rete
3 Armadio di comando KR C4
A Collegamento KSI dietro lo sportello del CSP
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!
Pos. Descrizione
1 Barra dei menu
2 Barre dei pulsanti
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
Descrizione
Procedimento
Descrizione
Descrizione
Procedimento
Pulsan- Descrizione
te
Visualizza o dissolve file e cartelle cancellati.
Simbo- Descrizione
lo
Il file è stato modificato.
Simbo- Descrizione
lo
Il modulo è stato modificato e spostato.
Procedimento
4. Finestra di trasmissione
Descrizione
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
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.
Procedimento
Simbo- Descrizione
lo
Il programma è vincolato.
Descrizione
• 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)
Descrizione
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.
Panoramica dell'uso
Descrizione
Rinomina variabili
Descrizione
Completamento automatico
Descrizione
Descrizione
Correzione Quickfix
Descrizione
Descrizione
...
DECL INT counter
...
Descrizione
Chiudere un fold
• menu contestuale: Fold > Apri tutti i fold oppure Chiudi tutti i fold
Variabili e dichiarazioni
8 Variabili e dichiarazioni
Nella scelta del nome di variabile è necessario tenere conto delle regole seguenti:
Consigli
Descrizione
Variabili e dichiarazioni
Campi/matrice
Voltage[10] = 12.75
Voltage[11] = 15.59
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
Dichiarazione di 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.
Validità
• 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)
Descrizione
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)
‒ ...
DEF main( )
; Sezione delle dichiarazioni
...
; Sezione di inizializzazione
INI
...
; Sezione delle istruzioni
SPTP HOME Vel=100% DEFAULT
...
END
DEF MY_PROG ( )
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
INI
...
END
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.
DEFDAT $CONFIG
BASISTECH GLOBALS
AUTOEXT GLOBALS
USER GLOBALS
BackupManagerConfig
Conveyor
ENDDAT
DEFDAT $CONFIG
...
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
AVVISO
Non utilizzare nomi utilizzati in CONFIG.DAT. Ciò porta ad una dop-
pia dichiarazione.
Principio dell'inizializzazione
value = 58
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 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
DEF MY_PROG ( )
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
INI
counter = 10
price = 0.0
Variabili e dichiarazioni
error = FALSE
symbol = "X"
...
END
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL INT counter = 10
DECL REAL price = 0.0
DECL BOOL error = FALSE
DECL CHAR symbol = "X"
...
ENDDAT
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
...
ENDDAT
DEF MY_PROG ( )
...
INI
counter = 10
price = 0.0
error = FALSE
symbol = "X"
...
END
Descrizione
Creazione di costanti
Variabili e dichiarazioni
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL CONST INT max_size = 99
DECL CONST REAL PI = 3.1415
...
ENDDAT
Elenco delle opzioni per la modifica dei valori di variabili con KRL
• Funzione assoluta
• Funzione radice
• Funzione sinusoidale e cosinusoidale
• Funzione tangente
Variabili e dichiarazioni
• Funzione arcoseno
• Funzione arcotangente
• più funzioni per manipolazione di stringhe
; 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).
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
; 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
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
; 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
Comando ALT
Esempio:
DEF program()
DECL BOOL a,b
INI
...
SPTP XP1
a=$IN[1]
b=$IN[2]
HALT
IF ((a == TRUE) AND (b == FALSE)) THEN
..
ENDIF
...
Variabili e dichiarazioni
8.3.4 Esercizio: Predisposizione per il programma di palettizzazione
Compito
Compito
Compito
Compito
Variabili e dichiarazioni
8.4 Visualizzazione delle variabili
1. Percorso di menu: Tasto robot > Display > Variabile > Singola
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:
‒ premere Aggiorna.
‒ In alternativa: Shift + Enter
‒ Flags ciclici
‒ Flags
‒ Contatore
‒ Timer
• Visualizzazione di ingressi e uscite
Variabili e dichiarazioni
Fig. 8-6: Percorso di menu: Ingressi e uscite
Percorso di menu: Tasto robot > Display > Variabile > Ingressi/uscite
Procedimento
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.
Variabili e dichiarazioni
Pulsante Descrizione
Visualizzazione Commuta sulla visualizzazione variabili.
Procedimento
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:
Descrizione
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
• Campo bidimensionale
• Campo tridimensionale
DEF MY_PROG ( )
DECL BOOL error[10]
DECL REAL value[50,2]
DECL INT parts[10,10,10]
INI
...
END
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL BOOL error[10]
DECL REAL value[50,2]
DECL INT parts[10,10,10]
...
ENDDAT
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
FOR x = 1 TO 10
error[x]=FALSE
ENDFOR
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
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
Dichiarazione del campo nel file DAT e inizializzazione del campo nel file SRC
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
• Campo unidimensionale
• Campo bidimensionale
• Campo tridimensionale
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
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
...
Compito
Compito
Variabili e dichiarazioni
8.7 Strutture con KRL
• 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.price = 9999.0
Tuttavia:
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
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}}
my_car.price = 14999.95
my_car.motor = 50
my_car.air_condition = TRUE
my_car.car_pos = {X 1000, Y 500, A 0}
my_car.price = my_price*0.85
my_car.car_pos.X = x_value
my_car.car_pos.Y = 750+y_value
my_car.price = 5000.0
my_car.price = value_car
Compito
Compito
Variabili e dichiarazioni
8.8 Il tipo dati di enumerazione ENUM
Fig. 8-13
Disponibilità/utilizzo
my_land = #be
Variabili e dichiarazioni
8.8.1 Esercizio: Creazione della variabile del tipo di dati ENUM
Compito
Compito
Descrizione
Sintassi
Elemento Descrizione
GLOBAL Possibile solo per segnali definiti in un file DAT.
• $IN[x]
• $OUT[x]
• $ANIN[x]
• $ANOUT[x]
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
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
...
$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
...
Sottoprogrammi e funzioni
9 Sottoprogrammi e funzioni
9.1 In generale
Descrizione
Sottoprogrammi locali
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
Sottoprogrammi e funzioni
Contesti nell'operare con sottoprogrammi locali
DEF MY_PROG( )
; Questo è il programma principale
...
LOCAL_PROG1( )
...
END
_______________________________________
DEF LOCAL_PROG1( )
...
LOCAL_PROG2( )
...
END
_______________________________________
DEF LOCAL_PROG2( )
...
END
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
DEF MY_PROG( )
; Questo è il programma principale
...
LOCAL_PROG1( )
...
END
_______________________________________
DEF LOCAL_PROG1( )
...
IF $IN[12]==FALSE THEN
RETURN ; Ritorno al programma principale
ENDIF
...
END
• 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.
DEF MY_PROG( )
...
END
DEF MY_PROG( )
...
END
DEF PICK_PART( )
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
Sottoprogrammi globali
DEF GLOBAL1( )
...
END
DEF GLOBAL2( )
...
END
DEF GLOBAL1( )
...
GLOBAL2( )
...
END
DEF GLOBAL2( )
...
GLOBAL3( )
...
END
DEF GLOBAL3( )
...
END
DEF GLOBAL1( )
...
SPTP P1 Vel=100% PDAT1
END
DEFDAT GLOBAL1( )
DECL E6POS XP1={X 100, Z 200, Z 300 ... E6 0.0}
ENDDAT
DEF GLOBAL2( )
...
SPTP P1 Vel=100% PDAT1
END
DEFDAT GLOBAL2( )
DECL E6POS XP1={X 800, Z 775, Z 999 ... E6 0.0}
ENDDAT
Sottoprogrammi e funzioni
DEF GLOBAL1( )
...
GLOBAL2( )
...
END
DEF GLOBAL2( )
...
IF $IN[12]==FALSE THEN
RETURN ; Ritorno a GLOBAL1( )
ENDIF
...
END
DEF MY_PROG( )
...
END
DEF PICK_PART( )
...
END
DEF MY_PROG( )
...
PICK_PART( )
...
END
• Sintassi
DEF MY_PROG( )
...
CALC (K, L)
...
END
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
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
Sottoprogrammi e funzioni
DEF CALC_2(num2:OUT)
; Il valore "s" è trasferito a num2, cambiato e riscritto
DECL REAL num2
...
END
DEF MY_PROG( )
DECL DATATYPE1 value
CALC(value)
END
_______________________________________
DEF CALC(num:IN)
DECL DATATYPE2 num
...
END
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
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
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
Considerazioni preliminari
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
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
DEF MY_PROG( )
DECL REAL result, value
INI
...
result = CALC(value)
...
END
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
DEF MY_PROG( )
DECL REAL result, value
INI
value = 2.0
result = CALC(value)
; value = 2.0
; result = 1000.0
END
Sottoprogrammi e funzioni
num = num + 8.0
return_value = num * 100.0
RETURN(return_value)
ENDFCT
DEF MY_PROG( )
DECL REAL result, value
INI
value = 2.0
result = CALC(value)
; value = 10.0
; result = 1000.0
END
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
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)
Sottoprogrammi e funzioni
Descrizione Funzione KRL
Cancellazione del messaggio Clear_KrlMsg(a)
Estrazione tampone messaggi Get_MsgBuffer(a)
result = SQRT(16)
result = SQRT(x)
result = StrClear(Name[])
Ogni funzione richiede una variabile adatta nella quale è possibile salvare
il risultato della suddetta funzione:
Compito
Compito
Sottoprogrammi e funzioni
9.7 Esercizio: Programmazione di funzioni proprie
Compito
Compito
Elementi di un messaggio
Pos. Descrizione
1 Messaggio
2 Data e ora
3 Mittente
4 Numero messaggio
Messaggio di stato
Messaggio di notifica
Messaggio di attesa
Descrizione
Descrizione
Sintassi
Sintassi
Procedimento
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.
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.
Compito
Compito
Procedimento
Messaggio di conferma
MsgQuit("parts missing")
MsgQuit("parts missing","College")
Compito
Descrizione
Procedimento
INI
deleted=false
deleted=CLEAR_KRLMSG(ticketNr)
INI
deleted=false
...
MsgState(ticketNr, "missing air pressure","College")
...
...
MsgState(ticketNr, "missing air pressure on gripper
%1","College",2)
...
...
MsgState(ticketNr, "missing air pressure on
%1","College",,"gripper 4")
...
...
MsgState(ticketNr, "missing air pressure on
%1","College",,"gripper 4",2019)
...
Compito
Descrizione
Procedimento
INI
SWITCH answer
CASE 6
;Istruzione
CASE 7
;Istruzione
ENDSWITCH
...
MsgDialog(answer,"How many cubes to
palletize?","College",,"100","10")
...
...
MsgDialog(answer,"How many %1 size cubes to
palletize?","College","BIG","100","10")
...
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)
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
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
Esempio
Procedimento
INI
answer = 0
CubesCount = 0
Compito
Definizione di un movimento
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.
Esempi
• Il robot accosta una posizione dal file DAT; la posizione è stata dappri-
ma appresa tramite modulo inline e accosta tale punto P3
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>
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:
Esempi
SLIN:
SCIRC
$IPO_MODE = #BASE
‒ utensile esterno
$IPO_MODE = #TCP
• Velocità:
‒
$ORI_TYPE = #VAR
‒
$ORI_TYPE = #JOINT
‒
$CIRC_TYPE = #PATH
‒
$CIRC_TYPE = #BASE
Movimento assoluto
Movimento relativo
SPTP_REL:
SPTP_REL può essere programmato come segmento in un blocco spline
PTP o come movimento singolo.
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.
Elemento Descrizione
#BASE, Consentito solo quando il punto di destinazione è stato
#TOOL indicato in modo cartesiano.
Esempio
• L'asse 2 viene traslato di 30° in direzione negativa. Tutti gli altri assi
non si muovono.
• Sintassi, esempi
SPTP XHOME
SLIN XP1
Descrizione
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.
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
Descrizione
1 46
2 43
6 59
4 63
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
Stato (S) e Turn (T) sono parti integranti dei tipi di dati POS e E6POS:
Funzione
STATUS
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.
TURN
• Esempio
Procedimento
Compito
Compito
Descrizione
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
R=B:A
Fig. 11-17: R = B : A
Esempio di sintassi 1
Modello esplicativo
Collegamento di 2 operandi
Esempio di sintassi 2
result = F : E
;result = {X 3, Y 3, Z 3, A 0, B 0, C 0, S 10, T 20}
Esempio di sintassi 3
Compito
Compito
Descrizione
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.
Traiettoria 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.
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
• 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>
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:
13.1 In generale
Descrizione
Fig. 13-1
;avvio
$TIMER_STOP[Nr] = FALSE
;arresto
$TIMER_STOP[Nr] = TRUE
Preassegnazione di un timer
; Timer 7 funziona
...
; Stop Timer 7
$TIMER_STOP[7] = TRUE
DEF MY_TIME( )
...
INI
$TIMER[1] = 0 ; Resettare TIMER 1
PTP HOME Vel=100% DEFAULT
SPTP XP1
SPTP XP2
SLIN XP3
...
SPTP X50
SPTP XHOME
Compito
Compito
14.1 In generale
• 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
Sintassi
• 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à)
• 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.
• Interrupt locale
• Priorità: 23
• Evento: l'ingresso 12 viene rilevato come fronte positivo (crescente).
• Programma interrupt: INTERRUPT_PROG(20,VALUE)
Descrizione
Inserimento/disinserimento/blocco/consenso di interrupt
• Si attiva un interrupt.
• Si disattiva un interrupt.
• Si blocca un interrupt.
• Si consente un interrupt.
Sintassi
Esempio
Attivazione e disattivazione di un interrupt
• 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.
Esempio
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
DEF MY_PROG( )
INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
...
...
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
END
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
Descrizione
• 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.
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
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()
BRAKE
$OUT[20]=FALSE
$OUT[21]=TRUE
END
• 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.
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
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
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
Compito
Compito
Compito
Descrizione
1. Percorso di menu: Tasto robot > Display > Variabile > Singola
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.
‒ premere Aggiorna.
‒ In alternativa: Shift + Enter
Descrizione
Procedimento
• Percorso di menu: Tasto robot > Display > Variabile > Ingressi/uscite
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
‒ Flags ciclici
‒ Flags
‒ Contatore
‒ Timer
• Esempio: 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.
Descrizione
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.
Sintassi
$OUT[10]=TRUE
$OUT[10]=FALSE
Descrizione
...
SLIN P20 C_SPL
SLIN P21
$OUT[30]=TRUE
SLIN P22
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
Sintassi
Elemento Descrizione
Condizione Tipo: BOOL
Condizione alla quale il programma può proseguire.
Esempi
Connessioni logiche
Esempio
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.
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
Pos. Avviso
1 Il movimento viene interrotto per 2 secondi sul punto P2.
Esempi
Descrizione
Descrizione
Possibilità di programmazione
Sintassi
Funzioni
Elemento Descrizione
ONSTART Punto di riferimento del trigger
Spostamento max.
Esempio
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
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
Domanda
Approssimazione omogenea
Descrizione
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
Esempio
PTP_SPLINE
...
SPTP P2
TRIGGER WHEN PATH=0 DELAY=0 DO ... ;Trigger 1
SPLINE
TRIGGER WHEN PATH=0 ONSTART DELAY=0 DO ... ;Trigger 2
SLIN P4
...
ENDSPLINE
Approssimazione PTP-CP:
Il punto di riferimento si trova alla fine della curva di approssimazione.
Approssimazione CP-PTP:
Il punto di riferimento si trova all'inizio della curva di approssimazione.
Descrizione
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)
Possibilità di programmazione
Posizioni
Sintassi
Elemento Descrizione
ONSTART Punto di riferimento dell'istruzione
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.
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.
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
Descrizione
Descrizione
Sintassi
Elemento Descrizione
ONSTART Punto di riferimento dell'istruzione
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 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
Limiti massimi
Descrizione
Sintassi
SPLINE
Elemento Descrizione
Porzione Tipo: INT o REAL; costante, variabile o funzione
Porzione desiderata di tempo totale per tratto seguente:
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
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
Submit interpreter
16 Submit interpreter
Descrizione
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.
Submit interpreter
16.3 Gestione dei submit
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.
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.
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
Submit interpreter
Verde Giallo
ACTIVE RESET
Rosso Grigio
STOP FREE
Procedimento
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.
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.
Submit interpreter
16.5 Esercizio: Programmazione di submit
Compito
Compito
Descrizione
Spazi consentiti
Procedimento
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
Modi
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.
Pos. Descrizione
1 Numero dello spazio di lavoro (max. 8)
2 Denominazione dello spazio di lavoro
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
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.
Descrizione
• 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
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.
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.
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
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
Descrizione
Procedimento
Compito
Compito
Descrizione
Fig. 18-1
1. Salvare il progetto nel percorso di menu: File > Salva con nome.
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.
Descrizione
Funzioni
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.
Procedimento
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
Crea codice
Attiva progetto.
• 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)
Descrizione
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
Descrizione
Procedimento
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.
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.
Compito
Compito
Descrizione
Descrizione
Procedimento
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.
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).
Ulteriori procedure
Procedimento
2. Cliccare poi con il tasto destro del mouse sulla nuova Base appena
creata e, nel menu contestuale visualizzato, selezionare Converti in
utensile esterno.
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.
Descrizione
Presupposto
Procedimento
Descrizione
Pos. Descrizione
1 Finecorsa corrente negativo
2 Posizione attiva dell'asse
3 Finecorsa corrente negativo
Pos. Descrizione
4 Posizione minima assunta dall'asse dall'inizio del rilevamento
5 Posizione massima assunta dall'asse dall'inizio del rilevamento
Pulsanti
Descrizione
Procedimento
Compito
Compito
Allegato
19 Allegato
•
Struttura KUKA predefinita: KrlMsg_T
• in base all'esempio
...
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
...
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"
‒ 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
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
DEF MyProg( )
DECL INT handle
...
Allegato
handle = Set_KrlMsg(Type, MyMessage, Parameter[ ], Option)
Controllo di un messaggio
DEF MyProg( )
DECL INT handle
DECL BOOL present
...
handle = Set_KrlMsg(Type, MyMessage, Parameter[ ], Option)
...
present= Exists_KrlMsg(handle)
Cancellazione di un messaggio
DEF MyProg( )
DECL INT handle
DECL BOOL erase
...
handle = Set_KrlMsg(Type, MyMessage, Parameter[ ], Option)
...
eraser = Clear_KrlMsg(handle)
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
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
Allegato
19.1.7 Intervento con un messaggio di attesa
Allegato
19.1.8 Ulteriori variabili e strutture nei dialoghi
Impostazione di un dialogo
DEF MyProg( )
DECL INT handle
...
handle = Set_KrlDlg(MyQuestion, Parameter[ ], Touchkey[ ],
Option)
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.
DEF MyProg( )
DECL INT handle, answer
DECL BOOL present
...
handle = Set_KrlDlg(MyQuestion, Parameter[ ], Touchkey[ ],
Option)
...
present = Exists_KrlDlg(handle, Answer)
• Un dialogo può sempre essere generato, solo se non ci sono più altri
dialoghi.
• Si possono definire fino a 7 softkey.
•
• Dichiarazione e inizializzazione dei pulsanti
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
Allegato
19.2 Modulo inline COLLDETECT
Descrizione
Procedimento
• 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)
Descrizione
Descrizione
Allegato
Fig. 19-19: SET_TQ_VALUES ( )
COLLMONLIB.DAT
ENDDAT
Descrizione
...
; 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
Descrizione
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à: %
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
di movimento.
Procedimento
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]
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
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.
Descrizione
2. Salta in USE_CM_PRO_SETTINGS () e
• $COLLMON_TOL_PRO riceve i valori selezionati
• COLLMON_SETTINGS (Arrays)
FOR I=1 to 12
COLLMON_SETTING[SETTING_IDX,I]=$COLLMON_TOL_COM[I]
ENDFOR
END
$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
Segmento spline
$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.
Presupposto
Allegato
Variabili di sistema
• 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.
• 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
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:
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