Vai al contenuto
PLC Forum


Data Log


barmatic

Messaggi consigliati

Buongiorno a tutti, da qualche tempo sto provando a realizzare un Data Log con S7 1200 e devo ammettere che mi sono impantanato.

Per quanto riguarda le istruzioni dedicate ai data log: Crea, Scrivi, Apri, Chiudi e New File tutto a posto, il "problema " nasce quando

voglio leggere nel data log scaricato un numero con virgola mobile .

Ho provato ad inserire un numero reale nel blocco dati dedicato ma la lettura nel data log viene espressa in modo

"non comprensibile da tutti" : "1.267000E+01" questo è un esempio. Come devo convertire la variabile in modo da leggerla "normalmente"?

Qualcuno si è già impantanato come me oppure sono l'unico ? :wallbash:

Link al commento
Condividi su altri siti


Ciao.

Dovresti per prima cosa leggerti l'aiuto in linea del TIA per capire le rappresentazioni dei numeri in virgola mobile utilizzate .

Quando viene registrato il dato nel datalogger la rappresentazione pare essere di tipo IEEE754 .

Qui trovi un documento che spiega tale rappresentazione .

bigalex :blink:

Link al commento
Condividi su altri siti

Su Wikipedia trovi anche l'algoritmo per il calcolo che da IEEE754 ti consente di rappresentare il numero in virgola mobile con la classica rappresentazione "numero.decimali".

Google comunque è sempre disponibile a rispondere alle domande che vuoi fargli ......

bigalex :blink:

Link al commento
Condividi su altri siti

Accidenti la cosa appare un pò troppo scientifica per le mie modeste conoscenze, tuttavia provo a dare una occhiata, quindi al momento ringrazio bigalex

ed eventualmente ci risentiamo in un secondo tempo .

Link al commento
Condividi su altri siti

Io per acquisire numeri in virgola mobile dal file Log, ho utilizzato Microsot Access.

Per chi lo sà usare, basta semplicemente importare il file (impostando però il tipo dati dei vari campi).

Si otterrà così una tabella di dati, che la si potrà a sua volta esportare in formato XLS.

Non ho avuto modo di provare ad importare il file direttamente con EXCEL,

ma sicuramente si potrà fare la stessa cosa.

Ci saranno sicuramente altri modi, ma non ho avuto modo di fare altre prove.

Link al commento
Condividi su altri siti

X amed, seguendo il tuo suggerimento è sparita la virgola ed il numero in uscita viene arrotondato al numero intero superiore od inferiore a seconda se i decimali

dopo la virgola son > o< di 5. Non è proprio l risultato che avrei voluto ottenere.

Invece davide-SB dice bene per l'importazione di dati con Acess o Excel, che però avrebbe bisogno di una approfondita conoscenza e dimestichezza di questi ultimi

strumenti di Microsoft Office.

Ma perchè TIA non scrive nel datalog il valore REAL che mi fa leggere, così tale e quale ?

X bigalex: faccio tesoro dei tuoi suggerimenti , però ritengo che siano una bella "punturina" per chi come me ha una competenza più pratica che scientifica.

Link al commento
Condividi su altri siti

Ma cosa ci devi fare con questi valori ?

Se spieghi meglio la destinazione del loro utilizzo forse possiamo aiutarti meglio .

Comunque guarda questo video su Youtube .

Questa è una nota di Microsoft sulla tratazione dei numeri in vorgola mobile in Excel .

bigalex :blink:

Link al commento
Condividi su altri siti

Ciao bigalex, bella domanda! Al momento vorrei provare ad importarli in un foglio di lavoro Excel per vedere se, con qualche trappola tipo "macro" riesco ad importare

i dati in maniera automatica ed in un secondo tempo archiviarli in server tipo claud o similari

Link al commento
Condividi su altri siti

Il tuo log è in formato CSV ?

Se si ne puoi postare uno , giusto per vedere come è formattato il file ?

Ho appena fatto una prova in Excel .

Se formatti la cella "Scientifico" il formato è IEEE 754 e cioè come viene registrato nel log , se la cella la formatti "Numero" il formato è quello classico "numero.decimali" .

Non vedo il problema.

Se il log file è in formato CSV ti basta aprire il file e formattare le celle con i valori in IEEE754 in formato "Numero".

bigalex :blink:

Modificato: da bigalex
Link al commento
Condividi su altri siti

