Lezione 16 di 18

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

⏱️ Durata stimata: 75–90 min 📊 Livello: Avanzato (V anno) 🔧 Strumenti: Simulatore web · Editor TP · Cronometro 📋 Prerequisiti: Lezioni 06–15

⚡ 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.

FINE — Arresto completo
Il robot decelera fino a fermarsi esattamente sul punto programmato, poi riaccelera verso il successivo. La velocità TCP nel punto è 0 mm/s. La traiettoria passa attraverso il punto con precisione assoluta.
Quando usarlo: presa pezzo · deposito pezzo · punti di processo (saldatura, incollaggio) · punti di ispezione · qualsiasi posizione dove il TCP deve fermarsi con precisione
CNT n — Continuazione smussata
Il robot non si ferma sul punto: inizia il movimento successivo prima di arrivarci, tracciando una curva di raccordo. Il valore n (0–100) controlla la dimensione della curva: CNT0 ≈ FINE, CNT100 = curva massima, il robot può non avvicinarsi quasi per niente al punto.
Quando usarlo: transiti tra zone · approcci a punti di lavoro · movimenti di ritorno · qualsiasi posizione dove l’esatta coordinata non conta, solo la direzione
Effetto geometrico di CNT — visualizzazione
FINE
Percorso: A →● B ●→ C
Arresto completo in B
Precisione: ±0,02 mm
Tempo extra: decelerazione+accelerazione
CNT50
Percorso: A → ⌒ → C
Curva di raccordo a metà
B non viene toccato
Nessun arresto — più veloce
CNT100
Percorso: A → ⌒⌒⌒ → C
Curva massima
B può essere lontano km
Massima velocità
Nota: con CNT il robot mantiene la velocità programmata attraverso la curva — non decelera. Il guadagno in tempo può essere sostanziale su cicli con molti transiti.

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
I valori sono indicativi per ER-4iA con payload ≤4 kg. Verificare sempre che le forze di inerzia sul pezzo non superino la forza di presa della pinza — specialmente con accelerazioni J elevate su pezzi pesanti.

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.

ACC 80
J P[2] 100% CNT100
ACC 80 = il movimento J successivo usa l’80% dell’accelerazione nominale. ACC vale fino alla prossima istruzione ACC o alla fine del programma.
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.

FASE 1
Baseline
Misura il tempo ciclo di partenza con il programma non ottimizzato (tutte le terminazioni FINE, velocità conservative). Esegui 5 cicli e calcola la media. Questo è il tuo riferimento.
FASE 2
CNT
Sostituisci FINE con CNT sui transiti — inizia con CNT50, poi aumenta a CNT80 e CNT100 sui movimenti più distanti dal processo. Non toccare i punti di presa/deposito. Misura il nuovo tempo ciclo.
FASE 3
Velocità
Aumenta le velocità sui transiti senza pezzo — percentuale J sui transiti lunghi, mm/s sulle discese/risalite. Mantieni velocità basse sui punti FINE di processo. Verifica visivamente che il percorso non avvicini il TCP a strutture della cella.
FASE 4
ACC
Aggiusta ACC sui transiti critici — se il robot decellera troppo prima di un CNT (visibile come “esitazione”), aumenta ACC sulla riga precedente. ACC 110–120 sui transiti lunghi senza pezzo. Misura il tempo ciclo finale e verifica assenza allarmi coppia.

1.6 — Confronto: programma non ottimizzato vs ottimizzato

❌ Non ottimizzato (~8,5 s)
! tutti FINE, velocità conservative
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
✅ Ottimizzato (~4,8 s)
! CNT sui transiti, velocità bilanciate
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
Guadagno stimato: ~43% sul tempo ciclo. Con 480 min/turno: da ~3400 a ~6000 cicli/turno.

💻 2. Esempi guidati nel simulatore

Esempio A — Visualizzare il percorso CNT vs FINE

  1. 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.
  2. 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
  3. 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).
  4. 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.
  5. 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

  1. 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).
  2. Fase 2 — CNT: sostituisci le terminazioni dei transiti e delle risalite con CNT80. Lascia FINE solo su PICK e PLACE. Misura il nuovo tempo.
  3. 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.
  4. Fase 4 — ACC: aggiungi ACC 110 prima dei transiti J più lunghi. Misura il tempo finale.
  5. 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

  1. Parti dal programma ottimizzato dell’Esempio B.
  2. Simula il trasporto di un pezzo fragile: aggiungi ACC 30 prima del transito J con pezzo afferrato (tra la risalita dal PICK e la discesa verso PLACE). Riesegui e osserva il movimento più dolce.
  3. Confronta visivamente (e con il cronometro) il transito con ACC 100 vs ACC 30. Computa: quanto tempo si perde per rendere il trasporto “gentile”?
  4. 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.
  5. 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:

a) J P[1:HOME ] 100% ???
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

Cosa hai imparato oggi:
  • 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