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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: WinCC Flex 2007 : Meldearchiv mit VBScript

  1. #11
    Registriert seit
    10.06.2010
    Beiträge
    65
    Danke
    9
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Larry,

    ja ich war mal artig und habe schön die Suchfunktion benutzt...

    Zur Erläuterung. Ich erzeuge mir in meiner Runtime über Scripte eigene CSV-Archive mit Ist und Sollwerten. Es werden je Tag zwei Archive erzeugt.
    Archiv 01 (Archiv_YYYY.MM.DD_AM.csv) von 00:00 - 11:59Uhr und Archive 02 (Archiv_YYYY.MM.DD_PM.csv) von 12:00 - 23:59Uhr.

    Jetzt habe ich die Aufgabe zu diesen Variablenarchiven ebenfalls die Meldearchive zu speichern.

    Jetzt wollte ich mal prüfen wie ich das am besten umsetzten könnte.

    Hast Du da vielleicht einen Tipp für mich?

    Gruß Hausen

  2. #12
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.399 Danke für 1.999 Beiträge

    Standard

    Keinen anderen als den, den Harald (PN/DP) hier gegeben hat - aber den hattest du ja auch schon gesehen.

    Ich würde an deiner Stelle den Aufbau dieser Dateien mal analysieren und sie dann über einen Uhrzeit-Trigger einlesen, überarbeiten/konvertieren (wie schon von Harald geschrieben) und dann das Resultat dessen abspeichern.
    Wie das dann im Detail aussieht ist ein bißchen davon abhängig, was du genau brauchst ...

    Gruß
    Larry

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.289 Danke für 2.658 Beiträge

    Standard

    Zitat Zitat von Hausen Beitrag anzeigen
    Jetzt habe ich die Aufgabe zu diesen Variablenarchiven ebenfalls die Meldearchive zu speichern.

    Jetzt wollte ich mal prüfen wie ich das am besten umsetzten könnte.
    Ein Meldearchiv speichern ist erstmal kein Akt, das wird einfach projektiert (siehe WinCC flex Hilfe "Meldearchiv"), dafür braucht man keine Skripte und keine Funktionsaufrufe. Nur wenn einem das von WinCC flex erstellte Archiv nicht gefällt oder man ein abweichendes Handling braucht, dann wird es aufwendig. Vielleicht schaust Du Dir zuerst mal an, ob das Standard-Meldearchiv Deine Aufgabe erfüllt.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #14
    Registriert seit
    10.06.2010
    Beiträge
    65
    Danke
    9
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo Harald,

    leider Erfüllt das meinen Zweck nicht. Ich möchte ja gerne das Meldearchiv passend zu meinen Variablenarchiven nach der oben genannten Syntax (siehe Beitrag #11)
    abspeichern. Im Prinzip habe ich auch schon eine fast funktionierende Version die ich zur Zeit aber noch optimiere bzw. teste.

    Dazu hätte ich noch eine Frage die Ihr mir vielleicht beantworten könnt?!

    Gibt es eine Möglichkeit eine existierende Datei durch einen Kopierbefehl zu erweitern?

    Das heißt, das ich eine Datei mit Inhalt kopiere und diese in eine existierende Datei hinein schreibe ohne den Inhalt zu überschreiben?

    Gruß Hausen

  5. #15
    Registriert seit
    10.06.2010
    Beiträge
    65
    Danke
    9
    Erhielt 3 Danke für 3 Beiträge

    Standard

    So sieht das zur Zeit aus. Der Script wird über den Aufgabenplaner jede Stunde bei Minute 00 ausgeführt.

    Code:
    Dim f, fs, i, SourcePath, DestinPath, FileName, timeStamp
    
    
    ' Ausführen nur um 00Uhr und um 12Uhr
    If Hour(Now) = 0 Or Hour(Now) = 12 Then
    
    
    ' FileSystemObject erstellen
    If SmartTags("SYS\_System_Runtime") Then 
        'Runtime      
        Set f = CreateObject("WScript.Shell")
        Set fs = CreateObject("Scripting.FileSystemObject")
    Else                                      
        'WinCE
        Set f= CreateObject("filectl.file")
        Set fs = CreateObject("FileCtl.FileSystem")
    End If
    
    
    ' Quellpfad festlegen 
    SourcePath = "E:\Linie\AlarmFiles\"
    
    
    ' Ablagepfad festlegen 
    DestinPath = SmartTags("PDE\_Archiv_StoragePath")
    
    
    ' Zeitstempel festlegen (0:00 bis 11:59Uhr = AM / 12:00 bis 23:59Uhr PM)
    If Hour(Now) = 12 Then
        'Um 12Uhr werden die Meldungen von 0:00 bis 11:59Uhr = AM gespeichert
        timeStamp = "AM"
    Else
        'Um 00Uhr werden die Meldungen von 12:00 bis 23:59Uhr = PM gespeichert
        timeStamp = "PM"
    End If
    
    
    ' Dateiname zusammensetzen -> Archiv_YYYY.MM.DD_xx.csv  (xx = AM/PM)
    If Mid(Date,3,1) = "/" Then
        ' Datum/Uhrzeit im Englischen Format    
        FileName = "Alarme_" & Right(Date,4) & "." & Left(Date,2) & "." & Mid(Date,4,2) & "_" & Right(Time,2) & ".csv"    
    Else
        ' Datum/Uhrzeit im Europäischem Format
        FileName = "Alarme_" & Right(Date,4) & "." & Mid(Date,4,2) & "." & Left(Date,2) & "_" & timeStamp & ".csv"
    End If
        
        ShowSystemAlarm "Meldearchiv stoppen / stop message archive"
        StopLogging hmiAlarmLog, "Errors_"
        
        SYS_Delay 2
        
        ShowSystemAlarm "Meldearchiv kopieren / copy message archive"
        CopyLog hmiAlarmLog, "CopyErrors_", "Errors_", hmiOverwrite, hmiYes
        
        SYS_Delay 2
        
        ShowSystemAlarm "Meldearchiv starten / start message archive"    
        StartLogging hmiAlarmLog, "Errors_"
        
        SYS_Delay 2
        
        ShowSystemAlarm "Meldearchiv umbenennen und speichern / rename and save message archive"
        If SmartTags("SYS\_System_Runtime") Then 
        'Runtime    
            fs.CopyFile(SourcePath & "CopyErrors_0.csv"), (DestinPath & FileName),1
        Else                                      
        'WinCE
            fs.FileCopy(SourcePath & "CopyErrors_0.csv"), (DestinPath & FileName)
        End If
        
    ' Fehlerbehandlung
    If Err.Number <> 0 Then
        ' Kopierauftrag mit Fehlern beendet/abgebrochen
        ShowSystemAlarm "Fehler/fault: " & Err.Description
        Err.Clear
        Exit Sub
    Else
        ' Kopierauftrag ohne Fehler durchgeführt
        ShowSystemAlarm "Meldearchiv kopieren abgeschlossen / copying message archive completed"    
    End If
    
    
    ' Verwendeten Speicher wieder freigeben
    Set fs = Nothing
    Set f  = Nothing
    
    
    End If
    Geändert von Hausen (14.10.2015 um 15:25 Uhr)

  6. #16
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.289 Danke für 2.658 Beiträge

    Standard

    Zitat Zitat von Hausen Beitrag anzeigen
    Gibt es eine Möglichkeit eine existierende Datei durch einen Kopierbefehl zu erweitern?

    Das heißt, das ich eine Datei mit Inhalt kopiere und diese in eine existierende Datei hinein schreibe ohne den Inhalt zu überschreiben?
    Dazu müsste man "zu Fuß" die Zieldatei im Append-Modus öffnen und in einer Schleife aus der Quelldatei zeilenweise den Inhalt in die Zieldatei kopieren (f.ReadLine/f.LineInputString aus Quelldatei, f.WriteLine/f.LinePrint in die Zieldatei)


    Was mir an Deinem Skript auffällt:
    - wenn Date oder Time mehrfach im Skript verwendet wird, sollte man korrekterweise nur einmal die Systemzeit abfragen und in einer Variable zwischenspeichern
    - Interpretation von Datums-/Uhrzeitteilen sollte man unabhängig von den regionalen Anzeigeeinstellungen mit der DatePart-Funktion vornehmen
    - Ich meine, wenn man mit der Systemfunktion CopyLog (KopiereArchiv) ein Archiv kopiert, dann braucht man die Archivierung nicht stoppen - ich bin mir aber nicht sicher, zumindest würde ich mal ausprobieren, was mit Meldeereignissen während dem Kopieren passiert

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #17
    Registriert seit
    10.06.2010
    Beiträge
    65
    Danke
    9
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Das mit dem Lesen und Schreiben der jeweiligen Datei habe ich auch schon probiert, jedoch sind dann bei mir die Zeilenumbrüche weg.

    Deine weiteren Anregungen werde ich mir morgen mal anschauen.


    Gruß Hausen

  8. #18
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    schau dir mal dieses skript an

    Code:
     Das VBScript
    Meldearchiv_to_csv extrahiert aus einen
    Protool/WinCCflex/TIA-Archiv Datum, Uhrzeit,
    Status, Meldenummer, Meldetext.  Die Quelldatei
    kann dem Skript als Parameter übergeben werden.
    Die erzeugte Datei erhält als Zusatz im Namen
    _M2C.csv. Also aus der Störung0.csv wird
    Störung0_M2C.csv erzeugt
    http://lischis-home.selfhost.eu/php4...hiv_to_csv.zip

    wenn du dieses über dein normales meldearchiv laufen lässt und dann noch datum/uhrzeit für das schreiben der neuen datei auswertest sollte das eine grundlage sein.

    zum auswerten von datum/urzeit schau dir mal die DateDiff-Funktion von vbscript an.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  9. #19
    Registriert seit
    10.06.2010
    Beiträge
    65
    Danke
    9
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von volker Beitrag anzeigen
    schau dir mal dieses skript an

    Code:
     Das VBScript
    Meldearchiv_to_csv extrahiert aus einen
    Protool/WinCCflex/TIA-Archiv Datum, Uhrzeit,
    Status, Meldenummer, Meldetext.  Die Quelldatei
    kann dem Skript als Parameter übergeben werden.
    Die erzeugte Datei erhält als Zusatz im Namen
    _M2C.csv. Also aus der Störung0.csv wird
    Störung0_M2C.csv erzeugt
    http://lischis-home.selfhost.eu/php4...hiv_to_csv.zip

    wenn du dieses über dein normales meldearchiv laufen lässt und dann noch datum/uhrzeit für das schreiben der neuen datei auswertest sollte das eine grundlage sein.

    zum auswerten von datum/urzeit schau dir mal die DateDiff-Funktion von vbscript an.
    Danke das werde ich mir mal morgen ebenfalls anschauen. Hört sich auch jeden Fall schon mal gut an!

    Gruß Hausen

  10. #20
    Registriert seit
    10.06.2010
    Beiträge
    65
    Danke
    9
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Volker,

    was macht in dem Script die folgende Zeile? Also was da gemacht wird weiß ich, jedoch welchen Sinn die Abfrage hat verstehe ich nicht ganz.

    Code:
    pruf = int(left(zeile,10))
    Gruß Hausen

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 06.01.2011, 15:44
  2. Antworten: 4
    Letzter Beitrag: 28.01.2010, 10:38
  3. Antworten: 14
    Letzter Beitrag: 31.01.2009, 16:36
  4. Antworten: 7
    Letzter Beitrag: 17.10.2007, 18:16
  5. Umlaufarchiv in WinCC Flex. mit VBScript
    Von rookie_2001 im Forum HMI
    Antworten: 7
    Letzter Beitrag: 19.10.2006, 12:43

Lesezeichen

Berechtigungen

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