Ciao bigalex, il "problema " sta nel fatto che se si formatta la cella in "Numero" non riesco a visualizzare la virgola nella stessa posizione che la mette TIA,

comunque più tardi ti posto il CSV . Poi una soluzione tampone si trova sempre , però la virgola nel punto giusto e più elegante.

Oppure c'è sempre la possibilità di ciucciarsi gli spiegoni scentifici che suggerivi, però alla mia età non tutti riescono a capire in breve tempo.

Link al commento
Condividi su altri siti

Cosa vuol dire la virgola nel punto giusto è più elegante ? :wacko:

La virgola è nel punto giusto altrimenti che conversione hai impostato ?

Poi ricorda che il numero di decimali da mostrare nella cella impostata come "Numero" lo decidi tu.

bigalex :blink:

Link al commento
Condividi su altri siti

Ciao bigalex , "la virgola nel punto giusto è più elegante" effettivamente è una espressione impropria per l'argomento in questione,

porta pazienza voleva essere una espressione "colorita", ti prometto che userò un linguaggio più formale.

Il CSV è il seguente : Record,Date,UTC Time, Var1, Var2

11, 8/30/2014, 9:53:01, 12594, 0.000000E+00
12, 8/30/2014,15:10:32, 0, 0.000000E+00
13, 8/30/2014,15:10:34, 0, 0.000000E+00
14, 8/30/2014,15:10:36, 0, 0.000000E+00
15, 8/30/2014,15:10:38, 0, 0.000000E+00
16, 8/30/2014,15:10:40, 0, 0.000000E+00
17, 8/30/2014,15:10:42, 0, 0.000000E+00
8, 1/01/1970,10:19:03, 0, 0.000000E+00
9, 1/01/1970,10:25:11, 654, 1.267000E+01
10, 1/01/1970,10:39:57, 12594, 0.000000E+00
Come ti ho anticipato la formatttazione della cella in numero di " 1.267000E+01" è 126700000,00 , secondo excel posso spostare la virgola solo a dx, però il valore letto in TIA è 12,67, inserendo una funzione appropriata in questo caso una divisione si dovrebbe ragginge lo scopo di
visualizzare il valore come lo visualizza TIA. Sono convinto che TIA e il CSV debbano avere la stessa visualizzazione, o no?
Ho provato ad allegare il file però il forum non lo permette .
Link al commento
Condividi su altri siti

Stò provando anche io ad importare un file log con Excel, ma non riesco.

I numeri reali in virgola mobile, mi escono con un esponenziale maggiore di 7!?

Cioè per esempio, se in origine il numero di un campo è 2.350000E+01, excel me lo importa come 2.350000E+07 (importato come campo generico).

Se lo importo invece come campo di testo, me lo estrae corretto e lo visualizzo 2.350000E+01, ma poi non è possibile modificarne il formato di visualizzazione in decimale,

ad esempio per visualizzarlo in numero 999,99, (poichè è appunto è stato estratto in formato testo).

Queste prove le ho fatte con Excel 2000 e Excel 203.

Ho provato pure con OpenOffice 2.4, ma il numero me lo importa solo come testo, per cui lo vedo corretto, ma non posso cambiarne il formato numerico.

Non capisco perchè solo con MS Acces sia riuscito "facilmente" ad importare i campi in virgola mobile.

Per chi vuole provare... allego un file LOG generato da un S7 1200. :smile:

LogDati1200.txt

Link al commento
Condividi su altri siti

Guarda Barmatic che stai commettendo qualche errore di formattazione.

Io ho provato in Excel e tutto funziona correttamente.

Ho provato a dichiarare una cella (A1) con formattazione scientifica ed un altra (contenente la formula B1=A1) con formattazione numerica ed editando la cella A1 in formato ieee754 , la cella B1 assume un valore coerente e corretto .

Quindi è possibile che tu stia commettendo qualche errore in fase di importazione del file CSV o di formattazione delle celle.

bigalex :blink:

Link al commento
Condividi su altri siti

Ciao bigalex, quando hai tempo e voglia prova ad importare un file csv da TIA in excel con una variabile dichiarata Real.

Credo che non sia come editare in formato ieee754 . Fermo restando il fatto che convertire in numero la cella sia un passaggio fondamentale ma non risolutivo, bisogna inserire una altra funzione. e comunque si raggiunge lo scopo.

Però ribadisco in maniera provocatoria:

Ma perchè TIA non scrive nel datalog il valore REAL che mi fa leggere, così tale e quale ?

Link al commento
Condividi su altri siti

