Strumenti Utente

Strumenti Sito


robotica

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
robotica [2025/04/18 16:50] – [Installazione e licenze] adminrobotica [2025/09/08 13:38] (versione attuale) – [PROFINET e comunicazione con PLC] admin
Linea 160: Linea 160:
  
 Nell'esecuzione del programma il robot si muove lungo dei **percorsi**, definiti con la Flexpendant o con RobotStudio, che contengono le istruzioni di movimento. In queste istruzioni, oltre al target da raggiungere, si specifica: Nell'esecuzione del programma il robot si muove lungo dei **percorsi**, definiti con la Flexpendant o con RobotStudio, che contengono le istruzioni di movimento. In queste istruzioni, oltre al target da raggiungere, si specifica:
-  * il tipo di movimento, che può essere:+  * il tipo di movimento (o meglio il metodo di interpolazione nel movimento), che può essere:
     * moveJ (move joint), quello predefinito che segue una traiettoria ottimizzata per avere la massima velocità con le minime sollecitazioni e con configurazioni "naturali" che evitano le singolarità     * moveJ (move joint), quello predefinito che segue una traiettoria ottimizzata per avere la massima velocità con le minime sollecitazioni e con configurazioni "naturali" che evitano le singolarità
     * moveL (move linear), che segue una traiettoria rettilinea     * moveL (move linear), che segue una traiettoria rettilinea
Linea 207: Linea 207:
 === RobotStudio === === RobotStudio ===
  
-Si può cambiare la lingua di RobotStudio dalle opzioni (NB la traduzione in italiano presenta degli errori). Sempre nelle opzioni, alla voce Sincronizzazione, conviene indicare per tutti e quattro i campi il nome //MainModule//; in questo modo tutti i dati principali (tool, workobject, ecc.) vengono salvati in un modulo principale con quel nome.+Nelle opzioni di RobotStudio si può cambiare la lingua di RobotStudio ed è consigliato usare la lingua inglese perché la traduzione in italiano presenta degli errori. Sempre nelle opzioni, alla voce Sincronizzazione, conviene indicare per tutti e quattro i campi il nome //MainModule//; in questo modo tutti i dati principali (tool, workobject, ecc.) vengono salvati in un modulo principale con quel nome ogni volta che si fa la sincronizzazione (il valore di default è //Module1//).
  
 === SmartGripper === === SmartGripper ===
Linea 218: Linea 218:
   * aggiungere un secondo end-effector SmartGripper (non virtual), collegarlo al robot e poi cancellarlo   * aggiungere un secondo end-effector SmartGripper (non virtual), collegarlo al robot e poi cancellarlo
  
-L'ultimo passaggio serve solo a creare il sistema di coordinate //Servo// posto nel punto dove le dita della pinza afferrano un oggetto. Questo //tool// indispensabile, che manca nel componente Virtual SmartGripper (forse per una dimenticanza), viene creato e resta anche dopo aver eliminato lo SmartGripper.+L'ultimo passaggio serve solo a creare il sistema di coordinate //Servo// posto nel punto dove le dita della pinza afferrano un oggetto. Questo //tool// indispensabile, che manca nel componente Virtual SmartGripper (forse per una dimenticanza), viene creato e resta anche dopo aver eliminato lo SmartGripper. UPDATE In realtà sembra che aggiungere e cancellare lo SmartGripper non sia necessario perché nel modulo RAPID //VSG_tooldata// è già definito il tooldata //t_VSG_Servo// con le coordinate del punto di presa del gripper e sarebbe sufficiente premere il pulsante //Sincronizzare alla stazione// spuntando solo quel tooldata per aggiungere il sistema di coordinate alla stazione.
  
 === Impostazioni del controllore === === Impostazioni del controllore ===
  
