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

Ergebnis 1 bis 8 von 8

Thema: VBS Script um Daten aus CPU an NAS zu senden

  1. #1
    Registriert seit
    11.02.2015
    Beiträge
    25
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin Moin zusammen

    Ich habe ein Problem mit einem Script in WinCC TIA V13 SP1 UP1. Zuvor habe ich schon viele Threads hier im Forum, genau so wie auf der Siemens Homepage angeschaut. Ich habe vorher noch nicht wirjlich viel Kontakt mit VBS gehabt, deswegen frage ich hier jetzt mal nach.
    In meinem Script lege ich einen Ornder auf dem NAS Laufwerk an wenn dieser noch nicht vorhanden ist.
    Danach möchte ich in diesem Ordner eine Datei erstellen.
    Ich bekomme es einfach nicht hin in dem Ordner der erstellt wurde eine Datei zu erstellen.
    Momentan ist der Code so gestaltet, dass die Datei dann im Verzeichnis vor dem erstellten Ordner angelegt wird. Das funktioniert soweit auch.

    Genutzt wird eine 319-3 PN/DP CPU und ein TP 700 Comfort HMI

    Ich wäre für jede Hilfe dankbar.

    Hier der Code:

    /////////////////////////////////////////////////////////////////////
    Dim fdatei, fordner, path, path2, ordner

    'Fehlerausgabe initialisieren

    SmartTags("Datensatz_NAS.Fehler_Objekt_erstellen") = False
    SmartTags("Datensatz_NAS.Fehler_Objekt_oeffnen") = False
    SmartTags("Datensatz_NAS.Fehler_Daten_schreiben") = False
    SmartTags("Datensatz_NAS.Fehler_Ordner_nicht_vorhanden") = False
    SmartTags("Datensatz_NAS_Fehler_Ordner_erstellen") = False
    SmartTags("Datensatz_NAS_Fehler_Ordner_nicht_vorhanden") = False

    'Datenbaustein für Fehleranalyse rücksetzen

    If SmartTags("Daten_init") = True Then
    SmartTags("Daten_init") = False
    Err.Clear
    Exit Sub
    End If

    'path = "\\nas\daten\"& CStr(Year(Date)) & "_" & CStr(Month(Date)) & "_" & CStr(Day(Date)) &"__" & CStr(Hour(Time)) &"_" & CStr(Minute(Time)) &"_" & CStr(Second(Time)) & ".csv"
    path = "\\nas\daten\" & CStr(Year(Date)) & "_" & CStr(Month(Date)) & "_" & CStr(Day(Date)) & ".csv"
    path2 = "\\nas\daten\"
    ordner = "\\nas\daten\"& CStr(Year(Date)) & "_" & CStr(Month(Date)) & "_" & CStr(Day(Date))

    'Error Routine - Fehlerroutine

    On Error Resume Next

    'Ordner für Datum erstellen

    Set fordner = CreateObject("Filectl.Filesystem")

    If fordner.dir(ordner) = "" Then fordner.mkdir(ordner)

    If Err.Number <> 0 Then
    SmartTags("Datensatz_NAS_Fehler_Ordner_erstellen") = True
    Err.Clear
    Exit Sub
    End If

    fordner.Close
    Set fordner = Nothing

    'If fdatei.dir(ordner) = "" Then
    ' SmartTags("Datensatz_NAS_Fehler_Ordner_nicht_vorhanden") = True
    'End If

    'Create object - Objekt erstellen

    Set fdatei = CreateObject("Filectl.File")

    'If Err.Number <> 0 Then
    ' SmartTags("Datensatz_NAS.Fehler_Objekt_erstellen") = True
    ' Err.Clear
    ' Exit Sub
    'End If
    Err.Clear

    'Open the textfile - Öffnen der Textdatei

    fdatei.open path , 2

    If Err.Number <> 0 Then
    SmartTags("Datensatz_NAS.Fehler_Objekt_oeffnen") = True
    Err.Clear
    Exit Sub
    End If

    'Write values into the textfile
    fdatei.LinePrint ("Datensatz1; " & SmartTags("Datensatz_NAS.Nummer1") & ";")
    fdatei.LinePrint ("Datensatz2; " & SmartTags("Datensatz_NAS.Nummer2") & ";")

    If Err.Number <> 0 Then
    SmartTags("Datensatz_NAS.Fehler_Daten_schreiben") = True
    Err.Clear
    Exit Sub
    End If

    'Close file - Datei schließen
    fdatei.Close
    Set fdatei = Nothing
    //////////////////////////////////////////////////
    Zitieren Zitieren VBS Script um Daten aus CPU an NAS zu senden  

  2. #2
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Dein "NAS" ist ein Ordner auf ein Server irgendwo ?
    Das TP700 Panel muss zuerst in das Netzwerk eingebunden werden. Bist du so weit ?
    PN/DP hat ein Checkliste erstellt:
    Von Panel auf PC über LAN zugreifen

    edit: Aha, so weit bisst du doch.

    Es antwortet nicht deine Frage, aber du machst jeden Tag ein neuen Ordner und ein neuen Datei. Warum genügt es nicht mit ein neuen Datei pro Tag in denselben Ordner ?
    Es ist ja nicht so schlimm wenn es eine Menge Dateien gibt mit unterschiedliche Namen die von den Datum generiert sind. So mache ich es selber.
    Geändert von JesperMP (24.02.2015 um 17:53 Uhr)
    Jesper M. Pedersen

  3. #3
    Registriert seit
    17.10.2007
    Beiträge
    263
    Danke
    5
    Erhielt 52 Danke für 48 Beiträge

    Standard

    Hallo Don ,

    ich hatte gewisse Schwierigkeiten, deinen Code zu lesen, da zum einen die Einrückung fehlt und zum anderen deine auskommentierten Zeilen nur schwer zu erkennen waren.

    Nichtsdestotrotz hier meine Hinweise:
    + In deiner ursprünglichen Pfadangabe fehlt m.E. ein Backslash zwischen dem Ordner- und dem Dateinamen.
    + Ich würde die Variablen etwas eindeutiger benennen, 'fordner' und 'ordner' z.B. lassen sich nur schwer unterscheiden.

    Gruß, Fred

  4. Folgender Benutzer sagt Danke zu faust für den nützlichen Beitrag:

    don_looney (16.03.2015)

  5. #4
    don_looney ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.02.2015
    Beiträge
    25
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von JesperMP Beitrag anzeigen
    Es antwortet nicht deine Frage, aber du machst jeden Tag ein neuen Ordner und ein neuen Datei. Warum genügt es nicht mit ein neuen Datei pro Tag in denselben Ordner ?
    Es ist ja nicht so schlimm wenn es eine Menge Dateien gibt mit unterschiedliche Namen die von den Datum generiert sind. So mache ich es selber.
    Das Script ist nur ein Prototyp. Wenn es fertig ist werden in jedem Ordner sehr viele einzelne Datein liegen.
    Ich wollte nur den allgemeinen Ablauf fertig haben um dann die Feinheiten zu programmieren.

    @ Faust

    Danke das du dir die Zeit genommen hast den Code durch zu sehen. Ich werd das mal ausprobieren. Hab vorhin nur schnell den Thread eröffnet weil ich kurz angebunden war.
    Kann es jedoch erst am Freitag wieder testen.
    Die Variablen werde ich mal umbeschriften.

    Thx für die Antworten bis jetzt

  6. #5
    don_looney ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.02.2015
    Beiträge
    25
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    - sorry doppelpost
    Geändert von don_looney (24.02.2015 um 20:54 Uhr) Grund: doppelpost

  7. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard

    Zitat Zitat von don_looney Beitrag anzeigen
    Ich bekomme es einfach nicht hin in dem Ordner der erstellt wurde eine Datei zu erstellen.
    Momentan ist der Code so gestaltet, dass die Datei dann im Verzeichnis vor dem erstellten Ordner angelegt wird. Das funktioniert soweit auch.
    Hallo,
    ich verstehe im Augenblick dein Problem nicht wirklich. Die beiden von mir zitierten Sätze widersprechen sich nach meiner Meinung.
    Was funktioniert nun und was nicht ?
    Willst du nur einmal am Tag eine Datei erstellen ? Oder willst du jeden Tag eine Datei erstellen in die dann fortlaufend (also in gewissen Zeitabständen) immer weitere Datenzeilen hinein geschrieben werden ?
    Was mir auffällt ist : du machst einfach ein Open (forWriting) ohne zu überprüfen, ob es die Datei nicht bereits gibt - in dem Fall mußt du die Datei entweder vorher löschen oder ein Open for Appending (Parameter machen um der bereits bestehenden Datei weitere Zeilen anzuhängen.

    Gruß
    Larry

  8. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Wie faust schon schrieb: da fehlt ein Backslash. So geht es besser:
    Code:
    ordner = "\\nas\daten\" & CStr(Year(Date)) & "_" & CStr(Month(Date)) & "_" & CStr(Day(Date))
    path = ordner & "\" & CStr(Hour(Time)) & "_" & CStr(Minute(Time)) & "_" & CStr(Second(Time)) & ".csv"
    Die ollen Unterstriche würde ich weglassen, dafür aber dafür sorgen, daß die Datumsteile immer zweistellig sind:
    Code:
    ordner = "\\nas\daten\" & CStr(Year(Date)) & Right("0" & CStr(Month(Date)), 2) & Right("0" & CStr(Day(Date)), 2)
    path = ordner & "\" & Right("0" & CStr(Hour(Time)), 2) & Right("0" & CStr(Minute(Time)), 2) & Right("0" & CStr(Second(Time)), 2) & ".csv"
    Beides ist unnötig:
    Code:
    fordner.Close
    Set fordner = Nothing
    Für Fehlerausgaben und Testausgaben zum Debuging verwende ich die Systemfunktion "ShowSystemAlarm" und eine Meldeanzeige.

    Tip: Programmcode behält die Einrückungen, wenn man ihn beim Posten zwischen [CODE]-Tags einfügt - siehe der #-Button im Beitragseditor. Oder drücke unter diesem Beitrag "Zitieren", dann siehst Du die [CODE]-Tags vor und hinter dem Programmcode.
    Code:
    If Err.Number <> 0 Then
        ShowSystemAlarm "Fehler beim Erstellen des Ordners '" & ordner & "'"
        Err.Clear
        Exit Sub
    End If
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    don_looney (16.03.2015)

  10. #8
    don_looney ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.02.2015
    Beiträge
    25
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    ich verstehe im Augenblick dein Problem nicht wirklich. Die beiden von mir zitierten Sätze widersprechen sich nach meiner Meinung.
    Was funktioniert nun und was nicht ?
    Willst du nur einmal am Tag eine Datei erstellen ? Oder willst du jeden Tag eine Datei erstellen in die dann fortlaufend (also in gewissen Zeitabständen) immer weitere Datenzeilen hinein geschrieben werden ?
    Was mir auffällt ist : du machst einfach ein Open (forWriting) ohne zu überprüfen, ob es die Datei nicht bereits gibt - in dem Fall mußt du die Datei entweder vorher löschen oder ein Open for Appending (Parameter machen um der bereits bestehenden Datei weitere Zeilen anzuhängen.

    Gruß
    Larry
    Ich werde mehrmals am Tag Datein in dem Ordner für den jeweiligen Tag ablegen. Das Format der csv Datei ist noch nicht richtig. Es war nur ein Versuch das dass Script soweit läuft. Die Feinheiten
    wollte ich später machen. Mir ging es erstmal um die Funktion.

    @ PN/DP

    Danke für die genauen Angaben zu meinem Code Ich werde es am Freitag ausprobieren und meine Erkenntnisse dann posten.
    Vielen Dank schon mal an alle die sich dem Thema annehmen.

    Ich bin noch nicht so fit mit VBS


    Ich habe es gerade getestet und es funktioniert wunderbar. Vielen Dank.
    Eine Frage habe ich jedoch noch zu der Fehlerroutine. Ich hatte es erst auch mit einer Fehlerausgabe versucht als Meldefenster.
    Nur weiß ich nicht genau wie ich dieses Meldefenster der Fehlerausgabe dem Script zuweise, deswegen bin ich auf einen DB umgestiegen.
    Wäre nett wenn mir das jemand erklären könnte.
    Geändert von don_looney (27.02.2015 um 11:51 Uhr)

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 29.01.2013, 07:34
  2. Mit VBS Daten aus Excel Listen holen und schreiben
    Von Hahnus im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 09.09.2011, 16:21
  3. Antworten: 3
    Letzter Beitrag: 28.07.2011, 11:14
  4. Daten vom PC an CPU senden
    Von MCerv im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 18.02.2011, 09:04
  5. Antworten: 0
    Letzter Beitrag: 05.08.2010, 08:14

Stichworte

Lesezeichen

Berechtigungen

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