freder82 Inserito: 1 settembre 2007 Segnala Share Inserito: 1 settembre 2007 (modificato) Ragazziuna domanda apparentemente semplice, sto lavorando su un S7300,come faccio a calcolare il tempo medio che intercorre tra n impulsi ( impulsi ricevuti da una fotocellula ) in modo da calcolare la velocità di una macchina, sapreste consigliarmi che tipo di blocco posso utilizzare per avere un fattore tempo affidabileGrazie :ph34r: Modificato: 1 settembre 2007 da freder82 Link al commento Condividi su altri siti More sharing options...
wnc Inserita: 1 settembre 2007 Segnala Share Inserita: 1 settembre 2007 Media mobileSe T(n)=(a(0) + a(1) + ... + a(n)) / n è il tempo medio alloraT(0) = a(0)T(n) = (T(n-1) * (n-1)/n ) + a(n) / nLa velocità media sarà allora:V(n) = Num_Pezzi(n) / T(n)E' abbastanza semplice costruire un FB che calcola questo. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 1 settembre 2007 Segnala Share Inserita: 1 settembre 2007 Se il tempo tra due impulsi è relativamente lungo (direi almeno dell'odine delle decine di ms) per una misura precisa potresti usare un ingresso di interrupt (a seconda della cpu puoi trovarli a bordo oppure dover aggiungere un modulo apposito) e calcolare il tempo trascorso in OB40.Se il tempo è dell'ordine di alcuni secondi, secondo me ti conviene usare un normalissimo timer.Se invece la frequenza degli impulsi è più elevata ti conviene contare il numero di impulsi in un determinato tempo, utilizzando magari OB35.Se fornisci qualche dato in più possiamo dare suggerimenti migliori. Link al commento Condividi su altri siti More sharing options...
freder82 Inserita: 1 settembre 2007 Autore Segnala Share Inserita: 1 settembre 2007 Grazie ragazzila frequenza dell'impulso è circa 1 secondo e mezzo ( forse qualcosa di piu )ma la velocita della macchina ( quindi anche la frequenza degli impulsi ) puo essere aumentata o diminuita a seconda della produzione, pero diciamo che siamo nell'ordine di 1 secondo e mezzoBATTAper l'utilizzo dell'OB35 penso di aver capito cosa mi consigli, farlo girare ad es. a 100 ms e calcolare quante volte viene ciclato tra 2 impulsi, guisto?;ma in che modo pensi di utilizzare il timer ?Grazie ancora Link al commento Condividi su altri siti More sharing options...
beppeconti Inserita: 1 settembre 2007 Segnala Share Inserita: 1 settembre 2007 (modificato) La soluzione più semplice a mio avviso è di utilizzare l'OB35 e contare quante volte viene eseguito fra un impulso della fotocellula e quello successivo.Se vuoi una discreta precisione ti conviene far lavorare l'OB35 a 50ms o meno.Se hai un tempo ciclo della CPU alto ti conviene leggere l'impulso direttamente dalla periferia.CIAoBeppePSLa frequenza è in Hz, il tempo che intercorre fra due impulsi consecutivi è il periodo ed è espresso in secodi. Modificato: 1 settembre 2007 da beppeconti Link al commento Condividi su altri siti More sharing options...
batta Inserita: 1 settembre 2007 Segnala Share Inserita: 1 settembre 2007 La soluzione con OB35 io la adotterei per frequenze molto più elevate, nel caso cioè si leggessero almeno alcune centinaia di impulsi ad ogni ciclo di OB35.Per avere una precisione appena decente contando il numero di cicli di OB35 effettuati tra un impulso e l'altro, dovresti impostare tempi di esecuzione piuttosto bassi.Sbagliare di 100ms su 1500 vuol dire commettere un errore del 6,67%. L'errore diventa, ovviamente, del 3,33% passando a 50ms, 1,33% con 20ms, 0,667% con 10ms.Devi decidere se questo errore è accettabile.Io sconsiglierei vivamente di scendere sotto i 10ms, anche se in OB35 programmi il semplice incremento di una variabile. Se in OB35 ci sono anche altre istruzioni, magari un pò complesse, meglio se rimani almeno sui 20ms. Molto dipende, ovviamente, anche dalla cpu che utilizzi.Se mantieni tempi di esecuzione di OB35 elevati, per non veder "ballare" troppo il risultato dovresti poi fare la media di un certo numero di letture. Più elevato sarà il numero di letture più stabile sarà il valore calcolato, ma sarà però più lento l'aggiornamento.Se il tempo ciclo della cpu è breve (diciamo dell'ordine dei 10ms) potresti ottenere risultati soddisfacenti semplicemente calcolando il tempo tra due impulsi per differenza tra due letture dell'ora direttamente in OB1 (in millisecondi dalla mezzanotte, estratta dalla variabile OB1_DATE_TIME).Per precisioni maggiori si ritorna al discorso dell'interrupt, sempre calcolando il tempo per differenza usando le lettura dell'ora in OB40 (sempre in millisecondi dalla mezzanotte, estratta dalla variabile OB40_DATE_TIME).Se usi questo sistema, fai attenzione a quando passi la mezzanotte. Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 1 settembre 2007 Segnala Share Inserita: 1 settembre 2007 (modificato) In alternativa puoi provare a usare la variabile OB1_PREV_CYCLE in OB1 (o in un FC qualsiasi).Questa variabile memorizza il tempo di scansione dell'ultimo ciclo plc (in ms).La accumuli in una DINT e quando arriva l'ingresso calcoli la velocità e azzeri la DINT.Dovrebbe essere abbastanza preciso se il tuo plc cicla in un tempo compreso tra 10 e 100 ms (sempre meno preciso comunque del sistema indicato da batta). Modificato: 1 settembre 2007 da JumpMan Link al commento Condividi su altri siti More sharing options...
Luca Bab Inserita: 3 settembre 2007 Segnala Share Inserita: 3 settembre 2007 altro consiglio oltre a quelli ottimi che ti hanno gia' datase ti devi fare una media , e' sempre meglio farti un fifo con gli ultimi x valori lettie fare la media su quelli , in questo modo e' piu' reattivo il valore che visualizziciaoLuca Link al commento Condividi su altri siti More sharing options...
Simone70 Inserita: 3 settembre 2007 Segnala Share Inserita: 3 settembre 2007 Che tipo di Cpu utilizzi? 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