IEC 61131-3 のデータロギング:Curl の機能に基づく SFTP アップロード
数週間前、次の質問を受けました。 ESM で実行されるプログラムを使用して、ログ ファイルを SFTP サーバーにアップロードする必要があります。
SSH ファイル転送プロトコル (セキュア ファイル転送プロトコル (SFTP) とも呼ばれます) は、信頼できるデータ ストリームを介してファイル アクセス、ファイル転送、およびファイル管理を提供するネットワーク プロトコルです。安全なファイル転送機能を提供するために、Secure Shell プロトコル (SSH) バージョン 2.0 の拡張機能として Internet Engineering Task Force (IETF) によって設計されました。
SFTP は PLCnext ファームウェアに含まれているため、これは問題になりません。
ステップ 1:構造化テキストを使用してログ ファイルの作成を開始しました。これを行う方法の例は、ここにあります:
https://www.plcnext-community.net/en/hn-makers-blog/438-datalogging-in-iec-61131-3-the-basic-principle.htmlhttps://www.plcnext-community.net/ en/hn-makers-blog/447-datalogging-in-iec-61131-3-create-your-own-file-manager.htmlステップ 2:PLC アプリケーションをテストするために SFTP サーバーが必要でした。ラップトップで実行されている仮想マシンにインストールした CrushFTP を使用しました。
ソフトウェアのインストール後、Web インターフェイス用の管理者ユーザーを作成する必要があります。これが完了したら、PLC アクセス用のユーザーを作成できます。
この例では:ユーザー =PLCnext、パスワード =123456789
ステップ 3:コマンドラインを使用してファイルをアップロードします。
上のスクリーンショットでは、最初にコマンドを入力し、2 番目のステップでパスワードを入力していることがわかります。 「PBCL_SysLinuxShell_1」FB を使用してこの手順を自動化する場合は、1 行のコマンドが必要です。
この FB は PLCnextBase ライブラリにあります。 (https://www.plcnextstore.com/#/720)
そのため、ファイルのアップロードを実行するには別のコマンドが必要です。 Curl を見てみましょう。
ファームウェア 2020.6.1 がインストールされているバージョンは、SFTP をサポートしていません。 Oliver Warneke のおかげで、別のバージョンの Curl をインストールできました。完全なインストール プロセスは実行しませんが、結果は SFTP をサポートするバージョンになります。ファームウェア 2021.0.0 LTS では、以下のバージョンを使用できます。
Curl のおかげで、別のコマンドを使用できるようになりました。
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
このコマンドをシェル FB に使用している場合、次のログ ファイルで結果を確認して、プログラムを確認できます。
/opt/plcnext/PLCnextBase.ServiceProvider.log
引数についての説明:
-k, –安全でない
(TLS) デフォルトでは、curl が行うすべての SSL 接続は安全であることが検証されます。このオプションを使用すると、安全でないと見なされるサーバー接続であっても、curl を続行して動作させることができます。サーバー接続は、サーバーの証明書に正しい名前が含まれていることを確認することによって検証され、証明書ストアを使用して正常に検証されます。
-S, –show-error
-s、–silent とともに使用すると、curl が失敗した場合にエラー メッセージが表示されます。
-s, –silent
サイレントまたはクワイエットモード。プログレス メーターやエラー メッセージを表示しません。 Curl をミュートにします。要求したデータは、リダイレクトしない限り、ターミナル/stdout にも出力される可能性があります。このオプションに加えて -S, –show-error を使用して進行状況メーターを無効にしますが、エラー メッセージは引き続き表示します。
–キー <キー>
(TLS SSH) 秘密鍵のファイル名。この別のファイルで秘密鍵を提供できます。 SSH の場合、指定されていない場合、curl は次の候補を順番に試行します:‘~/.ssh/id_rsa’、‘~/.ssh/id_dsa’、‘./id_rsa’、‘./id_dsa’.
-m, –max-time <秒>
操作全体にかかる最大時間 (秒単位)。これは、低速のネットワークやリンクのダウンによってバッチ ジョブが何時間もハングするのを防ぐのに役立ちます。
–接続タイムアウト <秒>
curl の接続に許可する最大時間 (秒単位)。これは接続フェーズを制限するだけなので、curl が指定された期間内に接続した場合は続行され、そうでない場合は終了します。
-T, –upload-file <ファイル>
これにより、指定されたローカル ファイルがリモート URL に転送されます。指定された URL にファイル部分がない場合、curl はローカル ファイル名を追加します。
–ftp-create-dirs
(FTP SFTP) FTP または SFTP URL/操作が現在サーバーに存在しないパスを使用する場合、curl の標準的な動作は失敗します。このオプションを使用すると、curl は代わりに不足しているディレクトリを作成しようとします。
参照:
https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocolhttps://www.crushftp.com/index.htmlhttps://curl.se/docs/manpage.html産業技術