TIA Automatisches Einlesen von Csv-Dateien, HMI oder in CPU

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Heinileini,

die Datei von der Fremdanlage bleibt bestehen, wird weder überschrieben noch gelöscht oder verschoben.!
Sprich in dem Verzeichnis wo ich meine Daten abholen möchte werden immer wieder neue Dateien angelegten, so lange bis der Kunde entscheidet diese eben rauszulöschen.
Ich zieh mir nur ein paar Informationen aus dieser Datei heraus und gebe diese dann in meiner seperarierten neu angelegten Datei aus.
 
Moin MartinJ12,

Du könntest Die gelesene Datei in ein Unterverzeichnis verschieben statt zu löschen.

Das Erstelldatum der Datei kann man auslesen. Dann könnte man die neueste heraussuchen. Dann nach dem Lesen ALLE Dateien in den Unterordner verschieben.

Wie werden die Dateien in was für einem Array gespeichert :confused:

VG

Mario
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Mario,

Ja das verschieben könnte funktionieren, ginge das mit dem VBScript direkt? Falls ja, wie? Hast du für mich, bitte ein Codebeispiel zur Hand?
Gibt es auch hier eventuell ein Codebeispiel, ich weiß leider nicht so ganz wie ich an die ganze Sache rangehen soll.

Ich wollte mir über .split() die Zeilen in einzelne Variablen-Arrays des HMI schreiben, falls das geht?
Leider hab ich keinerlei Erfahrung mit Siemens WinCC..
 
Wie gesagt, mir bereitet Bauchschmerzen, dass sich der Dateiname immer wieder ändert. Ich weiß nicht zu ganz wie ich darauf reagieren soll.
Man könnte annehmen, daß Du bei mehreren Dateien die neueste Datei nehmen solltest.
Dazu könntest Du die Datei-Eigenschaft DateLastModified auswerten.

Hast Du eine gute VBS-Dokumentation? Tip: Wenn Du WinCC flexible hast, da ist eine komplette VBS-Referenz inklusive Beispielcode vorbildlich in die WinCC flex Hilfe integriert.
PPS: am ersten Beitrag der VB-Script-FAQ hängt die Datei "VBScript Sprachverzeichnis.zip", die enthält die MS VBScript-Dokumentation und das VBScript-Sprachverzeichnis mit Codebeispielen.

PS: was stört eigentlich, wenn Du eine einmal gelesene/ausgewertete Datei nochmal ausliest? Da sollte doch immer noch das selbe drinstehen wie beim letzten Auslesen. Also ich würde das jetzt nicht als Problem sehen.

Harald
 
Zuletzt bearbeitet:
Nein Harald, es wird alle 7 Minuten eine neue Datei erstellt die in keinem Zusammenhang zur vorhergehenden Datei steht. Erste erstellte Datei lautet "yx" und 7 Minuten später heißt sie "jh".
Es wäre vielleicht schlau wie die Kollegen schon vorher gesagt haben, immer nach der neusten Uhrzeit und Datum abzufragen, oder eben die alte Datei in einen Unterordner zu verschieben.

Leider hab ich gar keine Dokumentation, ich versuch mich irgendwie durch zu boxen mit Codebeispielen. Ich hab leider nur WinCC Advanced.

Nochmal auslesen würde keinen Sinn ergeben, da die Datei da nicht mehr gebraucht wird.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Leider hab ich gar keine Dokumentation, ich versuch mich irgendwie durch zu boxen mit Codebeispielen. Ich hab leider nur WinCC Advanced.
Ich habe Beitrag #24 ergänzt mit einem Hinweis auf die VBS-Sprachbeschreibung zum Download.

Nochmal auslesen würde keinen Sinn ergeben, da die Datei da nicht mehr gebraucht wird.
Es würde aber auch nicht stören? Dann lies sie doch einfach nochmal und mach Dir keinen Kopf, was aus den nicht mehr gebrauchten Dateien wird. 7 Minuten lang ist eine Datei die neueste Datei, nach 7 Minuten gibt es eine neue Datei. Das SPS-Prinzip lebt von der zyklischen Bearbeitungen von Daten, die sich vielleicht gar nicht geändert haben. :cool:

PS: Wie groß ist die vbs-Datei ungefähr, wieviele Daten enthält sie?

