Sei sulla pagina 1di 61

Introduzione a Robot Studio

(ABB)
Fanny Ficuciello
IRB 120
Informazioni generali
L'IRB 120 fa parte dell'ultima generazione di robot industriali a 6 assi di ABB
Robotics, dal carico utile di 3 kg, concepiti in modo specifico per industrie
manufatturiere che utilizzano un'automazione flessibile.
Il robot è dotato di una struttura aperta particolarmente adatta per utilizzi flessibili
ed è in grado di comunicare ampiamente con sistemi esterni.
Sistema operativo
Il robot è dotato di controller IRC5 (Single Cabinet) e di software di controllo
del robot, Robotware. Il software Robotware supporta tutti gli aspetti del sistema
robotico, quali il controllo dello spostamento, lo sviluppo e l'esecuzione di
programmi applicativi.
Funzionalità aggiuntive
Per una funzionalità supplementare, il robot può essere attrezzato con software
supplementare per supporto di applicazioni: ad esempio, per incollaggio e
saldatura ad arco, e funzioni avanzate quali il multitasking, il controllo dei sensori,
etc.
Portate operative del robot
Hardware standard della cella di robot
IRC5
Calibrazione
• I dati di calibratura sono normalmente memorizzati sulla scheda di misurazione seriale SMB di ciascun
robot, indipendentemente dal fatto che sul robot venga eseguito o meno un sistema di misurazione
assoluta (che l'opzione Absolute Accuracy sia installata, AbsAcc che garantisce una precisione assoluta
del TCP migliore di ±1 mm nell'intera portata operativa) o no. Normalmente questi dati vengono
trasferiti automaticamente sul controller all'accensione del sistema: in tal caso non è richiesta alcuna
azione da parte dell'operatore.
• La scheda di misurazione seriale, SMB (Serial Measurement Board), raccoglie principalmente i dati del
resolver dai motori del robot. I dati vengono utilizzati per misurare la velocità e la posizione di ciascun
asse.
Calibrazione
Calibratura fine
• Per eseguire una calibratura fine del robot bisogna usare utilizzare i perni di calibratura e le tacche di
sincronizzazione sul robot.
• Questa calibratura può essere eseguita nei seguenti modi:
• gli assi 1, 2 e 3 contemporaneamente, tramite la FlexPendant;
• gli assi 4, 5 e 6 contemporaneamente, tramite la FlexPendant;
• ciascun asse separatamente.
Aggiornamento Contagiri
• Come eseguire una calibratura grossolana di ciascun asse del robot, vale a dire l'aggiornamento del
valore del contagiri per ciascun asse, utilizzando la FlexPendant.
Flex Pendant (TPU)
• Utilizzata per eseguire molte dei task correlati al funzionamento di un sistema robotico: esecuzione dei
programmi, movimento manuale del manipolatore, modifica di programmi, ecc.
• La FlexPendant consiste in una parte materiale ed una parte di programmi, e rappresenta un computer
completo di per sé stessa.
Flex Pendant (TPU)

• Nella finestra Operatore vengono visualizzati i messaggi dei programmi del


robot. Questo succede in genere quando il programma necessita una certa
replica da parte dell’operatore per poter continuare.
• La barra di stato visualizza informazioni importanti sullo stato del sistema,
quali la modalità operativa, lo stato MOTORS ON/OFF (motori
accesi/spenti), lo stato del programma ecc.
• Dal menu ABB è possibile aprire più viste, ma è possibile lavorare solamente
su una di queste alla volta. La barra delle applicazioni visualizza tutte le viste
aperte ed è utilizzata per passare da una vista all'altra.
• Il menu di impostazione rapida contiene impostazioni per il movimento
manuale e l'esecuzione dei programmi.
Introduzione a RobotStudio
• RobotStudio è un’applicazione del PC per la modellazione, la programmazione
offline e la simulazione di celle del robot.
• RobotStudio consente di lavorare con un controller offline, ovvero un controller
IRC5 virtuale in esecuzione locale sul PC. Tale controller offline viene anche indicato
come controller virtuale (VC).
• RobotStudio consente inoltre di lavorare con il controller IRC5 fisico reale, che
viene semplicemente indicato come controller reale.
• Quando RobotStudio viene utilizzato con controller reali, viene indicato come in
modalità online.
• Quando funziona senza essere connesso ad un controller reale, oppure se connesso
ad un controller virtuale, RobotStudio è in modalità offline.
RobotStudio per controller reali
• Creazione, installazione e manutenzione di sistemi con System Builder.
• Programmazione e modifica basate sul testo, tramite l'Editor RAPID.
• Gestione file per il controller.
• Amministrazione del Sistema di autorizzazione utente (User Authorization System,
UAS).
• Un Editor di configurazione per la modifica dei parametri del sistema in funzione;
• Un Registratore di eventi per registrare e monitorare gli eventi del robot;
• Strumenti per effettuare il back up (salvaguardia) e per recuperare i sistemi;
RobotWave
• RobotWare è un termine generico per tutto il software da installare nel
sistema robotico designato per l'azionamento del robot.
• Tuttavia, vengono fornite chiavi di licenza di RobotWare, necessarie per
accedere al software, sotto forma di stringa stampata su un foglio fornito
con il Controller Cabinet.
• Il pool di supporti è una cartella sul PC che contiene il software RobotWare.
Dal pool di supporti vengono selezionati i programmi e le opzioni durante la
generazione di sistemi.
• Se RobotWare viene installato con le opzioni predefinite sul PC, il pool di
supporti si trova nella cartella C:\Programmi\ABB Industrial IT\Robotics
IT\Mediapool
• È possibile creare pool di supporti personalizzati creando nuove cartelle in
cui copiare i file di RobotWare dai pool di supporti esistenti. È inoltre
possibile aggiornare o modificare un pool di supporti importando nuovi
componenti di RobotWare mediante lo strumento Importa sistema in
RobotStudio. In RobotStudio, viene quindi richiesto il pool di supporti da
utilizzare durante la creazione di nuovi sistemi.
Installazione e Licenza
Le categorie di RobotStudio ricadono nei seguenti due livelli di caretteristiche:
• Base - Offre funzionalità selezionate RobotStudio per configurare, programmare ed eseguire un Virtual
Controller. Comprende inoltre funzionalità online per programmare, configurare e monitorare un controller
reale connesso via Ethernet.
• Avanzato - Offre complete funzionalità RobotStudio per la programmazione offline e la simulazione di più
robot. Il livello Avanzato comprende le funzionalità del livello Base e richiede l'attivazione.
RobotStudio offre le seguenti opzioni di installazione:
• Installazione minima - Installare soltanto le caratteristiche richieste per programmare, configurare e
monitorare un controller reale connesso tramite una rete Ethernet.
• Completo - Installa tutte le funzionalità richieste per l'esecuzione completa di RobotStudio. Se installato
con questa opzione, sono disponibili funzionalità aggiuntive dei livelli Base e Avanzato.
• Personalizzato - Installa funzionalità personalizzate per l'utente. Questa opzione consente di escludere
biblioteche indesiderate per il robot e i convertitori CAD.
• RobotStudio 5.15, nell'edizione a 64 bit, è installato per l'opzione di installazione completa su computer
dotati di un sistema operativo a 64 bit. L'edizione a 64 bit consente l'importazione di modelli CAD più estesi,
dato che può indirizzare una quantità di memoria superiore a quella della versione a 32 bit.
Attivazione della licenza RobotStudio
L'attivazione della propria installazione di RobotStudio è una procedura di convalida della licenza
RobotStudio. Per poter continuare ad utilizzare il software con tutte le sue funzionalità, lo si deve attivare.
Quando si avvia RobotStudio per la prima volta dopo la sua installazione, si viene invitati a battere la propria
chiave di attivazione a 25 cifre (xxxxx-xxxxx-xxxxx-xxxxx-xxxxx). Il software funzionerà in modalità di
funzionalità di base nel caso che non sia stata immessa una chiave di attivazione valida. Una volta attivata
l'installazione, si disporrà delle licenze valide a coprire tutte le funzionalità corrispondenti alla propria
sottoscrizione.
Quando usare RobotStudio e Teach Pendant

• RobotStudio per creare la struttura del programma e la


maggior parte del codice sorgente e la FlexPendant per
memorizzare le posizioni del robot e apportare i
ritocchi finali al programma.
• Durante la programmazione, RobotStudio fornisce i
seguenti vantaggi:
• Un editor di testo ottimizzato per il codice RAPID, con testo
automatico e suggerimenti relativi a istruzioni e parametri.
• Controllo dei programmi con indicazione degli errori di
programmazione.
• Accesso approfondito alla modifica di configurazione e I/O.
• configurazione dati, la gestione del programma, la
documentazione in linea e l'accesso a distanza.
Movimentazione Manuale con Teach Pendant
• La modalità di movimento e/o il
sistema di coordinate selezionati
determinano il modo in cui viene
mosso il robot.
• Nella modalità di movimento lineare,
il punto centrale dell'utensile si
muove lungo linee rette nello spazio
nella direzione degli assi del sistema
di coordinate selezionato.
• Quale sistema di coordinate
scegliere?
• Il posizionamento di un perno su un foro
tramite una pinza può essere eseguito in
modo molto semplice nel sistema di
coordinate utensile, se una delle
coordinate in tale sistema è parallela al
foro. Utilizzare un sistema di coordinate
utensile quando è necessario
programmare o regolare le operazioni
per la filettatura, foratura, fresatura o
segatura.
• L'esecuzione dello stesso task nel
sistema di coordinate di base potrebbe
richiedere lo spostamento in tutte le
coordinate x, y e z, rendendo più difficile
garantire la precisione.
Applicazione RAPID
• La Finestra di produzione viene utilizzata per visualizzare il codice del programma in esecuzione.
• L'Editor di programma è il contesto in cui vengono creati o modificati i programmi.
• Creazione di un programma->Tasks and Programs->file (in basso) (opzioni:new program, load program, delete
program, save as …etc)
• Quando si salva un programma sul disco rigido del controller, per impostazione predefinita viene salvato nella directory
HOME della cartella di sistema se non è specificato diversamente.
• Il programma viene salvato sotto forma di cartella, con il nome del programma e il file di programma effettivo di tipo
pgf.
Applicazione RAPID
• Ciascun task contiene in genere un programma RAPID e i moduli di
sistema destinati a svolgere una determinata funzione, ad esempio
una saldatura a punti o dei movimenti del manipolatore.
• I parametri di proprietà del task impostano determinate proprietà
per tutti i contenuti del task. Qualsiasi programma memorizzato in un
determinato task assume le proprietà impostate per tale task.
• Ciascun programma contiene in genere moduli di programma con
codice RAPID per svolgere varie funzioni. Tutti i programmi devono
essere provvisti di una routine di entrata definita come eseguibile.
Ciascun modulo di programma contiene dati e routine per svolgere
una determinata funzione.
• I dati sono valori e definizioni impostate nel programma o nei moduli
di sistema. Ai dati è possibile fare riferimento tramite istruzioni
presenti nello stesso modulo o in altri
• Una routine contiene una serie di istruzioni che definiscono le
effettive operazioni svolte dal sistema robotico.
• Uno speciale tipo di routine, indicata con il termine inglese "main",
definita come il punto di partenza dell'esecuzione del programma.
• Ciascuna istruzione è una richiesta di esecuzione di un determinato
evento, ad esempio "porta il TCP del manipolatore in una certa
posizione« o "imposta un output digitale specifico".
• Ciascun modulo di sistema contiene dati e routine per svolgere una
determinata funzione. I moduli di sistema vengono generalmente
scritti dal produttore del robot o dal costruttore della linea.
Linguaggio e ambiente RAPID

Il linguaggio contiene i seguenti concetti:


• Struttura del programma gerarchica e modulare per consentire la programmazione
strutturata e il riutilizzo del codice.
• I moduli costituiscono un set di dichiarazioni di dati seguito da un set di routine. I
moduli possono essere salvati, caricati e copiati sotto forma di file.
• Le routine costituiscono un set di dichiarazioni di dati seguito da un set di istruzioni
che implementano un task. possono essere Funzioni o Procedure.
• Una procedura è un set di istruzioni che non restituisce un valore.
• Una funzione è un set di istruzioni che restituisce un valore.
• Istruzioni definite dall'utente (appaiono come parte intrinseca del sistema).
• Istruzioni di movimento composte da un riferimento a un target specificato da una
dichiarazione di dati insieme ai parametri che impostano il movimento.
• Istruzione di azione come impostazione di dati o proprietà di sincronizzazione.
• Un programma RAPID è una raccolta che comprende più file di modulo (.mod) e il
file di programma (.pgf) che fa riferimento a tutti i file di modulo.
• Tipizzazione dei dati, inclusi tipi di dati strutturati e array.
• Nomi di variabili, routine e I/O definiti dall'utente.
• Controllo esteso del flusso del programma.
• Espressioni aritmetiche e logiche
• Molte e potenti funzioni integrate, ad esempio funzioni matematiche e specifiche
del robot.
Tipi di Dati
• È possibile visualizzare una varietà dei tipi di dati
selezionando uno scopo specifico.
• Selezionare lo scopo richiesto selezionando:
• Solo dati incorporati: mostra tutti i tipi di dati utilizzati dallo specifico sistema
• Esecuzione corrente: mostra tutti i tipi di dati utilizzati nella corrente
esecuzione
• Task: mostra tutti i tipi di dati utilizzati da uno specifico task
• Modulo: mostra tutti i tipi di dati utilizzati da uno specifico modulo
• Routine: mostra tutti i tipi di dati utilizzati da una specifica routine
• Creazione di nuove istanze di dati
Selezionare il menu Scopo per impostare l'accessibilità dell'istanza di dati.
• Globale
• Locale
• Task
Selezionare il menu Tipo memoria per selezionare il tipo di memoria utilizzata
per l'istanza di dati.
• Persistente se l'istanza di dati è persistente
• Variabile se l'istanza di dati è variabile
• Costante se l'istanza di dati è costante
Selezionare il menu Modulo per selezionare il modulo.
Selezionare il menu Routine per selezionare una routine.
Se si desidera creare un array di istanze di dati, scegliere il menu Dimensione e
selezionare il numero di dimensioni nell'array, 1-3.
•1
•2
•3
• Nessuno
Quindi scegliere ... per impostare le Dimensioni degli assi dell'array.
Come inserire un nuovo utensile
• LoadIdentify può identificare il carico dell'utensile e il
carico utile. I dati che possono essere identificati sono
massa, baricentro e momenti di inerzia.
• Sono tre i diversi metodi da poter utilizzare per la
definizione del sistema di riferimento dell’utensile. Tutti e
tre i metodi richiedono la definizione delle coordinate
cartesiane del punto centrale dell'utensile. Quel che
differisce tra loro è il modo in cui si definisce
l'orientamento.
Target e Percorsi
• I target (posizioni) e i percorsi (sequenze di istruzioni di movimento verso i target) vengono utilizzati
nella programmazione dei movimenti del robot in RobotStudio.
• Un target è una coordinata che il robot dovrà raggiungere. Contiene le seguenti informazioni:
• Posizione definita in un sistema di coordinate dell’oggetto di lavoro
• Orientamento relativo all’orientamento dell’oggetto di lavoro. Quando il robot raggiunge il target allinea l’orientamento del TCP con quello
del target
• Configurazione che specifica come il robot deve raggiungere il target
• Un percorso consente al robot di spostarsi su una sequenza di target (mediante istruzioni di movimento)
• Un’istruzione di movimento è composta da
• Un riferimento a un target
• Dati di movimento (velocità e zona (punti di via))
• Un riferimento a dati utensile
• Un riferimento all’oggetto di lavoro
• Un’istruzione di azione per impostare e modificare i parametri

• Quando si sincronizza una stazione di RobotStudio con il controller virtuale


• i target vengono convertiti in istanze (linguaggio RAPID) di tipo robotarget
• I percorsi vengono convertiti in procedure
• I programmi RAPID vengono creati in base ai percorsi
Concetti di programmazione
La tabella seguente descrive la terminologia e i concetti impiegati nella
programmazione di robot.
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
ENDMODULE

Questo programma calcolerà l’area di un rettangolo, e ne visualizzerà il


valore sulla FlexPendant: The area of the rectangle is 50
• Si dichiara una variabile utilizzando la keyword VAR, secondo la sintassi:
VAR datatypeidentifier;
Esempio
VAR num length;
VAR dnum pi;
VAR string name;
VAR bool finished;
• Si attribuisce un valore ad una variabile utilizzando l’istruzione :=
length := 10;
pi := 3.141592653589793;
name := "John"
finished := TRUE;
• L’assegnazione potrà essere fatta contemporaneamente alla dichiarazione della variabile:
VAR num length := 10;
VAR dnum pi := 3.141592653589793;
VAR string name := "John";
VAR bool finished := TRUE;
• Una variabile persistente è praticamente come una variabile ordinaria, ma ricorda l’ultimo valore che le è
stato attribuito, anche se il programma subisce un arresto e un riavvio dall’inizio.
• 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;
ENDPROC
• 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. 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"
• Gli operatori numerici 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.

• In questi esempi, reg1 e reg2 sono di tipo di dati num, mentre flag1 è bool.
• Negli esempi sottostanti, le variabili reg1, reg2 e reg3 sono del tipo di dati num.
Operatori di stringhe
Controllo del flusso di programma mediante istruzioni if con condizioni logiche
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;
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
• Un altro modo di controllare il flusso del programma è quello di ripetere una
sequenza di codifica per un certo numero di volte mediante un ciclo for
• La sintassi della dichiarazione FOR è la seguente:
FOR counter FROM startvalue TO endvalue DO
program code to be repeated
ENDFOR
• 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’.
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
MoveL
Una semplice istruzione di spostamento può apparire così:
MoveL ToPoint Speed Zone Tool;

MoveL p10, v1000, fine, tool0;

MoveL è un’istruzione che sposta il robot linearmente (in linea retta) dalla sua
posizione corrente a quella specificata.
Un'istruzione di movimento è composta da:
• p10 un riferimento a un target
• dati di movimento, ad esempio, tipo di movimento, velocità e zona
• un riferimento a dati utensile
• un riferimento all'oggetto di lavoro

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.
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.
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];
VAR orient orient1;
pose1.pos := pos1;
orient1 := pose1.rot;
pose1.pos.z := 875;
robtarget
robtarget consiste in quattro parti:
Le istruzioni RAPID seguenti determineranno il percorso del robot qui sotto indicato:
MoveL p10, v1000, z50, tool0;
MoveL p20, v1000, fine, tool0;

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

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

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

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;
ENDPROC
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;
MoveL p40, v500, fine, tPen;
segnali d’I/O
I segnali vengono utilizzati per la comuncazione 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
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 sui dispositivi esterni. Il valore di un segnale digitale d’uscita viene impostato mediante l’istruzione
SetDO.
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.
Comunicare con la FlexPendant
In RAPID, sono disponibili parecchie istruzioni per la scrittura di informazioni destinate all’operatore del
robot, nonché per la ricezione di input dall’operatore.
TPWrite
La scrittura di un messaggio destinato all’operatore si può effettuare mediante l’istruzione TPWrite.
TPWrite "Now producing exhaust pipes";
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;
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
ENDIF

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
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;
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
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,
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.
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.y := p20.trans.y + 200;
p20.trans.z := p20.trans.z + 300;
Sistemi di Coordinate
• I sistemi di coordinate sono correlati dal punto di vista gerarchico. L'origine di ciascun sistema di
coordinate viene definito come una posizione in uno dei suoi progenitori.
• In RobotStudio, si possono utilizzare i sistemi di coordinate:
• Sistema di coordinate universali RobotStudio RS-WCS (RobotStudio-World Coordinate System)
• Il sistema di coordinate universali RobotStudio rappresenta l'intera stazione o cella del
robot. Questa è la cima della gerarchia alla quale fanno riferimento tutti gli altri sistemi di
coordinate (quando si utilizza RobotStudio).
• Sistema di coordinate del TCP (Tool Center Point)
• Il sistema di coordinate del TCP (Tool Center Point) è il punto centrale dell'utensile. Si
possono definire differenti TCP per un singolo robot. Tutti i robot hanno un TCP predefinito
nel punto di montaggio dell'utensile, chiamato tool0. Durante l'esecuzione di un
programma, il robot sposta il TCP verso la posizione programmata.
• Base Frame (BF)
• Il sistema di cordinate di base si chiama Base Frame (BF). Ciascun robot nella stazione, che si
tratti di RobotStudio o del mondo reale, è dotato di un sistema di coordinate di base, che è
sempre situato alla base del robot.
• Task Frame (TF)
• Il Task Frame rappresenta l'origine del sistema di coordinate universali del controller del
robot in RobotStudio.
Sistemi di Coordinate dell’oggetto di lavoro
• Sistema di coordinate dell'oggetto di lavoro
• Normalmente l'oggetto di lavoro rappresenta il pezzo di lavoro fisico. È composto da due sistemi di
coordinate: il sistema di riferimento utente e il sistema di riferimento oggetto, dove il secondo è
figlio del primo. Quando si programma un robot, tutti i target (posizioni) sono correlati al sistema di
riferimento oggetto di un oggetto di lavoro. Se non è stato specificato un altro oggetto di lavoro, i
target saranno correlati al Wobj0 predefinito, che coincide sempre con il sistema di riferimento di
base del robot.
• Nella figura seguente il sistema di coordinate grigio è il sistema di coordinate universali e quelli neri
sono il sistema di riferimento oggetto e il sistema di riferimento utente dell'oggetto di lavoro. Qui il
sistema di riferimento utente è posizionato sul tavolo/attrezzatura e il sistema di riferimento
oggetto sull'oggetto

• Sistemi di coordinate utente


• Gli UCS (sistemi di coordinate utente) vengono utilizzati per la creazione di punti di riferimento
specifici. Ad esempio, è possibile creare sistemi di riferimento utente in punti strategici dell'oggetto
di lavoro, per facilitare la programmazione.
Nell'illustrazione a sinistra, il Task Frame si trova nella stessa posizione
del Base Frame del robot. Nell'illustrazione a destra, il Task Frame è
stato spostato in un'altra posizione.
La figura seguente illustra il modo in cui un Task Frame in RobotStudio
venga mappato per il sistema di coordinate del controller del robot nel
mondo reale. Ad esempio, al suolo del cantiere.
Stazioni con sistemi di robot multipli
Quando nella stazione sono presenti parecchi controller, il Task Frame consente ai robot connessi
di operare in differenti sistemi di coordinate. Vale a dire che i robot possono essere localizzati
indipendentemente l'uno dall'altro, definendo differenti Task Frame per ogni robot.
Sistemi MultiMove Coordinated
Le funzioni MultiMove facilitano la creazione e l'ottimizzazione di programmi per i sistemi MultiMove in cui
un robot o posizionatore tiene l'oggetto di lavoro e altri robot operano su di esso. Quando si utilizza un
sistema di robot con l'opzione RobotWare MultiMove Coordinated, è importante che i robot operino nello
stesso sistema di coordinate.
Sistemi MultiMove Independent
Per un sistema di robot con l'opzione RobotWare MultiMove Independent, i robot operano contemporaneamente ed
indipendentemente, mentre sono controllati da un singolo controller. Anche se è presente un unico sistema di coordinate
universali del controller del robot, i robot spesso operano in sistemi di coordinate separati. Per consentire questa
impostazione in RobotStudio, i Task Frame per i robot possono essere separati e posizionati indipendentemente uno
dall'altro.
Configurazione degli assi del Robot
• I target vengono definiti e memorizzati come coordinate in un sistema di coordinate dell'oggetto di
lavoro. Quando il controller calcola la posizione degli assi del robot per raggiungere il target, spesso vi
sarà più di una soluzione possibile per la configurazione degli assi del robot. Per distinguere tra le varie
configurazioni, tutti i target hanno un valore di configurazione che specifica in quale quadrante potrà
essere situato ciascun asse.
• Ad ogni target deve essere assegnata una configurazione valida e verificato che il robot possa muoversi
lungo ciascun percorso. È anche possibile disattivare il monitoraggio della configurazione in modo da
ignorare le configurazioni memorizzate e consentire che il robot trovi quelle funzionanti in fase di
runtime. Se questo non viene svolto nel modo corretto, si potrebbero ottenere risultati inaspettati.
• In alcuni casi, potrebbe non essere disponibile alcuna configurazione funzionante. Le soluzioni possibili
possono essere quindi il riposizionamento del pezzo di lavoro, il riorientamento dei target, se accettabile
nel processo, o l'aggiunta di un asse esterno che sposti il pezzo di lavoro o aumenti la raggiungibilità del
robot.
Interfaccia Utente
• Il visualizzatore layout offre una visualizzazione gerarchica degli
oggetti fisici, ad esempio robot e utensili.
• Il visualizzatore Percorsi & Target offre una visualizzazione
gerarchica degli oggetti non fisici.
• Il visualizzatore Modellazione mostra tutti gli oggetti che è
possibile modificare e i relativi elementi costitutivi.
• Il visualizzatore Controller offrono una visualizzazione
gerarchica del controller ed elementi di configurazione nella
scheda Controller.
• Il visualizzatore File nella scheda RAPID consente di gestire i file
RAPID e i backup di sistema. Utilizzando il visualizzatore File è
possibile accedere e modificare i moduli RAPID autonomi e i file
dei parametri di sistema non presenti nella memoria del
controller.
• Il visualizzatore Add-In mostra PowerPacs, gli add-in generali e
gli add-in VSTA installati, se disponibili, nei loro rispettivi nodi.
• La finestra output visualizza informazioni sugli eventi che si
verificano nella stazione, ad esempio l'avvio o l'interruzione
delle simulazioni. Queste informazioni sono utili durante la
risoluzione di problemi occorsi sulle stazioni.
• La finestra Stato controller visualizza lo stato operativo dei
controller presenti nella vista robot.
• Finestra Operatore rappresenta un'alternativa alla
corrispondente funzionalità della Virtual FlexPendant per le
comunicazioni con l'utente durante l'esecuzione del programma
RAPID. Essa visualizza la stessa uscita della finestra Operatore
della
• Virtual FlexPendant. Durante l’esecuzione del Virtual Controller,
il programma RAPID comunica con l’operatore tramite messaggi
inviati sullo schermo FlexPendant. L’operatore Window integra
questa funzionalità e permette all’utente di eseguire i
programmi interattivi RAPID senza avviare la Virtual
FlexPendant.
Creazione di una Stazione di Lavoro
• Importazione di un modello di robot
• Con il pulsante Sistema robotico, è possibile creare un sistema da un profilo o da un modello,
scegliere un sistema esistente, oppure selezionare un sistema dalla galleria dei robot.
• Importazione di un utensile, di un posizionatore, di un binario e altre apparecchiature
• Sposta mediante il comando posiziona
• Collega utensile->allega a
• Crea oggetto
• Sposta ->imposta la posizione e seleziona un sistema di coordinate
• Imposta sistema di riferimento oggetto->imposta origine locale
• Sincronizzazione a un controller virtuale
• Set di collisione
• Per configurare una simulazione, è necessario che siano soddisfatte le seguenti
• condizioni:
• Nella stazione deve essere stato creato almeno un percorso.
• I percorsi da simulare devono essere sincronizzati sul controller virtuale.

