Vai al contenuto
PLC Forum


Numero A 64 Bit - sincronizzazione ora


rddiego

Messaggi consigliati

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


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

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          year

L'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

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

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 :P forse con lo scripting in C ANSI riusciresti a farlo.

Se VB.. allora bisognarebbe vedere se le API windows del Kernel offrono qualcosa :rolleyes:

Auguri!

Modificato: da Savino
Link al commento
Condividi su altri siti

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

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

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

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 :blink:

Ciao

Modificato: da pcontini
Link al commento
Condividi su altri siti

Strano però che il dispositvo ti dia un valore a 64bit

proprio 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

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