Vai al contenuto
PLC Forum


Encoder Assoluto - PROGRAMMAZIONE


vittorio1982

Messaggi consigliati

vittorio1982

Salve a tutti, ragazzi volevo porvi questa domanda.

Come faccio a conoscere la velocità reale istante per istante del mio encoder che è collegato ad un motore comandato da micromaster 420.

Sicuramente non sono stato chiaro adesso cerco di spiegarmi meglio.

Poichè la velocita è lo spazio percorso fratto il tempo impiegato a percorrerlo volevo implementare questa formula in un programma in step7.

Il mio problema e che il tempo della cpu e molto piccolo quindi come faccio ad avere la velocita in secondi.

ciao a tutti

Link al commento
Condividi su altri siti


Livio Orsini

E' semplicissimo. Devi avere una scheda per interfaccia encoder contatore tipo FM350. Poi, in OB35 che è l'OB dell'interupt del timer di sistema leggi il contatore. Se programmi il timer a100ms ti basta moltiplicare per 10 la differenza del numero di'mpulsi tra due letture e moltiplicare ancora per il fattore di conversione impulsi/mm, o altra unità di lunghezza, ed avrai la tua velocità. Questo è il metodo più semplice, però ne esistono molti altri molto più raffinati.

Ops ho visto ora che è un encoder assoluto. Sei sicuro? perchè se è assoluto lo devi leggere con un'interfaccia diversa, devi convertire il codice e hai il problema di riconoscimento della rivoluzione completa.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Solitamente setto l'OB35 ad un intervallo di tempo che sia minore ad un giro encoder alla massima velocita'

poi ogni volta che vai dentro all'ob 35 guardo la quota faccio i miei calcoli e me la salvo

quindi rientro guardo se la quota vecchia e' minore della attuale : quota attuale - quota vecchia = gradi fatti

se la vecchia e' maggiore di quella attuale ( sono passato da zero ) : 360 - quota vecchia + quota attuale = gradi fatti

dai gradi fatti in un tempo definito trovo la velocita'

PS se la velocita' non e' stabile , fatti un db con le ultime 10 letture ( ad ogni lettura sposti tutto )

e mediati le ultime 10

Luca

Link al commento
Condividi su altri siti

vittorio1982

Scusami lUca mi puoi spiegare un po meglio la procedura da te descritta, io non ho mai utilizzato l'ob35 come faccio a modificare i valori di questo ob???

non hai un esempio che puoi mandarmi, sono veramente in dificolta.

Link al commento
Condividi su altri siti

Livio Orsini

L'OB35 si attiva sull'interrupt del timer di sistema, il tempo lo programmi "una tantum" nella configurazione Hw del PLC. E' consigliabile non scendere sotto i 10ms; nelle nuove CPU più veloci si può stare anche a 5ms. Ogni volta che l'orologio di sistema fa scattare l'interupt il tuo programma entrerà in OB35.

Comunque è spegato abbastanza bene sul manuale.

Link al commento
Condividi su altri siti

vittorio1982

continuo a non capire io ho la necessita di vedere la velocita espressa in secondi come farrio a utilizzare l'ob 35?? se ha un tempo di interrupt di 10-5ms Livio hai un esempio di utilizzo specifico simile alle mie necessità scusami.

Ma come già detto sono le prime volte che utilizzo un plc e quindi sono cose totalmente nuovi per me

Link al commento
Condividi su altri siti

Velocita' = spazio percorso nel tempo.

se come ti ha detto LIVIO setti in HW conf l'O35 ogni 100ms ( valori di esempio )

e ti calcoli la distanza percorsa dal tuo encoder dopo 100ms , ti trovi la velocita'

esempio 100ms l'OB35

distanza percorsa tra un OB35 e l'altro = 100gradi

velocita' = 100gradi ogni 100ms = 1000 gradi al secondo = 60000 gradi al minuto = ( se 360 = 1cpm ) = 166,6 CPM

Chiaro ???

Luca

Link al commento
Condividi su altri siti

vittorio1982

teoricamente più o meno ho capito cosa vuoi intendere ma praticamente come faccio a settare il tempo di scansione di quest'ob35??

ma poi visto che io voglio la velocita espressa in secondi dovrei settare il ciclo di interrupt in 1000ms???????

e infine come faccio a prelevare un valore e poi prelevare un altro valore dopo 1 secondo. Scusate ancora perla mia incapacità...

Link al commento
Condividi su altri siti

vittorio1982

ragazzi ho risolto avete avuto un ottima intuizione.

io mi stavo scervellando con i timer invece ho fatto come avete detto voi ed è stato semplicisimo.

L'unica differenza e stato invece di utilizzare l'ob 35 ho utilizzato l'ob 32.

comunque grazie a LIVIO e a LUCA siete dei grandi.

Mi sapete dire perchè io gli setto una velocità di riferimento, invece mi trovo una velocità effettiva inferiore????

un esempio gli setto 300mm/s e mi ritrovo 277mm/s?????

Link al commento
Condividi su altri siti

qui non m i sembra che sia un problema di programmazione OB35 (che è standard a 100ms) quindi non modificare nulla delle proprietà dell'OB.

il problema e comprendere un'equivalenza.

v=m/s = m/(ms*1000) = m/(100ms*10)

per esempio un metro al secondo è =

0,001 metri al millisecondo

0,1 metri ogni 100 millisecondi

1 millimetro al millisecondo

100 millimetri ogni 100 millisecondi

1 decimetro ogni 100 millisecondi

se hai l'OB35 richiamato di default ogni 100 ms, rileverai una distanza percorsa ogni 100ms che moltiplicata per 10 ti dà la distanza che percorreresti in un secondo assumendo un moto uniforme

E' la stessa cosa che ti ha già detto Luca Bab

visto che io voglio la velocita espressa in secondi dovrei settare il ciclo di interrupt in 1000ms

No, in sostanza moltiplica per 10 la differenza che rilevi tra lo spazio precedentemente percorso e l'attuale

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