Startseite > Forum > IEC 61131-Programmierung (LogicLab) > Realisieren Sie DataLogger mit Historisierung auf dem FTP-Server
Stichwort: ftp ftpClient Warnung
- Dieses Thema hat 19 Antworten, 1 Teilnehmer und wurde zuletzt aktualisiert 4 Jahre, 2 Monate da Sergio Bertana.
-
AutorPost
-
April 4, 2016 bei 9: 17 #35987Sergio BertanaAdministrator des Forums
Ich habe Anfragen von Kunden erhalten, die unsere Produkte verwenden möchten SlimLine e Netsyst um einen DataLogger zu erstellen. In der Praxis müssen sowohl analoge als auch digitale Werte erfasst oder Daten von Instrumenten über Modbus gelesen und in regelmäßigen Abständen in einer CSV-Datei auf dem lokalen System protokolliert werden.
Dieser Bedarf kann leicht mit dem FB erreicht werden StringToLogFile_v1 (Betreff) Habe ich die Möglichkeit hinzugefügt, die Protokolldatei über das FTP-Protokoll mit dem FB von der lokalen Festplatte des Systems auf einen Remote-Server in der Cloud zu übertragen FtpClient (Betreff).
Das in dieser Anwendung zu überwindende Problem besteht darin, die Protokolldatensätze zu speichern, während der Übertragungsvorgang der lokalen Datei auf den FTP-Server ausgeführt wird. Dieses Problem kann mit dem FB leicht überwunden werden FIFOFile, mit dem Sie die Daten in einer Datei speichern und nach Möglichkeit extrahieren können (Betreff). Wie Sie sehen können, historisiert das Beispielprogramm die Daten im FIFO jede Minute und liest gleichzeitig, wenn die lokale Protokolldatei frei ist, aus dem FIFO und speichert sie in der CSV-Datei.
Die Verbindung zum Remote-Server wird stündlich hergestellt (im Beispiel auf der AlterVista-Site) und die lokale Datei wird auf den Remote-Server übertragen. Der Name der Datei auf dem Remote-Server wird erstellt, indem der Datums- / Uhrzeitwert erstellt wird, auf den sich das Protokoll bezieht (wir haben Dateien vom Typ 20160404-23.csv, 20160405-00.csv usw.).
Das Quellprogramm wird bereitgestellt, damit jeder es an seine Bedürfnisse anpassen kann (Programm drucken, Programm herunterladen).
Februar 9, 2017 bei 12: 25 pm #39839SergioPartecipanteIch verwende das Programm Ptp139a000 seit einigen Monaten, nachdem ich es im Teil zur Zeichenfolgengenerierung an die Anforderungen meines Kunden angepasst habe, aber die Statuslogik ist die ursprüngliche geblieben. Ich bin nur auf ein kleines Problem gestoßen: gelegentlich - zweimal, vor zwei Tagen - auf den Anruf
iSysremove: = (Logger.Filename); (* Lokale Datei löschen *)
Es schlägt fehl und daher wird die Datei größer und die Header werden stündlich repliziert. SysLastError ist einfach 9961200 Fehler beim Löschen der Datei. Wenn ich das Programm stoppe, wird das System ohne Probleme neu gestartet und das letzte Mal 10 Tage lang fortgesetzt.
Ich dachte, es könnte ein Problem aufgrund des FTPClient sein (eLLabNetworkLib_A200) Das gibt die Datei nicht frei und um das Problem zu umgehen, dachte ich daran, das Programm zu ändern, um die beiden Operationen (Warten auf FTP-Ende, Löschen) durch einen neuen Fall 13 zu trennen. Es könnte aber auch vom StringToLogFile_v1-Block abhängen, und deshalb dachte ich:
Logger (Enable: = TRUE, Write: = FALSE);vor Sysremove.Februar 9, 2017 bei 1: 51 pm #39840Sergio BertanaAdministrator des ForumsSie haben im FTPClient-FB gut gesehen, dass es einen Fehler gab, der das von Ihnen beanstandete Problem verursachen konnte. Ich habe den FB korrigiert und die neue Version des Programms PTP139A100 erstellt, die Sie von der Website herunterladen können.
In dieser Version gibt es den neuen FTPClient-FB. Sie können das Projekt öffnen und den FB in Ihre Bibliothek exportieren und dann in Ihr Projekt importieren, wobei der alte FB überschrieben wird.
Februar 24, 2017 bei 9: 54 #39854PierluigiPartecipanteIch schreibe, weil ich ein Programm für die stündliche Anmeldung monatlicher Dateien einer bestimmten Anzahl von Mengen erstellt habe, die über modbus RTU von 3 PLC schneider micro series erworben wurden. SlimLine fungiert als Datenkonzentrator und Datenlogger. Soweit gut, werden die Dateien korrekt auf der an Bord installierten SD gespeichert und können über Filezilla abgerufen und heruntergeladen werden.
Mein Client musste die Dateien jedoch automatisch per Batch-Skript von seinem Server herunterladen und konnte in keiner Weise eine Verbindung zum FTP-Server des Servers herstellen slimline und herunterladen, gibt es eine Lösung?
Februar 25, 2017 bei 8: 24 #39855Sergio BertanaAdministrator des ForumsWenn, wie Sie sagen, über Filezilla auf die Dateien zugegriffen werden kann, das Batch-Skript vom Server jedoch keine Verbindung herstellen kann, liegt das Problem im verwendeten Skript.
Sind Sie sicher, dass Sie eine FTP-Verbindung und kein SFTP verwenden? Es kann sein, dass das im Stapel verwendete FTP-Programm FTP-Befehle verwendet, die nicht in unserem FTP-Server implementiert sind. In diesem Fall würde ich einen Verbindungsbericht benötigen, um das Problem zu verstehen.
Aber warum Dateien von einem Server herunterladen, wenn es sein kann SlimLine Um sie an den FTP-Server in der Cloud zu senden, ist auf diese Weise die Übertragung auch dann möglich, wenn dies der Fall ist SlimLine Es befindet sich in einem NATtata-Netzwerk und ist über das Internet nicht erreichbar.
Februar 27, 2017 bei 1: 58 pm #39865PierluigiPartecipanteIch muss regelmäßig eine Datei von einem System auf FTP übertragen SlimLineIch habe eine Batch-Datei mit den Befehlen geschrieben:
@ ECHO OFF
Echo-FTP-Übertragung gestartet
ftp -s: cmd.ftp 192.168.0.xxx
echo Ende der ÜbertragungHier ist der Inhalt der FTP-Befehlsdatei "cmd.ftp":
Administrator
Administrator
CD / Speicher
binär
get /filename.csv
verlassenIch kann die Datei jedoch nicht herunterladen. Ich kann keine Daten in die Cloud hochladen, da ich keinen Internetzugang habe. Das Anlagennetz ist vom Anlagennetz getrennt, in dem das Internet vorhanden ist.
März 6, 2017 bei 7: 24 am #39866Sergio BertanaAdministrator des ForumsDer Windows-FTP-Befehl verarbeitet nicht die passive Übertragung, die vom FTP-Server verwaltet wird SlimLine. Wenn Sie die Dateien automatisch herunterladen möchten, müssen Sie einen Linux-Server (der die passive Übertragung unterstützt) oder einen Client für Windows verwenden, der die passive Übertragung unterstützt.
Da sich Ihr System jedoch in einem lokalen Netzwerk befindet, können Sie die Daten jederzeit automatisch direkt von auf Ihren FTP-Server herunterladen lassen SlimLine Es ist nicht erforderlich, die Cloud zu verwenden. Definieren Sie einfach die IP-Adresse Ihres FTP-Servers.
Juli 27, 2018 bei 6: 46 #45166AnonymLeerlaufWo finde ich die neueste Version für den FTPClient FB? Ich frage, weil ich einige Vergleichstests zwischen den Funktionsblöcken der verschiedenen Forenbeiträge FTPClient und FTPClient_v1 durchführe und im Moment nur der FTPClient-Block fehlerfrei funktioniert. Der in meinem Besitz befindliche FTPClient_v1-Block generiert beim Kompilieren die folgende Warnung:
warning G0015: MOVE => Accumulator extension
und der folgende Laufzeitfehler:
[Admin]> syslog
[W] SFW184 [26/07/2018 14:52:31] 6000, User program error:10063030Juli 27, 2018 bei 6: 57 #45171Sergio BertanaAdministrator des ForumsDie neueste Version von FTPClient_v1 finden Sie in der Netzwerkbibliothek eLLabNetworkLib_B000, die Sie von der Website herunterladen können. Die neue Version v1 in Bezug auf die vorherige verwaltet die dynamische Zuordnung von Speicherpuffern (mithilfe der RMalloc-Funktion). Auf diese Weise ist es möglich, die mit dem Server ausgetauschten TCP-Pakete nach Belieben zu dimensionieren (maximal 1500 Byte).
Fehler 10063030 zeigt an, dass die Puffergröße nicht definiert wurde (Parameter DBSize) haben Sie wahrscheinlich ein Projekt verwendet, das mit der vorherigen Version erstellt wurde, und Sie haben den Parameter nicht definiert. Schauen Sie sich das anAuszug aus dem Handbuch und siehe das gezeigte Beispiel.
August 29, 2019 bei 6: 06 #49451fedelePartecipanteIch verwende die neueste Version der Bibliothek (eLLabNetworkLib_B100) und kompiliere das Beispielprogramm im SIMULATION-Modus. Ich habe den folgenden Fehler:
Funktionsbaustein FTPClient_v1 wird generiert
abgebrochen.FTPClient_v1 (394) - Fehler G0129: NULL => Vergleich zwischen Referenz und Nichtreferenz
FTPClient_v1 (519) - Fehler G0129: NULL => Vergleich zwischen Referenz und Nichtreferenz0-Warnungen, 2-Fehler.
September 19, 2019 bei 9: 22 #49760RuboxPartecipanteDieser Beitrag wurde wiederbelebt, weil ich ein System vorbereite, das automatisch tägliche Protokolldateien an einen FTP-Server sendet.
Wenn ich mir die Liste des Programms ansehe, verstehe ich richtig, dass das Programm in der CaseNr 11-Bedingung "stoppt", wenn der FTP-Server nicht verfügbar ist, bis die Verbindung hergestellt ist. Wird das Programm auch für Fall 12 mit Fall Nr. 12 fortgesetzt, wenn der Vorgang nicht abgeschlossen ist?
September 19, 2019 bei 9: 44 #49786Sergio BertanaAdministrator des ForumsDas Programm verwaltet die Protokollierung mit dem FIFO-FB. Auf diese Weise wird der Protokolldatensatz in der FIFO-Datei gespeichert. Wenn die Protokolldatei frei ist, wird sie in die Protokolldatei (Fall 0) übertragen, damit keine Datensätze verloren gehen Wenn die Protokolldatei durch FTP-Übertragung belegt ist.
Wenn die Übertragung der Protokolldatei auf den Server befohlen wird (Fall 10), beginnen die Verbindungssequenzen, die fehlerhaft werden können. In diesem Fall würde die Ausgabe aktiviert Fault das bringt die Ausführung auf den Fall 20.
Im Fehlerfall wird die Anzahl der Fehler erhöht und eine gewisse Zeit gewartet, bevor das Senden erneut versucht wird.
Also ja, natürlich bleibt das Programm im Case 11 gesperrt, bis die Verbindung zum Server hergestellt wird, aber wenn es nach der im Parameter definierten Zeit keine Verbindung mehr herstellt Timeout (Siehe FTPClient_v1) Der Ausgang ist aktiviert Fault. Gleiches gilt für den Case 12, bei dem die vollständige Übertragung der Datei erwartet wird.
September 19, 2019 bei 4: 12 pm #49787RuboxPartecipanteIch habe die 70-Zeile in der PDF-Liste des Programms verpasst, weil ich fälschlicherweise dachte, dass das gesamte FTP-Transfermanagement in der CASE-Anweisung enthalten ist. OK, jetzt verstehe ich alles und alles funktioniert auch.
Ich sichere die Daten in einer Datei auf der SD-Karte (so gibt es einige) und sobald sich der Tag ändert, sendet das Programm die vorherige Datei an den FTP-Server.
Vielen Dank für die Klärung der Hilfe immer pünktlich.
September 20, 2019 bei 6: 20 #49790RuboxPartecipanteErlauben Sie mir, zur Liste des Programms zurückzukehren (vorausgesetzt, ich verwende ein anderes, etwas anderes), aber wenn ich in Fall 20 bin, finde ich Store = FALSE. Wir gehen zu Fall 21 und nach 10 Minuten gehe ich zu Fall 10. Versuchen Sie die Verbindung und fahren Sie mit Fall 11 fort. Wenn nach einiger Zeit kein Server verfügbar ist (in meinem Test habe ich das Netzwerkkabel abgezogen) of Timeout geht in Fehler.
Zeile 70 überprüft jedoch, ob Store at TRUE und Fault at TRUE vorhanden sind, um mit Fall 20 fortzufahren und den Verbindungsfehler zu behandeln. Der Store wird erst wahr, nachdem eine Verbindung zu Fall 11 hergestellt wurde. Ich habe den Store True Check in Zeile 70 abgeschlossen und alles scheint gut zu funktionieren.
September 20, 2019 bei 6: 32 #49792Sergio BertanaAdministrator des ForumsDer FTPClient-FB, wenn er Connect = TRUE hat, versucht, eine Verbindung zum FTP-Server herzustellen, wenn er fehlschlägt (wie in Ihrem Fall, wenn Sie das Kabel abgezogen haben), nachdem die Timeout-Zeit einen Fehler generiert.
Wenn keine Verbindung besteht, ist es sinnlos, zu nachfolgenden Fällen zu wechseln, sodass das Programm nicht absichtlich zu Fall 20 wechselt, sondern weiterhin auf den Abschluss der Verbindung wartet. Wenn Sie das Kabel wieder anschließen, sollte alles von vorne beginnen.
In diesem Zustand würde ich natürlich in Fall 11 die lokale Protokolldatei weiterhin blockieren lassen und die Protokolldatensätze würden das FIFO sättigen. Wenn Sie jedoch keine Verbindung zum FTP-Server herstellen können, gibt es nicht viel anderes zu tun.
Wenn Sie in Ihrem Fall das Steuerelement beim Speichern entfernt haben, springt das System zum 20-Fall-Timing. Versuchen Sie es dann erneut. Wenn 3 erneut versucht, das Speichern in der lokalen Protokolldatei fortzusetzen, versuchen Sie erneut, es zum nächsten Termin zu senden. Es kann eine Lösung für Verbindungsprobleme sein, die lange anhalten. Wenn sich das Netzwerkkabel löst, werden Sie weiterhin in derselben Protokolldatei speichern, in der es gesättigt ist. In dem Fall eine Warnung vorsehen, eventuell mit Signallampen oder anderem.
-
AutorPost
- Sie müssen angemeldet sein, um auf dieses Thema antworten zu können.