TIA Zeitstempel im csv-Archiv eines Comfort-Panels

Januar

Level-2
Beiträge
646
Reaktionspunkte
268
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Ich hab heute eine Archivierung mit einem Comfort-Panel analysiert. Neben Name, Zeitstempel, Wert, Gültigkeit gibt's noch einen Wert "Time_ms". Zeigt sehr wahrscheinlich die verstrichene Zeit seit einem festgelegten Punkt an.
Weiß jemand, welcher Punkt das ist?

GErät ist ein TP700 Comfort, Runtime 14.

Beispiel:
"VarName";"TimeString";"VarValue";"Validity";"Time_ms"
"Value10";"30.08.2017 13:34:49";320;1;42977565839,1898


Liebe Grüße
 
Konvertieren von Datum/Uhrzeit ist nicht einfach weil das Format je nach Regionaleinstellungen des Windows verschieden ist.
Deswegen bastelt man sich da besser selber was oder nutzt die VBA-Funktion DatePart

In dem csv-Archiv ist der Zeitstempel aber auch formatunabhängig als numerischer Wert in der letzten Spalte "Time_ms" enthalten
- zunächst Time_ms / 1.000.000 teilen, ergibt z.B. 41774,944663 = 15.05.2014 22:40:19
- der ganzzahlige Teil vor dem Komma ist das Datum: die Anzahl Tage seit dem 31.12.1899
- der gebrochene Teil nach dem Komma ist die Uhrzeit: 0,0 ... 1,0 entspricht 0:00:00 ... 24:00:00

Code:
Dim Dummy(), DT(), TimeS, Datum

  Line Input #Datei, ReadLine
  [COLOR="#008000"]'ergibt z.B.: "DB 103 Stomverbrauch.Aktuell_Watt_KW_H;15.05.2014 22:40;644;1;41774944663"[/COLOR]

  If ReadLine <> "" Then         [COLOR="#008000"]'Leere Zeilen nicht auswerten[/COLOR]
    If Asc(ReadLine) <> 36 Then  [COLOR="#008000"]'Zeilen mit $ am Anfang nicht auswerten[/COLOR]
      Dummy = Split(ReadLine, ";")
      [COLOR="#008000"]' das ergibt: 
      ' Dummy(0): "DB 103 Stomverbrauch.Aktuell_Watt_KW_H"  'VarName
      ' Dummy(1): "15.05.2014 22:40"                        'TimeString
      ' Dummy(2): "644"                                     'VarValue
      ' Dummy(3): "1"                                       'Validity
      ' Dummy(4): "41774944663"                             'Time_ms[/COLOR]

      [COLOR="#008000"]'TimeString in Datum und Uhrzeit zerlegen[/COLOR]
      DT = Split(Dummy(1) & " ", " ")
      [COLOR="#008000"]'das ergibt:
      ' DT(0): "15.05.2014"
      ' DT(1): "22:40"
      ' DT(2): ""[/COLOR]
      Tabelle1.Cells(zeile, 3) = DT(0) [COLOR="#008000"]'Datum[/COLOR]
      Tabelle1.Cells(zeile, 4) = DT(1) [COLOR="#008000"]'Uhrzeit[/COLOR]

      [COLOR="#008000"]'ODER unabhängig von den Regionaleinstellungen Time_ms in Datum und Uhrzeit zerlegen:[/COLOR]
      TimeS = Val(Dummy(4)) / 1000000           [COLOR="#008000"]'Time_ms / 1.000.000[/COLOR]
      Datum = Int(TimeS)                        [COLOR="#008000"]'Datum ist der Teil vor dem Komma, Uhrzeit der Teil nach dem Komma[/COLOR]
      Tabelle1.Cells(zeile, 5) = Datum          [COLOR="#008000"]'Datum   -> Zelle als Datum formatieren[/COLOR]
      Tabelle1.Cells(zeile, 6) = TimeS - Datum  [COLOR="#008000"]'Uhrzeit -> Zelle als Uhrzeit formatieren[/COLOR]

Harald
. .
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier dazu der passende Eintrag aus der Online-Hilfe. Müsste so auch im TIA stehen.
https://support.industry.siemens.com/cs/mdm/109096785?c=43358331019&lc=de-AT

Online-Hilfe schrieb:
Umrechnung des Dezimalwerts des Zeitstempels

Wenn Sie den Wert des Zeitstempels mit einem anderen Programm weiterverarbeiten, gehen Sie folgendermaßen vor:

  1. Dividieren Sie Time_ms durch 1.000.000.Beispiel: 37986476928 : 1.000.000 = 37986,476928
  2. Der ganzzahlige Anteil (37986) ist das Datum ab dem 31.12.1899 berechnet.In Excel rechnen Sie jetzt den Zeitstempel in Tage um. Weisen Sie dazu der Zelle, die den Zeitstempel enthält, ein entsprechendes Format aus der Gruppe "Datum" zu.
    Ergebnis: 37986 ergibt den 31.12.2003
  3. Der Wert nach dem Komma (0,476928 ) ergibt die Uhrzeit:
    • - Multiplizieren des Werts (0,476928 ) mit 24 ergibt die Stunden (11,446272).
    • - Multiplizieren des Rests (0,446272) mit 60 ergibt die Minuten (26,77632)
    • - Multiplizieren des Rests (0,77632) mit 60 ergibt die Sekunden (46,5792)
    Ergebnis 11:26:46,579
    Diese Umrechnung wird z. B. von Microsoft Excel unterstützt.
 
Moin Ronin,

laut Siemens sollte es einer 11-Stellige Zahl sein, mit Tia v16 habe ich aber folgendes:

45217545279.9768

1698681682007.png1698681731502.png

Weiß du wie ich es umrechnen kann?
 
laut Siemens sollte es einer 11-Stellige Zahl sein, mit Tia v16 habe ich aber folgendes:

45217545279.9768
Die oben gezeigte Zahl hat 11 VorkommaStellen und 4 NachkommaStellen
Man kann sich also vortrefflich streiten, ob Siemens die Wahrheit sagt oder nicht.

Weiß du wie ich es umrechnen kann?
Das wird doch in Ronins Link in #3 und auch schon in Haralds Beitrag #2 von Siemens beschrieben.
Zunächst mal durch 1 Million dividieren, um die Anzahl Tage zu erhalten.
Damit ist aber auch schon gesagt, dass Time_ms N I C H T "Zeit in MilliSekunden" bedeuten kann, sondern "Zeit in MikroTagen" (µd)!
Vermutlich ist mit 'Time_ms' gemeint "Zeit à la MicroSoft", weil dort - zumindest in Excel - sich die ZeitAngaben mit Datum in der Einheit µd verstehen.
 
Zuletzt bearbeitet:
Zurück
Oben