Manuale di istruzioni
Unità di controllo
CR00757608_it-08/2012.11
Le informazioni contenute in questo manuale sono di proprietà di COMAU S.p.A.
E’ vietata la riproduzione, anche parziale, senza preventiva autorizzazione scritta di COMAU S.p.A.
COMAU si riserva il diritto di modificare, senza preavviso, le caratteristiche del prodotto presentato in questo
manuale.
SOMMARIO
PREFAZIONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
Simbologia adottata nel manuale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Documentazione di riferimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Modification History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2. MODALITA’ OPERATIVE
E STATI DEL SISTEMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...24
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Modalità operative del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Stati del sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Stato HOLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Stato AUTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Stato PROGR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Stato ALARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Funzione Stand-by. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3. TURN-SET E CALIBRAZIONE -
CONCETTI DI BASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...31
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Terminologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Turn-set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Turn-set su posizione di calibrazione di sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Turn-set su posizione di calibrazione utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Turn-set per assi robot con corsa multigiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Calibrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Calibrazione di sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Calibrazione utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
lb-rc-c5e-motion_itTOC.fm
1
Sommario
lb-rc-c5e-motion_itTOC.fm
2
Sommario
Movimenti manuali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Entrata in soglia (precisione di posizionamento) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Arresto COARSE e FINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Arresto JNT_COARSE e JNT_FINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Arresto NOSETTLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Ripristino della traiettoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Metodo di ripristino. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Condizione di movimento in attesa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
Spazio di ripristino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
Ambiente di esecuzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
Ripristino del Processo (Process Resume) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Ripristino del Processo (Process Resume) Automatico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Movimento Continuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Traiettoria durante il movimento continuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Modalità di movimento continuo (FLY). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
FLY_NORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
FLY_CART (Controller Aided Resolved Trajectory) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Controllo dello stress dinamico sulla macchina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Mantenimento della velocità costante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
Controllo della traiettoria durante il FLY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
Debug dei movimenti in FLY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
Variabili utilizzate con il movimento FLY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Sistema con Tool Remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Movimento integrato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Asse Integrato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Movimento manuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
Sistemi di riferimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
Limitazioni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
Funzionalità di Pallettizzazione (prestazione opzionale) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Attivazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Disattivazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Esempio di programma di pallettizzazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6. MOVIMENTO SINCRONO
(PRESTAZIONE OPZIONALE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...87
Sincronizzazione con gli assi ausiliari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Arm sincronizzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Limitazioni nel movimento dei due Arm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Spostamento manuale di arm sincronizzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Apprendimento e modifica dei punti (REC/MOD) con arm sincronizzati . . . . . . . . . . . . . . . . . . 89
Perdita della sincronizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Variazione Run-Time della velocità lineare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
lb-rc-c5e-motion_itTOC.fm
3
Sommario
7. MOVIMENTO COOPERATIVO
(PRESTAZIONE OPZIONALE). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..92
Movimento cooperativo con assi ausiliari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Arm cooperativi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Movimento multi-cooperativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Movimento manuale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
8. SENSOR TRACKING
(PRESTAZIONE OPZIONALE). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..97
Principio di funzionamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Configurazione su diversi arm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Interfaccia del sensore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Sensori Integrati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Sensori esterni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Sistema di riferimento del sensore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Sensore solidale con l’attrezzo (TOOL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Sensore solidale con il sistema di riferimento utente (USER) . . . . . . . . . . . . . . . . . . . . . . . 102
Sensore solidale con il sistema di riferimento mondo (WORLD) . . . . . . . . . . . . . . . . . . . . . 102
Sensore solidale con il sistema di riferimento weaving (WEAVE) . . . . . . . . . . . . . . . . . . . . 102
Tipologia delle informazioni acquisite dal sensore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Criteri di attuazione delle correzioni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Scostamenti relativi ed assoluti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Attuazione dello scostamento nel tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Controllo degli scostamenti totali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Modalità di abilitazione del sensor tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Malfunzionamenti del sensore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Arresto del robot in caso di malfunzionamento del sensore. . . . . . . . . . . . . . . . . . . . . . . . . 109
Ridefinizione degli scostamenti totali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Gestione degli scostamenti totali accumulativi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Sessione di sensor tracking interrotta (INTERRUPTED) . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Sessione di sensor tracking sospesa (SUSPENDED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Condizione di azzeramento al volo (RESETTING SPREAD). . . . . . . . . . . . . . . . . . . . . . . . 112
Limitazioni nel cambiamento dei parametri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Esempio di programmazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
9. CONVEYOR TRACKING
(PRESTAZIONE OPZIONALE). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..116
Configurazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Principio di funzionamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Monitoraggio del processo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Finestra di inseguimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Istruzioni di movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
lb-rc-c5e-motion_itTOC.fm
4
Sommario
12. SMARTMOVE
(PRESTAZIONE OPZIONALE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...146
Descrizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Jerk Limitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Movimenti Cartesiani . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
13. ALGORITMO DI
MODULAZIONE DEL FLUSSO
(FLOW MODULATE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...148
lb-rc-c5e-motion_itTOC.fm
5
Sommario
lb-rc-c5e-motion_itTOC.fm
6
Sommario
lb-rc-c5e-motion_itTOC.fm
7
Sommario
lb-rc-c5e-motion_itTOC.fm
8
18. INTERFERENCE REGIONS (PRESTAZIONE OPZIONALE) . . . . . . . . . . . . . . . . . ...269
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Tipologia delle Regioni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Regioni Proibite e Consentite Cartesiane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Regioni Sorvegliate Cartesiane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Regioni Proibite Giunti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Regioni Sorvegliate Giunti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Forma e definizione delle Regioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Forma e definizione delle Regioni cartesiane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Sfera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271
Cilindro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272
Parallelepipedo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272
Piano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273
Forma e definizione delle Regioni giunti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Libreria IR_LIB di supporto alla creazione di Regioni di Interferenza . . . . . . . . . . . . . . . . . . . 274
Esempi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Esempio di programma per Interference Regions Cartesiane . . . . . . . . . . . . . . . . . . . . . . . 276
Esempio di programma per un’Interference Region Giunti . . . . . . . . . . . . . . . . . . . . . . . . . 277
lb-rc-c5e-motion_itTOC.fm
00/0110 9
Prefazione
PREFAZIONE
– Simbologia adottata nel manuale
– Documentazione di riferimento
– Modification History
HS-0-0-0-mot_01.fm
08/1112 10
Prefazione
Documentazione di riferimento
Il presente documento si riferisce all’Unità di Controllo C5G.
Il set completo dei manuali del C5G è composto da:
HS-0-0-0-mot_01.fm
11 08/1112
Prefazione
Modification History
– Versione 02/0710:
• Modificato il capitolo Programma TO_SET - gestione del Tool - cambiato il
livello di chiamata della procedura di Autodeterminazione del carico
(prestazione opzionale) e il formato delle videate del Programma TO_SET.
• Aggiunto il nuovo Cap.18. - Interference Regions (prestazione opzionale).
– Versione 03/0111:
• aggiunto il par. 15.7.5 Utilizzo della libreria open source CDetect a pag. 188
nel Cap.15. - Collision Detection (prestazione opzionale),
• aggiunto il Cap.19. - Inseguimento tra assi - Axes Pursuit (prestazione
opzionale),
• aggiunta descrizione del Weaving con forma d’onda Circolare, nel Cap.10. -
Movimento con Weaving (prestazione opzionale).
– Versione 04/0611:
• aggiunto il par. 7.3 Movimento multi-cooperativo a pag. 94 nel Cap.7. -
Movimento Cooperativo (prestazione opzionale), per la gestione della
cooperazione tra due Arm e lo stesso gruppo di assi ausiliari (ad esempio un
posizionatore).
• migliorata la descrizione del Cap.18. - Interference Regions (prestazione
opzionale) e gli esempi relativi.
– Versione 05/0312:
• aggiunti dettagli sull’utilizzo del movimento sincronizzato con movimento
cooperativo abilitato (vd. Nota nel par. 6.2 Arm sincronizzati a pag. 87)
• aggiunto il Cap.9. - Conveyor Tracking (prestazione opzionale), che descrive
la funzionalità opzionale di Conveyor Tracking
• aggiunto il par. 10.7 Weaving su sistemi multiarm a pag. 142. A tale
proposito, leggere attentamente la nota seguente (riportata anche nel
paragrafo suddetto):
– Versione 07/0912:
• aggiunta descrizione per nuovo tipo di Interference Region: regione
Consentita (vd. par. 18.2.1 Regioni Proibite e Consentite Cartesiane a
pag. 270).
– Versione 08/1112:
• aggiunti riferimenti incrociati tra le descrizioni delle opzioni software e i relativi
codici Comau
• aggiunta descrizione della configurazione della variabile predefinita
$AX_PURSUIT_LINKED (vd. par. 19.4 Configurazione dell’opzione software
a pag. 279).
HS-0-0-0-mot_01.fm
08/1112 12
Prescrizioni di Sicurezza Generali
1. PRESCRIZIONI DI SICUREZZA
GENERALI
1.1 Responsabilità
– L'integratore dell'impianto deve eseguire l'installazione e la movimentazione del
Sistema robotico (Robot e Unità di Controllo) in accordo alle Norme di Sicurezza
vigenti nel paese dove viene realizzata l’installazione. L’applicazione e l’utilizzo dei
necessari dispositivi di protezione e sicurezza, l'emissione della dichiarazione di
conformità e l’eventuale marcatura CE dell'impianto, sono a carico dell'Integratore.
ge-0-0-0_01.FM
12 00/1011
Prescrizioni di Sicurezza Generali
1.2.2 Definizioni
Sistema robotico (Robot e Unità di Controllo)
Si definisce Sistema robotico l’insieme funzionale costituito da: Robot, Unità di
Controllo, Terminale di Programmazione ed eventuali opzioni.
Spazio Protetto
Si definisce spazio protetto l’area delimitata dalle barriere di protezione e destinata
all’installazione e al funzionamento del robot
Personale Autorizzato
Si definisce personale autorizzato l’insieme delle persone opportunamente istruite e
delegate ad eseguire le attività elencate al paragrafo Applicabilità.
Personale Preposto
Si definisce preposto il personale che dirige o sovrintende alle attività alle quali siano
addetti lavoratori subordinati definiti al punto precedente
Funzionamento in Programmazione
Modo operativo sotto controllo dell’operatore, che esclude il funzionamento automatico
e che permette le seguenti attività: movimentazione manuale degli assi robot e
programmazione di cicli di lavoro a velocità ridotta, prova del ciclo programmato a
velocità ridotta e, quando ammesso, a velocità di lavoro.
Manutenzione e Riparazione
Si definisce intervento di manutenzione e riparazione l’attività di verifica periodica e/o di
sostituzione di parti (meccaniche, elettriche, software) o componenti del Sistema Robot
e Controllo e l’attività per identificare la causa di un guasto sopraggiunto, che si
conclude con il ripristino del Sistema Robot e Controllo nelle condizioni funzionali di
progetto.
ge-0-0-0_01.FM
00/1011 13
Prescrizioni di Sicurezza Generali
Integratore
Si definisce Integratore la figura professionale responsabile dell’installazione e messa
in servizio del Sistema Robot e Controllo.
Uso Scorretto
Si definisce uso scorretto l’utilizzo del sistema al di fuori dei limiti specificati nella
Documentazione Tecnica.
Campo d’Azione
Per campo d'azione del Robot si intende il volume di inviluppo dell'area occupata dal
Robot e dalle sue attrezzature durante il movimento nello spazio.
1.2.3 Applicabilità
Le presenti Prescrizioni devono essere applicate nell’esecuzione delle seguenti attività:
– Installazione e Messa in Servizio
– Funzionamento in Programmazione
– Funzionamento in Auto / Remote
– Sfrenatura degli assi robot
– Manutenzione e Riparazione
– Messa Fuori Servizio e Smantellamento.
ge-0-0-0_01.FM
14 00/1011
Prescrizioni di Sicurezza Generali
ge-0-0-0_01.FM
00/1011 15
Prescrizioni di Sicurezza Generali
Verificare che il tempo di arresto controllato sia coerente con il tipo di Robot
collegato all’Unità di Controllo. Il tempo di arresto si seleziona attraverso i
selettori SW1 e SW2 sulla scheda SDM.
ge-0-0-0_01.FM
16 00/1011
Prescrizioni di Sicurezza Generali
Funzionamento in Programmazione
– La programmazione del robot è consentita unicamente al personale autorizzato.
– Prima di procedere alla programmazione, l’operatore deve controllare il Sistema
robotico (Robot e Unità di Controllo) per assicurarsi che non sussistano condizioni
anomale potenzialmente pericolose e che nello spazio protetto non siano presenti
persone.
– Per quanto possibile la programmazione deve essere comandata restando
all’esterno dello spazio protetto.
– Prima di operare all’interno dello Spazio Protetto, l’operatore deve accertarsi,
rimanendo all’esterno dello spazio protetto, che tutte le necessarie protezioni e i
dispositivi di sicurezza siano presenti e funzionanti e in particolare che il Terminale
di Programmazione funzioni correttamente (velocità ridotta, enabling device,
dispositivo di arresto d’emergenza, ecc.).
– Durante le fasi di programmazione, la presenza all’interno dello Spazio Protetto è
consentita al solo operatore in possesso del Terminale di Programmazione.
– Se è indispensabile la presenza di un secondo operatore nell'area di lavoro
durante la verifica del programma, questi dovrà disporre di un suo enabling device
(dispositivo di abilitazione) interbloccato con i dispositivi di sicurezza.
– L’attivazione dei motori (DRIVE ON) deve essere comandata sempre da posizione
esterna al campo d’azione del robot, dopo aver verificato che nell’area interessata
non vi sia la presenza di persone. L’operazione di attivazione motori si considera
conclusa alla comparsa della relativa indicazione di stato macchina.
– Durante la programmazione l’operatore deve mantenersi ad una distanza dal robot
tale da permettergli di scansare eventuali movimenti anomali della macchina, e
comunque in posizione tale da evitare possibili rischi di costrizione tra il robot e
parti della struttura (colonne, barriera, ecc.), o tra parti mobili del robot stesso.
– Durante la programmazione l’operatore deve evitare di trovarsi in corrispondenza
di parti del robot che possono, per effetto della gravità, compiere dei movimenti
verso il basso oppure verso l’alto o lateralmente (nel caso di montaggio su piano
inclinato).
– La prova del ciclo programmato alla velocità di lavoro, in alcune situazioni in cui si
renda necessario un controllo visivo a breve distanza, con la presenza
dell’operatore all’interno dello spazio protetto, deve essere attivato solo dopo aver
effettuato un ciclo completo di prova a velocità ridotta. La prova deve essere
comandata da una distanza di sicurezza.
– Occorre prestare particolare attenzione quando si programma mediante Terminale
di Programmazione: in tal caso, benché tutti i dispositivi di sicurezza hardware e
software siano in funzione, il movimento del robot dipende comunque
dall’operatore.
ge-0-0-0_01.FM
00/1011 17
Prescrizioni di Sicurezza Generali
– L’impiego dello sfrenatore genera rischio di caduta assi soggetti a gravità e rischio
di urto determinato da un ripristino non corretto a seguito dell’uso del modulo
sfrenatore. La procedura per il corretto uso dello sfrenatore (sia lo sfrenatore
integrato sia il modulo sfrenatore) è riportata nei manuali di manutenzione.
– Alla successiva ripresa del movimento dopo una interruzione di una MOVE non
completata, la funzione tipica del recupero di traiettoria può generare percorsi non
prevedibili con conseguente rischio di urto. La stessa condizione è presente alla
ge-0-0-0_01.FM
18 00/1011
Prescrizioni di Sicurezza Generali
Manutenzione e Riparazione
– Al montaggio in COMAU Robotics, il robot viene rifornito con lubrificanti che non
contengono sostanze pericolose per la salute tuttavia in alcuni casi, l’esposizione
ripetuta e prolungata al prodotto può provocare manifestazioni cutanee irritative
oppure, in caso di ingestione, malessere.
Misure di Pronto Soccorso. In caso di contatto con gli occhi e con la pelle: lavare
con abbondante acqua le zone contaminate; in caso persistessero fenomeni
irritativi consultare un medico.
In caso di ingestione non indurre il vomito o somministrare prodotti per via orale;
consultare un medico al più presto.
– Le operazioni di manutenzione, ricerca guasti e riparazione sono consentite
unicamente al personale autorizzato.
– L’attività di manutenzione e riparazione in corso deve essere segnalata con
apposito cartello indicante lo stato di manutenzione, posto sul pannello comandi
dell’Unità di Controllo, fino ad operazione ultimata anche se temporaneamente
sospesa.
– Le operazioni di manutenzione e sostituzione di componenti o dell’Unità di
Controllo, devono essere eseguite con l’interruttore generale in posizione di aperto
e bloccato per mezzo di un lucchetto di sicurezza.
– Anche se l’Unità di Controllo non è alimentata (interruttore generale aperto),
possono essere presenti tensioni interconnesse, provenienti dal collegamento con
unità periferiche o con sorgenti di alimentazioni esterne (es. input/output a 24 Vcc).
Disattivare le sorgenti esterne quando si opera sulle parti del sistema interessate.
– La rimozione di pannelli, schermi protettivi, griglie ecc. è consentita solo con
interruttore generale aperto e bloccato con lucchetto di sicurezza.
– I componenti guasti devono essere sostituiti con altri dello stesso codice oppure
equivalenti definiti dalla COMAU Robotics.
Dopo la sostituzione del modulo SDM, sul nuovo modulo verificare che
l’impostazione del tempo di arresto sui selettore SW1 e SW2 sia coerente con il
tipo di Robot collegato all’Unità di Controllo.
ge-0-0-0_01.FM
00/1011 19
Prescrizioni di Sicurezza Generali
ge-0-0-0_01.FM
20 00/1011
Prescrizioni di Sicurezza Generali
1.2.5 Prestazioni
Le presenti prestazioni devono essere considerate prima di installare il sistema robotico:
– Spazi di arresto
– Mission time (valore tipico).
Spazi di arresto
– Considerando il Robot in modalità programmazione (T1), a seguito pressione del
pulsante di stop (fungo rosso su WiTP) in categoria 0 (secondo norma
EN60204-1), si ottiene:
ge-0-0-0_01.FM
00/1011 21
Modalita’ operative e stati del Sistema
2. MODALITA’ OPERATIVE
E STATI DEL SISTEMA
2.1 Introduzione
Nel presente capitolo sono descritti i seguenti argomenti:
– Modalità operative del sistema
– Stati del sistema
– Funzione Stand-by
HS-0-C5E-USO_32.fm
24 08/0912
Modalita’ operative e stati del Sistema
programmi. I movimenti del robot, per ragioni legate alla sicurezza, sono eseguiti ad una
velocità ridotta rispetto al modo automatico (la velocità massima di un robot consentita
in programmazione è di 250 mm/s sul centro della flangia).
Quando il selettore di stato è impostato sulla posizione T1, i programmi possono essere
sviluppati utilizzando l’ambiente di editor e i punti possono essere appresi da Terminale
di Programmazione muovendo il robot manualmente con i tasti di movimento; i
programmi possono essere messi a punto utilizzando gli strumenti di debug offerti dal
sistema. In programmazione, l’esecuzione di una istruzione di movimento richiede la
pressione, da parte dell’operatore, del tasto START e del dispositivo di abilitazione posti
sul Terminale di Programmazione.
Quando il selettore di stato è impostato su T1, il sistema è sotto il controllo
dell’operatore. Quando il selettore si trova sulla posizione REMOTE, il sistema è
controllato da comandi provenienti da remoto (ad esempio da PLC).
Il TOOL, la BASE e il FRAME attivi, non possono essere cambiati quando si lavora in
REMOTE.
Prima che possa essere eseguita qualsiasi operazione che richieda del movimento, è
necessario accendere gli azionamenti:
– se il selettore di stato è in posizione T1, l’accensione degli azionamenti avviene
tenendo premuto in posizione intermedia il Dispositivo di Abilitazione (Enabling
Device) del Terminale di Programmazione; per spegnere gli azionamenti ed
attivare i freni su tutti gli assi gestiti dall’Unità di Controllo, è sufficiente rilasciare il
Dispositivo di Abilitazione (Enabling Device) del Terminale di Programmazione.
Esiste inoltre uno stato (indicato come T1P) che permette di gestire al meglio
alcuni Processi Tecnologici in Programmazione, con velocità massima limitata a
250 mm/s e soggetto ad alcuni vincoli descritti nel par. Stato T1P a pag. 54 sul
manuale USO dell’Unità di Controllo C5G.
Tale stato può essere attivato solo quando il selettore di stato è in posizione T1 e
gli azionamenti sono spenti, premendo il tasto R1 nel menu di destra del
Terminale di Programmazione.
Effettuata l’attivazione, è possibile accendere gli azionamenti e quindi
movimentare il robot.
HS-0-C5E-USO_32.fm
08/0912 25
Modalita’ operative e stati del Sistema
HS-0-C5E-USO_32.fm
26 08/0912
Modalita’ operative e stati del Sistema
HS-0-C5E-USO_32.fm
08/0912 27
Modalita’ operative e stati del Sistema
posto sul Robot Control Cabinet sia posizionato sulla posizione AUTO o REMOTE. Il
TOOL, la BASE e il FRAME attivi, non possono essere cambiati quando si lavora in
AUTO o REMOTE.
Nello stato AUTO, l’avvio dei programmi che sono pronti per essere eseguiti richiede la
pressione del tasto START posto sul terminale di programmazione o dell’input START
da remoto.
Le condizioni che possono portare lo stato del sistema dallo stato AUTO allo stato
HOLD sono:
– commutazione del selettore di stato su una qualsiasi altra posizione;
– richiesta di DRIVE OFF o pressione del tasto di HOLD;
– allarme di sistema.
Per ritornare allo stato AUTO, occorre riportare il selettore sulla posizione desiderata,
richiedere l’accensione degli azionamenti e premere nuovamente il tasto di HOLD. Per
far continuare l’esecuzione dei programmi di movimento occorre premere il tasto
START dopo aver appurato che gli azionamenti siano alimentati (cioè in DRIVE ON).
HS-0-C5E-USO_32.fm
28 08/0912
Modalita’ operative e stati del Sistema
HS-0-C5E-USO_32.fm
08/0912 29
Modalita’ operative e stati del Sistema
HS-0-C5E-USO_32.fm
30 08/0912
Turn-set e Calibrazione - Concetti di Base
3. TURN-SET E CALIBRAZIONE -
CONCETTI DI BASE
3.1 Introduzione
Lo scopo di questo capitolo è di fornire i concetti di base e la terminologia relativi alla
gestione delle informazioni di posizione degli assi robot. La descrizione delle procedure
operative è demandata al capitolo TURN-SET E CALIBRAZIONE - PROCEDURE
OPERATIVE, specifico del robot utilizzato.
Nel presente capitolo si forniscono informazioni di base sui seguenti argomenti:
– Terminologia utilizzata
– Turn-set
– Calibrazione.
3.2 Terminologia
– TRASDUTTORE: Sono supportati due tipi di trasduttori di posizione: encoder e
resolver.
– NUMERO DI GIRI DEL TRASDUTTORE: durante il movimento dell’asse robot, il
trasduttore può compiere più giri; il numero di giro viene inizializzato tramite
l’operazione di calibrazione o quella di turn-set.
– QUOTA DI UN ASSE: la quota di un asse contiene tutte le informazioni necessarie
per determinare l’esatta posizione di un asse nello spazio;
– RICOSTRUZIONE DELLA QUOTA: quando l’Unità di Controllo viene accesa, il
software di sistema provvede, tra le varie inizializzazioni, a ricostruire la quota degli
assi robot.
Il software di sistema esegue un controllo su questa quota; verifica infatti che la
differenza tra posizione ricostruita e posizione prima dello spegnimento sia
inferiore ad una soglia. Se la soglia viene superata, l’Unità di Controllo visualizza
l’errore 59411 - 08 Ax <num_asse> Arm <num_arm> movimento dopo lo
spegnimento e lascia all’operatore la responsabilità di controllare che la posizione
fisica del robot corrisponda alla nuova quota.
– POSIZIONE DI CALIBRAZIONE: è una posizione prestabilita e verificata mediante
appositi attrezzi (comparatori, supporti, attrezzatura di calibrazione). La posizione
di calibrazione è una posizione di riferimento nello spazio di lavoro del robot che
serve a inizializzare la quota di ogni asse.
– COSTANTI DI CALIBRAZIONE: la costante di calibrazione è la differenza fra il
dato letto dal trasduttore e la posizione teorica che lo stesso trasduttore dovrebbe
assumere in quella particolare posizione dell’asse del robot. Infatti, siccome il
posizionamento del trasduttore rispetto al giunto del robot è casuale (in quanto
dipende da come è avvenuto il montaggio del trasduttore stesso), occorre
correggere la posizione reale del trasduttore in funzione della posizione teorica
richiesta dall’asse robot.
La costante di calibrazione è espressa all’interno di un giro trasduttore e viene
memorizzata nella variabile $CAL_DATA. E’ rappresentata in giri motore ed è un
HS-0-C5E-USO_35.fm
00/0811 31
Turn-set e Calibrazione - Concetti di Base
3.3 Turn-set
Lo scopo dell’operazione di turn-set è quello di aggiornare soltanto il numero di
giri del trasduttore nel caso in cui l’Unità di Controllo, alla riaccensione, abbia
perso tale valore.
L’operazione consiste nel portare l’asse interessato nella posizione di calibrazione,
mediante l’uso delle tacche di riferimento, e nel dare l’opportuno comando. Non
necessita di alcuna attrezzatura specifica in quanto l’unico valore inizializzato è il
numero di giri del trasduttore.
L’operazione di turn-set è richiesta quando
– si verificano movimenti degli assi a controllore spento (ad esempio quando viene
segnalato l’errore 59411 - 08 Ax <num_asse> Arm <num_arm> movimento
dopo lo spegnimento)
– si verificano degli eventi che portano alla perdita del solo numero di giri, e quindi
non richiedono l’esecuzione della procedura di calibrazione. Sulla finestra di stato
del Terminale di Programmazione o sul video del PC compare la dicitura Ar:TURN.
A seconda che il turn-set venga effettuato con il robot in posizione di calibrazione di
sistema o in posizione di calibrazione utente, si avrà:
– Turn-set su posizione di calibrazione di sistema
– Turn-set su posizione di calibrazione utente
– Turn-set per assi robot con corsa multigiro
HS-0-C5E-USO_35.fm
32 00/0811
Turn-set e Calibrazione - Concetti di Base
Nella condizione sopra specificata, muovendo l'asse per allineare le tacche, sul
terminale compare il seguente messaggio d'errore di posizionamento:
5409 - 02 Ax <num_asse> Arm <num_arm> posizione giunti non
sufficientemente accurata
HS-0-C5E-USO_35.fm
00/0811 33
Turn-set e Calibrazione - Concetti di Base
3.4 Calibrazione
Lo scopo della procedura di calibrazione è quello di stabilire la posizione degli assi di un
robot riferendola ad un robot ideale. Ciò permette di inizializzare le quote degli assi robot
e di rendere universali le variabili posizionali usate nei programmi robot.
Durante la procedura di calibrazione, quando l’asse desiderato è nella posizione di
calibrazione, vengono memorizzati due valori:
– lo scostamento, all’interno di un giro del trasduttore, tra il valore nella posizione
reale e quello nella posizione teorica dell’asse,
– il numero di giri del trasduttore.
Le tacche presenti sui singoli assi permetteranno di eseguire future operazioni di
turn-set di un robot già installato.
HS-0-C5E-USO_35.fm
34 00/0811
Turn-set e Calibrazione - Concetti di Base
HS-0-C5E-USO_35.fm
00/0811 35
Movimentazione del robot nello stato Programmazione
4.1 Introduzione
Nel corso del presente capitolo si farà riferimento al Terminale di Programmazione
come dispositivo mediante il quale comandare movimenti del robot nello stato
programmazione (selettore di stato in posizione T1).
HS-0-C5E-USO_33.fm
36 00/0110
Movimentazione del robot nello stato Programmazione
La variabile $TOOL descrive la posizione della terna TCP rispetto alla terna della
flangia; la variabile $BASE descrive la posizione della terna base rispetto alla terna
mondo; infine, la variabile $UFRAME descrive la posizione del pezzo da lavorare
rispetto alla terna mondo.
La trasformazione POS indica il punto appreso P sul quale il TCP andrà a posizionarsi
durante l’esecuzione del programma. Si ricorda che tutte le POSITION apprese sono
definite rispetto alla terna di riferimento utente (definita da $UFRAME, con certi valori di
$BASE e $TOOL).
Si immagini ora una penna montata sulla flangia del robot il quale deve scrivere la parola
HS-0-C5E-USO_33.fm
00/0110 37
Movimentazione del robot nello stato Programmazione
COMAU sul tavolo. La trasformazione $BASE definisce il punto il cui si trova la base del
robot, lo spostamento $TOOL indica la penna e lo spostamento $UFRAME indica la
posizione del tavolo.
HS-0-C5E-USO_33.fm
38 00/0110
Movimentazione del robot nello stato Programmazione
metà della velocità di sicurezza). Questo valore può essere liberamente modificato per
adattare la normale velocità di spostamento manuale alle singole esigenze di
programmazione.
Si noti che prima di effettuare uno spostamento nelle modalità cartesiane (Tool,
Uframe, Base) è opportuno verificare la corretta definizione dei sistemi di
riferimento ed in particolare la dichiarazione della terna utensile mediante la
variabile $TOOL. Una non corretta descrizione dell’attrezzo determina errori
nell’apprendimento dei punti e non consente di mantenere invariata la posizione
del TCP durante i movimenti di puro orientamento. Un buon metodo per verificare
la correttezza di $TOOL è verificare che il TCP rimanga fisso mentre si cambia
l’orientamento dell’attrezzo.
La procedura per il movimento manuale dei bracci di una cella robotizzata presenta
piccole varianti a seconda della configurazione del controllore di cella. Nei seguenti
paragrafi si presentano maggiori dettagli per alcune situazioni tipiche.
HS-0-C5E-USO_33.fm
00/0110 39
Movimentazione del robot nello stato Programmazione
Per ulteriori informazioni riferirsi al manuale USO dell’Unità di Controllo C5G - cap.
Motion Page - par. Coop (prestazione opzionale), sottopar. AUX JOG).
Nel caso in cui il Terminale di Programmazione sia il WiTP, è inoltre disponibile il tasto
(hardware) AUX.
Per ulteriori informazioni riferirsi al manuale USO dell’Unità di Controllo C5G - cap.
Uso del Terminale di Programmazione - par. WiTP).
Tuttavia, se l’asse ausiliario movimenta una slitta, una colonna o una pinza integrate, è
possibile effettuarne la movimentazione anche nelle modalità cartesiane (BASE, TOOL
e UFRAME) utilizzando gli stessi tasti della modalità JOINT.
La movimentazione manuale (jog) in modalità cartesiana, permette di muovere l’asse
integrato mantenendo ferma la posizione del TCP (quindi i giunti del robot sono liberi di
muoversi e di adattarsi alla movimentazione dell’asse/degli assi ausiliari, in modo tale
che il TCP rimanga nella posizione iniziale).
HS-0-C5E-USO_33.fm
40 00/0110
Movimentazione del robot nello stato Programmazione
HS-0-C5E-USO_33.fm
00/0110 41
Movimentazione del robot nello stato Programmazione
HS-0-C5E-USO_33.fm
42 00/0110
Movimentazione del robot nello stato Programmazione
HS-0-C5E-USO_33.fm
00/0110 43
Controllo del movimento
5.1 Generalita’
Questo capitolo contiene la descrizione dell’ambiente di movimento del’Unità di
Controllo Robot C5G, eccezion fatta per la movimentazione manuale (tasti di jog del
Terminale di Programmazione) che viene descritta nel Cap. Movimentazione del robot
nello stato Programmazione, e per le prestazioni opzionali che vengono trattate in
successivi capitoli del presente manuale.
In particolare, vengono fornite informazioni sui seguenti argomenti:
– Terne di Riferimento e trasformazione di coordinate
– Traiettoria e Ripristino della traiettoria
– Verifica della posizione
– Controllo della Velocità
– Accelerazione e Decelerazione
– Entrata in soglia (precisione di posizionamento)
– Ripristino del Processo (Process Resume)
– Movimento Continuo
– Sistema con Tool Remoto;
– Movimento integrato;
– Funzionalità di Pallettizzazione (prestazione opzionale)
In questo capitolo sono presenti numerosi riferimenti a variabili predefinite ed istruzioni
del linguaggio PDL2. Per ulteriori informazioni, consultare il manuale del linguaggio
PDL2 Programming Language Manual.
pr-0-0-gpr_04.fm
44 08/1112
Controllo del movimento
La variabile $TOOL descrive la posizione della terna TCP rispetto a quella della terna
della flangia; la variabile $BASE descrive la posizione della terna base rispetto alla terna
mondo; infine, la variabile $UFRAME descrive la posizione del pezzo da lavorare
rispetto alla terna mondo. La trasformazione POS indica il punto appreso P sul quale il
TCP andrà a posizionarsi durante l’esecuzione del programma. Si ricorda che tutte le
POSITION apprese sono definite rispetto alla terna di riferimento utente (definita da
$UFRAME).
Per una migliore comprensione, si immagini l’angolo della stanza indicato dalla terna
mondo ed un robot posizionato vicino ad un tavolo, come illustrato nella Fig. 5.1 - Terne
di riferimento del sistema e spostamento delle coordinate.
Si immagini ora una penna montata sulla flangia del robot il quale debba scrivere la
parola COMAU sul tavolo. La trasformazione $BASE definisce il punto il cui si trova la
base del robot, lo spostamento $TOOL indica la penna e lo spostamento $UFRAME
indica la posizione del tavolo rispetto alla stanza.
Queste terne di sistema semplificano alcune operazioni, ad esempio:
pr-0-0-gpr_04.fm
08/1112 45
Controllo del movimento
– se il robot venisse spostato dalla parte opposta del tavolo, basterebbe definire
nuovamente $BASE e lanciare il programma senza modificare altri punti;
– se la penna fosse sostituita con una penna più grande, basterebbe definire
nuovamente $TOOL e lanciare il programma senza modificare altri punti;
– se il tavolo venisse spostato in un altro punto della stanza, sarebbe sufficiente
definire nuovamente $UFRAME.
Si noti che in alcune applicazioni il valore di $BASE e $UFRAME può essere lasciato a
zero: in questo caso, la terna mondo e la terna relativa al pezzo da lavorare sono poste
alla base del robot e tutte le POSITION apprese sono riferite alla base del robot. Lo
spostamento $TOOL, invece, deve essere sempre definito correttamente in modo da
ottenere il percorso corretto del TCP (Tool Center Point) lungo le traiettorie lineari e
circolari.
PROGRAM setbase
VAR corner, x, xy : POSITION
BEGIN
$UFRAME := POS (0,0,0,0,0,0,")
$TOOL := ... -- correttamente definito
-- Muovere il TCP su tre punti del pezzo mediante i
-- tasti di jog e memorizzare
-- le POSITION corner, x e xy premendo il tasto MOD del TP.
-- Quindi eseguire la seguente istruzione.
$UFRAME := POS_FRAME(corner, x, xy)
END setbase
pr-0-0-gpr_04.fm
46 08/1112
Controllo del movimento
è fissa per ciascun modello di robot ed è descritta nel manuale relativo ad ogni singolo
robot. E’ invece responsabilità dell’operatore la definizione della variabile $TOOL per
l’attrezzatura specifica che deve essere montata sulla flangia.
Due serie di parametri utensile definiscono la posizione di $TOOL:
– tre dimensioni dell’utensile definiscono la componente posizionale di $TOOL. Tali
valori, misurati in millimetri, rappresentano lo spiazzamento del centro dell’utensile
(TCP) rispetto al centro della flangia;
– tre rotazioni utensile definiscono la componente orientamento di $TOOL. Tali
valori, misurati in gradi, rappresentano i tre angoli di rotazione di Eulero.
a. Iniziare la misurazione senza utensili montati sul robot. Assegnare il valore zero a
tutti e sei i parametri dell’utensile in $TOOL.
b. Individuare le direzioni degli assi x, y e z del tool. (Nota: nel caso del robot SMART,
gli assi della base sono paralleli agli assi del Tool quando il robot è puntato verso
l’alto e gli assi piccoli sono a metà corsa).
pr-0-0-gpr_04.fm
08/1112 47
Controllo del movimento
pr-0-0-gpr_04.fm
48 08/1112
Controllo del movimento
Esempio A
L’asse z dell’utensile (u) coincide con l’asse z della
flangia.
In questo caso non è necessario assegnare nessun
valore di rotazione:
(e1, e2, e3) = (0, 0, 0)
Esempio B
L’asse z dell’utensile (u) coincide con l’asse y della
flangia.
pr-0-0-gpr_04.fm
08/1112 49
Controllo del movimento
Esempio C
L’asse z dell’utensile (u) è a 90 gradi rispetto all’asse z
della flangia in direzione -y.
Gli angoli di rotazione sono (-90, 90, 180).
Esempio D
L’asse z dell’utensile (u) è a 90 gradi rispetto all’asse z
della flangia in direzione x.
Gli angoli di rotazione sono (0, 90, 180).
Esempio E
L’asse z utensile (u) è a 90 gradi rispetto all’asse z della
flangia in direzione -x.
Gli angoli di rotazione sono (180, 90, 180).
pr-0-0-gpr_04.fm
50 08/1112
Controllo del movimento
PROGRAM setframe
VAR corner, x, xy : POSITION
BEGIN
$UFRAME := POS(0,0,0,0,0,0,")
$TOOL := ... -- correttamente definito
-- Muovere il TCP su tre punti del pezzo mediante i tasti
-- di jog e memorizzare le POSITION corner, x e xy premendo
-- il tasto MOD del TP.
-- Quindi eseguire la seguente istruzione.
$UFRAME := POS_FRAME(corner, x, xy)
END setframe
5.3 Traiettoria
Rappresenta un movimento dell’Arm da una posizione iniziale a una posizione finale.
La traiettoria di un movimento fra due posizioni apprese viene generata mediante
interpolazione di diversi gruppi di variabili dai loro valori iniziali sulla posizione di
partenza fino ai rispettivi valori finali, sulla posizione finale. La variabile predefinita
$MOVE_TYPE indica il tipo di interpolazione che deve essere utilizzata ed è una
variabile specifica del programma (una per ciascun programma attivo). A questa
variabile è possibile assegnare le costanti predefinite JOINT, LINEAR o CIRCULAR.
JOINT è il valore di default di $MOVE_TYPE. La traiettoria può anche essere
esplicitamente espressa nella istruzione di movimento, associando le parole riservate
JOINT, LINEAR o CIRCULAR all’istruzione MOVE.
Le traiettorie si suddividono in:
– traiettoria articolare : GIUNTI
– traiettoria lineare: LINEARE
– traiettoria circolare: CIRCOLARE.
pr-0-0-gpr_04.fm
08/1112 51
Controllo del movimento
finali. Gli assi si muovono partendo insieme ciascuno dalla propria posizione iniziale e
arrivando insieme ciascuno alla relativa posizione finale. Il percorso seguito dal TCP
(centro dell’utensile), sebbene ripetibile, non è prevedibile.
I movimenti fra due posizioni mediante interpolazione giunti sono sempre possibili.
pr-0-0-gpr_04.fm
52 08/1112
Controllo del movimento
pr-0-0-gpr_04.fm
08/1112 53
Controllo del movimento
breve per i giunti, quindi può succedere che la stringa di configurazione del punto finale
raggiunto differisca da quella presente nell’istruzione di movimento. In tal caso il sistema
esegue comunque il movimento, a meno che la variabile predefinita $TURN_CARE sia
impostata a TRUE; in tal caso un messaggio di errore segnalerà la differenza sul
numero di giri.
Può succedere che variabili di tipo POSITION, apprese con un certo $UFRAME,
abbiano un numero di giri diverso dopo aver cambiato $UFRAME. Se ad esempio un
punto P0 viene appreso con l’asse 4 a 170 gradi e P1 con l’asse 4 a 179 gradi, nessun
numero di giri comparirà nelle variabili posizionali (stringa di configurazione vuota ‘’‘’).
Potrebbe però succedere che, cambiando leggermente $UFRAME i giunti associati a
P0 e P1 cambino. Ad esempio P0 potrebbe avere ora l’asse 4 a 172 gradi e P1 con
l’asse 4 a 181 gradi. In tal caso, il cammino più breve è da 172 a 181 gradi ma la
posizione P1, per muovere l’asse 4 a 181 gradi dovrebbe avere il flag T1:1. P1 ha però
una stringa di configurazione priva di flag di turn, quindi, per evitare l’errore sulla MOVE
LINEAR da P0 a P1 con un nuovo $UFRAME, la variabile predefinita $TURN_CARE
dovrà essere impostata a FALSE.
Una traiettoria giunti (JOINT) o un movimento cartesiano con evoluzione WRIST_JNT,
effettuata su punti dichiarati come POSITION, determina un cammino che segue
l’evoluzione dei giunti, senza considerare la strada minima o massima. Per far
percorrere la strada minima (<180 gradi), è necessario impostare la variabile
$JNT_MTURN a FALSE.
Da notare che la variabile $JNT_MTURN non ha effetto in un movimento giunti su punti
dichiarati come JOINTPOS.
pr-0-0-gpr_04.fm
54 08/1112
Controllo del movimento
Per ulteriori dettagli relativi alle variabili di sistema $OT_xxx ed alla built-in routine
ON_TRAJ_SET si rimanda al manuale PDL2 Programming Language Manual.
pr-0-0-gpr_04.fm
08/1112 55
Controllo del movimento
pr-0-0-gpr_04.fm
56 08/1112
Controllo del movimento
pr-0-0-gpr_04.fm
08/1112 57
Controllo del movimento
pr-0-0-gpr_04.fm
58 08/1112
Controllo del movimento
pr-0-0-gpr_04.fm
08/1112 59
Controllo del movimento
pr-0-0-gpr_04.fm
60 08/1112
Controllo del movimento
movimento nello stesso momento. Tutti gli altri aspetti di questa opzione sono
identici a quelli di SPD_AUX1.
$LIN_SPD_RT_OVR
Essa è riferita alla variabile predefinita $LIN_SPD impostata sul movimento e
rappresenta, in percentuale, la nuova velocità che si vuole ottenere a partire dal
movimento in corso.
Il valore di default è 100: ciò significa che il movimento è eseguito con una velocità
massima pari alla $LIN_SPD. Il valore massimo assegnabile a $LIN_SPD_RT_OVR
dipende dal valore di $LIN_SPD, ed è dato dalla seguente formula:
pr-0-0-gpr_04.fm
08/1112 61
Controllo del movimento
joint speed[axis] =
$MTR_SPD_LIM[axis] * gear ratio[axis] * $JNT_OVR[axis] *
total speed override[arm]
dove “gear ratio” indica il rapporto di trasmissione.
Il giunto che impiega il tempo più lungo per percorrere la distanza fra la posizione iniziale
e quella finale si sposterà alla velocità calcolata sopra. Tutti gli altri giunti si muovono a
velocità inferiori in modo che tutti possano partire dalla posizione iniziale e raggiungere
quella finale nello stesso momento.
pr-0-0-gpr_04.fm
62 08/1112
Controllo del movimento
1. velocità
2. accelerazione
pr-0-0-gpr_04.fm
08/1112 63
Controllo del movimento
pr-0-0-gpr_04.fm
64 08/1112
Controllo del movimento
degli altri giunti viene ridotta in scala del rapporto fra il tempo originale relativo al giunto
e il tempo del movimento del giunto limitante. Ogni giunto deve accelerare fino alla
velocità riscalata e non fino a quella richiesta.
Per determinare il giunto che dovrà governare l’accelerazione (non necessariamente lo
stesso che governa anche la velocità), si valuta il tempo di accelerazione per ciascun
giunto.
Questo tempo è il risultato della combinazione di $MTR_ACC_TIME[axis] e
$JNT_OVR[axis]. Per la definizione del giunto che governa la decelerazione, si utilizza
una combinazione di $MTR_DEC_TIME e $JNT_OVR analogamente a quanto fatto per
la velocità.
In seguito alla definizione dei giunti limitanti per l’accelerazione e la decelerazione (non
necessariamente gli stessi), tutti i giunti vengono ridotti in scala per ottenere lo stesso
tempo di accelerazione e di decelerazione.
A ciascun giunto vengono ugualmente applicati gli override sull’accelerazione e
decelerazione precedentemente descritti.
pr-0-0-gpr_04.fm
08/1112 65
Controllo del movimento
pr-0-0-gpr_04.fm
66 08/1112
Controllo del movimento
Se l’arm non rientra nelle soglie di tolleranza entro il tempo specificato, verrà
visualizzato un messaggio d’errore con severità hold.
pr-0-0-gpr_04.fm
08/1112 67
Controllo del movimento
0 Riportare l’arm sul punto di interruzione della traiettoria mediante l’interpolazione giunti
1 Riportare l’arm sulla posizione iniziale del movimento interrotto utilizzando
l’interpolazione giunti.
2 Portare l’arm sulla posizione di destinazione del movimento interrotto utilizzando
l’interpolazione giunti.
3 Non ripristinare; generare un messaggio d’errore.
4 Se il movimento interrotto era Cartesiano, ripristinare la traiettoria interrotta mediante un
movimento in linea retta. Altrimenti utilizzare l’interpolazione giunti.
5 Se il movimento interrotto era Cartesiano, riportare l’arm alla posizione iniziale del
movimento interrotto mediante un’interpolazione in linea retta. In caso contrario utilizzare
l’interpolazione giunti.
6 Se il movimento interrotto era Cartesiano, portare l’arm alla posizione di destinazione del
movimento interrotto mediante un’interpolazione in linea retta. In caso contrario utilizzare
l’interpolazione giunti.
7-8 reserved
pr-0-0-gpr_04.fm
68 08/1112
Controllo del movimento
pr-0-0-gpr_04.fm
08/1112 69
Controllo del movimento
1. Massima distanza
2. Punto di arresto del movimento
pr-0-0-gpr_04.fm
70 08/1112
Controllo del movimento
2. Punto di arresto
Si noti che il movimento di ritorno è possibile solo sui movimenti di tipo lineare o
circolare.
Il valore della distanza da recuperare viene letta dal sistema dopo ogni fermata.
Dunque, se si modifica $RCVR_DIST durante il movimento di ritorno, il valore avrà
effetto solo dopo la successiva fermata.
Se si interrompe il movimento di ritorno, il valore di $RCVR_DIST viene riletto ma la
distanza da recuperare viene calcolata sempre a partire dal punto di interruzione
originario (Fig. 5.8 - Esempio nel caso di modifica di $RCVR_DIST).
pr-0-0-gpr_04.fm
08/1112 71
Controllo del movimento
di ritorno è data dalla somma del valore di $RCVR_DIST e della distanza percorsa, nella
fase di decelerata, tra il comando di stop e l’effettivo arresto della macchina.
Per abilitare questa modalità occorre impostare la variabile predefinita $RCVR_TYPE
al valore 9.
Non si devono fare movimenti in Fly tra traiettorie Giunti e Cartesiane (nessun
FLY misto).
pr-0-0-gpr_04.fm
72 08/1112
Controllo del movimento
5.10.2.1 FLY_NORM
Quando $FLY_TYPE è impostata a FLY_NORM, MOVEFLY fa sì che la decelerazione
pr-0-0-gpr_04.fm
08/1112 73
Controllo del movimento
pr-0-0-gpr_04.fm
74 08/1112
Controllo del movimento
predefinita $STRESS_PER.
Il valore di default per $STRESS_PER è 50% e deve essere compreso fra 1% e 100%.
Valori maggiori di $STRESS_PER denotano una sollecitazione più elevata, mentre
valori più bassi una sollecitazione inferiore.
I valori più alti indicano al sistema che possono essere utilizzati valori di accelerazione
e di decelerazione maggiori. Il fly, quindi, inizierà e terminerà in un punto più vicino al
punto appreso. Con un valore di $STRESS_PER del 100%, il movimento tenterà di
passare direttamente attraverso il punto intermedio, eseguendo un fly piccolissimo o
non eseguendolo affatto.
Nel caso in cui $STRESS_PER = 50%, con due segmenti in linea retta a 90 gradi l’uno
rispetto all’altro e una piccola variazione nell’orientamento, la traiettoria in fly
assomiglierà molto a quella che verrebbe eseguita se $FLY_TYPE fosse impostato a
FLY_NORM. A differenza di questo, tuttavia, la velocità del TCP rimarrebbe costante.
Incrementando l’angolo fra le due rette (cioè allineando quasi completamente i due
segmenti), la distanza percorsa dal fly, in modalità FLY_CART, sarà più breve e quindi
la traiettoria risulterà più vicina alla posizione intermedia appresa rispetto a
FLY_NORM. Se invece l’angolo viene ridotto, la traiettoria risulterà più distante dal
punto intermedio rispetto a FLY_NORM, ma la sollecitazione esercitata sarà inferiore
rispetto quest’ultimo.
Vedere la Fig. 5.10 - Confronto fra FLY_CART e FLY_NORM ($STRESS_PER=50) per
una rappresentazione grafica di queste situazioni.
Un simile controllo viene eseguito sulla generazione delle traiettorie circolari. Per poter
mantenere le sollecitazioni sull’arm entro i limiti specificati da $STRESS_PER si riduce
la velocità dei movimenti circolari, specialmente in caso di movimenti con un raggio
ridotto (è da notare che questa riduzione viene eseguita sull’intera circonferenza, non
solo sulla traiettoria fra la circonferenza stessa e il movimento successivo).
Per la definizione del valore di $STRESS_PER, tenere sempre presenti i seguenti punti.
– Impostando un valore maggiore per $STRESS_PER si aumentano le probabilità di
mantenere costante la velocità. Inoltre, un valore maggiore di $STRESS_PER
avvicinerà la traiettoria alla posizione intermedia appresa. Tuttavia, quanto più alto
è il valore di $STRESS_PER, tanto più elevate sono le sollecitazioni che si
richiedono alla meccanica, riducendo così la qualità della traiettoria.
– Quando $STRESS_PER è impostata a 100%, le traiettorie diventano
estremamente acute poichè attraversano il punto programmato senza ridurre la
velocità. Ciò può causare sollecitazioni molto alte sul robot, sul componente o
sull’utensile ad esso collegato.
– Valori minori di $STRESS_PER possono essere utilizzati per ridurre le
sollecitazioni provocate da ampi cambiamenti nell’orientamento del polso, anche
pr-0-0-gpr_04.fm
08/1112 75
Controllo del movimento
• FLY_TOL forza il movimento in fly in modo che il TCP passi sul punto
intermedio della traiettoria ad una distanza inferiore a quella impostata in
$FLY_DIST.
La traiettoria viene pianificata in modo simile a FLY_AUTO. Se la traiettoria
così generata rientra nel valore di $FLY_DIST, non subirà ulteriori modifiche.
Se invece la traiettoria supera questo limite, la distanza verrà rispettata e la
velocità verrà ridotta per poter osservare i valori impostati da $STRESS_PER
e $FLY_DIST.
• FLY_PASS forza il movimento in fly in modo che il TCP passi alla distanza
esatta dal punto intermedio, impostata in $FLY_DIST.
Se la distanza pianificata, impostata in $FLY_DIST, è troppo elevata rispetto
alla lunghezza delle traiettorie, il percorso in fly viene calcolato in modo da
essere eseguito alla massima distanza possibile. Se invece la distanza
specificata è inferiore a quella che verrebbe generata da FLY_AUTO, la
pr-0-0-gpr_04.fm
76 08/1112
Controllo del movimento
PROGRAM mov_cart
CONST
arm_num = 1
cond_num = 1
pr-0-0-gpr_04.fm
08/1112 77
Controllo del movimento
ROUTINE print_debug
BEGIN
WRITE ($CRNT_DATA[arm_num].FLY_DBUG, NL)
END print_debug
BEGIN
$CRNT_DATA[arm_num].FLY_DBUG := 0
CONDITION[cond_num] NODISABLE :
WHEN AT END DO
print_debug
ENDCONDITION
-- inizializzazione
ENABLE CONDITION[cond_num]
-- istruzioni move
END mov_cart
pr-0-0-gpr_04.fm
78 08/1112
Controllo del movimento
pr-0-0-gpr_04.fm
08/1112 79
Controllo del movimento
pr-0-0-gpr_04.fm
80 08/1112
Controllo del movimento
pr-0-0-gpr_04.fm
08/1112 81
Controllo del movimento
pr-0-0-gpr_04.fm
82 08/1112
Controllo del movimento
5.12.1.3 Limitazioni
Il movimento integrato tra slitta/colonna e robot è possibile nelle seguenti condizioni:
– non vi sono limitazioni sul modello di robot, tuttavia esso può essere posizionato
rispetto alla flangia della slitta/colonna solo in otto posizioni e cioè: l’asse
Zbase_robot sempre parallelo a Zbase_slitta/colonna (nei due versi) e l’asse Xbase_robot
allineato con l’asse Xbase_slitta/colonna o Ybase_slitta/colonna (quattro possibili
direzioni);
– l’asse corrispondente alla slitta/colonna deve essere il primo asse ausiliario
disponibile;
– è possibile integrare una sola slitta o colonna per ciascun robot;
– non è possibile abilitare o disabilitare l’integrazione della slitta/colonna in tempo
reale (è necessaria una ripartenza dell’Unità di Controllo).
Palletizing Motion
Il codice dell’opzione è CR17926214.
pr-0-0-gpr_04.fm
08/1112 83
Controllo del movimento
5.13.1 Attivazione
a. Portare il robot (con l’opzione disattivata) nella posizione richiesta per attivarla,
c. Verificare che sul TP sia presente la dicitura Pallet nel sesto campo della barra di
stato (vd.Fig. 5.15 - campo evidenziato in viola).
pr-0-0-gpr_04.fm
84 08/1112
Controllo del movimento
NOTA
Dal momento dell’attivazione NON sarà più possibile muovere in jog gli assi del
robot che sono vincolati a mantenere l’assetto del secondo angolo di Eulero pari
a 180° (equivalente ad avere la posizione della flangia parallela al terreno), e
l’asse 4.
5.13.2 Disattivazione
pr-0-0-gpr_04.fm
08/1112 85
Controllo del movimento
BEGIN
$JNT_MTURN := FALSE
ARM_PALLETIZING(ON,1)
MOVE JOINT NEAR pnt0002P BY 300
MOVEFLY LINEAR TO pnt0002P ADVANCE
MOVEFLY LINEAR NEAR pnt0003P BY 20 ADVANCE
MOVE LINEAR TO pnt0003P
MOVEFLY LINEAR AWAY 400 ADVANCE
MOVEFLY JOINT TO pnt0004P ADVANCE
MOVEFLY LINEAR TO pnt0005P ADVANCE
MOVEFLY LINEAR NEAR pnt0006P BY 300 ADVANCE
MOVEFLY LINEAR TO pnt0006P ADVANCE
MOVEFLY LINEAR NEAR pnt0007P BY 20 ADVANCE
MOVE LINEAR TO pnt0007P
MOVEFLY LINEAR AWAY 1000
ARM_PALLETIZING(OFF,1)
END test_arm_palletizing
pr-0-0-gpr_04.fm
86 08/1112
Movimento Sincrono (prestazione opzionale)
6. MOVIMENTO SINCRONO
(PRESTAZIONE OPZIONALE)
Synchronized Arms
Il codice dell’opzione è CR17926204.
pr-0-0-gpr_07.fm
08/1012 87
Movimento Sincrono (prestazione opzionale)
l’Arm MASTER è ARM[1] e l’Arm SERVER è ARM[2]; mentre nella MOVE sincronizzata
successiva:
PROGRAM esempio
BEGIN
-- l’arm principale è l’arm 1, l’arm sincronizzato
-- è l’arm 2
MOVE ARM[1] TO p1 SYNCMOVE ARM[2] TO p2
MOVE TO p1 SYNCMOVE ARM[2] to p2
-- $PROG_ARM si sposta su p1
MOVE ARM[1] TO p1 SYNCMOVE TO p2
-- ERRORE: $SYNC_ARM non è inizializzata
$SYNC_ARM := 2 -- $SYNC_ARM viene inizializzata
MOVE ARM[1] TO p1 SYNCMOVE TO p2
-- $SYNC_ARM (arm 2) si sposta su p2
MOVE TO p1 SYNCMOVE TO p2
-- sono usate $PROG_ARM e $SYNC_ARM
END esempio
La clausola ADVANCE viene applicata all’intera MOVE... SYNCMOVE. Per eseguire un
fly occorre specificare la clausola FLY sul movimento principale e inserire la ADVANCE
prima della SYNCMOVE:
MOVEFLY TO p1 ADVANCE,
SYNCMOVEFLY ARM[2] TO p2,
ENDMOVE
Se la ADVANCE viene inserita dopo p2, il traduttore visualizza un messaggio di
avvertimento e corregge automaticamente l’istruzione.
pr-0-0-gpr_07.fm
88 08/1012
Movimento Sincrono (prestazione opzionale)
pr-0-0-gpr_07.fm
08/1012 89
Movimento Sincrono (prestazione opzionale)
Per ulteriori informazioni consultare il manuale Uso dell’Unità di Controllo C5G - IDE
Page.
LOCK ARM[1]
LOCK ARM[2]
Una volta bloccati simultaneamente entrambi gli arm, la ripresa del movimento sull’arm
1 mediante l’istruzione RESUME ARM[1] non ristabilisce il movimento sincronizzato.
Quest’ultimo viene ristabilito solo riprendendo il movimento anche sul secondo arm
(RESUME ARM[2]).
pr-0-0-gpr_07.fm
90 08/1012
Movimento Sincrono (prestazione opzionale)
Nei sistemi con singolo Arm, esiste un’unica variabile predefinita da utilizzare per la
variazione Run-Time della velocità lineare: $LIN_SPD_RT_OVR.
Viceversa, nei sistemi multi-arm si ha una $LIN_SPD_RT_OVR per ognuno degli Arm
e, per la variazione Run-Time della velocità lineare occorre identificare quale di esse
utilizzare durante l’esecuzione di una SYNCMOVE tra gli Arm.
E’ importante capire esattamente su quale Arm sia attiva tale funzionalità. A tal fine si
opera come descritto di seguito.
Data l’istruzione PDL2 :
Per capire se la variazione Run-Time della velocità è applicabile e quindi su quale ARM
agire, è sufficiente testare il secondo bit del campo
$CRNT_DATA[num_arm].C_ALONG_1D[50]
opportunamente impostato dal sistema, sull’ARM sul quale è attiva la funzionalità di
variazione Run-Time della velocità. Se tale bit è TRUE, significa che l’ARM ad esso
associato è quello che governa la variazione Run-Time della velocità lineare durante
l’esecuzione della SYNCMOVE, mentre l’altro ARM si adeguerà alle variazioni. In tal
modo è garantita la sincronizzazione del movimento.
pr-0-0-gpr_07.fm
08/1012 91
Movimento Cooperativo (prestazione opzionale)
7. MOVIMENTO COOPERATIVO
(PRESTAZIONE OPZIONALE)
Cooperative Motion
Il codice dell’opzione è CR17926200.
pr-0-0-gpr_08.fm
92 08/1112
Movimento Cooperativo (prestazione opzionale)
1. Terna utente
2. Terna della flangia del posizionatore
3. Terna di base del posizionatore
pr-0-0-gpr_08.fm
08/1112 93
Movimento Cooperativo (prestazione opzionale)
dell’arm posizionatore.
Per abilitare e disabilitare il movimento cooperativo fra due arm, può essere utilizzata la
seguente built-in
1. Arm di lavoro
2. Arm del posizionatore
pr-0-0-gpr_08.fm
94 08/1112
Movimento Cooperativo (prestazione opzionale)
1. Arm di lavoro
2. Arm del posizionatore
pr-0-0-gpr_08.fm
08/1112 95
Movimento Cooperativo (prestazione opzionale)
pr-0-0-gpr_08.fm
96 08/1112
Sensor Tracking (prestazione opzionale)
8. SENSOR TRACKING
(PRESTAZIONE OPZIONALE)
Sensor Tracking
Il codice dell’opzione è CR17926205.
pr-0-0-gpr_10.fm
08/1112 97
Sensor Tracking (prestazione opzionale)
PROGRAM sensor
VAR
p1, p2, p3, p4 : POSITION
BEGIN
$SPD_OPT:=LIN_SPD--Per controllare la velocità lineare
$LIN_SPD:=0.1 --Velocità lineare espressa in m/s
MOVE JOINT TO p1
MOVEFLY LINEAR TO p2 ADVANCE
MOVE LINEAR TO p3
MOVE JOINT TO p4
END sensor
Se lungo il tratto cartesiano da p1 a p3 viene abilitato il sensore, l’effetto potrà essere
quello rappresentato in Fig. 8.1 - Traiettoria programmata e controllo sensori in cui la
linea tratteggiata rappresenta la traiettoria programmata mentre la linea continua è la
traiettoria realmente percorsa da TCP sotto il controllo del sensore; la freccia tra le due
traiettorie rappresenta il vettore degli scostamenti. Nell’esempio si noti che
l’inseguimento termina quando la posizione teorica raggiunge il punto p3; su questo
punto l’Unità di Controllo riacquisisce la posizione reale e azzera gli scostamenti
accumulati lungo il percorso, quindi il successivo movimento giunti terminerà
esattamente sul punto programmato p4 come desiderato. Nei seguenti paragrafi
verranno esposte tutte le caratteristiche dell’ambiente di sensor tracking e verrà
spiegato l’uso delle variabili di sistema e delle Built-In con cui è possibile programmare
applicazioni che utilizzano sensori.
pr-0-0-gpr_10.fm
98 08/1112
Sensor Tracking (prestazione opzionale)
pr-0-0-gpr_10.fm
08/1112 99
Sensor Tracking (prestazione opzionale)
pr-0-0-gpr_10.fm
100 08/1112
Sensor Tracking (prestazione opzionale)
1. Flangia
2. Utensile
3. Sensore
4. Terna sensore
5. Terna TCP
pr-0-0-gpr_10.fm
08/1112 101
Sensor Tracking (prestazione opzionale)
1. Terna mondo
pr-0-0-gpr_10.fm
102 08/1112
Sensor Tracking (prestazione opzionale)
pr-0-0-gpr_10.fm
08/1112 103
Sensor Tracking (prestazione opzionale)
Per i sensori integrati la scelta tra le due modalità (assoluta o relativa) dipende dal tipo
di sensore ed è gestita a livello di software di sistema. Per i sensori esterni, invece, viene
lasciata la possibilità di scegliere mediante la variabile di sistema $SENSOR_TYPE: i
valori da 5 a 9 abilitano il funzionamento in modo relativo mentre da 9 a 12 abilitano il
modo assoluto (Tab. 8.3 - Correction_Speed=Factor*Reference_Speed).
– nella maggior parte delle applicazioni industriali i sensori misurano degli
scostamenti RELATIVI in quanto riescono a determinare la posizione della
traiettoria ottimale rispetto alla loro stessa posizione. Anche nel caso di sensori di
forza l’utilizzo più frequente è di considerare in modo relativo le informazioni
misurate. Questo significa che fino a che l’output del sensore è diverso da zero la
traiettoria viene continuamente modificata aggiungendo i nuovi scostamenti ai
vecchi mentre quando l’output è nullo le correzioni accumulate vengono
mantenute e la traiettoria del robot rimane parallela a quella teorica (Fig. 8.4
- Scostamento assoluto);
– la correzione in modalità ASSOLUTA è utile per ottenere un effetto di cedevolezza
sul TCP mediante sensori di forza. In pratica si applica alla traiettoria del robot uno
scostamento proporzionale all’output del sensore di forza. Questo porta l’intero
robot a comportarsi come una molla in tutte le direzioni in quanto al crescere
dell’intensità della forza misurata, aumenta lo scostamento del robot dalla
pr-0-0-gpr_10.fm
104 08/1112
Sensor Tracking (prestazione opzionale)
1. Traiettoria programmata
2. Traiettoria controllata dal sensore
pr-0-0-gpr_10.fm
08/1112 105
Sensor Tracking (prestazione opzionale)
Si noti che la variabile $SENSOR_GAIN viene presa in considerazione anche nel caso
in cui il criterio di distribuzione degli scostamenti è il tempo ($SENSOR_TIME diverso
da zero). In questo caso le componenti di $SENSOR_GAIN saranno utilizzate per
definire la velocità massima di correzione (Fig. 8.7 - Effetti di $SENSOR_GAIN). Per
evitare ogni tipo di limitazione il valore del corrispondente $SENSOR_GAIN può essere
impostato al 100%.
pr-0-0-gpr_10.fm
106 08/1112
Sensor Tracking (prestazione opzionale)
1. Traiettoria programmata
2. Traiettoria controllata dal sensore
3. massima velocità
4. aumento di tempo
L’uso che si farà di questa variabile dipenderà dall’accuratezza delle misure del sensore
utilizzato e dalla cadenza con cui queste misure verranno fornite. Se il sensore fornisce
un’indicazione precisa dello scostamento che deve essere assorbito (in millimetri) ma
con una cadenza bassa, allora il valore di $SENSOR_GAIN è direttamente legato alla
velocità di correzione. Se invece il sensore è in grado di dare solo un’indicazione
generica sulla direzione in cui è necessaria la correzione, la variabile $SENSOR_GAIN
potrà essere utilizzata come guadagno e cioè come un parametro da tarare sulla base
delle oscillazioni che si osservano durante l’applicazione.
pr-0-0-gpr_10.fm
08/1112 107
Sensor Tracking (prestazione opzionale)
pr-0-0-gpr_10.fm
108 08/1112
Sensor Tracking (prestazione opzionale)
pr-0-0-gpr_10.fm
08/1112 109
Sensor Tracking (prestazione opzionale)
1. Traiettoria programmata
2. Traiettoria controllata dal sensore
3. Traiettoria conseguente a guasto del sensore
4. Traiettoria ottimale
5. HOLD causato da messaggio di errore
Si noti che vengono ridefiniti non solo gli scostamenti di traslazione (prime tre
componenti) ma anche quelli di variazione di assetto, quindi, se si vuole riprendere il
movimento con il medesimo assetto col quale ci si era fermati esso non deve essere
cambiato durante la sessione di jog.
La modalità $RCVR_TYPE=8 è utile in casi analoghi e consente di riprendere il
movimento riportandosi esattamente sulla traiettoria programmata azzerando gli
scostamenti accumulati dal sensore; in questa modalità il C5G pianifica una traiettoria
di recupero della posizione attuale alla corrispondente sulla traiettoria programmata per
riprendere quindi il movimento interrotto.
Dopo il recupero gli scostamenti risulteranno azzerati. La Fig. 8.9 - Effetto di
$RCVR_TYPE = 8 illustra il funzionamento di questa modalità.
Si noti che il funzionamento delle modalità da 0 a 6 di $RCVR_TYPE non subisce
variazioni nel caso di sensor tracking abilitato. Si noti quindi che le modalità 0 e 4
riportano il TCP esattamente sulla posizione interrotta mantenendo gli scostamenti
accumulati fino a quel momento, mentre le modalità 1, 2, 5 e 6 riportano il robot sulle
posizioni iniziali e finali programmate azzerando gli scostamenti.
1. Traiettoria programmata
2. Traiettoria controllata dal sensore
3. Traiettoria di recupero
4. HOLD causato da messaggio di errore
pr-0-0-gpr_10.fm
110 08/1112
Sensor Tracking (prestazione opzionale)
1. Traiettoria programmata
2. Traiettoria controllata dal sensore
3. Punto di partenza
4. Punto di arrivo
5. Nuova traiettoria teorica
pr-0-0-gpr_10.fm
08/1112 111
Sensor Tracking (prestazione opzionale)
1. Traiettoria programmata
2. Traiettoria controllata dal sensore
3. Sensor tracking sospeso
pr-0-0-gpr_10.fm
112 08/1112
Sensor Tracking (prestazione opzionale)
1. Traiettoria programmata
2. Traiettoria controllata dal sensore
3. OFFSET RESET senza interrupt
pr-0-0-gpr_10.fm
08/1112 113
Sensor Tracking (prestazione opzionale)
PROGRAM sensor
VAR
p1, p2, p3, p4:POSITION
corr_y, corr_z:REAL
corr, ofst:ARRAY[6] OF REAL
ROUTINE send_corr
BEGIN
get_corr(corr_y, corr_z)
corr[2]:=corr_y; corr[3]:=corr_z
SENSOR_SET_DATA(corr)
SENSOR_GET_OFST(ofst)
WRITE (‘X:‘, ofst[1], ‘ Y; ‘, ofst[2], ‘ Z: ‘, ofst[3], NL)
$TIMER[1] := 0
ENABLE CONDITTRUE[1]
END send_corr
BEGIN
CONDITION[1] :
WHEN $TIMER[1] > 500 DO
send_corr --Invio delle correzioni ogni 500 ms
ENDCONDITION
corr[1]:=0; corr[2]:=0; corr[3]:= 0
corr[4]:=0; corr[5]:=0; corr[6]:= 0
pr-0-0-gpr_10.fm
114 08/1112
Sensor Tracking (prestazione opzionale)
-- Programma in movimento
MOVE JOINT TO p1
$SENSOR_ENBL := FALSE
DISABLE CONDITION[1]
MOVE JOINT TO p4
END sensor
pr-0-0-gpr_10.fm
08/1112 115
Conveyor Tracking (prestazione opzionale)
9. CONVEYOR TRACKING
(PRESTAZIONE OPZIONALE)
Conveyor Tracking
Il codice dell’opzione è CR17926206.
pr-0-0-gpr_11.fm
116 08/1112
Conveyor Tracking (prestazione opzionale)
9.1 Configurazione
Per configurare l’inseguimento su convogliatore, utilizzare il programma IO_CNFG
(Cap.12.1 del manuale USO dell’Unità di Controllo C5G - par.Conveyor Tracking
Kit) per definire eventuali kit associati al convogliatore stesso.
Succesivamente utilizzare l’ambiente Conveyor nella pagina di SETUP del Terminale
di Programmazione, per impostare i parametri base (par.5.17.7 - Conveyor
(prestazione opzionale) del manuale USO dell’Unità di Controllo C5G).
Le variabili di sistema per configurare l'inseguimento su convogliatore sono campi della
struttura di dati $TRK_TBL che è un array di strutture generiche per le funzioni di
tracking.
Per configurare la connessione hardware del convogliatore con C5G sono disponibili le
seguenti variabili:
– $TRK_TBL[nTbl].TT_APPL_ID identifica il tipo di applicazione che si sta
configurando (conveyor = 2):
$TRK_TBL[nTbl].TT_APPL_ID := 2
– $TRK_TBL[nTbl].TT_PORT_TYPE[1] identifica il tipo di porta in input a cui è stato
collegato il trasduttore di posizione (si tratta sempre di una porta FMI, identificata
con il numero 27):
$TRK_TBL[nTbl].TT_PORT_TYPE[1] := 27
– $TRK_TBL[nTbl].TT_PORT_IDX[1] identifica l’indice della porta configurata per la
lettura del trasduttore di posizione. Nel caso di kit predefinito, tale indice viene
assegnato automaticamente dal sistema. Nel caso di kit personalizzato, l’utente
deve indicare l’indice di un FMI già precedentemente mappato.
– Nel caso in cui il trasduttore sia un encoder, è necessario indicare il numero di
impulsi sin/cos del trasduttore mediante l'istruzione:
$TRK_TBL[nTbl].TT_I_PRMS[1] := 0 -- se resolver
$TRK_TBL[nTbl].TT_I_PRMS[1] := 1024 -- se encoder
pr-0-0-gpr_11.fm
08/1112 117
Conveyor Tracking (prestazione opzionale)
pr-0-0-gpr_11.fm
118 08/1112
Conveyor Tracking (prestazione opzionale)
$TRK_TBL[nTbl].TT_R_PRMS[2] := <raggio>
(in caso di Conveyor Roto-Traslante vd. par. 9.9 Utilizzo del Conveyor
roto-traslante a pag. 126). La circonferenza passante per l'origine del riferimento
di base della tavola svolge un ruolo importante nella gestione delle rotazioni in
quanto tutte le distanze e le velocità sono misurate rispetto a questa circonferenza
di base.
– È possibile configurare il valore limite per l'accelerazione e la velocità del robot
durante le fasi di inseguimento tramite le istruzioni:
$TRK_TBL[nTbl].TT_R_PRMS[3] := <limite_velocità>
$TRK_TBL[nTbl].TT_R_PRMS[4] := <limite_accelerazione>
– Inoltre, è possibile definire delle finestre di inseguimento specificando il range di
delimitazione:
$TRK_TBL[nTbl].TT_R_PRMS[5] := <primo_valore>
$TRK_TBL[nTbl].TT_R_PRMS[6] := <secondo_valore>
Dove <primo_valore> indica la quota iniziale del conveyor a partire dal quale il
robot deve iniziare l'inseguimento, mentre <secondo_valore> indica la quota
del conveyor dopo la quale non si deve eseguire nessun inseguimento con il robot
– È possibile configurare un encoder virtuale, ovvero attivare il conveyor su una
porta di input impostando la seguente variabile:
$TRK_TBL[nTbl].TT_R_PRMS[17] := <fattore_di_conversione>
Tale variabile, se diversa da zero, attiva l'inseguimento da una porta in input anche
senza hardware conveyor e rappresenta il fattore di conversione dall'unità di
misura in cui è espresso il valore della porta di input e l'unità di misura in cui deve
essere espresso il conveyor (senza tener in conto il
<valore_rapporto_di_tx> che dovrà comunque essere indicato).
pr-0-0-gpr_11.fm
08/1112 119
Conveyor Tracking (prestazione opzionale)
pr-0-0-gpr_11.fm
120 08/1112
Conveyor Tracking (prestazione opzionale)
Si noti che l'Unità di Controllo considera nulla la velocità del carrello, nel caso in
cui questo inverta il suo moto.
pr-0-0-gpr_11.fm
08/1112 121
Conveyor Tracking (prestazione opzionale)
PROGRAM conv
BEGIN
CONDITION[1]:
WHEN $DIN[1] DO
CONV_TRACK(-1, 1) - azzeramento conveyor da tabella 1
ENDCONDITION
CYCLE
ENABLE CONDITION[1]
WAIT FOR $DIN[1] -- attesa del pezzo
CONV_TRACK(2, 1) -- abilitazione dell'inseguimento
MOVEFLY LINEAR NEAR P1 BY 100 ADVANCE -- movimento di
-- approccio al carrello
MOVE LINEAR TO P1 -- movimento sul pezzo
CLOSE HAND -- prelievo
pr-0-0-gpr_11.fm
122 08/1112
Conveyor Tracking (prestazione opzionale)
pr-0-0-gpr_11.fm
08/1112 123
Conveyor Tracking (prestazione opzionale)
– dopo ogni errore che determina lo sgancio della traiettoria del robot dal carrello,
deve essere eseguita la built-in CONV_TRACK con comando di CONV_OFF
– non è possibile riprendere l'esecuzione dell'inseguimento dopo una caduta di
tensione senza aver portato il robot su una posizione fissa (cioè eseguendo la
built-in CONV_TRACK con comando di CONV_OFF)
– si sconsiglia l'uso della built-in CONV_TRACK come prima istruzione di un
programma HOLDABLE.
pr-0-0-gpr_11.fm
124 08/1112
Conveyor Tracking (prestazione opzionale)
pr-0-0-gpr_11.fm
08/1112 125
Conveyor Tracking (prestazione opzionale)
pr-0-0-gpr_11.fm
126 08/1112
Conveyor Tracking (prestazione opzionale)
pr-0-0-gpr_11.fm
08/1112 127
Conveyor Tracking (prestazione opzionale)
pr-0-0-gpr_11.fm
128 08/1112
Movimento con Weaving (prestazione opzionale)
Weaving Motion
Il codice dell’opzione è CR17926207.
pr-0-0-gpr_09.fm
08/1112 129
Movimento con Weaving (prestazione opzionale)
E’ possibile effettuare il weaving durante una serie di movimenti continui (in fly) o in un
movimento lungo un percorso (PATH). Tuttavia, il weaving verrà attuato solamente
durante movimenti cartesiani o lungo segmenti cartesiani di un percorso. Nel caso in cui
una serie di movimenti in fly o un percorso comprendano movimenti giunti, il weaving si
interrompe durante movimenti giunti e riprende al successivo movimento cartesiano o
segmento di un percorso.
Si definisce primo movimento con weaving il movimento dopo un’interruzione del
pendolamento. Una interruzione può aver luogo se il weaving viene esplicitamente
disabilitato dall’utente, oppure se il movimento è di tipo giunti, oppure se due movimenti
con weaving non sono raccordati con una movimento continuo (fly). Quanto appena
detto per i singoli movimenti vale anche nel caso di segmenti di percorso (PATH).
pr-0-0-gpr_09.fm
130 08/1112
Movimento con Weaving (prestazione opzionale)
pr-0-0-gpr_09.fm
08/1112 131
Movimento con Weaving (prestazione opzionale)
Nota: il calcolo della Velocità trasversale viene fatto con la formula seguente
Left amplitude
Transverse speed = ----------------------------
ts
pr-0-0-gpr_09.fm
132 08/1112
Movimento con Weaving (prestazione opzionale)
1. Dente di sega non smussato 2. Dente di sega smussato 3. Trapezoidale (pausa sinistra e destra)
pr-0-0-gpr_09.fm
08/1112 133
Movimento con Weaving (prestazione opzionale)
– modalità 2
dove:
dwell sum = left dwell + right dwell + 2 * center dwell (ms)
la frequenza massima dipende dalla meccanica dell’arm, ma viene garantita una buona
aderenza alla traiettoria teorica per frequenze inferiori a 5 Hz (weaving cartesiano) o 8
Hz (weaving giunti) su arm progettati per saldatura ad arco.
I parametri del weave - B (vd.Fig. 10.2) valgono per tutte le forma d'onda.
La frequenza nel caso di forma d'onda circolare descritta dalla velocità trasversale è:
pr-0-0-gpr_09.fm
134 08/1112
Movimento con Weaving (prestazione opzionale)
approccio del tool e la tangente alla traiettoria di movimento formano un piano, chiamato
piano della torcia. Viene quindi definito un piano, chiamato piano zero, che è
perpendicolare al piano della torcia e contiene la traiettoria. (Se il movimento è lineare,
allora la tangente alla traiettoria è la linea stessa. Se il movimento è un cerchio, allora
la tangente alla traiettoria è la tangente al cerchio nel suo punto iniziale). Nel caso in cui
il vettore di approccio della torcia si trovi nella stessa direzione della traiettoria
programmata, si verifica un errore
(“37111 tool e traiettoria weave allineati”).
Il piano di weaving è ottenuto dalla rotazione, dal piano zero lungo la traiettoria tangente,
di un angolo specificato in $WEAVE_TBL[n].WV_PLANE. L’angolo è positivo in senso
antiorario guardando nella direzione della traiettoria. La Fig. 10.5 illustra questa
procedura.
E’ possibile eseguire il weaving tra due traiettorie raccordate in fly; in questo caso la
direzione di weaving sulla seconda è ricalcolata mantenendo l’angolo di inclinazione
rispetto al piano delle due traiettorie. Il weaving passerà da una direzione all’altra senza
interrompersi. Questa prestazione consente di programmare percorsi complessi in un
modo molto semplice; si dovrà assegnare l’angolo soltanto all’inizio del primo
movimento con weaving ed l’Unità di Controllo provvederà a calcolare automaticamente
la direzione dei movimenti successivi. Si noti che, sulla seconda traiettoria, l’angolo tra
il piano della torcia e la direzione di weaving non sarà più pari all’angolo indicato in
$WEAVE_TBL[n].WV_PLANE; l’Unità di Controllo fa riferimento a questo angolo
pr-0-0-gpr_09.fm
08/1112 135
Movimento con Weaving (prestazione opzionale)
1. Punto iniziale
2. Angolo del paino di weaving = 0°
1.Direzione di weaving iniziale 2.Punto iniziale 3.Direzione di weaving finale 4. Punto finale
5.Centro della circonferenza
pr-0-0-gpr_09.fm
136 08/1112
Movimento con Weaving (prestazione opzionale)
0 (default).
In questo caso la direzione di pendolamento è, per default, quella corrispondente alla
direzione X della torcia. Qualora sia necessario pendolare in una direzione diversa, è
possibile utilizzare la variabile $WV_TBL[n].WV_DIRECTION_ANGLE che rappresenta
un angolo di rotazione intorno al vettore Z della torcia stessa.
pr-0-0-gpr_09.fm
08/1112 137
Movimento con Weaving (prestazione opzionale)
1. Pezzo saldato 2. Primo movim. in fly 3. Secondo movim. in fly 4. Saldatura 5. Nodo del movim. in fly
pr-0-0-gpr_09.fm
138 08/1112
Movimento con Weaving (prestazione opzionale)
pr-0-0-gpr_09.fm
08/1112 139
Movimento con Weaving (prestazione opzionale)
10.6.1 Modalità
Le modalità di weaving in assenza di movimento programmato sono richiamate
mediante la variabile $CRNT_DATA[num_arm].WEAVE_TYPE_NOMOT che ha le
stesse funzioni descritte nel par. 10.1 Modalità di weaving a pag. 129: l’unica differenza
è che questa modalità viene effettuata senza movimento correlato al pendolamento.
10.6.2 Attivazione
Anche per questa tipologia l’attivazione avviene mediante la definizione della tabella di
weaving da eseguire; occorre però avere l’accortezza di utilizzare la variabile
$CRNT_DATA[2].WEAVE_NUM_NOMOT
che identifica il fatto che il weaving sarà eseguito senza movimento programmato.
Le tabelle lette sono le stesse usate per il weaving con movimento programmato. In
questo modo, se nello stesso programma PLD2 si desidera eseguire weaving con e
senza movimento programmato, si possono utilizzare le stesse informazioni.
10.6.3 Parametri
I parametri utilizzati appartengono allo stesso insieme introdotto nel par. 10.3 Parametri
del weaving a pag. 130.
Esistono però alcune caratteristiche che non hanno senso per questa tipologia: ad
esempio, non si può scegliere la modalità 1 o 4 che comporta una forma d'onda in
funzione della lunghezza d'onda stessa, dato che l'arm non esegue alcun movimento
programmato.
La direzione di di pendolamento è, per default, quella corrispondente alla direzione X
pr-0-0-gpr_09.fm
140 08/1112
Movimento con Weaving (prestazione opzionale)
della torcia. Qualora sia necessario pendolare in una direzione diversa, è possibile
utilizzare la variabile $WV_TBL[n].WV_DIRECTION_ANGLE che rappresenta un
angolo di rotazione della torcia stessa intorno al vettore Z.
$WEAVE_TBL[1].WV_LEFT_AMP := 5
$WEAVE_TBL[1].WV_RIGHT_AMP := 5
$WEAVE_TBL[1].WV_LEFT_DWL := 0
$WEAVE_TBL[1].WV_CNTR_DWL := 0
$WEAVE_TBL[1].WV_RIGHT_DWL := 0
$WEAVE_TBL[1].WV_SMOOTH := TRUE
$WEAVE_TBL[1].WV_TRV_SPD := 0.035
$WEAVE_TBL[1].WV_PLANE := 0
$WEAVE_TBL[1].WV_AMP_PER := 100
$CRNT_DATA[2].WEAVE_NUM_NOMOT := 0
$CRNT_DATA[2].WEAVE_MODALITY_NOMOT := 0
$CRNT_DATA[2].WEAVE_TYPE_NOMOT := 0
c. Definiamo le velocità
$SPD_OPT := SPD_LIN
$LIN_SPD := 0.050000001
MOVE LINEAR TO p1
$CRNT_DATA[2].WEAVE_NUM_NOMOT := 1
DELAY 3000
$CRNT_DATA[2].WEAVE_NUM_NOMOT := 0
pr-0-0-gpr_09.fm
08/1112 141
Movimento con Weaving (prestazione opzionale)
pr-0-0-gpr_09.fm
142 08/1112
Path Governor (prestazione opzionale)
Path Governor
Il codice dell’opzione è CR17926211.
11.1 Introduzione
Il Path Governor è una opzione software che permette di ottenere dei movimenti
cartesiani, circolari e/o lineari, estremamente accurati, riducendo l’errore commesso
in traiettoria.
Esso è applicabile a qualsiasi tipo di macchina, in quanto si basa sul comportamento
REALE del robot stesso. Può essere eseguito per tutte le MOVE o, a scelta, solo per
alcune di esse.
hs-0-0-mot_05.fm
08/1112 143
Path Governor (prestazione opzionale)
hs-0-0-mot_05.fm
144 08/1112
Path Governor (prestazione opzionale)
Come si nota dalla Fig. 11.1, con il Path Governor non necessariamente si raggiunge il
valore massimo di velocità impostat, ma si ha una modulazione della velocità durante il
movimento in funzione del'errore cartesiano che si sta commettendo.
hs-0-0-mot_05.fm
08/1112 145
SmartMove (prestazione opzionale)
12. SMARTMOVE
(PRESTAZIONE OPZIONALE)
SmartMove
Il codice dell’opzione è CR17926210.
– Descrizione
– Jerk Limitation
– Movimenti Cartesiani
12.1 Descrizione
È un algoritmo abilitabile come opzione software e consente di ottimizzare il tempo di
esecuzione di movimenti giunti e/o cartesiano. L’attivazione dell’opzione
SmartMove, comporta l’automatica esecuzione di tutti i movimenti giunti con tale
algoritmo. Al contrario, per l’esecuzione dei movimenti cartesiani con SmartMove,
vedere il par. 12.3 Movimenti Cartesiani a pag. 147.
Attraverso il modello dinamico del robot su tutti e 6 gli assi, che consente di determinare
inerzie, attriti, coppie centrifughe e di coriolis in funzione della postura del robot e del
carico trasportato, viene pianificato il moto del robot nello spazio giunti sfruttando al
massimo le caratteristiche di coppia e velocità messe a disposizione dagli attuatori che
movimentano i giunti, per avere almeno un asse alla massima coppia.
Al fine di ottimizzare i risultati dell'algoritmo ed evitare delle eccessive richieste di coppia
agli assi in movimento, è fondamentale dichiarare correttamente i dati del carico,
possibilmente utilizzando la procedura di Autodeterminazione del carico (prestazione
opzionale).
La tolleranza tra la corrente predetta dal modello dinamico e la corrente reale di ogni
singolo asse è configurabile attraverso le variabili di sistema
$ARM_DATA[num_arm].SM4_SAT_SCALE[num_axis].
In Fig. 12.1 è mostrata una comparazione tra due profili di velocità senza e con
algoritmo SmartMove.
hs-0-0-mot_06.fm
146 08/1112
SmartMove (prestazione opzionale)
$SPD_OPT := SPD_SM4C
hs-0-0-mot_06.fm
08/1112 147
Algoritmo di Modulazione del Flusso (flow modulate)
13. ALGORITMO DI
MODULAZIONE DEL FLUSSO
(FLOW MODULATE)
Questa prestazione, utilizzata in applicazioni quali la spalmatura (Cosmetic Sealing) e
l’incollaggio (Glueing), consente di modulare il flusso di materiale da erogare durante la
lavorazione sul pezzo in funzione della velocità del TCP (Tool Center Point).
Il dispositivo di erogazione, in funzione della tensione impostata, eroga un certo
materiale.
La macchina erogatrice del materiale definisce il valore massimo di tensione che può
gestire.
La tensione da erogare viene di volta in volta passata dal C5G tramite una variabile
predefinita $FMO o $AOUT. Il valore massimo consentito è 65535.
Se, ad esempio, il valore massimo di tensione erogabile è di 10 Volt e la $FMO o $AOUT
è impostata a 65535 (massimo valore per le $FMO o $AOUT), questo significa che la
macchina applicherà la massima tensione (10 Volt ) per erogare il materiale.
E’ necessario procedere all’impostazione di una serie di parametri che consentono di
definire il funzionamento della modulazione.
Tali parametri sono mantenuti nella variabile predefinita $FLOW_TBL (array di 2
elementi), i cui valori sono impostati dai parametri di movimento, con i seguenti campi:
– $FW_ARM (integer): arm al quale questo algoritmo viene applicato.
– $FW_AXIS (integer): asse al quale questo algoritmo viene applicato; da
specificare solo nel caso in cui $FW_VAR sia impostato a 2.
– $FW_CNVRSN (real): fattore di conversione da applicare per i calcolo del flusso
da erogare.
– Questo valore di conversione può essere modificato durante il funzionamento
dell’algoritmo stesso.
– $FW_VAR (integer): INTEGER. Tipo di variabile su cui operare. Se impostata a 1
l’algoritmo di modulazione del flusso viene applicato a $ARM_VEL /cosmetic
sealing); se impostata a 2 l’algoritmo di modulazione del flusso viene applicato a
$RAD_VEL (glueing).
– $FW_SPD_LIM (array di 2 real): indica i limiti di velocità minima e massima oltre
i quali l’algoritmo di modulazione del flusso applicherà il limite più vicino.
– $FW_FLOW_LIM (array di 2 integer): indica i limiti sul flusso minimo e massimo
oltre i quali l’algoritmo di modulazione oltre i quali l’algoritmo applicherà il limite più
vicino.
– $FW_ENBL (boolean): indicatore sullo stato dell’algoritmo, abilitato o disabilitato.
– $FW_START (boolean): indica l’intervallo di tempo (in millisecondi) tra
l’acquisizione del campione di velocità (immediatamente successivo alla chiamata
alla FLOW_MOD_ON) e la scrittura dei dati sulla porta analogica indicata nella
chiamata alla FLOW_MOD_ON.
La formula che determina il calcolo del fattore di conversione si basa sulla velocità
pr-0-0-gpr_12.fm
148 08/1012
Algoritmo di Modulazione del Flusso (flow modulate)
massima a cui si intende far andare il robot e sulla tensione massima applicabile
espressa in bit. Tali valori vengono definiti in fase di configurazione iniziale impostando
i campi della $FLOW_TBL.
Esempio:
Il valore della tensione viene letto dalla macchina che eroga il materiale su una porta
intera, generalmente una $FMO o $AOUT, definita in fase di abilitazione dell’algoritmo;
per abilitare l’algoritmo si utilizza la built-in routine FLOW_MOD_ON, la cui chiamata è:
FLOW_MOD_ON (<porta_analogica>, <indice_tabella_flusso>)
dove:
– <porta> deve essere di tipo INTEGER. Ad esempio: $FMO o $AOUT.
– <indice_tabella_flusso> deve essere di tipo INTEGER. E’ l’indice della
$FLOW_TBL.Valori possibili: 1 o 2.
Esiste, ovviamente, anche una built-in per la disabilitazione, la cui chiamata è:
FLOW_MOD_OFF (<indice_tabella_flusso>)
– <indice_tabella_flusso> INTEGER. E’ l’indice della $FLOW_TBL. Valori possibili:
1 o 2.
Il programma che chiama la FLOW_MOD_ON su un certo indice deve essere lo stesso
che chiama la FLOW_MOD_OFF su quell’indice.
Alla disattivazione del programma la tabella viene rilasciata automaticamente
(FLOW_MOD_OFF implicito).
pr-0-0-gpr_12.fm
08/1012 149
Algoritmo di Modulazione del Flusso (flow modulate)
1. Flusso da erogare
2. Fattore di conversione
y Tensione (V) che la macchina erogatrice deve erogare (scritta nella porta analogica passata
alla FLOW_MOD_ON)
x Velocità del TCP ($ARM_VEL o $RAD_VEL)
pr-0-0-gpr_12.fm
150 08/1012
Presupposti per la programmazione dei robot SMART
14.1 Introduzione
Questo capitolo fornisce ulteriori informazioni sull’uso dei robot COMAU. Essi sono
classificabili come con polso sferico o con polso non sferico.
I robot COMAU ai quali si riferisce la seguente trattazione, sono elencati nella seguente
Tab. 14.1 - Modelli robot trattati:
pr-0-0-gpr_05.fm
03/0111 151
Presupposti per la programmazione dei robot SMART
14.2 Glossario
TCP - Tool Center Point. E’ il punto all’estremità del tool ed è geometricamente descritto
dalla variabile di sistema $TOOL o dalla tabella dei Tool in ambiente DATA. Può essere
locale o remoto. Per i robot SMART NJ4 la posizione che il TCP ha rispetto agli assi,
causa alcune limitazioni all’area operativa.
WCP - Wrist Center Point. Per i robot a polso sferico il WCP si trova all’intersezione dei
giunti 5 e 6; per SMART NJ4 (polso non sferico) non esiste un vero e proprio WCP,
comunque con tale termine si intende l’intersezione dei giunti 4 e 5.
pr-0-0-gpr_05.fm
152 03/0111
Presupposti per la programmazione dei robot SMART
pr-0-0-gpr_05.fm
03/0111 153
Presupposti per la programmazione dei robot SMART
singolarità. La più evidente si verifica quando l’asse 5 è a zero gradi. Quando ciò
accade, l’asse 4 è allineato con l’asse 6. Ciò produce diversi comportamenti, a seconda
della forma del polso. Ulteriori informazioni sono descritte nel par. 14.6.1.4 Singolarità
dell’asse 5 a pag. 159 per robot a polso non sferico e nel par. 14.6.2.1 Singolarità
dell’asse 5 a pag. 165 per robot a polso sferico.
Tuttavia, il software dell’Unità di Controllo COMAU C5G permette di ottenere alte
prestazioni anche muovendo il robot attraverso la singolarità dell’asse 5 (singolarità del
polso).
E’ possibile abilitare questo tipo di evoluzione settando la variabile di sistema
$ORNT_TYPE al valore WRIST_JNT ($ORNT_TYPE:=WRIST_JNT).
Contemporaneamente, per garantire che i giunti del polso percorrano la strada minima
durante il movimento, è necessario impostare la variabile $JNT_MTURN al valore
FALSE.
Si consiglia di abilitare questa modalità solo con istruzioni di movimento che debbano
passare attraverso la singolarità, poichè la modalità di evoluzione di default,
RS_WORLD, generalmente permette di ottenere il miglior comportamento, dal punto
di vista dell’applicazione. La modalità RS_WORLD permette di mantenere costante
l’orientamento, se necessario, o di modificarlo mantenendo il tool su un piano.
L’evoluzione dell’orientamento in modalità RS_WORLD è mostrata nella figura
sottostante. Durante un singolo movimento lineare, il tool è sempre adagiato su un
piano.
Tuttavia, dato che l’evoluzione di default RS_WORLD non permette di muovere il robot
attraverso la zona di singolarità, la modalità WRIST_JNT permette di ottenere il miglior
comportamento in questo caso. L’effetto è che la velocità si mantiene alta e
l’orientamento del tool si allontana leggermente dal piano.
L’evoluzione può anche essere molto grande, se il punto di partenza e il punto di arrivo
sono molto lontani dalla zona di singolarità. E’ possibile che ciò accada, poichè
l’evoluzione WRIST_JNT implementa un algoritmo che mantiene il TCP esattamente
sulla traiettoria Cartesiana, mentre gli assi polso, dal punto iniziale al punto finale,
evolvono in modo giunti .
L’effetto della modalità WRIST_JNT è generalmente buono dal punto di vista
dell’applicazione. In alcuni casi particolari sarebbe necessario seguire alcune ulteriori
regole di programmazione spiegate nel par. 14.7 Regole di programmazione per i robot
con polso non sferico (SMART NJ4) a pag. 165.
L’unica limitazione della modalità WRIST_JNT è che non è permesso il FLY (MOVEFLY
pr-0-0-gpr_05.fm
154 03/0111
Presupposti per la programmazione dei robot SMART
TO ...) tra due movimenti con modalità di evoluzione diversa. Quindi, se una MOVE ha
l’evoluzione di default RS_WORLD e la successiva è in WRIST_JNT, è necessario o
rimuovere il FLY o settare a WRIST_JNT anche la modalità di evoluzione della prima
MOVE.
pr-0-0-gpr_05.fm
03/0111 155
Presupposti per la programmazione dei robot SMART
La figura che segue mostra un esempio del massimo errore angolare applicato
all’orientamento quando si entra nelle varie zone circolari intorno al punto di singolarità.
Questi dati sono stati calcolati con un tool ed esattamente allineato con l’asse 6. Sono
state eseguite molte traiettorie verticali attorno alla posizione di calibrazione del modello
SMART NJ4, programmando opportunamente i punti e muovendo in modalità
WRIST_JNT attraverso la zona di singolarità.
pr-0-0-gpr_05.fm
156 03/0111
Presupposti per la programmazione dei robot SMART
pr-0-0-gpr_05.fm
03/0111 157
Presupposti per la programmazione dei robot SMART
pr-0-0-gpr_05.fm
158 03/0111
Presupposti per la programmazione dei robot SMART
[ -6; +6 ]
Ranges proibiti [ -174; -186 ]
[ +174; +186 ]
[ -7; +7 ]
Ranges di sicurezza [ -173; -187 ]
[ +173; +187 ]
pr-0-0-gpr_05.fm
03/0111 159
Presupposti per la programmazione dei robot SMART
Messaggi di errore
– 36996 (0x9084) "Asse polso a posizione indefinita" prima che parta la MOVE.
– 62479 (0xf40f) "Soluzione del polso indefinita" durante il movimento in una zona proibita.
– 40014 (0x9c4e) "Asse polso in posizione indefinita" durante l’apprendimento/modifica di un
punto.
– RCS MODULE - Stato restituito: -59 "La posizione specificata è in singolarità".
pr-0-0-gpr_05.fm
160 03/0111
Presupposti per la programmazione dei robot SMART
Messaggi di errore
– 36994 (0x9082) "Pos fuori dominio" prima che parta la MOVE.
– 62477 (0xf40d) "Posizione Cartesiana fuori limite" durante il movimento in una
zona proibita.
– 40012 (0x9c4c) "Pos fuori dominio" durante l’apprendimento/modifica di un punto.
– RCS MODULE - Stato restituito: -52 "Posizione Cartesiana fuori area di
lavoro".
pr-0-0-gpr_05.fm
03/0111 161
Presupposti per la programmazione dei robot SMART
pr-0-0-gpr_05.fm
162 03/0111
Presupposti per la programmazione dei robot SMART
Messaggi di errore
– 36995 (0x9083) "Asse 1 a posizione indefinita" prima che parta la MOVE.
– 62478 (0xf40e) "Asse 1 su posizione indefinita" durante un movimento nella zona proibita.
– 40013 (0x9c4d) "Asse 1 in posizione indefinita" durante l’apprendimento/modifica di un punto.
– RCS MODULE - Stato restituito: -52 "Posizione Cartesiana fuori area di lavoro".
1. TCP all’interno della zona proibita 2. TCP remoto all’interno della zona proibita
pr-0-0-gpr_05.fm
03/0111 163
Presupposti per la programmazione dei robot SMART
Messaggi di errore
– 36994 (0x9082) "Pos fuori dominio" prima che parta la MOVE.
– 62477 (0xf40d) "Posizione Cartesiana fuori limite" durante un movimento nella
zona proibita.
– 40012 (0x9c4c) "Pos fuori dal dominio" durante l’apprendimento/modifica di un
punto.
– RCS MODULE - Stato restituito: -52 "Posizione Cartesiana fuori area di
lavoro".
pr-0-0-gpr_05.fm
164 03/0111
Presupposti per la programmazione dei robot SMART
Messaggi di errore
– 36995 (0x9083) "Asse 1 a posizione indefinita" prima che parta la MOVE.
– 62478 (0xf40e) "Asse 1 su posizione indefinita" durante un movimento nella zona
proibita.
– 40013 (0x9c4d) "Asse 1 in posizione indefinita" durante l’apprendimento/modifica
di un punto.
– RCS MODULE - Stato restituito: -52 "Posizione Cartesiana fuori area di
lavoro".
I robot SMART NJ4 sono stati progettati per integrare il cablaggio e per facilitare
la programmazione off-line. Per questo motivo la configurazione del polso è tale
per cui ci sono spazio e distanze necessari al passaggio di cavi pre-intrecciati e
guaine attraverso il polso stesso. Seguendo questo concetto, il robot è
assolutamente privo di cablaggio esterno sull’avambraccio, evitando così
comportamenti non prevedibili dei cavi, durante i movimenti nei pressi della
singolarità del polso, come invece accade con i robot convenzionali.
pr-0-0-gpr_05.fm
03/0111 165
Presupposti per la programmazione dei robot SMART
Lo svantaggio è che i robot SMART NJ4 hanno una zona di singolarità più ampia intorno
all’asse 5, rispetto ai robot con polso sferico (vd. par. 14.6.1.4 Singolarità dell’asse 5 a
pag. 159). I paragrafi successivi spiegano come sia possibile ottenere dei processi
applicativi stando fuori dalla zona di singolarità o muovendo attraverso essa in modalità
WRIST_JNT.
pr-0-0-gpr_05.fm
166 03/0111
Presupposti per la programmazione dei robot SMART
Le seguenti figure mostrano tre possibili casi con una pinza di saldatura a punti.
pr-0-0-gpr_05.fm
03/0111 167
Presupposti per la programmazione dei robot SMART
Si noti che la rotazione attorno al vettore di approccio non è l’unico modo per rimanere
fuori dalla zona di singolarità. Qualsiasi rotazione produce degli effetti e non modifica
MAI la posizione del TCP in x, y e z. Quando l’applicativo non forza l’orientamento del
tool, un piccolo cambiamento potrebbe migliorare considerevolmente la posizione del
polso e le prestazioni del robot.
– il pallet è situato allo stesso livello della posizione di calibrazione del robot;
– il pallet è situato esattamente di fronte al robot, non lateralmente (vd. figura
seguente).
pr-0-0-gpr_05.fm
168 03/0111
Presupposti per la programmazione dei robot SMART
pr-0-0-gpr_05.fm
03/0111 169
Presupposti per la programmazione dei robot SMART
In ogni caso, la miglior soluzione può essere trovata utilizzando una simulazione off-line.
Sarà così possibile valutare quale sia lo spostamento minimo del rack, laterale, o verso
l’alto, o verso il basso.
E’ importante ricordare che i robot SMART NJ4 offrono grandi vantaggi durante la
simulazione, grazie all’assenza del cablaggio esterno sull’avambraccio. Questo
permette di risolvere qualsiasi problema di raggiungibilità in fase di progettazione della
cella. E’ proprio in quella fase che è possibile scegliere la migliore disposizione degli
elementi che compongono la cella, la miglior forma del gripper e le traiettorie del robot.
14.7.1.3 Modifica del tool inserendo un piccolo angolo tra flangia robot e
flangia tool
La progettazione del gripper è molto importante per migliorare le prestazioni del robot.
Questo è vero per qualsiasi modello di robot. Inoltre, per i robot SMART NJ4 la forma
del gripper può risolvere ogni problema di singolarità.
E’ sufficiente avere un piccolo angolo tra la flangia robot ed il gripper, per migliorare
molto la raggiungibilità delle posizioni singolari.
pr-0-0-gpr_05.fm
170 03/0111
Presupposti per la programmazione dei robot SMART
Come mostrato nelle figure qui sopra, tale soluzione permette al robot di seguire una
traiettoria lineare esattamente di fronte a lui, dall’alto verso il basso. Permette anche di
raggiungere tutta l’area di lavoro disponibile mantenendo sempre la posizione frontale
e il medesimo orientamento.
Lo stesso vale per le pinze di saldatura spot. Se il layout della cella è già definito,
l’aggiunta di un piccolo angolo può considerevolmente migliorare il comportamento del
robot. Questo metodo può anche risolvere la situazione peggiore nella quale il vettore
di approccio della pinza è esattamente allineato con l’asse 6 (vd. par. 14.7.1.1 Modifica
dell’orientamento nei punti lungo il percorso a pag. 166).
Naturalmente, l’uso della simulazione off-line semplifica la scelta dell’angolo e permette
pr-0-0-gpr_05.fm
03/0111 171
Presupposti per la programmazione dei robot SMART
pr-0-0-gpr_05.fm
172 03/0111
Presupposti per la programmazione dei robot SMART
14.7.2 Conclusioni
Sono stati dati molti metodi e consigli per migliorare le prestazioni dei robot SMART NJ4
all’interno della zona di singolarità. E’ stato dimostrato che nella maggior parte dei casi
è possibile stare fuori da tale zona ed ottenere dal robot le prestazioni migliori.
Quando è assolutamente necessario muovere attraverso le singolarità, l’uso della
modalità di evoluzione WRIST_JNT permette al robot di muovere a velocità molto alta
con un errore angolare che è accettabile per la maggior parte dei processi.
In ogni caso, si possono efficacemente utilizare i tools di simulazione per ottenere dal
sistema le prestazioni migliori.
pr-0-0-gpr_05.fm
03/0111 173
Collision Detection (prestazione opzionale)
Collision Detection
Il codice dell’opzione è CR17926201.
15.1 Introduzione
L’algoritmo di Collision Detection (prestazione opzionale) fornisce al sistema la capacità
di arrestare il movimento dell’arm del robot, nel momento in cui entrino in azione forze
di disturbo sui giunti.
Questa prestazione può essere abilitata e disabilitata dall’utente, tramite una variabile
di sistema, sia da Programma che da Comando di Sistema.
Cedevolezza
La cedevolezza degli assi è stata introdotta per poter assorbire parte dell’energia
dell’urto (o della eccessiva trazione nel caso di elettrodi incollati) e minimizzare i possibili
danni; tale cedevolezza è attivabile dall’utente. Si consiglia di valutare bene l’uso della
stessa nella propria applicazione.
pr-0-0-gpr_06.fm
174 08/1112
Collision Detection (prestazione opzionale)
$CRNT_DATA[num_arm].COLL_ENBL := TRUE
Di default, esso non viene resettato dal sistema ad ogni DRIVE OFF, ma rimane attivo
fino a che l’utente non decida consapevolmente di disabilitare la prestazione stessa,
impostando il valore del suddetto flag a FALSE.
Sarà possibile passare alla gestione di disabilitazione automatica, impostando a 1 il bit
10 della variabile di sistema $ARM_DATA[num_arm].A_ALONG_1D[12], mediante la
built-in BIT_SET.
BIT_SET($ARM_DATA[num_arm].A_ALONG_1D[12], 10)
La modifica del bit è possibile sia a run-time sia a livello di file di configurazione, ed
possibile salvarla nel file .C5G.
NOTA BENE
La prestazione di Collision Detection, una volta abilitata, rimane attiva finchè
l’utente non la disabilita.
pr-0-0-gpr_06.fm
08/1112 175
Collision Detection (prestazione opzionale)
Cedevolezza
A seguito di un allarme di collisione, si può rendere cedevole l’arresto del robot.
L’intervento della cedevolezza dopo collisione è regolato dall’impostazione a 1 del bit 11
della variabile di sistema $ARM_DATA[num_arm].A_ALONG_1D[12], e sarà compito
dell’utente abilitarne l’intervento inserendo opportunamente nei suoi programmi
l’istruzione:
BIT_SET($ARM_DATA[num_arm].A_ALONG_1D[12], 11).
Il flag potrà essere resettato introducendo nei programmi l’istruzione:
BIT_CLEAR($ARM_DATA[num_arm].A_ALONG_1D[12], 11).
Per evitare che questo bit venga inavvertitamente salvato nel .C5G e abiliti la
prestazione di cedevolezza, legata al Collision Detection, inaspettatamente dopo una
ripartenza, il bit stesso verrà automaticamente resettato dal sistema nella fase di
start-up.
15.4.1 $COLL_TYPE
Per definire il tipo di sensibilità alla Collision Detection, è disponibile la variabile di
sistema $COLL_TYPE che può assumere i seguenti valori:
– COLL_LOW
– COLL_MEDIUM
– COLL_HIGH
– COLL_MANUAL
inizializzate da COMAU, e
– COLL_USER1
– COLL_USER2
– ...
– ...
– COLL_USER10
utilizzabili dall’utente come personalizzazione dei dati COMAU.
E’ possibile che, durante l’esecuzione di un programma, in occasione di certi movimenti,
la collisione debba essere rilevata con sensibilità minori o maggiori.
La sensibilità alla collisione può essere variata su una intera sequenza di MOVE o su
una singola MOVE.
Assegnazione modale (intera sequenza di MOVE):
$CRNT_DATA[num_arm].COLL_ENBL := TRUE
$COLL_TYPE := COLL_MEDIUM
pr-0-0-gpr_06.fm
176 08/1112
Collision Detection (prestazione opzionale)
MOVE TO PNT0001J
MOVE TO PNT0002J
In questo caso la sensibilità rimane impostata per ambedue le MOVE.
Assegnazione nodale con clausola WITH (per una sola MOVE):
$CRNT_DATA[num_arm].COLL_ENBL := TRUE
$COLL_TYPE := COLL_LOW
MOVE TO PNT0001J
MOVE TO PNT0002J WITH $COLL_TYPE := COLL_HIGH
In questo caso la prima MOVE viene eseguita con sensibilità BASSA e la seconda con
sensibilità ALTA.
Ad ogni valore di $COLL_TYPE corrisponde un set di valori per la sensibilità degli assi,
$ARM_SENSITIVITY. I valori base (HIGH, MEDIUM, LOW, MANUAL) sono impostati
da COMAU. I valori COLL_USER1 e COLL_USER2 possono essere utilizzati
dall’utente a sua cura e responsabilità.
Nel caso in cui la funzionalità del Collision Detection sia abilitata nello stato
PROGR (jog, ProgramEdit, etc.), indipendentemente dal valore corrente di
$COLL_TYPE, verranno utilizzate le soglie corrispondenti a COLL_MANUAL
( $ARM_SENSITIVITY [COLL_MANUAL,num_asse] ).
Per le versioni di software precedenti alla 2.02, la responsabilità di riattivare la
prestazione è lasciata all’utente, mediante l’uso dell’istruzione
$CRNT_DATA[num_arm].COLL_ENBL := TRUE , come già detto precedentemente.
pr-0-0-gpr_06.fm
08/1112 177
Collision Detection (prestazione opzionale)
15.5 Affidabilità
Perchè l’algoritmo di Collision Detection operi in modo sicuro ed affidabile, è
INDISPENSABILE che il carico sia stato correttamente identificato dall’utente.
La prestazione di Collision Detection è strettamente dipendente da una corretta
dichiarazione del carico utilizzato: la rilevazione della collisione può essere falsata (ad
es. falsa collisione durante la normale esecuzione di un Programma) da un carico mal
stimato; inoltre, nella fase di soft-servo e contemporanea decelerata ed arresto, il robot
può avere comportamenti anomali a causa di un carico sottostimato o sovrastimato.
pr-0-0-gpr_06.fm
178 08/1112
Collision Detection (prestazione opzionale)
Per questi motivi, prima di attivare la funzione di Collision Detection, l’utente deve
verificare che sia stato definito con precisione il carico utilizzato.
15.6.1 Introduzione
Il seguente insieme di note viene fornito per aiutare l’utente nella impostazione della
funzionalità del Collision Detection.
Condizione necessaria per il funzionamento della suddetta prestazione è l’esistenza per
l’asse/Robot in questione del suo modello dinamico delle coppie di giunti (delle
correnti). Solamente se il robot è dotato di tale modello dinamico è possibile attivare (se
presente/acquistata l’opzione) la prestazione. Il modello dinamico essenzialmente in
funzione della posizione del robot, del suo carico, dell’inerzia è in grado di calcolare con
anticipo le coppie (correnti) che saranno utilizzate per muover il robot in un determinato
movimento. Ad oggi tutti i robot (assi ausiliari esclusi) sono dotati di modello dinamico.
Al fine di ottenere una ottima previsione delle correnti nel modello dinamico è
INDISPENSABILE aver configurato correttamente le variabili che caratterizzano il
carico:
– $TOOL_MASS
– $TOOL_CNTR
– $TOOL_INERTIA
sarà cura dell’operatore: inserire o i dati nominali oppure utilizzare (se
presente/acquistata l’opzione) l’Autodeterminazione del carico (prestazione opzionale),
variare durante il programma in funzione della applicazione i valori di cui sopra in modo
che il controllo abbia sempre dichiarati i valori correnti del carico.
La prestazione del Collision Detection in breve funziona utilizzando le correnti
determinate in anticipo dal modello dinamico e le correnti reali assorbite nel movimento
dai vari motori (assi). La prestazione segnala all’utente l’intervenuta collisione su uno o
più assi se si presenta una ragionevole differenza tra le due correnti di cui sopra.
pr-0-0-gpr_06.fm
08/1112 179
Collision Detection (prestazione opzionale)
Si noti che la definizione delle soglie NON avviene all’interno di tale programma,
bensì nel programma di lavoro!
pr-0-0-gpr_06.fm
180 08/1112
Collision Detection (prestazione opzionale)
$CRNT_DATA[num_arm].COLL_ENABLE:=TRUE
Per la disattivazione:
$CRNT_DATA[numero_arm].COLL_ENABLE:=FALSE
Per quanto concerne l’uso del DRIVE OFF con le versioni di software di sistema
precedenti la 2.02, si fa riferimento a quanto detto precedentemente (vd. NOTA
BENE).
Il tipo di sensitività può essere definito nel programma con due strategie:
• in modo modale
...
$COLL_TYPE := COLL_xxxx
MOVE ...
...
ossia per tutte le MOVE verrà usata la soglia di sensitività scelta
(COLL_xxxx)
• oppure in modo nodale con clausola WITH
MOVE ... WITH $COLL_TYPE:= COLL_xxxx (A)(vd.punto b.)
...
MOVE ... WITH $COLL_TYPE:= COLL_yyyy (B)(vd.punto b.)
ossia, per tutte le MOVE di tipo (A) (vd. punto b.) verrà usata la soglia di
sensitività scelta (COLL_xxxx), per l’altra (COLL_yyyy).
e. False collisioni
Se le soglie (COLL_LOW, COLL_MEDIUM, COLL_HIGH, COLL_MANUAL,
COLL_USER) sono state scelte dall’utente senza una opportuna analisi del tipo di
urto da cui si vuole tutelare, ed in modo indiscriminato sono state scelte soglie
errate per il tipo di movimento contenuto nel programma, si verificheranno delle
False Collisioni, ossia, durante il movimento del robot, il sistema segnalerà
un’avvenuta collisione quando questa non è realmente capitata. Il motivo è che è
stata utilizzata una soglia troppo sensibile per il suddetto movimento (ad esempio
una sensibilità troppo alta in un Movimento con forti accelerazioni/decelerazioni).
pr-0-0-gpr_06.fm
08/1112 181
Collision Detection (prestazione opzionale)
(100% - 90%) * 60 A = 6 A
g. Strategia di impiego
L’utente deve capire quale sia la propria esigenza ed agire in modo ad essa
corrispondente:
– ESIGENZA N.1: uso immediato della prestazione di Collision Detection
La strategia modale è quella che permette all’utente di attivare il Collision
Detection e di utilizzare, ad esempio, un’unica soglia per tutte le tipologie di
movimento (es.: si prova prima con COLL_MEDIUM, poi, se si sono
presentate false collisioni, con COLL_LOW). Va da sé che tale strategia ha il
difetto che la sensibilità del Collision non è stata messa a punto dall’utente per
avere alte prestazioni. Ha il vantaggio della rapidità del settaggio.
Una volta fatto girare il programma utente con ROBOT FREDDO (fermo da
ore), se non vengono rilevate false collisioni, la soglia scelta è sufficiente per
garantire l’attivazione del Collision Detection e non crea falsi errori di
collisione.
Altrimenti occorrerà utilizzare una COLL_USERx con valori di soglie che,
come partenza, hanno i medesimi della COLL_LOW meno 3 punti percentuali
per ogni asse.
– ESIGENZA N.2: uso personalizzato
La strategia nodale è per utenti evoluti che vogliono raggiungere degli alti
gradi di protezione in caso di urti, elettrodi incollati, movimenti di presa/posa
etc.
Qui l’utente, oltre ad aver suddiviso in modo logico i movimenti del
programma, come consigliato al punto b., dovrà effettuare delle prove in più
per identificare, rispetto al singolo movimento quale soglia gli garantisce la più
alta protezione.
Vengono qui di seguito fornite alcune regole operative per singolo
movimento.
• Prendere in considerazione un singolo movimento e ne identifico la tipologia:
• Movimento con forti accelerazioni/decelerazioni (molti centimetri di
spazio) --> movimento di tipo (A) (vd. passo b.)
• Movimento alla massima velocità
•
• Movimento breve (pochi centimetri di spazio) --> movimento di tipo (B)
(vd. passo b.)
• Movimento a velocità ridotta
• Per i movimenti del tipo (A), partire con una soglia di tipo COLL_MEDIUM \
per i movimenti di tipo (B, partire da COLL_HIGH
• Effettuare alcuni cicli di movimento con robot a freddo al 100% (velocità max
di esecuzione del programma). Se non si presentano mai false collisioni, la
soglia è quella giusta.
• Se invece si presentano false collisioni, scegliere una soglia di tipo
COLL_LOW (nel caso di movimento di tipo (B) scegliere COLL_MEDIUM)
• Se continuano a presentarsi false collisioni, inizializzare la COLL_USER1 con
i valori di COLL_LOW:
$ARM_SENSITIVITY[COLL_USER1,ax]:= $ARM_SENSITIVITY[COLL_LOW,ax]
pr-0-0-gpr_06.fm
182 08/1112
Collision Detection (prestazione opzionale)
h. Accortezze di programmazione
Se si intende utilizzare la strategia Nodale, dunque si vuole ottenere il massimo
dalla prestazione di collision, occorre tenere in conto le seguenti osservazioni:
– evitare di posizionarsi su un punto tecnologico (es. di Spot Welding) tramite
un movimento di tipo (A), ossia con forti accelerazioni/decelerazioni.
Introdurre un piccolo movimento di ‘approccio’.
– evitare di lasciare il collison detection attivo quando si effettua l’operazione
tecnologica (ad esempio, si chiude la pinza). Ciò per evitare che movimenti
non controllati di attrezzature possano generare coppie agli assi che possono
essere interpretate come collisione.
pr-0-0-gpr_06.fm
08/1112 183
Collision Detection (prestazione opzionale)
PROGRAM collision
VAR pnt0001j, pnt0002j, pnt0003j, pnt0004j : JOINTPOS FOR ARM[1]
BEGIN
CONDITION[1] :
WHEN AT START DO
$COLL_TYPE := COLL_HIGH
$CRNT_DATA[1].COLL_ENBL := TRUE
ENDCONDITION
CONDITION[2] :
WHEN AT END DO
$CRNT_DATA[1].COLL_ENBL := FALSE
ENDCONDITION
MOVE TO $CAL_SYS
CYCLE
MOVE TO pnt0001j
MOVE TO pnt0002j
pr-0-0-gpr_06.fm
184 08/1112
Collision Detection (prestazione opzionale)
PROGRAM collision2
VAR pnt0001j, pnt0002j, pnt0003j, pnt0004j : JOINTPOS FOR ARM[1]
BEGIN
CONDITION[1] NODISABLE :
WHEN EVENT 99 DO
$CRNT_DATA[1].COLL_ENBL := TRUE
ENDCONDITION
ENABLE CONDITION[1]
MOVE TO $CAL_SYS
$COLL_TYPE := COLL_LOW
$COLL_EFFECT:=2
$CRNT_DATA[1].COLL_ENBL := TRUE
CYCLE
MOVE TO pnt0001j
MOVE TO pnt0002j
pr-0-0-gpr_06.fm
08/1112 185
Collision Detection (prestazione opzionale)
ROUTINE ru_thrs
BEGIN
-- Calcola le soglie di collisione per l'ARM 1, tipo di sensibilità 'coll'
-- ed acquisisce dati per 120 secondi.
ARM_COLL_THRS(1, coll, 120)
END ru_thrs
BEGIN
-- Variabile per mantenere attivo il programma
dummy := FALSE
-- Tipo di sensibilità per il quale si richiede il ricalcolo delle soglie
coll := COLL_USER3
--
-- Definisce un delta tempo per il ricalcolo delle soglie.
--
delta_t := 60000 * 10 -- ogni 10 minuti
CONDITION[1] NODISABLE :
--
-- Ricalcola le soglie se varia il GEN_OVR
--
WHEN EVENT 85 DO
$TIMER[1] := 0
ru_thrs
ENDCONDITION
CONDITION[2]:
--
-- Ricalcola le soglie allo scadere del delta tempo.
--
WHEN $TIMER[1] > delta_t DO
$TIMER[1] := 0
ENABLE CONDITION[2]
ru_thrs
ENDCONDITION
ENABLE CONDITION[1]
ENABLE CONDITION[2]
pr-0-0-gpr_06.fm
186 08/1112
Collision Detection (prestazione opzionale)
PROGRAM colltouch
VAR pnt0006p, pnt0007p, pnt0008p: POSITION
pnt0001p, pnt0002p, pnt0003p, pnt0004p, pnt0005p: POSITION
BEGIN
CONDITION[1]:
WHEN EVENT 94 DO
UNLOCK -- ripristina per
RESUME -- successiva ripartenza
.
.
.
ENDCONDITION
CONDITION[2]NODISABLE:
WHEN EVENT 197 DO
LOCK -- blocca la macchina
CANCEL CURRENT -- cancella il movimento corrente
.
.
.
ENDCONDITION
.
.
.
ENABLE CONDITION[1]
ENABLE CONDITION[2]
$COLL_TYPE:=COLL_USER1
$COLL_EFFECT:=2
$CRNT_DATA[1].COLL_ENBL:=TRUE
CYCLE
MOVE TO ...
.
.
.
END colltouch
pr-0-0-gpr_06.fm
08/1112 187
Collision Detection (prestazione opzionale)
b.1 Se è stato generato da Comau, il file viene sostituito con la versione più recente.
Il movimento, nel programma, può essere spezzato in più tratti, per un massimo di 100
tratti. Grazie a queste routine è possibile acquisire in modo automatico le soglie di
Collision per ogni tratto.
Identificare tratti omogenei di movimento (tra una CD_START e una CD_END) rende le
soglie calcolate molto più fini per il loro utilizzo.
La funzionalità di Collision viene attivata partendo da soglie a freddo e ad ogni ciclo
vengono determinate le soglie in funzione dell’effettivo movimento.
E’ inoltre disponibile una terza routine:
– CD_READ - visualizza (su LUN_TP e LUN_CRT)
• lo stato corrente della Collision (abilitata o disabilitata),
• la collision type corrente ($COLL_TYPE)
• le soglie di sensibilità dei singoli assi.
Segue un esempio di applicazione delle routine appena descritte.
pr-0-0-gpr_06.fm
188 08/1112
Collision Detection (prestazione opzionale)
PROGRAM mov
-- EXPORTED ROUTINES
ROUTINE CD_Start(ai_Coll : INTEGER) EXPORTED FROM CDetect
ROUTINE CD_End EXPORTED FROM CDetect
ROUTINE CD_Read EXPORTED FROM CDetect
BEGIN
MOVE TO $CAL_SYS
CYCLE
CD_START(1)
MOVE TO pnt0001j
MOVE TO pnt0002j
CD_END
CD_START(2)
MOVE LINEAR TO pnt0003j
MOVE TO pnt0004j
CD_END
END mov
pr-0-0-gpr_06.fm
08/1112 189
Uso dei Posizionatori gestiti da C5G
16.1 Introduzione
Il presente capitolo è dedicato all'installatore ed al manutentore della cella robotizzata,
con lo scopo di fornire loro le procedure di uso e le informazioni necessarie per
effettuare la configurazione software del Controllore per la gestione corretta del
posizionatore dotato di assi esterni robot.
In particolare si sottolinea la necessità di effettuare la personalizzazione della
configurazione del posizionatore quando questo non sia un prodotto standard.
In ogni caso, anche con un posizionatore standard, dovrà sempre essere definito
il raggio di ingombro del pezzo.
16.2 Sommario
I seguenti argomenti:
– USO del Terminale di Programmazione (utilizzo del software di
configurazione degli assi esterni) e
– USO del programma TO-SET (calcolo della posizione della base del
posizionatore),
vengono trattati, rispettivamente:
– nel Manuale di Uso dell’Unità di Controllo C5G, nel paragrafo Setup Page, e
– in questo Manuale, Cap. Programma TO_SET - gestione del Tool
hs-0-0-mot_04.fm
190 00/0110
Uso dei Posizionatori gestiti da C5G
I versi di rotazione degli assi dei posizionatori non possono essere scelti
liberamente: essi devono seguire in modo stringente la convenzione per cui gli
assi hanno verso positivo in senso antiorario (rispetto all’asse di rotazione).
In altre parole devono seguire la regola della mano destra riferendosi alla direzione
indicata nella Fig. 16.1 in corrispondenza degli assi: orientando il pollice della mano
destra nella direzione indicata dalla freccia della linea tratteggiata (che rappresenta
ciascun asse), le dita si devono chiudere nella direzione positiva dell'asse rotante. Per
la rappresentazione è stato scelto il posizionatore orbitale perché particolarmente
rappresentativo.
hs-0-0-mot_04.fm
00/0110 191
Uso dei Posizionatori gestiti da C5G
1. asse 1
2. asse 2
Xb, Yb, Zb, Ob= Xbase, Ybase , Zbase, Obase
Xf, Yf, Zf, Of = Xflangia, Yflangia, Zflangia, Oflangia
dove:
250 = velocità massima consentita secondo normativa [mm/s]
955 = fattore di conversione numerico
Rt = rapporto di trasmissione del motore [Mt/axt]
Vm = velocità massima del motore [Rpm]
r = raggio di ingombro del pezzo [mm]
hs-0-0-mot_04.fm
192 00/0110
Uso dei Posizionatori gestiti da C5G
1 - asse 1
Xf, Yf = Xflangia, Yflangia
Si noti la convenzione che riguarda i punti P1, P2, P3 descritti nel Cap. Programma
TO_SET - gestione del Tool per il calcolo della $BASE (o $AUX_BASE) dei
posizionatori.
Si noti inoltre come l'asse ha senso di rotazione positivo in senso antiorario per
rispettare la convenzione della regola della mano destra (vd.Versi di rotazione degli
assi).
16.5.2 Calibrazione
Il posizionatore a tornio non necessita di regole particolari per la posizione di
calibrazione.
hs-0-0-mot_04.fm
00/0110 193
Uso dei Posizionatori gestiti da C5G
Per questi tipi di posizionatori non occorre inserire alcun valore riferito alle lunghezze
assi.
Occorre invece calcolare la velocità da attribuire all'asse del posizionatore in
programmazione, in funzione della dimensione del pezzo che viene montato sul platò,
in modo che la velocità tangenziale massima non superi il valore di 250 mm/s (vedi
normativa vigente). A tale scopo occorre innanzitutto misurare il raggio r massimo del
pezzo da lavorare, come indicato in Fig. 16.3.
1. Pezzo da lavorare
2. Platò del tornio
Nel caso di torni molto lunghi è infatti possibile che il robot venga montato su di
un asse integrato slitta SCP o colonna CRP; in questo caso l'asse integrato sarà
l'asse 7, mentre il tornio diventerà l'asse 8
hs-0-0-mot_04.fm
194 00/0110
Uso dei Posizionatori gestiti da C5G
16.6.1.2 Calibrazione
Le convenzioni per la calibrazione sono le seguenti:
– il primo asse deve calibrare in modo tale che l'asse Zflangia sia allineato a Zbase;
– il secondo asse deve calibrare con tutti gli assi del riferimento flangia paralleli ai
corrispettivi del riferimento base; in particolare Yflangia deve essere parallelo a
Ybase ed avere lo stesso verso.
Inoltre si tenga presente la convenzione che riguarda i punti P1, P2, P3 descritti nel
Cap. Programma TO_SET - gestione del Tool per il calcolo della $BASE (o
$AUX_BASE) dei posizionatori (vd. Fig. 16.4).
hs-0-0-mot_04.fm
00/0110 195
Uso dei Posizionatori gestiti da C5G
1. asse 1
2. asse 2
Xf, Yf = Xflangia, Yflangia
Xb, Yb = Xbase, Ybase
$AX_LEN[ax_logico 1] = L1 $AX_OFST[ax_logico2] = L 2
Ad esempio per un posizionatore formato dagli assi ausiliari 7 e 8: ax_logico 1 = 7 e ax_logico 2 = 8
hs-0-0-mot_04.fm
196 00/0110
Uso dei Posizionatori gestiti da C5G
Nel caso che il pezzo abbia un ingombro inferiore al diametro del platò, r2 deve
risultare pari al raggio del platò stesso. Questo al fine di considerare sempre il
caso peggiore di massimo ingombro del pezzo o della struttura meccanica del
posizionatore in movimento.
hs-0-0-mot_04.fm
00/0110 197
Uso dei Posizionatori gestiti da C5G
– l'asse Zflangia deve essere perpendicolare alla superficie della flangia con verso
uscente.
16.6.2.1.1 Calibrazione
Le convenzioni per la calibrazione sono le seguenti:
– il primo asse deve calibrare in modo tale che l'asse Zflangia sia allineato a Zbase;
– il secondo asse deve calibrare con tutti gli assi del riferimento flangia paralleli ai
corrispettivi del riferimento base; in particolare Yflangia deve essere parallelo a
Ybase ed avere lo stesso verso.
Inoltre si tenga presente la convenzione che riguarda i punti P1, P2, P3 descritti nel
Cap. Programma TO_SET - gestione del Tool per il calcolo della $BASE (o
$AUX_BASE) dei posizionatori (vd. Fig. 16.6).
1. asse 1
2. asse 2
Xb, Yb, Zb, Ob= Xbase, Ybase, Zbase, Obase Xf, Yf, Zf, Of = Xflangia, Yflangia, Zflangia, Oflangia
hs-0-0-mot_04.fm
198 00/0110
Uso dei Posizionatori gestiti da C5G
Nel caso che il pezzo abbia un ingombro inferiore al diametro del platò, r2 deve
risultare pari al raggio del platò stesso; così pure per r1 deve essere utilizzato un
valore minimo pari a r1m per tenere conto della struttura meccanica dell'asse 7.
Questo al fine di considerare sempre il caso peggiore di massimo ingombro del
pezzo o della struttura meccanica del posizionatore in movimento.
hs-0-0-mot_04.fm
00/0110 199
Uso dei Posizionatori gestiti da C5G
1. asse 1
2. asse 2
Xb, Yb, Zb, Ob= Xbase, Ybase , Zbase, Obase
Xf, Yf, Zf, Of = Xflangia, Yflangia, Zflangia, Oflangia
hs-0-0-mot_04.fm
200 00/0110
Uso dei Posizionatori gestiti da C5G
16.7.2 Calibrazione
Le convenzioni per la calibrazione sono le seguenti:
– il primo asse deve calibrare in modo tale che l'asse Zflangia sia parallelo a Zbase;
– il secondo asse deve calibrare con tutti gli assi del riferimento flangia paralleli ai
corrispettivi del riferimento base; in particolare Yflangia deve essere parallelo a
Ybase ed avere lo stesso verso.
Inoltre si tenga presente la convenzione che riguarda i punti P1, P2, P3 descritti nel
Cap. Programma TO_SET - gestione del Tool per il calcolo della $BASE (o
$AUX_BASE) dei posizionatori (vd. Fig. 16.8).
hs-0-0-mot_04.fm
00/0110 201
Uso dei Posizionatori gestiti da C5G
Nel caso che il pezzo abbia un ingombro inferiore al diametro del platò, r2 deve
risultare pari al raggio del platò stesso r2m; così pure per r1 deve essere utilizzato
un valore minimo pari a r1m per tenere conto della struttura meccanica dell'asse 7.
Questo al fine di considerare sempre il caso peggiore di massimo ingombro del
pezzo o della struttura meccanica del posizionatore in movimento.
Si noti che deve essere inserito il valore assoluto dell’angolo alfa anche se l’unità
di misura dell’offset asse risulta data in millimetri.
hs-0-0-mot_04.fm
202 00/0110
Uso dei Posizionatori gestiti da C5G
Sul Terminale di Programmazione l'asse lineare può essere mosso, nelle modalità
cartesiane, utilizzando i tasti 7+ e 7- e non è possibile abilitare o disabilitare
l'integrazione della slitta in tempo reale (è necessaria una ripartenza del
Controllore).
Xbs , Ybs, Zbs = Xbase_slitta, Ybase_slitta, Zbase_slitta Xbr, Ybr, Zbr = Xbase_robot, Ybase_robot, Zbase_robot
hs-0-0-mot_04.fm
00/0110 203
Uso dei Posizionatori gestiti da C5G
16.8.1.2 Calibrazione
La posizione di calibrazione della slitta normalmente è fissata in prossimità del limite
negativo della corsa e contrassegnata con la tacca di azzeramento.
Essendo un asse integrato non è trattato come un posizionatore del pezzo da lavorare
e quindi non occorre effettuare il rilievo dei punti P1, P2 e P3 descritti nel
Cap. Programma TO_SET - gestione del Tool.
I parametri necessari per la corretta descrizione cinematica della slitta integrata sono
riportati in Fig. 16.11.
Successivamente, il software di configurazione, disponibile su Terminale di
Programmazione, calcola il valore della velocità in manuale.
Segue una tabella riassuntiva dei dati meccanici utlili, tenendo presente che è tassativo
che la slitta integrata sia movimentata con l'asse ausiliario 7.
Oltre ai dati geometrici L e H sopra indicati, per la completa descrizione cinematica della
slitta integrata deve essere definito anche l’angolo di montaggio:
– rotazione di 180° ==> Xbase_robot in direzione opposta a Xbase_slitta;
hs-0-0-mot_04.fm
204 00/0110
Uso dei Posizionatori gestiti da C5G
hs-0-0-mot_04.fm
00/0110 205
Uso dei Posizionatori gestiti da C5G
appoggiato sulla leva (robot in piedi). Pertanto la base del robot dovrà essere sempre
perpendicolare all'asse di rotazione della colonna.
Sono viceversa ammesse 4 posizioni di orientamento (a passi di 90°) della base del
robot rispetto alla base della colonna e anche il verso positivo della rotazione è
liberamente selezionabile.
1 - rotazione della colonna 2 - riferimento della base della colonna 3 - base del robot
16.8.2.2 Calibrazione
La posizione di calibrazione della colonna è determinata a metà della corsa utile e
contrassegnata con la tacca di azzeramento.
Essendo un asse integrato non è trattato come un posizionatore del pezzo da lavorare
e quindi non occorre effettuare il rilievo dei punti P1, P2 e P3 descritti nel
Cap. Programma TO_SET - gestione del Tool.
1 - rotazione destrorsa della colonna R = raggio della colonna H = altezza della colonna
Xb, Yb, Zb = Xbase, Ybase, Zbase L’asse è destrorso: in caso contrario modificare il segno del rapporto di
trasmissione.
hs-0-0-mot_04.fm
206 00/0110
Uso dei Posizionatori gestiti da C5G
Segue una tabella riassuntiva dei dati meccanici utili, tenendo presente che è tassativo
che la colonna integrata sia movimentata con l'asse ausiliario 7.
Oltre ai dati geometrici R e H sopra indicati, per la completa descrizione cinematica della
colonna integrata devono essere definiti anche i seguenti dati booleani:
– un bit UpDown che indica se il robot sia appoggiato verso l'alto (TRUE) o se sia
capovolto (FALSE) (come in Fig. 16.14);
– due valori booleani che indicano come sia orientata la base del robot rispetto alla
base della colonna (questa convenzione è stata mantenuta identica a quanto
previsto per la slitta integrata per ragioni di compatibilità); in particolare la
convenzione è la seguente (vd. Fig. 16.15):
• rotazione di 180° - Xbase_robot in direzione opposta a Xbase_colonna ;
• rotazione di 0° - Xbase_robot nella direzione della Xbase_colonna ;
• rotazione di 270° - Xbase_robot in direzione opposta a Ybase_colonna ;
• rotazione di 90° - Xbase_robot nella direzione della Ybase_colonna ;
hs-0-0-mot_04.fm
00/0110 207
Uso dei Posizionatori gestiti da C5G
Sul Terminale di Programmazione, gli assi lineari possono essere mossi, nelle
modalità cartesiane, utilizzando i tasti AUX A - AUX B (selezionando a due a due
gli assi che si desidera movimentare).
E' inoltre possibile movimentare il portale utilizzando i tasti del JPAD, dove ogni
coppia di tasti permette di movimentare un singolo asse del portale.
Per ulteriori informazioni riguardanti i tasti AUX A - AUX B e il JPAD, riferirsi al
manuale Uso dell’Unità di Controllo C5G - par. 6.2.1.2 Tasti neri - Cap.6 Uso del
Terminale di Programmazione
hs-0-0-mot_04.fm
208 00/0110
Uso dei Posizionatori gestiti da C5G
16.8.3.2 Calibrazione
La posizione di calibrazione del portale, normalmente è fissata in prossimità del limite
negativo della corsa di ogni singolo asse ausiliario, contrassegnato con la tacca di
azzeramento su ogni asse ausiliario.
Segue una tabella riassuntiva dei dati meccanici utili, tenendo presente che è tassativo
che il primo asse del portale sia il 7 e che i successivi siano consecutivi all'asse 7.
hs-0-0-mot_04.fm
00/0110 209
Uso dei Posizionatori gestiti da C5G
Sul Terminale di Programmazione, gli assi lineari possono essere mossi, nelle
modalità cartesiane, utilizzando i tasti AUX A - AUX B (selezionando a due a due
gli assi che si desidera movimentare).
Per ulteriori informazioni riguardanti i tasti AUX A - AUX B, riferirsi al manuale Uso
dell’Unità di Controllo C5G - par. Tasti neri - Cap. Uso del Terminale di
Programmazione.
hs-0-0-mot_04.fm
210 00/0110
Uso dei Posizionatori gestiti da C5G
16.8.4.2 Calibrazione
La posizione di calibrazione del portale normalmente è fissata in prossimità del limite
negativo della corsa di ogni singolo asse ausiliario, contrassegnato con la tacca di
azzeramento su ogni asse ausiliario.
I parametri necessari per la corretta descrizione cinematica del portale a 2 assi lineari
sono riportati in Fig. 16.19.
Successivamente, il software di configurazione, disponibile da Terminale di
Programmazione, calcola la velocità in manuale.
Segue una tabella riassuntiva dei dati meccanici utili, tenendo presente che è tassativo
che il primo asse del portale sia il 7 e che il successivo sia consecutivo all'asse 7.
hs-0-0-mot_04.fm
00/0110 211
Uso dei Posizionatori gestiti da C5G
Oltre ai dati geometrici sopra indicati, per la completa descrizione cinematica del portale
a 2 assi lineari deve anche essere specificato l'angolo di montaggio della base del robot
sulla flangia del portale.
hs-0-0-mot_04.fm
212 00/0110
Uso dei Posizionatori gestiti da C5G
– l'asse Xbase giace sulla superficie di appoggio ed è orientato nel senso della corsa
positiva dell'asse della slitta;
– l'asse Ybase risulta di conseguenza con direzione indicata in Fig. 16.20.
Sulla trave a sbalzo (leva) è ricavata la flangia di attacco della base del robot che può
essere posizionato soltanto in due posizioni: o appeso alla leva (come in Fig. 16.20) o
appoggiato sulla leva (robot in piedi). Pertanto la base del robot dovrà essere sempre
perpendicolare all'asse di rotazione della colonna.
Sono viceversa ammesse 4 posizioni di orientamento (a passi di 90°) della base del
robot rispetto alla base della colonna. Inoltre è possibile selezionare l'angolo di
montaggio della base della colonna sulla flangia della slitta (angolo in Fig. 16.21)
così come l'offset tra la flangia della slitta e la base della colonna (H1 in Fig. 16.21).
16.8.5.2 Calibrazione
La posizione di calibrazione della colonna è determinata a metà della corsa utile e
contrassegnata con la tacca di azzeramento; la posizione di calibrazione della slitta è
normalmente fissata in prossimità del limite negativo della corsa dell'asse ausiliario,
contrassegnato con la sua tacca.
hs-0-0-mot_04.fm
00/0110 213
Uso dei Posizionatori gestiti da C5G
Segue una tabella riassuntiva dei dati meccanici utili, tenendo presente che è tassativo
che il primo asse della colonna traslo-rotante sia il 7 e che sia quello lineare della slitta
(cioè l’asse traslante).
Oltre ai dati geometrici sopra indicati (H2 per descrivere l'altezza della colonna e R per
descriverne il raggio), per la completa descrizione cinematica della colonna
traslo-rotante devono anche essere definiti i seguenti parametri:
– un bit Up/Down che indica se il robot sia appoggiato verso l'alto (TRUE) o se sia
capovolto (FALSE);
– un valore Angolo di montaggio Robot, che indica come sia orientata la base del
robot rispetto alla base della colonna; in particolare la convenzione è la seguente:
• rotazione di 180° Xbase_robot in direzione opposta a Xbase_colonna ;
• rotazione di 0° Xbase_robot nella direzione della Xbase_colonna ;
• rotazione di 270° Xbase_robot in direzione opposta alla Ybase_colonna ;
• rotazione di 90° Xbase_robot nella direzione della Ybase_colonna .
hs-0-0-mot_04.fm
214 00/0110
Programma TO_SET - gestione del Tool
17.1 Introduzione
TO_SET è un ambiente che permette di calcolare i valori di $TOOL, $UFRAME,
$AUX_BASE dei posizionatori, in modo guidato e automatico. Permette, inoltre, di
attivare ed eseguire la procedura di Autodeterminazione del carico (prestazione
opzionale).
Le sue principali caratteristiche sono le seguenti:
– È totalmente organizzato a menù, guida l'operatore ad eseguire i passi necessari,
visualizza messaggi di errore o di semplice "attenzione".
– Tutti i messaggi sono in lingua: quando viene richiamato, TO_SET assume la
lingua correntemente impostata nell’Unità di Controllo C5G.
– Utilizza esclusivamente il Terminale di Programmazione con videate dedicate.
Nel presente capitolo vengono fornite informazioni dettagliate sui seguenti argomenti:
– Attivazione del TO_SET
– Videata iniziale del TO_SET
– Calcolo Automatico TOOL
– Calcolo Automatico UFRAME
– Calcolo automatico BASE per POSIZIONATORI (prestazione opzionale)
– Autodeterminazione del carico (prestazione opzionale)
HS-0-C5E-USO_44.fm
08/1112 215
Programma TO_SET - gestione del Tool
17.2 Attivazione
Nel caso in cui sia necessario reinstallare TO_SET, procedere nel seguente modo:
HS-0-C5E-USO_44.fm
216 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 217
Programma TO_SET - gestione del Tool
Tramite i tasti funzione F1..F6 è possibile selezionare una delle voci visualizzate:
TOOL (F1): calcolo automatico TOOL
UFRAME (F2): calcolo automatico UFRAME
POSITIONER (F3): calcolo automatico Base per POSIZIONATORI
AUTODETERMINAZIONE DEL CARICO (F4): determinazione delle caratteristiche del carico
Uscita TO_SET (F6): fine del programma TO_SET
Si noti che, ogni qualvolta l’utente decida di salvare il valore calcolato, esso viene
salvato nella corrispondente tabella della Data Page.
HS-0-C5E-USO_44.fm
218 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 219
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
220 08/1112
Programma TO_SET - gestione del Tool
– Z_tool (calcolo di <A>: eulero 1; <E> eulero 2). Vd. Fig. 17.12.
Per associare al nuovo TCP dell'attrezzo la nuova Z_tool, occorre orientare il
nuovo TCP (ruotando il TOOL di assi 4 e 5) finché la direzione dell'attrezzo che si
vuole fare assumere come nuova Z_tool sia coincidente in direzione e verso con
Z_rifer.
Esempio:
supponendo che l'attrezzo sia una torcia di saldatura, volendo avere il nuovo
Z_tool uscente dalla torcia, occorre portare la torcia stessa in posizione
perpendicolare al sistema di riferimento (cioè nella stessa direzione di Z_rifer), in
modo che Z_rifer venga assunto come Z_tool uscente dalla torcia.
– X_tool e Y_tool (calcolo di <R>: eulero 3). Vd. Fig. 17.13.
Per associare al nuovo TCP dell'attrezzo la nuova X_tool e Y_tool, occorre
orientare il nuovo TCP (ruotando in TOOL di asse 6) finché le direzioni dell'attrezzo
che si vuole fare assumere come nuova X_tool e Y_tool siano coincidenti in
direzione e verso rispettivamente con X_rifer e Y_rifer.
Esempio:
supponendo che l'attrezzo sia una torcia di saldatura, volendo avere il nuovo
X_tool orientato secondo il "piano torcia" individuato tra la torcia stessa e la staffa
di fissaggio, occorre orientare questo piano fino a farlo coincidere con la direzione
X_rifer, in modo che X_rifer venga assunto come X_tool, associato al "piano
torcia". Lo stesso discorso vale volendo riferirsi alla Y_tool.
17.4.3 Procedura
Alla procedura si accede mediante la pressione del tasto F1 da Fig. 17.2.
Se viene immesso il comando TOOL (premendo il tasto F1) si accede ad una seconda
schermata che chiede all'utente di selezionare tool locale o tool remoto:
Comandi accettati:
HS-0-C5E-USO_44.fm
08/1112 221
Programma TO_SET - gestione del Tool
A questo punto viene scandita la tabella che contiene i tool già esistenti per verificare in
quale delle seguenti condizioni ci si trova:
– Il numero di tool immesso corrisponde ad una posizione vuota in tabella e quindi si
procede al calcolo del tool con uno dei due metodi (Fig. 17.6)
– Il tool immesso esiste già in tabella e quindi si visualizzano la misura e il metodo
usato in precedenza per il calcolo (Fig. 17.7).
Come si può notare nello stesso file possono coesistere tool calcolati con il metodo
standard (senza position acquisite) e tool calcolati con la nuova procedura che associa
alla misura del tool anche le position acquisite, sarà quindi cura dell'utente accertarsi
che il file tt_tool1.var presente in UD: sia quello corretto, contenente l'eventuale tool da
verificare.
Comandi accettati:
HS-0-C5E-USO_44.fm
222 08/1112
Programma TO_SET - gestione del Tool
Comandi accettati:
HS-0-C5E-USO_44.fm
08/1112 223
Programma TO_SET - gestione del Tool
Richiede di portare il TCP nel Tool Master sul riferimento, con le relative misure
correttamente definite (Fig. 17.8).
Il robot può assumere qualunque posizione: l'operatore può posizionare il TCP sul
riferimento come preferisce, in funzione delle sue esigenze.
In questo momento è consigliabile muovere in TOOL gli assi 4, 5, 6 per verificare sia le
dimensioni del tool master sia la calibrazione del robot.
Comandi accettati:
HS-0-C5E-USO_44.fm
224 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 225
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
226 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 227
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
228 08/1112
Programma TO_SET - gestione del Tool
Comandi accettati:
La videata in Fig. 17.18 visualizza se è stata richiesta una Procedura Parziale senza
avere mai effettuato una Procedura Totale. Manca cioè la posizione campione di
riferimento (verificare TO_SET.VAR).
HS-0-C5E-USO_44.fm
08/1112 229
Programma TO_SET - gestione del Tool
Comandi accettati:
La videata in Fig. 17.19 visualizza se è stata omessa la procedura di SAVE dei valori
calcolati.
Comandi accettati:
HS-0-C5E-USO_44.fm
230 08/1112
Programma TO_SET - gestione del Tool
1. acquisizione punto 3
2. acquisizione punto 2
3. acquisizione punto 1
4. riferimento
b. Acquisire il punto 1
d. Acquisire il punto 2
i. Rieseguire il passo f.
HS-0-C5E-USO_44.fm
08/1112 231
Programma TO_SET - gestione del Tool
si ritiene completata quando la misura è buona. Nel caso in cui si arrivi fino
all'acquisizione dell'ottavo punto senza ottenere una misura buona del tool, occorre
ripetere la procedura dall'inizio. Ad esempio i punti possono essere riappresi variando
maggiormente l’orientamento, cercando quindi di dare più informazioni al sistema.
Continuando con la descrizione dell'interfaccia utente, una volta entrati nell'ambiente di
calcolo del tool con il metodo dei 4 punti viene visualizzata la seguente videata:
Comandi accettati:
HS-0-C5E-USO_44.fm
232 08/1112
Programma TO_SET - gestione del Tool
Comandi accettati:
HS-0-C5E-USO_44.fm
08/1112 233
Programma TO_SET - gestione del Tool
Premendo il tasto START (con il controllo in DRIVE ON) il riferimento si muove verso la
prima posizione memorizzata ed associata a quel tool; è possibile in qualsiasi momento
rilasciare lo Start per aggiustare manualmente in Jog l'approccio del riferimento verso il
TCP da misurare, e riprendere il movimento verso la position premendo nuovamente
il tasto START.
Comandi accettati:
Attenzione che il movimento viene eseguito alla velocità indicata sul Terminale di
Programmazione!
Una volta terminata la Move (naturalmente o perché forzata dall'utente) si passa alla
successiva acquisizione seguendo la medesima procedura descritta per il primo punto.
Se si desidera invece tornare al menù iniziale si preme F6.
Una volta che l'algoritmo riesce a calcolare un tool viene visualizzata una videata che
informa l’utente che da quel momento è possibile muoversi nel riferimento TOOL.
HS-0-C5E-USO_44.fm
234 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 235
Programma TO_SET - gestione del Tool
quale apprendere le posizioni di lavoro. La precisione del calcolo è la stessa del robot,
usato come strumento di misura.
Vengono fornite informazioni dettagliate per i seguenti argomenti:
– Attrezzi necessari
– Caratteristiche generali
– Procedura
17.5.3 Procedura
Se viene immesso il comando UFRAME (premendo il tasto F1) si accede ad una
seconda videata (Fig. 17.27) che chiede all'utente di selezionare frame locale o frame
remoto:
HS-0-C5E-USO_44.fm
236 08/1112
Programma TO_SET - gestione del Tool
Questa videata (Fig. 17.28) richiama l'attenzione dell'operatore sui valori della variabile
$TOOL attualmente dichiarata.
I valori devono riferirsi all'attrezzo montato sulla flangia e che verrà utilizzato per il
calcolo del FRAME. I valori vengono visualizzati dal programma ed è permessa la
modifica se necessario.
Comandi accettati:
HS-0-C5E-USO_44.fm
08/1112 237
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
238 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 239
Programma TO_SET - gestione del Tool
TU_FRAME è presente nel CD del software di sistema, nella directory dei Tool di
Configurazione.
Comandi accettati:
HS-0-C5E-USO_44.fm
240 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 241
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
242 08/1112
Programma TO_SET - gestione del Tool
17.5.4.3 Procedura
Comandi accettati:
HS-0-C5E-USO_44.fm
08/1112 243
Programma TO_SET - gestione del Tool
F1: da premere quando il robot è sul punto; continua la procedura (Fig. 17.39)
F6: ritorna al menù principale (Fig. 17.2)
Richiede di portare il TCP dell'attrezzo sul punto Xpos. Il robot può assumere qualunque
posizione: l'operatore può posizionare il TCP sul punto Xpos come preferisce, in
funzione delle sue esigenze.
Comandi accettati:
F1: da premere quando il robot è sul punto; continua procedura (Fig. 17.40)
F6: ritorna al menù principale (Fig. 17.2)
Richiede di portare il TCP dell'attrezzo sul punto XYpos. Il robot può assumere
qualunque posizione: l'operatore può posizionare il TCP sul punto XYpos come
preferisce, in funzione delle sue esigenze.
Comandi accettati:
HS-0-C5E-USO_44.fm
244 08/1112
Programma TO_SET - gestione del Tool
TU_FRAME è presente nel CD del software di sistema, nella directory dei Tool di
Configurazione.
HS-0-C5E-USO_44.fm
08/1112 245
Programma TO_SET - gestione del Tool
Comandi accettati:
HS-0-C5E-USO_44.fm
246 08/1112
Programma TO_SET - gestione del Tool
Prima di ritornare al menù principale (Fig. 17.2) si chiede se si vuole mantenere abilitato
il tool remoto (Fig. 17.46).
HS-0-C5E-USO_44.fm
08/1112 247
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
248 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 249
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
250 08/1112
Programma TO_SET - gestione del Tool
Comandi accettati:
Prima di effettuare il passo successivo controllare che tutti gli assi del
posizionatore si trovino nella posizione di 0°, viceversa verrà segnalato l’errore di
“Posizione iniziale non valida”.
HS-0-C5E-USO_44.fm
08/1112 251
Programma TO_SET - gestione del Tool
F1: da premere quando il robot è sul punto; continua (Fig. 17.55 o Fig. 17.61)
F6: ritorna al menù principale (Fig. 17.2)
HS-0-C5E-USO_44.fm
252 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 253
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
254 08/1112
Programma TO_SET - gestione del Tool
Visualizzata nel caso in cui sia stato inserito un numero posizionatore tipo ARM non
riconosciuto dal sistema (da Fig. 17.50).
Comandi accettati:
Visualizzata nel caso in cui sia stato inserito un numero posizionatore tipo AUX non
riconosciuto dal sistema (da Fig. 17.52).
Comandi accettati:
HS-0-C5E-USO_44.fm
08/1112 255
Programma TO_SET - gestione del Tool
Visualizzata nel caso sia stato richiesto un SAVE (da Fig. 17.55) ma lo stato del C5G
non è PROG + DRIVE OFF. Questo stato è necessario poiché l'operazione di SAVE
richiede il comando di sistema Config. (F1), Salve il file di configurazione, SETUP
Page.
HS-0-C5E-USO_44.fm
256 08/1112
Programma TO_SET - gestione del Tool
I robot di nuova generazione (NJ ed NJ4) sono dotati di modello dinamico completo
su tutti e sei gli assi.
Data la sensibilità del modello ai parametri di carico dichiarati, è indispensabile che
l’utente verifichi in ogni situazione la corretta definizione del carico utilizzato.
Una imprecisione nella dichiarazione delle caratteristiche del carico influenza
negativamente le prestazioni del robot.
HS-0-C5E-USO_44.fm
08/1112 257
Programma TO_SET - gestione del Tool
17.7.2 Procedura
I programmi di movimento per l’Autodeterminazione del Carico sono forniti da Comau in
linguaggio PDL2 e differiscono a seconda del modello di robot, in base alle
caratteristiche cinematiche del robot stesso. Il loro utilizzo è fortemente consigliato,
salvo impedimenti fisici presenti nell’area di lavoro del robot.
HS-0-C5E-USO_44.fm
258 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 259
Programma TO_SET - gestione del Tool
se sì, i dati verranno salvati nella tabella TU_FRAME.VAR; se no, verranno salvati
nella tabella TT_TOOL.VAR
HS-0-C5E-USO_44.fm
260 08/1112
Programma TO_SET - gestione del Tool
g.1 Usare i tasti di jog per portare il robot nella nuova posizione di partenza (ricordando
SEMPRE di mantenere l’asse 3 parallelo alla base!). Scegliere MOVE
ESEGUITA (F1): se il sistema non accetta la nuova posizione di partenza, ripetere
questo passo. Quando finalmente la Move è eseguita correttamente, si continua
con il passo successivo.
HS-0-C5E-USO_44.fm
08/1112 261
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
262 08/1112
Programma TO_SET - gestione del Tool
i.2 scegliere l’asse del quale si desidera limitare la corsa, o selezionare CONTINUA
(F5) per tornare al passo h., senza eseguire ulteriori modifiche
i.3 ogni volta che si preme il tasto F1 o F2 (rispettivamente per il verso positivo e per
il verso negativo), la corsa dell’asse scelto viene ridotta di una quantità predefinita.
Se si vogliono ripristinare i valori iniziali, scegliere RIPRISTINA VALORI INIZIALI
(F3).
Al termine scegliere CONTINUA (F5) per tornare al passo i.2
HS-0-C5E-USO_44.fm
08/1112 263
Programma TO_SET - gestione del Tool
Premendo HOLD la procedura viene interrotta e non può più essere continuata.
HS-0-C5E-USO_44.fm
264 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 265
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
266 08/1112
Programma TO_SET - gestione del Tool
HS-0-C5E-USO_44.fm
08/1112 267
Programma TO_SET - gestione del Tool
Il sistema esegue l’elaborazione dei dati, raccolti durante l’esecuzione dei due
programmi di movimento. Al termine dell’elaborazione appare una videata
contenente i valori calcolati (massa, centro di massa e inerzia). Scegliere SALVA
(F1) per salvarli nel file e nella tabella dell’ambiente DATA, opportuni:
HS-0-C5E-USO_44.fm
268 08/1112
Interference Regions (prestazione opzionale)
Interference Regions
Il codice dell’opzione è CR17926216.
18.1 Introduzione
Le Interference Regions sono volumi di interferenza/interscambio condivisi tra Robot e
Robot, e tra Robot e strutture.
La loro gestione permette l’interazione tra macchine, ottimizzando l’uso dello spazio
all’interno della cella, in modo da garantire la prevenzione di collisioni, previa definizione
della geometria dei volumi interni allo spazio di lavoro del Robot.
Nel sistema di gestione Interference Regions è stata creata una libreria di forme
geometriche elementari che permettono di coprire la maggior parte dei casi funzionali,
per la gestione delle aree di lavoro cartesiane e giunti.
Sia nel caso cartesiano che nel caso giunti, è possibile definire 16 regioni geometriche
da utilizzare sia per il monitoraggio sia per bloccare l’ingresso del Robot al loro interno.
– Tipologia delle Regioni
– Forma e definizione delle Regioni
– Libreria IR_LIB di supporto alla creazione di Regioni di Interferenza
– Esempi.
pr-0-0-gpr_13.fm
08/1112 269
Interference Regions (prestazione opzionale)
Il Robot è costantemente controllato in tutti gli stati del sistema (sia in automatico che in
programmazione) e la velocità del TCP sarà modificata in base alla distanza dalla
regione proibita; questa funzionalità implica che quando il TCP si trova in prossimità del
confine della Interference Region, la velocità del robot è ridotta in proporzione alla
distanza dello stesso dal confine della regione.
Tale porta logica è associata alla regione mediante la built-in IR_SET (descrizione
dettagliata nel cap.BUILT-IN Routines List - PDL2 Programming Language
Manual).
pr-0-0-gpr_13.fm
270 08/1112
Interference Regions (prestazione opzionale)
Tale porta logica è associata alla regione mediante la built-in IR_SET (descrizione
dettagliata nel cap.BUILT-IN Routines List - PDL2 Programming Language
Manual).
18.3.1.1 Sfera
Mediante l'apprendimento del punto P1 (centro della sfera) si definisce il frame (con
orientamento qualsiasi) coincidente con il centro della sfera stesso. Il raggio viene
assegnato dall'utente al termine della procedura guidata di apprendimento o tramite un
programma PDL2. In questo modo viene memorizzato il frame coincidente con P1 e la
grandezza geometrica raggio della sfera.
pr-0-0-gpr_13.fm
08/1112 271
Interference Regions (prestazione opzionale)
R - raggio
18.3.1.2 Cilindro
Mediante l'apprendimento dei punti (in sequenza) P1 e P2, si definisce il frame e
l'altezza del cilindro. Il raggio viene assegnato dall'utente al termine della procedura
guidata di apprendimento.
In particolare:
– Il punto P1 definisce l'origine del frame.
– Il punto P2 l'orientamento e l'altezza del cilindro.
H - altezza R - raggio
18.3.1.3 Parallelepipedo
Mediante l'apprendimento dei punti (in sequenza) P1, P2, P3 si definisce il frame e due
dimensioni (larghezza e profondità), mediante il quarto punto P4 si definisce l'altezza.
In questo modo viene messo in tabella il frame calcolato con POS_FRAME(P1, P2, P3)
e le tre grandezze geometriche larghezza (P2-P1), profondità (P3-P1) e altezza
(P4-P1).
In particolare:
– Il punto P1 definisce l'origine del frame.
– Il punto P2 definisce l'asse della larghezza.
– Il punto P3 definisce il piano di base e la profondità.
– Il punto P4 definirà l'altezza.
pr-0-0-gpr_13.fm
272 08/1112
Interference Regions (prestazione opzionale)
18.3.1.4 Piano
Mediante l'apprendimento dei punti (in sequenza) P1, P2, P3 si definisce il frame. In
questo modo viene memorizzato il frame calcolato con POS_FRAME(P1, P2, P3). La
Regione definita è quella mostrata in Fig. 18.4.
pr-0-0-gpr_13.fm
08/1112 273
Interference Regions (prestazione opzionale)
IMPORT ‘IR_DEF’
Queste funzioni possono essere utilizzate per permettere all'Utente di creare delle
regioni cartesiane e giunti in maniera intuitiva, seguendo le istruzioni descritte in
precedenza.
Esempio 1
Di seguito è riportato un esempio per la definizione di una regione cartesiana di tipo
cilindro in una parte di programma:
pr-0-0-gpr_13.fm
274 08/1112
Interference Regions (prestazione opzionale)
Esempio 2
Nell'esempio seguente è descritta la sezione di programma PDL2 necessaria a creare
una regione giunti monitorata per il solo asse 6.
...............
...............
aj_neg_joint[6] := -60 -- limite negativo asse 6
aj_pos_joint[6] := 60 -- limite positivo asse 6
ai_arm := 1 -- numero arm
ai_mask := 0b00100000 -- maschera asse 6 in binario
-- Crea la regione giunti numero 4
IR_CreateJoint(aj_neg_joint,aj_pos_joint,ai_arm,ai_mask,4)
18.5 Esempi
– Esempio di programma per Interference Regions Cartesiane
– Esempio di programma per un’Interference Region Giunti.
pr-0-0-gpr_13.fm
08/1112 275
Interference Regions (prestazione opzionale)
BEGIN
ToolFrame(3, 0) -- tool 3, frame 0
END ir_cart
pr-0-0-gpr_13.fm
276 08/1112
Interference Regions (prestazione opzionale)
BEGIN
--
-- Definizione Interference Region giunti numero 2
--
IR_SET($FMO[1], 1, 2, IR_PRESENCE) -- associa bit 1 di $FMO[1] alla regione 2 che
-- diventa quindi una zona monitorata
-- Definizione delle limitazioni per l’asse 3, arm 1
aj_neg_joint[3] := -75
ai_arm := 1
ai_mask := 0b00000100 -- maschera asse 3
IR_CreateJoint(aj_neg_joint,aj_pos_joint,ai_arm,ai_mask,2)
CYCLE
MOVE TO pnt0001J
MOVEFLY TO pnt0002J ADVANCE
MOVEFLY JOINT TO jnt0018J ADVANCE
MOVE LINEAR TO jnt0019J
MOVE LINEAR TO jnt0020J
MOVEFLY JOINT TO jnt0021J ADVANCE
MOVE LINEAR TO jnt0022J
MOVE LINEAR TO jnt0023J
END ir_jnt
pr-0-0-gpr_13.fm
08/1112 277
Inseguimento tra assi - Axes Pursuit (prestazione opzionale)
Axes Pursuit
Il codice dell’opzione è CR17926217.
19.1 Introduzione
La prestazione di Inseguimento tra assi (Axes pursuit) consente di muovere, in
Automatico e in Programmazione uno o più assi di un solo Arm (denominato MASTER)
permettendo a uno o più assi di un altro Arm (denominato SLAVE) di inseguire gli assi
dell'Arm MASTER.
– Axes Pursuit
– Gestione degli errori con la funzione Axes Pursuit attiva
– Configurazione dell’opzione software.
pr-0-0-gpr_14.fm
278 08/1112
Inseguimento tra assi - Axes Pursuit (prestazione opzionale)
Il sistema configurato con l'opzione Axes Pursuit, gestisce una classe particolare di
errori relativi alla prestazione.
In primo luogo, se l'opzione è attivata, il sistema non permette di muovere l'Arm SLAVE
indipendentemente dall'Arm MASTER.
Questo implica che, se $AX_PURSUIT_ENBL è impostata a TRUE, e si cerca di
muovere manualmente o mediante un programma utente l'Arm SLAVE del robot, il
sistema restituirà un errore:
"Movimento non permesso con la modalità axes pursuit attiva".
In fase di configurazione dell'opzione, il sistema verifica la correttezza dei dati inseriti
anche in accordo con la configurazione preesistente nel sistema.
Se ad esempio venisse impostato un valore non previsto per l'asse dell'Arm MASTER
nella variabile $AX_PURSUIT_LINKED (ad esempio un asse del MASTER non
esistente), questa situazione verrebbe segnalata dal sistema all'avvio, con un
messaggio di errore:
"Asse dell'arm MASTER non esistente".
Nel caso in cui, all'avvio del sistema venga segnalato uno degli errori di errata
configurazione dell'opzione, la prestazione di Axes Pursuit viene automaticamente
disabilitata, e non è possibile utilizzarla finché il sistema non viene configurato
correttamente.
pr-0-0-gpr_14.fm
08/1112 279
Inseguimento tra assi - Axes Pursuit (prestazione opzionale)
Esempio:
$AX_PURSUIT_ARM_MASTER := 1 --indica che il MASTER è l’Arm 1
$ARM_DATA[2].AX_PURSUIT_LINKED[3] := 7 --indica che l’asse 3
--dell’Arm 2 (SLAVE)
--insegue l’asse 7
--con verso positivo
--dell’Arm 1 (MASTER)
$AX_PURSUIT_ENBL := TRUE
$AX_PURSUIT_ARM_MASTER := 1
$ARM_DATA[2].AX_PURSUIT_LINKED[1] := 7
$ARM_DATA[2].AX_PURSUIT_LINKED[2] := 8
pr-0-0-gpr_14.fm
280 08/1112
Bassa risoluzione Angoli di Eulero (prestazione opzionale)
Esiste un’opzione software che permette di avere sempre precisione inferiore nelle
piccole variazioni di orientamento intorno agli assi X e Y.
Utilizzando questa opzione, la precisione è di 0.2 gradi, anziché di 0.02 gradi, valore di
default.
Tale prestazione è indicata quando sia necessaria la costruzione di punti di tipo
POSITION, ad esempio tramite l’operatore ‘:’
Essa è analoga all’utilizzo del bit 23 della variabile predefinita $CNTRL_INIT. Per
ulteriori informazioni al riguardo, riferirsi al manuale PDL2 Programming Language -
cap. Predefined Variables List.
hs-0-0-mot_08.fm
08/1112 281
COMAU Robotics services s
Repair: repairs.robotics@comau.com
Training: training.robotics@comau.com
Spare parts: spares.robotics@comau.com
Technical service: service.robotics@comau.com
comau.com/robotics Istruzioni originali