Strumenti Utente

Strumenti Sito


manipolatore

Manipolatore

Il video mostra il manipolatore che svolge la funzione di carico scarico su una linea. Il programma è quello sviluppato nel 2013 quando sono stati acquistati i due trainer Fischertechnik per PLC.

Il manipolatore è dotato di una scheda di interfaccia per poterlo collegare al PLC (qui sono indicati ingressi e uscite). La scheda può essere alimentata direttamente dal PLC (con i 24V DC disponibili ai morsetti ''L+'' e ''M'') e ha ingressi e le uscite a 24V.

scheda di interfaccia per PLC

Sulla scheda 8 relè SPDT (singolo polo doppio contatto, come i deviatori) comandano i quattro motori nei due versi di rotazione. Lo schema di principio per ognuno dei motori è il seguente:

azionamento motore nelle due direzioni con due relè SPDT

Comandando opportunamente i due relè si riesce ad azionare il motore nelle due direzioni.

Nozioni di base sulla robotica (dal modulo 17 del testo)

L'unità 2 del modulo 17 del libro di testo, sulla robotica industriale, fornisce un'utile base teorica per il campo di applicazione del manipolatore.

La robotica industriale si inquadra nel contesto più generale dell'automazione e si prefigge gli stessi scopi:

  • migliorare la qualità
  • diminuire i costi
  • velocizzare i processi di produzione/lavorazione
  • ottenere un risparmio energetico

La differenza sostanziale tra una semplice macchina automatica e un robot è la maggiore flessibilità operativa.

Dal punto di vista meccanico un robot manipolatore è fatto di:

  • parti rigide dette bracci
  • articolazioni dette giunti (vedi fig. 1 pag. 300)
  • un end-effector (mano, pinza, ecc.)

La parte elettrica/elettronica comprende:

  • sensori
  • attuatori elettrici, pneumatici o idraulici
  • l'interfaccia utente (sistema elettronico di programmazione e controllo)
  • alimentazione ed eventuale conversione energia (ad esempio da elettrica a aria compressa)

I campi di impiego tipici dei robot sono:

  • trasporto (palettizzazione, carico/scarico, selezione e smistamento, confezionamento)
  • lavorazione (saldatura, verniciatura, trapanatura, avvitatura, incollaggio, taglio laser)
  • assemblaggio (meccanico, elettrico, di schede elettronche)

I giunti di un robot (vedi fig. 2 e 3) possono essere:

  • di traslazione T
  • o di rotazione R

Il numero di giunti presenti definisce il gradi di libertà di un robot; questi sono al massimo 6: rotazione intorno a tre assi e spostamento lungo gli assi stessi (la fig. 7 mostra due robot con quattro e tre gradi di libertà). Lo spazio di lavoro è invece l'insieme dei punti raggiungibili dalla mano del robot (figura 8b).

I robot possono essere classificati in base al tipo di giunti che adottano (vedi figure da 8 a 15). Secondo questa classificazione il manipolatore che utilizzeremo è un robot cilindrico (RTT) con 4 gradi di libertà (un giunto di rotazione, due di traslazione più la pinza).

I robot possono vantare una grande flessibilità operativa ma presentano dei difetti; il principale è il costo elevato, dovuto all'uso di materiali pregiati e componenti sofisticati e oltre alle difficoltà di progettazione sia di natura elettronica (programmazione, gestione e azionamento) che meccanica (sollecitazioni statiche e dinamiche in una struttura a sbalzo).

Gli attuatori usati nei robot sono i servomotori, motori con prestazioni elevate accoppiati a sistemi di controllo elettronico (si parla di azionamenti, in questo caso), che permettono il controllo preciso di posizione, velocità e accelerazione.

La trasmissione del movimento tra gli organi meccanici può essere:

  • a cinghia o catena
  • ad albero
  • con ruote dentate

Quando è necessario convertire un moto rotatorio in uno lineare si sfruttano:

  • l'accoppiamento vite-madrevite (fig. 21 e 22), usato anche nel nostro manipolatore (vedi figura sotto)
  • l'accoppiamento pignone-cremagliera (fig. 23)

accoppiamento vite madrevite per il movimento avanti-indietro

La trasmissione del movimento rotatorio da un asse ad un altro si ottiene con:

  • l'accoppiamento ruota dentata-vite senza fine (fig. 24), quando i due assi sono ortogonali e le due velocità sono molto diverse tra loro
  • l'accoppiamento con coppia conica (fig. 25), sempre per assi ortogonali
  • il giunto cardanico (fig. 26) se i due assi hanno inclinazione variabile

Gli organi meccanici dedicati alla riduzione della velocità di rotazione sono detti riduttori. Il loro impiego è molto diffuso perché i motori elettrici tipicamente hanno velocità nominali piuttosto elevate mentre alcune applicazioni richiedono movimenti lenti e precisi. I riduttori sfruttano accoppiamenti con ruote dentate o rute e viti senza fine per ottenere velocità ridotte e coppie elevate.

L'immagine seguente mostra gli accoppiamenti con coppia conica e ruota-vite senza fine tra braccio e motore per il movimento di rotazione.

accoppiamenti meccanici per il movimento di traslazione

Lo studio analitico dei robot è piuttosto complicato e non sarà trattato in questa sede. Le discipline coinvolte sono:

  • la cinematica, che permette di calcolare la posizione della mano del robot e movimenti che devono compiere suoi i bracci per i posizionamenti
  • la statica, che studia l'equilibrio del robot quando è fermo
  • la dinamica, che ne studia il comportamento quando le sue parti sono in movimento

Motori e sensori

Il manipolatore monta due motori DC semplici e due motori DC con encoder a 24V (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 (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.

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 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.

Encoder e PLC

I segnali generati dall'encoder sono impulsivi e in quadratura (sfasati di un quarto di periodo); la loro frequenza dipende dalla velocità di rotazione ma può essere anche piuttosto elevata (fino a 1kHz). Nella figura seguente i due segnali, solitamente detti fase A e fase B:

segnali encoder in quadratura

Da questi segnali si ricava:

  • la velocità, proporzionale frequenza degli impulsi
  • la direzione del movimento, in avanti quando il secondo segnale è basso durante fronte di salita del primo (indietro quando il secondo segnale è alto durante il fronte di salita del primo)
  • la posizione, proporzionale al conteggio degli impulsi (conteggio che va decrementato quando la direzione si inverte)

I segnali generati dall'encoder non possono essere gestiti utilizzando semplicemente due ingressi del PLC e un contatore CTUD perché potrebbero alternarsi con una velocità troppo elevata rispetto al tempo di esecuzione del PLC (il tempo di ciclo può arrivare a decine di millisecondi). Per usare un encoder è necessario utilizzare i contatori veloci (HSC high speed counter) del PLC configurando l'hardware della CPU e caricando la nuova configurazione. I contatori veloci HSC () si abilitano dalle Proprietà della CPU.

Configurazione CPU

Per una CPU serie 30 la configurazione hardware è la seguente:

  • merker di sistema M1 attivato (Firstscan)
  • abilitazione dei contatori veloci HSC1 e HSC31) configurati con:
    • fase operativa: contatore A/B (encoder in quadratura)
    • 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)

L'indirizzamento dei contatori è predefinito:

  • I0.0 e I0.1 per i segnali A/B dell'encoder su HSC1; I0.4 e I0.5 per A/B di HSC3 (questi indirizzi non compaiono nella tabella variabili ma sono impegnati per i contatori veloci e collegati all'uscita dei due encoder sulla morsettiera)
  • I0.3 per il reset di HSC1, I0.7 per il reset HSC3
  • ID1000 e ID1008 per memorizzare un numero del tipo Dint (32bit) con il conteggio di HSC1 e HSC3

Collegamenti alle morsettiere

Il manipolatore è controllato da una scheda a relè per il controllo dei quattro motori e la gestione dei sensori di posizione (due encoder e due generatori di impulsi). La scheda è collegata agli ingressi e alle uscite (digitali del PLC) con dei cavi. I cavi sono marcati con dei numeri che corrispondono all'indirizzo degli ingressi e delle uscite (per gli ingressi la numerazione non è a byte (I0.1 … I0.7 poi I1.1 …) ma progressiva fino a 11. All'ingresso I1.3 del PLC è collegato il pulsante di avvio.

