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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Wincc flexible 2008 CSV Datei schreiben per Script

  1. #1
    Registriert seit
    15.03.2011
    Beiträge
    37
    Danke
    12
    Erhielt 5 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Forum,

    bitte um Hilfe zur Erzeugung einer CSV Datei.
    Ich scheitere am Weiterschreiben einer hier exemplarischen Temperatur ( kommen noch andere Werte hinzu ).
    Der Header soll bleiben und dann immer in einer neuen Zeile den Wert alle Sekunde aufgenommen.

    Vielen Dank für Tipps

    Hier mein Script

    Code:
    'Deklaration von lokalen Variablen
    Dim fso, f, ts, path, file, myfile, Trigger, Shut
    
    Shut = SmartTags("AM: Prf running")
    Trigger = SmartTags("M :Trigger")
    myfile = Dateiname
    path = "C:\test\"
    file = path & myfile & ".csv"
    
    'Abfrage ob Dateinamen eingegeben wurde
    If myfile = "" Then 
        Error_Dateiname = 1
    Else
        Error_Dateiname = 0    
    End If
    
    'Objekt erstellen
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'Abfrage Ordner vorhanden, wenn nicht dann erzeugen
    If Not fso.FolderExists("c:\test") Then 
        fso.CreateFolder("c:\test")
    End If
    
    'Abfrage Datei vorhanden, wenn nicht dann erzeugen
    If Not fso.FileExists(file) Then   
        fso.CreateTextFile(file)              
    End If 
    
    Set f = fso.GetFile(file)    
    Set ts = f.OpenAsTextStream(2, -2)    
    
    'Werte in die Datei schreiben
    ts.WriteLine("Schritt Nr; " & SmartTags("DB: DATA TEMP SEQ 1 W.Step_Nr") & ";")
    ts.WriteLine("Solldruck; " & SmartTags("DB: DATA TEMP SEQ 2 W.Sollwert_PropVentil_PRF") & ";")
    
    
    If Trigger = True Then
    SmartTags("DB: BUTTON HMI.Test121") = 1
    ts.WriteLine("Schritt Nr; " & SmartTags("DB: INST ANALOG IN.ACTUAL_VALUES.TEMP_SCHRANK") & ";")
    Else
        
    SmartTags("DB: BUTTON HMI.Test121") = 0
    
    End If
    
    If Shut = True Then
    
    'Close file - Datei schließen
    ts.Close
    
    Set ts  = Nothing
    Set f   = Nothing
    Set fso = Nothing
    
    End If
    Zitieren Zitieren Wincc flexible 2008 CSV Datei schreiben per Script  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.552
    Danke
    823
    Erhielt 2.823 Danke für 2.273 Beiträge

    Standard

    Du mußt die Datei im Modus 8 "Append" öffnen, beim Modus 2 wird der Dateiinhalt beim Öffnen gelöscht. (siehe Hilfe zur OpenAsTextStream-Methode)

    Wenn die Datei noch nicht existiert, dann neu anlegen und Header schreiben.
    Danach/Sonst die Datenzeile schreiben.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    olmuk ist offline Benutzer
    Themenstarter
    Registriert seit
    15.03.2011
    Beiträge
    37
    Danke
    12
    Erhielt 5 Danke für 4 Beiträge

    Standard

    Danke Harald,
    leider verstehe ich nicht Deine Antwort - bedeutet das bei jedem Aufruf des Scriptes die Datei neu beschrieben wird ?
    Ich rufe das Script beim Öffnen eines Bildes auf.
    Schau erst mal die Hilfe nach.

    Gruss Uwe

  4. #4
    Registriert seit
    14.01.2015
    Beiträge
    590
    Danke
    171
    Erhielt 95 Danke für 87 Beiträge

    Standard

    Harald meint vermutlich den Befehl:
    f.Open mydatei, 8
    der muss noch vor dem WriteLine rein.

  5. Folgender Benutzer sagt Danke zu DeltaMikeAir für den nützlichen Beitrag:

    olmuk (26.08.2016)

  6. #5
    Registriert seit
    14.01.2015
    Beiträge
    590
    Danke
    171
    Erhielt 95 Danke für 87 Beiträge

    Standard

    Hier ein funktionierendes Beispiel:

    Wenn die Datei nicht existiert, wird sie erstellt und eine Headerzeile sowie eine Datenzeile geschrieben
    Wenn die Datei existiert, wird nur eine Datenzeile geschrieben:
    Code:
    Dim f, fs ,datei 
    'Objekt erzeugen
    Set f = CreateObject("FileCtl.File")
    Set fs=CreateObject("FileCtl.Filesystem")
    datei = "\Storage Card USB\Dateiname.csv"
    'Abfrage ob Datei schon existiert
    If fs.dir(datei) = "" Then
    f.Open datei, 8 
    f.Lineprint "Wert1;Wert2"
    f.Close
    End If
    
    f.Open datei, 8
    f.LinePrint (SmartTags("Wert1"))&";"&( SmartTags("Wert2"))
    f.Close                
    Set f = Nothing
    Geändert von DeltaMikeAir (25.08.2016 um 14:55 Uhr)

  7. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.552
    Danke
    823
    Erhielt 2.823 Danke für 2.273 Beiträge

    Standard

    Zitat Zitat von olmuk Beitrag anzeigen
    leider verstehe ich nicht Deine Antwort - bedeutet das bei jedem Aufruf des Scriptes die Datei neu beschrieben wird ?
    Ich rufe das Script beim Öffnen eines Bildes auf.
    Hallo Uwe,

    Du solltest das Skript nur aufrufen, wenn Du auch was in die Datei schreiben willst. Wann das ist, das mußt Du wissen.
    Oder Du mußt im Skript vor dem Öffnen + Schreiben prüfen, ob ein Trigger erfüllt ist.

    Da Du eine PC-Runtime programmierst, müßte ein funktionierendes Minimal-Skript etwa so aussehen:
    Code:
    Const ForAppend = 8
    Dim fso, f, file
    
    file = "C:\test\myfile.csv"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    If Not fso.FileExists (file) Then 
        Set f = fso.CreateTextFile(file, True)
        f.WriteLine "Wert1;Wert2"
        f.Close
    End If
    
    If fso.FileExists (file) Then
        Set f = fso.OpenTextFile(file, ForAppend)
        f.WriteLine SmartTags("Wert1") & ";" & SmartTags("Wert2")
        f.Close
    End If
    Zu Dateien lesen/schreiben siehe auch mal
    Wie können an einem PC mit WinCC flexible Informationen in einer Textdatei mit Hilfe eines Skripts gespeichert und ausgelesen werden?
    FAQ: Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    olmuk (26.08.2016)

  9. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.552
    Danke
    823
    Erhielt 2.823 Danke für 2.273 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Du mußt die Datei im Modus 8 "Append" öffnen, beim Modus 2 wird der Dateiinhalt beim Öffnen gelöscht. (siehe Hilfe zur OpenAsTextStream-Methode)
    Zitat Zitat von olmuk Beitrag anzeigen
    leider verstehe ich nicht Deine Antwort - bedeutet das bei jedem Aufruf des Scriptes die Datei neu beschrieben wird ?
    Meine Antwort bezog sich auf Deinen Code:
    Zitat Zitat von olmuk Beitrag anzeigen
    Ich scheitere am Weiterschreiben einer hier exemplarischen Temperatur ( kommen noch andere Werte hinzu ).
    Der Header soll bleiben und dann immer in einer neuen Zeile den Wert alle Sekunde aufgenommen.
    [...]
    Code:
    Set ts = f.OpenAsTextStream(2, -2)
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    olmuk (26.08.2016)

  11. #8
    olmuk ist offline Benutzer
    Themenstarter
    Registriert seit
    15.03.2011
    Beiträge
    37
    Danke
    12
    Erhielt 5 Danke für 4 Beiträge

    Standard

    Erstmal Danke an Euch beiden !
    Das wird morgen getestet und ich berichte dann......

    Gruss Uwe

  12. #9
    olmuk ist offline Benutzer
    Themenstarter
    Registriert seit
    15.03.2011
    Beiträge
    37
    Danke
    12
    Erhielt 5 Danke für 4 Beiträge

    Standard

    Hallo,

    es hat sich etwas an den Anforderungen geändert so das ich nun immer aufzeichne ( pro sek ).
    Anbei das Script welches fuppt - die Funktion append war sehr hilfreich.
    Das Script wird nun mit Start der Prüfung ( M13.0 ) aufgerufen und mit CPU-Takt 1 sek getriggert.
    Das erzeugt leider dopplete Einträge - hat hier jemand eine Idee ?

    Code:
    Const ForAppend = 8
    Dim fso, f, file, myfile, path
    
    
    myfile = SmartTags("DB: MISC.Dateinamen")
    path = "C:\test\"
    file = path & myfile & ".csv"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    If Not fso.FileExists (file) Then 
        Set f = fso.CreateTextFile(file, True)
        f.WriteLine(" Header Zeile 1; " & ";")
        f.WriteLine(" Header Zeile 2; " & ";")
        f.WriteLine(" ; " & ";")
        f.WriteLine(" Zeitachse; " & " Temperatur; " & " Istdruck;" & ";")
    End If
    
    If fso.FileExists (file) Then
        Set f = fso.OpenTextFile(file, ForAppend)
        f.WriteLine SmartTags("DB: INST TIMER GESAMT.TON_GESAMT.ET") & ";" & SmartTags("DB: INST ANALOG IN.ACTUAL_VALUES.TEMP_SCHRANK") & ";" & SmartTags("DB: INST ANALOG IN.ACTUAL_VALUES.DRUCK_PRUEFUNG")
        f.Close
    End If
    Trigger.PNG
    CSV1.PNG

  13. #10
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.698
    Danke
    72
    Erhielt 748 Danke für 503 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    wenn du ein bit nimmst hast du nur die Möglichkeit wertänderung. also wird das script bei kommenden und gehenden Ereignis aufgerufen
    entweder du nimmst ein Byte und die Funktion grenzwert überschritten oder im script

    if Smarttags(M13.0) = false then Exit sub
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 02.06.2016, 12:24
  2. Step 7 Wincc Flexible CSV Datei erstellen
    Von Junge im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 17.08.2015, 12:40
  3. Antworten: 7
    Letzter Beitrag: 27.02.2015, 17:04
  4. WINCC flex - Daten in csv-Datei schreiben
    Von dirknico im Forum HMI
    Antworten: 8
    Letzter Beitrag: 02.12.2013, 11:39
  5. Antworten: 1
    Letzter Beitrag: 02.03.2009, 13:04

Lesezeichen

Berechtigungen

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