Lezione 9 di 18

RI Lezione 09

🤖 Robotica Industriale · IV Anno · Lezione 09

Primo programma Pick & Place 🏭

Integrazione completa · Progettazione cella · Ciclo autonomo · Test e validazione

⏱️ Durata stimata: 75–90 min 📊 Livello: Intermedio (IV anno) 🔧 Strumenti: Simulatore web · Editor TP · Pannello IK 📋 Prerequisiti: Lezioni 06–08

🎯 Lezione di sintesi. Nelle lezioni 06–08 hai imparato la struttura TP, i tipi di movimento J/L/C e il teaching dei punti. Questa lezione integra tutto in un unico progetto pratico: dalla progettazione della cella all’esecuzione del ciclo autonomo completo. È la prima volta che scrivi un programma funzionante dall’inizio alla fine.

🎯 Obiettivi della lezione

  • Progettare una cella pick & place semplice: layout, zone, punti necessari
  • Pianificare la sequenza completa del ciclo prima di toccare il simulatore
  • Implementare il programma passo per passo con la procedura professionale
  • Validare il programma con STEP a velocità ridotta prima dell’esecuzione automatica
  • Identificare e correggere gli errori più comuni del primo programma

📖 1. Teoria

1.1 — Il metodo professionale: prima carta, poi robot

Un errore comune dei programmatori alle prime armi è aprire il controller e iniziare a muovere il robot senza un piano. Il risultato è un programma caotico, punti mal nominati, sequenze da rifare. Il metodo professionale è l’opposto: almeno il 40% del tempo si spende su carta, prima di toccare il robot.

Le 5 fasi della programmazione professionale
1
Analisi del compito
Cosa deve fare il robot? Qual è il pezzo? Dove si trova la presa, dove il deposito? Ci sono ostacoli? Quali utensili? Qual è il tempo ciclo richiesto?
2
Layout e punti su carta
Disegna (anche schematicamente) la cella dall’alto. Segna tutte le posizioni necessarie: home, approcci, prese, depositi. Assegna subito i numeri P[ ] e i commenti.
3
Scrittura del programma scheletro
Scrivi il programma TP completo su carta o in un editor di testo, con tutti i commenti. Scegli J/L/C, velocità, terminazioni. Non ancora sul controller.
4
Teach e inserimento
Ora vai al robot (o al simulatore). Insegna i punti nell’ordine definito su carta. Inserisci il programma scheletro nell’editor TP.
5
Test e validazione
STEP a override 10% → STEP a 30% → RUN a 50% → RUN a 100%. Mai saltare al ciclo automatico senza aver validato in STEP prima.

1.2 — Anatomia di una cella pick & place

Una cella pick & place standard ha sempre le stesse zone funzionali, indipendentemente dall’applicazione specifica. Conoscere queste zone permette di progettare qualsiasi cella con lo stesso schema mentale.

Zona Punti tipici Tipo mov. Note
Home P[1] J Posizione di riposo sicura, inizio e fine ciclo
Transito P[2] opzionale J CNT Solo se ci sono ostacoli tra home e le zone lavoro
Approccio presa P[10] J CNT Direttamente sopra il pezzo, stessa X/Y di P[11]
Presa P[11] L FINE Posizione di contatto con il pezzo, FINE obbligatorio
Risalita presa P[10] (stesso) L FINE Stesso punto di approccio — risalita verticale simmetrica
Approccio deposito P[20] J CNT Sopra la zona deposito, stessa X/Y di P[21]
Deposito P[21] L FINE Posizione di rilascio pezzo, FINE obbligatorio
Risalita deposito P[20] (stesso) L FINE Risalita verticale prima del ritorno home

1.3 — Errori più comuni nel primo programma

