TIA Produktionsadten aus Datei mit wechselndem Namen auslesen

elmoklemme

Level-2
Beiträge
174
Reaktionspunkte
28
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich muss aus einer Datei (.txt oder .csv) Daten für eine LKW-Verladung auslesen. Wie ich bereits gelesen habe wird das ganze wohl über ein Script im Panel realisiert, oder?
Hierzu gibt es ja ettliche Beiträge im Forum. Was mir noch Kopfzschmerzen macht, ist die Tatsache, dass die Datei nicht immer gleich heißt. De Dateiname beinhaltet eine Auftrags-ID.
Wie behandelt man so etwas? Ich habe noch nichts in diese Richtung gemacht. Ich habe gesehen es gibt eine HMI-Toolbox mit einen Datei-Browser. Ist das ein Ansatz? Hier bin ich mir aber nicht schlüssig, ob der auf ein Netzlaufwerk zugreifen kann...
Zum Einsatz kommt TIA V14/ CPU 1510SP /HMI TP1200 Comfort

Gruß Elmoklemme
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich gebe einen Dateinamen vor ( per Variable ):
Datei = SmartTags("DeineAuftragsID") & ".TXT"
Dem Dateinamen füge ich dann noch einen Text bei, der bei mir bei jeder Datei vorne dran steht:
Path = "C:\Daten" & "Init_" & Datei
Dann öffne ich die Datei und verarbeite den Inhalt ( CSV Format ) weiter:
Set f = fso_OpenTextFile(Path, 1, 0, -2)

Steht in der Variable "DeineAuftragsID" nun 1234, so wird die Datei Init_1234.TXT geöffnet

Vielleicht oder bestimmt gibt es auch andere / bessere Lösungen, hier nur mal mein Beispiel
 
Zuletzt bearbeitet:
Das heißt aber ich muss den Namen mehr oder weniger kennen?
Das funktioniert ja nur solange ich es mit einer fortlaufenden ID oder in der Richtung zu tun habe, oder?
 
Was mir noch Kopfzschmerzen macht, ist die Tatsache, dass die Datei nicht immer gleich heißt. Der Dateiname beinhaltet eine Auftrags-ID.
Was beinhaltet denn der DateiName ausser der Auftrags-ID? Irgendein Kriterium, woran sich die Dateien eindeutig erkennen lassen, die in Frage kommen?
Woran würde ein Bediener die gesuchte Datei erkennen, wenn sie ihm zusammen mit etlichen anderen vom Browser angezeigt wird?
Normalerweise kann man die BrowserAnzeige mit dem entsprechendem Filter die zur Auswahl stehenden DateiNamen schon eingrenzen lassen.
Haben die ID-Nrn immer diesselbe StellenAnzahl? Ist die ID-Nr innerhalb des Namens klar abgegrenzt, so dass man nicht erst tüfteln muss, wo innerhalb des Namens sie steht?
 
Das heißt aber ich muss den Namen mehr oder weniger kennen?
Wie lautet Deine Aufgabenstellung/Beschreibung?

Wenn es in dem Ordner nur eine einzige txt- oder csv-Datei gibt, dann kannst Du mit der Dir()-Methode den Name rausbekommen.
Wenn es mehrere passende Dateien gibt, dann muß bekannt/vorgegeben sein, welche davon geöffnet werden soll.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also soweit ich bis jetzt weiß werden in diesem Verzeichnis nur Dateien liegen, die zur Verarbeitung auf meiner Anlage im Frage kommen. Der Aufbau des Namens ist immer identisch. Wenn ich die Daten übernommen habe muss/kann ich die Datei löschen. Ich gehe davon aus, dass die ID in irgendeiner Weise fortlaufend sein wird, ob das lückenlos der Fall ist muss ich nochmals abfragen. Je nach Auftragslage liegen bis zur Abarbeitung eben eine, oder mehrere Dateien im Verzeichnis.
Ganz detailliert habe ich noch nicht alle Infos. Ich dachte, ich mach mich aber schon mal daran, die grundlegende Herangehensweise herauszufinden.
Wie würde es denn nach der DIR Methode weitergehen?
 
Beispiel für Dir auf Panel (Windows CE): eine/erste Datei von heute suchen (ungetestet)
Code:
Dim fso, path, file, result, heute

