Università Degli Studi di Napoli “ Federico II”
Tesi di Laurea
In
Ingegneria e Tecnologia dei Sistemi di Controllo
CONTROLLO “PC-BASED”
DI UNA CELLA ROBOTIZZATA
Relatore:
Ch.mo Prof.
Pasquale Chiacchio
Candidato:
Pasquale Di Lorenzo
Mat. 41/2253
Giugno 2004
PC-Based Control
Personal Computer
+
Real-Time Operative System
Platform for
User Interface
PC-Based Control
Working Place
PC
Developing
Environment
Platform for
Real-Time-Tasks
La Cella Robotizzata
Nastro Trasportatore
Pinza 0
Robot Smart 3S
6 assi
C3G-9000
Apparecchiature :
•
Robot Smart 3S/C3G-9000
•
Pinze Pneumatiche
•
Nastro Trasportatore
•
PC-Linux-RTAI
•
Schede di Comunicazione
Pinza 1
Robot Smart 3S
7 assi
ISA Bit3
C3G-9000
Smartlab I/O
PC-Control
Linux-RTAI
Comunicazione Robot
REPLICS
• gestire e/o simulare contemporaneamente ed indipendentemente i robot
industriali COMAU Smart-3S e le unità di controllo aperte C3G-9000;
• monitorare, salvare su disco e graficare in tempo reale le posizioni, le
correnti e le forze;
• eseguire moduli e file di script RPL per la comunicazione con i Robot;
• avere una vista 3D dei robot in tempo reale;
• trasmettere dati attraverso le porte seriali e parallele;
• controllare il tutto da una postazione remota;
Comunicazione Nastro/Pinze
Smartlab I/O
Features :
 16 relay output channels
 16 input channels
 Response time for relay: 1 ms minimum
 Port address selectable
