Vai al contenuto
PLC Forum


Conversione Time To Int


matrixsellone

Messaggi consigliati

Ciao a tutti,

avrei la necessità di convertire una variabile di tipo TIME (elaborata in PLC fail safe) in una di un altro tipo, non per forza integer, ma che il sistema di supervisione WINCC possa leggere.

Il massimo sarebbe avere i vari campi del TIME in alterttanti BYTE in modo da visualizzare ora, minuti secondi e millesimi i variabili diverse.

Ho cercato in rete e nell'. siemens ma le uniche conversioni per questo formato riguardano il tipo S5Time che conta al massimo fino a 990 minuti; purtroppo il mio contatore TIME conta 24h.

Qualcuno sa come aiutarmi?

Grazie mille per la disponibilità.

Link al commento
Condividi su altri siti


ora non ho S7 sotto mano ma forse, nelle librerie, ci sono degli fc per fare diverse conversioni. Magari trovi qualcosa che fa al caso tuo. Se non è così altra strada sarebbe quella di analizzare la variabile TIME e scomporla negli elementi di cui è composta arrivando poi alla variabile int

Link al commento
Condividi su altri siti

Io non ho capito se il problema è leggere/scrivere da Wincc il tempo in formato TIME, o se il fatto che il formato S5Time sia limitato ad un massimo di 9990 secondi (e non 990 minuti).

Diciamo subito che non si deve confondere il formato TIME con il formato S5Time, che sono completamente diversi.

Il formato TIME non è altro che una DINT con il tempo in millisecondi. Quindi, non vedo nessun problema per la lettura.

Per la visualizzazione diretta in Wincc in hh.mm.ss ti basta trasferire questo valore in una variabile TOD (che è sempre una DINT con tempo in ms) oppure, anche se nel PLC la variabile è dichiarata come TIME, nell'OP la dichiari come TOD. In questo caso perdi il collegamento simbolico, ma eviti di dover utilizzare una variabile di appoggio.

La visualizzazione sull'OP risulta corretta fino a 23h 59m 59s.

Se questo non ti basta, puoi sempre partire dalla variabile TIME, dividere per 1000 per avere il tempo in secondi, poi dividi per 3600 per avere le ore; prendi il resto della divisione (vedi istruzione MOD) e lo dividi per 60 per ottenere i minuti; prendi nuovamente il resto, e sono i secondi.

Link al commento
Condividi su altri siti

Scusami .. hai ragione sulla questione tempo massimo temporizzatore.

Ho utilizzato il calcolo che mi hai fornito ed ha funzionato perfettamente.

Grazie mille per l'aiuto.

Link al commento
Condividi su altri siti

Mentre per le variabili S5Time c'è un modo decente per visualizzare ed inserire le variabili senza dover fare scalature varie?

Modificato: da acquaman
Link al commento
Condividi su altri siti

Mentre per le variabili S5Time c'è un modo decente per visualizzare ed inserire le variabili senza dover fare scalature varie?

Certo.

Se la variabile è dichiarata, appunto, S5Time, in Wincc si legge/scrive il valore corrispondente in millisecondi.

Unica cosa che rimane da fare in Wincc è la scalatura, in modo da passare il dato al PLC in ms.

E' Wincc che si occupa della conversione nel formato corretto, anche del fatto che il valore in ms occupa una DINT, mentre nel PLC il valore è in formato S5Time, quindi occupa soli 16 bit.

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