Datei mit FTP_SERVER auf SD-Karte der SPS speichern

Begonnen von Nilsflo, 18. Januar 2014, 18:37:43

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Nilsflo

Hallo,

ich nutze eine WAGO 750-880 und möchte Dateien von einem FTP Server auf die SD-Karte der SPS speichern. Ist es mit dem Funktionsblock FTP_Server möglich einen Speicher-Pfad anzulegen? Weiterhin möchte ich Dateien von der SD-Karte auf den FTP Server schreiben und dort in einem bestimmten Pfad ablegen. Ich habe bislang aber nicht gefunden ob und wie das mit dem Baustein funktioniert. Kann mir damit jemand helfen? Oder muss ich die Daten mit einer anderen Funktion nach der FTP Aktion extra verschieben?

Vielen Dank schonmal,

Nils

peewit

du kannst eine datei vom lokalen filesystem auf einen ftp-server kopieren aber auch in umgekehrter richtung

die doku des ftp_client solltest du dir mal kurz durchlesen

in der network.lib im ordner "demo" findest du auch ein "FTP_CLIENT_DEMO" programm


Nilsflo

Danke für die schnelle Antwort.

Allerdings ist mein Problem nicht der generelle Einsatz des FTP_Server Bausteins, sondern das eingeben eines genauen Speicherpfades, das habe ich leider nicht gefunden. Habe ich das übersehen? Insbesondere geht es darum, dass ich gerne die SD-Karte als Quelle bzw. Ziel benutzen will. Zur Zeit speichert der Funktionsbaustein automatisch unter dem Pfad "/PLC/" ab.

peewit

die pfadangabe vom filesystem hängt von der sps ab

manche funktionieren mit laufwerksangabe und manche wollen nur ordner/dateiname

du solltest dir mal die dokumentation deiner sps bezüglich dateizugriff durchlesen, oder dich mal mit dem sps-support unterhalten


SKnuepfer

Hallo Nilsflo,

der Laufwerksbuchstabe zum Flash der Wago ist "A:"
zur SDCard "S:"

VG
Sandro

mukku

Liebes OSCAT Forum,

ich möchte wie der Kollege eine einfache Textdatei von einem FileZilla Server auf die SD Karte ablegen. Die DEMO kann ich erfolgreich aufrufen der Datentransport geht aber leider nicht.  Da ich was SPS angeht sehr unerfahren bin, möchte ich euch kurz die Eingänge die ich gewählt habe auflisten:

Hardware: WAGO 750-880
Software: CoDeSys V 2.3.9

ftp_activate: BOOL;
   ftp_done: BOOL;
   ftp_busy: BOOL;
   ftp_error_c: DWORD;
   ftp_error_t: BYTE;
   ftp_url: STRING := 'ftp://benutzer:sps@127.0.0.1/FTPTest/';;    => aus dem Beispiel in der Doku: 'ftp://benutzername:passwort@127.0.0.1/Verzeichnis/'
   ftp_filename: STRING := 'S:\FTPTest.txt'; => Hier habe ich das auch das Zielverzeichnis angegeben, korrekt so?!
   ftp_download: BOOL := TRUE; => Richtung vom Server auf die SD der SPS
   ftp_activ: BOOL := FALSE;
   file_delete: BOOL := FALSE;=> Zeitkonstanten sind für mich zunächst nebensächlich
   ftp_timeout: TIME := T#10s;
   zeit : TIME := T#10s;

Als DNS_IP4 habe ich die IP Nummer des FileZilla Servers 127.0.0.1 wie folgt angegeben:

B3           1
B2           0
B1           0
B0           127

Als PLC_IP4 verwende ich die IP Adresse meines WAGO Contrllers, nämilich 134.91.120.114:

B3          114
B2          120
B1            91
B0          134

Habe meine Windows Firewall deaktiviert.

Als Antwort bekomme ich folgende Fehlermeldungen:

Error_c: 4278190080
Error_t: 2

Bitte habt Verständnis dafür, dass ich dieses relativ überschaubare Problem hier so breit rumtrete, habe aber andernfalls Bedenken, dass ich das sonst nicht auf die Kette kriege - aller Anfang ist schwer  ;). Über Eure Hilfe würde ich mich sehr freuen!

Viele Grüße

peewit

#6
du hast bei filezilla server die ip 127.0.0.1 angegeben

das ist eine loopback adresse du nur auf dem gerät selber lokal existiert und nicht von extern angesprochen werden kann

der pc auf dem filezilla server läuft hat ja eine eigene ip-adresse und die muss man bei der sps angeben

mach mal auf dem pc im command-shell (dos-fenster) "ipconfig /all" und suche deinen netzwerk adapter
dort muss dann eine ip4-adresse sichtbar sein.

das was du vom demo übernommen hast mit 127.0.0.1 kann nur funktionieren wenn auf einem pc eine soft-plc läuft und auch auf dem selben gerät der FTP-Server. eine konstellation die man in der praxis eher nicht haben wird.



