| Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente |
| robotica [2025/04/18 15:43] – [Il robot YuMi IRB 14050] admin | robotica [2025/09/08 13:38] (versione attuale) – [PROFINET e comunicazione con PLC] admin |
|---|
| * definire le azioni che deve svolgere il tool una volta raggiunti i target | * definire le azioni che deve svolgere il tool una volta raggiunti i target |
| |
| La definizione di posizione e orientamento di un target (o di qualunque altro oggetto) è data rispetto ad un sistema di riferimento scelto opportunamente. I vari sistemi di riferimento sono a loro volta definiti uno rispetto all'altro a partire da quello principale, detto work object zero (wobj0), posto alla base del robot. Altri sistemi di riferimento di uso comune sono: | La definizione di posizione e orientamento di un target (o di qualunque altro oggetto) è data rispetto ad un sistema di riferimento scelto opportunamente. I vari sistemi di riferimento sono a loro volta definiti uno rispetto all'altro a partire da quello principale, detto work object zero (wobj0), posto alla base del robot((spesso si parla di //world frame// e //user frame// per indicare il sistemi di riferimento universale e quello utente)). Altri sistemi di riferimento di uso comune sono: |
| * tool0, posto sulla flangia del robot | * tool0, posto sulla flangia del robot |
| * servo, coincidente col TCP della pinza | * servo, coincidente col TCP della pinza |
| * linearmente, spostando il TCP lungo gli assi cartesiani di un sistema di riferimento | * linearmente, spostando il TCP lungo gli assi cartesiani di un sistema di riferimento |
| La movimentazione lineare è particolarmente utile ma richiede una potenza di calcolo elevata per risolvere un problema di [[https://it.wikipedia.org/wiki/Cinematica_inversa|cinematica inversa]], ovvero calcolare posizioni e velocità dei vari giunti che consentano di raggiungere la posizione desiderata. Questo compito può essere molto difficile, infatti: | La movimentazione lineare è particolarmente utile ma richiede una potenza di calcolo elevata per risolvere un problema di [[https://it.wikipedia.org/wiki/Cinematica_inversa|cinematica inversa]], ovvero calcolare posizioni e velocità dei vari giunti che consentano di raggiungere la posizione desiderata. Questo compito può essere molto difficile, infatti: |
| * un target può essere raggiunto con più configurazioni diverse dei giunti | * un target può essere raggiunto con più configurazioni diverse dei giunti (vedi ad esempio [[https://mecademic.com/wp-content/uploads/2024/09/meca500-two-configs-2.png|questa immagine]]) |
| * alcune configurazioni sono critiche perché possono portare a delle [[https://en.wikipedia.org/wiki/Industrial_robot#Singularities|singolarità]], ovvero configurazioni dove due assi risultano allineati, il calcolo fallisce o i movimenti richiedono velocità molto elevate per superare la singolarità (vedi [[https://www.youtube.com/watch?v=lD2HQcxeNoA|questo video]] o [[https://www.youtube.com/watch?v=6Wmw4lUHlX8|questo]] o [[https://www.youtube.com/watch?v=L7J_9OSxGvA|questo specifico del robot IRB14050]]) | * alcune configurazioni sono critiche perché possono portare a delle [[https://en.wikipedia.org/wiki/Industrial_robot#Singularities|singolarità]], ovvero configurazioni dove due assi risultano allineati, con conseguenze imprevedibili che vanno dal blocco del robot, perché il calcolo fallisce, a improvvisi aumenti di velocità (vedi [[https://www.youtube.com/watch?v=lD2HQcxeNoA|questo video]] o [[https://www.youtube.com/watch?v=6Wmw4lUHlX8|questo]] o [[https://www.youtube.com/watch?v=L7J_9OSxGvA|questo specifico del robot IRB14050]]) |
| |
| Nel raggiungere un target allora è particolarmente importante considerare il tipo di movimento e la configurazione con cui lo si raggiunge. Proprio per questo, nei robot ABB, i target vengono memorizzati in un tipo di dati chiamato robtarget che oltre alla posa contiene anche la configurazione del robot scelta per il target. | Nel raggiungere un target allora è particolarmente importante considerare il tipo di movimento e la configurazione con cui lo si raggiunge. Proprio per questo, nei robot ABB, i target vengono memorizzati in un tipo di dati chiamato robtarget che oltre alla posa contiene anche la configurazione del robot scelta per il target. |
| |
| 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 |
| * il workobject, cioè il sistema di riferimento da considerare nello spostamento | * il workobject, cioè il sistema di riferimento da considerare nello spostamento |
| |
| In genere si muove il robot con movimenti moveJ tranne quando si devono fare lavorazioni precise. In questo caso ci si avvicina al punto di lavoro definendo un target su punto di approccio, da raggiungere con movimenti moveJ, per poi procedere con movimenti moveL solo dove è necessario; per allontanarsi si definisce un target su un punto di svincolo e da lì si procede con movimenti moveJ. | In genere conviene usare movimenti moveJ ma quando si devono fare lavorazioni precise ci si avvicina al punto di lavoro, definendo un target su punto di approccio da raggiungere con moveJ, per poi procedere con movimenti moveL solo dove è necessario (per allontanarsi si raggiunge un punto di svincolo con moveL e da lì si procede con movimenti moveJ). |
| |
| ===== RobotStudio ===== | ===== RobotStudio ===== |
| |
| Nell'anno scolastico 2023-2024 abbiamo usato RobotStudio2023. Questa versione ha un'interfaccia grafica diversa rispetto a quelle precedenti a cui fanno riferimento i libri di testo (ad esempio la 2020) ma i comandi e le funzioni sono più o meno quelli. Questo software non è esente da difetti: | Nell'anno scolastico 2023-2024 abbiamo usato RobotStudio2024. Questa versione ha un'interfaccia grafica diversa rispetto a quelle cui fanno riferimento i libri di testo ma i comandi e le funzioni sono più o meno gli stessi. Questo software non è esente da difetti: |
| * specialmente nelle versioni più recenti è piuttosto impegnativo come risorse | * è piuttosto impegnativo come risorse |
| * i crash non sono frequenti ma capitano, meglio salvare spesso | * i crash non sono frequenti ma capitano ed è meglio salvare spesso |
| * è tradotto male in italiano (Project è tradotto proietta invece che progetto ma ci sono tanti altri esempi) | * è tradotto male in italiano (//Project// è tradotto proietta invece che progetto, ma ci sono tanti altri esempi) |
| * il calcolo dei movimenti fallisce troppo spesso, o fallisce in maniera imprevedibile, specialmente per i robot a sette assi come il nostro | * il calcolo dei movimenti fallisce troppo spesso, o fallisce in maniera imprevedibile, specialmente per i robot a sette assi come il nostro |
| ==== Installazione e licenze ==== | ==== Installazione e licenze ==== |
| * Wizard Easy Programming, per la programmazione a blocchi su Flexpendant | * Wizard Easy Programming, per la programmazione a blocchi su Flexpendant |
| |
| RobotWare 7 a sua volta propone l'installazione del software Virtual Flexpendant, indipendente da RobotStudio, che simula l'unità di programmazione esterna Flexpendant. Per simulare correttamente la pinza conviene installare anche il componente [[https://forums.robotstudio.com/discussion/12138/recent-update-march-2021-download-virtual-smartgripper-2-3-01?utm_source=community-search&utm_medium=organic-search&utm_term=virtual+smartgripper|Virtual SmartGripper]]. | RobotWare 7 a sua volta propone l'installazione del software Virtual Flexpendant, indipendente da RobotStudio, che simula l'unità di programmazione esterna Flexpendant. Per fare in modo che la pinza interagisca con gli oggetti nelle simulazioni conviene installare anche il componente [[https://forums.robotstudio.com/discussion/12138/recent-update-march-2021-download-virtual-smartgripper-2-3-01?utm_source=community-search&utm_medium=organic-search&utm_term=virtual+smartgripper|Virtual SmartGripper]]. |
| |
| ==== File associati a RobotStudio ==== | ==== File associati a RobotStudio ==== |
| === 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 === |
| * 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à a 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 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 | |
| |
| 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// e //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 Accuracy, RW Add-In Prepared, Collsion Avoidance, Integrated Vision Interface, Path Recovery, RobotStudio Connect, Soft Move, World Zone, Profinet 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; |
| ===== 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]] |
| * 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]] |
| * [[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 ==== |
| | |
| ==== 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 network) compatibile 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. |
| 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) |
| * 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 ==== |