WinCC WinCC V18 VBS-Skript - Textdatei anlegen und schreiben

MrNiceGuy

Level-2
BeitrÀge
45
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi zusammen,

bin mal wieder auf Hilfe angewiesen...đŸ„”

Ich hab auf meinem HMI (TP1500 Comfort Pro) eine Anwendung mit einem Scanner der einen Barcode lesen soll(12stellige Nummer), und auf einem NAS Server eine Textfile mit dieser BarcodeNr erstellen soll. In dieser Textfile sollen dann auch spÀter noch ein zwei Zeilen geschrieben werden. Als SPS ist eine kleine ET200CPU im Einsatz(CPU1510SP-1PN).

Ablauf ist folgender : Ich scanne den Barcode, schreibe Ihn in einen String und schicke diesen an die SPS. Die SPS muss aus dieser 12stelligen Nummer die "mittleren 8" Zeichen extrahieren --> Das soll spĂ€ter der Name der Textfile werden. Das funktioniert soweit auch. Die SPS schickt dann noch zwei weitere Strings ans HMI die den Inhalt der Textdatei fĂŒllen.

Wenn ich das ganze auf meinem PC mit PLCSIM simuliert habe, hat mir das Script auf meinem PC auch eine Textfile angelegt. Jetzt habe ich das ganze mal in live aufgebaut, hab den Pfad im Script geÀndert...und siehe da.... es wird keine Textfile angelegt.

Ich kann den NAS-Server noch nicht angeben, weil der erst noch entstehen wird. Also wollte ich es so versuchen, dass das HMI auf meinem Laptop eine Textfile anlegt. Was mache ich hier falsch, dass es nicht funktioniert ?

Hier ist der Auszug aus meinem Script - bin leider nicht so erfahren im Scripten...geht bestimmt besser/schöner...
Code:
Sub expand_textfile(ByRef WScript2, ByRef Write2)
    Dim fso, file, textstream 
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    ' ModualbarcodeNr einlesen und als Filename benutzen fĂŒr Textfile
    Dim filename
    'Set filename = HmiRuntime.Screens("Bild_1").ScreenItems("EA-Feld_1")
    Set filename = SmartTags("HMI_Station1_ModualBarcodeNr_long_Short")

    
    ' Pfad zur Datei auf dem NAS-Server
    Dim filePath
    filePath ="\\192.168.0.70\C:\Users\Public\Documents\" & filename & ".txt" '"C:\Users\Public\Documents\filename.txt"
    'filePath ="C:\Users\Public\Documents\" & filename & ".txt" '"\\NAS-Server\Ordner\Datei.txt"
    
    ' ÜberprĂŒfen, ob die Datei existiert
    If fso.FileExists(filePath) Then
     ' Wenn die Datei existiert, öffnen Sie sie zum Schreiben
     Set file = fso.GetFile(filePath)
     Set textstream = file.OpenAsTextStream(8, -2) ' 8 steht fĂŒr ForAppending
    Else
     ' Wenn die Datei nicht existiert, neue Datei zum Schreiben erstellen
     Set textstream = fso.CreateTextFile(filePath, True) ' True steht fĂŒr overwrite
    End If
    
    ' Daten schreiben in die Datei --> Write2 mĂŒsste  durch PLC geschrieben werden DatumStart;UhrzeitStart,Stationsnr., Start Spannung 
    textstream.WriteLine Write2
    textstream.Close

End Sub
 
Zuletzt bearbeitet:
Das HMI sagt in Zeile drei :
Code:
 Set fso = CreateObject("Scripting.FileSystemObject")

sei wohl der Fehler. Active X Component cant create object.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
1. Bitte nutze fĂŒr Deinen Code die Code-Tags. Dann wird er fĂŒr alle lesbarer, weil z.B. auch EinrĂŒckungen funktionieren.
Die Tags kannst Du auch nachtrĂ€glich noch einfĂŒgen.

2. Du musst unterscheiden, ob Dein Script auf dem Panel (WinCE) oder in der Sim (Win10/11) lÀuft. Da bedarf es unterschiedlicher Dateibefehle.
Das findest Du in der VBS-FAQ ausfĂŒhrlich erklĂ€rt.
Am Panel heißt es z.B.:
Code:
Set fs = CreateObject("filectl.filesystem")
Set f  = CreateObject("filectl.file")
 
Zuletzt bearbeitet:
wie hucki schon schrieb ist das dateisystem win und wince unterschiedlich
um im script abzufragen welches aktuell ist schau mal hier

im hmi kannst du dann abhĂ€ngig von der antwort das tun was fĂŒr das aktuelle bs nötig ist.
ist natĂŒrlich mehraufwand an der programmierung
Code:
if bs = "win" then
'tue das was windows tun wĂŒrde
end if
if bs = "wince" then
'tue das was windows-ce tun wĂŒrde
end if
 
Vielen Dank fĂŒr die Info! Das wĂŒrde natĂŒrlic heiniges erklĂ€ren -
1. Bitte nutze fĂŒr Deinen Code die Code-Tags. Dann wird er fĂŒr alle lesbarer, weil z.B. auch EinrĂŒckungen funktionieren.
Die Tags kannst Du auch nachtrĂ€glich noch einfĂŒgen.

2. Du musst unterscheiden, ob Dein Script auf dem Panel (WinCE) oder in der Sim (Win10/11) lÀuft. Da bedarf es unterschiedlicher Dateibefehle.
Das findest Du in der VBS-FAQ ausfĂŒhrlich erklĂ€rt.
Am Panel heißt es z.B.:
Code:
Set fs = CreateObject("filectl.filesystem")
Set f  = CreateObject("filectl.file")

Danke schön :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wie hucki schon schrieb ist das dateisystem win und wince unterschiedlich
um im script abzufragen welches aktuell ist schau mal hier

im hmi kannst du dann abhĂ€ngig von der antwort das tun was fĂŒr das aktuelle bs nötig ist.
ist natĂŒrlich mehraufwand an der programmierung
Code:
if bs = "win" then
'tue das was windows tun wĂŒrde
end if
if bs = "wince" then
'tue das was windows-ce tun wĂŒrde
end if

Vielen Dank :)
 
Eine Allgemein Frage noch :

WĂ€re das der richtige Befehl um die Textdatei auf meinem Laptop anzulegen?

Code:
 ' Pfad zur Datei auf dem NAS-Server
    Dim filePath
    filePath ="\\192.168.0.70\C:\Users\Public\Documents\" & filename & ".txt" '"C:\Users\Public\Documents\filename.txt"
    'filePath ="C:\Users\Public\Documents\" & filename & ".txt" '"\\NAS-Server\Ordner\Datei.txt"
[CODE\]
 
Nein.
Auf dem NAS musst du eine Freigabe erstellen.
Ein direkter Zugriff auf einen Laufwerksbuchstaben geht nicht.
z.b. C: freigaben als LW_c
dann sÀhe der Zugriff so aus
filePath ="\\192.168.0.70\LW_c\Users\Public\Documents\" & filename & ".txt"

Wenn die HMI auf deinem Laptop lÀuft und dort die Datei liegt dann geht es auch so
filePath ="c:\Users\Public\Documents\" & filename & ".txt"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Actung: Zugriff von einem Comfort Panel zu einem NAS/einer Freigabe muss "\\servername\ordnername\" sein.
IP-Adresse als Servername kann das Windows CE nicht. Falls die IP in einem anderen IP-Netz als das Panel liegt, dann wird ein WINS-Server benötigt.
 
Also muss mein Zugriff so aussehen

path ="\\Iga-lt-40-mun\LW_c:\users\public\documents\TEST.txt"


Habe mein Laufwerk als LW_c freigegeben, anstatt IP Adresse den Namen meines PC (der den NAS Server erstmal simulieren soll) angegeben.
Bekomme leider immer noch einen Fehler mit "Session was cancelled" Fehler Zeile 19.
Zeile 19 ist fo.open path,8 ...langsam verzweifel ich, auf der Win10 Umgebung hat das recht schnell funktioniert alles...

Hier wÀre mein gesamter Code
Code:
Sub expand_textfile_winCE_v2(ByRef Write2)
'Deklaration der lokalen Variablen
Dim fo, fso, path	
	
Dim filename ' ModualbarcodeNr einlesen und als Filename benutzen fĂŒr Textfile
Set filename = SmartTags("HMI_Station1_ModualBarcodeNr_long_Short")

path ="\\Iga-lt-40-mun\LW_c:\users\public\documents\TEST.txt"'"\\Iga-lt-40-mun\c:\users\public\documents\"& filename &".txt"  '"(\\192.168.0.70\C:\Users\Public\Documents\" & filename & ".txt)" '"(\\192.168.0.70\C:\Users\Public\Documents)" 

'Datei Objekt erstellen
Set fo= CreateObject("FileCtl.File")
Set fso = CreateObject("filectl.filesystem")

'If fso.dir (path)= "" Then
'	fso.mkdir(""& filename &".txt") '	
'End If

'Öffnen / Erstellen einer Datei
fo.open path , 8

'Daten werden in die Datein geschrieben
fo.LinePrint Write2

' Datei wird geschlossen
fo.Close

'Release the Object - Objekt wird freigegeben
Set fo = Nothing

ShowSystemAlarm "Storage of data was successful!"
End Sub
[CODE\]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Leider immer noch ohne Erfolg... aber ich glaube es kann nicht mehr viel sein... :ROFLMAO: Es kommt zuerst keine Fehlermeldung, allerdings wird auch keine Textdatei angelegt. BetĂ€tige ich mein Button ein zweites mal, dann kommt nach kurzer zeit die Fehlermeldung, er kann kein Objekt mit dem gleichen Namen anlegen....Bedeutet es wĂŒrde ja scn die Textdatei geben... Aber irgendiwe ist sie doch nicht da - hab ich danoch fehler bei der freigabe ?
 

AnhÀnge

  • Unbenannt.PNG
    Unbenannt.PNG
    37,3 KB · Aufrufe: 5
was fĂŒr ein betriebssystem lĂ€uft auf dem NAS?

kann der server-name denn ĂŒberhaupt aufgelöst werden?
passenden dns/wins-server eingetragen?
mach mal einen screenshot von den einstellungen im hmi

öffne auf dem panel mal einen command promt und gib ein
ping Iga-lt-40-mun
liefert das komando eine ip-adresse zurĂŒck?
wenn nicht... gibt mal in den netzwerkeinstellungen (hmi) bei secondary dns/wins die ip des NAS ein.

.....bisschen rumprobiert
bei mir lokales netzwerk.
auf meinem tp700 habe ich bei primary dns/wins die adresse meines routers (fritzbox) eingetragen
bei secondary die ip von dem rechner auf dem die freigabe liegt.
auf dem freigabe-server (in meinem fall win11 pc im lokalem netz) muss auf jeden fall smb v1 freigegeben werden.
dann kann ich im explorer (hmi) die freigabe öffnen (z.b. \\server\lw_c)
 
Der Server muss SMBv1. 0 unterstĂŒtzen, wenn ein Comfort Panel darauf auf Dateien zugreifen will. Muss ggf. extra aktiviert werden. Es gibt auch eine Siemens-Lösung ĂŒber den Webserver ohne SMBv1. 0
Es muss auch fĂŒr die Freigabe eine Berechtigung/USER angelegt werden, der im Panel hinterlegt werden muss. Der User darf auf der Freigabe nicht gesperrt sein/werden und das Passwort sollte nie ablaufen.
Zur Einbindung von HMI Panels in Netzwerke gibt es einen Siemens FAQ mit ausfĂŒhrlichen Anleitungen. Hier im Forum gibt es eine Ă€ltere FAQ zu "von Panel zu PC zugreifen". Ich habe jetzt in meinem Urlaub nur grad keine Lust, die Links zu den FAQs mit dem Smartphone rauszusuchen.
Einfach strukturiert und gezielt mit dem Command prompt des Panels abchecken, woran genau es scheitert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
 
Geile Sache Leute, ich werde das gleich alles mal versuchen - war jetzt leider ein paar Tage raus. Gehe es jetzt wieder an! Super eure UnterstĂŒtzung!!!!:):)
 
Geile Sache Leute, ich werde das gleich alles mal versuchen - war jetzt leider ein paar Tage raus. Gehe es jetzt wieder an! Super eure UnterstĂŒtzung!!!!:):)
Funktioniert ! Bin Schritt fĂŒr Schritt nochmal die Freigabe und Berechtigung durchgegangen, da lag mein Proble am Ende. Ich hatte zwar den Ordner freigegeben und Berechtigung verteilt, aber dass noch Einstellungen am Panel zu machen waren war mir so nicht bewusst...was ja aber sinn ergibt!

Vielen Dank fĂŒr eure (mehr als) tatkrĂ€ftige UnterstĂŒtzung!!

Peace & Love â˜źïžđŸ’•
 
ZurĂŒck
Oben