pineto Inserito: 16 settembre 2006 Segnala Inserito: 16 settembre 2006 Buongiorno a tutti.Giorni fà mi e stato chiasto di realizzare un'aplicazione dove andro ad'esporverla,L'aplicazione consiste nel contollare la posizione di un asse con quote positive e nagitive (le quote sono impostabbili dell'operatre) che oscilla tra una quota inizile e una finale una particolarita e che l'asse non viaggia in orizzontale ma al contrario in verticale quindi e da tener conto che le masse non sono uguali nel senzo che quando l'asse va su abbiamo una resistenza invece quando andiamo giu ne abbiamo unaltra.Il sistema funziona con um motore,un inverter (con il suo gruppo di frenatura) un plc con uscita 0-10V che gestisce l'inveter ed un encoder che rileva la posizione dell'asse.L'operatore in fase di programmazione deve inserire le due quote di lavoro (che non possono superare i +90 e -90°) la rampa di accelerazione la rampa di decelerazione e la velocita,per la velocita e la rampa di accelerazione non ho molti problemi ma il problema mi sorge sulla rampa di decelerazione,dovo non riesco a gestire il sistema di decelerazione.Volevo sapere se qualcuno si era mai cimentato nella realizzazione di questa applicazione ,o se conesce un sistema per gestire la mia rampa di decelerazione,qualsiasi aiuto può essere dispensabile.Se non vi è chiaro qualcosa non esitate a chioedermi informazioniGrazzie mille
Livio Orsini Inserita: 16 settembre 2006 Segnala Inserita: 16 settembre 2006 Scusa ma non si capisce cosa ti serve. Una rampa i decelerazione è praticamente uguale ad un in accelerazione. L'unica differenza è che sottrai un delta dal valore attuele invece di sommarlo.Se invece il tuo problema si riferisce alla coppia negativa, considerando positiva la coppia durante l'accelerazione, è un problema che non vede il controllo di posizione. Se hai usato un inverter con controllo vettoriale con reazione non ci devono essere problemi, se il dimensionamento è corretto. Altrimenti se usi un sensorless o, peggio, un V/f è quasi certo che potrai avere problemi nella fase di discesa. Addirittura con un V/f potresti avere uno stallo del motore in fase di spunto.
pineto Inserita: 17 settembre 2006 Autore Segnala Inserita: 17 settembre 2006 Per quanto riguarda la rampa di accelerazione non ho problemi, le due rampe sono distinte l'una dall'altra.Il mio problema e di realizzare la rampa di decelerazione, dove non conosco la quota dell'asse in cui deve iniziare la decelerazione e in che modo devo decellerare l'asse per avere un comportamento uniforme su tutta la decelerazione e precisa alla fine del posizionamento, dal momento che non utilizzo la reazione sul motore e utilizzo un inverter vettoriale sensorless dove potrei avere problemi di coppia negativa.Quello che volevo sapere e come realizzare la rampa di decelerazione e se esiste un sistema per essere performanti e nello stesso tempo precisi nel realizzare il posizionamento,con i relativi elementi che vi ho prima elencatoSpero di essere stato un po piu chiaro grazzie mille
Ermy Inserita: 17 settembre 2006 Segnala Inserita: 17 settembre 2006 Ciao Pineto,Io l'ho fatto.Un mese fa ho realizzato il software per una macchina che ha 2 assi entrambi azionati da inverter con comando 0-10V, encoder di posizione e sensore di zero asse per entrambi.Plc usato C200HSPer ogni asse da pannello operatore imposto:1 - la velocità minima2 - la velocità massima3 - la rampa di acc/dec4 - quote posizioni da 0 a 8 da raggiungereDopo il rifasamento dell'encoder abilito la sub che gestisce il comando del motore e i 0-10V.Quando devo muovere un'asse, carico la quota di destinazione.Esempio: sono a quota 100 clk encoder, destinazione 1300 clk. Prima di partire con il motore, calcolo la distanza, 1300-100=1200 clk, divido per 3, 1200:3=400 clk, la destinazione è maggiore della posizione attuale: motore in avanti con velocità minima, rampa in acc calcolandola con i clk fatti dall'encoder, a 100+400=500 clk la rampa in acc è terminata e il motore prosegue a velocità costante, a 100+400+400=900 clk inizio la decelerazione calcolandola all'inverso tramite i clk mancanti all'arrivo.Se lo spazio è sufficiente, si raggiunge la velocità massima impostata.
pineto Inserita: 17 settembre 2006 Autore Segnala Inserita: 17 settembre 2006 Ciao Ermy,ti ringrazzio per il tuo aiuto, ma il tuo esempio non mi e tanto chiaro potresti esporre in modo piu chiaro.Ho letto la tua applicazione ma credo che sia differente da quella che devo fare io, il mio operatore non deve impostare la velocita minima e massima ma una sola velocita, qualla di lavoro.Cosa intendi per "quote posizioni da 0 a 8 da raggiungere"Nella tua applicazione cosa succede se nel caso la velocità non è costante e varia al variare della posizione dell'asseCi sono alcune differenze su le nostre applicazioni ma se andiamo ad analizzarle in fin dei conti si somigliano parecchioGrazzie mille
RickyM Inserita: 17 settembre 2006 Segnala Inserita: 17 settembre 2006 Ciao a tutti,Innanzitutto non hai detto che plc usi, se è un Omron per esempio esiste una funzione chiamata APR che ti permette di gestire le rampe.Emry diceva di dividere il percorso impostato dall'utente in tre parti uguali, poi tu puoi fare anche 20%, 60%e 20% in base alle caratteristiche del tuo sistema, la prima parte è usata per creare la rampa di accelerazione, la seconda per la velocità impostata dall'utente e la terza per la rampa di decelerazione.Se sai a che quota devi arrivare visto che hai un encoder inizi a decrementare il riferimento dell'inverter n impulsi prima di arrivare in quota.Emry ha fino a 8 posizionamenti da fare, tu solo due da massimo +90° a minimo -90°
Ermy Inserita: 17 settembre 2006 Segnala Inserita: 17 settembre 2006 Cosa intendi per "quote posizioni da 0 a 8 da raggiungereIo ho 9 posizioni con un asse longitudinale e 2 con l'altro asse verticale, entrambi hanno il movimento lineare.Ho letto la tua applicazione ma credo che sia differente da quella che devo fare io, il mio operatore non deve impostare la velocita minima e massima ma una sola velocita, qualla di lavoroSe l'operatore non deve impostare la velocita minima, la fissi da programma. La tua velocita di lavoro equivale alla massima raggiungibile, dato che devi fare le rampe di "acc" e "dec", puo darsi che per movimenti corti, il motore non possa raggiungere la velocita di lavoro.L'operatore in fase di programmazione deve inserire le due quote di lavoro (che non possono superare i +90 e -90°) la rampa di accelerazione la rampa di decelerazione e la velocitaNella tua applicazione deve fare due movimenti: salita a max +90° e discesa a min -90° che corrispondono a una quota encoder: per esempio a -90 potrebbe essere ValEncoder=0 e a +90 ValEncoder=1800. Sai il punto di partenza e il punto di arrivo, la rampa, la velocita max. Ti rimane da trascrivere in codice eseguibile del plc, le operazioni matematiche che servono.Il mio problema e di realizzare la rampa di decelerazione, dove non conosco la quota dell'asse in cui deve iniziare la decelerazione e in che modo devo decellerare l'asse per avere un comportamento uniforme su tutta la decelerazione e precisa alla fine del posizionamento, dal momento che non utilizzo la reazione sul motore e utilizzo un inverter vettoriale sensorless dove potrei avere problemi di coppia negativaDato che hai l'encoder, puoi sapere esattamente dove si trova il punto per iniziare la decelerazione.Come dicegiustamente RickyM, se usi un plc Omron, con l'istruzione APR gestisci le rampe, io pero ho usato un'altro sistema ma che funziona allo stesso modo.
batta Inserita: 18 settembre 2006 Segnala Inserita: 18 settembre 2006 Parecchi anni fa ho fatto una cosa del genere per una macchina lavorazione lastre marmo, che faceva proprio la stessa cosa: rotazione da +90° a -90° di una struttura (piuttosto pesante) con installate le mole per la lavorazione della lastra. La rampa in accelerazione era gestita semplicemente incrementando il riferimento ad intervalli di tempo fissi (10 ms), mentre il riferimento in decelerazione era proporzionale alla radice quadrata della distanza dalla quota da raggiungere. Con pochissimi controlli e senza schede di posizionamento ricordo di aver raggiunto un risultato inaspettato. Se non ricordo male: traslazione completa da +90° a -90° in circa 2 secondi ed errore di posizionamento massimo ±0,1°. La cosa sorprendente era che il sistema funzionava in modo costante a tutte le velocità, in salita, in discesa, con posizione di arresto prossime a +90° o -90° (verticale, quindi con scarsa influenza del peso della struttura), con posizioni di arresto prossime a 0° (orizzontale, con massima influenza del peso della struttura).Il motore era un semplice asincrono sotto inverter con controllo V/f.Piccola parentesi. Ricordo che, a suo tempo, ebbi una lunga ed accesa discussione con il titolare della ditta di automazione che mi commissionò il lavoro. Questo signore (un tipo molto arrogante, convinto di essere il miglio tecnico esistente al mondo) sosteneva che il calcolo doveva essere fatto sulla distanza, e non sulla radice quadrata della distanza. Si convinse solo dopo aver allestito un sistema di prova ed aver controllato, oscilloscopio alla mano, l'andamento del riferimento. Questo bravo signore (del quale ovviamente non posso fare il nome), oltre ad avere il difetto di voler avere sempre ragione, aveva anche un altro "lieve" difetto: spesso non pagava! A fine anni '90 mi salutò con un insoluto di 15.6000.000 lire. Chiusa parentesiPerché il calcolo deve essere fatto sulla radice quadrata della distanza dalla quota di arrivo?La formula per calcolare lo spazio in un moto uniformemente accelerato è (con partenza da fermo):S = 1/2 * at² (S = Spazio; a = accelerazione; t = tempo) V = at (V = velocità; a = accelerazione; t = tempo) con alcuni semplici passaggi si arriva a: V = RADQ(2aS)Una rampa di decelerazione lineare non è altro che un moto uniformemente accelerato con accelerazione negativa. Il valore dell'accelerazione dà la pendenza della rampa, lo spazio è la distanza dal punto di arrivo.Lo stesso sistema lo utilizzo, sempre con ottimi risultati, in quasi tutti i casi di semplice posizionamento senza grandi pretese.Altro esempio: traino a monte di avvolgitore guaina bituminosa.Velocità max = 10 m/sdecelerazione da Vel.Max in 4 metri (t = 0,8 s a = 12,5 m/s²)errore commesso ±2 mmTenendo conto anche dell'elasticità del materiale, non mi sembra un risultato da buttar via. E questo si ottiene con qualsiasi plc.
emanuele.croci Inserita: 18 settembre 2006 Segnala Inserita: 18 settembre 2006 Questo signore (un tipo molto arrogante, convinto di essere il miglio tecnico esistente al mondo) sosteneva che il calcolo doveva essere fatto sulla distanza, e non sulla radice quadrata della distanza....di certo non aveva frequentato delle gran scuole, se non riusciva a capire questa semplice e giusta formula... anch'io faccio così e mi pare il modo migliore!! Ciao, Emanuele
pineto Inserita: 18 settembre 2006 Autore Segnala Inserita: 18 settembre 2006 Batta credo propio che si tratti della stessa macchina, anche la macchina in questione serve ad effettuare la lucidatura del marmo quindi puo capire la difficolta nel posizionare un asse a tutta velocita e poi farlo invertire nello stesso tempo.Per quanto rigurda quel signore che ti sta molto a cuore di cui ci ai descritto il lato migliore di se stesso specie l'ultimo punto,se ti puo consolare non sei l'ultimo ad essere stato "fregato" ma se vuoi vivere in questo mondo devi aver a che fare anche con questa gentaglia.Comunque appena posso provo ad effettuare un programma di prova e vedere il responso finaleGrazzie mille
pineto Inserita: 20 settembre 2006 Autore Segnala Inserita: 20 settembre 2006 batta ho provato a decifrare la formula che mi hai descritto nel messaggio di prima, ma non sono riuscito aricostruirla.Ti sarei grato se riusciresti a espimerla in modo piu chiaro per farmela capire e ti sarei veramente grato se riesci anche a farmi un esempio pratico di come funziona, ti ringrazzio in anticipo per il tuo aiutoGrazzie mille
tode72 Inserita: 21 settembre 2006 Segnala Inserita: 21 settembre 2006 Le formula di batta sono la base della cinematicaSapendo la tua accelerazione o decelerazione (a) in espressa in metri/secondo^2, hai che la velocità ad un certo istante (t) espressa in metri/secondo corrisponde a V= a * t +Vodove Vo è la tua velocità di partenza all'istante 0 Se a questo punto vuoi sapere la posizione X (in metri) in quell'istante, sempre rispetto al punto di riferimento 0, èX= 1/2 * a * t^2 + Vo * t + Xodove Xo lo puoi porre pari a 0A quanto ho capito della tua applicazione, la decelerazione la conosci, il tempo lo conosci, la velocità di partenza pure, ti puoi calcolare dopo quanti metri il braccio si fermerà a partire dall'istante in cui gli togli l'abilitazione all'inverter. in questo modo ti basta fare il ragionamento a ritroso e dire "se mi devo fermare lì e mi ci vogliono X metri per fermarmi, quand'è che devo togliere l'abilitazione?"Spero di averti chiarito un pò le ideeClaudio
batta Inserita: 22 settembre 2006 Segnala Inserita: 22 settembre 2006 I passaggi sono:S = 1/2 * at² da cui si ricava t = SQRT(2S/a) V = at da cui si ricava t = V/a quindi al posto di t = SQRT(2S/a) posso scrivere V/a = SQRT(2S/a) da cui V = SQRT(2Sa²/a) = SQRT(2aS)Con questa semplice formula è possibile non solo calcolare il punto di inizio rampa di decelerazione, ma anche calcolare la velocità istantanea che si deve avere in ogni punto della rampa per ottenere una rampa lineare. Assumendo la velocità proporzionale al riferimento e sostituendo allo spazio "S" la distanza dal punto di arrivo è facile quindi calcolare il riferimento da dare all'inverter in ogni punto della rampa di decelerazione, ovvero ad ogni distanza dal punto in cui ci si vuole fermare. Equivale ad un controllo di posizione con un PID con attiva solo la parte proporzionale.Chiaro che un simile sistema non può raggiungere le prestazioni di un vero controllo asse, ma dove non c'è bisogno di grandi prestazioni va comunque bene, è semplice da realizzare, basta un plc economico, non richiede schede dedicate (bastano un contatore veloce e una uscita analogica).
pineto Inserita: 22 settembre 2006 Autore Segnala Inserita: 22 settembre 2006 Batta per quanto riguarda la rampa di accelerazione me la ricava sempre la formula o è indipendente dal calcolo prima descritto.Per chiarimi del tutto le idee sul calcolo che mi ai esposto volevo porti un'esempio pratico:imaginando che debba effetture uno spostamento di un asse da 0 a 500mm con un accelerazione di 3sec e una decelerazione di 2sec con una velocita massima di 20mm/secondo, mi potesti sviluppare la formula per calcolarmi la velocita (dove andro a modificarla sotto forma di uscita analogica come riferimento al mio azzionamento) e le rampe di accelerazione e decelerazione.Vi prego di scusarmi per il tempo che vi ho fatto perdere a coloro che si sono interessati al mio problema,ma è la mia prima applicazione sul controllo di una asse in accelerazione e decelerazione per tanto vorrei veramente capirci qualcosa sul sistema che sto utilizzandoGrazzie mille
batta Inserita: 23 settembre 2006 Segnala Inserita: 23 settembre 2006 La rampa di accelerazione è più facile gestirla con incrementi fissi.Se vuoi arrivare a 20 mm/s in 3 secondi, potresti effettuare incrementi di velocità ogni 10 ms di 20/300 = 0,06667 mm (incremento ogni 10 ms signifia 100 incrementi ogni secondo, ovvero 300 incrementi in 3 secondi).Per la rampa di decelerazione da fare in 2 secondi possiamo calcolare l'accelerazione a = V/t = 20/2 = 10 mm/s².Ora puoi calcolare il punto di inizio rampa di discesa tenendo presente che lo spazio per la decelerazione sarà di S = 1/2 at² = 0,5 * 10 * 2² = 20 mm (se preferisci, visto che si va da Vmax a zero, 0,5Vmax * t). Nell'esempio quindi la rampa di decelerazione inizierebbe a 480 mm.Raggiunto questo punto puoi calcolare la velocità V = SQRT(2aS) dove "a" è l'accelerazione precedentemente calcolata (10 mm/s²) e "S" è la distanza dal punto di arrivo (nell'esempio, 500 - quota attuale).Con una semplice scalatura converti la velocità in valore di riferimento ed hai già risolto quasi tutto il problema.Nei casi in cui ho usato questo sistema ho notato che c'è la tendenza a commettere sempre un errore costante nel posizionamento (esempio, si ferma sempre 2 mm dopo). Basta effettuare questa correzione sulla quota di destinazione e sei a posto.Poi devi aggiustare tu il funzionamento in base alla tua applicazione. Potresti, per esempio, calcolare la rampa fino al raggiungimento di una velocità minima e procedere a velocità minima fino al raggiungimento della quota. Questo potrebbe essere utile nel caso ci sia difficoltà di movimento con riferimenti troppo bassi.Attenzione: non pretendere comunque da un sistema così semplice la precisione che avresti diritto di pretendere da una scheda dedicata.
Livio Orsini Inserita: 23 settembre 2006 Segnala Inserita: 23 settembre 2006 Va tutto bene se le quote da raggiungere, e le velocità di lavoro, permettono una completa accelerazione e decelerazione. Nel caso in cui la quota risulti troppo "corta" il calcolo si complica. Il sistema più semplice è dividere in due la quota e accelerare durante la prima metà per decelerare nella seconda parte.
batta Inserita: 23 settembre 2006 Segnala Inserita: 23 settembre 2006 Chiaro che ci sono ancora alcuni controlli da fare, ma mi pare comunque di aver descritto sufficientemente un possibile metodo.Riguardo il problema di quote "corte" in realtà non si complica poi tanto, perché di solito gestisco la rampa di accelerazione con una funzione alla quale passo la velocità massima. La funzione continua ad incrementare fino al raggiungimento della velocità massima. Se arrivo alla fase di decelerazione con accelerazione non ancora terminata (o addirittura se il movimento inizia quando sono già nella zona di decelerazione), nessun problema: la velocità massima che viene passata alla funzione che gestisce la rampa di accelerazione viene limitata al valore calcolato dalla funzione di gestione della rampa di decelerazione. La rampa di decelerazione ha quindi la priorità.Credo di aver fornito abbondanti spunti sui quali poter lavorare. Il prossimo passo sarebbe quello di scrivere direttamente il codice.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora