-> Hier kostenlos registrieren
Hallo,
ich habe ein Skript geschrieben welches Daten aus der SPS auf ein Netzlaufwerk schreibt. Ist dieses Laufwerk nicht erreichbar dann werden die Daten auf ein USB-Stick gespeichert. Ist das Netztlaufwerk wieder erreichbar werden die Daten dann vom USB aufs Laufwerk kopiert. Alles funktioniert auch, bloss habe ich Probleme zu erkennen wenn das Netzlaufwerk ausfällt.
Ich habe es mit fs.Dir("\\TPPT3-PC\Data\USB-Daten",16) und Err.Number probiert. Wenn ich das Netztlaufwerk trenne dauer es ca 1-2 Min bis der Behfehl fs.Dir("\\TPPT3-PC\Data\USB-Daten",16) ein "" statt "USB-Daten" leifert und die Daten auf dem USB gespeichert werden. Starte ich die Runtime neu wird beim jedem Aufruf des Skriptes das Fehlen des Laufwerkes sofort erkannt, also fs.Dir("\\TPPT3-PC\Data\USB-Daten",16) liefert sofort "".
Beim USB-Stick ist es die gleiche Abfrage bloss da wird auch alles sofort erkannt.
Hat jemand eine Idee woran das liegen kann? Oder gibt es eventuell eine bessere/schnellere Methode zu erkennen ob das Laufwerk getrennt wurde?
Danke
ich habe ein Skript geschrieben welches Daten aus der SPS auf ein Netzlaufwerk schreibt. Ist dieses Laufwerk nicht erreichbar dann werden die Daten auf ein USB-Stick gespeichert. Ist das Netztlaufwerk wieder erreichbar werden die Daten dann vom USB aufs Laufwerk kopiert. Alles funktioniert auch, bloss habe ich Probleme zu erkennen wenn das Netzlaufwerk ausfällt.
Ich habe es mit fs.Dir("\\TPPT3-PC\Data\USB-Daten",16) und Err.Number probiert. Wenn ich das Netztlaufwerk trenne dauer es ca 1-2 Min bis der Behfehl fs.Dir("\\TPPT3-PC\Data\USB-Daten",16) ein "" statt "USB-Daten" leifert und die Daten auf dem USB gespeichert werden. Starte ich die Runtime neu wird beim jedem Aufruf des Skriptes das Fehlen des Laufwerkes sofort erkannt, also fs.Dir("\\TPPT3-PC\Data\USB-Daten",16) liefert sofort "".
Beim USB-Stick ist es die gleiche Abfrage bloss da wird auch alles sofort erkannt.
Hat jemand eine Idee woran das liegen kann? Oder gibt es eventuell eine bessere/schnellere Methode zu erkennen ob das Laufwerk getrennt wurde?
Code:
Sub WriteData()
Dim f,fs,Path_USB,Path_Net,datum,D, T, n, i
SmartTags("DB1551_Schnittstelle_HMI_HMI_Fehler_USB")=False
SmartTags("DB1551_Schnittstelle_HMI_HMI_Fehler_Netzwerk")=False
SmartTags("Sichern_Fertig_1") = False
SmartTags("Sichern_Fertig_2") = False
D = Date
T = Time
datum = Right("0" & Hour(T), 2) & Right("0" & Minute(T), 2) & Right("0" & Second(T), 2) & "_" & Right("0" & Day(D), 2) & Right("0" & Month(D), 2) & Year(D)
Set f= CreateObject("filectl.file")
Set fs = CreateObject("filectl.filesystem")
Path_USB = "\Storage Card USB\Messdaten\" & datum & "_USB.txt"
Path_Net = "[URL="file://\\TPPT3-PC\Data\"]\\TPPT3-PC\Data\[/URL]" & datum & "_Netzwerk.txt"
On Error Resume Next
If fs.Dir("[URL="file://\\TPPT3-PC\Data\USB-Daten",16"]\\TPPT3-PC\Data\USB-Daten",16[/URL]) = "" Or Err.Number <> 0 Then
SmartTags("DB1551_Schnittstelle_HMI_HMI_Fehler_Netzwerk")=True
Else
SmartTags("DB1551_Schnittstelle_HMI_HMI_Fehler_Netzwerk")=False
End If
If fs.dir("\Storage Card USB\Messdaten") = "" Or Err.Number <> 0 Then
SmartTags("DB1551_Schnittstelle_HMI_HMI_Fehler_USB")=True
Else
SmartTags("DB1551_Schnittstelle_HMI_HMI_Fehler_USB")=False
End If
' Daten vom USB auf Netzlaufwerk kopieren
Dim Result, SourceFile, DestFile
If SmartTags("DB1551_Schnittstelle_HMI_HMI_Fehler_Netzwerk") = False _
And SmartTags("DB1551_Schnittstelle_HMI_HMI_Fehler_USB") = False Then
Result = fs.Dir("\Storage Card USB\Messdaten\*.txt")
If Result = "" Then
Else
SourceFile = "\Storage Card USB\Messdaten" & Result
DestFile = "[URL="file://\\TPPT3-PC\Data\USB-Daten"]\\TPPT3-PC\Data\USB-Daten\[/URL]" & Result
fs.FileCopy SourceFile,DestFile
fs.SetAttr SourceFile, 0
For Index = 1 To 999
Result = fs.Dir()
If Result = "" Then
Exit For
Else
SourceFile = "\Storage Card USB\Messdaten" & Result
DestFile = "[URL="file://\\TPPT3-PC\Data\USB-Daten"]\\TPPT3-PC\Data\USB-Daten\[/URL]" & Result
fs.FileCopy SourceFile,DestFile
fs.SetAttr SourceFile, 0
End If
Next
End If
End If
If SmartTags("DB1551_Schnittstelle_HMI_HMI_Fehler_Netzwerk")=False Then
f.open Path_Net, 2
' Hier schreibe ich die Daten auf das Netzlaufwerk
f.Close
SmartTags("Sichern_Fertig_2") = True
End If
If SmartTags("DB1551_Schnittstelle_HMI_HMI_Fehler_USB")=False _
And SmartTags("DB1551_Schnittstelle_HMI_HMI_Fehler_Netzwerk")=True Then
f.open Path_USB, 2
' Hier schreibe ich die Daten auf den USB-Stick
f.Close
SmartTags("Sichern_Fertig_1") = True
End If
End Sub
Danke