RI Lezione 16
🤖 Robotica Industriale · V Anno · Lezione 16
Ottimizzazione delle traiettorie ⚡
CNT vs FINE · Velocità per tipo di movimento · Profili ACC/DEC · Ridurre il tempo ciclo in sicurezza
⚡ Programmare correttamente è necessario — programmare velocemente è redditizio. Un ciclo da 8 secondi vs uno da 6 secondi su una linea da 480 minuti/turno significa 3600 pezzi vs 4800 pezzi: +33% di produttività con lo stesso robot, senza hardware aggiuntivo. L’ottimizzazione delle traiettorie è la differenza tra un programmatore che scrive codice funzionante e uno che scrive codice produttivo.
🎯 Obiettivi della lezione
- Capire la differenza geometrica tra terminazione FINE e CNT e il suo effetto sul percorso reale
- Scegliere il valore corretto di CNT per ogni tipo di movimento (transito, approccio, processo)
- Selezionare la velocità appropriata per ciascuna fase del ciclo
- Usare l’istruzione ACC per controllare il profilo di accelerazione/decelerazione
- Applicare una metodologia sistematica di ottimizzazione a un programma pick & place esistente
📖 1. Teoria
1.1 — Terminazione FINE vs CNT: geometria del percorso
La terminazione di un’istruzione di movimento determina quanto il robot si avvicina al punto programmato prima di iniziare il movimento successivo. È la singola scelta che più impatta il tempo ciclo.
Arresto completo in B
Precisione: ±0,02 mm
Tempo extra: decelerazione+accelerazione
Curva di raccordo a metà
B non viene toccato
Nessun arresto — più veloce
Curva massima
B può essere lontano km
Massima velocità
1.2 — Guida alla scelta di FINE vs CNT per ogni tipo di movimento
| Tipo di movimento | Terminazione | Motivazione |
|---|---|---|
| Presa pezzo (PICK) | FINE | Il TCP deve essere esattamente sul pezzo — ±0,02 mm |
| Deposito pezzo (PLACE) | FINE | Posizionamento preciso nella sede di deposito |
| Punto di processo (saldatura, incollaggio) | FINE | La posizione esatta è la funzione del punto |
| Approccio verticale (sopra pick/place) | CNT50–100 | Solo direzione importante — il robot deve scendere verticale, non fermarsi lì |
| Transito tra zone distanti | CNT80–100 | Massima velocità — il punto intermedio è solo per evitare collisioni |
| Risalita dopo deposito | CNT50–100 | Il robot deve allontanarsi verticalmente, poi può curvare verso il prossimo punto |
| Home | FINE | Posizione di sicurezza: il robot deve arrivarci completamente prima di fermarsi |
| Via-point per evitare singolarità | CNT100 | Il punto è solo una direzione, non una destinazione — massima fluidità |
⚠️ Errore comune — CNT sull’approccio verticale: usare CNT100 sull’approccio subito prima del PICK fa sì che il robot non scenda verticalmente sopra il pezzo — la curva sposta il TCP lateralmente. Il robot arriva al PICK da una direzione obliqua, rischiando di urtare il pezzo con il lato della pinza prima di afferrarlo dall’alto. La regola: CNT sull’approccio sì, ma CNT moderato (30–60) se il punto successivo è un FINE di presa.
1.3 — Velocità per tipo di movimento
La velocità non è un valore unico per tutto il programma. Ogni fase del ciclo ha requisiti diversi — sicurezza, precisione, massima produttività — e la velocità deve essere scelta di conseguenza.
| Fase | Tipo mov. | Velocità tipica | Motivazione |
|---|---|---|---|
| Transiti lunghi (home → zona) | J | 60–100% | Nessun vincolo — massima velocità assi |
| Avvicinamento alla zona lavoro | J | 50–80% | Zona potenzialmente occupata — ridurre prima dell’approccio |
| Discesa verticale sull’approccio | L | 200–400 mm/s | Lineare controllata — clearance da bordi del vassoio |
| Presa/Deposito (ultimo tratto) | L | 50–150 mm/s | Bassa velocità = precisione + minor impatto sul pezzo |
| Risalita dopo presa/deposito | L | 200–400 mm/s | Allontanarsi rapidamente senza accelerazione brusca sul pezzo |
| Transito con pezzo afferrato | J | 40–70% | Il pezzo ha inerzia — accelerazioni elevate rischiano di sganciarlo |
1.4 — Istruzione ACC: profilo di accelerazione
L’istruzione ACC modifica il profilo di accelerazione e decelerazione per il movimento successivo. Il valore è una percentuale (1–150) rispetto all’accelerazione nominale del controller.
J P[2] 100% CNT100
| Valore ACC | Effetto | Quando usarlo |
|---|---|---|
| ACC 20–40 | Accelerazione molto dolce | Pezzi fragili · liquidi · prese instabili |
| ACC 80–100 | Accelerazione nominale (default) | Uso normale per la maggior parte dei movimenti |
| ACC 120–150 | Accelerazione aggressiva | Transiti senza pezzo su assi leggeri — guadagno tempo · verificare le vibrazioni strutturali |
📌 ACC > 100 richiede verifica meccanica. Accelerazioni superiori al nominale aumentano le forze sulle trasmissioni e riduttori. Su robot già logori o con manutenzione arretrata, ACC 150 può causare vibrazioni o errori di posizione. Aumentare ACC gradualmente (110 → 120 → 130) misurando il tempo ciclo e verificando l’assenza di allarmi di coppia.
1.5 — Metodologia sistematica di ottimizzazione
L’ottimizzazione non è casuale: si segue un metodo a 4 fasi che massimizza il guadagno minimizzando il rischio.
Baseline
CNT
Velocità
ACC
1.6 — Confronto: programma non ottimizzato vs ottimizzato
J P[1:HOME ] 30% FINE
J P[10:APPR_PIC] 30% FINE
L P[11:PICK ] 80mm/sec FINE
! [presa]
L P[10:APPR_PIC] 80mm/sec FINE
J P[20:APPR_PLA] 30% FINE
L P[21:PLACE ] 80mm/sec FINE
! [deposito]
L P[20:APPR_PLA] 80mm/sec FINE
J P[1:HOME ] 30% FINE
J P[1:HOME ] 100% CNT100
J P[10:APPR_PIC] 80% CNT50
L P[11:PICK ] 120mm/sec FINE
! [presa]
L P[10:APPR_PIC] 300mm/sec CNT80
J P[20:APPR_PLA] 80% CNT50
L P[21:PLACE ] 120mm/sec FINE
! [deposito]
L P[20:APPR_PLA] 300mm/sec CNT100
J P[1:HOME ] 100% FINE
💻 2. Esempi guidati nel simulatore
Esempio A — Visualizzare il percorso CNT vs FINE
- Insegna 3 punti formando una traiettoria a L: P[1]=home · P[2]=punto intermedio (cambio direzione netto, es. J1=+60°, J2=–60°) · P[3]=destinazione finale.
- Scrivi il programma con FINE:
1: J P[1] 50% FINE
2: J P[2] 50% FINE
3: J P[3] 50% FINE
4: J P[1] 50% FINE - Esegui. Osserva che il robot si ferma completamente su P[2] prima di ripartire verso P[3]. Misura il tempo ciclo con il cronometro del simulatore (o mentalmente).
- Cambia la riga 2 in
J P[2] 50% CNT100. Riesegui. Il robot traccia una curva intorno a P[2] senza fermarsi. Misura di nuovo il tempo. - Prova CNT0, CNT30, CNT60, CNT100 sulla riga 2: osserva come la curva si allarga progressivamente e il tempo diminuisce. Compila la tabella: CNT → raggio visivo curva → tempo ciclo.
Esempio B — Ottimizzazione step-by-step di un pick & place
- Carica il programma PICK_PLACE_IO della Lezione 10 (o ricrealo con i punti già insegnati). Assicurati che tutte le terminazioni siano FINE e le velocità al 30% / 80 mm/s. Misura il tempo ciclo (baseline).
- Fase 2 — CNT: sostituisci le terminazioni dei transiti e delle risalite con CNT80. Lascia FINE solo su PICK e PLACE. Misura il nuovo tempo.
- Fase 3 — Velocità: porta i transiti J al 80%, le discese L a 250 mm/s, le risalite L a 350 mm/s. Mantieni 120 mm/s su PICK e PLACE. Misura.
- Fase 4 — ACC: aggiungi
ACC 110prima dei transiti J più lunghi. Misura il tempo finale. - Compila la tabella di ottimizzazione:
Baseline (tutto FINE, 30%) → t = ??? s
Dopo CNT sui transiti → t = ??? s → guadagno ???%
Dopo velocità ottimizzate → t = ??? s → guadagno ???%
Dopo ACC 110 → t = ??? s → guadagno ???%
Guadagno totale rispetto al baseline: ???%
Esempio C — ACC dolce su trasporto pezzi fragili
- Parti dal programma ottimizzato dell’Esempio B.
- Simula il trasporto di un pezzo fragile: aggiungi
ACC 30prima del transito J con pezzo afferrato (tra la risalita dal PICK e la discesa verso PLACE). Riesegui e osserva il movimento più dolce. - Confronta visivamente (e con il cronometro) il transito con ACC 100 vs ACC 30. Computa: quanto tempo si perde per rendere il trasporto “gentile”?
- Ripristina ACC 100 prima della risalita dopo PLACE (senza pezzo):
ACC 100. Ora il robot è dolce solo quando trasporta il pezzo, aggressivo quando è a mani vuote. - Questo pattern — ACC basso con pezzo, ACC alto senza pezzo — è lo standard industriale per pezzi fragili o liquidi.
🏋️ 3. Esercizi
🟢 Esercizio 1 — Classifica le terminazioni (Facile)
Per ciascuna delle seguenti righe di un programma pick & place, indica se la terminazione corretta è FINE o CNT (e se CNT, un valore ragionevole), con una breve motivazione:
b) J P[10:APPR_PICK] 80% ???
c) L P[11:PICK ] 100mm/sec ???
d) L P[10:APPR_PICK] 300mm/sec ???
e) J P[20:APPR_PLAC] 80% ???
f) L P[21:PLACE ] 100mm/sec ???
g) L P[20:APPR_PLAC] 300mm/sec ???
h) J P[1:HOME ] 100% ???
🔵 Esercizio 2 — Ottimizza PICK_SORT_3 (Medio)
Prendi il programma PICK_SORT_3 della Lezione 14 e ottimizzalo seguendo la metodologia delle 4 fasi:
— Identifica e classifica tutti i movimenti (transiti, approcci, processi, risalite)
— Sostituisci le terminazioni appropriate
— Assegna velocità per tipo di movimento
— Aggiungi ACC dove utile
Documenta le modifiche in una tabella: riga → terminazione prima → terminazione dopo → velocità prima → velocità dopo. Misura il tempo ciclo per ciascuno dei 4 rami (zona A, B, C, scarti) e calcola il tempo ciclo medio ponderato assumendo una distribuzione 40% A, 30% B, 20% C, 10% scarti.
🟠 Esercizio 3 — Analisi produttività (Medio)
Un impianto lavora su 2 turni da 420 minuti ciascuno, 5 giorni a settimana. Il programma baseline ha un tempo ciclo di 9,2 s. Dopo l’ottimizzazione il tempo ciclo scende a 5,8 s.
Calcola:
a) Pezzi/turno baseline vs ottimizzato
b) Pezzi/settimana baseline vs ottimizzato
c) Incremento percentuale di produttività
d) Se ogni pezzo vale €0,08 di contribuzione marginale, qual è il guadagno economico settimanale?
e) Se l’ottimizzazione ha richiesto 4 ore di lavoro del programmatore (costo €60/h), in quante settimane si recupera l’investimento?
Mostra tutti i passaggi di calcolo.
🟣 Esercizio 4 — Ottimizzazione con vincolo di sicurezza (Difficile)
Il programma di griglia della Lezione 15 (3×4 celle) viene ottimizzato, ma con un vincolo: la forza di inerzia sul pezzo durante il transito non deve superare 8 N. Il pezzo pesa 350 g (0,35 kg).
Dalla fisica: F = m × a. L’accelerazione massima ammissibile è quindi a_max = 8/0,35 ≈ 22,8 m/s².
a) Se il transito J tra la presa e il deposito dura 0,8 s e la velocità massima raggiunta è stimata a 1,2 m/s, qual è l’accelerazione media approssimativa (ipotizzando profilo triangolare: a_media = 2×v_max/t_ciclo)?
b) L’accelerazione calcolata supera il limite di 22,8 m/s²?
c) Quale valore di ACC (in percentuale rispetto al nominale FANUC ER-4iA di ~15 m/s²) garantisce di stare sotto il limite?
d) Progetta la sequenza ACC per il programma griglia: ACC basso con pezzo, ACC alto senza pezzo, con i valori calcolati.
❓ 4. Quiz di verifica
1. Un operatore osserva che il robot, durante un transito con CNT100, passa molto lontano dal punto programmato P[2]. È un bug o il comportamento atteso?
Mostra risposta
È il comportamento atteso e corretto di CNT100. Con CNT100 il controller crea la curva di raccordo più grande possibile — il robot può allontanarsi significativamente dal punto programmato per mantenere la velocità e raccordare fluidamente con il movimento successivo. P[2] con CNT100 non è una destinazione, è una direzione: il robot deve “orientarsi verso P[2]” ma può iniziare a curvare verso P[3] non appena la dinamica del movimento lo consente. Se la posizione esatta di P[2] è importante, bisogna usare FINE o un CNT più basso. Se P[2] è solo un via-point per evitare un ostacolo, occorre verificare che la curva CNT100 non si avvicini all’ostacolo più di quanto facesse il percorso spigolato con FINE.
2. Perché la velocità del transito con pezzo afferrato deve essere inferiore a quella del transito a vuoto?
Mostra risposta
Per due ragioni fisiche. Prima: il pezzo ha inerzia — durante l’accelerazione e la decelerazione, la forza inerziale F=m×a agisce sul pezzo nella direzione opposta al movimento. Se F supera la forza di presa della pinza (o del vacuum), il pezzo scivola o cade. Con alta velocità e alta accelerazione, F può essere sostanziale anche per pezzi di pochi etti. Seconda: l’ER-4iA ha un payload nominale di 4 kg. Con il pezzo, il carico all’estremità del braccio è maggiore — il controller deve gestire una dinamica più impegnativa. Ridurre la velocità del transito con pezzo diminuisce le forze inerziali e mantiene il movimento nel range dinamico sicuro della manipolazione.
3. Perché l’ultima istruzione di ritorno a home prima della fine del programma usa FINE invece di CNT100?
Mostra risposta
Perché home è una posizione di sicurezza — il robot deve arrivarci completamente, non “passarci vicino”. Con CNT100 il robot potrebbe fermarsi in una posizione arbitraria vicina a home ma non coincidente: se poi arriva un operatore in cella pensando che il robot sia in home sicura, potrebbe trovarsi a portata del braccio. Inoltre, se il programma è inserito in un loop (come nel ciclo produttivo della Lezione 13), il prossimo ciclo inizia da dove si è fermato il precedente — con CNT100 sulla home, il punto di partenza del ciclo successivo è casuale. FINE su home garantisce uno stato iniziale noto e sicuro per ogni ciclo.
4. ACC 150 su un transito lungo guadagna tempo ciclo. Perché non si usa sempre ACC 150 su tutti i movimenti?
Mostra risposta
Tre ragioni. Prima: con pezzo afferrato, ACC alto genera forze inerziali elevate che possono far cadere il pezzo o danneggiare pezzi fragili — ACC 150 è sicuro solo sui transiti senza pezzo. Seconda: il guadagno di ACC 150 su movimenti già veloci (alto percentuale J, CNT100) è marginale — i tempi di accelerazione/decelerazione sono già una piccola frazione del tempo di transito totale; oltre il 120% il guadagno assoluto diventa trascurabile. Terza: accelerazioni elevate aumentano le sollecitazioni su riduttori e trasmissioni — usarlo su tutto il programma, tutto il giorno, accelera l’usura meccanica e aumenta i costi di manutenzione. L’ottimizzazione corretta applica ACC alto solo dove porta un guadagno misurabile e in condizioni di sicurezza meccanica.
5. Nel confronto del paragrafo 1.6, il guadagno è ~43%. Identifica quale delle 3 modifiche (CNT, velocità, ACC) contribuisce di più al guadagno e perché.
Mostra risposta
L’introduzione del CNT sui transiti è tipicamente la modifica con maggior impatto percentuale, per due ragioni. Prima: FINE impone decelerazione-arresto-accelerazione completa ad ogni punto — su un ciclo con 6–8 punti di transito, il tempo perso in questi stop può rappresentare il 40–60% del tempo ciclo totale. Con CNT il robot non si ferma mai durante i transiti, mantenendo la velocità costante. Seconda: l’aumento di velocità porta un guadagno proporzionale alla distanza percorsa, ma è limitato dalla velocità massima dell’asse e dalla necessità di frenare prima dei punti FINE. L’ACC ha l’impatto minore dei tre perché agisce solo sulle rampe di accelerazione, che su movimenti già veloci con CNT sono una frazione piccola del tempo totale. In pratica: CNT ~30–40% di guadagno, velocità ~10–20%, ACC ~3–8%.
📚 Riepilogo della lezione
- FINE = arresto completo sul punto — obbligatorio per presa, deposito, processi, home
- CNT n (0–100) = curva di raccordo senza fermarsi — obbligatorio per transiti, approcci, risalite. CNT100 = curva massima
- Velocità: alta sui transiti a vuoto (80–100% J) · bassa sulla presa/deposito (50–150 mm/s L) · media con pezzo (40–70% J)
ACC n— percentuale rispetto al nominale · basso (20–40) per pezzi fragili · alto (110–150) per transiti a vuoto · non oltre 120 di routine- Metodologia: baseline → CNT → velocità → ACC — misura dopo ogni fase, non modificare tutto insieme
- Guadagno tipico: CNT porta il 30–40% del guadagno totale — è la modifica più impattante
Prossima lezione →
Lezione 17 — Multi-programma e CALL
Suddividere il codice in sotto-programmi riutilizzabili.
CALL, RUN, parametri tramite R[ ] — architettura modulare per celle complesse.
© Prof. D. Bertolino · Robotica Industriale FANUC ER-4iA · Lezione 16 di 18