❌ Approccio non allineato
P[10] e P[11] hanno X o Y diversi. La discesa L non è verticale e il TCP può colpire lateralmente il pezzo.
✅ Costruisci P[10] per derivazione da P[11]: stessa X/Y, solo Z diverso.
❌ CNT sul punto di presa
L P[11] 200mm/sec CNT50 — il robot non si ferma sul pezzo. La pinza si chiude mentre il robot è ancora in movimento.
✅ Sempre FINE sui punti di presa e deposito.
❌ Velocità troppo alta in avvicinamento
L P[11] 2000mm/sec FINE — in T1 è limitato a 250 mm/s, ma in AUTO il robot si avvicina al pezzo a 2 m/s. Rischio danni.
✅ Max 150–200 mm/s per avvicinamenti a pezzi/attrezzature.
❌ Configurazione inconsistente
P[10]=NUT, P[11]=NDT. Il cambio di configurazione durante L provoca il movimento brusco del gomito (Lezione 05).
✅ Tutti i punti del ciclo in configurazione N U T.
❌ Mancanza del ritorno home
Il programma termina in P[20] (approccio deposito). Al ciclo successivo parte da lì — traiettoria verso P[1] imprevedibile.
✅ Ultima istruzione sempre J P[1] 100% FINE.
❌ Approccio troppo basso
P[10] a Z+20 invece di Z+150. Il robot in J da home può colpire il pezzo o l’attrezzatura nell’avvicinamento curvo.
✅ Altezza di approccio ≥ 100 mm, tipicamente 150 mm sopra il pezzo.

💻 2. Progetto guidato: cella pick & place completa

Seguiamo le 5 fasi del metodo professionale per costruire passo per passo il primo programma completo.

Fase 1 — Analisi del compito

Specifica della cella
Compito
Prelevare pezzi cilindrici da un vassoio di alimentazione (zona A) e depositarli su un nastro di uscita (zona B).
Utensile
Pinza pneumatica, TCP a 120 mm dalla flangia in direzione Z. UT=1.
Zona A (presa)
Vassoio fisso. Posizione pezzo: X=280, Y=–80, Z=30. Piano vassoio a Z=0.
Zona B (deposito)
Nastro fisso. Posizione deposito: X=280, Y=80, Z=30. Piano nastro a Z=0.
Vincoli
Nessun ostacolo fisico tra le due zone. Altezza di approccio minima 120 mm per sicurezza operatore.
Tempo ciclo
Non critico per ora — ottimizzeremo nella Lezione 16.

Fase 2 — Layout e punti su carta

Tabella punti — definita su carta prima di aprire il simulatore
P[ ] Commento X Y Z W/P/R Metodo
P[1] HOME — — — — Jog articolare
P[10] APPR_PICK 280 –80 180 180/0/0 Derivato da P[11]
P[11] PICK 280 –80 30 180/0/0 IK diretta
P[20] APPR_PLACE 280 80 180 180/0/0 Derivato da P[21]
P[21] PLACE 280 80 30 180/0/0 IK diretta
Nota: Z=180 per gli approcci = Z=30 (pezzo) + 150 mm (margine sicurezza). W=180° = tool verso il basso. Tutti i punti in configurazione N U T.

Fase 3 — Programma scheletro (su carta)

! ============================================
! PROG: PICK_PLACE_01
! Autore: Prof. Bertolino
! Desc: Presa vassoio A → deposito nastro B
! ============================================

! — HOME —
1: J P[1:HOME ] 100% FINE

! — TRANSITO VERSO ZONA A —
2: J P[10:APPR_PICK] 80% CNT100

! — PRESA PEZZO —
3: L P[11:PICK ] 150mm/sec FINE
! [Lezione 10: DO[1]=ON — chiudi pinza]
4: L P[10:APPR_PICK] 150mm/sec FINE

! — TRANSITO VERSO ZONA B —
5: J P[20:APPR_PLAC] 80% CNT100

! — DEPOSITO PEZZO —
6: L P[21:PLACE ] 150mm/sec FINE
! [Lezione 10: DO[1]=OFF — apri pinza]
7: L P[20:APPR_PLAC] 150mm/sec FINE

! — RITORNO HOME —
8: J P[1:HOME ] 100% FINE

Fase 4 — Teach e inserimento nel simulatore

  1. P[1] — HOME: porta il robot con jog articolare a J1=0°, J2=–10°, J3=20°, J4=0°, J5=–90°, J6=0°. Premi TEACH.
  2. P[11] — PICK: pannello IK → X=280, Y=–80, Z=30, W=180, P=0, R=0 → MUOVI IK → TEACH.
  3. P[10] — APPR_PICK: apri editor posizione di P[11]. Copia le coordinate in P[10], cambia solo Z=180. Salva.
  4. P[21] — PLACE: pannello IK → X=280, Y=80, Z=30, W=180, P=0, R=0 → MUOVI IK → TEACH.
  5. P[20] — APPR_PLACE: come P[10]: copia da P[21] in P[20], Z=180.
  6. Verifica configurazioni: controlla che tutti i P[ ] abbiano Config: N U T, 0, 0, 0.
  7. Inserisci il programma nell’editor TP seguendo il testo della Fase 3.

Fase 5 — Test e validazione

