Vai al contenuto
PLC Forum


Calcolare Quanti Giri Al Minuto Fa Una Ruota Dentata, In Tempo Reale


byt30

Messaggi consigliati

Salve a tutti.

Ho un sensore collegato alla CPU devo calcolare quanti giri al minuto fa una ruota dentata, in tempo reale! Ho copiato allo stesso modo nel OB35 il codice che ha scritto Batta nel messaggio #38, di questa ma non funziona... mi potreste aiutare perfavore? grazie in anticipo!

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti


Devi spiegare meglio cosa stai facendo prima di fare una domanda...

Hai una ruota dentata (quanti denti? quanti RPM può fare?)

Hai un sensore (che sensore? sarà adeguato a quella determinata frequenza?)

Lo hai collegato a un ingresso (ingresso normale o veloce?)

Dette almeno ste 3 cose si può già stabilire se il problema è hardware o software...

ciao.

Link al commento
Condividi su altri siti

Si alla fine devo provarlo con un ruota dentata ma non so quanti denti abbia e quanti rpm può fare.

Sensore OMRON E2A-M12KN08-WP-B1 (8.0mm)

L'ho collegato ad un ingresso normale (E0.7)

CPU S7-300

Link al commento
Condividi su altri siti

Sino a quando non puoi stabilire il numero massimo di giri ed il numero di impulsi al giro, non è possiible stabilire se un ingresso normale è adatto.

Io ho dei dubbi che si possano contare gli impulsi su di un ingresso normale. Per valutare devi tener conto del tempo di ciclo, caso pessimo, e motliplicare per 2. Ad esempio se hai un tempo di ciclo massimo di 5 ms tu hai la sicureezza di non perdere alcun impulso solo se il loro periodo è >10 ms (100 Hz).

Poi devi anche valutare il ritardo che introduce il filtro Hw del tuo ingresso.

Link al commento
Condividi su altri siti

A me hanno detto di farlo così, quindi penso vada bene. Deve essere una cosa molto rudimentale, dopo per i perfezionamenti o se ci sarà qualcosa da aggiustare me lo diranno sicuramente...

Link al commento
Condividi su altri siti

A me hanno detto di farlo così, quindi penso vada bene.

Non è proprio il miglior modo di operare, è quasi come rinunciare ad avere un cervello.

Comunque senza le informazioni che ti sono state richieste non è possibile darti un aiuto.

Link al commento
Condividi su altri siti

Mi serve solo sapere come fare per calcolare il tempo che c'è tra un impulso e un altro, tra due fronti. Per esempio, passo davanti al mio sensore con un oggetto metallico, poi dopo ci passo ancora davanti. Ecco io devo sapere quanto tempo è passato tra il primo passaggio e il secondo, una volta calcolato quello io sono a posto. A me serve capire come fare quell'istruzione e basta.. grazie mille

Link al commento
Condividi su altri siti

CPU S7-300

Hai una vaga idea di quanti modelli di CPU S7-300 esistono? Ma ti costava proprio tanta fatica specificare il modello di CPU?

Se ti facciamo delle domande, non è per riempire le pagine del forum, ma perché servono per poter dare risposte sensate.

Oltre ad essere indispensabile conoscere la frequenza del segnale da rilevare, sapere l'esatto modello di CPU che utilizzerai è fondamentale per capire se disponi o meno di ingressi veloci e/o di interrupt.

Inoltre il metodo più indicato per rilevare la velocità della tua ruota dentata, dipende molto proprio dalla frequenza.

Se si tratta di frequenza bassa (diciamo non oltre i 5 Hz) se disponi di ingressi di interrupt il metodo migliore potrebbe essere quello di misurare il tempo intercorso tra due impulsi. Con frequenze elevate è meglio invece contare il numero di impulsi in un tempo fisso.

Se poi la tua CPU è della famiglia 31xC (con contatori veloci a bordo), potresti utilizzare la funzione "Misura di frequenza".

Link al commento
Condividi su altri siti

Mi serve solo sapere come fare per calcolare il tempo che c'è tra un impulso e un altro, tra due fronti. Per esempio, passo davanti al mio sensore con un oggetto metallico, poi dopo ci passo ancora davanti. Ecco io devo sapere quanto tempo è passato tra il primo passaggio e il secondo, una volta calcolato quello io sono a posto. A me serve capire come fare quell'istruzione e basta.. grazie mille

Appunto.

Per poter definire se e come puoi fare quello che desideri, devi rispondere alle domande che ti abbiamo posto.

Per fare un esempio, se tra i due impulsi passano 10 secondi, allora non ti servono ingressi veloci o di interrupt, e potresti contare il tempo trascorso tra i due impulsi utilizzando l'orologio di sistema oppure la variabile in OB1 (OB1_PREV_CYCLE) che contiene il tempo in ms dell'ultima scansione. O, ancora, utilizzare un OB a tempo configurato con un tempo sufficientemente grande da non mettere in crisi la CPU, e sufficientemente piccolo per non perdere troppo in precisione.

Se tra i tuoi due impulsi il tempo è dell'ordine dei millisecondi, questo metodo non va più bene. Dovrai per forza disporre di ingressi veloci e cambiare completamente sistema per rilevare la frequenza.

Se continui ad attendere risposte senza fornire i dati che ti abbiamo richiesto, perdiamo solo tempo.

Link al commento
Condividi su altri siti

6ES7 313-1AD03-0AB0

Bene. Ora conosciamo la CPU. Si tratta di una CPU che non ha I/O a bordo e che, soprattutto, non dispone di contatori veloci.

E quindi possiamo subito dire che potrai rilevare i segnali (ipotizzando tempi di scansione ragionevoli) solo se la frequenza non supera i 10 Hz e il duty cycle è circa 50%.

Se fornisci anche gli altri dati, potremo stabilire se puoi o non puoi fare quello che desideri.

Link al commento
Condividi su altri siti

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