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

Ergebnis 1 bis 10 von 10

Thema: Netzlaufwerkspfad auslesen und in einen String kopieren // WinCC V7.2

  1. #1
    Registriert seit
    11.03.2013
    Beiträge
    47
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,
    ich habe folgendes Problem. Bei unserem Kunde werden csv. Files auf einen Netzlaufwerk gespeichert und ich muss dem Kunden, in einem Telegramm, mitteilen wo sich die Daten befinden.

    Mein Speicherpfad sieht so aus X: Datenschreiber

    Da X: ein Netzlaufwerk ist, befindet sich "dahinter" der folgenden Pfad:
    EC005030 (\\144.187.46.154\weiweiwdf\$dferrt\004\Prod_Data\EC050)(X: )

    Der Laufwerksbuchstabe wird sich nicht ändern, nur der Rest kann sich im Laufe der Zeit ändern.
    Jetzt frag ich mich wie ich diese Pfad Angabe mit Hilfe von WinCC auslesen kann und in einen String kopieren kann.

    Danke im Voraus

    Gruß
    Zitieren Zitieren Netzlaufwerkspfad auslesen und in einen String kopieren // WinCC V7.2  

  2. #2
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.351
    Danke
    452
    Erhielt 692 Danke für 517 Beiträge

    Standard

    Gegenfrage.

    X ist ja ein Netzlaufwerk das am PC angelegt sein muss und das jemand auf besagten Pfad verbunden haben muss.
    Sonst könntest du ja nicht versuchen den kompletten Pfad dahinter auszulesen.

    Wenn sich der Pfad hinter X ändert, dann muss doch auch jemand das Netzlaufwerk am PC entsprechend anpassen. Damit der neue Pfad bekannt wird.
    Nur dann wäre es für dich möglich den neuen Pfad hinter X auszulesen.

    Was spricht also dagegen den Pfad: X: Datenschreiber zu verwenden?
    Das Netzlaufwerk X muss ja (für deine Annahme) immer einen gültigen Pfad haben
    Geändert von RONIN (14.01.2015 um 15:00 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  3. #3
    Registriert seit
    11.03.2013
    Beiträge
    47
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi ,
    Ich bin bei Siemens, da wird das Netzwerk von einem anderem Standort aus verwaltet.
    Auf dem PC wird eine Batch Datei ausgeführt die für das Anlegen der Verknüpfung zuständig ist.
    Unter Umstände bekommt es vor Ort niemand mit wenn sich der Pfad ändert.
    Aus dem Grund benötige irgendwas um diesen Pfad auszulesen.
    Gruß

  4. #4
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.351
    Danke
    452
    Erhielt 692 Danke für 517 Beiträge

    Standard

    Ja schon klar.

    Aber selbst wenn der Netzwerkpfad per Batch verwaltet/geändert wird, ist der Pfad X: ja trotzdem immer gültig auf das Laufwerk auf das du hin willst, oder?

    OB X nun..
    (\\144.187.46.154\weiweiwdf\$dferrt\004\Prod_Data\EC050)
    oder...
    (\\144.187.46.154\weiweiwdf\$dferrt\004\Prod_Data\WASAUCHIMMMERFÜREINPFAD)
    ist...

    X = X
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  5. #5
    Registriert seit
    11.03.2013
    Beiträge
    47
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ja richtig, X: ist immer gültig .
    ICH muß dennoch in einem Telegramm den Speicherort senden und da reicht es leider nicht, wenn ich nur das Xatenschreiber sende.
    An dieser Stelle wird der ganze Pfadname übermittelt. Und dieser Name kann sich ändern.

  6. #6
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.351
    Danke
    452
    Erhielt 692 Danke für 517 Beiträge

    Standard

    OK, jetzt (Telegramm senden) ist mir klar warum du den absoluten Pfad haben willst.

    Du könntest in Vbs folgendes machen (kurz google bemüht)
    Code:
    Set WshNetwork = WScript.CreateObject("WScript.Network") 
    Set oDrives = WshNetwork.EnumNetworkDrives 
    
    WScript.Echo "Zuordnungen der Netzlaufwerke:" 
    
    For i = 0 to oDrives.Count - 1 Step 2 
        WScript.Echo "Laufwerk " & oDrives.Item(i) & " = " & oDrives.Item(i+1) 
    Next
    
    Set WshNetwork = Nothing
    Set oDrives = Nothing
    Das ist ein Auszug aus der Beschreibung der EnumNetworkDrives Method.
    Listet alle Netzlaufwerke inkl. Pfade auf.

    Wenn ich den Code hier bei mir als .vbs abspeichere und ausführe bekommen ich in den Echo-Nachrichten der For-Schleife für
    oDrives.Item(i) den Laufwerksbuchstaben + Doppelpunkt
    oDrives.Item(i+1) den Absolutpfad

    Das müsste sich so (ohne die Echo-Befehle) eigentlich ins WinCC-vbs übernehmen lassen.
    Wenn du also innerhalb der for-Schleife einen Vergleich auf "X:" einführst und den Wert aus oDrives.Item(i+1) übernimmst, müsstest du haben was du suchst.
    Geändert von RONIN (14.01.2015 um 15:47 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  7. #7
    Registriert seit
    11.03.2013
    Beiträge
    47
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Ronin,

    danke erstmal für die schnelle Antwort.

    Vielleicht könntest Du mir noch einen kleine Hilfestellung beim Code geben.
    Ich habe leider von VBS null Ahnung.

    Im Code gibt es den "Dateipfad_MES" dort sollte der Laufwerkspfad eingetragen werden.
    Der Dateipfad_MES ist eine 8-Bit Textvariable und ist 101 Zeichen lang.
    Der Laufwerksbuchstabe ist ja immer X:

    Vielen Dank im voraus

    Netzlaufwerk auslesen_VBS.jpg

    Code:
    Sub procedure1
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set oDrives = WshNetwork.EnumNetworkDrives
    
    'WScript.Echo "Zuordnung der Netzlaufwerke")
    
    For i = 0 To oDrives.Count - 1 Step 2
    'WScript.Echo "Laufwerk " & oDrives.Item(i) & " = " & odrives.Item(i+1)
    Next
    Set WshNetwork = Nothing
    Set oDrives = Nothing
    End Sub
    
    
    
    'Dateipfad_MES

  8. #8
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.351
    Danke
    452
    Erhielt 692 Danke für 517 Beiträge

    Standard

    Innerhalb der for schleife müsste sowas in der Art stehen
    Code:
    If odrives.Item(i) = "X:" Then
          SmartTags("Dateipfad_MES") = " & odrives.Item(i+1)
    End If
    Kann jetzt schlecht. Ich schau dir heute Abend mal drüber.
    Geändert von RONIN (14.01.2015 um 16:49 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  9. #9
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.351
    Danke
    452
    Erhielt 692 Danke für 517 Beiträge

    Standard

    So, jetzt hatte ich ein wenig Zeit es aus-zu-programmieren.
    Im großen und ganzen ist es das selbe wie oben. Habe nur die nötigen Variablendefinitionen + ein paar Fehlererkennungen eingefügt.

    WICHTIG!!!
    Anzumerken ist aber dass EnumNetworkDrives nur erfolgreich verbundene Netzlaufwerke zurückliefert.
    Nicht-verbundene Netzlaufwerke (werden im Arbeitsplatz mit einem roten X angezeigt) sind nicht enthalten.
    Wenn du damit leben kannst ist OK, sonst wird ein wenig schwieriger.

    Getestet und WinCC v7.3 als Buttonscript, kann aber überall verwendet werden.
    Code:
    On Error Resume Next
    
    Dim WshNetwork, oDrives
    Dim Path
    Dim i, bOK
    
    'WScript.Network - Objekt
    Set WshNetwork = CreateObject("WScript.Network") 
    Set oDrives = WshNetwork.EnumNetworkDrives
    
    Path = ""
    bOK = FalSE
    If Err.Number = 0 Then
        'Collection nach vorgegebenen Laufwerksbuchstaben durchsuchen
        For i = 0 To oDrives.Count - 1 Step 2 
             If oDrives.Item(i) = "X:" Then    'Vorgabe Laufwerksbuchstabe
                Path = oDrives.Item(i+1) 
                Exit For
            End If
        Next
        'Prüfe erhaltenen Pfad: Erste beiden Stellen "\\"; Länge < 100
        If (Left(Path,2) = "\\") And (Len(Path)<100) Then
            SmartTags("Dateipfad_MES") = Path   'Pfad auf WinCC-Variable übergeben
            bOK = TrUE
        End If
    End If
    
    If bOK = FalSE Then
        'Mögliche Fehlerreaktion
    End If
    
    Set WshNetwork = Nothing
    Set oDrives = Nothing
    Geändert von RONIN (14.01.2015 um 18:50 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  10. #10
    Registriert seit
    11.03.2013
    Beiträge
    47
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hey super,
    Ich habe es gerade ausprobiert und es funzt.
    Morgen werde ich dann die Funktion zyklisch ansteuern und dann sollte es das gewesen sein.

    Besten Dank nochmal

    Gruß
    Asphaltbeule

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 19.11.2012, 12:22
  2. String von ein DB in einen anderen kopieren
    Von Werner1 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 15.05.2012, 15:54
  3. Antworten: 4
    Letzter Beitrag: 15.11.2011, 09:39
  4. Ein String kopieren in einen anderen String
    Von CanYouHelpMe im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.09.2008, 17:21
  5. Antworten: 5
    Letzter Beitrag: 21.06.2007, 17:04

Lesezeichen

Berechtigungen

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