✅ Step 1 — STEP riga per riga
Premi STEP ripetutamente. Dopo ogni riga controlla: il robot si è mosso dove ti aspettavi? La traiettoria era quella giusta? Qualcosa di strano nel gomito o nel polso?
✅ Step 2 — Verifica traiettorie critiche
Concentrati sulle righe 3 e 4 (presa) e 6 e 7 (deposito). Il TCP sale e scende verticalmente? X e Y rimangono fissi durante L P[11] e L P[10]? Se c’è un’inclinazione laterale, P[10] non è allineato con P[11].
✅ Step 3 — RUN ciclo completo
Premi RUN. Il robot esegue le 8 istruzioni e torna in home. Osserva: ci sono movimenti bruschi inaspettati? Il timing è ragionevole? Il robot è stabile nei punti con FINE?
⚠️ Cosa fare se qualcosa non va
Premi STOP immediatamente. Non tentare di correggere con il robot in movimento. Identifica la riga problematica con STEP. Correggi il punto P[ ] con una delle tre modalità di teach della Lezione 08. Ri-esegui da STEP.

🏋️ 3. Esercizi

🟢 Esercizio 1 — Implementa la cella guidata (Facile)

Segui esattamente le 5 fasi del progetto guidato in questa lezione. Implementa la cella PICK_PLACE_01 nel simulatore con i punti e il programma indicati. Esegui la validazione completa (STEP + RUN). Poi rispondi:

a) Quanto tempo hai impiegato nella fase di teach (Fase 4)?
b) Hai riscontrato errori durante il test? Se sì, quale riga era problematica e come l’hai corretta?
c) Le traiettorie di discesa e risalita erano verticali? Come l’hai verificato?

🔵 Esercizio 2 — Cella a geometria variata (Medio)

Progetta e implementa da zero una seconda cella con questa specifica:

— Zona presa: X=200, Y=100, Z=20 (piano a Z=0)
— Zona deposito: X=–200, Y=100, Z=20 (piano a Z=0)
— Il robot deve attraversare Y=0 nel transito — attenzione alla singolarità del braccio (Lezione 05)
— Altezza approccio: 160 mm
— Velocità avvicinamento: 120 mm/s

Segui tutte e 5 le fasi del metodo professionale. Prima di implementare, analizza: la traiettoria J da P[10] a P[20] attraversa zone pericolose? Se sì, aggiungi un punto di transito intermedio.

🟠 Esercizio 3 — Debug di un programma con 5 errori (Medio)

Il seguente programma contiene 5 errori progettuali (non di sintassi — il programma gira, ma fa cose sbagliate o pericolose). Identificali tutti e proponi la versione corretta.

! Programma pick and place
1: J P[1] 100% FINE                 ! home
2: J P[10] 100% FINE                ! approccio presa
3: L P[11] 2000mm/sec CNT50        ! presa
4: J P[10] 100% FINE                ! risalita
5: J P[20] 80% CNT100              ! approccio deposito
6: L P[21] 150mm/sec FINE          ! deposito
7: J P[1] 100% FINE                ! home

Suggerimento: guarda la riga 2 (terminazione), riga 3 (due problemi), riga 4 (tipo movimento), riga finale (manca qualcosa).

🟣 Esercizio 4 — Cella con ostacolo fisico (Difficile)

Una cella ha le stesse zone della cella guidata (presa a Y=–80, deposito a Y=80, entrambe a X=280, Z=30) ma con un divisorio verticale fisso a Y=0, alto fino a Z=250, che separa le due metà della cella. Il robot deve passare sopra il divisorio durante il transito.

Progetta il programma aggiungendo i punti di transito necessari per superare il divisorio in sicurezza. Calcola le coordinate dei punti di transito. Scrivi il programma TP completo giustificando ogni scelta di J/L/C, velocità e terminazione. Implementa nel simulatore e valida con STEP verificando che il TCP non attraversi mai la zona Z<260 in Y=–30…+30.


❓ 4. Quiz di verifica

1. Perché si raccomanda di spendere il 40% del tempo sulla progettazione cartacea prima di toccare il robot?

Mostra risposta

Perché gli errori scoperti su carta costano pochi secondi di correzione; gli stessi errori scoperti sul robot costano minuti o ore — e in un ambiente industriale reale possono causare incidenti, danni a attrezzature o fermo produzione. Pianificare su carta permette di identificare: punti mancanti, traiettorie che attraversano zone pericolose, inconsistenze di configurazione, velocità inappropriate. La qualità del programma finale è quasi sempre proporzionale alla qualità della pianificazione preventiva.


