Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: VBS fehlendes Netzlaufwerk schnell erkennen

  1. #1
    Registriert seit
    19.05.2016
    Beiträge
    9
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> 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?

    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 = "\\TPPT3-PC\Data\" & datum & "_Netzwerk.txt" 
    
    On Error Resume Next
     
     
    If fs.Dir("\\TPPT3-PC\Data\USB-Daten",16) = "" 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   = "\\TPPT3-PC\Data\USB-Daten\" & 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   = "\\TPPT3-PC\Data\USB-Daten\" & 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
    Zitieren Zitieren VBS fehlendes Netzlaufwerk schnell erkennen  

  2. #2
    Registriert seit
    13.11.2006
    Ort
    Lengerich
    Beiträge
    68
    Danke
    0
    Erhielt 14 Danke für 14 Beiträge

    Standard

    Hallo,

    ich habe in WinCC V7.0 ein Netzlaufwerk mal mit folgendem Code überprüft:

    Code:
    Option ExplicitFunction action
    
    
    On Error resume next
     
    Dim fs 
    Dim pfad
    
    
    Set fs = CreateObject ("Scripting.FileSystemObject")
    
    
    pfad = HMIRuntime.Tags("Default_Pfad").Read
    
    
    If Not fs.FolderExists (pfad) Then
    
    
    	HMIRuntime.Tags("Netzlaufwerk_OK").Write False
    Else
    	HMIRuntime.Tags("Netzlaufwerk_OK").Write True	
    End If
    
    
    
    
    Set fs = Nothing
    
    
    End Function
    hat super geklappt und war auch schnell.
    Der Fehler liegt oft zwischen den Ohren!

  3. #3
    Schurik ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.05.2016
    Beiträge
    9
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Du hast es wohl mit win7 gemacht. Bei mir läuft WinCE.

    Hab bei Siemens SUpport nachgefragt und die haben das Verhalten bestätigt aber haben keine Lösung dafür.

  4. #4
    Registriert seit
    08.08.2016
    Beiträge
    11
    Danke
    1
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo Schurik

    Eine Alternative wäre nicht nur mit fs.dir zu prüfen, ob das Verzeichnis existiert, sondern auch ob dein Schreibzugriff valide abläuft. Tut er dies ist alles in Ordnung, tut er dies nicht speicherst du weiter auf USB.

    Grüße

    M.

  5. #5
    Registriert seit
    11.12.2009
    Beiträge
    2.061
    Danke
    387
    Erhielt 381 Danke für 264 Beiträge

    Standard

    Alternativgedanke:

    Immer auf USB speichern und eine Routine schreiben die dafür sorgt das Daten abgeholt werden, auf dem Netzlaufwerk geschrieben werden und dann vom USB löscht?

    Grüße

    Marcel
    Stell Dir vor es geht, und keiner kriegts hin!

  6. #6
    Schurik ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.05.2016
    Beiträge
    9
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Mardonios Beitrag anzeigen
    Hallo Schurik

    Eine Alternative wäre nicht nur mit fs.dir zu prüfen, ob das Verzeichnis existiert, sondern auch ob dein Schreibzugriff valide abläuft. Tut er dies ist alles in Ordnung, tut er dies nicht speicherst du weiter auf USB.

    Grüße

    M.
    Hallo Mardonios,

    hast du mir ein Beispiel wie ich das umsetzen kann?

    Gruß

  7. #7
    Registriert seit
    08.08.2016
    Beiträge
    11
    Danke
    1
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo Schurik,

    in deinem Code würde ich folgendes versuchen:
    Code:
    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   = "\\TPPT3-PC\Data\USB-Daten\" & Result
      On Error GoTo 0                                         'Um sicher zu gehen, dass kein vorheriger Fehler mit rein spielt 
      On Error Resume Next 
      fs.FileCopy SourceFile,DestFile
      If Err.Number <> 0 then
                'Fehlerbehandlung
      End If
      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   = "\\TPPT3-PC\Data\USB-Daten\" & Result
        On Error GoTo 0                                         'Um sicher zu gehen, dass kein vorheriger Fehler mit rein spielt 
        On Error Resume Next 
        fs.FileCopy SourceFile,DestFile
        If Err.Number <> 0 then
                'Fehlerbehandlung
        End If
        fs.SetAttr  SourceFile, 0  
       End If 
      Next
    Ich konnte es leider nicht testen, da ich im Moment kein Gerät mit CE vorliegen habe. Versuche am besten die Fehlerbeschreibung auszulesen, ob dies soweit funktioniert hat. Damit sollten alle Zugriffsfehler erschlagen werden können.

    Grüße

    M.

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.409
    Danke
    392
    Erhielt 2.342 Danke für 1.949 Beiträge

    Standard

    Hallo,
    vielleicht noch ein anderer Ansatz - bei meinen Applikationen realisiere ich das so :
    Code:
    Dim Server_vorhanden(3) , fs , d , xFolder , xDrive
    Set fs = CreateObject("Scripting.FileSystemObject") 
    Server_vorhanden(1) = False
    xDrive = Left(SmartTags("Allgemein\my_Server_Verz_Daten") ,2)
    If fs.DriveExists (xDrive) Then
       Set d  = fs.GetDrive (fs.GetDriveName (xDrive))
       Server_vorhanden(1) = d.IsReady
       
       If Server_vorhanden(1) Then 
          xFolder = SmartTags("Allgemein\my_Server_Verz_Daten") + SmartTags("Allgemein\my_Anlagen_Nummer") '+ "\"
          Server_vorhanden(1) = fs.FolderExists (xFolder)
       End If  
    End If
    SmartTags("Allgemein\my_Server_Verz_Daten_OK") = Server_vorhanden(1)
    Von dem etwas anderem Objekt abgesehen sollte der Rest eigentlich bei dir auch funktionieren können ...

    Gruß
    Larry

  9. #9
    Schurik ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.05.2016
    Beiträge
    9
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Danke ich werde die beiden Ansätze testen sobald ich kann

    Gruß

Ähnliche Themen

  1. fehlendes Schlagwort
    Von beha im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 25.09.2012, 18:19
  2. Was bewirkt fehlendes Softwarpaket?
    Von Torsten2012 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 10.04.2012, 11:58
  3. Kont. Heizen, schnell Heizen, schnell kühlen
    Von Krumnix im Forum Programmierstrategien
    Antworten: 10
    Letzter Beitrag: 21.02.2011, 18:43
  4. Fehlendes Softwarepaket
    Von xpert im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 06.02.2009, 08:47
  5. Fehlendes Softwarepaket
    Von MW im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 25.01.2008, 15:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •