matrixsellone Inserito: 6 febbraio 2010 Segnala Share Inserito: 6 febbraio 2010 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 More sharing options...
ken Inserita: 6 febbraio 2010 Segnala Share Inserita: 6 febbraio 2010 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 More sharing options...
batta Inserita: 6 febbraio 2010 Segnala Share Inserita: 6 febbraio 2010 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 More sharing options...
matrixsellone Inserita: 9 febbraio 2010 Autore Segnala Share Inserita: 9 febbraio 2010 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 More sharing options...
acquaman Inserita: 11 febbraio 2010 Segnala Share Inserita: 11 febbraio 2010 (modificato) Mentre per le variabili S5Time c'è un modo decente per visualizzare ed inserire le variabili senza dover fare scalature varie? Modificato: 11 febbraio 2010 da acquaman Link al commento Condividi su altri siti More sharing options...
batta Inserita: 11 febbraio 2010 Segnala Share Inserita: 11 febbraio 2010 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 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