Vai al contenuto
PLC Forum


Da Misura A Velocità - Calcolo


Messaggi consigliati

Inserito:

Buongiorno a tutti

Chiedo un consulto per un applicazione.

Su una word ho una misura (Quota) che varia da Q0 a QMax e Da QMax a Q0 in continuo.

In pratica ho un asse che si muove da 0 a 500mm e da 500mm a 0 in continuo.

Vorrei calcolare la velocità del mio asse in mm/sec non avendo un contatore veloce nel plc e nessuna istruzione che possa essere impostata come frequenzimetro.

L' idea è creare un trigger a tempo memorizzare la quota, vedere dopo il tempo la differenza di quota ed eseguire i calcoli del caso. Tutto ciò è valido nel caso in cui il moto fosse rettilineo incrementale, ma avendo un cambio di direzione e un passaggio da incrementale a decrementale sono a pormi il dubbio se convenga valutare tutte le condizioni e scrivere codice o se esista un algoritmo che già compia questa funzione.

Qualcuno ha le idee più chiare rispetto a me? Mio fratello che sta facendo ingegneria dice che devo scrivere codice! Devo dargli ragione!?!

Ciao


Inserita:

Probabilmente mancano un po di dati.

Per esempio come fai a controllare l'asse? C'è un istema di controllo esterno al PLC? Altro? Che tipo d PLC stai usando?

Da quanto hai scritto il sistema più semplice ed efficace che mi viene in mente è avere un segnale, o due segnali, in ingresso al PLC in corrispndenza all'inversione di direzione. Conoscendo l'esatto spazio percorso, basta misurare il tempo nell'intervallo tra un'inversione e l'altra per conoscere la velocità media dell'asse.

Inserita:

La quota mi viene passata via bus da un'utenza esterna, quindi mi trovo a dover calcolare la velocità istantanea come descritto basandomi solo dal "numero" che vedo nella word.

Il processo è piuttosto lento e calcolando il tempo tra un inversione e l'altra rischio di arrivare in ritardo con l'aggiornamento della velocità media istantanea.

Per dare un'idea migliore la fase di avanzamento tra 0 e 500 potrebbe variare da 3 a 20 secondi.

Inserita: (modificato)

E' un problema di meccanica elementare V = s / t == velocità uguale spazio diviso tempo impiegato per percorrere lo spazio.

Se non puoi misurare esattamente lo spazio ed il tempo non puoi calcolare la velocità. La misura che vuoi effetuare non da alcuna garanzia di affidabilità ed esattezza.

Poi se ti accontenti di avere uan velocità con un errore che non puoi nemmeno quantificare teoricamente a priori, fai pure. Ma calcolare la velocità in quel modo è molto meno preciso che stimare la velocità in base al riferimento dato all'asse.

Modificato: da Livio Orsini
Inserita:

Grazie per l'interessamento e il tempo che dedichi però secondo me non hai ben capito il mio quesito...

Provo ad esprimermi meglio:

Velocità = Spazio / Tempo fino a lì penso che sia noto a tutti fin dalle scuole medie;

Non sono preciso non è vero! Anzi, se creo un trigger a 1000 millesecondi nella peggiore delle ipotesi compio 166mm di corsa (500mm/3Secondi) in quel tempo, cioè vado a 166mm/sec.

Supponiamo un errore tra trigger e bus di 20ms che è comunque altissimo, l'errore è del 2% cioè il valore di velocità varia da 162,68 a 169,32 che per me è più che accettabile.

Il mio quesito fondamentale è un altro, quando arrivo nella fase di inversione non posso più calcolare il differenziale della quota perchè se il mio trigger cade a 490mm avrò 10mm in fase crescente e i restanti 156mm in fase decrescente (muovendosi l'asse avanti/indietro), per non dover creare memorie di direzione, utilizzare dei fronti e usare dati di appoggio (come già fatto su altre applicazioni) chiedevo se per caso esiste una formula o un principio matematico che già elabora questa condizione.

Ciao

Inserita:

Se l'unico dato che hai è la posizione, non potrai mai capire se l'asse ha fatto anche un'inversione di marcia oppure no.

Facciamo un semplice esempio con i numeri:

- prima lettura: posizione asse = 450 mm

- lettura successiva: posizione asse = 480 mm

Supponendo che la corsa dell'asse sia da 0 a 500 mm, potresti ottenere quelle letture in tre diversi casi:

1) l'asse è semplicemente passato da quota 450 mm a quota 480 mm, percorrendo quindi 30 mm.

2) l'asse è passato da quota 450 mm, poi ha raggiunto quota 500 mm, ha invertito la marcia ed ha raggiunto quota 480 mm. In totale ha percorso uno spazio di 70 mm.

3) l'asse è passato da quota 450 mm, ha raggiunto quota 0 mm, ha invertito la marcia ed ha raggiunto poi quota 480 mm. In totale ha percorso 930 mm.

Al massimo potrai scartare un risultato se la velocità calcolata supera la velocità massima dell'asse, ma nulla di più.

Inserita:

Ciao Batta..

In realtà riesco compieno un confronto tra la quota attuale e quella passata, se il valore è maggiore direzione + se il valore è minore direzione -, se confronto ogni scansione riesco a capire la direzione da lì tutto il resto.

Se avessi avuto un plc non avrei avuto nessun problema come già fatto in passato, visto il basso numero di I/O da gestire (16IN, 16OUT) è stato montato uno scara senza plc, che ha una task a tempo che gira ogni 4ms e un bus slave che mi passa consensi e sta benedetta quota.

Per evitare l'utilizzo di una marea di salti ed etichette mi è sorto il dubbio che non si possa scrivere un algoritmo che mi calcoli la velocità in funzione della quota essendo la velocità la derivata prima della distanza.

Ho provato a navigare sul web cercando in wikipedia e wikibook ma nulla che possa essermi stato utile.

Purtroppo ho anche un limite sulle istruzioni avendo a disposizione solo le istruzioni elementari.

Ciao e grazie.

Inserita:
In realtà riesco compieno un confronto tra la quota attuale e quella passata, se il valore è maggiore direzione + se il valore è minore direzione -, se confronto ogni scansione riesco a capire la direzione da lì tutto il resto.

Sì, certo. Ti rimane solo un margine di errore in prossimità dei cambi di direzione.

Io avevo capito che potevi aggiornare il dato una volta al secondo.

Non vedo comunque altri modi per calcolare la velocità se non determinare lo spazio come differenza di posizione tra due campionamenti, e dividendolo per il tempo di campionamento.

Se poi, nell'intervallo tra due campionamenti, c'è stata anche un'inversione di marcia, si dovrà tenerne conto.

Scorciatoie io non ne vedo.

Inserita:
Ti rimane solo un margine di errore in prossimità dei cambi di direzione.

Non solo.C'è l'indecisione sui tempi di acquisizione delle quote.

Sui cambi di direzione, per semplificare è sufficiente non effettuare calcoli di velocità se non quando si hanno almeno 3 valori consecutivi con segno concorde. Vista la velocità in gioco e,soprattuto, la precisione comunque ottenibile si perderebbero al più un paio di misure, cosa che è ininfluente sulla qaulità totale.

Inserita:

Grazie mille per le risposte e per il tempo...

Comunque non demorderò (mai cedere se non all'evidenza) questo weekend ci dedicherò un pò di tempo e se riesco ad ottenere un risultato farò sapere.

Ciao

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...