Vai al contenuto
PLC Forum


Calcolare La Velocita Di Un Tappeto


saisas

Messaggi consigliati

Buongirno a tutti.

Dovrei controllare la velocita di un tappeto in mm/s,attualmente il mio sistema funziona nel seguente modo:

Sul tappeto e calottato un encoder da 1000 impulsi ,dove ad un giro di tappeto equivale uno spostamento di 1000 decimi.

L'encoder e collegato ad un plc dove a cicli di 0,1s vado a fare una campionatura di quanto si è spostato il tappeto, il problema sorge al momento che devo convertire gli impulsi in 0.1s a 1s dove ho degli incrementi in multipli di 10.

Qualcuno conosce un sistema piu performante ho al quanto piu preciso dove non avro degli incremeti di 10 ma ma degli incrementi proporzionali alla posizione del tappeto

Grazzie mille

Link al commento
Condividi su altri siti


Scusa, ma, da come scrivi, sembra che misurando una variazione di spostamento in decimi di mm ogni decimo di secondo, hai già la velocità in mm/s, pari al numero di impulsi letti, quindi non serve nessun calcolo.

Link al commento
Condividi su altri siti

Per misurare una velocità è indispensabile misurare la spazio percorso nell'unità di tempo. Ci sono due metodi.

1 - Misuri il tempo che impiega il dispositivo per percorrere uno spazio preciso e determinato, p.e. 1m

2 - Misuri lo spazio percorso in un intervallo di tempo preciso, p.e. 1"

Nel tuo caso usi ilsecondo metodo. Dici di avere un itervallo di tempo pari a 0,1". Vuoi incrementare la precisione.

Primo è necessario assicurarsi della precisione dell'intervallo di tempo; se è legato al tempo di ciclo non è sicuramente preciso. Devi crearti un timer di sistema (magari se ci dicessi tipo e marca di PLC) che scatena un interrupt sul quale vai a leggere il conteggio degli impulsi.

Poi se non hai problemi di velocità di aggiornamento della misura puoi allungare l'intervallo di tempo, p.e. 1"

Link al commento
Condividi su altri siti

Livio io uso i plc dalla nais serie fpx.

Per quanto riguarda la campionatura degli impulsi faccio partire un timer che durante il tempo di 0.1s va a copiare il valore degli impulsi generato dall'encoder su di una word e dove in seguito andro a convertirlo in mm/s.

Nel messaggio di prima fai riferimento ad un timer di sistema, sapresti indicarmi come configurarlo nel mio plc

Grazzie mille

Link al commento
Condividi su altri siti

Roberto Gioachin

Se usi FPX di Panasonic, hai sufficenti funzioni per fare questo tipo di calcolo e molto altro.

Non hai bisogno di configurare il PLC per usare un "Interrupt a tempo", devi solamente utilizzare le istruzioni corrette che trovi anche sul'. in linea di "FPWin-gr o pro" (funzione INT, va inserita dopo "End").

In questo modo ottieni un calcolo degli impulsi su unità di tempo molto preciso.

puoi quindi effettuare la divisione che ti serve per calcolare la velocità.

Se ti serve puoi convertire i dati in virgola mobile e dopo i calcoli convertire ancora in intero.

Se ti serve fare una conversione per adattare i dati ottenuti, in una differente unità di misura, puoi usare la funzione "SCAL" utilizzando una tabella con due soli valori.

Quanto ho scritto è solamente una traccia, in quanto non ho capito se il tuo problema è relativo alla precisione del valore letto o la conversione degli impulsi letti in velocità.

Roberto

Link al commento
Condividi su altri siti

Roberto Gioachin

Per la gestione dell'interrupt a tempo devi scrivere sul "Main program", l'istruzione "ICTL - H2 - K1" per attivare il tuo processo ogni 10ms, e deve avere come condizione il segnale che vuoi usare per iniziare a calcolare, oppure R9013 per eseguire sempre il calcolo, poi devi usare "INT24" che si riferisce appunto all'interrupt a tempo (INT0-7 ecc si riferiscono a interrupt su evento) per inserire le istruzioni che avevi gia scritto e che servono a leggere gli impulsi dell'encoder.

