Vai al contenuto
PLC Forum


Utilizzo ingressi veloci


BuGia

Messaggi consigliati

Buongiorno, ho nel laboratorio della scuola due PLC OMRON: CPL1 EM e CPL1EL. Vorrei fare un programmino utilizzando come ingressi i segnali di due fotocellule per leggere sul display HMI la velocità di passaggio di un disco. Avrei capito che col EM posso configurare fino a due ingressi veloci mentre col EL a transistor posso utilizzarli tutti. Giusto? E poi?

Link al commento
Condividi su altri siti


I CP1L-E sono sostanzialmente identici, l'unica differenza tra lo L e gli M è (a parte il numero di I/O digitali) che il primo ha solo uno slot aggiuntivo frontale e 5K step di programma.

Il numero di ingressi veloci è lo stesso per entrambe le serie, 4 contatori veloci, 6 ingressi ad interrupt, e 2 uscite a treno di impulsi.

Link al commento
Condividi su altri siti

Secondo me, non ti servono i contatori veloci, ma gli ingressi a interrupt.

Le varie indicazioni le trovi nel manuale W516, sezione 8-1.

Io metterei la prima in 0.4 (interrupt 0) e la seconda su 0.5 (interrupt 1). Quando si attiva il primo, fai partire un contatore incrementato per esempio ogni centesimo di secondo (magari mediante interrupt a tempo), e appena arriva la seconda, lo stoppi e fai i calcoli sul tempo intercorso.

Se le velocità sono basse e puoi evitare le interruzioni, puoi fare il tutto direttamente nel programma principale con normali timer.

Link al commento
Condividi su altri siti

La TTIM, come tutti i timer, usano l'area T, per cui nella tua istruzione userai T0.

Pertanto, per leggere il valore attuale, userai una MOV T0 D100, dove D100 è la variabile in cui vedrai poi il valore trasferito.

La TTIM lavora a incrementi di 0,1s non è forse un po' lenta? Non è meglio usare la TIMH che lavora a 0,01s? Se non la TIMHH in 0,001s?

Link al commento
Condividi su altri siti

La parte del temporizzatore è ok. Il calcolo non va bene.

Utilizzi una /F cioè una divisione in virgola mobile, ma in D100 gli passi un valore intero, e poi lo dividi per il contenuto del canale 100 (immagino che tu volessi dividere per 100).

Pertanto dovrai avere:

image.png.b67033175f3947247e1a1af9f5f39b51.png

Devi tenere anche presente che D100 e D200 saranno da definire come REAL, e pertanto occuperanno 2 word ciascuna

Link al commento
Condividi su altri siti

Questo è il programma che ho fatto. Mi sono arenato su questa cosa: al dividendo ho un valore T in 0.1s al divisore ho messo un valore fisso +0.1 volendo avere un risultato in m/s come faccio a dare la giusta unità di misura al divisore per rendere omogenea l'operazione? Scusate se probabilmente sto scrivendo delle idiozie ma sto cominciando a metterci le mani ora e ho una formazione da perito meccanico. 

Cattura.JPG

Link al commento
Condividi su altri siti

Come hai scritto, la velocità è espressa in m/s, quindi per averla dovrai dividere la distanza in metri (che supponiamo metterai in D110 in formato REAL) per il tempo in secondi intercorso tra le fotocellule.

Pertanto, dati il tempo in decimi che hai messo in D100 in REAL, dovrai poi aggiungere:

/F D100 +10,0 D105

per avere in D105 il tempo trascorso in secondi (REAL) e poi

/F D110 D105 D200

cioè Distanza (D110) diviso tempo (D105) uguale velocità (D200) in m/s

Link al commento
Condividi su altri siti

  • 3 weeks later...

Buonasera, sono sempre io. Ammetto che non ho avuto molto tempo per lavorare al programma ma sono riuscito a fare questo tentativo che però non funziona. Non capisco come elaborare correttamente il dato del tempo in T0 misurato in 0,1 s. Ricapitolo che voglio calcolare la velocità media fra due fotocellule distanti 1,5 m ed avere il risultato in Km/h. Il calcolo numerico delle operazioni lo fa ma è sbagliato perchè non va bene il tempo. Mi potete risolvere il problema?

Grazie.

 

 

Cattura.thumb.JPG.69ab21e0e4388dbdf6635ae33545843d.JPG

Link al commento
Condividi su altri siti

Buonasera, sono sempre io. Ammetto che non ho avuto molto tempo per lavorare al programma ma sono riuscito a fare questo tentativo che però non funziona. Non capisco come elaborare correttamente il dato del tempo in T0 misurato in 0,1 s. Ricapitolo che voglio calcolare la velocità media fra due fotocellule distanti 1,5 m ed avere il risultato in Km/h. Il calcolo numerico delle operazioni lo fa ma è sbagliato perchè non va bene il tempo. Mi potete risolvere il problema?

Grazie.

 

 

Cattura.thumb.JPG.69ab21e0e4388dbdf6635ae33545843d.JPG

Ho provato ma come vedi dalla simulazione sotto trasforma 98 decimi di sec in +1520,00 ma quando lo moltiplica per 10 viene sempre +1520,00     che cosa sbaglio?

Cattura01.JPG

Link al commento
Condividi su altri siti

Già sei in BCD... Purtroppo il CP1 non ha la TTMIX, allora hai due strade: nelle Proprietà del PLC, spuntare la voce Esegui Temporizzatore/Contatore come Binario, e metti il valore massimo con &8888 (& vuol dire decimale senza segno); oppure converti prima la lettura da BCD in decimale con l'istruzione BIN.

Ora hai #98, che in decimale è 152, che per 10 fa giustamente 1520.

Scusa, non me ne ero accorto prima

Link al commento
Condividi su altri siti

Buonasera, sono sempre io. Ammetto che non ho avuto molto tempo per lavorare al programma ma sono riuscito a fare questo tentativo che però non funziona. Non capisco come elaborare correttamente il dato del tempo in T0 misurato in 0,1 s. Ricapitolo che voglio calcolare la velocità media fra due fotocellule distanti 1,5 m ed avere il risultato in Km/h. Il calcolo numerico delle operazioni lo fa ma è sbagliato perchè non va bene il tempo. Mi potete risolvere il problema?

Grazie.

 

 

Cattura.thumb.JPG.69ab21e0e4388dbdf6635ae33545843d.JPG

Ho provato ma come vedi dalla simulazione sotto trasforma 98 decimi di sec in +1520,00 ma quando lo moltiplica per 10 viene sempre +1520,00     che cosa sbaglio?

 

 

Grazie infinite, Scusami te se sono stato insistente.

Buone feste.

Link al commento
Condividi su altri siti

 

Pertanto, dopo la FLT T0 D100, metti *F D100 +10,0 D100.

Qui ho evidentemente scritto una ca**ata. Devi DIVIDERE per 10, non moltiplicare. Dopodiché, facendo la conversione da BCD a INT, ottieni quanto sotto (e torna):

image.png.8a048981fdb5beb063575fcecc823a18.png

 

Come vedi, in simulazione ho messo direttamente il valore 98 in T0.

 

Ovviamente puoi semplificare in 

image.png.bc1446150212fc7d3acf8098f1c2fc48.png

 

Modificato: da Ctec
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...