-Si può usare RobotStudio anche senza modificare le opzioni predefinite ma sarebbe meglio: +Ai soli fini della simulazione si potrebbe usare RobotStudio anche senza modificare le opzioni predefinite ma __se si vuole caricare il programma sul robot bisogna necessariamente modificare il parametro //Arm Angle Reference//__((si veda il Manuale tecnico di riferimento Parametri di sistema RW 7)) da ''WorldY'' a ''Axis1'' (dalla configurazione del controllore nella sezione Motion alla voce Robot) che serve a evitare le singolarità quando il robot è montato a pavimento((il nostro robot nasce come braccio destro del robot YuMi Dual Arm IRB14000)) altrimenti il movimento del robot in simulazione non corrisponderà quello del robot vero e proprio((questa opzione influenza il calcolo dei movimenti effettuato dal controllore)).
-  * modificare il parametro //Arm Angle Reference//((si veda il Manuale tecnico di riferimento Parametri di sistema RW 7)) da ''WorldY'' a ''Axis1'' (dalla configurazione del controllore nella sezione Motion alla voce Robot) che serve a evitare le singolarità quando il robot è montato a pavimento((il nostro robot nasce come braccio destro del robot YuMi Dual Arm IRB14000)) +
-  * spuntare le opzioni //Collision Detection// e //Multitasking// del controller per avere disposizione i blocchi dello SmartGripper nell'ambiente di programmazione Wizard; il modo più semplice per farlo è spuntare //Opzioni di personalizzazione// quando si crea il controller+
  