heute = Date
path = "\\AuftragServer\LkW_Jobs\"
ShowSystemAlarm "Test: suche Dateien in " & path             [COLOR="#008000"]'DEBUG Testausgabe in Meldepuffer[/COLOR]

Set fso = CreateObject("FileCtl.FileSystem")

result = fso.Dir(path & "*.csv")                             [COLOR="#008000"]'ersten passenden Dateiname holen (liefert Dateiname ohne Pfad!)[/COLOR]
Do While result <> ""                                        [COLOR="#008000"]'wenn mindestens 1 Datei gefunden[/COLOR]
    file = path & result                                     [COLOR="#008000"]'dann Dateiname auf vollständigen Pfad erweitern[/COLOR]
    ShowSystemAlarm "Test: Datei '" & result & "' gefunden"  [COLOR="#008000"]'DEBUG Testausgabe in Meldepuffer[/COLOR]
    If CDate(fso.FileDateTime(file)) = heute                 [COLOR="#008000"]'wenn Dateizeitstempel von heute[/COLOR]
        Exit Do                                              [COLOR="#008000"]'dann Auflistung abbrechen und liefere den Dateiname dieser Datei[/COLOR]
    End If
    result = fso.Dir()                                       [COLOR="#008000"]'weitere passende Datei vorhanden?[/COLOR]
Loop

If result <> "" Then
    [COLOR="#008000"]'in file steht der volle Dateiname inkl. Pfad - tu was damit[/COLOR]
End If
VBS Beispiele siehe
FAQ: Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script
FAQ: WinCC Flex VBScript WinCe - Move *.* bzw. Dateien kopieren
Dateien auf Panel in Abhängigkeit des Erstelldatums löschen
Netzlaufwerk für Archivexport überprüfen
und benutze die Forumsuche mit Suchbegriff: fso.dir

Harald
 
1. Also soweit ich bis jetzt weiß werden in diesem Verzeichnis nur Dateien liegen, die zur Verarbeitung auf meiner Anlage im Frage kommen.
2. Der Aufbau des Namens ist immer identisch.
3. Wenn ich die Daten übernommen habe muss/kann ich die Datei löschen.
4. Ich gehe davon aus, dass die ID in irgendeiner Weise fortlaufend sein wird,
5. ob das lückenlos der Fall ist muss ich nochmals abfragen.
6. Je nach Auftragslage liegen bis zur Abarbeitung eben eine, oder mehrere Dateien im Verzeichnis.
7. Ganz detailliert habe ich noch nicht alle Infos.
8. Ich dachte, ich mach mich aber schon mal daran, die grundlegende Herangehensweise herauszufinden.
9. Wie würde es denn nach der DIR Methode weitergehen?
Anzahl der in Frage kommenden Dateien
Zu1.:
Sehr gut, das verringert die Auswahl. (Kommt denn wirklich nur 1 Verzeichnis in Frage?)
Zu 3.:
Das auch.
Zu 6.:
Sonst wär's ja auch zu einfach.

ID-Nrn
Zu 2.:
Wunderbar! Aber mit unterschiedlichen Längen der IDs würde ich vorsichtshalber trotzdem rechnen.
Zu 4.:
Fortlaufende IDs würde ich nicht unterstellen wollen, selbst wenn's versprochen wird.
Zu 5.:
Brauchst Du nicht nachzufragen. Spätestens wenn mal ein Auftrag vorgezogen wird, wird Dein Löschen einer abgearbeiteten Datei dafür sorgen, dass es nicht mehr lückenlos ist.

Fragen
Zu 7.:
Du kannst gar nicht genug nachfragen, solange Du noch nicht weisst, wie Du die Aufgabe lösen willst.
Zu 8.:
Gedanken machen und überlegen, wo noch Probleme lauern könnten, schadet nicht. Verschiedene Varianten gedanklich wenigstens ankratzen.
Dann dürften automatisch Fragen auftauchen, die zu klären sind.

Auswahl
Zu 9.:
DateiNamen des betreffenden Ordners einlesen, IDs extrahieren, evtl. auf doppelt vorkommende prüfen, ggfs mit Liste der bereits abgearbeiteten abgleichen, falls nötig sortieren,
Liste der IDs dem Bediener anzeigen und ihn eine ID auswählen lassen.
 
Zurück
Oben