Wert aus db in csv datei speichern

  • Hallo,


    ich muss von einer Anlage bei dem der Ausschuss gewogen wird, nach Wechsel des vollen Behälters, durch Quittierung den Wert der Waage in eine csv Datei Protokollieren. Nur weisß ich nicht wie ich das am geschicktesten anstelle. Habe es versucht mit Variablenarchiv und mit einer Rezeptur im WINCC,
    hat aber nicht funktioniert.
    Hoffe mal auf eure Hilfe..


    Gruß Gladi

  • ANZEIGE
  • Ich habe wohl herausgefunden, wie es möglich ist Protokolle zu Drucken, aber nicht wie man eine Variable durch setzen eines Bits in eine csv speichert.
    Vielleicht ist es ja möglich, die Sache über einen Script zu bewerkstelligen, doch dafür brauchte ich evtl. eine Vorlage oder so....


  • Hallo


    Habe das schon mit der WinCC flexible Runtime gemacht. Sobald du Skripte (VB) verwenden kannst, kann ich dir ein Beispiel schicken.


    das klingt doch super. Und würde es gerne mal ausprobieren.

  • Hier ist meine Lösung:


    Skript für Daten:
    **********************************************************************
    If SmartTags("_Archivierung\ARCHIV")= False And SmartTags("_Archivierung\Header_schreiben")= True Then


    SetValue SmartTags("Panel Timer\IDB Panel Timer.Panel_Timer_1.PT"), 500 'Timer mit Einschaltverzögerung 1s starten
    SetBit SmartTags("Panel Timer\IDB Panel Timer.Panel_Timer_1.IN") 'Timer mit Einschaltverzögerung 1s starten
    If SmartTags("Panel Timer\IDB Panel Timer.Panel_Timer_1.Q")= True Then

    Const ForReading = 1, ForWriting = 2, ForAppending=8,Tristatefalse=0
    Dim fso,f,d,e,NAME,T,Z,TNR,Exist
    Dim Jahr,Monat,Tag,Date_save
    Dim A1,A2,A3,A4,A5,A6,A7,A8,A9,A10

    'Dateiname generieren
    If (Day(Date)) <10 Then
    NAME = "Logfile_"+ CStr(Year(Date))+ CStr(Month(Date))+ "0" + CStr(Day(Date))
    Else
    NAME = "Logfile_"+ CStr(Year(Date))+ CStr(Month(Date))+ CStr(Day(Date))
    End If

    'File System Objekt anlegen
    Set fso = CreateObject("Scripting.FileSystemObject")


    'Datei auf vorhandensein prüfen
    If (fso.FileExists("C:\Logs\" & NAME & ".csv")) Then 'prüfen ob Datei vorhanden
    Exist = True
    Else
    Exist = False
    End If

    'Datei zum schreiben öffnen
    If Exist = True Then
    Set f = fso.OpenTextFile("C:\Logs\" & NAME & ".csv",ForAppending,True,Tristatefalse)

    A1 = CStr(Date)
    A2 = CStr(Time)
    A3 = CStr(SmartTags("_Archivierung\IDB Schieberegister.RST_BITS.Bit.IO_18"))
    A4 = CStr(SmartTags("_Archivierung\IDB Schieberegister.RST_BITS.Bit.NIO_18"))
    A5 = CStr(SmartTags("_Archivierung\IDB Schieberegister.RST_BITS.TAW.Station_18"))
    A6 = CStr(SmartTags("_Archivierung\IDB Schieberegister.Artikeldaten_18.Fehlercode"))
    A7 = "A7 "
    A8 = "A8 "
    A9 = "A9 "
    A10= CStr(SmartTags("_Archivierung\IDB Schieberegister.Artikeldaten_18.Stecker_Buchse"))


    'String zusammensetzen
    d =A1+ ";" +A2+ ";" +A3+ ";" +A4+ " ;" +A5+ ";" +A6+ ";" +A10+ ";"

    ' Sting Schreiben
    f.WriteLine(d)
    f.Close

    SetBit SmartTags("_Archivierung\ARCHIV")
    ResetBit SmartTags("Panel Timer\IDB Panel Timer.Panel_Timer_1.IN")
    ResetBit SmartTags("_Archivierung\Taktzeit_archivieren")
    End If
    End If
    End If
    **********************************************************************
    ENDE Skript für Daten
    **********************************************************************



    Anfang Skript für Überschrift:
    ======================================================
    Const ForReading = 1, ForWriting = 2, ForAppending=8,Tristatefalse=0
    Dim fso,f,d,e,NAME,T,Z,TNR,Exist
    Dim Jahr,Monat,Tag
    Dim A1,A2,A3,A4,A5,A6,A7,A8,A9,A10

    'Dateiname generieren
    If (Day(Date)) <10 Then
    NAME = "Logfile_"+ CStr(Year(Date))+ CStr(Month(Date))+ "0" + CStr(Day(Date))
    Else
    NAME = "Logfile_"+ CStr(Year(Date))+ CStr(Month(Date))+ CStr(Day(Date))
    End If

    'File System Objekt anlegen
    Set fso = CreateObject("Scripting.FileSystemObject")


    'Datei auf vorhandensein prüfen
    If (fso.FileExists("C:\Logs\" & NAME & ".csv")) Then 'prüfen ob Datei vorhanden
    Exist = True
    Else
    ResetBit SmartTags("_Archivierung\Header_schreiben")
    Exist = False
    End If

    'Datei zum schreiben öffnen
    If Exist = False Then
    Set f = fso.OpenTextFile("C:\Logs\" & NAME & ".csv",ForAppending,True,Tristatefalse)

    A1 = "Datum"
    A2 = "Uhrzeit"
    A3 = "Bit.IO"
    A4 = "Bit.NIO"
    A5 = "Teilanwesenheit"
    A6 = "Fehlercode"
    A7 = "A7 "
    A8 = "A8 "
    A9 = "A9 "
    A10= "Stecker_Buchse"


    'String zusammensetzen
    d =A1+";"+A2+";"+A3+";"+A4+";"+A5+";"+A6+";"+A10+";"


    ' Sting Schreiben
    f.WriteLine(d)
    f.Close
    End If

    SetBit SmartTags("_Archivierung\Header_schreiben")


    ======================================================
    ENDE Skript für Überschrift:
    ======================================================



    Zur Erklärung:
    Meine Steuerung wartet darauf, dass das Bit ("_Archivierung\ARCHIV") vom Panel auf True gesetzt wird.
    Erst dann taktet Sie weiter. Nach jedem Takt setzt meine Steuerung das Bit auf False.
    Im WinCC, wird als Variable ein Taktmerker angelegt, welcher "Zyklisch fortlaufend" gelesen wird.
    Bei Wertänderung wird unter Ereignisse/Wertänderung das Skript für die Überschrift und dann das Skript für
    die Daten aufgerufen.
    Der Pfad für die Logdatei muss vorhanden sein. (von Hand anlegen)
    Es wird jeden Tag eine neue Logdatei mit der Datumserweiterung angelegt.
    Habe in dem Skript noch eine Verzögerung reingebracht.("Panel Timer\IDB Panel Timer.Panel_Timer_1.Q")
    Habe WinCC damit die Chance gegeben nach meinem Maschinentakt alle Variablen aktuallisieren zu können.
    Hatte anfangs sonst unkontrolliert die neuen und alten Daten gemischt.


    Für die Skripte muss man ein Panel größer als die 170er Serie haben, oder die Runtime auf einem PC.


    Ich hoffe ich konnte damit weiterhelfen.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden