Sei sulla pagina 1di 13

Comau Smart NS 12-1.

85: una breve introduzione


Ivan Lazzero

1 Introduzione
Il presente mini-manuale ha lo scopo di introdurre lo studente ad un primo utilizzo
del Robot industriale Smart NS 12-1.85 presente presso il Ladispe - sez. Automa-
tica del Politecnico di Torino. Il secondo capitolo, dopo una descrizione generale
del sistema, contiene una analisi più dettagliata delle parti. Nel terzo capitolo sarà
descritto il linguaggio di programmazione utilizzato dal controllore. Si precisa che
in questo contesto, anche se di notevole importanza, le problematiche relative alla
sicurezza non verranno trattate.

Figura 1: Comau NS 12-1.85

1
2 Descrizione del sistema
Il robot Smart NS 12, costruito dalla Comau S.p.A., è un robot destinato a scopi
tipicamente industriali. Il suo utilizzo è specifico per lavorazioni in celle industriali,
linee di montaggio, etc. Dalla Comau esso viene fornito pronto all’uso, ovvero
completo del controllore esterno C4G. Tale controllore contiene gli azionamenti
elettrici, l’hardware e il software necessario alla programmazione e movimentazione
del robot, il Teach Pendant Wifi (d’ora in poi WiTP), ovvero l’interfaccia con
l’utente, e ovviamente l’algoritmo di controllo (di posizione) del robot. Il WiTP
permette di impostare le variabili di sistema, di creare, visualizzare e debuggare
programmi, di visualizzare gli output del robot (misurati da appositi sensori) e in
generale di effettuare ogni tipo di operazione prevista per il robot. Vi è inoltre
la possibilità di collegare il controllore ad un PC, tramite collegamento ethernet.
In tal modo il computer acquisisce (quasi) tutte le funzionalità del WiTP, con il
vantaggio di avere una tastiera e uno schermo più comodi da usare!

2.1 Il robot
Si tratta di un robot antropomorfo a 6 gradi di libertà. I sei giunti, tutti rotoidali,
possono essere divisi in due gruppi: i primi tre rappresentano la spalla, i secondi
tre il polso. Alla flangia, ovvero la parte terminale del braccio, può essere attaccato
qualunque attrezzo per i vari tipi di lavorazione. In questo caso, a scopo puramente
didattico, è stato attaccato un sistema di riferimento, su cui si ritornerà in seguito.
Il fissaggio a terra è realizzato mediante una piastra in acciaio fissata munita di
tasselli oppure è disponibile un gruppo opzionale composto da una piastra fissata
al robot tramite viti e da quattro piastre sottostanti ancorate a terra tramite
tasselli che vengono saldati alla piastra stessa. La piastra consente il livellamento
del robot tramite quattro viti. La base del robot è fissa e su essa ruota attorno
all’asse verticale (asse 1), la colonna che porta il motoriduttore dell’asse 2. Un
braccio collega l’asse 2 all’avambraccio ed include i motoriduttori degli assi 3-4-5-6;
all’estremità dell’avambraccio si trova il polso. Gli assi dei robot sono dotati di fine
corsa software (programmabili) e meccanici ammortizzati in fornitura standard.

2.2 Il controllore
Come già accennato, l’algoritmo di controllo realizza un controllo di posizione.
Questo vuol dire che non sarà possibile avere un’interazione o contatto del robot
con l’ambiente, ma solo un posizionamento della punta operativa nello spazio libe-
ro. Il compito dell’utente sarà quindi quello di fornire in qualche modo i punti finali
per ogni movimento. Sul controllore è installato il software, creato appositamen-
te dal costruttore, per permettere la creazione dei vari programmi di movimento.

2
Il linguaggio di programmazione, il PDL2, è simile al Pascal, con, ovviamente,
opportune modifiche. Nel prossimo capitolo sarà descritto tale linguaggio. In ge-
nerale è possibile creare, debuggare ed eseguire un programma PDL2 direttamente
sul WiTP, anche se tale operazione risulta molto laboriosa, data la limitatezza
della tastiera. Utilizzando invece il collegamento ethernet con un PC, tale lavoro
si semplifica molto, avendo l’utente disponibili gli stessi tool presenti sul WiTP. È
possibile inoltre creare un programma direttamente sul PC, con un normale edi-
tor di testo, e scaricarlo in seguito sul controllore, sempre tramite collegamento
ethernet, per poi compilarlo ed eseguirlo. È possibile anche editare un program-
ma e compilarlo direttamente sul PC, utilizzando l’apposito software WinC4G, e
scaricare solo il file eseguibile. C’è da notare che nella creazione di un program-
ma direttamente sul controllore, l’editor fornisce una correzione della sintassi linea
per linea, in modo da avere un programma sintatticamente corretto, ancora prima
di compilarlo. Il pannello del controllore presenta gli interruttori indicati in fig.
2. In particolare il selettore modale (E) consente di operare in diverse modalità,
selezionabili tramite l’apposita chiave, tra cui:

• La posizione PROG è utilizzata per la programmazione del robot, ovvero per


movimenti manuali, creazione dei programmi di movimento e debug. Ogni
movimento in questa modalità avviene a velocità ridotta.
• La posizione AUTO LOCAL è utilizzata per l’esecuzione in automatico
di programmi funzionanti, con possibilità di debug e piccole modifiche del
programma.

2.3 WiTP
Tasto COORD seleziona il sistema di riferimento:
JOINT modalità giunti. I tasti risultano associati a ciascuno degli assi del
braccio selezionato; gli assi ausiliari, eventualmente presenti, seguono
quelli del braccio. La pressione di uno dei tasti determina lo spostamen-
to del corrispondente asse nella direzione positiva o negativa secondo le
direzioni indicate dalle targhette poste sul braccio.
UFRAME modalità di spostamento lineare secondo la terna di riferimento
x, y, z dell’utente (ad esempio la terna che descrive il pezzo in lavora-
zione). I primi tre tasti consentono spostamenti di tipo lineare nella
direzione dei tre assi del sistema di riferimento utente (definito dalla
variabile $UFRAME); i successivi tre tasti consentono rotazioni dell’at-
trezzo intorno agli stessi assi mantenendo invariata la posizione della
punta operativa (Tool Center Point - TCP).

3
Figura 2: Controllore C4G

BASE modalità di spostamento lineare secondo la terna di riferimento x,


y, z del mondo (la terna di riferimento dell’officina). I primi tre tasti
consentono spostamenti di tipo lineare nella direzione dei tre assi del
sistema di riferimento mondo; i successivi tre tasti consentono rotazioni
dell’attrezzo intorno agli stessi assi mantenendo invariata la posizione
del TCP. Si ricordi che la terna mondo non è definita direttamente
da alcuna variabile di sistema; infatti è la base del robot che viene
rappresentata rispetto al mondo mediante la variabile $BASE.
TOOL modalità di spostamento lineare secondo la terna di riferimento x, y,
z dell’utensile (o terna TCP). I primi tre tasti consentono spostamenti di
tipo lineare nella direzione dei tre assi del sistema di riferimento dell’u-

4
Figura 3: Vista anteriore del controllore WiTP

tensile (definito dalla variabile $TOOL); i successivi tre tasti consentono


rotazioni dell’attrezzo intorno agli stessi assi mantenendo invariata la
posizione del TCP (punto di lavoro dell’utensile).

Tasti +% e -% servono per modificare l’OVERRIDE ovverosia per modulare


percentualmente la velocità del braccio. Combinati con il tasto SHIFT, per-
mettono di ottenere i seguenti valori: SHIFT -% → 25% SHIFT +% →
100%

Tasto START (verde) in stato PROGR consente l’esecuzione del movimento


(da ambiente di editing/debug o da comando Execute) per tutto il tempo
in cui viene mantenuto premuto. In stato LOCAL avvia i programmi di
movimento che si trovano nello stato READY, cioè in attesa di questo tasto.

Tasto HOLD (giallo) la pressione di questo tasto arresta tutti i programmi


HOLDable ed il movimento per tutti i bracci. Alla successiva pressione,
lo stato di HOLD viene rimosso.

5
Figura 4: Vista posteriore del controllore WiTP

Tasto di abilitazione Il pulsante di destra ed il pulsante di sinistra funzionano


in modo assolutamente identico. Lo scopo è quello di avere un pulsante di
Enabling Device per gli operatori destri ed uno per gli operatori mancini.
Ognuno di essi è un dispositivo di sicurezza a tre posizioni che deve esse-
re tenuto premuto nella posizione intermedia, per permettere movimenti in
automatico o in manuale, quando il sistema è in stato di Programmazione.
Quando questo pulsante è premuto i motori sono attivati automaticamente
(DRIVE ON)
Il tipo di funzionamento, per ognuno di essi è il seguente:

1. rilasciato - DRIVE OFF


2. pressione intermedia - DRIVE ON
3. pressione a fondo - DRIVE OFF (antipanico)

La pressione contemporanea di questi due pulsanti è considerata un errore


da parte del sistema, quindi è necessario utilizzarne uno solo per volta.

6
Figura 5: Schema di pressione dei tasti di abilitazione

3 Programma WinC4G
Il programma WinC4G è l’interfaccia stile Windows su PC verso l’Unità di Con-
trollo. Il programma fornito di serie con l’Unità di Controllo è la versione base.
Il collegamento tra il PC e il controllore avviene tramite una connessione TCP
su ethernet.
Raggruppa al suo interno una serie di funzionalità quali:

• La visualizzazione dei files presenti sul Robot

• La possibilità di tradurli ed editarli

• La ricerca e la visualizzazione degli errori

• La possibilità di aprire una finestra “Terminale” per inoltrare comandi di-


rettamente all’Unità di Controllo

• La trasformazione di programmi già esistenti in funzione di nuovi punti di


riferimento.

7
4 Il linguaggio PDL2
Per creare nuovi programmi con il WiTP è necessario eseguire i seguenti passaggi:

1. Controllare che il selettore sul C4G sia sulla modalità manuale PROG

2. Selezionare la finestra Prog (L3)(tastiera virtuale sulla sinistra dello schermo


del WiTP)

3. Selezionare il menù Prog (F1) → Crea

4. Inserire il nome del programma e premere ok

5. Selezionare tramite le frecce il programma creato e premendo il tasto blu


ENTER portare il manipolatore nella posa di interesse

6. Premere il tasto REC: compare cosı̀ l’istruzione di MOVE TO posxxxx nella


finestra di editor del programma nome programma.cod. I dati della po-
sa vengono registrati nel file nome programma.var associato al programma
nome programma.cod che state editando.
E’ possibile impostare il tipo di movimento che si vuole registrare effettuando
le seguenti operazioni:

(a) premere Selezione (F4)


(b) Selezionare Impostazioni tasto REC
(c) Utilizzare le frecce per scorrere tra e nei menù a tendina che compaiono
(d) Premere OK

7. Continuare fino alla fine del programma.

8. Per salvare premere il tasto Prog → Salva

9. Impostare il selettore del C4G su AUTO LOCAL

10. Premere Drive ON(R5)

11. Selezionare la finestra Prog (L3)

12. Selezionare il programma creato

13. Premere Esecuzione(F2) → Attiva

14. Premere START

8
ATTENZIONE!!!!!
Se il programma funziona, esso può essere eseguito ad una qualunque velocità.
Prima bisogna essere sicuri che funzioni correttamente, per cui si consiglia di ri-
durre la velocità di esecuzione a circa il 20% della velocità massima almeno per la
prima volta. La regolazione della velocità avviene con i tasti “+% -%” osservando
il valore modificato sulla barra di stato, in alto sullo schermo.

4.1 I sistemi di riferimento


Prima di passare a descrivere la struttura di un programma, occorre soffermarsi
sui vettori ed i sistemi di riferimento utilizzati dal PDL2. Un vettore nello spazio
dei giunti rappresenta ovviamente le posizioni angolari di ciascuno dei 6 giunti. I
sistemi di riferimento cartesiani sono invece 3. Il primo, indicato con $BASE è il
sistema di riferimento fisso alla base del robot. Il secondo, indicato con $TOOL,
coincide con l’attrezzo alla punta. Poiché l’attrezzo può cambiare, anche la variabi-
le $TOOL può essere modificata di conseguenza. Il terzo, indicato con $UFRAME,
è il sistema di riferimento del piano di lavorazione. Per default coincide con $BA-
SE, ma può essere spostato a piacimento. Il sistema $TOOL è specificato rispetto
al sistema di riferimento del braccio 6, ovvero rispetto alla flangia del robot, men-
tre il sistema di riferimento $UFRAME è specificato rispetto a $BASE. Come
detto in precedenza, l’attrezzo attualmente montato sulla flangia è un sistema di
riferimento ed è quindi “ragionevole” assegnare alla variabile $TOOL proprio tale
sistema di riferimento. La variabile $TOOL dovrà contenere la posizione (x, y, z)
dell’origine del sistema di riferimento e la terna di angoli di Eulero (z - y - z) che
ne definiscono l’orientamento rispetto al sistema di riferimento del braccio 6.
L’immagine 6 è la rappresentazione grafica, presente sul manuale Comau del
robot, dei tre sistemi di riferimento: Il sistema di riferimento indicato col numero
5 è il riferimento $BASE; esso è per convenzione centrato all’ancoraggio del pavi-
mento e l’asse Z è l’asse di rotazione del primo giunto. Il sistema di riferimento
6 è il sistema di riferimento del mondo e coincide per definizione con il sistema
$BASE. Il sistema di riferimento 4 è $UFRAME ed è il sistema di riferimento del
piano di lavoro. Il sistema di riferimento 1 è il riferimento alla flangia solidale con
l’ultimo braccio del robot e presenta l’asse Z uscente dalla flangia, diretto lungo
l’ase di rotazione dell’ultimo giunto, secondo quanto previsto dalle convenzioni di
Denavit-Hartenberg. Infine il sistema di riferimento 2 è il sistema di riferimento
alla punta operativa e rappresenta quindi $TOOL; l’asse Z per questo sistema di
riferimento è diretto lungo la direzione di approccio della punta.

9
Figura 6: Terne di riferimento

5 Il programma
La struttura generale di un programma PDL2 è la seguente:

PROGRAM prog_name
< dichiarazione variabili >
BEGIN < CYCLE >
< corpo del programma >
END


Listing 1: Struttura di un programma PDL


< dichiarazione variabili > contiene la dichiarazione delle variabili secondo la
seguente sintassi:

VAR var_name : < identificatore >


dove il campo identificatore può essere uno fra:

• INTEGER: numero intero

• REAL : numero reale

• BOOLEAN : variabile booleana

10
• POSITION : variabile di posizione cartesiana
• JOINTPOS : variabile di posizione giunto
• ecc...
NOTA: Le variabili POSITION sono variabili di posizione cartesiana espresse
nel sistema di riferimento $UFRAME. È bene quindi definire tale sistema di riferi-
mento quando si intende utilizzare questo tipo di variabili. Se non è definito verrà
utilizzato quello presente in memoria. Una variabile POSITION contiene quindi
la posizione cartesiana (x, y, z) e la terna di angoli di Eulero (z - y - z) che ne
definiscono l’orientamento, rispetto al sistema di riferimento $UFRAME.
L’opzione CYCLE di BEGIN, se presente, indica che il programma dovrà essere
eseguito ciclicamente.
Nel corpo del programma sono presenti, oltre alle varie inizializzazioni e settaggi
di variabili, le funzioni per il movimento del robot. La funzione principale per il
movimento è la MOVE.

5.0.1 La funzione MOVE


Poiché è possibile eseguire solo movimenti di tipo punto-punto, per ogni movimen-
to, e quindi per ogni MOVE, occorre specificare sempre il punto di arrivo e il tipo
di traiettoria da seguire per raggiungere tale punto.
È inoltre possibile specificare la traiettoria da seguire durante il movimento.
In generale la sintassi per il comando MOVE è la seguente:

MOVE < traiettoria > < destinazione > < opzioni >


Esistono tre tipi di traiettorie:


• JOINT Il movimento dei giunti è coordinato, ovvero tutti i giunti iniziano e
terminano il loro movimento contemporaneamente. Questo implica che non
è controllato il movimento del TOOL ma quello dei giunti. Il TOOL quindi
seguirà una traiettoria non prevedibile, sebbene ripetibile.
• LINEAR Il movimento è lineare nello spazio cartesiano, sia in posizione che
in assetto, ovvero il TOOL eseguirà un movimento lungo una linea retta
e l’assetto varierà linearmente tra inizio e fine. In questo caso i giunti si
muoveranno non-linearmente.
• CIRCULAR Il movimento tra inizio e fine è lungo un arco di circonferenza.
È necessario quindi specificare un terzo punto, detto punto di VIA, dal quale
dovrà passare il TOOL. Questo tipo di traiettoria non consente di specificare
il punto finale di arrivo in uno dei tanti modi disponibili, ma solo nel seguente
modo:

11

MOVE CIRCULAR TO P1 VIA P2


In ogni tipo di traiettoria, la legge temporale del movimento è sempre di tipo


“trapezoidale in velocità”.
Se in una istruzione MOVE la traiettoria è omessa, viene seguita quella di
default (JOINT). Segue ora un elenco di modi per specificare il punto finale di un
movimento. Questi modi si applicano alle traiettorie di tipo JOINT e LINEAR.

• MOVE TO {α1, α2, α3, α4, α5, α6}


si muove alla posizione giunti 0 α1, α2, α3, α4, α5, α60 I valori α sono angoli in
gradi.

• MOVE TO POS (x, y, z, e1, e2, e3)


si muove alla posizione cartesiana x, y , z con assetto e1 , e2 , e3.

• MOVE BY{α1, α2, α3, α4, α5, α6}


Si muove nella posizione giunti {α1, α2, α3, α4, α5, α6} relativa a quella cor-
rente, ovvero l’ i-esimo giunto incrementa la sua posizione attuale di α
gradi.

• MOVE NEAR PO BY dist


Si muove verso la posizione PO, ma si ferma dist millimetri rispetto l’asse -z
del TOOL dalla posizione PO.

• MOVE AWAY dist


Si muove via dalla posizione attuale di dist millimetri lungo l’asse -z del
TOOL .

• MOVE RELATIVE VEC(x, y, z) IN BASE


Si muove di un vettore VEC (x, y , z) dalla posizione corrente. Il vettore
è espresso nel sistema di riferimento BASE. Al posto di BASE può esserci
TOOL, o UFRAME.

• MOVE ABOUT VEC(x, y, z) BY a IN TOOL


La punta ruota attorno al vettore VEC (x, y , z) di una quantità in gradi. Il
vettore è espresso nel sistema di riferimento TOOL. Al posto di TOOL, può
esserci BASE o UFRAME.

• MOVE FOR dist to PO


Si muove verso PO ma si ferma dopo aver percorso dist mm lungo la traiet-
toria.

12
In alternativa alla funzione MOVE vi è la funzione MOVEFLY ... ADVANCE che
ha la stessa sintassi della MOVE, ma con l’aggiunta dell’opzione ADVANCE. Que-
sta funzione fa sı̀ che il movimento non si fermi al raggiungimento del punto finale
ma venga raccordato’ al movimento successivo, ottenendo quindi un movimento
continuo.

5.0.2 Esempio di programma PDL2



PROGRAM test
-- Questa e ’ una linea di commento
VAR p0 : POSITION -- Variabile di posizione cartesiana
j0 : JOINTPOS -- Variabile di posizione giunti
i , j : INTEGER -- Variabili intere
BEGIN
-- dichiarazione del sistema di riferimento UserFrame
$UFRAME := POS (0 , 0 , 0 , 0 , 0 , 0 , ’ ’)

-- dichiarazione del sistema di riferimento TooL


-- posizione (0 ,0 ,120) in mm e assetto (63.64 ,0 ,0) in gradi
$TOOL := POS (0 , 0 , 120 , 63.64 , 0 , 0 , ’ ’)
$PROG_ACC_OVR := 80 -- Settaggio Accelerazione massima al 80\%
$PROG_DEC_OVR := 70 -- Settaggio Decelerazione massima al 70\%
$PROG_SPD_OVR := 100 -- Settaggio Velocita ’ massima al 100\%

MOVE TO $CAL_SYS -- move verso la posizione di home

DELAY 1000 -- Attesa 1000 ms

-- Assegnazione variabile cartesiana pO Posizione (900 ,0 ,1350) in


mm e assetto del TOOL ( -45 ,90 , -90) in gradi
p0 := POS (900 , 0 , 1350 , -45 , 90 , -90 , ’ ’)
FOR i := 1 TO 6 DO -- ciclo for
j0 [ i ] : = 0 -- istruzione del ciclo
ENDFOR -- fine ciclo for

MOVE JOINT TO p0 -- Movimento di tipo JOINT verso la posizione p0


p0 . Y := 100 -- Modifica componente Y della posizione p0
MOVE LINEAR TO p0 -- Movimento di tipo LINEAR verso la nuova P0
j := 4 -- Assegnazione variabile intera j
j0 [ j ] := 30 -- Cambiamento della quarta componente del vettore j0
MOVE BY { , , ,30} -- Movimento di tipo JOINT del solo giunto 4 di
+30 gradi
MOVE TO j0 -- Movimento di tipo JOINT verso la posizione giunti j0
MOVE TO $CAL_SYS -- Ritorno alla posizione di home
END test -- fine del programma


Listing 2: Struttura di un programma PDL

13

Potrebbero piacerti anche