mukku

Daran hats gelegen, jetzt funktionierts, vielen Dank für die tolle Hilfe! :-)

mukku

Da freut man sich das was funktioniert und stolpert ins nächste Problem ;)..... Zwar wird die Datei auf der SD Karte abgelegt, aber ich kann sie weder öffnen und nichtmal löschen. ICh habe diese mit dem FileZilla CLient überprüft und der meldet "kritscher Datenübertragungsfehler". Irgendwelche Tipps? Vielen Dank

peewit

du kannst mal probieren ob nach einen sps-spannung aus/ein die datei lesbar ist bzw. auch einen sinnvollen inhalt und datenlänge hat.

ursache ... schwer zu sagen, wahrscheinlich hilft hier nur einen datenaufzeichnung mit wireshark

mukku

Datenlänge ist sinnvoll, lässt sich auch öffnen. Möchte sie jetzt über den csv Baustein lesen, das geht leider nicht. Muss ich den FTP_Transfer stoppen, um die Datei auszulesen oder woran könnte das liegen?

peewit

hi

du must mal gezielt einen vorgang durchführen und beschreiben was du gemacht hast und was du als meldungen am baustein bekommst

ansonsten wird das nichts

aus erfahrung weiss ich das meistens alles nur auf missverständnissen passiert, sodass beide seiten von etwas reden aber jeder ganz was anderes meint

du kannst ja auch dein ergebnisse grafisch dokumentieren

verwendest du als basis das demo programm ?
wenn ja was hast alles angepasst und mit welchen parametern

ohne infos wirds das nichts...

mukku

Hi,

ich geb mir Mühe! Folgende Situation:

Die Basis meines Projekts (CoDeSys, WAGO 750-880) sind zwei Demo Programme aus der Network.lib, nämlich FTP_Client Demo und CSV_Parser_File Demo. Das heist, dass ich eine Textdatei vom FTP Server auf meine SD-Karte transferieren und anschließend mit dem csv- Baustein in ein Array darstellen möchte. Ich habe lediglich Veränderungen wie Filename und Seperator vorgenommen.

Folgendes funktioniert:

1.) Der FTP_Client sendet wie gewünscht meine Daten an die SD-Karte bzw. den internen Flash. Die Dateien weisen auch eine bestimmte Größe auf.

2.) Wenn ich die gleiche Datei "VON HAND" auf die SD-Karte oder den Flash ziehe, d.h. nicht den internen FTP_Client benutze, lässt sie sich auch problemlos auslesen und als Array konvertieren!

Folgende Problematik:

3.) Es ist nicht möglich, eine zuvor transferierte Datei anschließend mit dem csv_Baustein innerhalb eines Projekts auszulesen. Somit funktioniert jedes Projekt für sich, jedoch ist eine kombnierte Funktionalität nicht möglich. Die FTP-tranferierten Dateien scheinen nicht mehr kompatibel mit dem csv-Baustein zu sein, obwohl in der Steuerun stets die gelungene Übertragung quittiert wird. Die Screenshots verdeutlichen, dass die FTP_Übertragung problemlos funktioniert, wohingegen keine Registrierung seitens des csv_parsers zu erkennen ist.

4.) Eine weitere Info noch: Wenn ich eine Datei auf der SD-Karte habe, kann ich sie per Hand (z.B. FIleZilla Client) nicht löschen. Das geht nur, wenn ich in der CoDeSys den FB FTP_Client den Eingang file_delete auf TRUE setze. Deswegen hatte ich gegelaubt, dass bei Bausteine innerhalb eines Projekts gestartet werden müssen. Dies habe ich dann auch gemacht, aber wie geschildert leider ohne Erfolg. Alle Berechtigungen wie schreibgeschützt etc. sind zudem deaktiviert.

Ich hoffe, dass die Infos hilfreich sind, bin echt am Ende mit meinem Latein. Gerne schicke ich auch das Projekt!

Viele Grüße

Sebastian

[gelöscht durch Administrator]

peewit

verwende zum testzwecke zuerst möglichst nur das original testprogramm
lass das csv programm weg, und alles andere auch ......

teste die übertragung und probiere dann den zugriff über filezilla
nach der übertragung muss diese datei am flash kopierbar sein und auch löschbar (filezilla benutzen !)


wenn eine datei vom ftp zur sps übertragen wird und danach nicht darauf zugegriffen werden kann
so wird theoretisch diese nicht mehr mit file_close geschlossen... warum auch immer.


punkt 4 verstehe ich gar nicht

file_delete = true bedeutet nach der übertragung soll die quelldatei gelöscht werden
das würde aber bedeuten das die datei am ftp gelöscht wird und nicht auf dem flash

das hört sich so an als ob es hier ein missverständnis gibt
das ist ziemlich unlogisch..