-> Hier kostenlos registrieren
Hallo zusammen,
ich habe ein Problem mit einem VB-Script in einer WinCC Runtime (Advanced).
Wir programmieren mit V15.
In einem aktuellen Projekt geht es darum, CSV-Dateien als zyklischer Log (1s-Impulse) zu schreiben, um eine Protokollierung des Ansatzes bereitzustellen.
Hier mal der Code:
Sub VBFunktion_2()
'Tip:
' 1. Verwenden Sie die Tastenkombination <CTRL+SPACE> oder <CTRL+I>, um eine Liste aller Objekte und Funktionen zu öffnen
' 2. Schreiben Sie den Code unter Verwendung des HMI Runtime Objekts.
' Beispiel: HmiRuntime.Screens("Screen_1").
' 3. Verwenden Sie die Tastenkombination <CTRL+J>, um eine Objektreferenz zu erstellen.
'Schreiben Sie den Code ab dieser Position:
'hochzählen, wenn das Script aufgerufen wird
dbCSV_1_iCSVCounter = dbCSV_1_iCSVCounter + 1
'Variablendeklaration
Dim FName, fso, DataSet, fout
'ab hier wird geschrieben
If dbCSV_1_iStartWrite = 2 Then
'hochzählen, wenn geschrieben wird. Wenn geschrieben wird wird immer 2 hochgezählt
dbCSV_1_iCSVCounter = dbCSV_1_iCSVCounter + 1
'Dateinamen festlegen, kommt aus CPU
FName = dbCSV_1_strFilename
Set fso = CreateObject("Scripting.FileSystemObject")
'prüfen, ob Datei vorhanden oder nicht. wenn nicht vorhanden neue anlegen
If Not fso.FileExists(FName) Then
fso.CreateTextFile FName
'Datei erzeugen und Titelzeile schreiben
DataSet = "Datum" & ";" & "Uhrzeit" & ";" & "Restzeit" & ";" & "Restzeit" & ";" & "Schritt" & ";" & "Drehzahl" & ";" & "Temperatur" & ";" & "Vakuum"
Set fout = fspenTextFile(FName,8, True)
fout.WriteLine(DataSet)
fout.Close
End If
'hier die wirklichen Werte aus der Maschine schreiben - müssen noch geprüft werden
DataSet = dbPanel_sValues_dtActual & ";" & dbPanel_sValues_iActiveStep & ";" & dbPanel_sValues_sActual_rActSpeedDissolver & ";" & dbPanel_sValues_sActual_rActTemperature & ";" & dbPanel_sValues_sActual_rActVacuum
Set fout = fspenTextFile(FName,8, True)
fout.WriteLine(DataSet)
fout.Close
dbCSV_boStartCSVNEW = dbCSV_boStartCSVNEW +1
End If
End Sub
Das Starten des VB-Script soll über "dbCSV_1".iStartCSVNEW - erfolgen. Sobald das script gestartet werden soll schicken wir hier einen sekundenpuls drauf und addieren 1 (auch schon mit 10 getestet). In der HMI-VAT wird auf Wertänderung geprüft und dann das VB-Script aufgerufen.
Für alle Variablen aus dem DB ist im HMI eine aktualisierungszeit von 100ms eingestellt.
Leider funktioniert das ganze nicht.
Der Code an sich geht, da die CSV geschrieben wird, wenn ich das Aufrufen auf eine Schaltfläche im HMI lege.
Kann mir jemand sagen, was ich falsch mache?
ich habe ein Problem mit einem VB-Script in einer WinCC Runtime (Advanced).
Wir programmieren mit V15.
In einem aktuellen Projekt geht es darum, CSV-Dateien als zyklischer Log (1s-Impulse) zu schreiben, um eine Protokollierung des Ansatzes bereitzustellen.
Hier mal der Code:
Sub VBFunktion_2()
'Tip:
' 1. Verwenden Sie die Tastenkombination <CTRL+SPACE> oder <CTRL+I>, um eine Liste aller Objekte und Funktionen zu öffnen
' 2. Schreiben Sie den Code unter Verwendung des HMI Runtime Objekts.
' Beispiel: HmiRuntime.Screens("Screen_1").
' 3. Verwenden Sie die Tastenkombination <CTRL+J>, um eine Objektreferenz zu erstellen.
'Schreiben Sie den Code ab dieser Position:
'hochzählen, wenn das Script aufgerufen wird
dbCSV_1_iCSVCounter = dbCSV_1_iCSVCounter + 1
'Variablendeklaration
Dim FName, fso, DataSet, fout
'ab hier wird geschrieben
If dbCSV_1_iStartWrite = 2 Then
'hochzählen, wenn geschrieben wird. Wenn geschrieben wird wird immer 2 hochgezählt
dbCSV_1_iCSVCounter = dbCSV_1_iCSVCounter + 1
'Dateinamen festlegen, kommt aus CPU
FName = dbCSV_1_strFilename
Set fso = CreateObject("Scripting.FileSystemObject")
'prüfen, ob Datei vorhanden oder nicht. wenn nicht vorhanden neue anlegen
If Not fso.FileExists(FName) Then
fso.CreateTextFile FName
'Datei erzeugen und Titelzeile schreiben
DataSet = "Datum" & ";" & "Uhrzeit" & ";" & "Restzeit" & ";" & "Restzeit" & ";" & "Schritt" & ";" & "Drehzahl" & ";" & "Temperatur" & ";" & "Vakuum"
Set fout = fspenTextFile(FName,8, True)
fout.WriteLine(DataSet)
fout.Close
End If
'hier die wirklichen Werte aus der Maschine schreiben - müssen noch geprüft werden
DataSet = dbPanel_sValues_dtActual & ";" & dbPanel_sValues_iActiveStep & ";" & dbPanel_sValues_sActual_rActSpeedDissolver & ";" & dbPanel_sValues_sActual_rActTemperature & ";" & dbPanel_sValues_sActual_rActVacuum
Set fout = fspenTextFile(FName,8, True)
fout.WriteLine(DataSet)
fout.Close
dbCSV_boStartCSVNEW = dbCSV_boStartCSVNEW +1
End If
End Sub
Das Starten des VB-Script soll über "dbCSV_1".iStartCSVNEW - erfolgen. Sobald das script gestartet werden soll schicken wir hier einen sekundenpuls drauf und addieren 1 (auch schon mit 10 getestet). In der HMI-VAT wird auf Wertänderung geprüft und dann das VB-Script aufgerufen.
Für alle Variablen aus dem DB ist im HMI eine aktualisierungszeit von 100ms eingestellt.
Leider funktioniert das ganze nicht.
Der Code an sich geht, da die CSV geschrieben wird, wenn ich das Aufrufen auf eine Schaltfläche im HMI lege.
Kann mir jemand sagen, was ich falsch mache?