Linux-RTAI
RTHAL
SOPLICS – Architettura
(SOftware Plc under LInux Control System)
Parte NON REAL-TIME
SUPERVISIONE
Pannello di Comando
(Start-Stop Resume-Suspend)
FIFO 0
Quadro
Sinottico
Monitor
Gestione
Modulo Utente
FIFO 2
FIFO 1
Parte REAL-TIME
Device Driver
RTF Handler
Robot Smart 3S
MAILBOX
PLC-Manager
MAILBOX
(Replics)
thre ad 0
MAILBOX
thre ad 1
Modulo
Utente
Smartlab I/O
(nastro e pinze)
MAILBOX
MEMORIA CONDIVISA
Modulo Principale
P a r t e D ic h ia r a t iv a
TASK-Real-Time
Puntatori a funzioni e variabili condivise
MailBox - FIFO
....
F u n z io n i d i s u p p o r t o
addr_mbx
splc_print
suspend_system
errore_handler
init_driver
event_handler
resume_system
rtf_in_handler
read_input_sml
write_output_sml
read_input_rpl
write_output_rpl
plc_manager
read_input_rpl
l e g g e g l i i n g r e s s i read_input_sml
r ic h ia m a la f u n z io n e d i c o n t r o llo
c h e c k e v e n t i a s i n c r o n i event_handler
a g g io r n a le u s c it e
init_module
Alloca la memoria necessaria
inizializza il timer
write_output_sml
write_output_rpl
cleanup_module
Dealloca la memoria e rimuove
i task
Modulo Robot
P a r t e D ic h ia r a t iv a
Puntatori a funzioni e variabili condivise
MBX
....
t h r e a d 0 - robot6assi
t h r e a d 1 - robot7assi
attesa sulla mailbox
SI
attesa sulla mailbox
messaggio
ricevuto
messaggio
ricevuto
esecuzione dell'azione
corrispondente al comando
esecuzione dell'azione
corrispondente al comando
comando
eseguito con
successo
comando
eseguito con
successo
NO
ERRORE!
arresto del sistema
init_module
Alloca la memoria necessaria e
collega i puntatori alle funzioni
SI
NO
ERRORE!
arresto del sistema
cleanup_module
Dealloca la memoria
Modulo Smartlab
P a r t e D ic h ia r a t iv a
Puntatori a funzioni e variabili condivise
MBX
....
m b x _ h a n d le r
attesa sulla mailbox
messaggio
ricevuto
vengono scritte o lette le
porte di I/O
SI
Operazione di
I/O eseguita
con successo
NO
ERRORE!
arresto del sistema
init_module
cleanup_module
Alloca la memoria necessaria e
collega i puntatori alle funzioni
Dealloca la memoria
Modulo Utente
#define TIMER_ON
#define ROBOT_ON
#define EVENT1_ON
#define EVENT2_ON
#define EVENT3_ON
#include <splc_ctrlmod.h>
int scan_loop()
{
...
}
static void event1_fun(int e)
{
....
}
static void event2_fun(int e)
{
....
}
static void event3_fun(int e)
{
....
}
Macro e Funzioni
Fasi e Transizioni :
X(1)=1;
if (X(1)) { … azione … }
CLEAR_TR;
TR(1)=1;
Funzioni Temporali:
reset_timer(1):
load_timer(1,5*SECs);
If (!timer(1)) { … azione …}
Input Smartlab:
Output Smartlab :
if (FD3) { …azione …}
if (SMA_1) { …azione …}
………
Input Robot:
if(IS_DRIVE_ON(1)) { …azione … }
if(IS_POS_OK(i)) { …azione … }
……
Supervisione :
NEUTRO ‘N’ ; VERDE ‘V’
GRIGIO ‘G’ ; BIANCO ‘B’
NO_PEZ ‘X’ ;
IN_MOV ; P1 ; P2 ; SUL_NASTRO
START ; STOP
..….
AVA=1;
OPEN_PINCER_0=1;
…….
Output Robot :
DRIVE_ON(0);
set_pos(rob_pos,0);
MOVE_TO(0);
…..
Interfaccia Grafica 1/2
Configurazione
Interfaccia Grafica 2/2
Quadro
Sinottico
Esempio Modulo Utente
0
Tr0
START
1
resetta il contatore viti;
setta il colore neutro per il pezzo;
FD1
Tr1
2
Tr2
motore nastro in avanti
KMA
3
FD4
Tr3
ferma il nastro;
setta colore pezzo;
4
Tr4
FD4
#define EVENT1_ON
#include <splc_ctrlmod.h>
static int c=0; // contatore numero viti
static int fronte_di_salita(unsigned int in)
{
static int just1=0;
if(in) {
if(!(just1)) { just1=1; return 1; }
else
return 0;
} else {
just1=0; return 0;
}
}
int scan_loop()
{
static int init=0;
if(init) goto start;
X(0)=1;
init=1;
// ----- AZIONI ------ //
start:
if(X(1)) { c=0; COL_PEZ=NEUTRO;}
if(X(2)) { AVA=1; }
if(X(4)) { AVA=0;
switch(c) {
case 1:
COL_PEZ=VERDE;
break;
case 2:
COL_PEZ=GRIGIO;
break;
case 3:
COL_PEZ=BIANCO;
break;
default :
COL_PEZ=NEUTRO;
break;
}
}
CLEAR_TR
// - VALUTAZIONE DELLE
// TRANSIZIONI SUPERABILI--- //
if(X(0) && START)
TR(0)=1;
if(X(1) && FD1)
TR(1)=1;
if(X(2) && KMA)
TR(2)=1;
if(X(3) && FD4)
TR(3)=1;
if(X(4) && !FD4)
TR(4)=1;
//---- AGGIORNAMENTO
// DELLA CONDIZIONE -------//
if(TR(0)) { X(0)=0; X(1)=1; }
if(TR(1)) { X(1)=0; X(2)=1; }
if(TR(2)) { X(2)=0; X(3)=1; }
if(TR(3)) { X(3)=0; X(4)=1; }
if(TR(4)) { X(4)=0; X(1)=1; }
EVENT1=fronte_di_salita(S1);
return 0;
}
static void event1_fun(int e)
{
c++;
}
Algoritmi di Controllo della Cella 1/4
Specifiche funzionali del Compito
• Realizzazione di un ciclo di Pallettizzazione/Depallettizzazione
• Gestione Allarmi
1.
2.
3.
4.
Allarmi di time-out
Allarmi relativi a consensi elettrici
Allarmi conseguenti a malfunzionamenti del programma
Allarmi conseguenti a stati di emergenza
Algoritmi di Controllo della Cella 2/4
Decomposizione in SFC
nome
descrizione
liv. gerarchico
GR1
Generale
1
GR2
Nastro
2
GR3
Robot6A
2
GR4
Robot7A
2
M3.1
Pallet-Robot6A
2 - macrofase
M3.2
Depallet-Robot6A
2 - macrofase
M4.1
Pallet-Robot7A
2 - macrofase
M4.2
Depallet-Robot7A
2 - macrofase
GRA1
Malfunzionamento fotocellule
1
GRA2
Allarme Pinza 0
1
GRA3
Allarme Pinza 1
1
GRA4
Allarme Sovraccarico Termico e EMERG
1
GRA5
Allarme Compressore
1
GRA6
Allarme Riconoscimento Pezzo
1
GRA7
Allarme Robot_6A
1
GRA8
Allarme Robot_7A
1
Algoritmi di Controllo della Cella 3/4
Esempio SFC : GR1 Generale
SFC Operativo
SFC Funzionale
0
0
Tr0
Tr0
START and STOP
START and STOP
1
1
Tr1
Tr1
Nastro OK
2
Tr2
Tr3
Rilassa pinza 0;
Rilassa pinza 1;
Tr4
5
Apri Pinza 0;
Apri Pinza 1;
2
Tr2
Tr3
Fine Depalettizzazione
Tr4
SYS_ST AT US=PALLET ;
X(44) & X(84)
5
Tr5
reset_timer(0);
DRIVE_ON(0); DRIVE_ON(1);
IS_DRIVE_ON(0) & IS_DRIVE_ON(1)
4
Fase di Depallettizzazione
if(PRESS_OK) { load_timer(0,1*SECs);
if(!timer(0)) { OPEN_PINCER_0=1; OPEN_PINCER_1=1; }
else
{ RELAX_PINCER_0; RELAX_PINCER_1; }
}
PRESS_OK & SMA_0 & SMC_0 & SMA_1 & SMC_1
3
Fase di Pallettizzazione
Fine Palettizzazione
nastro_ok
PRESS_OK and
timer(0)/X(2)/1sec
Accensione Motori Robot;
Motori Accesi
4
Tr5
Controllo
Pressione;
PRESS_OK and
timer(0)/X(2)/1sec
Pressione OK e pinze aperte
3
if(KT & !QM & !EMERG & !FD1 & !FD2 & !FD3 & !FD4 & !S1) nastro_ok=1;
Controllo Nastro;
SYS_ST AT US=DEPALLET ;
X(58) & X(98)
Algoritmi di Controllo della Cella 4/4
Esempio SFC Allarme : GRA1 Malfunzionamento Fotocellule
SFC Funzionale
120
SFC Operativo
Inizializza il timer;
120
Tr120
il motore del nastro è acceso
Tr120
121
KMA or KMI
Carica il timer a 30 secondi
121
Tr121
reset_timer(10);
Il motore si è
spento
load_timer(10,30*SECs);
Il motore è ancora acceso ed è scaduto il timer
Tr122
Pone il sistema in stato di allarme;
Segnala il malfunzionamento delle Fotocellule;
Resetta il timer;
122
Tr121
KMA & KMI
( KMA or KMI ) & t10/X121/20s
Tr122
SYS_ST AT US=PLC_ALLARM;
if(KMA) ALLARM_T YPE=T IME_OUT _AVA;
else
ALLARM_T YPE=T IME_OUT _IND;
reset_timer(10);
122
1
Tr123
123
Rilassa le pinze;
Spegni il motore del nastro;
Disabilitita tutte le fasi;
Blocca i robot se in movimento;
Spegni i motori dei robot;
1
Tr123
123
Motore del nastro spento e Motori dei robot Spenti
Tr124
RELAX_PINCER_0; RELAX_PINCER_1;
AVA=0; IND=0;
ST ART =0; ST OP=1;
int i;
for(i=0;i<110;i++) X(i)=0;
MOVET O_EXIT (0)=1; MOVET O_EXIT (1)=1;
DRIVE_OFF(0); DRIVE_OFF(1);
124
KMA & KMI) & IS_DRIVE_ON(0) & IS_DRIVE_ON(1)
Tr124
124
Conclusioni e Sviluppi Futuri
Obiettivi Raggiunti:
 SOPLICS : Ambiente PC-Based per il controllo e supervisione della cella robotizzata
 Modulo di controllo indipendente e programmabile dall’utente
Sviluppi Futuri:
 Aggiunta di moduli device-driver per il controllo di nuove apparecchiature
 Controllo Remoto Lan/Wan
Scarica

Controllo "PC-Based" di una Cella Robotizzata