Roberto

Link al commento
Condividi su altri siti

Roberto Gioachin ti ringrazzio per l'interesamento al mio problema,

ho provato a eseguire le istruzioni che mi hai indicato ma non è andato a buon fine,non sono riuscito a

eseguire l'interrupt.

Avresti qualche esempio dove utilizzi l'interrupt come campionatura da inviarmi per chiarirmi le idee.

Grazzie mille

Link al commento
Condividi su altri siti

Roberto Gioachin

Cerco di spiegarti.

Questo PLC come in genere i vari prodotti giapponesi, è strutturato in modo tale che una volta inserita l'istruzione "End" nel programma principale (main), si possono inserere subroutine e interrupt che vengono richiamati nel programma "main".

Alla fine il risultato è lo stesso che utilizzando le "function" sui PLC europei.

Sul programma main scrivi:

ST R9013 (bit che che è attivo sempre dalla seconda scansione di programma in poi)

ICTL - H2 - K1 (impostazione dell'interrupt a tempo, 10ms) (ICTL - H2 - K10 = 100ms)

Dopo l'istruzione "End" devi inserire:

INT 24

< programma che legge il valore dell'encoder e calcolo della velocità>

IRET

Quanto descritto serve a calcolare la velocità con una cadenza di tempo prestabilita e costante, in quanto il PLC esegue quanto scritto fra INT 24 e IRET rispettando il tempo impostato, ed interrompendo il programma "MAIN" in qualunque punto pur di rispettare questa condizione, salvo poi riprenterlo una volta eseguito il programma su interruzione.

Per quanto riguarda il programma per calcolare la velocità, mi sembrava di aver capito che lo avevi già fatto.

Se no riesci a risolvere il problema, cerca di spiegare meglio quello che riesci e quello che non riesci a fare, ed inoltre dimmi anche quale software utilizzi.

Ciao

Roberto

Link al commento
Condividi su altri siti

Roberto Gioachin il mio problema sta nel realizzare il sistema di conteggio,diciamo che sono

riuscito a realizzare una sorte di contaimpulsi che in realta non funziona molto bene,

non riesco ad avere un controllo della velocita performante e lineare.

Sapresti spiegarmi come poter realizzare un sistema che mi conti la velocita di un asse in decimi al secondo

piu performante del mio sistema.

Ti elenco anche qualche dato che ti potrebbe essere utile

-Un giro di tappeto 1000 dm

-Motore 1400 giri

-Inverter per tappeto della taglia del motore

-Riduttore 1/100

-Encoder 1000 impulsi a giro

Da quello che leggo sopra mi e venuta una domanda a cui non mi sono saputo dare una risposta,

Quando utilizzo la funzione interrupt che va utilizzato dopo END,escludo una parte di programma?

Mi spiego meglio,

nel momento in cui il programma stia eseguendo l'interrupt per il tempo impostato,

la parte di programma che e compresa al di sopra dell'interrupt non viene eseguita.

Se fosse cosi che problemi potrei avere sulla macchina nel caso dove in quella parte di programma che non viene eseguita stavo controllando dei dati ho uno portare in quota un asse (un posizionamento).

Nel caso andro ad utilizzare la funzione ad interruprt per la lettura degli impulsi,la conversione di quest'ultimi convenga farli sempre nell'interrupt o nel programma soprastante.

Spero di essere stato chiaro,nel caso non lo sono stato ti prego di non esitare a chiadermi qualche altro dato ho dei passaggi dove non sono stato chiaro

Grazzie mille

Link al commento
Condividi su altri siti

Roberto Gioachin
diciamo che sono

riuscito a realizzare una sorte di contaimpulsi

Prima questione, cosa significa quanto è scritto sopra??

In realtà il PLC ha già un contaimpulsi per segnali veloci.

Se tu hai cercato di realizzare un tuo sistema di conteggio, sicuramente la frequenza massima degli impulsi che possono essere letti è molto bassa, sicuramente molto al di sotto di quanto ti serve.

Sempre per il motivo che non sò cosa hai realizzato, cerco di spiegarti come si configura un contatore veloce per lettura di un encoder a due canali.

Su Fpwin-gr: Option - PLC Configuration, scegli Internal HSC.

Scegli per CH0 "2 Phase Input (X0 X1)", e conferma il tutto.

A questo punto gli ingressi X0 e X1 devono essere utilizzati per le due fasi dell'encoder, che deve avere uno stadio di uscita di tipo PNP o Push-pull 24Vdc.

Il conteggio degli impulsi lo trovi su DT9044+DT9045 a 32 bit.

Naturalmente devi verificare che la frequenza degli impulsi che entrano nel PLC non superi 30 KHz.

non riesco ad avere un controllo della velocita performante e lineare

Cosa significa "controllo della velocità"??

Qui stiamo parlando di lettura di una velocità, il controllo richiede altre cose che non hai mai menzionato.

Sapresti spiegarmi come poter realizzare un sistema che mi conti la velocita di un asse in decimi al secondo

Se anche questo non ti è chiaro, credo che l'impresa sia ardua, comunque provo a darti qualche informazione.

Per decimi al secondo credo tu voglia dire decimi di millimetro al secondo, per fare questo tu devi contare gli impulsi dell'encoder in una quantità di tempo conosciuta e costante.

Il tuo programma (all'interno dell'interrupt), deve calcolare la differenza fra il numero di impulsi attuali ed il numero di impulsi della lettura precedente, per fare questo, una volta effettuata la sottrazione, devi salvare in una memoria a doppia word il valore attualmente letto dal contaimpulsi, per poter essere utilizzato nella sotrazzione.

Se per esempio il programma su interrupt a tempo viene eseguito ogni 100ms, il risultato del calcolo moltiplicato per 10 corrisponde ad un certo numero di impulsi al secondo, da quì calcoli i millimetri al secondo.

Quando utilizzo la funzione interrupt che va utilizzato dopo END,escludo una parte di programma?

La risposta è NO!!, se così fosse credo che questa istruzione non servirebbe proprio a nulla.

Il programma principale, viene interrotto per eseguire il programma su interrupt, al termine di questo viene ripreso il programma principale dal punto dove era rimasto sospeso.

Nel caso andro ad utilizzare la funzione ad interruprt per la lettura degli impulsi,la conversione di quest'ultimi convenga farli sempre nell'interrupt o nel programma soprastante.

All'interno dell'interrupt, il calcolo viene eseguito sempre a tempo, sul programma principale viene eseguito ad ogni scansione, mi sembra che il miglior sistema sia il primo, non ti pare??

Ciao

Roberto

Link al commento
Condividi su altri siti

Roberto Gioachin

Nel rileggere il messaggio di prima mi sono reso conto che in effetti nella prima parte del messaggio non sono stato molto chiaro.

Quando prima citavo

diciamo che sono

riuscito a realizzare una sorte di contaimpulsi

Intendevo che ero riuscito a realizzare un sistema di lettrura della velocita che in realta non funziona molto bene,

per la lettra degli impulsi dell'encoder a bordo plc è installata una cassetta di conteggio veloce

dove vado a leggere il conteggio degli impulsi nella Word DT90332

In seguito dove cito

non riesco ad avere un controllo della velocita performante e lineare

Intendo dire che non riesco ad avele la lettura della velocita lineare,mi spiego megli con un esempio,

Se il mio tappeto lo faccio viaggiare sempre alla stessa velocita noto che a volte la velocita che vado a leggere

varia notevolmente ad esempio mi passa da 30.1 a 25.7 o da 15.2 a -10.4

ho escluso che possa essere un problema di lettra degli impulsi perche se vado a verificare lo spostamento reale del tappeto coincide con quello del valore del contatore.

Il problema credo che stia propio nella realizzazione del sistema di lettura a tempo.

In tal caso se mi spedisci la tua email ti invio il sistema che ho realizzato cosi puoi dargli un'occhiata e potresti dirmi cosa ne pensi e se potrebbe funzionare come sistema di lettura, e se ho eseguito quanto detto prima nei tuo messaggi in modo corretto .

Grazzie mille

Link al commento
Condividi su altri siti

Roberto Gioachin

Per ottenere un'informazione di velocità abbastanza precisa, si devono considerare alcuni aspetti del sistema.

- Nomero di impulsi giro dell'encoder, maggiore è questo valore, maggiore sarà la risoluzione e quindi la precisione del calcolo.

- Encoder calettato sull'albero lento del riduttore o sull'albero del motore, vale lo stesso discorso detto sopra.

- Tempo di campionamento per il calcolo del numero impulsi, in modo da ottenerne il valore di velocità, anche in questo caso un tempo troppo basso riduce la risoluzione.

Tutti questi dati possono essere calcolati in modo da ottenere la risoluzione voluta, a volte si deve scegliere un compromesso che permetta di ottenere una discreta risoluzione magari a scapito della rapidità con cui viene aggiornato il dato.

Oltre a questo, bisogna anche imparare calcolare l'errore con i dati forniti dal costruttore, in questo caso Panasonic, i dati che ti servono li trovi sicuramente nei manuali.

Ciao

Roberto

Link al commento
Condividi su altri siti

  • 2 months later...
Soundtechsystem

Ciao Saisa, anche io faccio carri e movimentazioni e

sembra che io e te abbiamo gli stessi problemi!

Anche io ho avuto il tuo stesso problema, ma forse usando plc omron

ho risolto prima..

Comunque io non so come si programmano i plc che usi te ma posso solo dirti in parole povere come

ho fatto io.

Innanzitutto come hanno già detto tutti, si deve scegliere un riferimento o in spazio od in tempo.Visto che V=S/t

Io ho scelto il tempo

Ho un fatto un Fb dove si può impostare come variabile di entrata il perido di campionamento imponendo

che il minimo periodo possibile è il clock di 0,02 s (il clock di sistema più breve possibile)

Conosci il teorema per la Conversione Analogico/Digitale?

Dice che la frequenza di campionamento deve essere due volte la frequenza massima del segnale.

Come sappiamo F=1/t

Quindi il dimensionamento dipende da quando rapidamente ti cambierà la velocità nel tuo sistema.

Comunque io prendevo gli impulsi dalla scheda e li convertivo in mm, a quel punto, ad intervalli alternati di 0,02

Facevo due foto alla quota, per intenderci partendo dall'istante iniziale t0=(0 s) all'istante t1(=0.002s) facevo una foto e la

appoggiavo in D1, all'istante t2(0,004s) facevo un'altra foto e la appoggiavo in D2,a quel punto in scansione confrontava le due word dove risiedevano le foto, (capivo insomma se il valore era incrementale o decrementale )

e poi sottraevo la word con la quota maggiore - la word con la quota minore,

Esempio D1=50mm D2=250 (CASO INCREMENTALE)

Deltax=D2-D1=200MM

Una volta ottenuta la mia variazione di spostamento , sono a cavallo,

Ho percorso quindi 200mm in 0,02

A questo punto è sufficente convertire questa velocità nell'unità di misura che desideri (mm/s, mt/min)e

dovresti essere a posto.

Se usi un periodo troppo breve vedrai che il risultato sarà un po'troppo ballerino,se usi un perido troppo

lungo il valore di lettura sarà lento alla risposta reale dell'asse.

Spero di esserti stato utile.

Link al commento
Condividi su altri siti

Soundtechsystem,

da quando ho inserito il messaggio è passato molto tempo e avevo risolto il problema propio come tu me lo ai indicato,ma nulla toglie un ringrazziamento per un tuo ulteriore aiuto.

Grazie mille

Link al commento
Condividi su altri siti

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