-Altre opzioni che risultano attivate nel controller reale e che non sono presenti di default:  +Per ottenere un comportamento che replichi quello del controllore reale è bene anche: 
-  * Absolute Accuracy +  * spuntare le opzioni //Collision Detection// //Multitasking// del controller per avere a disposizione i blocchi dello SmartGripper nell'ambiente di programmazione Wizard; il modo più semplice per farlo è spuntare //Opzioni di personalizzazione// quando si crea il controller 
-  * RW Add-In Prepared +  * attivare queste opzioni che non sono presenti di default: Absolute AccuracyRW Add-In PreparedCollsion AvoidanceIntegrated Vision InterfacePath RecoveryRobotStudio ConnectSoft MoveWorld ZoneProfinet Device 
-  * Collsion Avoidance +Le opzioni sopra indicate si possono impostare quando si crea un nuovo progetto includendo un controllore (mettendo la spunta su //Opzioni di personalizzazione//) oppure dalla scheda Controllore cliccando //Installazione|Modifica Installazione// e selezionandole nella scheda //Caratteristiche//; le opzioni sono documentate nel documento [[https://library.abb.com/d/3HAC079823-007|dati tecnici del prodotto Omnicore E line]]. Nella scheramata sotto le impostazioni modificate rispetto a quelle di default.
-  * Integrated Vision Interface +
-  * Path Recovery +
-  * RobotStudio Connect +
-  * Soft Move +
-  * World Zone +
-  * Profinet Device+
  
 +{{::opzioni_controller.png|opzioni controller che replicano la configurazione del robot reale}}
  
 === Nel software === === Nel software ===
  
-Quando il calcolo dei movimenti genera il warning //Errore d'angolo// la simulazione si interrompe. Questo situazione capita molto di frequente ed è abbastanza imprevedibile. Per trascurare il warning inserire nel codice RAPID l'istruzione:+Quando il calcolo dei movimenti genera il warning //Errore d'angolo// <del>la simulazione si interrompe</del> compare un messaggio di avvertimento. Questo situazione capita molto di frequente ed è abbastanza imprevedibile. Per trascurare il warning inserire nel codice RAPID l'istruzione:
  
     CornerPathWarning FALSE;     CornerPathWarning FALSE;
          
-In simulazione non è richiesto ma la pinza del robot richiede una calibrazione ad ogni nuovo avvio del controller. Per farla in automatico inserire nel condice RAPID le istruzioni:+In simulazione non è richiesto ma la pinza del robot richiede una calibrazione ad ogni nuovo avvio del controller. Per calibrare la pinza automaticamente inserire nel condice RAPID le istruzioni:
  
     g_JogIn;      g_JogIn; 
Linea 253: Linea 246:
 ===== File con modello di stazione robot ===== ===== File con modello di stazione robot =====
  
-Nel link seguente si può scaricare un file che contiene una stazione robotica (robot, virtual controller, smartgripper) che replica quella del laboratorio((non è una copia esatta ma le opzioni sono le stesse)) e può essere usato come modello da cui partire per un progetto RobotStudio.+Nel link seguente si può scaricare un file che contiene una stazione robotica (robot, virtual controller, smartgripper) che replica quella del laboratorio((non è una copia esatta ma il controller usa la stessa versione dei RobotWare 7.10.1 con Wizard 1.5.2 e le stesse opzioni del robot vero e proprio)) e può essere usato come modello da cui partire per un progetto RobotStudio.
  
 [[https://drive.google.com/file/d/1sgGJP_d1Vuh8w2qBT7XXbwKoF8Nxiuqa/view?usp=sharing|modello stazione con robot IRB14050]] [[https://drive.google.com/file/d/1sgGJP_d1Vuh8w2qBT7XXbwKoF8Nxiuqa/view?usp=sharing|modello stazione con robot IRB14050]]
Linea 393: Linea 386:
   * documenti tecnici più utili   * documenti tecnici più utili
     * {{ ::3hac065036_om_omnicore-en.pdf |Manuale del sistema Omnicore}}, installazione e uso del robot con l'unità di programmazione esterna Flexpendant     * {{ ::3hac065036_om_omnicore-en.pdf |Manuale del sistema Omnicore}}, installazione e uso del robot con l'unità di programmazione esterna Flexpendant
-    * [[https://library.abb.com/d/3HAC050947-007|Panoramica del linguaggio RAPID]] (180 pagine)+    * [[https://library.abb.com/d/3HAC050947-007|Panoramica del linguaggio RAPID]] (180 pagine)  **è il documento più importante per programmare in RAPID**
   * altri documenti tecnici   * altri documenti tecnici
     * [[https://library.abb.com/d/3HAC064627-007|Dati tecnici del robot IRB14050]]     * [[https://library.abb.com/d/3HAC064627-007|Dati tecnici del robot IRB14050]]
Linea 405: Linea 398:
     * [[https://library.abb.com/d/3HAC082346-001|Application Manual I/O Engineering]]     * [[https://library.abb.com/d/3HAC082346-001|Application Manual I/O Engineering]]
     * [[https://library.abb.com/d/3HAC065041-001|Technical Reference Manual - System Parameters]]     * [[https://library.abb.com/d/3HAC065041-001|Technical Reference Manual - System Parameters]]
 +    * [[https://library.abb.com/d/3HAC079823-007|Dati tecnici dell'Omnicore E line]]
 ==== Altre risorse ==== ==== Altre risorse ====
    
Linea 444: Linea 438:
 ==== PROFINET e comunicazione con PLC ==== ==== PROFINET e comunicazione con PLC ====
  
-Il 10/9/2024 provo a configurare PROFINET per comunicare col PLC. Non si può testare con un controller virtuale ma bisogna collegarsi direttamente al robot sulla porta LAN o sulla WAN (chiamate anche rispettivamente I/O e Public network). Non si usa la porta MGMT che serve solo per accedere al controller da RobotStudio con DHCP((il controller ha un IP fisso 192.168.125.1 e ne assegna unoal PC collegato)). +Il 10/9/2024 provo a configurare PROFINET per comunicare col PLC. Non si può testare con un controller virtuale ma bisogna collegarsi direttamente al robot sulla porta LAN o sulla WAN (chiamate anche rispettivamente I/O e Public network). Non si usa la porta MGMT che serve solo per accedere al controller da RobotStudio con DHCP((il controller ha un IP fisso 192.168.125.1 e ne assegna uno al PC collegato)). 
  
-Appena lanciato RobotStudio con Online|One Click Connect ci si collega al controller via MGMT. Poi si accede e, eventualmente si richiede l'accesso in scrittura. L'utente Default User ha permessi sufficienti per configurare PROFINET (Authenticate|View User Grants). Non serve configurare LAN e WAN (dalla scheda //Controllore// tasto destro sul nome del controller poi Proprietà|Impostazioni di Rete|Rete I/O oppure Public Network come descritto nel paragrafo 18.6 del manuale RobotStudio) perché la WAN Network ha già un IP 192.168.0.10 (è anche gateway per la I/O networkcompatibile con quello dei PLC (192.168.0.1). Purtroppo servono due cavi di rete su PC e controller:+Appena lanciato RobotStudio con Online|One Click Connect ci si collega al controller via MGMT. Poi si accede e, eventualmente si richiede l'accesso in scrittura. L'utente Default User ha permessi sufficienti per configurare PROFINET (Authenticate|View User Grants). <del>Non serve configurare</del> Le schede di rete LAN (I/O) e WAN (Public) si configurano dalla scheda //Controllore// tasto destro sul nome del controller poi Proprietà|Impostazioni di Rete|Rete I/O oppure Public Network come descritto nel paragrafo 18.6 del manuale RobotStudio. Per la WAN Network, che è anche gateway per la I/O network, serve un IP compatibile con quello dei PLC (che è 192.168.0.1), ad esempio 192.168.0.10. Purtroppo servono due cavi di rete su PC e controller:
   * uno per la porta MGMT   * uno per la porta MGMT
   * uno per la porta WAN con PROFINET   * uno per la porta WAN con PROFINET
-Per usare contemporaneamente TIA Portal e RobotStudio il PC deve avere tre schede di rete (una per la rete di istituto, una per PLC e controller con PROFINET, una per accedere al controller). Uso un adattatore ethernet USB per collegarmi a MGMT.+Per usare contemporaneamente TIA Portal e RobotStudio il PC deve avere tre schede di rete (una per la rete di istituto, una per PLC e controller con PROFINET, una per accedere al controller). 
  
 Seguo l'[[https://search.abb.com/library/Download.aspx?DocumentID=3HAC066558-001&LanguageCode=en&DocumentPartId=&Action=Launch|Application Manual]] su PROFINET per configurazione e altro((controllo anche che PROFINET sia abilitata dal firewall sul controller da Configuration|Communication|Firewall Manager)), chiedo l'accesso in scrittura e lancio I/O Engineering((c'è la sua [[https://library.abb.com/d/3HAC082346-001|Application Guide]])). Probabilmente il manuale è scritto per i controller IRC5 e i passaggi indicati nel paragrafo 4.4 per impostare il nome della stazione su PROFINET non corrispondono per il controller Omnicore del nostro robot. Alla fine scopro che da I/O Engineering, dopo aver selezionato PROFINET, posso cliccare sulla scheda Device Catalogue e aggiungere un nome e la label. Aggiungo anche i segnali DI e DO a 64byte. Prima di sovrascrivere la configurazione salvo quella di Lepori ({{ ::progetti_io_engineering.zip |qui}} c'è un backup). Riaprendo I/O Engineering ritrovo la configurazione salvata e dopo averlo chiuso ritrovo le stesse voci su Configuration|I/O System|PROFINET Network. PROFINET è finalmente espandibile tra gli I/O system.  Seguo l'[[https://search.abb.com/library/Download.aspx?DocumentID=3HAC066558-001&LanguageCode=en&DocumentPartId=&Action=Launch|Application Manual]] su PROFINET per configurazione e altro((controllo anche che PROFINET sia abilitata dal firewall sul controller da Configuration|Communication|Firewall Manager)), chiedo l'accesso in scrittura e lancio I/O Engineering((c'è la sua [[https://library.abb.com/d/3HAC082346-001|Application Guide]])). Probabilmente il manuale è scritto per i controller IRC5 e i passaggi indicati nel paragrafo 4.4 per impostare il nome della stazione su PROFINET non corrispondono per il controller Omnicore del nostro robot. Alla fine scopro che da I/O Engineering, dopo aver selezionato PROFINET, posso cliccare sulla scheda Device Catalogue e aggiungere un nome e la label. Aggiungo anche i segnali DI e DO a 64byte. Prima di sovrascrivere la configurazione salvo quella di Lepori ({{ ::progetti_io_engineering.zip |qui}} c'è un backup). Riaprendo I/O Engineering ritrovo la configurazione salvata e dopo averlo chiuso ritrovo le stesse voci su Configuration|I/O System|PROFINET Network. PROFINET è finalmente espandibile tra gli I/O system. 
Linea 455: Linea 449:
 Provo a fare uno scan della rete PROFINET da I/O Engineering ma non trova il PLC. Riprovo dopo aver impostato LLDP legacy. Rimetto LLDP standard e imposto il nome "omnicore" come compare di default su TIA Portal. Carico SW e HW sul PLC dopo aver corretto l'indirizzo IP del controller. Lo scan da I/O Engineering non va comunque. Provo a fare uno scan della rete PROFINET da I/O Engineering ma non trova il PLC. Riprovo dopo aver impostato LLDP legacy. Rimetto LLDP standard e imposto il nome "omnicore" come compare di default su TIA Portal. Carico SW e HW sul PLC dopo aver corretto l'indirizzo IP del controller. Lo scan da I/O Engineering non va comunque.
  
-Provo a seguire il [[https://www.youtube.com/watch?v=LEY-dQcxNvY|tutorial tedesco]] e poi  [[https://www.youtube.com/watch?v=jmbwrpESQeA|quello spagnolo]]. In I/O Engineering creo:+Provo a seguire il [[https://www.youtube.com/watch?v=LEY-dQcxNvY|tutorial danese]] e poi  [[https://www.youtube.com/watch?v=jmbwrpESQeA|quello spagnolo]]. In I/O Engineering creo:
   * nello slot 1: DO 64 byte (uscite PROFINET dal robot)   * nello slot 1: DO 64 byte (uscite PROFINET dal robot)
   * nello slot 2: DI 64 byte (ingressi PROFINET del robot)   * nello slot 2: DI 64 byte (ingressi PROFINET del robot)
Linea 463: Linea 457:
   * dalla vista generale dispositivi (espandibile sulla destra) aggiungo due moduli nell'ordine inverso rispetto a robotstudio (le uscite del controller sono ingressi del PLC): DI 64 bytes e DO 64 bytes   * dalla vista generale dispositivi (espandibile sulla destra) aggiungo due moduli nell'ordine inverso rispetto a robotstudio (le uscite del controller sono ingressi del PLC): DI 64 bytes e DO 64 bytes
 Compilo la configurazione hardware e la carico sul PLC. Poi scrivo un programma con un solo segmento dove attivando l'ingresso fisico I0.0 del PLC si attiva l'uscita Q2.0 su PROFINET (l'indirizzo si vede dalla vista generale dei dispositivi associata al controller ominicore in TIA Portal). Dopo aver caricato il programma, se mi collego online col controller e apro la vista I/O System dalla scheda Controllore, vedo l'ingresso digitale PROFINET passare a 1 quando attivo l'ingresso del PLC. Funziona! Compilo la configurazione hardware e la carico sul PLC. Poi scrivo un programma con un solo segmento dove attivando l'ingresso fisico I0.0 del PLC si attiva l'uscita Q2.0 su PROFINET (l'indirizzo si vede dalla vista generale dei dispositivi associata al controller ominicore in TIA Portal). Dopo aver caricato il programma, se mi collego online col controller e apro la vista I/O System dalla scheda Controllore, vedo l'ingresso digitale PROFINET passare a 1 quando attivo l'ingresso del PLC. Funziona!
 +
 +Per trattare integer e real bisogna impacchettare i dati e trasmetterli come byte. [[https://www.youtube.com/watch?v=jiUzABaVH9c|Questo video]] di Universal Robots spiega più o meno come fare.
  
 ==== Dalla simulazione al robot ==== ==== Dalla simulazione al robot ====
robotica.1744995054.txt.gz · Ultima modifica: da admin