Training Center ABB Robotica Materiale formativo: PB-IRC5 – Programmazione Base Obiettivi del corso • Requisiti di sicurezza per la programmazione e le funzionalità di base • Introduzione al sistema Robot-Controllore • Conoscenza delle principali funzioni Robotware • Configurazione delle impostazioni di sistema • Definizione ed uso ToolData (TCP) • Definizione ed uso WobjData (sistemi di coordinate) • Aggiornamento Counter • Basi per la programmazione del robot (linguaggio RAPID) • Programmazione strutturata March 27, 2019 Slide 2 Informativa Le informazioni contenute nel presente manuale sono soggette a modifiche senza preavviso e non devono essere considerate vincolanti per ABB. ABB non si assume alcuna responsabilità per eventuali errori nel presente manuale. Salvo quanto espressamente indicato nel presente manuale, ABB non concede alcuna altra garanzia in relazione al Prodotto in merito a eventuali perdite, danni a persone o beni, idoneità per uno scopo specifico o altro. In nessun caso ABB potrà essere ritenuta responsabile per eventuali danni accidentali o consequenziali dovuti all'utilizzo del presente manuale e dei prodotti in esso descritti. Né questo manuale, né alcuna sua parte possono essere riprodotti o ricopiati senza il consenso scritto da parte di ABB. ©Copyright 2019 ABB All rights reserved - Tutti i diritti riservati. Titolare esclusiva del diritto d’autore sui materiali del corso (di seguito anche definiti “l’Opera”) è ABB Spa con sede legale in Milano, via Vittor Pisani, 16, la quale è l’unica titolare dei diritti esclusivi di riproduzione con qualsiasi mezzo, come la copiatura a mezzo stampa, la fotografia, o con qualsiasi altro procedimento attuale o futuro adatto alla riproduzione dei segni, di trascrizione, di esecuzione, rappresentazione e recita in pubblico, di diffusione con qualsiasi mezzo di diffusione a distanza, quali la radio, la telefonia, la televisione o altri ritrovati anche futuri, di messa in commercio o ritiro dal commercio stesso, di traduzione , elaborazione dell’Opera, modifica della stessa con facoltà di riduzione, adattamento e trascrizione, di esercizio delle più ampie facoltà rispetto alle traduzioni elaborazioni e modifiche di cui sopra, di utilizzazione economica dell’Opera in ogni forma e modo (inclusa la destinazione a scopi di pubblicità commerciale) in tutti i Paesi del mondo, in virtù delle leggi interne, delle convenzioni e dei trattati internazionali in materia di diritto d’autore. I diritti di utilizzazione di cui sopra riguardano l’Opera nella sua integrità come pure parti dell’Opera. March 27, 2019 Slide 3 — Sicurezza Linee guida Sicurezza durante il corso Prestare la massima attenzione quando si movimentano i Robot Prestare attenzione alle dita quando si utilizza la pinza del Robot Tenersi ad una distanza adeguata quando il Robot è in movimento Testare i programmi step-to-step prima di eseguirli in ciclo continuo Prestare la massima attenzione quando si rilasciano i freni Organizzare l’ambiente di lavoro in modo adeguato per evitare inciampi Indossare il gilet di sicurezza al di fuori dell’aula training Seguire le istruzioni del personale ABB all’interno dello stabilimento March 27, 2019 Slide 5 Sicurezza durante il corso March 27, 2019 Slide 6 Sicurezza durante il corso Le zone di sicurezza sono marcate in verde Per la vostra incolumità non oltrepassare la linea gialla March 27, 2019 Slide 7 Sicurezza durante il corso March 27, 2019 Slide 8 Sicurezza durante il corso March 27, 2019 Slide 9 — Descrizione del Sistema Robotico Robot, controllore, Flexpendant Sistema Robotico Unità meccanica March 27, 2019 Slide 11 Controllore IRC5 FlexPendant ABB Robot: assi e movimenti – 6 assi Asse 4 Asse 6 Asse 3 Asse 2 Asse 1 March 27, 2019 Slide 12 Asse 5 Robot: assi e movimenti – 4 assi Asse 3 Asse 6 Asse 2 Asse 1 March 27, 2019 Slide 13 Robot: assi e movimenti – Flexpicker Asse 3 Asse 2 Asse 1 Asse 4 March 27, 2019 Slide 14 Robot: assi e movimenti – YuMi 2 1 7 4 3 5 March 27, 2019 Slide 15 6 Controllore IRC5: Tipologie & Hardware Upgrade Single Controller con UPS upgrade • • UPS utilizzato per problemi legati all’alimentazione Fornisce tensione «purificata» da linee disturbate March 27, 2019 Slide 16 Compact Controller • • • Dual Controller Poco spazio richiesto Alimentato da rete domestica Adatto per robot di piccola taglia ©Copyright 2019 ABB All rights reserved - Tutti i diritti riservati. Le specifiche ed i contenuti sono soggetti a modifiche senza preavviso. • Può comandare più unità allo stesso tempo (Multimove) Controller: elementi e varianti A – Interruttore generale B – Fungo emergenza C – Pulsante «Motor On» D – Selettore a chiave (auto, man, man 100% [opz.]) E – Led status emergenze (opz.) F – Presa USB G – Presa LAN Service H – Connettore FlexPendant I – Pulsante HotPlug (opz.) J – Conta ore (opz.) K – Presa 220V A B C D E F H J K March 27, 2019 Slide 17 G I FlexPendant: Caratteristiche & Hardware upgrade Standard • Schermo tattile resistente all’acqua, all’olio e a spruzzi accidentali di saldature • • • March 27, 2019 Slide 18 Hardware upgrade: Avvolgicavo Hardware upgrade: Bumper Protettivo Rapida installazione Resistente a lubrificanti, liquidi refrigeranti e di taglio Protezione assorbi urto • • • • Sicurezza sul luogo di lavoro Minor spreco di tempo nel riavvolgere il cavo Minor esposizione ai rischi Configurabile per ambienti ad alte temperature ©Copyright 2019 ABB All rights reserved - Tutti i diritti riservati. Le specifiche ed i contenuti sono soggetti a modifiche senza preavviso. FlexPendant A – Connettore B – Touch Screen C – Pulsante di emergenza D – Pulsante Dead Man Handle (Uomo morto) E – Joystick F – Pennino per il Touch Screen G – Porta USB C F A B E F D G March 27, 2019 Slide 19 FlexPendant A – Nr. 4 tasti programmabili B – Selezione unità meccanica (Assi esterni/Robot) C – Tipo movimento (Orientativo/Lineare) D – Movimento per giunti (giunti 1, 2, 3/giunti 4, 5, 6) E – Movimento incrementale F – Passo precedente G – Start programma H – Passo successivo I – Stop programma A B C D E G H F I March 27, 2019 Slide 20 Touch Screen: elementi B A – Menu ABB B – Finestra operatore C – Barra di stato D – Pulsante «Chiudi» E – Barra dei task F – Quick Menu D A C E March 27, 2019 Slide 21 F Touch Screen: Menu ABB March 27, 2019 Slide 22 Menu ABB: Input e Output Questa pagina consente di verificare lo stato dei segnali di input e output del sistema, connessi ad apparecchiature esterne. Consente inoltre di forzarne lo stato. I segnali possono essere digitali (0 oppure 1), analogici (valori positivi o negativi con virgola) o binari (positivi e assoluti). L’operazione di modifica dei valori deve essere svolta in fase di test, solamente da personale formato, poiché potrebbe azionare macchinari provocando danni a persone e cose. March 27, 2019 Slide 23 Menu ABB: Input e Output Tramite il pulsante «Visualizza» (A) si possono filtrare i segnali. - Bus I/O o reti industriali : indirizzo dei protocolli installati - Dispositivi di I/O: schede installate con indirizzo - Tutti i segnali: tutti i segnali parametrizzati - Input/output digitali: tutti gli in/out digitali - Input/output analogici: tutti gli in/out analogici - Gruppi input/output: tutti i gruppi binari di in/out - Più comuni: selezione configurabile da pannello di controllo di segnali - Segnali sicurezza: segnali delle schede sicurezza (solo consultabili, non modificabili) - Segnali simulati: segnali con simulazione attiva B – Imposta il segnale a 0 o 1 (solo se out digitale) C – Consente di simulare il segnale senza pilotare l’attuatore collegato, o simulando l’ingresso D – Consente di vedere i segnali definiti virtuali E – Imposta il valore del segnale analogico o binario F – Applica filtri di visualizzazione March 27, 2019 Slide 24 A B F E C D Sistemi di coordinate Sono riferimenti di posizione e orientamento nello spazio, rappresentati per mezzo di una terna destra. A – TCP (Tool Center Point) con asse z positivo uscente, x e y definiti dall’utente, «Tool0» di default definito al centro della flangia, da definire sull’utensile con il metodo dei 4 punti. B – Sistema di coordinate «Base», coincidente con «Wobj0», posizionato al centro della base del robot, con piano x-y orizzontale e z verticale. A C – Sistema Workobject utente definisce il piano di lavoro, da definire sul piano di lavoro con il metodo dei 3 punti. E D – Sistema Workobject oggetto definisce l’oggetto di lavoro, da definire sull’oggetto di lavoro con il metodo dei 3 punti. E – Sistema di coordinate «World» definito dall’utente, normalmente coincidente con il riferimento «base». Slide 25 D C B March 27, 2019 A Sistemi di coordinate March 27, 2019 Slide 26 Menu ABB: Movimento manuale (Jogging) Consente di muovere manualmente il robot, selezionando l’unità meccanica, scegliendo la modalità, il sistema di riferimento e le caratteristiche dell’utensile e del carico. A – Attivazione unità meccanica B – Modalità movimento manuale (Lineare, Riorientamento, Assi 1-3 , Assi 4-6) C – Sistema di coordinate (Base, World, Oggetto, Utensile) D – Utensile montato sulla flangia E – Workobject in uso F – Carico utensile G – Visualizzazione coordinate robot H – Blocco direzione Joystick J – Attivazione movimento incrementale K – Direzione movimento Joystick L – Allinea il robot ad un sistema di coordinate M – Attiva unità meccanica se esistente March 27, 2019 Slide 27 A B C D E F H J L G K M Menu ABB: Movimento manuale (Quick menu) Tramite il «Quick menu» è possibile selezionare rapidamente le impostazioni di movimento manuale, ed è raggiungibile da qualsiasi finestra della FlexPendant. A – Modalità movimento manuale B – Incrementi C – Modalità di esecuzione D – Modalità passo E – Velocità F – Task A B C D E F March 27, 2019 Slide 28 Menu ABB: Movimento manuale (Quick menu) Cliccando sull’ icona movimento manuale si possono vedere rapidamente tutte le informazioni di movimento. A – Tool in uso B – Workobject in uso C – Modulazione della finestra del Joystick analogico D – Sistema di riferimento secondo cui si sta muovendo il robot (World, Base, Tool, Workobject) E – Modalità di movimento (Assi 1-3, Assi 4-6, Lineare, Riorientamento) A B C D E March 27, 2019 Slide 29 Menu ABB: Movimento manuale (Quick menu) Cliccando sull’ icona incremento si può selezionare quello desiderato. A – Nessun incremento B – Incremento piccolo (0,05 mm) C – Incremento medio (1 mm) D – Incremento grande (5 mm) E – Incremento utente (incremento personalizzabile) A B C D E March 27, 2019 Slide 30 Menu ABB: Movimento manuale (Quick menu) Cliccando sulle icone Modalità di esecuzione e Modalità passo si può scegliere la tipologia di esecuzione del programma. March 27, 2019 Slide 31 Menu ABB: Movimento manuale (Quick menu) Cliccando sull’ icona Velocità si può modificare la velocità di esecuzione del programma. March 27, 2019 Slide 32 Cliccando sull’ icona Task si possono visualizzare tutti i task memorizzati nel controllore, attivarli e disattivarli. Esercizio – Movimento manuale (Jogging) Per muovere manualmente il robot: nella scheda movimento manuale selezionare la modalità di movimento, il sistema di coordinate e l’utensile montato sulla flangia; premere il pulsante uomo morto al primo scatto e muovere il joystick, facendo attenzione ad evitare eventuali ostacoli. 2 1 Esercizio: movimento manuale 3 March 27, 2019 Slide 33 Menu ABB: Finestra Produzione Visualizza il codice del programma in esecuzione. Viene visualizzata automaticamente quando il controller viene posto in modalità «automatica». A – Carica un programma B – PP in main: porta il puntatore di programma alla prima istruzione della procedura «main», facendo partire il programma dall’inizio. C – Modifica la posizione puntata dal cursore D – Mostra il puntatore di movimento E – Mostra il puntatore di programma F – Passa alla schermata «Editor di programma» C D E F A March 27, 2019 Slide 34 B Menu ABB: Editor di programma E’ il contesto in cui vengono creati o modificati i programmi. E’ possibile aprire più finestre dell’editor di programma (ad esempio quando si lavora con l’opzione «Multitasking» installata). Il pulsante dell’editor di programma nella barra dei task visualizza il nome del task aperto. A – Menu per le operazioni sul programma B – Mostra tutti i moduli C – Mostra tutte le routine D – Apre il menu aggiungi istruzioni E – Apre il menu di modifica F – Apre il menu di debug G – Modifica della posizione (ModPos) H – Nasconde le dichiarazioni al di fuori della routine selezionata per facilitare la lettura del codice di programma A D March 27, 2019 Slide 35 C B E F G H Editor di programma: Task e Programmi A – Crea nuovo programma B – Carica un programma dall’hard disk C – Salva il programma nell’hard disk D – Rinomina il programma in memoria E – Elimina il programma in memoria F – Visualizza il modulo/programma da modificare G – Mostra il «main» del programma A B C D E March 27, 2019 Slide 36 F G Editor di programma: Moduli I moduli possono essere di due tipi. - Di sistema: rimangono in memoria qualsiasi programma venga creato o caricato. Vengono sostituiti solo dal restore di un backup. - Di programma: si cancellano alla creazione o caricamento di un programma, al restore di un backup. A – Crea nuovo modulo di sistema o programma B – Carica nuovo modulo dall’hard disk C – Salva il modulo evidenziato (con nome) nell’ hard disk D – Cambia dichiarazione modulo (sistema/programma) E – Elimina il modulo evidenziato F – Aggiorna, rilegge la memoria G – Mostra le routine nel modulo H – Esce dal modulo March 27, 2019 Slide 37 F A B C D E G H Editor di programma: Routine Le routine contengono le effettive istruzioni di programma. Ne esistono di tre tipi: - Procedura (PROC): routine normale, con o senza passaggio di parametri. - Funzione (FUNC): routine con dato di ritorno, con o senza passaggio di parametri. - Trap routine (TRAP): chiamate dagli interrupt, non accettano parametri in ingresso e non possono contenere istruzioni di movimento. A – Crea nuova routine B – Copia routine, con le stesse istruzioni C – Sposta di modulo la routine evidenziata D – Cambia nome, tipo, assegnazione di parametri, cambia modulo o aggiunge gestore degli errori E – Rinomina la routine F – Elimina la routine G – Filtra le routine H – Mostra le istruzioni della routine I – Torna ai moduli March 27, 2019 Slide 38 A B C D E F G H I Editor di programma: Debug Dal menu «Debug» è possibile avviare il programma. L’esecuzione partirà dalla posizione in cui si trova il puntatore. Per iniziare da una posizione diversa, spostare il puntatore di programma. Avviando l’esecuzione, il robot si sposterà verso la prima posizione indicata dal programma. Verificare l’assenza di ostacoli sul percorso. A – Puntatore di programma (PP) B – Cursore C – Sposta il puntatore alla prima riga del main D – Sposta il puntatore al cursore E – Sposta il puntatore nella routine selezionata F – Riporta la visualizzazione al puntatore G – Chiama le routine di servizio H – Annulla la chiamata alla routine di servizio I – Mostra il valore del dato evidenziato J – Verifica la presenza di errori di sintassi March 27, 2019 Slide 39 A B C E D F G I H J Editor di programma: Modifica posizione (ModPos) Consente di modificare la posizione memorizzata in un’istruzione, muovendo manualmente il robot nella nuova posizione. La modifica avviene sull’istruzione evidenziata dal cursore, acquisendo i valori della posizione effettiva del robot. E’ possibile: - Eseguire il programma un’istruzione alla volta, modificando di volta in volta la posizione; Oppure - Muovere il robot in una posizione desiderata e modificare la posizione di un’istruzione scegliendola dall’editor di programma (metodo dello spostamento) Sebbene il secondo metodo sia più rapido, è necessario conoscere perfettamente il programma, per poterne prevedere il comportamento. March 27, 2019 Slide 40 Menu ABB: Dati Programma Consente di visualizzare e modificare il valore delle variabili presenti nel programma RAPID, visualizzandole suddivise per tipo di dato memorizzato. Da questa pagina, scegliendo i rispettivi tipi di dato, è inoltre possibile avviare le procedure: • Apprendimento TCP • Apprendimento Payload • Apprendimento Workobject March 27, 2019 Slide 41 Menu ABB: Backup e Ripristino Consente di creare un backup di programmi e parametri di sistema, o di ripristinarne uno esistente. - Per effettuare un backup scegliere «Backup», indicare percorso e nome del file. E’ possibile memorizzare il file sul disco del controller o su una memoria USB esterna connessa alla porta della FlexPendant. - Per ripristinare un backup selezionare «Ripristina», quindi scegliere il file d backup. Tutti i programmi e parametri esistenti saranno eliminati e sostituiti! Si raccomanda la creazione sistematica di un backup, ogni volta che vengono modificati programmi o parametri di sistema. March 27, 2019 Slide 42 Menu ABB: Backup e Ripristino 120_100980_BACKUP CS TASKS March 27, 2019 Slide 43 Menu ABB: Calibrazione Effettua l’aggiornamento dei counter dei resolver o la calibrazione fine. - Aggiornamento counter: definisce la posizione di zero del robot. Si effettua quando questi vengono persi (reboot, calo di tensione in movimento, batteria SMB scarica). - Calibrazione fine: ricava gli offset di montaggio dei motori. Si effettua solo in caso di sostituzione di organi di movimento (motori, riduttori) e deve essere effettuata da personale ABB. La calibrazione modifica la posizione di zero del robot, modificando la posizione nello spazio dei punti memorizzati! March 27, 2019 Slide 44 Menu ABB: Pannello di controllo Consente di modificare le impostazioni del sistema. • Supervisione: modifica il comportamento del supervisore di movimento. • I/O: definisce i segnali I/O più comuni. • Language: Imposta la lingua del sistema. • ProgKeys: modifica il comportamento dei tasti programmabili. • Configuration: modifica la configurazione dei dispositivi di comunicazione e dei segnali I/O. Esempio: creazione crossconnection March 27, 2019 Slide 45 — RAPID – Programmazione di base Struttura dei programmi, tipi di dati Tasks e Moduli Un task si compone di: • Moduli di programma: moduli contenenti dati e routine che vengono sostituiti ogni volta che viene caricato un nuovo programma. In ogni task può esserci un’unica procedura di «Main»; • Moduli di sistema: moduli contenenti istruzioni comuni al sistema (es. posizione di Calibrazione) Tutti i moduli di programma sono memorizzati con l'estensione «.mod», assieme ad un file di descrizione che comprende un elenco di tutti i moduli contenuti nel programma avente come estensione «.pgf». March 27, 2019 Slide 47 Routines Esistono tre tipi di routine: procedure, funzioni e trap. • Le procedure non restituiscono un valore e vengono utilizzate nel contesto delle istruzioni. PROC nome_procedura(tipo_di_dato1 dato1) !codice ENDPROC • Le funzioni restituiscono un valore di tipo specifico e vengono utilizzate nel contesto delle espressioni. FUNC nome_funzione (tipo_di_dato1 dato1) !codice Return dato2 ENDFUNC • Le routine trap consentono di interagire con gli interrupt. È possibile associare una routine trap a un interrupt specifico. Se tale interrupt si verifica in una fase successiva, la routine trap verrà eseguita automaticamente. In nessun caso è possibile chiamare in maniera esplicita una routine trap dal programma. TRAP nome_trap !codice ENDTRAP March 27, 2019 Slide 48 Tipi di dati: visibilità e dichiarazioni La visibilità denota l’area in cui un oggetto è visibile, e dipende dal contesto e dalla posizione della dichiarazione. • Module data object: è dichiarato fuori dalle routine. Può essere locale (visibile all’interno del modulo in cui è dichiarato), o globale (visibile in tutto il task). • Routine data object: è dichiarato all’interno della routine e la visibilità è limitata alla routine. Anche i parametri delle routine sono di questo tipo. Nasconde inoltre la visibilità di un data object con lo stesso nome predefinito o definito dall’utente. Un data object può essere dichiarato in tre modi: • Variabile (VAR): il valore memorizzato viene perso se il puntatore di programma viene spostato. VAR <datatype> <variable definition>; Es: VAR num altezza; (dichiara una variabile di tipo numerico) • Persistente (PERS): mantiene il valore memorizzato anche se il programma viene riavviato. PERS <datatype> <persistent definition>; Es: PERS num offset; (dichiara una variabile di offset di una coordinata) • Costante (CONST): si comporta come una variabile, ma il valore assegnato con la dichiarazione non può essere modificato. CONST <datatype> <constant definition> := <value>; Es: CONST num hPallet := 500; (dichiara una misura fissa nella cella) March 27, 2019 Slide 49 Tipi di dati: esempi (1) Tipi di dati primitivi: • Numerico (num): intero o decimale, con segno. • Booleano (bool): TRUE o FALSE. • Stringa di testo (string): massimo 80 caratteri, definito es. "stringa". Tipi dati derivati: • pose: definisce posizione e orientamento tramite coordinate nello spazio e quaternioni. [[x, y, z], [q1, q2, q3, q4]] x, y, z: coordinate del sistema di riferimento q1, q2, q3, q4: coefficienti dei quaternioni di orientamento • loaddata: definisce le caratteristiche del carico [mass, cog, aom, ix, iy, iz] mass: massa del carico (kg) cog: posizione del baricentro ([x, y, z]) aom: orientamento degli assi d’inerzia ([q1, q2, q3, q4]) ix, iy, iz: valore del momento d’inerzia lungo i tre assi March 27, 2019 Slide 50 Tipi di dati: esempi (2) • jointtarget: definisce la posizione del robot nello spazio dei giunti (ax1, …, ax6) e di assi esterni. [robax, extax] PERS jointtarget calib_pos := [[0,0,0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]]; robax: configurazione assoluta degli assi del robot ([ax1,ax2,ax3,ax4,ax5,ax6]) extax: posizione degli assi esterni ([eax_a, eax_b...eax_f]) • robtarget: definisce la posizione del robot nello spazio di lavoro (x-y-z) e di assi esterni. [trans, rot, robconf, extax] PERS robtarget p10 := [[600,500,225.3],[1,0,0,0],[1,1,0,0],[11,12.3,9E9,9E9,9E9,9E9]]; trans: posizione del TCP ([x, y, z]) rot: orientamento del sistema di coordinate TCP ( [q1, q2, q3, q4]) robconf: configurazione degli assi del robot ([cf1, cf4, cf6, cfx]) extax: posizione degli assi esterni ([eax_a, eax_b...eax_f]) La posizione è definita rispetto al workobject in uso. Se questo è diverso dal workobject indicato nelle istruzioni di movimento si otterrà un comportamento inatteso Assicurarsi di utilizzare lo stesso workobject per evitare di causare danni. March 27, 2019 Slide 51 Tipi di dati: esempi (3) • wobjdata: descrive l’oggetto di lavoro elaborato dal robot. [robhold, ufprog, ufmec, uframe, oframe] PERS wobjdata wobj0 := [FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]]; robhold: definisce se il robot sostiene il workobject (bool) ufprog: definisce se è utilizzato un sistema di coordinate fisso (bool) ufmec: unità meccanica che coordina i movimenti (solo in caso di Multimove) uframe: sistema di coordinate utente (pose) oframe: sistema di coordinate oggetto (pose) • tooldata: definisce l’utensile (posizione e orientamento del TCP, caratteristiche del carico). [robhold, tframe, tload]; PERS tooldata tool0 := [TRUE,[[0,0,0],[1,0,0,0]],[0.001,[0,0,0.001],[1,0,0,0],[0,0,0]]; robhold: definisce se il robot sostiene l’utensile (bool) tframe: sistema di coordinate del tool (pose) tload: caratteristiche del carico (loaddata) E’ importante definire sempre il carico effettivo dell’utensile e, se utilizzato, il carico utile del robot. Dichiarazioni errate del carico possono risultare in prestazioni non ottimali del robot o sovraccarico della struttura meccanica March 27, 2019 Slide 52 Esercizio: creazione tool e wobj Esercizio: Creazione del Tool • La posizione e l’orientamento del robot sono sempre riferite al TCP attivo; • Possono essere definiti più TCP all’interno del programma, ma solo uno alla volta può essere attivato • I dati del TCP possono essere definiti manualmente, ma solo se i dati sono accurati ( si consiglia comunque di usare sempre la procedura dedicata) • Se non sono stati definiti TCP, il robot utilizza il tool0 (corrispondente alla flangia del robot) • La z del sistema di riferimento del tool è sempre uscente. Sistema di coordinate del Tool +Y Sistema di coordinate del Polso March 27, 2019 Slide 53 +X +Z Esercizio: Creazione del Tool Ø Menu ABB Ø Dati programma Ø ToolData Ø Mostra dati Ø Nuovo Ø Scegliere il nome del tool Ø Cliccare su “Valore iniziale” Ø Inserire una massa in kg Ø Inserire il COG rispetto al Tool0 Ø Premere OK Ø Cliccare sul tool Ø Modifica Ø Definisci March 27, 2019 Slide 54 Esercizio: Creazione del Tool – Metodo dei 4 punti Allungamento in Z Ø Selezionare nella casella «Metodo», TCP & Z,X Ø Scegliere i 4 punti con quattro configurazioni differenti e cliccare su modifica posizione per ogni punto 5 Ø L’orientamento del tool è definito dalle direzioni di X e Z che andiamo a specificare: • Far combaciare il TCP con il punto selezionato ed allineare quello che sarà l’asse z del tool con l’asse z del robot. Allo stesso modo fare anche con l’asse x. 4 6 3 Ø Salvare i punti Allungamento in X March 27, 2019 Slide 55 1 2 Esercizio: Creazione del Tool – Loadidentify E’ presente una routine chiamata Loadidentify che viene utilizzata per definire la massa e il centro di gravità di un tool e/o le parti che vengono prese dal robot (carichi sollevati/vestizione). Arm Load PayLoad Tool Load March 27, 2019 Slide 56 Esercizio: Creazione del Tool – Loadidentify Nota bene: prima di chiamare la procedura Loadidentify assicurarsi che le seguenti condizioni sono soddisfatte: • Il tool è montato correttamente • L’asse 6 è posizionato a «0» • L’asse 4 è posizionato a «0» • Il carico sul braccio del robot è definito • La velocità di esecuzione è 100% NB: attivare ToolData prima di lanciare la procedura di Loadidentify NB2: attivare LoadData prima di lanciare la procedura di Loadidentify March 27, 2019 Slide 57 Esercizio: Creazione del Tool – Loadidentify Attivare il tool nella finestra movimento manuale, poi nel program editor chiamare la routine Loadidentify e seguire le istruzioni a schermo. March 27, 2019 Slide 58 Esercizio: Creazione del Tool – Loadidentify March 27, 2019 Slide 59 Esercizio: Creazione del Tool – Loadidentify March 27, 2019 Slide 60 Esercizio: Creazione del Tool – Loadidentify March 27, 2019 Slide 61 Esercizio: Creazione del Tool – Loadidentify March 27, 2019 Slide 62 Esercizio: Creazione di un Workobject • Tutti i punti presenti all’interno di un programma sono riferiti rispetto ad un workobject (sistema di riferimento). • Il sistema di riferimento di default è il Wobj0 ed è coincidente al sistema di riferimento presente alla base del robot (frame). • E’ fortemente consigliato creare e utilizzare workobject personalizzati pSafe TCP wobjBox Wobj0/ Base March 27, 2019 Slide 63 Esercizio: Creazione di un Workobject Ø Menu ABB Ø Dati programma Ø WobjData Ø Mostra dati Ø Nuovo Ø Scegliere il nome del Workobject Ø Modifica Ø Definisci Ø User method: 3 Points wobjBox Wobj0/ Frame March 27, 2019 Slide 64 Esercizio: Creazione di un Workobject Y1 Y1 X1 wobjBox Base Wobj0/ Frame March 27, 2019 Slide 65 X1 X2 X2 Esercizio: Creazione di un Workobject Il centro del sistema di riferimento è individuato dall’intersezione degli assi x e y, secondo la regola della mano destra. y1 Origin Work object axis Y x1 x2 wobjA4 wobjBox Work object axis X Wobj0/ Frame March 27, 2019 Slide 66 — RAPID – Programmazione di base Istruzioni di movimento, programmazione strutturata Introduzione alle istruzioni di movimento Le istruzioni di movimento più comuni sono: • MoveL: Movimento lineare verso un punto • MoveJ: Movimento libero verso un punto • MoveAbsJ: Movimento verso una posizione assoluta degli assi • MoveC: Movimento circolare per 3 punti Le istruzioni di movimento necessitano di diversi tipi di dati (posizione, velocità…) , che andremo ad analizzare caso per caso. March 27, 2019 Slide 68 Istruzioni di movimento: MoveL e MoveJ L’istruzione Move* sposta il TCP ad un punto designato (target). MoveL Target_10, v1000, z50, tool_Penna \Wobj:=wobj_Tavolo MoveJ Target_20, v1000, z50, tool_Penna \Wobj:=wobj_Tavolo A B C D E Tipi di dati: A - Destinazione (robtarget) B - Velocità desiderata C - Zona di raccordo [mm] D - Tool in uso E - Workobject in uso MoveL sposta il TCP lungo una traiettoria lineare. MoveJ sposta il TCP senza vincoli sulla traiettoria, seguendo il percorso più breve tra il punto iniziale e finale dal punto di vista dei giunti. March 27, 2019 Slide 69 MoveL MoveJ Zonedata Le zonedata descrivono quanto vicino deve arrivare il TCP/gli assi alla posizione programmata, prima di passare a quella successiva. Zona Punto_1 Punto_2 MoveL Punto_1, v100, fine, tool0; MoveL Punto_2, v100, z10, tool0; MoveL Punto_3, v100, fine, tool0; Punto_3 March 27, 2019 Slide 70 Zonedata Nota Bene! La zonedata di tipo fine utilizzata per: • Arrivare in un punto con la massima precisione possibile • Proseguire con l’esecuzione del programma solo dopo aver completato l’istruzione di movimento. In particolare, prestare attenzione quando: § Si gestiscono segnali di input e output (es: apri/chiudi pinza) dopo un’istruzione di movimento per evitare che questi segnali vengano processati anzitempo § L’istruzione di movimento è posta alla fine di una routine, per evitare che il puntatore inizi a processare altre istruzioni prima di aver terminato il movimento MoveL Punto_1, v100, fine, tool0; March 27, 2019 Slide 71 Istruzioni di movimento: MoveAbsJ L’istruzione MoveAbsJ sposta ciascun giunto nella posizione designata. MoveAbsJ Target_30, v1000, z50, tool_Penna A B C D Tipi di dati: A - Destinazione (jointtarget) B - Velocità desiderata C - Zona di raccordo [mm] D - Tool in uso Dal punto di vista del movimento, MoveJ e MoveAbsJ sono simili, l’unica differenza riguarda il tipo di dato che viene fornito come Target: • Nel caso di MoveJ, si fornisce un punto (in coordinate x,y,z e orientamento) [robtarget] • Nel caso di MoveAbsJ si fornisce la posizione in gradi di ciascun asse [jointtarget] March 27, 2019 Slide 72 Istruzioni di movimento: MoveC L’istruzione MoveC crea una traiettoria circolare passante per tre punti (posizione attuale + 2). MoveC P_intermedio, P_fine, v100, z10, tool0, \WObj:=wobjxxx A B P_intermedio D E F Tipi di dati: A - Punto intermedio (robtarget) B - Punto finale (robtarget) C - Velocità desiderata D - Zona di raccordo [mm] E - Tool in uso F - Workobject in uso MoveL P_Start, v100, fine, tool0, \WObj:=wobjxxx MoveC P_intermedio, P_fine, v100, z10, tool0 P_Start P_fine March 27, 2019 C Slide 73 Esercizio: creazione di path Funzioni RAPID (1) Routine di base • Chiamata di una procedura (ProcCall): nome_procedura; • Lettura della posizione degli assi del robot: CJointT() • Lettura della posa del robot nello spazio di lavoro: CRobT(\Tool:=tool1 \WObj:=wobj0) Routine di gestione dell’interfaccia • TPWrite, TPErase: presenta un messaggio e lo cancella; • UIMessageBox: presenta un messaggio all’utente, il quale può interagire con il flusso di programma. • UINumEntry: chiede all’utente di inserire un valore numerico tramite tastierino. • UINumTune: chiede all’utente di regolare un valore numerico tramite i tasti «+» e «-». March 27, 2019 Slide 74 Funzioni RAPID (2) Routine di gestione dei segnali di Output • Set, Reset: imposta il segnale rispettivamente a 1 o 0 Set Segnale / Reset Segnale • SetDO: è l’istruzione unificata di Set e Reset SetDO Segnale, 1 / SetDO Segnale, 0 • SetAO, SetGO: corrispondono a SetDO per segnali analogici o gruppi. • PulseDO: Imposta il segnale DO alto per un periodo di tempo, poi lo imposta basso. Routine di attesa • WaitTime: attende un tempo fisso (secondi). • WaitUntil: attende fino a che si verifica una condizione. • WaitAI, WaitAO, WaitDI, WaitDO: Attende che un segnale assuma il valore specificato. March 27, 2019 Slide 75 Funzioni RAPID (3) Routine sui sistemi di riferimento • Aggiunta di un offset al robtarget rispetto al workobject: Offs(Point,XOffset,YOffset,ZOffset) • Aggiunta di un offset rispetto al sistema di riferimento del Tool: RelTool(Point,Dx,Dy,Dz,[\Rx],[\Ry],[\Rz]) March 27, 2019 Slide 76 Funzioni RAPID (4) Esempio con « UIMessageBox » e ritorno in home MODULE MainModule VAR btnres Risposta; ! btnres corrisponde al tipo di dato restituito dalla ! Funzione UIMessageBox PROC main() Risposta:=UIMessageBox( \Header:="Inserire intestazione", \Message:="Inserire il messaggio", \BtnArray:=["Scelta 1","Scelta 2","Scelta 3", "Scelta 4","Scelta 5"] ); IF Risposta=1 THEN MoveAbsJ Home,…; ! ... E' stato premuto "Scelta 1" ELSE EXIT; ! ... E' stato premuto altro ENDIF ENDPROC ENDMODULE March 27, 2019 Slide 77 Funzioni RAPID (5) MODULE Presa_e_Deposito VAR num riga; VAR num colonna; PROC main() riga:=UINumEntry(\Header:="Inserimento riga deposito" \Message:="Inserire la riga di deposito" \MinValue:=Valore_Minimo \MaxValue:=Valore_Massimo); colonna:=UINumEntry(\Header:="Inserimento colonna deposito" \Message:="Inserire la colonna di deposito" \MinValue:=Valore_Minimo \MaxValue:=Valore_Massimo); ! Procedura di presa e deposito MoveL Offs(P_ref,riga*100,colonna*100,0),v1000,z50,tool0\WObj:=WObj_Tavola; ! Porta il provino sopra la sede MoveL Offs(P_ref,riga*100,colonna*100,z),v1000,z50,tool0\WObj:=WObj_Tavola; ! Pallettizza il pezzo nella sede ENDPROC ENDMODULE March 27, 2019 Slide 78 Funzioni RAPID (6) Inserire delle funzioni da TeachPendant • Inserire un assegnamento « := », comparirà « <DATA>:=<EXP>; » • In <DATA> inserire una variabile dello stesso tipo di quello restituito dalla funzione • Consiglio: per visualizzare il tipo di dato restituito consultare il manuale RAPID • Cliccare la voce «cambia tipo di dato» per scegliere dataobject di altro tipo • Una volta selezionato il dataobject cliccando su «funzioni» sono disponibili le funzioni che restituiscono lo stesso tipo di dato della variabile. Cliccare la funzione desiderata • Esempio: « Risposta := UIMessageBox(); » Aggiungere argomenti opzionali Selezionare la funzione e quindi cliccare per editarla Quindi tramite «edita» à «argomenti facoltativi» inserire quelli desiderati selezionando «usa» Risposta:=UIMessageBox(\Header:=<EXP>,\Message:=<EXP>,\Buttons:=<EXP>); March 27, 2019 Slide 79 Programmazione strutturata: istruzioni • Assegnazione: definisce il valore. • If: esegue una o più istruzioni solo qualora siano verificate una o più condizioni. • While: esegue le istruzioni al suo interno in modo ciclico, fino a che è verificata una condizione. • For: esegue le istruzioni al suo interno per un numero di volte definito da un contatore incrementale. • Test: esegue istruzioni diverse in base al valore assunto da un’espressione. <DATA> := <VALUE>; IF <EXP> THEN ELSEIF <EXP> THEN ELSE ENDIF WHILE <EXP> DO ENDWHILE FOR <ID> FROM <EXP> TO <EXP> DO ENDFOR Esercizio: creazione programma March 27, 2019 Slide 80 TEST <EXP> CASE <EXP>: DEFAULT: ENDTEST Esempio di flusso di programma Di seguito un esempio di programma annidato. La procedura di main gestisce il flusso dell’intero programma. Le sotto routine gestiscono invece le istruzioni, questo per avere una maggiore chiarezza e ordine durante la lettura. March 27, 2019 Slide 81 Connessione PC - Controllore E’ possibile connettersi al controllore tramite le porte Service (X2) e WAN (X6): SERVICE • La porta Service viene solitamente utilizzata per connettersi direttamente al controllore tramite PC. La porta ha un indirizzo IP statico (192.168.125.1) • La porta WAN viene utilizzata solitamente per connettere WAN il robot ad una rete industriale interna. E’ possibile assegnare un indirizzo IP a piacere. March 27, 2019 Slide 82 Connessione PC - Controllore • • Per connettersi alla porta Service è possibile configurare un IP statico. Tramite il Control Panel, Wireless Network Connection Status, cliccare su Properties. Selezionare Internet Protocol Version 4 (TCP/IPv4) e impostare i seguenti: IP ADDRESS: 192.168.125.[2…255] (la porta ha indirizzo .1) SUBNET MASK: 255.255.255.0 Per connettersi alla porta WAN è necessario impostare un IP maggiore a tutti i Robot presenti nella rete. Per vedere (e modificare l’IP) del singolo robot andare sulla Flexpendant: Menu ABB; Pannello di controllo; Rete, Data e Ora; Impostazioni; Rete. Una volta configurato correttamente l’IP in base alla tipologia di connessione utilizzata, è possibile connettersi al controllore tramite Robotstudio. Nella pagina controller, cliccare sotto l’icona Add Controller, e poi su Add Controller… In automatico verrà rilevato il controllore. March 27, 2019 Slide 83 — Connected Services Connected Services Composizione della suite March 27, 2019 Slide 85 CS Connected Services CMD Condition Monitoring & Diagnostics BM Backup Management AO Asset Optimization FA Fleet Assessment RA Remote Access Connected Services Soluzioni Disponibili 3 tipologie di connessione : S4C+, S4P IRC5, IRC5P • Mobile Service Box Connessione 3G con SIM a carico del cliente • Service Box via cavo o wi-fi Connessione via cavo o wi-fi tramite rete del cliente • via cavo : S4C+, S4P+, IRC5, IRC5P wi-fi : IRC5, IRC5P • IRC5 e IRC5P con RobotWare > 6.04 e DSQC1018 (Nov 2016) • Embedded Connessione via cavo tramite rete del cliente N.B. Nessun hardware aggiuntivo richiesto March 27, 2019 • S4C+, S4P+, IRC5, IRC5P Slide 86 Connected Services Condition Monitoring & Diagnostics Servizio di monitoraggio e diagnostica sicuro 24 ore su 24, 7 giorni su 7, che identifica i sistemi robotizzati che non stanno funzionando in modo ottimale, fornisce informazioni su potenziali problemi e dati per una più rapida risoluzione dei problemi. Numero di allarmi Matricola Robot Trend degli errori March 27, 2019 Slide 87 Connected Services Condition Monitoring & Diagnostics Servizio di monitoraggio e diagnostica sicuro 24 ore su 24, 7 giorni su 7, che identifica i sistemi robotizzati che non stanno funzionando in modo ottimale, fornisce informazioni su potenziali problemi e dati per una più rapida risoluzione dei problemi. Situazione Attuale Vantaggi con Connected Services • Chiamata al call center o per spiegare cosa è successo • GRATUITO per il periodo di garanzia • Necessarie competenze per interpretare il log degli • Tempi di reazione più rapidi e maggiore efficienza nelle allarmi attività di assistenza • Difficile assistere al manifestarsi del problema • Supporto tecnico ottimizzato • Rischio di fornire informazioni errate ai tecnici • Notifica istantanea e identificazione rapida della causa del guasto • Rilevamento tempestivo di errori su ventole, alimentatori, connettività, risorse software, cavi e componenti meccanici March 27, 2019 Slide 88 Connected Services Backup management Assicura che sia sempre disponibile un backup completo del programma robot. I backup automatici possono essere pianificati in qualsiasi momento e memorizzati nel cloud o su qualsiasi server. March 27, 2019 Slide 89 Connected Services Backup management Assicura che sia sempre disponibile un backup completo del programma robot. I backup automatici possono essere pianificati in qualsiasi momento e memorizzati nel cloud o su qualsiasi server. Situazione Attuale Vantaggi con Connected Services • Impiego di tempo per il backup di ogni macchina • Backup automatico salvato su server ABB o del cliente • Schedulazione non costante e periodica • Schedulazione giornaliera, settimanale o mensile • Richiesto operatore dedicato • Richiesta di backup da remoto • Archiviazione problematica March 27, 2019 Slide 90 Connected Services Asset Optimization Può aiutare a identificare i robot, i componenti e il software che non funzionano a livelli ottimali e fornisce regolarmente raccomandazioni proattive su come migliorare le prestazioni ed evitare eventi che possono causare tempi di inattività. March 27, 2019 Slide 91 Connected Services Asset Optimization Può aiutare a identificare i robot, i componenti e il software che non funzionano a livelli ottimali e fornisce regolarmente raccomandazioni proattive su come migliorare le prestazioni ed evitare eventi che possono causare tempi di inattività. Situazione Attuale Vantaggi con Connected Services • Richiesto fermo macchina • Nessun fermo macchina richiesto • Intervento di 2 tecnici : meccanico + softwarista • • Impegno del cliente nel raccogliere costantemente l’error log Report periodico ogni mese, trimestre o quadrimestre • Raccolta automatica dei dati necessari • Segnalazione azioni miglioramento e lista ricambi consigliata • Nessun intervento tecnico necessario • Necessario l’impiego di un tecnico per elaborazione dati raccolti March 27, 2019 Slide 92 Connected Services Fleet Assessment Confronta i robot con l’intera popolazione di robot ABB connessi, consentendo l’identificazione dei robot con carichi di lavoro maggiore e la definizione delle priorità in fase di manutenzione March 27, 2019 Slide 93 Connected Services Fleet Assessment Confronta i robot con l’intera popolazione di robot ABB connessi, consentendo l’identificazione dei robot con carichi di lavoro maggiore e la definizione delle priorità in fase di manutenzione Situazione attuale Vantaggi con Connected Services • Nessun confronto possibile tra il robot e la popolazione ABB • Attività di manutenzione dettata dai manuali March 27, 2019 Slide 94 • Incremento del ciclo di vita delle parti del robot • Comparazione automatica con l’intera popolazione ABB • Definizione ottimizzata delle attività di manutenzione e di service Connected Services Remote Access Consente un accesso rapido e sicuro ai controllori e ai robot collegati. L’accesso è consentito su richiesta e supervisione del cliente protetto da sicurezza hardware e software. March 27, 2019 Slide 95 Connected Services Remote Access Consente un accesso rapido e sicuro ai controllori e ai robot collegati. L’accesso è consentito su richiesta e supervisione del cliente protetto da sicurezza hardware e software. Situazione Attuale Vantaggi con Connected Services • Necessario intervento tecnico per l’analisi del problema • Richiesta la presenza del programmatore per attuare eventuali modifiche March 27, 2019 Slide 96 • Possibilità di agire come se presenti sul posto • Accesso al controller del robot ed agli altri dispositivi connessi • Risoluzione dei problemi più rapidi Connected Services Per qualsiasi richiesta fare riferimento al seguente recapito: IT-connectedservices.robotics@abb.com March 27, 2019 Slide 97 Contatti utili training.robot@it.abb.com Training robotica +39 3669061246 Simone Romeo (Training Coordinator) ricambi.service@it.abb.com Ricambi marco.buffa@it.abb.com Avvolgicavo, bumper Flexpendant, UPS IT-myabbaccess@abb.com Accesso al portale MyABB (Documentazione tecnica) IT-supporto-tecnico@abb.com Supporto tecnico per le applicazioni supporto-robot@it.abb.com Assistenza tecnica service (interventi) IT-robotsupportovendite@abb.com Supporto vendite +02 24150000 Contact center March 27, 2019 Slide 98