WinCC Variablen DATE und TIME in .CSV korrekt darstellen

tarzipan7

Level-2
Beiträge
101
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich sollte Variablen aus einem DB mit den Formaten DATE und TIME in eine Datei exportieren.
Habe ein Beispielskript genommen von Siemens und das funktioniert auch so, aber die DATE und TIME Variablen werden als Zahl in der Datei angezeigt.
Muss ich diese erst in einen String wandeln, und wie kann ich das machen?

arrTags(1) = "StaDataExport_AnaA.actTm0" : diese sind Typ TIME
arrTags(2) = "StaDataExport_AnaA.actDt0" : diese sind Typ DATE

Code:
Option Explicit
Function action

'Das Skript liest die im Datenbaustein liegenden Prozessdaten ein 
'und gibt sie formatiert In einer CSV Datei aus

'**************************************************************************************************************
'Variablen deklarieren
Dim fso
Dim objFile, objTag  
Dim objFileName
Dim i,j, typ, laenge
Dim strPathFolder, strSampleLine, strFileName, strTimeDate, strLine
Dim dtTimeDate, dtYear, dtMonth, dtDay, dtHour, dtMin, dtSec
Dim arrTags(99)
Dim arrSTags(99)
Dim tagName, tagValue, tagFilename

'******************************************************************************************************
If HMIRuntime.Tags("bTest").Read = 1 Then
    arrTags(0) = "StaDataExport_AnaA.actSta0"
    arrTags(1) = "StaDataExport_AnaA.actTm0"
    arrTags(2) = "StaDataExport_AnaA.actDt0"
    arrTags(3) = "StaDataExport_AnaA.actSta1"
    arrTags(4) = "StaDataExport_AnaA.actTm1"
    arrTags(5) = "StaDataExport_AnaA.actDt1"
    arrTags(6) = "StaDataExport_AnaA.actSta2"
    arrTags(7) = "StaDataExport_AnaA.actTm2"
    arrTags(8) = "StaDataExport_AnaA.actDt2"
    arrTags(9) = "StaDataExport_AnaA.actSta3"
    arrTags(10) = "StaDataExport_AnaA.actTm3"
    arrTags(11) = "StaDataExport_AnaA.actDt3"
    arrTags(12) = "StaDataExport_AnaA.actSta4"
    arrTags(13) = "StaDataExport_AnaA.actTm4"
    arrTags(14) = "StaDataExport_AnaA.actDt4"
    arrTags(15) = "StaDataExport_AnaA.actSta5"
    arrTags(16) = "StaDataExport_AnaA.actTm5"
    arrTags(17) = "StaDataExport_AnaA.actDt5"
    arrTags(18) = "StaDataExport_AnaA.actSta6"
    arrTags(19) = "StaDataExport_AnaA.actTm6"
    arrTags(20) = "StaDataExport_AnaA.actDt6"
    arrTags(21) = "StaDataExport_AnaA.actSta7"
    arrTags(22) = "StaDataExport_AnaA.actTm7"
    arrTags(23) = "StaDataExport_AnaA.actDt7"
    arrTags(24) = "StaDataExport_AnaA.actSta8"
    arrTags(25) = "StaDataExport_AnaA.actTm8"
    arrTags(26) = "StaDataExport_AnaA.actDt8"
    arrTags(27) = "StaDataExport_AnaA.actSta9"
    arrTags(28) = "StaDataExport_AnaA.actTm9"
    arrTags(29) = "StaDataExport_AnaA.actDt9"
    arrTags(30) = "StaDataExport_AnaA.actSta10"
    arrTags(31) = "StaDataExport_AnaA.actTm10"
    arrTags(32) = "StaDataExport_AnaA.actDt10"
    arrTags(33) = "StaDataExport_AnaA.actSta11"
    arrTags(34) = "StaDataExport_AnaA.actTm11"
    arrTags(35) = "StaDataExport_AnaA.actDt11"
    arrTags(36) = "StaDataExport_AnaA.CONC11"
    arrTags(37) = "StaDataExport_AnaA.CONC12"
    arrTags(38) = "StaDataExport_AnaA.CONC13"
    arrTags(39) = "StaDataExport_AnaA.CONC14"
    arrTags(40) = "StaDataExport_AnaA.CONC15"
    arrTags(41) = "StaDataExport_AnaA.CONC16"
    arrTags(42) = "StaDataExport_AnaA.CONC17"
    arrTags(43) = "StaDataExport_AnaA.CONC18"
    arrTags(44) = "StaDataExport_AnaA.CONC21"
    arrTags(45) = "StaDataExport_AnaA.CONC22"
    arrTags(46) = "StaDataExport_AnaA.CONC23"
    arrTags(47) = "StaDataExport_AnaA.CONC24"
    arrTags(48) = "StaDataExport_AnaA.CONC25"
    arrTags(49) = "StaDataExport_AnaA.CONC26"
    arrTags(50) = "StaDataExport_AnaA.CONC27"
    arrTags(51) = "StaDataExport_AnaA.CONC28"
    
    strPathFolder = "C:\Ana_Data\" 
    
    dtTimeDate = Now
    strTimeDate = Year(dtTimeDate) & Right("0" & Month(dtTimeDate),2) & Right("0" & Day(dtTimeDate),2) _
                    & Right("0" & Hour(dtTimeDate),2) & Right("0" & Minute(dtTimeDate),2) _
                    & Right("0" & Second(dtTimeDate),2) 
        
    Set tagFilename = HMIRuntime.Tags("SampleLine")
    strSampleLine = tagFilename.Read
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'Verzeichnis erzeugen falls noch nicht vorhanden
    If fso.FolderExists(strPathFolder) = False Then
        fso.CreateFolder(strPathFolder)    
    End If
    'for control
    'HMIRuntime.Trace("VBS_control: " & strPathFolder & vbCrLf)
    
    strFileName = strPathFolder & "_" & strTimeDate & "_" & strSampleLine & ".csv"
    'for control
    HMIRuntime.Trace("VBS_control: " & strFileName & vbCrLf)
    
    Set objFile = fso.CreateTextFile(strFileName,True)
    
    For i=0 To 51
        Set objTag = HMIRuntime.Tags(arrTags(i))
        strLine = arrTags(i) & ";" & objTag.read
        objFile.WriteLine strLine

        'for control
        'HMIRuntime.Trace(strLine & vbCrLf)
    Next
    objFile.Close
    
    HMIRuntime.Tags("bTest").Write(0)
    
