Strumenti Utente

Strumenti Sito


manipolatore

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
manipolatore [2018/12/11 19:31] – [Manipolatore] adminmanipolatore [2021/04/27 10:40] (versione attuale) – [Scrivere il programma per PLC: da SFC a ladder] admin
Linea 80: Linea 80:
 Il [[https://www.fischertechnik.de/en/products/simulating/training-models/511938-sim-3d-robot-24v-simulation|manipolatore]] monta due motori DC semplici e due motori DC con encoder a 24V ({{ ::144643-encodermotor24v.pdf |datasheet motore con encoder}}). Il [[https://www.fischertechnik.de/en/products/simulating/training-models/511938-sim-3d-robot-24v-simulation|manipolatore]] monta due motori DC semplici e due motori DC con encoder a 24V ({{ ::144643-encodermotor24v.pdf |datasheet motore con encoder}}).
  
-Nei due motori senza encoder il sensore di posizione è esterno e piuttosto primitivo: una ruota con quattro sporgenze azionata dal motore preme un contatto mentre ruota generando degli impulsi.+Nei due motori senza encoder il sensore di posizione è esterno e piuttosto primitivo: una ruota con quattro sporgenze azionata dal motore preme un contatto mentre ruota generando degli impulsi ([[https://content.ugfischer.com/cbfiles/fischer/Zulassungen/ft/37783-Mini-switch.pdf|qui]] il datasheet dei contatti di scambio usati nella scheda anche per i finecorsa).
  
 L'immagine seguente mostra motore e riduttore (neri) e la ruota (a sinistra) che preme il contatto generando gli impulsi. L'immagine seguente mostra motore e riduttore (neri) e la ruota (a sinistra) che preme il contatto generando gli impulsi.
Linea 86: Linea 86:
 {{:sensore_a_impulsi.jpg?300|Sensore ad impulsi per il movimento orizzontale}} {{:sensore_a_impulsi.jpg?300|Sensore ad impulsi per il movimento orizzontale}}
  
- Il segnale prodotto non permette di stabilire il verso di rotazione ma può essere utilizzato per calcolare la velocità di rotazione e il movimento (relativo) del motore. Nel programma il segnale dal sensore ad impulsi fa incrementare un contatore dopo averlo azzerato con finecorsa che indica il raggiungimento di una posizione ben precisa. In questo caso il valore del contatore indica la posizione assoluta mentre il movimento procede in un verso prestabilito, con il valore zero che corrisponde alla posizione iniziale. + Il segnale prodotto non permette di stabilire il verso di rotazione ma può essere utilizzato per calcolare la velocità di rotazione e il movimento (relativo) del motore. Nel programma il segnale dal sensore ad impulsi fa incrementare un contatore dopo averlo azzerato con un finecorsa che indica il raggiungimento di una posizione ben precisa. In questo caso il valore del contatore indica la posizione assoluta mentre il movimento procede in un verso prestabilito, con il valore zero che corrisponde alla posizione iniziale. 
  
 Gli altri due motori hanno a bordo un encoder in quadratura (vedi pagina 41 del paragrafo 5 modulo 14 nel libro di testo). Ai morsetti di questi motori, oltre ai due terminali per l'alimentazione, troviamo un connettore a quattro fili per l'encoder, due per l'alimentazione del sensore e due per i segnali impulsivi prodotti dal sensore. I due segnali permettono di stabilire direzione, velocità e movimento relativo del motore. Se si accoppia all'encoder un finecorsa che segnali la posizione iniziale è possibile stabilire anche la posizione assoluta del motore.  Gli altri due motori hanno a bordo un encoder in quadratura (vedi pagina 41 del paragrafo 5 modulo 14 nel libro di testo). Ai morsetti di questi motori, oltre ai due terminali per l'alimentazione, troviamo un connettore a quattro fili per l'encoder, due per l'alimentazione del sensore e due per i segnali impulsivi prodotti dal sensore. I due segnali permettono di stabilire direzione, velocità e movimento relativo del motore. Se si accoppia all'encoder un finecorsa che segnali la posizione iniziale è possibile stabilire anche la posizione assoluta del motore. 
Linea 119: Linea 119:
     * fase operativa: contatore A/B (encoder in quadratura)     * fase operativa: contatore A/B (encoder in quadratura)
     * ingresso di reset abilitato      * ingresso di reset abilitato 
-    * **NB per le CPU serie 40 bisogna modificare l'opzione del filtro sugli ingressi digitali portandolo ad esempio a 0,1 ms (il valore predefinito di 6,4 ms va bene per le CPU serie 30)**+    * **NB per le CPU serie 40 bisogna modificare l'opzione del filtro sugli ingressi digitali portandolo ad esempio a 0,1 ms (il valore predefinito di 6,4 ms va bene per le CPU serie 30)**; per farlo selezionare il PLC e nelle proprietà modificare il valore del filtro per i quattro canali (gli ingressi) con i segnali in quadratura dell'encoder (canali 0, 1, 4 e 5 nella sezione ''DI 14/DQ 10'')
  
 L'indirizzamento dei contatori è predefinito: L'indirizzamento dei contatori è predefinito:
Linea 154: Linea 154:
  
 Si può scaricare il programma da PLC a Tia Portal: Si può scaricare il programma da PLC a Tia Portal:
-  * usando la stessa versione con cui è stato creato il progetto (Tia Prota 11) +  * usando la stessa versione con cui è stato creato il progetto (Tia Portal 11) 
   * creando un nuovo progetto    * creando un nuovo progetto 
   * aggiungendo una CPU uguale a quella da cui si vuole scaricare il progetto   * aggiungendo una CPU uguale a quella da cui si vuole scaricare il progetto
Linea 242: Linea 242:
 Osservazioni: Osservazioni:
   * i passi del diagramma SFC non coincidono con gli stati del diagramma temporale (sono di più per il parallelismo) ma il risultato è lo stesso   * i passi del diagramma SFC non coincidono con gli stati del diagramma temporale (sono di più per il parallelismo) ma il risultato è lo stesso
-  * lo stato iniziale P0, quando attivo, fa partire l'homing+  * lo stato iniziale P0, quando attivo, fa partire l'homing (la condizione che attiva la transizione è sempre verificata)
   * i movimenti sono attivi contemporaneamente ma indipendenti sono gestiti con parallelismo e sincronizzazione   * i movimenti sono attivi contemporaneamente ma indipendenti sono gestiti con parallelismo e sincronizzazione
   * nel parallelismo sono necessari degli stati di attesa che segnalano il completamento di un movimento; quando tutti gli stati di attesa sono attivi tutti i movimenti sono completati e la sequenza può procedere   * nel parallelismo sono necessari degli stati di attesa che segnalano il completamento di un movimento; quando tutti gli stati di attesa sono attivi tutti i movimenti sono completati e la sequenza può procedere
Linea 263: Linea 263:
     * uscite, che gestisca i 4 motori nelle due direzioni e i due contatori dei sensori ad impulsi     * uscite, che gestisca i 4 motori nelle due direzioni e i due contatori dei sensori ad impulsi
   * altre osservazioni:   * altre osservazioni:
-    * i finecorsa sono normalmente chiusi+    * i finecorsa sono normalmente <del>chiusi</del> aperti
     * negli operatori di confronto è indispensabile impostare il tipo di dati corretto (''Dint'' per i contatori veloci e ''int'' per i contatori ''CUP''     * negli operatori di confronto è indispensabile impostare il tipo di dati corretto (''Dint'' per i contatori veloci e ''int'' per i contatori ''CUP''
     * non usare ''=='' ma ''>='' e ''%%<=%%'' negli operatori di confronto, specialmente con i contatori veloci     * non usare ''=='' ma ''>='' e ''%%<=%%'' negli operatori di confronto, specialmente con i contatori veloci
Linea 276: Linea 276:
   * cosmetici   * cosmetici
     * rinominare gli stati in modo che il parallelismo attivi passi con numerazione successiva (P1, P2, P3 e P4 invece che P1, P3, P5, P7)     * rinominare gli stati in modo che il parallelismo attivi passi con numerazione successiva (P1, P2, P3 e P4 invece che P1, P3, P5, P7)
-  * semplificazioni+  * semplificazioni SFC
     * usando il qualificatore C (condizionata) per alcune azioni si semplifica la gestione dell'homing; non è più necessario il parallelismo ma si ricorre a un solo stato con tutti i riposizionamenti condizionati dal relativo finecorsa posto in serie all'uscita che attiva il relativo motore (utile anche per evitare funzionamenti anomali)     * usando il qualificatore C (condizionata) per alcune azioni si semplifica la gestione dell'homing; non è più necessario il parallelismo ma si ricorre a un solo stato con tutti i riposizionamenti condizionati dal relativo finecorsa posto in serie all'uscita che attiva il relativo motore (utile anche per evitare funzionamenti anomali)
   * pratici   * pratici
Linea 287: Linea 287:
     * timer su tutti i movimenti?      * timer su tutti i movimenti? 
     * sicurezza sulla chiusura pinza (se il contatore non avanza e il motore è attivo disattivare il motore)     * sicurezza sulla chiusura pinza (se il contatore non avanza e il motore è attivo disattivare il motore)
-  * HMI +  * configurazione (anche via HMI) usando un DB ritenzione
-    * adattare GUI di Silighini per il programma 2017 +
-    * monitoraggio motori, contatori e finecorsa +
-    * impostazione delle coordinate via HMI (al momento sono hardcoded e bisogna modificare il programma); eventualmente usare variabili a ritenzione per conservare le nuove impostazione tra un riavvio l'altro+
  
  
Linea 313: Linea 310:
 ===== Risorse ===== ===== Risorse =====
  
 +  * [[hmi#hmi_e_manipolatore|qui]] l'ultima versione del 2020 con abbinato un pannello HMI per monitoraggio e configurazione
   * {{ ::manipolatore_2013.zip |progetto del 2013 migrato a Tia Portal 13}}   * {{ ::manipolatore_2013.zip |progetto del 2013 migrato a Tia Portal 13}}
   * [[https://drive.google.com/file/d/1QfzHOVeLeZhh9xnr7h10ygr6xn7lL_Ce/view?usp=sharing|implementazione SFC del 2017]]   * [[https://drive.google.com/file/d/1QfzHOVeLeZhh9xnr7h10ygr6xn7lL_Ce/view?usp=sharing|implementazione SFC del 2017]]
   * {{ ::sfc_manipolatore.zip |sorgente del diagramma SFC}} per [[https://draw.io]]   * {{ ::sfc_manipolatore.zip |sorgente del diagramma SFC}} per [[https://draw.io]]
  
manipolatore.1544556677.txt.gz · Ultima modifica: 2020/07/03 15:58 (modifica esterna)