Manuale operativo
Introduzione a RAPID
IRC5
RobotWare 5.0
Manuale operativo
Introduzione a RAPID
RobotWare 5.0
ID documento: 3HAC029364-007
© Copyright 2007 ABB. Tutti i diritti riservati.
Revisione: -
Le informazioni contenute nel presente manuale sono soggette a modifiche senza
preavviso e non devono essere considerate vincolanti per ABB. ABB non si assume
alcuna responsabilità per eventuali errori nel presente manuale.
Salvo quanto espressamente indicato nel presente manuale, ABB non concede alcuna
altra garanzia in relazione al Prodotto in merito a eventuali perdite, danni a persone o
beni, idoneità per uno scopo specifico o altro.
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, interamente o parzialmente,
senza autorizzazione scritta da parte di ABB, e il relativo contenuto non può essere
divulgato a terzi o utilizzato per scopi non autorizzati. I contravventori saranno
perseguiti a norma di legge.
© Copyright 2007 ABB - All right reserved – Tutti i diritti riservati
ABB AB
Robotics Products
SE-721 68 Västerås
Svezia
© Copyright 2007 ABB. Tutti i diritti riservati.
È possibile richiedere ulteriori copie del presente manuale ad ABB al prezzo corrente.
Sommario
Panoramica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Documentazione del prodotto, M2004 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Sicurezza. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Terminologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1 Basi di RAPID
11
1.1 A proposito di RAPID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Dati RAPID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.1 Variabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.2 Varaibili persistenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.3 Costanti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.4 Operatori. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 Controllo del flusso del programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.1 IF THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.2 Esempi con condizioni logiche e IF dichiarazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.3 FOR ciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.4 WHILE ciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4 Regole e consigli per la sintassi RAPID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.1 Regole generali di sintassi RAPID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.2 Consigli per la codifica RAPID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2 Funzionalità robotica RAPID
25
2.1 Istruzioni di movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.1 MoveL intruzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.2 Sistemi di coordinate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.1.3 Esempi con MoveL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1.4 Altre istruzioni di spostamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1.5 Comportamento dell’esecuzione in zone d’angolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2 Segnali di I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2.1 segnali d’I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3 Interazione con l’utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.1 Comunicare con la FlexPendant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
© Copyright 2007 ABB. Tutti i diritti riservati.
3 Struttura
39
3.1 RAPID procedura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2 Moduli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3 Proeggto strutturato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4 Dati con valori multipli
47
4.1 Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2 Tipi di dati compositi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5 RAPID: istruzioni e funzioni
51
5.1 Istruzioni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.2 Funzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6 Che cosa leggere in seguito
53
6.1 Dove trovare ulteriori informazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Index
3HAC029364-007 Revisione: -
55
3
© Copyright 2007 ABB. Tutti i diritti riservati.
Sommario
4
3HAC029364-007 Revisione: -
Panoramica
Panoramica
A proposito di questo Manuale
Questo Manuale è previsto per una prima introduzione a RAPID. Un gran quantità delle
funzionalità di RAPID è omessa, ma le parti più essenziali sono descritte in modo da poter
facilmente essere comprese da tutti. Questo Manuale non farà di voi programmatori esperti
di RAPID, ma vi aiuterà a capire i concetti di programmazione in ambiente RAPID. Si
potranno trovare i dettagli nei manuali di riferimento.
Utilizzo
Questo Manuale dev’essere letto prima di iniziare la programmazione. Non contiene tutto
quello che sarebbe necessario conoscere, ma si deve essere familiari con la maggior parte
degli argomenti esposti in questo Manuale, prima di iniziare la redazione di un programma
RAPID.
Questo Manuale non è destinato a sostituire i corsi di formazione in RAPID, ma può
costituirne un complemento.
Chi dovrebbe leggere questo Manuale?
Questo Manuale è previsto per coloro che non dispongono di una precedente esperienza di
programmazione, come ad esempio per un operatore che desideri apprendere la
programmazione di un robot.
Prerequisiti
Non vi sono prerequisiti per questo Manuale.
Organizzazione dei capitoli
Il manuale ਠcomposto dai seguenti capitoli:
© Copyright 2007 ABB. Tutti i diritti riservati.
Capitolo
Contenuti
1. Caratteristiche di base
RAPID
I fondamenti della programmazione Questa funzionalità
è simile nella maggior parte dei linguaggi di programmazione di alto livello.
2. Funzionalità del robot
RAPID
Descrive la funzionalità che rende esclusivo RAPID, ad
esempio, istruzioni di spostamento, segnali di I/O e
comunicazione con una FlexPendant.
3. Struttura
Descrive il modo di creare procedure Contiene pure una
breve introduzione sulla maniera di applicare un progetto
strutturato di un programma.
4. Dati con valori multipli
Descrive array e tipi di dati complessi
5. Istruzioni e funzioni RAPID Una breve spiegazione di quello che sono le istruzioni e
funzioni RAPID.
6. Che cosa leggere in
seguito
Dove trovare ulteriori informazioni se si desidera
continuare lo studio di RAPID.
Continua nella pagina successiva
3HAC029364-007 Revisione: -
5
Panoramica
Continua
Riferimenti
Sistema di
identificazione
dei documenti
Manuale tecnico di riferimento – RAPID Panoramica
3HAC16580-7
Manuale tecnico di riferimento - RAPID Istruzioni, funzioni e tipi di dati 3HAC16581-7
Technical reference manual - RAPID kernel
3HAC16585-1
Manuale operativo - IRC5 con FlexPendant
3HAC16590-7
Revisioni
Descrizione
-
Prima edizione
© Copyright 2007 ABB. Tutti i diritti riservati.
Revisione
6
3HAC029364-007 Revisione: -
Documentazione del prodotto, M2004
Documentazione del prodotto, M2004
Informazioni generali
La documentazione del robot è suddivisa in un certo numero di categorie. Questo listato si
basa sul tipo d’informazioni contenute nell’ambito dei documenti, indipendentemente dal
fatto che i prodotti siano di serie o opzionali. Questo significa che una data consegna di
prodotti robotici non conterrà tutti i documenti elencati, ma soltanto quelli che si riferiscono
all’attrezzatura della consegna.
In ogni caso, tutti i documenti elencati possono essere ordinati presso ABB. I documenti
elencati sono validi per tutti i sistemi robotizzati M2004.
Manuali dei prodotti
© Copyright 2007 ABB. Tutti i diritti riservati.
Tutto il vario materiale, robot e controller, sarà consegnato assieme ad un Manuale del
prodotto che contiene:
•
Informazioni di sicurezza
•
Installazione e commissioning (descrizioni di installazioni meccaniche, collegamenti
elettrici)
•
Manutenzione (descrizioni di tutte le procedure di manutenzione preventiva richieste,
compresi gli intervalli d’intervento).
•
Riparazione (descrizioni di tutte le procedure di riparazione consigliate, inclusi i pezzi
di ricambio)
•
Procedure supplementari, se pertinenti (calibrazione, decommissioning)
•
Informazioni di riferimento (numeri di articolo per la documentazione a cui ci si
riferisce nel Manuale del prodotto, procedure, elenchi di strumenti, normative di
sicurezza)
•
Elenco dei ricambi
•
Tavole pieghevoli o viste esplose
•
Schemi elettrici
Manuali tecnici di riferimento
I seguenti Manuali descrivono il software robotico in generale, e contengono importanti
informazioni di riferimento:
•
Panoramica RAPID: Una panoramica del linguaggio di programmazione RAPID.
•
RAPID: Istruzioni, funzioni e tipi di dati: Descrizione e sintassi per tutte le
istruzioni, funzioni e tipi di dati RAPID.
•
Parametri di sistema: Descrizione dei parametri di sistema e configurazione dei
flussi operativi.
Continua nella pagina successiva
3HAC029364-007 Revisione: -
7
Documentazione del prodotto, M2004
Continua
Manuali applicativi
Applicazioni specifiche (ad esempio, opzioni di programmi e materiale) vengono descritte in
Manuali applicativi. Un manuale applicativo può descrivere una o più applicazioni.
Un manuale applicativo contiene in genere informazioni a proposito di:
•
Lo scopo dell’applicazione (che cosa fa e quando è utile)
•
Quello che è incluso (ad esempio: cavi, schede di I/O, istruzioni RAPID, parametri di
sistema, CD-ROM con software per PC)
•
Come impiegare l’applicazione
•
Esempi di come utilizzare l’applicazione
Manuali operativi
Questo insieme di manuali è indirizzato a coloro che hanno il loro primo contatto operativo
con il robot, vale a dire operatori di cella, programmatori e rilevatori di problemi. Il gruppo
di manuali include:
Informazioni di sicurezza in caso di emergenza
•
Guida introduttiva - IRC5 e RobotStudio
•
Manuale operativo - IRC5 con FlexPendant
•
Manuale operativo – RobotStudio
•
Manuale per la risoluzione dei problemi - IRC5 per controller e robot
© Copyright 2007 ABB. Tutti i diritti riservati.
•
8
3HAC029364-007 Revisione: -
Sicurezza
Sicurezza
Sicurezza del personale
Un robot è un dispositivo pesante ed estremamente potente, indipendetemente dalla sua
velocità. Una pausa, o un arresto prolungato del suo movimento possono essere seguiti da un
movimento rapido e imprevedibile. Anche se si prevede un certo percorso di movimento, un
cambiamento dell’operazione potrebbe essere causato da un segnale esterno, dando come
risultato un movimento inatteso.
È quindi importante che tutte le regolamentazioni di sicurezza vengano osservate alla lettera,
allorché si penetra nello spazio salvaguardato.
Regolamentazioni di sicurezza
© Copyright 2007 ABB. Tutti i diritti riservati.
Prima di iniziare il lavoro con il robot, assicurarsi di essere familiari con le regolamentazioni
di sicurezza descritte in Manuale operativo - IRC5 con FlexPendant.
3HAC029364-007 Revisione: -
9
Terminologia
Terminologia
Riguardo i termini
Questo Manuale è in genere preparato per principianti, sia nel campo della programmazione,
sia in quello dei robot. In esso vengono comunque utilizzati alcuni termini che possono essere
conosciuti soltanto a coloro che hanno una qualche dimestichezza con la programmazione e/
o la robotica industriale. Tali termini vengono descritti in questa terminologia.
Termini
Descrizione
FlexPendant
Un terminale palmare per il controllo di un sistema di robot.
Controller del
robot
Il controller del robot è in genere un computer che controlla il robot.
Sintassi
Regole su come dev’essere codificato un programma. La sintassi si può
considerare come la grammatica del linguaggio di programmazione.
La sintassi di un linguaggio di programmazione è molto più rigida di
quella di una comune lingua umana. Gli esseri umani sono intelligenti, e
capirebbero in ogni caso se si dicesse “Io veloce corro” invece di "Io
corro veloce". I computer invece sono dispositivi stupidi e non capiscono
nessuna frase, a meno che la sua sintassi non sia assolutamente
corretta.
© Copyright 2007 ABB. Tutti i diritti riservati.
Termine
10
3HAC029364-007 Revisione: -
1 Basi di RAPID
1.1. A proposito di RAPID
1 Basi di RAPID
1.1. A proposito di RAPID
Che cos’è il RAPID
Se si vuole che un computer esegua una certa azione, è richiesto un programma. Il RAPID è
un linguaggio di programmazione per la stesura di un tale programma.
Il linguaggio nativo dei computer consiste soltanto in zeri ed uni. Un linguaggio che è dunque
praticamente impossibile da capire da parte degli esseri umani. È per questo motivo che i
computer vengono addestrati a capire un linguaggio che sia relativamente facile da capire –
un linguaggio di programmazione di alto livello. Il RAPID è un linguaggio di
programmazione di alto livello che impiega alcune parole inglesi (quali IF e FOR) per farsi
capire dagli esseri umani.
Un esempio di un semplice programma RAPID
Diamo ora un’occhiata ad un semplice esempio, per vedere come può apparire un programma
RAPID:
MODULE MainModule
VAR num length;
VAR num width;
VAR num area;
PROC main()
length := 10;
width := 5;
area := length * width;
TPWrite "The area of the rectangle is " \Num:=area;
END PROC
© Copyright 2007 ABB. Tutti i diritti riservati.
ENDMODULE
Questo programma calcolerà l’area di un rettangolo, e ne visualizzerà il valore sulla
FlexPendant:
The area of the rectangle is 50
3HAC029364-007 Revisione: -
11
1 Basi di RAPID
1.2.1. Variabili
1.2 Dati RAPID
1.2.1. Variabili
Tipi di dati
Vi sono molti e diversi tipi di dati in RAPID. Per il momento, porremo la nostra attenzione
su tre tipi generali di dati:
Tipo di dati
Descrizione
num
I dati numerici possono essere rappresentati da numeri interi e decimali
(con punto decimale). Esempio: 10 oppure 3.14159.
stringa
Una stringa di testo. Ad esempio: “Questa è una stringa”. 80 caratteri al
massimo.
bool
Una variabile booleana (logica). Essa può avere solo i valori TRUE o
FALSE.
Tutti gli altri tipi di dati sono basati su questi tre. Se si riesce a capirli, a comprendere come
eseguire operazioni su di essi, e come possano essere combinati in tipi di dati più complessi,
si possono facilmente capire tutti i tipi di dati.
Caratteristiche delle variabili
Una variabile contiene un valore di un dato. Se si arresta e si riavvia il programma, la variabile
conserva il suo valore, ma se il puntatore del programma viene spostato al Main, il valore del
dato della variabile andrà perso.
Dichiarazione di una variabile
La dichiarazione di una variabile rappresenta il modo di definire un nome di variabile ed il
tipo di dato che essa deve contenere. Si dichiara una variabile utilizzando la keyword VAR,
secondo la sintassi:
VAR datatype identifier;
VAR num length;
VAR string name;
VAR bool finished;
Attribuzione dei valori
Si attribuisce un valore ad una variabile utilizzando l’istruzione :=
length := 10;
name := "John"
finished := TRUE;
Da notare che := non rappresenta un simbolo di ’uguale’. Significa che l’espressione che si
trova a destra viene trasferita alla variabile a sinistra. Ci potrà essere soltanto una varaibile a
sinistra del simbolo :=
Ad esempio, la codifica RAPID che segue è corretta, e produrrà come risultato che reg1
conterrà il valore 3:
reg1 := 2;
reg1 := reg1 + 1;
Continua nella pagina successiva
12
3HAC029364-007 Revisione: -
© Copyright 2007 ABB. Tutti i diritti riservati.
Esempio
1 Basi di RAPID
1.2.1. Variabili
Continua
L’assegnazione potrà essere fatta contemporaneamente alla dichiarazione della variabile:
VAR num length := 10;
VAR string name := "John";
© Copyright 2007 ABB. Tutti i diritti riservati.
VAR bool finished := TRUE;
3HAC029364-007 Revisione: -
13
1 Basi di RAPID
1.2.2. Varaibili persistenti
1.2.2. Varaibili persistenti
Che cosa significa ‘variabile persistente’
Una variabile persistente è praticamente come una variabile ordinaria, ma con una notevole
differenza. Una variabile persistente ricorda l’ultimo valore che le è stato attribuito, anche se
il programma subisce un arresto e un riavvio dall’inizio.
Dichiarazione di una variabile persistente
Una variabile persistente viene dichiarata mediante la keyword PERS. Al momento della
dichiarazione dev’essere assegnato un valore iniziale.
PERS num nbr := 1;
PERS string string1 := "Hello";
Esempio
Si consideri l’esempio seguente:
PERS num nbr := 1;
PROC main()
nbr := 2;
ENDPROC
Se si esegue questo programma, il valore iniziale viene cambiato a 2. Nell’esecuzione
successiva, la codifica del programma apparirà così:
PERS num nbr := 2;
PROC main()
nbr := 2;
© Copyright 2007 ABB. Tutti i diritti riservati.
ENDPROC
14
3HAC029364-007 Revisione: -
1 Basi di RAPID
1.2.3. Costanti
1.2.3. Costanti
Che cos’è una costante?
Una costante contiene un valore, proprio come una variabile, ma tale valore viene sempre
assegnato al momento della dichiarazione, dopo di che il valore in questione non potrà mai
essere cambiato. La costante può essere utilizzata nel programma nello stesso modo di una
variabile, ad eccezione del fatto che non è consentito assegnarle un nuovo valore.
Dichiarazione di costanti
La costante viene dichiarata utilizzando la keyword CONST seguita dal tipo di dato,
identificatore e attribuzione di un valore.
CONST num gravity := 9.81;
CONST string greating := "Hello"
Perché impiegare costanti?
Impiegando una costante invece di una variabile, si può essere sicuri che il valore non ne verrà
cambiato, in nessuna parte del programma in questione.
© Copyright 2007 ABB. Tutti i diritti riservati.
Utilizzando una costante, invece di codificare direttamente il valore in questione nel
programma, si potrà più agevolmente aggiornare il programma, attribuendo se necessario un
altro valore alla costante. Si apporterà quindi una sola modifica, e si potrà essere sicuri di non
aver dimenticato alcuna altra presenza del valore nel programma stesso.
3HAC029364-007 Revisione: -
15
1 Basi di RAPID
1.2.4. Operatori
1.2.4. Operatori
Operatori numerici
Questi operatori agiscono sul tipo di dati num e restituiscono il tipo di dati num. Negli esempi
sottostanti, le variabili reg1, reg2 e reg3 sono del tipo di dati num.
Operatore Descrizione
Esempio
+
Addizione
reg1 := reg2 + reg3;
-
Sottrazione
Meno ‘unario’
reg1 := reg2 - reg3;
reg1 := -reg2;
*
Moltiplicazione
reg1 := reg2 * reg3;
/
Divisione
reg1 := reg2 / reg3;
Operatori relazionali
Questi operatori restituiscono il tipo di dati bool.
Operatore Descrizione
Esempio
=
uguale a
flag1 := reg1 = reg2;
flag1 è TRUE se reg1 è uguale a reg2
<
minore di
flag1 := reg1 < reg2;
flag1 è TRUE se reg1 è inferiore a reg2
>
maggiore di
flag1 := reg1 > reg2;
flag1 è TRUE se reg1 è maggiore direg2
<=
minore di o uguale a
flag1 := reg1 <= reg2;
flag1 è TRUE se reg1 è inferiore o uguale a
reg2
>=
maggiore di o uguale a
flag1 := reg1 >= reg2;
flag1 è TRUE se reg1 è maggiore o uguale a
reg2
<>
diverso da
flag1 := reg1 <> reg2;
flag1 è TRUE se reg1 non è uguale a reg2
Gli operatori logici sono spesso impiegati assieme all’istruzione IF. Per degli esempi di
codifica, vedere Esempi con condizioni logiche e IF dichiarazioni a pagina 19.
Operatore di stringhe
Operatore Descrizione
+
16
Esempio
Concatenazione di stringhe VAR string firstname := "John";
VAR string lastname := "Smith";
VAR string fullname;
fullname := firstname + " " +
lastname;
La variabile fullname conterrà la stringa "John
Smith".
3HAC029364-007 Revisione: -
© Copyright 2007 ABB. Tutti i diritti riservati.
In questi esempi, reg1 e reg2 sono di tipo di dati num, mentre flag1 è bool.
1 Basi di RAPID
1.3.1. IF THEN
1.3 Controllo del flusso del programma
1.3.1. IF THEN
A proposito del flusso del programma
Gli esempi di programmi esaminati finora vengono eseguiti sequenzialmente, da cima a
fondo. In programmi più complessi, si potrebbe desiderare il controllo della parte di codifica
da eseguire, il suo ordine ed il numero di volte dell’esecuzione. Per prima cosa daremo
un’occhiata al modo di definire le condizioni per l’esecuzione o no di una data sequenza di
programma.
IF
L’istruzione IF si può utilizzare quando un dato insieme di dichiarazioni dev’essere eseguito
nel caso sia soddisfatta una condizione specificata.
Se la condizione logica nella dichiarazione IF si rivela vera, la parte di codifica tra le
keyword THEN ed ENDIF viene eseguita. Se la condizione è falsa, tale codifica non viene
eseguita, e l’esecuzione continua dopo ENDIF.
Esempio
In questo esempio, la stringa string1 viene trascritta sulla FlexPendant, sempre che non sia
vuota. Se la string1 è una stringa vuota, ovvero se non contiene alcun carattere, non viene
intrapresa alcuna azione.
VAR string string1 := "Hello";
IF string1 <> "" THEN
TPWrite string1;
ENDIF
ELSE
© Copyright 2007 ABB. Tutti i diritti riservati.
Una dichiarazione IF può pure contenere una codifica di programma da eseguire se la
condizione fosse falsa.
Se la condizione logica nella dichiarazione IF si rivela vera, la parte di codifica tra le
keyword THEN ed ELSE viene eseguita. Se la condizione è falsa, la parte di codifica tra le
keyword ELSE ed ENDIF verrà eseguita.
Esempio
In questo esempio, la stringa string1 viene trascritta sulla FlexPendant, sempre che non sia
vuota. Se la string1 è una stringa vuota, allora viene scritto il testo "The string is empty".
VAR string string1 := "Hello";
IF string1 <> "" THEN
TPWrite string1;
ELSE
TPWrite "The string is empty";
ENDIF
Continua nella pagina successiva
3HAC029364-007 Revisione: -
17
1 Basi di RAPID
1.3.1. IF THEN
Continua
ELSEIF
Talvolta possono sussistere più di due sequenze alternative, nel programma. Si può allora
impiegare la dichiarazione ELSEIF per predisporre varie alternative.
Esempio
In questo esempio, vengono scritti testi differenti, a seconda del valore della variabile time.
VAR num time := 38.7;
IF time < 40 THEN
TPWrite "Part produced at fast rate";
ELSEIF time < 60 THEN
TPWrite "Part produced at average rate";
ELSE
TPWrite "Part produced at slow rate";
ENDIF
© Copyright 2007 ABB. Tutti i diritti riservati.
Da notare che, dato che è la prima condizione ad essere vera, sarà il primo testo che verrà
scritto. I due altri testi non verranno scritti (anche se è parimenti vero che time è inferiore a
60).
18
3HAC029364-007 Revisione: -
1 Basi di RAPID
1.3.2. Esempi con condizioni logiche e IF dichiarazioni
1.3.2. Esempi con condizioni logiche e IF dichiarazioni
Esempio
Utilizzare la dichiarazione IF per determinare il testo da trascrivere sulla FlexPendant.
Trascrivere sulla FlexPendant qual è il pezzo più rapido da produrre.
VAR string part1 := "Shaft";
VAR num time1;
VAR string part1 := "Pipe";
VAR num time2;
PROC main()
time1 := 41.8;
time2 := 38.7;
IF time1 < time2 THEN
TPWrite part1 + " is fastest to produce";
ELSEIF time1 > time2 THEN
TPWrite part2 + " is fastest to produce";
ELSE
TPWrite part1 + " and " + part2 + " are equally fast to
produce";
ENDIF
ENDPROC
Esempio
Nel caso siano necessari più di 60 secondi per la produzione di un dato pezzo, trascrivere un
messaggio sulla FlexPendant. Se la variabile booleana full_speed è FALSE, il messaggio
indicherà all’operatore di incrementare la velocità del robot. Se full_speed è TRUE, il
messaggio richiederà all’operatore di esaminare il motivo della lentezza della produzione.
VAR num time := 62,3;
© Copyright 2007 ABB. Tutti i diritti riservati.
VAR bool full_speed := TRUE;
PROC main()
IF time > 60 THEN
IF full_speed THEN
TPWrite "Examine why the production is slow";
ELSE
TPWrite "Increase robot speed for faster production";
ENDIF
ENDIF
ENDPROC
3HAC029364-007 Revisione: -
19
1 Basi di RAPID
1.3.3. FOR ciclo
1.3.3. FOR ciclo
Ripetizione di una sequenza di codifica
Un altro modo di controllare il flusso del programma è quello di ripetere una sequenza di
codifica per un certo numero di volte.
Come funziona il ciclo FOR
La codifica seguente ripeterà per cinque volte la scrittura di “Hello”:
FOR i FROM 1 TO 5 DO
TPWrite "Hello";
ENDFOR
La sintassi della dichiarazione FOR è la seguente:
FOR contatore FROM valore iniziale TO valore finale DO
sequenza di programma da ripetere
ENDFOR
Il contatore non deve obbligatoriamente essere dichiarato, ma si comporta come una variabile
numerica nell’ambito del ciclo FOR. La prima volta che viene eseguita la codifica, il contatore
presenta il valore specificato dal valore iniziale. Il valore del contatore viene quindi
incrementato di 1 ogni volta che la codifica viene rieseguita. L’ultima esecuzione della
codifica avviene allorquando il contatore è uguale al valore finale. Dopo di che, l’esecuzione
continua dalla codifica di programmazione dopo la dichiarazione ENDFOR.
Impiego del valore del contatore
Il valore del contatore può essere utilizzato nel ciclo FOR.
Ad esempio, il calcolo della somma di tutti i numeri da 1 a 50 (1+2+3+...+49+50), può essere
programmato in questo modo:
VAR num sum := 0;
FOR i FROM 1 TO 50 DO
ENDFOR
Non è consentita l’attribuzione di un valore al contatore nel ciclo FOR.
20
3HAC029364-007 Revisione: -
© Copyright 2007 ABB. Tutti i diritti riservati.
sum := sum + i;
1 Basi di RAPID
1.3.4. WHILE ciclo
1.3.4. WHILE ciclo
Ripetizione con condizione
La ripetizione di una sequenza di codifica può essere combinata con l’esecuzione
condizionata della sequenza stessa. Grazie al ciclo WHILE, il programma continuerà a ripetere
l’esecuzione della sequenza di codifica fino a quando la condizione permarrà ’vera’.
Sintassi di WHILE
La sintassi del ciclo WHILE è la seguente:
WHILE condizione DO
sequenza di programma da ripetere
ENDWHILE
Se la condizione è ’falsa’ fin dall’inizio, la sequanza di codifica non sarà mai eseguita. Se la
condizione è ’vera’, la sequenza di codifica sarà eseguita ripetutamente, fino a che la
condizione in questione non sia più ’vera’.
Esempio
La codifica di programmazione seguente aggiungerà numeri (1+2+3+...), fino a che la loro
somma non raggiunga il valore 100.
VAR num sum := 0;
VAR num i := 0;
WHILE sum <= 100 DO
i := i + 1;
sum := sum + i;
ENDWHILE
© Copyright 2007 ABB. Tutti i diritti riservati.
Non creare cicli eterni o complessi senza l’istruzione ’wait’
Se la condizione non diventa mai ‘falsa’, il ciclo continuerà costantemente, appropriandosi di
un’a,pia quantità di potenza di calcolo. La stesura di un ciclo eterno è consentita, ma a
condizione che tale ciclo contenga alcune istruzioni ‘wait’, che permettano al computer di
eseguire altri compiti nel frattempo.
Cicli complessi (con molti calcoli, e con scrittura sulla FlexPendant, senza istruzioni di
spostamento ’move’) possono richiedere delle istruzioni di attesa anche nel caso che il
numero di cicli sia limitato.
WHILE TRUE DO
! Some code
...
! Wait instruction that waits for 1 second
WaitTime 1;
ENDWHILE
Da notare che le istruzioni ‘move’ funzionano come quelle di attesa, dal momento che
l’esecuzione non continua fino a che il robot non ha raggiunto il suo obbiettivo.
3HAC029364-007 Revisione: -
21
1 Basi di RAPID
1.4.1. Regole generali di sintassi RAPID
1.4 Regole e consigli per la sintassi RAPID
1.4.1. Regole generali di sintassi RAPID
Punto e virgola
La regola generale dice che ciascuna dichiarazione deve terminare con un punto e virgola.
Esempi
Dichiarazione di variabili:
VAR num length;
Attribuzione dei valori:
area := length * width;
La maggior parte delle chiamate d’istruzioni:
MoveL p10,v1000,fine,tool0;
Eccezioni
Alcune istruzioni speciali non terminano con un punto e virgola. Sono presenti invece
specifiche keyword per indicare il termine.
Esempi di istruzioni che non terminano con un punto e virgola:
Keyword per istruzione
Keyword per termine
IF
ENDIF
FOR
ENDFOR
WHILE
ENDWHILE
PROC
ENDPROC
Queste keyword sono molto importanti per la creazione di una buona struttura di un
programma RAPID. Esse sono dettagliate nel prosieguo di questo stesso Manuale.
Una linea che inizia con un simbolo ! non sarà interpretata dal controller del robot. Si può
dunque utilizzare questo simbolo per indicare righe di commento nella codifica.
Esempio
! Calculate the area of the rectangle
area := length * width;
22
3HAC029364-007 Revisione: -
© Copyright 2007 ABB. Tutti i diritti riservati.
Commenti
1 Basi di RAPID
1.4.2. Consigli per la codifica RAPID
1.4.2. Consigli per la codifica RAPID
Keyword con maiuscole
RAPID non è sensibile a maiuscole/minuscole, ma si consiglia di codificare tutte le parole
riservate (ad esempio VAR, PROC) scrivendole in maiuscole. Per un elenco completo di parole
riservate, vedere Manuale di riferimento tecnico – Panoramica RAPID.
Indentazioni
Per rendere più comprensibile la codifica di programmazione, utilizzare l’indentazione. Tutta
la codifica nell’ambito di una PROC (ovvero tra PROC ed ENDPROC) dovrebbe essere indentata.
Tutta la codifica nell’ambito di una sequenza IF-, FOR- o WHILE dovrebbe essere
ulteriormente indentata.
Se si programma tramite la FlexPendant, l’indentazione viene effettuata automaticamente.
Esempio
VAR bool repeat;
VAR num times;
PROC main()
repeat := TRUE;
times := 3;
IF repeat THEN
FOR i FROM 1 TO times DO
TPWrite "Hello";
ENDFOR
ENDIF
END PROC
© Copyright 2007 ABB. Tutti i diritti riservati.
Da notare che è facile da vedere dove iniziano e terminano le dichiarazioni IF. Nel caso siano
presenti diverse dichiarazioni IF, senza alcuna indentazione, sarebbe praticamente
impossibile trovare quale dichiarazione ENDIF corrisponda ad una data dichiarazione IF.
3HAC029364-007 Revisione: -
23
1 Basi di RAPID
© Copyright 2007 ABB. Tutti i diritti riservati.
1.4.2. Consigli per la codifica RAPID
24
3HAC029364-007 Revisione: -
2 Funzionalità robotica RAPID
2.1.1. MoveL intruzione
2 Funzionalità robotica RAPID
2.1 Istruzioni di movimento
2.1.1. MoveL intruzione
Panoramica
Il vantaggio di RAPID è dato dal fatto che, ad eccezione del fatto di presentare la maggior
parte di funzionalità che si possono trovare in altri linguaggi di programmazione di alto
livello, RAPID è concepito in maniera specifica per il controllo dei robot. È, ancora più
importante, dispone di istruzioni per far spostare il robot.
MoveL
Una semplice istruzione di spostamento può apparire così:
MoveL p10, v1000, fine, tool0;
laddove:
•
MoveL è un’istruzione che sposta il robot linearmente (in linea retta) dalla sua
posizione corrente a quella specificata.
•
p10 specifica la posizione verso la quale deve spostarsi il robot.
•
v1000 specifica che la velocità del robot dovrà essere di 1000 mm/s.
•
fine specifica che il robot dovrà spostarsi esattamente alla posizione specificata, e
non tagliare alcuna curva nel suo percorso verso la posizione successiva.
•
tool0 specifica che la flangia di montaggio sulla punta del robot deve muoversi verso
la posizione specificata.
Sintassi di MoveL
MoveL ToPoint Speed Zone Tool;
© Copyright 2007 ABB. Tutti i diritti riservati.
ToPoint
Il punto di destinazione definito da una costante di tipo di dati robtarget. Programmando
tramite la FlexPendant, si può attribuire un valore di robtarget indicando una posizione
tramite il robot. Se si programma fuori linea, può rivelarsi complicato il fatto di calcolare le
coordinate per una data posizione.
Il robtarget verrà illustrato in seguito, nella sezione Tipi di dati compositi a pagina 48. Per
il momento, accettiamo il fatto che la posizione x=600, y=-100, z=800 possa essere dichiarata
ed assegnata in questa maniera:
CONST robtarget p10 := [ [600, -100, 800], [1, 0, 0, 0], [0, 0, 0,
0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
Speed
La velocità di spostamento definita da una costante di tipo di dati speeddata. Sono
disponibili molti valori predefiniti, quali:
speeddata predefiniti
Valore
v5
5 mm/s
v100
100 mm/s
Continua nella pagina successiva
3HAC029364-007 Revisione: -
25
2 Funzionalità robotica RAPID
2.1.1. MoveL intruzione
Continua
speeddata predefiniti
Valore
v1000
1.000 mm/s
vmax
Velocità massima del robot
Un elenco completo di valori di speeddata predefiniti si può trovare in Manuale di
riferimento tecnico – RAPID Istruzioni, Funzioni e tipi di dati, sezione Tipi di dati e
speeddata.
Se si impiega un valore predefinito, quest’ultimo non deve essere dichiarato o assegnato.
Zone
Specifica una zona di curva definita da una costante di tipo di dati zonedata. Sono
disponibili molti valori predefiniti, quali:
zonedata predefiniti
Valore
fine
Il robot si sposterà esattamente verso la posizione
specificata
z10
Il percorso del robot può tagliare curve quando si
trova a meno di 10 mm da ToPoint.
z50
Il percorso del robot può tagliare curve quando si
trova a meno di 50 mm da ToPoint.
Un elenco completo di valori di zonedata predefiniti si può trovare in Manuale di
riferimento tecnico – RAPID Istruzioni, Funzioni e tipi di dati, sezione Tipi di dati e zonedata.
Se si impiega un valore predefinito, quest’ultimo non deve essere dichiarato o assegnato.
Le istruzioni RAPID seguenti determineranno il percorso del robot qui sotto indicato:
MoveL p10, v1000, z50, tool0;
© Copyright 2007 ABB. Tutti i diritti riservati.
MoveL p20, v1000, fine, tool0;
xx0700000358
Continua nella pagina successiva
26
3HAC029364-007 Revisione: -
2 Funzionalità robotica RAPID
2.1.1. MoveL intruzione
Continua
Tool
Specifica lo strumento utilizzato dal robot, definito da una variabile persistente di tipo di dati
tooldata. Se al robot sono connessi un cannello da saldatura, una pistola a colla o una
penna, si desidera programmare il ToPoint in relazione alla punta di tale strumento. Questo
viene fatto automaticamente se viene dichiarato, assegnato ed impiegato un tooldata
nell’istruzione MoveL.
© Copyright 2007 ABB. Tutti i diritti riservati.
tool0 rappresenta uno strumento predefinito, raffigurante il robot senza alcuno strumento, e
non deve essere né dichiarato, né assegnato. Tutti gli altri strumenti devono essere dichiarati
ed assegnati prima di poter essere utilizzati.
3HAC029364-007 Revisione: -
27
2 Funzionalità robotica RAPID
2.1.2. Sistemi di coordinate
2.1.2. Sistemi di coordinate
Sistema di coordinate di base
La posizione verso cui si sposta un’istruzione ‘move’ è specificata in coordinate, in un
sistema di coordinate. Se non viene specificato alcun sistema di coordinate, la posizione viene
data in relazione al sistema di coordinate di base del robot (chiamato pure quadro di base). Il
sistema di coordinate di base prende la sua origine dalla base del robot.
xx0700000397
Siszemi di coordinate personalizzati
Si può definire ed utilizzare un altro sistema di coordinate, mediante istruzioni ‘move’. Il
sistema di coordinate che l’istruzione ’move’ dovrà utilizzare viene specificato mediante
l’argomento opzionale \WObj.
MoveL p10, v1000, z50, tool0 \WObj:=wobj1;
Per ulteriori informazioni sui sistemi di coordinate, vedere Manuale di riferimento tecnico –
RAPID Panoramica, sezione Sistemi di coordinate.
28
3HAC029364-007 Revisione: -
© Copyright 2007 ABB. Tutti i diritti riservati.
Per informazioni sul modo di definire un sistema di coordinate, vedere Manuale di
riferimento tecnico – RAPID Istruzioni, Funzioni e Tipi di dati, sezione Tipi di dati e
wobjdata.
2 Funzionalità robotica RAPID
2.1.3. Esempi con MoveL
2.1.3. Esempi con MoveL
Disegno di un quadrato
Un robot tiene una penna, sopra un foglio di carta posto su un tavolo. Si desidera che il robot
abbassi la punta della penna sul foglio di carta, e che tracci un quadrato.
xx0700000362
PERS tooldata tPen := [ TRUE, [[200, 0, 30], [1, 0, 0 ,0]], [0.8,
[62, 0, 17], [1, 0, 0, 0], 0, 0, 0]];
CONST robtarget p10 := [ [600, -100, 800], [0,707170, 0, 0,707170,
0], [0, 0, 0, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
CONST robtarget p20 := [ [600, 100, 800], [0.707170, 0, 0.707170,
0], [0, 0, 0, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
CONST robtarget p30 := [ [800, 100, 800], [0.707170, 0, 0.707170,
0], [0, 0, 0, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
CONST robtarget p40 := [ [800, -100, 800], [0.707170, 0, 0.707170,
0], [0, 0, 0, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
© Copyright 2007 ABB. Tutti i diritti riservati.
PROC main()
MoveL p10, v200, fine, tPen;
MoveL p20, v200, fine, tPen;
MoveL p30, v200, fine, tPen;
MoveL p40, v200, fine, tPen;
MoveL p10, v200, fine, tPen;
ENDPROC
Continua nella pagina successiva
3HAC029364-007 Revisione: -
29
2 Funzionalità robotica RAPID
2.1.3. Esempi con MoveL
Continua
Disegno con zone d’angoli
Disegno della stessa figura dell’esempio precedente, ma con una zona d’angolo di 20 mm al
p20 ed una zona d’angolo di 50 mm al p40.
xx0700000363
VAR tooldata tPen := ...
...
VAR robtarget p40 := ...
PROC main()
MoveL p10, v200, fine, tPen;
MoveL p20, v200, z20, tPen;
MoveL p30, v200, fine, tPen;
MoveL p40, v200, z50, tPen;
MoveL p10, v200, fine, tPen;
© Copyright 2007 ABB. Tutti i diritti riservati.
ENDPROC
30
3HAC029364-007 Revisione: -
2 Funzionalità robotica RAPID
2.1.4. Altre istruzioni di spostamento
2.1.4. Altre istruzioni di spostamento
Svariate istruzioni di spostamento
In RAPID sono disponibili svariate istruzioni di spostamento. Le più comuni sono MoveL,
MoveJ e MoveC.
MoveJ
MoveJ viene utilizzata per spostare rapidamente il robot da un punto a un altro quando tale
movimento non deve essere eseguito in linea retta.
Utilizzare MoveJ per spostare il robot verso un punto della zona prossima a dove il robot
dovrà funzionare. Un'istruzione MoveL non sarà operativa se, ad esempio, la base del robot si
trova tra la posizione corrente e quella programmata, oppure se il riorientamento dell'utensile
è troppo esteso. In questi casi si potrà sempre impiegare MoveJ.
La sintassi di MoveJ è analoga a quella di MoveL.
Esempio
MoveJ p10, v1000, fine, tPen;
MoveC
MoveC viene impiegata per spostare il robot circolarmente, lungo un arco.
Esempio
MoveL p10, v500, fine, tPen;
MoveC p20, p30, v500, fine, tPen;
© Copyright 2007 ABB. Tutti i diritti riservati.
MoveL p40, v500, fine, tPen;
xx0700000364
3HAC029364-007 Revisione: -
31
2 Funzionalità robotica RAPID
2.1.5. Comportamento dell’esecuzione in zone d’angolo
2.1.5. Comportamento dell’esecuzione in zone d’angolo
Qual è il motivo di un’esecuzione speciale nelle zone d’angolo?
L’esecuzione di un programma è in genere completata nell’ordine in cui sono redatte le
dichiarazioni.
Nell’esempio seguente, il robot si sposta per prima cosa a p10, quindi calcola il valore di
reg1 e quindi si sposta a p20:
MoveL p10, v1000, fine, tool0;
reg1 := reg2 + reg3;
MoveL p20, v1000, fine, tool0;
Ma ora si consideri questo esempio:
MoveL p10, v1000, z50, tool0;
reg1 := reg2 + reg3;
MoveL p20, v1000, fine, tool0;
Se il calcolo di reg1 non iniziasse fino a che il robot non si trovasse a p10, il robot dovrebbe
arrestarsi in questo punto, per attendere l'istruzione di spostamento successiva. Quello che
succede veramente è che la codifica viene eseguita prima dello spostamento del robot. Viene
calcolato reg1, ed il percorso del robot nella zona d’angolo è calcolato prima che il robot
raggiunga p10.
Come questo influisca sul programma
In molti casi, il tempo effettivo di esecuzione non influisce sul programma. Vi sono
comunque dei casi in cui questo avviene.
Se si desidera tracciare una linea con una pistola a spruzzo tra p10 e p20, e si redige il
programma in questo modo:
MoveL p10, v300, z10, tspray;
! Avvio dell’operazione di spruzzo
SetDO do1, 1;
MoveL p20, v300, z10, tspray;
© Copyright 2007 ABB. Tutti i diritti riservati.
! Arresto dell’operazione di spruzzo
SetDO do1, 0;
MoveL p30, v300, fine, tspray;
Il risultato può apparire così:
xx0700000387
Continua nella pagina successiva
32
3HAC029364-007 Revisione: -
2 Funzionalità robotica RAPID
2.1.5. Comportamento dell’esecuzione in zone d’angolo
Continua
Soluzione
Se si desidera predisporre dei segnali nelle zone d’angolo, e non utilizzare fine, sono
disponibili istruzioni speciali per risolvere questo caso, come ad esempio MoveLDO, TriggL
e DispL. Per maggiori informazioni riguardanti queste istruzioni, vedere Manuale tecnico di
riferimento – RAPID Istruzioni, Funzioni e Tipi di dati.
Sono da evitare istruzioni d’attesa o calcoli complessi dopo una zona d’angolo.
Il controller del robot può calcolare lo spostamento del robot in percorsi d’angolo anche se
sono presenti istruzioni tra le istruzioni di spostamento. Se è comunque presente
un’istruzione d’attesa dopo una di spostamento con una zona d’angolo, il robot non sarà in
grado di eseguire quest’azione. Utilizzare fine nell’istruzione di spostamento, prima di
un’istruzione di attesa.
© Copyright 2007 ABB. Tutti i diritti riservati.
Vi è pure una limitazione riguardante il numero )e la complessità) dei calcoli che il controller
del robot può eseguire tra istruzioni di spostamento con zone d’angolo. Si tratta di un
problema soprattutto nel caso di procedure di chiamata dopo un’istruzione di spostamento
con una zona d’angolo.
3HAC029364-007 Revisione: -
33
2 Funzionalità robotica RAPID
2.2.1. segnali d’I/O
2.2 Segnali di I/O
2.2.1. segnali d’I/O
A proposito dei segnali
I segnali vengono utilizzati per la comunciazione con dispositivi esterni con cui il robot
coopera. I segnali d’ingresso vengono impostati dai dispositivi esterni, e si possono utilizzare
nel programma RAPID, per iniziare una certa esecuzione da parte del robot. I segnali d’uscita
vengono impostati dal programma RAPID, che segnala ai dispositivi esterni che devono
eseguire qualche azione.
Impostazione dei segnali
I segnali sono configurati nei parametri di sistema per l'insieme robotico. È possibile
impostare dei nomi personalizzati per i segnali. Essi non devono essere dichiarati nel
programma RAPID.
Ingresso digitale
Un segnale d’ingreso digitale può avere i valori 0 o 1. Il programma RAPID è in grado di
leggere il suo valore, ma non può impostarlo.
Esempio
Se il segnale digitale d’ingresso di1 ha come valore 1, il robot si sposterà.
IF di1 = 1 THEN
MoveL p10, v1000, fine, tPen;
ENDIF
Uscita digitale
Esempio
Il robot dispone di un utensile a pinza che si può chiudere mediante il segnale digitale d’uscita
do_grip. Il robot si sposta alla posizione in cui si trova la penna, e chiude la pinza. Il robot
si sposta poi al punto in cui dovrà tracciare la linea, utilizzando allora l’utensile tPen.
MoveJ p0, vmax, fine, tGripper;
SetDO do_grip, 1;
MoveL p10, v1000, fine, tPen;
Altri tipi di segnali
I segnali digitali sono i più comuni e facili da utilizzare. Se per un dato segnale è necessario
avere un valore diverso da 0 o 1, sono disponibili degnali analogici e gruppi di segnali digitali
che possono avere altri valori. Questi tipi di segnali non sono trattati in questo Manuale.
34
3HAC029364-007 Revisione: -
© Copyright 2007 ABB. Tutti i diritti riservati.
Un segnale d’uscita digitale può comportare i valori 0 o 1. Il programma RAPID può
impostare il valore per un segnale d’uscita digitale, e così influire dui dispositivi esterni. Il
valore di un segnale digitale d’uscita viene impostato mediante l’istruzione SetDO.
2 Funzionalità robotica RAPID
2.3.1. Comunicare con la FlexPendant
2.3 Interazione con l’utente
2.3.1. Comunicare con la FlexPendant
A proposito delle istruzioni di lettura e scrittura
In RAPID, sono disponibili parecchie istruzioni per la scrittura di informazioni destinate
all’operatore del robot, nonché per la ricezione di input dall’operatore. Negli esempi
precedenti avevamo già visto TPWrite. Le sole istruzioni che esamineremo in questa sede
sono TPWrite, TPReadFK e TPReadNum.
TPWrite
La scrittura di un messaggio destinato all’operatore si può effettuare mediante l’istruzione
TPWrite.
© Copyright 2007 ABB. Tutti i diritti riservati.
TPWrite "Now producing exhaust pipes";
xx0700000374
Scrittura di una variabile a stringa
La stringa di testo sulla FlexPendant può provenire da una variabile a stringa, oppure il testo
scritto può essere una concatenazione di una variabile a stringa e di un'altra stringa.
VAR string product := "exhaust pipe";
! Write only the product on the FlexPendant
TPWrite product;
! Write "Producing" and the product on the FlexPendant
TPWrite "Producing " + product;
Continua nella pagina successiva
3HAC029364-007 Revisione: -
35
2 Funzionalità robotica RAPID
2.3.1. Comunicare con la FlexPendant
Continua
Scrittura di una variabile numerica
Una variabile numerica può essere aggiunta dopo la stringa, utilizzando l’argomento
opzionale \Num.
VAR num count := 13;
TPWrite "The number of produced units is: " \Num:=count;
TPReadFK
Quando si scrive un programma RAPID che richiede una scelta da parte dell’operatore,
TPReadFK è un’istruzione utile. Essa infatti consente la visualizzazione di fino a 5 pulsanti
di funzione, e l’operatore può scegliere quello da attivare. I pulsanti corrisponderanno ai
valori da 1 a 5.
VAR num answer;
TPReadFK answer, "Select which figure to draw", "Square",
"Triangle", stEmpty, stEmpty, stEmpty;
IF answer = 1 THEN
! code to draw square
ELSEIF answer = 2 THEN
! code to draw triangle
ELSE
! do nothing
xx0700000376
Se l’utente seleziona "Square", la variabile numerica answer ottiene il valore 1. Se l’utente
seleziona "Triangle", alla variabile numerica answer viene attribuito il valore 2.
Si possono specificare cinque pulsanti di funzioni. Se non si utilizza un certo pulsante,
scrivere su di esso stEmpty (vuoto) invece del testo.
Continua nella pagina successiva
36
3HAC029364-007 Revisione: -
© Copyright 2007 ABB. Tutti i diritti riservati.
ENDIF
2 Funzionalità robotica RAPID
2.3.1. Comunicare con la FlexPendant
Continua
TPReadNum
TPReadNum consente all’operatore di scrivere un numero sulla FlexPendant, invece di
compiere una scelta.
VAR num answer;
TPReadNum answer, "How many times shall I draw the figure?";
FOR i FROM 1 TO answer DO
! code to draw figure
ENDFOR
xx0700000378
© Copyright 2007 ABB. Tutti i diritti riservati.
La variabile numerica answer ottiene il valore immesso dall’operatore.
3HAC029364-007 Revisione: -
37
2 Funzionalità robotica RAPID
© Copyright 2007 ABB. Tutti i diritti riservati.
2.3.1. Comunicare con la FlexPendant
38
3HAC029364-007 Revisione: -
3 Struttura
3.1. RAPID procedura
3 Struttura
3.1. RAPID procedura
Che cos’è una procedura
Fino a questo punto, tutti gli esempi di codifica RAPID che abbiamo esaminato eseguivano
la codifica presente nella procedura main. L’esecuzione inizia automaticamente nella
procedura chiamata main, ma possono essere presenti svariate procedure.
Una procedura dev’essere dichiarata mediante la keyword PROC seguita dal nome della
procedura, dagli argomenti della procedura e dalla codifica di programmazione che
dev’essere eseguita dalla procedura stessa. Una procedura viene chiamata da un’altra
procedura (ad eccezione della main, richiamata automaticamente all’inizio del programma).
Esempio
Se si desidera tracciare quattro quadrati di dimensioni differenti, potremo preparare quasi la
stessa codifica di programmazione per quattro volte. Il risultato sarà un'estesa quantità di
codifica ed un programma difficile da capire. Una maniera molto più efficiente di scrivere
questo programma è rappresentata dalla preparazione di una procedura che tracci il quadrato,
e che sarà richiamata dalla procedura ‘main’ per quattro volte.
PERS tooldata tPen:= ...
CONST robtarget p10:= ...
PROC main()
! Call the procedure draw_square
draw_square 100;
draw_square 200;
draw_square 300;
draw_square 400;
© Copyright 2007 ABB. Tutti i diritti riservati.
ENDPROC
PROC draw_square(num side_size)
VAR robtarget p20;
VAR robtarget p30;
VAR robtarget p40;
! p20 is set to p10 with an offset on the y value
p20 := Offs(p10, 0, side_size, 0);
p30 := Offs(p10, side_size, side_size, 0);
p40 := Offs(p10, side_size, 0, 0);
MoveL p10, v200, fine, tPen;
MoveL p20, v200, fine, tPen;
MoveL p30, v200, fine, tPen;
MoveL p40, v200, fine, tPen;
MoveL p10, v200, fine, tPen;
ENDPROC
Continua nella pagina successiva
3HAC029364-007 Revisione: -
39
3 Struttura
3.1. RAPID procedura
Continua
Argomenti della procedura
Nella dichiarazione di una procedura, tutti gli argomenti vengono dichiarati tra parentesi,
dopo il nome della procedura. Questa dichiarazione contiene un tipo di dati ed un nome
d’argomento per ciascun argomento. L’argomento ottiene il suo valore dal richiamo alla
procedura, e l’argomento agisce come una variabile nell’ambito della procedura (l’argomento
non può essere utilizzato esternamente alla procedura).
PROC main()
my_procedure 14, "Hello", TRUE;
ENDPROC
PROC my_procedure(num nbr_times, string text, bool flag)
...
ENDPROC
Nell’ambito della procedura my_procedure qui sopra, nbr_times presenta il valore 14,
text comporta il valore "Hello" mentre flag ha come valore TRUE.
Per il richiamo della procedura, l’ordine degli argomenti è importante, al fine d’assegnare il
valore corretto al giusto argomento. Non viene utilizzata alcuna parentesi nel richiamo alla
procedura.
Variabili dichiarate nell’ambito della procedura
© Copyright 2007 ABB. Tutti i diritti riservati.
Le variabili dichiarate nell’ambito di una procedura esistono soltanto in tale procedura. Ad
esempio, nel caso succitato, p10 potrà essere utilizzato in tutte le procedure di questo modulo,
ma p20, p30 e p40 possono essere utilizzati soltanto nella procedura draw_square.
40
3HAC029364-007 Revisione: -
3 Struttura
3.2. Moduli
3.2. Moduli
A proposito dei moduli
Un programma RAPID può consistere in uno o svariati moduli. Ciascun modulo può
contenere una o svariate procedure.
I brevi e semplice programmi illustrati in questo Manuale utilizzano un solo modulo. In un
ambiente di programmazione più complesso, alcune procedure standard, utilizzate da molti
differenti programmi, possono essere sistemate in un modulo separato.
Esempio
Il modulo MainModule contiene un a codifica specifica per questo programma, ed indica
l’attività del robot in questo programma particolare. Il modulo figures_module contiene
una codifica standard che può essere utilizzata da un qualsiasi programma che desideri
tracciare un quadrato, un triangolo o un cerchio.
MODULE MainModule
...
draw_square;
...
ENDMODULE
MODULE figures_module
PROC draw_square()
...
ENDPROC
PROC draw_triangle()
...
ENDPROC
PROC draw_circle()
...
© Copyright 2007 ABB. Tutti i diritti riservati.
ENDPROC
ENDMODULE
Moduli di programma
Un modulo di programma viene memorizzato in un file che comporta l’estensione .mod,
come ad esempio figures_module.mod.
Per il controller del robot non fa alcuna differenza se il programma è scritto in più moduli. Il
motivo di utilizzare più moduli in un programma è soltanto quello di rendere il programma
più facile da comprendere, e più agevole da riutilizzare da parte dei programmatori.
Vi può essere un solo programma attivo sul controller del robot, vale a dire che soltanto uno
dei moduli può contenere una procedura di nome main.
Continua nella pagina successiva
3HAC029364-007 Revisione: -
41
3 Struttura
3.2. Moduli
Continua
Moduli di sistema
Un modulo di sistema viene memorizzato in un file che comporta l’estensione .sys, come ad
esempio system_data_module.sys.
© Copyright 2007 ABB. Tutti i diritti riservati.
I dati e le procedure che devono essere mantenuti nel sistema, anche se il programma viene
cambiato, devono essere sistemati in un modulo di sistema. Ad esempio, se una variabile
persistente, di tipo tooldata viene dichiarata in un modulo di sistema, una ricalibrazione
dell’utensile viene preservata, anche se venisse ad essere caricato un nuovo programma.
42
3HAC029364-007 Revisione: -
3 Struttura
3.3. Proeggto strutturato
3.3. Proeggto strutturato
A proposito della struttura
Quando ci si trova ad essere confrontati con un problema che si desidera risolvere tramite un
programma RAPID, ci si metta calmamente ad analizzare il problema ed i suoi elementi. Se
si avvia la programmazione senza prima aver concepito il progetto del programma,
quest’ultimo sarà irrazionale. Un programma ben concepito è meno prono a contenere errori,
ed è più facile ad essere compreso da altre persone. Il tempo trascorso sul progetto verrà
ripagato molte volte in termini di collaudo e manutenzione del programma.
Suddivisione del programma
Seguire questi passi per suddividere il problema in parti gestibili:
Azione
1. Individuare un’estesa funzionalità. Tentare di suddividere il problema in parti più ridotte,
più facili da maneggiare.
2. Creare una struttura concettuale. Tracciare una mappa delle funzionalità e del modo in
cui esse interagiscono tra di loro.
3. Esaminare ciascun blocco della struttura concettuale. Si può suddividere ulteriormente
un blocco in parti minori? Che cosa è richiesto, al fine di implementare il blocco?
Esempio
Descrizione del problema
© Copyright 2007 ABB. Tutti i diritti riservati.
Creare un programma RAPID che possa tracciare quadrati o triangoli su un pezzo di carta.
Lasciare che sia l’operatore a decidere se il grafico successivo debba presentare la forma di
un quadrato o di un triangolo. Una volta che il robot ha terminato di tracciare la figura,
l’utente deve poter essere in grado di operare la medesima selezione ancora una volta, fino a
che l’operatore non selezioni un pulsante Esci.
Una volta che il robot ha tracciato 10 figure sullo stesso pezzo di carta, scrivere un messaggio
che richieda il cambio della carta, ed aspettare che l’operatore selezioni il pulsante OK.
Fra i disegni, verificare se di1 vale 1. Se questo fosse il caso, spostarsi verso un affilamatite,
ed impostare do1 ad 1 per avviare l’azione dell’affilamatite, e muovere lentamente la matita
nell’affilamatite. In genere, si dovrebbe ridefinire l’utensile, dato che la matita diventa più
corta, una volta affilata, ma per questo esempio tralasceremo quest’azione.
Continua nella pagina successiva
3HAC029364-007 Revisione: -
43
3 Struttura
3.3. Proeggto strutturato
Continua
Struttura concettuale
en0700000381
Codifica del programma
MODULE MainModule
PERS tooldata tPen := [ TRUE, [[200, 0, 30], [1, 0, 0 ,0]], [0.8,
[62, 0, 17], [1, 0, 0, 0], 0, 0, 0]];
CONST robtarget p10 := [ [600, -100, 800], [0.707170, 0,
0.707170, 0], [0, 0, 0, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9,
9E9] ];
CONST robtarget pSharp1 := [ [200, 500, 850], [1, 0, 0, 0], [0,
0, 0, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
PERS num count := 0;
PROC main()
user_selection;
IF count >= 10 THEN
change_paper;
! Reset count
count := 0;
ENDIF
sharpen_pencil;
ENDIF
ENDPROC
PROC user_selection()
VAR num answer;
TPReadFK answer, "Select which figure to draw", "Square",
"Triangle", "Quit", stEmpty, stEmpty;
IF answer = 1 THEN
draw_square;
count := count + 1;
ELSEIF answer = 2 THEN
draw_triangle;
count := count + 1;
ELSE
quit;
ENDIF
Continua nella pagina successiva
44
3HAC029364-007 Revisione: -
© Copyright 2007 ABB. Tutti i diritti riservati.
IF di=1 THEN
3 Struttura
3.3. Proeggto strutturato
Continua
ENDPROC
PROC draw_square()
VAR robtarget p20;
VAR robtarget p30;
VAR robtarget p40;
! Define points that give a square with the side 200 mm
p20 := Offs(p10, 0, 200, 0);
p30 := Offs(p10, 200, 200, 0);
p40 := Offs(p10, 200, 0, 0);
MoveL p10, v200, fine, tPen;
MoveL p20, v200, fine, tPen;
MoveL p30, v200, fine, tPen;
MoveL p40, v200, fine, tPen;
MoveL p10, v200, fine, tPen;
ENDPROC
PROC draw_triangle()
VAR robtarget p20;
VAR robtarget p30;
! Define points for the triangle
p20 := Offs(p10, 0, 200, 0);
p30 := Offs(p10, 200, 100, 0);
MoveL p10, v200, fine, tPen;
MoveL p20, v200, fine, tPen;
MoveL p30, v200, fine, tPen;
MoveL p10, v200, fine, tPen;
© Copyright 2007 ABB. Tutti i diritti riservati.
ENDPROC
PROC quit()
TPWrite "Good bye!"
! Terminate the program
EXIT;
ENDPROC
PROC change_paper()
VAR num answer;
TPReadFK answer, "Change the paper", "OK", stEmpty, stEmpty,
stEmpty, stEmpty;
ENDPROC
Continua nella pagina successiva
3HAC029364-007 Revisione: -
45
3 Struttura
3.3. Proeggto strutturato
Continua
PROC sharpen_pencil()
VAR robtarget pSharp2;
VAR robtarget pSharp3;
pSharp2 := Offs(pSharp1, 100, 0, 0);
pSharp3 := Offs(pSharp1, 120, 0, 0);
! Move quickly to position in front of sharpener
MoveJ pSharp1, vmax, z10, tPen;
! Place pencil in sharpener
MoveL pSharp2, v500, fine, tPen;
! Start the sharpener
SetDO do1, 1;
! Slowly move into the sharpener
MoveL pSharp3, v5, fine, tPen;
! Turn off sharpener
SetDO do1, 0;
! Move out of sharpener
MoveL pSharp1, v500, fine, tPen;
ENDPROC
ENDMODULE
© Copyright 2007 ABB. Tutti i diritti riservati.
Da notare che, in fase di produzione, un programma viene in genere eseguito in modalità
continua, per cui, quando l’esecuzione raggiunge la fine della procedura main, l’esecuzione
riprende dall’inizio. Se non si utilizza questa particolarità, si potrà impiegare un ciclo WHILE
per ripetere l’esecuzione di tutto quel che è contenuto nella procedura main.
46
3HAC029364-007 Revisione: -
4 Dati con valori multipli
4.1. Array
4 Dati con valori multipli
4.1. Array
Definizione di un array
Un array è una variabile che contiene più di un solo valore. Viene utilizzato un indice per
indicare uno dei valori.
Dichiarazione di un array
La dichiarazione di un array assomiglia a quella di una qualsiasi altra variabile, ad eccezione
del fatto che la lunghezza dell’array viene specificata al suo interno { }.
VAR num my_array{3};
Attribuzione dei valori
Ad un array si possono attribuire tutti i suoi valori in una volta sola. Durante l’attribuzione
dei valori dell’intero array, i valori sono racchiusi tra parentesi quadre [ ] e sono separati da
virgole.
my_array := [5, 10, 7];
È anche possibile assegnare un valore ad un solo elemento dell’array. L’elemento a cui
attribuire un valore viene specificato all’interno di { }.
my_array{3} := 8;
Esempio
Questo esempio utilizza un ciclo FOR ed array per chiedere all’operatore il tempo di
produzione stimato per ciascun pezzo. Si tratta di un modo molto efficiente per scrivere una
codifica, se lo si compara a quello di disporre di una sola variabile per ciascun pezzo, e di non
essere in grado di impiegare il ciclo FOR.
VAR num time{3};
VAR string part{3} := ["Shaft", "Pipe", "Cylinder"];
© Copyright 2007 ABB. Tutti i diritti riservati.
VAR num answer;
PROC main()
FOR i FROM 1 TO 3 DO
TPReadNum answer, "Estimated time for " + part{i} + "?";
time{i} := answer;
ENDFOR
ENDPROC
3HAC029364-007 Revisione: -
47
4 Dati con valori multipli
4.2. Tipi di dati compositi
4.2. Tipi di dati compositi
Tipo di dati composito
Un tipo di dati composito è un tipo di dati che contiene più di un solo valore. Viene dichiarato
come una variabile normale, ma contiene un numero predefinito di valori.
pos
Un semplice esempio di tipo di dati composito è quello pos. Esso contiene tre valori numerici
(x, y e z).
La dichiarazione assomiglia a quella di una semplice variabile:
VAR pos pos1;
L’attribuzione di tutti i valori viene compiuta come nel caso di un array:
pos1 := [600, 100, 800];
I diversi elementi presentano nomi, invece di numeri. Gli elementi di pos si chiamano x, y e
z. Il valore di un unico elemento viene identificato mediante il nome della variabile, un punto
ed il nome dell’elemento:
pos1.z := 850;
orient
Il tipo di dati orient specifica l’orientamento dell'utensile. L’orientamento viene specificato
da quattro valori numerici, chiamati q1, q2, q3 e q4.
VAR orient orient1 := [1, 0, 0, 0];
TPWrite "The value of q1 is " \Num:=orient1.q1;
pose
Un tipo di dati può essere composto di altri tipi di dati compositi. Un esempio ne è il tipo di
dati pose, che consiste in un solo pos chiamato trans ed un unico orient di nome rot.
VAR pose pose1 := [[600, 100, 800], [1, 0, 0, 0]];
VAR pos pos1 := [650, 100, 850];
pose1.pos := pos1;
orient1 := pose1.rot;
pose1.pos.z := 875;
robtarget
robtarget è un tipo di dati troppo complesso, per poterlo illustrare dettagliatamente in
questa sede, per cui passeremo ad una breve spiegazione.
robtarget consiste in quattro parti:
Tipo di dati
Name
Descrizione
pos
trans
coordinate x, y e z
orient
rot
Orientamento
confdata
robconf
Specifica gli angoli degli assi del robot
extjoint
extax
Specifica le posizioni per 6 assi supplementari. Il valore
viene impostato a 9E9 se non viene utilizzato alcun
asse supplementare.
Continua nella pagina successiva
48
3HAC029364-007 Revisione: -
© Copyright 2007 ABB. Tutti i diritti riservati.
VAR orient orient1;
4 Dati con valori multipli
4.2. Tipi di dati compositi
Continua
VAR robtarget p10 := [ [600, -100, 800], [0.707170, 0, 0.707170,
0], [0, 0, 0, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
! Increase the x coordinate with 50
p10.trans.x := p10.trans.x + 50;
Descrizioni dettagliate
© Copyright 2007 ABB. Tutti i diritti riservati.
Descrizioni dettagliate di questi tipi di dati, e di molti altri ancora, si possono trovare in
Manuale tecnico di riferimento – RAPID Istruzioni, Funzioni e Tipi di dati, sezione Tipi di
dati.
3HAC029364-007 Revisione: -
49
4 Dati con valori multipli
© Copyright 2007 ABB. Tutti i diritti riservati.
4.2. Tipi di dati compositi
50
3HAC029364-007 Revisione: -
5 RAPID: istruzioni e funzioni
5.1. Istruzioni
5 RAPID: istruzioni e funzioni
5.1. Istruzioni
Definizione di un'istruzione
Un’istruzione RAPID agisce come una procedura prestabilita. Un richiamo ad un’istruzione
assomiglia ad una procedura, dove il nome d’istruzione è seguito dai valori dell’argomento.
Alcune istruzioni RAPID sono semplici, e avrebbero facilmente potuto essere state scritte
come una procedura in RAPID. Ad esempio, l’istruzione Add.
Add reg1, 3;
! The same functionality could be written:
reg1 := reg1 + 3;
Altre istruzioni RAPID eseguono processi complicati, che non avrebbero potuto essere
programmati senza queste istruzioni prestabilite. Ad esempio: MoveL, che potrebbe sembrare
una semplice istruzione, ma per cui, in secondo piano vi sono calcoli dell'entità di movimento
di ciascun asse del robot e della quantità di corrente da fornire a ciascun motore. Dato che la
codifica di programmazione per questi calcoli esiste già, non resterà che preparare un
semplice richiamo d’istruzione.
MoveL p10, v1000, fine, tool0;
Descrizioni dettagliate
© Copyright 2007 ABB. Tutti i diritti riservati.
Descrizioni dettagliate di istruzioni si possono trovare in Manuale tecnico di riferimento –
RAPID Istruzioni, Funzioni e Tipi di dati, sezioneIstruzioni.
3HAC029364-007 Revisione: -
51
5 RAPID: istruzioni e funzioni
5.2. Funzioni
5.2. Funzioni
Definizione di una funzione
Una funzione RAPID assomiglia ad un’istruzione, ma restituisce un valore.
! Calculate the cosine of reg2
reg1 : = Cos(reg2);
Dato che la funzione restituisce un valore, il risultato della funzione può essere attribuito ad
una variabile.
Gli argomenti in un richiamo di funzione sono scritti entro parentesi, e sono separati da
virgole.
Comprendono un richiamo di funzione in una dichiarazione
Dappertutto, dove si può utilizzare un valore, si può utilizzare una funzione che restituisca un
valore dello stesso tipo di dati.
! Perform something if reg1 is smaller than -2 or greater than 2
IF Abs(reg1) > 2 THEN
...
! Convert the num time to string and concatenate with other strings
string1 := name + "’s time was " + NumToStr(time);
Semplificazione di calcoli complicati
Un singolo richiamo di funzione può spesso sostituire diverse dichiarazioni complesse.
Ad esempio:
p20 := Offs(p10, 100, 200, 300);
può sostituire la codifica seguente:
p20 := p10;
p20.trans.x := p20.trans.x + 100;
p20.trans.z := p20.trans.z + 300;
Descrizioni dettagliate
Descrizioni dettagliate di funzioni si possono trovare in Manuale tecnico di riferimento –
RAPID Istruzioni, Funzioni e Tipi di dati, sezione Funzioni.
52
3HAC029364-007 Revisione: -
© Copyright 2007 ABB. Tutti i diritti riservati.
p20.trans.y := p20.trans.y + 200;
6 Che cosa leggere in seguito
6.1. Dove trovare ulteriori informazioni
6 Che cosa leggere in seguito
6.1. Dove trovare ulteriori informazioni
Che cosa trovare in qual Manuale
Che cosa si desidera conoscere
•
•
•
•
•
•
Come scrivere programmi sulla FlexPendant
Come caricare programmi sul controller del
robot.
Come collaudare il programma
Dopo poter leggere a questo
proposito
Manuale operativo - IRC5 con
FlexPendant, sezione Programmazione e collaudo
Informazioni maggiormente dettagliate sulle fun- Manuale tecnico di riferimento –
zionalità menzionate in questo Manuale
RAPID Panoramica
Istruzioni per una categoria specifica (ad
esempio, istruzioni di spostamento o funzionalità
dell’orologio)
Descrizioni di funzionalità più avanzate (ad
esempio, interrupt o trattamento degli errori)
Informazioni a proposito di un’istruzione,
funzione o tipo di dati specifici
Manuale tecnico di riferimento RAPID Istruzioni, funzioni e tipi di
dati
•
Dettagli sul modo in cui il controller del robot
tratta differenti parti di RAPID
Technical reference manual RAPID kernel
© Copyright 2007 ABB. Tutti i diritti riservati.
•
3HAC029364-007 Revisione: -
53
6 Che cosa leggere in seguito
© Copyright 2007 ABB. Tutti i diritti riservati.
6.1. Dove trovare ulteriori informazioni
54
3HAC029364-007 Revisione: -
Index
A
B
prestazioni del computer 21
PROC 39
procedura 39
procedura RAPID 39
progetto 43
punto e virgola 22
bool 12
Q
C
quadro di base 28
cicli eterni 21
ciclo 20, 21
commenti 22
comunicazione 34, 35
conditional execution 17
condizioni logiche 16, 19
controller del robot 10
costanti 15
R
argomenti 40
array 47
attribuzione di valori 12
D
dichiarazione di variabile 12
dichiarazione di variabili 12
E
ELSE 17
ELSEIF 18
esecuzione condizionale 21
F
FlexPendant 10, 35
FOR 20
Funzioni 52
Funzioni RAPID 52
I
© Copyright 2007 ABB. Tutti i diritti riservati.
IF 17, 19
indentazioni 23
ingresso digitale 34
istruzioni 51
istruzioni di spostamento 25
Istruzioni RAPID 51
ripetizione 20, 21
robtarget 25, 48
S
segnale d’ingresso 34
segnale d’uscita 34
segnali 34
segnali d’I/O 34
sicurezza 9
sintassi 10
sistema di coordinate di base 28
sistemi di coordinate 28
speeddata 25
stringa 12
T
terminologia 10
tipi di dati 12, 48
tipi di dati complessi 48
tooldata 27
TPReadFK 36
TPReadNum 37
TPWrite 35
U
uscita digitale 34
V
variabili 12
L
W
logical conditions 17
WHILE 21
WObj 28
work object 28
M
main 39
modulo 41
MoveC 31
MoveJ 31
MoveL 25, 29
Z
zone d’angoli 30
zone d’angolo 32
zonedata 26
N
num 12
O
operatori 16
orient 48
P
pos 48
pose 48
prestazioni 21
3HAC029364-007 Revisione: -
55
© Copyright 2007 ABB. Tutti i diritti riservati.
Index
56
3HAC029364-007 Revisione: -
3HAC029364-007, Revisione -, it
ABB Robotics
S-721 68 VÄSTERÅS
SWEDEN
Telephone: +46 (0) 21 344000
Telefax:
+46 (0) 21 132592
Scarica

Manuale operativo