End If
 
Soll in der CSV das als String so nach der Art hh:mm:ss für die Zeit und YYY.MM.TT stehen oder soll das dann in Excel richtig dargestellt werden?


Wenn in Excel, dann probier einfach mal die Zellen als Datum Bzw. Zeit zu formatieren.


Wenn es als String drin stehen soll, dann muss du das im Script machen.

Ich hab gerade so was ähnliches gemacht, hab dazu mal erst Datum und Zeit zerlegt und in Tags geschrieben (weil ich die sowieso noch wo anders brauch):

Code:
Option Explicit
Function action
Dim mDatum_Zeit
Dim Datum_Zeit
Dim Jahr
Dim Monat
Dim Tag
Dim Stunde
Dim Minuten
Datum_Zeit = Now
Set mDatum_Zeit = HMIRuntime.Tags("iDatum_Zeit")
mDatum_Zeit.Read
mDatum_Zeit.Value = Datum_Zeit
mDatum_Zeit.Write
Set Jahr = HMIRuntime.Tags("iJahr")
Jahr.Read
Jahr.Value = Year(Now)
Jahr.Write
Set Monat = HMIRuntime.Tags("iMonat")
Monat.Read
Monat.Value = Month(Now)
Monat.Write
Set Tag = HMIRuntime.Tags("iTag")
Tag.Read
Tag.Value = Day(Now)
Tag.Write
Set Stunde = HMIRuntime.Tags("iStunde")
Stunde.Read
Stunde.Value = Hour(Now)
Stunde.Write
Set Minuten = HMIRuntime.Tags("iMinute")
Minuten.Read
Minuten.Value = Minute(Now)
Minuten.Write
'HMIRuntime.Trace "OK geschrieben " & Datum_Zeit & "  " & vbCrLf  'für testzwecke

End Function

Dann hab ich die ins CSV gepackt (bei mir in separate Spalten, da musst du ev. die Strings zusammenfassen):

