BuGia Inserito: 28 novembre 2019 Segnala Share Inserito: 28 novembre 2019 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 More sharing options...
Ctec Inserita: 28 novembre 2019 Segnala Share Inserita: 28 novembre 2019 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 More sharing options...
BuGia Inserita: 28 novembre 2019 Autore Segnala Share Inserita: 28 novembre 2019 OK quali sono gli indirizzi che devo utilizzare per le due entrate delle fotocellule? Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 28 novembre 2019 Segnala Share Inserita: 28 novembre 2019 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 More sharing options...
BuGia Inserita: 28 novembre 2019 Autore Segnala Share Inserita: 28 novembre 2019 Ottimo. Eventualmente utilizzando l'istruzione TTIM 0000 #100 dova vado a leggere il valore del tempo contato? Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 28 novembre 2019 Segnala Share Inserita: 28 novembre 2019 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 More sharing options...
BuGia Inserita: 29 novembre 2019 Autore Segnala Share Inserita: 29 novembre 2019 Grazie, sei stato utilissimo. Link al commento Condividi su altri siti More sharing options...
BuGia Inserita: 29 novembre 2019 Autore Segnala Share Inserita: 29 novembre 2019 A parte tutti i parametri delle operazioni da sistemare pensi che possa andare bene o è cervellotico per calcolare la velocità di uscita? Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 30 novembre 2019 Segnala Share Inserita: 30 novembre 2019 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: 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 More sharing options...
BuGia Inserita: 2 dicembre 2019 Autore Segnala Share Inserita: 2 dicembre 2019 Ok Grazie. Link al commento Condividi su altri siti More sharing options...
BuGia Inserita: 3 dicembre 2019 Autore Segnala Share Inserita: 3 dicembre 2019 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. Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 3 dicembre 2019 Segnala Share Inserita: 3 dicembre 2019 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 More sharing options...
BuGia Inserita: 20 dicembre 2019 Autore Segnala Share Inserita: 20 dicembre 2019 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. Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 20 dicembre 2019 Segnala Share Inserita: 20 dicembre 2019 Nel tuo programma, in D100 devi avere il tempo in secondi, non in decimi. Pertanto, dopo la FLT T0 D100, metti *F D100 +10,0 D100. Per il resto deve andare. Link al commento Condividi su altri siti More sharing options...
BuGia Inserita: 20 dicembre 2019 Autore Segnala Share Inserita: 20 dicembre 2019 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. 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? Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 20 dicembre 2019 Segnala Share Inserita: 20 dicembre 2019 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 More sharing options...
BuGia Inserita: 20 dicembre 2019 Autore Segnala Share Inserita: 20 dicembre 2019 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. 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 More sharing options...
Ctec Inserita: 20 dicembre 2019 Segnala Share Inserita: 20 dicembre 2019 (modificato) 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): Come vedi, in simulazione ho messo direttamente il valore 98 in T0. Ovviamente puoi semplificare in Modificato: 20 dicembre 2019 da Ctec 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