Dany1981 Inserito: 12 novembre 2009 Segnala Share Inserito: 12 novembre 2009 Ciao ragazzi ho un problema , devo contare gli impulsi di un encoder da 200 P/R, con una normale scheda ad ingressi digitali. L’encoder è di tipo incrementale con A/B/Z collegato ad un motore che gita a 15 giri al minuto ed il PLC è un Omron CJ1W-CPU43H . Io avevo pensato di leggere i fronti di salita e di discesa dei segnali A/B senza Z non mi serve lo 0 solo che non riesco a leggere tutti gli impulsi.Aiutoooooo!!! Grazie Link al commento Condividi su altri siti More sharing options...
batta Inserita: 12 novembre 2009 Segnala Share Inserita: 12 novembre 2009 Con 200 impulsi/giro a 15 giri/minuto arriviamo a una frequenza di 50Hz, ovvero un impulso ogni 20ms.Questo significa che tra il fronte del canale A e il fronte del canale B passano 10ms.Solo in base a queste considerazioni per non perdere segnali dovresti rimanere con la scansione sotto ai 5ms.E questo considerando la perfetta quadratura degli impulsi dell'encoder, e ritardo nullo (cosa che assolutamente non è) sulla lettura dello stato degli ingressi.Da un punto di vista pratico, per non perdere segnali la scansione del plc dovrebbe non superare mai i 2-3ms.E, anche in questo caso, io non mi sentirei troppo sicuro.Potresti comunque provare ad analizzare solo i fronti di salita o solo i fronti di discesa, e vedere se la situazione migliora. Link al commento Condividi su altri siti More sharing options...
Dany1981 Inserita: 12 novembre 2009 Autore Segnala Share Inserita: 12 novembre 2009 Ok ti ringrazio, mi sa che mi conviene cambiare encoder perchè ho una scansione di 15ms dovrei prenderne 1 con 50 impulsi a giro secondo i calcoli. Con un interrupt non si riesce però ad eliminare questo inconveniente ed utilizzare l'encoder da 200 P/R? Link al commento Condividi su altri siti More sharing options...
batta Inserita: 12 novembre 2009 Segnala Share Inserita: 12 novembre 2009 Mantenendo l'encoder da 200 imp/giro, dovresti lanciare un interrupt ogni 5ms.E' questo infatti l'intervallo di tempo che intercorre tra i fronti dei due canali, e non 10ms come ho detto nel precedente post.Io non conosco Omron e non ti so dire se un interrupt ogni 5ms sia gestibile o meno. Link al commento Condividi su altri siti More sharing options...
_kevin Inserita: 12 novembre 2009 Segnala Share Inserita: 12 novembre 2009 Se non ti interessa conoscere la direzione di rotazione potresti usare una sola fase dell'encoder, così da dimezzare il numero degli impulsi; avendo così 100 p/giro per 15 giri in 60 secondi avresti 25ms tra un impulso e l'altro Link al commento Condividi su altri siti More sharing options...
batta Inserita: 12 novembre 2009 Segnala Share Inserita: 12 novembre 2009 (modificato) Se non ti interessa conoscere la direzione di rotazione potresti usare una sola fase dell'encoder, così da dimezzare il numero degli impulsi; avendo così 100 p/giroDici una cosa giusta ed una sbagliata.E' vero che se non interessa la direzione, basta analizzare i segnali di un solo canale, magari solo i fronti di salita, in modo da avere più tempo tra due fronti da rilevare.Ma quando dici che così si dimezzerebbe il numero degli impulsi, non ci siamo.Quando si parla di un encoder da 200 impulsi/giro con canali A-B-Z, si intende 200 imp/giro per il canale A, 200 imp/giro per il canale B, ed un impulso/giro (dell'ampiezza degli impulsi degli altri canali) per il canale Z.Quindi, anche volendo leggere solo i fronti di salita di un solo canale, siamo sempre ad una frequenza di 50Hz, quindi con tempo tra due fronti di salita di 20ms.In questo caso, per essere sicuri di non perdere impulsi (senza ricorrere ad interrupt, intendo), il tempo di scansione massimo del plc dovrebbe rimanere sempre sotto ai 10ms. Modificato: 12 novembre 2009 da batta Link al commento Condividi su altri siti More sharing options...
tuck81 Inserita: 9 dicembre 2009 Segnala Share Inserita: 9 dicembre 2009 Ciao Dany1981, scusa se mi intrometto... ma se non hai obbligo di utilizzo del CJ io ho utilizzato dei Plc della Elco Elettronica (www.elcoelettronica.it) che contiene già all'interno minimo 2 ingressi di lettura encoder (canali A/B/Z); hanno una banda passante da 60 KHZ a 100 KHZ e mettono già in una word valorizzata la quota da visualizzare (precalcolando il rapporto quota gira*N°impulsi) se ti fa comodo; ti rsiolverebbero in un secondo il problema... Link al commento Condividi su altri siti More sharing options...
gianff Inserita: 9 dicembre 2009 Segnala Share Inserita: 9 dicembre 2009 (modificato) la logica sarebbe montare esempio scheda cj1w-ct021questo tipo di cpu la meriterebeanche perche avra anche un certo programma impegnativo da gestirema ovviamente costa abbastanzacerto che un encoder cosi lo leggeresti tranquillamente anche con un cpm1 usando l'apposito ingressoe costa relativamente poco (meno della cj1w-ct021)sono due plc ma per scopi ben diversi Modificato: 9 dicembre 2009 da gianff Link al commento Condividi su altri siti More sharing options...
biondo Inserita: 10 dicembre 2009 Segnala Share Inserita: 10 dicembre 2009 Ciao, se non sbaglio nelle impostazioni del PLC puoi configurare degli Interrupt a tempo minimo 1ms ,richiamabili nei task che vanno dal 2 al 3. Prova a crearti un nuovo programma con un task per esempio lo 02 in cui una volta ogni millisecondo vai a leggerti i tuoi ingressi.Ciao. Link al commento Condividi su altri siti More sharing options...
gianff Inserita: 12 dicembre 2009 Segnala Share Inserita: 12 dicembre 2009 (modificato) la cpu CJ1W-CPU43H non ha ingressi a bordo quindi non si possono impostare ingressi a iteruptalmeno che io sappiaal massimo puoi inpostare il tepo di lettura della scheda aggiuntiva piu' veloce delle altre Modificato: 12 dicembre 2009 da gianff Link al commento Condividi su altri siti More sharing options...
NEX75 Inserita: 14 dicembre 2009 Segnala Share Inserita: 14 dicembre 2009 Ciao a tutti,sulla CPU CJ1G-CPU43H puoi generare due interrupt schedulati con un intevallo minimo di 1 ms.Se il tuo encoder è collegato ad una scheda di ingressi locali (non su bus di campo) puoieseguire una istruzione IORF che esegue il refresh immediato del canale di ingresso specificato.A questo punto ogni millisecondo puoi testare lo stato dei due ingressi. Presta solo attenzioneal fatto che l'istruzione IORF esegue il refresh di tutto il canale, se hai quindi usato gli altri bitdel canale "rischi" di avere un cambiamento di stato durante la scansione. Per evitare il problema all'iniziodel programma fai un MOV del canale di ingressi su di un canale di appoggio e per il restodel programma usi questo secondo canale. 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