Hallo,
ich sammle Daten auf dem Raspberry mit Codesys und schicke, wenn das Array voll ist, die Daten (zwischenzeitlich geschrieben in ein lokales File) per FTP zu einem NAS. Das Ganze logge ich und stelle fest (auch in der Visualisierung) das der FTP-Schreibvorgang über 1Minute dauern kann bei 1200 Byte Filegröße.
2016.12.02 12:51:53 : Logfile zum NAS gesendet in T#1m36s98ms
Ist etwas über so ein Problem bekannt ??
Übrigens geht die Übertragung immer erfolgreich zu Ende.
Viele Grüße
Thomas
hallo
normal ist das nicht !
beschreibe mal dein verwendetes system (Hardware , Software , Oscat lib versionen)
in welchen task läuft der ftp baustein und welchen zykluszeit hast du dort
kannst du mal eine wireshark aufzeichnung machen
Hallo peewit,
Danke für Deine Antwort. Ich werde mal versuchen, alles das zu beantworten, was Du mir aufgetragen hast - ausser das mit wireshark, da muss ich noch üben!
1. System: Raspberry 2 mit Codesys 3.5.9
2. Oscat network.lib 1.2.1.0
3. FTP-Baustein läuft im Main-Task bei Zykluszeiten um 1ms (das sollte eigntlich schnell genug sein, deshalb habe ich FTP nicht in einen extra Task geschoben).
Task letzte Zykluszeit Durchschnittl. Zykluszeit Max. Zykl.zeit Min. Zykluszeit Max. Jitter
MainTask 1025 909 7219 604 329 alles µs
Dann habe ich mal im FTP-Client ein bissel geloggt:
2016.12.06 10:19:46 : Logfile via FTP durch Handstart zu NAS senden
2016.12.06 10:19:46 : Activate !! FTP-Step 0
2016.12.06 10:19:46 : DNS_CLIENT.DONE !! FTP-Step 20
2016.12.06 10:19:46 : FTP Steuerkanal eingerichtet !! FTP-Step 20
2016.12.06 10:20:02 : >>> FTP-Step 210
2016.12.06 10:20:03 : FTP-Step 200
2016.12.06 10:20:03 : >>> FTP-Step 210
2016.12.06 10:20:03 : FTP-Step 200
2016.12.06 10:20:04 : >>> FTP-Step 210
2016.12.06 10:20:04 : FTP-Step 200
2016.12.06 10:20:04 : >>> FTP-Step 210
2016.12.06 10:20:05 : FTP-Step 200
2016.12.06 10:20:05 : >>> FTP-Step 210
2016.12.06 10:20:05 : FTP-Step 200
2016.12.06 10:20:05 : >>> FTP-Step 210
2016.12.06 10:20:06 : FTP-Step 200
2016.12.06 10:20:06 : >>> FTP-Step 210
2016.12.06 10:20:06 : FTP-Step 200
2016.12.06 10:20:07 : >>> FTP-Step 210
2016.12.06 10:20:07 : FTP-Step 200
2016.12.06 10:20:07 : >>> FTP-Step 210
2016.12.06 10:20:08 : FTP-Step 200
2016.12.06 10:20:08 : >>> FTP-Step 210
2016.12.06 10:20:08 : FTP-Step 200
2016.12.06 10:20:08 : >>> FTP-Step 210
2016.12.06 10:20:09 : FTP-Step 200
2016.12.06 10:20:09 : >>> FTP-Step 210
2016.12.06 10:20:09 : FTP-Step 200
2016.12.06 10:20:10 : >>> FTP-Step 210
2016.12.06 10:20:10 : FTP-Step 200
2016.12.06 10:20:10 : warten bis gesendet, FTP-Step 300
2016.12.06 10:20:11 : Service closing control ...FTP-Step 320
2016.12.06 10:20:12 : Done ...FTP-Step 900
2016.12.06 10:20:12 : Logfile zum NAS gesendet in T#26s398ms Größe:9600
Aus meiner Sicht liegt es wirklich nur am Zyklus, wo wahrscheinlich gesendet wird.
Vielleicht kannst Du aus diesen Hinweisen was herausfinden, was mir hilft oder wo ich noch suchen sollte ??
Vielen Dank
Thomas
Hallo,
mein FTP-Problem hat sich in Wohlgefallen aufgelöst. Jetzt kann ich so schnell Daten übertragen, wie ich es nervlich ausgalten kann. Das Problem lag an einer viel zu langen Zykluszeit (150ms). Ich berauschte mich an den echten Zyklus-Nutzzeiten (siehe weiter oben), erkannte aber erst jetzt, das FTP offensichtlich immer mal wieder die CPU benötigt und nicht nur Früh und Abends.
Ich habe das ganze FTP-Gerödel in eine extra TASK gelegt und dort mit 1ms Zykluszeit regelrechte Übertargungsrekorde erreicht (Dauer im 500ms-Bereich für 20-60 KB).
Allerdings habe ich dann auch bemerkt, das im LINUX FTP tatsächlich mit seinem Task so 10-20% CPU-Zeit sich krallt.
15479 root -70 0 27680 18904 2296 S 0,0 2,0 0:00.00 CAAEventTask
23913 root -67 0 27680 18904 2296 R 11,8 2,0 2:03.11 FTP_TAsk
23914 root -67 0 27680 18904 2296 S 0,7 2,0 0:06.70 MainTask
Jetzt nutze ich 5ms und der FTP-Prozess holt sich ca. 1-3 % CPU-Zeit. Und die Geschwindigkeit ist auch zu ertragen.
Wer hätte das gedacht...
Viele Grüße
Thomas
hallo
schön das es nun läuft
meine erste vermutung -> zykluszeit kontrollieren war somit der richtige tip !
ich habe mir schon einige andere ftp_Client bausteine von verschiedenen herstellern angesehen
ich habe aber keinen gesehen der irgendwas besser kann als der oscat FTP-Client
Hallo peewit,
meine erste vermutung -> zykluszeit kontrollieren
war schon richtig. Aber gibt es nicht schon Erfahrungen, wie groß(eher klein) die Zykluszeit für vernünftiges kopieren (was immer der Einzelne unter "vernünftig" versteht...) sein müsste. Es wird ja wohl so sein, das irgendeine Blockgröße pro Zyklus transportiert wird. Und damit sollte man sofort abschätzen können, das man irgendwas falsch eingestellt hat., wenn es zu lange dauert. Das kann u.U. dem einen oder anderen helfen, so eine Information.
Ich habe den FTP_Client dahingehend ergänzt, das ich das locale File mit "append" an das remote File auf dem Server anhängen kann. Wenn das nicht schon drin ist (und ich es übersehen habe) könnte das durchaus noch standardmäßig rein kommen. So als Hinweis...
Viele Grüße
Thomas
man muss bedenken das es immer einige Zyklen benötigt um alle schritte und flanken gesteuerte Prozesse zu verarbeiten. weiters muss man die Datenverarbeitung mittels tcp-Bausteine auch mit einbeziehen.
somit addieren sich relativ viele notwendige sps Zyklen
erkenntniss:
wenn dann aber eine relativ kleine Datei bei der Übertragung viel zeit benötigt dann sind es normalerweise verhältnismäßige hohe Zykluszeiten oder Störung bei der Datenübertragung.