Code:
#include "apdefap.h"
int gscAction( void )
{

// WINCC:TAGNAME_SECTION_START
#define TAGDATEINAME "Filename_Logfile_Durchfluesse"
#define TAG01 "iDatum_Zeit"
#define TAG02 "iJahr"
#define TAG03 "iMonat"
#define TAG04 "iTag"
#define TAG05 "iStunde"
#define TAG06 "iMinute"
#define TAG07 "WF_Gaisbach_Q_Restwasser"
#define TAG08 "WF_Gaisbach_Q_Restwasser"
#define TAG09 "WF_Gaisbach_Q_Restwasser"
#define TAG10 "WF_Gaisbach_Q_Restwasser"
#define TAG11 "WF_Gaisbach_Q_Restwasser"
#define TAG12 "WF_Gaisbach_Q_Restwasser"
#define TAG13 "WF_Beereben_Q_Restwasser"
#define TAG14 "WF_Karbach_Q_Restwasser"
#define TAG15 "WF_Gaisbach_Q_Restwasser"
// WINCC:TAGNAME_SECTION_END
double val[15];    //Anzahl anpassen!
double iMinute;
char* pDateiname;
long int size;
BOOL ok;
FILE* pFile;
SetTagChar("Filename_Logfile_Durchfluesse","d:\\durchfluesse.csv"); //Return-Type: BOOL 
 
iMinute = GetTagDouble("iMinute"); //Return-Type: double 
if (iMinute == 0 || iMinute == 15 || iMinute == 30 || iMinute == 45 ) //soll nur bei ganzer 1/4 Stunde das ausführen
{
ok = GetTagMultiWait("%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f", 
  TAG01, &val[0],
  TAG02, &val[1],
  TAG03, &val[2],
  TAG04, &val[3],
  TAG05, &val[4],
  TAG06, &val[5],
  TAG07, &val[6],
  TAG08, &val[7],
  TAG09, &val[8],
  TAG10, &val[9],
  TAG11, &val[10],
  TAG12, &val[11],
  TAG13, &val[12],
  TAG14, &val[13],
  TAG15, &val[14]
);
// ok wertet nicht aus ob die Variablen wirklich aus der SPS gelesen werden konnte, sondern nur ob die Funktion ausgeführt werden konnte
if (!ok) {
  printf("Fehler: GetTagMultiWait Aufruf war nicht erfolgreich!\n");
} else {
  
// Datei verarbeiten
  pDateiname = GetTagChar(TAGDATEINAME);
  if (pDateiname) {
    pFile = fopen(pDateiname, "a");
    if (pFile) {
      fseek(pFile, 0, SEEK_END);
      size = ftell(pFile);
      
      // Wenn Dateigroesse 0, dann Header schreiben
      if (size == 0) {
        fprintf(pFile, "%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s;%s\n",
          TAG01, TAG02, TAG03, TAG04, TAG05, TAG06, TAG07, TAG08,
          TAG09, TAG10, TAG11, TAG12, TAG13, TAG14, TAG15);
      }
      fprintf(pFile, "%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f\n",
          val[0], val[1], val[2], val[3], val[4], val[5], val[6], val[7],
          val[8], val[9], val[10], val[11], val[12], val[13], val[14]);
      fclose(pFile);
      printf("Erfolg: Die Daten wurden in Datei '%s' geschrieben\n", pDateiname);
    } else {
      printf("Fehler: Die Datei '%s' konnte nicht geoeffnet werden!\n", pDateiname);
    }
  } else {
    printf("Fehler: Dateiname konnte mit GetTagChar nicht gelesen werden!\n");
  }
}
}
else {
printf("keine volle 1/4 Stunde \n");
}
 
return 0; 
}

Da ist noch einiges drin was du nicht brauchst, es ging um folgendes Thema bei mir: Tags in CSV schreiben
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
' Das Skript liest die im Datenbaustein liegenden Prozessdaten ein 
' und gibt sie [B]formatiert[/B] In einer CSV Datei aus
Dim strTimeDate
' ...
    strTimeDate = Format(Now, "YYYY-MM-DD hh:mm:ss") ' Datum und Zeit werden hier - aber nicht aus dem DB - eingelesen
