Datenprotokollierung in IEC 61131-3:SFTP-Upload basierend auf der Leistung von Curl
Vor einigen Wochen erhielt ich folgende Frage. Sie müssen eine Protokolldatei auf einen SFTP-Server hochladen, indem Sie ein Programm verwenden, das im ESM ausgeführt wird.
Das SSH File Transfer Protocol (auch Secure File Transfer Protocol oder SFTP) ist ein Netzwerkprotokoll, das Dateizugriff, Dateiübertragung und Dateiverwaltung über jeden zuverlässigen Datenstrom ermöglicht. Es wurde von der Internet Engineering Task Force (IETF) als Erweiterung des Secure Shell-Protokolls (SSH) Version 2.0 entwickelt, um sichere Dateiübertragungsfunktionen bereitzustellen.
SFTP ist in der PLCnext-Firmware enthalten, daher sollte dies kein Problem darstellen.
Schritt 1:Ich habe begonnen, eine Protokolldatei mit strukturiertem Text zu erstellen. Beispiele dafür finden Sie hier:
https://www.plcnext-community.net/en/hn-makers-blog/438-datalogging-in-iec-61131-3-the-basic-principle.htmlhttps://www.plcnext-community.net/ de/hn-makers-blog/447-datalogging-in-iec-61131-3-create-your-own-file-manager.htmlSchritt 2:Ich brauchte einen SFTP-Server, um meine SPS-Anwendung zu testen. Ich habe CrushFTP verwendet, das ich in einer virtuellen Maschine installiert habe, die auf meinem Laptop lief.
Nach der Installation der Software müssen Sie einen Admin-Benutzer für die Weboberfläche erstellen. Sobald dies erledigt ist, können Sie einen Benutzer für den SPS-Zugriff erstellen.
Für dieses Beispiel:Benutzer =PLCnext, Passwort =123456789
Schritt 3:Laden Sie eine Datei über die Befehlszeile hoch.
Im obigen Screenshot sehen Sie, dass wir zuerst einen Befehl geben und in einem zweiten Schritt das Passwort eingeben. Wenn wir diesen Vorgang automatisieren möchten, indem wir den FB „PBCL_SysLinuxShell_1“ verwenden, benötigen wir einen einzeiligen Befehl.
Dieser FB ist in der Bibliothek PLCnextBase zu finden. (https://www.plcnextstore.com/#/720)
Wir benötigen also einen weiteren Befehl, um den Dateiupload durchzuführen. Werfen wir einen Blick auf Curl.
Die mit der Firmware 2020.6.1 installierte Version unterstützt kein SFTP. Dank Oliver Warneke konnte ich eine weitere Version von Curl installieren. Wir werden nicht den vollständigen Installationsprozess durchlaufen, aber das Ergebnis ist eine Version, die SFTP unterstützt. Mit Firmware 2021.0.0 LTS können Sie die folgende Version verwenden.
Dank Curl können wir jetzt einen anderen Befehl verwenden.
curl -k -sS –key ~/.ssh/id_rsa –max-time 25 –connect-timeout 10 „sftp://192.168.1.50:22/test/Upload/“ –user „PLCnext:12345679“ -T „/ opt/plcnext/Test.pdf“ –ftp-create-dirs
Wenn Sie diesen Befehl für den Shell-FB verwenden, können Sie das Ergebnis in der folgenden Protokolldatei sehen, um Ihr Programm zu überprüfen.
/opt/plcnext/PLCnextBase.ServiceProvider.log
Einige Erläuterungen zu den Argumenten:
-k, –unsicher
(TLS) Standardmäßig wird jede SSL-Verbindung, die curl herstellt, als sicher verifiziert. Diese Option ermöglicht es curl, selbst für Serververbindungen fortzufahren und zu funktionieren, die ansonsten als unsicher gelten. Die Serververbindung wird überprüft, indem sichergestellt wird, dass das Zertifikat des Servers den richtigen Namen enthält, und erfolgreich mithilfe des Zertifikatsspeichers überprüft wird.
-S, –show-error
Wenn es mit -s, –silent verwendet wird, zeigt es curl eine Fehlermeldung an, wenn es fehlschlägt.
-s, –silent
Stiller oder leiser Modus. Zeigen Sie keine Fortschrittsanzeige oder Fehlermeldungen an. Macht Curl stumm. Es wird weiterhin die von Ihnen angeforderten Daten ausgeben, möglicherweise sogar an das Terminal/stdout, es sei denn, Sie leiten sie um. Verwenden Sie -S, –show-error zusätzlich zu dieser Option, um die Fortschrittsanzeige zu deaktivieren, aber weiterhin Fehlermeldungen anzuzeigen.
–Taste
(TLS SSH) Dateiname des privaten Schlüssels. Ermöglicht es Ihnen, Ihren privaten Schlüssel in dieser separaten Datei bereitzustellen. Für SSH, falls nicht angegeben, versucht curl die folgenden Kandidaten in der angegebenen Reihenfolge:„~/.ssh/id_rsa“, „~/.ssh/id_dsa“, „./id_rsa“, „./id_dsa“.
-m, –max-time
Maximale Zeit in Sekunden, die der gesamte Vorgang dauern soll. Dies ist nützlich, um zu verhindern, dass Ihre Batch-Jobs aufgrund langsamer Netzwerke oder Verbindungsabbrüche stundenlang hängen bleiben.
–connect-timeout
Maximale Zeit in Sekunden, die die Verbindung von curl dauern darf. Dadurch wird nur die Verbindungsphase begrenzt. Wenn also curl innerhalb des angegebenen Zeitraums eine Verbindung herstellt, wird es fortgesetzt – wenn nicht, wird es beendet.
-T, –Upload-Datei
Dadurch wird die angegebene lokale Datei an die Remote-URL übertragen. Wenn die angegebene URL keinen Dateiteil enthält, hängt curl den lokalen Dateinamen an.
–ftp-create-dirs
(FTP SFTP) Wenn eine FTP- oder SFTP-URL/-Operation einen Pfad verwendet, der derzeit nicht auf dem Server vorhanden ist, schlägt das Standardverhalten von curl fehl. Mit dieser Option versucht curl stattdessen, fehlende Verzeichnisse zu erstellen.
Referenzen:
https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocolhttps://www.crusftp.com/index.htmlhttps://curl.se/docs/manpage.htmlIndustrietechnik
- Die Befehlszeilenschnittstelle
- Entfesselung der Leistungsfähigkeit des industriellen Internets der Dinge
- 4 Tests zur Bestimmung der Effizienz von Leistungstransformatoren
- Stromausfälle:5 Möglichkeiten, die negativen Auswirkungen zu verhindern
- Brownout vs. Blackout:Was ist der Unterschied?
- Was beeinflusst die Wartungshäufigkeit von Dieselgeneratoren
- Die Suche nach einem Ersatzgenerator:4 wichtige Fragen
- Teslas virtuelles Kraftwerk:Das Stromnetz neu erfinden
- Webinar:Die Macht der Energieüberwachung in Industrie 4.0
- Die Macht der Teamarbeit im Fabrikmanagement