Harald
 
Die Datei ist ca. 8 Zeilen mal 12 Spalten groß.
Klar nicht groß aber häuft sich bei 24/7 * 365 Tage..

Vielen Dank nochmal für den Hinweis Harald, werde ich mir direkt einmal ansehen und versuchen zu verstehen.
 
Ach Gottchen - 96 Datenpunkte. Die musst doch nicht Du persönlich auslesen, sondern Du delegierst die zyklische Aufgabe an die HMI die sich sowieso die meiste Zeit langweilt. ;)
Das HMI wird alle 100 ms ein paar 1000 Datenpunkte lesen und auswerten, und die SPS verarbeitet zehntausende Datenpunkte alle 10 ms. Da kommt es auf 100 Datenpunkte mehr jede Minute nicht drauf an.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Damit es nicht passiert, daß Deine HMI eine noch nicht fertig geschriebene csv-Datei findet und versucht zu verarbeiten, sollte Dein Partner die Datei zunächst unter einem temporären Name anlegen (z.B. xxx.tmp), die Daten hineinspeichern und die Datei schließen. Und erst danach die Datei zum richtigen Name umbenennen (z.B. abc.csv)

Und Deine HMI sucht nur nach csv-Dateien (*.csv), schaut bei gefundenen Dateien auf den Datei-Zeitstempel (DateLastModified) welche davon die Neueste ist (und evtl. nicht älter als xx Minuten ist?), und liest diese Datei, egal ob schonmal eingelesen. Wenn die Datei partout nicht noch einmal gelesen werden darf, dann müsste sich Deine HMI den Dateiname (und evtl. Zeitstempel) der zuletzt eingelesenen Datei merken (am besten in der SPS zusammen mit den Daten, falls die HMI mal neu startet oder falls es mehrere Instanzen der HMI gibt).

Was mit den nicht mehr benötigten alten Dateien in dem Ordner wird, würde ich komplett dem Partner bzw. Betreiber überlassen. Und: der Ordner muß tabu sein für manuelle Datei-Aktionen von PC-Usern (außer Löschen von altem Müll).

Beim Einlesen der csv-Datei darauf achten, daß die auch genau das vereinbarte Format (die vereinbarte Anzahl Zeilen und Datenpunkte) hat, (und evtl. auch die zulässigen Wertebereiche prüfen). Bei im Format oder Wertebereich abweichenden Daten die Daten komplett nicht übernehmen und eine Systemmeldung auf dem HMI ausgeben (ShowSystemAlarm).

Tip: In der HMI in ein Bild eine Meldeanzeige für Meldeereignisse (TIA: "Meldepuffer") projektieren, die auch Meldungen der Meldeklasse "System" anzeigt, dann kannst Du auch nachträglich die Systemmeldungen lesen oder Test-Ausgaben machen/lesen. Erfahrungsgemäß treten bei der VBS-Skriptentwicklung Runtime Errors auf, die man nur sieht, wenn man die Systemmeldungen auch irgendwo anzeigt (in einem Meldefenster oder besser in einer Meldeanzeige).

Harald
 
Guten Morgen Harald,

vielen Dank für die ganzen Informationen, diese muss ich erst einmal Verarbeitung und versuchen zu Reproduzieren.

Gibt es den die Möglichkeit sein VBScript vorab in einer IDE (hab es mir Visual Studio versucht, aber da bekomme ich immer nur Fehlermeldungen mit denen ich nichts anfangen kann, da mein VB-Wissen vielleicht 25% beträgt) laufen zu lassen? Also damit man kontrollieren kann ob es funktioniert oder nicht.
Ich hab mich zwar in die ganzen genannten Themen eingelesen, aber ich glaube nicht das ich es auf Anhieb richtig programmieren kann.

Martin
 
... du könntest es grundsätzlich unter Excel versuchen. Die Syntax ist nicht 100%ig identisch aber um es mal eine Richtung zu bekommen geht es so schon. Vorteil ist, dass du dir alles auch gleich anzeigen lassen kannst.

Prinzipiell würde ich hier aber auch eher die Kommunikation (wie es schon vorgeschlagen wurde) anpeilen ...

Gruß
Larry
 
Zurück
Oben