Vai al contenuto
PLC Forum


Convertire un dato (Dint_%ID68) datomi da un encoder, in gradi d'arco (o sessaggesimale)


Emanuele1992

Messaggi consigliati

Buongiorno a tutti,

Avrei bisogno di un aiuto. Dispongo di un PLC siemens s71200 1212DC a cui ho collegato una ciabatta IO-link (IFM) per gestire un encoder assoluto (che monitora la rotazione di un elica), il quale mi rida direttamente un numero intero (ad 8 cifre) Dint nell'indirizzo %ID68. Vorrei convertire questo dato in gradi d'arco, cosi da capire a che angolo si trova la mia elica da 0° a 360°. C'è per caso qualche istruzione dedicata a questo? Altrimenti cosa mi consigliate di fare? grazie in anticipo! 

Link al commento
Condividi su altri siti


1 ora fa, Emanuele1992 ha scritto:

C'è per caso qualche istruzione dedicata a questo?

Sì, c'è, è compresa nella matematica.
Scusami, non te la prendere, ma si tratta solo di fare una moltiplicazione (o una divisione).
Rifettici un attimo.

 

Modificato: da batta
Link al commento
Condividi su altri siti

Grazie della risposta!

 

No ci mancherebbe che me la prendo anzi, sono ancora novello nella programmazione quindi sono qui per imparare. Devo ancora trovare il mio metodo! Comunque ci rifletto, nel caso mi continuasse a sfuggire lo farò sapere! Grazie ancora

Link al commento
Condividi su altri siti

Non riguarda la programmazione, ma solo la matematica.
Supponiamo che il tuo encoder ti dia 1000 impulsi per il giro completo (ovvero per 360 °). Supponiamo che tu legga dall'encoder 436 (numero a caso). A cosa corrisponde in gradi?

Link al commento
Condividi su altri siti

Buongiorno,

dovrei fare 1000 impulsi diviso 360° e so quanti impulsi ho ogni grado, poi divido 436 per questo risultato ed ho i gradi, in questo caso verrebbe 156° (arrotondando per eccesso), giusto?

Però continua a sfuggirmi come applicarlo nel mio caso. Ho gli impulsi ad un ipotetico 0° che sono 16704391. So che l'encoder ogni giro (360°) mi fa 4000 impulsi. se giro manualmente l'encoder verso destra fino a 90° mi da circa 1000 impulsi in più quindi 16705391, fino a qui ritorna. Ma come faccio a far fare in automatico al mio programma questa operazione ogni volta che cambia il valore degli impulsi? inoltre come faccio a dire al programma che ogni 11,11 (4000 diviso 360°) impulsi in più corrisponde ad 1° di movimento e quindi anche visualizzarlo? 

Modificato: da Emanuele1992
Link al commento
Condividi su altri siti

intanto l'encoder va configurato come ciclico, cioè che ad ogni giro riparte da 0. Poi definisci una posizione di zero e lo azzeri. Di li ogni ciclo avrai nmila impulsi e lo rapporti a 360°

Link al commento
Condividi su altri siti

ciao 84paolo, 

scusa ma questo però non mi aiuta, nel senso che io ho una ciabatta io-link che mi gestisce l'encoder e mi riporta dei punti su una variabile. Però poi non saprei come gestirla per fare quello che chiedevo prima. Come dicevo sono un pò agli inizi della programmazione e quindi anche tipo creare una funzione che ad ogni giro mi riparte da 0 mi resta complicato. Vado un pò a tentativi a volte, ma spesso ancora trovo difficoltà. 

Link al commento
Condividi su altri siti

1 ora fa, Emanuele1992 ha scritto:

So che l'encoder ogni giro (360°) mi fa 4000 impulsi.

 

Se l'encoder ha, come dovrebbe avere, la marca di zero usi quella per azzerare il contatore.

Poi o fai coincidere meccanicamente la marca di zero con lo zero meccanico della tua elica, oppure prevedi un ciclo di zero all'inizio del processo.

Una volta azzerato il tutto avrai un conteggio che varia tra zero e 4000; la posizione angolare sarà data dalla semplice proporzione 4000:360 = n: x, da cui x = n * 0,09. Ad esempio se conti 1000 impulsi l'angolo corrisponde a 90°.

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

salve Livio,

ok ho capito cosa mi dici, ora faccio qualche prova, nel caso riscrivo. Nel frattempo qualche altra dritta se avete piacere di scrivermela cosi mi faccio un quadro più chiaro sul metodo pratico per gestire queste cose! grazie ancora

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