ambro00793 Inserito: 5 aprile 2012 Segnala Share Inserito: 5 aprile 2012 ciao a tutti, devo realizzare per la prima volta un software che includa la possibilità di attivare delle uscite a determinati orari; sò che l'argomento è stato trattato molte volte, ed infatti mi sono informato ed ho provato a fare qualche prova, ma purtroppo non sono riuscito, vi spiego cosa ho fatto: p.s. programma tutto in KOP da OB1 ho inserito una sfc1 che in uscita mi trasferisce il risultato in un database con tipo date and time poi tramite una fc5 separo l'ora dalle altre informazioni il dato in uscita da fc5 lo chiamato md10 ora, vedendo altri post online, ho inserito un blocco move per trasferire md10 a mw15 poi ho inserito il confronto da numeri interi a 16 bit tra mw15 e mw20 che imposto da wincc ma il sistema non funziona, in entrata al blocco di comparazione vedo valori che non corrispondono all'uscita del blocco move. cosa ho sbagliato? inoltre in wincc per l'inserimento dell'ora di confronto, volevo chiedere come andrebbe scritta l'ora e i minuti in modo corretto vi ringrazio anticipatamente, cordiali saluti. Andrea Ambrosini Link al commento Condividi su altri siti More sharing options...
valvolina Inserita: 6 aprile 2012 Segnala Share Inserita: 6 aprile 2012 ciao, io quando ho necessità di fare queste cose faccio così - con sfc1 estraggo data e ora dal plc e la ottengo in formato date_and_time il formato date_and_time è fatto da una variabile di 8 byte così composta: byte 0 = anno byte 1 = mese byte 2 = giorno byte 3 = ora byte 4 = minuti byte 5 = secondi byte 6 = Due cifre più significative di MSEC byte 7 = Cifre meno significative di MSEC byte 8 = giorno della settimana quello di cui devi tenere conto è che il formato del dato contenuto in questi byte è BCD a questo punto banalmente puoi comparare i singoli byte che ti interessano esempio in awl il merker m10.0 si deve accendere se l'ora è uguale o maggiore delle 10,30 stabiliamo che il dato date_and_time sia db10.dbd0 U( L db10.dbb3 L B#16#10 >=I) U( L db10.dbb4 L B#16#30 >=I) = M10.0 Per farlo in kop la prima cosa è non si possono comparare i byte in kop quindi dovresti fare degli spostamenti da byte in word dei byte di ore e minuti se poi vuoi fare tutto in decimale, invece che in bcd devi convertire ore e minuti in decimale ( in awl istruzione BTI) ultima cosa se vuoi puoi comparare in un colpo solo ore e minuti trasferendo i relativi byte in una unica word saluti da Valvolina Link al commento Condividi su altri siti More sharing options...
ambro00793 Inserita: 7 aprile 2012 Autore Segnala Share Inserita: 7 aprile 2012 ciao, ti ringrazio per l'aiuto che mi hai dato! alla fine per risolvere questo mio problema ho creato un blocco funzionale solo per gli orologi, e quindi lo messo tutto in awl utilizzando e adattando il tuo codice. mille grazie, ciao. Andrea Ambrosini 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