GoldFloSev Inserito: 10 aprile 2019 Segnala Share Inserito: 10 aprile 2019 Buona sera a tutti, ho un problema con la realizzazione di un shift register, formato ad alcune DBW i cui bit scorrono verso destra sul fronte di salita di unclock. Il clock è stato realizzao in questo modo: UN T1 L DBW1 SE T2 U T2 L DBW1 SE T1 Il valore del tempo (DBW1) è un valore che varia al variare della velocità di una rulliera. Il tutto sembra funzionare bene i bit scorrono, ma ho notato che il tempo di clock non è regolare ma è influenzato dal tempo di scansione del programma, che è di circa 30ms mentre il clock si aggira tra i 200ms e i 400ms. C'é un modo per evitare questo problema? Geazie a tutti. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 11 aprile 2019 Segnala Share Inserita: 11 aprile 2019 Non ho capito perché per generare un clock per lo shift register utilizzi due timer. Comunque, è assolutamente normale che i timer siano influenzati dal tempo di scansione. Per avere un clock più preciso devi usare un OB a tempo. Potresti richiamare i timer all'interno dell'OB o, meglio, sempre all'interno dell'OB, incrementare una variabile del tempo di esecuzione dell'OB stesso. Raggiunto il valore desiderato, attivi il clock e azzeri la variabile. Più sarà piccolo il tempo configurato per il richiamo dell'OB, più il sistema sarà preciso. Ovviamente non puoi scendere a valori troppo piccoli. Penso potresti provare con 5 ms. Per finire, devi comunque essere cosciente del fatto che uno shift con clock derivato dalla velocità non potrà mai essere precisissimo. Se descrivi meglio la tua applicazione, forse si può trovare un'altra soluzione. Link al commento Condividi su altri siti More sharing options...
GoldFloSev Inserita: 11 aprile 2019 Autore Segnala Share Inserita: 11 aprile 2019 Ciao batta grazie della risposta. Per quando riguarda i due timer hai raggione ne basta uno solo e nella DBW si carico il tempo intero e non la metà. Per quanto riguarda gli OB non ho mai richiamato un OB a tempo e non sò se già ci sono degli OB che fanno questa funzione. Se potresti farmi un esempio te ne sarei molto grato. L'applicazione dove voglio utilizzare shift register è quello della tracciature (inseguimento) dei pezzi di scarto sù una linea formata da più trasportatori messi a punto in linea che si arrestano e ripartono indipendentemente asseconda dell'intasamento, dove ci sono più punti di prelievo del pezzo buono e più punti di scarto del pezzo non conforme. Linseguimento lo vorei fare senza utilizzare le fotocellule che rilevano la presenza del pezzo sul singolo trasportatore tranne nei punti di prelievo o di scarto, perchè il pezzo di scarto molto spesso e rotto in più punti con l'impressione che siano più pezzi vicini tra loro. Il sistema in realtà funziona bene per una porzione di linea circa la metà (il ritardo è accettabile), mentre se devo scartare alla fine dell'intera linea il pezzo identificato non conforme all'inizio della linea ho qualche problema di anticipo ma soprattuto di ritardo. Spero di essere stato abbastanza chiaro. Grazie. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 12 aprile 2019 Segnala Share Inserita: 12 aprile 2019 11 ore fa, GoldFloSev scrisse: e non sò se già ci sono degli OB che fanno questa funzione. C'è il classico OB35. Il tempo se non ricordo male si imposta nella configurazione di sistema. Se imposti ad esempio 10 ms, ogni 10ms l'interrupt richiamerà l'OB35; in questo OB fai "n" contatori quanti sono i timers che ti servono e, ad ogni interrupt, decrementi i timers; quando un odi questi raggiunge lo zero, lo ricarichi e richiami la funzione legata ad esso. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 12 aprile 2019 Segnala Share Inserita: 12 aprile 2019 Quote Il sistema in realtà funziona bene per una porzione di linea circa la metà (il ritardo è accettabile), mentre se devo scartare alla fine dell'intera linea il pezzo identificato non conforme all'inizio della linea ho qualche problema di anticipo ma soprattuto di ritardo. Come ti dicevo, un clock basato sulla velocità non può essere preciso, perché difficilmente leggerai la velocità con precisione assoluta. A distanza piccola corrisponde un errore piccolo; ad una distanza grande corrisponde un errore grande. Poi dici che i trasportatori si fermano e ripartono a seconda delle condizioni. Come fai a gestire i transitori di accelerazione e decelerazione? Perché non usare un encoder, o anche una semplice ruota dentata e un sensore? Con qualche decina di euro risolvi il problema. Link al commento Condividi su altri siti More sharing options...
ken Inserita: 12 aprile 2019 Segnala Share Inserita: 12 aprile 2019 esatto, su un piccolo tappeto avevo usato un encoder per monitorare la posizione dei fogli di lamiera. Link al commento Condividi su altri siti More sharing options...
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