'
' oder
    strTimeDate = Format(Now, "YYYY-MM-DD_hh-mm-ss") ' wenn Ergebnis in Ordner- oder DateiName verwendet werden soll und keinen DoppelPunkt enthalten darf und kein Leerzeichen enthalten sollte
'
' oder
    strTimeDate = Format(Now, "YYYYMMDDhhmmss") ' wenn's unbedingt platzsparend und unlesbar (ohne Trennzeichen) sein soll
' ...
Es kann sein, dass es die Funktion 'Format' in VBS nicht gibt - in VBA funktioniert das.
CSV-Dateien sind TextDateien und deshalb würde ich dort eine "lesbare" Variante erwarten, die man nicht erst nach Excel-Manier entschlüsseln muss.

Edit:
Ich fürchte, ich habe mich durch Deinen Code irritieren lassen.
Wie kann man in VB aus "StaDataExport_AnaA.actDt0" (INT?) Jahr, Monat und Tag und aus "StaDataExport_AnaA.actTm0" (DINT?) (Tage,) Stunden, Minuten und Sekunden "extrahieren" bzw. die Werte in VB umrechnen?
Ich vermute
- beim Datum Konstante addieren, um von der S7-Basis 1990 auf die VB-Basis 1900 zu kommen, ohne Jahr und Monat und Tag zu extrahieren?
- bei der Zeit 't / 86.400.000' rechnen, um von S7-MilliSekunden auf VB-"Tagstel" zukommen, ohne (Tage,) Stunden, Minuten, Sekunden zu extrahieren?

Mit extrahierten "EinzelWerten" könnte man
strTimeDate = Format(DateSerial(Jahr, Monat, Tag) + TimeSerial(Stunden, Minuten, Sekunden), "YYYY-MM-DD hh:mm:ss")
' oder
strTimeDate = Format(DateSerial(Jahr, Monat, Tag), "YYYY-MM-DD ") & Format(TimeSerial(Stunden, Minuten, Sekunden), "hh:mm:ss")
versorgen.
Die Funktion 'TimeSerial' braucht man nicht unbedingt. Stattdessen kann man 'Stunden / 24 + Minuten / 1440 + Sekunden / 86400' zu Fuss rechnen.

Ich denke mal, so müsste es funktionieren, ohne "EinzelWerte" extrahieren zu müssen:
strTimeDate = Format(StaDataExport_AnaA.actDt0 + 32874 + StaDataExport_AnaA.actTm0 / 86400000, "YYYY-MM-DD hh:mm:ss") :confused:
 
Zuletzt bearbeitet:
Hallo zusammen und vielen Dank erst mal !!!

Es geht um die WinCC 7.5 Upd3

Also wenn ich meinen Versuch mal laufen lasse kommen folgende Daten raus:
Die Bezeichnungen gefallen mir eigentlich gar nicht, da werden ja die Variablennamen geschrieben, ich würde da sicher gerne andere Texte drin haben, vor allem weil das Projekt dann in Russland laufen sollte. :)

Die Variable DATE und TIME müssen nicht zusammengeführt werden, so nehme ich an, dass alle gemäss "Heinileini" erst gerechnet werden müssen?
Also der Variablenname sieht etwa so aus: _20200422140432_TestSampleLine.csv, ist ja schon mal was:p


