Vai al contenuto
PLC Forum


Dosaggio Su Nastro Trasportatore


Messaggi consigliati

Inserito:

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.


Inserita:

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.

Inserita:

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

Inserita:

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.

Inserita:

ken grazie per la risposta ma scusa la mia inesperienza puoi farmi un esempio piu pratico?

Inserita:

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?

Inserita: (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 :smile:

Modificato: da JumpMan
Inserita:

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.

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