WinCC 6.2 erkennen, das eine neue Datei in einem Verzeichnis vorhanden ist

Krumnix

Level-3
Beiträge
1.454
Reaktionspunkte
190
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Wie kann ich in WinCC 6.2 per C-Script erkennen, das eine neue Datei in
einem bestimmten Verzeichnis vorhanden ist.
Diese dann auslesen, und im Anschluss dann löschen?

Danke
 
Keiner eine Idee oder so?
Ich hab zwar ein Script, das eine Datei überprüft, aber ich muss den Namen
der Datei wissen.
Mein Problem ist, das sich der Name aber immer ändert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vorgefertigte Funktionen gibt es so weit ich weiß dafür nicht.
Ich würde ein Skript zyklisch aufrufen und das Verzeichnis "auslesen". Also die Dateinamen und das Änderungsdatum speichern. Beim nächsten Zyklus werden die gespeicherten Daten mit den tatsächlichen Dateien verglichen und gegebenenfalls wird dein Skript zum überprüfen der Datei ausgeführt. Meine Kentnisse in Ansi-C sind leider nicht so toll, aber für die Dateibehandlung unter VB-Script findest du in der FAQ Hilfestellung.

http://sps-forum.de/showthread.php?t=15348
 
Die Liste ist ein wenig zu schwer zu erstellen, da die Anzahl der Dateien bis zu 4.000 steigen kann, leider.
Deswegen wollte ich die neuste Version einfach nur erkennen.
Das Programm, das mir dieses Verzeichnis vollmüllt kann man leider nicht
ändern.

Gibs keinen Befehl in C-Script oder in VBS, mit dem man ggf das Datum einer
Datei erfassen kann?
 
Aus der WinCC Hilfe:
Code:
[FONT=Courier New][SIZE=3]Function ShowFileAccessInfo(filespec)[/SIZE][/FONT]
 
[FONT=Courier New][SIZE=3]Dim fso, f, s  [/SIZE][/FONT]
[FONT=Courier New][SIZE=3]Set fso = CreateObject ("Scripting.FileSystemObject")[/SIZE][/FONT]
[FONT=Courier New][SIZE=3]Set f = fso.GetFile(filespec)  [/SIZE][/FONT]
[FONT=Courier New][SIZE=3]s = UCase(filespec) & "<BR>"  [/SIZE][/FONT]
[FONT=Courier New][SIZE=3]s = s & "Created: " & f.DateCreated & "<BR>"  [/SIZE][/FONT]
[FONT=Courier New][SIZE=3]s = s & "Last Accessed: " & f.DateLastAccessed & "<BR>"  [/SIZE][/FONT]
[FONT=Courier New][SIZE=3]s = s & "Last Modified: " & [COLOR=#ff0000]f.DateLastModified[/COLOR] [/SIZE][/FONT]
[FONT=Courier New][SIZE=3]ShowFileAccessInfo = s[/SIZE][/FONT]
 
[FONT=Courier New][SIZE=3]End Function[/SIZE][/FONT]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das sieht noch einem WinCC Flex-Script aus.
Muss ich mal austesten, ob das auch so lauffähig auf WinCC 6.2 ist.

Bzw. ich such mal in der Hilfe nach diesem Punkt.
Danke
 
So, ich habs nun selbst hinbekommen. Hier eine kleine Anleitung dazu.
Ggf. kann man das ja in die FAQ stellen oder so @Admin?!

FAQ

Frage: Wie kann ich in WinCC erkennen, ob eine neue Datei in einem Ordner auftaucht?

Antwort: Die Vorgehensweise wird anhand der VB-Script-Sprache gelöst.
Zuerst eine neue Aktion erstellen. Die Trigger-Zeit einstellen, wie oft oder
schnell in dem Ordner nach der neuen Datei gesucht werden soll.
Ich hab hier mal 1s als Trigger gewählt.

Dann folgenden Code in dieses Script kopieren:
Code:
Option Explicit
Function action
'Erkennung einer Datei in einem Ordner
  Dim fso, Pfad, Ordner, dateiliste, d, s
  Pfad = "c:\blablabla"   'Pfadname zur XML-Datei definieren
  Set fso = CreateObject("Scripting.FileSystemObject")  'Instanz auf FileSystem erzeugen und in fso schreiben
  Set Ordner = fso.GetFolder(Pfad)       'Instanz auf Ordner mit Pfadangabe erzeugen
  Set dateiliste = Ordner.Files        'Alle Dateien im Ordner in eine Liste schreiben
  
  For Each d In dateiliste
    s = d.name            'Letzte Datei in Liste finden und Pfadangabe ins System übergeben
  Next
  If  Len(s) > 0 Then          'Wenn neue Datei im System ist, auslesen
   Dim objTag
   Set objTag = HMIRuntime.Tags("Text-Variable in der der Name der erkannten Datei steht")
 objTag.Read
 objTag.Value = Pfad & s
 objTag.Write
 
  End If
End Function

Das Ganze dann noch anpassen und aktiveren. Man kann in den letzen If-Abfrage
dann auch weitere Scripte aufrufen, die dann mit der erkannten Datei
was anfangen und diese dann löschen.
 
Zurück
Oben