WinCC Exportiere Datensätze mit Zeitstempel

SPSnewbie91

Level-2
Beiträge
272
Reaktionspunkte
18
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen.

Ich habe TIA V19 mit WinCC Advanced und möchte meine Rezepte in Windows als csv abspeichern. Das klappt soweit auch.

1732519560764.png

Gibt es eine Möglichkeit noch einen Zeitstempel zum Dateinamen anzufügen oder brauche ich dafür ein VB-Script?
 
Hintergrund ist eigentlich folgender. Und zwar kommt jedes Mal ein PopUp, wenn man einen neuen Datensatz speichern will

1732520048661.png

Leider lässt sich das PopUp am Touch aber nicht drücken. Ich kann es nur über einen VNC drücken.
 
Danke. Das mit dem Datum funktioniert schon Mal. Ich habe mir testweise das Datum und die Uhrzeit in eine csv geschrieben. Das geht. Wie kann ich jetzt das ganze als Dateiname verwenden? Sorry für die blöde Frage, aber ich denke bei mir ist es eher ein Syntax-Problem :D

Code:
Sub Export_Recipe()

Dim file_path, fso, fso2, t, s, d, test

'aus der Systemzeit einen String in der Form "YYYYMMDD_hhmmss" (z.B. "20991231_015959") erzeugen

t = Now  'Systemzeit (Lokalzeit des HMI)
s = Year(t) & Right("0" & Month(t), 2) & Right("0" & Day(t), 2) & "_" _
  & Right("0" & Hour(t), 2) & Right("0" & Minute(t), 2) & Right("0" & Second(t), 2)
 
  d = t & s
 

file_path = "D:\Export\Rezepte\d & _recipe.csv"

'object for file
Set fso = CreateObject("Scripting.FIleSystemObject")

'1 - read, 2 - write, 8 - append
Set fso2 = fso.OpenTextFile(file_path, 8, True)


Export_Recipe

'Storage free
Set fso = Nothing
Set fso2 = Nothing

If Err.Number <> 0 Then
    ShowSystemAlarm CStr(Err.Number) & ", " & Err.Description & ", " & Err.Source
Err.Clear
End If


End Sub
Ich habe die Export_Recipe Funktion gefunden, verstehe nur noch nicht so ganz, wie ich sie anwenden muss. Hättest du dafür auch noch einen Hinweis?
Mit dem aktuellen Code, bleibt die csv leer

1732525698932.png
 
Wie kann ich jetzt das ganze als Dateiname verwenden?
Code:
t = Now  'Systemzeit (Lokalzeit des HMI)
s = Year(t) & Right("0" & Month(t), 2) & Right("0" & Day(t), 2) & "_" _
  & Right("0" & Hour(t), 2) & Right("0" & Minute(t), 2) & Right("0" & Second(t), 2)

file_path = "D:\Export\Rezepte\" & s & "_recipe.csv"
 
Und wie kann ich jetzt noch meine Rezepte exportieren?

Code:
Sub Export_Recipe()

    Dim file_path, timestamp, fso, fso2, recipeNumber, datasetNumber
    Dim exportResult

    ' Dynamischen Zeitstempel für den Dateinamen erzeugen
    timestamp = Year(Now) & Right("0" & Month(Now), 2) & Right("0" & Day(Now), 2) & "_" _
              & Right("0" & Hour(Now), 2) & Right("0" & Minute(Now), 2) & Right("0" & Second(Now), 2)
    
    ' Dateipfad mit Zeitstempel erstellen
    file_path = "D:\Export\Rezepte\" & timestamp & "_recipe.csv"
    
    exportResult = True

    ' Prüfen, ob der Exportordner existiert, und bei Bedarf erstellen
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    If Not fso.FolderExists("D:\Export\Rezepte") Then
        fso.CreateFolder("D:\Export\Rezepte")
    End If
    
    '1 - read, 2 - write, 8 - append
    Set fso2 = fso.OpenTextFile(file_path, 8, True)

    ' Rezeptnummer/-name und Datensatznummer/-name auf "0" setzen, um alle Datensätze zu exportieren
    recipeNumber = "0"       ' Exportiere alle Rezepturen
    datasetNumber = "0"      ' Exportiere alle Datensätze
    
    
    
    
    
    
'    hier Export Rezepte

 
 
 
 
 
 
    
    ' Überprüfen, ob der Export erfolgreich war
    If exportResult = True Then
        ShowSystemAlarm "Export erfolgreich: " & file_path
    Else
        ShowSystemAlarm "Export fehlgeschlagen. Überprüfen Sie die Einstellungen."
    End If

    ' Speicher freigeben
    Set fso = Nothing
    Set fso2 = Nothing

    ' Fehlerbehandlung
    If Err.Number <> 0 Then
        ShowSystemAlarm CStr(Err.Number) & ", " & Err.Description & ", " & Err.Source
        Err.Clear
    End If
    
    exportResult = False

End Sub

Mit diesen Parametern, nur halt mit anderem Dateipfad, der oben definiert wurde

1732528753989.png
 
Ich habe die Export_Recipe Funktion gefunden, verstehe nur noch nicht so ganz, wie ich sie anwenden muss.
Und wie kann ich jetzt noch meine Rezepte exportieren?
(...)
Mit diesen Parametern, nur halt mit anderem Dateipfad, der oben definiert wurde

