Vai al contenuto

Posizionamento di un asse

Home Forum Discussioni su problematiche generali Posizionamento di un asse

Stai visualizzando 7 post - dal 1 a 7 (di 7 totali)
  • Autore
    Post
  • #35770
    Stefano
    Partecipante

    Avrei la necessità di comandare la posizione di un asse che muove una taglierina elettrica per tessuti. Il sistema non ha bisogno ne di una grossa velocità ne di una grossa precisione, ma deve muovere un pò di massa e quindi sarebbe opportuno avere la gestione delle rampe di accelerazione e decelerazione. L’asse viene mosso da un motorino in CC da 24V che muove un carrello (Il motore è collegato ad una piccola demoltiplica costituita da due pulegge ed una cinghia, poi il carrello è trainato da una ulteriore cinghia collegata alla demoltiplica).

    La mia idea era di calettare un encoder incrementale al motore e pilotarlo con un azionamento PWM che accetti i segnali PWR e DIR (tipo il classico ponte H con L298). Poi realizzare un controllo software con i blocchi PIDMng, PWMOut e IOEncoder (o SysGetEncoder ?). Manca un blocco per il generatore di traiettoria, ma avendo bisogno solo di un generatore di traiettoria a profilo velocità trapezoidale, non è così difficile da implementare.

    E’ fattibile questa applicazione con una CPU SlimLine ?

    #38872
    Sergio Bertana
    Amministratore del forum

    Sicuramente la tua esposizione è corretta il sistema è fattibile nei termini in cui lo hai esposto. Per la lettura encoder devi usare il FB SysGetEncoder che acquisisce l’encoder tramite il circuito hardware del modulo di estensione. Puoi utilizzare il PWM out del modulo CPU (In questo topic alcune considerazioni in  merito).

    Per le rampe di accelerazione e decelerazione puoi utilizzare il FB LRamp, Linear Ramp. Ora se il tuo problema è di fare solo un posizionamento e non hai problemi di velocità, concordo con te che è fattibile. Calcoli la traiettoria di rallentamento per arrivare un pò in anticipo sulla quota e poi percorri l’ultimo pezzo in velocità lenta per avere la precisione sulla quota.

    Però la tendenza generale è quella di utilizzare drivers intelligenti, il PLC dialoga con il driver (Esempio in modbus), ed è il driver che gestisce il posizionamento. Esistono drivers anche per piccoli motori sia stepping (Topic) che brushless.

    In questo topic un programma spartano per la gestione del posizionamento di un asse.

    #38873
    Stefano
    Partecipante

    La differenza tra il FB IOEncoder e SysGetEncoder, se non ho capito male è che la prima gli ingressi ‘normali’ (con conseguenti problemi di timing dovuti al ciclo macchina), mentre la seconda usa la gestione hardware presente nel modulo di espansione. Corretto ?

    #38874
    Sergio Bertana
    Amministratore del forum

    Esame superato a pieni voti… Con il FB IOEncoder si possono utilizzare due ingressi digitali per acquisire segnali da un encoder in quadratura. Naturalmente essendo la gestione tutta software occorre che il ciclo macchina di esecuzione del FB sia compatibile con la frequenza massima dell’encoder da acquisire.

    Dovendo campionare i segnali encoder almeno 4 volte per ciclo, se ne deduce che la frequenza massima dell’encoder nel caso di FB eseguita ogni 1 mS è di 200 Hz.

    Il FB SysGetEncoder invece utilizza un circuito hardware presente nei moduli di I/O che permette di acquisire segnali fino a 50 KHz. Standard è possibile gestire un encoder per modulo di espansione, ma su richiesta possiamo fornire packages hardware specifici per poter gestire più encoders sullo stesso modulo di I/O.

    #39803
    Sergio Bertana
    Amministratore del forum

    Visti i tempi di movimentazione e la corsa, la tua applicazione è molto diversa da quella trattata precedentemente, dovendo distribuire la colla nella corsa dei 200 mm dovrai accelerare il motore prima di iniziare l’erogazione colla e decelerarlo al termine della erogazione e per avere spazi minini di accelerazione/decelerazione dovrai utilizzare un driver in grado di fare erogare al motore coppia sufficente.

    Visto che parli di utilizzare motori Penta ho visto che la Motor Power fornisce anche i drivers da abbinare ai loro motori, ad esempio la famiglia FLEXI PRO Servo Drive ha un ingresso analogico ±10 per l’impostazione di velocità, ed ha l’uscita di encoder simulato Equivalent encoder output che sfrutta il sensore di posizione interno al motore brushless.

    Ora con un modulo espansione I/O Analogico puoi gestire l’ingresso di riferimento di velocità, a scelta puoi usare l’inversione di segno per la direzione, oppure usare una uscita logica connessa all’ingresso di direzione del driver. Come encoder usi l’uscita simulata del driver, siccome sono segnali differenziali mentre la scheda encoder accetta segnali a modo comune, utilizzerai solo i segnali A+, B+ e Z+.

    Tra l’altro è diponibile anche la famiglia SKA COMPACT di motori lineari, che mi sembra ottima per la tua applicazione.

    #39825
    Giovanni
    Partecipante

    Durante il tempo trascorso dalla precedente risposta ho avuto modo di definire molti dettagli di questo progetto grazie all’aiuto del Titolare dell’Azienda, realmente generoso di consigli preziosi. Ho inoltre compreso che il vantaggio nell’utilizzo di un Prodotto Elsist consiste non solo nell’ottimo rapporto Prestazioni/Prezzo, ma anche nella possibilità di ricevere Assistenza in varie forme, molto spesso gratuite come, ad esempio, il presente forum. Per questo, sperando di far cosa utile agli altri utenti, porrò di seguito i miei dubbi e ragionamenti in una forma che spero sia di qualche utilità per tutti i lettori del presente forum.

    Come accennato in precedenza questo è per me il primo Progetto nel quale mi occupo a 360° di tutte le fasi della Progettazione, e confido di portarlo a termine con successo anche nelle parti mai affrontate, come la scelta dei motori e la programmazione di un PLC capace di controllare un motore, proprio grazie a questo forum e all’Assistenza Elsist. A tal proposito credo che i prerequisiti minimi per sviluppare un semplice controllo asse, prerequisiti che credo di possedere, siano una buona formazione teorica e precedenti esperienze nell’uso dei PLC. Sono arrivato ai prodotti Elsist partento dall´idea, inizialmente condivisa anche dal Titolare dell’Azienda per cui lavoro qui in Svezia, di utilizzare un Raspberry Pi come Hardware di controllo (l’ambiente di lavoro è totalmente esente da disturbi, e non richiede “robustezza” industriale), ma dopo qualche scambio di opinione con gli sviluppatori di LogicLab, il software di programmazione dei PLC Elsist, credo di aver capito che il piccolo risparmio ottenibile utilizzando il Raspberry Pi non avrebbe giustificato il tempo speso a cercare i componenti industriali gestibili col Raspberry Pi e le incognite connesse all’utilizzo di un Sistema Operativo per computer, sia pure robusto come Linux. Per questo, dopo aver deciso di utilizzare un PLC Elsist, ho iniziato a cercare il tipo di motore e la trasmissione più adatti alla mia applicazione che descrivo brevemente ma con maggiore accuratezza rispetto al post precedente.

    i) L’esigenza è di movimentare un dispenser di colla durante una corsa di 170 mm.
    ii) La velocità del dispenser durante la corsa deve essere regolabile in più tratti perché il tipo di colla utilizzata non viene erogata con flusso costante durante la corsa, ed è pertanto necessario correggere il flusso variabile di colla con velocità variabili del dispenser.
    iii) Esistono funzioni accessorie all’erogazione della colla, come ad esempio muovere l’oggetto a cui è stata applicata la colla sotto una sorgente UV per avere una “presa” molto rapida.

    Inizialmente, come avevo scritto nel precedente post, avevo optato per un comune motore a corrente continua, ma grazie a questo forum e al titolare della Elsist credo di aver capito che il motore più adatto alla mia applicazione sia un motore passo-passo per i seguenti motivi:

    1) Costo decisamente più basso rispetto ai motori brushless;
    2) Vasta disponibilità di driver dai costi variabili in funzione del tipo di gestione del motore;
    3) Elevata coppia di spunto (richiesta nella mia applicazione per portare l’applicatore di colla a velocità di applicazione in spazi ridotti).

    Per quello che riguarda la trasmissione ho preso in considerazione le viti a ricircolo di sfere, le cremagliere e le trasmissioni a cinghia dentata, e credo di aver scelto definitivamente quest’ultima soluzione per le seguenti ragioni:

    A) È una delle più economiche soluzioni nella trasmissione del moto;
    B) Nella corsa del mio dispositivo ho solo una rapida accelerazione iniziale prima che la colla venga erogata (pochi centesimi di secondo) ma durante la corsa, che dovrebbe durare tra 0,3 e 0,6 secondi, non mi aspetto di dover gestire più di due rampe di velocità e non ho requisiti di precisione di posizionamento, pertanto la banda passante medio-bassa caratteristica delle cinghie dentate (inferiore a 10Hz) dovrebbe essere sufficiente alla mia applicazione.
    C) È agevole ed economico modificare il rapporto di trasmissione qualora fosse richiesto.

    Fatte queste scelte architetturali ho iniziato a disegnare la parte meccanica mobile della mia macchina, e le prime stime sulla massa mobile mi danno una massa mobile variabile fra 1,5 e 2,0 kg. Inoltre sulla parte mobile andranno ad agire le forse dei tubi della colla e dell’aria compressa, forze per le quali credo semplicemente di dover sovradimensionare il motore essendo tali forze di difficile determinazione.

    In questa fase mi sto chiedendo, ed è questa la ragione di questo mio secondo post su questo forum, se sia possibile calettare direttamente la puleggia sull’asse motore. Dal punto di vista del puro dimensionamento meccanico non avrei problemi di sorta ad utilizzare una puleggia calettata direttamente sull’asse del motore passo passo. In effetti, ragionando nel peggiore dei casi, che è quello di dover raggiungere una velocità iniziale di addirittura un metro al secondo (la massima velocità stimata dovrebbe in realtà essere di 200/600 mm/sec), una forza di circa 120 N sarebbe sufficiente a portare la parte mobile in velocità in circa 10 mm. Dopo aver verificato, grazie a una guida sulle cinghie dentate di un noto produttore (se utile e se sono autorizzato posso fornire ovviamente il link alla guida), che avrei potuto utilizzare una cinghia dentata passo metrico tipo T5, larghezza 25 mm, ho calcolato che avrei potuto ottenere la massima velocità richiesta utilizzando una puleggia da 12 denti, accoppiata al motore tramite un giunto e un calettamento conico 1:10. Con questo diametro primitivo otterrei un momento massimo da erogare in fase di accelerazione di circa 1,2 Nm, con un regime massimo di rotazione (alla massima velocità ipotizzabile) di circa 1000 giri al minuto. Pertanto, scegliendo un motore passo passo con flangia NEMA 23 da circa 3 Nm, non dovrei avere problemi di coppia e potenza nella movimentazione del dispenser di colla. Per questo, sempre in linea teorica, potrei utilizzare un economico azionamento in grado di accettare i canonici segnali STEP e DIRECTION dal mio PLC Elsist, e utilizzare un encoder per controllare la posizione/velocità del motore.

    I dubbi che mi vengono in relazione a questa soluzione sono;

    1) Il Momento d’Inerzia ridotto all’asse motore di una massa di 2 kg movimentata linearmente con una puleggia T5 da 12 denti è di 72.000 g cm2, ben 90 volte superiore al momento d’Inerzia del rotore di un motore di queste caratteristiche, che è di circa 800 g cm2, e leggo su vari forum tecnici che tale rapporto non dovrebbe essere superiore a 10:1.
    2) L’intera corsa di lavoro, compresa l’accelerazione iniziale e la decelerazione finale, verrebbe effettuata in meno di quattro giri dell’asse del motore (passo 5 mm per dodici denti significa sempre ben 60 mm/giro…). Mi chiedo se sia possibile elaborare correttamente i dati d’ingresso di un encoder che ruoti solo un sesto di giro durante le rapide accelerazioni iniziale e finale.
    3) Che tipo di encoder potrebbe essere consigliato per questa applicazione? Sono da escludersi a priori gli encoder assoluti?
    4) Dal punto di vista della programmazione del PLC sarebbe adeguata una gestione con controllo PID della velocità suddividendo la corsa in varie sezioni utilizzando la funzione IF? Esistono in questo forum esempi di controllo della velocità in funzione della posizione come richiesto dalla mia applicazione?

    Sperando che questo caso possa servire a risolvere casi più generali ringrazio in anticipo per la risposta ai dubbi proposti.

    #39826
    Sergio Bertana
    Amministratore del forum

    Non sono un esperto di motori e quindi in merito alle coppie non posso essere di aiuto, ma per applicazioni così spinte dal punto di vista del controllo motore utilizzerei una coppia motore/driver da un unico fornitore fornendo a loro tutte le specifiche sapranno di certo dare le indicazioni utili.

    Se utilizzi un motore stepping non serve più l’encoder in quanto il motore si muove sincrono con l’alimentazione delle sue fasi e quindi il driver ne conosce la posizione. Alcuni nostri clienti hanno utilizzato coppie motori/driver della LAM Technologies (Topic).

    Questi drivers hanno una interfaccia Modbus, ma vista la velocità di spostamento dell’ogetto e quindi la necessità di dover prendere decisioni (Variare la velocità in base alla corsa, ed altro) auspicherei che tutta la movimentazione del motore sia gestita dal driver magari parametrizzato tramite Modbus dallo SlimLine.

    Di solito i moderni drivers sia per motori stepping che per motori brushless hanno al loro interno un PLC che può essere programmato dall’utente, quindi avendo il driver tutte le informazioni del motore (Velocità, posizione, coppia erogata) è facile  realizzare il programma di gestione della corsa. In questo modo il sistema SlimLine di gestione dovrà solo dare il comando di start posizionamento ed attendere il fine posizionamento comandi che possono essere dati via Modbus o con uno scambio di I/O digitali.

Stai visualizzando 7 post - dal 1 a 7 (di 7 totali)
  • Devi essere connesso per rispondere a questo topic.