Guarda barmatic fai come Davide ed inserisci il tuo file di log.

Io con quel file sono riuscito a fare quello che chiedi sia con Excel che con OpenOffice (con un pò di difficoltà).

Per Davide (OpenOffice) :

Per prima cosa rinomina il file con estensione .CSV.

Prova a mettere una nuova colonna accanto alla colonna in formato ieee754 dove andrai a visualizzare il valore in formato "numero.decimali".

Nella casella che vuoi formattare per la visualizzazione inserisci la seguente formula.

=COMP.PARTE.REALE(H2) (in questo caso questa è la formattazione della cella I2 come numero con l'aggiunta della formula)

la funzione COM.PARTE.REALE è in dotazione standard di OpenOffice che ti consiglio di aggiornare alla 4.1 o 4.2 (non ricordo quale sia l'ultima).

Così facendo accanto ad ogni valore in formato ieee754 avrai il valore corrispondente con la classica notazione"numero.decimali".

Al momento con OpenOffice non ho trovato niente di più immediato.

Poi magari chi lo conosce meglio può darci qualche suggerimento.

Non ho mai usato le Macro ma credo che chi ne ha conoscenza possa manipolare i dati senza problema.

bigalex :blink:

Modificato: da bigalex
Link al commento
Condividi su altri siti

Ciao bigalex, non capisco da dove derivi il problema, ma sia con Excel 200 e 2003 sia con OpenOffice 2,4 ed un'altra più recente, la conversione da ieee754 a numero decimale non riesce.

Come da tuo consiglio, ho provato in excel ad aggiugere una nuova colonna, dove ho inserito la formula per copiare il valore, poi ho modificato il formato cella in numero, ed ho così visualizzato il numero in decimale.

Però, resta il fatto che come detto in precedenza, tutti i numeri ieee754, me li estrae aumenati di 1.000.000 volte!

Cioè l'esponenziale da +1, mi viene importato a +7.

Ho perovato a cambiare dierse opzioni di importazione, ma con risultati uguali o peggiori.

Con openOffice, invece i numeri ieee754 vengono importati correttamente, ma non riesce la conversione in decimale.

Ho ceato la nuova colonna, ho inserito la funzione COM.PARTE.REALE (cella da convertire), mi restituisce l'errore Err: 502 !

Sono perplesso.

Link al commento
Condividi su altri siti

Ciao a tutti .

Dopo una mini ricerca sul mitico Google ho trovato proprio quello che fa al caso vostro.

La Siemens ha creato un tool apposito per ovviare ai problemi di conversione del formato REAL.

Datalog_Conversion_Tool. :thumb_yello:

bigalex :blink:

P.S. : Non avevo fatto una ricerca mirata a questo argomento in precedenza perchè mi ero fermato al formato IEEE754.

Modificato: da bigalex
Link al commento
Condividi su altri siti

Ciao bigalex , i miei più sentiti ringraziamenti per la meticolosa ricerca e per la tenacia dimostrata nel voler aiutare i membri del forum.

Bingo con questa macro credo di avere risolto il mio problema

Cordiali saluti

Link al commento
Condividi su altri siti

Bigalex, scusa per l'iterferenza introdotta sulla discussione, a causata dai miei problemi di conversine.
Anche io ora, riesco ad importare il LOG, anche con Excel 2000.
Il mio errore, è stato di non seguire la procedura corretta che hai spiegato.
La mia abitudine di importare file.TXT con Access, mi ha condotto a modificarne l'estansione in TXT,
ed utilizzarlo anchesso come file da importare con Excel, pensando che, in fondo, fosse la stessa cosa di mantenere il file in *.CSV.

Ma evidentemete non è la stessa cosa, qualcosa cambia, non sò cosa, ma mi adeguo.
Quindi importando il filelog con estensione *.CSV il numeri reali che importo saranno corretti.
Per visualizzare poi i variabili in decimale, mi è bastato modificare semplicemente il formato cella in numerico.
Spero che il mio errore possa essee utile anche ad altri.
Saluti e ringraziamenti a tutti.

Link al commento
Condividi su altri siti

Sì Bigalex, è appunto utilizzando il Tool che l'importazione mi è riuscita senza errori.

Se invece importo manualmente, nonostante abbia provato diverse impostazioni, non c'è mado di evitare l'errore dei valori ottenuti, aumentati di 1.000.000!

Non capisco, comunque mi và benissimo anche l'apposito Tool, che funziona bane.

Ciao

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