Code:
  [TABLE]
    [TR]
   [TD="width: 193"]StaDataExport_AnaA.actSta0[/TD]
   [TD="width: 80, align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm0[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt0[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actSta1[/TD]
   [TD="align: right"]1[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm1[/TD]
   [TD="align: right"]36753310[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt1[/TD]
   [TD="align: right"]11069[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actSta2[/TD]
   [TD="align: right"]2[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm2[/TD]
   [TD="align: right"]36754313[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt2[/TD]
   [TD="align: right"]11069[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actSta3[/TD]
   [TD="align: right"]3[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm3[/TD]
   [TD="align: right"]36757321[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt3[/TD]
   [TD="align: right"]11069[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actSta4[/TD]
   [TD="align: right"]4[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm4[/TD]
   [TD="align: right"]36758320[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt4[/TD]
   [TD="align: right"]11069[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actSta5[/TD]
   [TD="align: right"]5[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm5[/TD]
   [TD="align: right"]36760319[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt5[/TD]
   [TD="align: right"]11069[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actSta6[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm6[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt6[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actSta7[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm7[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt7[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actSta8[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm8[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt8[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actSta9[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm9[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt9[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actSta10[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm10[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt10[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actSta11[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actTm11[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.actDt11[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC11[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC12[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC13[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC14[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC15[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC16[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC17[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC18[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC21[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC22[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC23[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC24[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC25[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC26[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC27[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
  [TR]
   [TD]StaDataExport_AnaA.CONC28[/TD]
   [TD="align: right"]0[/TD]
  [/TR]
 [/TABLE]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenn ich meinen Versuch mal laufen lasse kommen folgende Daten raus:
Habe mir die Daten mal geschnappt und einige davon in Excel
a) per TabellenBlattFunktionen
b) per VBA
gerechnet.
Datum&Zeit.jpg

Sieht für mich plausibel aus, aber sind die Ergebnisse auch korrekt?

PS:
Dein VariablenName sieht beeindruckend aus ... aber das ist doch wohl für die Berechnung nicht relevant!?

PPS:
Von Russisch habe ich 0 Ahnung, aber wenn die Monate als Zahl und nicht deren Namen in Buchstaben ausgegeben werden müssen ... :confused:
 
Zuletzt bearbeitet:
Guten Morgen, dein Ansatz ist "cool". Die Daten nach export im Excel formatieren. Habe ja sowieso noch Statesnummern auch drin, welche exportiert werden als Zahl. Da könnte ich ja auch einen sinvollen Text dazu kreieren:).
Schöner wäre es aber doch die Daten im csv gleich korrekt zu haben
Gruss
 
Die Daten nach export im Excel formatieren.
Es ist/war gar nicht mein Ansatz, die Daten nach dem Export in Excel zu formatieren.
Dein Code in #1 hat mir geflüstert, dass Du den Export per VBS-Script realisieren willst. VBS und VBA sind sehr eng "verwandt", aber nicht identisch. Ich habe/hatte die Hoffnung, dass Du in VBS meinen VBA-Ansatz verwenden kannst und dass er dort funktionieren sollte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Unter TIA WinCC Advanced verwende ich FormatDateTime, um den Zeiteintrag (DTL) in das gewünschte Format als Text zu bringen, bevor es dann in die *.csv kommt:
Code:
...
t = SmartTags("LogTransfer.LogRecord.Time")                            ' Wert auslesen
RecDate = FormatDateTime(t, vbShortDate)                               ' Datum des Eintrags
RecTime = FormatDateTime(t, vbLongTime)                                ' Zeit des Eintrags
...
)
Sieht dann im *.csv z.B. so aus:
Datum;Uhrzeit;...
20.08.2019;10:41:29;...
Keine Ahnung, wie das Pendant in WinCC 7.5 Upd3 dazu aussieht, aber sicher wird's was ähnliches geben.


PS:
Durch diese Umwandlung werden (zumindest bei mir) auch die Ländereinstellungen des Panels beachtet, also Datum/Zeit im landesüblichen Format umgewandelt.
In Englisch z.B.:
12/11/2017;3:18:02 PM;...
 
Zuletzt bearbeitet:
Hallo zusammen,
habe den Ansatz von "Heinileini" genommen:
Code:
'Berechnung der Zeitwerte
    Set arrValTm(0) = HMIRuntime.Tags("StaDataExport_AnaA.actTm0")
    arrValTm(0).Read
    arrValTm(0).Value = (arrValTm(0).Value / 86400000)

Set arrValDt(0) = HMIRuntime.Tags("StaDataExport_AnaA.actDt0")
    arrValDt(0).Read
    arrValDt(0).Value = (arrValDt(0).Value + 32874)

For i = 0 To 11    
        ValDtTm = arrValDt(i).Value + arrValTm(i).Value
        arrValTmDt(i) = FormatDateTime(ValDtTm, 0)
        HMIRuntime.Trace("VBS_control: " & arrValTmDt(i) & vbCrLf)
    Next

So kommt was brauchbares im .csv an.
Habe parallel dazu das Siemens Add-on PM-Open Export ausprobiert, dort ist dieselbe Problematik bei den TIME und DATE Formaten;)

Vielen Dank für eure Inputs
Gruss
 
Zuletzt bearbeitet:
Zurück
Oben