Librerie e Geometrie CAD
Per la programmazione o simulazione in RobotStudio, sono necessari modelli dei pezzi di lavoro e dell'apparecchiatura. I modelli di alcune
apparecchiature standard sono installati come librerie o come geometrie con RobotStudio. Se si dispone di modelli CAD dei pezzi di lavoro
e dell'apparecchiatura personalizzata, è possibile importarli come geometrie in RobotStudio. Se non si dispone di suddetti modelli CAD,
questi possono essere creati con RobotStudio.
Il formato 3D nativo di RobotStudio è l'ACIS. RobotStudio è anche compatibile con altri formati, per cui sarà necessaria un'opzione
specifica. La tavola seguente mostra i formati compatibili e le opzioni corrispondenti:
ADD-IN VSTA come IDE

• RobotStudio adopera Microsoft Visual Studio


Tools for Applications (VSTA) come ambiente
integrato di sviluppo (IDE), per consentire agli
utenti esperti di ampliare e personalizzare la sua
funzionalità.
• È possibile, ad esempio, scrivere un add-in su C#
o VB.Net per creare una barra degli strumenti o
un macro, un codice di debug oppure controllare i
valori della variabile durante l’esecuzione.
Impiego online
• Collegamento di un PC alla porta di servizio
• Nella figura seguente sono illustrate le due porte principali presenti sul gruppo computer: la porta di servizio e la porta LAN.

