damiano.piran Inserito: 22 maggio 2009 Segnala Inserito: 22 maggio 2009 Salve, mi chiamo Damiano, è da molto che frequento questo forum ma è la prima volta che chiedo aiuto in modo diretto....Premessa: lavoro da tempo con plc wago 841 ma nel progetto che sto facendo mi trovo delle anomalie in merito alla lettura del modulo encoder 637/000002, senza descrivere l'intero progetto cerco di riassumere la questione.Problema: l'encoder è in rotazione a 5 impulsi/ms (valore teorico ma pure ferificato impostando l'interfaccia come misuratore di velocità) leggo 4 byte dal modulo, li trasformo in un intero a 32 bit ad ogni ciclo plc mi calcolo l'incremento degli impulsi questo valore dovrebbe essere circa 5 visto che il tempo plc è di 1 ms e invece...risultati dei test: modificando il tempo del task l'errore ( 5 impulsi/ms * tempo plc - incremento tra 2 cicli consecutivi) è molto maggiore 12/15 volte, non è lineare, sembra essere influenzato non dal tempo plc ma dal numero di righe di codice, ho provato senza task e anche con un 842 monotask ma nulla da fare, ho sottoposto il problema alla wago abbiamo realizzato un banco prova e verificato il programma assieme ma nulla....Risposta wago: dopo 1 mese di test mi dicono che il modulo non è sincrono con il ciclo plc? cosa vuol dire? non mi dicono altro e dopo avermi restituito il materiale dei test mi abbandonano....che faccio?aiuto: qualcuno di voi ha già avuto questo inconveniente? qualcuno sa dirmi cosa potrebbe voler dire asincrono? (in un plc?) qualsiasi aiuto o suggerimento sono ben accetti....ringraziamenti: ringrazio anticipatamente tutti coloro che mi potranno aiutare, anche quelli che pur interessandosi alla cosa non mi saranno d'aiuto e un grazie a tutti i frequentatori di questo forum perchè si riesce sempre ad imparare molto dall'esperienza di altri....Buon lavoro e giornata a tutti , Damiano
poix Inserita: 23 maggio 2009 Segnala Inserita: 23 maggio 2009 ciao,il tempo di task non è uguale per tutte le esecuzioni.Secondo me potresti misurare il tempo fra l'esecuzione di un task e il successivo in modo da avere con esattezza il numero di impulsi in quel determinato tempo, oppure misurare utilizzare un temporizzatore 10ms per vedere il numero di impulsi in un tempo preciso.ciao ciao
Roberto Gioachin Inserita: 24 maggio 2009 Segnala Inserita: 24 maggio 2009 (modificato) Non conosco questo plc, ma se dispone di "Interrupt a tempo", è questo che dovresti usare.Il tempo di interrupt deve esssere molto più alto del tempo di elaborazione della scheda encoder.Lo stesso tipo di problema lo trovi in tutti i plc.Roberto Modificato: 24 maggio 2009 da Roberto Gioachin
damiano.piran Inserita: 4 giugno 2009 Autore Segnala Inserita: 4 giugno 2009 Ciao a tutti, in risposta a poix il tempo ciclo che si può vedere con il comando tsk dalla console browser plc rimane costante (facendo varie prove ho tolto i task, così facendo il plc esegue un unico cilo a corsa libera) la tua osservazione mi ha ispirato un'altra prova, con un temporizzatore sono andato a contare i cicli plc in 1 s con mio immenso stupore non corrispondevano a quelli che mi aspettavo, aggiungendo dei cicli for per simulare una 100,1000,5000 istruzioni ho notato che il tempo con tsk "tempo ciclo dichiarato" è sempre minore e neppure lineare con il tempo ciclo che in realtà compie il plc, inoltre il tempo minimo è di 2 ms con poche righe di codice, che si porta a 3 ms per un'applicazione semplice....Per Roberto, l'applicazione consiste nel leggere di continuo il valore encoder, usato come pivot in una ricerca in una pila fifo inoltre il dato viene passato via modbus ad un pc che esegue altri calcoli, la lettura dell'encoder la eseguo ad ogni ciclo plc, la macchina funziona ma solo a velocità basse, se si aumenta la velocità l'errore tra una lettura e la successiva è affetta da un errore di 80-120 impulsi, (velocità circa 5 impulsi/ms)l'unica spiegazione dei tecnici wago è che il plc non è sincrono con il bus dei moduli di espansione....mi sembra molto strano visto che parliamo di plc industriali.....ringrazio chiuque possa darmi consigli e/o soluzioniDamiano.--
s4nCh0 Inserita: 27 agosto 2010 Segnala Inserita: 27 agosto 2010 Ciao Damiano,l'unico modo veramente valido per vedere i tempi ciclo REALI è commutare un'uscita:OUT1 = NOT OUT1in questo modo con un oscilloscopio vedi chi e perchè sta barando.
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