Manuale RAPID ABB PDF
Manuale RAPID ABB PDF
Manuale RAPID ABB PDF
Panoramica RAPID
3HAC16580-7
Revisione: H
© Copyright 2004-2009 ABB. All rights reserved - Tutti i diritti riservati
Le informazioni contenute in questo manuale possono essere soggette a variazioni senza
preavviso e non devono essere interpretate come un impegno da parte di ABB. ABB declina
ogni responsabilità per qualsiasi errore che possa essere presente in questo manuale.
Ad eccezione di quanto può essere espressamente indicato in certe specifiche parti di questo
Manuale, niente di quanto contenuto può essere considerato come un tipo di garanzia o di
riconoscimento, da parte di ABB, per eventuali perdite, danni a persone o cose, adattamento per
uno scopo specifico, o simili.
In nessun caso ABB potrà essere ritenuta responsabile per eventuali danni accidentali o
consequenziali dovuti all'utilizzo del presente manuale e dei prodotti in esso descritti.
Il presente manuale non può essere riprodotto o copiato, nella sua integralità o parzialmente,
senza autorizzazione scritta da parte di ABB, e il suo contenuto non potrà essere divulgato a
terzi o utilizzato per scopi non autorizzati. I contravventori saranno perseguiti a norma di legge.
3HAC16580-7 Revision: H 3
2.7 Impostazioni di movimento............................................................................................ 65
2.7.1 Principi di programmazione.................................................................................. 65
2.7.2 Velocità TCP massima .......................................................................................... 65
2.7.3 Definizione della velocità ..................................................................................... 66
2.7.4 Definizione dell'accelerazione .............................................................................. 66
2.7.5 Definizione della gestione della configurazione................................................... 66
2.7.6 Definizione del carico utile................................................................................... 67
2.7.7 Definizione del comportamento in prossimità dei punti di singolarità................. 67
2.7.8 Spostamento di un programma ............................................................................. 67
2.7.9 servosoft................................................................................................................ 68
2.7.10 Regolazione dei valori di regolazione del robot ................................................. 68
2.7.11 World Zone.......................................................................................................... 69
2.7.12 Varie per le impostazioni di movimento ............................................................. 70
2.8 Movimento ..................................................................................................................... 71
2.8.1 Principi di programmazione.................................................................................. 71
2.8.2 Istruzioni di posizionamento................................................................................. 72
2.8.3 Ricerca .................................................................................................................. 72
2.8.4 Attivazione di output o interrupt in posizioni specifiche...................................... 72
2.8.5 Controllo del segnale di output analogico proporzionale al TCP effettivo .......... 73
2.8.6 Controllo del movimento se si verifica un errore/interrupt .................................. 74
2.8.7 Acquisizione di informazioni sul robot in un sistema MultiMove ....................... 74
2.8.8 Controllo degli assi esterni.................................................................................... 75
2.8.9 Assi indipendenti .................................................................................................. 75
2.8.10 Correzione del percorso ...................................................................................... 76
4 3HAC16580-7 Revision: H
2.9.5 Esecuzione di test per i segnali di ingresso ed uscita............................................ 82
2.9.6 Disattivazione e attivazione dei moduli di I/O...................................................... 83
2.9.7 Definizione dei segnali di input e output .............................................................. 83
2.9.8 Acquisizione dello stato di un'unità e di un bus di I/O ......................................... 83
2.9.9 Avvio del bus di I/O .............................................................................................. 84
2.10 Comunicazione ............................................................................................................. 85
2.10.1 Principi di programmazione................................................................................ 85
2.10.2 Comunicazione con la FlexPendant, gruppo di funzioni TP .............................. 85
2.10.3 Comunicazione con la FlexPendant, gruppo di funzioni UI ............................... 86
2.10.4 Lettura o scrittura in un file/canale seriale basato su caratteri ............................ 87
2.10.5 Comunicazione con file/canali/fieldbus seriali binari......................................... 87
2.10.6 Comunicazione con rawbytes ............................................................................. 88
2.10.7 Dati per canali seriali/file/fieldbus...................................................................... 88
2.10.8 Comunicazione mediante socket......................................................................... 88
2.10.9 Comunicazioni tramite le RAPID Message Queues ........................................... 89
2.11 Interrupt ........................................................................................................................ 91
2.11.1 Principi di programmazione ................................................................................ 91
2.11.2 Collegamento di interrupt alle trap routine ......................................................... 92
2.11.3 Ordinamento di interrupt..................................................................................... 92
2.11.4 Annullamento di interrupt ................................................................................... 93
2.11.5 Attivazione/disattivazione di interrupt ................................................................ 93
2.11.6 Dati di interrupt ................................................................................................... 93
2.11.7 Tipi di dati di interrupt ........................................................................................ 93
2.11.8 Safe Interrupt....................................................................................................... 95
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
3HAC16580-7 Revision: H 5
2.12.12 Registro eventi ................................................................................................ 102
2.12.13 UNDO ............................................................................................................. 103
2.13 Sistema e ora .............................................................................................................. 107
2.13.1 Principi di programmazione.............................................................................. 107
2.13.2 Utilizzo di un orologio per temporizzare un evento ......................................... 107
2.13.3 Lettura dell'ora e della data correnti ................................................................. 107
2.13.4 Recupero delle informazioni sull'ora da un file ................................................ 108
2.13.5 Recupero della dimensione della memoria del programma disponibile........... 108
2.14 Matematica ................................................................................................................. 109
2.14.1 Principi di programmazione.............................................................................. 109
2.14.2 Calcoli semplici su dati numerici...................................................................... 109
2.14.3 Calcoli più avanzati........................................................................................... 109
2.14.4 Funzioni aritmetiche ......................................................................................... 110
2.14.5 Funzioni di stringa numerica ............................................................................ 110
2.14.6 Funzioni di bit ................................................................................................... 111
2.15 Comunicazione con il computer esterno .................................................................... 113
2.15.1 Principi di programmazione.............................................................................. 113
2.15.2 Invio di un messaggio controllato da programma dal robot a un computer ..... 113
2.16 Funzioni per la gestione dei file ................................................................................. 115
2.17 Istruzioni per il supporto di RAPID ........................................................................... 117
2.17.1 Lettura dati di sistema....................................................................................... 117
2.17.2 Lettura informazioni sul sistema....................................................................... 118
2.17.3 Lettura informazioni sulla memoria.................................................................. 118
2.17.4 lettura dati di configurazione ............................................................................ 118
6 3HAC16580-7 Revision: H
2.19.1 Operazioni di base............................................................................................. 123
2.19.2 Confronto e ricerca............................................................................................ 123
2.19.3 Conversione ...................................................................................................... 124
2.20 Multitasking................................................................................................................ 125
2.20.1 Caratteristiche di base ....................................................................................... 126
2.20.2 Istruzioni generali e funzioni ............................................................................ 126
2.20.3 Sistema MultiMove con robot coordinati ......................................................... 127
2.20.4 Sincronizzazione dei task.................................................................................. 129
2.20.5 Sincronizzazione con polling ............................................................................ 129
2.20.6 Sincronizzazione tramite un interrupt ............................................................... 130
2.20.7 Comunicazione tra task..................................................................................... 131
2.20.8 Tipo di task........................................................................................................ 132
2.20.9 Priorità............................................................................................................... 132
2.20.10 TrustLevel ....................................................................................................... 133
2.20.11 Considerazioni................................................................................................. 134
2.21 Esecuzione all'indietro................................................................................................ 135
2.21.1 Gestori esecuzione all'indietro .......................................................................... 135
2.21.2 Limitazione delle istruzioni di movimento nel gestore di esecuzione
all'indietro............................................................................................................. 136
2.21.3 Comportamento dell'esecuzione all'indietro ..................................................... 137
2.22 Sommario della sintassi .............................................................................................. 141
2.22.1 Istruzioni ........................................................................................................... 141
2.22.2 Funzioni ............................................................................................................ 154
3 Programmazione di movimento e I/O ................................................................................. 161
3.1 Sistemi di coordinate .................................................................................................... 161
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
3HAC16580-7 Revision: H 7
3.3.1 Esecuzione sequenziale del programma nei punti di arresto .............................. 189
3.3.2 Esecuzione sequenziale del programma nei punti di prossimità ........................ 189
3.3.3 Esecuzione simultanea del programma............................................................... 191
3.3.4 Sincronizzazione del percorso ............................................................................ 193
3.3.5 Informazioni correlate......................................................................................... 194
3.4 Configurazione del robot.............................................................................................. 195
3.4.1 Diversi tipi di configurazione del robot .............................................................. 195
3.4.2 Specifica della configurazione del robot............................................................. 197
3.4.3 Controllo della configurazione ........................................................................... 197
3.4.4 Informazioni correlate......................................................................................... 199
3.5 Modelli cinematici del robot ........................................................................................ 201
3.5.1 Cinematica del robot ........................................................................................... 201
3.5.2 Cinematica generale............................................................................................ 204
3.5.3 Informazioni correlate......................................................................................... 205
3.6 Supervisione di movimento/Rilevamento di collisione................................................ 207
3.6.1 Introduzione ........................................................................................................ 207
3.6.2 Regolazione dei livelli di rilevamento delle collisioni ....................................... 207
3.6.3 Finestra di dialogo di supervisione del movimento ............................................ 209
3.6.4 Output digitali ..................................................................................................... 209
3.6.5 Limitazioni.......................................................................................................... 209
3.6.6 Informazioni correlate......................................................................................... 210
3.7 Singularità .................................................................................................................... 211
3.7.1 Punti di singolarità di IRB140 ............................................................................ 212
3.7.2 Esecuzione del programma mediante singolarità ............................................... 212
8 3HAC16580-7 Revision: H
3.10 Principi di I/O ............................................................................................................. 223
3.10.1 Caratteristiche del segnale ................................................................................ 223
3.10.2 Segnali collegati a interrupt .............................................................................. 224
3.10.3 Segnali di sistema.............................................................................................. 224
3.10.4 Connessioni a incrocio ...................................................................................... 225
3.10.5 Limitazioni ........................................................................................................ 225
3.10.6 Informazioni correlate....................................................................................... 226
4 Glossario................................................................................................................................. 227
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
3HAC16580-7 Revision: H 9
10
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Introduzione
1 Introduzione
In questo manuale di riferimento viene fornita una spiegazione dettagliata del
linguaggio di programmazione, di tutti i tipi di dati, delle istruzioni e delle funzioni. È
particolarmente utile durante le attività di programmazione fuori linea.
Finché non si acquisisce una certa familiarità con il sistema, si consiglia di iniziare a
programmare il robot consultando il Manuale dell'operatore - IRC5 con FlexPendant .
Il manuale Dati tecnici del prodotto contiene una panoramica delle caratteristiche e
prestazioni del robot.
3HAC16580-7 Revision: H 11
Introduzione
Convenzioni tipografiche
I comandi associati a uno dei cinque tasti menu nella parte superiore del display della
FlexPendant sono scritti nel formato Menu: Comando. Ad esempio, per attivare il
comando Stampa nel menu File, scegliere File: Stampa.
I nomi dei tasti funzione e dei campi di immissione sono specificati in corsivo e in
grassetto, come ad esempio Modpos.
Gli esempi dei programmi sono sempre riportati esattamente come appaiono su un
dischetto o su una stampante. Al contrario, sulla FlexPendant vengono visualizzati con
le seguenti differenze:
Regole di sintassi
Sintassi semplificata
12 3HAC16580-7 Revision: H
Introduzione
Sintassi formale
Esempio: TPWrite
[String:=] <expression (IN) of string>
[\Num:= <expression (IN) of num> ] |
[\Bool:= <expression (IN) of bool> ] |
[\Pos:= <expression (IN) of pos> ] |
[\Orient:= <expression (IN) of orient> ];
Gli elementi di base del linguaggio e alcune istruzioni sono scritti utilizzando una
sintassi speciale, EBNF, basata sulle stesse regole ma con alcune aggiunte.
3HAC16580-7 Revision: H 13
14
Introduzione
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Programmazione RAPID di base
Le istruzioni in genere hanno una serie di argomenti associati che definiscono cosa
viene effettuato in una specifica istruzione. Ad esempio, l'istruzione per reinizializzare
un output contiene un argomento che definisce quale output deve essere reinizializzato,
ad esempio Reset do5. Gli argomenti possono essere specificati in uno dei seguenti
modi:
precedentemente.
3HAC16580-7 Revision: H 15
Programmazione RAPID di base
- Una costante rappresenta un valore statico che può essere modificato solo con
un nuovo valore assegnato manualmente.
- È possibile inoltre assegnare un nuovo valore a una variabile durante
l'esecuzione del programma.
- Una persistente può essere definita come una variabile “persistente”. Quando
un programma viene salvato, il valore di inizializzazione riflette il valore
corrente del dato persistente.
- Parametri di routine
- Espressioni aritmetiche e logiche
- Gestione automatica degli errori
- Programmi modulari
- Multitasking
16 3HAC16580-7 Revision: H
2.1.1 Elementi di base
2.1.1.1 Identificatori
Gli identificatori vengono utilizzati per denominare moduli, routine, dati ed etichette;
Il primo carattere di un identificatore deve essere una lettera. Gli altri caratteri possono
essere lettere, numeri o caratteri di sottolineatura “_”.
Parole riservate
Inoltre esiste una serie di nomi predefiniti per i tipi di dati, i dati di sistema, le istruzioni
e le funzioni che non devono essere utilizzati come identificatori.
3HAC16580-7 Revision: H 17
2.1.1.2 Spazi e caratteri new line
- identificatori
- parole riservate
- valori numerici
- segnaposto.
Invece di uno spazio è possibile utilizzare i caratteri new line, tab e form feed, tranne
che all'interno dei commenti.
Gli identificatori, le parole riservate e i valori numerici devono essere separati l'uno
dall'altro da uno spazio, un carattere a capo, di tabulazione o di invio riga.
Il valore deve essere compreso nella gamma specificata dal formato standard ANSI
IEEE 754 per singola precisione (ovvero, punto flottante).
Se viene inclusa una barra rovesciata (che indica il codice carattere) o delle virgolette,
è necessario immettere questi caratteri due volte.
18 3HAC16580-7 Revision: H
2.1.1.6 Commenti
Il commento è preceduto dal punto esclamativo “!” e termina con un carattere new line.
Occupa un'intera riga e non può trovarsi al di fuori di una dichiarazione di modulo;
ad esempio: ! comment
IF reg1 > 5 THEN
! comment
reg2:=0;
ENDIF
2.1.1.7 Segnaposto
Segnaposto Rappresenta:
<TDN> definizione di tipo di dati
<DDN> dichiarazione di dati
<RDN> dichiarazione di routine
<PAR> parametro alternativo facoltativo formale
<ALT> parametro formale facoltativo
<DIM> dimensione dell'array (conformante) formale
<SMT> istruzione
<VAR> riferimento oggetto dati (variabile, persistente o parametro)
<EIT> clausola else di un'istruzione if
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
%%%
VERSION:1
LANGUAGE:ENGLISH (o un'altra lingua:
%%% TEDESCO o FRANCESE)
3HAC16580-7 Revision: H 19
2.1.1.9 Sintassi
Identificatori
<identifier> ::=
<ident>
| <ID>
<ident> ::= <letter> {<letter> | <digit> | ’_’}
Valori numerici
Valori logici
Valori di stringa
20 3HAC16580-7 Revision: H
Commenti
<comment> ::=
’!’ {<character> | <tab>} <newline>
Caratteri
3HAC16580-7 Revision: H 21
22
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.1.2 Moduli
Il programma è diviso in moduli di programma e moduli di sistema (vedere Figura1).
Memoria del
Programm
Dati programma
Programma main
Modulo main
Routine1
Module1
Routine2
Module2
Routine3
Modulo3
Modulo4
Dati programma
Routine4
Routine5
Modulo di sistema1
Dati programma
Uno dei moduli contiene la procedura di ingresso, una procedura globale denominata
main. L'esecuzione del programma indica l'esecuzione effettiva della procedura main.
Il programma può includere molti moduli, ma solo uno di questi contiene la procedura
main.
3HAC16580-7 Revision: H 23
2.1.2.2 Moduli di sistema
I moduli di sistema vengono utilizzati per definire routine e dati comuni specifici del
sistema, come gli utensili. Poiché tali moduli non sono inclusi quando un programma
viene salvato, qualsiasi aggiornamento eseguito su un modulo di sistema influenzerà
tutti i programmi presenti o caricati successivamente nella memoria del programma.
Un modulo potrebbe non avere lo stesso nome di un altro modulo o di una routine
Come indicato più sopra, tutti i moduli di programma sono contenuti in un programma
dal nome specifico. Allorquando si memorizza un programma su un supporto a
memoria flash, o su una memoria di massa, viene creato un nuovo directory che avrà
il nome del programma. In questo directory, tutti i moduli di programma verranno
memorizzati con un'estensione di file ".mod", assieme ad un file di descrizione che
comporterà lo stesso nome del programma, più l'estensione ".pgf". Il file di descrizione
comprenderà un elenco di tutti i moduli contenuti nel programma.
24 3HAC16580-7 Revision: H
2.1.2.5 Sintassi
(Nota: Se vengono utilizzati due o più attributi, questi devono trovarsi nell'ordine
illustrato in precedenza. È possibile specificare l'attributo NOVIEW da solo, o
insieme all'attributo SYSMODULE.)
3HAC16580-7 Revision: H 25
26
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.1.3 Modulo di sistema User
Per facilitare la programmazione, insieme al robot vengono forniti dati predefiniti.
Questi dati non devono essere creati e quindi possono essere utilizzati direttamente.
2.1.3.1 Contenuto
User comprende cinque dati numerici (registri), un tipo di dati oggetto di lavoro, un
orologio e due valori simbolici per segnali digitali.
User è un modulo di sistema, quindi è sempre presente nella memoria del robot a
prescindere dal programma caricato.
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
3HAC16580-7 Revision: H 27
28
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.1.4 Routine
Esistono tre tipi di routine (sottoprogrammi): procedure, funzioni e trap.
L'ambito di una routine indica l'area in cui essa è visibile. L'istruzione locale
facoltativa di una dichiarazione di routine classifica una routine come locale
(all'interno del modulo). In caso contrario si tratta di una routine globale.
Alle routine vengono applicate le seguenti regole di ambito (vedere l'esempio nella
Figura2):
Module1 Module2
Routine d Routine g
Routine e Routine h
3HAC16580-7 Revision: H 29
Una routine potrebbe non avere lo stesso nome di un'altra routine, di altri dati o di tipi
di dati nello stesso modulo. Una routine globale potrebbe non avere lo stesso nome di
un modulo o di dati o routine o tipi di dati globali in un altro modulo.
2.1.4.2 Parametri
30 3HAC16580-7 Revision: H
Esempio: PROC routine3 (\num exclude1 | num exclude2)
È possibile passare array come argomenti. Il grado di un argomento array deve essere
conforme al grado del parametro formale corrispondente. Le dimensioni di un
parametro array (matrice) sono “conformi” (contrassegnate con “*”). La dimensione
effettiva dipende quindi dalla dimensione dell'argomento corrispondente in una
chiamata di routine. Una routine può determinare la dimensione effettiva di un
parametro utilizzando la funzione predefinita Dim.
3HAC16580-7 Revision: H 31
Modulo
Dichiarazione di procedura
Dichiarazione di funzione
Una funzione può restituire qualsiasi valore di tipo di dati, ma non un valore di array.
Dichiarazione di trap
TRAP feeder_empty
wait_feeder;
RETURN;
ENDTRAP
32 3HAC16580-7 Revision: H
2.1.4.5 Chiamata di procedura
Per ulteriori informazioni, vedere 2.3.6 Uso delle chiamate di funzione nelle
espressioni a pagina 51.
Notare che il binding posticipato è disponibile solo per le chiamate di procedura e non
per le chiamate di funzione. Se si fa riferimento a una procedura sconosciuta
utilizzando il binding posticipato, la variabile di sistema ERRNO viene impostata su
ERR_REFUNKPRC. Se si fa riferimento a un errore in una chiamata di procedura (di
sintassi, non di procedura) utilizzando il binding posticipato, la variabile di sistema
ERRNO viene impostata su ERR_CALLPROC.
3HAC16580-7 Revision: H 33
2.1.4.6 Sintassi
Dichiarazione di routine
Parametri
Dichiarazione di procedura
34 3HAC16580-7 Revision: H
Dichiarazione di funzione
Chiamata di procedura
3HAC16580-7 Revision: H 35
36
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.2 Dati di programma
- Un tipo di dati atomico, cioè che non viene definito in base ad alcun altro tipo
e non può essere suddiviso in parti o componenti, ad esempio num.
- Un tipo di dati record, cioè composto da componenti ordinati e denominati, ad
esempio pos. Un componente può essere di tipo atomico o record.
Ciascun tipo di dati disponibile è un tipo di dati valore o un tipo di dati non valore. Un
tipo di dati valore rappresenta una forma di “valore”. Non è possibile utilizzare dati non
valore in operazioni che richiedono valori:
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
- Inizializzazione
- Assegnazione (:=)
- Controlli uguale a (=) e diverso da (<>)
- Istruzioni TEST
- Parametri IN (modalità di accesso) nelle chiamate di routine
- Tipi di dati Function (ritorno)
I tipi di dati di input (signalai, signaldi, signalgi) sono tipi di dati semi-valore. È
possibile utilizzare questi dati in operazioni che richiedono valori, tranne che
nell'inizializzazione e nell'assegnazione.
Nella descrizione di un tipo di dati viene specificato solo se è un tipo semi-valore o non
valore.
3HAC16580-7 Revision: H 37
2.2.1.2 Tipi di dati equal (alias)
Un tipo di dati alias viene definito come uguale a un altro tipo. I dati dello stesso tipo
possono essere sostituiti uno con l'altro.
2.2.1.3 Sintassi
<type definition>::=
[LOCAL] ( <record definition>
| <alias definition> )
| <comment>
| <TDN>
<record definition>::=
RECORD <identifier>
<record component list>
ENDRECORD
38 3HAC16580-7 Revision: H
2.2.2 Dichiarazioni dei dati
Esistono tre tipi di dati: variabili, persistenti e costanti.
L'ambito dei dati indica l'area in cui essi sono visibili. L'istruzione locale facoltativa di
una dichiarazione di dati classifica i dati come locali (all'interno del modulo). In caso
contrario si tratta di dati globali. Notare che è possibile utilizzare l'istruzione locale
solo a livello di modulo e non all'interno di una routine.
I dati di programma potrebbero non avere lo stesso nome di altri dati o di un'altra
routine nello stesso modulo. I dati di programma globali potrebbero non avere lo stesso
nome di un'altra routine o di altri dati globali in un altro modulo.
3HAC16580-7 Revision: H 39
I dati dichiarati all'interno di una routine sono denominati dati della routine. Notare
che i parametri di una routine vengono gestiti anche come dati della routine. Le
seguenti regole di ambito vengono applicate ai dati della routine:
Module1 Module2
Dati c Dati g
I dati della routine potrebbero non avere lo stesso nome di altri dati o di un'altra
etichetta nella stessa routine.
Una variabile viene presentata da una dichiarazione di variabile e può essere dichiarata
come "globale di sistema", oppure come un task, globale o locale.
Le variabili con tipi di valori possono essere inizializzate (dato un valore iniziale).
L’espressione utilizzata per inizializzare una variabile di programma deve essere
costante. Da notare che il valore di una variabile non inizializzata può essere utilizzato
ma non è definito, ovvero è impostato su zero.
40 3HAC16580-7 Revision: H
Esempio: VAR string author_name := “John Smith”;
VAR pos start := [100, 100, 50];
VAR num maxno{10} := [1, 2, 3, 9, 8, 7, 6, 5, 4, 3];
Le variabili persistenti possono essere dichiarate solo a livello del modulo, non
all'interno di una routine, e possono essere dichiarate come variabili di sistema globali,
di task globali o locali.
A tutti i tipi di variabili persistenti può essere assegnato un formato array (di grado 1,
2 o 3) aggiungendo alla dichiarazione informazioni relative alla dimensione. Una
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
3HAC16580-7 Revision: H 41
PERS num reg1 := 5;
...
reg1 := 5;
Una variabile costante viene introdotta tramite una dichiarazione di costante. Il valore
di una variabile costante non può essere modificato.
Esempio: CONST num pi := 3.141592654;
A tutti i tipi di variabili costanti può essere assegnato un formato array (di grado 1, 2 o
3) aggiungendo alla dichiarazione informazioni relative alla dimensione. Una
dimensione è un valore intero maggiore di 0.
42 3HAC16580-7 Revision: H
Nella tabella che segue vengono illustrati gli eventi che si verificano durante diverse
attività come avvio a caldo, nuovo programma, avvio del programma e così via.
Sistema Accensione Apertura, Avvio del Avvio del Avvio del Start Avvio del Avvio del
di sistema (Avvio a chiusura o programma programma programma del programma programma
Influisce su caldo) nuovo del (Spostament (Spostament (Spostamen programma (Dopo ciclo) (Dopo
programma o del PP su o del PP su to del PP sul (Routine di interruzione)
main) Routine) cursore) chiamata)
Costanti Non Inizializzazi Inizializzazio Inizializzazi Non Non Non Non
modificato one ne one modificato modificato modificato modificato
Variabile Non Inizializzazi Inizializzazio Inizializzazi Non Non Non Non
modificato one ne one modificato modificato modificato modificato
Variabile Non Iniz**/Non Non Non Non Non Non Non
persistente modificato modificate modificato modificato modificato modificato modificato modificato
Interrupt Riordinati Scomparso Scomparso Scomparso Non Non Non Non
comandati modificato modificato modificato modificato
Avviamento Non eseguito Eseguito* Eseguito Non eseguito Non eseguito Non eseguito Non eseguito Non eseguito
della routine
SYS_RESET
(con
impostazioni
di
movimento)
File Chiusi Chiusi Chiusi Chiusi Non Non Non Non
modificato modificato modificato modificato
Percorso Ricreato Scomparso Scomparso Scomparso Scomparso Non Non Non
all'accensione modificato modificato modificato
* Genera un errore in presenza di un errore semantico nel programma del task effettivo.
** Le variabili persistenti senza valore iniziale vengono inizializzate solo se non sono
già dichiarate
3HAC16580-7 Revision: H 43
In una catena di chiamate ricorsive a routine (una routine che chiama se stessa
direttamente o indirettamente) ciascuna istanza della routine riceve la propria
posizione di memoria per la "stessa" variabile di routine; ovvero viene creata una serie
di istanze della stessa variabile.
2.2.2.7 Sintassi
Dichiarazione di dati
Dichiarazione di variabili
Dichiarazione di costanti
44 3HAC16580-7 Revision: H
2.3 Espressioni
Un'espressione specifica la valutazione di un valore e può essere utilizzata, ad
esempio:
3HAC16580-7 Revision: H 47
Esempio: 2*pi*raggio
Operatore Operazione Tipo di operando Tipo di risultato
+ addizione num + num num3)
+ addizione dnum + dnum dnum3)
+ più unario; segno di +num o +dnum o +pos uguale1)3)
mantenimento
+ addizione di vettori pos + pos pos
- sottrazione num - num num3)
- sottrazione dnum - dnum dnum3)
- meno unario; segno di modifica -num o -pos uguale1)3)
- meno unario; segno di modifica -num o -dnum o -pos uguale1)3)
- sottrazione di vettori pos - pos pos
* moltiplicazione num * num num3)
* moltiplicazione dnum * dnum dnum3)
* moltiplicazione scalare di num * pos o pos * num pos
vettori
* prodotto di vettori pos * pos pos
* collegamento di rotazioni orient * orient orient
/ divisione num / num num
/ divisione dnum / dnum dnum
2)
DIV divisione di interi num DIV num num
DIV 2) divisione di interi dnum DIV dnum dnum
2)
MOD modulo; resto num MOD num num
MOD 2) modulo; resto dnum MOD dnum dnum
Figura51. Il risultato è dello stesso tipo dell'operando. Se l’operando è un tipo di dati alias, il
risultato è di tipo “base” alias (num, dnum o pos).
48 3HAC16580-7 Revision: H
2.3.2 Espressioni logiche
Un'espressione logica viene utilizzata per valutare un valore logico (VERO/FALSO).
Figura81) Solo i tipi di dati value. Gli operandi devono essere dello stesso tipo.
a AND b a XOR b
a True False a True False
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
b b
True True False True False True
False False False False True False
a OR b NOT b
a True False
b b
True True True True False
False True False False True
3HAC16580-7 Revision: H 49
2.3.3 Espressioni stringa
Un'espressione stringa viene utilizzata per eseguire operazioni sulle stringhe.
Esempio: 2*pi*radius
2.3.4.1 Array
Un dato variabile, persistente o costante dichiarato come array può fare riferimento
all'intero array o a un singolo elemento.
2.3.4.2 Record
Un dato variabile, persistente o costante dichiarato come record può fare riferimento
all'intero record o a un singolo componente.
50 3HAC16580-7 Revision: H
Esempio: VAR pos home;
VAR pos pos1;
VAR num yvalue;
..
yvalue := home.y; solo il componente Y
pos1 := home; l'intera posizione
Deve essere possibile determinare i tipi di dati di un'aggregazione dal contesto. Il tipo
di dati di ciascun membro dell'aggregazione deve essere uguale al tipo del membro
corrispondente del tipo determinato.
Esempio: Sin(angle)
Gli argomenti di una chiamata di funzione vengono utilizzati per trasferire dati alla (e
possibilmente dalla) funzione chiamata. Il tipo di dati di un argomento deve essere
uguale al tipo di parametro corrispondente della funzione. È possibile omettere gli
argomenti facoltativi, ma l'ordine degli argomenti (presenti) deve corrispondere
all'ordine dei parametri formali. Inoltre, è possibile dichiarare due o più argomenti
facoltativi per escluderli a vicenda. In questo caso, solo uno di questi può essere
presente nell'elenco degli argomenti.
3HAC16580-7 Revision: H 51
Esempio: Polar(3.937, 0.785398) due argomenti richiesti
Polar(Dist:=3.937, Angle:=0.785398) ... uso dei nomi
Un argomento facoltativo deve essere preceduto da una barra rovesciata “\” e dal nome
del parametro formale. Un argomento di tipo switch è in qualche modo speciale e può
non includere un'espressione di argomenti. Invece, tale argomento può essere solo
"presente" o "assente".
52 3HAC16580-7 Revision: H
2.3.7 Priorità tra gli operatori
La priorità relativa degli operatori determina il relativo ordine di valutazione. Le
parentesi consentono di ignorare la priorità degli operatori. Le regole illustrate di
seguito implicano la seguente priorità degli operatori:
Un operatore con priorità alta viene valutato prima di un operatore con priorità minore.
Gli operatori con la stessa priorità vengono valutati da sinistra a destra.
2.3.8 Esempio
2.3.9 Sintassi
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.3.9.1 Espressioni
<expression> ::=
<expr>
| <EXP>
<expr> ::= [ NOT ] <logical term> { ( OR | XOR ) <logical term> }
<logical term> ::= <relation> { AND <relation> }
<relation> ::= <simple expr> [ <relop> <simple expr> ]
<simple expr> ::= [ <addop> ] <term> { <addop> <term> }
<term> ::= <primary> { <mulop> <primary> }
<primary> ::=
<literal>
| <variable>
| <persistent>
| <constant>
3HAC16580-7 Revision: H 53
| <parameter>
| <function call>
| <aggregate>
| ’(’ <expr> ’)’
2.3.9.2 Operatori
2.3.9.4 Data
<variable> ::=
<entire variable>
| <variable element>
| <variable component>
<entire variable> ::= <ident>
<variable element> ::= <entire variable> { <index list> }
<index list> ::= <expr> { ',' <expr> }
<variable component> ::= <variable> . <component name>
<component name> ::= <ident>
2.3.9.5 Aggregazioni
54 3HAC16580-7 Revision: H
2.3.9.6 Chiamate di funzione
2.3.9.8 Parametri
<parameter> ::=
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
<entire parameter>
| <parameter element>
| <parameter component>
3HAC16580-7 Revision: H 55
56
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.4 Istruzioni
Le istruzioni vengono eseguite in successione a meno che un'istruzione un'istruzione
del flusso di esecuzione di un programma o un'interruzione oppure un errore provochi
il proseguimento dell'esecuzione in altro modo.
La maggior parte delle istruzioni terminano con un punto e virgola “;”. L’etichetta
termina con i due punti “:”. Alcune istruzioni possono contenere altre istruzioni e
terminano con parole chiave specifiche:
Tutte le istruzioni sono raccolte in gruppi specifici, che sono descritti nei paragrafi che
seguono. Questo raggruppamento è lo stesso che si può trovare negli elenchi di
selezione utilizzati, quando si aggiungono nuove istruzioni ad un programma
nell'Editor dei programmi della FlexPendant.
2.4.1 Sintassi
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
3HAC16580-7 Revision: H 57
58
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.5 Controllo del flusso del programma
Di regola, il programma viene eseguito in modo sequenziale, ovvero istruzione dopo
istruzione. Talvolta sono necessarie istruzioni che ne interrompono l'esecuzione
sequenziale e che chiamano un'altra istruzione, in modo da gestire situazioni diverse
che possono verificarsi durante l'esecuzione.
3HAC16580-7 Revision: H 59
2.5.3 Controllo del programma all'interno della routine
WHILE Ripetere una sequenza di istruzioni diverse fino a quando resta soddisfatta
una determinata condizione
TEST Eseguire istruzioni diverse a seconda del valore di un'espressione
60 3HAC16580-7 Revision: H
2.6 Istruzioni varie
Le istruzioni varie vengono utilizzate per
2.6.2 Attesa
È possibile programmare il robot in modo che attenda un determinato periodo di tempo
oppure fino a quando una condizione arbitraria non venga soddisfatta, ad esempio fino
a quando non viene impostato un input.
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.6.3 Commenti
I commenti vengono inseriti nel programma solo per renderlo più comprensibile, senza
influire sull'esecuzione del programma.
3HAC16580-7 Revision: H 61
2.6.4 Caricamento di moduli di programma
I moduli di programma possono essere caricati dalla memoria di massa o cancellati
dalla memoria del programma, in modo da consentire la gestione di programmi di
grandi dimensioni con una memoria piccola.
62 3HAC16580-7 Revision: H
2.6.6 Dati di base
ByteToStr Convertire una stringa con un formato di dati byte definito in dati byte.
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
3HAC16580-7 Revision: H 63
64
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.7 Impostazioni di movimento
Alcune delle caratteristiche di movimento del robot sono determinate utilizzando
istruzioni logiche che si applicano a tutti i movimenti:
- all'avvio a freddo,
- quando viene caricato un nuovo programma,
- quando il programma viene riavviato.
3HAC16580-7 Revision: H 65
2.7.3 Definizione della velocità
La velocità assoluta viene programmata come un argomento nell'istruzione di
posizionamento. Inoltre è possibile definire la velocità massima e il margine di velocità
(una percentuale della velocità programmata).
66 3HAC16580-7 Revision: H
2.7.6 Definizione del carico utile
Per ottenere prestazioni ottimali del robot è necessario definire il carico utile corretto.
3HAC16580-7 Revision: H 67
2.7.9 servosoft
È possibile rendere “soft” uno o più assi del robot. Quando viene utilizzata questa
funzione, il robot sarà compatibile e in grado di sostituire, ad esempio, un utensile a
molla.
68 3HAC16580-7 Revision: H
2.7.11 World Zone
Nell'area di lavoro del robot è possibile definire fino a 10 volumi diversi che possono
essere utilizzati per:
- Indicare che il TCP del robot è una parte definita dell’area di lavoro.
- Delimitare l'area di lavoro del robot ed evitare una collisione con l'utensile.
- Creare un'area di lavoro comune a due robot. L'area di lavoro sarà disponibile
solo per un robot alla volta.
Istruzione Utilizzato per:
WZBoxDefa Definire una zona universale a forma di scatola
WZLimJointDef a Definire una zona universale nelle coordinate dei giunti per limitare l’area
di lavoro.
WZLimSupa Attivare la supervisione del limite per una zona universale
3HAC16580-7 Revision: H 69
2.7.12 Varie per le impostazioni di movimento
70 3HAC16580-7 Revision: H
2.8 Movimento
I movimenti del robot vengono programmati da posizione a posizione, ovvero “dalla
posizione corrente a una nuova”. Il percorso tra le due posizioni viene calcolato
automaticamente dal robot.
- Carico utile
- Comportamento in prossimità dei punti di singolarità
- Spostamento del programma
- servosoft
- Valori di regolazione
Per posizionare il robot e gli assi esterni vengono utilizzate le stesse istruzioni. Gli assi
esterni vengono spostati a una velocità costante in modo da raggiungere la posizione
finale contemporaneamente al robot.
3HAC16580-7 Revision: H 71
2.8.2 Istruzioni di posizionamento
MoveJSync Movimento del giunto che sposta il robot ed esecuzione di una procedura
RAPID.
MoveLSync Muove il robot in modo lineare ed esegue una procedura RAPID
2.8.3 Ricerca
Durante il movimento il robot può cercare, ad esempio, la posizione di un oggetto di
lavoro. La posizione cercata, indicata da un segnale del sensore, viene memorizzata e
può essere utilizzata successivamente per posizionare il robot o per calcolare uno
spostamento del programma.
72 3HAC16580-7 Revision: H
Istruzione Utilizzato per:
TriggInt Definire una condizione trigg per eseguire una trap routine in una
determinata posizione
TriggCheckIO Definire un controllo di I/O in una determinata posizione
TriggEquip Definire una condizione trigg per impostare un output in una determinata
posizione con la possibilità di compensare i tempi per il ritardo
nell’apparecchiatura esterna
TriggRampAO Definire una condizione trigg per impostare a rampa ascendente o
discendente un output in una determinata posizione, con la possibilità di
compensare i tempi per il ritardo nell'apparecchiatura esterna
TriggC Far funzionare il robot (TCP) in senso circolare con una condizione trigg
attivata
TriggJ Far funzionare il robot asse per asse con una condizione trigg attivata
TriggL Far funzionare il robot (TCP) in senso lineare con una condizione trigg
attivata.
TriggLIOs Far funzionare il robot (TCP) in senso lineare con una condizione trigg
attivata.
StepBwdPath Spostarsi all’indietro lungo il percorso in una routine dell’evento RESTART
3HAC16580-7 Revision: H 73
2.8.6 Controllo del movimento se si verifica un errore/interrupt
Per rettificare un errore o un interrupt, è possibile arrestare temporaneamente il
movimento per poi riavviarlo di nuovo.
ClearPath Cancellare l’intero percorso del movimento sul livello di percorso corrente.
74 3HAC16580-7 Revision: H
2.8.8 Controllo degli assi esterni
Per posizionare il robot e gli assi esterni vengono utilizzate in genere le stesse
istruzioni. Alcune istruzioni hanno tuttavia effetto solo sui movimenti degli assi
esterni.
IndDMovea Far passare un asse alla modalità indipendente e spostarlo di una distanza
delta
IndRMovea Far passare un asse alla modalità indipendente e spostarlo in una
posizione relativa (all'interno dell'area di rotazione dell'asse)
IndReseta Imposta la modalità dipendente di un asse e/o ripristina l'area di lavoro
HollowWristResetb Inizializzare la posizione dei giunti del polso sui manipolatori a polso cavo,
ad esempio IRB 5402 e IRB 5403.
a. Solo se il robot è dotato dell'opzione Independent movement.
b. Solo se il robot è dotato dell'opzione Independent movement. L'istruzione HollowWristReset
può essere utilizzata solo sui robot IRB 5402 E IRB 5403.
3HAC16580-7 Revision: H 75
2.8.10 Correzione del percorso
76 3HAC16580-7 Revision: H
2.8.12 Controllo del trasportatore
3HAC16580-7 Revision: H 77
2.8.15 Funzioni di posizione
78 3HAC16580-7 Revision: H
2.8.18 Dati di movimento
I dati di movimento vengono utilizzati come argomento nelle istruzioni di
posizionamento.
speeddata La velocità
orient Un orientamento
loaddata Un carico
3HAC16580-7 Revision: H 79
80
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.9 Segnali di ingresso ed uscita
Il robot può essere dotato di numerosi segnali utente digitali e analogici che è possibile
leggere e modificare dall'interno del programma.
SetDO Modificare il valore di un segnale di output digitale (valore simbolico, ad esempio high/
low )
SetGO Modificare il valore di un gruppo di segnali di output digitali
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
! Digital input
IF di1 = 1 THEN ...
! Analog input
IF ai1 > 5.2 THEN ...
È possibile che venga generato il seguente errore reversibile, che può essere gestito in
un gestore errori. La variabile di sistema ERRNO verrà impostata su:
3HAC16580-7 Revision: H 81
ERR_NORUNUNIT Nessun contatto con l’unità
82 3HAC16580-7 Revision: H
2.9.6 Disattivazione e attivazione dei moduli di I/O
I moduli di I/O sono attivati automaticamente all'avvio ma possono essere disattivati
durante l'esecuzione del programma e riattivati successivamente.
3HAC16580-7 Revision: H 83
2.9.9 Avvio del bus di I/O
84 3HAC16580-7 Revision: H
2.10 Comunicazione
Esistono quattro possibili modi per comunicare mediante i canali seriali:
Ogni file o canale seriale deve essere prima aperto. Durante questa operazione il
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
3HAC16580-7 Revision: H 85
Istruzione Utilizzato per:
TPReadNum Leggere un valore numerico dalla FlexPendant
86 3HAC16580-7 Revision: H
2.10.4 Lettura o scrittura in un file/canale seriale basato su caratteri
3HAC16580-7 Revision: H 87
2.10.6 Comunicazione con rawbytes
Le istruzioni e le funzioni di seguito vengono utilizzate per supportare le istruzioni di
comunicazione WriteRawBytes e ReadRawBytes.
2.10.8 Comunicazione mediante socket © Copyright 2004-2009 ABB. Tutti i diritti riservati.
88 3HAC16580-7 Revision: H
Funzione Utilizzato per:
SocketGetStatus Ottiene lo stato corrente del socket
RMQFindSlota Ritrova il numero d’identificazione della fila d’attesa configurata per un task
RAPID, o per un cliente del Robot Application Builder
RMQGetMessagea Ottiene il primo messaggio dalla fila d’attesa di questo task
RMQSendMessagea Invia dati verso la fila d’attesa della fila configurata per un task RAPID, o
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
3HAC16580-7 Revision: H 89
90
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.11 Interrupt
Gli interrupt sono eventi definiti dai programmi, identificati da numeri di interrupt. Un
interrupt si verifica quando una condizione di interrupt è vera. A differenza degli
errori, il verificarsi di un interrupt non è direttamente collegato a, o sincronizzato con,
una posizione di codice specifica. Il verificarsi di un interrupt provoca la sospensione
della normale esecuzione del programma e il controllo viene passato a una trap
routine.
gli interrupt non vengono gestiti. Gli interrupt in coda e all'arresto verranno eliminati,
e tutti gli interrupt generati durante l'arresto non verranno trattati, ad eccezione dei safe
interrupt, vedere:
Il numero massimo di interrupt definiti in qualsiasi momento è limitato a 100 per ogni
task di programma.
3HAC16580-7 Revision: H 91
L’identità interrupt (variabile) viene quindi utilizzata per ordinare un interrupt, ovvero
per specificare il motivo dell’interrupt che può essere uno dei seguenti eventi:
- È possibile disattivare tutti gli interrupt. Tutti gli interrupt che si verificano
durante questo intervallo vengono messi in coda e generati automaticamente
quando gli interrupt vengono riattivati.
- È possibile disattivare singoli interrupt. Tutti gli interrupt che si verificano
durante questo intervallo vengono ignorati.
IRMQMessagea Un interrupt quando un tipo di dati specificati viene ricevuto da una RAPID
Message Queue.
a. Soltanto nel caso che il robot sia dotato di almeno una delle opzioni FlexPendant Interface,
PC Interface, o Multitasking.
92 3HAC16580-7 Revision: H
2.11.4 Annullamento di interrupt
trapdata Contenere i dati di interrupt che hanno causato l'esecuzione della TRAP
routine corrente.
errtype Specificare un tipo di errore (severità).
3HAC16580-7 Revision: H 93
94
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.11.8 Safe Interrupt
Alcune istruzioni, ad esempio ITimer e ISignalDI, si possono utilizzare assieme a Safe
Interrupt. I Safe Interrupts sono interrupt che verranno posti in fila d'attesa se arrivano
durante un arresto dell'esecuzione, o un'esecuzione per passi. Gli queued posti nella
coda verranno trattati non appena si avvia l'esecuzione continua, secondo la sequenza
FIFO, primo ad entrare, primo ad uscire. Verranno trattati anche gli interrupt posti in
coda durante un'interruzione dell'esecuzione. L'istruzione ISleep non potrà essere
utilizzata assieme ai Safe Interrupts.
3HAC16580-7 Revision: H 95
2.11.10 Trap routine
Le trap routine consentono di interagire con gli interrupt. È possibile collegare una trap
routine a un interrupt particolare utilizzando l'istruzione CONNECT. Quando si
verifica un interrupt, il controllo viene immediatamente trasferito alla trap routine
associata, se presente. Il verificarsi di un interrupt a cui non è collegata alcuna trap
routine viene considerato come un errore irreversibile, il che provoca l’arresto
immediato dell’esecuzione del programma.
.PROC main()
Diversi interrupt possono essere collegati alla stessa trap routine. La variabile di © Copyright 2004-2009 ABB. Tutti i diritti riservati.
sistema INTNO contiene il numero di interrupt e può essere utilizzata da una trap
routine per identificarne uno. Dopo aver eseguito l'azione necessaria, è possibile
terminare la trap routine utilizzando l'istruzione RETURN o al termine della routine
(ENDTRAP o ERROR). L'esecuzione continua dal punto in cui si è verificato
l'interrupt.
96 3HAC16580-7 Revision: H
2.12 Ripristino da condizioni d'errore
Molte condizioni di errore che si verificano durante l'esecuzione di un programma
possono essere gestite nel programma senza interromperne l'esecuzione. Questi tipi
errori sono rilevati dal sistema, ad esempio la divisione per zero, o dal programma, ad
esempio gli errori generati quando viene letto un valore non corretto da un lettore di
codice a barre.
Nel gestore errori è possibile gestire gli errori utilizzando istruzioni ordinarie. Per
determinare che tipo di errore si è verificato, è possibile utilizzare i dati del sistema
ERRNO. La restituzione dal gestore errori può avvenire in modi diversi (RETURN,
RETRY, TRYNEXT e RAISE).
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Se nella routine corrente non è disponibile un gestore errori, viene attivato direttamente
il gestore interno del robot, che genera un messaggio di errore e termina l'esecuzione
del programma con il puntatore programma posizionato in corrispondenza
dell'istruzione non corretta.
3HAC16580-7 Revision: H 97
2.12.3 Registrazione di un numero di errore
RAISE Chiamare il gestore errori della routine che ha chiamato la routine corrente
RaiseToUser Generare l'errore, da una routine NOSTEPIN per il gestore errori a livello
utente
StartMoveRetry Un'istruzione che sostituisce le due istruzioni StartMove e RETRY. I
movimenti riprendono e viene rieseguita l'istruzione che ha causato
l'errore.
SkipWarn Ignorare l’ultimo messaggio di avvertimento richiesto.
98 3HAC16580-7 Revision: H
2.12.7 Dati per la gestione degli errori
3HAC16580-7 Revision: H 99
100
3HAC16580-7 Revision: H
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
2.12.9 Gestori d'errore
Ciascuna routine può includere un gestore errori. Il gestore errori è parte integrante
della routine e anche l'ambito di qualsiasi dato della routine comprende il gestore errori
della routine. Se si verifica un errore durante l'esecuzione della routine, il controllo
viene affidato al gestore errori.
La variabile di sistema ERRNO contiene il numero dell'errore più recente e può essere
utilizzata dal gestore errori per l'identificazione dell'errore stesso. Dopo aver eseguito
le azioni necessarie, il gestore errori può:
In una catena di chiamate di routine, ciascuna routine potrebbe disporre del proprio
gestore errori. Se si verifica un errore in una routine dotata di un gestore errori, e
l'errore viene propagato in maniera esplicita utilizzando l'istruzione RAISE, lo stesso
errore viene generato di nuovo nel punto della chiamata della routine: l'errore viene
propagato. Quando viene raggiunta la parte superiore della catena (la routine di entrata
Se si desidera che un errore venga gestito senza che nel registro eventi sia riportato un
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
avviso, utilizzare l'istruzione SkipWarn nel gestore errori. Ciò può risultare utile
quando si utilizza il gestore errori per verificare, ad esempio, l'esistenza di un file,
senza lasciare nessuna traccia dell'eventuale esito negativo del test.
2.12.13.1 Definizioni/terminologia
Per evitare ambiguità durante la lettura del testo, di seguito è riportato un elenco di
spiegazioni dei termini relativi a UNDO.
UNDO: esecuzione del codice di pulizia prima del reset del programma.
Contesto UNDO: quando la routine corrente fa parte di una catena di chiamate che
viene avviata in un gestore UNDO.
Una routine RAPID può essere interrotta in qualsiasi momento spostando il puntatore
di programma (PP) all'esterno della routine. In alcuni casi, è tuttavia sconsigliabile
interrompere routine particolarmente complesse mentre vengono eseguite dal
programma. Con UNDO è possibile proteggere questo tipo di routine da reset di
programma imprevisti e attivare l'esecuzione automatica di codice specifico in caso di
interruzione della routine. Solitamente questo codice esegue operazioni di pulizia, ad
esempio per chiudere un file.
Quando si attiva UNDO, vengono eseguiti tutti i gestori UNDO nella catena di
chiamate corrente. Questi gestori sono elementi facoltativi di una procedura o una
funzione RAPID contenente codice RAPID. I gestori UNDO attivi sono quelli
appartenenti a procedure o funzioni che sono state richiamate ma non ancora
completate, ovvero le routine nella catena di chiamate corrente.
Se nella catena di chiamate è presente più di una routine UNDO, i relativi gestori
UNDO saranno elaborati nello stesso ordine restituito dalle routine, ovvero dalla fine
all'inizio. L'ultimo gestore UNDO nella catena di chiamate verrà eseguito per primo,
mentre il più vicino a Main sarà eseguito per ultimo.
2.12.13.4 Limitazioni
Un gestore UNDO può accedere a qualsiasi variabile o simbolo raggiungibile dal corpo
di una routine normale, incluse le variabili dichiarate localmente. Il codice RAPID che
è possibile eseguire nel contesto di UNDO presenta tuttavia delle limitazioni.
Un gestore UNDO non deve contenere istruzioni STOP, BREAK, RAISE o RETURN.
Se si tenta di utilizzare una di queste istruzioni in un contesto UNDO, l'istruzione verrà
ignorata e verrà generato un avviso ELOG.
Se il programma viene arrestato durante l'esecuzione del gestore UNDO, la parte del
Programma: Output:
PROC B In Main
TPWrite "In Routine B"; Nella Routine A
Exit; Nella Routine B
UNDO In UNDO della Routine B
TPWrite "In UNDO of routine B"; In UNDO di Main
ENDPROC
PROC A
TPWrite "In Routine A";
B;
ENDPROC
PROC main
TPWrite "In main";
A;
UNDO
TPWrite "In UNDO of main";
ENDPROC
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
L'ora o la data corrente può essere recuperata in una stringa che potrà essere
visualizzata sul display dell'operatore della FlexPendant o utilizzata per contrassegnare
con data e ora i file di registro.
ModTime Per ottenere l’ora di modifica del file del modulo caricato
Incr Incrementa di 1
Decr Decrementa di 1
BitAnd Eseguire un’operazione logica AND bit per bit su tipi di dati byte.
BitNeg Eseguire un’operazione logica NEGATION bit per bit su tipi di dati byte.
BitOr Eseguire un’operazione logica OR bit per bit su tipi di dati byte.
BitXOr Eseguire un’operazione logica XOR bit per bit su tipi di dati byte.
BitLSh Eseguire un’operazione logica LEFT SHIFT bit per bit su tipi di dati byte.
BitRSh Eseguire un’operazione logica RIGHT SHIFT bit per bit su tipi di dati byte.
SetSysData Attivare il nome dei dati di sistema specificato per un tipo di dati specificato.
TextGet Ottenere una stringa di testo dalle tabelle di testo del sistema.
TextTabFreeToUse Verificare se è possibile utilizzare il nome della tavola di testo (stringa della
risorsa di testo).
GetTaskName Ottenere l'identità del task del programma corrente, con il relativo nome e
numero.
MotionPlannerNo Ottenere il numero del pianificatore di movimento corrente.
2.17.10 Ottenimento del tipo di evento, del gestore di esecuzione, o del livello di
esecuzione
Verificare se diversa da
Per utilizzare questa funzione, è necessario configurare il robot con un TASK extra per
ogni programma aggiuntivo. Ciascun task può essere di tipo NORMAL, STATIC o
SEMISTATIC.
La gestione di trap è specifica di ogni task e le routine evento vengono attivate solo in
base agli stati di sistema propri del task (ad esempio, Start/Stop/Restart e così via).
Le variabili e le costanti sono locali in ogni task, mentre le variabili persistenti non lo
sono. Una variabile persistente con lo stesso nome e tipo è raggiungibile in tutti i task.
Se due variabili persistenti hanno lo stesso nome, ma tipo o dimensione (dimensione
dell'array) sono diversi, si verificherà un errore di runtime.
La gestione di trap è specifica di ogni task e le routine evento vengono attivate solo in
base agli stati di sistema propri del task (ad esempio, Start/Stop/Restart e così via).
Le variabili persistenti vengono quindi utilizzate insieme alle istruzioni WaitUntil, IF,
WHILE o GOTO.
Esempio
TASK 1
MODULE module1
PERS bool startsync:=FALSE;
PROC main()
startsync:= TRUE;
.
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
ENDPROC
ENDMODULE
TASK 2
MODULE module2
PERS bool startsync:=FALSE;
PROC main()
WaitUntil startsync;
.
ENDPROC
ENDMODULE
Esempio
TASK 1
MODULE module1
PROC main()
SetDO do1,1;
.
ENDPROC
ENDMODULE
TASK 2
MODULE module2
VAR intnum isiint1;
PROC main()
WHILE TRUE DO
WaitTime 200;
ENDWHILE
IDelete isiint1;
TRAP isi_trap
ENDTRAP
ENDMODULE
Una variabile persistente globale è globale in tutti i task. La variabile persistente deve
essere dello stesso tipo e dimensione (dimensione dell'array) in tutti i task in cui è
dichiarata. In caso contrario si verifica un errore di runtime.
Esempio
TASK 1
MODULE module1
PERS bool startsync:=FALSE;
PERS string stringtosend:=””;
PROC main()
stringtosend:=”this is a test”;
startsync:= TRUE
ENDPROC
ENDMODULE
TASK 2
MODULE module2
PERS bool startsync:=FALSE;
PERS string stringtosend:=””;
PROC main()
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
WaitUntil startsync;
!read string
IF stringtosend = “this is a test” THEN
ENDPROC
ENDMODULE
I task STATIC e SEMISTATIC sono avviati nella sequenza di avvio del sistema. Se
il task è di tipo STATIC, verrà riavviato nella posizione corrente (dove si trovava il PP
nel momento in cui il sistema era stato spento). Se il tipo è impostato su SEMISTATIC
a ogni accensione verrà riavviato dall'inizio e i moduli specificati nei parametri di
sistema verranno ricaricati se il file del modulo è più recente del modulo caricato.
I task di tipo NORMAL non verranno avviati al primo avvio. Saranno avviati
seguendo la normale procedura, ad esempio dalla FlexPendant.
2.20.9 Priorità
Per eseguire i task come predefiniti, eseguirli tutti allo stesso livello in modalità
round robin (un passo di base a ogni istanza), ma è possibile modificare la priorità di
un task impostandolo in background rispetto a un altro. Il task in background verrà
quindi eseguito solo quando quello in foreground è in attesa di qualche evento o ha
terminato l'esecuzione (in pausa). Un programma del robot con istruzioni di
movimento si troverà in pausa per la maggior parte del tempo.
L'esempio che segue descrive alcune situazioni in cui nel sistema sono presenti 10
task (vedere Figura9)
task 5
task 6 task 7
task 8
catena 4
catena 3
task 9 task 10
2.20.10 TrustLevel
TrustLevel gestisce il funzionamento del sistema quando un task SEMISTATIC o
STATIC viene interrotto per qualche motivo o non può essere eseguito.
SysHalt - Vengono interrotti tutti i task di tipo NORMAL. Il sistema viene forzato in
modalità MOTORS OFF, “motori disinseriti”. Quando i motori vengono attivati
(MOTORS ON), è possibile muovere manualmente il robot, tuttavia il tentativo di
riavvio del programma verrà rifiutato. Un nuovo avvio a caldo ripristinerà il sistema.
2.20.11 Considerazioni
Quando vengono specificate le priorità dei task è necessario considerare quanto segue:
- Utilizzare sempre il meccanismo di interrupt oppure cicli con ritardi nei task di
supervisione. In caso contrario la FlexPendant non potrà mai interagire con
l'utente. Se il task di supervisione si trova in foreground, non consente
l'esecuzione di un altro task in background.
MoveL p1,v500,z10,tool1;
ENDPROC
Quando la procedura viene chiamata durante l'esecuzione in avanti, si verifica quanto
segue:
PROC MoveTo ()
.. MoveL p1,v500,z10,tool1;
MoveTo; MoveC p2,p3,v500,z10,tool1;
.. MoveL p4,v500,z10,tool1;
BACKWARD
MoveL p4,v500,z10,tool1;
MoveC p2,p3,v500,z10,tool1;
MoveL p1,v500,z10,tool1;
ENDPROC
PROC MoveTo ()
.. MoveL p1,v500,z10,tool1;
MoveTo; MoveC p2,p3,v500,z10,tool1;
.. MoveL p4,v500,z10,tool1;
BACKWARD
MoveL p4,v500,z10,tool1;
MoveC p2,p3,v500,z10,tool1;
MoveL p1,v500,z10,tool1;
ENDPROC
Non è possibile eseguire all'indietro le istruzioni nel gestore errori o di esecuzione
all'indietro di una routine. Non è possibile nidificare l'esecuzione all'indietro, ovvero
non è possibile eseguire contemporaneamente due istruzioni all'indietro in una catena
di chiamate.
Una procedura senza gestore di esecuzione all'indietro non può essere eseguita
all'indietro. Una procedura con un gestore di esecuzione all'indietro vuoto viene
eseguita come “nessuna operazione”.
PROC MoveTo ()
MoveL p1,v500,z10,tool1;
MoveC p2,p3,v500,z10,tool1; Piano di riflession
MoveL p4,v500,z10,tool1;
BACKWARD
MoveL p4,v500,z10,tool1;
MoveC p2,p3,v500,z10,tool1;
MoveL p1,v500,z10,tool1;
ENDPROC
Quando si esegue un'istruzione alla volta in avanti nel codice del programma, un
puntatore di programma indica la successiva istruzione da eseguire e un puntatore di
movimento indica l'istruzione di movimento che il robot sta eseguendo.
Quando si esegue un'istruzione alla volta all'indietro nel codice del programma, il
puntatore di programma indica l'istruzione precedente alla posizione del puntatore di
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
A Puntatore di programma
B Puntatore di movimento
C Evidenziazione del robtarget verso il quale si sta muovendo il robot o che è già stato
raggiunto.
1 Il programma viene eseguito un'istruzione alla volta in avanti finché il robot non è
in p5. Il puntatore di movimento indicherà p5 e il puntatore di programma
2.22.1 Istruzioni
Dati := Valore
AccSet Acc Ramp
ActUnit MecUnit
Add Name AddValue
ArcRefresh
ArcKill
CancelLoad LoadNo
CheckProgRef
CirPathMode [\PathFrame] | [\ObjectFrame] | [\CirPointOri] |
[\Wrist45] | [\Wrist46] | [\Wrist56]
Clear Name
ClearIOBuff IODevice
ClearPath
ClkReset Clock
CorrClear
CorrCon Descr
CorrDiscon Descr
CorrWrite
CorrWrite Descr Data
EraseModule ModuleName
IDisable
IEnable
IError ErrorDomain [\ErrorId] ErrorType Interrupt
IF Condition ...
IF Condition THEN ...
{ELSEIF Condition THEN ...}
[ELSE ...]
ENDIF
Incr Name
IndAMove MecUnit Axis [\ToAbsPos] | [\ToAbsNum] Speed
[\Ramp]
IOBusStart BusName
ISleep Interrupt
ITimer [\Single] | [\SingleSafe] Time Interrupt
IVarValue VarNo Value Interrupt
IWatch Interrupt ParIdType LoadIdType Tool [\PayLoad]
[\WObj] [\ConfAngle] [\SlowTest] [\Accuracy]
PathRecStart ID
PathRecStop [\Clear]
PathResol Value
PDispOff
RMQEmptyQueue
RMQGetMessage Message
SkipWarn
SocketClose Socket
SocketConnect Socket Address Port [\Time] © Copyright 2004-2009 ABB. Tutti i diritti riservati.
SocketCreate Socket
SocketListen Socket
SoftDeact [\Ramp]
SpcDiscon Descr
SpcDump
SpcRead
SpcStat
SpeedRefresh Override
SpotJ
SpotML
SpyStart File
SpyStop
StartMoveRetry
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
SyncMoveResume
SyncMoveUndo
TPErase
WarmStart
Abs (Input)
ACos (Value)
AOutput (Signal)
ArgName (Parameter)
ASin (Value)
ATan (Value)
ATan2 (Y X)
BitAnd (BitData1 BitData2)
BitCheck (BitData BitPos)
BitNeg (BitData1)
CSpeedOverride ([\CTask])
CTime
CTool
CWObj
DecToHex (Str)
DOutput (Signal)
DotProd (Vector1 Vector2)
EventType
EulerZYX ([\X] | [\Y] | [\Z] Rotation)
ExecHandler
ExecLevel
Exp (Exponent)
FileSize (Path)
GetTaskName ([\TaskNo])
GetTime ([\WDay] | [\Hour] | [\Min] | [\Sec])
GOutput (Signal)
GOutputDnum (Signal)
GInputDnum (Signal)
HexToDec (Str)
IOUnitState (UnitName [\Phys] | [\Logic]) © Copyright 2004-2009 ABB. Tutti i diritti riservati.
IsSyncMoveOn
IsSysId (SystemId)
ModExist (ModuleName)
NonMotionMode ([\Main])
NOrient (Rotation)
NumToDnum (Value)
NumToStr (Val Dec [\Exp])
Offs (Point XOffset YOffset ZOffset)
OpMode
PathLevel ()
PathRecValidBwd ( [\ID] )
PathRecValidFwd ( [\ID] )
RawBytesLen (RawData)
SocketGetStatus ( Socket )
Sqrt (Value)
TaskRunMec
TaskRunRob
TestAndSet (Object)
TestDI (Signal)
TestSignRead (Channel)
TextGet (Table Index)
TextTabFreeToUse (TableName)
TextTabGet (TableName)
Trunc (Val [\Dec])
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
UIClientExist
VaidIO (Signal)
ValToStr (Val)
VectMagn (Vector)
È possibile definire diversi TCP (utensili), ma può essere attivo solo uno alla volta.
Quando si registra una posizione, si tratta della posizione del TCP. Questo è inoltre il
punto che si sposta lungo un determinato percorso, a una determinata velocità.
Se il robot sta mantenendo un work object e sta lavorando su un tool fisso, viene
utilizzato un TCP fisso. Se tale utensile è attivo, la velocità e il percorso programmato
sono correlati all'oggetto di lavoro. Vedere 3.1.3.3 TCP fissi alla pagina 171.
Il sistema di coordinate definito dipende dalle operazioni che deve effettuare il robot.
Se non si definisce alcun sistema di coordinate, le posizioni del robot vengono indicate
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Z
Y
A volte, nella stessa area di lavoro di un impianto sono in funzione diversi robot. In
questo caso viene utilizzato un sistema di coordinate universale comune per consentire
ai programmi dei robot di comunicare l'uno con l'altro. Inoltre, questo tipo di sistema
potrebbe essere utile per collegare le posizioni a un punto fisso all'interno del
laboratorio. Vedere l'esempio nella Figura11.
Y
Z
Z
Y
X
Sistema di coordinate di base robot 1
y
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Sistema di coordinate
X
Figura11Due robot (uno dei quali è sospeso) con un sistema di coordinate universali comune.
Un robot è in grado di funzionare con diversi attrezzi o superfici di lavoro che hanno
posizioni e orientamenti diversi. È possibile definire un sistema di coordinate utente
per ogni attrezzo. Se tutte le posizioni sono memorizzate nelle coordinate oggetto, non
sarà necessario riprogrammarle nel caso in cui un attrezzo debba essere spostato o
ruotato. Spostando o girando il sistema di coordinate utente esattamente come è stato
spostato o girato l'attrezzo, tutte le posizioni programmate seguiranno quest'ultimo e
non si dovrà effettuare una nuova programmazione.
Z
Sistema di coordinate utente 1
X
Z
Sistema di coordinate utente 2
Z
Y z
Sistema di coordinate
X
Figura12Due sistemi di coordinate utente descrivono la posizione di due diversi attrezzi.
Il sistema di coordinate utente viene utilizzato per ottenere vari sistemi di coordinate
per diversi attrezzi o superfici di lavoro. Un attrezzo, tuttavia, potrebbe includere vari
oggetti di lavoro che devono essere elaborati o gestiti dal robot. Questo consente di
definire un sistema di coordinate per ogni oggetto per poter regolare più facilmente il
programma nel caso in cui un oggetto venga spostato oppure un oggetto nuovo, simile
a quello precedente, debba essere programmato in una diversa posizione. Un sistema
di coordinate che fa riferimento a un oggetto viene definito sistema di coordinate
oggetto. Questo sistema di coordinate si adatta perfettamente alla programmazione off-
line, in quanto le posizioni specificate possono essere ricavate direttamente da un
disegno del work object. Il sistema di coordinate oggetto può essere utilizzato per
muovere manualmente il robot.
z
z
z Sistema di coordinate
y
Sistema di coordinate utente y X
y
X
X Sistema di coordinate
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Sistema di coordinate
X
Figura13Due sistemi di coordinate oggetto descrivono la posizione di due diversi oggetti di
lavoro posizionati sullo stesso attrezzo.
Se il sistema di coordinate utente è mobile, ovvero vengono utilizzati degli assi esterni
coordinati, il sistema di coordinate oggetto si sposta insieme al sistema di coordinate
utente. In questo modo, è possibile spostare il robot in relazione all'oggetto anche se si
cambia la posizione del banco di lavoro.
y Nuova posizione
y
Posizione originale
X
Sistema di coordinate di
X
Sistema di coordinate
Se un work object si trova in un'unità meccanica esterna che viene spostata mentre il
robot esegue un percorso indicato nel sistema di coordinate oggetto, è possibile
definire un sistema di coordinate utente mobile. In questo caso, la posizione e
l'orientamento del sistema di coordinate utente dipenderanno dalle rotazioni degli assi
dell'unità esterna. Il percorso programmato e la velocità saranno così correlati al work
object (vedere la Figura15) e non sarà necessario considerare il fatto che l'oggetto
viene spostato dall'unità esterna.
z
Sistema di coordinate utente
y
X
giunto 2 giunto 3
giunto 1
Sistema di coordinate
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
X
Figura15Un sistema di coordinate utente definito per seguire i movimenti di un'unità meccanica
esterna a 3 assi.
È possibile definire anche un sistema di coordinate mobili per la base del robot. Ciò
riguarda l'operazione di installazione nel caso in cui il robot venga montato, ad
esempio, su un binario o su un gantry. La posizione e l'orientamento del sistema di
coordinate di base dipenderà, come per il sistema di coordinate utente mobile, dai
movimenti dell'unità esterna. Il percorso programmato e la velocità saranno correlati
al sistema di coordinate oggetto (Figura16) e non sarà necessario considerare il fatto
che la base del robot viene spostata da un'unità esterna. È possibile definire
contemporaneamente sia un sistema di coordinate utente che un sistema di coordinate
di base, entrambi coordinati.
Sistema di coordinate
Sistema di coordinate
Sistema di
coordinate
Binario
Sistema di coordinate di
Per poter calcolare i sistemi di coordinate di base e utente, quando le unità coinvolte
vengono spostate, il robot deve conoscere:
z
X
Figura17Sistema di coordinate polso.
Il sistema di coordinate polso non può essere modificato e nei seguenti casi corrisponde
sempre alla flangia di montaggio del robot:
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Il tool posto sulla flangia di montaggio del robot spesso necessita del proprio sistema
di coordinate per abilitare la definizione del proprio TCP, che è l'origine del sistema di
coordinate tool. Durante il movimento del robot, è possibile usare il sistema di
coordinate tool per ottenere le direzioni di movimento appropriate.
Parte
X
Parte
X
z
Figura18Il sistema di coordinate tool, come definito normalmente per una pistola di saldatura
ad arco (sinistra) e
una pistola di saldatura a punti (destra).
Sistema di coordinate
X z
Figura19Il sistema di coordinate strumento viene definito in base al sistema di coordinate del
polso;
in questo caso, per una pinza.
Se il robot sta mantenendo un work object e sta lavorando su un tool fisso, viene
utilizzato un TCP fisso. Se quel tool è attivo, la velocità e il percorso programmato
sono correlati al work object mantenuto dal robot.
Questo significa che i sistemi di coordinate verranno invertiti, come nella Figura20.
Z
Sistema di coordinate oggetto
Y Z
X
Y
X
Sistema di coordinate utensile
Z
Y z
X
Sistema di coordinate
X
Figura20Se si utilizza un TCP fisso, il sistema di coordinate oggetto si basa sul sistema di
coordinate polso.
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
y
z
Sistema di coordinate z
X
y
y
z Sistema di coordinate utente
Sistema di coordinate di
X
X
y
X
Figura21Lo spostamento del programma può essere usato con TCP fissi.
Consultare:
Definizione del sistema di coordinate Manuale tecnico di riferimento - Parametri di sistema
universali
Definizione del sistema di coordinate utente Manuale operativo - IRC5 con FlexPendant
3.2.1 Generale
Durante l'esecuzione del programma, le istruzioni di posizionamento nel programma
del robot controllano tutti i movimenti. Il task principale delle istruzioni di
posizionamento consiste nel fornire le seguenti informazioni su come devono essere
eseguiti i movimenti:
Come alternativa per la definizione della velocità del robot e degli assi esterni, è
possibile programmare l'intervallo di tempo del movimento. Tuttavia, si consiglia di
non utilizzare questa opzione se viene utilizzata la funzione di pendolamento. Invece,
le velocità dell'orientamento e degli assi esterni devono essere utilizzate per ridurre la
velocità quando vengono eseguiti piccoli movimenti o nessun movimento del TCP.
Tutti gli assi si spostano dal punto iniziale al punto di destinazione a una velocitÃ
costante (vedere la Figura22).
Figura22L'interpolazione dei giunti è spesso il modo più veloce per spostarsi tra due punti
poiché gli assi del robot seguono il percorso più breve tra il punto iniziale e il punto
di destinazione (dalla prospettiva degli angoli degli assi).
La velocità del TCP (Tool Centre Point) viene espressa in mm/s (nel sistema di
coordinate oggetto). Quando viene eseguita un'interpolazione asse per asse, la velocità
non corrisponde esattamente al valore programmato.
Tutti gli assi sono coordinati per ottenere un percorso indipendente dalla velocità.
L'accelerazione viene ottimizzata automaticamente per ottenere le prestazioni
massime del robot.
Durante l'interpolazione lineare, il TCP si sposta lungo una linea retta tra il punto
iniziale e il punto di destinazione (vedere la Figura23).
Punto iniziale
Per ottenere un percorso lineare nel sistema di coordinate oggetto, gli assi del robot
devono seguire un percorso non lineare nello spazio dell'asse. Minore è la linearità
della configurazione del robot, maggiori sono le accelerazioni e le decelerazioni
necessarie per far spostare l'utensile in linea retta e per ottenerne l'orientamento
desiderato. Se la configurazione è estremamente non lineare (cioè in prossimità delle
L'orientamento dell'utensile rimane costante durante l'intero movimento, a meno che non
sia stato programmato un riorientamento. Se l'utensile viene riorientato, viene ruotato a
una velocità costante.
Tutti gli assi sono coordinati per ottenere un percorso indipendente dalla velocità.
L’accelerazione è ottimizzata automaticamente.
I tre punti programmati possono essere disposti in ordine sparso a intervalli regolari
lungo l'arco del cerchio per rendere l'operazione più accurata possibile.
L'orientamento definito per il punto di supporto viene utilizzato per scegliere tra la
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
torsione corta e quella lunga per l'orientamento dal punto iniziale a quello di
destinazione.
Punto di destinazione
Punto iniziale
Figura24Interpolazione circolare con una torsione corta per parte di un cerchio (segmento
circolare) con un punto di inizio, un punto del cerchio e un punto di destinazione.
Punto di destinazione
Punto iniziale
Figura25L'interpolazione circolare con una rotazione lunga per l'orientamento viene raggiunta © Copyright 2004-2009 ABB. Tutti i diritti riservati.
definendo l'orientamento nel punto del cerchio nella direzione opposta rispetto al punto iniziale.
Finché tutte le coppie dei motori non superano i valori massimi consentiti, l'utensile si
muoverà alla velocità programmata lungo l'arco del cerchio. Se la coppia di uno
qualsiasi dei motori non è sufficiente, la velocità verrà automaticamente ridotta in
quelle parti del percorso circolare in cui le prestazioni del motore non sono sufficienti.
Tutti gli assi sono coordinati per ottenere un percorso indipendente dalla velocità.
L’accelerazione è ottimizzata automaticamente.
ABB
WCP
La prima singolarità si verifica quando il TCP è una linea retta dall'asse 2 (a2 nella
figura precedente). Il TCP non può passare sull’altro lato dell’asse 2, e sono invece gli
assi 2 e 3 a venire piegati un po’ di più, per mantenere il TCP sullo stesso lato, per cui
l’orientamento finale dello spostamento verrà quindi deviato dall’orientamento
programmato in pari misura.
La seconda singolarità avviene quando il TCP passa accanto all'asse z dell'asse 1 (z1
nella figura precedente). In questo caso l'asse 1 viene ruotato alla velocità massima,
così come il riorientamento dello strumento. La direzione della rotazione dipende dal
lato verso il quale si sta muovendo il TCP. Si consiglia di passare all'interpolazione
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
dei giunti (MoveJ) accanto all'asse z. Da notare che è il TCP a realizzare la singolarità
e non il WCP, come quando viene utilizzato SingArea\Off.
I punti di prossimità vengono utilizzati per ottenere movimenti continui dopo le posizioni
programmate. In questo modo, è possibile superare le posizioni ad alta velocità senza
ridurla inutilmente. Un punto di prossimità genera un percorso d'angolo (percorso
parabolico) dopo la posizione programmata, che in genere indica che la posizione
programmata non è mai stata raggiunta. L'inizio e la fine di questo percorso d'angolo
vengono definiti da una zona intorno alla posizione programmata (vedere la Figura26).
Percorso d'angolo
Le dimensioni dei percorsi d'angolo (zone) per il movimento del TCP sono espresse in
mm (vedere la Figura27). Poiché l'interpolazione viene eseguita asse per asse, è
necessario calcolare di nuovo le dimensioni delle zone (espresse in mm) negli angoli
degli assi (radianti). Questo calcolo ha un fattore di errore (solitamente con un
massimo del 10%), quindi la zona reale differisce in qualche modo da quella
programmata.
Punto iniziale
Percorso d'angolo
Figura27Durante l'interpolazione dei giunti viene generato un percorso d'angolo per superare
un punto di prossimità.
Le dimensioni dei percorsi d'angolo (zone) per il movimento del TCP sono espresse in
mm (vedere la Figura28).
Punto iniziale
Percorso d'angolo
L'utensile verrà riorientato in modo tale che l'orientamento al termine della zona
corrisponda all'orientamento ottenuto se fosse stato programmato un punto di arresto
(vedere la Figura29a-c).
Figura29bSe tutte le posizioni erano punti di arresto, il programma viene eseguito in questo
modo.
È inoltre possibile definire le zone per gli assi esterni nello stesso modo in cui vengono
definite quelle per l'orientamento. Se la zona dell'asse esterno è impostata con
dimensioni maggiori della zona del TCP, l'interpolazione degli assi esterni verso la
destinazione della posizione programmata successiva verrà avviata prima dell'avvio
del percorso d'angolo del TCP. È possibile eseguire questa operazione per rendere
regolari i movimenti degli assi esterni così come la zona di orientamento viene
utilizzata per rendere regolari i movimenti del polso.
Lineare Interpolazione
p1 Sing Area\Wrist Sing Area\Wrist p4
Interpolazione dei giunti
p2 p3
Interpolazione
Sing Area\Wrist
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Zona di orientamento
generato
p4
p2
p1
Zona di orientamento
programmate p3
p1
p3
Zone di posizionamento
Zona di orientamento
Figura32Interpolazione con zone di orientamento sovrapposte. La zona di orientamento in p2 è
maggiore della metà della distanza tra p2 e p3 e viene quindi ridotta alla metà della
distanza tra p2 e p3. Le zone di posizionamento non si sovrappongono e quindi non
vengono ridotte; non viene ridotta neanche la zona di orientamento in p3.
- Una serie di istruzioni logiche con tempi di esecuzione del programma lunghi
è programmata tra movimenti brevi.
- I punti sono molto vicini tra loro ad alte velocità.
Gli assi indipendenti vengono gestiti da un set speciale di istruzioni. Quattro diverse
istruzioni di spostamento specificano il movimento dell'asse. Ad esempio, l'istruzione
IndCMove avvia il movimento continuo dell'asse. L'asse quindi si muove a una
velocità costante, indipendentemente dalle operazioni eseguite dal robot, finché non
viene eseguita una nuova istruzione indipendente.
Per tornare alla modalità normale viene utilizzata un'istruzione di reset, IndReset.
L'istruzione di reset consente inoltre di impostare un nuovo riferimento per il sistema
di misurazione, un tipo di nuova sincronizzazione dell'asse. Dopo aver riportato l'asse
in modalità normale, è possibile eseguirlo come un asse normale.
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Se viene eseguita una nuova istruzione Ind_Move prima che l'ultima sia terminata, la
nuova istruzione sostituisce immediatamente la precedente.
L'asse indipendente
raggiunge la posizione
IndAMove WaitTime 10 MoveL MoveL
10 s
Velocità dell'asse
indipendente
Velocità dell'asse
3.2.4.3 Movimento
Non è possibile muovere manualmente gli assi che si trovano in modalità indipendente.
Se si tenta di eseguire l'asse manualmente, questo non si sposta e viene visualizzato un
messaggio di errore. Eseguire un'istruzione IndReset o spostare il puntatore di
programma su main per disattivare la modalità indipendente.
Il range di lavoro logico corrisponde al range utilizzato dalle istruzioni RAPID e viene
letto nella finestra di movimento.
In modalità manuale con velocità ridotta, la velocità viene ridotta allo stesso livello
dell'asse eseguito come non indipendente. Notare che la funzione IndSpeed\InSpeed
non sarà impostata su VERO se la velocità dell'asse è ridotta.
È possibile utilizzare solo l'asse 6 del robot come asse indipendente. Normalmente
l'istruzione IndReset viene utilizzata solo per questo asse. Tuttavia, è possibile
utilizzare l'istruzione IndReset anche per l'asse 4 nei modelli IRB 2400 e 4400. Se
IndReset viene utilizzata per l'asse 4 del robot, l'asse 6 non deve trovarsi in modalità
indipendente.
Il range di lavoro indipendente per l'asse 6 viene definito con gli assi 4 e 5 in posizione
iniziale. Se l'asse 4 o 5 non si trova in posizione iniziale, il range di lavoro dell'asse 6
viene spostato a causa dell'accoppiamento degli ingranaggi. Tuttavia, la posizione
dell'asse 6 rilevata dalla FlexPendant viene compensata dalle posizioni degli assi 4 e 5
tramite l'accoppiamento degli ingranaggi.
Notare che la disattivazione del servomeccanismo soft non deve essere eseguita in
presenza di una forza tra il robot e l'oggetto di lavoro.
Con valori alti del parametro softness le deviazioni delle posizioni del
servomeccanismo potrebbero essere così grandi da far uscire gli assi dal range di
lavoro del robot.
1. Per un arresto normale il robot verrà arrestato sul percorso. Ciò consentirà un
riavvio semplice.
2. Per un arresto brusco il robot verrà arrestato in un tempo inferiore rispetto a quello
normale, ma il percorso di decelerazione non seguirà il percorso programmato. Questo
metodo di arresto è utilizzato, ad esempio, per individuare il punto di arresto nei casi
in cui è importante interrompere il movimento il prima possibile.
3. Per un arresto rapido vengono utilizzati i freni meccanici per ottenere una distanza
di decelerazione sufficientemente breve per soddisfare i requisiti di sicurezza.
Solitamente la deviazione del percorso è maggiore in un arresto rapido piuttosto che in
un arresto brusco.
Dopo qualsiasi tipo di arresto è possibile eseguire un riavvio sul percorso interrotto. Se
il robot è stato arrestato all'esterno del percorso programmato, il riavvio avrà luogo a
partire dalla posizione sul percorso in cui il robot avrebbe dovuto essere arrestato.
Consultare:
Definizione di velocità Manuale tecnico di riferimento - RAPID: Istruzioni,
Funzioni e Tipi di dati - speeddata
Definizione di zone (percorsi ad angolo) Manuale tecnico di riferimento - RAPID: Istruzioni,
Funzioni e Tipi di dati - zonedata
Istruzione per l'interpolazione dei giunti Manuale tecnico di riferimento - RAPID: Istruzioni,
Funzioni e Tipi di dati - MoveJ
Istruzione per l'interpolazione lineare Manuale tecnico di riferimento - RAPID: Istruzioni,
Funzioni e Tipi di dati - MoveL
Istruzione per l'interpolazione circolare Manuale tecnico di riferimento - RAPID: Istruzioni,
Funzioni e Tipi di dati - MoveC
Istruzione per l'interpolazione modificata Manuale tecnico di riferimento - RAPID: Istruzioni,
Funzioni e Tipi di dati - SingArea
Singolarità Singularità alla pagina 211
Esecuzione simultanea del programma Sincronizzazione con istruzioni logiche alla pagina 189
Ottimizzazione della CPU Manuale tecnico di riferimento - Parametri di sistema
Un'istruzione logica è una qualsiasi istruzione che non genera un movimento del robot
o un movimento dell'asse esterno, ad esempio un'istruzione di I/O.
p1
Esecuzione di SetDO
MoveL p1, v1000, fine, tool1;
SetDO do1, on;
MoveL p2, v1000, z30, tool1;
Figura35Un'istruzione logica dopo un punto di arresto non viene eseguita fino a quando non
viene raggiunta la posizione di destinazione.
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
DT
p1
Zona di posiziona
MoveL p1, v1000, z30, tool1;
SetDO do1, on;
MoveL p2, v1000, z30, tool1; Zona di orientamen
Figura36Un'istruzione logica che segue un punto di prossimità viene eseguita prima di raggiungere
la zona più grande.
Esecuzione
di SetDO
Zona di posizionam
DT
p2
p1
Figura37Un'istruzione logica che segue un punto di prossimità viene eseguita prima di raggiungere
la zona più grande.
- Il tempo impiegato dal robot per pianificare il movimento successivo: circa 0,1
secondi.
- Il ritardo del robot (ritardo del servomeccanismo) espresso in secondi: 0 - 1
secondi in base alla velocità e alle prestazioni di decelerazione effettive del
robot.
Esecuzione di SetDO
p2
p1
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
p2
p1
Se si uniscono diverse istruzioni di posizionamento con l'argomento \Conc e diverse © Copyright 2004-2009 ABB. Tutti i diritti riservati.
istruzioni logiche in una sequenza lunga, si applica quanto segue:
p2
p1
La precisione di ripetizione tipica per un set di output digitali sul percorso è +/- 2ms.
Consultare:
Istruzioni di posizionamento Movimento alla pagina 71
Definizione di dimensione della zona Manuale tecnico di riferimento - RAPID: Istruzioni,
Funzioni e Tipi di dati - zonedata
Figura41Due diverse configurazioni del braccio utilizzate per ottenere la stessa posizione e lo
stesso orientamento. La configurazione illustrata a destra viene ottenuta facendo
ruotare il braccio all'indietro. L'asse 1 viene ruotato di 180 gradi.
Alcuni robot possono, inoltre, ottenere questa posizione dall'alto e dal basso mentre
utilizzano la stessa direzione dell'asse 1. Ciò è possibile per i tipi di robot con distanza
operativa dell'asse 3 estesa (vedere la Figura42).
ABB
Figura42IRB140 con due diverse configurazioni del braccio utilizzate per ottenere la stessa
posizione e lo stesso orientamento. L'angolo per l'asse 1 è lo stesso per entrambe le
configurazioni. La configurazione illustrata a destra viene ottenuta ruotando il braccio inferiore
in avanti e il braccio superiore indietro.
Questa configurazione può essere, inoltre, ottenuta ruotando la parte anteriore del
braccio superiore del robot (asse 4) dall'alto verso il basso mentre si fanno ruotare gli
assi 5 e 6 nella posizione e nell'orientamento desiderati (vedere la Figura43).
asse 6
asse 5
Figura43Due diverse configurazioni del polso utilizzate per ottenere la stessa posizione e lo
stesso orientamento.
Nella configurazione in cui la parte anteriore del braccio superiore punta verso l'alto
(inferiore), gli assi 4, 5 e 6 sono stati ruotati di 180 gradi per ottenere la
configurazione in cui la parte anteriore del braccio superiore punta verso il basso
(superiore).
Il modo in cui viene specificata la configurazione del robot varia a seconda del tipo di
robot (per una descrizione completa, vedere il Manuale tecnico di riferimento -
RAPID: Istruzioni, Funzioni e Tipi di dati). In ogni caso, per molti robot questo
comprende la definizione le appropriate rotazioni di un quarto di giro degli assi 1, 4 e
6. Ad esempio, se l'asse 1 si trova tra 0 e 90 gradi, allora cf1=0, vedere la figura qui
sotto.
1 0
2 3
Figura44Rivoluzione di un quarto per un angolo positivo del giunto: int ⎛⎝ joint – --------------⎞⎠ .
angle
π⁄2
-3 -4
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
-2 -1
Figura45Rivoluzione di un quarto per un angolo negativo del giunto: int ⎛⎝ joint – -------------- – 1⎞⎠
angle
.
π⁄2
Durante un movimento asse per asse o un movimento lineare modificato che utilizza
un controllo della configurazione mediante ConfL\On o ConfJ\On, il robot si sposta
sempre verso la configurazione dell'asse programmata. Se non è possibile raggiungere
la posizione e l'orientamento programmati, l'esecuzione del programma viene arrestata
prima di avviare il movimento. Se il controllo della configurazione non è attivo, il
robot si sposta verso la posizione e l'orientamento specificati con la configurazione più
vicina.
\On:
- Il robot viene spostato verso la posizione programmata, con una configurazione
uguale o prossima a quella programmata nei confdata.
- Se è attivo uno spostamento programmato, la configurazione del braccio può variare
nell'ambito di un settore di 180 gradi: vedere l'illustrazione alla pagina seguente.
- Se la posizione calcolata si trova al di fuori del settore di 180 gradi, il robot si arresterà
con un messaggio d'errore.
1
-2
y
-1 0
\On:
- In questo caso la supervisione avverrà in questo modo: Per prima cosa, la posizione
finale viene calcolata in giunti, utilizzando i confdata programmati per determinare la
soluzione. I valori dei giunti per gli assi 1, 4 e 6 vengono quindi comparati a quelli
corrispondenti per la posizione d'inizio. Se la differenza è inferiore a 180 gradi, e se
l'asse 5 non ha cambiato di segno, lo spostamento verrà consentito. Negli altri casi, il
robot si arresterà, con un messaggio d'errore, alla posizione d'inizio. Se questo test è
positivo, lo spostamento viene eseguito e, una volta raggiunta la posizione finale, il
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Consultare:
Definizione della configurazione del robot Manuale tecnico di riferimento - RAPID: Istruzioni,
Funzioni e Tipi di dati - confdata
Attivazione/disattivazione del controllo Impostazioni di movimento alla pagina 65
I parametri cinematici che specificano le lunghezze del braccio, gli offset e gli assetti
dei giunti, sono predefiniti nel file di configurazione per ciascun tipo di robot.
length_of_upper_arm length_of_wrist
giunto 5 Z6
giunto 4 giunto 6
offset_of_joint_3
Z giunto 3
X6
length_of_lower_arm
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
offset_of_joint_2
giunto 2
height_of_foot giunto 1
X6
Z
Y
Riferimento mondo
Z2
length_of_lower_arm
Z0 offset_of_upper_arm
height_of_foot
X0
Figura48Struttura cinematica di un robot ORBIT 160B che utilizza il modello predefinito
Corpo C
X2
Corpo B
Corpo A
X0
Sistema di riferimento di base del robot es
Riferimento mondo
Y0
Y2
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
X0
y1
X2
x1 x2
Z2
d1
d2
Z0 a1 = 0
Y2 turn_table a2 = 0
alfa1 = 0
X0 alfa2
X0
Sistema di riferimento di base de
Riferimento mondo
Y0
X0
x1
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
y1
x2 Y2
X2
Consultare:
Definizione della cinematica generale del robot Manuale tecnico di riferimento - Parametri di
esterno sistema
3.6.1 Introduzione
Il rilevamento delle collisioni può essere attivato se i dati per i carichi montati sul robot
non sono corretti. Sono inclusi i dati di carico per gli utensili, i carichi utili e i carichi
del braccio. Se non si conoscono i dati dell'utensile o del carico utile, per definirli è
possibile utilizzare la funzione di identificazione del carico. I dati di carico del braccio
non possono essere identificati.
Quando si attiva il rilevamento delle collizioni, le coppie del motore vengono invertite
e i freni meccanici vengono applicati per arrestare il robot. Il robot si sposta
leggermente all'indietro lungo il percorso per rimuovere qualsiasi forza residua che
potrebbe essere presente nel caso di collisione o inceppamento. Quindi, il robot si
arresta di nuovo e rimane in modalità motori inseriti. Nella figura seguente viene
illustrata una collisione tipica.
La supervisione dei movimenti è attiva solo quando almeno un asse (compresi gli assi
esterni) è in movimento. Quando tutti gli assi sono fermi, la funzione viene disattivata.
Ciò consente di evitare un'attivazione non necessaria dovuta a forze di processi esterni.
collisione
rilevata robot
tempo di
collisione arrestato forze residue
rimosse
coppia
velocità
velocità
invertita
coppia
coppia
tempo
coppia
invertita
L'output digitale MotSupTrigg diventa alto quando viene attivato il rilevamento delle
collisioni. Rimane alto finché non viene riconosciuto il codice di errore dalla
FlexPendant o attraverso l'input digitale AckErrDialog.
3.6.5 Limitazioni
La supervisione dei movimenti è disponibile solo per gli assi del robot. Non è invece
disponibile per movimenti del binario, stazioni orbitali o qualsiasi altro manipolatore
esterno.
Il rilevamento delle collisioni potrebbe essere attivato quando il robot viene utilizzato
in modalità Soft servo. Si consiglia quindi di disattivare questa funzione quando il
robot è in modalità Soft servo.
Nel caso di una collisione violenta durante l'esecuzione del programma, potrebbero
essere necessari alcuni secondi prima che il robot inizi a spostarsi all'indietro.
In genere, un robot presenta due tipi di singolarità: singolarità del braccio e singolarità
del polso. Le singolarità del braccio sono rappresentate da tutte le configurazioni in cui
il centro del polso (l'intersezione degli assi 4, 5 e 6) termina direttamente sull'asse 1
(vedere la Figura54).
Le singolarità del polso sono rappresentate dalle configurazioni in cui gli assi 4 e 6 si
trovano sulla stessa linea, ad esempio l'asse 5 ha un angolo uguale a 0 (vedere la
Figura55).
Z base
X base
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Figura54La singolarità del braccio si verifica all'intersecazione del centro del polso e dell'asse
1.
Asse 6 parallelo
all'asse 4
B
AB
Si noti che la configurazione del robot cambia notevolmente quando il robot si avvicina
a una singolarità con interpolazione lineare o circolare. Per evitare la riconfigurazione,
è necessario programmare la prima posizione sull'altro lato della singolarità con un
orientamento che non renda necessaria la riconfigurazione.
Inoltre, notare che il robot non si deve trovare nella propria singolarità quando vengono
spostati solo i giunti esterni. Ciò potrebbe causare dei movimenti inutili dei giunti del
robot.
Consultare:
Controllo dell'azione del robot durante l'esecu- Manuale tecnico di riferimento - RAPID: Istruzioni,
zione in prossimità dei punti di singolarità Funzioni e Tipi di dati - SingArea
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
I limiti vengono definiti dal programma dell'utente (ad esempio, velocità programmata
o AccSet) o dal sistema stesso (ad esempio, coppia massima nel riduttore o nel motore,
coppia massima o forza nella struttura del robot).
Finché i dati di carico (massa, baricentro e inerzia) si trovano entro i limiti sul
diagramma del carico e vengono immessi correttamente nei dati dello strumento, non
sono necessari limiti di accelerazione definiti dall'utente e la durata in servizio del
robot viene assicurata automaticamente.
Se i dati di carico si trovano al di fuori dei limiti sul diagramma di carico, possono
essere necessarie limitazioni speciali, ad esempio AccSet o una velocità inferiore,
come specificato, su richiesta, da ABB.
- Quando due robot condividono una parte delle rispettive aree di lavoro. La
possibilità di collisione tra i due robot può essere eliminata tramite la
supervisione di questi segnali.
- Quando l’apparecchiatura esterna si trova all’interno dell’area di lavoro del
robot. È possibile creare un'area di lavoro vietata per impedire che il robot entri
in collisione con questa apparecchiatura.
- Per indicare che il robot si trova in una posizione in cui è possibile avviare
l'esecuzione del programma da un PLC.
Y
Sfera
Z
Radius
TCP
Cilindro
Radius
z Parallelepipedo
Altezza
Sistema di coordinate X
È possibile definire una World Zone all’interno o all’esterno della forma della scatola,
della sfera o del cilindro.
La World Zone può pure essere definite in giunti. La zona dev’essere definita tra
(interno) o non tra (esterno) due valori di giunto per un qualsiasi robot o per assi
esterni.
3.9.6.1 Imposta un'uscita digitale quando il TCP si trova all'interno di una World Zone.
Quest'azione imposta un output digitale quando il TCP si trova all'interno di una World
Zone. È utile indicare che il robot si è arrestato in un'area specificata.
Tempo tra controlli World Zone
delle zone universali
Movimento del TCP
3.9.6.2 Imposta un'uscita digitale prima che il TCP raggiunga una World Zone.
Quest'azione imposta un output digitale prima che il TCP raggiunga una World Zone.
Può essere utilizzata per arrestare il robot all'interno di una World Zone.
Tempo di arresto per il robot World Zone
3.9.6.3 Arresta il robot prima che il TCP raggiunga una World Zone.
Una World Zone può essere definita all'esterno dell'area di lavoro. Il robot si arresterà
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
quindi con il TCP (Tool Centre Point) appena all'esterno della World Zone, quando si
sposta verso la zona
Tempo di arresto per il robot
Tempo tra controlli
delle zone universali
Movimento del TCP
Dopo che il robot è stato spostato in un World Zone definita come area di lavoro
esterna, ad esempio rilasciando i freni e spingendo manualmente il robot, l'unico modo
per farlo uscire dalla zona è spostarlo o spingerlo manualmente con i freni rilasciati.
2 50 mm 100 mm 200 mm
3 75 mm 150 mm 300 mm
Se lo stesso output digitale viene utilizzato per più di una World Zone, la distanza tra
le zone deve superare la dimensione minima, come illustrato nella tabella precedente,
per evitare uno stato non corretto dell'output.
Gli output digitali per le World Zone verranno aggiornate prima a Motori inseriti. Vale
a dire che, quando il controller vien riavviato, lo stato della World Zone sarà impostato
all'esterno durante l'inizio. Alla prima esecuzione dell'istruzione MOTORS ON dopo
un avvio "a caldo", lo stato della World Zone verrà correttamente aggiornato.
Se il robot viene spostato durante lo stato di MOTORS OFF, lo stato della World Zone
non verrà aggiornato fino al successivo comando MOTORS ON.
Un arresto di emergenza secco (non quindi tramite SoftAS, SoftGS, o SoftES) può
provocare uno stato non corretto della World Zone, dato che il robot può spostarsi
dentro o fuori di una zona durante il movimento d'arresto, senza che i segnali della
World Zone vengano aggiornati. I segnali della World Zone saranno aggiornati in
maniera corretta dopo un ordine MOTORS ON.
wztemporary
Tipi di dati: wzstationary
shapedata
Istruzioni WZBoxDef
WZSphDef
WZCylDef
WZHomeJointDef
WZLimJointDef
WZLimSup
WZDOSet
WZDisable
WZEnable
WZFree
Un canale fisico può essere collegato a diversi nomi logici, ma può anche non avere
alcun collegamento logico (vedere la Figura57).
IN1 do1
IN2 alimentatore
.
.
.
.
IN16
scheda di I/O
OUT1 pinza
OUT2 do2
.
. alimentatore2
.
.
OUT16 do16
Figura57Per poter utilizzare una scheda di I/O, è necessario assegnare ai canali nomi logici.
Nell'esempio precedente, l'output fisico 2 è collegato a due nomi logici diversi. IN16,
invece, non presenta alcun nome logico e quindi non può essere utilizzato.
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
Quando viene attivata l'alimentazione elettrica del robot, tutti i segnali vengono
impostati su zero. Tuttavia, questi non vengono influenzati dagli arresti di emergenza
o da eventi simili.
Un output può essere impostato su uno o zero dal programma. Questa operazione può
essere eseguita utilizzando un ritardo o sotto forma di un impulso. Se viene ordinata una
modifica ritardata o un impulso per un output, l'esecuzione del programma continua. La
modifica viene effettuata senza influenzare il resto dell'esecuzione del programma. Se,
Time
0 0.5 1
Figura58L'istruzione SetDO non viene eseguita perché è stato inviato un nuovo comando prima
dello scadere del ritardo.
Esempio:
Esempio:
SetDO do1,1;
WaitDO do1 ,1;
SetDO do1,0;
In questo modo, non si perderà alcun interrupt.
- Un segnale di output può essere collegato a uno o più segnali di input o output.
- Un segnale di input può essere collegato a uno o più segnali di input o output.
- Se lo stesso segnale viene utilizzato in diversi collegamenti incrociati, il valore
di questo segnale è lo stesso dell'ultimo valore abilitato (modificato).
- In altri termini, i collegamenti incrociati possono essere collegati tra loro e un
collegamento incrociato può quindi influire su un altro. Tuttavia, essi non
devono essere collegati in modo da costituire un “circolo vizioso”, ad esempio
un collegamento incrociato tra di1 e di2 mentre di2 è collegato a di1.
- In caso di collegamento incrociato su un segnale di input, la connessione fisica
corrispondente viene automaticamente disabilitata. Qualsiasi modifica
apportata su questo canale fisico non verrà quindi rilevata.
- Gli impulsi e i ritardi non vengono trasmessi ai collegamenti incrociati.
- Le condizioni logiche possono essere definite utilizzando NOT, AND e OR
(opzione: Funzioni avanzate).
Esempi:
- di2=di1
- di3=di2
- do4=di2
Se di1 viene modificato, di2, di3 e do4 verranno modificati nel valore
corrispondente.
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
- do8=do7
- do8=di5
- do5=di6 e do1
3.10.5 Limitazioni
È possibile generare al massimo 10 segnali contemporaneamente e possono essere
ritardati al massimo 20 segnali contemporaneamente.
Consultare:
Definizione dei segnali e delle schede di I/O Manuale tecnico di riferimento - Parametri di sistema
Istruzioni per la gestione di I/O Segnali di ingresso ed uscita alla pagina 81
Manipolazione manuale di I/O Manuale operativo - IRC5 con FlexPendant
4 Glossario
Termine Descrizione
Argument Le parti modificabili di un'istruzione, ovvero tutte, ad eccezione del nome
dell'istruzione.
Modalità automatica Il modo applicabile quando il selettore del modo operativo è impostato su
Segnale di gruppo Un certo numero di segnali digitali raggruppati e gestiti come un unico
segnale.
Interrupt Un evento che interrompe temporaneamente l'esecuzione del programma
ed esegue una trap routine.
I/O Ingressi ed uscite elettriche
Programma main La routine che viene solitamente avviata quando si preme il tasto Start.
Modalità manuale Il modo applicabile quando il selettore del modo operativo è impostato su
Termine Descrizione
Programma L'insieme di istruzioni e dati che definisce il task del robot. I programmi,
tuttavia, non contengono moduli di sistema.
Dati programma I dati a cui è possibile accedere in un modulo o un programma completo.
Modulo di programma Un modulo incluso nel programma del robot che viene trasferito, ad
esempio, quando il programma viene copiato su un dischetto.
Record Un tipo di insieme di dati composti.
routine Un sottoprogramma.
Dati del sottoprogramma. I dati locali che possono essere utilizzati solo in un sottoprogramma.
Punto iniziale L'istruzione che verrà eseguita per prima, all'avvio dell'esecuzione del
programma.
Punto di arresto Un punto in cui il robot si ferma prima di proseguire verso il punto
successivo.
modulo di sistema Un modulo che è sempre presente nella memoria del programma. Durante
la lettura di un nuovo programma, i moduli di sistema rimangono nella
memoria del programma.
Parametri di sistema Le impostazioni che definiscono l'apparecchiatura e le proprietà del robot,
ovvero i dati di configurazione.
Tool Center Point (TCP) Il punto, generalmente sulla punta di uno strumento, che si sposta lungo il
percorso programmato alla velocità programmata.
Trap routine La routine che definisce le operazioni da eseguire quando si verifica un
particolare interrupt.
Variabile Dati che possono essere modificati da un programma ma che perdono i
relativi valori (ritornando ai valori iniziali) quando il programma viene
riavviato.
Window Il robot viene programmato e fatto funzionare per mezzo di finestre (o
N T
NOT 49 TCP 161, 201
numero di errore 97 fisso 171
TCP fisso 171
O tipi di dati 37
tipi di dati alias 38
operatore
tipi di dati equal 38
priorità 53
OPPURE 49 tipi di dati non valore 37
tipi di dati semi-valore 37
P Tool Center Point (punto centrale dell'utensi-
le) 161, 201
parametro 30 trap routine 29, 91
parametro facoltativo 30
parole riservate 17 U
percorso d'angolo 178
PERS 41 User - modulo di sistema 27
persistente 39 V
posizione
istruzione 72 valore logico 18
Principi di I/O 223 valore numerico 18
procedura 29 VAR 40
programma 23 variable 39
R X
record 37 XOR 49
regole di sintassi 12
© Copyright 2004-2009 ABB. Tutti i diritti riservati.
ripristino da condizioni di errore 103
S
segnaposto 19
sincronizzazione del percorso 193
Sincronizzazione di I/O 189
Sing Area\Wrist 173
singolarità 211, 215
sistema di coordinate di base 162
sistema di coordinate oggetto 165
sistema di coordinate polso 169
sistema di coordinate universali 163
sistema di coordinate utensile 170
sistema di coordinate utente 164
soft servo 186
sottoprogramma 29
ABB AB
Prodotti robotici
S-721 68 VÄSTERÅS
SVEZIA
Telefono: +46 (0) 21 344000
Fax: +46 (0) 21 132592