• Utilizzare il cavo Ethernet incrociato di categoria 5 con connettori RJ45 fornito in dotazione.
• Collegare il cavo di rete alla porta di rete del PC.
• Collegare il cavo di avvio alla porta di servizio del gruppo computer.
• La porta di servizio del controller è provvista di un server DHCP che consente di assegnare automaticamente un indirizzo IP al PC se
questo è configurato in modo appropriato.
• Il PC deve essere impostato su "Ottieni automaticamente un indirizzo IP.
• Per la connessione tramite un indirizzo IP fisso utilizzare le seguenti impostazioni:

Connessione al Controller
Assicurarsi che il PC sia connesso alla porta di servizio del controller e che il controller sia in esecuzione.
• Nel menu File, puntare su Online, quindi fare clic su Connessione mediante un solo clic.
• Fare clic su Aggiungi controller
• Fare clic su Richiedi accesso in scrittura.

Autorizzazioni dell’utente
• L'autorizzazione degli utenti viene gestita dal controller mediante il Sistema di autorizzazione degli utenti (UAS,
User Authorization System) del controller.
• Le impostazioni UAS rimangono nel controller indipendentemente dal sistema in esecuzione. Questo significa
anche che le impostazioni UAS vengono applicate a tutti gli strumenti per comunicare con il controller, quali
RobotStudio o la FlexPendant.
• Le impostazioni UAS definiscono gli utenti e i gruppi che possono accedere al controller, e le operazioni che
questi sono autorizzati a svolgere.
• In UAS gli utenti sono considerati sotto forma di account, tramite i quali le persone accedono al controller.
Inoltre, gli utenti vengono aggiunti a gruppi ai quali vengono assegnate autorizzazioni di accesso.
• Gli utenti vengono definiti nel controller tramite un nome utente e una password. Per accedere a un controller,
l'utente deve digitare un nome utente che è stato definito e una password corretta.
• Tutti i controller dispongono di un utente predefinito denominato Utente predefinito ed una password nota
pubblicamente: robotics. L'Utente predefinito non può essere rimosso, né la sua password potrà essere
modificata.
• Tutti i controller dispongono di un gruppo predefinito di nome Default Group, al quale vengono fornite tutte le
autorizzazioni e al quale appartiene l'utente predefinito Default User. Questo gruppo non può essere rimosso,
ma può essere modificato dall'utente che dispone dell'autorizzazione Gestione impostazioni UAS.
System Builder
• Un sistema è il software che viene eseguito su un controller. È composto da parti di RobotWare
specifiche per i robot collegati al controller, file di configurazione e programmi RAPID.
• I parametri di sistema descrivono la configurazione del sistema (relativa ai vari argomenti: protocolli di
comunicazione internet, canali seriali e dei protocolli di trasferimento file del controller, trasmissione dei
dati, parametri per la sicurezza e funzioni specifiche rapid, parametri per le schede e i segnali di I/O,
parametri associati al controllo dei movimenti) robotico e sono impostati conformemente all'ordine al
momento della consegna.
• Il SystemBuilder è lo strumento per la creazione, la modifica e la manutenzione di sistemi. Si può
utilizzare il SystemBuilder anche per scaricare i sistemi dal PC al controller.
• Il sistema che viene eseguito sui controller virtuali può essere un sistema reale basato su chiavi
RobotWare reali o un sistema virtuale basato su chiavi virtuali.
• Quando si utilizzano sistemi reali, le chiavi RobotWare definiscono quali opzioni e modelli di robot
dovranno essere utilizzati, agevolando così la configurazione corretta del sistema. I sistemi reali possono
essere eseguiti su controller virtuali e controller IRC5 reali.
• Quando si utilizzano chiavi virtuali, sono disponibili tutte le opzioni e i modelli di robot; ciò è utile a fini
di valutazione, ma richiede un maggior lavoro di configurazione quando si crea il sistema. I sistemi basati
su chiavi virtuali possono essere eseguiti solo su controller virtuali.
• Per creare un sistema da utilizzare su un controller reale, è necessario disporre di una relativa chiave RobotWare. La
chiave RobotWare è una chiave di licenza che determina quali modelli di robot utilizzare e quali opzioni di RobotWare
eseguire nel controller. La chiave di licenza viene consegnata con il controller.
• Se si desidera creare un sistema da impiegare solo in modo virtuale, è possibile utilizzare invece una
chiave virtuale. Le chiavi virtuali vengono generate dalla procedura guidata. Quando si utilizzano chiavi
virtuali, i modelli di robot e le opzioni da utilizzare vengono selezionati nella sezione Modifica opzioni
della procedura guidata.
• Per scaricare su un controller reale, si richiede la connessione diretta tra computer e porta di servizio o
Ethernet del controller.