Morsettiera della scheda di controllo del manipolatore:

morsettiera manipolatore

Uscite del PLC:

morsettiera di uscita del PLC

Ingressi del PLC (alla scheda manipolatore e al pulsante di start I1.3):

Morsettiera di ingresso del PLC

NB Per testare il programma con una CPU diversa conviene estrarre le morsettiere dal PLC in uso e inserirle nella seconda CPU.

Scaricare il programma dal PLC

E' stato complicato Non ho capito come farlo in maniera semplice:

  • serve TIA 11, con TIA 13 non si riesce a fare il collegamento online con la CPU che esegue il programma del 2013
  • è possibile vedere i blocchi (c'è solo Main) ma non è possibile vedere la tabella delle variabili, i blocchi dati e la configurazione hardware

Per portarlo su TIA 13 ho copiato il main, rcreato i contatori con i loro blocchi dati, ricreato la tabella delle variabili e la configurazione hardware (facile per i merker di stato, di tentativo per i contatori veloci per gli encoder)Più semplice come indicato sotto.

Si può scaricare il programma da PLC a Tia Portal:

  • usando la stessa versione con cui è stato creato il progetto (Tia Portal 11)
  • creando un nuovo progetto
  • aggiungendo una CPU uguale a quella da cui si vuole scaricare il progetto
  • creando un collegamento online con la CPU collegata col cavo di rete
  • cliccando su blocchi programma
  • cliccando sul pusante Caricamento del dispositivo (software)
  • salvare e riaprire dalla versione Tia Portal 13 per completare la migrazione del progetto

Problemi e particolarità della soluzione 2013

Particolarità:

  • usa una variabile int per memorizzare lo stato invece che tanti merker di stato (carica lo stato con l'istruzione MOVE) → non è possibile realizzare il parallelismo secondo SFC
  • copia il valore dei contatori su un merker (non sembra necessario)
  • usa un merker_reset per l'homing invece che uno stato specifico
  • due movimenti contemporanei ma indipendenti: scendi e chiudi, ruota e avanza

Difetti:

  • programma non strutturato e poco leggibile (tutto in Main)
  • programmazione a stati non rigorosa
    • nella gestione delle uscite ci sono delle condizioni (ad es. statoX AND posizioneY → aziona motore)
    • S/R su pinza open invece che bobina semplice

Indirizzamento

L'indirizzamento di ingressi e uscite - pur usando nomi diversi - segue lo stesso schema del programma creato nel 2013 per poter utilizzare entrambi i programmi con lo stesso PLC senza modificare i collegamenti nelle morsettiere.

indirizzo nome variabile commento
I0.2SFopenfinecorsa pinza aperta
I0.3SFupfinecorsa salita
I0.6BQcloseimpulsi chiusura pinza
I0.7SFcwfinecorsa rotazione oraria
I1.0SFbackfinecorsa indietro
I1.1BQforwardimpulsi avanti
I1.3SBstartpulsante avvio
ID1000HSCvertconteggio encoder verticale (discesa)
ID1008HSCrotconteggio encoder rotazione (antioraria)
Q0.0Mopenapertura pinza
Q0.1Mclosechiusura pinza
Q0.2Mforwardavanti
Q0.3Mbackindietro
Q0.4Mdowndiscesa
Q0.5Mupsalita
Q0.6Mcwrotazione oraria
Q0.7Mccwrotazione antioraria
M2.0P0homing: avvio parallelismo
M2.1P1homing: rotazione oraria
M2.2P2homing: attesa rotazione
M2.3P3homing: salita
M2.4P4homing: attesa salita
M2.5P5homing: indietro
M2.6P6homing: attesa indietro
M2.7P7homing: apertura pinza
M3.0P8homing: attesa pinza
M3.1P9attesa pulsante
M3.2P10parallelismo: rotazione antioraria
M3.3P11parallelismo: attesa rotazione
M3.4P12parallelismo: avanti
M3.5P13parallelismo: attesa avanti
M3.6P14carico: discesa
M3.7P15carico: chiusura pinza
M4.0P16carico: salita
M4.1P17scarico: rotazione antioraria
M4.2P18scarico: discesa
M4.3P19scarico: apertura pinza
M4.4P20scarico: salita

Diagramma temporale

Osservando il manipolatore in azione comandato dal programma sviluppato nel 2013 si può tracciare il seguente diagramma temporale:

diagramma temporale manipolatore con programma del 2013

SFC

Il diagramma SFC che replica il diagramma temporale esistente è il seguente:

SFC del manipolatore

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
  • 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
  • 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
  • per chiudere il parallelismo (sincronizzazione) si impiegano delle transizioni sempre verificate (True)
  • sono indicati numericamente i valori dei contatori (encoder e sensori a impulsi) che indicano il raggiungimento della posizione desiderata
  • non è evidenziata la gestione dei contatori (quelli degli encoder sono gestiti in HW e resettati dai finecorsa, quelli dei sensori ad impulsi vanno gestiti con i relativi ingressi e resettati dai finecorsa)

Scrivere il programma per PLC: da SFC a ladder

Con la tecnica batch è facile tradurre il diagramma SFC in un programma KOP (ladder) che ne implementa la logica. Il procedimento prevede di:

  • configurare la CPU
    • abilitando merker di sistema per usare i bit firstscan e always true
    • abilitando e configurando i contatori veloci HSC1 e HSC3 come descritto sopra
  • creare la tabella variabili con l'indirizzamento indicato sopra
    • merker dal byte M2 (il byte M1 è impegnato per i merker di sistema) e gli 8 bit del byte M0 non sono sufficienti
  • creare tre funzioni
    • stato iniziale, che setti P0 e resetti tutti gli altri merker di passo
    • sequenza, che gestisca l'evoluzione da un passo all'altro secondo la tecnica batch
    • uscite, che gestisca i 4 motori nelle due direzioni e i due contatori dei sensori ad impulsi
  • altre osservazioni:
    • i finecorsa sono normalmente chiusi
    • 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
    • i contatori CUP per i sensori a impulsi 2):
      • vanno inseriti nelle uscite e collegati ai contatti che ne aumentano e resettano li conteggio (nell'SFC sono chiamati Cforward e Cclose)
      • inserire un numero molto alto (che non viene mai raggiunto) nel campo PV (ad esempio 32767, il valorepiù alto possibile per il tipo di dati int)
      • non viene utilizzata l'uscita Q (che passerebbe a 1 raggiunto il valore PV) ma il valore CV (current value) che memorizza il conteggio raggiunto in quel momento
      • conviene inserire i contatori prima di scrivere la funzione che gestisce gli stati; in questo modo le variabili associate (ad esempio Cforward.CV) sono disponibili nei menu a tendina degli operatori di confronto

Possibili miglioramenti

  • 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)
  • semplificazioni
    • 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
    • migliore gestione dell'homing: in successione salita, poi indietro e rotazione oraria contemporanee, poi apertura pinza nella posizione home (per evitare ostacoli durante la rotazione e l'eventuale caduta di un pezzo in un punto non sicuro)
  • sicurezze/emergenze:
    • creare una funzione dedicata da inserire in fondo al main (è importante che sia l'ultima in modo che le bobine di uscita vengano eventualmente disattivate da questa funzione)
    • inserire un pulsante emergenza
    • arresto motori con contatori oltre una determinata soglia (in sostituzione del secondo finecorsa per i quattro movimenti) o sul finecorsa
    • funzione pause/resume?
    • timer su tutti i movimenti?
    • sicurezza sulla chiusura pinza (se il contatore non avanza e il motore è attivo disattivare il motore)
  • HMI
    • 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 e l'altro

Riferimenti

Risorse

1)
con questo tipo di encoder non si può usare HSC2 perché i suoi indirizzi si sovrapporrebbero a quelli di HSC1
2)
quelli veloci sono già impostati in hardware e le variabili associate possono essere utilizzate direttamente nel programma
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information
manipolatore.txt · Ultima modifica: 2019/02/27 10:50 da admin