rddiego Inserito: 7 maggio 2007 Segnala Share Inserito: 7 maggio 2007 sono di fronte ad un bel problema.devo sincronizzare l'ora su diversi dispositivi della General Electric (MM2,FM2,MIF,MIB,745,469,L90,F650)l'ora è data dai millisecondi trascorsi da una certa data (1 gen 2000 / 1 gen 1996). Questo è un numero intero codificato su 64 bit. Come si possono gestire numeri interi a 64 bit , fare calcoli, con un plc ???Io dovrei anche leggere questo numero dai dispositivi e trovare la data che rappresenta... dovrei fare un po' di calcoli. Ma come visto che il plc gestisce solo massimo numeri interi a 32 bit ?? Link al commento Condividi su altri siti More sharing options...
lucios Inserita: 7 maggio 2007 Segnala Share Inserita: 7 maggio 2007 Ma l'ora di sincronizzazione da dove ti arriva?Non riesci a decodificare e dividere i vari dati (ora,min,sec, ecc.) prima di inviarli ai vari plc?Ciao Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 7 maggio 2007 Segnala Share Inserita: 7 maggio 2007 Ciao,Questo è un numero intero codificato su 64 bit.Dunque, e quindi codificato 8 bytes.Prova a vedere, dovresti avere una corrispondenza del genere: Dword 0 Dword1 X X X X X X X X hour mim sec msec day month yearL'oridne delle word e byte piu' significativo potrebbero variare!Poi, nel PLC indirizza un area di 2 DWord dando un indirizzo come offset dei 64 bits. Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 7 maggio 2007 Autore Segnala Share Inserita: 7 maggio 2007 no savino....l'orodatario delle apparecchiature è un numero intero a 64 bit, non è una data codificata a byte.E' il numero totale di millisecondi trascorsi da una data bene precisa. Nel mio caso ho due date dipendenti dall'apparecchiatura 1 gennaio 2000 oppure 1 gennaio 1996. Io dovrei calcolarmi la data odierna in base a questo numero che mi rappresenta i millisecondi già trascorsi. Io leggendo questo numero devo decodificarlo ed inviarlo ad uno scada, ma evidentemente con un plc non è possibile lavorare con questo formato.. Tra l'altro non ho idea neanche come si possa fare con il PC. Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 7 maggio 2007 Segnala Share Inserita: 7 maggio 2007 (modificato) E' il numero totale di millisecondi trascorsi da una data bene precisa. Nel mio caso ho due date dipendenti dall'apparecchiatura 1 gennaio 2000 oppure 1 gennaio 1996. Io dovrei calcolarmi la data odierna in base a questo numero che mi rappresenta i millisecondi già trascorsi. Io leggendo questo numero devo decodificarlo ed inviarlo ad uno scada, ma evidentemente con un plc non è possibile lavorare con questo formato.. Tra l'altro non ho idea neanche come si possa fare con il PC.Capisco. Dunque, visto che devi inviarlo ad un SCADA, meglio implementare la conversione in un script.... non so .. me vengono in mente delle funzioni per il time managment tipo ctime, time....<time.h>.. se lo SCADA e WinCC forse con lo scripting in C ANSI riusciresti a farlo.Se VB.. allora bisognarebbe vedere se le API windows del Kernel offrono qualcosa Auguri! Modificato: 7 maggio 2007 da Savino Link al commento Condividi su altri siti More sharing options...
prog_jlaw Inserita: 7 maggio 2007 Segnala Share Inserita: 7 maggio 2007 scusate la domanda ma .... non fa prima lo scada ad inviare data ed ora a tutti i dispositivi ? lo scada cosa lo usi a fare ?solitamente negli scada esitono gia le tag di ora,min,sec,gg,mm,yyyy .se e' un problema di sincronizzazione (e non ci sono ragioni particolari per cui la data sorgente NON puo' essere lo scada) chi meglio dello scada puo fare questo , oltretutto al cambio dell'ora legale puoi scatenare un ulteriore evento di aggiornamento.bye Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 8 maggio 2007 Autore Segnala Share Inserita: 8 maggio 2007 non fa prima lo scada ad inviare data ed ora a tutti i dispositivi ? lo scada cosa lo usi a fare ?solitamente negli scada esitono gia le tag di ora,min,sec,gg,mm,yyyy .no, la sincronia la fa un'apparecchiatura (tipo Gorgy), ma quando in una delle apparecchiature sincronizzate accade un evento questo viene registrato sullo scada ma non con la data dello scada ma con quella registrata nell'apparecchiatura al momento dell'evento. Questa data ha il formato detto in precedenza....Vedremo con lo scada che fare... Link al commento Condividi su altri siti More sharing options...
lucios Inserita: 11 maggio 2007 Segnala Share Inserita: 11 maggio 2007 La piattaforma .NET gestisce i long a 64 bit, se riesci ad utilizzare il pc come tramite tra i vari plc potresti leggere i valori, fare gli opportuni calcoli, e reinviarli ai plc interessati. Occorre però masticare un pò di VB.net o C#.Ciao Link al commento Condividi su altri siti More sharing options...
pcontini Inserita: 11 maggio 2007 Segnala Share Inserita: 11 maggio 2007 (modificato) Concordo con lucios. Dal pc puoi leggere sui plc due interi 32bit divisi in parte bassa e alta e poi fare i calcoli, sempre se puoi scrivere un po di codice (che sia C, VB o altro poco importa).Strano però che il dispositvo ti dia un valore a 64bit che poi non può gestire Ciao Modificato: 11 maggio 2007 da pcontini Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 14 maggio 2007 Autore Segnala Share Inserita: 14 maggio 2007 Strano però che il dispositvo ti dia un valore a 64bitproprio così.... e pensa che il dispositivo si sincronizza utilizzando il formato irig-b che è uno standard ed al suo interno se lo converte in quel formato intero a 64 bit per poi metterlo a disposizione in memoria... mah! 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