Progettino richiesto secondo le modalità dell'esame di "Automazione Industriale" (CFU 9), previsto nell'offerta formativa UNIVPM per il 3° anno della laurea triennale in Ingegneria Meccanica. L'oggetto del progetto consiste nel realizzare e validare un programma per PLC delle serie SIMATIC S7 mediante l'ambiente di sviluppo Siemens STEP 7. Nello specifico è stato richiesto di realizzare un programma per PLC con la finalità di controllare un sistema di nastri trasportatori e robot posto all'interno di una linea di produzione automatica.
Il sistema è costituito da tre nastri trasportatori aventi ognuno un motore che li fa scorrere in avanti e da un robot con braccio meccanico mobile che si muove in senso orario e antiorario. Il robot è munito di manipolatore con motore che gli permette di aprirsi e chiudersi. Il movimento del robot è gestito da un sistema di coordinate ovvero il robot ha memorizzate come posizioni di sosta OK1, OK2 e OK3 in corrispondenza dei tre nastri, e OK0 in corrispondenza della posizione di home. Il robot dopo aver preso il pezzo dai nastri uno o due e averlo depositato nel nastro tre si riporta sempre alla posizione OK0. Il problema consiste nel trasporto di pezzi posti sui nastri uno e due al nastro tre, tramite il braccio meccanico. I nastri uno e due si considerano sempre in moto. Alla fine dei nastri uno e due sono presenti dei sensori che indicano se il pezzo è arrivato alla fine del nastro in tal caso il nastro si ferma fino a quando il braccio non preleva il pezzo. Il nastro tre è dotato invece di due sensori, uno all’inizio del nastro che permette di farlo partire quando il braccio vi rilascia il pezzo e uno alla fine che ferma il nastro quando il pezzo è giunto alla fine. Al nastro uno è data maggiore priorità qualora i pezzi giungano contemporaneamente alla fine dei nastri uno e due.
Individuiamo le variabili del sistema:
m1, m2, m3: Uscite digitali che permettono di muovere i rispettivi nastri go0: comando digitale dato al robot per andare alla posizione home
go1: comando digitale dato al robot per andare alla posizione OK1 sul nastro1
go2: comando digitale dato al robot per andare alla posizione OK2 sul nastro2
go3: comando digitale dato al robot per andare alla posizione OK3 sul nastro3
close: comando digitale per gestire l’apertura e la chiusura del manipolatore
s1, s2, s3 : sensori ON-OFF che indicano la presenza di un oggetto sui nastri
s4: sensore di fine corsa sul nastro3
ok0: sensore che indica che il robot è arrivato alla posizione P0
ok1: sensore che indica che il robot è arrivato alla posizione P1
ok2: sensore che indica che il robot è arrivato alla posizione P2
ok3: sensore che indica che il robot è arrivato alla posizione P3
1) Allo stato di home_robot non è associata alcuna azione. Da questo stato è possibile seguire due distinte diramazioni:
Se !s1&&s2 si passa allo stato vai_P2
2) vai_P2: go2 = 1
Se il pezzo è arrivato alla fine del nastro2 il braccio meccanico si sposta verso il nastro2. Da notare che la scelta dello stato da attivare viene effettuata tenendo conto che i l nastro1 ha priorità sul nastro2.
Il passaggio allo stato successivo avviene tramite l’ingresso digitale OK2 sensore che indica che la posizione desiderata è stata raggiunta
3) CHIUDI : close = 1
In questo stato viene chiuso il manipolatore che afferra il pezzo. fine_tempo && home3.
Prima di effettuare la transizione allo stato successivo si attende un tempo per garantire che il manipolatore abbia effettivamente afferrato il pezzo; questo è gestito da un timer. Inoltre viene verificata anche home3, variabile di sincronizzazione col nastro3. Quando il robot ha afferrato l’oggetto non può portarlo sul nastro3 se prima questo non è libero.
Se s1 si passa allo stato vai_P1
2) vai_P1: go1 = 1
Se il pezzo è arrivato alla fine del nastro1 il braccio meccanico si sposta verso il nastro1.
Il passaggio allo stato successivo avviene tramite l’ingresso digitale OK1 sensore che indica che la posizione desiderata è stata raggiunta
3) CHIUDI : close = 1
In questo stato viene chiuso il manipolatore che afferra il pezzo. fine_tempo && home3.
4) vai_P3: go3 = 1
Il braccio trasportando il pezzo si sposta nella posizione relativa al nastro3
Il passaggio allo stato successivo avviene tramite l’ingresso digitale OK3 sensore che indica che la posizione desiderata è stata raggiunta.
5) APRI: close = 0
Viene lasciato cadere il pezzo sul nastro3
Il passaggio allo stato successivo avviene allo scadere del timer fine_tempo
6) vai_P0: go0 = 1
Il braccio si muove verso la posizione di home
Il ritorno allo stato home_robot avviene tramite l’ingresso digitale OK0 sensore che indica che la posizione desiderata è stata raggiunta.
1) home 1/2: Ci troviamo in questo stato quando il pezzo è arrivato alla fine del nastro.
Il passaggio allo stato successivo avviene tramite !s1/!s2. Questo garantisce che il nastro sia sempre in movimento tranne quando il pezzo ha raggiunto la fine.
2) muovi 1/2: m1 = 1 / m2 = 1 Mette in moto il nastro.
Il passaggio allo stato successivo avviene tramite s1/s2.
3) ferma 1/2 : Quando il pezzo arriva a fine nastro il robot deve prendere il pezzo per questo il nastro si ferma. Il passaggio allo stato successivo avviene tramite !s1 / !s2. Osservazione: La macchina a stati del nastro1/nastro2 ha apparentemente uno stato in più, ma in realtà tale stato è fondamentale per l’esecuzione del programma in Ladder. Il sistema senza questo stato di transizione comincerebbe ad oscillare.
1) home 3:
Il passaggio allo stato successivo avviene tramite s3 && home_robot
Per motivi di sicurezza si è supposto che il nastro3 dipenda dal robot, esso si muoverà solo quando il robot è tornato ad home.
2) muovi3: m3=1 Mette in moto il nastro
Il passaggio allo stato successivo avviene tramite s4. Indica che l’oggetto ha raggiunto la fine del nastro
3) attesa:
Il passaggio allo stato successivo avviene tramite !s4. Indica che l’oggetto è stato rimosso.
Volendo effettuare la programmazione con nomi simbolici si è dovuto creare una tabella dei simboli all'interno della cartella “Simboli” che si trova dentro Programma S7(1) e andando a inserire le varie righe. Quello che si ottiene è riportato nella figura qui di fianco.
Il programma poi si articola in segmenti e fasi.
In particolare il programma in KOP sarà composto da tre fasi e, a partire dalla macchina di stato, bisogna scrivere queste parti di codice:
• stato attuale – ingresso – nuovo stato
• nuovo stato – resettaggio vecchio stato
• stato attuale – condizioni che devono essere compiute
Il progetto può essere composto da 4 catene sequenziali, ognuna delle quali individua rispettivamente la
• CATENA nastro1
• CATENA nastro2
• CATENA nastro3
• CATENA robot
Catena Nastro1
Step home1:
Allo step iniziale non è associata alcuna azione
Transizione T1:
la transizione è composta dal contatto normalmente chiuso s1
Step muovi1:
Allo step è associata la seguente azione: N “m1” questa indica che finchè il passo è attivo m1 è 1
Transizione T4:
la transizione è composta da un contatto normalmente aperto s1.
Dopodichè si ritorna allo step Home1
Catena Nastro2
Step home2:
allo step iniziale non è associata alcuna azione
Transizione T2:
la transizione è composta dal contatto normalmente chiuso s2
Step muovi2:
allo step è associata la seguente azione: N “m2” questa indica che finché il passo è attivo m2 è 1
Transizione T5:
la transizione è composta da un contatto normalmente aperto s2. Dopodichè si ritorna allo step Home2.
Catena Nastro3
Step home3:
allo step iniziale è associata la seguente azione:N“nastro3_ho me” questa indica che finché il passo è attivo nastro3_home è 1.
Questa variabile è necessaria per sapere quando il nastro 3 non ha più pezzi.
Transizione T3:
la transizione è composta dal contatto normalmente aperto Robot_home e dal contatto normalmente aperto s3.
Step muovi3:
allo step è associata la seguente azione: N “m3” questa indica che finché il passo è attivo m3 è 1
Transizione T6:
la transizione è composta da un contatto normalmente aperto s4.
Step attesa:
allo step non è associata alcuna azione
Transizione T7:
la transizione è composta da un contatto normalmente chiuso s4. Dopodichè si ritorna allo step Home3.
Catena Robot
Step homeRobot:
allo step iniziale è associata la seguente azione: N “robot_home” questa indica che finché il passo è attivo robot_home è 1.
Transizione T8:
la transizione è composta dal contatto normalmente aperto s1.
Step vai_1:
allo step è associata la seguente azione: N “go1” questa indica che finché il passo è attivo go1 è 1
Transizione T9:
la transizione è composta da un contatto normalmente aperto ok1.
Esaminiamo adesso l’altro percorso:
Transizione T10:
la transizione è composta da un contatto normalmente chiuso s1 e da un contatto normalmente aperto s2.
Step vai_2:
allo step è associata la seguente azione: N “go2” questa indica che finché il passo è attivo go2 è 1
Transizione T11:
la transizione è composta da un contatto normalmente aperto ok2.
A questo punto si ha un “percorso convergente” in quanto le due sequenze alternative convergono.
Step afferra:
allo step è associata la seguente azione: S “close” questa indica che appena il passo è attivo close viene impostato a 1 e rimane così impostato
Transizione T12:
la transizione è composta un comparatore dove confrontiamo afferra.T, che rappresenta il tempo di attivazione corrente o più recente del passo, con un tempo prefissato di 10 secondi (T#10S). Questo equivale a fissare il tempo necessario per portare il pezzo sul nastro3.
Step vai_3:
allo step è associata la seguente azione: N “go3” questa indica che finché il passo è attivo go3 è 1
Transizione T13:
la transizione è composta da un contatto normalmente aperto ok3.
Step lascia:
allo step è associata l’azione R “close”. Appena il passo è attivo close viene impostato a 0 e rimane così impostato
Transizione T14:
la transizione è composta da un comparatore dove confrontiamo lascia.T, che rappresenta il tempo di attivazione corrente o più recente del passo, con un tempo prefissato di 10 secondi (T#10S).
Step vai_0:
allo step è associata la seguente azione: N “go0” questa indica che finché il passo è attivo go0 è 1
Transizione T15:
la transizione è composta da un contatto normalmente aperto ok0. Dopodichè si ritorna allo step HomeRobot
Esempio dell’interfaccia ”KOP/AWL/FUP”