2. In un ciclo pick & place, perché il punto di approccio (P[10]) e il punto di risalita dopo la presa usano lo stesso P[10] invece di due punti separati?

Mostra risposta

Perché il percorso di avvicinamento e quello di risalita devono essere identici — stessa X, stessa Y, stessa Z. Se fossero due punti separati si rischia che differiscano per errori di teach, producendo traiettorie leggermente diverse. Usare lo stesso P[10] garantisce simmetria assoluta: il robot scende sempre esattamente sulla stessa verticale del punto di presa e risale lungo la stessa verticale. Inoltre riduce il numero di P[ ] da gestire e da verificare.


3. Qual è la sequenza corretta di test prima di portare un nuovo programma in ciclo automatico?

Mostra risposta

La sequenza professionale è: (1) STEP riga per riga con override molto basso (10–20%) — si verifica ogni singolo movimento prima di procedere; (2) STEP riga per riga a velocità più alta (30–50%) — si verifica che il comportamento sia stabile; (3) RUN ciclo completo a velocità ridotta (50%) — si verifica il comportamento del ciclo continuo; (4) RUN a velocità di produzione (100%) — solo dopo aver superato tutti i passi precedenti. Saltare anche un solo passo aumenta significativamente il rischio di incidenti.


4. Perché la risalita dopo la presa (riga 4 del programma guidato) è un movimento L invece di J?

Mostra risposta

Perché durante la risalita il robot ha appena afferrato il pezzo. Un movimento J in questa fase potrebbe far oscillare il pezzo nella pinza (traiettoria curva = accelerazioni laterali) o, peggio, colpire lateralmente il vassoio o l’attrezzatura con il pezzo durante la risalita. Il movimento L garantisce che il TCP salga verticalmente in linea retta, il che minimizza le forze laterali sul pezzo e assicura che non ci siano collisioni laterali con la struttura della zona di presa.


5. Individua i 5 errori dell’Esercizio 3 e descrivi le conseguenze di ognuno in un ambiente industriale reale.

Mostra risposta

(1) Riga 2 — J P[10] 100% FINE: dovrebbe essere CNT100, non FINE. Conseguenza: il robot si ferma completamente sull’approccio — inefficienza, nessun rischio di sicurezza ma tempo ciclo allungato.
(2) Riga 3 — velocità 2000mm/sec: eccessiva per un avvicinamento al pezzo. In AUTO il robot si avvicina a 2 m/s — in caso di errore di posizionamento del pezzo o tolleranze strette, impatto ad alta velocità con danni al pezzo o all’utensile.
(3) Riga 3 — CNT50: il robot non si ferma in P[11]. La pinza si chiude (nella realtà) mentre il robot è in movimento, afferrando il pezzo in una posizione sbagliata o mancandolo completamente.
(4) Riga 4 — J P[10] FINE: la risalita dovrebbe essere L, non J. Con J dopo la presa il robot può colpire lateralmente il vassoio con il pezzo appena afferrato.
(5) Riga finale: manca la risalita dopo il deposito (L P[20] 150mm/sec FINE). Il programma termina con il robot a Z=30 (quota pezzo), a contatto o vicinissimo al nastro. Al ciclo successivo, J verso P[10] parte da questa posizione bassa con traiettoria imprevedibile — rischio collisione con il nastro.


📚 Riepilogo della lezione

Cosa hai imparato oggi:
  • 5 fasi professionali: analisi → layout su carta → programma scheletro → teach → test. Non saltare nessuna fase.
  • Anatomia di una cella: home · approccio · presa · risalita · transito · approccio · deposito · risalita · home
  • Approccio e risalita usano lo stesso P[ ] — simmetria garantita, meno punti da gestire
  • I 6 errori più comuni: approccio non allineato, CNT su presa, velocità eccessiva, configurazione inconsistente, mancanza ritorno home, approccio troppo basso
  • Validazione obbligatoria: STEP → RUN lento → RUN veloce. Mai saltare al ciclo automatico senza STEP
  • Il programma senza I/O (pinza) è completo: i DO[] arrivano nella Lezione 10

Prossima lezione →

Lezione 10 — I/O Digitali DI/DO
Ingressi e uscite digitali del controller R-30iB Mate.
Comandare la pinza, leggere sensori, sincronizzare con il PLC.

© Prof. D. Bertolino · Robotica Industriale FANUC ER-4iA · Lezione 09 di 18