damitisi Inserito: 12 settembre 2013 Segnala Inserito: 12 settembre 2013 Buongiorno a tutti, Dovrei dosare una quantita' d' olio su dei recipienti che scorrono su di un nastro trasportatore controllato da encoder. La posizione dei recipienti non è costante quindi pensavo ad un sensore presenza recipiente il quale mi legge gli impulsi dell' encoder ai quali successivamente calcolo la distanza per fare il dosaggio. Il mio problema è che non so come memorizzare gli impulsi nel momento in cui il sensore vede il recipiente i quali scorrono sotto il sensore in tempi diversi,quindi devo memorizzare piu' momenti di presenza recipiente. Vi ringrazio per l' aiuto.
Livio Orsini Inserita: 12 settembre 2013 Segnala Inserita: 12 settembre 2013 Non è che sei stato molto chiaro nella tua esposizione. Non si capisce dove sta il problema. Se tu scrivessi un po' di più descrivendo meglio la tua applicazione forse si riuscirebbe a dare rispste congruenti.
damitisi Inserita: 12 settembre 2013 Autore Segnala Inserita: 12 settembre 2013 Buongiorno e grazie per la risposta, praticamente questi recipienti passano sotto al sensore di presenza, voglio memorizzare il valore in quell' istante dell' encoder del quale ho fatto la funzione sfb 47, al valore memorizzato sommo gli impulsi necessari perchè il prrodotto arrivi sotto al dosatore olio del quale setto un bit per dosare. Il mio problema è che il primo prodotto passato sotto il sensore potrebbe arrivare al dosatore dopo che magari arriva un secondo recipiente sotto il sensore presenza recipiente. Quindi ogni volta che si setta il bit presenza recipiente vorrei memorizzare in mw..... o db ..... il numero degli impulsi di quel momento dell' encoder che deve essere memorizzato come una fotografia cosi' che dopo con dei calcoli posso sommare gli impulsi mancanti per arrivare sotto il dosatore. Io ho pensato questa soluzione perchè i recipienti possono arrivare dopo 3 sec oppure dopo 10 sec. e non so come fare a fare arrivare il recipiente proprio sotto al dosatore. Ovviamente conosco gli impulsi per giro dell' encoder e gli impulsi che servono dal sensore presenza recipiente alla valvola di dosaggio. Grazie
ken Inserita: 12 settembre 2013 Segnala Inserita: 12 settembre 2013 Quando devi memorizzare informazioni riguardo a più pezzi devi usare un FIFO, first in first out. praticamente lo puoi realizzare in diversi modi. quello che a me sembra più semplice è avere un db con n. strutture o comunque n word o dword dove scrivere i dati che ti servono e un puntatore per leggere e scrivere dal tuo fifo.
damitisi Inserita: 12 settembre 2013 Autore Segnala Inserita: 12 settembre 2013 ken grazie per la risposta ma scusa la mia inesperienza puoi farmi un esempio piu pratico?
ken Inserita: 12 settembre 2013 Segnala Inserita: 12 settembre 2013 3 fc in uno fai la gestione del fifo, nel secondo scrittura, nel terzo lettura supponiamo che tu debba memorizzare delle dobbleword il tuo puntatore è a 0. arriva il primo recipiente. sul fronte di salita del tuo sensore lanci il secondo fc. prima istruzione copia il dato nella dword indicata dal puntatore (o) incrementa il puntatore di 4. fine fc arriva il secondo contenitore il puntatore ora vale 4. stessa cosa scritta sopra. alla fine il puntatore vale 8. il primo contenitore esce. lanci il terzo fc. fai scorrere le dword (dword 1 in dword 0, dword 2 in dword 1.... dword ultima in penultima scrivi zero nell'ultima) e decrementi il puntatore arriva una nuova vaschetta e scriverai nel 2 e via così dicendo provato a fare una ricerca sul forum scrivendo FIFO nel modulo di ricerca?
JumpMan Inserita: 12 settembre 2013 Segnala Inserita: 12 settembre 2013 (modificato) si può anche eliminare l'operazione di scorrimento delle dword (che a volte può essere laboriosa se il registro contiene molti dati), basta mettere 2 puntatori, uno per la scrittura della quota (su fronte della fotocellula) e uno per la lettura della quota di arresto. All'inizio entrambi i puntatori (chiamiamoli ptr_write e ptr_read) sono a 0, ogni volta che arriva un recipiente memorizzi il valore nella DBW puntata da ptr_write, poi incrementi ptr_write di 4 (qui fai un controllo per non superare l'ultima DBW, eventualmente azzeri ptr_write) il valore della DBW puntata da ptr_read viene costantemente monitorato (se <> 0 contiene la prossima posizione di riempimento) quando finisce il riempimento azzeri la DBW puntata da ptr_read e incrementi ptr_read di 4 in modo da controllare la posizione successiva (qui fai un controllo per non superare l'ultima DBW, eventualmente azzeri ptr_read E' come avere 2 persone, una che annota su un foglio tutte le quote, e un altra che le legge e poi le cancella Modificato: 12 settembre 2013 da JumpMan
damitisi Inserita: 13 settembre 2013 Autore Segnala Inserita: 13 settembre 2013 Buongiorno a tutti e grazie per le risposte, ho letto le varie guide del sito su i puntatori, ho cercato di capire molti esempi del sito ma non capisco alcune cose: i registri come LAR1 i quale memoria vanno e cos' è un registro? Per memorizzare un valore intero dato dall' encoder che cambia velocemente come faccio a puntarlo per esempio in mw20? Sono cose banali per chi è pratico del mestiere ma sto cercando di capirle per utilizzare sul nastro trasportatore sopra descritto.
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