Auf Windows Ebene Dateien kopieren

Thomas E.

Level-1
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle miteinander,

ich erstelle zurzeit ein Plc-Projekt mit Beckhoff TwinCat 2.11.1553, welche auf einer CX Steuerung mit Win XP emp. laufen soll.

U.a. werden auch Prozessdaten als Acsii-Dateien auf die Festplatte (CF-Karte) geschrieben. Ich möchte nun dem Bediener die Möglichkeit geben, diese Dateien auf einen USB-Stick zu kopieren, d.h. die Dateien sollen von D:\2012_01\*.* nach E:\2012_01\ kopiert werden.

Dazu habe ich verschiedene Funktionsbausteine gefunden, z.B. „FB_CreateDir“, „FB_FileOpen“, u.s.w. Ich habe sogar auf der Beckhoff-Seite einen Baustein: „FB_FileCopy“ gefunden, in welcher alle die benötigten Funktionen gekapselt sind. Schön und gut, läuft auch!

Ich überlege mir, ob dies die richtige Vorgangsweise ist, schließlich „schleuße“ ich damit die Dateien durch die Bausteine der Plc. Das finde ich nicht gut. Desweiteren dauert dies auch recht lange. Eine 2MB Datei hat über 5min. gedauert.

Welche Alternativen gibt es denn?

Bei den Vorgängermaschinen habe ich dies schlicht und einfach mit einer Batch Datei gelöst, welche ich von der plc aus gestartet habe. Hat super funktioniert. Aber die Verzeichnisnamen sind nun dynamisch, d.h. sie ändern sich mit jedem Monat. Desweiteren hatte ich bei der Batch Datei Lösung keine Rückmeldung über den Erfolg des Kopieren.

Kennt ihr sinnvolle Alternativen?

Danke im Voraus.
Grüße Thomas
 
Einfach ein kleines C#, C++ , VB oder Delphi Programm schreiben das auf dem CX liegt. Das Programm kann meintwegen über ADS von dem SPS Programm die nötigen Befehle erhalten (Starte Kopiervorgang... etc) und auf dem selben Weg zurückmelden ob alles geklappt hat.
Das Programm muss auch nicht immer im Hintergrund laufen, sondern kann nur bei Bedarf von der Steuerung gestartet werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab das auch schon oft so gelöst - aber bei ähnlich großen Dateien ginge das schneller! Inkrementiertierst du deine Indexvariablen zyklisch oder in einer FOR-Schleife?

Gruß Bernd
 
Einfach ein kleines C#, C++ , VB oder Delphi Programm schreiben das auf dem CX liegt.
Danke für den Tipp. Dies war auch mein erster Gedanke. Leider gab es als Projektvorgabe den Hinweis, keine weiteren Tools oder Fremdprogramme zur Funktionalitätsumsetzung zu benutzen.

aber bei ähnlich großen Dateien ginge das schneller! Inkrementiertierst du deine Indexvariablen zyklisch oder in einer FOR-Schleife?
Wie auch immer. Ich bin der Meinung, dass das "durchschleußen" von Dateien nicht von der Plc übernommen werden sollte. Leider gibt es keinen Plc Befehl - oder ich hab ihn nicht gefunden - welcher Dateioperationen auf Windowsebene ermöglicht.

Nun meine Lösung: Ich hab mich letztlich für eine einfache batch Datei mit dem Befehl: "xcopy" entschieden. Diese Datei starte ich aus der Plc. Zusätzlich gebe ich dem Aufruf noch die Angaben über das Quell- und Ziellaufwerk als Parameter mit. Somit findet das Kopieren auf Windows Ebene statt.

Schwieriger war die Generierung der Erfolgskontrolle und Fertigmeldung: "Fertig mit Kopieren". Dazu habe ich in der Batchdatei noch organisiert, dass im Anschluß des Kopierens noch eine Dummydatei mit kopiert wird. Anschließend lese ich die Anzahl der Dateien im Zielverzeichnis aus. Wenn diese Anzahl der Sollzahl + 1 entspricht, ist das Kopieren beendet und erfolgreich. Zum Schluß lösche ich noch die Dummydatei vom Ziel.

Danke für die Unterstützung.

Grüße Thomas
 
Zurück
Oben