Code:
Sub Export_Recipe()
Dim file_path, timestamp, t

t = Now  'Systemzeit (Lokalzeit des HMI)
timestamp = Year(t) & Right("0" & Month(t), 2) & Right("0" & Day(t), 2) & "_" _
  & Right("0" & Hour(t), 2) & Right("0" & Minute(t), 2) & Right("0" & Second(t), 2)
file_path = "D:\Export\Rezepte\" & timestamp & "_recipe.csv"

ExportDataRecords 0, 0, file_path, hmiOverwriteWithConfirmation, hmiOn, Null
End Sub

Tipp 1: rechts neben dem VBS-Editor gibt es die Aufgabencard "Funktionsliste". Da gib die gewünschte Funktion wie gewohnt ein, dann "Übernehmen" fügt den zugehörigen VBS-Code in den VBS-Editor ein.
Tipp 2: Now nicht mehrmals aufrufen (das fragt jedesmal wieder die Uhrzeit ab, dazwischen ändert sich die Uhrzeit!). Sondern genauso machen, wie ich es in der FAQ und in #5 geschrieben habe.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
Sub Export_Recipe()
Dim file_path, timestamp, t

t = Now  'Systemzeit (Lokalzeit des HMI)
timestamp = Year(t) & Right("0" & Month(t), 2) & Right("0" & Day(t), 2) & "_" _
  & Right("0" & Hour(t), 2) & Right("0" & Minute(t), 2) & Right("0" & Second(t), 2)
file_path = "D:\Export\Rezepte\" & timestamp & "_recipe.csv"

ExportDataRecords 0, 0, file_path, hmiOverwriteWithConfirmation, hmiOn, Null
End Sub

Tipp 1: rechts neben dem VBS-Editor gibt es die Aufgabencard "Funktionsliste". Da gib die gewünschte Funktion wie gewohnt ein, dann "Übernehmen" fügt den zugehörigen VBS-Code in den VBS-Editor ein.
Tipp 2: Now nicht mehrmals aufrufen (das fragt jedesmal wieder die Uhrzeit ab, dazwischen ändert sich die Uhrzeit!). Sondern genauso machen, wie ich es in der FAQ und in #5 geschrieben habe.
Danke. Tipp 1 kannte ich gar nicht. Jetzt funktioniert es.

Code:
Sub Export_Recipe()

    Dim file_path, timestamp, fso, recipeNumber, datasetNumber, overwrite, status, processingStatus
    Dim exportResult
    Dim t

    ' Generate a dynamic timestamp for the file name
    t = Now
    timestamp = Year(t) & Right("0" & Month(t), 2) & Right("0" & Day(t), 2) & "_" _
              & Right("0" & Hour(t), 2) & Right("0" & Minute(t), 2) & Right("0" & Second(t), 2)
    
    ' Create file path with timestamp
    file_path = "D:\Export\Rezepte\" & timestamp & "_recipe.csv"
    
    ' Check if the export folder exists, and create it if necessary
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    If Not fso.FolderExists("D:\Export\Rezepte") Then
        fso.CreateFolder("D:\Export\Rezepte")
    End If
    
    ' Set recipe number/name and data record number/name to “0” to export all data records
    recipeNumber = 0       ' Exportiere alle Rezepturen
    datasetNumber = 0      ' Exportiere alle Datensätze

    ExportDataRecords recipeNumber, datasetNumber, file_path, hmiOverwriteAlways, hmiOn, Null

    ' Check if the export was successful
    If exportResult = True Then
        ShowSystemAlarm "Export erfolgreich: " & file_path
    Else
        ShowSystemAlarm "Export fehlgeschlagen. Überprüfen Sie die Einstellungen."
    End If

    ' Release memory
    Set fso = Nothing

    ' Error
    If Err.Number <> 0 Then
        ShowSystemAlarm CStr(Err.Number) & ", " & Err.Description & ", " & Err.Source
        Err.Clear
    End If
    
    exportResult = False

End Sub

Eine letzte Frage habe ich noch. Und zwar wird jetzt am Dateinamen nochmal "..._Recipe1.csv" rangehängt.

1732535271959.png


Woher kommt das?
 
Eine letzte Frage habe ich noch. Und zwar wird jetzt am Dateinamen nochmal "..._Recipe1.csv" rangehängt.

Anhang anzeigen 83347


Woher kommt das?
Ich denke mal, weil Du mit:
Code:
...
    recipeNumber = 0       ' Exportiere alle Rezepturen
...
alle Rezepturen exportierst, hängt WinCC das hinten an.
Eine *.csv je Rezeptur, aber alle bekommen den gleichen Namen, da muss eine Unterscheidung her.

Wenn Du nur eine Rezeptur hast bzw. exportieren möchtest, nimm statt der 0 die Nummer Deiner Rezeptur, dann sollte es weg sein.
 
Eine letzte Frage habe ich noch. Und zwar wird jetzt am Dateinamen nochmal "..._Recipe1.csv" rangehängt.
(...)
Woher kommt das?
Das ist der von dir projektierte Name der Rezeptur. Der wird vom ExportDataRecords automatisch angehängt. Du könntest ja mehrere verschiedene Rezepturen haben, und die sollen nicht alle in derselben Datei landen.
 
Zurück
Oben